collabmd 0.1.47 → 0.1.49

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 (305) hide show
  1. package/README.md +70 -11
  2. package/bin/collabmd.js +3 -0
  3. package/dist/client/assets/CodeMirrorEditor-UCMRAMCV-C-nmgL5g.js +1 -0
  4. package/dist/client/assets/JetBrainsMono-Regular-BQaDgvhP.woff2 +0 -0
  5. package/dist/client/assets/abnfDiagram-VCTEODGH-CdVZqicp.js +1 -0
  6. package/dist/client/assets/{architectureDiagram-5GKGNRK7-I39sYjHI.js → architectureDiagram-5GKGNRK7-wUo0bXif.js} +3 -3
  7. package/dist/client/assets/babel-CY5KOv-I.js +16 -0
  8. package/dist/client/assets/{blockDiagram-NRAW4CY4-C6DtJy5Y.js → blockDiagram-I7D4REHJ-BRSK3m49.js} +4 -4
  9. package/dist/client/assets/browser-utils-DbXSMI-6.js +1 -0
  10. package/dist/client/assets/{c4Diagram-UCG6FXSJ-CtWtxS9_.js → c4Diagram-7LVT6UL2-yD2poxqw.js} +1 -1
  11. package/dist/client/assets/channel-Fa4GS_-F.js +1 -0
  12. package/dist/client/assets/chunk-2E4U76K2-BPnTT-J3.js +2 -0
  13. package/dist/client/assets/{chunk-TEH6E4GO-DVayPj-q.js → chunk-4HAMMTFA-DStbIfJ1.js} +20 -20
  14. package/dist/client/assets/{chunk-75Z2AOVW-CdFSaPjz.js → chunk-75Z2AOVW-C5pGd3W9.js} +1 -1
  15. package/dist/client/assets/{chunk-CLGD4ZFX-DQLgbQrv.js → chunk-CLGD4ZFX-BMeArk03.js} +1 -1
  16. package/dist/client/assets/chunk-DU6HZSFF-Zkp69c6c.js +127 -0
  17. package/dist/client/assets/{chunk-F27PBJKO-CNHIFhjo.js → chunk-F27PBJKO-D4xNct1r.js} +1 -1
  18. package/dist/client/assets/{chunk-GMAD6QVW-CbcBqPM5.js → chunk-GMAD6QVW-NZ6WpDb8.js} +1 -1
  19. package/dist/client/assets/{chunk-OBVCFTLP-BJR7u1jh.js → chunk-GVQU2GXP-D8SDprfX.js} +1 -1
  20. package/dist/client/assets/{chunk-G27WJ6UU-D9-eg537.js → chunk-IMKFNOWR-D8jEuU3Q.js} +2 -2
  21. package/dist/client/assets/{chunk-JQ64N6SF-DSFNH4bh.js → chunk-L3NEJ4N5-aijKP-eh.js} +1 -1
  22. package/dist/client/assets/chunk-OSK3NFVY-CCbLQAMa.js +10 -0
  23. package/dist/client/assets/{chunk-P2QGCYS3-BRpqY32H.js → chunk-P2QGCYS3-Oag_FdCq.js} +1 -1
  24. package/dist/client/assets/{chunk-POPQ4Y6H-Cb4SlVZF.js → chunk-POPQ4Y6H-CYnpIgXT.js} +1 -1
  25. package/dist/client/assets/{chunk-PWAF6VOD-Cz8IwBB5.js → chunk-PWAF6VOD-JSNrcBmP.js} +1 -1
  26. package/dist/client/assets/{chunk-RM4UPSZO-CWRwxNWJ.js → chunk-RM4UPSZO-DOWllDY8.js} +4 -4
  27. package/dist/client/assets/{chunk-RHFEMEQ7-CWY8cf4H.js → chunk-SHT3W25Y-BiQGljao.js} +5 -5
  28. package/dist/client/assets/{chunk-SVP7TREG-CyHOmcac.js → chunk-SVP7TREG-DB485R5x.js} +1 -1
  29. package/dist/client/assets/{chunk-LCL6LL3I-DmDkVukh.js → chunk-TICWLB2K-8rAVvoS3.js} +4 -4
  30. package/dist/client/assets/{chunk-CKBBP62Z-DG26UiBv.js → chunk-TLUHSLCS-DTY5v0aj.js} +2 -2
  31. package/dist/client/assets/classDiagram-ZZMXUADV-BsQWoR3Q.js +1 -0
  32. package/dist/client/assets/classDiagram-v2-VYDZK3BY-BsQWoR3Q.js +1 -0
  33. package/dist/client/assets/{comment-thread-store-CdcwrObc.js → comment-thread-store-CX98zR6q.js} +1 -1
  34. package/dist/client/assets/comment-threads-BnRwo5B9.js +4 -0
  35. package/dist/client/assets/{cynefinDiagram-5FMLGOSQ-CdTPi2yO.js → cynefinDiagram-5FMLGOSQ-rTz9RhFH.js} +1 -1
  36. package/dist/client/assets/{dagre-3AP2YEHR-5gtJtd0O.js → dagre-GXQ25YYZ-Cr67wLpQ.js} +2 -2
  37. package/dist/client/assets/{diagram-S7CK7UJ4-BudWz9WU.js → diagram-S7CK7UJ4-DywERe__.js} +2 -2
  38. package/dist/client/assets/{diagram-UQ7AKVKN-3v4rbH-s.js → diagram-UQ7AKVKN-CNYlXtu4.js} +1 -1
  39. package/dist/client/assets/diagram-VSXAHHWV-0H1a61Bn.js +3 -0
  40. package/dist/client/assets/{diagram-VX7I27RA-C_-rj0sw.js → diagram-VX7I27RA-CsJbsx5F.js} +1 -1
  41. package/dist/client/assets/{diagram-Z3DM3KII-B4yxavgj.js → diagram-Z3DM3KII-D0mLxEgI.js} +1 -1
  42. package/dist/client/assets/dist--hk9I5HQ.js +1 -0
  43. package/dist/client/assets/{dist-DutPuFmC.js → dist-B1XEa-Zs.js} +1 -1
  44. package/dist/client/assets/dist-Bd1JucQF.js +1 -0
  45. package/dist/client/assets/{dist-DZAAWTG-.js → dist-C0G3AaXG.js} +1 -1
  46. package/dist/client/assets/dist-ChRoo3IB.js +9 -0
  47. package/dist/client/assets/dist-Dm4w5UId.js +1 -0
  48. package/dist/client/assets/{dist-B_yQaEv_.js → dist-DpYDHR9p.js} +1 -1
  49. package/dist/client/assets/{dist-CietwTVS.js → dist-DzNmC81X.js} +1 -1
  50. package/dist/client/assets/{dist-DDUn5zTz.js → dist-GvvCNBe4.js} +1 -1
  51. package/dist/client/assets/dist-JaU3aRlD.js +19 -0
  52. package/dist/client/assets/{dist-Bw3VIE_v.js → dist-TW8iFRyW.js} +1 -1
  53. package/dist/client/assets/{dist-Dir5dDKZ.js → dist-jVU5Be5P.js} +1 -1
  54. package/dist/client/assets/document-formatter-rDDjRfZ2.js +2 -0
  55. package/dist/client/assets/drawioEditor-JubEEha7.js +9 -0
  56. package/dist/client/assets/ebnfDiagram-PWID7BFC-HeTxHpCU.js +1 -0
  57. package/dist/client/assets/editor-session-Bk6oIvSr.js +54 -0
  58. package/dist/client/assets/embedded-editor-base-BlCgz6mw.css +1 -0
  59. package/dist/client/assets/{erDiagram-SSCWMZ5O-C-iy6VkX.js → erDiagram-RLTQ6QDP-CbrDdd5P.js} +2 -2
  60. package/dist/client/assets/{es-CAsWR6hG.js → es-Bfdp096f.js} +13 -13
  61. package/dist/client/assets/estree-CuT_pB8K.js +44 -0
  62. package/dist/client/assets/excalidraw-element-link-YLIaTnVF.js +7 -0
  63. package/dist/client/assets/{excalidraw-scene-BOben2gr.js → excalidraw-scene-6uROebca.js} +1 -1
  64. package/dist/client/assets/{excalidraw-editor-BlcN6umJ.css → excalidrawEditor-BbSbI80a.css} +1 -1
  65. package/dist/client/assets/excalidrawEditor-dBMbRX_S.js +9 -0
  66. package/dist/client/assets/export-page-CRRQ2NEl.js +57 -0
  67. package/dist/client/assets/exportDocument-BlQRd9_m.js +2 -0
  68. package/dist/client/assets/exportDocument-CNSbjZwu.css +1 -0
  69. package/dist/client/assets/{file-icon-svg-CQAjlWjK.js → file-icon-svg-Y_kpF957.js} +1 -1
  70. package/dist/client/assets/file-kind-BwMIcZbi.js +1 -0
  71. package/dist/client/assets/file-search-DDLyyLDU.js +1 -0
  72. package/dist/client/assets/flowDiagram-HODETNUW-D5Gy0wmg.js +1 -0
  73. package/dist/client/assets/{ganttDiagram-EL5Y4UJY-DtKHAbez.js → ganttDiagram-EL5Y4UJY-BHgOYiZz.js} +1 -1
  74. package/dist/client/assets/{gitGraphDiagram-WWUBYQGX-oue8fQ5o.js → gitGraphDiagram-WWUBYQGX-Dl__X3Sk.js} +1 -1
  75. package/dist/client/assets/html-Cdnr2qzU.js +25 -0
  76. package/dist/client/assets/image-ZVKINSPA-DgzW5zAy.js +1 -0
  77. package/dist/client/assets/index-D3RER1SZ.js +1023 -0
  78. package/dist/client/assets/index-DREVKl_K.css +1 -0
  79. package/dist/client/assets/{infoDiagram-RXCK75RN-BMzo6KIn.js → infoDiagram-27XIBGKW-DBpoANC9.js} +1 -1
  80. package/dist/client/assets/{ishikawaDiagram-5VMMS53U-BIM3h287.js → ishikawaDiagram-5VMMS53U-BMPC6hfp.js} +1 -1
  81. package/dist/client/assets/{journeyDiagram-EYS64GPL-mF6Lh8O-.js → journeyDiagram-3NMN7TZE-B1sApUmM.js} +2 -2
  82. package/dist/client/assets/{kanban-definition-3QL26DDD-DLN2NyoR.js → kanban-definition-UXKFOSKX-C9yP4td1.js} +4 -4
  83. package/dist/client/assets/{line-BfTWJmgf.js → line-BFl3ujec.js} +1 -1
  84. package/dist/client/assets/markdown-CByV-4CU.js +70 -0
  85. package/dist/client/assets/{mermaid.core-CLZBlpIW.js → mermaid.core-BrY09czX.js} +5 -5
  86. package/dist/client/assets/mermaid.core-DfcNfOTv.js +1 -0
  87. package/dist/client/assets/{mindmap-definition-FBJOCRG2-CRyHaHTk.js → mindmap-definition-YA3MSWOX-BUQHcYbK.js} +8 -8
  88. package/dist/client/assets/pegDiagram-XKGWAZYB-Bi2Iml7Z.js +1 -0
  89. package/dist/client/assets/{pieDiagram-E7YTZNPT-B5OZPb88.js → pieDiagram-E7YTZNPT-_gYXnMoi.js} +1 -1
  90. package/dist/client/assets/preview-render-compiler-CfxJYldJ.js +41 -0
  91. package/dist/client/assets/preview-render-compiler-Cu8_i9iS.js +1 -0
  92. package/dist/client/assets/{preview-render-worker-BmN79bVc.js → preview-render-worker-c4Yi93qW.js} +41 -35
  93. package/dist/client/assets/prod-BiJL30sl.js +1 -0
  94. package/dist/client/assets/prod-qAk7rHa4.js +177 -0
  95. package/dist/client/assets/{quadrantDiagram-AXDQQJYC-Drrw14YH.js → quadrantDiagram-AXDQQJYC-DwexhEhd.js} +1 -1
  96. package/dist/client/assets/quick-switcher-controller-BoIK_wuG.js +1 -0
  97. package/dist/client/assets/railroadDiagram-O6MQD6OU-BVA5UbMu.js +1 -0
  98. package/dist/client/assets/{requirementDiagram-EFPCY7ZU-CRZG6mRB.js → requirementDiagram-BXWQKSXE-C4cKwiIw.js} +2 -2
  99. package/dist/client/assets/runtime-config-DcmnGcXU.js +1 -0
  100. package/dist/client/assets/{sankeyDiagram-P5KCCOFB-DvarEJpo.js → sankeyDiagram-P5KCCOFB-B5HHkRT2.js} +1 -1
  101. package/dist/client/assets/{sequenceDiagram-WJ2MYXX4-B4oWlb-w.js → sequenceDiagram-WJ2MYXX4-BX6jqJFD.js} +6 -6
  102. package/dist/client/assets/standalone-6z5x8CWe.js +29 -0
  103. package/dist/client/assets/{stateDiagram-HBIQ2CUA-qbHIIqRZ.js → stateDiagram-D77RDMKH-CmqxyRGx.js} +1 -1
  104. package/dist/client/assets/stateDiagram-v2-MP3YSRHH-zoLLQVyh.js +1 -0
  105. package/dist/client/assets/{swimlanes-XN3QIQJK-xB6CtUGj.js → swimlanes-42K2YHIH-Bmgb9Zld.js} +1 -1
  106. package/dist/client/assets/swimlanesDiagram-VR7AAH4N-DS-KQN37.js +8 -0
  107. package/dist/client/assets/{timeline-definition-24CTP7MA-Lj_yTNlY.js → timeline-definition-24CTP7MA-BA-lVH6P.js} +1 -1
  108. package/dist/client/assets/vault-api-client-iZLhMJKe.js +6 -0
  109. package/dist/client/assets/{vennDiagram-4TSXK5OY-BekRp5Y0.js → vennDiagram-4TSXK5OY-DNdUC_Xj.js} +1 -1
  110. package/dist/client/assets/{wardleyDiagram-VM6X3IG4-kdnV_Hdm.js → wardleyDiagram-VM6X3IG4-C2oY-YbF.js} +1 -1
  111. package/dist/client/assets/wiki-link-resolver-DFIwErjc.js +1 -0
  112. package/dist/client/assets/{xychartDiagram-S5SC5T6Z-DufGwNSB.js → xychartDiagram-S5SC5T6Z-CoIR8CBX.js} +1 -1
  113. package/dist/client/assets/yaml-9ltHPDNO.js +154 -0
  114. package/dist/client/assets/{yjs-provider-reset-guard-DE0vINDP.js → yjs-provider-reset-guard-9ul1qF6k.js} +1 -1
  115. package/dist/client/drawio-editor.html +11 -3
  116. package/dist/client/excalidraw-editor.html +45 -2
  117. package/dist/client/export-document.html +3 -3
  118. package/dist/client/index.html +106 -52
  119. package/integrations/pi/index.ts +94 -0
  120. package/package.json +41 -29
  121. package/src/client/app/drawio-editor.html +2 -2
  122. package/src/client/app/excalidraw-editor.html +2 -2
  123. package/src/client/app/export-document.html +1 -1
  124. package/src/client/app/index.html +88 -50
  125. package/src/client/app/main-entry.js +15 -1
  126. package/src/client/application/app-shell/chat-feature.js +7 -22
  127. package/src/client/application/app-shell/export-feature.js +17 -1
  128. package/src/client/application/app-shell/git-feature.js +51 -14
  129. package/src/client/application/app-shell/presence-feature.js +8 -25
  130. package/src/client/application/app-shell/ui-feature-identity.js +13 -0
  131. package/src/client/application/app-shell/ui-feature-shell.js +199 -99
  132. package/src/client/application/app-shell/ui-feature-sidebar.js +43 -7
  133. package/src/client/application/app-shell/ui-feature-tab-activity.js +19 -6
  134. package/src/client/application/app-shell/ui-feature-toolbar.js +16 -129
  135. package/src/client/application/app-shell-elements.js +8 -0
  136. package/src/client/application/preview-render-compiler.js +1 -87
  137. package/src/client/application/preview-render-scheduler.js +8 -24
  138. package/src/client/application/preview-renderer.js +2 -2
  139. package/src/client/application/webmcp-diagram-renderer.js +47 -0
  140. package/src/client/application/workspace-coordinator.js +23 -4
  141. package/src/client/application/workspace-preview-controller.js +120 -2
  142. package/src/client/application/workspace-route-controller.js +11 -1
  143. package/src/client/assets/vendor/jetbrains-mono/JetBrainsMono-Regular.woff2 +0 -0
  144. package/src/client/assets/vendor/jetbrains-mono/OFL.txt +93 -0
  145. package/src/client/bootstrap/collabmd-app-shell.js +99 -6
  146. package/src/client/domain/document-formatter.js +193 -0
  147. package/src/client/domain/excalidraw-element-link.js +73 -0
  148. package/src/client/domain/excalidraw-scene.js +21 -0
  149. package/src/client/domain/file-search.js +73 -0
  150. package/src/client/domain/git-labels.js +5 -0
  151. package/src/client/domain/hash-routes.js +8 -0
  152. package/src/client/domain/room.js +1 -5
  153. package/src/client/domain/runtime-paths.js +5 -0
  154. package/src/client/domain/vault-paths.js +6 -4
  155. package/src/client/domain/wiki-link-completions.js +20 -20
  156. package/src/client/drawio-editor.js +8 -3
  157. package/src/client/excalidraw-editor.js +287 -16
  158. package/src/client/export/export-host.js +59 -36
  159. package/src/client/export/export-page.js +14 -4
  160. package/src/client/export/export-pipeline.js +270 -42
  161. package/src/client/infrastructure/agent-connection-api-client.js +23 -0
  162. package/src/client/infrastructure/auth-client.js +3 -13
  163. package/src/client/infrastructure/editor-session.js +15 -0
  164. package/src/client/infrastructure/editor-view-adapter.js +73 -14
  165. package/src/client/infrastructure/excalidraw-room-client.js +80 -1
  166. package/src/client/infrastructure/git-api-client.js +39 -33
  167. package/src/client/infrastructure/lobby-presence.js +2 -5
  168. package/src/client/infrastructure/runtime-config.js +11 -1
  169. package/src/client/infrastructure/tab-activity-lock.js +2 -5
  170. package/src/client/infrastructure/vault-api-client.js +33 -26
  171. package/src/client/infrastructure/webmcp-tool-registry.js +283 -0
  172. package/src/client/infrastructure/workspace-sync-client.js +6 -4
  173. package/src/client/presentation/agent-connection-controller.js +255 -0
  174. package/src/client/presentation/backlinks-panel.js +3 -0
  175. package/src/client/presentation/bases-preview-controller.js +59 -26
  176. package/src/client/presentation/comment-ui/comment-ui-card.js +4 -2
  177. package/src/client/presentation/create-menu-presenter.js +19 -16
  178. package/src/client/presentation/excalidraw-embed-controller.js +164 -4
  179. package/src/client/presentation/file-action-controller.js +15 -2
  180. package/src/client/presentation/file-explorer-controller.js +3 -0
  181. package/src/client/presentation/file-explorer-view.js +71 -12
  182. package/src/client/presentation/file-history-view-controller.js +19 -12
  183. package/src/client/presentation/file-tree-state.js +1 -11
  184. package/src/client/presentation/git-diff-view-controller.js +70 -53
  185. package/src/client/presentation/git-panel-controller.js +86 -32
  186. package/src/client/presentation/image-lightbox-controller.js +20 -16
  187. package/src/client/presentation/layout-controller.js +3 -1
  188. package/src/client/presentation/quick-switcher-controller.js +74 -232
  189. package/src/client/presentation/quick-switcher-text-search.js +10 -14
  190. package/src/client/styles/components/navigation.css +1 -2
  191. package/src/client/styles/components/scrollbars.css +10 -0
  192. package/src/client/styles/export-document.css +44 -29
  193. package/src/client/styles/features/agent-connection.css +202 -0
  194. package/src/client/styles/features/collaboration-chat.css +8 -1
  195. package/src/client/styles/features/collaboration-dialogs.css +16 -1
  196. package/src/client/styles/features/collaboration-presence.css +30 -5
  197. package/src/client/styles/features/diff-toolbar.css +1 -1
  198. package/src/client/styles/features/media-lightbox.css +12 -3
  199. package/src/client/styles/features/preview-markdown.css +54 -0
  200. package/src/client/styles/features/quick-switcher.css +20 -11
  201. package/src/client/styles/foundation/themes.css +2 -0
  202. package/src/client/styles/foundation/tokens.css +8 -0
  203. package/src/client/styles/layout/editor-page.css +25 -11
  204. package/src/client/styles/layout/responsive.css +2 -20
  205. package/src/client/styles/layout/shell.css +77 -24
  206. package/src/client/styles/layout/sidebar.css +7 -4
  207. package/src/client/styles/layout/view-modes.css +2 -0
  208. package/src/client/styles/overrides/codemirror.css +31 -19
  209. package/src/client/styles/primitives/controls.css +21 -54
  210. package/src/client/styles/style.css +1 -0
  211. package/src/client/styles/surfaces/excalidraw-editor.css +42 -0
  212. package/src/domain/agent-tool-definitions.js +796 -0
  213. package/src/domain/collabmd-content-capabilities.js +149 -0
  214. package/src/domain/collaboration-protocol.js +2 -0
  215. package/src/domain/comment-threads.js +3 -5
  216. package/src/domain/diagram-source.js +50 -0
  217. package/src/domain/editable-content-revision.js +10 -0
  218. package/src/domain/editable-text.js +3 -0
  219. package/src/domain/exact-text-edits.js +69 -0
  220. package/src/domain/excalidraw-agent-scene.js +522 -0
  221. package/src/domain/excalidraw-agent-verification.js +460 -0
  222. package/src/domain/excalidraw-room-codec.js +1 -5
  223. package/src/domain/file-kind.js +12 -1
  224. package/src/domain/video-embed.js +76 -0
  225. package/src/server/application/agent-connection-service.js +178 -0
  226. package/src/server/application/agent-content-service.js +773 -0
  227. package/src/server/application/workspace-reconciliation.js +5 -7
  228. package/src/server/config/env.js +51 -1
  229. package/src/server/create-app-server.js +36 -0
  230. package/src/server/domain/bases/base-query-service.js +1 -5
  231. package/src/server/domain/collaboration/collaboration-room.js +121 -25
  232. package/src/server/domain/collaboration/protocol.js +4 -0
  233. package/src/server/domain/hosted-workspace.js +21 -0
  234. package/src/server/domain/markdown-reference-extractor.js +15 -1
  235. package/src/server/domain/ripgrep-search-service.js +110 -37
  236. package/src/server/infrastructure/git/git-service.js +19 -1
  237. package/src/server/infrastructure/git/history-service.js +1 -1
  238. package/src/server/infrastructure/git/local-exclude.js +25 -0
  239. package/src/server/infrastructure/git/parsers.js +19 -17
  240. package/src/server/infrastructure/git/path-utils.js +0 -16
  241. package/src/server/infrastructure/git/status-service.js +1 -1
  242. package/src/server/infrastructure/git/untracked-files.js +12 -21
  243. package/src/server/infrastructure/http/create-agent-api-handler.js +171 -0
  244. package/src/server/infrastructure/http/create-git-api-command-handler.js +32 -0
  245. package/src/server/infrastructure/http/create-request-handler.js +28 -0
  246. package/src/server/infrastructure/http/create-static-handler.js +6 -0
  247. package/src/server/infrastructure/mcp/create-agent-mcp-handler.js +199 -0
  248. package/src/server/infrastructure/persistence/agent-connection-store.js +120 -0
  249. package/src/server/infrastructure/persistence/path-utils.js +10 -4
  250. package/src/server/infrastructure/persistence/pull-backup-store.js +2 -27
  251. package/src/server/infrastructure/persistence/vault-file-store.js +11 -2
  252. package/src/server/shared/agent-tool-image.js +22 -0
  253. package/src/server/shared/agent-tool-rate-limiter.js +20 -0
  254. package/src/server/startup/git-remote-bootstrap.js +5 -33
  255. package/dist/client/assets/CodeMirrorEditor-UCMRAMCV-BPH4FJkv.js +0 -1
  256. package/dist/client/assets/abnfDiagram-VCTEODGH-BNDLzJ7L.js +0 -1
  257. package/dist/client/assets/browser-utils--H_DkyEF.js +0 -1
  258. package/dist/client/assets/channel-CaoKA_We.js +0 -1
  259. package/dist/client/assets/chunk-DSNCTWBM-8xkug7fQ.js +0 -2
  260. package/dist/client/assets/chunk-DU6HZSFF-COXDzJK1.js +0 -127
  261. package/dist/client/assets/chunk-R7TYR2AO-CTd0Yj98.js +0 -10
  262. package/dist/client/assets/classDiagram-DTDB5LWJ-7fEmn0zV.js +0 -1
  263. package/dist/client/assets/classDiagram-v2-JRS7N3AN-7fEmn0zV.js +0 -1
  264. package/dist/client/assets/comment-threads-9J6Em-_y.js +0 -4
  265. package/dist/client/assets/comment-ui-shared-DWkk9Vh3.js +0 -7
  266. package/dist/client/assets/diagram-VSXAHHWV-CQRVEZR7.js +0 -3
  267. package/dist/client/assets/dist-73RPdcyU.js +0 -1
  268. package/dist/client/assets/dist-CH-sQu3r.js +0 -1
  269. package/dist/client/assets/drawio-editor-BjrxTe3l.js +0 -9
  270. package/dist/client/assets/drawioEditor-DUVZjSSr.js +0 -2
  271. package/dist/client/assets/ebnfDiagram-PWID7BFC-OXa8VEp1.js +0 -1
  272. package/dist/client/assets/editor-session-DfZuRgB_.js +0 -54
  273. package/dist/client/assets/embedded-editor-base-DvMynhKu.css +0 -1
  274. package/dist/client/assets/excalidraw-editor-D7pnUCLH.js +0 -9
  275. package/dist/client/assets/excalidraw-mermaid-stub-BNckbX2n.js +0 -1
  276. package/dist/client/assets/excalidraw-mermaid-stub-DE5FTiZB.js +0 -1
  277. package/dist/client/assets/excalidrawEditor-B0jOK3lv.js +0 -2
  278. package/dist/client/assets/export-page-Bs3xE1fg.js +0 -57
  279. package/dist/client/assets/exportDocument-Dg9MjkIk.js +0 -2
  280. package/dist/client/assets/exportDocument-PnYU3v1s.css +0 -1
  281. package/dist/client/assets/file-kind-BbqgGzpc.js +0 -1
  282. package/dist/client/assets/flowDiagram-A5DVABFB-CiW1eN8C.js +0 -1
  283. package/dist/client/assets/image-ZVKINSPA-0zXSnE7M.js +0 -1
  284. package/dist/client/assets/index-BIpgxyGZ.css +0 -1
  285. package/dist/client/assets/index-Z5sI0Bj-.js +0 -2
  286. package/dist/client/assets/main-Dwnj9Gaq.js +0 -903
  287. package/dist/client/assets/pegDiagram-XKGWAZYB-B31fKPR2.js +0 -1
  288. package/dist/client/assets/preview-render-compiler-BApvlLLo.js +0 -35
  289. package/dist/client/assets/preview-render-compiler-BQ_3h9vD.js +0 -1
  290. package/dist/client/assets/preview-render-profile-CE-5rVTC.js +0 -1
  291. package/dist/client/assets/prod-BiYPMR1i.js +0 -177
  292. package/dist/client/assets/prod-VxdGZ5Ly.js +0 -1
  293. package/dist/client/assets/quick-switcher-controller-ButWPmCI.js +0 -12
  294. package/dist/client/assets/railroadDiagram-O6MQD6OU-BPifP0MB.js +0 -1
  295. package/dist/client/assets/runtime-config-BLrEKVO1.js +0 -1
  296. package/dist/client/assets/stateDiagram-v2-4QOOHH4V-B--gjrit.js +0 -1
  297. package/dist/client/assets/swimlanesDiagram-VK2B7HYN-DO8XNXEg.js +0 -8
  298. package/dist/client/assets/vault-api-client-_LpV1aIn.js +0 -6
  299. package/dist/client/assets/vault-utils-wdQ0RNR9.js +0 -1
  300. package/src/client/app/drawio-editor-entry.js +0 -1
  301. package/src/client/app/excalidraw-editor-entry.js +0 -1
  302. package/src/client/excalidraw-mermaid-stub.js +0 -7
  303. package/src/client/main.js +0 -16
  304. /package/dist/client/assets/{drawio-editor-UQQ8XHou.css → drawioEditor-UQQ8XHou.css} +0 -0
  305. /package/dist/client/assets/{sizeCapture-X5ZJPWSS-B0uUizjq.js → sizeCapture-INFHLROL-B0uUizjq.js} +0 -0
