excalidrop 0.1.4 → 0.2.1

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 (222) hide show
  1. package/README.md +58 -131
  2. package/dist/cli.d.ts.map +1 -1
  3. package/dist/cli.js +488 -394
  4. package/dist/cli.js.map +1 -1
  5. package/dist/frontend/assets/{advancedFormat-tiBAHNGo.js → advancedFormat-CsxROTkH.js} +1 -1
  6. package/dist/frontend/assets/{ar-SA-G6X2FPQ2-DVxiWV5Z.js → ar-SA-G6X2FPQ2-Bu8X6mOi.js} +1 -1
  7. package/dist/frontend/assets/arc-B9VNLSzj.js +1 -0
  8. package/dist/frontend/assets/{az-AZ-76LH7QW2-Z_2BqDo-.js → az-AZ-76LH7QW2-DpvzY31_.js} +1 -1
  9. package/dist/frontend/assets/{bg-BG-XCXSNQG7-DrxGJZOG.js → bg-BG-XCXSNQG7-DCtZnLyo.js} +1 -1
  10. package/dist/frontend/assets/{blockDiagram-38ab4fdb-CDnkTFfP.js → blockDiagram-38ab4fdb-4cfDkUsw.js} +1 -1
  11. package/dist/frontend/assets/{blockDiagram-68f4deed-Bb0W6mxN.js → blockDiagram-68f4deed-CsgWL6uC.js} +1 -1
  12. package/dist/frontend/assets/{bn-BD-2XOGV67Q-BkGJ-w8k.js → bn-BD-2XOGV67Q-B-IdLNKT.js} +1 -1
  13. package/dist/frontend/assets/{c4Diagram-15b5d702-ByRV0tka.js → c4Diagram-15b5d702-7BAqo4qT.js} +1 -1
  14. package/dist/frontend/assets/{c4Diagram-3d4e48cf-QSVnzYYK.js → c4Diagram-3d4e48cf-CDW-O-vg.js} +1 -1
  15. package/dist/frontend/assets/{ca-ES-6MX7JW3Y-BBJvOPE1.js → ca-ES-6MX7JW3Y-DM8olClc.js} +1 -1
  16. package/dist/frontend/assets/channel-jdNM4v-F.js +1 -0
  17. package/dist/frontend/assets/{classDiagram-70f12bd4-DDFBNGUt.js → classDiagram-70f12bd4-D2U4i4yC.js} +1 -1
  18. package/dist/frontend/assets/{classDiagram-d40c83e7-cgC3s7Nz.js → classDiagram-d40c83e7-DtBHRJc9.js} +1 -1
  19. package/dist/frontend/assets/classDiagram-v2-d5a6b087-Drykcxns.js +2 -0
  20. package/dist/frontend/assets/classDiagram-v2-f2320105-D8ruMBA6.js +2 -0
  21. package/dist/frontend/assets/clone-DFO_zGRO.js +1 -0
  22. package/dist/frontend/assets/{createText-2e5e7dd3-CqY00v-4.js → createText-2e5e7dd3-1KPUhDpM.js} +1 -1
  23. package/dist/frontend/assets/{createText-d213de94-D59sBfqq.js → createText-d213de94-C6EhGbUN.js} +4 -4
  24. package/dist/frontend/assets/{cs-CZ-2BRQDIVT-CK09MAsg.js → cs-CZ-2BRQDIVT-DgjTgz6K.js} +1 -1
  25. package/dist/frontend/assets/{cytoscape-cose-bilkent-CKy_tuGZ.js → cytoscape-cose-bilkent-BnIHl72R.js} +1 -1
  26. package/dist/frontend/assets/{da-DK-5WZEPLOC-V4hdLKuT.js → da-DK-5WZEPLOC-uEs3xGKF.js} +1 -1
  27. package/dist/frontend/assets/{de-DE-XR44H4JA-Dw8qkP9g.js → de-DE-XR44H4JA-CBglLw42.js} +1 -1
  28. package/dist/frontend/assets/{edges-332bd1c7-D-u0KMZB.js → edges-332bd1c7-cWCBwcrg.js} +1 -1
  29. package/dist/frontend/assets/{edges-e0da2a9e-B3UFqLqY.js → edges-e0da2a9e-DKeDUJ_F.js} +1 -1
  30. package/dist/frontend/assets/{el-GR-BZB4AONW-BUdBQbYg.js → el-GR-BZB4AONW-B-_eub00.js} +1 -1
  31. package/dist/frontend/assets/{elk.bundled-BZA3Xcoo.js → elk.bundled-Ch9TeAu4.js} +1 -1
  32. package/dist/frontend/assets/{erDiagram-880f2ed8-CNxm7e1x.js → erDiagram-880f2ed8-CtDf_58r.js} +4 -4
  33. package/dist/frontend/assets/{erDiagram-9861fffd-C2u_ziAM.js → erDiagram-9861fffd-CAlUeljk.js} +1 -1
  34. package/dist/frontend/assets/{es-ES-U4NZUMDT-DS0FAZqX.js → es-ES-U4NZUMDT-BIN3bSVD.js} +1 -1
  35. package/dist/frontend/assets/{eu-ES-A7QVB2H4-D-D5uidc.js → eu-ES-A7QVB2H4-TyQet3-N.js} +1 -1
  36. package/dist/frontend/assets/{fa-IR-HGAKTJCU-mAW_2-jg.js → fa-IR-HGAKTJCU-DVmjjr57.js} +1 -1
  37. package/dist/frontend/assets/{fi-FI-Z5N7JZ37-B9mW6nxS.js → fi-FI-Z5N7JZ37-ZW9kXLa8.js} +1 -1
  38. package/dist/frontend/assets/{flowDb-7c981674-6JB2gd0I.js → flowDb-7c981674-B5ppx8EN.js} +1 -1
  39. package/dist/frontend/assets/{flowDb-956e92f1-BbpkWRi7.js → flowDb-956e92f1-Dqi00Wq-.js} +1 -1
  40. package/dist/frontend/assets/{flowDiagram-66a62f08-DrhrQuXc.js → flowDiagram-66a62f08-v3Liu0m_.js} +1 -1
  41. package/dist/frontend/assets/{flowDiagram-cbd28bf7-BmNY7bvJ.js → flowDiagram-cbd28bf7-DJ_YHRwa.js} +3 -3
  42. package/dist/frontend/assets/flowDiagram-v2-96b9c2cf-6vlgZ0Bg.js +1 -0
  43. package/dist/frontend/assets/flowDiagram-v2-ffc7f31a-FmnI78Vm.js +1 -0
  44. package/dist/frontend/assets/{flowchart-elk-definition-36e2d292-4G1YiIlk.js → flowchart-elk-definition-36e2d292-BleYul6b.js} +2 -2
  45. package/dist/frontend/assets/{flowchart-elk-definition-4a651766-Cm94SrrQ.js → flowchart-elk-definition-4a651766-D6lLh4Ih.js} +1 -1
  46. package/dist/frontend/assets/{fr-FR-RHASNOE6-BXnmUxTA.js → fr-FR-RHASNOE6-CxLR66tH.js} +1 -1
  47. package/dist/frontend/assets/{ganttDiagram-04f9e578-X0BweAnG.js → ganttDiagram-04f9e578-DJSOyr8B.js} +1 -1
  48. package/dist/frontend/assets/{ganttDiagram-c361ad54-D3vxZ5MQ.js → ganttDiagram-c361ad54-CJmbCLvp.js} +1 -1
  49. package/dist/frontend/assets/{gitGraphDiagram-21fc4d3e-wznrpRWn.js → gitGraphDiagram-21fc4d3e-DiRq_FJc.js} +6 -6
  50. package/dist/frontend/assets/{gitGraphDiagram-72cf32ee-B9zCS3Pw.js → gitGraphDiagram-72cf32ee-MfvDzoAb.js} +1 -1
  51. package/dist/frontend/assets/{gl-ES-HMX3MZ6V-CrUx-ab6.js → gl-ES-HMX3MZ6V-CxWj2itK.js} +1 -1
  52. package/dist/frontend/assets/{graph-BQZ6SIVr.js → graph-CT_r46y9.js} +1 -1
  53. package/dist/frontend/assets/{graph-Cda8xSTx.js → graph-DJt_Vezo.js} +1 -1
  54. package/dist/frontend/assets/{he-IL-6SHJWFNN-D33eaw6-.js → he-IL-6SHJWFNN-5v2WFGO3.js} +1 -1
  55. package/dist/frontend/assets/{hi-IN-IWLTKZ5I-DEnStF-g.js → hi-IN-IWLTKZ5I-BJGbvgRu.js} +1 -1
  56. package/dist/frontend/assets/{hu-HU-A5ZG7DT2-BjH2w8Sn.js → hu-HU-A5ZG7DT2-REQT2EcE.js} +1 -1
  57. package/dist/frontend/assets/{id-ID-SAP4L64H-Bc6R-JEz.js → id-ID-SAP4L64H-aZWQYWdg.js} +1 -1
  58. package/dist/frontend/assets/{index-3862675e-CpYfS3Db.js → index-3862675e-BgrvgbsM.js} +1 -1
  59. package/dist/frontend/assets/{index-6079d271-Y2bgyRpa.js → index-6079d271-Cp8jFHTC.js} +1 -1
  60. package/dist/frontend/assets/{index-D7eYnAQp.js → index-DBHHeSXy.js} +4 -4
  61. package/dist/frontend/assets/index-GTq6y6g6.js +349 -0
  62. package/dist/frontend/assets/{infoDiagram-4a4f5b27-Bm3Oq-Rq.js → infoDiagram-4a4f5b27-C1ZJJtWv.js} +3 -3
  63. package/dist/frontend/assets/{infoDiagram-f8f76790-oNVitBKM.js → infoDiagram-f8f76790-GeS0JKxo.js} +1 -1
  64. package/dist/frontend/assets/{it-IT-JPQ66NNP-BcxQABF2.js → it-IT-JPQ66NNP-EyeA2Ty1.js} +1 -1
  65. package/dist/frontend/assets/{ja-JP-DBVTYXUO-D1zIM-nt.js → ja-JP-DBVTYXUO-BLcE45D9.js} +1 -1
  66. package/dist/frontend/assets/{journeyDiagram-29694f62-CamPk_3P.js → journeyDiagram-29694f62-4Z_lpK4g.js} +5 -5
  67. package/dist/frontend/assets/{journeyDiagram-49397b02-D6w3tLtf.js → journeyDiagram-49397b02-ChwU3Zo6.js} +1 -1
  68. package/dist/frontend/assets/{kaa-6HZHGXH3-CoILysVg.js → kaa-6HZHGXH3-CkpTcX9X.js} +1 -1
  69. package/dist/frontend/assets/{kab-KAB-ZGHBKWFO-B9ZbybBt.js → kab-KAB-ZGHBKWFO-CChq0y6o.js} +1 -1
  70. package/dist/frontend/assets/{kk-KZ-P5N5QNE5-Dxi4GIQ7.js → kk-KZ-P5N5QNE5-CwtoTY4z.js} +1 -1
  71. package/dist/frontend/assets/{km-KH-HSX4SM5Z-DaJ7EtO2.js → km-KH-HSX4SM5Z-D26sdohj.js} +1 -1
  72. package/dist/frontend/assets/{ko-KR-MTYHY66A-DG57Ah12.js → ko-KR-MTYHY66A-DvnDcJQA.js} +1 -1
  73. package/dist/frontend/assets/{ku-TR-6OUDTVRD-DnDf9E8a.js → ku-TR-6OUDTVRD-qdHbLgKg.js} +1 -1
  74. package/dist/frontend/assets/{layout-Drr-66M9.js → layout-C-wUeNvb.js} +1 -1
  75. package/dist/frontend/assets/{layout-BsWfhUAF.js → layout-YRLNN4au.js} +1 -1
  76. package/dist/frontend/assets/{line-DwQObOhP.js → line-BEgMClKG.js} +1 -1
  77. package/dist/frontend/assets/{linear-C36MjJps.js → linear-DDHpSdYw.js} +1 -1
  78. package/dist/frontend/assets/{lt-LT-XHIRWOB4-D_zqS0yg.js → lt-LT-XHIRWOB4-DT4LYe_d.js} +1 -1
  79. package/dist/frontend/assets/{lv-LV-5QDEKY6T-owIsIh1b.js → lv-LV-5QDEKY6T-Dbc3ivwT.js} +1 -1
  80. package/dist/frontend/assets/{mindmap-definition-ac74a2e8-Cf9JbrBJ.js → mindmap-definition-ac74a2e8-CY2RhWUN.js} +6 -6
  81. package/dist/frontend/assets/{mindmap-definition-fc14e90a-BpsNCNCp.js → mindmap-definition-fc14e90a-VT4JDi6N.js} +1 -1
  82. package/dist/frontend/assets/{mr-IN-CRQNXWMA-CS9XUj74.js → mr-IN-CRQNXWMA-D75p1fVc.js} +1 -1
  83. package/dist/frontend/assets/{my-MM-5M5IBNSE-BKB060k9.js → my-MM-5M5IBNSE-DnEoBXyE.js} +1 -1
  84. package/dist/frontend/assets/{nb-NO-T6EIAALU-CkmLUrvm.js → nb-NO-T6EIAALU-BL4ThJxl.js} +1 -1
  85. package/dist/frontend/assets/{nl-NL-IS3SIHDZ-DdiLyJoz.js → nl-NL-IS3SIHDZ-u18nUblY.js} +1 -1
  86. package/dist/frontend/assets/{nn-NO-6E72VCQL-Yevp6f_Y.js → nn-NO-6E72VCQL-B9LJ0oXc.js} +1 -1
  87. package/dist/frontend/assets/{oc-FR-POXYY2M6-D_M6GHup.js → oc-FR-POXYY2M6-BKG5kIcO.js} +1 -1
  88. package/dist/frontend/assets/{pa-IN-N4M65BXN-1vuACN9n.js → pa-IN-N4M65BXN-CmpnjbkL.js} +1 -1
  89. package/dist/frontend/assets/{pica-DDDx0iqx.js → pica-BcpcM0v1.js} +1 -1
  90. package/dist/frontend/assets/{pie-CFIpuQMO.js → pie-Swzl5NrI.js} +1 -1
  91. package/dist/frontend/assets/{pieDiagram-421022e6-DO7e_Qgw.js → pieDiagram-421022e6-ndz96BLe.js} +5 -5
  92. package/dist/frontend/assets/{pieDiagram-8a3498a8-BEoqChXo.js → pieDiagram-8a3498a8-D5rcV68O.js} +1 -1
  93. package/dist/frontend/assets/{pl-PL-T2D74RX3-Cc6Q5nSh.js → pl-PL-T2D74RX3-CrR66Rgj.js} +1 -1
  94. package/dist/frontend/assets/{pt-BR-5N22H2LF-3eEiAax3.js → pt-BR-5N22H2LF-Crv7jZiH.js} +1 -1
  95. package/dist/frontend/assets/{pt-PT-UZXXM6DQ-CgnF0Le7.js → pt-PT-UZXXM6DQ-Bkaa5ESR.js} +1 -1
  96. package/dist/frontend/assets/{quadrantDiagram-0957ecba-C1Eo-ZUY.js → quadrantDiagram-0957ecba-DOdyxeTP.js} +3 -3
  97. package/dist/frontend/assets/{quadrantDiagram-120e2f19-Bdfsl_O7.js → quadrantDiagram-120e2f19-beQD7R1C.js} +1 -1
  98. package/dist/frontend/assets/relay-BIOL2uw2.js +1 -0
  99. package/dist/frontend/assets/{requirementDiagram-23d650b8-DiOK6QW3.js → requirementDiagram-23d650b8-B2i-OB97.js} +1 -1
  100. package/dist/frontend/assets/{requirementDiagram-deff3bca-BDJ-7T4h.js → requirementDiagram-deff3bca-beS-SvfY.js} +1 -1
  101. package/dist/frontend/assets/{ro-RO-JPDTUUEW-CbJ3IB7a.js → ro-RO-JPDTUUEW-DsrnQm7K.js} +1 -1
  102. package/dist/frontend/assets/{ru-RU-B4JR7IUQ-PQGmeGG4.js → ru-RU-B4JR7IUQ-DrnGGdUs.js} +1 -1
  103. package/dist/frontend/assets/{sankeyDiagram-04a897e0-DV25bgN2.js → sankeyDiagram-04a897e0-CVad45bN.js} +1 -1
  104. package/dist/frontend/assets/{sankeyDiagram-23345273-szSb_Sei.js → sankeyDiagram-23345273-ghWBXXF2.js} +1 -1
  105. package/dist/frontend/assets/{selectAll-DsrPvhqV.js → selectAll-XplaO988.js} +1 -1
  106. package/dist/frontend/assets/{sequenceDiagram-17ac3bff-Dg88bSlc.js → sequenceDiagram-17ac3bff-DBI-EdWx.js} +1 -1
  107. package/dist/frontend/assets/{sequenceDiagram-704730f1-DRIjLCxx.js → sequenceDiagram-704730f1-BnJ__mBt.js} +1 -1
  108. package/dist/frontend/assets/{si-LK-N5RQ5JYF-BtIIudm3.js → si-LK-N5RQ5JYF-BxAwuRM5.js} +1 -1
  109. package/dist/frontend/assets/{sk-SK-C5VTKIMK-CIwXticU.js → sk-SK-C5VTKIMK-CnDyiLRf.js} +1 -1
  110. package/dist/frontend/assets/{sl-SI-NN7IZMDC-CXEdg57y.js → sl-SI-NN7IZMDC-BXHXIdFA.js} +1 -1
  111. package/dist/frontend/assets/{stateDiagram-587899a1-BwRwgRo6.js → stateDiagram-587899a1-D3Ahxsgc.js} +1 -1
  112. package/dist/frontend/assets/{stateDiagram-9c5f0230-C8n96rER.js → stateDiagram-9c5f0230-8XbLWvC0.js} +1 -1
  113. package/dist/frontend/assets/{stateDiagram-v2-51a3dcff-B7e5E4J7.js → stateDiagram-v2-51a3dcff-Cqf-MUGD.js} +1 -1
  114. package/dist/frontend/assets/{stateDiagram-v2-d93cdb3a-B18iZQLw.js → stateDiagram-v2-d93cdb3a-DjGrud9D.js} +1 -1
  115. package/dist/frontend/assets/{styles-2ab5d517-CfWubwio.js → styles-2ab5d517-B4qdHOgu.js} +3 -3
  116. package/dist/frontend/assets/{styles-5f03d8d2-C-_n19AB.js → styles-5f03d8d2-DOD2v5V8.js} +3 -3
  117. package/dist/frontend/assets/{styles-6aaf32cf-Dh-DHkVP.js → styles-6aaf32cf-bP3XXcmf.js} +1 -1
  118. package/dist/frontend/assets/{styles-9a916d00-Boy0hUEG.js → styles-9a916d00-QLeuL_Dy.js} +1 -1
  119. package/dist/frontend/assets/{styles-c10674c1-BfxiK3Ns.js → styles-c10674c1-Lpvh1u4f.js} +1 -1
  120. package/dist/frontend/assets/{styles-edf9a4b0-T7mKViRF.js → styles-edf9a4b0-D4W9aPm7.js} +1 -1
  121. package/dist/frontend/assets/subset-shared.chunk.js +9 -9
  122. package/dist/frontend/assets/subset-worker.chunk.js +1 -1
  123. package/dist/frontend/assets/{sv-SE-XGPEYMSR-dVrUAqld.js → sv-SE-XGPEYMSR-YrCQQBuo.js} +1 -1
  124. package/dist/frontend/assets/{svgDrawCommon-08f97a94-fsWk6SQc.js → svgDrawCommon-08f97a94-CwNv3PjS.js} +1 -1
  125. package/dist/frontend/assets/{svgDrawCommon-3ba9043b-BJ8X3qS-.js → svgDrawCommon-3ba9043b-DZbT0Bqu.js} +1 -1
  126. package/dist/frontend/assets/{ta-IN-2NMHFXQM-CtVVZfIT.js → ta-IN-2NMHFXQM-qR82aBSW.js} +1 -1
  127. package/dist/frontend/assets/{th-TH-HPSO5L25-Do90CyDN.js → th-TH-HPSO5L25-C65V7hE5.js} +1 -1
  128. package/dist/frontend/assets/{timeline-definition-7e6b55e7-D_iHA485.js → timeline-definition-7e6b55e7-GkPy3QeG.js} +3 -3
  129. package/dist/frontend/assets/{timeline-definition-85554ec2-nhT8QMsO.js → timeline-definition-85554ec2-CCdkBaC0.js} +3 -3
  130. package/dist/frontend/assets/{tr-TR-DEFEU3FU-MfR-IQke.js → tr-TR-DEFEU3FU-CFzbwAKV.js} +1 -1
  131. package/dist/frontend/assets/{uk-UA-QMV73CPH-CPet8B1O.js → uk-UA-QMV73CPH-ePt5WVz3.js} +1 -1
  132. package/dist/frontend/assets/{union-BgYwhB7T.js → union-CVZobYBh.js} +1 -1
  133. package/dist/frontend/assets/{vi-VN-M7AON7JQ-3HD06T_8.js → vi-VN-M7AON7JQ-CaPKykgJ.js} +1 -1
  134. package/dist/frontend/assets/{xychartDiagram-b6496bcd-D5vSaFT2.js → xychartDiagram-b6496bcd-CV5WRc81.js} +4 -4
  135. package/dist/frontend/assets/{xychartDiagram-e933f94c-DLIHXsUi.js → xychartDiagram-e933f94c-BH-ySdQf.js} +1 -1
  136. package/dist/frontend/assets/{zh-CN-LNUGB5OW-t2RyWPw2.js → zh-CN-LNUGB5OW-CK8AEj8o.js} +1 -1
  137. package/dist/frontend/assets/{zh-HK-E62DVLB3-Bj22hc7e.js → zh-HK-E62DVLB3-CUINiFgH.js} +1 -1
  138. package/dist/frontend/assets/{zh-TW-RAJ6MFWO-CBRhqhU1.js → zh-TW-RAJ6MFWO-BEBY7iJR.js} +1 -1
  139. package/dist/frontend/assets/zipObject-W8SLG3F1.js +1 -0
  140. package/dist/frontend/index.html +167 -235
  141. package/dist/{index.d.ts → mcp.d.ts} +1 -1
  142. package/dist/mcp.d.ts.map +1 -0
  143. package/dist/mcp.js +1183 -0
  144. package/dist/mcp.js.map +1 -0
  145. package/package.json +19 -34
  146. package/skills/excalidraw-skill/SKILL.md +42 -55
  147. package/skills/excalidraw-skill/references/cheatsheet.md +23 -56
  148. package/skills/excalidraw-skill/scripts/clear-canvas.cjs +9 -32
  149. package/skills/excalidraw-skill/scripts/create-element.cjs +18 -61
  150. package/skills/excalidraw-skill/scripts/delete-element.cjs +12 -42
  151. package/skills/excalidraw-skill/scripts/export-elements.cjs +17 -44
  152. package/skills/excalidraw-skill/scripts/gh-helper.cjs +58 -0
  153. package/skills/excalidraw-skill/scripts/healthcheck.cjs +8 -29
  154. package/skills/excalidraw-skill/scripts/import-elements.cjs +20 -70
  155. package/skills/excalidraw-skill/scripts/update-element.cjs +19 -63
  156. package/tsconfig.json +3 -2
  157. package/vite.config.js +3 -10
  158. package/dist/frontend/assets/arc-Cc3ncJ1n.js +0 -1
  159. package/dist/frontend/assets/channel-BQSIb3i3.js +0 -1
  160. package/dist/frontend/assets/classDiagram-v2-d5a6b087-BgB8AG2e.js +0 -2
  161. package/dist/frontend/assets/classDiagram-v2-f2320105-Dtywkpeg.js +0 -2
  162. package/dist/frontend/assets/clone-BoZziNL9.js +0 -1
  163. package/dist/frontend/assets/flowDiagram-v2-96b9c2cf-Z3H2d3Wj.js +0 -1
  164. package/dist/frontend/assets/flowDiagram-v2-ffc7f31a-CIQOMghC.js +0 -1
  165. package/dist/frontend/assets/index-DIz4WrSB.js +0 -349
  166. package/dist/frontend/assets/zipObject-DMfHW2o8.js +0 -1
  167. package/dist/index.d.ts.map +0 -1
  168. package/dist/index.js +0 -2279
  169. package/dist/index.js.map +0 -1
  170. package/dist/remote.d.ts +0 -5
  171. package/dist/remote.d.ts.map +0 -1
  172. package/dist/remote.js +0 -129
  173. package/dist/remote.js.map +0 -1
  174. package/dist/server.d.ts +0 -4
  175. package/dist/server.d.ts.map +0 -1
  176. package/dist/server.js +0 -1208
  177. package/dist/server.js.map +0 -1
  178. package/dist/target.d.ts +0 -38
  179. package/dist/target.d.ts.map +0 -1
  180. package/dist/target.js +0 -225
  181. package/dist/target.js.map +0 -1
  182. package/dist/types.d.ts +0 -228
  183. package/dist/types.d.ts.map +0 -1
  184. package/dist/types.js +0 -45
  185. package/dist/types.js.map +0 -1
  186. package/dist/utils/auth.d.ts +0 -14
  187. package/dist/utils/auth.d.ts.map +0 -1
  188. package/dist/utils/auth.js +0 -67
  189. package/dist/utils/auth.js.map +0 -1
  190. package/dist/utils/github.d.ts +0 -24
  191. package/dist/utils/github.d.ts.map +0 -1
  192. package/dist/utils/github.js +0 -132
  193. package/dist/utils/github.js.map +0 -1
  194. package/dist/utils/logger.d.ts +0 -4
  195. package/dist/utils/logger.d.ts.map +0 -1
  196. package/dist/utils/logger.js +0 -25
  197. package/dist/utils/logger.js.map +0 -1
  198. package/dist/utils/r2store.d.ts +0 -12
  199. package/dist/utils/r2store.d.ts.map +0 -1
  200. package/dist/utils/r2store.js +0 -75
  201. package/dist/utils/r2store.js.map +0 -1
  202. package/frontend/drop.png +0 -0
  203. package/frontend/index.html +0 -339
  204. package/frontend/src/App.tsx +0 -1091
  205. package/frontend/src/main.tsx +0 -15
  206. package/frontend/src/utils/ghSync.ts +0 -234
  207. package/frontend/src/utils/mermaidConverter.ts +0 -43
  208. package/frontend/src/utils/webmcp.ts +0 -265
  209. package/scripts/check-local-bind.mjs +0 -164
  210. package/scripts/postinstall.mjs +0 -23
  211. package/scripts/publish-pages.sh +0 -39
  212. package/scripts/seed-r2.mjs +0 -9
  213. package/src/cli.ts +0 -528
  214. package/src/index.ts +0 -2538
  215. package/src/remote.ts +0 -92
  216. package/src/server.ts +0 -1349
  217. package/src/target.ts +0 -198
  218. package/src/types.ts +0 -336
  219. package/src/utils/auth.ts +0 -61
  220. package/src/utils/github.ts +0 -121
  221. package/src/utils/logger.ts +0 -35
  222. package/src/utils/r2store.ts +0 -70
