collabmd 0.1.51 → 0.1.52

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (584) hide show
  1. package/README.md +1 -1
  2. package/dist/client/assets/CodeMirrorEditor-UCMRAMCV-BEz2BKN1.js +1 -0
  3. package/dist/client/assets/KaTeX_AMS-Regular-BQhdFMY1.woff2 +0 -0
  4. package/dist/client/assets/KaTeX_AMS-Regular-DMm9YOAa.woff +0 -0
  5. package/dist/client/assets/KaTeX_AMS-Regular-DRggAlZN.ttf +0 -0
  6. package/dist/client/assets/KaTeX_Caligraphic-Bold-ATXxdsX0.ttf +0 -0
  7. package/dist/client/assets/KaTeX_Caligraphic-Bold-BEiXGLvX.woff +0 -0
  8. package/dist/client/assets/KaTeX_Caligraphic-Bold-Dq_IR9rO.woff2 +0 -0
  9. package/dist/client/assets/KaTeX_Caligraphic-Regular-CTRA-rTL.woff +0 -0
  10. package/dist/client/assets/KaTeX_Caligraphic-Regular-Di6jR-x-.woff2 +0 -0
  11. package/dist/client/assets/KaTeX_Caligraphic-Regular-wX97UBjC.ttf +0 -0
  12. package/dist/client/assets/KaTeX_Fraktur-Bold-BdnERNNW.ttf +0 -0
  13. package/dist/client/assets/KaTeX_Fraktur-Bold-BsDP51OF.woff +0 -0
  14. package/dist/client/assets/KaTeX_Fraktur-Bold-CL6g_b3V.woff2 +0 -0
  15. package/dist/client/assets/KaTeX_Fraktur-Regular-CB_wures.ttf +0 -0
  16. package/dist/client/assets/KaTeX_Fraktur-Regular-CTYiF6lA.woff2 +0 -0
  17. package/dist/client/assets/KaTeX_Fraktur-Regular-Dxdc4cR9.woff +0 -0
  18. package/dist/client/assets/KaTeX_Main-Bold-Cx986IdX.woff2 +0 -0
  19. package/dist/client/assets/KaTeX_Main-Bold-Jm3AIy58.woff +0 -0
  20. package/dist/client/assets/KaTeX_Main-Bold-waoOVXN0.ttf +0 -0
  21. package/dist/client/assets/KaTeX_Main-BoldItalic-DxDJ3AOS.woff2 +0 -0
  22. package/dist/client/assets/KaTeX_Main-BoldItalic-DzxPMmG6.ttf +0 -0
  23. package/dist/client/assets/KaTeX_Main-BoldItalic-SpSLRI95.woff +0 -0
  24. package/dist/client/assets/KaTeX_Main-Italic-3WenGoN9.ttf +0 -0
  25. package/dist/client/assets/KaTeX_Main-Italic-BMLOBm91.woff +0 -0
  26. package/dist/client/assets/KaTeX_Main-Italic-NWA7e6Wa.woff2 +0 -0
  27. package/dist/client/assets/KaTeX_Main-Regular-B22Nviop.woff2 +0 -0
  28. package/dist/client/assets/KaTeX_Main-Regular-Dr94JaBh.woff +0 -0
  29. package/dist/client/assets/KaTeX_Main-Regular-ypZvNtVU.ttf +0 -0
  30. package/dist/client/assets/KaTeX_Math-BoldItalic-B3XSjfu4.ttf +0 -0
  31. package/dist/client/assets/KaTeX_Math-BoldItalic-CZnvNsCZ.woff2 +0 -0
  32. package/dist/client/assets/KaTeX_Math-BoldItalic-iY-2wyZ7.woff +0 -0
  33. package/dist/client/assets/KaTeX_Math-Italic-DA0__PXp.woff +0 -0
  34. package/dist/client/assets/KaTeX_Math-Italic-flOr_0UB.ttf +0 -0
  35. package/dist/client/assets/KaTeX_Math-Italic-t53AETM-.woff2 +0 -0
  36. package/dist/client/assets/KaTeX_SansSerif-Bold-CFMepnvq.ttf +0 -0
  37. package/dist/client/assets/KaTeX_SansSerif-Bold-D1sUS0GD.woff2 +0 -0
  38. package/dist/client/assets/KaTeX_SansSerif-Bold-DbIhKOiC.woff +0 -0
  39. package/dist/client/assets/KaTeX_SansSerif-Italic-C3H0VqGB.woff2 +0 -0
  40. package/dist/client/assets/KaTeX_SansSerif-Italic-DN2j7dab.woff +0 -0
  41. package/dist/client/assets/KaTeX_SansSerif-Italic-YYjJ1zSn.ttf +0 -0
  42. package/dist/client/assets/KaTeX_SansSerif-Regular-BNo7hRIc.ttf +0 -0
  43. package/dist/client/assets/KaTeX_SansSerif-Regular-CS6fqUqJ.woff +0 -0
  44. package/dist/client/assets/KaTeX_SansSerif-Regular-DDBCnlJ7.woff2 +0 -0
  45. package/dist/client/assets/KaTeX_Script-Regular-C5JkGWo-.ttf +0 -0
  46. package/dist/client/assets/KaTeX_Script-Regular-D3wIWfF6.woff2 +0 -0
  47. package/dist/client/assets/KaTeX_Script-Regular-D5yQViql.woff +0 -0
  48. package/dist/client/assets/KaTeX_Size1-Regular-C195tn64.woff +0 -0
  49. package/dist/client/assets/KaTeX_Size1-Regular-Dbsnue_I.ttf +0 -0
  50. package/dist/client/assets/KaTeX_Size1-Regular-mCD8mA8B.woff2 +0 -0
  51. package/dist/client/assets/KaTeX_Size2-Regular-B7gKUWhC.ttf +0 -0
  52. package/dist/client/assets/KaTeX_Size2-Regular-Dy4dx90m.woff2 +0 -0
  53. package/dist/client/assets/KaTeX_Size2-Regular-oD1tc_U0.woff +0 -0
  54. package/dist/client/assets/KaTeX_Size3-Regular-CTq5MqoE.woff +0 -0
  55. package/dist/client/assets/KaTeX_Size3-Regular-DgpXs0kz.ttf +0 -0
  56. package/dist/client/assets/KaTeX_Size4-Regular-BF-4gkZK.woff +0 -0
  57. package/dist/client/assets/KaTeX_Size4-Regular-DWFBv043.ttf +0 -0
  58. package/dist/client/assets/KaTeX_Size4-Regular-Dl5lxZxV.woff2 +0 -0
  59. package/dist/client/assets/KaTeX_Typewriter-Regular-C0xS9mPB.woff +0 -0
  60. package/dist/client/assets/KaTeX_Typewriter-Regular-CO6r4hn1.woff2 +0 -0
  61. package/dist/client/assets/KaTeX_Typewriter-Regular-D3Ib7_Hf.ttf +0 -0
  62. package/dist/client/assets/Middleware-DUgFSleI.js +1 -0
  63. package/dist/client/assets/_basePickBy-QJXUw_pr.js +1 -0
  64. package/dist/client/assets/_baseUniq-DR4vVjyC.js +1 -0
  65. package/dist/client/assets/abnfDiagram-O67JEVCF-Dwt6a0Ds.js +1 -0
  66. package/dist/client/assets/abnfDiagram-VCTEODGH-DxNxad6-.js +1 -0
  67. package/dist/client/assets/architecture-7GRP2DOG-BBwRXFv3.js +1 -0
  68. package/dist/client/assets/architecture-7GRP2DOG-DJVtYNt-.js +1 -0
  69. package/dist/client/assets/architectureDiagram-5GKGNRK7-C1uvg5id.js +36 -0
  70. package/dist/client/assets/architectureDiagram-NJMV4G6O-D5CGiX3G.js +36 -0
  71. package/dist/client/assets/{babel-CY5KOv-I.js → babel-Bi_28hhi.js} +1 -1
  72. package/dist/client/assets/band-D-Cum8PO.js +1 -0
  73. package/dist/client/assets/blockDiagram-BEXU5L5S-BgTM0var.js +140 -0
  74. package/dist/client/assets/blockDiagram-I7D4REHJ-B2YonsoG.js +129 -0
  75. package/dist/client/assets/{browser-BKLM0ThC-IxjwuOIz-DyJcVMFR.js → browser-BKLM0ThC-IxjwuOIz-C0mP17s1.js} +1 -1
  76. package/dist/client/assets/{browser-utils-DbXSMI-6.js → browser-utils-vlHL9goC.js} +1 -1
  77. package/dist/client/assets/{c4Diagram-7LVT6UL2-VAk1HPmz.js → c4Diagram-7LVT6UL2-r4IwomZm.js} +2 -2
  78. package/dist/client/assets/c4Diagram-YGBWAQC7-_xZPrNkB.js +38 -0
  79. package/dist/client/assets/channel-CgcHBnmr.js +1 -0
  80. package/dist/client/assets/chunk-2E4U76K2-CIQUuV9n.js +1 -0
  81. package/dist/client/assets/chunk-2Q5K7J3B-BMFG3ur0.js +1 -0
  82. package/dist/client/assets/{chunk-2ZTRR5NV-C2qZJila.js → chunk-2ZTRR5NV-CnDP55cn.js} +1 -1
  83. package/dist/client/assets/chunk-2ZTRR5NV-DcPRfelM.js +2 -0
  84. package/dist/client/assets/chunk-3FUC2YCW-8tZlhTGX.js +1 -0
  85. package/dist/client/assets/{chunk-3Z5EZCMW-DMniOlPd.js → chunk-3Z5EZCMW-BAnA6eQ7.js} +1 -1
  86. package/dist/client/assets/chunk-3Z5EZCMW-Yx4Q5AcN.js +1 -0
  87. package/dist/client/assets/chunk-4HAMMTFA-q0ldNVvr.js +62 -0
  88. package/dist/client/assets/chunk-4SOEAONT-C3fufoVl.js +40 -0
  89. package/dist/client/assets/chunk-5DYCD2WN-BKWCKnK-.js +1 -0
  90. package/dist/client/assets/{chunk-5V3GS4D5-i-ZDOEnP.js → chunk-5V3GS4D5-B5uC2oxu.js} +1 -1
  91. package/dist/client/assets/chunk-5V3GS4D5-BR7kgIgJ.js +1 -0
  92. package/dist/client/assets/chunk-5VM5RSS4-hE9rU_bl.js +15 -0
  93. package/dist/client/assets/chunk-6AEJRKK7-DTVZj5bY.js +1 -0
  94. package/dist/client/assets/{chunk-6AZGARVD-BB6FqMl-.js → chunk-6AZGARVD--pTGpDnx.js} +1 -1
  95. package/dist/client/assets/chunk-6AZGARVD-CnZDr4Cj.js +1 -0
  96. package/dist/client/assets/{chunk-6EIED4P4-DdUJkP0f.js → chunk-6EIED4P4-Bp8dpTvX.js} +1 -1
  97. package/dist/client/assets/chunk-6EIED4P4-DBVWq7Tz.js +1 -0
  98. package/dist/client/assets/{chunk-6K3QC6MW-CqVsVn-y.js → chunk-6K3QC6MW-DGVRzL6v.js} +1 -1
  99. package/dist/client/assets/chunk-6K3QC6MW-JnuvEGV4.js +1 -0
  100. package/dist/client/assets/{chunk-6TQVIW2G-DKlLbNIP.js → chunk-6TQVIW2G-BSj0l_pu.js} +1 -1
  101. package/dist/client/assets/chunk-6TQVIW2G-DgBX-Pv0.js +1 -0
  102. package/dist/client/assets/chunk-742MDFTN-D1nh6vNv.js +1 -0
  103. package/dist/client/assets/{chunk-747NJXEK-BFkZPlab.js → chunk-747NJXEK-BjqqAsS9.js} +1 -1
  104. package/dist/client/assets/chunk-747NJXEK-Cur1aosP.js +2 -0
  105. package/dist/client/assets/chunk-75Z2AOVW-DitkSoSG.js +2 -0
  106. package/dist/client/assets/chunk-7INBJB4K-CDmiHbaX.js +62 -0
  107. package/dist/client/assets/chunk-7M6MHVWA-BDakkknV.js +213 -0
  108. package/dist/client/assets/chunk-7PRAP22T-9uTvtc_-.js +1 -0
  109. package/dist/client/assets/{chunk-CLGD4ZFX-Cmtx89ht.js → chunk-CLGD4ZFX-BfYJtJm1.js} +1 -1
  110. package/dist/client/assets/chunk-DU6HZSFF-CWlP1Dk_.js +125 -0
  111. package/dist/client/assets/chunk-DUW6YSOI-Dgx8z5s3.js +1 -0
  112. package/dist/client/assets/chunk-DYU5D34O-DN0WQZBm.js +1 -0
  113. package/dist/client/assets/{chunk-F27PBJKO-Dg3H6KLL.js → chunk-F27PBJKO-DPcsPcEs.js} +1 -1
  114. package/dist/client/assets/{chunk-FOHPRMQF-DHwB1DNv.js → chunk-FOHPRMQF-Dmmo5Kak.js} +9 -9
  115. package/dist/client/assets/chunk-FOHPRMQF-DzxwRta7.js +161 -0
  116. package/dist/client/assets/chunk-GMAD6QVW-Bgk8qnty.js +8 -0
  117. package/dist/client/assets/chunk-GNY47TPC-CTrH5O5R.js +1 -0
  118. package/dist/client/assets/{chunk-SVP7TREG-XlsB_ZMZ.js → chunk-GTNCS2PH-ChgkzEIi.js} +1 -1
  119. package/dist/client/assets/chunk-GVQU2GXP-CQ8cl-Uu.js +1 -0
  120. package/dist/client/assets/chunk-GWA4HPMP-CGmv2yIq.js +1 -0
  121. package/dist/client/assets/{chunk-I5DQTOEV-Hm2LfiYI.js → chunk-I5DQTOEV-B98XA8VK.js} +1 -1
  122. package/dist/client/assets/chunk-I5DQTOEV-aBZooNp1.js +1 -0
  123. package/dist/client/assets/{chunk-ICYGCRZG-749o-pGJ.js → chunk-ICYGCRZG-D97UeqJs.js} +1 -1
  124. package/dist/client/assets/chunk-ICYGCRZG-odvlDZyA.js +1 -0
  125. package/dist/client/assets/{chunk-IH6LHLGP-CC6I9F3i.js → chunk-IH6LHLGP-BNevEHZK.js} +1 -1
  126. package/dist/client/assets/chunk-IH6LHLGP-CvXe34hB.js +1 -0
  127. package/dist/client/assets/{chunk-IMKFNOWR-3F6NhHUP.js → chunk-IMKFNOWR-CBqxfpcP.js} +2 -2
  128. package/dist/client/assets/chunk-J5ZVWO5B-oDCd-gWO.js +1 -0
  129. package/dist/client/assets/chunk-JWPE2WC7-GDilnS5Y.js +1 -0
  130. package/dist/client/assets/{chunk-KI3K4JFJ-Rma-0k_M.js → chunk-KI3K4JFJ-D5XCPRZv.js} +1 -1
  131. package/dist/client/assets/chunk-KI3K4JFJ-FTtDwx3-.js +1 -0
  132. package/dist/client/assets/chunk-L3NEJ4N5-BflzkdTI.js +1 -0
  133. package/dist/client/assets/{chunk-LNGE3PJU-DWpGwHrW.js → chunk-LNGE3PJU-5-SxdO55.js} +1 -1
  134. package/dist/client/assets/chunk-LNGE3PJU-5nWSl6jJ.js +34 -0
  135. package/dist/client/assets/chunk-MBY4JIJT-DTJ4UcAm.js +8 -0
  136. package/dist/client/assets/chunk-NETBCI7D-CmUwDWUZ.js +1 -0
  137. package/dist/client/assets/chunk-O7XYJQB3-D0_ZY2za.js +126 -0
  138. package/dist/client/assets/chunk-OSK3NFVY-DqeKV_pg.js +10 -0
  139. package/dist/client/assets/{chunk-OUJLGHUK-D0j2JRSg.js → chunk-OUJLGHUK-75UXlPjl.js} +1 -1
  140. package/dist/client/assets/chunk-OUJLGHUK-DA95-S9B.js +2 -0
  141. package/dist/client/assets/{chunk-P2QGCYS3-Du8EtwOa.js → chunk-P2QGCYS3-BA--DhpW.js} +1 -1
  142. package/dist/client/assets/chunk-POPQ4Y6H-V_NEc45n.js +1 -0
  143. package/dist/client/assets/chunk-PWAF6VOD-D_kLse-N.js +1 -0
  144. package/dist/client/assets/{chunk-ZPMXAHWN-Dt0TxJa6.js → chunk-RUX4WMZV-BGnd3s_C.js} +4 -4
  145. package/dist/client/assets/{chunk-SHT3W25Y-BKaI8jZO.js → chunk-SHT3W25Y-YM3S-A_M.js} +5 -5
  146. package/dist/client/assets/chunk-SVP7TREG-DdNhDOmW.js +88 -0
  147. package/dist/client/assets/{chunk-TICWLB2K-Cpp2z8yK.js → chunk-TICWLB2K-BGGgCr4x.js} +3 -3
  148. package/dist/client/assets/chunk-TLUHSLCS-DCZhIDYA.js +1 -0
  149. package/dist/client/assets/chunk-UA2S7LBM-DicYDjDM.js +1 -0
  150. package/dist/client/assets/{chunk-UY3FDG6J-CnmaAkG5.js → chunk-UY3FDG6J-DqSM_0FB.js} +1 -1
  151. package/dist/client/assets/chunk-UY3FDG6J-QT-rkt0y.js +1 -0
  152. package/dist/client/assets/chunk-WEXAMYUT-DDlVNp8J.js +1 -0
  153. package/dist/client/assets/chunk-X3CZISLH-BixgQztF.js +1 -0
  154. package/dist/client/assets/chunk-X3CZISLH-DwWpRaN8.js +1 -0
  155. package/dist/client/assets/{chunk-XHIXRSVI-BFQ6B8BE.js → chunk-XHIXRSVI-BSN7JlfK.js} +1 -1
  156. package/dist/client/assets/chunk-XHIXRSVI-DN_fEwws.js +1 -0
  157. package/dist/client/assets/chunk-XXDRQBXY-C7hQHDmQ.js +1 -0
  158. package/dist/client/assets/{chunk-XXDRQBXY-BvKO0v-W.js → chunk-XXDRQBXY-CdRN9Akd.js} +1 -1
  159. package/dist/client/assets/chunk-Y2CYZVJY-BbRBGnmc.js +1 -0
  160. package/dist/client/assets/chunk-Z7XXMR3K-P4Vaq8hD.js +10 -0
  161. package/dist/client/assets/chunk-ZIGJFQKS-b8OUHKK5.js +2 -0
  162. package/dist/client/assets/classDiagram-ZZMXUADV-QLbh_Nkf.js +1 -0
  163. package/dist/client/assets/classDiagram-v2-NBCMYWYE-3TQORq33.js +217 -0
  164. package/dist/client/assets/classDiagram-v2-VYDZK3BY-QLbh_Nkf.js +1 -0
  165. package/dist/client/assets/clone-C1hp9FUh.js +1 -0
  166. package/dist/client/assets/comment-markdown-renderer-Bxi_JRSR.js +1 -0
  167. package/dist/client/assets/comment-thread-store-CHvy8GF8.js +1 -0
  168. package/dist/client/assets/cose-bilkent-JH36ORCC-Czr0rwGr.js +1 -0
  169. package/dist/client/assets/cose-bilkent-JH36ORCC-DLmEf9HS.js +1 -0
  170. package/dist/client/assets/cynefin-OW5HDTMX-CF3N9j1_.js +1 -0
  171. package/dist/client/assets/cynefin-OW5HDTMX-e-Quc9Yl.js +1 -0
  172. package/dist/client/assets/cynefinDiagram-5FMLGOSQ-DTnLZaO7.js +62 -0
  173. package/dist/client/assets/cynefinDiagram-VND7K2PF-DwfMZ3vk.js +62 -0
  174. package/dist/client/assets/cytoscape-cose-bilkent-NdTYBUiT.js +1 -0
  175. package/dist/client/assets/cytoscape-fcose-DE9_QRG_.js +1 -0
  176. package/dist/client/assets/cytoscape.esm-EK2DW5Qr.js +321 -0
  177. package/dist/client/assets/dagre-6A5THRUB-DewyAGK6.js +4 -0
  178. package/dist/client/assets/dagre-D7FiCLLP.js +1 -0
  179. package/dist/client/assets/{dagre-GXQ25YYZ-BSfKCfy7.js → dagre-GXQ25YYZ-Vtyx08Qh.js} +2 -2
  180. package/dist/client/assets/deferred-collab-D4cxEdad.css +1 -0
  181. package/dist/client/assets/deferred-preview-BAXYgf4T.css +1 -0
  182. package/dist/client/assets/diagram-22UHCM2B-DbZirFfl.js +200 -0
  183. package/dist/client/assets/diagram-3UASUU5V-DmhdYv6_.js +24 -0
  184. package/dist/client/assets/diagram-ATOU4E4O-B5uX-jVO.js +3 -0
  185. package/dist/client/assets/diagram-CDSNMT55-D_qyS11R.js +30 -0
  186. package/dist/client/assets/diagram-MLGK6HIB-DIBG6Ivu.js +24 -0
  187. package/dist/client/assets/diagram-MPIPVDR6-D9XsALDV.js +41 -0
  188. package/dist/client/assets/{diagram-S7CK7UJ4-D7KaM9yj.js → diagram-S7CK7UJ4-CGTzfo2f.js} +3 -3
  189. package/dist/client/assets/diagram-UQ7AKVKN-CWZS8QtB.js +41 -0
  190. package/dist/client/assets/{diagram-VSXAHHWV-B3-U-Q2E.js → diagram-VSXAHHWV-DaO1nOZF.js} +3 -3
  191. package/dist/client/assets/diagram-VX7I27RA-B54P6Cyf.js +24 -0
  192. package/dist/client/assets/diagram-Z3DM3KII-Cl2EXiXp.js +24 -0
  193. package/dist/client/assets/direct-engine-DdrQKpgq-4QysbH_V.js +5 -0
  194. package/dist/client/assets/dist-B7fBbwrO.js +1 -0
  195. package/dist/client/assets/{dist-DVXzbeDx.js → dist-BVCNc-Es.js} +1 -1
  196. package/dist/client/assets/dist-BYBF4LtZ.js +1 -0
  197. package/dist/client/assets/{dist-B_B4XLmq.js → dist-B_1hMrc6.js} +1 -1
  198. package/dist/client/assets/{dist-EWJYvBK1.js → dist-BfpAc922.js} +1 -1
  199. package/dist/client/assets/dist-BnVaoRgZ.js +1 -0
  200. package/dist/client/assets/{dist-kiD2GIsD.js → dist-Bog8M5U3.js} +6 -6
  201. package/dist/client/assets/dist-CAG5sIOj.js +1 -0
  202. package/dist/client/assets/{dist-CrWzIWEE.js → dist-CKf7LlAo.js} +1 -1
  203. package/dist/client/assets/{dist-CqXVyYoH.js → dist-CUsXdnU4.js} +1 -1
  204. package/dist/client/assets/{dist-B7XMN9AT.js → dist-CXOUa90Q.js} +1 -1
  205. package/dist/client/assets/dist-CYMCikZo.js +1 -0
  206. package/dist/client/assets/dist-CYfPeupF.js +1 -0
  207. package/dist/client/assets/dist-Ch6Sr9KF.js +28 -0
  208. package/dist/client/assets/dist-Ck-B8onw.js +2 -0
  209. package/dist/client/assets/dist-CrkYYcOU.js +1 -0
  210. package/dist/client/assets/{dist-BR81yxMt.js → dist-CsQTfQFi.js} +1 -1
  211. package/dist/client/assets/dist-Cu5Ze2cs.js +6 -0
  212. package/dist/client/assets/{dist-Drv_wZYC.js → dist-CvVoyTRF.js} +1 -1
  213. package/dist/client/assets/{dist-CbDyXgCo.js → dist-D4kDR0g8.js} +1 -1
  214. package/dist/client/assets/dist-D8LnhZzy.js +1 -0
  215. package/dist/client/assets/{dist-CELhfKzh.js → dist-DGa-2MNX.js} +2 -2
  216. package/dist/client/assets/{dist-CO0-4CuV.js → dist-DI6c02Da.js} +8 -8
  217. package/dist/client/assets/{dist-DJAMplZI.js → dist-DNONgI1P.js} +2 -2
  218. package/dist/client/assets/dist-DVBYH83t.js +1 -0
  219. package/dist/client/assets/dist-DX6qtdxv.js +1 -0
  220. package/dist/client/assets/{dist-Bx3QkS-3.js → dist-Da-jLrCf.js} +1 -1
  221. package/dist/client/assets/dist-DofvCYzJ.js +1 -0
  222. package/dist/client/assets/{dist-BzFSJM0U.js → dist-Dx37MHWs.js} +1 -1
  223. package/dist/client/assets/{dist-Bdy9ZRzd.js → dist-GTGhtpyW.js} +1 -1
  224. package/dist/client/assets/{dist-nxQErAaK.js → dist-W0FoeIxk.js} +9 -9
  225. package/dist/client/assets/{dist-By7ieqAf.js → dist-Y6zYRI-A.js} +1 -1
  226. package/dist/client/assets/{dist-Bfxzlnrf.js → dist-jVKfryIL.js} +1 -1
  227. package/dist/client/assets/{dist-DCpIH3-_.js → dist-zHDLm1oE.js} +1 -1
  228. package/dist/client/assets/{document-formatter-Qdiq9uJs.js → document-formatter-gO8qM2qY.js} +1 -1
  229. package/dist/client/assets/{drawioEditor-CHf1vtdQ.js → drawioEditor-DCkWweiy.js} +2 -2
  230. package/dist/client/assets/duration-BiuFXtXd.js +1 -0
  231. package/dist/client/assets/ebnfDiagram-PWID7BFC-PfC84FyI.js +1 -0
  232. package/dist/client/assets/ebnfDiagram-ZINNZB2B-DYvm_QtE.js +1 -0
  233. package/dist/client/assets/editor-session-DxRyr4EM.js +14 -0
  234. package/dist/client/assets/elk-276RUBZZ-B8LB3Pac.js +27 -0
  235. package/dist/client/assets/embedded-editor-base-elU0Avik.css +1 -0
  236. package/dist/client/assets/{embedpdf-DA4bA119-E8wZ11J2.js → embedpdf-DA4bA119-DsoNiPlQ.js} +4 -4
  237. package/dist/client/assets/{embedpdf-LUXDBD3-.js → embedpdf-DyOonRvx.js} +1 -1
  238. package/dist/client/assets/{en-2RFA324Y-BsuNJTcL.js → en-GNC3RJIS-CEy_oGTd.js} +1 -1
  239. package/dist/client/assets/erDiagram-OPXOYQCR-o8GRv8A_.js +99 -0
  240. package/dist/client/assets/{erDiagram-RLTQ6QDP-CWrH1UJ9.js → erDiagram-RLTQ6QDP-C9cJl5NB.js} +2 -2
  241. package/dist/client/assets/esm-BzZ1JFVo.js +65 -0
  242. package/dist/client/assets/{estree-CuT_pB8K.js → estree-DCT3Jm65.js} +4 -4
  243. package/dist/client/assets/eventmodeling-NTZA5JFV-CDy1bN6j.js +1 -0
  244. package/dist/client/assets/eventmodeling-NTZA5JFV-Dxtv5D-P.js +1 -0
  245. package/dist/client/assets/{excalidraw-element-link-iA6zo0_f.js → excalidraw-element-link-CGZ5934B.js} +1 -1
  246. package/dist/client/assets/{excalidrawEditor-DDE0n1Pk.css → excalidrawEditor-BCTFp_CV.css} +1 -1
  247. package/dist/client/assets/excalidrawEditor-BVfSxjSO.js +9 -0
  248. package/dist/client/assets/export-page-BCo_e15t.js +46 -0
  249. package/dist/client/assets/exportDocument-Ba-n1X4U.css +1 -0
  250. package/dist/client/assets/exportDocument-DP6oE_or.js +2 -0
  251. package/dist/client/assets/{fa-IR-FIYUE2GQ-C865Nx3X.js → fa-IR-I4JNTJHK-CFtHZqoT.js} +1 -1
  252. package/dist/client/assets/file-search-3hYF4cYa.js +1 -0
  253. package/dist/client/assets/flowDiagram-HODETNUW-Bq4470NR.js +1 -0
  254. package/dist/client/assets/flowDiagram-KWPJA3E3-DQG9qGiU.js +1 -0
  255. package/dist/client/assets/forth-D6RzAl64.js +1 -0
  256. package/dist/client/assets/ganttDiagram-EL5Y4UJY-x40PW0Ah.js +292 -0
  257. package/dist/client/assets/ganttDiagram-FUAMR5RP-BQpsI7gQ.js +292 -0
  258. package/dist/client/assets/gitGraph-4MIJSDKK-B-rpDYbz.js +1 -0
  259. package/dist/client/assets/gitGraph-4MIJSDKK-ZaBIE4Lb.js +1 -0
  260. package/dist/client/assets/gitGraphDiagram-WWUBYQGX-ahsNaZsp.js +106 -0
  261. package/dist/client/assets/gitGraphDiagram-X574FWY7-wbs_2m9f.js +106 -0
  262. package/dist/client/assets/graphlib-C9Tl7QrK.js +1 -0
  263. package/dist/client/assets/{html-Cdnr2qzU.js → html-CBXMuS97.js} +2 -2
  264. package/dist/client/assets/html-DTuc_pxj.js +1 -0
  265. package/dist/client/assets/{id-ID-EOMR5R3I-CGQwUjoL.js → id-ID-2WY7E4VX-CCAeQpPr.js} +2 -2
  266. package/dist/client/assets/image-EJJKRVD3-BQfi5nWJ.js +1 -0
  267. package/dist/client/assets/{image-blob-reduce.esm-Dj7YBvMv.js → image-blob-reduce.esm-BFq-Mx5V.js} +2 -2
  268. package/dist/client/assets/index-BxAuGDoN.css +1 -0
  269. package/dist/client/assets/index-uw9O0z1c.js +1112 -0
  270. package/dist/client/assets/info-A6RAGUB7-BcGxhjED.js +1 -0
  271. package/dist/client/assets/info-A6RAGUB7-BlutK7BT.js +1 -0
  272. package/dist/client/assets/infoDiagram-27XIBGKW-MrZyptIy.js +2 -0
  273. package/dist/client/assets/infoDiagram-VRGFBTTK-KkUjDRAQ.js +2 -0
  274. package/dist/client/assets/{ishikawaDiagram-5VMMS53U-CRy9vIS5.js → ishikawaDiagram-5VMMS53U-Bnt9yM0O.js} +2 -2
  275. package/dist/client/assets/ishikawaDiagram-OU5B5YK6-Di9BcpOY.js +70 -0
  276. package/dist/client/assets/{it-IT-FC2VTM3L-KTijNcUe.js → it-IT-INVHSAJF-DytAgndh.js} +1 -1
  277. package/dist/client/assets/javascript-B9I2pbsP.js +1 -0
  278. package/dist/client/assets/javascript-DctB8BJo.js +1 -0
  279. package/dist/client/assets/{journeyDiagram-3NMN7TZE-D4ZR_s9J.js → journeyDiagram-3NMN7TZE-Bl0abK1r.js} +1 -1
  280. package/dist/client/assets/journeyDiagram-ZHPQQLJL-J-sGrs9e.js +139 -0
  281. package/dist/client/assets/jsx-runtime-DKj5X9O4.js +1 -0
  282. package/dist/client/assets/kanban-definition-PNTS6WVX-5ZDV_yIa.js +89 -0
  283. package/dist/client/assets/{kanban-definition-UXKFOSKX-CIDTmu5g.js → kanban-definition-UXKFOSKX-DMgUfNt0.js} +10 -10
  284. package/dist/client/assets/{katex-CXMH3UgJ.js → katex-9NBMfU68.js} +2 -2
  285. package/dist/client/assets/katex-ZlcWpGUi.js +257 -0
  286. package/dist/client/assets/line-DEbP8Ok6.js +1 -0
  287. package/dist/client/assets/linear-DExL6ILt.js +1 -0
  288. package/dist/client/assets/{lobby-presence-Rdjnc0_0.js → lobby-presence-Cz5jGOPg.js} +1 -1
  289. package/dist/client/assets/{lua-CL1SqxuB.js → lua-zbJo2mq3.js} +1 -1
  290. package/dist/client/assets/{markdown-CByV-4CU.js → markdown-Bo71X2X2.js} +8 -8
  291. package/dist/client/assets/markdown-it-DpvIRaVq.js +13 -0
  292. package/dist/client/assets/markdown-math-CyyBVuDO.js +517 -0
  293. package/dist/client/assets/merge-CALoRt3l.js +1 -0
  294. package/dist/client/assets/{mermaid-parser.core-DrdLA3p0.js → mermaid-parser.core-Bpogunsh.js} +1 -1
  295. package/dist/client/assets/mermaid-parser.core-DBy--Jc0.js +3 -0
  296. package/dist/client/assets/mermaid.core-BeOUPE3Q.js +10 -0
  297. package/dist/client/assets/mindmap-definition-NLK3R4M7-ByVb-0vj.js +96 -0
  298. package/dist/client/assets/{mindmap-definition-YA3MSWOX-DO8NB9VH.js → mindmap-definition-YA3MSWOX-DBZN5_GH.js} +29 -29
  299. package/dist/client/assets/{nginx-BMaDbqW3.js → nginx-8H7HVH4w.js} +1 -1
  300. package/dist/client/assets/packet-AYTQ26CC-CqpSjTWl.js +1 -0
  301. package/dist/client/assets/packet-AYTQ26CC-DvbY8dI6.js +1 -0
  302. package/dist/client/assets/pegDiagram-GJSIUBJH-aost1sSO.js +1 -0
  303. package/dist/client/assets/pegDiagram-XKGWAZYB-DRo8CZu3.js +1 -0
  304. package/dist/client/assets/percentages-LWOC67ZH-VhvllE7L.js +1 -0
  305. package/dist/client/assets/{pica-xkWDouSg.js → pica-BPrp-GK1.js} +1 -1
  306. package/dist/client/assets/pie-DzWLGKAD.js +1 -0
  307. package/dist/client/assets/pie-WAS4IAKB-Bg2eCNl5.js +1 -0
  308. package/dist/client/assets/pie-WAS4IAKB-DWSm9SSD.js +1 -0
  309. package/dist/client/assets/pieDiagram-5QR66LMP-BICdpEuz.js +39 -0
  310. package/dist/client/assets/pieDiagram-E7YTZNPT-CZThaHsc.js +39 -0
  311. package/dist/client/assets/{preload-helper-CtT0-S4g.js → preload-helper-BAlEavIC.js} +1 -1
  312. package/dist/client/assets/preview-render-compiler-ktU0SXxY.js +43 -0
  313. package/dist/client/assets/preview-render-profile-D652PAjA.js +1 -0
  314. package/dist/client/assets/preview-render-worker-BI2bFVqM.js +575 -0
  315. package/dist/client/assets/prod-DU-0VfI7.js +145 -0
  316. package/dist/client/assets/prod-cXUNdmYV.js +1 -0
  317. package/dist/client/assets/{pug-Wky5Dnfy.js → pug-CqqUmdG7.js} +1 -1
  318. package/dist/client/assets/purify.es-go7v6Te-.js +3 -0
  319. package/dist/client/assets/{quadrantDiagram-AXDQQJYC-fJE7iAxt.js → quadrantDiagram-AXDQQJYC-C5iowkl_.js} +3 -3
  320. package/dist/client/assets/quadrantDiagram-O4NWA36T-Bgx5bF97.js +7 -0
  321. package/dist/client/assets/quick-switcher-controller-DSlOwOsU.js +1 -0
  322. package/dist/client/assets/radar-RG4KPBEZ-BfNQUEQy.js +1 -0
  323. package/dist/client/assets/radar-RG4KPBEZ-DxExotg6.js +1 -0
  324. package/dist/client/assets/railroad-74A4TZTK-BaQ6U6eJ.js +1 -0
  325. package/dist/client/assets/railroad-74A4TZTK-FfHmeIQk.js +1 -0
  326. package/dist/client/assets/railroad-abnf-HS5TGJTU-BJ3KZw7J.js +1 -0
  327. package/dist/client/assets/railroad-abnf-HS5TGJTU-CLkdDRsJ.js +1 -0
  328. package/dist/client/assets/railroad-ebnf-LZEXJU2U-B162zvcG.js +1 -0
  329. package/dist/client/assets/railroad-ebnf-LZEXJU2U-DA0sEq7w.js +1 -0
  330. package/dist/client/assets/railroad-peg-WCYAUIDC-CGs5GeJ5.js +1 -0
  331. package/dist/client/assets/railroad-peg-WCYAUIDC-DCmlICzO.js +1 -0
  332. package/dist/client/assets/railroadDiagram-O6MQD6OU-BTt_rKjT.js +1 -0
  333. package/dist/client/assets/railroadDiagram-XR7U4H2S-DbVoNgSz.js +1 -0
  334. package/dist/client/assets/{requirementDiagram-BXWQKSXE-Balm0WW8.js → requirementDiagram-BXWQKSXE-BkvazG7r.js} +1 -1
  335. package/dist/client/assets/requirementDiagram-PLB6GJNP-BT0j9C40.js +84 -0
  336. package/dist/client/assets/sankeyDiagram-IPEJSGJF-X1BCUIrf.js +40 -0
  337. package/dist/client/assets/sankeyDiagram-P5KCCOFB-C_IemB9h.js +40 -0
  338. package/dist/client/assets/sankeyLinkHorizontal-usjP1-Cg.js +1 -0
  339. package/dist/client/assets/sequenceDiagram-PO4LG4MO-B-2QfXhV.js +169 -0
  340. package/dist/client/assets/{sequenceDiagram-WJ2MYXX4-BL1j3Sn-.js → sequenceDiagram-WJ2MYXX4-CxFBgLGd.js} +3 -3
  341. package/dist/client/assets/{sieve-BAxa3IjF.js → sieve-tLWDfEkZ.js} +1 -1
  342. package/dist/client/assets/sizeCapture-INFHLROL-B0uUizjq.js +1 -1
  343. package/dist/client/assets/sizeCapture-INFHLROL-DrzwYt5z.js +1 -0
  344. package/dist/client/assets/sl-SI-QY5KCFGA-RZhwMpQL.js +8 -0
  345. package/dist/client/assets/solr-B78wSQJQ.js +1 -0
  346. package/dist/client/assets/src-XiVvaevx.js +1 -0
  347. package/dist/client/assets/stateDiagram-D77RDMKH-BaSQ6Owj.js +1 -0
  348. package/dist/client/assets/stateDiagram-v2-GCMORJYK-CsVcfwVp.js +291 -0
  349. package/dist/client/assets/stateDiagram-v2-MP3YSRHH-CLlwrdvU.js +1 -0
  350. package/dist/client/assets/sv-SE-O3OFCY3J-DnS86_7q.js +12 -0
  351. package/dist/client/assets/swimlanes-2SLR337P-CnYTVqRX.js +1 -0
  352. package/dist/client/assets/swimlanes-42K2YHIH-CALFEmiS.js +1 -0
  353. package/dist/client/assets/swimlanesDiagram-TC7HE7FX-Bh4tmz27.js +8 -0
  354. package/dist/client/assets/swimlanesDiagram-VR7AAH4N-xhehUG9e.js +8 -0
  355. package/dist/client/assets/th-TH-WLSZUSBX-DHehoYR2.js +1 -0
  356. package/dist/client/assets/{timeline-definition-24CTP7MA-7pch5JAr.js → timeline-definition-24CTP7MA-zse-5Dbm.js} +5 -5
  357. package/dist/client/assets/timeline-definition-EJHVYXUP-BhqPlKkN.js +120 -0
  358. package/dist/client/assets/treeView-Q6P3EWNA-BvHOzbu9.js +1 -0
  359. package/dist/client/assets/treeView-Q6P3EWNA-Cccy0ngL.js +1 -0
  360. package/dist/client/assets/treemap-CxZTjHiH.js +1 -0
  361. package/dist/client/assets/treemap-WGGIJYW6-oety7paS.js +1 -0
  362. package/dist/client/assets/treemap-WGGIJYW6-sMRCjCtX.js +1 -0
  363. package/dist/client/assets/usecaseDiagram-POWQR4AR-DR2LHQYs.js +328 -0
  364. package/dist/client/assets/v4-DDdyfk2q.js +1 -0
  365. package/dist/client/assets/{vault-api-client-QjZ_T03l.js → vault-api-client-BQxLVPeF.js} +1 -1
  366. package/dist/client/assets/vault-paths-BT-6nztu.js +1 -0
  367. package/dist/client/assets/venn.esm-C5rDfA9t.js +7 -0
  368. package/dist/client/assets/vennDiagram-4TSXK5OY-DgHr6cJD.js +28 -0
  369. package/dist/client/assets/vennDiagram-UO4OBE2U-BRwLn2Q1.js +28 -0
  370. package/dist/client/assets/{verilog-7LoJAqYT.js → verilog-CjI9Y6RI.js} +1 -1
  371. package/dist/client/assets/wardley-WFR3VGLG-BdwDpX_I.js +1 -0
  372. package/dist/client/assets/wardley-WFR3VGLG-Y7xty_3m.js +1 -0
  373. package/dist/client/assets/{wardleyDiagram-VM6X3IG4-BbSlUwuM.js → wardleyDiagram-VM6X3IG4-9A60XZis.js} +3 -3
  374. package/dist/client/assets/wardleyDiagram-VNRHLVJA-B_tMcVFG.js +78 -0
  375. package/dist/client/assets/wiki-link-resolver-Dch88erO.js +1 -0
  376. package/dist/client/assets/{worker-engine-m0rlHn8R-eSDcDGEI.js → worker-engine-m0rlHn8R-5h66k403.js} +1 -1
  377. package/dist/client/assets/{workspace-sync-client-D4nblH_2.js → workspace-sync-client-C2pdaQUN.js} +1 -1
  378. package/dist/client/assets/xychartDiagram-PMCCYNJV-fRpZ1MA5.js +7 -0
  379. package/dist/client/assets/xychartDiagram-S5SC5T6Z-D00iy-wB.js +7 -0
  380. package/dist/client/assets/{yaml-9ltHPDNO.js → yaml-BcZaqAz8.js} +1 -1
  381. package/dist/client/assets/{yjs-provider-reset-guard-R43MnLNc.js → yjs-provider-reset-guard-DpntzUDR.js} +1 -1
  382. package/dist/client/drawio-editor.html +6 -5
  383. package/dist/client/excalidraw-editor.html +39 -32
  384. package/dist/client/export-document.html +4 -3
  385. package/dist/client/index.html +21 -14
  386. package/package.json +12 -9
  387. package/src/client/app/drawio-editor.html +1 -0
  388. package/src/client/app/excalidraw-editor.html +1 -0
  389. package/src/client/app/export-document-entry.js +1 -0
  390. package/src/client/app/export-document.html +1 -0
  391. package/src/client/app/index.html +19 -12
  392. package/src/client/application/app-shell/ui-feature-shell.js +20 -1
  393. package/src/client/application/app-shell-elements.js +2 -0
  394. package/src/client/application/diagram-preview-hydrator.js +7 -0
  395. package/src/client/application/mermaid-preview-hydrator.js +89 -3
  396. package/src/client/application/preview-diagram-utils.js +1 -0
  397. package/src/client/application/preview-render-compiler.js +2 -0
  398. package/src/client/application/preview-render-executor.js +4 -1
  399. package/src/client/application/preview-render-profile.js +8 -12
  400. package/src/client/application/preview-renderer.js +3 -0
  401. package/src/client/bootstrap/collabmd-app-shell.js +16 -7
  402. package/src/client/browser-utils.js +1 -1
  403. package/src/client/domain/excalidraw-scene.js +0 -11
  404. package/src/client/domain/file-search.js +1 -0
  405. package/src/client/domain/highlight-runtime.js +30 -3
  406. package/src/client/domain/markdown-math.js +14 -0
  407. package/src/client/export/export-host.js +3 -7
  408. package/src/client/export/export-pipeline.js +208 -21
  409. package/src/client/infrastructure/browser-preferences-port.js +8 -0
  410. package/src/client/infrastructure/editor-session.js +20 -0
  411. package/src/client/infrastructure/editor-view-adapter.js +8 -7
  412. package/src/client/infrastructure/excalidraw-room-client.js +2 -45
  413. package/src/client/infrastructure/git-api-client.js +5 -0
  414. package/src/client/infrastructure/tab-activity-lock.js +8 -4
  415. package/src/client/infrastructure/webmcp-tool-registry.js +12 -5
  416. package/src/client/presentation/bases-preview-controller.js +2 -1
  417. package/src/client/presentation/comment-markdown-renderer.js +2 -0
  418. package/src/client/presentation/comment-ui-controller.js +21 -30
  419. package/src/client/presentation/create-menu-presenter.js +16 -18
  420. package/src/client/presentation/drawio-embed-controller.js +55 -7
  421. package/src/client/presentation/excalidraw-embed-controller.js +11 -3
  422. package/src/client/presentation/file-explorer-controller.js +1 -0
  423. package/src/client/presentation/file-explorer-view.js +32 -2
  424. package/src/client/presentation/file-history-view-controller.js +6 -0
  425. package/src/client/presentation/git-diff-view-controller.js +3 -2
  426. package/src/client/presentation/git-panel-controller.js +6 -5
  427. package/src/client/presentation/image-lightbox-controller.js +7 -6
  428. package/src/client/presentation/outline-controller.js +0 -86
  429. package/src/client/presentation/quick-switcher-controller.js +50 -13
  430. package/src/client/presentation/scroll-sync-controller.js +69 -21
  431. package/src/client/styles/components/navigation.css +2 -2
  432. package/src/client/styles/deferred-collab.css +1 -0
  433. package/src/client/styles/deferred-preview.css +1 -0
  434. package/src/client/styles/features/diagram-preview.css +1 -0
  435. package/src/client/styles/features/preview-markdown.css +4 -4
  436. package/src/client/styles/foundation/themes.css +56 -271
  437. package/src/client/styles/layout/editor-page.css +0 -1
  438. package/src/client/styles/layout/shell.css +6 -0
  439. package/src/client/styles/layout/sidebar.css +3 -0
  440. package/src/client/styles/surfaces/landing-page.css +260 -0
  441. package/src/domain/agent-tool-definitions.js +45 -13
  442. package/src/domain/collabmd-content-capabilities.js +59 -4
  443. package/src/domain/collaboration-protocol.js +2 -0
  444. package/src/domain/markdown-outline.js +35 -0
  445. package/src/server/application/agent-connection-service.js +6 -2
  446. package/src/server/application/agent-content-service.js +124 -56
  447. package/src/server/auth/create-auth-service.js +40 -12
  448. package/src/server/auth/session-cookie.js +49 -38
  449. package/src/server/config/env.js +1 -1
  450. package/src/server/domain/backlink-index.js +1 -11
  451. package/src/server/domain/bases/base-query-results.js +7 -3
  452. package/src/server/domain/bases/base-query-service.js +2 -7
  453. package/src/server/domain/collaboration/collaboration-room.js +54 -16
  454. package/src/server/domain/docx-exporter.js +256 -2
  455. package/src/server/domain/hosted-workspace-contract.js +7 -0
  456. package/src/server/domain/hosted-workspace.js +29 -62
  457. package/src/server/domain/ripgrep-search-service.js +44 -28
  458. package/src/server/infrastructure/git/diff-service.js +15 -11
  459. package/src/server/infrastructure/git/git-service.js +4 -0
  460. package/src/server/infrastructure/git/image-mime.js +4 -3
  461. package/src/server/infrastructure/git/status-service.js +10 -6
  462. package/src/server/infrastructure/http/create-git-api-query-handler.js +25 -0
  463. package/src/server/infrastructure/http/create-vault-api-query-handler.js +13 -53
  464. package/src/server/infrastructure/http/http-response.js +2 -0
  465. package/src/server/infrastructure/persistence/hosted-metadata-store.js +42 -5
  466. package/src/server/infrastructure/persistence/path-utils.js +23 -3
  467. package/src/server/infrastructure/persistence/pull-backup-store.js +52 -42
  468. package/src/server/infrastructure/persistence/sidecar-store.js +7 -4
  469. package/src/server/infrastructure/persistence/vault-file-store.js +55 -168
  470. package/src/server/infrastructure/plantuml/plantuml-renderer.js +33 -0
  471. package/src/server/infrastructure/structurizr/structurizr-workspace-service.js +24 -10
  472. package/src/server/infrastructure/websocket/attach-collaboration-gateway.js +7 -3
  473. package/src/server/infrastructure/websocket/client-socket-session.js +32 -4
  474. package/src/server/infrastructure/workspace/file-system-sync-service.js +4 -2
  475. package/dist/client/assets/CodeMirrorEditor-UCMRAMCV-Crf9Y3Q6.js +0 -1
  476. package/dist/client/assets/abnfDiagram-VCTEODGH-PuinKbSQ.js +0 -1
  477. package/dist/client/assets/architecture-7GRP2DOG-BMOPAkUC.js +0 -1
  478. package/dist/client/assets/architectureDiagram-5GKGNRK7-46hPkrZv.js +0 -36
  479. package/dist/client/assets/blockDiagram-I7D4REHJ-C1S5Bzf8.js +0 -129
  480. package/dist/client/assets/channel-jwdhnPiV.js +0 -1
  481. package/dist/client/assets/chunk-2E4U76K2-Ba8Wf22k.js +0 -1
  482. package/dist/client/assets/chunk-4HAMMTFA-Ht-73lsT.js +0 -62
  483. package/dist/client/assets/chunk-5XKZK2GL-D4UAZSOJ.js +0 -1
  484. package/dist/client/assets/chunk-75Z2AOVW-B2cZexqK.js +0 -2
  485. package/dist/client/assets/chunk-DU6HZSFF-C6d6PJfE.js +0 -127
  486. package/dist/client/assets/chunk-GMAD6QVW-DUfjx_d5.js +0 -72
  487. package/dist/client/assets/chunk-GVQU2GXP-D1l7oRGR.js +0 -1
  488. package/dist/client/assets/chunk-L3NEJ4N5-BmCVn4y-.js +0 -1
  489. package/dist/client/assets/chunk-OSK3NFVY-CWHXAmfx.js +0 -10
  490. package/dist/client/assets/chunk-POPQ4Y6H-B5yJIrZE.js +0 -1
  491. package/dist/client/assets/chunk-PWAF6VOD-B3gML4ps.js +0 -1
  492. package/dist/client/assets/chunk-TLUHSLCS-Yl7B0Vrz.js +0 -1
  493. package/dist/client/assets/chunk-ZNVOA63L-BmCQjhx-.js +0 -40
  494. package/dist/client/assets/classDiagram-ZZMXUADV-BRw9vo8U.js +0 -1
  495. package/dist/client/assets/classDiagram-v2-VYDZK3BY-BRw9vo8U.js +0 -1
  496. package/dist/client/assets/comment-markdown-renderer-B9_vPc3F.js +0 -1
  497. package/dist/client/assets/comment-thread-store-NNHqRVsX.js +0 -1
  498. package/dist/client/assets/cose-bilkent-JH36ORCC-Cm_QF_yb.js +0 -1
  499. package/dist/client/assets/cynefin-OW5HDTMX-7tP7QfM3.js +0 -1
  500. package/dist/client/assets/cynefinDiagram-5FMLGOSQ-BRoCEoZM.js +0 -62
  501. package/dist/client/assets/cytoscape.esm-B-NFISlW.js +0 -321
  502. package/dist/client/assets/dagre-PrKaheQc.js +0 -1
  503. package/dist/client/assets/deferred-collab-rBe4nuQ2.css +0 -1
  504. package/dist/client/assets/deferred-preview-pe7Iwwx3.css +0 -1
  505. package/dist/client/assets/diagram-UQ7AKVKN-JevUZuYi.js +0 -41
  506. package/dist/client/assets/diagram-VX7I27RA-pSD4HMh1.js +0 -24
  507. package/dist/client/assets/diagram-Z3DM3KII-D8r1_CIb.js +0 -24
  508. package/dist/client/assets/direct-engine-DdrQKpgq-B5zIoeQw.js +0 -5
  509. package/dist/client/assets/dist-B3HdUPsK.js +0 -1
  510. package/dist/client/assets/dist-BIRygGYH.js +0 -1
  511. package/dist/client/assets/dist-BPyOlNLY.js +0 -2
  512. package/dist/client/assets/dist-ByhQbe-x.js +0 -1
  513. package/dist/client/assets/dist-C5NkYKAa.js +0 -1
  514. package/dist/client/assets/dist-CEirJSxk.js +0 -1
  515. package/dist/client/assets/dist-CRnJ0D9h.js +0 -1
  516. package/dist/client/assets/dist-CyNrloSI.js +0 -1
  517. package/dist/client/assets/dist-D60_kdpQ.js +0 -1
  518. package/dist/client/assets/dist-Hdhj3L3t.js +0 -1
  519. package/dist/client/assets/dist-gRRhmB-2.js +0 -6
  520. package/dist/client/assets/dist-kWb2d1CH.js +0 -1
  521. package/dist/client/assets/dist-l-56SowH.js +0 -19
  522. package/dist/client/assets/dist-sLzRQQk7.js +0 -1
  523. package/dist/client/assets/ebnfDiagram-PWID7BFC-UJ0Fz5ci.js +0 -1
  524. package/dist/client/assets/editor-session-4Bn81iWm.js +0 -14
  525. package/dist/client/assets/embedded-editor-base-jK221GC8.css +0 -1
  526. package/dist/client/assets/eventmodeling-NTZA5JFV-BR2FzK4R.js +0 -1
  527. package/dist/client/assets/excalidrawEditor-WIuguTz7.js +0 -9
  528. package/dist/client/assets/export-page-AN-wI5p4.js +0 -56
  529. package/dist/client/assets/exportDocument-B7IagJhQ.css +0 -1
  530. package/dist/client/assets/exportDocument-B9xNKpQe.js +0 -2
  531. package/dist/client/assets/file-search-DDLyyLDU.js +0 -1
  532. package/dist/client/assets/flowDiagram-HODETNUW-kb1lUSBo.js +0 -1
  533. package/dist/client/assets/forth-Cezjo90N.js +0 -1
  534. package/dist/client/assets/ganttDiagram-EL5Y4UJY-BBNzDfaV.js +0 -292
  535. package/dist/client/assets/gitGraph-4MIJSDKK-DYlXv_yJ.js +0 -1
  536. package/dist/client/assets/gitGraphDiagram-WWUBYQGX-Csf0Dm_1.js +0 -106
  537. package/dist/client/assets/graphlib-DS17s2tU.js +0 -1
  538. package/dist/client/assets/image-2QKV3NAF-BUbX0y5Y.js +0 -1
  539. package/dist/client/assets/index-BAmZnTFV.css +0 -1
  540. package/dist/client/assets/index-mWiw418b.js +0 -1111
  541. package/dist/client/assets/info-A6RAGUB7-BlU-8_xu.js +0 -1
  542. package/dist/client/assets/infoDiagram-27XIBGKW-Bzy6kCbb.js +0 -2
  543. package/dist/client/assets/javascript-BWjar7HY.js +0 -1
  544. package/dist/client/assets/javascript-D-FtdkNC.js +0 -1
  545. package/dist/client/assets/jsx-runtime-BpzPEenQ.js +0 -1
  546. package/dist/client/assets/line-DSWLHgpx.js +0 -1
  547. package/dist/client/assets/linear-n-3HSMUF.js +0 -1
  548. package/dist/client/assets/markdown-it-CocJWnjv.js +0 -13
  549. package/dist/client/assets/mermaid.core-C_FK-7n4.js +0 -1
  550. package/dist/client/assets/mermaid.core-D0cMM4Rl.js +0 -10
  551. package/dist/client/assets/packet-AYTQ26CC-BSJEH9Lb.js +0 -1
  552. package/dist/client/assets/pegDiagram-XKGWAZYB-DS6Ab21R.js +0 -1
  553. package/dist/client/assets/percentages-Q7USCRWZ-DWE6uvTs.js +0 -1
  554. package/dist/client/assets/pie-WAS4IAKB-qxv01Y8W.js +0 -1
  555. package/dist/client/assets/pieDiagram-E7YTZNPT-BbFe6Tgs.js +0 -39
  556. package/dist/client/assets/preview-render-compiler-C_7J7eia.js +0 -43
  557. package/dist/client/assets/preview-render-compiler-DzJ1KR_M.js +0 -1
  558. package/dist/client/assets/preview-render-worker-1DoIDllV.js +0 -59
  559. package/dist/client/assets/prod-D5TxmmoB.js +0 -1
  560. package/dist/client/assets/prod-pbFU4TaM.js +0 -145
  561. package/dist/client/assets/quick-switcher-controller-CUajuy78.js +0 -1
  562. package/dist/client/assets/radar-RG4KPBEZ-B6h6pWOs.js +0 -1
  563. package/dist/client/assets/railroad-74A4TZTK-CGtTWdGc.js +0 -1
  564. package/dist/client/assets/railroad-abnf-HS5TGJTU-Cq7y22IA.js +0 -1
  565. package/dist/client/assets/railroad-ebnf-LZEXJU2U-V0aQVv9m.js +0 -1
  566. package/dist/client/assets/railroad-peg-WCYAUIDC-BQiIsX_p.js +0 -1
  567. package/dist/client/assets/railroadDiagram-O6MQD6OU-CUQKqbCK.js +0 -1
  568. package/dist/client/assets/sankeyDiagram-P5KCCOFB-CcbMqrlQ.js +0 -40
  569. package/dist/client/assets/sl-SI-JRML4FIH-D53L_0S2.js +0 -6
  570. package/dist/client/assets/solr-BBopId9w.js +0 -1
  571. package/dist/client/assets/src-oBChb5qS.js +0 -1
  572. package/dist/client/assets/stateDiagram-D77RDMKH-DNi924hh.js +0 -1
  573. package/dist/client/assets/stateDiagram-v2-MP3YSRHH-C62JEwak.js +0 -1
  574. package/dist/client/assets/sv-SE-4ZPKFFXF-DT-G7RCI.js +0 -12
  575. package/dist/client/assets/swimlanes-42K2YHIH-ColgjSH4.js +0 -1
  576. package/dist/client/assets/swimlanesDiagram-VR7AAH4N-B9UZhEj4.js +0 -8
  577. package/dist/client/assets/th-TH-P7CTMGDK-6sy0NO7K.js +0 -1
  578. package/dist/client/assets/treeView-Q6P3EWNA-BTTYcvrF.js +0 -1
  579. package/dist/client/assets/treemap-WGGIJYW6-Cg7tyfH8.js +0 -1
  580. package/dist/client/assets/vennDiagram-4TSXK5OY-C5taziCX.js +0 -34
  581. package/dist/client/assets/wardley-WFR3VGLG-C6N1rULY.js +0 -1
  582. package/dist/client/assets/wiki-link-resolver-C2P_WmTV.js +0 -1
  583. package/dist/client/assets/xychartDiagram-S5SC5T6Z-D06X1arY.js +0 -7
  584. package/src/server/domain/collaboration/protocol.js +0 -6