@@ -15,16 +15,32 @@
15
15
  document.documentElement.setAttribute('data-initial-file-requested', 'true');
16
16
  }
17
17
  </script>
18
- <script type="module" crossorigin src="./assets/index-Z5sI0Bj-.js"></script>
18
+ <script type="module" crossorigin src="./assets/index-D3RER1SZ.js"></script>
19
19
  <link rel="modulepreload" crossorigin href="./assets/modulepreload-polyfill-P2Xu9kJm.js">
20
+ <link rel="modulepreload" crossorigin href="./assets/runtime-config-DcmnGcXU.js">
21
+ <link rel="modulepreload" crossorigin href="./assets/browser-utils-DbXSMI-6.js">
22
+ <link rel="modulepreload" crossorigin href="./assets/file-kind-BwMIcZbi.js">
23
+ <link rel="modulepreload" crossorigin href="./assets/vault-api-client-iZLhMJKe.js">
24
+ <link rel="modulepreload" crossorigin href="./assets/yjs-provider-reset-guard-9ul1qF6k.js">
25
+ <link rel="modulepreload" crossorigin href="./assets/drawio-room-yBUzk-vg.js">
20
26
  <link rel="modulepreload" crossorigin href="./assets/preload-helper-HclGiUj8.js">
27
+ <link rel="modulepreload" crossorigin href="./assets/comment-threads-BnRwo5B9.js">
28
+ <link rel="modulepreload" crossorigin href="./assets/excalidraw-scene-6uROebca.js">
29
+ <link rel="modulepreload" crossorigin href="./assets/rolldown-runtime-Dd_uD5pT.js">
30
+ <link rel="modulepreload" crossorigin href="./assets/es-Bfdp096f.js">
31
+ <link rel="modulepreload" crossorigin href="./assets/excalidraw-element-link-YLIaTnVF.js">
21
32
  <link rel="modulepreload" crossorigin href="./assets/base-BYODPHdS.js">