package/README.md CHANGED
@@ -38,10 +38,10 @@ Keywords: Excalidraw agent skill, Excalidraw MCP server, AI diagramming, Claude
38
38
 
39
39
  ## What It Is
40
40
 
41
- This repo contains two separate processes:
41
+ Remote-only: GitHub is the canvas. No local server, no ports.
42
42
 
43
- - Canvas server: web UI + REST API + WebSocket updates (default `http://127.0.0.1:3000`)
44
- - MCP server: exposes MCP tools over stdio; syncs to the canvas via `EXPRESS_SERVER_URL`
43
+ - Viewer: static Excalidraw app on GitHub Pages (public repos) or Cloudflare Pages (private repos), reads `canvas.excalidraw` from the `excalidrop` branch
44
+ - MCP server: remote-only stdio (`npx -y excalidrop@latest mcp --repo owner/repo`); draws via GitHub Contents API, screenshots via shared relay when a viewer tab is open
45
45
 
46
46
  ## How We Differ from the Official Excalidraw MCP
47
47
 
@@ -70,60 +70,39 @@ Excalidraw now has an [official MCP](https://github.com/excalidraw/excalidraw-mc
70
70
  ## Quick Start
71
71
 
72
72
  ```bash
73
- npm i -D excalidrop
74
- npx excalidrop setup # gh auth check → publishes viewer to gh-pages → app-install link → verifies live
73
+ npx excalidrop # interactive TUI: repo → auth → host → editor
74
+ # or one-shot:
75
+ npx excalidrop setup owner/repo [--target pages|cloudflare]
75
76
  ```
76
77
 
77
78
  `setup` walks you through the whole flow on **any repo you own or can access**:
78
79
 
79
- 1. **Checks `gh auth`** (log in with `gh auth login` first — 2FA via GitHub).
80
- 2. **Publishes an empty canvas** to your repo's `gh-pages` branch and enables Pages.
81
- 3. **Prints the one-time app-install link** (`github.com/apps/<app>/installations/new`) — installing the GitHub App on the repo is what grants canvas access. Repo access == canvas access: collaborators with write can edit, readers get view-only, everyone else gets a login wall.
82
- 4. **Verifies** the viewer + scene are actually serving.
83
- 5. Prints your canvas URL. In your agent, run `switch_remote { target: "<that URL>" }` once — it's remembered per-project in `.excalidrop.json`, so subsequent sessions skip it and draw directly. Commits land on GitHub; the viewer updates itself. Human edits in the browser autosync every 10s with a force-save on close.
80
+ 1. **Checks `gh auth`** (log in with `gh auth login` first — 2FA via GitHub, or `npx excalidrop login` device flow).
81
+ 2. **Picks a host** (auto: public→GitHub Pages, private→Cloudflare Pages; override with `--target`). Publishes the viewer once — later saves never redeploy.
82
+ 3. Repo access == canvas access: collaborators with write can edit, readers get view-only, everyone else gets a login wall.
83
+ 4. Writes `.mcp.json` + remembers the repo in `.excalidrop.json`, so the MCP preloads it and subsequent sessions draw directly. Commits land on GitHub; the viewer updates itself.
84
84
 
85
- Prefer local-only? `npx excalidrop init` (free port + agent install prompt) then `npx excalidrop up`.
86
-
87
- Each project gets its own port (scanned free from 3030), so several checkouts run concurrently. Agent config needs no hardcoded port — same pattern as `chrome-devtools-mcp`:
85
+ No install needed — editors run the MCP straight from npm:
88
86
 
89
87
  ```bash
90
- claude mcp add excalidrop --scope project -- npx -y excalidrop mcp
91
- codex mcp add excalidrop -- npx -y excalidrop mcp
88
+ claude mcp add excalidrop --scope project -- npx -y excalidrop@latest mcp --repo owner/repo
89
+ codex mcp add excalidrop -- npx -y excalidrop@latest mcp --repo owner/repo
92
90
  ```
93
91
 
94
- ## Quick Start (Local)
95
-
96
- Prereqs: Node >= 18, npm
97
-
98
- ```bash
99
- npm ci
100
- npm run build
101
- ```
102
-
103
- Terminal 1: start the canvas
104
- ```bash
105
- PORT=3000 npm run canvas
106
- ```
107
-
108
- > **Security note:** The server defaults to binding on `127.0.0.1` only. If you need to expose it on a network interface (e.g. Docker, remote access), set `HOST=0.0.0.0` — but ensure you have network-level access controls in place, as the API has no built-in authentication.
109
-
110
- Open `http://127.0.0.1:3000`.
111
-
112
- Terminal 2: run the MCP server (stdio)
113
- ```bash
114
- EXPRESS_SERVER_URL=http://127.0.0.1:3000 node dist/index.js
115
- ```
92
+ Screenshots / viewport / mermaid need one viewer tab open (shared relay at `excalidrop.wtf403.workers.dev`); drawing works headless.
116
93
 
117
94
  ## Configure MCP Clients
118
95
 
119
- The MCP server runs over stdio and can be configured with any MCP-compatible client. The recommended path is `npm i -D excalidrop && npx excalidrop init` (per-project canvas + generated `.mcp.json`), which replaces the manual setups below.
96
+ The MCP server runs over stdio (remote-only) and can be configured with any MCP-compatible client. The recommended path is `npx excalidrop setup owner/repo` (writes `.mcp.json` + auto-installs), which replaces the manual setups below.
120
97
 
121
98
  ### Environment Variables
122
99
 
123
100
  | Variable | Description | Default |
124
101
  |----------|-------------|---------|
125
- | `EXPRESS_SERVER_URL` | URL of the canvas server | `http://127.0.0.1:3000` |
126
- | `ENABLE_CANVAS_SYNC` | Enable real-time canvas sync | `true` |
102
+ | `EXCALIDROP_REPO` | Repo canvas (`owner/repo`), alternative to `--repo=` | git remote / `.excalidrop.json` |
103
+ | `GITHUB_TOKEN` | GitHub token (else `gh auth token` / stored device token) | — |
104
+ | `EXCALIDROP_RELAY_URL` | Screenshot/viewport relay | `https://excalidrop.wtf403.workers.dev` |
105
+ | `EXCALIDROP_NO_RELAY` | Set `1` to use GitHub command-queue instead of relay | unset |
127
106
 
128
107
  ---
129
108
 
@@ -134,17 +113,12 @@ Config location:
134
113
  - Windows: `%APPDATA%\Claude\claude_desktop_config.json`
135
114
  - Linux: `~/.config/Claude/claude_desktop_config.json`
136
115
 
137
- **Local (node)**
138
116
  ```json
139
117
  {
140
118
  "mcpServers": {
141
- "excalidraw": {
142
- "command": "node",
143
- "args": ["/absolute/path/to/mcp_excalidraw/dist/index.js"],
144
- "env": {
145
- "EXPRESS_SERVER_URL": "http://127.0.0.1:3000",
146
- "ENABLE_CANVAS_SYNC": "true"
147
- }
119
+ "excalidrop": {
120
+ "command": "npx",
121
+ "args": ["-y", "excalidrop@latest", "mcp", "--repo", "owner/repo"]
148
122
  }
149
123
  }
150
124
  }
@@ -154,28 +128,17 @@ Config location:
154
128
 
155
129
  ### Claude Code
156
130
 
157
- Use the `claude mcp add` command to register the MCP server.
158
-
159
- **Local (node)** - User-level (available across all projects):
160
- ```bash
161
- claude mcp add excalidraw --scope user \
162
- -e EXPRESS_SERVER_URL=http://127.0.0.1:3000 \
163
- -e ENABLE_CANVAS_SYNC=true \
164
- -- node /absolute/path/to/mcp_excalidraw/dist/index.js
165
- ```
166
-
167
- **Local (node)** - Project-level (shared via `.mcp.json`):
168
131
  ```bash
169
- claude mcp add excalidraw --scope project \
170
- -e EXPRESS_SERVER_URL=http://127.0.0.1:3000 \
171
- -e ENABLE_CANVAS_SYNC=true \
172
- -- node /absolute/path/to/mcp_excalidraw/dist/index.js
132
+ # Project-level (shared via .mcp.json — written automatically by setup):
133
+ claude mcp add excalidrop --scope project -- npx -y excalidrop@latest mcp --repo owner/repo
134
+ # User-level (all projects):
135
+ claude mcp add excalidrop --scope user -- npx -y excalidrop@latest mcp --repo owner/repo
173
136
  ```
174
137
 
175
138
  **Manage servers:**
176
139
  ```bash
177
- claude mcp list # List configured servers
178
- claude mcp remove excalidraw # Remove a server
140
+ claude mcp list # List configured servers
141
+ claude mcp remove excalidrop # Remove a server
179
142
  ```
180
143
 
181
144
  ---
@@ -184,17 +147,12 @@ claude mcp remove excalidraw # Remove a server
184
147
 
185
148
  Config location: `.cursor/mcp.json` in your project root (or `~/.cursor/mcp.json` for global config)
186
149
 
187
- **Local (node)**
188
150
  ```json
189
151
  {
190
152
  "mcpServers": {
191
- "excalidraw": {
192
- "command": "node",
193
- "args": ["/absolute/path/to/mcp_excalidraw/dist/index.js"],
194
- "env": {
195
- "EXPRESS_SERVER_URL": "http://127.0.0.1:3000",
196
- "ENABLE_CANVAS_SYNC": "true"
197
- }
153
+ "excalidrop": {
154
+ "command": "npx",
155
+ "args": ["-y", "excalidrop@latest", "mcp", "--repo", "owner/repo"]
198
156
  }
199
157
  }
200
158
  }
@@ -204,20 +162,14 @@ Config location: `.cursor/mcp.json` in your project root (or `~/.cursor/mcp.json
204
162
 
205
163
  ### Codex CLI
206
164
 
207
- Use the `codex mcp add` command to register the MCP server.
208
-
209
- **Local (node)**
210
165
  ```bash
211
- codex mcp add excalidraw \
212
- --env EXPRESS_SERVER_URL=http://127.0.0.1:3000 \
213
- --env ENABLE_CANVAS_SYNC=true \
214
- -- node /absolute/path/to/mcp_excalidraw/dist/index.js
166
+ codex mcp add excalidrop -- npx -y excalidrop@latest mcp --repo owner/repo
215
167
  ```
216
168
 
217
169
  **Manage servers:**
218
170
  ```bash
219
171
  codex mcp list # List configured servers
220
- codex mcp remove excalidraw # Remove a server
172
+ codex mcp remove excalidrop # Remove a server
221
173
  ```
222
174
 
223
175
  ---
@@ -226,19 +178,14 @@ codex mcp remove excalidraw # Remove a server
226
178
 
227
179
  Config location: `~/.config/opencode/opencode.json` or project-level `opencode.json`
228
180
 
229
- **Local (node)**
230
181
  ```json
231
182
  {
232
183
  "$schema": "https://opencode.ai/config.json",
233
184
  "mcp": {
234
- "excalidraw": {
185
+ "excalidrop": {
235
186
  "type": "local",
236
- "command": ["node", "/absolute/path/to/mcp_excalidraw/dist/index.js"],
237
- "enabled": true,
238
- "environment": {
239
- "EXPRESS_SERVER_URL": "http://127.0.0.1:3000",
240
- "ENABLE_CANVAS_SYNC": "true"
241
- }
187
+ "command": ["npx", "-y", "excalidrop@latest", "mcp", "--repo", "owner/repo"],
188
+ "enabled": true
242
189
  }
243
190
  }
244
191
  }
@@ -250,17 +197,12 @@ Config location: `~/.config/opencode/opencode.json` or project-level `opencode.j
250
197
 
251
198
  Config location: `~/.gemini/antigravity/mcp_config.json`
252
199
 
253
- **Local (node)**
254
200
  ```json
255
201
  {
256
202
  "mcpServers": {
257
- "excalidraw": {
258
- "command": "node",
259
- "args": ["/absolute/path/to/mcp_excalidraw/dist/index.js"],
260
- "env": {
261
- "EXPRESS_SERVER_URL": "http://127.0.0.1:3000",
262
- "ENABLE_CANVAS_SYNC": "true"
263
- }
203
+ "excalidrop": {
204
+ "command": "npx",
205
+ "args": ["-y", "excalidrop@latest", "mcp", "--repo", "owner/repo"]
264
206
  }
265
207
  }
266
208
  }
@@ -270,9 +212,9 @@ Config location: `~/.gemini/antigravity/mcp_config.json`
270
212
 
271
213
  ### Notes
272
214
 
273
- - **Canvas server**: Must be running before the MCP server connects. Start it with `npx excalidrop up`.
274
- - **Absolute paths**: When using local node setup, replace `/absolute/path/to/mcp_excalidraw` with the actual path where you cloned and built the repo.
275
- - **In-memory storage**: The canvas server stores elements in memory. Restarting the server will clear all elements. Use the export/import scripts if you need persistence.
215
+ - **No install, no local server**: replace `owner/repo` with your canvas repo. Auth via `GITHUB_TOKEN`, `gh auth`, or `npx excalidrop login`.
216
+ - **Scene storage**: `canvas.excalidraw` on the repo's `excalidrop` branch (+ `snapshots/*.json`). Nothing lives in memory to lose.
217
+ - **Screenshots** (`get_canvas_screenshot`, `export_to_image`, `set_viewport`) need one viewer tab open (relay); everything else works headless.
276
218
 
277
219
  ## Agent Skill (Optional)
278
220
 
@@ -313,12 +255,12 @@ To update an existing installation, remove the old folder first then re-copy.
313
255
 
314
256
  ### Use The Skill Scripts
315
257
 
316
- All scripts respect `EXPRESS_SERVER_URL` (default `http://127.0.0.1:3000`) or accept `--url`.
258
+ Skill scripts talk to the remote canvas via `gh` auth (no local server):
317
259
 
318
260
  ```bash
319
- EXPRESS_SERVER_URL=http://127.0.0.1:3000 node skills/excalidraw-skill/scripts/healthcheck.cjs
320
- EXPRESS_SERVER_URL=http://127.0.0.1:3000 node skills/excalidraw-skill/scripts/export-elements.cjs --out diagram.elements.json
321
- EXPRESS_SERVER_URL=http://127.0.0.1:3000 node skills/excalidraw-skill/scripts/import-elements.cjs --in diagram.elements.json --mode batch
261
+ node skills/excalidraw-skill/scripts/healthcheck.cjs --repo owner/repo
262
+ node skills/excalidraw-skill/scripts/export-elements.cjs --repo owner/repo --out diagram.elements.json
263
+ node skills/excalidraw-skill/scripts/import-elements.cjs --repo owner/repo --in diagram.elements.json --mode batch
322
264
  ```
323
265
 
324
266
  ### When The Skill Is Useful
@@ -330,7 +272,7 @@ EXPRESS_SERVER_URL=http://127.0.0.1:3000 node skills/excalidraw-skill/scripts/im
330
272
 
331
273
  See `skills/excalidraw-skill/SKILL.md` and `skills/excalidraw-skill/references/cheatsheet.md`.
332
274
 
333
- ## MCP Tools (26 Total)
275
+ ## MCP Tools (31 Total, remote-only)
334
276
 
335
277
  | Category | Tools |
336
278
  |---|---|
@@ -347,51 +289,36 @@ Full schemas are discoverable via `tools/list` or in `skills/excalidraw-skill/re
347
289
 
348
290
  ## Testing
349
291
 
350
- ### Canvas Smoke Test (HTTP)
292
+ ### Status
351
293
 
352
294
  ```bash
353
- curl http://127.0.0.1:3000/health
354
- ```
355
-
356
- ### Local Bind Regression Test
357
-
358
- ```bash
359
- npm run test:bind
295
+ npx excalidrop status # repo + auth + scene element count
360
296
  ```
361
297
 
362
298
  ### MCP Smoke Test (MCP Inspector)
363
299
 
364
300
  List tools:
365
301
  ```bash
366
- npx @modelcontextprotocol/inspector --cli \
367
- -e EXPRESS_SERVER_URL=http://127.0.0.1:3000 \
368
- -e ENABLE_CANVAS_SYNC=true -- \
369
- node dist/index.js --method tools/list
302
+ npx @modelcontextprotocol/inspector --cli -- node dist/mcp.js --repo owner/repo --method tools/list
370
303
  ```
371
304
 
372
- Create a rectangle:
305
+ Create a rectangle (commits to the repo's `excalidrop` branch):
373
306
  ```bash
374
- npx @modelcontextprotocol/inspector --cli \
375
- -e EXPRESS_SERVER_URL=http://127.0.0.1:3000 \
376
- -e ENABLE_CANVAS_SYNC=true -- \
377
- node dist/index.js --method tools/call --tool-name create_element \
307
+ npx @modelcontextprotocol/inspector --cli -- node dist/mcp.js --repo owner/repo \
308
+ --method tools/call --tool-name create_element \
378
309
  --tool-arg type=rectangle --tool-arg x=100 --tool-arg y=100 \
379
310
  --tool-arg width=300 --tool-arg height=200
380
311
  ```
381
312
 
382
- ### Frontend Screenshots (agent-browser)
313
+ ### Viewer screenshots
383
314
 
384
- If you use `agent-browser` for UI checks:
385
- ```bash
386
- agent-browser install
387
- agent-browser open http://127.0.0.1:3000
388
- agent-browser wait --load networkidle
389
- agent-browser screenshot /tmp/canvas.png
390
- ```
315
+ Open the canvas URL once, then call `get_canvas_screenshot` — it renders via the shared relay (`EXCALIDROP_RELAY_URL`, `--no-relay` falls back to the GitHub command queue).
391
316
 
392
317
  ## Troubleshooting
393
318
 
394
- - Canvas not updating: confirm `EXPRESS_SERVER_URL` points at the running canvas server.
319
+ - `No repo selected`: pass `--repo=owner/repo`, set `EXCALIDROP_REPO`, or run `npx excalidrop setup owner/repo`.
320
+ - `No GitHub token`: run `gh auth login` or `npx excalidrop login`.
321
+ - Screenshot `503 no viewer connected`: open the canvas URL in a browser first.
395
322
  - Updates/deletes fail after batch creation: ensure you are on a build that includes the batch id preservation fix (merged via PR #34).
396
323
 
397
324
  ## Known Issues / TODO
package/dist/cli.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":""}
1
+ {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../cli.ts"],"names":[],"mappings":""}