collabmd 0.1.43 → 0.1.45

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 (656) hide show
  1. package/bin/collabmd.js +1 -2
  2. package/dist/client/assets/CodeMirrorEditor-UCMRAMCV-CbSISC1w.js +1 -0
  3. package/dist/client/assets/{abnfDiagram-VRR7QNED-C-CM0mGi.js → abnfDiagram-N423BO3Z-CUMTFJhI.js} +1 -1
  4. package/dist/client/assets/ar-SA-PQUY64WN-xjXgbW6d.js +10 -0
  5. package/dist/client/assets/arc-DgcGdgmL.js +1 -0
  6. package/dist/client/assets/architecture-TIHT7OUA-CsHfPErM.js +1 -0
  7. package/dist/client/assets/architectureDiagram-T3A2C74G-w25m71oV.js +36 -0
  8. package/dist/client/assets/asciiarmor-C_eisQCp.js +1 -0
  9. package/dist/client/assets/{asn1-Dr8qZg38.js → asn1-DCl_8MCW.js} +1 -1
  10. package/dist/client/assets/{asterisk-Bja0s6e1.js → asterisk-BEn0Cwpx.js} +1 -1
  11. package/dist/client/assets/az-AZ-OXJXL76K-4JkO4Pca.js +1 -0
  12. package/dist/client/assets/bg-BG-W2GKIJDF-DnkH_o81.js +5 -0
  13. package/dist/client/assets/{blockDiagram-677ZJIJ3-BLomrZyt.js → blockDiagram-VBNYF7ZC-CipJt9Jl.js} +5 -5
  14. package/dist/client/assets/bn-BD-TGL7M4PJ-CG4JkmtP.js +3 -0
  15. package/dist/client/assets/bn-IN-BKETKYEH-CG4JkmtP.js +3 -0
  16. package/dist/client/assets/browser-utils-CKtI_rZl.js +1 -0
  17. package/dist/client/assets/c4Diagram-5PPSVZJV-B5ktVx6g.js +10 -0
  18. package/dist/client/assets/ca-ES-LD5SCRVV-U6_TVMX9.js +8 -0
  19. package/dist/client/assets/channel-4Jkmq93I.js +1 -0
  20. package/dist/client/assets/{chunk-32BRIVSS-BD6LQmvI.js → chunk-2GRJ4B5K-DhnlUv3F.js} +1 -1
  21. package/dist/client/assets/chunk-3NCLNEKW-Y2Jf_LI-.js +1 -0
  22. package/dist/client/assets/{chunk-HOUHSVGY-DX1huN9x.js → chunk-4I5QYGJK-CCB2YcIH.js} +1 -1
  23. package/dist/client/assets/{chunk-5FCAYU7R-DNtJmW0j.js → chunk-5FCAYU7R-Dh5nylU8.js} +1 -1
  24. package/dist/client/assets/{chunk-5HE753X5-o8-OCfIL.js → chunk-5HE753X5-Bw-yg4kO.js} +1 -1
  25. package/dist/client/assets/{chunk-5JV3BV7I-DKfYBAeY.js → chunk-5JV3BV7I-Cy5pj3QY.js} +1 -1
  26. package/dist/client/assets/{chunk-EX3LRPZG-DNVm3Wj1.js → chunk-5RXB4S5H-BWrwFqMI.js} +3 -3
  27. package/dist/client/assets/{chunk-5TONJI2A-DOX2waSJ.js → chunk-5TONJI2A-DQOY3q1H.js} +1 -1
  28. package/dist/client/assets/{chunk-MOJQB5TN-BEEcDvmL.js → chunk-6Q2QTUOP-CPlWzBtc.js} +1 -1
  29. package/dist/client/assets/chunk-7XWMRXBY-CfMzEq80.js +1 -0
  30. package/dist/client/assets/chunk-7Z6QIM7H-BP9Pdsm9.js +10 -0
  31. package/dist/client/assets/{chunk-BIQX33UG-CuPbkyWp.js → chunk-BIQX33UG-DZEsGuSn.js} +1 -1
  32. package/dist/client/assets/{chunk-CQNSW5MT-BbEh_krl.js → chunk-CQNSW5MT-B8S09OIh.js} +1 -1
  33. package/dist/client/assets/{chunk-CYSBUYHQ-CbOq7Rc1.js → chunk-CYSBUYHQ-C1Rf4art.js} +1 -1
  34. package/dist/client/assets/{chunk-EMLP6XTP-BoneA0Uo.js → chunk-EMLP6XTP-RLD4nXpI.js} +1 -1
  35. package/dist/client/assets/chunk-ERSWUTIN-ME9RVNel.js +41 -0
  36. package/dist/client/assets/{chunk-V7JOEXUC-Bo_5WqHt.js → chunk-GF5L2VYU-DkJpO7ff.js} +3 -3
  37. package/dist/client/assets/chunk-I66GZJ75-CVFiiffQ.js +127 -0
  38. package/dist/client/assets/{chunk-FWX5IMBZ-Ch9_j2qF.js → chunk-J7OUQ5F2-4CEb7pvH.js} +2 -2
  39. package/dist/client/assets/{chunk-JG7HCLWE-Dk4_aECj.js → chunk-JG7HCLWE-BYfiSaVt.js} +1 -1
  40. package/dist/client/assets/{chunk-PUDLZKDR-C-JwZaMh.js → chunk-JQJVKLGR-cx8X_24v.js} +5 -5
  41. package/dist/client/assets/{chunk-VR4S4FIN-uXjSaaA7.js → chunk-KBJHAD2P-CB_3zWUf.js} +1 -1
  42. package/dist/client/assets/{chunk-KEIR6QF5-Dj-OpFgW.js → chunk-KEIR6QF5-BICK3FdT.js} +31 -31
  43. package/dist/client/assets/{chunk-MOZMSUNE-BgA8jCvb.js → chunk-MOZMSUNE-XVucA-n6.js} +1 -1
  44. package/dist/client/assets/chunk-NSK5VX7P-TLH37VXI.js +2 -0
  45. package/dist/client/assets/{chunk-OSBZ3O6U-CX9EQ5t2.js → chunk-OSBZ3O6U-CrKZOUOr.js} +1 -1
  46. package/dist/client/assets/{chunk-QBLGF6JB-C9zGMqvP.js → chunk-QBLGF6JB-CxAyS2mW.js} +1 -1
  47. package/dist/client/assets/{chunk-ZGVPDNZ5-Bmet6b46.js → chunk-QR6OTTB3-CDAA_5Ib.js} +3 -3
  48. package/dist/client/assets/{chunk-R7FJI6CG-BpBhcF6R.js → chunk-R7FJI6CG-Cnn3gE-Y.js} +1 -1
  49. package/dist/client/assets/chunk-RYQCIY6F-D-a0zH8K.js +1 -0
  50. package/dist/client/assets/{chunk-SRAX5OIU-Bpn6XoyU.js → chunk-SRAX5OIU-KFQikY-4.js} +1 -1
  51. package/dist/client/assets/{chunk-U6XO7XAA-CR0BSRFR.js → chunk-U6XO7XAA-BFxjP5U3.js} +1 -1
  52. package/dist/client/assets/chunk-UBXNYLIW-Bhk-PbFK.js +1 -0
  53. package/dist/client/assets/{chunk-C7G6YPKG-C97QUAKv.js → chunk-W5SLKNZC-BdNSCxZ9.js} +1 -1
  54. package/dist/client/assets/{chunk-Q4XR5HBZ-Dyewsidf.js → chunk-WRU74C26-h6_XkD3_.js} +7 -7
  55. package/dist/client/assets/{chunk-XXDRQBXY-Bq6zMMOx.js → chunk-XXDRQBXY-BvKO0v-W.js} +1 -1
  56. package/dist/client/assets/{chunk-Z24UKHUO-BQ6-bK37.js → chunk-YGJVY4SA-CjSe7Bx7.js} +5 -5
  57. package/dist/client/assets/{chunk-YOTPTUD7-CjHV8V6f.js → chunk-YOTPTUD7-D0vRKqYp.js} +1 -1
  58. package/dist/client/assets/{chunk-Z5NKEFVG-DC2Lcs-4.js → chunk-Z5NKEFVG-q6fHH75m.js} +2 -2
  59. package/dist/client/assets/{chunk-ZIRB5QZD-C6fEPe3t.js → chunk-ZIRB5QZD-O39ZBUk3.js} +5 -5
  60. package/dist/client/assets/classDiagram-JCYQIIEL-L7lsyW_w.js +1 -0
  61. package/dist/client/assets/classDiagram-v2-OCEON4UE-L7lsyW_w.js +1 -0
  62. package/dist/client/assets/clike-D_6L3tnO.js +1 -0
  63. package/dist/client/assets/cmake-84nbDH0I.js +1 -0
  64. package/dist/client/assets/coffeescript-De_zI4J0.js +1 -0
  65. package/dist/client/assets/{room-BhC-3iml.js → comment-threads-DDegmaFO.js} +2 -2
  66. package/dist/client/assets/commonlisp-DgAKBe0r.js +1 -0
  67. package/dist/client/assets/cose-bilkent-JH36ORCC-Cm_QF_yb.js +1 -0
  68. package/dist/client/assets/crystal-Bsdphhtm.js +1 -0
  69. package/dist/client/assets/cs-CZ-OFPU5DBV-BmFAIhqX.js +7 -0
  70. package/dist/client/assets/css-CnaYoQib.js +1 -0
  71. package/dist/client/assets/cynefin-VYW2F7L2-Ds2Fw2Y0.js +1 -0
  72. package/dist/client/assets/cynefinDiagram-MW4NZA55-CJxXfJek.js +62 -0
  73. package/dist/client/assets/cytoscape.esm-B-NFISlW.js +321 -0
  74. package/dist/client/assets/{d-BhMjBjQP.js → d-DWkQyNnU.js} +1 -1
  75. package/dist/client/assets/da-DK-FRDJFYWF-H387Jw8B.js +2 -0
  76. package/dist/client/assets/dagre-Buvkdvvj.js +1 -0
  77. package/dist/client/assets/{dagre-VKFMJZFB-CSQjHsP2.js → dagre-VZM6K2ZE-L1xArOGs.js} +2 -2
  78. package/dist/client/assets/de-CH-ZG7H3QK3-C_groygo.js +11 -0
  79. package/dist/client/assets/de-DE-SIJYH4IH-C_groygo.js +11 -0
  80. package/dist/client/assets/defaultLocale-BFoDCU3G.js +1 -0
  81. package/dist/client/assets/{diagram-OA4YK3LP-ruJmRhl8.js → diagram-7IWD3JNH-B2d2Bm15.js} +1 -1
  82. package/dist/client/assets/{diagram-FQU43EPY-D0RPbiE5.js → diagram-B4RE2ZJO-NP4UAwjR.js} +1 -1
  83. package/dist/client/assets/{diagram-NH7WQ7WH-CaTayrXM.js → diagram-LBJQPF4R-D1FJQV8t.js} +1 -1
  84. package/dist/client/assets/{diagram-G47NLZAW-XriksZQN.js → diagram-Q27KOJAE-DylDuwor.js} +13 -13
  85. package/dist/client/assets/diagram-UB23O5K3-DJcKCwv9.js +41 -0
  86. package/dist/client/assets/dist-3bgCp7iY.js +1 -0
  87. package/dist/client/assets/dist-BH87JoHx.js +11 -0
  88. package/dist/client/assets/{dist-BUxzPC-Q.js → dist-BIkPRZO7.js} +3 -3
  89. package/dist/client/assets/{dist-qx0Iv9vM.js → dist-B_J_HbC0.js} +1 -1
  90. package/dist/client/assets/dist-BqCsFpx4.js +1 -0
  91. package/dist/client/assets/dist-C11hHqv_.js +13 -0
  92. package/dist/client/assets/{dist-YCtFk_v0.js → dist-C2JHCt8U.js} +1 -1
  93. package/dist/client/assets/{dist-D3Tmtejd.js → dist-CYZmbokb.js} +2 -2
  94. package/dist/client/assets/dist-CZjTtmTu.js +1 -0
  95. package/dist/client/assets/{dist-C__bPRpd.js → dist-Cig4Ov_X.js} +1 -1
  96. package/dist/client/assets/{dist-DXTgEdvE.js → dist-CnL7Y2sM.js} +1 -1
  97. package/dist/client/assets/dist-CqQEC8gR.js +1 -0
  98. package/dist/client/assets/{dist-CQTo4Y46.js → dist-D2AQ-76g.js} +1 -1
  99. package/dist/client/assets/dist-D4Rzqod1.js +1 -0
  100. package/dist/client/assets/dist-D5sn-mwk.js +9 -0
  101. package/dist/client/assets/dist-D7G-n87v.js +1 -0
  102. package/dist/client/assets/dist-DCzuX1AF.js +1 -0
  103. package/dist/client/assets/dist-DGb27Dl6.js +1 -0
  104. package/dist/client/assets/{dist-CHJCI2AN.js → dist-DK5Gs2wa.js} +1 -1
  105. package/dist/client/assets/dist-DRqOrNgN.js +1 -0
  106. package/dist/client/assets/{dist-B0NFuQC3.js → dist-DetkMS_4.js} +1 -1
  107. package/dist/client/assets/dist-DhLvC8DS.js +2 -0
  108. package/dist/client/assets/{dist-D1W8XQvM.js → dist-Dp6FVkQ1.js} +1 -1
  109. package/dist/client/assets/{dist-D4MWz_rC.js → dist-Drp8uu5J.js} +1 -1
  110. package/dist/client/assets/dist-DtbjNB28.js +1 -0
  111. package/dist/client/assets/dist-DyrYcvpo2.js +1 -0
  112. package/dist/client/assets/dist-GrygD2zE.js +1 -0
  113. package/dist/client/assets/{dist-CzNyYE-S.js → dist-HmEpWUow.js} +1 -1
  114. package/dist/client/assets/{dist-D7-13adP.js → dist-JYEDRrPT.js} +1 -1
  115. package/dist/client/assets/dist-MvcV4190.js +1 -0
  116. package/dist/client/assets/{dist-gGmuzNio.js → dist-RTa81Km7.js} +1 -1
  117. package/dist/client/assets/{dockerfile-BLkNEvjs.js → dockerfile-DJkHQgkl.js} +1 -1
  118. package/dist/client/assets/drawio-editor-ClE8jpoG.js +9 -0
  119. package/dist/client/assets/drawioEditor-CXaTM9Ds.js +2 -0
  120. package/dist/client/assets/{dylan-C6jEEEk-.js → dylan-BCDoL_-p.js} +1 -1
  121. package/dist/client/assets/{ebnfDiagram-CCIWWBDH-exNgBUy6.js → ebnfDiagram-BXEA7PRR-nw0wmA6y.js} +1 -1
  122. package/dist/client/assets/{ecl-BSZaIHnp.js → ecl-BVIeWmwY.js} +1 -1
  123. package/dist/client/assets/editor-session-GTwZS6Df.js +16 -0
  124. package/dist/client/assets/el-GR-IEE2CGI2-BkT6YT54.js +7 -0
  125. package/dist/client/assets/embedded-editor-base-CiNEc8vy.css +1 -0
  126. package/dist/client/assets/en-7NFCYGKX-BrgYZAEe.js +1 -0
  127. package/dist/client/assets/{erDiagram-Q63AITRT-CoYS49kY.js → erDiagram-JOGREHBK-cYUpEKpf.js} +3 -3
  128. package/dist/client/assets/{erlang-DaB2Rkuy.js → erlang-BV0c4Hdn.js} +1 -1
  129. package/dist/client/assets/es-ES-TVVPWKV5-CpPKJXTM.js +12 -0
  130. package/dist/client/assets/eu-ES-CGBMFQDT-Bu3N2493.js +8 -0
  131. package/dist/client/assets/eventmodeling-45OFAUF4-CLEiVx5s.js +1 -0
  132. package/dist/client/assets/excalidraw-editor-BZVM81BO.js +9 -0
  133. package/dist/client/assets/excalidraw-editor-CyGwOhLz.css +1 -0
  134. package/dist/client/assets/excalidraw-scene-C8n9CHsK.js +176 -0
  135. package/dist/client/assets/excalidrawEditor-DxJanCze.js +2 -0
  136. package/dist/client/assets/export-page-CUfws2T-.js +39 -0
  137. package/dist/client/assets/exportDocument-BCuxqXDY.js +2 -0
  138. package/dist/client/assets/exportDocument-DV-OX74E.css +1 -0
  139. package/dist/client/assets/fa-IR-IE6XAPR4-BEvLCORD.js +9 -0
  140. package/dist/client/assets/{factor-D7LVTn2l.js → factor-LKH5gN8L.js} +1 -1
  141. package/dist/client/assets/fi-FI-P7TKNHRM-DI0q8iSX.js +6 -0
  142. package/dist/client/assets/flowDiagram-UKHOOZJN-D0ypP0Ez.js +1 -0
  143. package/dist/client/assets/fr-FR-QI2XZNT7-y8kXd8LA.js +12 -0
  144. package/dist/client/assets/ganttDiagram-PKOTCBZU-BnM97BCT.js +292 -0
  145. package/dist/client/assets/gitGraph-TEB2WS4Q-CZFBqwW-.js +1 -0
  146. package/dist/client/assets/{gitGraphDiagram-IHSO6WYX-x3NetpXU.js → gitGraphDiagram-DS77QQ5N-BQpQhjuN.js} +3 -3
  147. package/dist/client/assets/gl-ES-TLYCNOZZ-Br-Fhff-.js +6 -0
  148. package/dist/client/assets/groovy-CUpZ7dEl.js +1 -0
  149. package/dist/client/assets/he-IL-ZX43XLGP-qKQq6V9X.js +9 -0
  150. package/dist/client/assets/hi-IN-UTYRMTUF-DOUcwrDO.js +3 -0
  151. package/dist/client/assets/hu-HU-AJOSEBW6-FqTyvHlD.js +3 -0
  152. package/dist/client/assets/id-ID-ETLTVG6C-CQqh3CLS.js +8 -0
  153. package/dist/client/assets/image-QXRYHUNP-lfTHE3bb.js +1 -0
  154. package/dist/client/assets/image-blob-reduce.esm-Dj7YBvMv.js +2 -0
  155. package/dist/client/assets/index-C3YnUgMD.css +1 -0
  156. package/dist/client/assets/index-D2wXraJ1.js +2 -0
  157. package/dist/client/assets/info-DKCQHKI2--1InqQeT.js +1 -0
  158. package/dist/client/assets/{infoDiagram-FWYZ7A6U-DyfGrH8z.js → infoDiagram-6WML65LV-DYB8HCDQ.js} +1 -1
  159. package/dist/client/assets/init-C-OQMol4.js +1 -0
  160. package/dist/client/assets/{ishikawaDiagram-FXEZZL3T-BOts527_.js → ishikawaDiagram-WSZJBQD7-Coz_P3t6.js} +2 -2
  161. package/dist/client/assets/it-IT-B4B6TP6L-V-yK3SZz.js +12 -0
  162. package/dist/client/assets/ja-JP-IYKVURR5-BQKBXRpX.js +12 -0
  163. package/dist/client/assets/javascript-BWjar7HY.js +1 -0
  164. package/dist/client/assets/javascript-D-FtdkNC.js +1 -0
  165. package/dist/client/assets/{journeyDiagram-5HDEW3XC-DF37OVrZ.js → journeyDiagram-NVQOT4AX-B6edChce.js} +3 -3
  166. package/dist/client/assets/{react-lCSYwAWP.js → jsx-runtime-BpzPEenQ.js} +1 -1
  167. package/dist/client/assets/kaa-SE2BUIKX-CZ5kfwPg.js +1 -0
  168. package/dist/client/assets/kab-KAB-Y3GLKXLR-Do7GWfuN.js +4 -0
  169. package/dist/client/assets/{kanban-definition-HUTT4EX6-nCjbm1T6.js → kanban-definition-27J2QSJJ-BFd9-cLc.js} +3 -3
  170. package/dist/client/assets/{katex-B7rAX3Vi.js → katex-CXMH3UgJ.js} +3 -3
  171. package/dist/client/assets/kk-KZ-ABWUFVOH-BpqVciQz.js +1 -0
  172. package/dist/client/assets/{km-KH-PBSJLZ2M-Bh1DsarT.js → km-KH-PCWDKPHP-DSmy5shj.js} +3 -3
  173. package/dist/client/assets/ko-KR-7JQDXKGM-N42lep78.js +5 -0
  174. package/dist/client/assets/ku-TR-NAH2Q5B7-K8LLl9fk.js +6 -0
  175. package/dist/client/assets/{line-h44YiLOQ.js → line-B_S_S8kV.js} +1 -1
  176. package/dist/client/assets/linear-n-3HSMUF.js +1 -0
  177. package/dist/client/assets/lt-LT-VQFYRSNQ-BmOd0ALn.js +3 -0
  178. package/dist/client/assets/lv-LV-T62VSYUM-B22WdPhp.js +4 -0
  179. package/dist/client/assets/main-DtiGz7uI.js +795 -0
  180. package/dist/client/assets/{mermaid-parser.core-ygm3cZ_w.js → mermaid-parser.core-CUVdebAV.js} +2 -2
  181. package/dist/client/assets/mermaid.core-DN-lF51U.js +11 -0
  182. package/dist/client/assets/{mindmap-definition-LN4V7U3C-CTpHMYFE.js → mindmap-definition-FAOFIHXS-C9PQ38Al.js} +3 -3
  183. package/dist/client/assets/modulepreload-polyfill-P2Xu9kJm.js +1 -0
  184. package/dist/client/assets/mr-IN-V4FHLCJE-XX069tpm.js +9 -0
  185. package/dist/client/assets/{mumps-CW_TBmxz.js → mumps-BSzj6Xyz.js} +1 -1
  186. package/dist/client/assets/my-MM-E3SQ6E54-cst_-5SB.js +1 -0
  187. package/dist/client/assets/nb-NO-MLNOFN5H-Bu2URWko.js +8 -0
  188. package/dist/client/assets/nl-NL-D5L3ZV4M-BqrV0btt.js +13 -0
  189. package/dist/client/assets/nn-NO-NNHDGPKB-DK-xZaWM.js +4 -0
  190. package/dist/client/assets/{nsis-AQ_alPln.js → nsis-CfSuhXs5.js} +1 -1
  191. package/dist/client/assets/{ntriples-d28e9m0E.js → ntriples-B9h1VB_g.js} +1 -1
  192. package/dist/client/assets/oc-FR-DWCRF55G-BZ5Po5R6.js +4 -0
  193. package/dist/client/assets/{ordinal-hYBb2elL.js → ordinal-BDEzSJ7C.js} +1 -1
  194. package/dist/client/assets/pa-IN-3JSAY44M-BZQSjKrS.js +4 -0
  195. package/dist/client/assets/packet-7NZHBO7P-BGMXB0XL.js +1 -0
  196. package/dist/client/assets/path-fybaL0A-.js +1 -0
  197. package/dist/client/assets/{pegDiagram-2B236MQR-Bq9qITsk.js → pegDiagram-VL7TDLO6-BMZUrSaU.js} +1 -1
  198. package/dist/client/assets/percentages-ETZPVQEE-DFxFqXgH.js +1 -0
  199. package/dist/client/assets/perl-BkSkiI9m.js +1 -0
  200. package/dist/client/assets/{pica-D0pwGKw7.js → pica-xkWDouSg.js} +2 -2
  201. package/dist/client/assets/pie-RZYD4A2V-DgYg3tCt.js +1 -0
  202. package/dist/client/assets/{pieDiagram-ENE6RG2P--ax2FUc8.js → pieDiagram-7S7Q4E2Y-h8kbCL9o.js} +2 -2
  203. package/dist/client/assets/{pl-PL-EERMMCTN-dIzrbxJt.js → pl-PL-ACURYKP3-qcEOSfCk.js} +4 -4
  204. package/dist/client/assets/{powershell-CzG71I4L.js → powershell-BcIto6Sf.js} +1 -1
  205. package/dist/client/assets/preview-diagram-utils-txBCoW8d.js +1 -0
  206. package/dist/client/assets/preview-render-compiler-BSaQO_p3.js +35 -0
  207. package/dist/client/assets/preview-render-compiler-csGM5ZFz.js +1 -0
  208. package/dist/client/assets/preview-render-profile-BZzGSg6K.js +22 -0
  209. package/dist/client/assets/preview-render-worker-B42LWvrD.js +60 -0
  210. package/dist/client/assets/pt-BR-LOX7MLGD-DLueHSyZ.js +10 -0
  211. package/dist/client/assets/pt-PT-CZ2U2RFQ-BJ-GAEm6.js +12 -0
  212. package/dist/client/assets/{pug-Ck0YjsGM.js → pug-Wky5Dnfy.js} +1 -1
  213. package/dist/client/assets/puppet-BZyAS7I4.js +1 -0
  214. package/dist/client/assets/python-B_1Jd8HM.js +1 -0
  215. package/dist/client/assets/{quadrantDiagram-ABIIQ3AL-f0PUv7DH.js → quadrantDiagram-CIZ2JOQS-CkElyfMi.js} +2 -2
  216. package/dist/client/assets/quick-switcher-controller-shW_6vPY.js +12 -0
  217. package/dist/client/assets/r-CxDmU1I4.js +1 -0
  218. package/dist/client/assets/radar-I7S5WNFK-Ag-zp_Rq.js +1 -0
  219. package/dist/client/assets/railroad-3IZDKUUU-aibJDIDV.js +1 -0
  220. package/dist/client/assets/railroad-abnf-AHOZXSZD-BBMEuvIl.js +1 -0
  221. package/dist/client/assets/railroad-ebnf-EBAXGLYW-Be1nseej.js +1 -0
  222. package/dist/client/assets/railroad-peg-LSFZ7HO6-DIvD-Eyb.js +1 -0
  223. package/dist/client/assets/{railroadDiagram-RFXS5EU6-CZD_9g-4.js → railroadDiagram-AXF67PYL-c75gnikD.js} +1 -1
  224. package/dist/client/assets/{requirementDiagram-TGXJPOKE-C4Jwr3TE.js → requirementDiagram-LRYGKXZP-mNxKLuHS.js} +2 -2
  225. package/dist/client/assets/ro-RO-2HECL2X6-CJUvKAf0.js +12 -0
  226. package/dist/client/assets/rolldown-runtime-Dd_uD5pT.js +1 -0
  227. package/dist/client/assets/room-CQLoqtMo.js +1 -0
  228. package/dist/client/assets/{rough.esm-CSKSodPl.js → rough.esm-Dy-Kn_BL.js} +1 -1
  229. package/dist/client/assets/ru-RU-HAYNXO46-BWSlvTrt.js +10 -0
  230. package/dist/client/assets/ruby-BjXV7-Qa.js +1 -0
  231. package/dist/client/assets/runtime-config-DSGmGE9V.js +1 -0
  232. package/dist/client/assets/{sankeyDiagram-HTMAVEWB-B2B2mdB6.js → sankeyDiagram-W5VNT64P-0OhplksI.js} +2 -2
  233. package/dist/client/assets/{scheme-tChLYBuY.js → scheme-D9qYN0V5.js} +1 -1
  234. package/dist/client/assets/sequenceDiagram-SI44F4Z6-BJ_yAocC.js +162 -0
  235. package/dist/client/assets/{shell-Du5Qg9im.js → shell-DwuoZtxw.js} +1 -1
  236. package/dist/client/assets/si-LK-W5KNS4H6-DGGCsn7k.js +1 -0
  237. package/dist/client/assets/{simple-mode-DRpGK0lJ.js → simple-mode-DXiLM1-G.js} +1 -1
  238. package/dist/client/assets/sk-SK-7K2CFGDV-CY4uTYgQ.js +7 -0
  239. package/dist/client/assets/sl-SI-OXV2QZWW-2-weqaBY.js +6 -0
  240. package/dist/client/assets/sql-DuQMFDvy.js +1 -0
  241. package/dist/client/assets/src-oBChb5qS.js +1 -0
  242. package/dist/client/assets/{stateDiagram-2N3HPSRC-B1niwAq-.js → stateDiagram-OKZ733FA-Cc83O86s.js} +1 -1
  243. package/dist/client/assets/stateDiagram-v2-UEYNNEHI-B1-BufUk.js +1 -0
  244. package/dist/client/assets/{stex-sDrdk2BW.js → stex-DNzd62Q_.js} +1 -1
  245. package/dist/client/assets/{stylus-DLLZ8dgm.js → stylus-BOVgKnng.js} +1 -1
  246. package/dist/client/assets/subset-shared.chunk-BXlA-9CO.js +1 -0
  247. package/dist/client/assets/{subset-worker.chunk-Cuw2UvhD.js → subset-worker.chunk-CoaGye2U.js} +1 -1
  248. package/dist/client/assets/sv-SE-JTOBZRGL-9-IUtVkO.js +12 -0
  249. package/dist/client/assets/swimlanes-SLNWSIFB-oVTWEJIj.js +2 -0
  250. package/dist/client/assets/swimlanesDiagram-ULZ7WXOC-C5OTVwEu.js +8 -0
  251. package/dist/client/assets/ta-IN-KFAVKXGT-gHO6Q_DH.js +6 -0
  252. package/dist/client/assets/{textile-CyzeGT9J.js → textile-C4jVoHG1.js} +1 -1
  253. package/dist/client/assets/th-TH-VDMSCPDL-BvJuw6PJ.js +1 -0
  254. package/dist/client/assets/tiki-AK6FwT8q.js +1 -0
  255. package/dist/client/assets/timeline-definition-Z64GVDOM-BWDAGTHz.js +120 -0
  256. package/dist/client/assets/toml-BPTmHmyx.js +1 -0
  257. package/dist/client/assets/tr-TR-CEZ6GX45-CG6UU3Su.js +4 -0
  258. package/dist/client/assets/treeView-QDETBFTQ-uHZ-3Fz8.js +1 -0
  259. package/dist/client/assets/treemap-6X3UGDF4-BnUKyy3l.js +1 -0
  260. package/dist/client/assets/{ttcn-BePYh-hG.js → ttcn-PPSTk1ow.js} +1 -1
  261. package/dist/client/assets/{ttcn-cfg-CY0aot7Q.js → ttcn-cfg-2b4Gb5sE.js} +1 -1
  262. package/dist/client/assets/uk-UA-Q3H3OXQC-CSuIg_DY.js +6 -0
  263. package/dist/client/assets/uz-UZ-NGCSWWPX-mom7rxSP.js +1 -0
  264. package/dist/client/assets/vault-api-client-C6bcGwy-.js +5 -0
  265. package/dist/client/assets/vault-utils-wdQ0RNR9.js +1 -0
  266. package/dist/client/assets/{vennDiagram-L72KCM5P-DPQ9kbN2.js → vennDiagram-T6HMQDX7-LOSsnlMB.js} +3 -3
  267. package/dist/client/assets/{verilog-BKSQ5RMB.js → verilog-7LoJAqYT.js} +1 -1
  268. package/dist/client/assets/{vhdl-CBDDcIJ_.js → vhdl-kS471soi.js} +1 -1
  269. package/dist/client/assets/vi-VN-P3NDEVPS-BB0Fu9ck.js +7 -0
  270. package/dist/client/assets/wardley-OPB4EBWU-Da7TLC2F.js +1 -0
  271. package/dist/client/assets/{wardleyDiagram-EHGQE667-5VW6_Csg.js → wardleyDiagram-T6FBY63Y-BxII3foY.js} +35 -35
  272. package/dist/client/assets/{xquery-Cda5K8Gy.js → xquery-BKJx4mf9.js} +1 -1
  273. package/dist/client/assets/{xychartDiagram-FW5EYKEG-Bj0UwltS.js → xychartDiagram-ELKLHX3M-B-pTEjju.js} +4 -4
  274. package/dist/client/assets/yjs-provider-reset-guard-DE0vINDP.js +4 -0
  275. package/dist/client/assets/z80-Co3PbHdE.js +1 -0
  276. package/dist/client/assets/zh-CN-SS3O57GA-Bj8wsiMe.js +11 -0
  277. package/dist/client/assets/zh-HK-LWJT3VCF-DOTquTCh.js +1 -0
  278. package/dist/client/assets/zh-TW-VJXC72RT-B48PRo-l.js +13 -0
  279. package/dist/client/drawio-editor.html +3 -2
  280. package/dist/client/excalidraw-editor.html +3 -2
  281. package/dist/client/export-document.html +4 -3
  282. package/dist/client/index.html +725 -4
  283. package/package.json +21 -24
  284. package/src/client/app/drawio-editor-entry.js +0 -3
  285. package/src/client/app/drawio-editor.html +1 -0
  286. package/src/client/app/excalidraw-editor-entry.js +0 -3
  287. package/src/client/app/excalidraw-editor.html +1 -0
  288. package/src/client/app/export-document-entry.js +0 -3
  289. package/src/client/app/export-document.html +1 -0
  290. package/src/client/app/index.html +722 -1
  291. package/src/client/app/main-entry.js +0 -7
  292. package/src/client/application/app-shell/chat-feature.js +180 -124
  293. package/src/client/application/app-shell/comments-feature.js +1 -1
  294. package/src/client/application/app-shell/git-feature.js +7 -17
  295. package/src/client/application/app-shell/presence-feature.js +16 -10
  296. package/src/client/application/app-shell/ui-feature-shell.js +46 -15
  297. package/src/client/application/app-shell/ui-feature-sidebar.js +74 -1
  298. package/src/client/application/app-shell/ui-feature-tab-activity.js +2 -2
  299. package/src/client/application/app-shell/ui-feature-toolbar.js +1 -8
  300. package/src/client/application/app-shell/workspace-feature.js +22 -83
  301. package/src/client/application/app-shell-elements.js +7 -1
  302. package/src/client/application/diagram-chrome.js +284 -171
  303. package/src/client/application/diagram-preview-export.js +10 -55
  304. package/src/client/application/diagram-preview-hydrator.js +218 -41
  305. package/src/client/application/markdown-frontmatter.js +0 -2
  306. package/src/client/application/mermaid-preview-hydrator.js +46 -27
  307. package/src/client/application/plantuml-preview-hydrator.js +33 -19
  308. package/src/client/application/preview-diagram-utils.js +96 -58
  309. package/src/client/application/preview-render-compiler.js +6 -3
  310. package/src/client/application/preview-render-profile.js +9 -1
  311. package/src/client/application/preview-renderer.js +32 -166
  312. package/src/client/application/quick-switcher-loader.js +3 -1
  313. package/src/client/application/wiki-link-file-controller.js +2 -2
  314. package/src/client/application/workspace-coordinator.js +76 -54
  315. package/src/client/application/workspace-preview-controller.js +0 -3
  316. package/src/client/application/workspace-route-controller.js +31 -1
  317. package/src/client/bootstrap/collabmd-app-shell.js +286 -169
  318. package/src/client/browser-utils.js +77 -0
  319. package/src/client/domain/excalidraw-api-scene-sync.js +7 -3
  320. package/src/client/domain/excalidraw-collaboration.js +1 -7
  321. package/src/client/domain/excalidraw-diagnostics.js +111 -0
  322. package/src/client/domain/excalidraw-scene.js +2 -3
  323. package/src/client/domain/room.js +40 -2
  324. package/src/client/domain/vault-paths.js +14 -0
  325. package/src/client/domain/vault-utils.js +0 -64
  326. package/src/client/excalidraw-editor.js +250 -44
  327. package/src/client/export/export-pipeline.js +12 -43
  328. package/src/client/infrastructure/api-client-utils.js +23 -0
  329. package/src/client/infrastructure/app-version-monitor.js +0 -1
  330. package/src/client/infrastructure/auth-client.js +4 -10
  331. package/src/client/infrastructure/browser-notification-port.js +30 -21
  332. package/src/client/infrastructure/browser-preferences-port.js +55 -43
  333. package/src/client/infrastructure/editor-view-adapter.js +87 -3
  334. package/src/client/infrastructure/excalidraw-room-client.js +115 -16
  335. package/src/client/infrastructure/git-api-client.js +9 -32
  336. package/src/client/infrastructure/lobby-presence.js +1 -0
  337. package/src/client/infrastructure/vault-api-client.js +31 -56
  338. package/src/client/infrastructure/workspace-sync-client.js +13 -1
  339. package/src/client/presentation/bases-preview-controller.js +6 -22
  340. package/src/client/presentation/comment-overview-controller.js +21 -68
  341. package/src/client/presentation/comment-ui/comment-ui-card.js +22 -16
  342. package/src/client/presentation/comment-ui/comment-ui-layout.js +256 -179
  343. package/src/client/presentation/comment-ui/comment-ui-render.js +33 -45
  344. package/src/client/presentation/comment-ui/comment-ui-shared.js +151 -19
  345. package/src/client/presentation/comment-ui/comment-ui-state.js +3 -0
  346. package/src/client/presentation/comment-ui-controller.js +21 -1
  347. package/src/client/presentation/components/ui/button.js +0 -25
  348. package/src/client/presentation/components/ui/class-names.js +8 -27
  349. package/src/client/presentation/drawio-embed-controller.js +8 -33
  350. package/src/client/presentation/excalidraw-embed-controller.js +50 -43
  351. package/src/client/presentation/file-action-controller.js +40 -25
  352. package/src/client/presentation/file-explorer-controller.js +34 -5
  353. package/src/client/presentation/file-explorer-view.js +53 -22
  354. package/src/client/presentation/file-history-view-controller.js +3 -12
  355. package/src/client/presentation/file-tree-state.js +10 -4
  356. package/src/client/presentation/git-diff-view-controller.js +8 -17
  357. package/src/client/presentation/git-panel-controller.js +3 -12
  358. package/src/client/presentation/quick-switcher-controller.js +245 -77
  359. package/src/client/presentation/quick-switcher-text-search.js +2 -2
  360. package/src/client/presentation/scroll-sync-controller.js +5 -30
  361. package/src/client/presentation/toast-controller.js +3 -0
  362. package/src/client/styles/components/feedback.css +6 -0
  363. package/src/client/styles/features/collaboration-chat.css +49 -53
  364. package/src/client/styles/features/collaboration-presence.css +9 -7
  365. package/src/client/styles/features/comment-card.css +33 -11
  366. package/src/client/styles/features/comment-overlays.css +15 -4
  367. package/src/client/styles/features/comment-overview.css +44 -21
  368. package/src/client/styles/features/comments-drawer.css +2 -100
  369. package/src/client/styles/features/diagram-preview.css +25 -18
  370. package/src/client/styles/features/embedded-preview.css +8 -33
  371. package/src/client/styles/features/quick-switcher.css +8 -0
  372. package/src/client/styles/foundation/tokens.css +1 -0
  373. package/src/client/styles/layout/editor-page.css +40 -0
  374. package/src/client/styles/layout/responsive.css +31 -1
  375. package/src/client/styles/layout/shell.css +25 -6
  376. package/src/client/styles/layout/sidebar.css +47 -15
  377. package/src/client/styles/overrides/codemirror.css +217 -15
  378. package/src/client/styles/style.css +25 -7
  379. package/src/client/styles/surfaces/excalidraw-editor.css +25 -0
  380. package/src/domain/excalidraw-room-codec.js +1 -9
  381. package/src/domain/vault-paths.js +41 -0
  382. package/src/server/application/workspace-reconciliation.js +1 -1
  383. package/src/server/config/env.js +1 -5
  384. package/src/server/create-app-server.js +2 -3
  385. package/src/server/domain/bases/base-expression-runtime.js +1 -46
  386. package/src/server/domain/bases/base-query-service.js +1 -77
  387. package/src/server/domain/collaboration/collaboration-document-store.js +12 -115
  388. package/src/server/domain/collaboration/collaboration-room.js +21 -10
  389. package/src/server/domain/comment-overview.js +10 -3
  390. package/src/server/domain/docx-exporter.js +24 -33
  391. package/src/server/domain/markdown-reference-extractor.js +1 -46
  392. package/src/server/domain/ripgrep-search-service.js +3 -1
  393. package/src/server/domain/workspace-state.js +32 -19
  394. package/src/server/infrastructure/git/diff-service.js +24 -13
  395. package/src/server/infrastructure/git/git-service.js +50 -44
  396. package/src/server/infrastructure/git/history-service.js +93 -85
  397. package/src/server/infrastructure/git/parsers.js +42 -24
  398. package/src/server/infrastructure/git/path-utils.js +1 -1
  399. package/src/server/infrastructure/git/responses.js +0 -118
  400. package/src/server/infrastructure/git/untracked-files.js +1 -1
  401. package/src/server/infrastructure/github/github-app-client.js +22 -15
  402. package/src/server/infrastructure/http/create-git-api-command-handler.js +7 -28
  403. package/src/server/infrastructure/http/create-git-api-query-handler.js +8 -24
  404. package/src/server/infrastructure/http/create-request-handler.js +39 -20
  405. package/src/server/infrastructure/http/create-vault-api-command-handler.js +22 -46
  406. package/src/server/infrastructure/http/create-vault-api-query-handler.js +7 -14
  407. package/src/server/infrastructure/http/http-errors.js +7 -1
  408. package/src/server/infrastructure/http/http-request-helpers.js +23 -0
  409. package/src/server/infrastructure/http/http-response.js +13 -0
  410. package/src/server/infrastructure/persistence/vault-file-store.js +22 -60
  411. package/src/server/infrastructure/workspace/file-system-sync-service.js +3 -3
  412. package/dist/client/assets/CodeMirrorEditor-UCMRAMCV-Fb3TgxXK.js +0 -1
  413. package/dist/client/assets/actions-XO29hEzr.css +0 -1
  414. package/dist/client/assets/ar-SA-YLAB6A27-B9ogj_Jh.js +0 -8
  415. package/dist/client/assets/arc-DqK6O3qL.js +0 -1
  416. package/dist/client/assets/architecture-TIHT7OUA-BWqzHezU.js +0 -1
  417. package/dist/client/assets/architectureDiagram-ZJ3FMSHR-DL35gHTu.js +0 -36
  418. package/dist/client/assets/asciiarmor-qTkVPQu6.js +0 -1
  419. package/dist/client/assets/az-AZ-5JXPK2I2-C6Se5-4R.js +0 -1
  420. package/dist/client/assets/bases-preview-controller-CBHDzzot.js +0 -143
  421. package/dist/client/assets/bg-BG-NIQ2RVNG-xrf33IaO.js +0 -5
  422. package/dist/client/assets/bn-BD-BN65R3DE-YVZWNN-c.js +0 -3
  423. package/dist/client/assets/bn-IN-2YT4KVKB-YVZWNN-c.js +0 -3
  424. package/dist/client/assets/button-2ZnWQkWV.js +0 -1
  425. package/dist/client/assets/c4Diagram-LMCZKHZV-al3Umu1D.js +0 -10
  426. package/dist/client/assets/ca-ES-KSERGC3M-CoMtV4dM.js +0 -8
  427. package/dist/client/assets/channel-XzBGGMWh.js +0 -1
  428. package/dist/client/assets/chunk-52WLFC77-BjzXVnqm.js +0 -10
  429. package/dist/client/assets/chunk-6GK3VUBP-ChzWImvX.js +0 -41
  430. package/dist/client/assets/chunk-CJTDIR4C-DvUbqeGR.js +0 -1
  431. package/dist/client/assets/chunk-ICXQ74PX-DGYhuP6g.js +0 -2
  432. package/dist/client/assets/chunk-OGEWGWER-Xh5bvoYs.js +0 -1
  433. package/dist/client/assets/chunk-RYQCIY6F-Dtr3kkSR.js +0 -1
  434. package/dist/client/assets/chunk-VAUOI2AC-EcvKeBKU.js +0 -1
  435. package/dist/client/assets/chunk-WYO6CB5R-HgTPu1OL.js +0 -127
  436. package/dist/client/assets/classDiagram-OUVF2IWQ-vy5bnN3c.js +0 -1
  437. package/dist/client/assets/classDiagram-v2-EOCWNBFH-vy5bnN3c.js +0 -1
  438. package/dist/client/assets/clike-CVjTFI47.js +0 -1
  439. package/dist/client/assets/cmake-CyVbuzPu.js +0 -1
  440. package/dist/client/assets/coffeescript-B2pKbFk8.js +0 -1
  441. package/dist/client/assets/commonlisp-CcllspGY.js +0 -1
  442. package/dist/client/assets/controls-LYQrRFSF.css +0 -1
  443. package/dist/client/assets/cose-bilkent-JH36ORCC-ClqQrHIF.js +0 -1
  444. package/dist/client/assets/crystal-M5-qzICs.js +0 -1
  445. package/dist/client/assets/cs-CZ-EOMS3IHD-Bo0hDCLX.js +0 -7
  446. package/dist/client/assets/css-CYpP4FRV.js +0 -1
  447. package/dist/client/assets/cynefin-VYW2F7L2-4m18BxUG.js +0 -1
  448. package/dist/client/assets/cynefinDiagram-TSTJHNR4-BNlZcGFF.js +0 -62
  449. package/dist/client/assets/cytoscape.esm-CQFVGiJu.js +0 -321
  450. package/dist/client/assets/da-DK-AVL3DJQK-s5-TpkxN.js +0 -2
  451. package/dist/client/assets/dagre-dpRSp0QF.js +0 -1
  452. package/dist/client/assets/de-CH-M25HCZK4-B0r4rx6B.js +0 -7
  453. package/dist/client/assets/de-DE-BEN6XGXY-B0r4rx6B.js +0 -7
  454. package/dist/client/assets/defaultLocale-C8Fc0cco.js +0 -1
  455. package/dist/client/assets/diagram-WEI45ONY-C18MNAQv.js +0 -41
  456. package/dist/client/assets/diagram-action-icons-aa_KOv9h.js +0 -36
  457. package/dist/client/assets/dist-0x9D2TFD.js +0 -1
  458. package/dist/client/assets/dist-BA633xb4.js +0 -11
  459. package/dist/client/assets/dist-Bx-T__Lj.js +0 -1
  460. package/dist/client/assets/dist-ByYtm-FJ.js +0 -1
  461. package/dist/client/assets/dist-CCrwHjeP.js +0 -1
  462. package/dist/client/assets/dist-CHokDUN_.js +0 -1
  463. package/dist/client/assets/dist-CI1X-CJ2.js +0 -9
  464. package/dist/client/assets/dist-CPim1xdZ.js +0 -1
  465. package/dist/client/assets/dist-CZG184W2.js +0 -1
  466. package/dist/client/assets/dist-Cd1BXkVC.js +0 -1
  467. package/dist/client/assets/dist-CeEU6QwA.js +0 -2
  468. package/dist/client/assets/dist-DG2HpWvu.js +0 -1
  469. package/dist/client/assets/dist-DUj7Xwud.js +0 -13
  470. package/dist/client/assets/dist-DnbVQL2z.js +0 -1
  471. package/dist/client/assets/dist-QiKOmE2-.js +0 -1
  472. package/dist/client/assets/dist-du6QqIs42.js +0 -1
  473. package/dist/client/assets/dist-snK6kYA_.js +0 -1
  474. package/dist/client/assets/drawio-editor-Bpeofg5c.js +0 -9
  475. package/dist/client/assets/drawio-embed-controller-BtzURctK.js +0 -1
  476. package/dist/client/assets/drawioEditor-DOeuNmoO.js +0 -2
  477. package/dist/client/assets/editor-session-MbnP-AVK.js +0 -16
  478. package/dist/client/assets/el-GR-UBGIF2NW-DRoYAN8w.js +0 -7
  479. package/dist/client/assets/embedded-editor-base-C9roKYpW.css +0 -1
  480. package/dist/client/assets/en-PCJ7LJZ2-1SKiH5y3.js +0 -1
  481. package/dist/client/assets/es-ES-SQEM5MNY-D5EtY06q.js +0 -7
  482. package/dist/client/assets/eu-ES-YG5N2JAG-CZ0xKIU4.js +0 -7
  483. package/dist/client/assets/eventmodeling-45OFAUF4-Dp0gpjhg.js +0 -1
  484. package/dist/client/assets/excalidraw-editor-CN3Wpa0D.css +0 -1
  485. package/dist/client/assets/excalidraw-editor-DV1u6p5J.js +0 -9
  486. package/dist/client/assets/excalidraw-embed-controller-BKx05cjZ.js +0 -1
  487. package/dist/client/assets/excalidraw-embed-reconciler-DGiagExg.js +0 -1
  488. package/dist/client/assets/excalidraw-scene-qiXFUZvq.js +0 -176
  489. package/dist/client/assets/excalidrawEditor-C5Z0GfUw.js +0 -2
  490. package/dist/client/assets/export-page-CbIrJ_oK.js +0 -39
  491. package/dist/client/assets/exportDocument-6GQGZvBv.js +0 -2
  492. package/dist/client/assets/exportDocument-C9v-bc7I.css +0 -1
  493. package/dist/client/assets/fa-IR-EVNM7MAJ-olht-LEH.js +0 -9
  494. package/dist/client/assets/fi-FI-MW7ZEZ64-D1PIXbLy.js +0 -6
  495. package/dist/client/assets/file-history-view-controller-CK3oHDCT.js +0 -112
  496. package/dist/client/assets/flowDiagram-23GEKE2U-DgaZtMXJ.js +0 -1
  497. package/dist/client/assets/fr-FR-Q7ZPXBDE-B0DjjyfT.js +0 -12
  498. package/dist/client/assets/ganttDiagram-NO4QXBWP-DaBgmYw5.js +0 -292
  499. package/dist/client/assets/git-diff-view-controller-qorJ_Quo.js +0 -150
  500. package/dist/client/assets/git-panel-controller-CzgJWqbB.js +0 -207
  501. package/dist/client/assets/gitGraph-TEB2WS4Q-Do0SQOtM.js +0 -1
  502. package/dist/client/assets/gl-ES-O5B74VQL-DH5u_ADp.js +0 -6
  503. package/dist/client/assets/groovy-BC3IOsC8.js +0 -1
  504. package/dist/client/assets/he-IL-QGC2WXJA-BSBR1RcG.js +0 -8
  505. package/dist/client/assets/hi-IN-DEZ33NMQ-CorD0_d0.js +0 -3
  506. package/dist/client/assets/hu-HU-2ZPNVYSC-BlqNXhNG.js +0 -3
  507. package/dist/client/assets/id-ID-W65WM5EO-SkLgeJLx.js +0 -8
  508. package/dist/client/assets/image-QEDDDPDB-DtzL4Wgr.js +0 -1
  509. package/dist/client/assets/image-blob-reduce.esm-DLFdRAwc.js +0 -2
  510. package/dist/client/assets/index-BakyykHU.css +0 -1
  511. package/dist/client/assets/index-CvubXIUU.js +0 -2
  512. package/dist/client/assets/info-DKCQHKI2-DIc7uC4I.js +0 -1
  513. package/dist/client/assets/init-D6jRqBbL.js +0 -1
  514. package/dist/client/assets/input-CXk9Zxz9.js +0 -1
  515. package/dist/client/assets/inter-cyrillic-ext-wght-normal-BOeWTOD4.woff2 +0 -0
  516. package/dist/client/assets/inter-cyrillic-wght-normal-DqGufNeO.woff2 +0 -0
  517. package/dist/client/assets/inter-greek-ext-wght-normal-DlzME5K_.woff2 +0 -0
  518. package/dist/client/assets/inter-greek-wght-normal-CkhJZR-_.woff2 +0 -0
  519. package/dist/client/assets/inter-latin-ext-wght-normal-DO1Apj_S.woff2 +0 -0
  520. package/dist/client/assets/inter-latin-wght-normal-Dx4kXJAl.woff2 +0 -0
  521. package/dist/client/assets/inter-vietnamese-wght-normal-CBcvBZtf.woff2 +0 -0
  522. package/dist/client/assets/it-IT-GAWJM2XW-CDZugsE0.js +0 -12
  523. package/dist/client/assets/ja-JP-FOAUPTH5-DkKXnwj8.js +0 -12
  524. package/dist/client/assets/javascript-B9TABJff.js +0 -1
  525. package/dist/client/assets/javascript-BRzqD9BA.js +0 -1
  526. package/dist/client/assets/jetbrains-mono-cyrillic-400-normal-BEIGL1Tu.woff2 +0 -0
  527. package/dist/client/assets/jetbrains-mono-cyrillic-400-normal-ugxPyKxw.woff +0 -0
  528. package/dist/client/assets/jetbrains-mono-greek-400-normal-B9oWc5Lo.woff +0 -0
  529. package/dist/client/assets/jetbrains-mono-greek-400-normal-C190GLew.woff2 +0 -0
  530. package/dist/client/assets/jetbrains-mono-latin-400-normal-6-qcROiO.woff +0 -0
  531. package/dist/client/assets/jetbrains-mono-latin-400-normal-V6pRDFza.woff2 +0 -0
  532. package/dist/client/assets/jetbrains-mono-latin-ext-400-normal-Bc8Ftmh3.woff2 +0 -0
  533. package/dist/client/assets/jetbrains-mono-latin-ext-400-normal-fXTG6kC5.woff +0 -0
  534. package/dist/client/assets/jetbrains-mono-vietnamese-400-normal-CqNFfHCs.woff +0 -0
  535. package/dist/client/assets/jsx-runtime-DKdBMi_L.js +0 -1
  536. package/dist/client/assets/kaa-UEDB54S7-C0Sv0drM.js +0 -1
  537. package/dist/client/assets/kab-KAB-CTLMBVE3-QfxUgzL5.js +0 -4
  538. package/dist/client/assets/keyboard-shortcuts-C5LvVwoE.js +0 -1
  539. package/dist/client/assets/kk-KZ-XZK63ADD-CMZObxxP.js +0 -1
  540. package/dist/client/assets/ko-KR-YNTPN6WQ-DPBaHnwT.js +0 -5
  541. package/dist/client/assets/ku-TR-XUD5BUEU-75pMUQoD.js +0 -6
  542. package/dist/client/assets/linear-DhAcoVP9.js +0 -1
  543. package/dist/client/assets/lt-LT-LYCDYH7O-BeKUsKuy.js +0 -3
  544. package/dist/client/assets/lv-LV-7ROPDEEI-CrA6QOtq.js +0 -4
  545. package/dist/client/assets/main-CKWxzJUx.js +0 -807
  546. package/dist/client/assets/mermaid-runtime-2fJoRo49.js +0 -11
  547. package/dist/client/assets/mr-IN-TU6BXRKP-mIvXG0bt.js +0 -9
  548. package/dist/client/assets/my-MM-SJ3RWIEQ-CeEN5n4z.js +0 -1
  549. package/dist/client/assets/navigation-CoTUJ5Pi.css +0 -1
  550. package/dist/client/assets/nb-NO-GONF2AKR-IChp6OiI.js +0 -8
  551. package/dist/client/assets/nl-NL-UZF6UEKB-DfPPXXjo.js +0 -13
  552. package/dist/client/assets/nn-NO-ZVFRXEEO-BtpjNSGp.js +0 -4
  553. package/dist/client/assets/oc-FR-MBF2Z56W-CBl14QBM.js +0 -4
  554. package/dist/client/assets/pa-IN-3JCDVKKL-D95A1XFb.js +0 -4
  555. package/dist/client/assets/packet-7NZHBO7P-D2duWGIK.js +0 -1
  556. package/dist/client/assets/path-BWPyau1x.js +0 -1
  557. package/dist/client/assets/percentages-WBIPKLEE-bhlTAhiB.js +0 -1
  558. package/dist/client/assets/perl-CdEHsPfU.js +0 -1
  559. package/dist/client/assets/pie-RZYD4A2V-CynqTUkZ.js +0 -1
  560. package/dist/client/assets/preview-diagram-utils-BPaXsmlV.js +0 -1
  561. package/dist/client/assets/preview-render-compiler-C8wbmTyE.js +0 -1
  562. package/dist/client/assets/preview-render-compiler-CrQBxqqa.js +0 -35
  563. package/dist/client/assets/preview-render-profile-C89_PyT3.js +0 -23
  564. package/dist/client/assets/preview-render-worker-D84F1vpn.js +0 -59
  565. package/dist/client/assets/pt-BR-W4AF5QMX-DIJs8D4M.js +0 -6
  566. package/dist/client/assets/pt-PT-GNPUWAHX-BopN284Y.js +0 -8
  567. package/dist/client/assets/puppet-B4hC2X4m.js +0 -1
  568. package/dist/client/assets/python-2zlmcyof.js +0 -1
  569. package/dist/client/assets/quick-switcher-controller-CVRUPEKp.js +0 -12
  570. package/dist/client/assets/r-DADKenSm.js +0 -1
  571. package/dist/client/assets/radar-I7S5WNFK-fIKE12aT.js +0 -1
  572. package/dist/client/assets/railroad-3IZDKUUU-Bgx8HJTj.js +0 -1
  573. package/dist/client/assets/railroad-abnf-AHOZXSZD-Nh6k60mH.js +0 -1
  574. package/dist/client/assets/railroad-ebnf-EBAXGLYW-C74h3s_I.js +0 -1
  575. package/dist/client/assets/railroad-peg-LSFZ7HO6-0hT-lN-u.js +0 -1
  576. package/dist/client/assets/ro-RO-DXHP33S5-PGxfl-ng.js +0 -12
  577. package/dist/client/assets/rolldown-runtime-aKtaBQYM.js +0 -1
  578. package/dist/client/assets/ru-RU-TTW2P7NF-Dwnn0sc5.js +0 -10
  579. package/dist/client/assets/ruby-DsYpTuWg.js +0 -1
  580. package/dist/client/assets/runtime-config-CDgeuPWN.js +0 -1
  581. package/dist/client/assets/runtime-config-loader-BUK56BZz.js +0 -1
  582. package/dist/client/assets/runtime-paths-DvpihCEq.js +0 -1
  583. package/dist/client/assets/segmented-control-DhUkW6ro.js +0 -1
  584. package/dist/client/assets/sequenceDiagram-DBY2YBRQ-DonUqDnp.js +0 -162
  585. package/dist/client/assets/si-LK-BE6O7LVF-QO9nybVB.js +0 -1
  586. package/dist/client/assets/sk-SK-OI3KJLWQ-BAKIEIig.js +0 -7
  587. package/dist/client/assets/sl-SI-HF74RBGV-CnS5z7V_.js +0 -6
  588. package/dist/client/assets/sql-DcCJ9jop.js +0 -1
  589. package/dist/client/assets/src-UMNXGZaF.js +0 -1
  590. package/dist/client/assets/stateDiagram-v2-6OUMAXLB-C4YrlXQg.js +0 -1
  591. package/dist/client/assets/states-DYMshUe2.css +0 -1
  592. package/dist/client/assets/subset-shared.chunk-D3olxosN.js +0 -1
  593. package/dist/client/assets/sv-SE-TXR2SQGA-CNgv7xeJ.js +0 -8
  594. package/dist/client/assets/swimlanes-5IMT3BWC-DP1GREXh.js +0 -2
  595. package/dist/client/assets/swimlanesDiagram-G3AALYLV-CN_iOXin.js +0 -8
  596. package/dist/client/assets/ta-IN-Y2DOZGBR-DYzsfax7.js +0 -6
  597. package/dist/client/assets/th-TH-JUAISFQR-BAZHUCM7.js +0 -1
  598. package/dist/client/assets/tiki-CxVlf5KZ.js +0 -1
  599. package/dist/client/assets/timeline-definition-FHXFAJF6-C-QK9sME.js +0 -120
  600. package/dist/client/assets/toml-LvoKBwCs.js +0 -1
  601. package/dist/client/assets/tr-TR-U3HGKQXH-DTYupb_4.js +0 -4
  602. package/dist/client/assets/treeView-QDETBFTQ-CygwzEgj.js +0 -1
  603. package/dist/client/assets/treemap-6X3UGDF4-BbCXbaXr.js +0 -1
  604. package/dist/client/assets/uk-UA-FP2TKAFK-Bcxd6wgd.js +0 -6
  605. package/dist/client/assets/uz-UZ-WY5QKWXJ-B5N6xPud.js +0 -1
  606. package/dist/client/assets/vault-api-client-BPVNCJZC.js +0 -1
  607. package/dist/client/assets/vault-api-client-VAfZ8okg.js +0 -1
  608. package/dist/client/assets/vault-utils-kIbqyWPm.js +0 -1
  609. package/dist/client/assets/vi-VN-DE5I4H6K-BdlcTH5l.js +0 -7
  610. package/dist/client/assets/wardley-OPB4EBWU-BjXxCRf_.js +0 -1
  611. package/dist/client/assets/yjs-provider-reset-guard-DSfwdXS9.js +0 -4
  612. package/dist/client/assets/z80-CL1naaMV.js +0 -1
  613. package/dist/client/assets/zh-CN-VWHOHS7G-b12eD2L4.js +0 -11
  614. package/dist/client/assets/zh-HK-KQF7FW7H-Bvr6xExo.js +0 -1
  615. package/dist/client/assets/zh-TW-6VHVWZKW-B-KCOPyt.js +0 -13
  616. package/server.js +0 -1
  617. package/src/client/application/app-shell/ui-feature.js +0 -13
  618. package/src/client/application/file-open-lifecycle.js +0 -26
  619. package/src/client/application/workspace-chrome-controller.js +0 -109
  620. package/src/client/application/workspace-state-store.js +0 -48
  621. package/src/client/bootstrap/app-shell-feature-surface.js +0 -67
  622. package/src/client/bootstrap/lazy-controller-feature.js +0 -434
  623. package/src/client/domain/excalidraw-document-switch.js +0 -3
  624. package/src/client/domain/vault-api-client.js +0 -1
  625. package/src/client/domain/workspace-request-id.js +0 -7
  626. package/src/client/infrastructure/backlinks-api-client.js +0 -18
  627. package/src/client/infrastructure/browser-navigation-port.js +0 -39
  628. package/src/client/infrastructure/plantuml-api-client.js +0 -21
  629. package/src/client/infrastructure/runtime-config-loader.js +0 -56
  630. package/src/client/mermaid-runtime.js +0 -3
  631. package/src/client/presentation/app-shell-renderer.js +0 -13
  632. package/src/client/presentation/app-shell-template.js +0 -669
  633. package/src/client/presentation/comments-panel.js +0 -578
  634. package/src/client/presentation/components/ui/badge.js +0 -24
  635. package/src/client/presentation/components/ui/ensure-ui-component-styles.js +0 -18
  636. package/src/client/presentation/components/ui/input.js +0 -9
  637. package/src/client/styles/features/collaboration-ui.css +0 -3
  638. package/src/client/styles/features/comments.css +0 -5
  639. package/src/client/styles/features/diff.css +0 -3
  640. package/src/client/styles/features/git.css +0 -3
  641. package/src/client/styles/features/preview-content.css +0 -3
  642. package/src/client/styles/features/preview-sidebars.css +0 -2
  643. package/src/client/styles/overrides/vendor.css +0 -2
  644. package/src/server/domain/collaboration/room-client-state-store.js +0 -29
  645. package/src/server/domain/git-service.js +0 -1
  646. package/src/server/domain/plantuml-renderer.js +0 -1
  647. package/src/server/index.js +0 -74
  648. package/src/server/infrastructure/git/command-runner.js +0 -49
  649. package/src/server/infrastructure/git/concurrency.js +0 -19
  650. package/src/server/infrastructure/git/errors.js +0 -8
  651. package/src/server/infrastructure/http/create-esm-proxy-handler.js +0 -130
  652. package/src/server/infrastructure/http/create-git-api-handler.js +0 -44
  653. package/src/server/infrastructure/http/create-vault-api-handler.js +0 -54
  654. package/src/server/infrastructure/persistence/vault-content-adapter.js +0 -61
  655. package/src/server/infrastructure/workspace/workspace-mutation-coordinator.js +0 -20
  656. /package/dist/client/assets/{keyboard-shortcuts-C3mlS_4N.css → vault-api-client-C3mlS_4N.css} +0 -0