33
+ <link rel="modulepreload" crossorigin href="./assets/preview-diagram-utils-txBCoW8d.js">
34
+ <link rel="modulepreload" crossorigin href="./assets/wiki-link-resolver-DFIwErjc.js">
35
+ <link rel="modulepreload" crossorigin href="./assets/document-formatter-rDDjRfZ2.js">
36
+ <link rel="modulepreload" crossorigin href="./assets/file-icon-svg-Y_kpF957.js">
37
+ <link rel="stylesheet" crossorigin href="./assets/vault-api-client-C3mlS_4N.css">
22
38
  <link rel="stylesheet" crossorigin href="./assets/base-CaIEJUF9.css">
23
- <link rel="stylesheet" crossorigin href="./assets/index-BIpgxyGZ.css">
39
+ <link rel="stylesheet" crossorigin href="./assets/index-DREVKl_K.css">
24
40
  </head>
25
41
  <body>
26
42
 
27
- <a href="#editorContainer" class="sr-only skip-link">Skip to editor</a>
43
+ <a href="#editorContainer" class="sr-only skip-link" id="skipToEditor">Skip to editor</a>
28
44
 
29
45
  <div class="app-shell">
30
46
  <aside id="sidebar" class="sidebar">
@@ -78,8 +94,8 @@
78
94
  </button>
