excalidrop 0.1.3 → 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.
- package/README.md +58 -131
- package/dist/cli.d.ts +0 -21
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +488 -439
- package/dist/cli.js.map +1 -1
- package/dist/frontend/assets/{advancedFormat-bKUmsig-.js → advancedFormat-CsxROTkH.js} +1 -1
- package/dist/frontend/assets/{ar-SA-G6X2FPQ2-C7K_UR3P.js → ar-SA-G6X2FPQ2-Bu8X6mOi.js} +1 -1
- package/dist/frontend/assets/arc-B9VNLSzj.js +1 -0
- package/dist/frontend/assets/{az-AZ-76LH7QW2-PkhuRuSr.js → az-AZ-76LH7QW2-DpvzY31_.js} +1 -1
- package/dist/frontend/assets/{bg-BG-XCXSNQG7-CgLRSYTl.js → bg-BG-XCXSNQG7-DCtZnLyo.js} +1 -1
- package/dist/frontend/assets/{blockDiagram-38ab4fdb-BFdBRYSn.js → blockDiagram-38ab4fdb-4cfDkUsw.js} +1 -1
- package/dist/frontend/assets/{blockDiagram-68f4deed-Ynbqr7bQ.js → blockDiagram-68f4deed-CsgWL6uC.js} +1 -1
- package/dist/frontend/assets/{bn-BD-2XOGV67Q-CEvkU0mz.js → bn-BD-2XOGV67Q-B-IdLNKT.js} +1 -1
- package/dist/frontend/assets/{c4Diagram-15b5d702-Dm7F1Pn_.js → c4Diagram-15b5d702-7BAqo4qT.js} +1 -1
- package/dist/frontend/assets/{c4Diagram-3d4e48cf-COkK-e67.js → c4Diagram-3d4e48cf-CDW-O-vg.js} +1 -1
- package/dist/frontend/assets/{ca-ES-6MX7JW3Y-DzP6q9bE.js → ca-ES-6MX7JW3Y-DM8olClc.js} +1 -1
- package/dist/frontend/assets/channel-jdNM4v-F.js +1 -0
- package/dist/frontend/assets/{classDiagram-70f12bd4-CRzulwvH.js → classDiagram-70f12bd4-D2U4i4yC.js} +1 -1
- package/dist/frontend/assets/{classDiagram-d40c83e7-DNbA-n-a.js → classDiagram-d40c83e7-DtBHRJc9.js} +1 -1
- package/dist/frontend/assets/classDiagram-v2-d5a6b087-Drykcxns.js +2 -0
- package/dist/frontend/assets/classDiagram-v2-f2320105-D8ruMBA6.js +2 -0
- package/dist/frontend/assets/clone-DFO_zGRO.js +1 -0
- package/dist/frontend/assets/{createText-2e5e7dd3-DB_k52Pn.js → createText-2e5e7dd3-1KPUhDpM.js} +1 -1
- package/dist/frontend/assets/{createText-d213de94-D-G49giw.js → createText-d213de94-C6EhGbUN.js} +4 -4
- package/dist/frontend/assets/{cs-CZ-2BRQDIVT-Bf4TOzpR.js → cs-CZ-2BRQDIVT-DgjTgz6K.js} +1 -1
- package/dist/frontend/assets/{cytoscape-cose-bilkent-DQYypj0P.js → cytoscape-cose-bilkent-BnIHl72R.js} +1 -1
- package/dist/frontend/assets/{da-DK-5WZEPLOC-jO-5kyXb.js → da-DK-5WZEPLOC-uEs3xGKF.js} +1 -1
- package/dist/frontend/assets/{de-DE-XR44H4JA-BkNXWOVh.js → de-DE-XR44H4JA-CBglLw42.js} +1 -1
- package/dist/frontend/assets/drop-BFhuMYSw.png +0 -0
- package/dist/frontend/assets/{edges-332bd1c7-CVvMtkTa.js → edges-332bd1c7-cWCBwcrg.js} +1 -1
- package/dist/frontend/assets/{edges-e0da2a9e-DQBAvC8-.js → edges-e0da2a9e-DKeDUJ_F.js} +1 -1
- package/dist/frontend/assets/{el-GR-BZB4AONW-Dv7Y9hMk.js → el-GR-BZB4AONW-B-_eub00.js} +1 -1
- package/dist/frontend/assets/{elk.bundled-YVS3PsMH.js → elk.bundled-Ch9TeAu4.js} +1 -1
- package/dist/frontend/assets/{erDiagram-880f2ed8-BjBeR38f.js → erDiagram-880f2ed8-CtDf_58r.js} +4 -4
- package/dist/frontend/assets/{erDiagram-9861fffd-B2Bi3R45.js → erDiagram-9861fffd-CAlUeljk.js} +1 -1
- package/dist/frontend/assets/{es-ES-U4NZUMDT-CWhs0SQY.js → es-ES-U4NZUMDT-BIN3bSVD.js} +1 -1
- package/dist/frontend/assets/{eu-ES-A7QVB2H4-BfkFwc3e.js → eu-ES-A7QVB2H4-TyQet3-N.js} +1 -1
- package/dist/frontend/assets/{fa-IR-HGAKTJCU-BgWzSj46.js → fa-IR-HGAKTJCU-DVmjjr57.js} +1 -1
- package/dist/frontend/assets/{fi-FI-Z5N7JZ37-CUyvkum-.js → fi-FI-Z5N7JZ37-ZW9kXLa8.js} +1 -1
- package/dist/frontend/assets/{flowDb-7c981674-BSZyyVBf.js → flowDb-7c981674-B5ppx8EN.js} +1 -1
- package/dist/frontend/assets/{flowDb-956e92f1-BC3-CLkF.js → flowDb-956e92f1-Dqi00Wq-.js} +1 -1
- package/dist/frontend/assets/{flowDiagram-66a62f08-H57DAvmM.js → flowDiagram-66a62f08-v3Liu0m_.js} +1 -1
- package/dist/frontend/assets/{flowDiagram-cbd28bf7-Bw4Z2nBD.js → flowDiagram-cbd28bf7-DJ_YHRwa.js} +3 -3
- package/dist/frontend/assets/flowDiagram-v2-96b9c2cf-6vlgZ0Bg.js +1 -0
- package/dist/frontend/assets/flowDiagram-v2-ffc7f31a-FmnI78Vm.js +1 -0
- package/dist/frontend/assets/{flowchart-elk-definition-36e2d292-1kZNdf3X.js → flowchart-elk-definition-36e2d292-BleYul6b.js} +2 -2
- package/dist/frontend/assets/{flowchart-elk-definition-4a651766-DDhG2Esi.js → flowchart-elk-definition-4a651766-D6lLh4Ih.js} +1 -1
- package/dist/frontend/assets/{fr-FR-RHASNOE6-7xzoRwbd.js → fr-FR-RHASNOE6-CxLR66tH.js} +1 -1
- package/dist/frontend/assets/{ganttDiagram-04f9e578-CtUSsXCz.js → ganttDiagram-04f9e578-DJSOyr8B.js} +1 -1
- package/dist/frontend/assets/{ganttDiagram-c361ad54-K42AklFY.js → ganttDiagram-c361ad54-CJmbCLvp.js} +1 -1
- package/dist/frontend/assets/{gitGraphDiagram-21fc4d3e-uW6XA6Y6.js → gitGraphDiagram-21fc4d3e-DiRq_FJc.js} +6 -6
- package/dist/frontend/assets/{gitGraphDiagram-72cf32ee-CCNbhnBg.js → gitGraphDiagram-72cf32ee-MfvDzoAb.js} +1 -1
- package/dist/frontend/assets/{gl-ES-HMX3MZ6V-CXuDDwNP.js → gl-ES-HMX3MZ6V-CxWj2itK.js} +1 -1
- package/dist/frontend/assets/{graph-CYOmcSYN.js → graph-CT_r46y9.js} +1 -1
- package/dist/frontend/assets/{graph-o42dOfI7.js → graph-DJt_Vezo.js} +1 -1
- package/dist/frontend/assets/{he-IL-6SHJWFNN-O9dzh9EM.js → he-IL-6SHJWFNN-5v2WFGO3.js} +1 -1
- package/dist/frontend/assets/{hi-IN-IWLTKZ5I-DlrOXhWs.js → hi-IN-IWLTKZ5I-BJGbvgRu.js} +1 -1
- package/dist/frontend/assets/{hu-HU-A5ZG7DT2-C3eNg-uI.js → hu-HU-A5ZG7DT2-REQT2EcE.js} +1 -1
- package/dist/frontend/assets/{id-ID-SAP4L64H-6iM4pI5c.js → id-ID-SAP4L64H-aZWQYWdg.js} +1 -1
- package/dist/frontend/assets/{index-3862675e-DrvLhypC.js → index-3862675e-BgrvgbsM.js} +1 -1
- package/dist/frontend/assets/{index-6079d271-BgVTRqg2.js → index-6079d271-Cp8jFHTC.js} +1 -1
- package/dist/frontend/assets/{index-HkUXslJy.js → index-DBHHeSXy.js} +4 -4
- package/dist/frontend/assets/index-GTq6y6g6.js +349 -0
- package/dist/frontend/assets/{infoDiagram-4a4f5b27-ZxmAcaW1.js → infoDiagram-4a4f5b27-C1ZJJtWv.js} +3 -3
- package/dist/frontend/assets/{infoDiagram-f8f76790-Bn-PhiFG.js → infoDiagram-f8f76790-GeS0JKxo.js} +1 -1
- package/dist/frontend/assets/{it-IT-JPQ66NNP-B26NQzGp.js → it-IT-JPQ66NNP-EyeA2Ty1.js} +1 -1
- package/dist/frontend/assets/{ja-JP-DBVTYXUO-CB0fvnYJ.js → ja-JP-DBVTYXUO-BLcE45D9.js} +1 -1
- package/dist/frontend/assets/{journeyDiagram-29694f62-ggDKs06f.js → journeyDiagram-29694f62-4Z_lpK4g.js} +5 -5
- package/dist/frontend/assets/{journeyDiagram-49397b02-pdDS-n-z.js → journeyDiagram-49397b02-ChwU3Zo6.js} +1 -1
- package/dist/frontend/assets/{kaa-6HZHGXH3-YNdBdcwJ.js → kaa-6HZHGXH3-CkpTcX9X.js} +1 -1
- package/dist/frontend/assets/{kab-KAB-ZGHBKWFO-D86pwZO0.js → kab-KAB-ZGHBKWFO-CChq0y6o.js} +1 -1
- package/dist/frontend/assets/{kk-KZ-P5N5QNE5-CpG5oheM.js → kk-KZ-P5N5QNE5-CwtoTY4z.js} +1 -1
- package/dist/frontend/assets/{km-KH-HSX4SM5Z-DYOZ3Azw.js → km-KH-HSX4SM5Z-D26sdohj.js} +1 -1
- package/dist/frontend/assets/{ko-KR-MTYHY66A-BHorm6lC.js → ko-KR-MTYHY66A-DvnDcJQA.js} +1 -1
- package/dist/frontend/assets/{ku-TR-6OUDTVRD-CM9RgEHv.js → ku-TR-6OUDTVRD-qdHbLgKg.js} +1 -1
- package/dist/frontend/assets/{layout-DW9Qf-At.js → layout-C-wUeNvb.js} +1 -1
- package/dist/frontend/assets/{layout-CCtkxrAf.js → layout-YRLNN4au.js} +1 -1
- package/dist/frontend/assets/{line-DvZfgg9P.js → line-BEgMClKG.js} +1 -1
- package/dist/frontend/assets/{linear-FwFrGRfa.js → linear-DDHpSdYw.js} +1 -1
- package/dist/frontend/assets/{lt-LT-XHIRWOB4-DvriKXBj.js → lt-LT-XHIRWOB4-DT4LYe_d.js} +1 -1
- package/dist/frontend/assets/{lv-LV-5QDEKY6T-DzQpwk87.js → lv-LV-5QDEKY6T-Dbc3ivwT.js} +1 -1
- package/dist/frontend/assets/{mindmap-definition-ac74a2e8-DsRo8f2w.js → mindmap-definition-ac74a2e8-CY2RhWUN.js} +6 -6
- package/dist/frontend/assets/{mindmap-definition-fc14e90a-dQ9reluI.js → mindmap-definition-fc14e90a-VT4JDi6N.js} +1 -1
- package/dist/frontend/assets/{mr-IN-CRQNXWMA-C7RzxxP5.js → mr-IN-CRQNXWMA-D75p1fVc.js} +1 -1
- package/dist/frontend/assets/{my-MM-5M5IBNSE-B-RRuy29.js → my-MM-5M5IBNSE-DnEoBXyE.js} +1 -1
- package/dist/frontend/assets/{nb-NO-T6EIAALU-B47x16Ik.js → nb-NO-T6EIAALU-BL4ThJxl.js} +1 -1
- package/dist/frontend/assets/{nl-NL-IS3SIHDZ-BxAKoQne.js → nl-NL-IS3SIHDZ-u18nUblY.js} +1 -1
- package/dist/frontend/assets/{nn-NO-6E72VCQL-dfpbEDSZ.js → nn-NO-6E72VCQL-B9LJ0oXc.js} +1 -1
- package/dist/frontend/assets/{oc-FR-POXYY2M6-gv6geBjV.js → oc-FR-POXYY2M6-BKG5kIcO.js} +1 -1
- package/dist/frontend/assets/{pa-IN-N4M65BXN-CY30-qH7.js → pa-IN-N4M65BXN-CmpnjbkL.js} +1 -1
- package/dist/frontend/assets/{pica-DWYGHLQV.js → pica-BcpcM0v1.js} +1 -1
- package/dist/frontend/assets/{pie-CDiWh1rj.js → pie-Swzl5NrI.js} +1 -1
- package/dist/frontend/assets/{pieDiagram-421022e6-Bgy-duyf.js → pieDiagram-421022e6-ndz96BLe.js} +5 -5
- package/dist/frontend/assets/{pieDiagram-8a3498a8-DH7FsbPK.js → pieDiagram-8a3498a8-D5rcV68O.js} +1 -1
- package/dist/frontend/assets/{pl-PL-T2D74RX3-TrHugsIA.js → pl-PL-T2D74RX3-CrR66Rgj.js} +1 -1
- package/dist/frontend/assets/{pt-BR-5N22H2LF-CJxdFp9c.js → pt-BR-5N22H2LF-Crv7jZiH.js} +1 -1
- package/dist/frontend/assets/{pt-PT-UZXXM6DQ-CB-1q6YJ.js → pt-PT-UZXXM6DQ-Bkaa5ESR.js} +1 -1
- package/dist/frontend/assets/{quadrantDiagram-0957ecba-DcwYI1oi.js → quadrantDiagram-0957ecba-DOdyxeTP.js} +3 -3
- package/dist/frontend/assets/{quadrantDiagram-120e2f19-CvHU5a9v.js → quadrantDiagram-120e2f19-beQD7R1C.js} +1 -1
- package/dist/frontend/assets/relay-BIOL2uw2.js +1 -0
- package/dist/frontend/assets/{requirementDiagram-23d650b8-tdagN8HP.js → requirementDiagram-23d650b8-B2i-OB97.js} +1 -1
- package/dist/frontend/assets/{requirementDiagram-deff3bca-BMGM-fSI.js → requirementDiagram-deff3bca-beS-SvfY.js} +1 -1
- package/dist/frontend/assets/{ro-RO-JPDTUUEW-DQq9DBOd.js → ro-RO-JPDTUUEW-DsrnQm7K.js} +1 -1
- package/dist/frontend/assets/{ru-RU-B4JR7IUQ-CWX32rfh.js → ru-RU-B4JR7IUQ-DrnGGdUs.js} +1 -1
- package/dist/frontend/assets/{sankeyDiagram-04a897e0-3i6zWpY2.js → sankeyDiagram-04a897e0-CVad45bN.js} +1 -1
- package/dist/frontend/assets/{sankeyDiagram-23345273-ncj1Ol7S.js → sankeyDiagram-23345273-ghWBXXF2.js} +1 -1
- package/dist/frontend/assets/{selectAll-DJwesbwT.js → selectAll-XplaO988.js} +1 -1
- package/dist/frontend/assets/{sequenceDiagram-17ac3bff-ChyKKRZA.js → sequenceDiagram-17ac3bff-DBI-EdWx.js} +1 -1
- package/dist/frontend/assets/{sequenceDiagram-704730f1-D57_wP9k.js → sequenceDiagram-704730f1-BnJ__mBt.js} +1 -1
- package/dist/frontend/assets/{si-LK-N5RQ5JYF-Lkc5ZxyG.js → si-LK-N5RQ5JYF-BxAwuRM5.js} +1 -1
- package/dist/frontend/assets/{sk-SK-C5VTKIMK-DyvYXjqZ.js → sk-SK-C5VTKIMK-CnDyiLRf.js} +1 -1
- package/dist/frontend/assets/{sl-SI-NN7IZMDC-D_MvP9Rh.js → sl-SI-NN7IZMDC-BXHXIdFA.js} +1 -1
- package/dist/frontend/assets/{stateDiagram-587899a1-OjFTnFLS.js → stateDiagram-587899a1-D3Ahxsgc.js} +1 -1
- package/dist/frontend/assets/{stateDiagram-9c5f0230-BzU36S5C.js → stateDiagram-9c5f0230-8XbLWvC0.js} +1 -1
- package/dist/frontend/assets/{stateDiagram-v2-51a3dcff-CfX1qo7U.js → stateDiagram-v2-51a3dcff-Cqf-MUGD.js} +1 -1
- package/dist/frontend/assets/{stateDiagram-v2-d93cdb3a-BH7Ud4sU.js → stateDiagram-v2-d93cdb3a-DjGrud9D.js} +1 -1
- package/dist/frontend/assets/{styles-2ab5d517-CA8x9Nh5.js → styles-2ab5d517-B4qdHOgu.js} +3 -3
- package/dist/frontend/assets/{styles-5f03d8d2-BnO2pLhV.js → styles-5f03d8d2-DOD2v5V8.js} +3 -3
- package/dist/frontend/assets/{styles-6aaf32cf-COnot1ea.js → styles-6aaf32cf-bP3XXcmf.js} +1 -1
- package/dist/frontend/assets/{styles-9a916d00-C3QkBgTF.js → styles-9a916d00-QLeuL_Dy.js} +1 -1
- package/dist/frontend/assets/{styles-c10674c1-CPAG2_rr.js → styles-c10674c1-Lpvh1u4f.js} +1 -1
- package/dist/frontend/assets/{styles-edf9a4b0-B8Q9fyu0.js → styles-edf9a4b0-D4W9aPm7.js} +1 -1
- package/dist/frontend/assets/subset-shared.chunk.js +9 -9
- package/dist/frontend/assets/subset-worker.chunk.js +1 -1
- package/dist/frontend/assets/{sv-SE-XGPEYMSR-t6voGQSI.js → sv-SE-XGPEYMSR-YrCQQBuo.js} +1 -1
- package/dist/frontend/assets/{svgDrawCommon-08f97a94-CdT21LWf.js → svgDrawCommon-08f97a94-CwNv3PjS.js} +1 -1
- package/dist/frontend/assets/{svgDrawCommon-3ba9043b-D1MU7jAE.js → svgDrawCommon-3ba9043b-DZbT0Bqu.js} +1 -1
- package/dist/frontend/assets/{ta-IN-2NMHFXQM-7VmfDDyV.js → ta-IN-2NMHFXQM-qR82aBSW.js} +1 -1
- package/dist/frontend/assets/{th-TH-HPSO5L25-B5rLEY9P.js → th-TH-HPSO5L25-C65V7hE5.js} +1 -1
- package/dist/frontend/assets/{timeline-definition-7e6b55e7-BIcL44O_.js → timeline-definition-7e6b55e7-GkPy3QeG.js} +3 -3
- package/dist/frontend/assets/{timeline-definition-85554ec2-TgrYYwpU.js → timeline-definition-85554ec2-CCdkBaC0.js} +3 -3
- package/dist/frontend/assets/{tr-TR-DEFEU3FU-0CgOHXTn.js → tr-TR-DEFEU3FU-CFzbwAKV.js} +1 -1
- package/dist/frontend/assets/{uk-UA-QMV73CPH-CzSFsIsx.js → uk-UA-QMV73CPH-ePt5WVz3.js} +1 -1
- package/dist/frontend/assets/{union-CnQAJu0l.js → union-CVZobYBh.js} +1 -1
- package/dist/frontend/assets/{vi-VN-M7AON7JQ-Bhx3rYU9.js → vi-VN-M7AON7JQ-CaPKykgJ.js} +1 -1
- package/dist/frontend/assets/{xychartDiagram-b6496bcd-BMKDop6v.js → xychartDiagram-b6496bcd-CV5WRc81.js} +4 -4
- package/dist/frontend/assets/{xychartDiagram-e933f94c-DAWithrN.js → xychartDiagram-e933f94c-BH-ySdQf.js} +1 -1
- package/dist/frontend/assets/{zh-CN-LNUGB5OW-Br52_wH4.js → zh-CN-LNUGB5OW-CK8AEj8o.js} +1 -1
- package/dist/frontend/assets/{zh-HK-E62DVLB3-Cj6mnIQ9.js → zh-HK-E62DVLB3-CUINiFgH.js} +1 -1
- package/dist/frontend/assets/{zh-TW-RAJ6MFWO-yLEsVBbC.js → zh-TW-RAJ6MFWO-BEBY7iJR.js} +1 -1
- package/dist/frontend/assets/zipObject-W8SLG3F1.js +1 -0
- package/dist/frontend/index.html +168 -235
- package/dist/{index.d.ts → mcp.d.ts} +1 -1
- package/dist/mcp.d.ts.map +1 -0
- package/dist/mcp.js +1183 -0
- package/dist/mcp.js.map +1 -0
- package/package.json +19 -34
- package/skills/excalidraw-skill/SKILL.md +42 -55
- package/skills/excalidraw-skill/references/cheatsheet.md +23 -56
- package/skills/excalidraw-skill/scripts/clear-canvas.cjs +9 -32
- package/skills/excalidraw-skill/scripts/create-element.cjs +18 -61
- package/skills/excalidraw-skill/scripts/delete-element.cjs +12 -42
- package/skills/excalidraw-skill/scripts/export-elements.cjs +17 -44
- package/skills/excalidraw-skill/scripts/gh-helper.cjs +58 -0
- package/skills/excalidraw-skill/scripts/healthcheck.cjs +8 -29
- package/skills/excalidraw-skill/scripts/import-elements.cjs +20 -70
- package/skills/excalidraw-skill/scripts/update-element.cjs +19 -63
- package/tsconfig.json +3 -2
- package/vite.config.js +3 -12
- package/dist/frontend/assets/arc-BI_FJWE7.js +0 -1
- package/dist/frontend/assets/channel-BqCiG5n3.js +0 -1
- package/dist/frontend/assets/classDiagram-v2-d5a6b087-l-GglywH.js +0 -2
- package/dist/frontend/assets/classDiagram-v2-f2320105-B_TY1zoc.js +0 -2
- package/dist/frontend/assets/clone-B6Jqcrku.js +0 -1
- package/dist/frontend/assets/flowDiagram-v2-96b9c2cf-CBjbm_oB.js +0 -1
- package/dist/frontend/assets/flowDiagram-v2-ffc7f31a-CoQufPp2.js +0 -1
- package/dist/frontend/assets/index-D-cr7jpJ.js +0 -349
- package/dist/frontend/assets/zipObject-BeXj5PVd.js +0 -1
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js +0 -2305
- package/dist/index.js.map +0 -1
- package/dist/remote.d.ts +0 -5
- package/dist/remote.d.ts.map +0 -1
- package/dist/remote.js +0 -129
- package/dist/remote.js.map +0 -1
- package/dist/server.d.ts +0 -4
- package/dist/server.d.ts.map +0 -1
- package/dist/server.js +0 -1217
- package/dist/server.js.map +0 -1
- package/dist/target.d.ts +0 -41
- package/dist/target.d.ts.map +0 -1
- package/dist/target.js +0 -244
- package/dist/target.js.map +0 -1
- package/dist/types.d.ts +0 -228
- package/dist/types.d.ts.map +0 -1
- package/dist/types.js +0 -53
- package/dist/types.js.map +0 -1
- package/dist/utils/auth.d.ts +0 -15
- package/dist/utils/auth.d.ts.map +0 -1
- package/dist/utils/auth.js +0 -68
- package/dist/utils/auth.js.map +0 -1
- package/dist/utils/github.d.ts +0 -26
- package/dist/utils/github.d.ts.map +0 -1
- package/dist/utils/github.js +0 -111
- package/dist/utils/github.js.map +0 -1
- package/dist/utils/logger.d.ts +0 -4
- package/dist/utils/logger.d.ts.map +0 -1
- package/dist/utils/logger.js +0 -25
- package/dist/utils/logger.js.map +0 -1
- package/dist/utils/r2store.d.ts +0 -19
- package/dist/utils/r2store.d.ts.map +0 -1
- package/dist/utils/r2store.js +0 -75
- package/dist/utils/r2store.js.map +0 -1
- package/frontend/index.html +0 -338
- package/frontend/src/App.tsx +0 -1091
- package/frontend/src/main.tsx +0 -15
- package/frontend/src/utils/ghSync.ts +0 -171
- package/frontend/src/utils/mermaidConverter.ts +0 -49
- package/frontend/src/utils/webmcp.ts +0 -285
- package/scripts/check-local-bind.mjs +0 -164
- package/scripts/postinstall.mjs +0 -23
- package/scripts/publish-pages.sh +0 -39
- package/scripts/seed-r2.mjs +0 -9
- package/src/cli.ts +0 -559
- package/src/index.ts +0 -2557
- package/src/remote.ts +0 -92
- package/src/server.ts +0 -1349
- package/src/target.ts +0 -208
- package/src/types.ts +0 -338
- package/src/utils/auth.ts +0 -61
- package/src/utils/github.ts +0 -93
- package/src/utils/logger.ts +0 -35
- package/src/utils/r2store.ts +0 -76
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
|
-
|
|
41
|
+
Remote-only: GitHub is the canvas. No local server, no ports.
|
|
42
42
|
|
|
43
|
-
-
|
|
44
|
-
- MCP server:
|
|
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
|
-
|
|
74
|
-
|
|
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. **
|
|
81
|
-
3.
|
|
82
|
-
4.
|
|
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
|
-
|
|
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
|
-
|
|
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 `
|
|
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
|
-
| `
|
|
126
|
-
| `
|
|
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
|
-
"
|
|
142
|
-
"command": "
|
|
143
|
-
"args": ["/
|
|
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
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
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
|
|
178
|
-
claude mcp remove
|
|
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
|
-
"
|
|
192
|
-
"command": "
|
|
193
|
-
"args": ["/
|
|
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
|
|
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
|
|
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
|
-
"
|
|
185
|
+
"excalidrop": {
|
|
235
186
|
"type": "local",
|
|
236
|
-
"command": ["
|
|
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
|
-
"
|
|
258
|
-
"command": "
|
|
259
|
-
"args": ["/
|
|
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
|
-
- **
|
|
274
|
-
- **
|
|
275
|
-
- **
|
|
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
|
-
|
|
258
|
+
Skill scripts talk to the remote canvas via `gh` auth (no local server):
|
|
317
259
|
|
|
318
260
|
```bash
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
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 (
|
|
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
|
-
###
|
|
292
|
+
### Status
|
|
351
293
|
|
|
352
294
|
```bash
|
|
353
|
-
|
|
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
|
-
-
|
|
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
|
-
###
|
|
313
|
+
### Viewer screenshots
|
|
383
314
|
|
|
384
|
-
|
|
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
|
-
-
|
|
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
CHANGED
|
@@ -1,24 +1,3 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
/**
|
|
3
|
-
* excalidrop — per-project Excalidraw canvas + MCP server setup.
|
|
4
|
-
*
|
|
5
|
-
* Modelled on the `chrome-devtools-mcp` install pattern (`npx -y <pkg>` +
|
|
6
|
-
* `mcpServers` JSON), with one addition: per-project dynamic port selection
|
|
7
|
-
* so multiple checkouts can run their own canvas concurrently.
|
|
8
|
-
*
|
|
9
|
-
* How the dynamic port works:
|
|
10
|
-
* - `excalidrop init` picks a free port (default scan from 3030) and writes
|
|
11
|
-
* it to `.excalidrop.json` in the project root.
|
|
12
|
-
* - `excalidrop mcp` (what the AI agent runs via stdio) resolves that same
|
|
13
|
-
* file by walking up from cwd, so each project transparently gets its own
|
|
14
|
-
* canvas URL with nothing hardcoded in the agent config.
|
|
15
|
-
*
|
|
16
|
-
* Commands:
|
|
17
|
-
* init pick a port, write .excalidrop.json + .mcp.json, offer agent install
|
|
18
|
-
* up start the canvas server on this project's port
|
|
19
|
-
* mcp run the MCP stdio server pointed at this project's canvas (for agents)
|
|
20
|
-
* status show resolved port + canvas health
|
|
21
|
-
* add print / run AI-agent install commands
|
|
22
|
-
*/
|
|
23
2
|
export {};
|
|
24
3
|
//# sourceMappingURL=cli.d.ts.map
|
package/dist/cli.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../
|
|
1
|
+
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../cli.ts"],"names":[],"mappings":""}
|