collabmd 0.1.40 → 0.1.41

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (443) hide show
  1. package/README.md +68 -0
  2. package/dist/client/assets/{CodeMirrorEditor-UCMRAMCV-CjJV4GGp.js → CodeMirrorEditor-UCMRAMCV-DHEFSr_E.js} +1 -1
  3. package/dist/client/assets/{ar-SA-NXDWD63E-BfWwfLiP.js → ar-SA-NXDWD63E-S8m2UyIj.js} +1 -1
  4. package/dist/client/assets/{arc-B59iLcOr.js → arc-OeTCl9Oy.js} +1 -1
  5. package/dist/client/assets/architecture-7EHR7CIX-BQpCYB3J.js +1 -0
  6. package/dist/client/assets/{architectureDiagram-3BPJPVTR-Cs4u0ty-.js → architectureDiagram-3BPJPVTR-CDqq0KA0.js} +2 -2
  7. package/dist/client/assets/{az-AZ-MXSORGZV-D3w9H6nC.js → az-AZ-MXSORGZV-DSzWvZBB.js} +1 -1
  8. package/dist/client/assets/bases-preview-controller-CBHDzzot.js +143 -0
  9. package/dist/client/assets/{bg-BG-O6MV2KSF-CqITeIE6.js → bg-BG-O6MV2KSF-C5nBekx3.js} +1 -1
  10. package/dist/client/assets/{blockDiagram-GPEHLZMM-C4RLg7wo.js → blockDiagram-GPEHLZMM-Z9jBLpGg.js} +1 -1
  11. package/dist/client/assets/{bn-IN-MMW2ORAC-BZcsVFhS.js → bn-BD-T2VJNT7N-D-8xXOzM.js} +1 -1
  12. package/dist/client/assets/{bn-BD-T2VJNT7N-DRxwOMG_.js → bn-IN-MMW2ORAC-D-8xXOzM.js} +1 -1
  13. package/dist/client/assets/button-2ZnWQkWV.js +1 -0
  14. package/dist/client/assets/{c4Diagram-AAUBKEIU-DMK9WIWS.js → c4Diagram-AAUBKEIU-UA_Eopag.js} +1 -1
  15. package/dist/client/assets/{ca-ES-MKBCGNOG-D2cujUJ7.js → ca-ES-MKBCGNOG-B3Ly68p3.js} +1 -1
  16. package/dist/client/assets/channel-CpvwJaGK.js +1 -0
  17. package/dist/client/assets/{chunk-2J33WTMH-Beqll06X.js → chunk-2J33WTMH-DjYq2kZ3.js} +1 -1
  18. package/dist/client/assets/{chunk-3OPIFGDE-Kf30X6bZ.js → chunk-3OPIFGDE-DucrRywM.js} +1 -1
  19. package/dist/client/assets/{chunk-4BX2VUAB-BVNkn9EH.js → chunk-4BX2VUAB-DcdHBPEH.js} +1 -1
  20. package/dist/client/assets/{chunk-4EGX6M5U-6L36_8q8.js → chunk-4EGX6M5U-BfCFom1o.js} +1 -1
  21. package/dist/client/assets/{chunk-55IACEB6-CaPPZbdp.js → chunk-55IACEB6-B7ycySPI.js} +1 -1
  22. package/dist/client/assets/{chunk-5DO6E6H7-BpgUf0HE.js → chunk-5DO6E6H7-DP8QnaJj.js} +1 -1
  23. package/dist/client/assets/{chunk-5ZQYHXKU-BJyABJSy.js → chunk-5ZQYHXKU-C4q4UVKa.js} +1 -1
  24. package/dist/client/assets/{chunk-727SXJPM-DNANnyAn.js → chunk-727SXJPM-DdWH2cfs.js} +1 -1
  25. package/dist/client/assets/{chunk-AQP2D5EJ-D-ou9vaq.js → chunk-AQP2D5EJ-D8o8QwFY.js} +1 -1
  26. package/dist/client/assets/{chunk-BR22UD5L-CHoFxkAQ.js → chunk-BR22UD5L-CT6fcRkN.js} +1 -1
  27. package/dist/client/assets/{chunk-BSJP7CBP-AmT6zI00.js → chunk-BSJP7CBP-COmh28sk.js} +1 -1
  28. package/dist/client/assets/{chunk-CSCIHK7Q-BIoF4mTy.js → chunk-CSCIHK7Q-D0bHjxCO.js} +2 -2
  29. package/dist/client/assets/{chunk-FHYWG6QK-qLbgayZT.js → chunk-FHYWG6QK-Ce318laP.js} +1 -1
  30. package/dist/client/assets/{chunk-FMBD7UC4-DD6CIukb.js → chunk-FMBD7UC4-CM39cCCr.js} +1 -1
  31. package/dist/client/assets/{chunk-KSCS5N6A-DSHzBB4H.js → chunk-KSCS5N6A-Bk33m7yK.js} +1 -1
  32. package/dist/client/assets/{chunk-L5ZTLDWV-Ca0loQr2.js → chunk-L5ZTLDWV-J2sQu4Os.js} +1 -1
  33. package/dist/client/assets/{chunk-LZXEDZCA-D4QboL2E.js → chunk-LZXEDZCA-CTmBbzaL.js} +2 -2
  34. package/dist/client/assets/chunk-MMN3DZ5N-pTRxhVYl.js +35 -0
  35. package/dist/client/assets/{chunk-MPE355IW-BGGMthoR.js → chunk-MPE355IW-C_vkbqLj.js} +1 -1
  36. package/dist/client/assets/{chunk-MZUSXYTE-CXyCvcyW.js → chunk-MZUSXYTE-BnVcgphH.js} +1 -1
  37. package/dist/client/assets/{chunk-N66VUXT2-CZ58QOjk.js → chunk-N66VUXT2-B6CG-CnY.js} +1 -1
  38. package/dist/client/assets/{chunk-ND2GUHAM-3Xs0Awks.js → chunk-ND2GUHAM-D-_vkA5V.js} +1 -1
  39. package/dist/client/assets/{chunk-NNHCCRGN--8l6bbR-.js → chunk-NNHCCRGN-DlpIbxXb.js} +6 -6
  40. package/dist/client/assets/{chunk-NZK2D7GU-w2jXiKa6.js → chunk-NZK2D7GU-Dc42C0Jt.js} +1 -1
  41. package/dist/client/assets/{chunk-O5CBEL6O-BFgstMja.js → chunk-O5CBEL6O-DdEDfb8z.js} +1 -1
  42. package/dist/client/assets/{chunk-PUPMXCY4-JvkUXyIj.js → chunk-PUPMXCY4-BZ88kQjK.js} +1 -1
  43. package/dist/client/assets/chunk-QZHKN3VN-D5YLQvjj.js +1 -0
  44. package/dist/client/assets/{chunk-SRAX5OIU-C_UPA-vt.js → chunk-SRAX5OIU-CiRgnkYo.js} +1 -1
  45. package/dist/client/assets/{chunk-UIBZB4QT-B4OybPy_.js → chunk-UIBZB4QT-r8p3pBHw.js} +1 -1
  46. package/dist/client/assets/{chunk-WCWK7LTN-BOL8a2ua.js → chunk-WCWK7LTN-DrKYkgXF.js} +1 -1
  47. package/dist/client/assets/chunk-WU5MYG2G-Cg2iUbET.js +1 -0
  48. package/dist/client/assets/{chunk-XPW4576I-D5FnFhOk.js → chunk-XPW4576I-BZyvtu42.js} +1 -1
  49. package/dist/client/assets/{chunk-Z5NKEFVG-GcpeeLo6.js → chunk-Z5NKEFVG-Dknufskm.js} +7 -7
  50. package/dist/client/assets/classDiagram-4FO5ZUOK-CGWY0cfg.js +1 -0
  51. package/dist/client/assets/classDiagram-v2-Q7XG4LA2-CGWY0cfg.js +1 -0
  52. package/dist/client/assets/{cose-bilkent-S5V4N54A-Cx3Qt7pR.js → cose-bilkent-S5V4N54A-BuQb9WEM.js} +1 -1
  53. package/dist/client/assets/{cs-CZ-V77HGUP7-BXqhmWZb.js → cs-CZ-V77HGUP7-6BCNHMpz.js} +1 -1
  54. package/dist/client/assets/{cytoscape.esm-B_ygTtvl.js → cytoscape.esm-DelgaX4f.js} +2 -2
  55. package/dist/client/assets/{da-DK-I5RFNTM4-raD_lQnT.js → da-DK-I5RFNTM4-CVeCWpi2.js} +1 -1
  56. package/dist/client/assets/{dagre-BM42HDAG-BpURvxT4.js → dagre-BM42HDAG-ux5hA7G6.js} +1 -1
  57. package/dist/client/assets/{dagre-BcZLxzJJ.js → dagre-Bx709z4p.js} +1 -1
  58. package/dist/client/assets/{de-CH-WLRDEVBV-CyNG_YAO.js → de-CH-WLRDEVBV-CV-FNCkY.js} +1 -1
  59. package/dist/client/assets/{de-DE-DTI4WUSC-BAnqlByT.js → de-DE-DTI4WUSC-CV-FNCkY.js} +1 -1
  60. package/dist/client/assets/{diagram-2AECGRRQ-DJH0JVlq.js → diagram-2AECGRRQ-Cx-EPj3F.js} +1 -1
  61. package/dist/client/assets/{diagram-5GNKFQAL-DQG4Q1eS.js → diagram-5GNKFQAL-B6qUTxVg.js} +1 -1
  62. package/dist/client/assets/{diagram-KO2AKTUF-hx21Lv-5.js → diagram-KO2AKTUF-BedClayW.js} +1 -1
  63. package/dist/client/assets/{diagram-LMA3HP47--QODJMa9.js → diagram-LMA3HP47-DCwyG0i5.js} +1 -1
  64. package/dist/client/assets/{diagram-OG6HWLK6-CB30hX1a.js → diagram-OG6HWLK6-BZD0jSxR.js} +1 -1
  65. package/dist/client/assets/diagram-action-icons-aa_KOv9h.js +36 -0
  66. package/dist/client/assets/{dist-DCqHC6ts.js → dist-B-m0-H59.js} +1 -1
  67. package/dist/client/assets/dist-B6Q0y0J8.js +1 -0
  68. package/dist/client/assets/dist-BCQCG0we.js +1 -0
  69. package/dist/client/assets/{dist-6oqNX0NJ.js → dist-BEyxdnUD.js} +1 -1
  70. package/dist/client/assets/{dist-Dv_PLWtE.js → dist-BYneHrvV.js} +1 -1
  71. package/dist/client/assets/dist-BsPHL5xw2.js +1 -0
  72. package/dist/client/assets/{dist-BBsYBvEp.js → dist-CX-kKEdL.js} +1 -1
  73. package/dist/client/assets/{dist-DSehUDUA.js → dist-CaLooK5r.js} +1 -1
  74. package/dist/client/assets/{dist-BOA6xeuH.js → dist-Cd4FT8TV.js} +1 -1
  75. package/dist/client/assets/{dist-q3smPWAL.js → dist-ClWZ99Dh.js} +1 -1
  76. package/dist/client/assets/{dist-D5hPoFa5.js → dist-D01mg-Uh.js} +1 -1
  77. package/dist/client/assets/{dist-CJMPm6rd.js → dist-D36UTodj.js} +1 -1
  78. package/dist/client/assets/{dist-CtHMYO6t.js → dist-D6YOhZ_d.js} +1 -1
  79. package/dist/client/assets/{dist-U35xPXYU.js → dist-D8jTFU06.js} +1 -1
  80. package/dist/client/assets/dist-DGI-0uwF.js +1 -0
  81. package/dist/client/assets/{dist-D5BVeoD4.js → dist-DGO-wCq8.js} +1 -1
  82. package/dist/client/assets/dist-DMKYvLqD.js +1 -0
  83. package/dist/client/assets/{dist-CDsAhnoa.js → dist-DRQhk99i.js} +1 -1
  84. package/dist/client/assets/{dist-wA96SVn6.js → dist-DScq22KK.js} +1 -1
  85. package/dist/client/assets/{dist-BQuic6-d.js → dist-DbpddOpB.js} +1 -1
  86. package/dist/client/assets/{dist-x4M0Qd0y.js → dist-Dl5uZm2T.js} +1 -1
  87. package/dist/client/assets/{dist-BsTc7qjG.js → dist-DvpEZjAN.js} +1 -1
  88. package/dist/client/assets/dist-Dw8hKOQm.js +1 -0
  89. package/dist/client/assets/{dist-Bhn_Fiol.js → dist-G7j-noyR.js} +1 -1
  90. package/dist/client/assets/dist-PItC1DRE.js +1 -0
  91. package/dist/client/assets/{dist-CAlqrzaF.js → dist-cMoydUa-.js} +1 -1
  92. package/dist/client/assets/dist-cTuGB1EW.js +9 -0
  93. package/dist/client/assets/{dist-DFzJ8okV.js → dist-efgaKpVU.js} +1 -1
  94. package/dist/client/assets/{dist-Dx8yU-RA.js → dist-nx-MGJIM.js} +1 -1
  95. package/dist/client/assets/{dist-UnjH15yg.js → dist-pww3cL4Q.js} +7 -7
  96. package/dist/client/assets/dist-uhQ-mkuh.js +2 -0
  97. package/dist/client/assets/{dockerfile-D8_6_FRV.js → dockerfile-BLkNEvjs.js} +1 -1
  98. package/dist/client/assets/drawio-editor-BM_W6Lkj.js +9 -0
  99. package/dist/client/assets/drawio-embed-controller-BKHnRnaj.js +1 -0
  100. package/dist/client/assets/drawioEditor-DBfHYCO5.js +2 -0
  101. package/dist/client/assets/{editor-session-BTPe8PEu.js → editor-session-VueuoR_r.js} +2 -2
  102. package/dist/client/assets/{el-GR-ZXDJ2OS4-De6xlnXD.js → el-GR-ZXDJ2OS4-DzgGVibO.js} +1 -1
  103. package/dist/client/assets/{en-CMP6EMR6-Bfz_MnNa.js → en-CMP6EMR6-l-4iz8RC.js} +1 -1
  104. package/dist/client/assets/{erDiagram-TEJ5UH35-BvMeaml9.js → erDiagram-TEJ5UH35-7XmGIzui.js} +1 -1
  105. package/dist/client/assets/{es-ES-DYQHAD43-EVQAeFTZ.js → es-ES-DYQHAD43-DP98e8ox.js} +1 -1
  106. package/dist/client/assets/{eu-ES-QDSYU5Y3-O5XEQp0x.js → eu-ES-QDSYU5Y3-DrEfH-2N.js} +1 -1
  107. package/dist/client/assets/eventmodeling-FCH6USID-D-VxYsbw.js +1 -0
  108. package/dist/client/assets/excalidraw-editor-B3ffLqi6.css +1 -0
  109. package/dist/client/assets/{excalidraw-editor-DzL1T9D9.js → excalidraw-editor-C6fTkMBx.js} +4 -4
  110. package/dist/client/assets/excalidraw-embed-controller-BKx05cjZ.js +1 -0
  111. package/dist/client/assets/excalidraw-embed-reconciler-DGiagExg.js +1 -0
  112. package/dist/client/assets/{excalidraw-mermaid-stub-B5sWezsO.js → excalidraw-mermaid-stub-DE5FTiZB.js} +1 -1
  113. package/dist/client/assets/excalidraw-scene-DjODomMW.js +176 -0
  114. package/dist/client/assets/excalidrawEditor-DQD_lLF4.js +2 -0
  115. package/dist/client/assets/{export-page-BkCqT_2s.js → export-page-D0iHYSPi.js} +4 -4
  116. package/dist/client/assets/exportDocument-Ct-Zvf7_.js +2 -0
  117. package/dist/client/assets/{fa-IR-26LZG4PM-BlqI3v_N.js → fa-IR-26LZG4PM-CEwnMxEY.js} +1 -1
  118. package/dist/client/assets/{factor-Cz-hzBGH.js → factor-D7LVTn2l.js} +1 -1
  119. package/dist/client/assets/{fi-FI-6YS4KDE4-af5Lkv-j.js → fi-FI-6YS4KDE4-DPKGe_vC.js} +1 -1
  120. package/dist/client/assets/file-history-view-controller-CK3oHDCT.js +112 -0
  121. package/dist/client/assets/{flowDiagram-I6XJVG4X-DgXXcK8y.js → flowDiagram-I6XJVG4X-DgTAG2K2.js} +2 -2
  122. package/dist/client/assets/{fr-FR-BRLLPTZC-CwQyur9E.js → fr-FR-BRLLPTZC-CgMmN9yd.js} +1 -1
  123. package/dist/client/assets/{ganttDiagram-6RSMTGT7-BMpbo3vT.js → ganttDiagram-6RSMTGT7-Curra433.js} +1 -1
  124. package/dist/client/assets/git-diff-view-controller-qorJ_Quo.js +150 -0
  125. package/dist/client/assets/git-panel-controller-DG8ws6B_.js +203 -0
  126. package/dist/client/assets/gitGraph-WXDBUCRP-CRS5XD98.js +1 -0
  127. package/dist/client/assets/{gitGraphDiagram-PVQCEYII-CCdpTNJZ.js → gitGraphDiagram-PVQCEYII-DVf7-iH0.js} +1 -1
  128. package/dist/client/assets/{gl-ES-OKUZTLYG-BNEoLCI4.js → gl-ES-OKUZTLYG-qCIGpEXP.js} +1 -1
  129. package/dist/client/assets/{haxe-CcPA1xnA.js → haxe-DjVOVvNP.js} +1 -1
  130. package/dist/client/assets/{he-IL-26MGYIU7-WnVF9HP3.js → he-IL-26MGYIU7-_Pd-m9Sj.js} +1 -1
  131. package/dist/client/assets/{hi-IN-Q4ZOGTP2-DcU7ec07.js → hi-IN-Q4ZOGTP2-B4kd5rva.js} +1 -1
  132. package/dist/client/assets/{hu-HU-P2OXPSN5-wmJyK1Wq.js → hu-HU-P2OXPSN5-DL2sEPhQ.js} +1 -1
  133. package/dist/client/assets/{id-ID-2EIKXYN6-BTvn0aFf.js → id-ID-2EIKXYN6-DqXHubyc.js} +1 -1
  134. package/dist/client/assets/image-MLCQRF34-BT938jMR.js +1 -0
  135. package/dist/client/assets/index-AdGl0Mjr.js +2 -0
  136. package/dist/client/assets/index-V7z92VYK.css +1 -0
  137. package/dist/client/assets/info-J43DQDTF-CdrjkAmK.js +1 -0
  138. package/dist/client/assets/{infoDiagram-5YYISTIA-oYw2qnNY.js → infoDiagram-5YYISTIA-DT8NjvZp.js} +1 -1
  139. package/dist/client/assets/input-CXk9Zxz9.js +1 -0
  140. package/dist/client/assets/{ishikawaDiagram-YF4QCWOH-BPqURwBR.js → ishikawaDiagram-YF4QCWOH-axeWdm72.js} +1 -1
  141. package/dist/client/assets/{it-IT-4CFKVXI2-CC_iQxXu.js → it-IT-4CFKVXI2-CyToZF8R.js} +1 -1
  142. package/dist/client/assets/{ja-JP-MAND2Z4V-ConJI8GA.js → ja-JP-MAND2Z4V-CdMMUzyq.js} +1 -1
  143. package/dist/client/assets/{javascript-gTK9fxz6.js → javascript-B9TABJff.js} +1 -1
  144. package/dist/client/assets/javascript-BRzqD9BA.js +1 -0
  145. package/dist/client/assets/{journeyDiagram-JHISSGLW-CvxY2Fte.js → journeyDiagram-JHISSGLW-_K7qmGID.js} +1 -1
  146. package/dist/client/assets/{jsx-runtime-IB1e1gmy.js → jsx-runtime-DqMcooe2.js} +1 -1
  147. package/dist/client/assets/{kaa-HQRTCXTJ-Caqwh_Qr.js → kaa-HQRTCXTJ-D6kVHP9w.js} +1 -1
  148. package/dist/client/assets/{kab-KAB-JKIKKTGH-DQBmYNc9.js → kab-KAB-JKIKKTGH-XYCYTUmV.js} +1 -1
  149. package/dist/client/assets/{kanban-definition-UN3LZRKU-Ex7702dO.js → kanban-definition-UN3LZRKU-DaPREf-3.js} +1 -1
  150. package/dist/client/assets/keyboard-shortcuts-Ctp9_GHy.js +1 -0
  151. package/dist/client/assets/{kk-KZ-HXQ63ZFC-O5qp74q-.js → kk-KZ-HXQ63ZFC-Du2sGLmI.js} +1 -1
  152. package/dist/client/assets/{km-KH-PKL3LSGX-2wUYTyyo.js → km-KH-PKL3LSGX-B2OnEat4.js} +1 -1
  153. package/dist/client/assets/{ko-KR-KXLREZX3-CYtUnW5t.js → ko-KR-KXLREZX3-CcxALsEE.js} +1 -1
  154. package/dist/client/assets/{ku-TR-MJ4IER3X-DtEKOAU3.js → ku-TR-MJ4IER3X-HDyr9f4z.js} +1 -1
  155. package/dist/client/assets/{line-DRJILpPI.js → line-CbpIuf9e.js} +1 -1
  156. package/dist/client/assets/{linear-rFRiXd2u.js → linear-BGe2G4b5.js} +1 -1
  157. package/dist/client/assets/{lt-LT-H6WFQ6FJ-Cs17Ppdf.js → lt-LT-H6WFQ6FJ-BzZe8pg9.js} +1 -1
  158. package/dist/client/assets/{lv-LV-GOCK6SJW-DYuTyosz.js → lv-LV-GOCK6SJW-CMspwH0q.js} +1 -1
  159. package/dist/client/assets/main-C8f6FlSO.js +789 -0
  160. package/dist/client/assets/{mermaid-parser.core-BD_OCbyj.js → mermaid-parser.core-C4gZtCl9.js} +2 -2
  161. package/dist/client/assets/{mermaid-runtime-CEgpdpwB.js → mermaid-runtime-CX_vmg3J.js} +3 -3
  162. package/dist/client/assets/{mindmap-definition-RKZ34NQL-D4pwLdMH.js → mindmap-definition-RKZ34NQL-DB1uitpo.js} +1 -1
  163. package/dist/client/assets/{mr-IN-IXVLDMEQ-CIJFnklt.js → mr-IN-IXVLDMEQ-C6mqoMmX.js} +1 -1
  164. package/dist/client/assets/{my-MM-YG6MYTTD-em_7TGWX.js → my-MM-YG6MYTTD-Q33bVx2B.js} +1 -1
  165. package/dist/client/assets/navigation-D173qvIt.css +1 -0
  166. package/dist/client/assets/{nb-NO-XGWJISD2-BLNgPVDj.js → nb-NO-XGWJISD2-B1jdnBFb.js} +1 -1
  167. package/dist/client/assets/{nl-NL-XVDVCPNC-CComxzvg.js → nl-NL-XVDVCPNC-DoQkA2lu.js} +1 -1
  168. package/dist/client/assets/{nn-NO-EMX5MJX5-Cekj8s_-.js → nn-NO-EMX5MJX5-Db3tHf5b.js} +1 -1
  169. package/dist/client/assets/{nsis-QPGhLAeY.js → nsis-AQ_alPln.js} +1 -1
  170. package/dist/client/assets/{oc-FR-ROEINTVO-DW-kHJ81.js → oc-FR-ROEINTVO-DLu-4Ze0.js} +1 -1
  171. package/dist/client/assets/{ordinal-De-qfORd.js → ordinal-hYBb2elL.js} +1 -1
  172. package/dist/client/assets/{pa-IN-ZYN6SUDY-CnhULOGp.js → pa-IN-ZYN6SUDY-XvJuMxJR.js} +1 -1
  173. package/dist/client/assets/packet-YPE3B663-r4oAflYS.js +1 -0
  174. package/dist/client/assets/percentages-5DKR754L-D_KAYeu8.js +1 -0
  175. package/dist/client/assets/{pica-DcQ1xKp1.js → pica-DjQMjoX_.js} +1 -1
  176. package/dist/client/assets/pie-LRSECV5Y-DkaVktH1.js +1 -0
  177. package/dist/client/assets/{pieDiagram-4H26LBE5-C6MCExtR.js → pieDiagram-4H26LBE5-CdDwk3iQ.js} +1 -1
  178. package/dist/client/assets/{pl-PL-6VTG7PHC-C9rBsz9v.js → pl-PL-6VTG7PHC-DjJq8QfA.js} +1 -1
  179. package/dist/client/assets/preview-diagram-utils-DnqteI9Q.js +1 -0
  180. package/dist/client/assets/preview-render-compiler-Dts88fM3.js +35 -0
  181. package/dist/client/assets/preview-render-compiler-VKNqrOZN.js +1 -0
  182. package/dist/client/assets/preview-render-profile-CU6rvKx3.js +23 -0
  183. package/dist/client/assets/preview-render-worker-CFKBP7xz.js +59 -0
  184. package/dist/client/assets/{pt-BR-5YFKRR5G-BVyxOCjg.js → pt-BR-5YFKRR5G-Dg2lIz1V.js} +1 -1
  185. package/dist/client/assets/{pt-PT-GEIXXZ67-5CbVaVay.js → pt-PT-GEIXXZ67-COIg15TS.js} +1 -1
  186. package/dist/client/assets/{pug-lkTEco3G.js → pug-Ck0YjsGM.js} +1 -1
  187. package/dist/client/assets/{quadrantDiagram-W4KKPZXB-CD77Rny0.js → quadrantDiagram-W4KKPZXB-C6n3eYzo.js} +1 -1
  188. package/dist/client/assets/{quick-switcher-controller-CVJBt6V9.js → quick-switcher-controller-CVRUPEKp.js} +1 -1
  189. package/dist/client/assets/radar-GUYGQ44K-Bjhhjq-k.js +1 -0
  190. package/dist/client/assets/{requirementDiagram-4Y6WPE33-DdKM6ZWI.js → requirementDiagram-4Y6WPE33-B-sVI-jx.js} +1 -1
  191. package/dist/client/assets/{ro-RO-E2P6TFZI-DANwkfep.js → ro-RO-E2P6TFZI-CdCIa8N3.js} +1 -1
  192. package/dist/client/assets/{room-Cha55fQg.js → room-CpCcgtG8.js} +1 -1
  193. package/dist/client/assets/{ru-RU-YBIIY43T-BWZSxhA5.js → ru-RU-YBIIY43T-C5TT1jTX.js} +1 -1
  194. package/dist/client/assets/runtime-config-CDgeuPWN.js +1 -0
  195. package/dist/client/assets/runtime-paths-DvpihCEq.js +1 -0
  196. package/dist/client/assets/{sankeyDiagram-5OEKKPKP-BH3_LNkI.js → sankeyDiagram-5OEKKPKP-EY2cdbUV.js} +1 -1
  197. package/dist/client/assets/segmented-control-DhUkW6ro.js +1 -0
  198. package/dist/client/assets/{sequenceDiagram-3UESZ5HK-CCGL7FMW.js → sequenceDiagram-3UESZ5HK-D6h6knAb.js} +2 -2
  199. package/dist/client/assets/{si-LK-673C2CI2-Bqr808AJ.js → si-LK-673C2CI2-f_5ZzunQ.js} +1 -1
  200. package/dist/client/assets/{sk-SK-CKZHQ4AP-B2PvXXeU.js → sk-SK-CKZHQ4AP-4jimlXp1.js} +1 -1
  201. package/dist/client/assets/{sl-SI-557H2GWM-IPVDhzgb.js → sl-SI-557H2GWM-BnZ04ZfX.js} +1 -1
  202. package/dist/client/assets/{src-BshjqEL2.js → src-DSz_pbBa.js} +1 -1
  203. package/dist/client/assets/{stateDiagram-AJRCARHV-ljJcYRX4.js → stateDiagram-AJRCARHV-Ca8ZuIR2.js} +1 -1
  204. package/dist/client/assets/stateDiagram-v2-BHNVJYJU-DGRDwQhE.js +1 -0
  205. package/dist/client/assets/subset-shared.chunk-DcaFK0zo.js +1 -0
  206. package/dist/client/assets/{subset-worker.chunk-BW_EF59g.js → subset-worker.chunk-CVu8sQYq.js} +1 -1
  207. package/dist/client/assets/{sv-SE-XOPKKDWS-CQipq9Nf.js → sv-SE-XOPKKDWS-B2uKmd06.js} +1 -1
  208. package/dist/client/assets/{ta-IN-XBH7DQI3-Cj2o89vS.js → ta-IN-XBH7DQI3-Bld4KtCz.js} +1 -1
  209. package/dist/client/assets/{th-TH-TOCWH3R4-IOX-l13w.js → th-TH-TOCWH3R4-DUlvnJTX.js} +1 -1
  210. package/dist/client/assets/{timeline-definition-PNZ67QCA-CUVPem2o.js → timeline-definition-PNZ67QCA-BAhvj49M.js} +1 -1
  211. package/dist/client/assets/{tr-TR-GXW6CYY5-DBVLEsZg.js → tr-TR-GXW6CYY5-BXTTqJlZ.js} +1 -1
  212. package/dist/client/assets/treeView-BLDUP644-DbX5QpdZ.js +1 -0
  213. package/dist/client/assets/treemap-LRROVOQU-DT4YRX1p.js +1 -0
  214. package/dist/client/assets/turtle-Cx3rYX2g.js +1 -0
  215. package/dist/client/assets/{uk-UA-IJKTNUDG-C5kaymku.js → uk-UA-IJKTNUDG-DbQpa2ug.js} +1 -1
  216. package/dist/client/assets/{uz-UZ-TBZZEA4V-lMna4tx1.js → uz-UZ-TBZZEA4V-Dt35hEMk.js} +1 -1
  217. package/dist/client/assets/vault-api-client-BPVNCJZC.js +1 -0
  218. package/dist/client/assets/vault-api-client-VAfZ8okg.js +1 -0
  219. package/dist/client/assets/{vault-utils-BbJUHPCf.js → vault-utils-kIbqyWPm.js} +1 -1
  220. package/dist/client/assets/{vennDiagram-CIIHVFJN-Bb1KSPKA.js → vennDiagram-CIIHVFJN-GGrxyoPK.js} +2 -2
  221. package/dist/client/assets/{vi-VN-MULSGNVB-BAcoCjsz.js → vi-VN-MULSGNVB-BgxNIE1N.js} +1 -1
  222. package/dist/client/assets/wardley-L42UT6IY-Ba5lVG9E.js +1 -0
  223. package/dist/client/assets/{wardleyDiagram-YWT4CUSO-EdTzLQiR.js → wardleyDiagram-YWT4CUSO-BgYuJM9o.js} +1 -1
  224. package/dist/client/assets/{xychartDiagram-2RQKCTM6-BoQFrGlt.js → xychartDiagram-2RQKCTM6-DKA6F9sv.js} +1 -1
  225. package/dist/client/assets/{yjs-provider-reset-guard-CNmMf4Qd.js → yjs-provider-reset-guard-BicD2Ate.js} +1 -1
  226. package/dist/client/assets/{zh-CN-MVX3E32U-sW-DCFHP.js → zh-CN-MVX3E32U-W0nclq-N.js} +1 -1
  227. package/dist/client/assets/{zh-HK-JNU5RLIE-Duqu8EG_.js → zh-HK-JNU5RLIE-C2VRLD9Z.js} +1 -1
  228. package/dist/client/assets/{zh-TW-LENVCA6T-BHC0OLnd.js → zh-TW-LENVCA6T-Ci7udZjZ.js} +1 -1
  229. package/dist/client/drawio-editor.html +3 -3
  230. package/dist/client/excalidraw-editor.html +3 -3
  231. package/dist/client/export-document.html +4 -4
  232. package/dist/client/index.html +5 -5
  233. package/package.json +17 -17
  234. package/src/client/application/app-shell/comments-feature.js +108 -0
  235. package/src/client/application/app-shell/git-feature.js +6 -1
  236. package/src/client/application/app-shell/ui-feature-shell.js +7 -4
  237. package/src/client/application/app-shell/ui-feature-sidebar.js +11 -2
  238. package/src/client/application/app-shell-elements.js +2 -0
  239. package/src/client/application/diagram-chrome.js +708 -0
  240. package/src/client/application/mermaid-preview-hydrator.js +18 -516
  241. package/src/client/application/plantuml-preview-hydrator.js +22 -518
  242. package/src/client/application/preview-renderer.js +15 -4
  243. package/src/client/application/workspace-route-controller.js +11 -1
  244. package/src/client/bootstrap/app-shell-feature-surface.js +67 -0
  245. package/src/client/bootstrap/collabmd-app-shell.js +111 -356
  246. package/src/client/bootstrap/lazy-controller-feature.js +434 -0
  247. package/src/client/infrastructure/vault-api-client.js +5 -0
  248. package/src/client/presentation/app-shell-template.js +25 -12
  249. package/src/client/presentation/bases-preview-controller.js +33 -16
  250. package/src/client/presentation/comment-overview-controller.js +238 -0
  251. package/src/client/presentation/comment-ui/comment-ui-state.js +23 -0
  252. package/src/client/presentation/file-explorer-controller.js +9 -0
  253. package/src/client/presentation/file-explorer-view.js +11 -1
  254. package/src/client/styles/components/navigation.css +43 -8
  255. package/src/client/styles/components/scrollbars.css +5 -0
  256. package/src/client/styles/features/comment-overview.css +196 -0
  257. package/src/client/styles/features/comments.css +1 -0
  258. package/src/client/styles/layout/responsive.css +3 -2
  259. package/src/server/application/workspace-reconciliation.js +446 -0
  260. package/src/server/config/env.js +73 -0
  261. package/src/server/create-app-server.js +39 -32
  262. package/src/server/domain/bases/base-expression-runtime.js +183 -147
  263. package/src/server/domain/bases/base-index-snapshot-store.js +53 -2
  264. package/src/server/domain/bases/base-query-service.js +55 -38
  265. package/src/server/domain/collaboration/collaboration-document-store.js +6 -2
  266. package/src/server/domain/collaboration/collaboration-room.js +66 -2
  267. package/src/server/domain/comment-overview.js +108 -0
  268. package/src/server/domain/hosted-workspace-contract.js +18 -0
  269. package/src/server/domain/hosted-workspace.js +744 -0
  270. package/src/server/domain/workspace-state.js +848 -2
  271. package/src/server/infrastructure/github/github-app-client.js +205 -0
  272. package/src/server/infrastructure/github/github-setup-flow.js +86 -0
  273. package/src/server/infrastructure/http/create-git-api-command-handler.js +1 -1
  274. package/src/server/infrastructure/http/create-hosted-api-handler.js +200 -0
  275. package/src/server/infrastructure/http/create-request-handler.js +20 -0
  276. package/src/server/infrastructure/http/create-static-handler.js +4 -0
  277. package/src/server/infrastructure/http/create-vault-api-command-handler.js +44 -119
  278. package/src/server/infrastructure/http/create-vault-api-query-handler.js +18 -33
  279. package/src/server/infrastructure/http/request-body.js +12 -2
  280. package/src/server/infrastructure/persistence/hosted-metadata-store.js +500 -0
  281. package/src/server/infrastructure/persistence/sidecar-store.js +53 -2
  282. package/src/server/infrastructure/persistence/vault-content-adapter.js +8 -8
  283. package/src/server/infrastructure/persistence/vault-file-store.js +64 -135
  284. package/src/server/infrastructure/websocket/attach-collaboration-gateway.js +49 -5
  285. package/src/server/infrastructure/workspace/file-system-sync-service.js +24 -411
  286. package/src/server/infrastructure/workspace/workspace-mutation-coordinator.js +13 -621
  287. package/src/server/infrastructure/workspace/workspace-state-file-system-adapter.js +37 -0
  288. package/dist/client/assets/architecture-7EHR7CIX-M1SFnuBJ.js +0 -1
  289. package/dist/client/assets/channel-E9SBQ9z6.js +0 -1
  290. package/dist/client/assets/chunk-QZHKN3VN-9NMPSwDX.js +0 -1
  291. package/dist/client/assets/chunk-WMDFGAFD-EzVSth95.js +0 -35
  292. package/dist/client/assets/chunk-WU5MYG2G-Bl8VQmZH.js +0 -1
  293. package/dist/client/assets/classDiagram-4FO5ZUOK-D7YhYDLZ.js +0 -1
  294. package/dist/client/assets/classDiagram-v2-Q7XG4LA2-COI4atGv.js +0 -1
  295. package/dist/client/assets/dist-B0U2pnHE.js +0 -1
  296. package/dist/client/assets/dist-B1BRR2vO.js +0 -1
  297. package/dist/client/assets/dist-B48_21rM.js +0 -1
  298. package/dist/client/assets/dist-BNDWUlMx.js +0 -9
  299. package/dist/client/assets/dist-BoCYrsTA.js +0 -1
  300. package/dist/client/assets/dist-C-W89K9S.js +0 -1
  301. package/dist/client/assets/dist-CBTadfRi2.js +0 -1
  302. package/dist/client/assets/dist-D4DGyOvV.js +0 -1
  303. package/dist/client/assets/dist-ihRjPW1T.js +0 -2
  304. package/dist/client/assets/drawio-editor-BHYoSlR7.js +0 -9
  305. package/dist/client/assets/drawioEditor-B-Ssnq_p.js +0 -2
  306. package/dist/client/assets/eventmodeling-FCH6USID-DKkN-EFL.js +0 -1
  307. package/dist/client/assets/excalidraw-editor-mKBCIvNR.css +0 -1
  308. package/dist/client/assets/excalidraw-scene-i7oBzgH8.js +0 -176
  309. package/dist/client/assets/excalidrawEditor-DRxzpbJ-.js +0 -2
  310. package/dist/client/assets/exportDocument-Dj7w1hDJ.js +0 -2
  311. package/dist/client/assets/gitGraph-WXDBUCRP-BIQYiPEj.js +0 -1
  312. package/dist/client/assets/image-KGGK4BDN-BtStV6c9.js +0 -1
  313. package/dist/client/assets/index-Cnyy977t.css +0 -1
  314. package/dist/client/assets/index-DxQmPZ_f.js +0 -2
  315. package/dist/client/assets/info-J43DQDTF-CO2Z2J7J.js +0 -1
  316. package/dist/client/assets/javascript-qUBHINSy.js +0 -1
  317. package/dist/client/assets/main-iuYcGt-A.js +0 -1414
  318. package/dist/client/assets/navigation-Du6CLhvs.css +0 -1
  319. package/dist/client/assets/packet-YPE3B663-VxGcYggl.js +0 -1
  320. package/dist/client/assets/percentages-5DKR754L-Ug3UfchV.js +0 -1
  321. package/dist/client/assets/pie-LRSECV5Y-7RrvmmEk.js +0 -1
  322. package/dist/client/assets/preview-diagram-utils-D94KrSQH.js +0 -1
  323. package/dist/client/assets/preview-render-compiler-CSggyCbw.js +0 -35
  324. package/dist/client/assets/preview-render-compiler-TPMesM_L.js +0 -1
  325. package/dist/client/assets/preview-render-profile-CQR0o67h.js +0 -23
  326. package/dist/client/assets/preview-render-worker-CifbXdlx.js +0 -59
  327. package/dist/client/assets/radar-GUYGQ44K-2SBnfFng.js +0 -1
  328. package/dist/client/assets/runtime-config-CM_2pVYD.js +0 -1
  329. package/dist/client/assets/stateDiagram-v2-BHNVJYJU-DXm0ynOB.js +0 -1
  330. package/dist/client/assets/subset-shared.chunk-C9mEHUfV.js +0 -1
  331. package/dist/client/assets/treeView-BLDUP644-DItqHrxu.js +0 -1
  332. package/dist/client/assets/treemap-LRROVOQU-DD1ESKp7.js +0 -1
  333. package/dist/client/assets/turtle-BkP3ExOG.js +0 -1
  334. package/dist/client/assets/vault-api-client-Fa51l2lE.js +0 -1
  335. package/dist/client/assets/wardley-L42UT6IY-BoSI-SvR.js +0 -1
  336. /package/dist/client/assets/{apl-C1JYSI8J.js → apl-CnwPGSsG.js} +0 -0
  337. /package/dist/client/assets/{array-7rJMcyYQ.js → array-BifhSqXX.js} +0 -0
  338. /package/dist/client/assets/{asciiarmor-DHW75j1s.js → asciiarmor-qTkVPQu6.js} +0 -0
  339. /package/dist/client/assets/{asn1-CQiG40kG.js → asn1-Dr8qZg38.js} +0 -0
  340. /package/dist/client/assets/{asterisk-BWExh0n4.js → asterisk-Bja0s6e1.js} +0 -0
  341. /package/dist/client/assets/{base-h1uscjTi.js → base-CxPEiHuy.js} +0 -0
  342. /package/dist/client/assets/{brainfuck-CTNFyOLg.js → brainfuck-D5EjA2JK.js} +0 -0
  343. /package/dist/client/assets/{chunk-3PELD44J-DymL2rGq.js → chunk-3PELD44J-C625MXe_.js} +0 -0
  344. /package/dist/client/assets/{chunk-A66AFZZU-BFHL744F.js → chunk-A66AFZZU-BbU3ThId.js} +0 -0
  345. /package/dist/client/assets/{chunk-LOOWOR4L-C5BUwXgZ.js → chunk-LOOWOR4L-CGCAV5nC.js} +0 -0
  346. /package/dist/client/assets/{chunk-tBc3Ke6Z.js → chunk-aKtaBQYM.js} +0 -0
  347. /package/dist/client/assets/{clike-BFTLRaGS.js → clike-DHH8Ad3s.js} +0 -0
  348. /package/dist/client/assets/{clojure-D-DYVqu7.js → clojure-BflJGmDX.js} +0 -0
  349. /package/dist/client/assets/{cmake-DtGL-Unu.js → cmake-CyVbuzPu.js} +0 -0
  350. /package/dist/client/assets/{cobol-DP4QggbL.js → cobol-B_OZ4V-R.js} +0 -0
  351. /package/dist/client/assets/{coffeescript-B7GZajzV.js → coffeescript-B2pKbFk8.js} +0 -0
  352. /package/dist/client/assets/{commonlisp-COlJYiQT.js → commonlisp-CcllspGY.js} +0 -0
  353. /package/dist/client/assets/{crystal-I_dE9xG-.js → crystal-M5-qzICs.js} +0 -0
  354. /package/dist/client/assets/{css-CmhPNxBE.js → css-CYpP4FRV.js} +0 -0
  355. /package/dist/client/assets/{cypher-DEGl2llJ.js → cypher-p9eYesGn.js} +0 -0
  356. /package/dist/client/assets/{d-BspB0dox.js → d-BhMjBjQP.js} +0 -0
  357. /package/dist/client/assets/{defaultLocale-DKHHE2Ij.js → defaultLocale-C8Fc0cco.js} +0 -0
  358. /package/dist/client/assets/{diff-BWuPUsEo.js → diff-ChtP43wD.js} +0 -0
  359. /package/dist/client/assets/{drawio-room-DrZ-gy4N.js → drawio-room-B3OZRHTH.js} +0 -0
  360. /package/dist/client/assets/{dtd-C6brJFPg.js → dtd-DTF72YNO.js} +0 -0
  361. /package/dist/client/assets/{dylan-Bft86ZSB.js → dylan-C6jEEEk-.js} +0 -0
  362. /package/dist/client/assets/{ebnf-D6ifG44A.js → ebnf-D4c0_ac3.js} +0 -0
  363. /package/dist/client/assets/{ecl-D9rhJ9-u.js → ecl-BSZaIHnp.js} +0 -0
  364. /package/dist/client/assets/{eiffel-DwxtewZF.js → eiffel-BEjRio4Q.js} +0 -0
  365. /package/dist/client/assets/{elm-B1TncobV.js → elm-Cshzl8qu.js} +0 -0
  366. /package/dist/client/assets/{erlang-BDJZNtt8.js → erlang-DaB2Rkuy.js} +0 -0
  367. /package/dist/client/assets/{excalidraw-mermaid-stub-Co4Okjfg.js → excalidraw-mermaid-stub-BNckbX2n.js} +0 -0
  368. /package/dist/client/assets/{fcl-CUXJFJn1.js → fcl-ClOhbFR7.js} +0 -0
  369. /package/dist/client/assets/{file-kind-DLz-bCzA.js → file-kind-BKPOIRPE.js} +0 -0
  370. /package/dist/client/assets/{forth-nvhcMz63.js → forth-Cezjo90N.js} +0 -0
  371. /package/dist/client/assets/{fortran-BZID-z10.js → fortran-Bt6PBEDR.js} +0 -0
  372. /package/dist/client/assets/{gas-DjQsZDGE.js → gas-BHEdbvp9.js} +0 -0
  373. /package/dist/client/assets/{gherkin-S0kHlzux.js → gherkin-oBAE_ms0.js} +0 -0
  374. /package/dist/client/assets/{graphlib-Dduz6oB8.js → graphlib-B8gBHxth.js} +0 -0
  375. /package/dist/client/assets/{groovy-Di--Vb9Z.js → groovy-BC3IOsC8.js} +0 -0
  376. /package/dist/client/assets/{haskell-C6qH3-aI.js → haskell-BRsoo5mP.js} +0 -0
  377. /package/dist/client/assets/{http-DG1Y9fpK.js → http-CLVgA2GD.js} +0 -0
  378. /package/dist/client/assets/{idl-B64p3NTJ.js → idl-BUZw3wgd.js} +0 -0
  379. /package/dist/client/assets/{image-blob-reduce.esm-CRyv8pnU.js → image-blob-reduce.esm-NzmDxm1v.js} +0 -0
  380. /package/dist/client/assets/{init-EmgYNkpL.js → init-D6jRqBbL.js} +0 -0
  381. /package/dist/client/assets/{julia-B22G9Bym.js → julia-CQfgDRfP.js} +0 -0
  382. /package/dist/client/assets/{katex-Beiidjxi.js → katex-C7GtLiLd.js} +0 -0
  383. /package/dist/client/assets/{vault-api-client-D7Ck0CvR.css → keyboard-shortcuts-D7Ck0CvR.css} +0 -0
  384. /package/dist/client/assets/{livescript-CkcuHqeS.js → livescript-BXxG0Yva.js} +0 -0
  385. /package/dist/client/assets/{lua-Cg0FqIlO.js → lua-CL1SqxuB.js} +0 -0
  386. /package/dist/client/assets/{mathematica-CKVhKnoY.js → mathematica-u8YMmbU0.js} +0 -0
  387. /package/dist/client/assets/{mbox-DANyzFJ2.js → mbox-BEMVcqjs.js} +0 -0
  388. /package/dist/client/assets/{mirc-BVG2S5rO.js → mirc-C9zpzAZU.js} +0 -0
  389. /package/dist/client/assets/{mllike-C0p7lv48.js → mllike-B45xgp2S.js} +0 -0
  390. /package/dist/client/assets/{modelica-vJ-Qa9jV.js → modelica-CqHI_q-D.js} +0 -0
  391. /package/dist/client/assets/{mscgen-vUD-SWGJ.js → mscgen-qgSLujhx.js} +0 -0
  392. /package/dist/client/assets/{mumps-D0KfUTSd.js → mumps-CW_TBmxz.js} +0 -0
  393. /package/dist/client/assets/{nginx-DkVceJrH.js → nginx-BMaDbqW3.js} +0 -0
  394. /package/dist/client/assets/{ntriples-BBuCIfS0.js → ntriples-d28e9m0E.js} +0 -0
  395. /package/dist/client/assets/{octave-BTv2CqSQ.js → octave-D2Q8cUp1.js} +0 -0
  396. /package/dist/client/assets/{oz-D8SjVDNU.js → oz-BwTct_5T.js} +0 -0
  397. /package/dist/client/assets/{pascal-T-tfhVyx.js → pascal-Dp_KdFgX.js} +0 -0
  398. /package/dist/client/assets/{path-vqW-z8T-.js → path-BWPyau1x.js} +0 -0
  399. /package/dist/client/assets/{perl-BDrCkHRd.js → perl-CdEHsPfU.js} +0 -0
  400. /package/dist/client/assets/{pig-BEyI4fPq.js → pig-AF4Hwhju.js} +0 -0
  401. /package/dist/client/assets/{powershell-DtnFc6GG.js → powershell-CzG71I4L.js} +0 -0
  402. /package/dist/client/assets/{preload-helper-Bo9GmnuQ.js → preload-helper-kNaey6uv.js} +0 -0
  403. /package/dist/client/assets/{properties-DWUvbxV9.js → properties-C357ku5U.js} +0 -0
  404. /package/dist/client/assets/{protobuf-CQGoYyfE.js → protobuf-D1ij_kNL.js} +0 -0
  405. /package/dist/client/assets/{puppet-Dd-qWO3p.js → puppet-B4hC2X4m.js} +0 -0
  406. /package/dist/client/assets/{python-BUyhM0Ew.js → python-BqYw9LYJ.js} +0 -0
  407. /package/dist/client/assets/{q-Dls1OX0D.js → q-B9NhS7L_.js} +0 -0
  408. /package/dist/client/assets/{r-DeZ8Mdev.js → r-DADKenSm.js} +0 -0
  409. /package/dist/client/assets/{rough.esm-DE_lJ5Ge.js → rough.esm-CSKSodPl.js} +0 -0
  410. /package/dist/client/assets/{roundRect-BMsJLtvm.js → roundRect-D01gJrlt.js} +0 -0
  411. /package/dist/client/assets/{rpm-CjWxLM68.js → rpm-gpDK5sbt.js} +0 -0
  412. /package/dist/client/assets/{ruby-CB34f2Gf.js → ruby-DsYpTuWg.js} +0 -0
  413. /package/dist/client/assets/{runtime-config-loader-_D2KZKn-.js → runtime-config-loader-BUK56BZz.js} +0 -0
  414. /package/dist/client/assets/{sas-Bji4HDQq.js → sas-C2OyD2Y6.js} +0 -0
  415. /package/dist/client/assets/{scheme-C3elI80V.js → scheme-CyDdOh7e.js} +0 -0
  416. /package/dist/client/assets/{shell-DUveK2Hb.js → shell-Du5Qg9im.js} +0 -0
  417. /package/dist/client/assets/{sieve-2ogwMVx4.js → sieve-BAxa3IjF.js} +0 -0
  418. /package/dist/client/assets/{simple-mode-pOKc0mfx.js → simple-mode-DRpGK0lJ.js} +0 -0
  419. /package/dist/client/assets/{smalltalk-BuGhc6lW.js → smalltalk-BLp5-jwC.js} +0 -0
  420. /package/dist/client/assets/{solr-DTxshpm8.js → solr-BBopId9w.js} +0 -0
  421. /package/dist/client/assets/{sparql-vm8qNO8J.js → sparql-Dz-mlCAC.js} +0 -0
  422. /package/dist/client/assets/{spreadsheet-C6Vbtl9-.js → spreadsheet-CTIncYxj.js} +0 -0
  423. /package/dist/client/assets/{sql-GL7dVWcd.js → sql-DcCJ9jop.js} +0 -0
  424. /package/dist/client/assets/{stex-CEwW0Q_0.js → stex-sDrdk2BW.js} +0 -0
  425. /package/dist/client/assets/{stylus-D1SZIMDs.js → stylus-DLLZ8dgm.js} +0 -0
  426. /package/dist/client/assets/{swift-CKcKnWv9.js → swift-DKB6_1j6.js} +0 -0
  427. /package/dist/client/assets/{tcl-SPk7uiDB.js → tcl-BGfruO1u.js} +0 -0
  428. /package/dist/client/assets/{textile-C48beRus.js → textile-DWBqthVk.js} +0 -0
  429. /package/dist/client/assets/{tiddlywiki-CiImjFLN.js → tiddlywiki-VlUiK86J.js} +0 -0
  430. /package/dist/client/assets/{tiki-HkXZ4BIW.js → tiki-CxVlf5KZ.js} +0 -0
  431. /package/dist/client/assets/{toml-BmfpMy1_.js → toml-LvoKBwCs.js} +0 -0
  432. /package/dist/client/assets/{troff-BjbEOT5E.js → troff-C2dAgh7P.js} +0 -0
  433. /package/dist/client/assets/{ttcn-NA-V4KnY.js → ttcn-BePYh-hG.js} +0 -0
  434. /package/dist/client/assets/{ttcn-cfg-TPHncdGN.js → ttcn-cfg-CY0aot7Q.js} +0 -0
  435. /package/dist/client/assets/{vb-C19AQWqO.js → vb-BthdM_4N.js} +0 -0
  436. /package/dist/client/assets/{vbscript-CHJk3s95.js → vbscript-D9f6rSsU.js} +0 -0
  437. /package/dist/client/assets/{velocity-Ya0P4sQU.js → velocity-CqftRsjg.js} +0 -0
  438. /package/dist/client/assets/{verilog-DSARZZPc.js → verilog-D-x6ne0Z.js} +0 -0
  439. /package/dist/client/assets/{vhdl-CnYyYTpa.js → vhdl-CMrOq2q1.js} +0 -0
  440. /package/dist/client/assets/{webidl-DttrYZRT.js → webidl-D5jiJvOU.js} +0 -0
  441. /package/dist/client/assets/{xquery-CEDTd8qs.js → xquery-fj_R-kMw.js} +0 -0
  442. /package/dist/client/assets/{yacas-C7dxlPB0.js → yacas-CXXgtw0p.js} +0 -0
  443. /package/dist/client/assets/{z80-BqEfFSnA.js → z80-CL1naaMV.js} +0 -0
