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
@@ -1,164 +0,0 @@
1
- #!/usr/bin/env node
2
-
3
- import { spawn } from 'node:child_process';
4
- import { basename, dirname, join } from 'node:path';
5
- import { fileURLToPath } from 'node:url';
6
-
7
- const __filename = fileURLToPath(import.meta.url);
8
- const __dirname = dirname(__filename);
9
- const repoRoot = join(__dirname, '..');
10
- const serverPath = join(repoRoot, 'dist', 'server.js');
11
- const runtime = process.env.CANVAS_RUNTIME || process.execPath;
12
- const runtimeName = basename(runtime).toLowerCase();
13
- const runtimeArgs = runtimeName.includes('bun') ? ['run', serverPath] : [serverPath];
14
- const port = Number(process.env.PORT || 32000 + Math.floor(Math.random() * 2000));
15
- const startupTimeoutMs = 5000;
16
- const duplicateExitTimeoutMs = 2500;
17
-
18
- function spawnCanvas(host) {
19
- const env = {
20
- ...process.env,
21
- PORT: String(port),
22
- LOG_LEVEL: 'error',
23
- };
24
- if (host) {
25
- env.HOST = host;
26
- } else {
27
- delete env.HOST;
28
- }
29
-
30
- return spawn(runtime, runtimeArgs, {
31
- cwd: repoRoot,
32
- env,
33
- stdio: ['ignore', 'pipe', 'pipe'],
34
- });
35
- }
36
-
37
- function collectOutput(child) {
38
- let output = '';
39
- child.stdout.on('data', chunk => {
40
- output += chunk.toString();
41
- });
42
- child.stderr.on('data', chunk => {
43
- output += chunk.toString();
44
- });
45
- return () => output.trim();
46
- }
47
-
48
- async function endpointResponds(url, timeoutMs = 500) {
49
- const controller = new AbortController();
50
- const timeout = setTimeout(() => controller.abort(), timeoutMs);
51
- try {
52
- const response = await fetch(url, { signal: controller.signal });
53
- return response.ok;
54
- } catch {
55
- return false;
56
- } finally {
57
- clearTimeout(timeout);
58
- }
59
- }
60
-
61
- async function waitForHealth(url, timeoutMs, child, getOutput) {
62
- const start = Date.now();
63
- while (Date.now() - start < timeoutMs) {
64
- if (child && (child.exitCode !== null || child.signalCode !== null)) {
65
- const status = child.exitCode !== null ? `exit code ${child.exitCode}` : `signal ${child.signalCode}`;
66
- const output = getOutput ? getOutput() : '';
67
- throw new Error(`Canvas server exited before health check with ${status}.${output ? `\n${output}` : ''}`);
68
- }
69
- if (await endpointResponds(url)) {
70
- return;
71
- }
72
- await new Promise(resolve => setTimeout(resolve, 100));
73
- }
74
- throw new Error(`Timed out waiting for ${url}`);
75
- }
76
-
77
- function waitForExit(child, timeoutMs) {
78
- return new Promise(resolve => {
79
- const timeout = setTimeout(() => {
80
- cleanup();
81
- resolve(null);
82
- }, timeoutMs);
83
-
84
- const onExit = (code, signal) => {
85
- cleanup();
86
- resolve({ code, signal });
87
- };
88
-
89
- const cleanup = () => {
90
- clearTimeout(timeout);
91
- child.off('exit', onExit);
92
- };
93
-
94
- child.once('exit', onExit);
95
- });
96
- }
97
-
98
- async function killChild(child) {
99
- if (child.exitCode !== null || child.signalCode !== null) return;
100
- child.kill('SIGTERM');
101
- const exit = await waitForExit(child, 1000);
102
- if (!exit) {
103
- child.kill('SIGKILL');
104
- }
105
- }
106
-
107
- let first;
108
- let second;
109
- let bindAll;
110
-
111
- try {
112
- first = spawnCanvas();
113
- const firstOutput = collectOutput(first);
114
-
115
- await waitForHealth(`http://127.0.0.1:${port}/health`, startupTimeoutMs, first, firstOutput);
116
-
117
- if (await endpointResponds(`http://[::1]:${port}/health`)) {
118
- throw new Error('Default canvas server should not listen on IPv6 loopback.');
119
- }
120
-
121
- second = spawnCanvas();
122
- const secondOutput = collectOutput(second);
123
- const duplicateExit = await waitForExit(second, duplicateExitTimeoutMs);
124
-
125
- if (!duplicateExit) {
126
- throw new Error('Second canvas server stayed running on the same local port.');
127
- }
128
- if (duplicateExit.code === 0) {
129
- throw new Error('Second canvas server exited successfully instead of failing.');
130
- }
131
-
132
- bindAll = spawnCanvas('::');
133
- const bindAllOutput = collectOutput(bindAll);
134
- const bindAllExit = await waitForExit(bindAll, duplicateExitTimeoutMs);
135
-
136
- if (!bindAllExit) {
137
- throw new Error('Canvas server with HOST=:: stayed running while a loopback server was active.');
138
- }
139
- if (bindAllExit.code === 0) {
140
- throw new Error('Canvas server with HOST=:: exited successfully instead of failing.');
141
- }
142
-
143
- console.log(
144
- `Local bind check passed on port ${port} using ${runtimeName}: ` +
145
- 'default bind is IPv4 loopback only, duplicate startup fails, and HOST=:: is guarded.'
146
- );
147
-
148
- await killChild(first);
149
- if (process.env.DEBUG_BIND_CHECK && firstOutput()) {
150
- console.error(firstOutput());
151
- }
152
- if (process.env.DEBUG_BIND_CHECK && secondOutput()) {
153
- console.error(secondOutput());
154
- }
155
- if (process.env.DEBUG_BIND_CHECK && bindAllOutput()) {
156
- console.error(bindAllOutput());
157
- }
158
- } catch (error) {
159
- if (bindAll) await killChild(bindAll);
160
- if (second) await killChild(second);
161
- if (first) await killChild(first);
162
- console.error((error instanceof Error) ? error.message : String(error));
163
- process.exit(1);
164
- }
@@ -1,23 +0,0 @@
1
- #!/usr/bin/env node
2
- // Postinstall hint for `npm i -D excalidrop`.
3
- // Print-only: npm blocks interactive stdin during postinstall, so the actual
4
- // setup (port pick + agent install) happens via `npx excalidrop init`.
5
- if (process.env.EXCALIDROP_NO_POSTINSTALL) process.exit(0);
6
-
7
- console.log(`
8
- excalidrop installed.
9
-
10
- Remote canvas (recommended — GitHub-backed, works on any repo):
11
-
12
- npx excalidrop setup
13
-
14
- checks gh auth, publishes the viewer to gh-pages, prints the app-install
15
- link and verifies the site is live. Then tell your agent:
16
-
17
- switch_remote { target: "<your Pages URL>" }
18
-
19
- Local canvas instead:
20
-
21
- npx excalidrop init # picks a free port, offers AI-agent install
22
- npx excalidrop up
23
- `);
@@ -1,39 +0,0 @@
1
- #!/bin/bash
2
- # Zero-config publish: auto-detects repo from git remote, enables Pages via gh.
3
- # Usage: ./scripts/publish-pages.sh (or npx excalidrop publish)
4
- set -euo pipefail
5
- PKG_DIR="$(cd "$(dirname "$0")/.." && pwd)"
6
- REPO="${REPO_SLUG:-$(git config --get remote.origin.url | sed -E -e 's/\.git$//' -e 's#.*github.com[:/]##')}"
7
- echo "Repo: $REPO"
8
- WORK=$(mktemp -d)
9
- trap "rm -rf $WORK" EXIT
10
- npm --prefix "$PKG_DIR" run build:frontend >/dev/null
11
- git clone --depth 1 --branch gh-pages "git@github.com:${REPO}.git" "$WORK" 2>/dev/null || { git init -b gh-pages "$WORK"; git -C "$WORK" remote add origin "git@github.com:${REPO}.git"; }
12
- cp -r "$PKG_DIR/dist/frontend/"* "$WORK"/
13
- cp "$PKG_DIR/canvas.excalidraw" "$WORK"/ 2>/dev/null || echo '{"type":"excalidraw","version":2,"elements":[]}' > "$WORK/canvas.excalidraw"
14
- git -C "$WORK" add -A && git -C "$WORK" -c user.name=excalidrop -c user.email=excalidrop@local commit -m "excalidrop: publish viewer" --allow-empty && git -C "$WORK" push origin gh-pages --force
15
- # Seed `main` on empty repos and keep it the default branch.
16
- # Without this, gh-pages is the only branch and GitHub makes it the default.
17
- # Never touch the default branch of repos that already have a `main`.
18
- if ! gh api "repos/${REPO}/git/ref/heads/main" >/dev/null 2>&1; then
19
- SEED=$(mktemp -d)
20
- git init -b main "$SEED" >/dev/null
21
- # Empty commit only: main must exist so it stays the default branch,
22
- # but setup puts NO files there (no canvas, no README). The canvas
23
- # lives on gh-pages until the agent's first draw commits it.
24
- git -C "$SEED" -c user.name=excalidrop -c user.email=excalidrop@local commit --allow-empty -m "init main" --quiet
25
- git -C "$SEED" remote add origin "git@github.com:${REPO}.git"
26
- git -C "$SEED" push origin main >/dev/null
27
- rm -rf "$SEED"
28
- if [ "$(gh api "repos/${REPO}" --jq '.default_branch' 2>/dev/null)" != "main" ]; then
29
- gh api "repos/${REPO}" -X PATCH -f default_branch=main >/dev/null
30
- fi
31
- fi
32
- # Point Pages at the gh-pages branch (PUT works whether Pages is on or off)
33
- CUR="$(gh api "repos/${REPO}/pages" --jq '.source.branch' 2>/dev/null || echo none)"
34
- if [ "$CUR" = "none" ]; then
35
- gh api "repos/${REPO}/pages" -X POST -f build_type=legacy -f 'source[branch]=gh-pages' -f 'source[path]=/' >/dev/null
36
- elif [ "$CUR" != "gh-pages" ]; then
37
- gh api "repos/${REPO}/pages" -X PUT -f build_type=legacy -f 'source[branch]=gh-pages' -f 'source[path]=/' >/dev/null
38
- fi
39
- echo "Pages: https://$(echo "$REPO" | tr '[:upper:]' '[:lower:]' | cut -d/ -f1).github.io/$(echo "$REPO" | cut -d/ -f2)/"
@@ -1,9 +0,0 @@
1
- #!/usr/bin/env node
2
- // Seeds canvas.excalidraw into R2 so Pages + API share state. No-op without creds.
3
- import fs from 'node:fs';
4
- import path from 'node:path';
5
- const root = path.resolve(process.cwd(), '../..');
6
- const sceneFile = path.join(root, 'canvas.excalidraw');
7
- if (!fs.existsSync(sceneFile)) { console.log('no canvas.excalidraw, skipping'); process.exit(0); }
8
- if (!process.env.CLOUDFLARER2TOKEN && !process.env.R2_ACCESS_KEY_ID) { console.log('no R2 creds, skipping'); process.exit(0); }
9
- console.log('R2 seed: credentials present; server lazy-loads/persists at runtime. OK');