@@ -1,16 +1,11 @@
1
1
  import { createSign } from 'node:crypto';
2
2
 
3
+ import { createRequestError } from '../http/http-errors.js';
4
+
3
5
  function base64UrlJson(value) {
4
6
  return Buffer.from(JSON.stringify(value)).toString('base64url');
5
7
  }
6
8
 
7
- function createRequestError(statusCode, message, code) {
8
- const error = new Error(message);
9
- error.statusCode = statusCode;
10
- error.code = code;
11
- return error;
12
- }
13
-
14
9
  function normalizeBaseUrl(value) {
15
10
  return String(value ?? 'https://api.github.com').trim().replace(/\/+$/u, '') || 'https://api.github.com';
16
11
  }
@@ -80,7 +75,9 @@ export class GitHubAppClient {
80
75
 
81
76
  createAppJwt() {
82
77
  if (!this.isConfigured()) {
83
- throw createRequestError(503, 'GitHub App setup is not configured.', 'HOSTED_GITHUB_APP_NOT_CONFIGURED');
78
+ throw createRequestError(503, 'GitHub App setup is not configured.', {
79
+ code: 'HOSTED_GITHUB_APP_NOT_CONFIGURED',
80
+ });
84
81
  }
85
82
 
86
83
  return createGitHubAppJwt({
@@ -91,7 +88,9 @@ export class GitHubAppClient {
91
88
 
92
89
  createInstallationSetupUrl({ state } = {}) {
93
90
  if (!this.appSlug) {
94
- throw createRequestError(503, 'GitHub App slug is not configured.', 'HOSTED_GITHUB_APP_NOT_CONFIGURED');
91
+ throw createRequestError(503, 'GitHub App slug is not configured.', {
92
+ code: 'HOSTED_GITHUB_APP_NOT_CONFIGURED',
93
+ });
95
94
  }
96
95
 
97
96
  const setupUrl = new URL(`/apps/${encodeURIComponent(this.appSlug)}/installations/new`, this.htmlBaseUrl);
@@ -131,7 +130,7 @@ export class GitHubAppClient {
131
130
  throw createRequestError(
132
131
  response.status,
133
132
  payload?.message || 'GitHub API request failed.',
134
- 'HOSTED_GITHUB_API_FAILED',
133
+ { code: 'HOSTED_GITHUB_API_FAILED' },
135
134
  );
136
135
  }
137
136
 
@@ -141,7 +140,9 @@ export class GitHubAppClient {
141
140
  async createInstallationAccessToken(installationId, { appJwt = null } = {}) {
142
141
  const normalizedInstallationId = String(installationId ?? '').trim();
143
142
  if (!normalizedInstallationId) {
144
- throw createRequestError(400, 'GitHub installation id is required.', 'HOSTED_GITHUB_INSTALLATION_REQUIRED');
143
+ throw createRequestError(400, 'GitHub installation id is required.', {
144
+ code: 'HOSTED_GITHUB_INSTALLATION_REQUIRED',
145
+ });
145
146
  }
146
147
 
147
148
  const payload = await this.request(`/app/installations/${encodeURIComponent(normalizedInstallationId)}/access_tokens`, {
@@ -150,7 +151,9 @@ export class GitHubAppClient {
150
151
  });
151
152
  const token = String(payload?.token ?? '').trim();
152
153
  if (!token) {
153
- throw createRequestError(502, 'GitHub did not return an installation access token.', 'HOSTED_GITHUB_TOKEN_MISSING');
154
+ throw createRequestError(502, 'GitHub did not return an installation access token.', {
155
+ code: 'HOSTED_GITHUB_TOKEN_MISSING',
156
+ });
154
157
  }
155
158
  return token;
156
159
  }
@@ -158,7 +161,9 @@ export class GitHubAppClient {
158
161
  async getInstallation(installationId, { appJwt = null } = {}) {
159
162
  const normalizedInstallationId = String(installationId ?? '').trim();
160
163
  if (!normalizedInstallationId) {
161
- throw createRequestError(400, 'GitHub installation id is required.', 'HOSTED_GITHUB_INSTALLATION_REQUIRED');
164
+ throw createRequestError(400, 'GitHub installation id is required.', {
165
+ code: 'HOSTED_GITHUB_INSTALLATION_REQUIRED',
166
+ });
162
167
  }
163
168
 
164
169
  return this.request(`/app/installations/${encodeURIComponent(normalizedInstallationId)}`, {
@@ -176,7 +181,9 @@ export class GitHubAppClient {
176
181
  async resolveVaultSourceFromInstallation(installationId) {
177
182
  const normalizedInstallationId = String(installationId ?? '').trim();
178
183
  if (!normalizedInstallationId) {
179
- throw createRequestError(400, 'GitHub installation id is required.', 'HOSTED_GITHUB_INSTALLATION_REQUIRED');
184
+ throw createRequestError(400, 'GitHub installation id is required.', {
185
+ code: 'HOSTED_GITHUB_INSTALLATION_REQUIRED',
186
+ });
180
187
  }
181
188
 
182
189
  const appJwt = this.createAppJwt();
@@ -189,7 +196,7 @@ export class GitHubAppClient {
189
196
  throw createRequestError(
190
197
  409,
191
198
  'GitHub App installation must grant access to exactly one selected repository.',
192
- 'HOSTED_GITHUB_REPOSITORY_SELECTION_REQUIRED',
199
+ { code: 'HOSTED_GITHUB_REPOSITORY_SELECTION_REQUIRED' },
193
200
  );
194
201
  }
195
202
 
@@ -1,4 +1,4 @@
1
- import { getRequestErrorStatusCode } from './http-errors.js';
1
+ import { handleApiError, readRequestId } from './http-request-helpers.js';
2
2
  import { jsonResponse } from './http-response.js';
3
3
  import { parseJsonBody } from './request-body.js';
4
4
  import { createEmptyWorkspaceChange, hasWorkspaceMutation } from '../../../domain/workspace-change.js';
@@ -13,27 +13,6 @@ async function parseRequiredBody(req, res, fieldName) {
13
13
  return body;
14
14
  }
15
15
 
16
- function handleGitError(req, res, error, logMessage, fallbackMessage) {
17
- const statusCode = getRequestErrorStatusCode(error);
18
- if (statusCode) {
19
- const payload = { error: error.message };
20
- if (typeof error?.requestCode === 'string') {
21
- payload.code = error.requestCode;
22
- }
23
- jsonResponse(req, res, statusCode, payload);
24
- return true;
25
- }
26
-
27
- console.error(logMessage, error.message);
28
- jsonResponse(req, res, 500, { error: fallbackMessage });
29
- return true;
30
- }
31
-
32
- function readRequestId(req) {
33
- const value = String(req.headers['x-collabmd-request-id'] || '').trim();
34
- return value ? value.slice(0, 120) : null;
35
- }
36
-
37
16
  async function applyWorkspaceMutationEffects({
38
17
  action,
39
18
  req,
@@ -79,7 +58,7 @@ export function createGitApiCommandHandler({
79
58
  workspaceMutationCoordinator,
80
59
  }));
81
60
  } catch (error) {
82
- handleGitError(req, res, error, '[api] Failed to stage git file:', 'Failed to stage git file');
61
+ handleApiError(req, res, error, '[api] Failed to stage git file:', 'Failed to stage git file');
83
62
  }
84
63
  return true;
85
64
  }
@@ -100,7 +79,7 @@ export function createGitApiCommandHandler({
100
79
  workspaceMutationCoordinator,
101
80
  }));
102
81
  } catch (error) {
103
- handleGitError(req, res, error, '[api] Failed to unstage git file:', 'Failed to unstage git file');
82
+ handleApiError(req, res, error, '[api] Failed to unstage git file:', 'Failed to unstage git file');
104
83
  }
105
84
  return true;
106
85
  }
@@ -124,7 +103,7 @@ export function createGitApiCommandHandler({
124
103
  workspaceMutationCoordinator,
125
104
  }));
126
105
  } catch (error) {
127
- handleGitError(req, res, error, '[api] Failed to commit staged changes:', 'Failed to commit staged changes');
106
+ handleApiError(req, res, error, '[api] Failed to commit staged changes:', 'Failed to commit staged changes');
128
107
  }
129
108
  return true;
130
109
  }
@@ -140,7 +119,7 @@ export function createGitApiCommandHandler({
140
119
  workspaceMutationCoordinator,
141
120
  }));
142
121
  } catch (error) {
143
- handleGitError(req, res, error, '[api] Failed to push git branch:', 'Failed to push git branch');
122
+ handleApiError(req, res, error, '[api] Failed to push git branch:', 'Failed to push git branch');
144
123
  }
145
124
  return true;
146
125
  }
@@ -156,7 +135,7 @@ export function createGitApiCommandHandler({
156
135
  workspaceMutationCoordinator,
157
136
  }));
158
137
  } catch (error) {
159
- handleGitError(req, res, error, '[api] Failed to pull git branch:', 'Failed to pull git branch');
138
+ handleApiError(req, res, error, '[api] Failed to pull git branch:', 'Failed to pull git branch');
160
139
  }
161
140
  return true;
162
141
  }
@@ -177,7 +156,7 @@ export function createGitApiCommandHandler({
177
156
  workspaceMutationCoordinator,
178
157
  }));