79
95
  </div>
80
96
  </div>
81
- <div class="ui-nav-tabs" id="sidebarTabs">
82
- <button class="ui-nav-tab active" id="filesSidebarTab" type="button">
97
+ <div class="ui-nav-tabs" id="sidebarTabs" role="tablist" aria-label="Sidebar views">
98
+ <button class="ui-nav-tab active" id="filesSidebarTab" type="button" role="tab" aria-selected="true" aria-controls="fileTree" tabindex="0">
83
99
  <span class="ui-nav-tab-icon" aria-hidden="true">
84
100
  <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round">
85
101
  <path d="M22 19a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h5l2 3h9a2 2 0 0 1 2 2z"></path>
@@ -87,7 +103,7 @@
87
103
  </span>
88
104
  <span class="ui-nav-tab-label">Files</span>
89
105
  </button>
90
- <button class="ui-nav-tab" id="commentsSidebarTab" type="button">
106
+ <button class="ui-nav-tab" id="commentsSidebarTab" type="button" role="tab" aria-selected="false" aria-controls="commentOverviewPanel" tabindex="-1">
91
107
  <span class="ui-nav-tab-icon" aria-hidden="true">
92
108
  <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
93
109
  <path d="M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z"></path>
@@ -95,7 +111,7 @@
95
111
  </span>