@@ -0,0 +1,260 @@
1
+ /* Standalone landing page. Loaded only by landing/styles.css. */
2
+ :root {
3
+ --landing-font: 'Avenir Next', 'Segoe UI', system-ui, sans-serif;
4
+ --landing-mono: ui-monospace, 'SFMono-Regular', Menlo, Consolas, monospace;
5
+ }
6
+
7
+ *, *::before, *::after { box-sizing: border-box; }
8
+ * { margin: 0; }
9
+ html { scroll-behavior: smooth; scroll-padding-top: 96px; }
10
+ body { background: var(--color-bg); color: var(--color-text); font: 16px/1.65 var(--landing-font); -webkit-font-smoothing: antialiased; }
11
+ a { color: inherit; text-decoration: none; }
12
+ button { font: inherit; cursor: pointer; }
13
+ img, video { display: block; width: 100%; height: auto; }
14
+ svg { display: block; }
15
+ button, a { -webkit-tap-highlight-color: transparent; }
16
+ :focus-visible { outline: 3px solid var(--color-primary); outline-offset: 5px; }
17
+ ::selection { background: var(--color-primary-highlight); }
18
+ [hidden] { display: none !important; }
19
+ .wrap { width: min(1320px, 100% - 96px); margin-inline: auto; }
20
+ .skip-link { position: fixed; top: 12px; left: 16px; padding: 10px 16px; background: var(--color-text); color: var(--color-text-inverse); z-index: 200; transform: translateY(-180%); }
21
+ .skip-link:focus { transform: none; }
22
+ .eyebrow, .feature-index, .preview-label { font: 11px/1.5 var(--landing-mono); letter-spacing: .075em; text-transform: uppercase; }
23
+ .eyebrow { color: var(--color-primary); margin-bottom: 20px; }
24
+ h1, h2, h3 { line-height: 1.1; letter-spacing: -.045em; font-weight: 650; text-wrap: balance; }
25
+ h2 { font-size: clamp(30px, 3.1vw, 46px); }
26
+ h3 { font-size: 23px; }
27
+ p { text-wrap: pretty; }
28
+ .section { padding-block: 104px; }
29
+ .section-head { margin-bottom: 44px; }
30
+ .section-head > p:not(.eyebrow) { max-width: 43ch; margin-top: 24px; color: var(--color-text-muted); }
31
+ .text-link { display: inline-flex; align-items: center; gap: 12px; font-size: 14px; font-weight: 600; }
32
+ .text-link > span { transition: transform .2s; }
33
+ .text-link:hover { color: var(--color-primary); }
34
+ .text-link:hover > span { transform: translateX(4px); }
35
+ .landing-button { display: inline-flex; align-items: center; justify-content: center; gap: 20px; min-height: 48px; padding: 12px 22px; border: 1px solid transparent; border-radius: 5px; font-size: 14px; font-weight: 600; transition: background .2s, transform .2s; }
36
+ .landing-button:hover { transform: translateY(-2px); }
37
+ .landing-button-primary { background: var(--color-primary); color: var(--color-primary-contrast); }
38
+ .landing-button-primary:hover { background: var(--color-primary-hover); }
39
+ .landing-button-secondary { background: var(--color-surface); border-color: var(--color-border); color: var(--color-text); }
40
+ .landing-button-secondary:hover { background: var(--color-surface-offset); }
41
+
42
+ /* Navigation */
43
+ .nav { position: sticky; top: 0; z-index: 100; background: var(--surface-overlay-raised); backdrop-filter: blur(16px); border-bottom: 1px solid var(--color-divider); }
44
+ .nav-inner { display: flex; align-items: center; gap: 26px; height: 80px; }
45
+ .nav-brand { display: inline-flex; align-items: center; gap: 9px; font-size: 22px; font-weight: 750; letter-spacing: -.055em; }
46
+ .nav-mark { width: 30px; height: 30px; color: var(--color-primary); }
47
+ .nav-links { display: flex; gap: 26px; margin-left: auto; }
48
+ .nav-links a, .nav-github { padding-block: 12px; font-size: 13px; font-weight: 550; color: var(--color-text-muted); }
49
+ .nav-links a:hover, .nav-links .is-active, .nav-github:hover { color: var(--color-primary); }
50
+ .nav-links .is-active { box-shadow: inset 0 -2px var(--color-primary); }
51
+ .nav-github { margin-left: 20px; }
52
+ .nav-demo { min-height: 42px; padding: 9px 16px; font-size: 13px; }
53
+ .nav-menu-toggle { display: none; align-items: center; justify-content: center; width: 44px; height: 44px; padding: 0; border: 1px solid var(--color-border); border-radius: 5px; background: var(--color-surface); color: var(--color-text); font-size: 22px; }
54
+
55
+ /* One visual plane: the promise and the actual workspace. */
56
+ .hero { overflow: clip; background: var(--surface-accent-subtle); border-bottom: 1px solid var(--color-divider); }
57
+ .hero-inner { display: grid; grid-template-columns: minmax(0, .9fr) minmax(0, 1.1fr); gap: 44px; align-items: center; min-height: min(740px, calc(100svh - 80px)); padding-block: 48px; }
58
+ .hero-title { font-size: clamp(66px, 7.2vw, 108px); letter-spacing: -.075em; margin-left: -.045em; }
59
+ .hero-promise { margin-top: 26px; font-size: clamp(34px, 3.4vw, 49px); font-weight: 550; line-height: 1.12; letter-spacing: -.05em; }
60
+ .hero-promise em { font-style: normal; color: var(--color-primary); }
61
+ .hero-sub { max-width: 38ch; margin-top: 24px; color: var(--color-text-muted); font-size: 16px; }
62
+ .hero-actions { display: flex; align-items: center; gap: 24px; margin-top: 32px; }
63
+ .hero-note { font-size: 12px; margin-top: 22px; color: var(--color-text-muted); }
64
+ .hero-shot { width: 125%; margin-top: 26px; }
65
+ .preview-label { display: flex; justify-content: space-between; padding-bottom: 16px; color: var(--color-text-muted); }
66
+ .hero-shot img { border: 1px solid var(--color-border); border-radius: 7px; box-shadow: var(--shadow-media-stage); }
67
+ figcaption { margin-top: 20px; font-size: 11px; color: var(--color-text-muted); }
68
+ .hero-shot figcaption { max-width: 70%; }
69
+
70
+ /* Outcomes and the supported workflow. */
71
+ .benefits { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 40px; }
72
+ .benefit { padding-top: 24px; border-top: 1px solid var(--color-border); }
73
+ .feature-index { display: block; color: var(--color-text-muted); margin-bottom: 26px; }
74
+ .benefit p { margin-top: 18px; color: var(--color-text-muted); font-size: 14px; }
75
+ .benefit .benefit-detail { font-size: 12px; }
76
+ .benefit .text-link { margin-top: 22px; color: var(--color-primary); }
77
+ .workflow-detail { margin-top: 76px; padding: 40px; display: grid; grid-template-columns: 1fr 1.3fr; gap: 60px; background: var(--color-surface-offset-2); }
78
+ .workflow-detail h3 { font-size: 33px; }
79
+ .workflow-detail p:not(.eyebrow) { max-width: 36ch; color: var(--color-text-muted); font-size: 14px; margin-top: 18px; }
80
+ .format-list { align-self: center; }
81
+ .format-list > div { display: grid; grid-template-columns: 150px 1fr; gap: 22px; padding-block: 20px; }
82
+ .format-list > div + div { border-top: 1px solid var(--color-border); }
83
+ .format-list dt { font-size: 14px; font-weight: 600; }
84
+ .format-list dd { font-size: 13px; color: var(--color-text-muted); }
85
+ .capability-rail { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 40px; margin-top: 48px; }
86
+ .capability .eyebrow { margin-bottom: 16px; }
87
+ .capability h3 { font-size: 20px; }
88
+ .capability > p:last-child { margin-top: 14px; color: var(--color-text-muted); font-size: 13px; }
89
+
90
+ /* The existing recording provides product proof. */
91
+ .demo-section { background: var(--color-surface); border-block: 1px solid var(--color-divider); }
92
+ .demo-layout { display: grid; grid-template-columns: .7fr 1.3fr; gap: 64px; align-items: center; }
93
+ .demo-copy > p:not(.eyebrow) { margin-top: 24px; color: var(--color-text-muted); max-width: 36ch; font-size: 15px; }
94
+ .demo-copy .landing-button { margin-top: 28px; }
95
+ .demo-copy .demo-note { font-size: 12px; }
96
+ .demo-note a { text-decoration: underline; text-underline-offset: 3px; }
97
+ .demo-frame video { border-radius: 7px; border: 1px solid var(--color-border); background: var(--color-surface-ink); aspect-ratio: 16 / 10; }
98
+
99
+ /* Setup: reuse the existing keyboard-accessible install tabs. */
100
+ .install-layout, .docs-layout { display: grid; grid-template-columns: minmax(0, .85fr) minmax(0, 1.15fr); gap: 80px; }
101
+ .install-layout .section-head, .docs-layout .section-head { margin: 0; }
102
+ .section-head .install-requirements { font-size: 12px; margin-top: 20px; }
103
+ .install-layout .text-link { margin-top: 24px; color: var(--color-primary); }
104
+ .install { border: 1px solid var(--color-border); border-radius: 7px; background: var(--color-surface); overflow: hidden; }
105
+ .install-tabs { display: flex; gap: 24px; padding-inline: 24px; border-bottom: 1px solid var(--color-divider); }
106
+ .install-tab { min-height: 56px; padding: 12px 0; border: 0; background: transparent; color: var(--color-text-muted); font-size: 13px; }
107
+ .install-tab.is-active { color: var(--color-primary); box-shadow: inset 0 -2px var(--color-primary); }
108
+ .install-panel { padding: 26px; min-height: 184px; }
109
+ .install-code { display: flex; flex-wrap: wrap; align-items: flex-start; justify-content: space-between; gap: 22px; }
110
+ .install-code pre { min-width: 0; max-width: 100%; overflow-x: auto; font: 12px/1.9 var(--landing-mono); }
111
+ code { font-family: var(--landing-mono); font-size: .9em; }
112
+ .install-code pre code { font-size: inherit; }
113
+ .copy-btn { min-height: 36px; padding: 7px 12px; font-size: 12px; gap: 6px; }
114
+ .icon { width: 14px; height: 14px; }
115
+ .install-note, .share-note { margin-top: 22px; font-size: 12px; color: var(--color-text-muted); }
116
+ .share-note a { text-decoration: underline; text-underline-offset: 3px; }
117
+ .clipboard-fallback { position: fixed; left: -9999px; opacity: 0; }
118
+ html:not(.copy-ready) .copy-btn, html:not(.tabs-ready) .install-tabs { display: none; }
119
+ html:not(.tabs-ready) .install-panel[hidden] { display: block !important; }
120
+ html:not(.tabs-ready) .install-panel + .install-panel { border-top: 1px solid var(--color-divider); }
121
+
122
+ /* Docs are routes to maintained guides, not duplicated reference content. */
123
+ .docs-section { padding-top: 72px; border-top: 1px solid var(--color-divider); }
124
+ .docs-layout .section-head { align-self: start; position: sticky; top: 128px; }
125
+ .docs-source { display: inline-block; font-size: 11px; color: var(--color-text-muted); margin-top: 28px; }
126
+ .docs-list { border-top: 1px solid var(--color-border); }
127
+ .docs-list a { display: flex; align-items: center; justify-content: space-between; gap: 24px; padding: 20px 0; border-bottom: 1px solid var(--color-border); transition: color .2s; }
128
+ .docs-list a:hover { color: var(--color-primary); }
129
+ .docs-list strong { font-size: 17px; font-weight: 600; letter-spacing: -.02em; }
130
+ .docs-list small { display: block; color: var(--color-text-muted); font-size: 12px; margin-top: 3px; }
131
+ .docs-list a > span:last-child { color: var(--color-primary); font-size: 22px; }
132
+ .closing { padding-block: 76px; background: var(--surface-accent-subtle); border-top: 1px solid var(--color-divider); }
133
+ .closing-inner { display: flex; justify-content: space-between; align-items: center; gap: 40px; }
134
+ .closing h2 { font-size: clamp(38px, 4.5vw, 64px); }
135
+ .closing-actions { display: flex; flex-direction: column; align-items: flex-start; gap: 24px; }
136
+ .footer { padding-block: 34px; border-top: 1px solid var(--color-divider); }
137
+ .footer-inner { display: flex; align-items: center; gap: 24px; }
138
+ .footer p { font-size: 11px; color: var(--color-text-muted); }
139
+ .footer nav { display: flex; gap: 24px; margin-left: auto; font-size: 12px; }
140
+ .footer nav a:hover { color: var(--color-primary); }
141
+
142
+ /* Progressive enhancement: content is visible until observers are ready. */
143
+ .reveal-ready .reveal { opacity: 0; transform: translateY(16px); transition: opacity .65s ease, transform .65s ease; }
144
+ .reveal-ready .reveal.is-visible { opacity: 1; transform: none; }
145
+
146
+ /* A single arrival: the pages meet, then the workspace comes into view. */
147
+ @media (prefers-reduced-motion: no-preference) {
148
+ .nav-mark { overflow: visible; }
149
+ .nav-mark > * { transform-origin: center; animation: landing-page-front .8s cubic-bezier(.16, 1, .3, 1) backwards; }
150
+ .nav-mark > :first-child { animation-name: landing-page-back; }
151
+ .hero-enter { animation: landing-enter .7s cubic-bezier(.16, 1, .3, 1) backwards; }
152
+ .hero-copy > :nth-child(2) { animation-delay: .08s; }
153
+ .hero-copy > :nth-child(3) { animation-delay: .16s; }
154
+ .hero-copy > :nth-child(4) { animation-delay: .24s; }
155
+ .hero-copy > :nth-child(5) { animation-delay: .32s; }
156
+ .hero-copy > :nth-child(6) { animation-delay: .4s; }
157
+ .hero-shot { animation-name: landing-preview-enter; animation-duration: .9s; animation-delay: .28s; }
158
+ .hero-enter:focus-within { animation: none; }
159
+ }
160
+ @keyframes landing-page-back {
161
+ from { transform: translateX(-6px) rotate(-12deg); }
162
+ to { transform: none; }
163
+ }
164
+ @keyframes landing-page-front {
165
+ from { transform: translateX(6px) rotate(12deg); }
166
+ to { transform: none; }
167
+ }
168
+ @keyframes landing-enter {
169
+ from { opacity: 0; transform: translateY(14px); }
170
+ to { opacity: 1; transform: none; }
171
+ }
172
+ @keyframes landing-preview-enter {
173
+ from { opacity: 0; transform: translate(24px, 12px) scale(.985); }
174
+ to { opacity: 1; transform: none; }
175
+ }
176
+
177
+ @media (min-width: 1600px) {
178
+ .hero-shot { width: 112%; }
179
+ }
180
+ @media (min-width: 901px) and (max-height: 800px) {
181
+ .hero-inner { padding-block: 24px; }
182
+ }
183
+ @media (max-width: 1100px) {
184
+ .wrap { width: calc(100% - 64px); }
185
+ .nav-inner { gap: 20px; }
186
+ .nav-links { gap: 20px; }
187
+ .nav-github { display: none; }
188
+ .hero-inner { gap: 24px; }
189
+ .hero-title { font-size: 76px; }
190
+ .hero-promise { font-size: 37px; }
191
+ .hero-actions { gap: 18px; }
192
+ .benefits, .capability-rail { gap: 26px; }
193
+ .demo-layout, .install-layout, .docs-layout { gap: 40px; }
194
+ .workflow-detail { gap: 32px; padding: 32px; }
195
+ .format-list > div { grid-template-columns: 120px 1fr; gap: 16px; }
196
+ }
197
+ @media (max-width: 900px) {
198
+ .hero-inner { grid-template-columns: 1fr; min-height: auto; padding-block: 48px; }
199
+ .hero-copy { max-width: 600px; }
200
+ .hero-title { font-size: clamp(66px, 12vw, 100px); }
201
+ .hero-promise { font-size: 38px; }
202
+ .hero-sub { max-width: 44ch; }
203
+ .hero-shot { width: 100%; margin-top: 18px; }
204
+ .hero-shot figcaption { max-width: none; }
205
+ .benefits { grid-template-columns: 1fr; gap: 32px; }
206
+ .feature-index { margin-bottom: 16px; }
207
+ .benefit p { max-width: 64ch; }
208
+ .workflow-detail { grid-template-columns: 1fr; }
209
+ .format-list > div { grid-template-columns: 150px 1fr; }
210
+ .capability-rail { grid-template-columns: 1fr; gap: 32px; }
211
+ .capability { border-bottom: 1px solid var(--color-divider); padding-bottom: 24px; }
212
+ .demo-layout, .install-layout, .docs-layout { grid-template-columns: minmax(0, 1fr); gap: 36px; }
213
+ .docs-layout .section-head { position: static; }
214
+ .demo-copy > p:not(.eyebrow) { max-width: 52ch; }
215
+ .footer-inner { flex-wrap: wrap; }
216
+ .footer nav { width: 100%; margin: 0; }
217
+ }
218
+ @media (max-width: 700px) {
219
+ .wrap { width: calc(100% - 40px); }
220
+ .nav-inner { height: 68px; gap: 12px; }
221
+ .nav-brand { font-size: 20px; }
222
+ .nav-mark { width: 25px; height: 25px; }
223
+ .nav-demo { margin-left: auto; font-size: 11px; gap: 8px; padding-inline: 12px; }
224
+ .nav-menu-toggle { display: flex; }
225
+ .nav-links { display: none; }
226
+ .nav.is-menu-open .nav-links { position: absolute; display: grid; gap: 0; inset: 100% 0 auto; padding: 12px 20px; background: var(--color-surface); border-bottom: 1px solid var(--color-border); box-shadow: var(--shadow-md); }
227
+ .nav-links a { padding: 13px 8px; }
228
+ .section { padding-block: 64px; }
229
+ .section-head { margin-bottom: 32px; }
230
+ .hero-inner { padding-block: 36px; gap: 24px; }
231
+ .hero-copy .eyebrow { font-size: 10px; margin-bottom: 18px; }
232
+ .hero-title { font-size: clamp(56px, 14.5vw, 86px); }
233
+ .hero-promise { margin-top: 18px; font-size: 34px; }
234
+ .hero-sub { font-size: 14px; margin-top: 18px; }
235
+ .hero-actions { margin-top: 24px; gap: 20px; flex-wrap: wrap; }
236
+ .hero-actions .landing-button { padding-inline: 18px; }
237
+ .hero-actions .text-link { font-size: 13px; }
238
+ .hero-note { font-size: 10px; margin-top: 16px; }
239
+ .hero-shot { margin-top: 0; }
240
+ .preview-label { font-size: 9px; padding-bottom: 10px; }
241
+ figcaption { font-size: 10px; margin-top: 14px; }
242
+ .hero-shot img { box-shadow: var(--shadow-lg); }
243
+ .workflow-detail { padding: 24px; margin-top: 40px; gap: 16px; }
244
+ .workflow-detail h3 { font-size: 29px; }
245
+ .format-list > div { grid-template-columns: 1fr; gap: 5px; padding-block: 16px; }
246
+ .install-tabs { padding-inline: 18px; }
247
+ .install-panel { padding: 22px 18px; }
248
+ .install-code pre { font-size: 11px; }
249
+ .closing { padding-block: 56px; }
250
+ .closing-inner { flex-direction: column; align-items: flex-start; }
251
+ .closing-actions { gap: 20px; }
252
+ .footer-inner { gap: 16px; }
253
+ .footer p { font-size: 10px; }
254
+ .footer nav { gap: 22px; }
255
+ }
256
+ @media (prefers-reduced-motion: reduce) {
257
+ html { scroll-behavior: auto; }
258
+ *, *::before, *::after { transition: none !important; animation: none !important; }
259
+ .reveal-ready .reveal { opacity: 1; transform: none; }
260
+ }
@@ -49,6 +49,15 @@ const VALIDATION_ISSUE_SCHEMA = objectSchema({
49
49
  target: { type: 'string' },
50
50
  });