179
158
  } catch (error) {
180
- handleGitError(req, res, error, '[api] Failed to reset git file:', 'Failed to reset git file');
159
+ handleApiError(req, res, error, '[api] Failed to reset git file:', 'Failed to reset git file');
181
160
  }
182
161
  return true;
183
162
  }
@@ -1,4 +1,4 @@
1
- import { getRequestErrorStatusCode } from './http-errors.js';
1
+ import { handleApiError } from './http-request-helpers.js';
2
2
  import { jsonResponse } from './http-response.js';
3
3
 
4
4
  function resolveDiffScope(requestUrl) {
@@ -28,22 +28,6 @@ function readHistoryOffset(value) {
28
28
  return Number.isFinite(parsed) ? parsed : 0;
29
29
  }
30
30
 
31
- function handleGitError(req, res, error, message, fallback) {
32
- const statusCode = getRequestErrorStatusCode(error);
33
- if (statusCode) {
34
- const payload = { error: error.message };
35
- if (typeof error?.requestCode === 'string') {
36
- payload.code = error.requestCode;
37
- }
38
- jsonResponse(req, res, statusCode, payload);
39
- return true;
40
- }
41
-
42
- console.error(message, error.message);
43
- jsonResponse(req, res, 500, { error: fallback });
44
- return true;
45
- }
46
-
47
31
  export function createGitApiQueryHandler({ gitService }) {
48
32
  return async function handleGitApiQuery(req, res, requestUrl) {
49
33
  if (requestUrl.pathname === '/api/git/status' && req.method === 'GET') {
@@ -52,7 +36,7 @@ export function createGitApiQueryHandler({ gitService }) {
52
36
  force: isTruthyParam(requestUrl.searchParams.get('force')),
53
37
  }));
54
38
  } catch (error) {
55
- handleGitError(req, res, error, '[api] Failed to read git status:', 'Failed to read git status');
39
+ handleApiError(req, res, error, '[api] Failed to read git status:', 'Failed to read git status');
56
40
  }
57
41
  return true;
58
42
  }