96
112
  <span class="ui-nav-tab-label">Comments</span>
97
113
  </button>
98
- <button class="ui-nav-tab hidden" id="gitSidebarTab" type="button">
114
+ <button class="ui-nav-tab hidden" id="gitSidebarTab" type="button" role="tab" aria-selected="false" aria-controls="gitPanel" tabindex="-1">
99
115
  <span class="ui-nav-tab-icon" aria-hidden="true">
100
116
  <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
101
117
  <circle cx="18" cy="18" r="3"></circle>
@@ -131,9 +147,9 @@
131
147
  aria-label="Search changed files"
132
148
  >
133
149
  </div>
134
- <nav id="fileTree" class="file-tree" aria-label="File explorer"></nav>
135
- <section id="commentOverviewPanel" class="comment-overview-panel hidden" aria-label="Open comments"></section>
136
- <div id="gitPanel" class="git-panel hidden" aria-label="Git changes"></div>
150
+ <nav id="fileTree" class="file-tree" role="tabpanel" aria-labelledby="filesSidebarTab"></nav>
151
+ <section id="commentOverviewPanel" class="comment-overview-panel hidden" role="tabpanel" aria-labelledby="commentsSidebarTab"></section>
152
+ <div id="gitPanel" class="git-panel hidden" role="tabpanel" aria-labelledby="gitSidebarTab"></div>
137
153
  <div
138
154
  class="sidebar-resizer"
139
155
  id="sidebarResizer"
@@ -216,6 +232,16 @@
216
232
  </div>
217
233
 
218
234
  <div class="toolbar-right">
235
+ <button class="ui-button ui-button--ghost ui-button--compact hidden" id="reviewFileChangesBtn" type="button" aria-label="Review changes to this file" title="Review changes to this file">
236
+ <svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true">
237
+ <line x1="6" y1="3" x2="6" y2="15"></line>
238
+ <circle cx="18" cy="6" r="3"></circle>
239
+ <circle cx="6" cy="18" r="3"></circle>
240
+ <path d="M18 9a9 9 0 0 1-9 9"></path>
241
+ </svg>
242
+ <span class="ui-toolbar-button-label">Review changes</span>
243
+ </button>
244
+
219
245
  <button class="ui-button ui-button--ghost ui-button--toolbar mobile-view-toggle" id="mobileViewToggle" aria-label="Toggle editor/preview" title="Toggle view">
220
246
  <svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
221
247
  <path d="M1 12s4-8 11-8 11 8 11 8-4 8-11 8-11-8-11-8z"></path>
@@ -227,19 +253,19 @@
227
253
  <div class="toolbar-status-cluster" aria-label="Workspace status">
228
254
  <span class="ui-pill-badge ui-pill-badge--accent hidden toolbar-badge" id="toolbarDiffBadge">Diff</span>
229
255
  <span class="ui-pill-badge ui-pill-badge--muted hidden toolbar-badge" id="gitOperationStatus" aria-live="polite" aria-atomic="true"></span>
256
+ </div>
257
+
258
+ <div class="toolbar-presence-cluster">
259
+ <div class="user-avatars" id="userAvatars"></div>
230
260
  <button
231
261
  type="button"
232
- class="ui-pill-badge ui-pill-badge--muted toolbar-badge toolbar-badge-button"
262
+ class="ui-pill-badge ui-pill-badge--muted toolbar-badge toolbar-badge-button toolbar-presence-count"
233
263
  id="userCount"
234
- aria-controls="presencePanel"
235
- aria-expanded="false"
236
- data-presence-panel-trigger="true"
264
+ popovertarget="presencePanel"
237
265
  ></button>
238
266
  </div>
239
267
 
240
- <div class="user-avatars toolbar-presence-cluster" id="userAvatars"></div>
241
-
242
- <section class="collaboration-popover presence-panel hidden" id="presencePanel" aria-label="Online users" aria-hidden="true">
268
+ <section class="collaboration-popover presence-panel" id="presencePanel" aria-label="Online users" popover="auto">
243
269
  <div class="presence-panel-header">
244
270
  <div>
245
271
  <h2 class="presence-panel-title">Online now</h2>
@@ -250,7 +276,7 @@
250
276
  </section>
251
277
 
252
278
  <div class="chat-container" id="chatContainer">
253
- <button type="button" class="ui-button ui-button--ghost ui-button--toolbar chat-toggle-btn" id="chatToggleBtn" aria-label="Open team chat" aria-controls="chatPanel" aria-expanded="false" title="Team chat">
279
+ <button type="button" class="ui-button ui-button--ghost ui-button--toolbar chat-toggle-btn" id="chatToggleBtn" aria-label="Open team chat" popovertarget="chatPanel" title="Team chat">
254
280
  <svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
255
281
  <path d="M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z"></path>
256
282
  </svg>
@@ -259,7 +285,7 @@
259
285
  </button>
260
286
  <div class="toast-container chat-toast-container" id="chatToastContainer" aria-live="polite" aria-atomic="true"></div>
261
287
 
262
- <section class="collaboration-popover chat-panel hidden" id="chatPanel" role="dialog" aria-labelledby="chatPanelTitle">
288
+ <section class="collaboration-popover chat-panel" id="chatPanel" role="dialog" aria-labelledby="chatPanelTitle" popover="auto">
263
289
  <div class="chat-panel-header">
264
290
  <div class="chat-panel-heading">
265
291
  <h2 class="chat-panel-title" id="chatPanelTitle">Team chat</h2>
@@ -286,7 +312,7 @@
286
312
  <path class="chat-notification-mute-slash" d="m4 4 16 16"></path>
287
313
  </svg>
288
314
  </button>
289
- <button type="button" class="ui-icon-button chat-close-btn" id="chatCloseBtn" aria-label="Close team chat" title="Close team chat">
315
+ <button type="button" class="ui-icon-button chat-close-btn" id="chatCloseBtn" aria-label="Close team chat" popovertarget="chatPanel" popovertargetaction="hide" title="Close team chat">
290
316
  <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" aria-hidden="true">
291
317
  <line x1="18" y1="6" x2="6" y2="18"></line>
292
318
  <line x1="6" y1="6" x2="18" y2="18"></line>
@@ -321,7 +347,7 @@
321
347
  class="ui-button ui-button--ghost ui-button--toolbar toolbar-overflow-toggle"
322
348
  id="toolbarOverflowToggle"
323
349
  aria-label="Open more actions"
324
- aria-expanded="false"
350
+ popovertarget="toolbarOverflowMenu"
325
351
  title="More actions"
326
352
  >
327
353
  <svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" aria-hidden="true">
@@ -331,7 +357,7 @@
331
357
  </svg>
332
358
  </button>
333
359
 
334
- <div class="toolbar-overflow-menu" id="toolbarOverflowMenu">
360
+ <div class="toolbar-overflow-menu" id="toolbarOverflowMenu" popover="auto">
335
361
  <button class="ui-button ui-button--ghost ui-button--toolbar hidden" id="fileHistoryBtn" aria-label="Open file history" title="View file history">
336
362
  <svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true">
337
363
  <path d="M3 12a9 9 0 1 0 3-6.7"></path>
@@ -357,6 +383,14 @@
357
383
  <span class="ui-toolbar-button-label">Share</span>
358
384
  </button>
359
385
 
386
+ <button class="ui-button ui-button--ghost ui-button--toolbar hidden" id="connectAgentBtn" aria-label="Connect AI Agent" title="Connect AI Agent">
387
+ <svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true">
388
+ <rect x="5" y="7" width="14" height="11" rx="3"></rect>
389
+ <path d="M12 3v4M8 12h.01M16 12h.01M9 16h6"></path>
390
+ </svg>
391
+ <span class="ui-toolbar-button-label">Connect AI Agent</span>
392
+ </button>
393
+
360
394
  <button class="ui-button ui-button--ghost ui-button--toolbar toolbar-search-files-btn" id="searchFilesBtn" aria-label="Search files" title="Search files">
361
395
  <svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" aria-hidden="true">