51
51
 
52
+ const MARKDOWN_VALIDATION_SCHEMA = objectSchema({
53
+ issues: { items: VALIDATION_ISSUE_SCHEMA, type: 'array' },
54
+ valid: { type: 'boolean' },
55
+ });
56
+ const VALIDATE_MARKDOWN_INPUT = {
57
+ description: 'Return reference validation for the exact saved revision. Markdown only; validation issues do not roll back the save.',
58
+ type: 'boolean',
59
+ };
60
+
52
61
  const DIAGRAM_RENDER_OUTPUT_PROPERTIES = {
53
62
  endLine: { minimum: 1, type: 'integer' },
54
63
  format: { enum: ['png', 'svg'], type: 'string' },
@@ -382,16 +391,18 @@ export const AGENT_TOOL_DEFINITIONS = Object.freeze([
382
391
 
383
392
  {
384
393
  annotations: { idempotentHint: true, readOnlyHint: true },
385
- description: 'Search current Vault text with one fixed case-insensitive term. Returns path and line evidence.',
394
+ description: 'Search current Vault text with one literal case-insensitive phrase, not a natural-language question. Defaults to 10 files and 2 snippets each. Read relevant ranges before answering and cite path:line evidence. Narrow prefix or query when truncated; no matches do not prove a topic is absent.',
386
395
  inputSchema: objectSchema({
387
396
  limit: {
388
- description: 'Maximum matching documents to return.',
397
+ default: 10,
398
+ description: 'Maximum matching documents to return (default 10).',
389
399
  maximum: 50,
390
400
  minimum: 1,
391
401
  type: 'integer',
392
402
  },
393
403
  maxSnippetsPerFile: {
394
- description: 'Maximum matching snippets returned per document.',
404
+ default: 2,
405
+ description: 'Maximum matching snippets returned per document (default 2).',
395
406
  maximum: 10,
396
407
  minimum: 1,
397
408
  type: 'integer',
@@ -437,7 +448,7 @@ export const AGENT_TOOL_DEFINITIONS = Object.freeze([
437
448
  required: ['available', 'backend', 'minQueryLength', 'unavailableReason', 'version'],
438
449
  type: 'object',
439
450
  },
440
- truncated: { type: 'boolean' },
451
+ truncated: { description: 'True when documents or snippets were omitted, or the search was incomplete. Counts cover observed matches, not necessarily all Vault matches.', type: 'boolean' },
441
452
  }),
442
453
  scope: 'vault:read',
443
454
  untrustedContentHint: true,
@@ -445,14 +456,21 @@ export const AGENT_TOOL_DEFINITIONS = Object.freeze([
445
456
  },
446
457
  {
447
458
  annotations: { idempotentHint: true, readOnlyHint: true },
448
- description: 'Read a current CollabMD document range and return full-document revision for citations and edits.',
459
+ description: 'Read current text (default 80 lines) or a compact Markdown outline with full-document revision. Follow nextStartLine for more. Read content immediately before exact edits; on revision conflict reread and recompute. Maximum source size is 1000000 characters; a single content line over 100000 characters fails explicitly.',
449
460
  inputSchema: objectSchema({
450
461
  lineCount: {
451
- description: 'Maximum number of lines to return.',
462
+ default: 80,
463
+ description: 'Maximum content lines or outline headings to return (default 80).',
452
464
  maximum: 500,
453
465
  minimum: 1,
454
466
  type: 'integer',
455
467
  },
468
+ mode: {
469
+ default: 'content',
470
+ description: 'Outline returns top-level ATX and single-line Setext headings, excluding fenced code and frontmatter. Heading text is capped at 200 characters.',
471
+ enum: ['content', 'outline'],
472
+ type: 'string',
473
+ },
456
474
  path: {
457
475
  description: 'Vault-relative document path.',
458
476
  maxLength: 1024,
@@ -470,13 +488,23 @@ export const AGENT_TOOL_DEFINITIONS = Object.freeze([
470
488
  outputSchema: objectSchema({
471
489
  content: { type: 'string' },
472
490
  endLine: { minimum: 1, type: 'integer' },
491
+ headings: {
492
+ items: objectSchema({
493
+ level: { minimum: 1, maximum: 6, type: 'integer' },
494
+ line: { minimum: 1, type: 'integer' },
495
+ text: { type: 'string' },
496
+ truncated: { type: 'boolean' },
497
+ }),
498
+ type: 'array',
499
+ },
500
+ nextStartLine: { type: ['integer', 'null'], minimum: 1 },
473
501
  kind: { type: 'string' },
474
502
  path: { type: 'string' },
475
503
  revision: REVISION_SCHEMA,
476
504
  startLine: { minimum: 1, type: 'integer' },
477
505
  totalLines: { minimum: 1, type: 'integer' },
478
506
  truncated: { type: 'boolean' },
479
- }),
507
+ }, ['content', 'endLine', 'kind', 'nextStartLine', 'path', 'revision', 'startLine', 'totalLines', 'truncated']),
480
508
  scope: 'vault:read',
481
509
  untrustedContentHint: true,
482
510
  webMcp: true,
@@ -676,7 +704,7 @@ export const AGENT_TOOL_DEFINITIONS = Object.freeze([
676
704
  },
677
705
  {
678
706
  annotations: { destructiveHint: false, idempotentHint: true, readOnlyHint: false },
679
- description: 'Create a valid editable .excalidraw scene from basic Excalidraw elements, with optional same-revision verification.',
707
+ description: 'Create an editable .excalidraw scene. Before the first diagram in a task, call get_collabmd_syntax with kind="excalidraw" for design guidance and valid examples. Request inline inspection/rendering and examine the image before finishing.',
680
708
  inputSchema: objectSchema({
681
709
  elements: {
682
710
  description: 'One to 200 basic Excalidraw elements in back-to-front order. Text may bind to a container with containerId; groupIds define atomic movement groups. Arrows may bind with startElementId and endElementId. beforeElementId or afterElementId sets explicit placement.',
@@ -707,7 +735,7 @@ export const AGENT_TOOL_DEFINITIONS = Object.freeze([
707
735
  },
708
736
  {
709
737
  annotations: { destructiveHint: false, idempotentHint: false, readOnlyHint: false },
710
- description: 'Create, update, replace, translate, reorder, or delete elements in an existing .excalidraw scene when its revision still matches. Bound text whose font, size, line height, or content changes reflows automatically.',
738
+ description: 'Edit an existing .excalidraw scene only when its revision matches. Before the first diagram edit in a task, consult get_collabmd_syntax with kind="excalidraw". Inspect first, preserve existing style and unrelated elements, then verify the result. Supports create, update, replace, translate, reorder, and delete; bound-text metric edits reflow automatically.',
711
739
  inputSchema: objectSchema({
712
740
  create: {
713
741
  items: EXCALIDRAW_ELEMENT_INPUT_SCHEMA,
@@ -782,7 +810,7 @@ export const AGENT_TOOL_DEFINITIONS = Object.freeze([
782
810
  },
783
811
  {
784
812
  annotations: { destructiveHint: false, idempotentHint: false, readOnlyHint: false },
785
- description: 'Apply bounded exact replacements to a document only when its revision still matches.',
813
+ description: 'Apply up to 20 unique, non-overlapping exact replacements against the revision from a fresh content read. Combined old/new text is limited to 50000 characters. On conflict reread; on ambiguous matches include more surrounding text. Optional Markdown validation checks the saved revision.',
786
814
  inputSchema: objectSchema({
787
815
  path: {
788
816
  description: 'Vault-relative path returned by read_document.',
@@ -813,6 +841,7 @@ export const AGENT_TOOL_DEFINITIONS = Object.freeze([
813
841
  type: 'array',
814
842
  },
815
843
  revision: REVISION_SCHEMA,
844
+ validate: VALIDATE_MARKDOWN_INPUT,
816
845
  }, ['path', 'revision', 'replacements']),
817
846
  method: 'applyTextEdits',
818
847
  name: 'apply_text_edits',
@@ -820,13 +849,14 @@ export const AGENT_TOOL_DEFINITIONS = Object.freeze([
820
849
  path: { type: 'string' },
821
850
  replacementCount: { minimum: 1, type: 'integer' },
822
851
  revision: REVISION_SCHEMA,
823
- }),
852
+ validation: MARKDOWN_VALIDATION_SCHEMA,
853
+ }, ['path', 'replacementCount', 'revision']),
824
854
  scope: 'vault:edit',
825
855
  webMcp: true,
826
856
  },
827
857
  {
828
858
  annotations: { destructiveHint: false, idempotentHint: true, readOnlyHint: false },
829
- description: 'Create a new supported CollabMD text document. An identical retry succeeds; different content at an existing path fails.',
859
+ description: 'Create a new supported text document (up to 200000 characters). Inspect nearby naming/style and consult get_collabmd_syntax for unfamiliar kinds. Identical retries succeed; different content at an existing path fails. Optional Markdown validation checks the saved revision.',
830
860
  inputSchema: objectSchema({
831
861
  content: {
832
862
  description: 'Initial document text, normalized to LF line endings.',
@@ -839,6 +869,7 @@ export const AGENT_TOOL_DEFINITIONS = Object.freeze([
839
869
  minLength: 1,
840
870
  type: 'string',
841
871
  },
872
+ validate: VALIDATE_MARKDOWN_INPUT,
842
873
  }, ['path', 'content']),
843
874
  method: 'createDocument',
844
875
  name: 'create_document',
@@ -846,7 +877,8 @@ export const AGENT_TOOL_DEFINITIONS = Object.freeze([
846
877
  kind: { type: 'string' },
847
878
  path: { type: 'string' },
848
879
  revision: REVISION_SCHEMA,
849
- }),
880
+ validation: MARKDOWN_VALIDATION_SCHEMA,
881
+ }, ['kind', 'path', 'revision']),
850
882
  scope: 'vault:edit',
851
883
  webMcp: true,
852
884
  },
@@ -13,6 +13,56 @@ import {
13
13
  supportsCommentsForFilePath,
14
14
  } from './file-kind.js';
15
15
 
16
+ const EXCALIDRAW_DESIGN_GUIDE = [
17
+ 'Plan: State the question the diagram answers, its audience, the essential entities, and what each connection means. Choose a flowchart for steps/decisions or a layered layout for responsibilities/dependencies. Keep one main idea per diagram; split dense detail into another diagram. Do not invent relationships to fill space.',
18
+ 'Layout: Choose left-to-right or top-to-bottom reading order. Place containers before labels and connectors. Align related nodes and use consistent sizes and gaps. As starting points, use 200 x 88 nodes, 80-120 units between columns, and 60-80 between rows; enlarge these for the actual text. Reserve clear connector lanes. Route arrows around unrelated shapes, minimize crossings, and make direction unambiguous. These are defaults, not constraints on an existing design.',
19
+ 'Labels and bindings: Prefer short entity names and verb phrases for relationships. Start around 20-unit body text and 28-unit titles, with one font family. Enlarge the container or add deliberate line breaks instead of shrinking text to fit. Create labels as separate text elements using containerId; creation still requires explicit x/y and correctly sized bounds. Bind connectors with startElementId/endElementId and set points relative to the arrow x/y, near the appropriate shape edges. Binding identifies the relationship; it does not plan the route. Allow padding around labels and keep relationship labels away from arrowheads.',
20
+ 'Visual hierarchy: Use a clear title, restrained strokes, and at most two or three semantic fill colors with readable dark labels on light fills. Use shape, position, or text as well as color to distinguish roles. Reuse colors for the same meaning. Give related elements groupIds when they should move together. Keep text above its container in paint order. Avoid decorative elements that compete with the information.',
21
+ 'Existing diagrams: In WebMCP, get active context first. Inspect the existing scene and preserve its style, IDs, layout, and unrelated elements. Use edit_excalidraw with the returned revision. Prefer translate for moving containers/groups and their related text; inspect attached connector routes after movement. Use reorder for paint order and same-ID replace for a type change. Bound-text placement normalization re-centers labels; use it only when that is intended. On a revision conflict, inspect again and reconsider the edit.',
22
+ 'Verify and refine: Create or edit with verify: { render: true } to receive inspection and an image for that exact revision. Check diagnostics for clipping, unintended overlaps, occlusion, text placement, and connectors crossing components. Examine the image for reading order, legibility, correct relationships, and clear arrow direction; structural validity alone does not establish visual quality. Fix concrete problems with revision-guarded edits and verify again. Use verify: { render: false } for intermediate create/edit checks when an image would add no information; use verify_excalidraw with render: true for the final image. Stop when the requested meaning is clear and no material layout issue remains; do not redraw solely to chase cosmetic variation.',
23
+ 'Rendering limits: Remote collabmd-basic-svg previews approximate Excalidraw and report preview-not-pixel-identical; WebMCP uses the official browser renderer. If an image is unavailable, report that visual quality was not checked instead of claiming it was verified.',
24
+ 'Examples below are complete MCP tools/call payloads using this server\'s schema. Choose a new Vault-relative path and adapt labels, geometry, and relationships. For WebMCP, call the corresponding collabmd_ tool with the arguments object. Reuse this guide during the task; fetching it before every edit is unnecessary.',
25
+ ].join('\n\n');
26
+
27
+ const EXCALIDRAW_CREATION_EXAMPLES = [
28
+ {
29
+ name: 'create_excalidraw',
30
+ arguments: {
31
+ path: 'diagrams/request-flow.excalidraw',
32
+ elements: [
33
+ { id: 'title', type: 'text', x: 40, y: 32, text: 'Request review', fontSize: 28 },
34
+ { id: 'request', type: 'rectangle', x: 40, y: 96, width: 200, height: 88, backgroundColor: '#e7f5ff' },
35
+ { id: 'review', type: 'rectangle', x: 360, y: 96, width: 200, height: 88, backgroundColor: '#e7f5ff' },
36
+ { id: 'respond', type: 'rectangle', x: 680, y: 96, width: 200, height: 88, backgroundColor: '#e7f5ff' },
37
+ { id: 'request-label', type: 'text', x: 98, y: 127.5, text: 'Request', containerId: 'request' },
38
+ { id: 'review-label', type: 'text', x: 424, y: 127.5, text: 'Review', containerId: 'review' },
39
+ { id: 'respond-label', type: 'text', x: 738, y: 127.5, text: 'Respond', containerId: 'respond' },
40
+ { id: 'request-review', type: 'arrow', x: 244, y: 140, points: [[0, 0], [112, 0]], startElementId: 'request', endElementId: 'review' },
41
+ { id: 'review-respond', type: 'arrow', x: 564, y: 140, points: [[0, 0], [112, 0]], startElementId: 'review', endElementId: 'respond' },
42
+ ],
43
+ verify: { render: true },
44
+ },
45
+ },
46
+ {
47
+ name: 'create_excalidraw',
48
+ arguments: {
49
+ path: 'diagrams/service-layers.excalidraw',
50
+ elements: [
51
+ { id: 'title', type: 'text', x: 40, y: 32, text: 'Service layers', fontSize: 28 },
52
+ { id: 'presentation', type: 'rectangle', x: 40, y: 96, width: 360, height: 96, backgroundColor: '#e7f5ff' },
53
+ { id: 'application', type: 'rectangle', x: 40, y: 256, width: 360, height: 96, backgroundColor: '#e7f5ff' },
54
+ { id: 'storage', type: 'rectangle', x: 40, y: 416, width: 360, height: 96, backgroundColor: '#e7f5ff' },
55
+ { id: 'presentation-label', type: 'text', x: 148, y: 131.5, text: 'Presentation', containerId: 'presentation' },
56
+ { id: 'application-label', type: 'text', x: 154, y: 291.5, text: 'Application', containerId: 'application' },
57
+ { id: 'storage-label', type: 'text', x: 178, y: 451.5, text: 'Storage', containerId: 'storage' },
58
+ { id: 'presentation-application', type: 'arrow', x: 220, y: 196, points: [[0, 0], [0, 56]], startElementId: 'presentation', endElementId: 'application' },
59
+ { id: 'application-storage', type: 'arrow', x: 220, y: 356, points: [[0, 0], [0, 56]], startElementId: 'application', endElementId: 'storage' },
60
+ ],
61
+ verify: { render: true },
62
+ },
63
+ },
64
+ ].map((example) => JSON.stringify(example));
65
+
16
66
  const CAPABILITIES = Object.freeze({
17
67
  base: {
18
68
  agentCreatable: true,
@@ -35,7 +85,7 @@ const CAPABILITIES = Object.freeze({
35
85
  agentEditable: true,
36
86
  editable: true,
37
87
  extensions: [EXCALIDRAW_FILE_EXTENSION],
38
- guide: 'Excalidraw scene JSON managed by the canvas editor. Use create_excalidraw and edit_excalidraw rather than raw text edits. Element order is back-to-front; create supports beforeElementId and afterElementId, while edit supports relationship-aware translation, reorder, same-ID verification, and bound-text placement normalization. Container or group translation also moves bound text and grouped members. Standalone auto-resizing text recalculates its bounds when text metrics change; bound text whose font, size, line height, or content changes is re-centered and remeasured vertically. Line, arrow, and freedraw dimensions are derived from points. Creation and editing support inline inspection and optional rendering; verify_excalidraw can return compact layout diagnostics without an image. Remote fallback renders report preview-not-pixel-identical. Supported agent element types: rectangle, ellipse, diamond, text, arrow, line, and freedraw. Embed with ![[drawing.excalidraw]].',
88
+ guide: 'Excalidraw scene JSON managed by the canvas editor. Use create_excalidraw and edit_excalidraw rather than raw text edits. Element order is back-to-front; create supports beforeElementId and afterElementId, while edit supports relationship-aware translation, reorder, same-ID replacement, and bound-text placement normalization. Container or group translation also moves bound text and grouped members. Standalone auto-resizing text recalculates its bounds when text metrics change; bound text whose font, size, line height, or content changes is re-centered and remeasured vertically. Line, arrow, and freedraw dimensions are derived from points. Creation and editing support inline inspection and optional rendering; verify_excalidraw can return compact layout diagnostics without an image. Remote fallback renders report preview-not-pixel-identical. Supported agent element types: rectangle, ellipse, diamond, text, arrow, line, and freedraw. Embed with ![[drawing.excalidraw]].',
39
89
  examples: ['![[drawing.excalidraw]]'],
40
90
  },
41
91
  html: {
@@ -59,12 +109,13 @@ const CAPABILITIES = Object.freeze({
59
109
  agentEditable: true,
60
110
  editable: true,
61
111
  extensions: [...MARKDOWN_FILE_EXTENSIONS],
62
- guide: 'Markdown-it syntax with YAML frontmatter, headings, tables, task lists, fenced code, linkified URLs, [[wiki-links]], aliases, and embeds. Use ![[file.ext]] for Base, draw.io, Excalidraw, Mermaid, or PlantUML Vault embeds. Use ![Label](https://...) for public video embeds: valid YouTube URLs or direct public HTTPS URLs ending in .mp4, .webm, or .ogg. Use relative Markdown image paths for Vault image attachments. Raw HTML is disabled.',
112
+ guide: 'Markdown-it syntax with YAML frontmatter, headings, tables, task lists, fenced code, linkified URLs, [[wiki-links]], aliases, and embeds. Use $...$ for inline math and $$...$$ on its own lines for display math (KaTeX). Use ![[file.ext]] for Base, draw.io, Excalidraw, Mermaid, or PlantUML Vault embeds. Use ![Label](https://...) for public video embeds: valid YouTube URLs or direct public HTTPS URLs ending in .mp4, .webm, or .ogg. Use relative Markdown image paths for Vault image attachments. Raw HTML is disabled.',
63
113
  examples: [
64
114
  '---\ntags: [docs]\n---\n# Title\n\n- [ ] Task\n\n[[Other Note|Alias]]',
65
115
  '![[diagram.mmd]]\n![[diagram.puml]]\n![[drawing.excalidraw]]\n![[architecture.drawio]]\n![[query.base]]',
66
116
  '![Demo](https://www.youtube.com/watch?v=dQw4w9WgXcQ)\n![Demo](https://cdn.example.com/demo.webm)\n![Diagram](assets/diagram.png)',
67
117
  '```mermaid\nflowchart LR\n A --> B\n```\n\n```plantuml\n@startuml\nAlice -> Bob\n@enduml\n```',
118
+ 'Inline math $E = mc^2$ and display math:\n\n$$\n\\frac{a}{b}\n$$',
68
119
  ],
69
120
  },
70
121
  mermaid: {
@@ -127,9 +178,13 @@ export function listCollabMdContentCapabilities() {
127
178
  export function getCollabMdSyntaxGuide(kind) {
128
179
  const capability = getCollabMdContentCapability(kind);
129
180
  return capability ? {
130
- examples: capability.examples,
181
+ examples: capability.kind === 'excalidraw'
182
+ ? [...EXCALIDRAW_CREATION_EXAMPLES, ...capability.examples]
183
+ : capability.examples,
131
184
  extensions: capability.extensions,
132
- guide: capability.guide,
185
+ guide: capability.kind === 'excalidraw'
186
+ ? `${capability.guide}\n\n${EXCALIDRAW_DESIGN_GUIDE}`
187
+ : capability.guide,
133
188
  kind: capability.kind,
134
189
  } : null;
135
190
  }
@@ -1,2 +1,4 @@
1
+ export const MSG_SYNC = 0;
2
+ export const MSG_AWARENESS = 1;
1
3
  export const MSG_AGENT_FLUSH = 4;
2
4
  export const MSG_AGENT_FLUSH_ACK = 5;
@@ -0,0 +1,35 @@
1
+ import { extractYamlFrontmatter } from './yaml-frontmatter.js';
2
+
3
+ // ponytail: top-level ATX and single-line Setext headings only; use a shared full parser if nested outlines are needed.
4
+ export function collectMarkdownOutline(content) {
5
+ const lines = (extractYamlFrontmatter(content)?.bodyMarkdown ?? content).split(/\r?\n/u);
6
+ const headings = [];
7
+ let fence = null;
8
+ for (let index = 0; index < lines.length; index += 1) {
9
+ const line = lines[index];
10
+ const marker = line.match(/^ {0,3}(`{3,}|~{3,})(.*)$/u);
11
+ if (fence) {
12
+ if (marker && marker[1][0] === fence[0] && marker[1].length >= fence.length && !marker[2].trim()) {
13
+ fence = null;
14
+ }
15
+ continue;
16
+ }
17
+ if (marker && (marker[1][0] !== '`' || !marker[2].includes('`'))) {
18
+ fence = marker[1];
19
+ continue;
20
+ }
21
+ const atx = line.match(/^ {0,3}(#{1,6})(?:[\t ]+(.*)|$)/u);
22
+ const setext = !atx && /^ {0,3}\S/u.test(line) && !/^ {0,3}(?:>|[-+*]\s|\d+[.)]\s)/u.test(line)
23
+ && lines[index + 1]?.match(/^ {0,3}(=+|-+)[\t ]*$/u);
24
+ if (!atx && !setext) continue;
25
+ const text = atx ? (atx[2] ?? '').replace(/(?:^|[\t ]+)#+[\t ]*$/u, '').trim() : line.trim();
26
+ headings.push({
27
+ level: atx ? atx[1].length : setext[1][0] === '=' ? 1 : 2,
28
+ line: index + 1,
29
+ text: text.slice(0, 200),
30
+ truncated: text.length > 200,
31
+ });
32
+ if (setext) index += 1;
33
+ }
34
+ return headings;
35
+ }
@@ -158,12 +158,16 @@ export class AgentConnectionService {
158
158
  throw createAccessError('AGENT_TOKEN_INVALID', 'Agent Connection token is invalid or expired', 401);
159
159
  }
160
160
 
161
+ if (this.hostedWorkspaceService?.enabled && connection.subjectType !== 'hosted_membership') {
162
+ throw createAccessError('AGENT_MEMBERSHIP_REQUIRED', 'Create a new Agent Connection for this Team Membership', 403);
163
+ }
164
+
161
165
  let collaborator = connection.subjectEmail
162
166
  ? { email: connection.subjectEmail, name: connection.subjectEmail }
163
167
  : null;
164
168
  if (connection.subjectType === 'hosted_membership') {
165
- const access = await this.hostedWorkspaceService.authorizeWorkspaceAccess({ user: collaborator });
166
- if (!access.ok || access.membership.id !== connection.subjectId) {
169
+ const access = await this.hostedWorkspaceService?.authorizeWorkspaceAccess({ user: collaborator });
170
+ if (!access?.ok || access.membership?.id !== connection.subjectId) {
167
171
  throw createAccessError('AGENT_MEMBERSHIP_REQUIRED', 'Team Membership is no longer active', 403);
168
172
  }
169
173
  collaborator = access.membership;