@@ -66,7 +50,7 @@ export function createGitApiQueryHandler({ gitService }) {
66
50
  scope: resolveDiffScope(requestUrl),
67
51
  }));
68
52
  } catch (error) {
69
- handleGitError(req, res, error, '[api] Failed to read git diff:', 'Failed to read git diff');
53
+ handleApiError(req, res, error, '[api] Failed to read git diff:', 'Failed to read git diff');
70
54
  }
71
55
  return true;
72
56
  }
@@ -78,7 +62,7 @@ export function createGitApiQueryHandler({ gitService }) {
78
62
  offset: readHistoryOffset(requestUrl.searchParams.get('offset')),
79
63
  }));
80
64
  } catch (error) {
81
- handleGitError(req, res, error, '[api] Failed to read git history:', 'Failed to read git history');
65
+ handleApiError(req, res, error, '[api] Failed to read git history:', 'Failed to read git history');
82
66
  }
83
67
  return true;
84
68
  }
@@ -91,7 +75,7 @@ export function createGitApiQueryHandler({ gitService }) {
91
75
  path: requestUrl.searchParams.get('path'),
92
76
  }));
93
77
  } catch (error) {
94
- handleGitError(req, res, error, '[api] Failed to read git file history:', 'Failed to read git file history');
78
+ handleApiError(req, res, error, '[api] Failed to read git file history:', 'Failed to read git file history');
95
79
  }
