collabmd 0.1.49 → 0.1.52
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/README.md +11 -660
- package/bin/collabmd.js +36 -20
- package/dist/client/assets/CodeMirrorEditor-UCMRAMCV-BEz2BKN1.js +1 -0
- package/dist/client/assets/KaTeX_AMS-Regular-BQhdFMY1.woff2 +0 -0
- package/dist/client/assets/KaTeX_AMS-Regular-DMm9YOAa.woff +0 -0
- package/dist/client/assets/KaTeX_AMS-Regular-DRggAlZN.ttf +0 -0
- package/dist/client/assets/KaTeX_Caligraphic-Bold-ATXxdsX0.ttf +0 -0
- package/dist/client/assets/KaTeX_Caligraphic-Bold-BEiXGLvX.woff +0 -0
- package/dist/client/assets/KaTeX_Caligraphic-Bold-Dq_IR9rO.woff2 +0 -0
- package/dist/client/assets/KaTeX_Caligraphic-Regular-CTRA-rTL.woff +0 -0
- package/dist/client/assets/KaTeX_Caligraphic-Regular-Di6jR-x-.woff2 +0 -0
- package/dist/client/assets/KaTeX_Caligraphic-Regular-wX97UBjC.ttf +0 -0
- package/dist/client/assets/KaTeX_Fraktur-Bold-BdnERNNW.ttf +0 -0
- package/dist/client/assets/KaTeX_Fraktur-Bold-BsDP51OF.woff +0 -0
- package/dist/client/assets/KaTeX_Fraktur-Bold-CL6g_b3V.woff2 +0 -0
- package/dist/client/assets/KaTeX_Fraktur-Regular-CB_wures.ttf +0 -0
- package/dist/client/assets/KaTeX_Fraktur-Regular-CTYiF6lA.woff2 +0 -0
- package/dist/client/assets/KaTeX_Fraktur-Regular-Dxdc4cR9.woff +0 -0
- package/dist/client/assets/KaTeX_Main-Bold-Cx986IdX.woff2 +0 -0
- package/dist/client/assets/KaTeX_Main-Bold-Jm3AIy58.woff +0 -0
- package/dist/client/assets/KaTeX_Main-Bold-waoOVXN0.ttf +0 -0
- package/dist/client/assets/KaTeX_Main-BoldItalic-DxDJ3AOS.woff2 +0 -0
- package/dist/client/assets/KaTeX_Main-BoldItalic-DzxPMmG6.ttf +0 -0
- package/dist/client/assets/KaTeX_Main-BoldItalic-SpSLRI95.woff +0 -0
- package/dist/client/assets/KaTeX_Main-Italic-3WenGoN9.ttf +0 -0
- package/dist/client/assets/KaTeX_Main-Italic-BMLOBm91.woff +0 -0
- package/dist/client/assets/KaTeX_Main-Italic-NWA7e6Wa.woff2 +0 -0
- package/dist/client/assets/KaTeX_Main-Regular-B22Nviop.woff2 +0 -0
- package/dist/client/assets/KaTeX_Main-Regular-Dr94JaBh.woff +0 -0
- package/dist/client/assets/KaTeX_Main-Regular-ypZvNtVU.ttf +0 -0
- package/dist/client/assets/KaTeX_Math-BoldItalic-B3XSjfu4.ttf +0 -0
- package/dist/client/assets/KaTeX_Math-BoldItalic-CZnvNsCZ.woff2 +0 -0
- package/dist/client/assets/KaTeX_Math-BoldItalic-iY-2wyZ7.woff +0 -0
- package/dist/client/assets/KaTeX_Math-Italic-DA0__PXp.woff +0 -0
- package/dist/client/assets/KaTeX_Math-Italic-flOr_0UB.ttf +0 -0
- package/dist/client/assets/KaTeX_Math-Italic-t53AETM-.woff2 +0 -0
- package/dist/client/assets/KaTeX_SansSerif-Bold-CFMepnvq.ttf +0 -0
- package/dist/client/assets/KaTeX_SansSerif-Bold-D1sUS0GD.woff2 +0 -0
- package/dist/client/assets/KaTeX_SansSerif-Bold-DbIhKOiC.woff +0 -0
- package/dist/client/assets/KaTeX_SansSerif-Italic-C3H0VqGB.woff2 +0 -0
- package/dist/client/assets/KaTeX_SansSerif-Italic-DN2j7dab.woff +0 -0
- package/dist/client/assets/KaTeX_SansSerif-Italic-YYjJ1zSn.ttf +0 -0
- package/dist/client/assets/KaTeX_SansSerif-Regular-BNo7hRIc.ttf +0 -0
- package/dist/client/assets/KaTeX_SansSerif-Regular-CS6fqUqJ.woff +0 -0
- package/dist/client/assets/KaTeX_SansSerif-Regular-DDBCnlJ7.woff2 +0 -0
- package/dist/client/assets/KaTeX_Script-Regular-C5JkGWo-.ttf +0 -0
- package/dist/client/assets/KaTeX_Script-Regular-D3wIWfF6.woff2 +0 -0
- package/dist/client/assets/KaTeX_Script-Regular-D5yQViql.woff +0 -0
- package/dist/client/assets/KaTeX_Size1-Regular-C195tn64.woff +0 -0
- package/dist/client/assets/KaTeX_Size1-Regular-Dbsnue_I.ttf +0 -0
- package/dist/client/assets/KaTeX_Size1-Regular-mCD8mA8B.woff2 +0 -0
- package/dist/client/assets/KaTeX_Size2-Regular-B7gKUWhC.ttf +0 -0
- package/dist/client/assets/KaTeX_Size2-Regular-Dy4dx90m.woff2 +0 -0
- package/dist/client/assets/KaTeX_Size2-Regular-oD1tc_U0.woff +0 -0
- package/dist/client/assets/KaTeX_Size3-Regular-CTq5MqoE.woff +0 -0
- package/dist/client/assets/KaTeX_Size3-Regular-DgpXs0kz.ttf +0 -0
- package/dist/client/assets/KaTeX_Size4-Regular-BF-4gkZK.woff +0 -0
- package/dist/client/assets/KaTeX_Size4-Regular-DWFBv043.ttf +0 -0
- package/dist/client/assets/KaTeX_Size4-Regular-Dl5lxZxV.woff2 +0 -0
- package/dist/client/assets/KaTeX_Typewriter-Regular-C0xS9mPB.woff +0 -0
- package/dist/client/assets/KaTeX_Typewriter-Regular-CO6r4hn1.woff2 +0 -0
- package/dist/client/assets/KaTeX_Typewriter-Regular-D3Ib7_Hf.ttf +0 -0
- package/dist/client/assets/Middleware-DUgFSleI.js +1 -0
- package/dist/client/assets/_basePickBy-QJXUw_pr.js +1 -0
- package/dist/client/assets/_baseUniq-DR4vVjyC.js +1 -0
- package/dist/client/assets/abnfDiagram-O67JEVCF-Dwt6a0Ds.js +1 -0
- package/dist/client/assets/abnfDiagram-VCTEODGH-DxNxad6-.js +1 -0
- package/dist/client/assets/ar-SA-5WIASEJP-Di7OimCN.js +10 -0
- package/dist/client/assets/architecture-7GRP2DOG-BBwRXFv3.js +1 -0
- package/dist/client/assets/architecture-7GRP2DOG-DJVtYNt-.js +1 -0
- package/dist/client/assets/architectureDiagram-5GKGNRK7-C1uvg5id.js +36 -0
- package/dist/client/assets/architectureDiagram-NJMV4G6O-D5CGiX3G.js +36 -0
- package/dist/client/assets/az-AZ-V5EUQD6C-C19OGTT_.js +1 -0
- package/dist/client/assets/{babel-CY5KOv-I.js → babel-Bi_28hhi.js} +1 -1
- package/dist/client/assets/band-D-Cum8PO.js +1 -0
- package/dist/client/assets/bg-BG-EXASCMTR-BIt0xWyb.js +5 -0
- package/dist/client/assets/blockDiagram-BEXU5L5S-BgTM0var.js +140 -0
- package/dist/client/assets/blockDiagram-I7D4REHJ-B2YonsoG.js +129 -0
- package/dist/client/assets/bn-BD-U4SYNFCO-CdNaPy4Q.js +3 -0
- package/dist/client/assets/bn-IN-HKDJIITE-CdNaPy4Q.js +3 -0
- package/dist/client/assets/{browser-BKLM0ThC-IxjwuOIz-BBqQnUEb.js → browser-BKLM0ThC-IxjwuOIz-C0mP17s1.js} +1 -1
- package/dist/client/assets/{browser-utils-DbXSMI-6.js → browser-utils-vlHL9goC.js} +1 -1
- package/dist/client/assets/{c4Diagram-7LVT6UL2-yD2poxqw.js → c4Diagram-7LVT6UL2-r4IwomZm.js} +2 -2
- package/dist/client/assets/c4Diagram-YGBWAQC7-_xZPrNkB.js +38 -0
- package/dist/client/assets/ca-ES-2KGUU5XB-C9t-c0cH.js +8 -0
- package/dist/client/assets/channel-CgcHBnmr.js +1 -0
- package/dist/client/assets/chunk-2E4U76K2-CIQUuV9n.js +1 -0
- package/dist/client/assets/chunk-2Q5K7J3B-BMFG3ur0.js +1 -0
- package/dist/client/assets/{chunk-2ZTRR5NV-C2qZJila.js → chunk-2ZTRR5NV-CnDP55cn.js} +1 -1
- package/dist/client/assets/chunk-2ZTRR5NV-DcPRfelM.js +2 -0
- package/dist/client/assets/chunk-3FUC2YCW-8tZlhTGX.js +1 -0
- package/dist/client/assets/{chunk-3Z5EZCMW-DMniOlPd.js → chunk-3Z5EZCMW-BAnA6eQ7.js} +1 -1
- package/dist/client/assets/chunk-3Z5EZCMW-Yx4Q5AcN.js +1 -0
- package/dist/client/assets/chunk-4HAMMTFA-q0ldNVvr.js +62 -0
- package/dist/client/assets/chunk-4SOEAONT-C3fufoVl.js +40 -0
- package/dist/client/assets/chunk-5DYCD2WN-BKWCKnK-.js +1 -0
- package/dist/client/assets/{chunk-5V3GS4D5-i-ZDOEnP.js → chunk-5V3GS4D5-B5uC2oxu.js} +1 -1
- package/dist/client/assets/chunk-5V3GS4D5-BR7kgIgJ.js +1 -0
- package/dist/client/assets/chunk-5VM5RSS4-hE9rU_bl.js +15 -0
- package/dist/client/assets/chunk-6AEJRKK7-DTVZj5bY.js +1 -0
- package/dist/client/assets/{chunk-6AZGARVD-BB6FqMl-.js → chunk-6AZGARVD--pTGpDnx.js} +1 -1
- package/dist/client/assets/chunk-6AZGARVD-CnZDr4Cj.js +1 -0
- package/dist/client/assets/{chunk-6EIED4P4-DdUJkP0f.js → chunk-6EIED4P4-Bp8dpTvX.js} +1 -1
- package/dist/client/assets/chunk-6EIED4P4-DBVWq7Tz.js +1 -0
- package/dist/client/assets/{chunk-6K3QC6MW-CqVsVn-y.js → chunk-6K3QC6MW-DGVRzL6v.js} +1 -1
- package/dist/client/assets/chunk-6K3QC6MW-JnuvEGV4.js +1 -0
- package/dist/client/assets/{chunk-6TQVIW2G-DKlLbNIP.js → chunk-6TQVIW2G-BSj0l_pu.js} +1 -1
- package/dist/client/assets/chunk-6TQVIW2G-DgBX-Pv0.js +1 -0
- package/dist/client/assets/chunk-742MDFTN-D1nh6vNv.js +1 -0
- package/dist/client/assets/{chunk-747NJXEK-BFkZPlab.js → chunk-747NJXEK-BjqqAsS9.js} +1 -1
- package/dist/client/assets/chunk-747NJXEK-Cur1aosP.js +2 -0
- package/dist/client/assets/chunk-75Z2AOVW-DitkSoSG.js +2 -0
- package/dist/client/assets/chunk-7INBJB4K-CDmiHbaX.js +62 -0
- package/dist/client/assets/chunk-7M6MHVWA-BDakkknV.js +213 -0
- package/dist/client/assets/chunk-7PRAP22T-9uTvtc_-.js +1 -0
- package/dist/client/assets/{chunk-CLGD4ZFX-BMeArk03.js → chunk-CLGD4ZFX-BfYJtJm1.js} +1 -1
- package/dist/client/assets/chunk-DU6HZSFF-CWlP1Dk_.js +125 -0
- package/dist/client/assets/chunk-DUW6YSOI-Dgx8z5s3.js +1 -0
- package/dist/client/assets/chunk-DYU5D34O-DN0WQZBm.js +1 -0
- package/dist/client/assets/{chunk-F27PBJKO-D4xNct1r.js → chunk-F27PBJKO-DPcsPcEs.js} +1 -1
- package/dist/client/assets/{chunk-FOHPRMQF-DHwB1DNv.js → chunk-FOHPRMQF-Dmmo5Kak.js} +9 -9
- package/dist/client/assets/chunk-FOHPRMQF-DzxwRta7.js +161 -0
- package/dist/client/assets/chunk-GMAD6QVW-Bgk8qnty.js +8 -0
- package/dist/client/assets/chunk-GNY47TPC-CTrH5O5R.js +1 -0
- package/dist/client/assets/{chunk-SVP7TREG-DB485R5x.js → chunk-GTNCS2PH-ChgkzEIi.js} +1 -1
- package/dist/client/assets/chunk-GVQU2GXP-CQ8cl-Uu.js +1 -0
- package/dist/client/assets/chunk-GWA4HPMP-CGmv2yIq.js +1 -0
- package/dist/client/assets/{chunk-I5DQTOEV-Hm2LfiYI.js → chunk-I5DQTOEV-B98XA8VK.js} +1 -1
- package/dist/client/assets/chunk-I5DQTOEV-aBZooNp1.js +1 -0
- package/dist/client/assets/{chunk-ICYGCRZG-749o-pGJ.js → chunk-ICYGCRZG-D97UeqJs.js} +1 -1
- package/dist/client/assets/chunk-ICYGCRZG-odvlDZyA.js +1 -0
- package/dist/client/assets/{chunk-IH6LHLGP-CC6I9F3i.js → chunk-IH6LHLGP-BNevEHZK.js} +1 -1
- package/dist/client/assets/chunk-IH6LHLGP-CvXe34hB.js +1 -0
- package/dist/client/assets/{chunk-IMKFNOWR-D8jEuU3Q.js → chunk-IMKFNOWR-CBqxfpcP.js} +2 -2
- package/dist/client/assets/chunk-J5ZVWO5B-oDCd-gWO.js +1 -0
- package/dist/client/assets/chunk-JWPE2WC7-GDilnS5Y.js +1 -0
- package/dist/client/assets/{chunk-KI3K4JFJ-Rma-0k_M.js → chunk-KI3K4JFJ-D5XCPRZv.js} +1 -1
- package/dist/client/assets/chunk-KI3K4JFJ-FTtDwx3-.js +1 -0
- package/dist/client/assets/chunk-L3NEJ4N5-BflzkdTI.js +1 -0
- package/dist/client/assets/{chunk-LNGE3PJU-DWpGwHrW.js → chunk-LNGE3PJU-5-SxdO55.js} +1 -1
- package/dist/client/assets/chunk-LNGE3PJU-5nWSl6jJ.js +34 -0
- package/dist/client/assets/chunk-MBY4JIJT-DTJ4UcAm.js +8 -0
- package/dist/client/assets/chunk-NETBCI7D-CmUwDWUZ.js +1 -0
- package/dist/client/assets/chunk-O7XYJQB3-D0_ZY2za.js +126 -0
- package/dist/client/assets/chunk-OSK3NFVY-DqeKV_pg.js +10 -0
- package/dist/client/assets/{chunk-OUJLGHUK-D0j2JRSg.js → chunk-OUJLGHUK-75UXlPjl.js} +1 -1
- package/dist/client/assets/chunk-OUJLGHUK-DA95-S9B.js +2 -0
- package/dist/client/assets/{chunk-P2QGCYS3-Oag_FdCq.js → chunk-P2QGCYS3-BA--DhpW.js} +1 -1
- package/dist/client/assets/chunk-POPQ4Y6H-V_NEc45n.js +1 -0
- package/dist/client/assets/chunk-PWAF6VOD-D_kLse-N.js +1 -0
- package/dist/client/assets/{chunk-FLYJHZSQ-Be7lKF17.js → chunk-RUX4WMZV-BGnd3s_C.js} +4 -4
- package/dist/client/assets/{chunk-SHT3W25Y-BiQGljao.js → chunk-SHT3W25Y-YM3S-A_M.js} +5 -5
- package/dist/client/assets/chunk-SVP7TREG-DdNhDOmW.js +88 -0
- package/dist/client/assets/{chunk-TICWLB2K-8rAVvoS3.js → chunk-TICWLB2K-BGGgCr4x.js} +3 -3
- package/dist/client/assets/chunk-TLUHSLCS-DCZhIDYA.js +1 -0
- package/dist/client/assets/chunk-UA2S7LBM-DicYDjDM.js +1 -0
- package/dist/client/assets/{chunk-UY3FDG6J-CnmaAkG5.js → chunk-UY3FDG6J-DqSM_0FB.js} +1 -1
- package/dist/client/assets/chunk-UY3FDG6J-QT-rkt0y.js +1 -0
- package/dist/client/assets/chunk-WEXAMYUT-DDlVNp8J.js +1 -0
- package/dist/client/assets/chunk-X3CZISLH-BixgQztF.js +1 -0
- package/dist/client/assets/chunk-X3CZISLH-DwWpRaN8.js +1 -0
- package/dist/client/assets/{chunk-XHIXRSVI-BFQ6B8BE.js → chunk-XHIXRSVI-BSN7JlfK.js} +1 -1
- package/dist/client/assets/chunk-XHIXRSVI-DN_fEwws.js +1 -0
- package/dist/client/assets/chunk-XXDRQBXY-C7hQHDmQ.js +1 -0
- package/dist/client/assets/{chunk-XXDRQBXY-BvKO0v-W.js → chunk-XXDRQBXY-CdRN9Akd.js} +1 -1
- package/dist/client/assets/chunk-Y2CYZVJY-BbRBGnmc.js +1 -0
- package/dist/client/assets/chunk-Z7XXMR3K-P4Vaq8hD.js +10 -0
- package/dist/client/assets/chunk-ZIGJFQKS-b8OUHKK5.js +2 -0
- package/dist/client/assets/classDiagram-ZZMXUADV-QLbh_Nkf.js +1 -0
- package/dist/client/assets/classDiagram-v2-NBCMYWYE-3TQORq33.js +217 -0
- package/dist/client/assets/classDiagram-v2-VYDZK3BY-QLbh_Nkf.js +1 -0
- package/dist/client/assets/clone-C1hp9FUh.js +1 -0
- package/dist/client/assets/comment-markdown-renderer-Bxi_JRSR.js +1 -0
- package/dist/client/assets/comment-thread-store-CHvy8GF8.js +1 -0
- package/dist/client/assets/comment-threads-nJhK1yfc.js +4 -0
- package/dist/client/assets/cose-bilkent-JH36ORCC-Czr0rwGr.js +1 -0
- package/dist/client/assets/cose-bilkent-JH36ORCC-DLmEf9HS.js +1 -0
- package/dist/client/assets/cs-CZ-VUCGPRML-BfCoYAgj.js +7 -0
- package/dist/client/assets/cynefin-OW5HDTMX-CF3N9j1_.js +1 -0
- package/dist/client/assets/cynefin-OW5HDTMX-e-Quc9Yl.js +1 -0
- package/dist/client/assets/cynefinDiagram-5FMLGOSQ-DTnLZaO7.js +62 -0
- package/dist/client/assets/cynefinDiagram-VND7K2PF-DwfMZ3vk.js +62 -0
- package/dist/client/assets/cytoscape-cose-bilkent-NdTYBUiT.js +1 -0
- package/dist/client/assets/cytoscape-fcose-DE9_QRG_.js +1 -0
- package/dist/client/assets/cytoscape.esm-EK2DW5Qr.js +321 -0
- package/dist/client/assets/da-DK-NNDP2IVP-DBw9ZNTR.js +2 -0
- package/dist/client/assets/dagre-6A5THRUB-DewyAGK6.js +4 -0
- package/dist/client/assets/dagre-D7FiCLLP.js +1 -0
- package/dist/client/assets/{dagre-GXQ25YYZ-Cr67wLpQ.js → dagre-GXQ25YYZ-Vtyx08Qh.js} +2 -2
- package/dist/client/assets/de-CH-I7RAVIZN-DYW18Vsr.js +11 -0
- package/dist/client/assets/de-DE-WBQ3DQLR-DYW18Vsr.js +11 -0
- package/dist/client/assets/deferred-collab-D4cxEdad.css +1 -0
- package/dist/client/assets/deferred-git-BHKtkFYi.css +1 -0
- package/dist/client/assets/deferred-preview-BAXYgf4T.css +1 -0
- package/dist/client/assets/diagram-22UHCM2B-DbZirFfl.js +200 -0
- package/dist/client/assets/diagram-3UASUU5V-DmhdYv6_.js +24 -0
- package/dist/client/assets/diagram-ATOU4E4O-B5uX-jVO.js +3 -0
- package/dist/client/assets/diagram-CDSNMT55-D_qyS11R.js +30 -0
- package/dist/client/assets/diagram-MLGK6HIB-DIBG6Ivu.js +24 -0
- package/dist/client/assets/diagram-MPIPVDR6-D9XsALDV.js +41 -0
- package/dist/client/assets/{diagram-S7CK7UJ4-DywERe__.js → diagram-S7CK7UJ4-CGTzfo2f.js} +3 -3
- package/dist/client/assets/diagram-UQ7AKVKN-CWZS8QtB.js +41 -0
- package/dist/client/assets/{diagram-VSXAHHWV-0H1a61Bn.js → diagram-VSXAHHWV-DaO1nOZF.js} +3 -3
- package/dist/client/assets/diagram-VX7I27RA-B54P6Cyf.js +24 -0
- package/dist/client/assets/diagram-Z3DM3KII-Cl2EXiXp.js +24 -0
- package/dist/client/assets/direct-engine-DdrQKpgq-4QysbH_V.js +5 -0
- package/dist/client/assets/dist-B7fBbwrO.js +1 -0
- package/dist/client/assets/{dist-DGEbEfw4.js → dist-BVCNc-Es.js} +1 -1
- package/dist/client/assets/dist-BYBF4LtZ.js +1 -0
- package/dist/client/assets/{dist-TW8iFRyW.js → dist-B_1hMrc6.js} +1 -1
- package/dist/client/assets/{dist-DVy5woUy.js → dist-BfpAc922.js} +1 -1
- package/dist/client/assets/dist-BnVaoRgZ.js +1 -0
- package/dist/client/assets/dist-Bog8M5U3.js +13 -0
- package/dist/client/assets/{dist-jVU5Be5P.js → dist-CAG5sIOj.js} +1 -1
- package/dist/client/assets/{dist-LQ4kDCKz.js → dist-CKf7LlAo.js} +1 -1
- package/dist/client/assets/{dist-BeajGMhO.js → dist-CUsXdnU4.js} +1 -1
- package/dist/client/assets/{dist-Tw-Fxpeb.js → dist-CXOUa90Q.js} +1 -1
- package/dist/client/assets/dist-CYMCikZo.js +1 -0
- package/dist/client/assets/dist-CYfPeupF.js +1 -0
- package/dist/client/assets/dist-Ch6Sr9KF.js +28 -0
- package/dist/client/assets/dist-Ck-B8onw.js +2 -0
- package/dist/client/assets/dist-CrkYYcOU.js +1 -0
- package/dist/client/assets/{dist-D5wCC32z.js → dist-CsQTfQFi.js} +1 -1
- package/dist/client/assets/dist-Cu5Ze2cs.js +6 -0
- package/dist/client/assets/{dist-C5NgpdG5.js → dist-CvVoyTRF.js} +1 -1
- package/dist/client/assets/{dist-GvvCNBe4.js → dist-D4kDR0g8.js} +1 -1
- package/dist/client/assets/dist-D8LnhZzy.js +1 -0
- package/dist/client/assets/{dist-D3fehAZ2.js → dist-DGa-2MNX.js} +2 -2
- package/dist/client/assets/dist-DI6c02Da.js +39 -0
- package/dist/client/assets/{dist-BPHLJ09L.js → dist-DNONgI1P.js} +2 -2
- package/dist/client/assets/{dist-C0G3AaXG.js → dist-DVBYH83t.js} +1 -1
- package/dist/client/assets/dist-DX6qtdxv.js +1 -0
- package/dist/client/assets/{dist-DzNmC81X.js → dist-Da-jLrCf.js} +1 -1
- package/dist/client/assets/dist-DofvCYzJ.js +1 -0
- package/dist/client/assets/{dist-CdmKGRGr.js → dist-Dx37MHWs.js} +1 -1
- package/dist/client/assets/dist-GTGhtpyW.js +9 -0
- package/dist/client/assets/{dist-BK9QvQrc.js → dist-W0FoeIxk.js} +9 -9
- package/dist/client/assets/{dist-mj2Ht75J.js → dist-Y6zYRI-A.js} +1 -1
- package/dist/client/assets/{dist-netZOQtD.js → dist-jVKfryIL.js} +1 -1
- package/dist/client/assets/{dist-DuH3ZrHo.js → dist-zHDLm1oE.js} +1 -1
- package/dist/client/assets/document-formatter-gO8qM2qY.js +1 -0
- package/dist/client/assets/drawioEditor-DCkWweiy.js +9 -0
- package/dist/client/assets/duration-BiuFXtXd.js +1 -0
- package/dist/client/assets/ebnfDiagram-PWID7BFC-PfC84FyI.js +1 -0
- package/dist/client/assets/ebnfDiagram-ZINNZB2B-DYvm_QtE.js +1 -0
- package/dist/client/assets/editor-session-DxRyr4EM.js +14 -0
- package/dist/client/assets/el-GR-TYQHVGXW-Dx82YYAS.js +7 -0
- package/dist/client/assets/elk-276RUBZZ-B8LB3Pac.js +27 -0
- package/dist/client/assets/embedded-editor-base-elU0Avik.css +1 -0
- package/dist/client/assets/{embedpdf-DA4bA119-BPqZxwjc.js → embedpdf-DA4bA119-DsoNiPlQ.js} +4 -5
- package/dist/client/assets/{embedpdf-BmE13ZZ0.js → embedpdf-DyOonRvx.js} +1 -1
- package/dist/client/assets/{en-SJ2YIMFF-CJBL3nkq.js → en-GNC3RJIS-CEy_oGTd.js} +1 -1
- package/dist/client/assets/erDiagram-OPXOYQCR-o8GRv8A_.js +99 -0
- package/dist/client/assets/{erDiagram-RLTQ6QDP-CbrDdd5P.js → erDiagram-RLTQ6QDP-C9cJl5NB.js} +2 -2
- package/dist/client/assets/es-ES-JEUOREKJ-Rx0NUQDl.js +12 -0
- package/dist/client/assets/esm-BzZ1JFVo.js +65 -0
- package/dist/client/assets/{estree-CuT_pB8K.js → estree-DCT3Jm65.js} +4 -4
- package/dist/client/assets/eu-ES-SO5DEEAN-CDYm-BcK.js +8 -0
- package/dist/client/assets/eventmodeling-NTZA5JFV-CDy1bN6j.js +1 -0
- package/dist/client/assets/eventmodeling-NTZA5JFV-Dxtv5D-P.js +1 -0
- package/dist/client/assets/excalidraw-element-link-CGZ5934B.js +7 -0
- package/dist/client/assets/{excalidrawEditor-BbSbI80a.css → excalidrawEditor-BCTFp_CV.css} +1 -1
- package/dist/client/assets/excalidrawEditor-BVfSxjSO.js +9 -0
- package/dist/client/assets/export-page-BCo_e15t.js +46 -0
- package/dist/client/assets/exportDocument-Ba-n1X4U.css +1 -0
- package/dist/client/assets/exportDocument-DP6oE_or.js +2 -0
- package/dist/client/assets/fa-IR-I4JNTJHK-CFtHZqoT.js +9 -0
- package/dist/client/assets/fi-FI-REAEF6HQ-BIpjJqIb.js +6 -0
- package/dist/client/assets/file-search-3hYF4cYa.js +1 -0
- package/dist/client/assets/flowDiagram-HODETNUW-Bq4470NR.js +1 -0
- package/dist/client/assets/flowDiagram-KWPJA3E3-DQG9qGiU.js +1 -0
- package/dist/client/assets/forth-D6RzAl64.js +1 -0
- package/dist/client/assets/fr-FR-SUCL7J6B-DGAKE8jH.js +12 -0
- package/dist/client/assets/ganttDiagram-EL5Y4UJY-x40PW0Ah.js +292 -0
- package/dist/client/assets/ganttDiagram-FUAMR5RP-BQpsI7gQ.js +292 -0
- package/dist/client/assets/gitGraph-4MIJSDKK-B-rpDYbz.js +1 -0
- package/dist/client/assets/gitGraph-4MIJSDKK-ZaBIE4Lb.js +1 -0
- package/dist/client/assets/gitGraphDiagram-WWUBYQGX-ahsNaZsp.js +106 -0
- package/dist/client/assets/gitGraphDiagram-X574FWY7-wbs_2m9f.js +106 -0
- package/dist/client/assets/gl-ES-KHCSOGVH-DWKh0CMu.js +6 -0
- package/dist/client/assets/graphlib-C9Tl7QrK.js +1 -0
- package/dist/client/assets/he-IL-JYXVXV2Q-zqbcM-4g.js +9 -0
- package/dist/client/assets/hi-IN-BU52H3BO-CY8v6eG9.js +3 -0
- package/dist/client/assets/highlight-theme-CzNkO-IJ.js +1 -0
- package/dist/client/assets/{html-Cdnr2qzU.js → html-CBXMuS97.js} +2 -2
- package/dist/client/assets/html-DTuc_pxj.js +1 -0
- package/dist/client/assets/hu-HU-OWADXDQ3-CEl6Udfh.js +3 -0
- package/dist/client/assets/id-ID-2WY7E4VX-CCAeQpPr.js +8 -0
- package/dist/client/assets/image-EJJKRVD3-BQfi5nWJ.js +1 -0
- package/dist/client/assets/{image-blob-reduce.esm-Dj7YBvMv.js → image-blob-reduce.esm-BFq-Mx5V.js} +2 -2
- package/dist/client/assets/index-BxAuGDoN.css +1 -0
- package/dist/client/assets/index-uw9O0z1c.js +1112 -0
- package/dist/client/assets/info-A6RAGUB7-BcGxhjED.js +1 -0
- package/dist/client/assets/info-A6RAGUB7-BlutK7BT.js +1 -0
- package/dist/client/assets/infoDiagram-27XIBGKW-MrZyptIy.js +2 -0
- package/dist/client/assets/infoDiagram-VRGFBTTK-KkUjDRAQ.js +2 -0
- package/dist/client/assets/{ishikawaDiagram-5VMMS53U-BMPC6hfp.js → ishikawaDiagram-5VMMS53U-Bnt9yM0O.js} +2 -2
- package/dist/client/assets/ishikawaDiagram-OU5B5YK6-Di9BcpOY.js +70 -0
- package/dist/client/assets/it-IT-INVHSAJF-DytAgndh.js +12 -0
- package/dist/client/assets/ja-JP-JBNTKYP4-BflWlGhw.js +12 -0
- package/dist/client/assets/javascript-B9I2pbsP.js +1 -0
- package/dist/client/assets/javascript-DctB8BJo.js +1 -0
- package/dist/client/assets/{journeyDiagram-3NMN7TZE-B1sApUmM.js → journeyDiagram-3NMN7TZE-Bl0abK1r.js} +1 -1
- package/dist/client/assets/journeyDiagram-ZHPQQLJL-J-sGrs9e.js +139 -0
- package/dist/client/assets/jsx-runtime-DKj5X9O4.js +1 -0
- package/dist/client/assets/kaa-TC3VIB7V-B-xtZfy0.js +1 -0
- package/dist/client/assets/kab-KAB-UOUDSQKM-BmO0O4Y4.js +4 -0
- package/dist/client/assets/kanban-definition-PNTS6WVX-5ZDV_yIa.js +89 -0
- package/dist/client/assets/{kanban-definition-UXKFOSKX-C9yP4td1.js → kanban-definition-UXKFOSKX-DMgUfNt0.js} +10 -10
- package/dist/client/assets/{katex-CXMH3UgJ.js → katex-9NBMfU68.js} +2 -2
- package/dist/client/assets/katex-ZlcWpGUi.js +257 -0
- package/dist/client/assets/kk-KZ-P5H2X7YS-CSQFB8IN.js +1 -0
- package/dist/client/assets/{km-KH-PCWDKPHP-DSmy5shj.js → km-KH-IHMV2US7-BxrjuEzr.js} +4 -4
- package/dist/client/assets/ko-KR-ZTMANIDF-BnNRXd5J.js +5 -0
- package/dist/client/assets/ku-TR-GPJTRB5G-BZM7f2aT.js +6 -0
- package/dist/client/assets/line-DEbP8Ok6.js +1 -0
- package/dist/client/assets/linear-DExL6ILt.js +1 -0
- package/dist/client/assets/lobby-presence-Cz5jGOPg.js +1 -0
- package/dist/client/assets/lt-LT-V3XDOK3P-MVQBOHmF.js +3 -0
- package/dist/client/assets/{lua-CL1SqxuB.js → lua-zbJo2mq3.js} +1 -1
- package/dist/client/assets/lv-LV-DVQ3FADO-CrenwAhS.js +4 -0
- package/dist/client/assets/{markdown-CByV-4CU.js → markdown-Bo71X2X2.js} +8 -8
- package/dist/client/assets/markdown-it-DpvIRaVq.js +13 -0
- package/dist/client/assets/markdown-math-CyyBVuDO.js +517 -0
- package/dist/client/assets/merge-CALoRt3l.js +1 -0
- package/dist/client/assets/mermaid-parser.core-Bpogunsh.js +3 -0
- package/dist/client/assets/mermaid-parser.core-DBy--Jc0.js +3 -0
- package/dist/client/assets/mermaid.core-BeOUPE3Q.js +10 -0
- package/dist/client/assets/mindmap-definition-NLK3R4M7-ByVb-0vj.js +96 -0
- package/dist/client/assets/{mindmap-definition-YA3MSWOX-BUQHcYbK.js → mindmap-definition-YA3MSWOX-DBZN5_GH.js} +29 -29
- package/dist/client/assets/mr-IN-VZ6HH5FE-B-PHPglH.js +9 -0
- package/dist/client/assets/my-MM-XYKWHRK6-Be5sYp5q.js +1 -0
- package/dist/client/assets/nb-NO-UNO2GGZJ-BvSKGdja.js +8 -0
- package/dist/client/assets/{nginx-BMaDbqW3.js → nginx-8H7HVH4w.js} +1 -1
- package/dist/client/assets/nl-NL-76EFHT4P-C2yNx1Cj.js +13 -0
- package/dist/client/assets/nn-NO-CFKD7ABE-4NsqlDRP.js +4 -0
- package/dist/client/assets/oc-FR-YBJTCJ3J-B4OTQsWW.js +4 -0
- package/dist/client/assets/pa-IN-SNOXSMRV-CKj_sOG7.js +4 -0
- package/dist/client/assets/packet-AYTQ26CC-CqpSjTWl.js +1 -0
- package/dist/client/assets/packet-AYTQ26CC-DvbY8dI6.js +1 -0
- package/dist/client/assets/pegDiagram-GJSIUBJH-aost1sSO.js +1 -0
- package/dist/client/assets/pegDiagram-XKGWAZYB-DRo8CZu3.js +1 -0
- package/dist/client/assets/percentages-LWOC67ZH-VhvllE7L.js +1 -0
- package/dist/client/assets/{pica-xkWDouSg.js → pica-BPrp-GK1.js} +1 -1
- package/dist/client/assets/pie-DzWLGKAD.js +1 -0
- package/dist/client/assets/pie-WAS4IAKB-Bg2eCNl5.js +1 -0
- package/dist/client/assets/pie-WAS4IAKB-DWSm9SSD.js +1 -0
- package/dist/client/assets/pieDiagram-5QR66LMP-BICdpEuz.js +39 -0
- package/dist/client/assets/pieDiagram-E7YTZNPT-CZThaHsc.js +39 -0
- package/dist/client/assets/pl-PL-BSY6YFZ3-CFuzA6L0.js +12 -0
- package/dist/client/assets/preload-helper-BAlEavIC.js +1 -0
- package/dist/client/assets/preview-render-compiler-ktU0SXxY.js +43 -0
- package/dist/client/assets/preview-render-profile-D652PAjA.js +1 -0
- package/dist/client/assets/preview-render-worker-BI2bFVqM.js +575 -0
- package/dist/client/assets/prod-DU-0VfI7.js +145 -0
- package/dist/client/assets/prod-cXUNdmYV.js +1 -0
- package/dist/client/assets/pt-BR-CZDV62R3-CkPMtyNx.js +10 -0
- package/dist/client/assets/pt-PT-JO57XJJW-CBSnfGtF.js +12 -0
- package/dist/client/assets/{pug-Wky5Dnfy.js → pug-CqqUmdG7.js} +1 -1
- package/dist/client/assets/purify.es-go7v6Te-.js +3 -0
- package/dist/client/assets/{quadrantDiagram-AXDQQJYC-DwexhEhd.js → quadrantDiagram-AXDQQJYC-C5iowkl_.js} +3 -3
- package/dist/client/assets/quadrantDiagram-O4NWA36T-Bgx5bF97.js +7 -0
- package/dist/client/assets/quick-switcher-De4PjZFC.css +1 -0
- package/dist/client/assets/quick-switcher-controller-DSlOwOsU.js +1 -0
- package/dist/client/assets/radar-RG4KPBEZ-BfNQUEQy.js +1 -0
- package/dist/client/assets/radar-RG4KPBEZ-DxExotg6.js +1 -0
- package/dist/client/assets/railroad-74A4TZTK-BaQ6U6eJ.js +1 -0
- package/dist/client/assets/railroad-74A4TZTK-FfHmeIQk.js +1 -0
- package/dist/client/assets/railroad-abnf-HS5TGJTU-BJ3KZw7J.js +1 -0
- package/dist/client/assets/railroad-abnf-HS5TGJTU-CLkdDRsJ.js +1 -0
- package/dist/client/assets/railroad-ebnf-LZEXJU2U-B162zvcG.js +1 -0
- package/dist/client/assets/railroad-ebnf-LZEXJU2U-DA0sEq7w.js +1 -0
- package/dist/client/assets/railroad-peg-WCYAUIDC-CGs5GeJ5.js +1 -0
- package/dist/client/assets/railroad-peg-WCYAUIDC-DCmlICzO.js +1 -0
- package/dist/client/assets/railroadDiagram-O6MQD6OU-BTt_rKjT.js +1 -0
- package/dist/client/assets/railroadDiagram-XR7U4H2S-DbVoNgSz.js +1 -0
- package/dist/client/assets/{requirementDiagram-BXWQKSXE-C4cKwiIw.js → requirementDiagram-BXWQKSXE-BkvazG7r.js} +1 -1
- package/dist/client/assets/requirementDiagram-PLB6GJNP-BT0j9C40.js +84 -0
- package/dist/client/assets/ro-RO-UZ5ICYYN-BOuntc_r.js +12 -0
- package/dist/client/assets/room-DX7lIfnu.js +1 -0
- package/dist/client/assets/ru-RU-AN7JPREC-D-ow3SNR.js +10 -0
- package/dist/client/assets/runtime-config-BFVdhnJu.js +1 -0
- package/dist/client/assets/runtime-paths-Cn0snt_9.js +1 -0
- package/dist/client/assets/sankeyDiagram-IPEJSGJF-X1BCUIrf.js +40 -0
- package/dist/client/assets/sankeyDiagram-P5KCCOFB-C_IemB9h.js +40 -0
- package/dist/client/assets/sankeyLinkHorizontal-usjP1-Cg.js +1 -0
- package/dist/client/assets/sequenceDiagram-PO4LG4MO-B-2QfXhV.js +169 -0
- package/dist/client/assets/{sequenceDiagram-WJ2MYXX4-BX6jqJFD.js → sequenceDiagram-WJ2MYXX4-CxFBgLGd.js} +3 -3
- package/dist/client/assets/si-LK-7CBLD6QQ-c91EepX0.js +1 -0
- package/dist/client/assets/{sieve-BAxa3IjF.js → sieve-tLWDfEkZ.js} +1 -1
- package/dist/client/assets/sizeCapture-INFHLROL-B0uUizjq.js +1 -1
- package/dist/client/assets/sizeCapture-INFHLROL-DrzwYt5z.js +1 -0
- package/dist/client/assets/sk-SK-SWR6DKBI-D5vFMIL6.js +7 -0
- package/dist/client/assets/sl-SI-QY5KCFGA-RZhwMpQL.js +8 -0
- package/dist/client/assets/solr-B78wSQJQ.js +1 -0
- package/dist/client/assets/src-XiVvaevx.js +1 -0
- package/dist/client/assets/stateDiagram-D77RDMKH-BaSQ6Owj.js +1 -0
- package/dist/client/assets/stateDiagram-v2-GCMORJYK-CsVcfwVp.js +291 -0
- package/dist/client/assets/stateDiagram-v2-MP3YSRHH-CLlwrdvU.js +1 -0
- package/dist/client/assets/sv-SE-O3OFCY3J-DnS86_7q.js +12 -0
- package/dist/client/assets/swimlanes-2SLR337P-CnYTVqRX.js +1 -0
- package/dist/client/assets/swimlanes-42K2YHIH-CALFEmiS.js +1 -0
- package/dist/client/assets/swimlanesDiagram-TC7HE7FX-Bh4tmz27.js +8 -0
- package/dist/client/assets/swimlanesDiagram-VR7AAH4N-xhehUG9e.js +8 -0
- package/dist/client/assets/ta-IN-V6NHHU6Z-D5jy7_AE.js +6 -0
- package/dist/client/assets/th-TH-WLSZUSBX-DHehoYR2.js +1 -0
- package/dist/client/assets/{timeline-definition-24CTP7MA-BA-lVH6P.js → timeline-definition-24CTP7MA-zse-5Dbm.js} +5 -5
- package/dist/client/assets/timeline-definition-EJHVYXUP-BhqPlKkN.js +120 -0
- package/dist/client/assets/tr-TR-GUFYG22B-ClVaf8h1.js +4 -0
- package/dist/client/assets/treeView-Q6P3EWNA-BvHOzbu9.js +1 -0
- package/dist/client/assets/treeView-Q6P3EWNA-Cccy0ngL.js +1 -0
- package/dist/client/assets/treemap-CxZTjHiH.js +1 -0
- package/dist/client/assets/treemap-WGGIJYW6-oety7paS.js +1 -0
- package/dist/client/assets/treemap-WGGIJYW6-sMRCjCtX.js +1 -0
- package/dist/client/assets/uk-UA-K6SV5NFQ-BLTTtyNB.js +6 -0
- package/dist/client/assets/usecaseDiagram-POWQR4AR-DR2LHQYs.js +328 -0
- package/dist/client/assets/uz-UZ-TVKTZO2G-Bm02Eg3D.js +1 -0
- package/dist/client/assets/v4-DDdyfk2q.js +1 -0
- package/dist/client/assets/vault-api-client-BQxLVPeF.js +7 -0
- package/dist/client/assets/vault-paths-BT-6nztu.js +1 -0
- package/dist/client/assets/vault-utils-Bct69Xw2.js +1 -0
- package/dist/client/assets/venn.esm-C5rDfA9t.js +7 -0
- package/dist/client/assets/vennDiagram-4TSXK5OY-DgHr6cJD.js +28 -0
- package/dist/client/assets/vennDiagram-UO4OBE2U-BRwLn2Q1.js +28 -0
- package/dist/client/assets/{verilog-7LoJAqYT.js → verilog-CjI9Y6RI.js} +1 -1
- package/dist/client/assets/vi-VN-7FKFXJNO-CL3WPhmG.js +7 -0
- package/dist/client/assets/wardley-WFR3VGLG-BdwDpX_I.js +1 -0
- package/dist/client/assets/wardley-WFR3VGLG-Y7xty_3m.js +1 -0
- package/dist/client/assets/{wardleyDiagram-VM6X3IG4-C2oY-YbF.js → wardleyDiagram-VM6X3IG4-9A60XZis.js} +3 -3
- package/dist/client/assets/wardleyDiagram-VNRHLVJA-B_tMcVFG.js +78 -0
- package/dist/client/assets/wiki-link-resolver-Dch88erO.js +1 -0
- package/dist/client/assets/{worker-engine-m0rlHn8R-S8mpn_O0.js → worker-engine-m0rlHn8R-5h66k403.js} +1 -1
- package/dist/client/assets/workspace-change-CVA9dVmy.js +1 -0
- package/dist/client/assets/workspace-sync-client-C2pdaQUN.js +1 -0
- package/dist/client/assets/xychartDiagram-PMCCYNJV-fRpZ1MA5.js +7 -0
- package/dist/client/assets/xychartDiagram-S5SC5T6Z-D00iy-wB.js +7 -0
- package/dist/client/assets/{yaml-9ltHPDNO.js → yaml-BcZaqAz8.js} +1 -1
- package/dist/client/assets/yjs-B41tM6Sz.js +4 -0
- package/dist/client/assets/yjs-provider-reset-guard-DpntzUDR.js +1 -0
- package/dist/client/assets/zh-CN-AOKVLNNK-DGidDH2b.js +11 -0
- package/dist/client/assets/zh-HK-CDKPF5DC-CRcNR3rk.js +1 -0
- package/dist/client/assets/zh-TW-ZVGYESGW-C7Qji1y6.js +13 -0
- package/dist/client/drawio-editor.html +9 -9
- package/dist/client/excalidraw-editor.html +43 -38
- package/dist/client/export-document.html +6 -7
- package/dist/client/index.html +49 -38
- package/package.json +23 -26
- package/src/client/app/drawio-editor.html +2 -1
- package/src/client/app/excalidraw-editor.html +2 -1
- package/src/client/app/export-document-entry.js +1 -0
- package/src/client/app/export-document.html +2 -1
- package/src/client/app/index.html +47 -16
- package/src/client/app/main-entry.js +1 -19
- package/src/client/application/app-shell/comments-feature.js +6 -0
- package/src/client/application/app-shell/ui-feature-shell.js +156 -59
- package/src/client/application/app-shell/ui-feature-tab-activity.js +8 -3
- package/src/client/application/app-shell-elements.js +7 -0
- package/src/client/application/diagram-preview-hydrator.js +7 -0
- package/src/client/application/highlight-theme.js +16 -0
- package/src/client/application/mermaid-preview-hydrator.js +89 -3
- package/src/client/application/preview-diagram-utils.js +1 -0
- package/src/client/application/preview-render-compiler.js +45 -20
- package/src/client/application/preview-render-executor.js +4 -27
- package/src/client/application/preview-render-profile.js +8 -12
- package/src/client/application/preview-renderer.js +27 -7
- package/src/client/application/workspace-coordinator.js +20 -21
- package/src/client/bootstrap/collabmd-app-shell.js +87 -42
- package/src/client/bootstrap/lazy-collab-clients.js +90 -0
- package/src/client/browser-utils.js +1 -1
- package/src/client/domain/excalidraw-scene-reconcile.js +5 -2
- package/src/client/domain/excalidraw-scene.js +0 -11
- package/src/client/domain/file-search.js +1 -0
- package/src/client/domain/hash-routes.js +5 -0
- package/src/client/domain/highlight-runtime.js +74 -0
- package/src/client/domain/lobby-chat.js +2 -0
- package/src/client/domain/markdown-math.js +14 -0
- package/src/client/domain/runtime-paths.js +56 -7
- package/src/client/domain/vault-utils.js +11 -0
- package/src/client/excalidraw-editor.js +20 -4
- package/src/client/export/export-host.js +3 -7
- package/src/client/export/export-pipeline.js +208 -21
- package/src/client/infrastructure/auth-client.js +1 -2
- package/src/client/infrastructure/browser-preferences-port.js +24 -0
- package/src/client/infrastructure/editor-session.js +20 -0
- package/src/client/infrastructure/editor-view-adapter.js +51 -15
- package/src/client/infrastructure/excalidraw-room-client.js +11 -46
- package/src/client/infrastructure/git-api-client.js +5 -0
- package/src/client/infrastructure/hosted-api-client.js +60 -0
- package/src/client/infrastructure/lobby-presence.js +2 -2
- package/src/client/infrastructure/runtime-config.js +3 -1
- package/src/client/infrastructure/tab-activity-lock.js +8 -4
- package/src/client/infrastructure/webmcp-tool-registry.js +27 -6
- package/src/client/presentation/bases-preview-controller.js +2 -1
- package/src/client/presentation/comment-markdown-renderer.js +4 -14
- package/src/client/presentation/comment-overview-controller.js +1 -2
- package/src/client/presentation/comment-ui/comment-ui-shared.js +5 -2
- package/src/client/presentation/comment-ui-controller.js +21 -30
- package/src/client/presentation/create-menu-presenter.js +16 -18
- package/src/client/presentation/drawio-embed-controller.js +55 -7
- package/src/client/presentation/excalidraw-embed-controller.js +11 -3
- package/src/client/presentation/file-explorer-controller.js +4 -0
- package/src/client/presentation/file-explorer-view.js +304 -176
- package/src/client/presentation/file-history-view-controller.js +6 -0
- package/src/client/presentation/git-diff-view-controller.js +3 -2
- package/src/client/presentation/git-panel-controller.js +7 -6
- package/src/client/presentation/hosted-workspace-gate-controller.js +180 -0
- package/src/client/presentation/image-lightbox-controller.js +7 -6
- package/src/client/presentation/layout-controller.js +10 -1
- package/src/client/presentation/outline-controller.js +0 -86
- package/src/client/presentation/quick-switcher-controller.js +50 -13
- package/src/client/presentation/scroll-sync-controller.js +69 -21
- package/src/client/presentation/team-settings-controller.js +228 -0
- package/src/client/styles/components/navigation.css +2 -2
- package/src/client/styles/deferred-collab.css +6 -0
- package/src/client/styles/deferred-git.css +7 -0
- package/src/client/styles/deferred-preview.css +7 -0
- package/src/client/styles/features/diagram-preview.css +1 -15
- package/src/client/styles/features/outline.css +4 -2
- package/src/client/styles/features/preview-markdown.css +29 -15
- package/src/client/styles/features/team-settings.css +162 -0
- package/src/client/styles/foundation/themes.css +56 -271
- package/src/client/styles/foundation/tokens.css +2 -2
- package/src/client/styles/layout/editor-page.css +0 -14
- package/src/client/styles/layout/overlays.css +16 -0
- package/src/client/styles/layout/responsive.css +5 -5
- package/src/client/styles/layout/shell.css +26 -1
- package/src/client/styles/layout/sidebar.css +95 -3
- package/src/client/styles/style.css +3 -19
- package/src/client/styles/surfaces/landing-page.css +260 -0
- package/src/domain/agent-tool-definitions.js +182 -74
- package/src/domain/collabmd-content-capabilities.js +62 -7
- package/src/domain/collaboration-protocol.js +2 -0
- package/src/domain/excalidraw-agent-scene.js +108 -6
- package/src/domain/excalidraw-agent-verification.js +95 -1
- package/src/domain/excalidraw-room-codec.js +12 -1
- package/src/domain/literal-text-search.js +13 -0
- package/src/domain/markdown-outline.js +35 -0
- package/src/server/application/agent-connection-service.js +6 -2
- package/src/server/application/agent-content-service.js +250 -114
- package/src/server/auth/create-auth-service.js +40 -12
- package/src/server/auth/session-cookie.js +49 -38
- package/src/server/config/env.js +97 -6
- package/src/server/create-app-server.js +23 -153
- package/src/server/domain/backlink-index.js +1 -11
- package/src/server/domain/bases/base-query-results.js +7 -3
- package/src/server/domain/bases/base-query-service.js +2 -7
- package/src/server/domain/collaboration/collaboration-room.js +54 -16
- package/src/server/domain/docx-exporter.js +256 -2
- package/src/server/domain/hosted-workspace-contract.js +7 -0
- package/src/server/domain/hosted-workspace.js +39 -63
- package/src/server/domain/ripgrep-search-service.js +97 -34
- package/src/server/infrastructure/git/diff-service.js +15 -11
- package/src/server/infrastructure/git/git-service.js +4 -0
- package/src/server/infrastructure/git/image-mime.js +4 -3
- package/src/server/infrastructure/git/local-exclude.js +13 -1
- package/src/server/infrastructure/git/status-service.js +10 -6
- package/src/server/infrastructure/http/create-agent-api-handler.js +1 -1
- package/src/server/infrastructure/http/create-git-api-query-handler.js +25 -0
- package/src/server/infrastructure/http/create-hosted-api-handler.js +5 -0
- package/src/server/infrastructure/http/create-request-handler.js +95 -26
- package/src/server/infrastructure/http/create-static-handler.js +3 -0
- package/src/server/infrastructure/http/create-vault-api-query-handler.js +28 -55
- package/src/server/infrastructure/http/http-response.js +2 -0
- package/src/server/infrastructure/mcp/create-agent-mcp-handler.js +2 -1
- package/src/server/infrastructure/persistence/hosted-metadata-store.js +42 -5
- package/src/server/infrastructure/persistence/path-utils.js +23 -3
- package/src/server/infrastructure/persistence/pull-backup-store.js +52 -42
- package/src/server/infrastructure/persistence/sidecar-store.js +19 -9
- package/src/server/infrastructure/persistence/vault-file-store.js +57 -171
- package/src/server/infrastructure/plantuml/plantuml-renderer.js +33 -0
- package/src/server/infrastructure/structurizr/structurizr-workspace-service.js +24 -10
- package/src/server/infrastructure/websocket/attach-collaboration-gateway.js +55 -25
- package/src/server/infrastructure/websocket/client-socket-session.js +32 -4
- package/src/server/infrastructure/workspace/file-system-sync-service.js +4 -2
- package/src/server/shared/agent-tool-rate-limiter.js +7 -0
- package/src/server/startup/git-remote-bootstrap.js +56 -49
- package/src/server/vault-registry.js +251 -0
- package/dist/client/assets/CodeMirrorEditor-UCMRAMCV-C-nmgL5g.js +0 -1
- package/dist/client/assets/abnfDiagram-VCTEODGH-CdVZqicp.js +0 -1
- package/dist/client/assets/ar-SA-PQUY64WN-xjXgbW6d.js +0 -10
- package/dist/client/assets/architecture-7GRP2DOG-BMOPAkUC.js +0 -1
- package/dist/client/assets/architectureDiagram-5GKGNRK7-wUo0bXif.js +0 -36
- package/dist/client/assets/az-AZ-OXJXL76K-4JkO4Pca.js +0 -1
- package/dist/client/assets/base-CaIEJUF9.css +0 -1
- package/dist/client/assets/bg-BG-W2GKIJDF-DnkH_o81.js +0 -5
- package/dist/client/assets/blockDiagram-I7D4REHJ-BRSK3m49.js +0 -129
- package/dist/client/assets/bn-BD-TGL7M4PJ-CG4JkmtP.js +0 -3
- package/dist/client/assets/bn-IN-BKETKYEH-CG4JkmtP.js +0 -3
- package/dist/client/assets/ca-ES-LD5SCRVV-U6_TVMX9.js +0 -8
- package/dist/client/assets/channel-Fa4GS_-F.js +0 -1
- package/dist/client/assets/chunk-2E4U76K2-BPnTT-J3.js +0 -2
- package/dist/client/assets/chunk-4HAMMTFA-DStbIfJ1.js +0 -62
- package/dist/client/assets/chunk-75Z2AOVW-C5pGd3W9.js +0 -2
- package/dist/client/assets/chunk-7XWMRXBY-CfMzEq80.js +0 -1
- package/dist/client/assets/chunk-DU6HZSFF-Zkp69c6c.js +0 -127
- package/dist/client/assets/chunk-GMAD6QVW-NZ6WpDb8.js +0 -72
- package/dist/client/assets/chunk-GVQU2GXP-D8SDprfX.js +0 -1
- package/dist/client/assets/chunk-L3NEJ4N5-aijKP-eh.js +0 -1
- package/dist/client/assets/chunk-OSK3NFVY-CCbLQAMa.js +0 -10
- package/dist/client/assets/chunk-POPQ4Y6H-CYnpIgXT.js +0 -1
- package/dist/client/assets/chunk-PWAF6VOD-JSNrcBmP.js +0 -1
- package/dist/client/assets/chunk-RM4UPSZO-DOWllDY8.js +0 -41
- package/dist/client/assets/chunk-TLUHSLCS-DTY5v0aj.js +0 -2
- package/dist/client/assets/classDiagram-ZZMXUADV-BsQWoR3Q.js +0 -1
- package/dist/client/assets/classDiagram-v2-VYDZK3BY-BsQWoR3Q.js +0 -1
- package/dist/client/assets/comment-thread-store-CX98zR6q.js +0 -1
- package/dist/client/assets/comment-threads-BnRwo5B9.js +0 -4
- package/dist/client/assets/cose-bilkent-JH36ORCC-Cm_QF_yb.js +0 -1
- package/dist/client/assets/cs-CZ-OFPU5DBV-BmFAIhqX.js +0 -7
- package/dist/client/assets/cynefin-OW5HDTMX-7tP7QfM3.js +0 -1
- package/dist/client/assets/cynefinDiagram-5FMLGOSQ-rTz9RhFH.js +0 -62
- package/dist/client/assets/cytoscape.esm-B-NFISlW.js +0 -321
- package/dist/client/assets/da-DK-FRDJFYWF-H387Jw8B.js +0 -2
- package/dist/client/assets/dagre-PrKaheQc.js +0 -1
- package/dist/client/assets/de-CH-ZG7H3QK3-C_groygo.js +0 -11
- package/dist/client/assets/de-DE-SIJYH4IH-C_groygo.js +0 -11
- package/dist/client/assets/diagram-UQ7AKVKN-CNYlXtu4.js +0 -41
- package/dist/client/assets/diagram-VX7I27RA-CsJbsx5F.js +0 -24
- package/dist/client/assets/diagram-Z3DM3KII-D0mLxEgI.js +0 -24
- package/dist/client/assets/direct-engine-DdrQKpgq-CtKfQzCt.js +0 -5
- package/dist/client/assets/dist--hk9I5HQ.js +0 -1
- package/dist/client/assets/dist-B1XEa-Zs.js +0 -1
- package/dist/client/assets/dist-BJ1bJs33.js +0 -1
- package/dist/client/assets/dist-Bd1JucQF.js +0 -1
- package/dist/client/assets/dist-ByrG2qBA.js +0 -1
- package/dist/client/assets/dist-CKS_-are.js +0 -1
- package/dist/client/assets/dist-D37Hyu3h.js +0 -9
- package/dist/client/assets/dist-Dl_tpDSr.js +0 -1
- package/dist/client/assets/dist-Dm4w5UId.js +0 -1
- package/dist/client/assets/dist-DpYDHR9p.js +0 -6
- package/dist/client/assets/dist-JaU3aRlD.js +0 -19
- package/dist/client/assets/dist-RKBTaQMb.js +0 -13
- package/dist/client/assets/dist-eBx8q6Sy.js +0 -1
- package/dist/client/assets/document-formatter-rDDjRfZ2.js +0 -2
- package/dist/client/assets/drawioEditor-JubEEha7.js +0 -9
- package/dist/client/assets/ebnfDiagram-PWID7BFC-HeTxHpCU.js +0 -1
- package/dist/client/assets/editor-session-Bk6oIvSr.js +0 -54
- package/dist/client/assets/el-GR-IEE2CGI2-BkT6YT54.js +0 -7
- package/dist/client/assets/embedded-editor-base-BlCgz6mw.css +0 -1
- package/dist/client/assets/es-Bfdp096f.js +0 -22
- package/dist/client/assets/es-ES-TVVPWKV5-CpPKJXTM.js +0 -12
- package/dist/client/assets/eu-ES-CGBMFQDT-Bu3N2493.js +0 -8
- package/dist/client/assets/eventmodeling-NTZA5JFV-BR2FzK4R.js +0 -1
- package/dist/client/assets/excalidraw-element-link-YLIaTnVF.js +0 -7
- package/dist/client/assets/excalidrawEditor-dBMbRX_S.js +0 -9
- package/dist/client/assets/export-page-CRRQ2NEl.js +0 -57
- package/dist/client/assets/exportDocument-BlQRd9_m.js +0 -2
- package/dist/client/assets/exportDocument-CNSbjZwu.css +0 -1
- package/dist/client/assets/fa-IR-IE6XAPR4-BEvLCORD.js +0 -9
- package/dist/client/assets/fi-FI-P7TKNHRM-DI0q8iSX.js +0 -6
- package/dist/client/assets/file-icon-svg-Y_kpF957.js +0 -1
- package/dist/client/assets/file-search-DDLyyLDU.js +0 -1
- package/dist/client/assets/flowDiagram-HODETNUW-D5Gy0wmg.js +0 -1
- package/dist/client/assets/forth-Cezjo90N.js +0 -1
- package/dist/client/assets/fr-FR-QI2XZNT7-y8kXd8LA.js +0 -12
- package/dist/client/assets/ganttDiagram-EL5Y4UJY-BHgOYiZz.js +0 -292
- package/dist/client/assets/gitGraph-4MIJSDKK-DYlXv_yJ.js +0 -1
- package/dist/client/assets/gitGraphDiagram-WWUBYQGX-Dl__X3Sk.js +0 -106
- package/dist/client/assets/gl-ES-TLYCNOZZ-Br-Fhff-.js +0 -6
- package/dist/client/assets/graphlib-DS17s2tU.js +0 -1
- package/dist/client/assets/he-IL-ZX43XLGP-qKQq6V9X.js +0 -9
- package/dist/client/assets/hi-IN-UTYRMTUF-DOUcwrDO.js +0 -3
- package/dist/client/assets/hu-HU-AJOSEBW6-FqTyvHlD.js +0 -3
- package/dist/client/assets/id-ID-ETLTVG6C-CQqh3CLS.js +0 -8
- package/dist/client/assets/image-ZVKINSPA-DgzW5zAy.js +0 -1
- package/dist/client/assets/index-D3RER1SZ.js +0 -1023
- package/dist/client/assets/index-DREVKl_K.css +0 -1
- package/dist/client/assets/info-A6RAGUB7-BlU-8_xu.js +0 -1
- package/dist/client/assets/infoDiagram-27XIBGKW-DBpoANC9.js +0 -2
- package/dist/client/assets/it-IT-B4B6TP6L-V-yK3SZz.js +0 -12
- package/dist/client/assets/ja-JP-IYKVURR5-BQKBXRpX.js +0 -12
- package/dist/client/assets/javascript-BWjar7HY.js +0 -1
- package/dist/client/assets/javascript-D-FtdkNC.js +0 -1
- package/dist/client/assets/jsx-runtime-BpzPEenQ.js +0 -1
- package/dist/client/assets/kaa-SE2BUIKX-CZ5kfwPg.js +0 -1
- package/dist/client/assets/kab-KAB-Y3GLKXLR-Do7GWfuN.js +0 -4
- package/dist/client/assets/kk-KZ-ABWUFVOH-BpqVciQz.js +0 -1
- package/dist/client/assets/ko-KR-7JQDXKGM-N42lep78.js +0 -5
- package/dist/client/assets/ku-TR-NAH2Q5B7-K8LLl9fk.js +0 -6
- package/dist/client/assets/line-BFl3ujec.js +0 -1
- package/dist/client/assets/linear-n-3HSMUF.js +0 -1
- package/dist/client/assets/lt-LT-VQFYRSNQ-BmOd0ALn.js +0 -3
- package/dist/client/assets/lv-LV-T62VSYUM-B22WdPhp.js +0 -4
- package/dist/client/assets/mermaid-parser.core-Bl0efOMt.js +0 -4
- package/dist/client/assets/mermaid.core-BrY09czX.js +0 -11
- package/dist/client/assets/mermaid.core-DfcNfOTv.js +0 -1
- package/dist/client/assets/modulepreload-polyfill-P2Xu9kJm.js +0 -1
- package/dist/client/assets/mr-IN-V4FHLCJE-XX069tpm.js +0 -9
- package/dist/client/assets/my-MM-E3SQ6E54-cst_-5SB.js +0 -1
- package/dist/client/assets/nb-NO-MLNOFN5H-Bu2URWko.js +0 -8
- package/dist/client/assets/nl-NL-D5L3ZV4M-BqrV0btt.js +0 -13
- package/dist/client/assets/nn-NO-NNHDGPKB-DK-xZaWM.js +0 -4
- package/dist/client/assets/oc-FR-DWCRF55G-BZ5Po5R6.js +0 -4
- package/dist/client/assets/pa-IN-3JSAY44M-BZQSjKrS.js +0 -4
- package/dist/client/assets/packet-AYTQ26CC-BSJEH9Lb.js +0 -1
- package/dist/client/assets/pegDiagram-XKGWAZYB-Bi2Iml7Z.js +0 -1
- package/dist/client/assets/percentages-ETZPVQEE-DFxFqXgH.js +0 -1
- package/dist/client/assets/pie-WAS4IAKB-qxv01Y8W.js +0 -1
- package/dist/client/assets/pieDiagram-E7YTZNPT-_gYXnMoi.js +0 -39
- package/dist/client/assets/pl-PL-ACURYKP3-qcEOSfCk.js +0 -12
- package/dist/client/assets/preload-helper-HclGiUj8.js +0 -1
- package/dist/client/assets/preview-render-compiler-CfxJYldJ.js +0 -41
- package/dist/client/assets/preview-render-compiler-Cu8_i9iS.js +0 -1
- package/dist/client/assets/preview-render-worker-c4Yi93qW.js +0 -66
- package/dist/client/assets/prod-BiJL30sl.js +0 -1
- package/dist/client/assets/prod-qAk7rHa4.js +0 -177
- package/dist/client/assets/pt-BR-LOX7MLGD-DLueHSyZ.js +0 -10
- package/dist/client/assets/pt-PT-CZ2U2RFQ-BJ-GAEm6.js +0 -12
- package/dist/client/assets/quick-switcher-controller-BoIK_wuG.js +0 -1
- package/dist/client/assets/radar-RG4KPBEZ-B6h6pWOs.js +0 -1
- package/dist/client/assets/railroad-74A4TZTK-CGtTWdGc.js +0 -1
- package/dist/client/assets/railroad-abnf-HS5TGJTU-Cq7y22IA.js +0 -1
- package/dist/client/assets/railroad-ebnf-LZEXJU2U-V0aQVv9m.js +0 -1
- package/dist/client/assets/railroad-peg-WCYAUIDC-BQiIsX_p.js +0 -1
- package/dist/client/assets/railroadDiagram-O6MQD6OU-BVA5UbMu.js +0 -1
- package/dist/client/assets/ro-RO-2HECL2X6-CJUvKAf0.js +0 -12
- package/dist/client/assets/ru-RU-HAYNXO46-BWSlvTrt.js +0 -10
- package/dist/client/assets/runtime-config-DcmnGcXU.js +0 -1
- package/dist/client/assets/sankeyDiagram-P5KCCOFB-B5HHkRT2.js +0 -40
- package/dist/client/assets/si-LK-W5KNS4H6-DGGCsn7k.js +0 -1
- package/dist/client/assets/sk-SK-7K2CFGDV-CY4uTYgQ.js +0 -7
- package/dist/client/assets/sl-SI-OXV2QZWW-2-weqaBY.js +0 -6
- package/dist/client/assets/solr-BBopId9w.js +0 -1
- package/dist/client/assets/src-oBChb5qS.js +0 -1
- package/dist/client/assets/stateDiagram-D77RDMKH-CmqxyRGx.js +0 -1
- package/dist/client/assets/stateDiagram-v2-MP3YSRHH-zoLLQVyh.js +0 -1
- package/dist/client/assets/sv-SE-JTOBZRGL-9-IUtVkO.js +0 -12
- package/dist/client/assets/swimlanes-42K2YHIH-Bmgb9Zld.js +0 -1
- package/dist/client/assets/swimlanesDiagram-VR7AAH4N-DS-KQN37.js +0 -8
- package/dist/client/assets/ta-IN-KFAVKXGT-gHO6Q_DH.js +0 -6
- package/dist/client/assets/th-TH-VDMSCPDL-BvJuw6PJ.js +0 -1
- package/dist/client/assets/tr-TR-CEZ6GX45-CG6UU3Su.js +0 -4
- package/dist/client/assets/treeView-Q6P3EWNA-BTTYcvrF.js +0 -1
- package/dist/client/assets/treemap-WGGIJYW6-Cg7tyfH8.js +0 -1
- package/dist/client/assets/uk-UA-Q3H3OXQC-CSuIg_DY.js +0 -6
- package/dist/client/assets/uz-UZ-NGCSWWPX-mom7rxSP.js +0 -1
- package/dist/client/assets/vault-api-client-iZLhMJKe.js +0 -6
- package/dist/client/assets/vennDiagram-4TSXK5OY-DNdUC_Xj.js +0 -34
- package/dist/client/assets/vi-VN-P3NDEVPS-BB0Fu9ck.js +0 -7
- package/dist/client/assets/wardley-WFR3VGLG-C6N1rULY.js +0 -1
- package/dist/client/assets/wiki-link-resolver-DFIwErjc.js +0 -1
- package/dist/client/assets/xychartDiagram-S5SC5T6Z-CoIR8CBX.js +0 -7
- package/dist/client/assets/yjs-provider-reset-guard-9ul1qF6k.js +0 -4
- package/dist/client/assets/zh-CN-SS3O57GA-Bj8wsiMe.js +0 -11
- package/dist/client/assets/zh-HK-LWJT3VCF-DOTquTCh.js +0 -1
- package/dist/client/assets/zh-TW-VJXC72RT-B48PRo-l.js +0 -13
- package/integrations/pi/index.ts +0 -94
- package/src/server/domain/collaboration/protocol.js +0 -6
- /package/dist/client/assets/{vault-api-client-C3mlS_4N.css → auth-gate-C3mlS_4N.css} +0 -0
- /package/dist/client/assets/{base-BYODPHdS.js → github.min-DBihDoic.js} +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import * as decoding from 'lib0/decoding';
|
|
2
2
|
|
|
3
|
-
import { MSG_SYNC } from '
|
|
3
|
+
import { MSG_SYNC } from '../../../domain/collaboration-protocol.js';
|
|
4
4
|
|
|
5
5
|
function isSyncMessage(payload) {
|
|
6
6
|
try {
|
|
@@ -14,12 +14,15 @@ function isSyncMessage(payload) {
|
|
|
14
14
|
|
|
15
15
|
export class ClientSocketSession {
|
|
16
16
|
constructor({
|
|
17
|
+
expiresAt = null,
|
|
17
18
|
onDisconnected = null,
|
|
18
19
|
onFailed = null,
|
|
19
20
|
room,
|
|
20
21
|
roomName,
|
|
21
22
|
ws,
|
|
22
23
|
}) {
|
|
24
|
+
this.expiresAt = expiresAt;
|
|
25
|
+
this.expiryTimer = null;
|
|
23
26
|
this.onDisconnected = onDisconnected;
|
|
24
27
|
this.onFailed = onFailed;
|
|
25
28
|
this.room = room;
|
|
@@ -33,6 +36,7 @@ export class ClientSocketSession {
|
|
|
33
36
|
this.initialSyncTimer = null;
|
|
34
37
|
|
|
35
38
|
this.handleMessage = (payload) => {
|
|
39
|
+
if (this.expireAuthentication()) return;
|
|
36
40
|
if (isSyncMessage(payload)) {
|
|
37
41
|
this.hasReceivedClientSync = true;
|
|
38
42
|
this.clearInitialSyncTimer();
|
|
@@ -46,6 +50,7 @@ export class ClientSocketSession {
|
|
|
46
50
|
this.room.handleMessage(this.ws, payload);
|
|
47
51
|
};
|
|
48
52
|
this.handleClose = () => {
|
|
53
|
+
clearTimeout(this.expiryTimer);
|
|
49
54
|
if (!this.initialized) {
|
|
50
55
|
this.closedBeforeReady = true;
|
|
51
56
|
this.clearInitialSyncTimer();
|
|
@@ -63,6 +68,21 @@ export class ClientSocketSession {
|
|
|
63
68
|
};
|
|
64
69
|
}
|
|
65
70
|
|
|
71
|
+
expireAuthentication() {
|
|
72
|
+
if (!Number.isFinite(this.expiresAt) || Date.now() < this.expiresAt) return false;
|
|
73
|
+
this.handleClose();
|
|
74
|
+
this.ws.close(4001, 'Authentication expired');
|
|
75
|
+
return true;
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
scheduleAuthenticationExpiry() {
|
|
79
|
+
if (!Number.isFinite(this.expiresAt) || this.expireAuthentication()) return;
|
|
80
|
+
this.expiryTimer = setTimeout(() => {
|
|
81
|
+
this.scheduleAuthenticationExpiry();
|
|
82
|
+
}, Math.min(this.expiresAt - Date.now(), 2 ** 31 - 1));
|
|
83
|
+
this.expiryTimer.unref?.();
|
|
84
|
+
}
|
|
85
|
+
|
|
66
86
|
markAlive() {
|
|
67
87
|
this.isAlive = true;
|
|
68
88
|
}
|
|
@@ -93,6 +113,7 @@ export class ClientSocketSession {
|
|
|
93
113
|
this.ws.off('error', this.handleError);
|
|
94
114
|
this.ws.off('pong', this.handlePong);
|
|
95
115
|
this.clearInitialSyncTimer();
|
|
116
|
+
clearTimeout(this.expiryTimer);
|
|
96
117
|
}
|
|
97
118
|
|
|
98
119
|
flushPendingMessages() {
|
|
@@ -126,6 +147,12 @@ export class ClientSocketSession {
|
|
|
126
147
|
|
|
127
148
|
async initialize() {
|
|
128
149
|
this.attach();
|
|
150
|
+
if (this.expireAuthentication()) {
|
|
151
|
+
this.detach();
|
|
152
|
+
this.onFailed?.(this.roomName);
|
|
153
|
+
return;
|
|
154
|
+
}
|
|
155
|
+
this.scheduleAuthenticationExpiry();
|
|
129
156
|
|
|
130
157
|
try {
|
|
131
158
|
await this.room.addClient(this.ws, { sendInitialSync: false });
|
|
@@ -138,14 +165,15 @@ export class ClientSocketSession {
|
|
|
138
165
|
}
|
|
139
166
|
|
|
140
167
|
this.initialized = true;
|
|
141
|
-
this.
|
|
142
|
-
this.scheduleInitialSync();
|
|
143
|
-
|
|
168
|
+
if (this.expireAuthentication()) return;
|
|
144
169
|
if (this.closedBeforeReady) {
|
|
145
170
|
this.disconnect();
|
|
146
171
|
return;
|
|
147
172
|
}
|
|
148
173
|
|
|
174
|
+
this.flushPendingMessages();
|
|
175
|
+
this.scheduleInitialSync();
|
|
176
|
+
|
|
149
177
|
console.log(`[ws] "${this.roomName}" connected (${this.room.clients.size} active client(s))`);
|
|
150
178
|
}
|
|
151
179
|
}
|
|
@@ -11,7 +11,7 @@ import {
|
|
|
11
11
|
import { isIgnoredVaultEntry } from '../persistence/path-utils.js';
|
|
12
12
|
import { createWorkspaceStateFileSystemAdapter } from './workspace-state-file-system-adapter.js';
|
|
13
13
|
|
|
14
|
-
const MAX_INCREMENTAL_PENDING_PATHS =
|
|
14
|
+
const MAX_INCREMENTAL_PENDING_PATHS = 64;
|
|
15
15
|
|
|
16
16
|
function normalizeWatchedPath(filename) {
|
|
17
17
|
if (typeof filename !== 'string' && !Buffer.isBuffer(filename)) {
|
|
@@ -193,7 +193,9 @@ export class FileSystemSyncService {
|
|
|
193
193
|
let filteredChange = this.mutationCoordinator.filterManagedWorkspaceChange(workspaceChange);
|
|
194
194
|
if (!filteredChange) {
|
|
195
195
|
const authoritativeChange = detectWorkspaceStateChange(authoritativePreviousState, nextState);
|
|
196
|
-
|
|
196
|
+
// A full scan already reflects current disk state (no awaits since),
|
|
197
|
+
// so only rebase when the first pass was incremental and may be stale.
|
|
198
|
+
if (incrementalResult && hasWorkspaceMutation(authoritativeChange)) {
|
|
197
199
|
nextState = await this.vaultFileStore.scanWorkspaceState();
|
|
198
200
|
workspaceChange = detectWorkspaceStateChange(authoritativePreviousState, nextState);
|
|
199
201
|
this.lastState = nextState;
|
|
@@ -1,8 +1,15 @@
|
|
|
1
1
|
export function createAgentToolRateLimiter(requestsPerMinute) {
|
|
2
2
|
const limit = Math.max(1, Number.parseInt(requestsPerMinute, 10) || 120);
|
|
3
3
|
const windows = new Map();
|
|
4
|
+
let nextSweepAt = 0;
|
|
4
5
|
return (key) => {
|
|
5
6
|
const timestamp = Date.now();
|
|
7
|
+
if (timestamp >= nextSweepAt) {
|
|
8
|
+
for (const [windowKey, window] of windows) {
|
|
9
|
+
if (timestamp >= window.resetAt) windows.delete(windowKey);
|
|
10
|
+
}
|
|
11
|
+
nextSweepAt = timestamp + 60_000;
|
|
12
|
+
}
|
|
6
13
|
let window = windows.get(key);
|
|
7
14
|
if (!window || timestamp >= window.resetAt) {
|
|
8
15
|
window = { count: 0, resetAt: timestamp + 60_000 };
|
|
@@ -316,6 +316,47 @@ async function ensureRepositoryIdentity(vaultDir, config, options = {}) {
|
|
|
316
316
|
});
|
|
317
317
|
}
|
|
318
318
|
|
|
319
|
+
async function prepareVaultCheckout({ gitConfig, options = {}, repoUrl, vaultDir }) {
|
|
320
|
+
const commandEnv = gitConfig.commandEnv;
|
|
321
|
+
if (await pathExists(vaultDir)) {
|
|
322
|
+
if (!(await isDirectory(vaultDir))) {
|
|
323
|
+
throw new Error(`Vault path "${vaultDir}" exists but is not a directory.`);
|
|
324
|
+
}
|
|
325
|
+
|
|
326
|
+
if (await isGitRepository(vaultDir, options)) {
|
|
327
|
+
const checkoutState = await updateExistingCheckout(vaultDir, repoUrl, {
|
|
328
|
+
...options,
|
|
329
|
+
commandEnv,
|
|
330
|
+
});
|
|
331
|
+
await ensureCollabMetadataGitExclude(vaultDir);
|
|
332
|
+
await ensureRepositoryIdentity(vaultDir, gitConfig, {
|
|
333
|
+
...options,
|
|
334
|
+
commandEnv,
|
|
335
|
+
});
|
|
336
|
+
|
|
337
|
+
if (checkoutState?.syncSkipped) {
|
|
338
|
+
console.warn(`Skipping git sync for "${vaultDir}" because the existing checkout has uncommitted changes.`);
|
|
339
|
+
}
|
|
340
|
+
|
|
341
|
+
return;
|
|
342
|
+
}
|
|
343
|
+
|
|
344
|
+
if (await isDirectoryEmpty(vaultDir)) {
|
|
345
|
+
await cloneIntoVault(vaultDir, repoUrl, { ...options, commandEnv });
|
|
346
|
+
await ensureCollabMetadataGitExclude(vaultDir);
|
|
347
|
+
await ensureRepositoryIdentity(vaultDir, gitConfig, { ...options, commandEnv });
|
|
348
|
+
return;
|
|
349
|
+
}
|
|
350
|
+
|
|
351
|
+
throw new Error(`Refusing to initialize "${vaultDir}" because it is not empty and is not a git repository.`);
|
|
352
|
+
}
|
|
353
|
+
|
|
354
|
+
await ensureDirectory(dirname(vaultDir));
|
|
355
|
+
await cloneIntoVault(vaultDir, repoUrl, { ...options, commandEnv });
|
|
356
|
+
await ensureCollabMetadataGitExclude(vaultDir);
|
|
357
|
+
await ensureRepositoryIdentity(vaultDir, gitConfig, { ...options, commandEnv });
|
|
358
|
+
}
|
|
359
|
+
|
|
319
360
|
export async function prepareConfigForStartup(config, options = {}) {
|
|
320
361
|
const gitConfig = config.git ?? {
|
|
321
362
|
cleanup: null,
|
|
@@ -346,59 +387,25 @@ export async function prepareConfigForStartup(config, options = {}) {
|
|
|
346
387
|
return config;
|
|
347
388
|
}
|
|
348
389
|
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
390
|
+
// ponytail: one checkout per mapped vault; unmapped vaults boot from disk untouched
|
|
391
|
+
const vaults = config.vaults?.length
|
|
392
|
+
? config.vaults
|
|
393
|
+
: [{ dir: config.vaultDir, id: null, repoUrl: config.git.remote.repoUrl }];
|
|
394
|
+
for (const vault of vaults) {
|
|
395
|
+
if (!vault.repoUrl) {
|
|
396
|
+
continue;
|
|
352
397
|
}
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
await ensureCollabMetadataGitExclude(config.vaultDir);
|
|
360
|
-
await ensureRepositoryIdentity(config.vaultDir, config.git, {
|
|
361
|
-
...options,
|
|
362
|
-
commandEnv: config.git.commandEnv,
|
|
363
|
-
});
|
|
364
|
-
|
|
365
|
-
if (checkoutState?.syncSkipped) {
|
|
366
|
-
console.warn(
|
|
367
|
-
`Skipping git sync for "${config.vaultDir}" because the existing checkout has uncommitted changes.`,
|
|
368
|
-
);
|
|
369
|
-
}
|
|
370
|
-
|
|
371
|
-
return config;
|
|
372
|
-
}
|
|
373
|
-
|
|
374
|
-
if (await isDirectoryEmpty(config.vaultDir)) {
|
|
375
|
-
await cloneIntoVault(config.vaultDir, config.git.remote.repoUrl, {
|
|
376
|
-
...options,
|
|
377
|
-
commandEnv: config.git.commandEnv,
|
|
398
|
+
try {
|
|
399
|
+
await prepareVaultCheckout({
|
|
400
|
+
gitConfig: config.git,
|
|
401
|
+
options,
|
|
402
|
+
repoUrl: vault.repoUrl,
|
|
403
|
+
vaultDir: vault.dir,
|
|
378
404
|
});
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
...options,
|
|
382
|
-
commandEnv: config.git.commandEnv,
|
|
383
|
-
});
|
|
384
|
-
return config;
|
|
405
|
+
} catch (error) {
|
|
406
|
+
throw vault.id ? new Error(`Vault "${vault.id}": ${error.message}`) : error;
|
|
385
407
|
}
|
|
386
|
-
|
|
387
|
-
throw new Error(
|
|
388
|
-
`Refusing to initialize "${config.vaultDir}" because it is not empty and is not a git repository.`,
|
|
389
|
-
);
|
|
390
408
|
}
|
|
391
|
-
|
|
392
|
-
await ensureDirectory(dirname(config.vaultDir));
|
|
393
|
-
await cloneIntoVault(config.vaultDir, config.git.remote.repoUrl, {
|
|
394
|
-
...options,
|
|
395
|
-
commandEnv: config.git.commandEnv,
|
|
396
|
-
});
|
|
397
|
-
await ensureCollabMetadataGitExclude(config.vaultDir);
|
|
398
|
-
await ensureRepositoryIdentity(config.vaultDir, config.git, {
|
|
399
|
-
...options,
|
|
400
|
-
commandEnv: config.git.commandEnv,
|
|
401
|
-
});
|
|
402
409
|
return config;
|
|
403
410
|
} catch (error) {
|
|
404
411
|
await runtimeCleanup();
|
|
@@ -0,0 +1,251 @@
|
|
|
1
|
+
import { basename } from 'node:path';
|
|
2
|
+
|
|
3
|
+
import { logPerfEvent } from './config/perf-logging.js';
|
|
4
|
+
import { BacklinkIndex } from './domain/backlink-index.js';
|
|
5
|
+
import { BaseQueryService } from './domain/bases/base-query-service.js';
|
|
6
|
+
import { CollaborationDocumentStore } from './domain/collaboration/collaboration-document-store.js';
|
|
7
|
+
import { CollaborationRoom } from './domain/collaboration/collaboration-room.js';
|
|
8
|
+
import { RoomRegistry } from './domain/collaboration/room-registry.js';
|
|
9
|
+
import { isDrawioLeaseRoom } from '../domain/drawio-room.js';
|
|
10
|
+
import { WORKSPACE_ROOM_NAME } from '../domain/workspace-room.js';
|
|
11
|
+
import { workspaceStateMetadataEqual } from './domain/workspace-state.js';
|
|
12
|
+
import { GitService } from './infrastructure/git/git-service.js';
|
|
13
|
+
import { ensureCollabMetadataGitExclude } from './infrastructure/git/local-exclude.js';
|
|
14
|
+
import { RipgrepSearchService } from './domain/ripgrep-search-service.js';
|
|
15
|
+
import { VaultFileStore } from './infrastructure/persistence/vault-file-store.js';
|
|
16
|
+
import { FileSystemSyncService } from './infrastructure/workspace/file-system-sync-service.js';
|
|
17
|
+
import { WorkspaceReconciliation } from './application/workspace-reconciliation.js';
|
|
18
|
+
import { createWorkspaceStateFileSystemAdapter } from './infrastructure/workspace/workspace-state-file-system-adapter.js';
|
|
19
|
+
|
|
20
|
+
function buildVaultContext(def, { config, testControls }) {
|
|
21
|
+
const vaultFileStore = new VaultFileStore({ vaultDir: def.dir });
|
|
22
|
+
const backlinkIndex = new BacklinkIndex({ vaultFileStore });
|
|
23
|
+
const context = {
|
|
24
|
+
backlinkIndex,
|
|
25
|
+
baseQueryService: null,
|
|
26
|
+
def,
|
|
27
|
+
fileSystemSyncService: null,
|
|
28
|
+
gitService: null,
|
|
29
|
+
roomRegistry: null,
|
|
30
|
+
searchService: null,
|
|
31
|
+
vaultFileCount: 0,
|
|
32
|
+
vaultFileStore,
|
|
33
|
+
workspaceMutationCoordinator: null,
|
|
34
|
+
};
|
|
35
|
+
const baseQueryService = new BaseQueryService({
|
|
36
|
+
maxResultRows: config.maxBaseQueryRows,
|
|
37
|
+
vaultFileStore,
|
|
38
|
+
workspaceStateProvider: () => context.workspaceMutationCoordinator?.workspaceState ?? null,
|
|
39
|
+
workspaceStateSynchronizer: () => context.fileSystemSyncService?.flushPendingChanges?.(),
|
|
40
|
+
});
|
|
41
|
+
const gitService = new GitService({
|
|
42
|
+
commandEnv: config.git?.commandEnv,
|
|
43
|
+
enabled: config.gitEnabled,
|
|
44
|
+
vaultDir: def.dir,
|
|
45
|
+
});
|
|
46
|
+
const searchService = new RipgrepSearchService({
|
|
47
|
+
maxBufferBytes: config.searchMaxBufferBytes,
|
|
48
|
+
maxFileSize: config.searchMaxFileSize,
|
|
49
|
+
perfLoggingEnabled: config.perfLoggingEnabled,
|
|
50
|
+
vaultDir: def.dir,
|
|
51
|
+
});
|
|
52
|
+
const roomRegistry = new RoomRegistry({
|
|
53
|
+
createRoom: ({ name, onEmpty }) => {
|
|
54
|
+
const isTransientRoom = name === '__lobby__' || name === WORKSPACE_ROOM_NAME || isDrawioLeaseRoom(name);
|
|
55
|
+
const room = new CollaborationRoom({
|
|
56
|
+
documentStore: new CollaborationDocumentStore({
|
|
57
|
+
backlinkIndex: isTransientRoom ? null : backlinkIndex,
|
|
58
|
+
name,
|
|
59
|
+
vaultFileStore: isTransientRoom ? null : vaultFileStore,
|
|
60
|
+
}),
|
|
61
|
+
getHydrateDelayMs: () => testControls.wsRoomHydrateDelayMs,
|
|
62
|
+
idleGraceMs: config.wsRoomIdleGraceMs,
|
|
63
|
+
maxInitialSyncBytes: config.maxInitialSyncBytes,
|
|
64
|
+
maxBufferedAmountBytes: config.wsMaxBufferedAmountBytes,
|
|
65
|
+
name,
|
|
66
|
+
onEmpty,
|
|
67
|
+
perfLoggingEnabled: config.perfLoggingEnabled,
|
|
68
|
+
});
|
|
69
|
+
|
|
70
|
+
if (name === WORKSPACE_ROOM_NAME && context.workspaceMutationCoordinator?.workspaceState) {
|
|
71
|
+
room.replaceWorkspaceEntries(context.workspaceMutationCoordinator.workspaceState.entries, {
|
|
72
|
+
generatedAt: context.workspaceMutationCoordinator.workspaceState.scannedAt,
|
|
73
|
+
});
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
return room;
|
|
77
|
+
},
|
|
78
|
+
});
|
|
79
|
+
const workspaceMutationCoordinator = new WorkspaceReconciliation({
|
|
80
|
+
backlinkIndex,
|
|
81
|
+
baseQueryService,
|
|
82
|
+
roomRegistry,
|
|
83
|
+
vaultFileStore,
|
|
84
|
+
workspaceStateAdapter: createWorkspaceStateFileSystemAdapter({
|
|
85
|
+
vaultDir: vaultFileStore.vaultDir,
|
|
86
|
+
}),
|
|
87
|
+
});
|
|
88
|
+
const fileSystemSyncService = new FileSystemSyncService({
|
|
89
|
+
mutationCoordinator: workspaceMutationCoordinator,
|
|
90
|
+
perfLoggingEnabled: config.perfLoggingEnabled,
|
|
91
|
+
vaultFileStore,
|
|
92
|
+
});
|
|
93
|
+
vaultFileStore.setManagedWriteTracker(workspaceMutationCoordinator);
|
|
94
|
+
|
|
95
|
+
context.baseQueryService = baseQueryService;
|
|
96
|
+
context.gitService = gitService;
|
|
97
|
+
context.searchService = searchService;
|
|
98
|
+
context.roomRegistry = roomRegistry;
|
|
99
|
+
context.workspaceMutationCoordinator = workspaceMutationCoordinator;
|
|
100
|
+
context.fileSystemSyncService = fileSystemSyncService;
|
|
101
|
+
return context;
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
async function initializeVaultContext(context, { config }) {
|
|
105
|
+
const { def } = context;
|
|
106
|
+
if (await context.gitService.isGitRepo()) {
|
|
107
|
+
await ensureCollabMetadataGitExclude(def.dir);
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
const searchCapabilityStartedAt = Date.now();
|
|
111
|
+
const searchCapability = await context.searchService.initialize();
|
|
112
|
+
logPerfEvent(config.perfLoggingEnabled, 'startup', {
|
|
113
|
+
available: searchCapability.available,
|
|
114
|
+
durationMs: Date.now() - searchCapabilityStartedAt,
|
|
115
|
+
phase: 'search-capability',
|
|
116
|
+
vault: def.id,
|
|
117
|
+
});
|
|
118
|
+
|
|
119
|
+
const initialWorkspaceScanStartedAt = Date.now();
|
|
120
|
+
const initialWorkspaceSnapshot = await context.vaultFileStore.scanWorkspaceState();
|
|
121
|
+
context.vaultFileCount = initialWorkspaceSnapshot.vaultFileCount ?? 0;
|
|
122
|
+
logPerfEvent(config.perfLoggingEnabled, 'startup', {
|
|
123
|
+
durationMs: Date.now() - initialWorkspaceScanStartedAt,
|
|
124
|
+
phase: 'workspace-scan',
|
|
125
|
+
vault: def.id,
|
|
126
|
+
vaultFileCount: context.vaultFileCount,
|
|
127
|
+
});
|
|
128
|
+
|
|
129
|
+
const backlinkBuildStartedAt = Date.now();
|
|
130
|
+
await context.backlinkIndex.build({ workspaceState: initialWorkspaceSnapshot });
|
|
131
|
+
logPerfEvent(config.perfLoggingEnabled, 'startup', {
|
|
132
|
+
durationMs: Date.now() - backlinkBuildStartedAt,
|
|
133
|
+
markdownFileCount: initialWorkspaceSnapshot.markdownPaths?.length ?? 0,
|
|
134
|
+
phase: 'backlink-build',
|
|
135
|
+
vault: def.id,
|
|
136
|
+
});
|
|
137
|
+
|
|
138
|
+
const liveWorkspaceScanStartedAt = Date.now();
|
|
139
|
+
const liveWorkspaceSnapshot = await context.vaultFileStore.scanWorkspaceState();
|
|
140
|
+
const workspaceChangedDuringStartup = !workspaceStateMetadataEqual(initialWorkspaceSnapshot, liveWorkspaceSnapshot);
|
|
141
|
+
context.vaultFileCount = liveWorkspaceSnapshot.vaultFileCount ?? context.vaultFileCount;
|
|
142
|
+
logPerfEvent(config.perfLoggingEnabled, 'startup', {
|
|
143
|
+
changedDuringStartup: workspaceChangedDuringStartup,
|
|
144
|
+
durationMs: Date.now() - liveWorkspaceScanStartedAt,
|
|
145
|
+
phase: 'workspace-rescan',
|
|
146
|
+
vault: def.id,
|
|
147
|
+
vaultFileCount: context.vaultFileCount,
|
|
148
|
+
});
|
|
149
|
+
|
|
150
|
+
if (workspaceChangedDuringStartup) {
|
|
151
|
+
const backlinkRebuildStartedAt = Date.now();
|
|
152
|
+
await context.backlinkIndex.build({ workspaceState: liveWorkspaceSnapshot });
|
|
153
|
+
logPerfEvent(config.perfLoggingEnabled, 'startup', {
|
|
154
|
+
durationMs: Date.now() - backlinkRebuildStartedAt,
|
|
155
|
+
markdownFileCount: liveWorkspaceSnapshot.markdownPaths?.length ?? 0,
|
|
156
|
+
phase: 'backlink-rebuild',
|
|
157
|
+
vault: def.id,
|
|
158
|
+
});
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
const workspaceInitStartedAt = Date.now();
|
|
162
|
+
await context.workspaceMutationCoordinator.initialize({ snapshot: liveWorkspaceSnapshot });
|
|
163
|
+
logPerfEvent(config.perfLoggingEnabled, 'startup', {
|
|
164
|
+
durationMs: Date.now() - workspaceInitStartedAt,
|
|
165
|
+
phase: 'workspace-init',
|
|
166
|
+
vault: def.id,
|
|
167
|
+
});
|
|
168
|
+
|
|
169
|
+
if (config.fileWatcherEnabled !== false) {
|
|
170
|
+
const watcherStartStartedAt = Date.now();
|
|
171
|
+
await context.fileSystemSyncService.start({ snapshot: liveWorkspaceSnapshot });
|
|
172
|
+
logPerfEvent(config.perfLoggingEnabled, 'startup', {
|
|
173
|
+
durationMs: Date.now() - watcherStartStartedAt,
|
|
174
|
+
phase: 'watcher-start',
|
|
175
|
+
vault: def.id,
|
|
176
|
+
});
|
|
177
|
+
} else {
|
|
178
|
+
context.fileSystemSyncService.initializeFromSnapshot({ snapshot: liveWorkspaceSnapshot });
|
|
179
|
+
logPerfEvent(config.perfLoggingEnabled, 'startup', {
|
|
180
|
+
durationMs: 0,
|
|
181
|
+
phase: 'watcher-skipped',
|
|
182
|
+
vault: def.id,
|
|
183
|
+
});
|
|
184
|
+
}
|
|
185
|
+
|
|
186
|
+
return { searchCapability, snapshot: liveWorkspaceSnapshot, vaultFileCount: context.vaultFileCount };
|
|
187
|
+
}
|
|
188
|
+
|
|
189
|
+
export function createVaultRegistry({ config, testControls }) {
|
|
190
|
+
const defs = config.vaults?.length
|
|
191
|
+
? config.vaults
|
|
192
|
+
: [{ dir: config.vaultDir, id: basename(config.vaultDir) }];
|
|
193
|
+
const knownIds = new Set(defs.map((def) => def.id));
|
|
194
|
+
const contexts = new Map();
|
|
195
|
+
const initPromises = new Map();
|
|
196
|
+
|
|
197
|
+
function getOrBuild(def) {
|
|
198
|
+
let context = contexts.get(def.id);
|
|
199
|
+
if (!context) {
|
|
200
|
+
context = buildVaultContext(def, { config, testControls });
|
|
201
|
+
contexts.set(def.id, context);
|
|
202
|
+
}
|
|
203
|
+
return context;
|
|
204
|
+
}
|
|
205
|
+
// ponytail: primary builds eagerly like the old singleton; the rest stay lazy
|
|
206
|
+
const primaryDef = defs[0];
|
|
207
|
+
getOrBuild(primaryDef);
|
|
208
|
+
|
|
209
|
+
function initializeAsync(context) {
|
|
210
|
+
let pending = initPromises.get(context.def.id);
|
|
211
|
+
if (!pending) {
|
|
212
|
+
pending = initializeVaultContext(context, { config }).catch((error) => {
|
|
213
|
+
initPromises.delete(context.def.id);
|
|
214
|
+
throw error;
|
|
215
|
+
});
|
|
216
|
+
initPromises.set(context.def.id, pending);
|
|
217
|
+
}
|
|
218
|
+
return pending;
|
|
219
|
+
}
|
|
220
|
+
|
|
221
|
+
return {
|
|
222
|
+
isKnownVaultId(vaultId) {
|
|
223
|
+
return knownIds.has(vaultId);
|
|
224
|
+
},
|
|
225
|
+
getPrimaryContext() {
|
|
226
|
+
return contexts.get(primaryDef.id);
|
|
227
|
+
},
|
|
228
|
+
async initializePrimary() {
|
|
229
|
+
return initializeAsync(contexts.get(primaryDef.id));
|
|
230
|
+
},
|
|
231
|
+
async getOrCreateContextAsync(vaultId) {
|
|
232
|
+
const def = defs.find((entry) => entry.id === vaultId) ?? null;
|
|
233
|
+
if (!def) {
|
|
234
|
+
const error = new Error(`Unknown vault "${vaultId}".`);
|
|
235
|
+
error.statusCode = 404;
|
|
236
|
+
throw error;
|
|
237
|
+
}
|
|
238
|
+
const context = getOrBuild(def);
|
|
239
|
+
await initializeAsync(context);
|
|
240
|
+
return context;
|
|
241
|
+
},
|
|
242
|
+
async closeAll() {
|
|
243
|
+
initPromises.clear();
|
|
244
|
+
await Promise.all(Array.from(contexts.values()).map(async (context) => {
|
|
245
|
+
await context.fileSystemSyncService?.close?.();
|
|
246
|
+
await context.roomRegistry?.reset?.();
|
|
247
|
+
}));
|
|
248
|
+
contexts.clear();
|
|
249
|
+
},
|
|
250
|
+
};
|
|
251
|
+
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{i as e}from"./rolldown-runtime-Dd_uD5pT.js";import{n as t,t as n}from"./jsx-runtime-BpzPEenQ.js";import"./chunk-SRAX5OIU-KFQikY-4.js";import{B as r,L as i,N as a,Q as o,R as s,W as c,Z as l,c as u,dt as d,et as f,pt as p,t as m}from"./dist-RKBTaQMb.js";import{a as h,o as g,p as _,s as v}from"./dist-ByrG2qBA.js";var y=e(t(),1),b=n(),x=u.define({token(e){return e.match(/^%%.*$/)?`comment`:e.match(/^"(?:[^"\\]|\\.)*"/)?`string`:e.match(/^(flowchart|graph|sequenceDiagram|classDiagram|stateDiagram|erDiagram|gantt|pie|mindmap|journey|gitGraph|timeline|quadrantChart|sankey|xychart)\b/i)||e.match(/^(TB|TD|BT|RL|LR)\b/)||e.match(/^(subgraph|end|participant|actor|loop|alt|else|opt|par|critical|break|rect|note|over|activate|deactivate|title|section|class|style|linkStyle|classDef|click)\b/i)?`keyword`:e.match(/^[-.=<>|ox]+>/)||e.match(/^<[-.=<>|ox]+/)||e.match(/^--+|\.\.+|==+/)?`operator`:e.match(/^[[\](){}|<>]/)?`bracket`:e.match(/^[A-Za-z_][A-Za-z0-9_]*/)?`variableName`:e.match(/^\d+(\.\d+)?/)?`number`:e.match(/^[,:;]/)?`punctuation`:(e.eatSpace()||e.next(),null)}});function S(){return x}var C=r.theme({"&":{backgroundColor:`#1e1e1e`,color:`#d4d4d4`},".cm-content":{caretColor:`#fff`},".cm-cursor":{borderLeftColor:`#fff`},".cm-gutters":{backgroundColor:`#1e1e1e`,color:`#858585`,border:`none`},".cm-activeLineGutter":{backgroundColor:`#2a2a2a`},".cm-activeLine":{backgroundColor:`#2a2a2a`},".cm-errorLine":{backgroundColor:`rgba(255, 0, 0, 0.15)`}},{dark:!0}),w=m.define([{tag:i.keyword,color:`#569cd6`},{tag:i.string,color:`#ce9178`},{tag:i.comment,color:`#6a9955`},{tag:i.number,color:`#b5cea8`},{tag:i.operator,color:`#d4d4d4`},{tag:i.punctuation,color:`#d4d4d4`},{tag:i.variableName,color:`#9cdcfe`},{tag:i.bracket,color:`#ffd700`}]),T=r.theme({"&":{backgroundColor:`#ffffff`,color:`#1e1e1e`},".cm-content":{caretColor:`#000`},".cm-cursor":{borderLeftColor:`#000`},".cm-gutters":{backgroundColor:`#fff`,color:`#999`,border:`none`},".cm-activeLineGutter":{backgroundColor:`#e8e8e8`},".cm-activeLine":{backgroundColor:`#e8e8e8`},".cm-errorLine":{backgroundColor:`rgba(255, 0, 0, 0.1)`}}),E=m.define([{tag:i.keyword,color:`#0000ff`},{tag:i.string,color:`#a31515`},{tag:i.comment,color:`#008000`},{tag:i.number,color:`#098658`},{tag:i.operator,color:`#1e1e1e`},{tag:i.punctuation,color:`#1e1e1e`},{tag:i.variableName,color:`#001080`},{tag:i.bracket,color:`#af00db`}]),D=s.line({class:`cm-errorLine`}),O=(e,t)=>{if(!e||e<1||e>t.lines)return r.decorations.of(s.none);let n=t.line(e);return r.decorations.of(s.set([D.range(n.from)]))},k=e=>e===`dark`?[C,a(w)]:[T,a(E)],A=({value:e,onChange:t,onKeyboardSubmit:n,placeholder:i,theme:a,errorLine:s})=>{let u=(0,y.useRef)(null),m=(0,y.useRef)(null),x=(0,y.useRef)(t),C=(0,y.useRef)(n),w=(0,y.useRef)(new d),T=(0,y.useRef)(new d);return x.current=t,C.current=n,(0,y.useEffect)(()=>{if(!u.current)return;let t=w.current,n=new r({state:p.create({doc:e,extensions:[l.of([{key:`Mod-Enter`,run:()=>(C.current?.(),!0)},{key:`Mod-Shift-z`,run:_,preventDefault:!0}]),r.updateListener.of(e=>{e.docChanged&&x.current(e.state.doc.toString())}),g(),l.of([...h,...v]),o(),r.lineWrapping,t.of(k(a)),T.current.of([]),S(),c({drawRangeCursor:!0}),...i?[f(i)]:[]]}),parent:u.current});return m.current=n,n.focus(),()=>{n.destroy(),m.current=null}},[]),(0,y.useEffect)(()=>{let e=m.current;e&&e.dispatch({effects:w.current.reconfigure(k(a))})},[a]),(0,y.useEffect)(()=>{let e=m.current;e&&e.dispatch({effects:T.current.reconfigure(O(s,e.state.doc))})},[s]),(0,y.useEffect)(()=>{let t=m.current;if(!t)return;let n=t.state.doc.toString();e!==n&&t.dispatch({changes:{from:0,to:n.length,insert:e}})},[e]),(0,b.jsx)(`div`,{ref:u,className:`ttd-dialog-input ttd-dialog-input--codemirror`})};export{A as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{n as e}from"./chunk-Y2CYZVJY-DsF7k-Jl.js";import{m as t}from"./src-oBChb5qS.js";import"./chunk-DU6HZSFF-Zkp69c6c.js";import"./chunk-CLGD4ZFX-BMeArk03.js";import{n}from"./chunk-XHIXRSVI-BFQ6B8BE.js";import{n as r,r as i,t as a}from"./chunk-SVP7TREG-DB485R5x.js";import{t as o}from"./chunk-JWPE2WC7-DVXcaiue.js";import{t as s}from"./mermaid-parser.core-Bl0efOMt.js";var c=n().RailroadAbnf.parser.LangiumParser,l=e(e=>{let t=e.alternatives.map(u);return t.length===1?t[0]:{type:`choice`,alternatives:t}},`transformAlternation`),u=e(e=>{let t=e.elements.map(f);return t.length===1?t[0]:{type:`sequence`,elements:t}},`transformConcatenation`),d=e(e=>{if(e.includes(`*`)){let[t,n]=e.split(`*`);return{min:t?parseInt(t,10):0,max:n?parseInt(n,10):1/0}}let t=parseInt(e,10);return{min:t,max:t}},`parseRepeat`),f=e(e=>{let t=p(e.primary);if(!e.repeat)return t;let{min:n,max:r}=d(e.repeat);return n===0&&r===1?{type:`optional`,element:t}:{type:`repetition`,element:t,min:n,max:r}},`transformElement`),p=e(e=>{switch(e.$type){case`AbnfStringLiteral`:return{type:`terminal`,value:e.value};case`AbnfNumVal`:return{type:`terminal`,value:e.value};case`AbnfRuleName`:return{type:`nonterminal`,name:e.name};case`AbnfGroup`:return l(e.element);case`AbnfOptionalGroup`:return{type:`optional`,element:l(e.element)};default:throw Error(`Unsupported ABNF primary node: ${e.$type}`)}},`transformPrimary`),m=e(e=>({name:e.name,definition:l(e.definition)}),`transformRule`),h=e(e=>{o(e,a),e.title&&a.setTitle(e.title),e.rules.map(e=>a.addRule(m(e)))},`populateDb`),g={parser:{parse:e(e=>{a.clear(),t.debug(`[ABNF Parser] Starting Langium parse`);let n=c.parse(e);if(n.lexerErrors.length>0||n.parserErrors.length>0)throw new s(n);let r=n.value;t.debug(`[ABNF Parser] Parsed rules:`,r.rules.length),h(r),t.debug(`[ABNF Parser] Parse complete`)},`parse`),parser:{yy:a}},db:a,renderer:i,styles:r};export{g as diagram};
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
import"./chunk-SRAX5OIU-KFQikY-4.js";var e={paste:`لصق`,pasteAsPlaintext:`اللصق كنص عادي`,pasteCharts:`لصق الرسوم البيانية`,chartType_bar:``,chartType_line:``,chartType_radar:``,chartType_plaintext:``,selectAll:`تحديد الكل`,multiSelect:`إضافة عنصر للتحديد`,moveCanvas:`نقل لوح الرسم`,cut:`قص`,copy:`نسخ`,copyAsPng:`نسخ إلى الحافظة بصيغة PNG`,copyAsSvg:`نسخ إلى الحافظة بصيغة SVG`,copyText:`نسخ إلى الحافظة كنص`,copySource:`نسخ المصدر إلى الحافظة`,convertToCode:`تحويل إلى كود`,bringForward:`جلب للأمام`,sendToBack:`أرسل للخلف`,bringToFront:`أحضر للأمام`,sendBackward:`أرسل للخلف`,delete:`حذف`,copyStyles:`نسخ الأنماط`,pasteStyles:`لصق الأنماط`,stroke:`الخط`,changeStroke:`تغيير لون القلم`,background:`الخلفية`,changeBackground:`تغيير لون الخلفية`,fill:`التعبئة`,strokeWidth:`سُمك الخط`,strokeStyle:`نمط الخط`,strokeStyle_solid:`متصل`,strokeStyle_dashed:`متقطع`,strokeStyle_dotted:`منقط`,sloppiness:`الإمالة`,pressure:``,pressure_constant:``,pressure_variable:``,opacity:`الشفافية`,textAlign:`محاذاة النص`,edges:`الحواف`,sharp:`حادة`,round:`دائرية`,arrowheads:`رؤوس الأسهم`,arrowhead_none:`لا شيء`,arrowhead_arrow:`سهم`,arrowhead_bar:`شريط`,arrowhead_circle:`دائرة`,arrowhead_circle_outline:`دائرة (مخططة)`,arrowhead_triangle:`مثلث`,arrowhead_triangle_outline:`مثلث (مخطط)`,arrowhead_diamond:`ألماسة`,arrowhead_diamond_outline:`ألماسة (مخططة)`,arrowhead_crowfoot_many:`Crow's foot (many)`,arrowhead_crowfoot_one:`Crow's foot (one)`,arrowhead_crowfoot_one_or_many:`Crow's foot (one or many)`,arrowhead_cardinality_one:``,arrowhead_cardinality_many:``,arrowhead_cardinality_one_or_many:``,arrowhead_cardinality_exactly_one:``,arrowhead_cardinality_zero_or_one:``,arrowhead_cardinality_zero_or_many:``,more_options:`خيارات إضافية`,cardinality:``,arrowtypes:`نوع السهم`,arrowtype_sharp:`سهم حاد`,arrowtype_round:`سهم منحني`,arrowtype_elbowed:`سهم زاوي`,fontSize:`حجم الخط`,fontFamily:`نوع الخط`,addWatermark:`إضافة "مصنوعة بواسطة Excalidraw"`,handDrawn:`رسم باليد`,normal:`عادي`,code:`رمز`,small:`صغير`,medium:`متوسط`,large:`كبير`,veryLarge:`كبير جدًا`,solid:`كامل`,hachure:`خطوط`,zigzag:`متعرج`,crossHatch:`خطوط متقطعة`,thin:`نحيف`,bold:`داكن`,left:`الـيسار`,center:`وسط`,right:`يمين`,extraBold:`عريض`,architect:`معماري`,artist:`رسام`,cartoonist:`كرتوني`,fileTitle:`اسم الملف`,colorPicker:`منتقي اللون`,canvasColors:`تستخدم على القماش`,canvasBackground:`خلفية اللوحة`,drawingCanvas:`لوحة الرسم`,clearCanvas:`مسح اللوحة`,layers:`الطبقات`,actions:`الإجراءات`,language:`اللغة`,liveCollaboration:`التعاون المباشر...`,duplicateSelection:`تكرار`,untitled:`غير معنون`,name:`الاسم`,yourName:`اسمك`,madeWithExcalidraw:`مصنوعة بواسطة Excalidraw`,group:`تحديد مجموعة`,ungroup:`إلغاء تحديد مجموعة`,collaborators:`المتعاونون`,toggleGrid:`تبديل الشبكة`,addToLibrary:`أضف إلى المكتبة`,removeFromLibrary:`حذف من المكتبة`,libraryLoadingMessage:`جارٍ تحميل المكتبة...`,libraries:`تصفح المكتبات`,loadingScene:`جارٍ تحميل المشهد…`,loadScene:`تحميل المشهد من ملف`,align:`محاذاة`,alignTop:`محاذاة إلى الأعلى`,alignBottom:`محاذاة إلى الأسفل`,alignLeft:`محاذاة إلى اليسار`,alignRight:`محاذاة إلى اليمين`,centerVertically:`توسيط عمودي`,centerHorizontally:`توسيط أفقي`,distributeHorizontally:`التوزيع الأفقي`,distributeVertically:`التوزيع عموديًا`,flipHorizontal:`قلب أفقي`,flipVertical:`قلب عمودي`,viewMode:`نمط العرض`,share:`مشاركة`,showStroke:`إظهار منتقي لون الخط`,showBackground:`إظهار منتقي لون الخلفية`,showFonts:`إظهار منتقي الخط`,toggleTheme:`تبديل الوضع الفاتح/الداكن`,theme:`السمة`,personalLib:`المكتبة الشخصية`,excalidrawLib:`مكتبتنا`,decreaseFontSize:`تصغير حجم الخط`,increaseFontSize:`تكبير حجم الخط`,unbindText:`فك ربط النص`,bindText:`ربط النص بالحاوية`,createContainerFromText:`نص مغلف في حاوية`,link:{edit:`تعديل الرابط`,editEmbed:`تعديل الرابط القابل للتضمين`,create:`إضافة رابط`,label:`رابط`,labelEmbed:`رابط وإدراج`,empty:`لم يتم تعيين رابط`,hint:`اكتب أو الصق الرابط هنا`,goToElement:`الانتقال إلى العنصر المستهدف`},lineEditor:{edit:`تحرير السطر`,editArrow:`تحرير السهم`},polygon:{breakPolygon:``,convertToPolygon:``},elementLock:{lock:`قفل`,unlock:`فتح`,lockAll:`قفل الكل`,unlockAll:`فتح الكل`},statusPublished:`نُشر`,sidebarLock:`إبقاء الشريط الجانبي مفتوح`,selectAllElementsInFrame:`تحديد جميع العناصر في الإطار`,removeAllElementsFromFrame:`إزالة جميع العناصر من الإطار`,eyeDropper:`اختيار اللون من القماش`,textToDiagram:`نص إلى رسم بياني`,prompt:`تعليمات`,followUs:`تابعنا`,discordChat:`دردشة ديسكورد`,zoomToFitViewport:`التكبير لتناسب العرض`,zoomToFitSelection:`تكبير للعنصر المحدد`,zoomToFit:`تكبير لتلائم جميع العناصر`,installPWA:`تثبيت Excalidraw محليًا (PWA)`,autoResize:`تمكين تغيير حجم النص تلقائيًا`,imageCropping:`قص الصورة`,unCroppedDimension:`الأبعاد غير المقصوصة`,copyElementLink:`نسخ رابط الكائن`,linkToElement:`رابط إلى الكائن`,wrapSelectionInFrame:`تغليف التحديد في إطار`,tab:``,shapeSwitch:``,preferences:``,preferences_toolLock:``,boxSelectionMode:``,boxSelectionContain:``,boxSelectionOverlap:``,arrowBinding:``,midpointSnapping:``},t={title:`رابط إلى الكائن`,desc:`انقر على شكل على اللوحة أو الصق رابطًا.`,notFound:`لم يتم العثور على الكائن المرتبط على اللوحة.`},n={noItems:`لا توجد عناصر أضيفت بعد...`,hint_emptyLibrary:`حدد عنصر على القماش لإضافته هنا، أو تثبيت مكتبة من المستودع العام أدناه.`,hint_emptyPrivateLibrary:`حدد عنصر على القماش لإضافته هنا.`,search:{inputPlaceholder:``,heading:``,noResults:``,clearSearch:`امحُ البحث`}},r={title:`البحث على اللوحة`,noMatch:`لم يتم العثور على تطابقات...`,singleResult:`نتيجة`,multipleResults:`نتائج`,placeholder:`ابحث عن نص على اللوحة...`,frames:`إطارات`,texts:`نصوص`},i={clearReset:`إعادة تعيين اللوحة`,exportJSON:`صدر الملف`,exportImage:`تصدير الصورة...`,export:`حفظ إلى...`,copyToClipboard:`نسخ إلى الحافظة`,copyLink:`نسخ الرابط`,save:`احفظ للملف الحالي`,saveAs:`حفظ كـ`,load:`فتح`,getShareableLink:`احصل على رابط المشاركة`,close:`إغلاق`,selectLanguage:`اختر اللغة`,scrollBackToContent:`الرجوع إلى المحتوى`,zoomIn:`تكبير`,zoomOut:`تصغير`,resetZoom:`إعادة تعيين التكبير`,menu:`القائمة`,done:`تم`,edit:`تعديل`,undo:`تراجع`,redo:`إعادة تنفيذ`,resetLibrary:`إعادة ضبط المكتبة`,createNewRoom:`إنشاء غرفة جديدة`,fullScreen:`شاشة كاملة`,darkMode:`الوضع المظلم`,lightMode:`الوضع المضيء`,systemMode:`وضع النظام`,zenMode:`وضع التأمل`,objectsSnapMode:`التقاط إلى العناصر`,exitZenMode:`إلغاء وضع التأمل`,cancel:`إلغاء`,saveLibNames:`احفظ الاسم(اء) واخرج`,clear:`مسح`,remove:`إزالة`,embed:`تبديل الإدراج`,publishLibrary:`أعد التسمية أو أُنشر`,submit:`إرسال`,confirm:`تأكيد`,embeddableInteractionButton:`اضغط للتفاعل`},a={clearReset:`هذا سيُزيل كامل اللوحة. هل أنت متأكد؟`,couldNotCreateShareableLink:`تعذر إنشاء رابط المشاركة.`,couldNotCreateShareableLinkTooBig:`تعذر إنشاء رابط قابل للمشاركة: المشهد كبير جدًا`,couldNotLoadInvalidFile:`تعذر التحميل، الملف غير صالح`,importBackendFailed:`فشل الاستيراد من الخادم.`,cannotExportEmptyCanvas:`لا يمكن تصدير لوحة فارغة.`,couldNotCopyToClipboard:`تعذر النسخ إلى الحافظة.`,decryptFailed:`تعذر فك تشفير البيانات.`,uploadedSecurly:`تم تأمين التحميل بتشفير النهاية إلى النهاية، مما يعني أن خادم Excalidraw والأطراف الثالثة لا يمكنها قراءة المحتوى.`,loadSceneOverridePrompt:`تحميل الرسم الخارجي سيحل محل المحتوى الموجود لديك. هل ترغب في المتابعة؟`,collabStopOverridePrompt:`إيقاف الجلسة سيؤدي إلى الكتابة فوق رسومك السابقة المخزنة داخليًا. هل أنت متأكد؟
|
|
2
|
-
|
|
3
|
-
(إذا كنت ترغب في الاحتفاظ برسمك المخزن داخليًا، أغلق علامة تبويب المتصفح بدلاً من ذلك.)`,errorAddingToLibrary:`تعذر إضافة العنصر إلى المكتبة`,errorRemovingFromLibrary:`تعذر إزالة العنصر من المكتبة`,confirmAddLibrary:`هذا سيضيف {{numShapes}} شكل إلى مكتبتك. هل أنت متأكد؟`,imageDoesNotContainScene:`يبدو أن هذه الصورة لا تحتوي على أي بيانات مشهد. هل قمت بتمكين تضمين المشهد أثناء التصدير؟`,cannotRestoreFromImage:`تعذر استعادة المشهد من ملف الصورة`,invalidSceneUrl:`تعذر استيراد المشهد من عنوان URL المتوفر. إما أنها مشوهة، أو لا تحتوي على بيانات Excalidraw JSON صالحة.`,resetLibrary:`هذا سيؤدي إلى مسح مكتبتك. هل أنت متأكد؟`,removeItemsFromsLibrary:`حذف {{count}} عنصر (عناصر) من المكتبة؟`,invalidEncryptionKey:`مفتاح التشفير يجب أن يكون من 22 حرفًا. التعاون المباشر معطل.`,collabOfflineWarning:`لا يوجد اتصال بالإنترنت.
|
|
4
|
-
لن يتم حفظ التغييرات التي قمت بها!`,localStorageQuotaExceeded:`تجاوز حصة تخزين المتصفح. لن تُحفظ التغييرات.`},o={unsupportedFileType:`نوع الملف غير مدعوم.`,imageInsertError:`تعذر إدراج الصورة. حاول مرة أخرى لاحقًا...`,fileTooBig:`الملف كبير جدًا. الحد الأقصى المسموح به للحجم هو {{maxSize}}.`,svgImageInsertError:`تعذر إدراج صورة SVG. يبدو أن ترميز SVG غير صحيح.`,failedToFetchImage:`فشل تحميل الصورة.`,cannotResolveCollabServer:`تعذر الاتصال بخادم التعاون. الرجاء إعادة تحميل الصفحة والمحاولة مرة أخرى.`,importLibraryError:`تعذر تحميل المكتبة`,saveLibraryError:`تعذر حفظ المكتبة. الرجاء حفظ المكتبة الخاصة بك في ملف محلي للتأكد من أنك لا تفقد التغييرات.`,collabSaveFailed:`تعذر الحفظ في قاعدة البيانات. إذا استمرت المشاكل، يُفضل حفظ ملفك محليًا كي لا تفقد عملك.`,collabSaveFailed_sizeExceeded:`تعذر الحفظ في قاعدة البيانات، يبدو أن القماش كبير للغاية، يُفضل حفظ الملف محليًا كي لا تفقد عملك.`,imageToolNotSupported:`تم تعطيل الصور.`,brave_measure_text_error:{line1:`يبدو أنك تستخدم متصفح Brave مع إعداد <bold>حظر صارم لتتبع البصمة</bold>.`,line2:`قد يؤدي هذا إلى كسر <bold>عناصر النص</bold> في الرسومات الخاصة بك.`,line3:`من المستحسن إلغاء تفعيل هذا الإعداد. يمكنك اتباع <link>هذه الخطوات</link> لفعل ذلك.`,line4:`إذا لم يصلح تعطيل هذا الإعداد طريقة عرض النصوص، الرجاء كتابة <issueLink>بلاغ</issueLink> على حسابنا في GitHub، أو راسلنا على <discordLink>Discord</discordLink>`},libraryElementTypeError:{embeddable:`لا يمكن إضافة العناصر القابلة للتضمين في المكتبة.`,iframe:`لا يمكن إضافة عناصر IFrame إلى المكتبة.`,image:`سيتم دعم إضافة صور إلى المكتبة قريبًا!`},asyncPasteFailedOnRead:`تعذر اللصق (تعذر القراءة من حافظة النظام).`,asyncPasteFailedOnParse:`تعذر اللصق.`,copyToSystemClipboardFailed:`تعذر النسخ إلى الحافظة.`},s={selection:`تحديد`,lasso:`اختيار لاسو`,image:`إدراج صورة`,rectangle:`مستطيل`,diamond:`مضلع`,ellipse:`دائرة`,arrow:`سهم`,line:`خط`,freedraw:`رسم`,text:`نص`,library:`مكتبة`,lock:`الحفاظ على أداة التحديد نشطة بعد الرسم`,penMode:`وضع القلم - منع اللمس`,link:`إضافة/تحديث الرابط للشكل المحدد`,eraser:`ممحاة`,frame:`أداة الإطار`,magicframe:`Wireframe إلى كود`,embeddable:`تضمين ويب`,laser:`مؤشر ليزر`,autoshape:``,hand:`يد (أداة الإزاحة)`,extraTools:`المزيد من الأدوات`,mermaidToExcalidraw:`من Mermaid إلى Excalidraw`,convertElementType:`تبديل نوع الشكل`},c={rectangle:`مستطيل`,diamond:`مضلع`,ellipse:`دائرة`,arrow:`سهم`,line:`خط`,freedraw:`رسم حر`,text:`نص`,image:`صورة`,group:`مجموعة`,frame:`إطار`,magicframe:`Wireframe إلى كود`,embeddable:`تضمين ويب`,selection:`تحديد`,iframe:`IFrame`},l={canvasActions:`إجراءات اللوحة`,selectedShapeActions:`إجراءات الشكل المحدد`,shapes:`الأشكال`},u={dismissSearch:`{{shortcut}} لإلغاء البحث`,canvasPanning:`لتحريك القماشة، اضغط مطولًا على {{shortcut_1}} أو {{shortcut_2}} أثناء السحب، أو استخدم الأداة اليدوية`,linearElement:`انقر لبدء نقاط متعددة، اسحب لخط واحد`,arrowTool:`انقر لبدء نقاط متعدّدة، اسحب لخط واحد. اضغط {{shortcut}} مرة أخرى لتغيير نوع السهم.`,arrowBindModifiers:``,freeDraw:`انقر واسحب، أفرج عند الانتهاء`,text:`نصيحة: يمكنك أيضًا إضافة نص بالنقر المزدوج في أي مكان بأداة الاختيار`,embeddable:`اضغط مع السحب لإنشاء موقع ويب مضمّن`,autoshape:``,text_selected:``,text_editing:`اضغط {{shortcut_1}} أو {{shortcut_2}} لإنهاء التحرير`,linearElementMulti:`انقر على النقطة الأخيرة أو اضغط {{shortcut_1}} أو {{shortcut_2}} للإنهاء`,lockAngle:`يمكنك تقييد الزاوية بالضغط على {{shortcut}}`,resize:`يمكنك تقييد النسب بالضغط على {{shortcut_1}} أثناء تغيير الحجم،
|
|
5
|
-
اضغط مطولاً على {{shortcut_2}} لتغيير الحجم من المركز`,resizeImage:`يمكنك تغيير الحجم بحرية بالضغط مطولًا على {{shortcut_1}}،
|
|
6
|
-
اضغط مطولًا على {{shortcut_2}} لتغيير الحجم من المركز`,rotate:``,toggleArrowhead:``,lineEditor_info:``,lineEditor_line_info:``,lineEditor_pointSelected:``,lineEditor_nothingSelected:``,publishLibrary:`نشر مكتبتك`,bindTextToElement:``,createFlowchart:``,deepBoxSelect:``,eraserRevert:``,firefox_clipboard_write:`يمكن على الأرجح تمكين هذه الميزة عن طريق تعيين علم "dom.events.asyncClipboard.clipboardItem" إلى "true". لتغيير أعلام المتصفح في Firefox، قم بزيارة صفحة "about:config".`,disableSnapping:``,enterCropEditor:`انقر نقرًا مزدوجًا على الصورة أو اضغط {{shortcut}} لقص الصورة`,leaveCropEditor:`انقر خارج الصورة أو اضغط {{shortcut_1}} أو {{shortcut_2}} لإنهاء القص`},d={cannotShowPreview:`تعذر عرض المعاينة`,canvasTooBig:`قد تكون اللوحة كبيرة جدًا.`,canvasTooBigTip:`نصيحة: حاول تحريك العناصر البعيدة بشكل أقرب قليلاً.`},f={headingMain:`حدث خطأ. حاول <button>تحديث الصفحة</button>.`,clearCanvasMessage:`إذا لم تعمل إعادة التحميل، حاول مرة أخرى `,clearCanvasCaveat:`هذا سيؤدي إلى فقدان العمل`,trackedToSentry:`تم تتبع الخطأ في المعرف {{eventId}} على نظامنا.`,openIssueMessage:`حرصنا على عدم إضافة معلومات المشهد في بلاغ الخطأ. في حال كون مشهدك لا يحمل أي معلومات خاصة، نرجو المتابعة على <button>نظام تتبع الأخطاء</button>. نرجو إضافة المعلومات أدناه بنسخها ولصقها في محتوى البلاغ على GitHub.`,sceneContent:`محتوى المشهد:`},p={or:`أو`},m={desc_intro:`ادعُ الأشخاص للتعاون في الرسم الخاص بك.`,desc_privacy:`لا تقلق، الجلسة مشفرة من النهاية إلى النهاية وخصوصية تمامًا. حتى خادمنا لا يستطيع رؤية ما ترسمه.`,button_startSession:`بدء الجلسة`,button_stopSession:`إيقاف الجلسة`,desc_inProgressIntro:`تجري الآن جلسة تعاون مباشرة.`,desc_shareLink:`شارك هذا الرابط مع أي شخص تريده أن يشاركك الجلسة:`,desc_exitSession:`إيقاف الجلسة سيؤدي إلى قطع الاتصال الخاص بك من الغرفة، ولكن ستتمكن من مواصلة العمل مع المشهد محليًا. لاحظ أن هذا لن يؤثر على الأشخاص الآخرين، وسيظلون قادرين على التعاون في إصدارهم.`,shareTitle:`الانضمام إلى جلسة تعاون مباشرة على Excalidraw`},h={title:`خطأ`},g={title:`يحفظ`,defaultMessage:`جارٍ الإعداد للحفظ...`},_={disk_title:`حفظ الملف على الجهاز`,disk_details:`تصدير بيانات المشهد إلى ملف يمكنك الاستيراد منه لاحقًا.`,disk_button:`حفظ إلى ملف`,link_title:`رابط قابل للمشاركة`,link_details:`تصدير الملف للمشاهدة فقط.`,link_button:`تصدير كرابط`,excalidrawplus_description:`حفظ المشهد إلى مساحة العمل +Excalidraw الخاصة بك.`,excalidrawplus_button:`تصدير`,excalidrawplus_exportError:`تعذر التص несп في الوقت الحالي إلى +Excalidraw...`},v={blog:`اقرأ مدونتنا`,click:`انقر`,deepSelect:`تحديد عميق`,deepBoxSelect:`تحديد عميق داخل المربع، ومنع السحب`,createFlowchart:`إنشاء مخطط تدفق من عنصر عام`,navigateFlowchart:`التنقل في مخطط تدفق`,curvedArrow:`سهم منحني`,curvedLine:`خط منحني`,documentation:`دليل الاستخدام`,doubleClick:`انقر مرتين`,drag:`اسحب`,editor:`المحرر`,editLineArrowPoints:`تحرير نقاط السطر/السهم`,editText:`تعديل النص / إضافة تسمية`,github:`عثرت على مشكلة؟ أرسل`,howto:`اتبع التعليمات`,or:`أو`,preventBinding:`منع ارتباط السهم`,tools:`الأدوات`,shortcuts:`اختصارات لوحة المفاتيح`,textFinish:`إنهاء التعديل (محرر النص)`,textNewLine:`إضافة سطر جديد (محرر النص)`,title:`المساعدة`,view:`عرض`,zoomToFit:`تكبير للملائمة`,zoomToSelection:`تكبير للعنصر المحدد`,toggleElementLock:`قفل/فتح المحدد`,movePageUpDown:`نقل الصفحة أعلى/أسفل`,movePageLeftRight:`نقل الصفحة يسار/يمين`,cropStart:`بدء قص الصورة`,cropFinish:`إنهاء قص الصورة`},y={title:`مسح اللوحة`},b={title:`نشر المكتبة`,itemName:`اسم العنصر`,authorName:`اسم المؤلف`,githubUsername:`اسم المستخدم في GitHub`,twitterUsername:`اسم المستخدم في تويتر`,libraryName:`اسم المكتبة`,libraryDesc:`وصف المكتبة`,website:`الموقع`,placeholder:{authorName:`اسمك أو اسم المستخدم`,libraryName:`اسم مكتبتك`,libraryDesc:`وصف مكتبتك لمساعدة الناس على فهم استخدامها`,githubHandle:`معرف GitHub (اختياري)، حتى تتمكن من تحرير المكتبة عند إرسالها للمراجعة`,twitterHandle:`اسم مستخدم تويتر (اختياري)، حتى نعرف من الذي سيتم الإشارة إليه عند الترويج عبر تويتر`,website:`رابط إلى موقعك الشخصي أو مكان آخر (اختياري)`},errors:{required:`مطلوب`,website:`أدخل عنوان URL صالح`},noteDescription:`تقديم مكتبتك لتضمينها في مستودع المكتبة العامة <link></link> ليستخدمها الآخرون في رسوماتهم.`,noteGuidelines:`تحتاج المكتبة إلى الموافقة أولاً. يرجى قراءة <link>المعايير</link> قبل تقديمها. ستحتاج إلى حساب GitHub للتواصل وإجراء التغييرات عند الطلب، ولكنه ليس مطلوبًا بشكل صارم.`,noteLicense:`تقديمك يعني موافقتك على نشر المكتبة المقدمة تحت <link>ترخيص MIT</link>، مما يعني أن لأي شخص الحق في استخدامها دون قيود.`,noteItems:`يجب أن يكون لكل عنصر مكتبة اسم خاص به ليكون قابلًا للتصفية. سيتم تضمين عناصر المكتبة التالية:`,atleastOneLibItem:`يرجى تحديد عنصر مكتبة واحد على الأقل للبدء`,republishWarning:`ملاحظة: بعض العناصر المحددة معينة على أنها نُشرت أو قُدمت من قبل. يجب عليك فقط إعادة إرسال العناصر عند تحديث مكتبة موجودة أو إرسالها.`},x={title:`تم إرسال المكتبة`,content:`شكرًا لك {{authorName}}. لقد تم إرسال مكتبتك للمراجعة. يمكنك تتبع الحالة`},S={resetLibrary:`إعادة ضبط المكتبة`,removeItemsFromLib:`إزالة العناصر المحددة من المكتبة`},C={header:`تصدير الصورة`,label:{withBackground:`مع الخلفية`,onlySelected:`المحدد فقط`,darkMode:`الوضع الداكن`,embedScene:`تضمين المشهد`,scale:`المقياس`,padding:`الهوامش`},tooltip:{embedScene:`سيتم حفظ بيانات المشهد في ملف PNG/SVG المصدر بحيث يمكن استعادة المشهد منه.
|
|
7
|
-
سيزيد هذا من حجم الملف المصدر.`},title:{exportToPng:`تصدير بصيغة PNG`,exportToSvg:`تصدير بصيغة SVG`,copyPngToClipboard:`نسخ الـ PNG إلى الحافظة`},button:{exportToPng:`PNG`,exportToSvg:`SVG`,copyPngToClipboard:`نسخ إلى الحافظة`}},w={tooltip:`رسوماتك مشفرة من النهاية إلى النهاية، لذا لا يمكن لخوادم Excalidraw رؤيتها أبدًا.`,link:`مشاركة المدونة حول التشفير من النهاية إلى النهاية في Excalidraw`},T={angle:`الزاوية`,shapes:`الأشكال`,height:`الارتفاع`,scene:`المشهد`,selected:`المحدد`,storage:`التخزين`,fullTitle:`خصائص اللوحة والأشكال`,title:`الخصائص`,generalStats:`عام`,elementProperties:`خصائص الشكل`,total:`المجموع`,version:`الإصدار`,versionCopy:`انقر للنسخ`,versionNotAvailable:`الإصدار غير متوفر`,width:`العرض`},E={addedToLibrary:`تمت الإضافة إلى المكتبة!`,copyStyles:`تم نسخ الأنماط.`,copyToClipboard:`تم النسخ إلى الحافظة.`,copyToClipboardAsPng:`تم نسخ {{exportSelection}} إلى الحافظة بصيغة PNG
|
|
8
|
-
({{exportColorScheme}})`,copyToClipboardAsSvg:`تم نسخ {{exportSelection}} إلى الحافظة بصيغة SVG
|
|
9
|
-
({{exportColorScheme}})`,fileSaved:`تم حفظ الملف.`,fileSavedToFilename:`تم الحفظ باسم {filename}`,canvas:`لوحة الرسم`,selection:`العنصر المحدد`,pasteAsSingleElement:`استخدم {{shortcut}} للصق كعنصر واحد،
|
|
10
|
-
أو لصق في محرر نص موجود`,unableToEmbed:`تضمين هذا الرابط غير مسموح حاليًا. افتح بلاغًا على GitHub لطلب إدراج عنوان URL في القائمة البيضاء`,unrecognizedLinkFormat:`الرابط الذي أدرجته لا يتطابق مع التنسيق المتوقع. الرجاء محاولة لصق النص 'المضمن' المُزوَد من موقع المصدر`,elementLinkCopied:`تم نسخ الرابط إلى الحافظة`},D={transparent:`شفاف`,black:`أسود`,white:`أبيض`,red:`أحمر`,pink:`وردي`,grape:`عنبي`,violet:`بنفسجي`,gray:`رمادي`,blue:`أزرق`,cyan:`سماوي`,teal:`أزرق مخضر`,green:`أخضر`,yellow:`أصفر`,orange:`برتقالي`,bronze:`برونزي`},O={app:{center_heading:`رسوماتك محفوظة في تخزين متصفحك.`,center_heading_line2:`يُمكن محُ تخزين المتصفح بشكل غير متوقع.`,center_heading_line3:`احفظ عملك في ملف بانتظام لتجنب فقدانه.`,center_heading_plus:`هل تريد الانتقال إلى Excalidraw+ بدلاً من ذلك؟`,menuHint:`التصدير، التفضيلات، اللغات...`},defaults:{menuHint:`التصدير، التفضيلات، وغيرها...`,center_heading:`الرسم البياني التصويري، ببساطة.`,toolbarHint:`اختر أداة وابدأ الرسم!`,helpHint:`الاختصارات والمساعدة`}},k={color:`اللون`,mostUsedCustomColors:`الألوان المخصصة الأكثر استخدامًا`,colors:`الألوان`,shades:`الدرجات`,hexCode:`رمز Hex`,noShades:`لا تتوفر درجات لهذا اللون`,invalidColor:``,invalidHexLength:``},A={action:{exportToImage:{title:`تصدير كصورة`,button:`تصدير كصورة`,description:`تصدير بيانات المشهد إلى ملف يمكنك الاستيراد منه لاحقًا.`},saveToDisk:{title:`حفظ الملف على الجهاز`,button:`حفظ الملف على الجهاز`,description:`تصدير بيانات المشهد إلى ملف يمكنك الاستيراد منه لاحقًا.`},excalidrawPlus:{title:`Excalidraw+`,button:`تصدير إلى Excalidraw+`,description:`حفظ المشهد إلى مساحة العمل +Excalidraw الخاصة بك.`}},modal:{loadFromFile:{title:`تحميل من ملف`,button:`تحميل من ملف`,description:`سيتم التحميل من الملف <bold>استبدال المحتوى الموجود</bold>.<br></br>يمكنك النسخ الاحتياطي لرسمك أولاً باستخدام أحد الخيارات أدناه.`},shareableLink:{title:`تحميل من رابط`,button:`استبدال محتواي`,description:`سيتسبب تحميل رسمة خارجية <bold>باستبدال محتواك الموجود حاليًا</bold>.<br></br>بإمكانك إجراء النسخ الاحتياطي لرسمتك الحالية باستخدام أحد الخيارات أدناه.`}}},j={title:`Mermaid إلى Excalidraw`,button:`إدراج`,description:``,syntax:`صيغة Mermaid`,preview:`معاينة`,label:`Mermaid`,inputPlaceholder:`اكتب تعريف الرسم البياني لـ Mermaid هنا...`,autoFixAvailable:`الإصلاح التلقائي متوفر`},M={error:`خطأ!`},N={inputPlaceholder:`ابدأ كتابة فكرة الرسم البياني هنا... ({{shortcut}} للسطر الجديد)`,inputPlaceholderWithMessages:`استمر في تحسين رسمتك البيانية...`,generating:`يُولّد...`,rateLimitRemaining:`{{count}} طلبات متبقية اليوم`,role:{user:`أنت`,assistant:`مساعد الذكاء الاصطناعي`,system:`النظام`},aiBeta:`الذكاء الاصطناعي تجريبي`,label:`محادثة`,menu:`القائمة`,newChat:`محادثة جديدة`,deleteChat:`احذف المحادثة`,deleteMessage:`احذف الرسالة`,viewAsMermaid:`عرض كـ Mermaid`,placeholder:{title:``,description:``,hint:``},preview:``,insert:``,retry:``,errors:{promptTooShort:``,promptTooLong:``,generationFailed:``,invalidDiagram:``,fixInMermaid:``,aiRepair:``,requestAborted:``,requestFailed:``,mermaidParseError:``},rateLimit:{messageLimit:``,generalRateLimit:``,messageLimitInputPlaceholder:``},upsellBtnLabel:``},P={placeholder:`بحث سريع`},F={badge:{old:`قديم`},sceneFonts:`في هذا المشهد`,availableFonts:`الخطوط المتوفرة`,empty:`لم يتم العثور على خطوط`},I={empty:`لم يتم العثور على مستخدمين`,hint:{text:`انقر على المستخدم للمتابعة`,followStatus:`أنت حاليًا تتابع هذا المستخدم`,inCall:`المستخدم في مكالمة صوتية`,micMuted:`ميكروفون المستخدم مكتم`,isSpeaking:`المستخدم يتحدث`}},L={title:`لوحة الأوامر`,shortcuts:{select:`اختر`,confirm:`تأكيد`,close:`إغلاق`},recents:`المستخدمة مؤخرًا`,search:{placeholder:`ابحث في القوائم، الأوامر، واكتشف الجواهر المخفية`,noMatch:`لا توجد أوامر مطابقة...`},itemNotAvailable:`الأمر غير متوفر...`,shortcutHint:`للحصول على لوحة الأوامر، استخدم {{shortcut}}`},R={ctrl:``,option:``,cmd:``,alt:``,escape:``,enter:``,shift:``,spacebar:`مسافة`,delete:`احذف`,mmb:`عجلة التمرير`},z={labels:e,elementLink:t,library:n,search:r,buttons:i,alerts:a,errors:o,toolBar:s,element:c,headings:l,hints:u,canvasError:d,errorSplash:f,shareDialog:p,roomDialog:m,errorDialog:h,progressDialog:g,exportDialog:_,helpDialog:v,clearCanvasDialog:y,publishDialog:b,publishSuccessDialog:x,confirmDialog:S,imageExportDialog:C,encrypted:w,stats:T,toast:E,colors:D,welcomeScreen:O,colorPicker:k,overwriteConfirm:A,mermaid:j,ttd:M,chat:N,quickSearch:P,fontList:F,userList:I,commandPalette:L,keys:R};export{a as alerts,i as buttons,d as canvasError,N as chat,y as clearCanvasDialog,k as colorPicker,D as colors,L as commandPalette,S as confirmDialog,z as default,c as element,t as elementLink,w as encrypted,h as errorDialog,f as errorSplash,o as errors,_ as exportDialog,F as fontList,l as headings,v as helpDialog,u as hints,C as imageExportDialog,R as keys,e as labels,n as library,j as mermaid,A as overwriteConfirm,g as progressDialog,b as publishDialog,x as publishSuccessDialog,P as quickSearch,m as roomDialog,r as search,p as shareDialog,T as stats,E as toast,s as toolBar,M as ttd,I as userList,O as welcomeScreen};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import"./chunk-FOHPRMQF-DHwB1DNv.js";import{n as e}from"./chunk-6AZGARVD-BB6FqMl-.js";export{e as createArchitectureServices};
|