@@ -0,0 +1,500 @@
1
+ import { mkdir } from 'node:fs/promises';
2
+ import { dirname } from 'node:path';
3
+
4
+ import { HOSTED_ROLE_ADMIN } from '../../domain/hosted-workspace-contract.js';
5
+
6
+ function rowToTeam(row) {
7
+ if (!row) {
8
+ return null;
9
+ }
10
+ return {
11
+ claimedAt: row.claimed_at,
12
+ id: row.id,
13
+ name: row.name,
14
+ setupCompletedAt: row.setup_completed_at,
15
+ };
16
+ }
17
+
18
+ function rowToMembership(row) {
19
+ if (!row) {
20
+ return null;
21
+ }
22
+ return {
23
+ email: row.email,
24
+ id: row.id,
25
+ joinedAt: row.joined_at,
26
+ name: row.name,
27
+ picture: row.picture,
28
+ role: row.role,
29
+ updatedAt: row.updated_at,
30
+ };
31
+ }
32
+
33
+ function rowToInvitation(row) {
34
+ if (!row) {
35
+ return null;
36
+ }
37
+ return {
38
+ acceptedAt: row.accepted_at,
39
+ createdAt: row.created_at,
40
+ email: row.email,
41
+ expiresAt: row.expires_at,
42
+ id: row.id,
43
+ invitedByEmail: row.invited_by_email,
44
+ invitedByName: row.invited_by_name,
45
+ revokedAt: row.revoked_at,
46
+ role: row.role,
47
+ updatedAt: row.updated_at,
48
+ };
49
+ }
50
+
51
+ function rowToWorkspaceClaim(row) {
52
+ if (!row) {
53
+ return null;
54
+ }
55
+ return {
56
+ claimedAt: row.claimed_at,
57
+ createdAt: row.created_at,
58
+ email: row.email,
59
+ expiresAt: row.expires_at,
60
+ id: row.id,
61
+ tokenHash: row.token_hash,
62
+ };
63
+ }
64
+
65
+ function rowToVaultSource(row) {
66
+ if (!row) {
67
+ return null;
68
+ }
69
+ return {
70
+ configuredAt: row.configured_at,
71
+ configuredByEmail: row.configured_by_email,
72
+ configuredByName: row.configured_by_name,
73
+ defaultBranch: row.default_branch,
74
+ id: row.id,
75
+ installationAccountLogin: row.installation_account_login,
76
+ installationId: row.installation_id,
77
+ provider: row.provider,
78
+ repositoryFullName: row.repository_full_name,
79
+ repositoryId: row.repository_id,
80
+ repositoryName: row.repository_name,
81
+ repositoryOwner: row.repository_owner,
82
+ visibility: row.visibility,
83
+ };
84
+ }
85
+
86
+ function parseMetadata(value) {
87
+ try {
88
+ return JSON.parse(value || '{}');
89
+ } catch {
90
+ return {};
91
+ }
92
+ }
93
+
94
+ function rowToAuditEvent(row) {
95
+ if (!row) {
96
+ return null;
97
+ }
98
+ return {
99
+ actorEmail: row.actor_email,
100
+ actorName: row.actor_name,
101
+ createdAt: row.created_at,
102
+ id: row.id,
103
+ metadata: parseMetadata(row.metadata_json),
104
+ targetEmail: row.target_email,
105
+ targetRole: row.target_role,
106
+ type: row.type,
107
+ };
108
+ }
109
+
110
+ export class HostedMetadataStore {
111
+ constructor({ dbPath }) {
112
+ this.dbPath = dbPath;
113
+ this.db = null;
114
+ this.statements = new Map();
115
+ }
116
+
117
+ async initialize() {
118
+ if (this.db) {
119
+ return;
120
+ }
121
+
122
+ await mkdir(dirname(this.dbPath), { recursive: true });
123
+ const { DatabaseSync } = await import('node:sqlite');
124
+ this.db = new DatabaseSync(this.dbPath);
125
+ this.db.exec('PRAGMA foreign_keys = ON');
126
+ this.db.exec('PRAGMA journal_mode = WAL');
127
+ this.db.exec(`
128
+ CREATE TABLE IF NOT EXISTS team (
129
+ id TEXT PRIMARY KEY,
130
+ name TEXT NOT NULL,
131
+ claimed_at INTEGER NOT NULL,
132
+ setup_completed_at INTEGER
133
+ );
134
+
135
+ CREATE TABLE IF NOT EXISTS workspace_claims (
136
+ id TEXT PRIMARY KEY,
137
+ email TEXT NOT NULL,
138
+ token_hash TEXT NOT NULL,
139
+ created_at INTEGER NOT NULL,
140
+ expires_at INTEGER NOT NULL,
141
+ claimed_at INTEGER
142
+ );
143
+
144
+ CREATE TABLE IF NOT EXISTS memberships (
145
+ id TEXT PRIMARY KEY,
146
+ email TEXT NOT NULL UNIQUE,
147
+ name TEXT NOT NULL,
148
+ picture TEXT NOT NULL DEFAULT '',
149
+ role TEXT NOT NULL,
150
+ joined_at INTEGER NOT NULL,
151
+ updated_at INTEGER NOT NULL
152
+ );
153
+
154
+ CREATE TABLE IF NOT EXISTS invitations (
155
+ id TEXT PRIMARY KEY,
156
+ email TEXT NOT NULL UNIQUE,
157
+ role TEXT NOT NULL,
158
+ invited_by_email TEXT NOT NULL,
159
+ invited_by_name TEXT NOT NULL,
160
+ created_at INTEGER NOT NULL,
161
+ expires_at INTEGER NOT NULL,
162
+ revoked_at INTEGER,
163
+ accepted_at INTEGER,
164
+ updated_at INTEGER NOT NULL
165
+ );
166
+
167
+ CREATE TABLE IF NOT EXISTS audit_events (
168
+ id TEXT PRIMARY KEY,
169
+ type TEXT NOT NULL,
170
+ actor_email TEXT NOT NULL,
171
+ actor_name TEXT NOT NULL,
172
+ target_email TEXT NOT NULL,
173
+ target_role TEXT NOT NULL,
174
+ metadata_json TEXT NOT NULL,
175
+ created_at INTEGER NOT NULL
176
+ );
177
+
178
+ CREATE TABLE IF NOT EXISTS operational_security_events (
179
+ id TEXT PRIMARY KEY,
180
+ type TEXT NOT NULL,
181
+ email TEXT NOT NULL,
182
+ metadata_json TEXT NOT NULL,
183
+ created_at INTEGER NOT NULL
184
+ );
185
+
186
+ CREATE TABLE IF NOT EXISTS vault_source (
187
+ id TEXT PRIMARY KEY,
188
+ provider TEXT NOT NULL,
189
+ repository_id TEXT NOT NULL,
190
+ repository_owner TEXT NOT NULL,
191
+ repository_name TEXT NOT NULL,
192
+ repository_full_name TEXT NOT NULL,
193
+ default_branch TEXT NOT NULL,
194
+ installation_id TEXT NOT NULL,
195
+ installation_account_login TEXT NOT NULL,
196
+ visibility TEXT NOT NULL,
197
+ configured_by_email TEXT NOT NULL,
198
+ configured_by_name TEXT NOT NULL,
199
+ configured_at INTEGER NOT NULL
200
+ );
201
+ `);
202
+ }
203
+
204
+ async close() {
205
+ this.statements.clear();
206
+ this.db?.close();
207
+ this.db = null;
208
+ }
209
+
210
+ prepare(key, sql) {
211
+ if (!this.statements.has(key)) {
212
+ this.statements.set(key, this.db.prepare(sql));
213
+ }
214
+ return this.statements.get(key);
215
+ }
216
+
217
+ transaction(fn) {
218
+ this.db.exec('BEGIN IMMEDIATE');
219
+ try {
220
+ const result = fn();
221
+ this.db.exec('COMMIT');
222
+ return result;
223
+ } catch (error) {
224
+ this.db.exec('ROLLBACK');
225
+ throw error;
226
+ }
227
+ }
228
+
229
+ async getTeam() {
230
+ return rowToTeam(this.prepare('getTeam', 'SELECT * FROM team LIMIT 1').get());
231
+ }
232
+
233
+ async updateTeam(team) {
234
+ this.prepare(
235
+ 'updateTeam',
236
+ 'UPDATE team SET name = ?, setup_completed_at = ? WHERE id = ?',
237
+ ).run(team.name, team.setupCompletedAt, team.id);
238
+ }
239
+
240
+ async getVaultSource() {
241
+ return rowToVaultSource(this.prepare('getVaultSource', 'SELECT * FROM vault_source LIMIT 1').get());
242
+ }
243
+
244
+ insertVaultSource(vaultSource) {
245
+ this.prepare(
246
+ 'insertVaultSource',
247
+ `INSERT INTO vault_source (
248
+ id,
249
+ provider,
250
+ repository_id,
251
+ repository_owner,
252
+ repository_name,
253
+ repository_full_name,
254
+ default_branch,
255
+ installation_id,
256
+ installation_account_login,
257
+ visibility,
258
+ configured_by_email,
259
+ configured_by_name,
260
+ configured_at
261
+ ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`,
262
+ ).run(
263
+ vaultSource.id,
264
+ vaultSource.provider,
265
+ vaultSource.repositoryId,
266
+ vaultSource.repositoryOwner,
267
+ vaultSource.repositoryName,
268
+ vaultSource.repositoryFullName,
269
+ vaultSource.defaultBranch,
270
+ vaultSource.installationId,
271
+ vaultSource.installationAccountLogin,
272
+ vaultSource.visibility,
273
+ vaultSource.configuredByEmail,
274
+ vaultSource.configuredByName,
275
+ vaultSource.configuredAt,
276
+ );
277
+ }
278
+
279
+ async configureVaultSource({ auditEvent, team, vaultSource }) {
280
+ this.transaction(() => {
281
+ this.insertVaultSource(vaultSource);
282
+ this.prepare(
283
+ 'updateTeam',
284
+ 'UPDATE team SET name = ?, setup_completed_at = ? WHERE id = ?',
285
+ ).run(team.name, team.setupCompletedAt, team.id);
286
+ this.insertAuditEvent(auditEvent);
287
+ });
288
+ }
289
+
290
+ async createWorkspaceClaim(claim) {
291
+ this.prepare(
292
+ 'createWorkspaceClaim',
293
+ `INSERT INTO workspace_claims (id, email, token_hash, created_at, expires_at, claimed_at)
294
+ VALUES (?, ?, ?, ?, ?, NULL)`,
295
+ ).run(claim.id, claim.email, claim.tokenHash, claim.createdAt, claim.expiresAt);
296
+ }
297
+
298
+ async getActiveWorkspaceClaim(now) {
299
+ return rowToWorkspaceClaim(this.prepare(
300
+ 'getActiveWorkspaceClaim',
301
+ `SELECT * FROM workspace_claims
302
+ WHERE claimed_at IS NULL AND expires_at > ?
303
+ ORDER BY created_at DESC
304
+ LIMIT 1`,
305
+ ).get(now));
306
+ }
307
+
308
+ async claimWorkspace({ auditEvent, claimId, membership, team }) {
309
+ this.transaction(() => {
310
+ this.prepare(
311
+ 'insertTeam',
312
+ 'INSERT INTO team (id, name, claimed_at, setup_completed_at) VALUES (?, ?, ?, ?)',
313
+ ).run(team.id, team.name, team.claimedAt, team.setupCompletedAt);
314
+ this.insertMembership(membership);
315
+ this.prepare(
316
+ 'markWorkspaceClaimClaimed',
317
+ 'UPDATE workspace_claims SET claimed_at = ? WHERE id = ?',
318
+ ).run(team.claimedAt, claimId);
319
+ this.insertAuditEvent(auditEvent);
320
+ });
321
+ }
322
+
323
+ insertMembership(membership) {
324
+ this.prepare(
325
+ 'insertMembership',
326
+ `INSERT INTO memberships (id, email, name, picture, role, joined_at, updated_at)
327
+ VALUES (?, ?, ?, ?, ?, ?, ?)`,
328
+ ).run(
329
+ membership.id,
330
+ membership.email,
331
+ membership.name,
332
+ membership.picture,
333
+ membership.role,
334
+ membership.joinedAt,
335
+ membership.updatedAt,
336
+ );
337
+ }
338
+
339
+ async getMembershipByEmail(email) {
340
+ return rowToMembership(this.prepare(
341
+ 'getMembershipByEmail',
342
+ 'SELECT * FROM memberships WHERE email = ?',
343
+ ).get(email));
344
+ }
345
+
346
+ async getMembershipById(id) {
347
+ return rowToMembership(this.prepare(
348
+ 'getMembershipById',
349
+ 'SELECT * FROM memberships WHERE id = ?',
350
+ ).get(id));
351
+ }
352
+
353
+ async listMemberships() {
354
+ return this.prepare(
355
+ 'listMemberships',
356
+ 'SELECT * FROM memberships ORDER BY role = ? DESC, email ASC',
357
+ ).all(HOSTED_ROLE_ADMIN).map(rowToMembership);
358
+ }
359
+
360
+ async updateMembership(membership) {
361
+ this.prepare(
362
+ 'updateMembership',
363
+ 'UPDATE memberships SET name = ?, picture = ?, role = ?, updated_at = ? WHERE id = ?',
364
+ ).run(membership.name, membership.picture, membership.role, membership.updatedAt, membership.id);
365
+ }
366
+
367
+ async deleteMembership(id) {
368
+ this.prepare('deleteMembership', 'DELETE FROM memberships WHERE id = ?').run(id);
369
+ }
370
+
371
+ async countAdminsExcept(email) {
372
+ const row = this.prepare(
373
+ 'countAdminsExcept',
374
+ 'SELECT COUNT(*) AS count FROM memberships WHERE role = ? AND email != ?',
375
+ ).get(HOSTED_ROLE_ADMIN, email);
376
+ return Number(row?.count ?? 0);
377
+ }
378
+
379
+ async upsertPendingInvitation(invitation) {
380
+ this.prepare(
381
+ 'upsertPendingInvitation',
382
+ `INSERT INTO invitations (
383
+ id, email, role, invited_by_email, invited_by_name, created_at, expires_at, revoked_at, accepted_at, updated_at
384
+ ) VALUES (?, ?, ?, ?, ?, ?, ?, NULL, NULL, ?)
385
+ ON CONFLICT(email) DO UPDATE SET
386
+ id = excluded.id,
387
+ role = excluded.role,
388
+ invited_by_email = excluded.invited_by_email,
389
+ invited_by_name = excluded.invited_by_name,
390
+ created_at = excluded.created_at,
391
+ expires_at = excluded.expires_at,
392
+ revoked_at = NULL,
393
+ accepted_at = NULL,
394
+ updated_at = excluded.updated_at`,
395
+ ).run(
396
+ invitation.id,
397
+ invitation.email,
398
+ invitation.role,
399
+ invitation.invitedByEmail,
400
+ invitation.invitedByName,
401
+ invitation.createdAt,
402
+ invitation.expiresAt,
403
+ invitation.updatedAt,
404
+ );
405
+ }
406
+
407
+ async getInvitationById(id) {
408
+ return rowToInvitation(this.prepare(
409
+ 'getInvitationById',
410
+ 'SELECT * FROM invitations WHERE id = ?',
411
+ ).get(id));
412
+ }
413
+
414
+ async getPendingInvitationByEmail(email, now) {
415
+ return rowToInvitation(this.prepare(
416
+ 'getPendingInvitationByEmail',
417
+ `SELECT * FROM invitations
418
+ WHERE email = ? AND accepted_at IS NULL AND revoked_at IS NULL AND expires_at > ?
419
+ LIMIT 1`,
420
+ ).get(email, now));
421
+ }
422
+
423
+ async listPendingInvitations(now) {
424
+ return this.prepare(
425
+ 'listPendingInvitations',
426
+ `SELECT * FROM invitations
427
+ WHERE accepted_at IS NULL AND revoked_at IS NULL AND expires_at > ?
428
+ ORDER BY created_at DESC`,
429
+ ).all(now).map(rowToInvitation);
430
+ }
431
+
432
+ async updateInvitation(invitation) {
433
+ this.prepare(
434
+ 'updateInvitation',
435
+ `UPDATE invitations
436
+ SET role = ?, revoked_at = ?, accepted_at = ?, updated_at = ?
437
+ WHERE id = ?`,
438
+ ).run(
439
+ invitation.role,
440
+ invitation.revokedAt,
441
+ invitation.acceptedAt,
442
+ invitation.updatedAt,
443
+ invitation.id,
444
+ );
445
+ }
446
+
447
+ async acceptInvitation({ auditEvent, invitation, membership }) {
448
+ this.transaction(() => {
449
+ this.prepare(
450
+ 'acceptInvitationUpdate',
451
+ 'UPDATE invitations SET accepted_at = ?, updated_at = ? WHERE id = ?',
452
+ ).run(invitation.acceptedAt, invitation.updatedAt, invitation.id);
453
+ this.insertMembership(membership);
454
+ this.insertAuditEvent(auditEvent);
455
+ });
456
+ }
457
+
458
+ async createAuditEvent(event) {
459
+ this.insertAuditEvent(event);
460
+ }
461
+
462
+ insertAuditEvent(event) {
463
+ this.prepare(
464
+ 'insertAuditEvent',
465
+ `INSERT INTO audit_events (
466
+ id, type, actor_email, actor_name, target_email, target_role, metadata_json, created_at
467
+ ) VALUES (?, ?, ?, ?, ?, ?, ?, ?)`,
468
+ ).run(
469
+ event.id,
470
+ event.type,
471
+ event.actorEmail,
472
+ event.actorName,
473
+ event.targetEmail,
474
+ event.targetRole,
475
+ JSON.stringify(event.metadata ?? {}),
476
+ event.createdAt,
477
+ );
478
+ }
479
+
480
+ async listAuditEvents() {
481
+ return this.prepare(
482
+ 'listAuditEvents',
483
+ 'SELECT * FROM audit_events ORDER BY created_at DESC',
484
+ ).all().map(rowToAuditEvent);
485
+ }
486
+
487
+ async createOperationalSecurityEvent(event) {
488
+ this.prepare(
489
+ 'insertOperationalSecurityEvent',
490
+ `INSERT INTO operational_security_events (id, type, email, metadata_json, created_at)
491
+ VALUES (?, ?, ?, ?, ?)`,
492
+ ).run(
493
+ event.id,
494
+ event.type,
495
+ event.email,
496
+ JSON.stringify(event.metadata ?? {}),
497
+ event.createdAt,
498
+ );
499
+ }
500
+ }
@@ -1,5 +1,5 @@
1
- import { dirname, resolve } from 'path';
2
- import { mkdir, readFile, rename, rm, stat, writeFile } from 'fs/promises';
1
+ import { dirname, join, resolve } from 'path';
2
+ import { mkdir, readFile, readdir, rename, rm, stat, writeFile } from 'fs/promises';
3
3
 