362
396
  <circle cx="11" cy="11" r="7"></circle>
@@ -454,7 +488,7 @@
454
488
  <circle cx="11" cy="11" r="8"></circle>
455
489
  <line x1="21" y1="21" x2="16.65" y2="16.65"></line>
456
490
  </svg>
457
- Search Everything
491
+ Search everything
458
492
  <kbd class="empty-state-kbd">⌘K</kbd>
459
493
  </button>
460
494
  </div>
@@ -483,6 +517,14 @@
483
517
  </svg>
484
518
  <span class="ui-action-label">Comment</span>
485
519
  </button>
520
+ <button class="ui-button ui-button--ghost ui-button--compact ui-button--toggle" id="editorFormatBtn" aria-label="Format document" title="Format document">
521
+ <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true">
522
+ <path d="M4 7h10"></path>
523
+ <path d="M4 12h16"></path>
524
+ <path d="M4 17h10"></path>
525
+ </svg>
526
+ <span class="ui-action-label">Format</span>
527
+ </button>
486
528
  <button class="ui-button ui-button--ghost ui-button--compact ui-button--toggle" id="toggleWrapBtn" aria-label="Disable line wrap" title="Disable line wrap">
487
529
  <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true">
488
530
  <path d="M3 6h14a4 4 0 1 1 0 8H9"></path>
@@ -495,7 +537,7 @@
495
537
  </div>
496
538
  <div id="markdownToolbar" class="markdown-toolbar hidden" role="toolbar" aria-label="Markdown formatting"></div>
497
539
  <div id="editorContainer" class="editor-container">
498
- <div class="editor-loading" id="editorLoading">
540
+ <div class="editor-loading" id="editorLoading" role="status" aria-live="polite" aria-label="Loading file…">
499
541
  <div class="skeleton-line skeleton-line--title skeleton-line--break"></div>
500
542
  <div class="skeleton-line skeleton-line--full"></div>
501
543
  <div class="skeleton-line skeleton-line--ninety"></div>
@@ -513,6 +555,7 @@
513
555
  <div class="pane-header">
514
556
  <span class="pane-label">Preview</span>
515
557
  <div class="pane-header-actions">
558
+ <button class="ui-button ui-button--ghost ui-button--compact ui-button--toggle hidden" id="htmlPreviewMaximize" aria-label="Maximize HTML preview" title="Maximize HTML preview"></button>
516
559
  <div id="backlinksHeaderPanel" class="backlinks-panel backlinks-panel-header hidden" data-backlinks-variant="header">
517
560
  <button type="button" class="backlinks-header" aria-expanded="false">
518
561
  <svg class="backlinks-chevron" width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round">
@@ -615,20 +658,14 @@
615
658
  </div>
616
659
  <div class="diff-toolbar-actions">
617
660
  <button class="ui-button ui-button--secondary ui-button--action ui-button--wide ui-button--surface hidden diff-back-btn" id="diffBackToHistoryBtn" type="button">
618
- Back to History
661
+ Back to history
619
662
  </button>
620
663
  <div class="diff-toolbar-actions-group diff-toolbar-actions-group-git" id="diffGitActionsGroup" role="group" aria-label="Git file actions">
621
664
  <button class="ui-button ui-button--secondary ui-button--action ui-button--wide ui-button--surface" id="diffPrimaryActionBtn" type="button" disabled>
622
- Stage
665
+ Include in commit
623
666
  </button>
624
667
  <button class="ui-button ui-button--primary ui-button--action ui-button--wide" id="diffCommitBtn" type="button" disabled>
625
- Commit Staged
626
- </button>
627
- </div>
628
- <span class="diff-toolbar-actions-divider" id="diffToolbarDivider" aria-hidden="true"></span>
629
- <div class="diff-toolbar-actions-group" id="diffEditorActionsGroup" role="group" aria-label="Navigation actions">
630
- <button class="ui-button ui-button--secondary ui-button--action ui-button--wide ui-button--surface diff-open-editor-btn" id="diffOpenEditorBtn" type="button" disabled>
631
- Open in Editor
668
+ Commit included files
632
669
  </button>
633
670
  </div>
634
671
  </div>
@@ -639,12 +676,18 @@
639
676
  <span class="ui-stat-token ui-stat-token--del diff-stats-del">-0</span>
640
677
  </div>
641
678
  <div class="ui-segmented-control hidden diff-layout-toggle" id="diffLayoutToggle" role="group" aria-label="Commit diff layout">
642
- <button class="ui-segmented-btn view-btn diff-layout-btn" data-diff-layout="stacked" type="button">Stacked</button>
643
- <button class="ui-segmented-btn active view-btn diff-layout-btn" data-diff-layout="focused" type="button">Focused</button>
679
+ <button class="ui-segmented-btn diff-layout-btn" data-diff-layout="stacked" type="button" aria-pressed="false">Stacked</button>
680
+ <button class="ui-segmented-btn active diff-layout-btn" data-diff-layout="focused" type="button" aria-pressed="true">Focused</button>
644
681
  </div>
645
682
  <div class="ui-segmented-control diff-mode-toggle" role="group" aria-label="Diff view mode">
646
- <button class="ui-segmented-btn active view-btn diff-mode-btn" data-diff-mode="unified" type="button">Unified</button>
647
- <button class="ui-segmented-btn view-btn diff-mode-btn" data-diff-mode="split" type="button">Split</button>
683
+ <button class="ui-segmented-btn active diff-mode-btn" data-diff-mode="unified" type="button" aria-pressed="true">Unified</button>
684
+ <button class="ui-segmented-btn diff-mode-btn" data-diff-mode="split" type="button" aria-pressed="false">Split</button>
685
+ </div>
686
+ <span class="diff-toolbar-actions-divider" id="diffToolbarDivider" aria-hidden="true"></span>
687
+ <div class="diff-toolbar-actions-group" id="diffEditorActionsGroup" role="group" aria-label="Navigation actions">
688
+ <button class="ui-button ui-button--secondary ui-button--action ui-button--wide ui-button--surface diff-open-editor-btn" id="diffOpenEditorBtn" type="button" disabled>
689
+ Open in editor
690
+ </button>
648
691
  </div>
649
692
  </div>
650
693
  </div>
@@ -655,7 +698,7 @@
655
698
  </main>
656
699
  </div>
657
700
 
658
- <dialog class="app-dialog" id="displayNameDialog">
701
+ <dialog class="app-dialog" id="displayNameDialog" aria-labelledby="displayNameTitle">
659
702
  <form class="app-dialog-form" id="displayNameForm" method="dialog">
660
703
  <div class="app-dialog-header">
661
704
  <h2 class="app-dialog-title" id="displayNameTitle">Update display name</h2>
@@ -672,7 +715,17 @@
672
715
  </form>
673
716
  </dialog>
674
717
 
675
- <dialog class="app-dialog" id="fileActionDialog">
718
+ <dialog class="app-dialog agent-connection-dialog" id="agentConnectionDialog" aria-labelledby="agentConnectionTitle">
719
+ <div class="app-dialog-form">
720
+ <div class="app-dialog-header">
721
+ <h2 class="app-dialog-title" id="agentConnectionTitle">Connect an AI agent</h2>
722
+ <p class="app-dialog-copy">Follow the steps below to give an agent secure access to this workspace.</p>
723
+ </div>
724
+ <div id="agentConnectionContent"></div>
725
+ </div>
726
+ </dialog>
727
+
728
+ <dialog class="app-dialog" id="fileActionDialog" aria-labelledby="fileActionTitle">
676
729
  <form class="app-dialog-form" id="fileActionForm" method="dialog">
677
730
  <div class="app-dialog-header">
678
731
  <h2 class="app-dialog-title" id="fileActionTitle">Create file</h2>
@@ -691,24 +744,25 @@
691
744
  </form>
692
745
  </dialog>
693
746
 
694
- <dialog class="app-dialog" id="gitCommitDialog">
747
+ <dialog class="app-dialog" id="gitCommitDialog" aria-labelledby="gitCommitTitle">
695
748
  <form class="app-dialog-form" id="gitCommitForm" method="dialog">
696
749
  <div class="app-dialog-header">
697
- <h2 class="app-dialog-title" id="gitCommitTitle">Commit staged changes</h2>
698
- <p class="app-dialog-copy" id="gitCommitCopy">All staged changes will be included.</p>
750
+ <h2 class="app-dialog-title" id="gitCommitTitle">Commit included files</h2>
751
+ <p class="app-dialog-copy" id="gitCommitCopy">All included changes will be committed.</p>
699
752
  </div>