96
80
  return true;
97
81
  }
@@ -105,7 +89,7 @@ export function createGitApiQueryHandler({ gitService }) {
105
89
  path: requestUrl.searchParams.get('path'),
106
90
  }));
107
91
  } catch (error) {
108
- handleGitError(req, res, error, '[api] Failed to read git commit:', 'Failed to read git commit');
92
+ handleApiError(req, res, error, '[api] Failed to read git commit:', 'Failed to read git commit');
109
93
  }
110
94
  return true;
111
95
  }
@@ -117,7 +101,7 @@ export function createGitApiQueryHandler({ gitService }) {
117
101
  path: requestUrl.searchParams.get('path'),
118
102
  }));
119
103
  } catch (error) {
120
- handleGitError(req, res, error, '[api] Failed to read git file snapshot:', 'Failed to read git file snapshot');
104
+ handleApiError(req, res, error, '[api] Failed to read git file snapshot:', 'Failed to read git file snapshot');
121
105
  }
122
106
  return true;
123
107
  }
@@ -128,7 +112,7 @@ export function createGitApiQueryHandler({ gitService }) {
128
112
  backups: await gitService.listPullBackups(),
129
113
  });
130
114
  } catch (error) {
131
- handleGitError(req, res, error, '[api] Failed to read pull backups:', 'Failed to read pull backups');
115
+ handleApiError(req, res, error, '[api] Failed to read pull backups:', 'Failed to read pull backups');
132
116
  }