4
4
  import { resolveVaultFilePath, toVaultRelativePath } from './path-utils.js';
5
5
 
@@ -41,6 +41,10 @@ export class SidecarStore {
41
41
  return resolveSidecarPath(this.vaultDir, filePath, COMMENT_STORAGE_ROOT, '.json');
42
42
  }
43
43
 
44
+ getCommentStorageRootPath() {
45
+ return resolve(this.vaultDir, COMMENT_STORAGE_ROOT);
46
+ }
47
+
44
48
  getSnapshotPath(filePath) {
45
49
  return resolveSidecarPath(this.vaultDir, filePath, YJS_SNAPSHOT_STORAGE_ROOT, '.bin');
46
50
  }
@@ -68,6 +72,53 @@ export class SidecarStore {
68
72
  }
69
73
  }
70
74
 
75
+ async listCommentThreadEntries({ filePaths = null } = {}) {
76
+ const allowedPaths = filePaths ? new Set(filePaths) : null;
77
+ const rootPath = this.getCommentStorageRootPath();
78
+ const entries = [];
79
+
80
+ const visitDirectory = async (absoluteDirectoryPath, relativeDirectoryPath = '') => {
81
+ let dirEntries;
82
+ try {
83
+ dirEntries = await readdir(absoluteDirectoryPath, { withFileTypes: true });
84
+ } catch (error) {
85
+ if (error.code === 'ENOENT') {
86
+ return;
87
+ }
88
+ throw error;
89
+ }
90
+
91
+ for (const entry of dirEntries.sort((left, right) => left.name.localeCompare(right.name))) {
92
+ const relativePath = relativeDirectoryPath
93
+ ? `${relativeDirectoryPath}/${entry.name}`
94
+ : entry.name;
95
+ const absolutePath = join(absoluteDirectoryPath, entry.name);
96
+
97
+ if (entry.isDirectory()) {
98
+ await visitDirectory(absolutePath, relativePath);
99
+ continue;
100
+ }
101
+
102
+ if (!entry.isFile() || !relativePath.endsWith('.json')) {
103
+ continue;
104
+ }
105
+
106
+ const filePath = relativePath.slice(0, -'.json'.length);
107
+ if (allowedPaths && !allowedPaths.has(filePath)) {
108
+ continue;
109
+ }
110
+
111
+ const threads = await this.readCommentThreads(filePath);
112
+ if (threads.length > 0) {
113
+ entries.push({ filePath, threads });
114
+ }
115
+ }
116
+ };
117
+
118
+ await visitDirectory(rootPath);
119
+ return entries.sort((left, right) => left.filePath.localeCompare(right.filePath, undefined, { sensitivity: 'base' }));
120
+ }
121
+
71
122
  async writeCommentThreads(filePath, threads = []) {
72
123
  const absolute = this.getCommentThreadPath(filePath);
73
124
  if (!absolute) {
@@ -7,7 +7,7 @@ import {
7
7
  isPlantUmlFilePath,
8
8
  } from '../../../domain/file-kind.js';
9
9
 
10
- export class VaultContentAdapter {
10
+ export class EditableVaultContentKind {
11
11
  constructor({
12
12
  invalidPathError,
13
13
  kind,
@@ -24,38 +24,38 @@ export class VaultContentAdapter {
24
24
  }
25
25
 
26
26
  const adapters = [
27
- new VaultContentAdapter({
27
+ new EditableVaultContentKind({
28
28
  invalidPathError: 'Invalid file path',
29
29
  kind: 'markdown',
30
30
  matches: isMarkdownFilePath,
31
31
  }),
32
- new VaultContentAdapter({
32
+ new EditableVaultContentKind({
33
33
  invalidPathError: 'Invalid file path — must end in .base',
34
34
  kind: 'base',
35
35
  matches: isBaseFilePath,
36
36
  }),
37
- new VaultContentAdapter({
37
+ new EditableVaultContentKind({
38
38
  invalidPathError: 'Invalid file path — must end in .excalidraw',
39
39
  kind: 'excalidraw',
40
40
  matches: isExcalidrawFilePath,
41
41
  }),
42
- new VaultContentAdapter({
42
+ new EditableVaultContentKind({
43
43
  invalidPathError: 'Invalid file path — must end in .drawio',
44
44
  kind: 'drawio',
45
45
  matches: isDrawioFilePath,
46
46
  }),
47
- new VaultContentAdapter({
47
+ new EditableVaultContentKind({
48
48
  invalidPathError: 'Invalid file path — must end in .mmd or .mermaid',
49
49
  kind: 'mermaid',
50
50
  matches: isMermaidFilePath,
51
51
  }),
52
- new VaultContentAdapter({
52
+ new EditableVaultContentKind({
53
53
  invalidPathError: 'Invalid file path — must end in .puml or .plantuml',
54
54
  kind: 'plantuml',
55
55
  matches: isPlantUmlFilePath,
56
56
  }),
57
57
  ];
58
58
 
59
- export function getVaultContentAdapter(filePath) {
59
+ export function getEditableVaultContentKind(filePath) {
60
60
  return adapters.find((adapter) => adapter.supports(filePath)) ?? null;
61
61
  }