700
753
  <label class="app-dialog-field" for="gitCommitInput">
701
- <span class="app-dialog-label">Commit message</span>
702
- <input type="text" class="ui-input" id="gitCommitInput" name="gitCommitMessage" autocomplete="off" spellcheck="true" required>
754
+ <span class="app-dialog-label">What changed?</span>
755
+ <input type="text" class="ui-input" id="gitCommitInput" name="gitCommitMessage" autocomplete="off" spellcheck="true" aria-describedby="gitCommitHint" required>
756
+ <span class="app-dialog-hint" id="gitCommitHint">This becomes the Git commit message.</span>
703
757
  </label>
704
758
  <div class="app-dialog-actions">
705
759
  <button type="button" class="ui-button ui-button--secondary" id="gitCommitCancel">Cancel</button>
706
- <button type="submit" class="ui-button ui-button--primary" id="gitCommitSubmit">Commit staged changes</button>
760
+ <button type="submit" class="ui-button ui-button--primary" id="gitCommitSubmit">Commit included files</button>
707
761
  </div>
708
762
  </form>
709
763
  </dialog>
710
764
 
711
- <dialog class="app-dialog" id="gitResetDialog">
765
+ <dialog class="app-dialog" id="gitResetDialog" aria-labelledby="gitResetTitle">
712
766
  <form class="app-dialog-form" method="dialog">
713
767
  <div class="app-dialog-header">
714
768
  <h2 class="app-dialog-title" id="gitResetTitle">Reset file</h2>
@@ -723,12 +777,12 @@
723
777
  </div>
724
778
  <div class="app-dialog-actions">
725
779
  <button class="ui-button ui-button--secondary" id="gitResetCancel" type="button">Cancel</button>
726
- <button class="ui-button ui-button--danger" id="gitResetSubmit" type="button">Reset File</button>
780
+ <button class="ui-button ui-button--danger" id="gitResetSubmit" type="button">Reset file</button>
727
781
  </div>
728
782
  </form>
729
783
  </dialog>
730
784
 
731
- <div class="tab-lock-overlay hidden" id="tabLockOverlay" role="dialog" aria-modal="true" aria-labelledby="tabLockTitle">
785
+ <dialog class="tab-lock-overlay" id="tabLockOverlay" aria-labelledby="tabLockTitle">
732
786
  <div class="tab-lock-card">
733
787
  <span class="tab-lock-kicker">Single active tab</span>
734
788
  <h2 class="tab-lock-title" id="tabLockTitle">This vault is active in another tab</h2>
@@ -737,11 +791,11 @@
737
791
  <button type="button" class="ui-button ui-button--primary ui-button--lg" id="tabLockTakeoverBtn">Take over here</button>
738
792
  </div>
739
793
  </div>
740
- </div>
794
+ </dialog>
741
795
 
742
796
  <div class="toast-container" id="toastContainer"></div>
743
797
 
744
- <div class="qs-overlay" id="quickSwitcher" role="dialog" aria-modal="true" aria-labelledby="quickSwitcherTitle" aria-hidden="true">
798
+ <dialog class="qs-overlay" id="quickSwitcher" aria-labelledby="quickSwitcherTitle" closedby="any">
745
799
  <div class="qs-modal">
746
800
  <h2 class="sr-only" id="quickSwitcherTitle">Search files and text</h2>
747
801
  <div class="qs-mode-tabs" role="tablist" aria-label="Search mode">
@@ -753,7 +807,7 @@
753
807
  <circle cx="11" cy="11" r="8"></circle>
754
808
  <line x1="21" y1="21" x2="16.65" y2="16.65"></line>
755
809
  </svg>
756
- <input type="text" class="qs-input" id="quickSwitcherInput" role="combobox" placeholder="Search files..." aria-label="Search files" aria-controls="quickSwitcherResults" aria-describedby="quickSwitcherHint quickSwitcherScope" aria-autocomplete="list" aria-expanded="false" autocomplete="off" spellcheck="false">
810
+ <input type="text" class="qs-input" id="quickSwitcherInput" role="combobox" placeholder="Search files..." aria-label="Search files" aria-controls="quickSwitcherResults" aria-describedby="quickSwitcherHint quickSwitcherScope" aria-autocomplete="list" aria-expanded="false" autocomplete="off" spellcheck="false" autofocus>
757
811
  <kbd class="qs-kbd">esc</kbd>
758
812
  </div>
759
813
  <div class="qs-scope hidden" id="quickSwitcherScope" role="note" aria-hidden="true">Exact, case-insensitive text in Markdown, Base, Mermaid, PlantUML, Draw.io, and Excalidraw files. Images are excluded.</div>
@@ -765,7 +819,7 @@
765
819
  <span><kbd>Tab</kbd> Switch mode</span>
766
820
  </div>
767
821
  </div>
768
- </div>
822
+ </dialog>
769
823
  <script src="./app-config.js"></script>
770
824
  </body>
771
825
  </html>
