excalidrop 0.1.4 → 0.2.2
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 +70 -125
- package/dist/cli.d.ts +7 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +936 -389
- package/dist/cli.js.map +1 -1
- package/dist/frontend/assets/{advancedFormat-tiBAHNGo.js → advancedFormat-Be4KR5mp.js} +1 -1
- package/dist/frontend/assets/{ar-SA-G6X2FPQ2-DVxiWV5Z.js → ar-SA-G6X2FPQ2-B6ekz3Ba.js} +1 -1
- package/dist/frontend/assets/arc-DlgXyGPj.js +1 -0
- package/dist/frontend/assets/{az-AZ-76LH7QW2-Z_2BqDo-.js → az-AZ-76LH7QW2-01MDUsF0.js} +1 -1
- package/dist/frontend/assets/{bg-BG-XCXSNQG7-DrxGJZOG.js → bg-BG-XCXSNQG7--fArB8Ao.js} +1 -1
- package/dist/frontend/assets/{blockDiagram-38ab4fdb-CDnkTFfP.js → blockDiagram-38ab4fdb-CmsVhOwi.js} +1 -1
- package/dist/frontend/assets/{blockDiagram-68f4deed-Bb0W6mxN.js → blockDiagram-68f4deed-DU_wNYlO.js} +6 -6
- package/dist/frontend/assets/{bn-BD-2XOGV67Q-BkGJ-w8k.js → bn-BD-2XOGV67Q-h8juqzfQ.js} +1 -1
- package/dist/frontend/assets/{c4Diagram-15b5d702-ByRV0tka.js → c4Diagram-15b5d702-ClZalz0L.js} +1 -1
- package/dist/frontend/assets/{c4Diagram-3d4e48cf-QSVnzYYK.js → c4Diagram-3d4e48cf-BkFVM0tP.js} +1 -1
- package/dist/frontend/assets/{ca-ES-6MX7JW3Y-BBJvOPE1.js → ca-ES-6MX7JW3Y-DMBR3qVX.js} +1 -1
- package/dist/frontend/assets/channel-BxFR7168.js +1 -0
- package/dist/frontend/assets/{classDiagram-70f12bd4-DDFBNGUt.js → classDiagram-70f12bd4-BXAJnakg.js} +1 -1
- package/dist/frontend/assets/{classDiagram-d40c83e7-cgC3s7Nz.js → classDiagram-d40c83e7-DVhipa45.js} +1 -1
- package/dist/frontend/assets/classDiagram-v2-d5a6b087-CiHMsbhj.js +2 -0
- package/dist/frontend/assets/{classDiagram-v2-f2320105-Dtywkpeg.js → classDiagram-v2-f2320105-1CqIxWOB.js} +2 -2
- package/dist/frontend/assets/clone-CMl85WSi.js +1 -0
- package/dist/frontend/assets/{createText-2e5e7dd3-CqY00v-4.js → createText-2e5e7dd3-D3kSz3YE.js} +1 -1
- package/dist/frontend/assets/{createText-d213de94-D59sBfqq.js → createText-d213de94-DvJeLlQX.js} +4 -4
- package/dist/frontend/assets/{cs-CZ-2BRQDIVT-CK09MAsg.js → cs-CZ-2BRQDIVT-BUcdPrAr.js} +1 -1
- package/dist/frontend/assets/{cytoscape-cose-bilkent-CKy_tuGZ.js → cytoscape-cose-bilkent-CKoSm_2z.js} +1 -1
- package/dist/frontend/assets/{da-DK-5WZEPLOC-V4hdLKuT.js → da-DK-5WZEPLOC-C1nkchuC.js} +1 -1
- package/dist/frontend/assets/{de-DE-XR44H4JA-Dw8qkP9g.js → de-DE-XR44H4JA-DO2_bO1X.js} +1 -1
- package/dist/frontend/assets/{edges-332bd1c7-D-u0KMZB.js → edges-332bd1c7-C5qM1sDU.js} +1 -1
- package/dist/frontend/assets/{edges-e0da2a9e-B3UFqLqY.js → edges-e0da2a9e-BRt7qomS.js} +1 -1
- package/dist/frontend/assets/{el-GR-BZB4AONW-BUdBQbYg.js → el-GR-BZB4AONW-CrjSdaU2.js} +1 -1
- package/dist/frontend/assets/{elk.bundled-BZA3Xcoo.js → elk.bundled-Dmec6Rq6.js} +1 -1
- package/dist/frontend/assets/{erDiagram-880f2ed8-CNxm7e1x.js → erDiagram-880f2ed8-BI7kP523.js} +4 -4
- package/dist/frontend/assets/{erDiagram-9861fffd-C2u_ziAM.js → erDiagram-9861fffd-DMyCDrgI.js} +1 -1
- package/dist/frontend/assets/{es-ES-U4NZUMDT-DS0FAZqX.js → es-ES-U4NZUMDT-rrdjPi-M.js} +1 -1
- package/dist/frontend/assets/{eu-ES-A7QVB2H4-D-D5uidc.js → eu-ES-A7QVB2H4-uYn3S3D5.js} +1 -1
- package/dist/frontend/assets/{fa-IR-HGAKTJCU-mAW_2-jg.js → fa-IR-HGAKTJCU-DWW_BVFR.js} +1 -1
- package/dist/frontend/assets/{fi-FI-Z5N7JZ37-B9mW6nxS.js → fi-FI-Z5N7JZ37-CMXxeZ4W.js} +1 -1
- package/dist/frontend/assets/{flowDb-7c981674-6JB2gd0I.js → flowDb-7c981674-Dsj6xMzr.js} +1 -1
- package/dist/frontend/assets/{flowDb-956e92f1-BbpkWRi7.js → flowDb-956e92f1-26g7kJju.js} +1 -1
- package/dist/frontend/assets/{flowDiagram-66a62f08-DrhrQuXc.js → flowDiagram-66a62f08-C9eQZtdf.js} +1 -1
- package/dist/frontend/assets/{flowDiagram-cbd28bf7-BmNY7bvJ.js → flowDiagram-cbd28bf7-D051xFrI.js} +3 -3
- package/dist/frontend/assets/flowDiagram-v2-96b9c2cf-DIa4RdMh.js +1 -0
- package/dist/frontend/assets/flowDiagram-v2-ffc7f31a-CnvFT8HV.js +1 -0
- package/dist/frontend/assets/{flowchart-elk-definition-36e2d292-4G1YiIlk.js → flowchart-elk-definition-36e2d292-C9fsvhV-.js} +2 -2
- package/dist/frontend/assets/{flowchart-elk-definition-4a651766-Cm94SrrQ.js → flowchart-elk-definition-4a651766-BkVNuJOw.js} +1 -1
- package/dist/frontend/assets/{fr-FR-RHASNOE6-BXnmUxTA.js → fr-FR-RHASNOE6-DIfK_rjW.js} +1 -1
- package/dist/frontend/assets/{ganttDiagram-04f9e578-X0BweAnG.js → ganttDiagram-04f9e578-CZeF2a4Y.js} +1 -1
- package/dist/frontend/assets/{ganttDiagram-c361ad54-D3vxZ5MQ.js → ganttDiagram-c361ad54-DbkIZ-wU.js} +1 -1
- package/dist/frontend/assets/{gitGraphDiagram-21fc4d3e-wznrpRWn.js → gitGraphDiagram-21fc4d3e-CLqlSEuE.js} +6 -6
- package/dist/frontend/assets/{gitGraphDiagram-72cf32ee-B9zCS3Pw.js → gitGraphDiagram-72cf32ee-Cvf9uYWB.js} +1 -1
- package/dist/frontend/assets/{gl-ES-HMX3MZ6V-CrUx-ab6.js → gl-ES-HMX3MZ6V-CCxCH2oK.js} +1 -1
- package/dist/frontend/assets/{graph-BQZ6SIVr.js → graph-MptL1QoF.js} +1 -1
- package/dist/frontend/assets/{graph-Cda8xSTx.js → graph-Mzuu2QFH.js} +1 -1
- package/dist/frontend/assets/{he-IL-6SHJWFNN-D33eaw6-.js → he-IL-6SHJWFNN-CJuJutJZ.js} +1 -1
- package/dist/frontend/assets/{hi-IN-IWLTKZ5I-DEnStF-g.js → hi-IN-IWLTKZ5I-BORPH6vU.js} +1 -1
- package/dist/frontend/assets/{hu-HU-A5ZG7DT2-BjH2w8Sn.js → hu-HU-A5ZG7DT2-Dr7UDbjo.js} +1 -1
- package/dist/frontend/assets/{id-ID-SAP4L64H-Bc6R-JEz.js → id-ID-SAP4L64H-D0Widkq7.js} +1 -1
- package/dist/frontend/assets/{index-3862675e-CpYfS3Db.js → index-3862675e-DVT5-vN2.js} +1 -1
- package/dist/frontend/assets/{index-6079d271-Y2bgyRpa.js → index-6079d271-R4KRnW5Z.js} +1 -1
- package/dist/frontend/assets/{index-D7eYnAQp.js → index-B45XzZiR.js} +4 -4
- package/dist/frontend/assets/index-Bd-8869C.js +349 -0
- package/dist/frontend/assets/{infoDiagram-4a4f5b27-Bm3Oq-Rq.js → infoDiagram-4a4f5b27-BvY1qS17.js} +3 -3
- package/dist/frontend/assets/{infoDiagram-f8f76790-oNVitBKM.js → infoDiagram-f8f76790-D60YvG33.js} +1 -1
- package/dist/frontend/assets/{it-IT-JPQ66NNP-BcxQABF2.js → it-IT-JPQ66NNP-C08Vu0BG.js} +1 -1
- package/dist/frontend/assets/{ja-JP-DBVTYXUO-D1zIM-nt.js → ja-JP-DBVTYXUO-Ciu7LaRi.js} +1 -1
- package/dist/frontend/assets/{journeyDiagram-29694f62-CamPk_3P.js → journeyDiagram-29694f62-DvrnJXsd.js} +5 -5
- package/dist/frontend/assets/{journeyDiagram-49397b02-D6w3tLtf.js → journeyDiagram-49397b02-Dy9LU86E.js} +1 -1
- package/dist/frontend/assets/{kaa-6HZHGXH3-CoILysVg.js → kaa-6HZHGXH3-GhGTIjpu.js} +1 -1
- package/dist/frontend/assets/{kab-KAB-ZGHBKWFO-B9ZbybBt.js → kab-KAB-ZGHBKWFO-B3q4BqYw.js} +1 -1
- package/dist/frontend/assets/{kk-KZ-P5N5QNE5-Dxi4GIQ7.js → kk-KZ-P5N5QNE5-GWoLZvco.js} +1 -1
- package/dist/frontend/assets/{km-KH-HSX4SM5Z-DaJ7EtO2.js → km-KH-HSX4SM5Z-CnAQJCYr.js} +1 -1
- package/dist/frontend/assets/{ko-KR-MTYHY66A-DG57Ah12.js → ko-KR-MTYHY66A-B2Rh9krp.js} +1 -1
- package/dist/frontend/assets/{ku-TR-6OUDTVRD-DnDf9E8a.js → ku-TR-6OUDTVRD-C27elmON.js} +1 -1
- package/dist/frontend/assets/{layout-Drr-66M9.js → layout-D1hl6oKi.js} +1 -1
- package/dist/frontend/assets/{layout-BsWfhUAF.js → layout-c-hOA8zE.js} +1 -1
- package/dist/frontend/assets/{line-DwQObOhP.js → line-DtMz1ssZ.js} +1 -1
- package/dist/frontend/assets/{linear-C36MjJps.js → linear-D-Y4WtO_.js} +1 -1
- package/dist/frontend/assets/{lt-LT-XHIRWOB4-D_zqS0yg.js → lt-LT-XHIRWOB4-B6jd693w.js} +1 -1
- package/dist/frontend/assets/{lv-LV-5QDEKY6T-owIsIh1b.js → lv-LV-5QDEKY6T-sXB-8i6R.js} +1 -1
- package/dist/frontend/assets/{mindmap-definition-ac74a2e8-Cf9JbrBJ.js → mindmap-definition-ac74a2e8-CawO9I_f.js} +6 -6
- package/dist/frontend/assets/{mindmap-definition-fc14e90a-BpsNCNCp.js → mindmap-definition-fc14e90a-CXMNA68v.js} +4 -4
- package/dist/frontend/assets/{mr-IN-CRQNXWMA-CS9XUj74.js → mr-IN-CRQNXWMA-BJ6QSiPi.js} +1 -1
- package/dist/frontend/assets/{my-MM-5M5IBNSE-BKB060k9.js → my-MM-5M5IBNSE-BMdOIRP5.js} +1 -1
- package/dist/frontend/assets/{nb-NO-T6EIAALU-CkmLUrvm.js → nb-NO-T6EIAALU-BVG6JUMN.js} +1 -1
- package/dist/frontend/assets/{nl-NL-IS3SIHDZ-DdiLyJoz.js → nl-NL-IS3SIHDZ-ZprCvTYR.js} +1 -1
- package/dist/frontend/assets/{nn-NO-6E72VCQL-Yevp6f_Y.js → nn-NO-6E72VCQL-CcljFAGy.js} +1 -1
- package/dist/frontend/assets/{oc-FR-POXYY2M6-D_M6GHup.js → oc-FR-POXYY2M6-zCuu6Ns2.js} +1 -1
- package/dist/frontend/assets/{pa-IN-N4M65BXN-1vuACN9n.js → pa-IN-N4M65BXN-D_iftL9v.js} +1 -1
- package/dist/frontend/assets/{pica-DDDx0iqx.js → pica-DsW4eP6T.js} +1 -1
- package/dist/frontend/assets/{pie-CFIpuQMO.js → pie-U_uHwWsL.js} +1 -1
- package/dist/frontend/assets/{pieDiagram-421022e6-DO7e_Qgw.js → pieDiagram-421022e6-naaI7HiE.js} +5 -5
- package/dist/frontend/assets/{pieDiagram-8a3498a8-BEoqChXo.js → pieDiagram-8a3498a8-m6nTf1O_.js} +1 -1
- package/dist/frontend/assets/{pl-PL-T2D74RX3-Cc6Q5nSh.js → pl-PL-T2D74RX3-CRQQfZUe.js} +1 -1
- package/dist/frontend/assets/{pt-BR-5N22H2LF-3eEiAax3.js → pt-BR-5N22H2LF-DLvfG7RR.js} +1 -1
- package/dist/frontend/assets/{pt-PT-UZXXM6DQ-CgnF0Le7.js → pt-PT-UZXXM6DQ-Chkg6-JC.js} +1 -1
- package/dist/frontend/assets/{quadrantDiagram-0957ecba-C1Eo-ZUY.js → quadrantDiagram-0957ecba-BJR82kAx.js} +3 -3
- package/dist/frontend/assets/{quadrantDiagram-120e2f19-Bdfsl_O7.js → quadrantDiagram-120e2f19-CsWgLp5e.js} +1 -1
- package/dist/frontend/assets/relay-BSVGqyIy.js +2 -0
- package/dist/frontend/assets/{requirementDiagram-23d650b8-DiOK6QW3.js → requirementDiagram-23d650b8-CHmg-ycX.js} +1 -1
- package/dist/frontend/assets/{requirementDiagram-deff3bca-BDJ-7T4h.js → requirementDiagram-deff3bca-LIsyxsZZ.js} +1 -1
- package/dist/frontend/assets/{ro-RO-JPDTUUEW-CbJ3IB7a.js → ro-RO-JPDTUUEW-B_a5A5-x.js} +1 -1
- package/dist/frontend/assets/{ru-RU-B4JR7IUQ-PQGmeGG4.js → ru-RU-B4JR7IUQ-CY5sI1Ru.js} +1 -1
- package/dist/frontend/assets/{sankeyDiagram-04a897e0-DV25bgN2.js → sankeyDiagram-04a897e0-DN5e16d0.js} +1 -1
- package/dist/frontend/assets/{sankeyDiagram-23345273-szSb_Sei.js → sankeyDiagram-23345273-BBjQCtHz.js} +1 -1
- package/dist/frontend/assets/{selectAll-DsrPvhqV.js → selectAll-Dcq-dC_E.js} +1 -1
- package/dist/frontend/assets/{sequenceDiagram-17ac3bff-Dg88bSlc.js → sequenceDiagram-17ac3bff-CIXyQiN6.js} +1 -1
- package/dist/frontend/assets/{sequenceDiagram-704730f1-DRIjLCxx.js → sequenceDiagram-704730f1-BmDwBhsF.js} +1 -1
- package/dist/frontend/assets/{si-LK-N5RQ5JYF-BtIIudm3.js → si-LK-N5RQ5JYF-DEPKL_1i.js} +1 -1
- package/dist/frontend/assets/{sk-SK-C5VTKIMK-CIwXticU.js → sk-SK-C5VTKIMK-XqrGDM2K.js} +1 -1
- package/dist/frontend/assets/{sl-SI-NN7IZMDC-CXEdg57y.js → sl-SI-NN7IZMDC-Dia3d1Yy.js} +1 -1
- package/dist/frontend/assets/{stateDiagram-587899a1-BwRwgRo6.js → stateDiagram-587899a1-CY1BCaUa.js} +1 -1
- package/dist/frontend/assets/{stateDiagram-9c5f0230-C8n96rER.js → stateDiagram-9c5f0230-gyjWQtSe.js} +1 -1
- package/dist/frontend/assets/{stateDiagram-v2-51a3dcff-B7e5E4J7.js → stateDiagram-v2-51a3dcff-CAIiXqRE.js} +1 -1
- package/dist/frontend/assets/{stateDiagram-v2-d93cdb3a-B18iZQLw.js → stateDiagram-v2-d93cdb3a-DvUpzRiQ.js} +1 -1
- package/dist/frontend/assets/{styles-2ab5d517-CfWubwio.js → styles-2ab5d517-BE3yBf4Z.js} +3 -3
- package/dist/frontend/assets/{styles-5f03d8d2-C-_n19AB.js → styles-5f03d8d2-CGBEZiW_.js} +3 -3
- package/dist/frontend/assets/{styles-6aaf32cf-Dh-DHkVP.js → styles-6aaf32cf-JdIhb4_Y.js} +1 -1
- package/dist/frontend/assets/{styles-9a916d00-Boy0hUEG.js → styles-9a916d00-DRmxoyEF.js} +1 -1
- package/dist/frontend/assets/{styles-c10674c1-BfxiK3Ns.js → styles-c10674c1-C3TEvIjw.js} +1 -1
- package/dist/frontend/assets/{styles-edf9a4b0-T7mKViRF.js → styles-edf9a4b0-B_FeyXdP.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-dVrUAqld.js → sv-SE-XGPEYMSR-CBrvnOWh.js} +1 -1
- package/dist/frontend/assets/{svgDrawCommon-08f97a94-fsWk6SQc.js → svgDrawCommon-08f97a94-DI4ZG6xI.js} +1 -1
- package/dist/frontend/assets/{svgDrawCommon-3ba9043b-BJ8X3qS-.js → svgDrawCommon-3ba9043b-Dl5HsA0X.js} +1 -1
- package/dist/frontend/assets/{ta-IN-2NMHFXQM-CtVVZfIT.js → ta-IN-2NMHFXQM-DGYl9sGK.js} +1 -1
- package/dist/frontend/assets/{th-TH-HPSO5L25-Do90CyDN.js → th-TH-HPSO5L25-Bq3K3L0F.js} +1 -1
- package/dist/frontend/assets/{timeline-definition-7e6b55e7-D_iHA485.js → timeline-definition-7e6b55e7-DWL-fZtL.js} +3 -3
- package/dist/frontend/assets/{timeline-definition-85554ec2-nhT8QMsO.js → timeline-definition-85554ec2-C14kwDFd.js} +1 -1
- package/dist/frontend/assets/{tr-TR-DEFEU3FU-MfR-IQke.js → tr-TR-DEFEU3FU-CSwI35xw.js} +1 -1
- package/dist/frontend/assets/{uk-UA-QMV73CPH-CPet8B1O.js → uk-UA-QMV73CPH-Dxy7prmb.js} +1 -1
- package/dist/frontend/assets/{union-BgYwhB7T.js → union-DQ7m6Pel.js} +1 -1
- package/dist/frontend/assets/{vi-VN-M7AON7JQ-3HD06T_8.js → vi-VN-M7AON7JQ-BNyYTgjT.js} +1 -1
- package/dist/frontend/assets/{xychartDiagram-b6496bcd-D5vSaFT2.js → xychartDiagram-b6496bcd-DWKYL0ZD.js} +4 -4
- package/dist/frontend/assets/{xychartDiagram-e933f94c-DLIHXsUi.js → xychartDiagram-e933f94c-Bw4brW9l.js} +1 -1
- package/dist/frontend/assets/youtubeResume-DPG81gOQ.js +1 -0
- package/dist/frontend/assets/{zh-CN-LNUGB5OW-t2RyWPw2.js → zh-CN-LNUGB5OW-BNhZCPEt.js} +1 -1
- package/dist/frontend/assets/{zh-HK-E62DVLB3-Bj22hc7e.js → zh-HK-E62DVLB3-D_rDALSq.js} +1 -1
- package/dist/frontend/assets/{zh-TW-RAJ6MFWO-CBRhqhU1.js → zh-TW-RAJ6MFWO-rUlbmCTA.js} +1 -1
- package/dist/frontend/assets/zipObject-Db5-6vIz.js +1 -0
- package/dist/frontend/index.html +172 -236
- 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 -10
- package/dist/frontend/assets/arc-Cc3ncJ1n.js +0 -1
- package/dist/frontend/assets/channel-BQSIb3i3.js +0 -1
- package/dist/frontend/assets/classDiagram-v2-d5a6b087-BgB8AG2e.js +0 -2
- package/dist/frontend/assets/clone-BoZziNL9.js +0 -1
- package/dist/frontend/assets/flowDiagram-v2-96b9c2cf-Z3H2d3Wj.js +0 -1
- package/dist/frontend/assets/flowDiagram-v2-ffc7f31a-CIQOMghC.js +0 -1
- package/dist/frontend/assets/index-DIz4WrSB.js +0 -349
- package/dist/frontend/assets/zipObject-DMfHW2o8.js +0 -1
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js +0 -2279
- 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 -1208
- package/dist/server.js.map +0 -1
- package/dist/target.d.ts +0 -38
- package/dist/target.d.ts.map +0 -1
- package/dist/target.js +0 -225
- 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 -45
- package/dist/types.js.map +0 -1
- package/dist/utils/auth.d.ts +0 -14
- package/dist/utils/auth.d.ts.map +0 -1
- package/dist/utils/auth.js +0 -67
- package/dist/utils/auth.js.map +0 -1
- package/dist/utils/github.d.ts +0 -24
- package/dist/utils/github.d.ts.map +0 -1
- package/dist/utils/github.js +0 -132
- 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 -12
- 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/drop.png +0 -0
- package/frontend/index.html +0 -339
- package/frontend/src/App.tsx +0 -1091
- package/frontend/src/main.tsx +0 -15
- package/frontend/src/utils/ghSync.ts +0 -234
- package/frontend/src/utils/mermaidConverter.ts +0 -43
- package/frontend/src/utils/webmcp.ts +0 -265
- 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 -528
- package/src/index.ts +0 -2538
- package/src/remote.ts +0 -92
- package/src/server.ts +0 -1349
- package/src/target.ts +0 -198
- package/src/types.ts +0 -336
- package/src/utils/auth.ts +0 -61
- package/src/utils/github.ts +0 -121
- package/src/utils/logger.ts +0 -35
- 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
|
-
|
|
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,57 @@ 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** (recommended from visibility: 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
|
-
|
|
92
|
+
Screenshots / viewport / mermaid need one viewer tab open (shared relay at `excalidrop.wtf403.workers.dev`); drawing works headless.
|
|
95
93
|
|
|
96
|
-
|
|
94
|
+
### Migrating public↔private
|
|
97
95
|
|
|
98
|
-
|
|
99
|
-
npm ci
|
|
100
|
-
npm run build
|
|
101
|
-
```
|
|
96
|
+
Flipping repo visibility doesn't move canvas data (it stays on the `excalidrop` branch) — only the viewer host changes. GitHub Pages serves private repos only on paid plans, so private repos use Cloudflare Pages. The TUI detects the flip (stored target in `.excalidrop.json` vs current visibility) and pre-selects the right host.
|
|
102
97
|
|
|
103
|
-
|
|
104
|
-
```bash
|
|
105
|
-
PORT=3000 npm run canvas
|
|
106
|
-
```
|
|
98
|
+
**Public → private:**
|
|
107
99
|
|
|
108
|
-
|
|
100
|
+
1. `gh repo edit owner/repo --visibility private` (or repo Settings).
|
|
101
|
+
2. `npx excalidrop setup owner/repo --target cloudflare` (needs `wrangler login` once). New URL: `https://excalidrop-owner-repo.pages.dev/?repo=owner/repo`.
|
|
102
|
+
3. Anonymous viewing ends: private scenes need a token, so every viewer must log in and the Excalidrop app must be installed on the repo.
|
|
103
|
+
4. Add the new `https://<project>.pages.dev/` callback URL in your GitHub App / OAuth App settings (exact match).
|
|
104
|
+
5. The old `owner.github.io/repo` URL 404s — optionally disable Pages (Settings → Pages) to avoid confusion.
|
|
109
105
|
|
|
110
|
-
|
|
106
|
+
**Private → public:**
|
|
111
107
|
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
```
|
|
108
|
+
1. `gh repo edit owner/repo --visibility public`.
|
|
109
|
+
2. Either stay on Cloudflare (keeps working; anonymous reads start working once public) or move back to zero-config: `npx excalidrop setup owner/repo --target pages`.
|
|
110
|
+
3. If you move back, optionally delete the Cloudflare project (`npx -y wrangler@4 pages project delete <project>`) so two live URLs don't drift.
|
|
116
111
|
|
|
117
112
|
## Configure MCP Clients
|
|
118
113
|
|
|
119
|
-
The MCP server runs over stdio and can be configured with any MCP-compatible client. The recommended path is `
|
|
114
|
+
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
115
|
|
|
121
116
|
### Environment Variables
|
|
122
117
|
|
|
123
118
|
| Variable | Description | Default |
|
|
124
119
|
|----------|-------------|---------|
|
|
125
|
-
| `
|
|
126
|
-
| `
|
|
120
|
+
| `EXCALIDROP_REPO` | Repo canvas (`owner/repo`), alternative to `--repo=` | git remote / `.excalidrop.json` |
|
|
121
|
+
| `GITHUB_TOKEN` | GitHub token (else `gh auth token` / stored device token) | — |
|
|
122
|
+
| `EXCALIDROP_RELAY_URL` | Screenshot/viewport relay | `https://excalidrop.wtf403.workers.dev` |
|
|
123
|
+
| `EXCALIDROP_NO_RELAY` | Set `1` to use GitHub command-queue instead of relay | unset |
|
|
127
124
|
|
|
128
125
|
---
|
|
129
126
|
|
|
@@ -134,17 +131,12 @@ Config location:
|
|
|
134
131
|
- Windows: `%APPDATA%\Claude\claude_desktop_config.json`
|
|
135
132
|
- Linux: `~/.config/Claude/claude_desktop_config.json`
|
|
136
133
|
|
|
137
|
-
**Local (node)**
|
|
138
134
|
```json
|
|
139
135
|
{
|
|
140
136
|
"mcpServers": {
|
|
141
|
-
"
|
|
142
|
-
"command": "
|
|
143
|
-
"args": ["/
|
|
144
|
-
"env": {
|
|
145
|
-
"EXPRESS_SERVER_URL": "http://127.0.0.1:3000",
|
|
146
|
-
"ENABLE_CANVAS_SYNC": "true"
|
|
147
|
-
}
|
|
137
|
+
"excalidrop": {
|
|
138
|
+
"command": "npx",
|
|
139
|
+
"args": ["-y", "excalidrop@latest", "mcp", "--repo", "owner/repo"]
|
|
148
140
|
}
|
|
149
141
|
}
|
|
150
142
|
}
|
|
@@ -154,28 +146,17 @@ Config location:
|
|
|
154
146
|
|
|
155
147
|
### Claude Code
|
|
156
148
|
|
|
157
|
-
Use the `claude mcp add` command to register the MCP server.
|
|
158
|
-
|
|
159
|
-
**Local (node)** - User-level (available across all projects):
|
|
160
149
|
```bash
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
```
|
|
166
|
-
|
|
167
|
-
**Local (node)** - Project-level (shared via `.mcp.json`):
|
|
168
|
-
```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
|
|
150
|
+
# Project-level (shared via .mcp.json — written automatically by setup):
|
|
151
|
+
claude mcp add excalidrop --scope project -- npx -y excalidrop@latest mcp --repo owner/repo
|
|
152
|
+
# User-level (all projects):
|
|
153
|
+
claude mcp add excalidrop --scope user -- npx -y excalidrop@latest mcp --repo owner/repo
|
|
173
154
|
```
|
|
174
155
|
|
|
175
156
|
**Manage servers:**
|
|
176
157
|
```bash
|
|
177
|
-
claude mcp list
|
|
178
|
-
claude mcp remove
|
|
158
|
+
claude mcp list # List configured servers
|
|
159
|
+
claude mcp remove excalidrop # Remove a server
|
|
179
160
|
```
|
|
180
161
|
|
|
181
162
|
---
|
|
@@ -184,17 +165,12 @@ claude mcp remove excalidraw # Remove a server
|
|
|
184
165
|
|
|
185
166
|
Config location: `.cursor/mcp.json` in your project root (or `~/.cursor/mcp.json` for global config)
|
|
186
167
|
|
|
187
|
-
**Local (node)**
|
|
188
168
|
```json
|
|
189
169
|
{
|
|
190
170
|
"mcpServers": {
|
|
191
|
-
"
|
|
192
|
-
"command": "
|
|
193
|
-
"args": ["/
|
|
194
|
-
"env": {
|
|
195
|
-
"EXPRESS_SERVER_URL": "http://127.0.0.1:3000",
|
|
196
|
-
"ENABLE_CANVAS_SYNC": "true"
|
|
197
|
-
}
|
|
171
|
+
"excalidrop": {
|
|
172
|
+
"command": "npx",
|
|
173
|
+
"args": ["-y", "excalidrop@latest", "mcp", "--repo", "owner/repo"]
|
|
198
174
|
}
|
|
199
175
|
}
|
|
200
176
|
}
|
|
@@ -204,20 +180,14 @@ Config location: `.cursor/mcp.json` in your project root (or `~/.cursor/mcp.json
|
|
|
204
180
|
|
|
205
181
|
### Codex CLI
|
|
206
182
|
|
|
207
|
-
Use the `codex mcp add` command to register the MCP server.
|
|
208
|
-
|
|
209
|
-
**Local (node)**
|
|
210
183
|
```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
|
|
184
|
+
codex mcp add excalidrop -- npx -y excalidrop@latest mcp --repo owner/repo
|
|
215
185
|
```
|
|
216
186
|
|
|
217
187
|
**Manage servers:**
|
|
218
188
|
```bash
|
|
219
189
|
codex mcp list # List configured servers
|
|
220
|
-
codex mcp remove
|
|
190
|
+
codex mcp remove excalidrop # Remove a server
|
|
221
191
|
```
|
|
222
192
|
|
|
223
193
|
---
|
|
@@ -226,19 +196,14 @@ codex mcp remove excalidraw # Remove a server
|
|
|
226
196
|
|
|
227
197
|
Config location: `~/.config/opencode/opencode.json` or project-level `opencode.json`
|
|
228
198
|
|
|
229
|
-
**Local (node)**
|
|
230
199
|
```json
|
|
231
200
|
{
|
|
232
201
|
"$schema": "https://opencode.ai/config.json",
|
|
233
202
|
"mcp": {
|
|
234
|
-
"
|
|
203
|
+
"excalidrop": {
|
|
235
204
|
"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
|
-
}
|
|
205
|
+
"command": ["npx", "-y", "excalidrop@latest", "mcp", "--repo", "owner/repo"],
|
|
206
|
+
"enabled": true
|
|
242
207
|
}
|
|
243
208
|
}
|
|
244
209
|
}
|
|
@@ -250,17 +215,12 @@ Config location: `~/.config/opencode/opencode.json` or project-level `opencode.j
|
|
|
250
215
|
|
|
251
216
|
Config location: `~/.gemini/antigravity/mcp_config.json`
|
|
252
217
|
|
|
253
|
-
**Local (node)**
|
|
254
218
|
```json
|
|
255
219
|
{
|
|
256
220
|
"mcpServers": {
|
|
257
|
-
"
|
|
258
|
-
"command": "
|
|
259
|
-
"args": ["/
|
|
260
|
-
"env": {
|
|
261
|
-
"EXPRESS_SERVER_URL": "http://127.0.0.1:3000",
|
|
262
|
-
"ENABLE_CANVAS_SYNC": "true"
|
|
263
|
-
}
|
|
221
|
+
"excalidrop": {
|
|
222
|
+
"command": "npx",
|
|
223
|
+
"args": ["-y", "excalidrop@latest", "mcp", "--repo", "owner/repo"]
|
|
264
224
|
}
|
|
265
225
|
}
|
|
266
226
|
}
|
|
@@ -270,9 +230,9 @@ Config location: `~/.gemini/antigravity/mcp_config.json`
|
|
|
270
230
|
|
|
271
231
|
### Notes
|
|
272
232
|
|
|
273
|
-
- **
|
|
274
|
-
- **
|
|
275
|
-
- **
|
|
233
|
+
- **No install, no local server**: replace `owner/repo` with your canvas repo. Auth via `GITHUB_TOKEN`, `gh auth`, or `npx excalidrop login`.
|
|
234
|
+
- **Scene storage**: `canvas.excalidraw` on the repo's `excalidrop` branch (+ `snapshots/*.json`). Nothing lives in memory to lose.
|
|
235
|
+
- **Screenshots** (`get_canvas_screenshot`, `export_to_image`, `set_viewport`) need one viewer tab open (relay); everything else works headless.
|
|
276
236
|
|
|
277
237
|
## Agent Skill (Optional)
|
|
278
238
|
|
|
@@ -313,12 +273,12 @@ To update an existing installation, remove the old folder first then re-copy.
|
|
|
313
273
|
|
|
314
274
|
### Use The Skill Scripts
|
|
315
275
|
|
|
316
|
-
|
|
276
|
+
Skill scripts talk to the remote canvas via `gh` auth (no local server):
|
|
317
277
|
|
|
318
278
|
```bash
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
279
|
+
node skills/excalidraw-skill/scripts/healthcheck.cjs --repo owner/repo
|
|
280
|
+
node skills/excalidraw-skill/scripts/export-elements.cjs --repo owner/repo --out diagram.elements.json
|
|
281
|
+
node skills/excalidraw-skill/scripts/import-elements.cjs --repo owner/repo --in diagram.elements.json --mode batch
|
|
322
282
|
```
|
|
323
283
|
|
|
324
284
|
### When The Skill Is Useful
|
|
@@ -330,7 +290,7 @@ EXPRESS_SERVER_URL=http://127.0.0.1:3000 node skills/excalidraw-skill/scripts/im
|
|
|
330
290
|
|
|
331
291
|
See `skills/excalidraw-skill/SKILL.md` and `skills/excalidraw-skill/references/cheatsheet.md`.
|
|
332
292
|
|
|
333
|
-
## MCP Tools (
|
|
293
|
+
## MCP Tools (31 Total, remote-only)
|
|
334
294
|
|
|
335
295
|
| Category | Tools |
|
|
336
296
|
|---|---|
|
|
@@ -347,51 +307,36 @@ Full schemas are discoverable via `tools/list` or in `skills/excalidraw-skill/re
|
|
|
347
307
|
|
|
348
308
|
## Testing
|
|
349
309
|
|
|
350
|
-
###
|
|
310
|
+
### Status
|
|
351
311
|
|
|
352
312
|
```bash
|
|
353
|
-
|
|
354
|
-
```
|
|
355
|
-
|
|
356
|
-
### Local Bind Regression Test
|
|
357
|
-
|
|
358
|
-
```bash
|
|
359
|
-
npm run test:bind
|
|
313
|
+
npx excalidrop status # repo + auth + scene element count
|
|
360
314
|
```
|
|
361
315
|
|
|
362
316
|
### MCP Smoke Test (MCP Inspector)
|
|
363
317
|
|
|
364
318
|
List tools:
|
|
365
319
|
```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
|
|
320
|
+
npx @modelcontextprotocol/inspector --cli -- node dist/mcp.js --repo owner/repo --method tools/list
|
|
370
321
|
```
|
|
371
322
|
|
|
372
|
-
Create a rectangle:
|
|
323
|
+
Create a rectangle (commits to the repo's `excalidrop` branch):
|
|
373
324
|
```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 \
|
|
325
|
+
npx @modelcontextprotocol/inspector --cli -- node dist/mcp.js --repo owner/repo \
|
|
326
|
+
--method tools/call --tool-name create_element \
|
|
378
327
|
--tool-arg type=rectangle --tool-arg x=100 --tool-arg y=100 \
|
|
379
328
|
--tool-arg width=300 --tool-arg height=200
|
|
380
329
|
```
|
|
381
330
|
|
|
382
|
-
###
|
|
331
|
+
### Viewer screenshots
|
|
383
332
|
|
|
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
|
-
```
|
|
333
|
+
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
334
|
|
|
392
335
|
## Troubleshooting
|
|
393
336
|
|
|
394
|
-
-
|
|
337
|
+
- `No repo selected`: pass `--repo=owner/repo`, set `EXCALIDROP_REPO`, or run `npx excalidrop setup owner/repo`.
|
|
338
|
+
- `No GitHub token`: run `gh auth login` or `npx excalidrop login`.
|
|
339
|
+
- Screenshot `503 no viewer connected`: open the canvas URL in a browser first.
|
|
395
340
|
- Updates/deletes fail after batch creation: ensure you are on a build that includes the batch id preservation fix (merged via PR #34).
|
|
396
341
|
|
|
397
342
|
## Known Issues / TODO
|
package/dist/cli.d.ts
CHANGED
|
@@ -1,3 +1,9 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
|
|
2
|
+
/** Accept owner/repo, a GitHub URL, or git@ SSH — always returns owner/repo or ''. */
|
|
3
|
+
export declare function normalizeRepoSlug(input: string): string;
|
|
4
|
+
export type EditorStatus = {
|
|
5
|
+
status: 'current' | 'stale' | 'missing';
|
|
6
|
+
repo: string | null;
|
|
7
|
+
where: string;
|
|
8
|
+
};
|
|
3
9
|
//# 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":";AAiOA,sFAAsF;AACtF,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CASvD;AAuHD,MAAM,MAAM,YAAY,GAAG;IAAE,MAAM,EAAE,SAAS,GAAG,OAAO,GAAG,SAAS,CAAC;IAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC"}
|