133
117
  return true;
134
118
  }
@@ -1,9 +1,11 @@
1
1
  import { createAuthApiHandler } from './create-auth-api-handler.js';
2
- import { createGitApiHandler } from './create-git-api-handler.js';
2
+ import { createGitApiCommandHandler } from './create-git-api-command-handler.js';
3
+ import { createGitApiQueryHandler } from './create-git-api-query-handler.js';
3
4
  import { createHostedApiHandler } from './create-hosted-api-handler.js';
4
- import { createEsmProxyHandler } from './create-esm-proxy-handler.js';
5
+ import { createPlantUmlApiHandler } from './create-plantuml-api-handler.js';
5
6
  import { createStaticHandler } from './create-static-handler.js';
6
- import { createVaultApiHandler } from './create-vault-api-handler.js';
7
+ import { createVaultApiCommandHandler } from './create-vault-api-command-handler.js';
8
+ import { createVaultApiQueryHandler } from './create-vault-api-query-handler.js';
7
9
  import { parseJsonBody } from './request-body.js';
8
10
  import {
9
11
  applyCorsHeaders,
@@ -42,7 +44,7 @@ export function createRequestHandler(
42
44
  vaultFileStore,
43
45
  backlinkIndex,
44
46
  baseQueryService = null,
45
- docxExporter = null,
47
+ renderDocx = null,
46
48
  roomRegistry = null,
47
49
  plantUmlRenderer = null,
48
50
  gitService = null,
@@ -53,7 +55,6 @@ export function createRequestHandler(
53
55
  hostedWorkspaceService = null,
54
56
  githubSetupFlow = null,
55
57
  ) {
56
- const handleEsmProxy = createEsmProxyHandler();
57
58
  const handleStaticRequest = createStaticHandler(config, authService, searchService);
58
59
  const handleAuthApi = createAuthApiHandler({ authService });
59
60
  const handleHostedApi = createHostedApiHandler({
@@ -61,25 +62,28 @@ export function createRequestHandler(
61
62
  githubSetupFlow,
62
63
  hostedWorkspaceService,
63
64
  });
64
- const handleGitApi = createGitApiHandler({
65
+ const handleGitApiQuery = createGitApiQueryHandler({ gitService });
66
+ const handleGitApiCommand = createGitApiCommandHandler({
65
67
  authService,
66
- backlinkIndex,
67
68
  gitService,
68
- roomRegistry,
69
- vaultFileStore,
70
69
  workspaceMutationCoordinator,
71
70
  });
72
- const handleVaultApi = createVaultApiHandler({
71
+ const handleVaultApiQuery = createVaultApiQueryHandler({
73
72
  baseQueryService,
74
73
  backlinkIndex,
75
74
  config,
76
- docxExporter,
77
- plantUmlRenderer,
78
- roomRegistry,
79
75
  searchService,
80
76
  vaultFileStore,
81
77
  workspaceMutationCoordinator,
82
78
  });
79
+ const handleVaultApiCommand = createVaultApiCommandHandler({
80
+ backlinkIndex,
81
+ renderDocx,
82
+ roomRegistry,
83
+ vaultFileStore,
84
+ workspaceMutationCoordinator,
85
+ });
86
+ const handlePlantUmlApi = createPlantUmlApiHandler({ plantUmlRenderer });
83
87
 
84
88
  function handleBasePathRedirect(req, res, originalRequestUrl) {
85
89
  if (
@@ -189,10 +193,6 @@ export function createRequestHandler(
189
193
  return;
190
194
  }
191
195
 
192
- if (await handleEsmProxy(req, res, requestUrl)) {
193
- return;
194
- }
195
-
196
196
  if (requestUrl.pathname.startsWith('/api/')) {
197
197
  const authorization = authService.authorizeApiRequest(req);
198
198
  if (!authorization.ok) {
@@ -209,11 +209,30 @@ export function createRequestHandler(
209
209
  }
210
210
  }
211
211
 
212
- if (await handleVaultApi(req, res, requestUrl)) {
213
- return;
212
+ if (requestUrl.pathname.startsWith('/api/')) {
213
+ if (await handleVaultApiQuery(req, res, requestUrl)) {
214
+ return;
215
+ }
216
+ if (await handleVaultApiCommand(req, res, requestUrl)) {
217
+ return;
218
+ }
219
+ if (await handlePlantUmlApi(req, res, requestUrl)) {
220
+ return;
221
+ }
214
222
  }
215
223
 
216
- if (await handleGitApi(req, res, requestUrl)) {
224
+ if (requestUrl.pathname.startsWith('/api/git')) {
225
+ if (!gitService) {
226
+ jsonResponse(req, res, 503, { error: 'Git integration is not configured' });
227
+ return;
228
+ }
229
+ if (await handleGitApiQuery(req, res, requestUrl)) {
230
+ return;
231
+ }
232
+ if (await handleGitApiCommand(req, res, requestUrl)) {
233
+ return;
234
+ }
235
+ jsonResponse(req, res, 404, { error: 'Git API endpoint not found' });
217
236
  return;
218
237
  }
219
238
 
@@ -1,30 +1,23 @@
1
1
  import { basename } from 'node:path';
2
- import { createRequestError, getRequestErrorStatusCode } from './http-errors.js';
3
- import { jsonResponse, sendResponse } from './http-response.js';
2
+ import { createRequestError } from './http-errors.js';
3
+ import { handleApiError, readRequestId } from './http-request-helpers.js';
4
+ import {
5
+ createSafeAsciiFilename,
6
+ encodeContentDispositionFilename,
7
+ jsonResponse,
8
+ sendResponse,
9
+ } from './http-response.js';
4
10
  import { parseJsonBody, readBinaryRequestBody } from './request-body.js';
5
11
 
6
12
  const DOCX_EXPORT_REQUEST_LIMIT_BYTES = 33_554_432;
7
13
  const DOCX_MIME_TYPE = 'application/vnd.openxmlformats-officedocument.wordprocessingml.document';
8
14
 
9
- function encodeContentDispositionFilename(fileName) {
10
- return encodeURIComponent(String(fileName ?? ''))
11
- .replace(/['()*]/g, (character) => `%${character.charCodeAt(0).toString(16).toUpperCase()}`);
12
- }
13
-
14
- function createSafeAsciiFilename(fileName) {
15
- const fallback = String(fileName ?? '')
16
- .replace(/[^\x20-\x7E]+/g, '_')
17
- .replace(/["\\]/g, '_')
18
- .trim();
19
- return fallback || 'document';
20
- }
21
-
22
15
  function createDocxDownloadHeaders(filePath) {
23
16
  const fileName = basename(String(filePath ?? 'document')).replace(/\.[^.]+$/u, '') || 'document';
24
17
  const exportFileName = `${fileName}.docx`;
25
18
  return {
26
19
  'Cache-Control': 'no-store',
27
- 'Content-Disposition': `attachment; filename="${createSafeAsciiFilename(exportFileName)}"; filename*=UTF-8''${encodeContentDispositionFilename(exportFileName)}`,
20
+ 'Content-Disposition': `attachment; filename="${createSafeAsciiFilename(exportFileName, 'document')}"; filename*=UTF-8''${encodeContentDispositionFilename(exportFileName)}`,
28
21
  'Content-Type': DOCX_MIME_TYPE,
29
22
  'X-Content-Type-Options': 'nosniff',
30
23
  };
@@ -43,28 +36,11 @@ function decodeHeaderMetadata(value) {
43
36
  }
44
37
  }
45
38
 
46
- function readRequestId(req) {
47
- const value = String(req.headers['x-collabmd-request-id'] || '').trim();
48
- return value ? value.slice(0, 120) : null;
49
- }
50
-
51
- function handleVaultError(req, res, error, logMessage, fallbackMessage) {
52
- const statusCode = getRequestErrorStatusCode(error);
53
- if (statusCode) {
54
- jsonResponse(req, res, statusCode, { error: error.message });
55
- return true;
56
- }
57
-
58
- console.error(logMessage, error.message);
59
- jsonResponse(req, res, 500, { error: fallbackMessage });
60
- return true;
61
- }
62
-
63
39
  function getDirectoryDeleteStatusCode(message = '') {
64
40
  return String(message).includes('Directory is not empty') ? 409 : 400;
65
41
  }
66
42
 
67
- async function handleExportDocx({ docxExporter }, req, res) {
43
+ async function handleExportDocx({ renderDocx }, req, res) {
68
44
  try {
69
45
  const body = await parseJsonBody(req, DOCX_EXPORT_REQUEST_LIMIT_BYTES);
70
46
  if (!body?.filePath || typeof body?.html !== 'string') {
@@ -72,12 +48,12 @@ async function handleExportDocx({ docxExporter }, req, res) {
72
48
  return true;
73
49
  }
74
50
 
75
- if (!docxExporter?.render) {
51
+ if (typeof renderDocx !== 'function') {
76
52
  jsonResponse(req, res, 503, { error: 'DOCX export is unavailable' });
77
53
  return true;
78
54
  }
79
55
 
80
- const docxBuffer = await docxExporter.render({
56
+ const docxBuffer = await renderDocx({
81
57
  html: body.html,
82
58
  title: body.title || '',
83
59
  });
@@ -88,7 +64,7 @@ async function handleExportDocx({ docxExporter }, req, res) {
88
64
  statusCode: 200,
89
65
  });
90
66
  } catch (error) {
91
- handleVaultError(req, res, error, '[api] Failed to export DOCX:', 'Failed to export DOCX');
67
+ handleApiError(req, res, error, '[api] Failed to export DOCX:', 'Failed to export DOCX');
92
68
  }
93
69
  return true;
94
70
  }
@@ -113,7 +89,7 @@ async function handleWriteFile({ workspaceMutationCoordinator }, req, res) {
113
89
 
114
90
  jsonResponse(req, res, 200, { ok: true });
115
91
  } catch (error) {
116
- handleVaultError(req, res, error, '[api] Failed to write file:', 'Failed to write file');
92
+ handleApiError(req, res, error, '[api] Failed to write file:', 'Failed to write file');
117
93
  }
118
94
  return true;
119
95
  }
@@ -148,7 +124,7 @@ async function handleUploadAttachment({ workspaceMutationCoordinator }, req, res
148
124
  path: result.path,
149
125
  });
150
126
  } catch (error) {
151
- handleVaultError(req, res, error, '[api] Failed to upload attachment:', 'Failed to upload attachment');
127
+ handleApiError(req, res, error, '[api] Failed to upload attachment:', 'Failed to upload attachment');
152
128
  }
153
129
  return true;
154
130
  }
@@ -172,7 +148,7 @@ async function handleCreateFile({ workspaceMutationCoordinator }, req, res) {
172
148
  }
173
149
  jsonResponse(req, res, 201, { ok: true, path: body.path });
174
150
  } catch (error) {
175
- handleVaultError(req, res, error, '[api] Failed to create file:', 'Failed to create file');
151
+ handleApiError(req, res, error, '[api] Failed to create file:', 'Failed to create file');
176
152
  }
177
153
  return true;
178
154
  }
@@ -220,7 +196,7 @@ async function handleRenameFile({ workspaceMutationCoordinator }, req, res) {
220
196
  }
221
197
  jsonResponse(req, res, 200, { ok: true, path: body.newPath });
222
198
  } catch (error) {
223
- handleVaultError(req, res, error, '[api] Failed to rename file:', 'Failed to rename file');
199
+ handleApiError(req, res, error, '[api] Failed to rename file:', 'Failed to rename file');
224
200
  }
225
201
  return true;
226
202
  }
@@ -244,7 +220,7 @@ async function handleCreateDirectory({ workspaceMutationCoordinator }, req, res)
244
220
 
245
221
  jsonResponse(req, res, 201, { ok: true });
246
222
  } catch (error) {
247
- handleVaultError(req, res, error, '[api] Failed to create directory:', 'Failed to create directory');
223
+ handleApiError(req, res, error, '[api] Failed to create directory:', 'Failed to create directory');
248
224
  }
249
225
  return true;
250
226
  }
@@ -269,7 +245,7 @@ async function handleRenameDirectory({ workspaceMutationCoordinator }, req, res)
269
245
 
270
246
  jsonResponse(req, res, 200, { ok: true, path: body.newPath });
271
247
  } catch (error) {
272
- handleVaultError(req, res, error, '[api] Failed to rename directory:', 'Failed to rename directory');
248
+ handleApiError(req, res, error, '[api] Failed to rename directory:', 'Failed to rename directory');
273
249
  }
274
250
  return true;
275
251
  }
@@ -295,7 +271,7 @@ async function handleDeleteDirectory({ workspaceMutationCoordinator }, req, res,
295
271
 
296
272
  jsonResponse(req, res, 200, { ok: true });
297
273
  } catch (error) {
298
- handleVaultError(req, res, error, '[api] Failed to delete directory:', 'Failed to delete directory');
274
+ handleApiError(req, res, error, '[api] Failed to delete directory:', 'Failed to delete directory');
299
275
  }
300
276
  return true;
301
277
  }
@@ -313,11 +289,11 @@ const ROUTE_TABLE = [
313
289
  ];
314
290
 
315
291
  export function createVaultApiCommandHandler({
316
- docxExporter = null,
292
+ renderDocx = null,
317
293
  vaultFileStore,
318
294
  workspaceMutationCoordinator = null,
319
295
  }) {
320
- const context = { docxExporter, vaultFileStore, workspaceMutationCoordinator };
296
+ const context = { renderDocx, vaultFileStore, workspaceMutationCoordinator };
321
297
 
322
298
  return async function handleVaultApiCommand(req, res, requestUrl) {
323
299
  for (const route of ROUTE_TABLE) {
@@ -6,26 +6,19 @@ import { join } from 'node:path';
6
6
  import { isImageAttachmentFilePath } from '../../../domain/file-kind.js';
7
7
  import { isIgnoredVaultEntry } from '../persistence/path-utils.js';
8
8
  import { parseJsonBody } from './request-body.js';
9
- import { jsonResponse, sendResponse, sendStreamResponse } from './http-response.js';
9
+ import {
10
+ createSafeAsciiFilename,
11
+ encodeContentDispositionFilename,
12
+ jsonResponse,
13
+ sendResponse,
14
+ sendStreamResponse,
15
+ } from './http-response.js';
10
16
 
11
17
  const SVG_MIME_TYPE = 'image/svg+xml';
12
18
  const SVG_ATTACHMENT_CSP = "default-src 'none'; img-src 'self' data: blob:; style-src 'unsafe-inline'; sandbox";
13
19
  const DEFAULT_MAX_ARCHIVE_ENTRIES = 10_000;
14
20
  const DEFAULT_MAX_DOWNLOAD_FILE_BYTES = 268_435_456;
15
21
 
16
- function encodeContentDispositionFilename(fileName) {
17
- return encodeURIComponent(String(fileName ?? ''))
18
- .replace(/['()*]/g, (character) => `%${character.charCodeAt(0).toString(16).toUpperCase()}`);
19
- }
20
-
21
- function createSafeAsciiFilename(fileName) {
22
- const fallback = String(fileName ?? '')
23
- .replace(/[^\x20-\x7E]+/g, '_')
24
- .replace(/["\\]/g, '_')
25
- .trim();
26
- return fallback || 'attachment';
27
- }
28
-
29
22
  function createAttachmentHeaders(attachment) {
30
23
  const fileName = basename(String(attachment?.path ?? 'attachment'));
31
24
  const headers = {
@@ -1,6 +1,12 @@
1
- export function createRequestError(statusCode, message) {
1
+ export function createRequestError(statusCode, message, { code = null, requestCode = null } = {}) {
2
2
  const error = new Error(message);
3
3
  error.statusCode = statusCode;
4
+ if (code) {
5
+ error.code = code;
6
+ }
7
+ if (requestCode) {
8
+ error.requestCode = requestCode;
9
+ }
4
10
  return error;
5
11
  }
6
12
 
@@ -0,0 +1,23 @@
1
+ import { getRequestErrorStatusCode } from './http-errors.js';
2
+ import { jsonResponse } from './http-response.js';
3
+
4
+ export function readRequestId(req) {
5
+ const value = String(req.headers['x-collabmd-request-id'] || '').trim();
6
+ return value ? value.slice(0, 120) : null;
7
+ }
8
+
9
+ export function handleApiError(req, res, error, logMessage, fallbackMessage) {
10
+ const statusCode = getRequestErrorStatusCode(error);
11
+ if (statusCode) {
12
+ const payload = { error: error.message };
13
+ if (typeof error?.requestCode === 'string') {
14
+ payload.code = error.requestCode;
15
+ }
16
+ jsonResponse(req, res, statusCode, payload);
17
+ return true;
18
+ }
19
+
20
+ console.error(logMessage, error.message);
21
+ jsonResponse(req, res, 500, { error: fallbackMessage });
22
+ return true;
23
+ }
@@ -7,6 +7,19 @@ import {
7
7
  const COMPRESSIBLE_CONTENT_TYPE_PATTERN = /^(?:text\/|application\/(?:javascript|json|xml)|image\/svg\+xml)/i;
8
8
  const MIN_COMPRESSIBLE_BYTES = 1024;
9
9
 
10
+ export function encodeContentDispositionFilename(fileName) {
11
+ return encodeURIComponent(String(fileName ?? ''))
12
+ .replace(/['()*]/g, (character) => `%${character.charCodeAt(0).toString(16).toUpperCase()}`);
13
+ }
14
+
15
+ export function createSafeAsciiFilename(fileName, fallback = 'attachment') {
16
+ const normalized = String(fileName ?? '')
17
+ .replace(/[^\x20-\x7E]+/g, '_')
18
+ .replace(/["\\]/g, '_')
19
+ .trim();
20
+ return normalized || fallback;
21
+ }
22
+
10
23
  export const SECURITY_HEADERS = {
11
24
  'Referrer-Policy': 'strict-origin-when-cross-origin',
12
25
  'X-Content-Type-Options': 'nosniff',