@@ -0,0 +1,94 @@
1
+ import { Client, StreamableHTTPClientTransport } from '@modelcontextprotocol/client';
2
+ import type { ExtensionAPI } from '@earendil-works/pi-coding-agent';
3
+ import { Type } from 'typebox';
4
+
5
+ let client: Client | null = null;
6
+ let transport: StreamableHTTPClientTransport | null = null;
7
+
8
+ async function getClient() {
9
+ if (client) return client;
10
+ const endpoint = process.env.COLLABMD_MCP_URL?.trim();
11
+ const token = process.env.COLLABMD_ACCESS_TOKEN?.trim();
12
+ if (!endpoint) {
13
+ throw new Error('Set COLLABMD_MCP_URL from CollabMD Connect AI Agent.');
14
+ }
15
+ const url = new URL(endpoint);
16
+ if (url.protocol !== 'https:' && !['localhost', '127.0.0.1', '::1'].includes(url.hostname)) {
17
+ throw new Error('Remote CollabMD MCP endpoints must use HTTPS.');
18
+ }
19
+ client = new Client({ name: 'collabmd-pi', version: '1.0.0' });
20
+ transport = new StreamableHTTPClientTransport(url, token
21
+ ? { authProvider: { token: async () => token } }
22
+ : {});
23
+ await client.connect(transport);
24
+ return client;
25
+ }
26
+
27
+ async function callTool(name: string, args: Record<string, unknown>, signal: AbortSignal) {
28
+ const connected = await getClient();
29
+ const result = await connected.callTool({ arguments: args, name }, { signal });
30
+ return { content: result.content, details: result.structuredContent ?? result };
31
+ }
32
+
33
+ export default function collabMdExtension(pi: ExtensionAPI) {
34
+ pi.registerTool({
35
+ name: 'collabmd_list_documents',
36
+ label: 'List CollabMD documents',
37
+ description: 'List readable documents in the connected CollabMD vault.',
38
+ parameters: Type.Object({
39
+ kinds: Type.Optional(Type.Array(Type.String())),
40
+ limit: Type.Optional(Type.Integer({ maximum: 200, minimum: 1 })),
41
+ prefix: Type.Optional(Type.String()),
42
+ }),
43
+ execute: (_id, params, signal) => callTool('list_documents', params, signal),
44
+ });
45
+ pi.registerTool({
46
+ name: 'collabmd_search_vault',
47
+ label: 'Search CollabMD vault',
48
+ description: 'Search current CollabMD Vault Content and return path/line evidence.',
49
+ parameters: Type.Object({ query: Type.String({ minLength: 2 }) }),
50
+ execute: (_id, params, signal) => callTool('search_vault', params, signal),
51
+ });
52
+ pi.registerTool({
53
+ name: 'collabmd_read_document',
54
+ label: 'Read CollabMD document',
55
+ description: 'Read current document content and revision before answering or editing.',
56
+ parameters: Type.Object({
57
+ lineCount: Type.Optional(Type.Integer({ maximum: 500, minimum: 1 })),
58
+ path: Type.String(),
59
+ startLine: Type.Optional(Type.Integer({ minimum: 1 })),
60
+ }),
61
+ execute: (_id, params, signal) => callTool('read_document', params, signal),
62
+ });
63
+ pi.registerTool({
64
+ name: 'collabmd_apply_text_edits',
65
+ label: 'Edit CollabMD document',
66
+ description: 'Apply exact replacements using current CollabMD document revision.',
67
+ parameters: Type.Object({
68
+ path: Type.String(),
69
+ replacements: Type.Array(Type.Object({ newText: Type.String(), oldText: Type.String() })),
70
+ revision: Type.String(),
71
+ }),
72
+ execute: (_id, params, signal) => callTool('apply_text_edits', params, signal),
73
+ });
74
+ pi.registerTool({
75
+ name: 'collabmd_create_document',
76
+ label: 'Create CollabMD document',
77
+ description: 'Create a new supported CollabMD text document.',
78
+ parameters: Type.Object({ content: Type.String(), path: Type.String() }),
79
+ execute: (_id, params, signal) => callTool('create_document', params, signal),
80
+ });
81
+ pi.registerTool({
82
+ name: 'collabmd_get_supported_syntax',
83
+ label: 'Get CollabMD syntax',
84
+ description: 'Describe CollabMD-supported formats and syntax before creating files.',
85
+ parameters: Type.Object({ kind: Type.Optional(Type.String()) }),
86
+ execute: (_id, params, signal) => callTool('get_collabmd_syntax', params, signal),
87
+ });
88
+
89
+ pi.on('session_shutdown', async () => {
90
+ await transport?.close().catch(() => {});
91
+ transport = null;
92
+ client = null;
93
+ });
94
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "collabmd",
3
- "version": "0.1.47",
3
+ "version": "0.1.49",
4
4
  "type": "module",
5
5
  "description": "Collaborative markdown vault — like Obsidian, but online. Serve any directory of markdown files for realtime collaborative editing.",
6
6
  "repository": {
@@ -19,11 +19,17 @@
19
19
  "scripts/cloudflare-tunnel.mjs",
20
20
  "scripts/local-plantuml-compose.mjs",
21
21
  "scripts/local-structurizr-compose.mjs",
22
- "src/"
22
+ "src/",
23
+ "integrations/"
23
24
  ],
24
25
  "bin": {
25
26
  "collabmd": "./bin/collabmd.js"
26
27
  },
28
+ "pi": {
29
+ "extensions": [
30
+ "./integrations/pi/index.ts"
31
+ ]
32
+ },
27
33
  "scripts": {
28
34
  "prepack": "npm run build",
29
35
  "build": "vite build",
@@ -67,34 +73,18 @@
67
73
  },
68
74
  "license": "MIT",
69
75
  "dependencies": {
70
- "@codemirror/autocomplete": "^6.20.3",
71
- "@codemirror/commands": "^6.11.0",
72
- "@codemirror/lang-markdown": "^6.5.2",
73
- "@codemirror/lang-yaml": "^6.1.3",
74
- "@codemirror/language": "^6.12.4",
75
- "@codemirror/language-data": "^6.5.2",
76
- "@codemirror/search": "^6.7.1",
77
- "@codemirror/state": "^6.7.1",
78
- "@codemirror/theme-one-dark": "^6.1.3",
79
- "@codemirror/view": "^6.43.9",
80
- "@embedpdf/snippet": "2.15.0",
81
- "@excalidraw/excalidraw": "0.18.0-abeeaeb",
82
- "@replit/codemirror-vim": "^6.4.0",
83
- "@turbodocx/html-to-docx": "^1.22.0",
76
+ "@excalidraw/fractional-indexing": "^0.18.0-abeeaeb",
77
+ "@modelcontextprotocol/client": "^2.0.0",
78
+ "@modelcontextprotocol/node": "^2.0.0",
79
+ "@modelcontextprotocol/server": "^2.0.0",
80
+ "@turbodocx/html-to-docx": "^1.22.2",
84
81
  "archiver": "^8.0.0",
85
- "highlight.js": "^11.12.0",
86
- "js-yaml": "^5.3.0",
82
+ "js-yaml": "^5.4.1",
87
83
  "lib0": "^0.2.117",
88
- "markdown-it": "^15.0.0",
89
- "mermaid": "^11.17.0",
90
84
  "openid-client": "^6.8.7",
91
- "react": "^19.2.8",
92
- "react-dom": "^19.2.8",
93
- "sharp": "^0.35.3",
85
+ "sharp": "^0.35.4",
94
86
  "ws": "^8.21.3",
95
- "y-codemirror.next": "^0.3.6",
96
87
  "y-protocols": "^1.0.7",
97
- "y-websocket": "^3.1.0",
98
88
  "yjs": "^13.6.32"
99
89
  },
100
90
  "overrides": {
@@ -110,14 +100,36 @@
110
100
  "axios": "1.18.0"
111
101
  },
112
102
  "devDependencies": {
103
+ "@codemirror/autocomplete": "^6.20.3",
104
+ "@codemirror/commands": "^6.11.0",
105
+ "@codemirror/lang-html": "^6.4.12",
106
+ "@codemirror/lang-markdown": "^6.5.2",
107
+ "@codemirror/lang-yaml": "^6.1.3",
108
+ "@codemirror/language": "^6.12.4",
109
+ "@codemirror/language-data": "^6.5.2",
110
+ "@codemirror/search": "^6.7.1",
111
+ "@codemirror/state": "^6.7.1",
112
+ "@codemirror/theme-one-dark": "^6.1.3",
113
+ "@codemirror/view": "^6.43.9",
114
+ "@embedpdf/snippet": "2.15.0",
113
115
  "@eslint/js": "^10.0.1",
116
+ "@excalidraw/excalidraw": "0.18.0-abeeaeb",
114
117
  "@playwright/test": "^1.62.1",
118
+ "@replit/codemirror-vim": "^6.4.0",
115
119
  "@vitest/browser": "^4.1.11",
116
120
  "@vitest/browser-playwright": "^4.1.11",
117
- "eslint": "^10.8.1",
121
+ "eslint": "^10.9.1",
118
122
  "globals": "^17.11.0",
123
+ "highlight.js": "^11.12.0",
124
+ "markdown-it": "^15.0.1",
125
+ "mermaid": "^11.17.2",
126
+ "mermaid-formatter": "^0.3.0",
127
+ "prettier": "^3.9.6",
128
+ "react": "^19.2.8",
129
+ "react-dom": "^19.2.8",
119
130
  "vite": "^8.2.2",
120
- "vitest": "^4.1.11"
121
- },
122
- "packageManager": "pnpm@11.22.0+sha512.1ff870c4c6133dfd88fb2afc46dd13d47f09c9794b438c6fdb47ca98caf3bc16381ee0be93a091b8e3824cf01f889f46d7d9e20910fb0be1ab0fb5baa80dd621"
131
+ "vitest": "^4.1.11",
132
+ "y-codemirror.next": "^0.3.6",
133
+ "y-websocket": "^3.1.0"
134
+ }
123
135
  }
@@ -7,9 +7,9 @@
7
7
  </head>
8
8
  <body data-theme="dark" data-surface="drawio-editor">
9
9
  <div id="root">
10
- <div class="drawio-loading" id="loadingState">Loading draw.io…</div>
10
+ <div class="drawio-loading" id="loadingState" role="status" aria-live="polite">Loading draw.io…</div>
11
11
  </div>
12
12
  <script vite-ignore src="./app-config.js"></script>
13
- <script type="module" src="./drawio-editor-entry.js"></script>
13
+ <script type="module" src="../drawio-editor.js"></script>
14
14
  </body>
15
15
  </html>
@@ -7,9 +7,9 @@
7
7
  </head>
8
8
  <body data-theme="dark" data-surface="excalidraw-editor">
9
9
  <div id="root">
10
- <div class="loading-state" id="loadingState">Loading Excalidraw...</div>
10
+ <div class="loading-state" id="loadingState" role="status" aria-live="polite">Loading Excalidraw…</div>
11
11
  </div>
12
12
  <script vite-ignore src="./app-config.js"></script>
13
- <script type="module" src="./excalidraw-editor-entry.js"></script>
13
+ <script type="module" src="../excalidraw-editor.js"></script>
14
14
  </body>
15
15
  </html>
@@ -10,7 +10,7 @@
10
10
  <header class="export-page-header">
11
11
  <div>
12
12
  <h1>Preparing export</h1>
13
- <p id="exportStatus">Initializing…</p>
13
+ <p id="exportStatus" role="status" aria-live="polite">Initializing…</p>
14
14
  </div>
15
15
  </header>
16
16
  <section id="exportWarningsSection" class="export-warnings-panel" hidden>