excalidrop 0.1.2 → 0.1.4

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 (185) hide show
  1. package/dist/cli.d.ts +0 -21
  2. package/dist/cli.d.ts.map +1 -1
  3. package/dist/cli.js +1 -46
  4. package/dist/cli.js.map +1 -1
  5. package/dist/frontend/assets/{advancedFormat-bKUmsig-.js → advancedFormat-tiBAHNGo.js} +1 -1
  6. package/dist/frontend/assets/{ar-SA-G6X2FPQ2-C7K_UR3P.js → ar-SA-G6X2FPQ2-DVxiWV5Z.js} +1 -1
  7. package/dist/frontend/assets/{arc-BI_FJWE7.js → arc-Cc3ncJ1n.js} +1 -1
  8. package/dist/frontend/assets/{az-AZ-76LH7QW2-PkhuRuSr.js → az-AZ-76LH7QW2-Z_2BqDo-.js} +1 -1
  9. package/dist/frontend/assets/{bg-BG-XCXSNQG7-CgLRSYTl.js → bg-BG-XCXSNQG7-DrxGJZOG.js} +1 -1
  10. package/dist/frontend/assets/{blockDiagram-38ab4fdb-BFdBRYSn.js → blockDiagram-38ab4fdb-CDnkTFfP.js} +1 -1
  11. package/dist/frontend/assets/{blockDiagram-68f4deed-Ynbqr7bQ.js → blockDiagram-68f4deed-Bb0W6mxN.js} +1 -1
  12. package/dist/frontend/assets/{bn-BD-2XOGV67Q-CEvkU0mz.js → bn-BD-2XOGV67Q-BkGJ-w8k.js} +1 -1
  13. package/dist/frontend/assets/{c4Diagram-15b5d702-Dm7F1Pn_.js → c4Diagram-15b5d702-ByRV0tka.js} +1 -1
  14. package/dist/frontend/assets/{c4Diagram-3d4e48cf-COkK-e67.js → c4Diagram-3d4e48cf-QSVnzYYK.js} +1 -1
  15. package/dist/frontend/assets/{ca-ES-6MX7JW3Y-DzP6q9bE.js → ca-ES-6MX7JW3Y-BBJvOPE1.js} +1 -1
  16. package/dist/frontend/assets/channel-BQSIb3i3.js +1 -0
  17. package/dist/frontend/assets/{classDiagram-70f12bd4-CRzulwvH.js → classDiagram-70f12bd4-DDFBNGUt.js} +1 -1
  18. package/dist/frontend/assets/{classDiagram-d40c83e7-DNbA-n-a.js → classDiagram-d40c83e7-cgC3s7Nz.js} +1 -1
  19. package/dist/frontend/assets/{classDiagram-v2-d5a6b087-l-GglywH.js → classDiagram-v2-d5a6b087-BgB8AG2e.js} +1 -1
  20. package/dist/frontend/assets/{classDiagram-v2-f2320105-B_TY1zoc.js → classDiagram-v2-f2320105-Dtywkpeg.js} +1 -1
  21. package/dist/frontend/assets/clone-BoZziNL9.js +1 -0
  22. package/dist/frontend/assets/{createText-2e5e7dd3-DB_k52Pn.js → createText-2e5e7dd3-CqY00v-4.js} +1 -1
  23. package/dist/frontend/assets/{createText-d213de94-D-G49giw.js → createText-d213de94-D59sBfqq.js} +1 -1
  24. package/dist/frontend/assets/{cs-CZ-2BRQDIVT-Bf4TOzpR.js → cs-CZ-2BRQDIVT-CK09MAsg.js} +1 -1
  25. package/dist/frontend/assets/{cytoscape-cose-bilkent-DQYypj0P.js → cytoscape-cose-bilkent-CKy_tuGZ.js} +1 -1
  26. package/dist/frontend/assets/{da-DK-5WZEPLOC-jO-5kyXb.js → da-DK-5WZEPLOC-V4hdLKuT.js} +1 -1
  27. package/dist/frontend/assets/{de-DE-XR44H4JA-BkNXWOVh.js → de-DE-XR44H4JA-Dw8qkP9g.js} +1 -1
  28. package/dist/frontend/assets/drop-BFhuMYSw.png +0 -0
  29. package/dist/frontend/assets/{edges-332bd1c7-CVvMtkTa.js → edges-332bd1c7-D-u0KMZB.js} +1 -1
  30. package/dist/frontend/assets/{edges-e0da2a9e-DQBAvC8-.js → edges-e0da2a9e-B3UFqLqY.js} +1 -1
  31. package/dist/frontend/assets/{el-GR-BZB4AONW-Dv7Y9hMk.js → el-GR-BZB4AONW-BUdBQbYg.js} +1 -1
  32. package/dist/frontend/assets/{elk.bundled-YVS3PsMH.js → elk.bundled-BZA3Xcoo.js} +1 -1
  33. package/dist/frontend/assets/{erDiagram-880f2ed8-BjBeR38f.js → erDiagram-880f2ed8-CNxm7e1x.js} +1 -1
  34. package/dist/frontend/assets/{erDiagram-9861fffd-B2Bi3R45.js → erDiagram-9861fffd-C2u_ziAM.js} +1 -1
  35. package/dist/frontend/assets/{es-ES-U4NZUMDT-CWhs0SQY.js → es-ES-U4NZUMDT-DS0FAZqX.js} +1 -1
  36. package/dist/frontend/assets/{eu-ES-A7QVB2H4-BfkFwc3e.js → eu-ES-A7QVB2H4-D-D5uidc.js} +1 -1
  37. package/dist/frontend/assets/{fa-IR-HGAKTJCU-BgWzSj46.js → fa-IR-HGAKTJCU-mAW_2-jg.js} +1 -1
  38. package/dist/frontend/assets/{fi-FI-Z5N7JZ37-CUyvkum-.js → fi-FI-Z5N7JZ37-B9mW6nxS.js} +1 -1
  39. package/dist/frontend/assets/{flowDb-7c981674-BSZyyVBf.js → flowDb-7c981674-6JB2gd0I.js} +1 -1
  40. package/dist/frontend/assets/{flowDb-956e92f1-BC3-CLkF.js → flowDb-956e92f1-BbpkWRi7.js} +1 -1
  41. package/dist/frontend/assets/{flowDiagram-66a62f08-H57DAvmM.js → flowDiagram-66a62f08-DrhrQuXc.js} +1 -1
  42. package/dist/frontend/assets/{flowDiagram-cbd28bf7-Bw4Z2nBD.js → flowDiagram-cbd28bf7-BmNY7bvJ.js} +1 -1
  43. package/dist/frontend/assets/flowDiagram-v2-96b9c2cf-Z3H2d3Wj.js +1 -0
  44. package/dist/frontend/assets/flowDiagram-v2-ffc7f31a-CIQOMghC.js +1 -0
  45. package/dist/frontend/assets/{flowchart-elk-definition-36e2d292-1kZNdf3X.js → flowchart-elk-definition-36e2d292-4G1YiIlk.js} +1 -1
  46. package/dist/frontend/assets/{flowchart-elk-definition-4a651766-DDhG2Esi.js → flowchart-elk-definition-4a651766-Cm94SrrQ.js} +1 -1
  47. package/dist/frontend/assets/{fr-FR-RHASNOE6-7xzoRwbd.js → fr-FR-RHASNOE6-BXnmUxTA.js} +1 -1
  48. package/dist/frontend/assets/{ganttDiagram-04f9e578-CtUSsXCz.js → ganttDiagram-04f9e578-X0BweAnG.js} +1 -1
  49. package/dist/frontend/assets/{ganttDiagram-c361ad54-K42AklFY.js → ganttDiagram-c361ad54-D3vxZ5MQ.js} +1 -1
  50. package/dist/frontend/assets/{gitGraphDiagram-21fc4d3e-uW6XA6Y6.js → gitGraphDiagram-21fc4d3e-wznrpRWn.js} +1 -1
  51. package/dist/frontend/assets/{gitGraphDiagram-72cf32ee-CCNbhnBg.js → gitGraphDiagram-72cf32ee-B9zCS3Pw.js} +1 -1
  52. package/dist/frontend/assets/{gl-ES-HMX3MZ6V-CXuDDwNP.js → gl-ES-HMX3MZ6V-CrUx-ab6.js} +1 -1
  53. package/dist/frontend/assets/{graph-CYOmcSYN.js → graph-BQZ6SIVr.js} +1 -1
  54. package/dist/frontend/assets/{graph-o42dOfI7.js → graph-Cda8xSTx.js} +1 -1
  55. package/dist/frontend/assets/{he-IL-6SHJWFNN-O9dzh9EM.js → he-IL-6SHJWFNN-D33eaw6-.js} +1 -1
  56. package/dist/frontend/assets/{hi-IN-IWLTKZ5I-DlrOXhWs.js → hi-IN-IWLTKZ5I-DEnStF-g.js} +1 -1
  57. package/dist/frontend/assets/{hu-HU-A5ZG7DT2-C3eNg-uI.js → hu-HU-A5ZG7DT2-BjH2w8Sn.js} +1 -1
  58. package/dist/frontend/assets/{id-ID-SAP4L64H-6iM4pI5c.js → id-ID-SAP4L64H-Bc6R-JEz.js} +1 -1
  59. package/dist/frontend/assets/{index-3862675e-DrvLhypC.js → index-3862675e-CpYfS3Db.js} +1 -1
  60. package/dist/frontend/assets/{index-6079d271-BgVTRqg2.js → index-6079d271-Y2bgyRpa.js} +1 -1
  61. package/dist/frontend/assets/{index-HkUXslJy.js → index-D7eYnAQp.js} +4 -4
  62. package/dist/frontend/assets/{index-D-cr7jpJ.js → index-DIz4WrSB.js} +72 -72
  63. package/dist/frontend/assets/{infoDiagram-4a4f5b27-ZxmAcaW1.js → infoDiagram-4a4f5b27-Bm3Oq-Rq.js} +1 -1
  64. package/dist/frontend/assets/{infoDiagram-f8f76790-Bn-PhiFG.js → infoDiagram-f8f76790-oNVitBKM.js} +1 -1
  65. package/dist/frontend/assets/{it-IT-JPQ66NNP-B26NQzGp.js → it-IT-JPQ66NNP-BcxQABF2.js} +1 -1
  66. package/dist/frontend/assets/{ja-JP-DBVTYXUO-CB0fvnYJ.js → ja-JP-DBVTYXUO-D1zIM-nt.js} +1 -1
  67. package/dist/frontend/assets/{journeyDiagram-29694f62-ggDKs06f.js → journeyDiagram-29694f62-CamPk_3P.js} +1 -1
  68. package/dist/frontend/assets/{journeyDiagram-49397b02-pdDS-n-z.js → journeyDiagram-49397b02-D6w3tLtf.js} +1 -1
  69. package/dist/frontend/assets/{kaa-6HZHGXH3-YNdBdcwJ.js → kaa-6HZHGXH3-CoILysVg.js} +1 -1
  70. package/dist/frontend/assets/{kab-KAB-ZGHBKWFO-D86pwZO0.js → kab-KAB-ZGHBKWFO-B9ZbybBt.js} +1 -1
  71. package/dist/frontend/assets/{kk-KZ-P5N5QNE5-CpG5oheM.js → kk-KZ-P5N5QNE5-Dxi4GIQ7.js} +1 -1
  72. package/dist/frontend/assets/{km-KH-HSX4SM5Z-DYOZ3Azw.js → km-KH-HSX4SM5Z-DaJ7EtO2.js} +1 -1
  73. package/dist/frontend/assets/{ko-KR-MTYHY66A-BHorm6lC.js → ko-KR-MTYHY66A-DG57Ah12.js} +1 -1
  74. package/dist/frontend/assets/{ku-TR-6OUDTVRD-CM9RgEHv.js → ku-TR-6OUDTVRD-DnDf9E8a.js} +1 -1
  75. package/dist/frontend/assets/{layout-DW9Qf-At.js → layout-BsWfhUAF.js} +1 -1
  76. package/dist/frontend/assets/{layout-CCtkxrAf.js → layout-Drr-66M9.js} +1 -1
  77. package/dist/frontend/assets/{line-DvZfgg9P.js → line-DwQObOhP.js} +1 -1
  78. package/dist/frontend/assets/{linear-FwFrGRfa.js → linear-C36MjJps.js} +1 -1
  79. package/dist/frontend/assets/{lt-LT-XHIRWOB4-DvriKXBj.js → lt-LT-XHIRWOB4-D_zqS0yg.js} +1 -1
  80. package/dist/frontend/assets/{lv-LV-5QDEKY6T-DzQpwk87.js → lv-LV-5QDEKY6T-owIsIh1b.js} +1 -1
  81. package/dist/frontend/assets/{mindmap-definition-ac74a2e8-DsRo8f2w.js → mindmap-definition-ac74a2e8-Cf9JbrBJ.js} +1 -1
  82. package/dist/frontend/assets/{mindmap-definition-fc14e90a-dQ9reluI.js → mindmap-definition-fc14e90a-BpsNCNCp.js} +1 -1
  83. package/dist/frontend/assets/{mr-IN-CRQNXWMA-C7RzxxP5.js → mr-IN-CRQNXWMA-CS9XUj74.js} +1 -1
  84. package/dist/frontend/assets/{my-MM-5M5IBNSE-B-RRuy29.js → my-MM-5M5IBNSE-BKB060k9.js} +1 -1
  85. package/dist/frontend/assets/{nb-NO-T6EIAALU-B47x16Ik.js → nb-NO-T6EIAALU-CkmLUrvm.js} +1 -1
  86. package/dist/frontend/assets/{nl-NL-IS3SIHDZ-BxAKoQne.js → nl-NL-IS3SIHDZ-DdiLyJoz.js} +1 -1
  87. package/dist/frontend/assets/{nn-NO-6E72VCQL-dfpbEDSZ.js → nn-NO-6E72VCQL-Yevp6f_Y.js} +1 -1
  88. package/dist/frontend/assets/{oc-FR-POXYY2M6-gv6geBjV.js → oc-FR-POXYY2M6-D_M6GHup.js} +1 -1
  89. package/dist/frontend/assets/{pa-IN-N4M65BXN-CY30-qH7.js → pa-IN-N4M65BXN-1vuACN9n.js} +1 -1
  90. package/dist/frontend/assets/{pica-DWYGHLQV.js → pica-DDDx0iqx.js} +1 -1
  91. package/dist/frontend/assets/{pie-CDiWh1rj.js → pie-CFIpuQMO.js} +1 -1
  92. package/dist/frontend/assets/{pieDiagram-421022e6-Bgy-duyf.js → pieDiagram-421022e6-DO7e_Qgw.js} +1 -1
  93. package/dist/frontend/assets/{pieDiagram-8a3498a8-DH7FsbPK.js → pieDiagram-8a3498a8-BEoqChXo.js} +1 -1
  94. package/dist/frontend/assets/{pl-PL-T2D74RX3-TrHugsIA.js → pl-PL-T2D74RX3-Cc6Q5nSh.js} +1 -1
  95. package/dist/frontend/assets/{pt-BR-5N22H2LF-CJxdFp9c.js → pt-BR-5N22H2LF-3eEiAax3.js} +1 -1
  96. package/dist/frontend/assets/{pt-PT-UZXXM6DQ-CB-1q6YJ.js → pt-PT-UZXXM6DQ-CgnF0Le7.js} +1 -1
  97. package/dist/frontend/assets/{quadrantDiagram-0957ecba-DcwYI1oi.js → quadrantDiagram-0957ecba-C1Eo-ZUY.js} +1 -1
  98. package/dist/frontend/assets/{quadrantDiagram-120e2f19-CvHU5a9v.js → quadrantDiagram-120e2f19-Bdfsl_O7.js} +1 -1
  99. package/dist/frontend/assets/{requirementDiagram-23d650b8-tdagN8HP.js → requirementDiagram-23d650b8-DiOK6QW3.js} +1 -1
  100. package/dist/frontend/assets/{requirementDiagram-deff3bca-BMGM-fSI.js → requirementDiagram-deff3bca-BDJ-7T4h.js} +1 -1
  101. package/dist/frontend/assets/{ro-RO-JPDTUUEW-DQq9DBOd.js → ro-RO-JPDTUUEW-CbJ3IB7a.js} +1 -1
  102. package/dist/frontend/assets/{ru-RU-B4JR7IUQ-CWX32rfh.js → ru-RU-B4JR7IUQ-PQGmeGG4.js} +1 -1
  103. package/dist/frontend/assets/{sankeyDiagram-04a897e0-3i6zWpY2.js → sankeyDiagram-04a897e0-DV25bgN2.js} +1 -1
  104. package/dist/frontend/assets/{sankeyDiagram-23345273-ncj1Ol7S.js → sankeyDiagram-23345273-szSb_Sei.js} +1 -1
  105. package/dist/frontend/assets/{selectAll-DJwesbwT.js → selectAll-DsrPvhqV.js} +1 -1
  106. package/dist/frontend/assets/{sequenceDiagram-17ac3bff-ChyKKRZA.js → sequenceDiagram-17ac3bff-Dg88bSlc.js} +1 -1
  107. package/dist/frontend/assets/{sequenceDiagram-704730f1-D57_wP9k.js → sequenceDiagram-704730f1-DRIjLCxx.js} +1 -1
  108. package/dist/frontend/assets/{si-LK-N5RQ5JYF-Lkc5ZxyG.js → si-LK-N5RQ5JYF-BtIIudm3.js} +1 -1
  109. package/dist/frontend/assets/{sk-SK-C5VTKIMK-DyvYXjqZ.js → sk-SK-C5VTKIMK-CIwXticU.js} +1 -1
  110. package/dist/frontend/assets/{sl-SI-NN7IZMDC-D_MvP9Rh.js → sl-SI-NN7IZMDC-CXEdg57y.js} +1 -1
  111. package/dist/frontend/assets/{stateDiagram-587899a1-OjFTnFLS.js → stateDiagram-587899a1-BwRwgRo6.js} +1 -1
  112. package/dist/frontend/assets/{stateDiagram-9c5f0230-BzU36S5C.js → stateDiagram-9c5f0230-C8n96rER.js} +1 -1
  113. package/dist/frontend/assets/{stateDiagram-v2-51a3dcff-CfX1qo7U.js → stateDiagram-v2-51a3dcff-B7e5E4J7.js} +1 -1
  114. package/dist/frontend/assets/{stateDiagram-v2-d93cdb3a-BH7Ud4sU.js → stateDiagram-v2-d93cdb3a-B18iZQLw.js} +1 -1
  115. package/dist/frontend/assets/{styles-2ab5d517-CA8x9Nh5.js → styles-2ab5d517-CfWubwio.js} +1 -1
  116. package/dist/frontend/assets/{styles-5f03d8d2-BnO2pLhV.js → styles-5f03d8d2-C-_n19AB.js} +1 -1
  117. package/dist/frontend/assets/{styles-6aaf32cf-COnot1ea.js → styles-6aaf32cf-Dh-DHkVP.js} +1 -1
  118. package/dist/frontend/assets/{styles-9a916d00-C3QkBgTF.js → styles-9a916d00-Boy0hUEG.js} +1 -1
  119. package/dist/frontend/assets/{styles-c10674c1-CPAG2_rr.js → styles-c10674c1-BfxiK3Ns.js} +1 -1
  120. package/dist/frontend/assets/{styles-edf9a4b0-B8Q9fyu0.js → styles-edf9a4b0-T7mKViRF.js} +1 -1
  121. package/dist/frontend/assets/subset-shared.chunk.js +1 -1
  122. package/dist/frontend/assets/subset-worker.chunk.js +1 -1
  123. package/dist/frontend/assets/{sv-SE-XGPEYMSR-t6voGQSI.js → sv-SE-XGPEYMSR-dVrUAqld.js} +1 -1
  124. package/dist/frontend/assets/{svgDrawCommon-08f97a94-CdT21LWf.js → svgDrawCommon-08f97a94-fsWk6SQc.js} +1 -1
  125. package/dist/frontend/assets/{svgDrawCommon-3ba9043b-D1MU7jAE.js → svgDrawCommon-3ba9043b-BJ8X3qS-.js} +1 -1
  126. package/dist/frontend/assets/{ta-IN-2NMHFXQM-7VmfDDyV.js → ta-IN-2NMHFXQM-CtVVZfIT.js} +1 -1
  127. package/dist/frontend/assets/{th-TH-HPSO5L25-B5rLEY9P.js → th-TH-HPSO5L25-Do90CyDN.js} +1 -1
  128. package/dist/frontend/assets/{timeline-definition-7e6b55e7-BIcL44O_.js → timeline-definition-7e6b55e7-D_iHA485.js} +1 -1
  129. package/dist/frontend/assets/{timeline-definition-85554ec2-TgrYYwpU.js → timeline-definition-85554ec2-nhT8QMsO.js} +1 -1
  130. package/dist/frontend/assets/{tr-TR-DEFEU3FU-0CgOHXTn.js → tr-TR-DEFEU3FU-MfR-IQke.js} +1 -1
  131. package/dist/frontend/assets/{uk-UA-QMV73CPH-CzSFsIsx.js → uk-UA-QMV73CPH-CPet8B1O.js} +1 -1
  132. package/dist/frontend/assets/{union-CnQAJu0l.js → union-BgYwhB7T.js} +1 -1
  133. package/dist/frontend/assets/{vi-VN-M7AON7JQ-Bhx3rYU9.js → vi-VN-M7AON7JQ-3HD06T_8.js} +1 -1
  134. package/dist/frontend/assets/{xychartDiagram-b6496bcd-BMKDop6v.js → xychartDiagram-b6496bcd-D5vSaFT2.js} +1 -1
  135. package/dist/frontend/assets/{xychartDiagram-e933f94c-DAWithrN.js → xychartDiagram-e933f94c-DLIHXsUi.js} +1 -1
  136. package/dist/frontend/assets/{zh-CN-LNUGB5OW-Br52_wH4.js → zh-CN-LNUGB5OW-t2RyWPw2.js} +1 -1
  137. package/dist/frontend/assets/{zh-HK-E62DVLB3-Cj6mnIQ9.js → zh-HK-E62DVLB3-Bj22hc7e.js} +1 -1
  138. package/dist/frontend/assets/{zh-TW-RAJ6MFWO-yLEsVBbC.js → zh-TW-RAJ6MFWO-CBRhqhU1.js} +1 -1
  139. package/dist/frontend/assets/{zipObject-BeXj5PVd.js → zipObject-DMfHW2o8.js} +1 -1
  140. package/dist/frontend/index.html +2 -1
  141. package/dist/index.d.ts.map +1 -1
  142. package/dist/index.js +2 -28
  143. package/dist/index.js.map +1 -1
  144. package/dist/server.js +0 -9
  145. package/dist/server.js.map +1 -1
  146. package/dist/target.d.ts +0 -3
  147. package/dist/target.d.ts.map +1 -1
  148. package/dist/target.js +1 -20
  149. package/dist/target.js.map +1 -1
  150. package/dist/types.d.ts.map +1 -1
  151. package/dist/types.js +0 -8
  152. package/dist/types.js.map +1 -1
  153. package/dist/utils/auth.d.ts +0 -1
  154. package/dist/utils/auth.d.ts.map +1 -1
  155. package/dist/utils/auth.js +0 -1
  156. package/dist/utils/auth.js.map +1 -1
  157. package/dist/utils/github.d.ts +7 -9
  158. package/dist/utils/github.d.ts.map +1 -1
  159. package/dist/utils/github.js +57 -36
  160. package/dist/utils/github.js.map +1 -1
  161. package/dist/utils/logger.js +2 -2
  162. package/dist/utils/logger.js.map +1 -1
  163. package/dist/utils/r2store.d.ts +0 -7
  164. package/dist/utils/r2store.d.ts.map +1 -1
  165. package/dist/utils/r2store.js.map +1 -1
  166. package/frontend/drop.png +0 -0
  167. package/frontend/index.html +1 -0
  168. package/frontend/src/utils/ghSync.ts +99 -36
  169. package/frontend/src/utils/mermaidConverter.ts +2 -8
  170. package/frontend/src/utils/webmcp.ts +7 -27
  171. package/package.json +2 -1
  172. package/src/cli.ts +16 -47
  173. package/src/index.ts +11 -30
  174. package/src/server.ts +9 -9
  175. package/src/target.ts +10 -20
  176. package/src/types.ts +16 -18
  177. package/src/utils/auth.ts +1 -1
  178. package/src/utils/github.ts +61 -33
  179. package/src/utils/logger.ts +2 -2
  180. package/src/utils/r2store.ts +1 -7
  181. package/vite.config.js +0 -2
  182. package/dist/frontend/assets/channel-BqCiG5n3.js +0 -1
  183. package/dist/frontend/assets/clone-B6Jqcrku.js +0 -1
  184. package/dist/frontend/assets/flowDiagram-v2-96b9c2cf-CBjbm_oB.js +0 -1
  185. package/dist/frontend/assets/flowDiagram-v2-ffc7f31a-CoQufPp2.js +0 -1
@@ -1,8 +1,6 @@
1
- /** GitHub as source of truth. Scene = canvas.excalidraw on main; viewer copy on gh-pages. No Actions. */
2
1
  import logger from './logger.js';
3
2
  import { execSync } from 'node:child_process';
4
3
  const API = 'https://api.github.com';
5
- /** Zero-config: GITHUB_TOKEN env, else `gh auth token`, else '' (public reads still work). */
6
4
  export function token() {
7
5
  if (process.env.GITHUB_TOKEN)
8
6
  return process.env.GITHUB_TOKEN;
@@ -13,7 +11,6 @@ export function token() {
13
11
  return '';
14
12
  }
15
13
  }
16
- /** Zero-config: current repo from git remote. Empty allowlist = current repo only. */
17
14
  export function currentRepo() {
18
15
  try {
19
16
  const url = execSync('git config --get remote.origin.url', { encoding: 'utf8' }).trim();
@@ -25,6 +22,7 @@ export function currentRepo() {
25
22
  }
26
23
  }
27
24
  export const SCENE_PATH = process.env.SCENE_PATH || 'canvas.excalidraw';
25
+ export const CANVAS_BRANCH = process.env.CANVAS_BRANCH || 'excalidrop';
28
26
  export function allowedRepos() {
29
27
  const list = (process.env.ALLOWED_REPOS || '').split(',').map(s => s.trim().toLowerCase()).filter(Boolean);
30
28
  if (list.length)
@@ -32,16 +30,12 @@ export function allowedRepos() {
32
30
  const cur = currentRepo();
33
31
  return cur ? [cur] : [];
34
32
  }
35
- /** Legacy allowlist hook (hosted multi-tenant remote only). Local MCP paths do not
36
- * gate on it: the user's own token + GitHub's API enforcement is the real
37
- * gate, and any user must be able to work on any repo they can access. */
38
33
  export function assertRepo(_repo) {
39
- // intentionally no-op — see above
40
34
  }
41
35
  function headers() {
42
36
  return { Authorization: `Bearer ${token()}`, Accept: 'application/vnd.github+json', 'User-Agent': 'excalidrop', 'Content-Type': 'application/json' };
43
37
  }
44
- export async function getFile(repo, path, ref = 'main') {
38
+ export async function getFile(repo, path, ref = CANVAS_BRANCH) {
45
39
  assertRepo(repo);
46
40
  const r = await fetch(`${API}/repos/${repo}/contents/${path}?ref=${ref}`, { headers: headers() });
47
41
  if (r.status === 404)
@@ -52,7 +46,20 @@ export async function getFile(repo, path, ref = 'main') {
52
46
  const text = Buffer.from(j.content, 'base64').toString('utf8');
53
47
  return { sha: j.sha, content: JSON.parse(text) };
54
48
  }
55
- export async function putFile(repo, path, data, message, branch = 'main', sha) {
49
+ async function ensureBranch(repo, branch) {
50
+ const has = await fetch(`${API}/repos/${repo}/git/ref/heads/${branch}`, { headers: headers() });
51
+ if (has.ok)
52
+ return;
53
+ const repoInfo = await (await fetch(`${API}/repos/${repo}`, { headers: headers() })).json();
54
+ const from = repoInfo.default_branch || 'main';
55
+ const ref = await (await fetch(`${API}/repos/${repo}/git/ref/heads/${from}`, { headers: headers() })).json();
56
+ if (!ref.object?.sha)
57
+ throw new Error(`cannot create ${branch}: no ${from} branch`);
58
+ const mkRef = await fetch(`${API}/repos/${repo}/git/refs`, { method: 'POST', headers: headers(), body: JSON.stringify({ ref: `refs/heads/${branch}`, sha: ref.object.sha }) });
59
+ if (!mkRef.ok)
60
+ throw new Error(`cannot create ${branch}: ${(await mkRef.text()).slice(0, 200)}`);
61
+ }
62
+ export async function putFile(repo, path, data, message, branch = CANVAS_BRANCH, sha) {
56
63
  assertRepo(repo);
57
64
  if (!token())
58
65
  throw new Error('GITHUB_TOKEN missing');
@@ -60,52 +67,66 @@ export async function putFile(repo, path, data, message, branch = 'main', sha) {
60
67
  if (sha)
61
68
  body.sha = sha;
62
69
  let r = await fetch(`${API}/repos/${repo}/contents/${path}`, { method: 'PUT', headers: headers(), body: JSON.stringify(body) });
63
- if (r.status === 404 && branch === 'main') {
64
- // 404 on PUT usually means the branch doesn't exist yet (empty repo —
65
- // GitHub says plain "Not Found", not "branch missing"). Fork main off
66
- // gh-pages (or the default branch) then retry.
67
- const branchExists = await fetch(`${API}/repos/${repo}/git/ref/heads/main`, { headers: headers() });
68
- if (branchExists.ok)
69
- throw new Error(`GitHub put 404: ${await r.text()}`.slice(0, 200));
70
- const repoInfo = await (await fetch(`${API}/repos/${repo}`, { headers: headers() })).json();
71
- const from = repoInfo.default_branch && repoInfo.default_branch !== 'main' ? repoInfo.default_branch : 'gh-pages';
72
- const ref = await (await fetch(`${API}/repos/${repo}/git/ref/heads/${from}`, { headers: headers() })).json();
73
- if (!ref.object?.sha)
74
- throw new Error(`cannot bootstrap main: no ${from} branch`);
75
- const mkRef = await fetch(`${API}/repos/${repo}/git/refs`, { method: 'POST', headers: headers(), body: JSON.stringify({ ref: 'refs/heads/main', sha: ref.object.sha }) });
76
- if (!mkRef.ok)
77
- throw new Error(`cannot bootstrap main: ${(await mkRef.text()).slice(0, 200)}`);
78
- // main bootstrapped from another branch may already contain the file — attach its sha
79
- const existing = await (await fetch(`${API}/repos/${repo}/contents/${path}?ref=main`, { headers: headers() })).json();
80
- if (existing.sha)
70
+ if (r.status === 404) {
71
+ await ensureBranch(repo, branch);
72
+ const existing = await getFile(repo, path, branch).catch(() => null);
73
+ if (existing?.sha)
81
74
  body.sha = existing.sha;
75
+ else
76
+ delete body.sha;
82
77
  r = await fetch(`${API}/repos/${repo}/contents/${path}`, { method: 'PUT', headers: headers(), body: JSON.stringify(body) });
83
78
  }
84
79
  if (r.status === 409)
85
80
  throw new Error('CONFLICT: file changed upstream, refetch sha and retry');
81
+ if (r.status === 422 && !sha) {
82
+ const existing = await getFile(repo, path, branch).catch(() => null);
83
+ if (!existing?.sha)
84
+ throw new Error(`GitHub put 422: ${(await r.text()).slice(0, 200)}`);
85
+ body.sha = existing.sha;
86
+ r = await fetch(`${API}/repos/${repo}/contents/${path}`, { method: 'PUT', headers: headers(), body: JSON.stringify(body) });
87
+ if (r.status === 409)
88
+ throw new Error('CONFLICT: file changed upstream, refetch sha and retry');
89
+ }
86
90
  if (!r.ok)
87
91
  throw new Error(`GitHub put ${r.status}: ${await r.text()}`);
88
92
  const j = await r.json();
89
93
  logger.info(`Committed ${path}@${branch} in ${repo}`);
90
94
  return j.content.sha;
91
95
  }
92
- /** Load scene with sha for optimistic concurrency. */
93
96
  export async function loadScene(repo) {
94
97
  assertRepo(repo);
95
- const f = await getFile(repo, SCENE_PATH, 'main').catch(() => null);
98
+ const f = await getFile(repo, SCENE_PATH, CANVAS_BRANCH).catch(() => null);
96
99
  if (!f)
97
100
  return { elements: [], files: [], sha: null };
98
101
  return { elements: f.content.elements || [], files: f.content.files || [], sha: f.sha };
99
102
  }
100
- /** Save scene to main (1 commit per batch). Returns new sha. */
101
103
  export async function saveScene(repo, elements, files, sha, msg) {
102
- return putFile(repo, SCENE_PATH, { type: 'excalidraw', version: 2, source: 'excalidrop', elements, files: {}, _files: files }, msg, 'main', sha || undefined);
104
+ return putFile(repo, SCENE_PATH, { type: 'excalidraw', version: 2, source: 'excalidrop', elements, files: files || {} }, msg, CANVAS_BRANCH, sha || undefined);
105
+ }
106
+ export async function syncPages(_repo, _scene) {
107
+ }
108
+ export async function updateRepoMetadata(repo, updates) {
109
+ assertRepo(repo);
110
+ if (!token())
111
+ throw new Error('GITHUB_TOKEN missing');
112
+ const r = await fetch(`${API}/repos/${repo}`, { method: 'PATCH', headers: headers(), body: JSON.stringify(updates) });
113
+ if (!r.ok)
114
+ throw new Error(`GitHub PATCH ${r.status}: ${await r.text()}`);
115
+ logger.info(`Updated metadata for ${repo}`);
103
116
  }
104
- /** Sync prebuilt viewer + scene copy straight to gh-pages branch (direct push via Contents API, no Actions). */
105
- export async function syncPages(repo, scene) {
117
+ export async function ensureRepoMetadata(repo, homepage) {
106
118
  assertRepo(repo);
107
- // scene copy (viewer reads same-branch file: instant, no raw cache)
108
- const cur = await getFile(repo, SCENE_PATH, 'gh-pages').catch(() => null);
109
- await putFile(repo, SCENE_PATH, scene, 'excalidrop: sync scene to gh-pages', 'gh-pages', cur?.sha);
119
+ if (!token())
120
+ throw new Error('GITHUB_TOKEN missing');
121
+ const r = await fetch(`${API}/repos/${repo}`, { headers: headers() });
122
+ if (!r.ok)
123
+ throw new Error(`GitHub GET ${r.status}: ${await r.text()}`);
124
+ const data = await r.json();
125
+ if (!data.description || data.description.trim() === '') {
126
+ await updateRepoMetadata(repo, { description: homepage, homepage });
127
+ }
128
+ else if (!data.homepage || data.homepage.trim() === '') {
129
+ await updateRepoMetadata(repo, { homepage });
130
+ }
110
131
  }
111
132
  //# sourceMappingURL=github.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"github.js","sourceRoot":"","sources":["../../src/utils/github.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"github.js","sourceRoot":"","sources":["../../src/utils/github.ts"],"names":[],"mappings":"AACA,OAAO,MAAM,MAAM,aAAa,CAAC;AACjC,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAE9C,MAAM,GAAG,GAAG,wBAAwB,CAAC;AAErC,MAAM,UAAU,KAAK;IACnB,IAAI,OAAO,CAAC,GAAG,CAAC,YAAY;QAAE,OAAO,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC;IAC9D,IAAI,CAAC;QACH,OAAO,QAAQ,CAAC,eAAe,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IACrG,CAAC;IAAC,MAAM,CAAC;QAAC,OAAO,EAAE,CAAC;IAAC,CAAC;AACxB,CAAC;AAED,MAAM,UAAU,WAAW;IACzB,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,QAAQ,CAAC,oCAAoC,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;QACxF,MAAM,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,yCAAyC,CAAC,CAAC;QAC/D,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;IACtC,CAAC;IAAC,MAAM,CAAC;QAAC,OAAO,EAAE,CAAC;IAAC,CAAC;AACxB,CAAC;AACD,MAAM,CAAC,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,UAAU,IAAI,mBAAmB,CAAC;AAExE,MAAM,CAAC,MAAM,aAAa,GAAG,OAAO,CAAC,GAAG,CAAC,aAAa,IAAI,YAAY,CAAC;AAEvE,MAAM,UAAU,YAAY;IAC1B,MAAM,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,aAAa,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAC3G,IAAI,IAAI,CAAC,MAAM;QAAE,OAAO,IAAI,CAAC;IAC7B,MAAM,GAAG,GAAG,WAAW,EAAE,CAAC;IAC1B,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;AAC1B,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,KAAa;AAExC,CAAC;AACD,SAAS,OAAO;IACd,OAAO,EAAE,aAAa,EAAE,UAAU,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,6BAA6B,EAAE,YAAY,EAAE,YAAY,EAAE,cAAc,EAAE,kBAAkB,EAAE,CAAC;AACvJ,CAAC;AACD,MAAM,CAAC,KAAK,UAAU,OAAO,CAAC,IAAY,EAAE,IAAY,EAAE,GAAG,GAAG,aAAa;IAC3E,UAAU,CAAC,IAAI,CAAC,CAAC;IACjB,MAAM,CAAC,GAAG,MAAM,KAAK,CAAC,GAAG,GAAG,UAAU,IAAI,aAAa,IAAI,QAAQ,GAAG,EAAE,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,CAAC,CAAC;IAClG,IAAI,CAAC,CAAC,MAAM,KAAK,GAAG;QAAE,OAAO,IAAI,CAAC;IAClC,IAAI,CAAC,CAAC,CAAC,EAAE;QAAE,MAAM,IAAI,KAAK,CAAC,cAAc,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IACxE,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,IAAI,EAAS,CAAC;IAChC,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IAC/D,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,EAAE,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;AACnD,CAAC;AAED,KAAK,UAAU,YAAY,CAAC,IAAY,EAAE,MAAc;IACtD,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,GAAG,UAAU,IAAI,kBAAkB,MAAM,EAAE,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,CAAC,CAAC;IAChG,IAAI,GAAG,CAAC,EAAE;QAAE,OAAO;IACnB,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,KAAK,CAAC,GAAG,GAAG,UAAU,IAAI,EAAE,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAS,CAAC;IACnG,MAAM,IAAI,GAAG,QAAQ,CAAC,cAAc,IAAI,MAAM,CAAC;IAC/C,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,KAAK,CAAC,GAAG,GAAG,UAAU,IAAI,kBAAkB,IAAI,EAAE,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAS,CAAC;IACpH,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG;QAAE,MAAM,IAAI,KAAK,CAAC,iBAAiB,MAAM,QAAQ,IAAI,SAAS,CAAC,CAAC;IACpF,MAAM,KAAK,GAAG,MAAM,KAAK,CAAC,GAAG,GAAG,UAAU,IAAI,WAAW,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,GAAG,EAAE,cAAc,MAAM,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;IAC/K,IAAI,CAAC,KAAK,CAAC,EAAE;QAAE,MAAM,IAAI,KAAK,CAAC,iBAAiB,MAAM,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;AACnG,CAAC;AACD,MAAM,CAAC,KAAK,UAAU,OAAO,CAAC,IAAY,EAAE,IAAY,EAAE,IAAS,EAAE,OAAe,EAAE,MAAM,GAAG,aAAa,EAAE,GAAY;IACxH,UAAU,CAAC,IAAI,CAAC,CAAC;IACjB,IAAI,CAAC,KAAK,EAAE;QAAE,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC;IACtD,MAAM,IAAI,GAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IAC9G,IAAI,GAAG;QAAE,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;IACxB,IAAI,CAAC,GAAG,MAAM,KAAK,CAAC,GAAG,GAAG,UAAU,IAAI,aAAa,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAChI,IAAI,CAAC,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;QAErB,MAAM,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QACjC,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;QACrE,IAAI,QAAQ,EAAE,GAAG;YAAE,IAAI,CAAC,GAAG,GAAG,QAAQ,CAAC,GAAG,CAAC;;YACtC,OAAO,IAAI,CAAC,GAAG,CAAC;QACrB,CAAC,GAAG,MAAM,KAAK,CAAC,GAAG,GAAG,UAAU,IAAI,aAAa,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC9H,CAAC;IACD,IAAI,CAAC,CAAC,MAAM,KAAK,GAAG;QAAE,MAAM,IAAI,KAAK,CAAC,wDAAwD,CAAC,CAAC;IAChG,IAAI,CAAC,CAAC,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAE7B,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;QACrE,IAAI,CAAC,QAAQ,EAAE,GAAG;YAAE,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;QACzF,IAAI,CAAC,GAAG,GAAG,QAAQ,CAAC,GAAG,CAAC;QACxB,CAAC,GAAG,MAAM,KAAK,CAAC,GAAG,GAAG,UAAU,IAAI,aAAa,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC5H,IAAI,CAAC,CAAC,MAAM,KAAK,GAAG;YAAE,MAAM,IAAI,KAAK,CAAC,wDAAwD,CAAC,CAAC;IAClG,CAAC;IACD,IAAI,CAAC,CAAC,CAAC,EAAE;QAAE,MAAM,IAAI,KAAK,CAAC,cAAc,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IACxE,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,IAAI,EAAS,CAAC;IAChC,MAAM,CAAC,IAAI,CAAC,aAAa,IAAI,IAAI,MAAM,OAAO,IAAI,EAAE,CAAC,CAAC;IACtD,OAAO,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC;AACvB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,IAAY;IAC1C,UAAU,CAAC,IAAI,CAAC,CAAC;IACjB,MAAM,CAAC,GAAG,MAAM,OAAO,CAAC,IAAI,EAAE,UAAU,EAAE,aAAa,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;IAC3E,IAAI,CAAC,CAAC;QAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC;IACtD,OAAO,EAAE,QAAQ,EAAE,CAAC,CAAC,OAAO,CAAC,QAAQ,IAAI,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,IAAI,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC;AAC1F,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,IAAY,EAAE,QAAe,EAAE,KAAY,EAAE,GAAkB,EAAE,GAAW;IAC1G,OAAO,OAAO,CAAC,IAAI,EAAE,UAAU,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,CAAC,EAAE,MAAM,EAAE,YAAY,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,IAAI,EAAE,EAAE,EAAE,GAAG,EAAE,aAAa,EAAE,GAAG,IAAI,SAAS,CAAC,CAAC;AACjK,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,KAAa,EAAE,MAAW;AAE1D,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,IAAY,EAAE,OAAoD;IACzG,UAAU,CAAC,IAAI,CAAC,CAAC;IACjB,IAAI,CAAC,KAAK,EAAE;QAAE,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC;IACtD,MAAM,CAAC,GAAG,MAAM,KAAK,CAAC,GAAG,GAAG,UAAU,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IACtH,IAAI,CAAC,CAAC,CAAC,EAAE;QAAE,MAAM,IAAI,KAAK,CAAC,gBAAgB,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IAC1E,MAAM,CAAC,IAAI,CAAC,wBAAwB,IAAI,EAAE,CAAC,CAAC;AAC9C,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,IAAY,EAAE,QAAgB;IACrE,UAAU,CAAC,IAAI,CAAC,CAAC;IACjB,IAAI,CAAC,KAAK,EAAE;QAAE,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC;IACtD,MAAM,CAAC,GAAG,MAAM,KAAK,CAAC,GAAG,GAAG,UAAU,IAAI,EAAE,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,CAAC,CAAC;IACtE,IAAI,CAAC,CAAC,CAAC,EAAE;QAAE,MAAM,IAAI,KAAK,CAAC,cAAc,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IACxE,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,IAAI,EAAS,CAAC;IACnC,IAAI,CAAC,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;QACxD,MAAM,kBAAkB,CAAC,IAAI,EAAE,EAAE,WAAW,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,CAAC;IACtE,CAAC;SAAM,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;QACzD,MAAM,kBAAkB,CAAC,IAAI,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC;IAC/C,CAAC;AACH,CAAC"}
@@ -12,11 +12,11 @@ const logger = winston.createLogger({
12
12
  })),
13
13
  transports: [
14
14
  new winston.transports.Console({
15
- level: 'warn', // only warn+error to stderr
15
+ level: 'warn',
16
16
  stderrLevels: ['warn', 'error']
17
17
  }),
18
18
  new winston.transports.File({
19
- filename: LOG_FILE_PATH, // all levels to file
19
+ filename: LOG_FILE_PATH,
20
20
  level: 'debug'
21
21
  })
22
22
  ]
@@ -1 +1 @@
1
- {"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,SAAS,CAAC;AAC9B,OAAO,EAAE,MAAM,EAAE,MAAM,IAAI,CAAC;AAC5B,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAE5B,MAAM,aAAa,GAAG,OAAO,CAAC,GAAG,CAAC,aAAa,IAAI,IAAI,CAAC,MAAM,EAAE,EAAE,gBAAgB,CAAC,CAAC;AAEpF,MAAM,MAAM,GAAmB,OAAO,CAAC,YAAY,CAAC;IAClD,KAAK,EAAE,OAAO,CAAC,GAAG,CAAC,SAAS,IAAI,MAAM;IAEtC,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,OAAO,CAC5B,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,yBAAyB,EAAE,CAAC,EAC/D,OAAO,CAAC,MAAM,CAAC,UAAU,EAAE,EAC3B,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,UAAU,EAAE,CAAC,SAAS,EAAE,OAAO,EAAE,WAAW,CAAC,EAAE,CAAC,EAC1E,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE;QAC3B,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,MAAM;YAC9D,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE;YACrC,CAAC,CAAC,EAAE,CAAC;QACP,OAAO,GAAG,IAAI,CAAC,SAAS,KAAK,IAAI,CAAC,KAAK,KAAK,IAAI,CAAC,OAAO,GAAG,KAAK,EAAE,CAAA;IACpE,CAAC,CAAC,CACH;IAED,UAAU,EAAE;QACV,IAAI,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC;YAC7B,KAAK,EAAE,MAAM,EAAkB,4BAA4B;YAC3D,YAAY,EAAE,CAAC,MAAM,EAAC,OAAO,CAAC;SAC/B,CAAC;QAEF,IAAI,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC;YAC1B,QAAQ,EAAE,aAAa,EAAK,qBAAqB;YACjD,KAAK,EAAE,OAAO;SACf,CAAC;KACH;CACF,CAAC,CAAC;AAEH,eAAe,MAAM,CAAC"}
1
+ {"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,SAAS,CAAC;AAC9B,OAAO,EAAE,MAAM,EAAE,MAAM,IAAI,CAAC;AAC5B,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAE5B,MAAM,aAAa,GAAG,OAAO,CAAC,GAAG,CAAC,aAAa,IAAI,IAAI,CAAC,MAAM,EAAE,EAAE,gBAAgB,CAAC,CAAC;AAEpF,MAAM,MAAM,GAAmB,OAAO,CAAC,YAAY,CAAC;IAClD,KAAK,EAAE,OAAO,CAAC,GAAG,CAAC,SAAS,IAAI,MAAM;IAEtC,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,OAAO,CAC5B,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,yBAAyB,EAAE,CAAC,EAC/D,OAAO,CAAC,MAAM,CAAC,UAAU,EAAE,EAC3B,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,UAAU,EAAE,CAAC,SAAS,EAAE,OAAO,EAAE,WAAW,CAAC,EAAE,CAAC,EAC1E,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE;QAC3B,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,MAAM;YAC9D,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE;YACrC,CAAC,CAAC,EAAE,CAAC;QACP,OAAO,GAAG,IAAI,CAAC,SAAS,KAAK,IAAI,CAAC,KAAK,KAAK,IAAI,CAAC,OAAO,GAAG,KAAK,EAAE,CAAA;IACpE,CAAC,CAAC,CACH;IAED,UAAU,EAAE;QACV,IAAI,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC;YAC7B,KAAK,EAAE,MAAM;YACb,YAAY,EAAE,CAAC,MAAM,EAAC,OAAO,CAAC;SAC/B,CAAC;QAEF,IAAI,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC;YAC1B,QAAQ,EAAE,aAAa;YACvB,KAAK,EAAE,OAAO;SACf,CAAC;KACH;CACF,CAAC,CAAC;AAEH,eAAe,MAAM,CAAC"}
@@ -1,10 +1,3 @@
1
- /**
2
- * Minimal S3-compatible R2 client over fetch with AWS SigV4.
3
- * Reads creds from env (GH Actions secrets):
4
- * R2_ACCOUNT_ID, R2_ACCESS_KEY_ID, R2_SECRET_ACCESS_KEY, R2_BUCKET, R2_KEY_PREFIX
5
- * CLOUDFLARER2TOKEN supported as "accountId:keyId:secret" or "keyId:secret" or raw secret
6
- * (with R2_ACCOUNT_ID also set) for seamless setup.
7
- */
8
1
  export interface R2Config {
9
2
  accountId: string;
10
3
  keyId: string;
@@ -1 +1 @@
1
- {"version":3,"file":"r2store.d.ts","sourceRoot":"","sources":["../../src/utils/r2store.ts"],"names":[],"mappings":"AAEA;;;;;;GAMG;AACH,MAAM,WAAW,QAAQ;IACvB,SAAS,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;CACpG;AAED,wBAAgB,WAAW,IAAI,QAAQ,GAAG,IAAI,CAe7C;AA8BD,wBAAsB,KAAK,CAAC,GAAG,EAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,GAAG,IAAI,CAAC,CAQ3E;AAED,wBAAsB,KAAK,CAAC,GAAG,EAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,CAOhF"}
1
+ {"version":3,"file":"r2store.d.ts","sourceRoot":"","sources":["../../src/utils/r2store.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,QAAQ;IACvB,SAAS,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;CACpG;AAED,wBAAgB,WAAW,IAAI,QAAQ,GAAG,IAAI,CAe7C;AA8BD,wBAAsB,KAAK,CAAC,GAAG,EAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,GAAG,IAAI,CAAC,CAQ3E;AAED,wBAAsB,KAAK,CAAC,GAAG,EAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,CAOhF"}
@@ -1 +1 @@
1
- {"version":3,"file":"r2store.js","sourceRoot":"","sources":["../../src/utils/r2store.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"r2store.js","sourceRoot":"","sources":["../../src/utils/r2store.ts"],"names":[],"mappings":"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"}
Binary file
@@ -4,6 +4,7 @@
4
4
  <meta charset="UTF-8">
5
5
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
6
  <title>Excalidrop Canvas</title>
7
+ <link rel="icon" type="image/png" href="/drop.png">
7
8
  <style>
8
9
  body {
9
10
  margin: 0;
@@ -1,9 +1,4 @@
1
- /**
2
- * Static-viewer GitHub sync. Zero config on *.github.io:
3
- * owner/repo are derived from the URL, token comes from
4
- * localStorage (pasted PAT or agent handoff via #token=...).
5
- * Device-flow login needs VITE_GITHUB_CLIENT_ID (one-time OAuth App setup).
6
- */
1
+
7
2
 
8
3
  export interface RepoRef { owner: string; repo: string; branch: string }
9
4
 
@@ -24,7 +19,7 @@ export function detectRepo(): RepoRef | null {
24
19
  const TOKEN_KEY = 'excalidrop_gh_token';
25
20
 
26
21
  export function getToken(): string | null {
27
- // Agent handoff: https://<site>/#token=gho_...
22
+
28
23
  if (window.location.hash.startsWith('#token=')) {
29
24
  const t = decodeURIComponent(window.location.hash.slice('#token='.length));
30
25
  if (t) {
@@ -55,7 +50,7 @@ async function gh(path: string, token: string, init?: RequestInit): Promise<any>
55
50
  return r.json();
56
51
  }
57
52
 
58
- /** Push scene JSON straight to the branch (viewer copy = source of truth for static mode). */
53
+
59
54
  export async function pushScene(
60
55
  ref: RepoRef, token: string, scene: { elements: unknown[]; files?: Record<string, unknown> },
61
56
  ): Promise<string> {
@@ -64,7 +59,7 @@ export async function pushScene(
64
59
  try {
65
60
  const cur = await gh(`/repos/${ref.owner}/${ref.repo}/contents/${path}?ref=${ref.branch}`, token);
66
61
  sha = cur.sha;
67
- } catch { /* new file */ }
62
+ } catch {}
68
63
  const body: any = {
69
64
  message: `excalidrop: autosync ${scene.elements.length} elements`,
70
65
  content: btoa(unescape(encodeURIComponent(JSON.stringify(
@@ -81,7 +76,7 @@ export async function pushScene(
81
76
  return out.content.sha as string;
82
77
  }
83
78
 
84
- /** Load the static scene copy (no auth needed for public repos). */
79
+
85
80
  export async function loadStaticScene(): Promise<{ elements: any[]; files?: Record<string, unknown> }> {
86
81
  const r = await fetch('./canvas.excalidraw', { cache: 'no-cache' });
87
82
  if (!r.ok) throw new Error(`scene fetch ${r.status}`);
@@ -89,11 +84,7 @@ export async function loadStaticScene(): Promise<{ elements: any[]; files?: Reco
89
84
  return { elements: j.elements || [], files: j.files || {} };
90
85
  }
91
86
 
92
- /** Device-flow login. Returns {userCode, verificationUri} — the token
93
- * polling step may be CORS-blocked on static hosting, so the agent can
94
- * complete it instead (github_login tool) and hand back a #token= link.
95
- * NOTE: no `scope` — GitHub App user-tokens use fine-grained permissions
96
- * (user ∩ app), never scopes. */
87
+
97
88
  export async function startDeviceFlow(clientId: string): Promise<{ user_code: string; verification_uri: string }> {
98
89
  const r = await fetch('https://github.com/login/device/code', {
99
90
  method: 'POST',
@@ -105,6 +96,92 @@ export async function startDeviceFlow(clientId: string): Promise<{ user_code: st
105
96
  return { user_code: j.user_code, verification_uri: j.verification_uri };
106
97
  }
107
98
 
99
+ export interface DeviceFlowSession {
100
+ device_code: string;
101
+ user_code: string;
102
+ verification_uri: string;
103
+ interval: number;
104
+
105
+ expires_at: number;
106
+ }
107
+
108
+ const FLOW_KEY = 'excalidrop_device_flow';
109
+
110
+
111
+ export async function startDeviceFlowFull(clientId: string): Promise<DeviceFlowSession> {
112
+ const r = await fetch('https://github.com/login/device/code', {
113
+ method: 'POST',
114
+ headers: { Accept: 'application/json', 'Content-Type': 'application/json' },
115
+ body: JSON.stringify({ client_id: clientId }),
116
+ });
117
+ if (!r.ok) throw new Error('device flow start failed');
118
+ const j = await r.json();
119
+ return {
120
+ device_code: j.device_code as string,
121
+ user_code: j.user_code as string,
122
+ verification_uri: (j.verification_uri as string) || 'https://github.com/login/device',
123
+ interval: Number(j.interval) || 5,
124
+ expires_at: Date.now() + (Number(j.expires_in) || 900) * 1000,
125
+ };
126
+ }
127
+
128
+
129
+ export async function pollDeviceToken(
130
+ clientId: string,
131
+ session: Pick<DeviceFlowSession, 'device_code' | 'interval' | 'expires_at'>,
132
+ signal?: AbortSignal,
133
+ ): Promise<string> {
134
+ let interval = session.interval;
135
+ for (;;) {
136
+ if (signal?.aborted) throw new DOMException('Login cancelled', 'AbortError');
137
+ if (Date.now() >= session.expires_at) throw new Error('Login code expired — please try again.');
138
+ await new Promise((r) => setTimeout(r, interval * 1000));
139
+ if (signal?.aborted) throw new DOMException('Login cancelled', 'AbortError');
140
+ const r = await fetch('https://github.com/login/oauth/access_token', {
141
+ method: 'POST',
142
+ headers: { Accept: 'application/json', 'Content-Type': 'application/json' },
143
+ body: JSON.stringify({
144
+ client_id: clientId,
145
+ device_code: session.device_code,
146
+ grant_type: 'urn:ietf:params:oauth:grant-type:device_code',
147
+ }),
148
+ });
149
+ if (!r.ok) throw new Error('Login polling failed');
150
+ const j = await r.json();
151
+ if (j.access_token) return j.access_token as string;
152
+ if (j.error === 'authorization_pending') continue;
153
+ if (j.error === 'slow_down') {
154
+ interval += 5;
155
+ continue;
156
+ }
157
+ if (j.error) throw new Error(j.error_description || j.error);
158
+ }
159
+ }
160
+
161
+ export function saveFlowSession(s: DeviceFlowSession | null): void {
162
+ try {
163
+ if (s) sessionStorage.setItem(FLOW_KEY, JSON.stringify(s));
164
+ else sessionStorage.removeItem(FLOW_KEY);
165
+ } catch {
166
+
167
+ }
168
+ }
169
+
170
+ export function loadFlowSession(): DeviceFlowSession | null {
171
+ try {
172
+ const raw = sessionStorage.getItem(FLOW_KEY);
173
+ if (!raw) return null;
174
+ const s = JSON.parse(raw) as DeviceFlowSession;
175
+ if (!s.device_code || Date.now() >= s.expires_at) {
176
+ sessionStorage.removeItem(FLOW_KEY);
177
+ return null;
178
+ }
179
+ return s;
180
+ } catch {
181
+ return null;
182
+ }
183
+ }
184
+
108
185
  export type Access = 'editor' | 'viewer' | 'denied';
109
186
 
110
187
  export type AccessDetail =
@@ -113,19 +190,12 @@ export type AccessDetail =
113
190
  | 'no-token-permissions' // classic token with no read access to the repo
114
191
  | null; // editor/viewer — no problem to report
115
192
 
116
- /** What can this token do on this repo? Reads the user's app installations —
117
- * the token only reaches repos both the user AND the app can access, so this
118
- * mirrors GitHub's own enforcement (repo access == canvas access).
119
- * `detail` tells the UI *why* access was denied so the login modal can
120
- * point at the right fix (install the app vs. add this repo to the install). */
193
+
121
194
  export async function checkAccess(ref: RepoRef, token: string): Promise<{ access: Access; login: string; detail: AccessDetail }> {
122
195
  const me = await gh('/user', token);
123
196
  const login = (me.login || '') as string;
124
197
  const wanted = `${ref.owner}/${ref.repo}`.toLowerCase();
125
- // Path 1: GitHub App user-token (ghu_) — installations list the repos it reaches.
126
- // Classic PATs/OAuth tokens get 403 here ("must authenticate with an access
127
- // token authorized to a GitHub App") and fall through to Path 2.
128
- // per_page=100: without it a user with many repos can miss the hit (p.30 default).
198
+
129
199
  const inst = await gh('/user/installations?per_page=100', token).catch(() => null);
130
200
  if (inst?.installations) {
131
201
  if ((inst.installations as unknown[]).length === 0) {
@@ -135,10 +205,7 @@ export async function checkAccess(ref: RepoRef, token: string): Promise<{ access
135
205
  const repos = await gh(`/user/installations/${(i as any).id}/repositories?per_page=100`, token).catch(() => null);
136
206
  const hit = (repos?.repositories || []).find((r: any) => r.full_name.toLowerCase() === wanted);
137
207
  if (hit) {
138
- // Token reaches the repo. Resolve read vs write via the collaborator
139
- // permission endpoint; if that probe fails, start optimistic-editor —
140
- // the Contents API is the real enforcement and a 403 push demotes to
141
- // viewer (fail-open UI, fail-closed API).
208
+
142
209
  const perms = await gh(`/repos/${ref.owner}/${ref.repo}/collaborators/${login}/permission`, token).catch(() => null);
143
210
  const p = (perms?.permission || '') as string;
144
211
  if (p === 'read' || p === 'triage') return { access: 'viewer', login, detail: null };
@@ -147,7 +214,7 @@ export async function checkAccess(ref: RepoRef, token: string): Promise<{ access
147
214
  }
148
215
  return { access: 'denied', login, detail: 'repo-not-covered' };
149
216
  }
150
- // Path 2: classic token — the repo endpoint echoes *this token's* permissions.
217
+
151
218
  const repo = await gh(`/repos/${ref.owner}/${ref.repo}`, token).catch(() => null);
152
219
  if (!repo?.permissions) return { access: 'denied', login, detail: 'no-token-permissions' };
153
220
  if (repo.permissions.push || repo.permissions.admin || repo.permissions.maintain) {
@@ -156,16 +223,12 @@ export async function checkAccess(ref: RepoRef, token: string): Promise<{ access
156
223
  return { access: 'viewer', login, detail: null };
157
224
  }
158
225
 
159
- /**
160
- * Shared GitHub App (one app, many installs — any user installs it on their
161
- * own repo; the Client ID is public, not a secret). Overridable at publish
162
- * time via VITE_GITHUB_CLIENT_ID / VITE_GITHUB_APP_SLUG.
163
- */
226
+
164
227
  export const CLIENT_ID =
165
228
  ((import.meta as any).env?.VITE_GITHUB_CLIENT_ID as string | undefined) ||
166
- 'Iv23liuS2fx3QOEIoDmx'; // shared Excalidrop GitHub App (public ID, not a secret)
229
+ 'Iv23liuS2fx3QOEIoDmx';
167
230
  export const APP_SLUG =
168
231
  ((import.meta as any).env?.VITE_GITHUB_APP_SLUG as string | undefined) || 'excalidrop';
169
232
  export const APP_INSTALL_URL = `https://github.com/apps/${APP_SLUG}/installations/new`;
170
- /** True when a real Client ID is baked in (not the publish-time placeholder). */
233
+
171
234
  export const HAS_CLIENT_ID = !!CLIENT_ID && !CLIENT_ID.includes('EXCALIDROP_APP');
@@ -8,16 +8,12 @@ export interface MermaidConversionResult {
8
8
  error?: string;
9
9
  }
10
10
 
11
- /**
12
- * Converts a Mermaid diagram definition to Excalidraw elements
13
- * This function needs to run in the browser context as it requires DOM access
14
- */
11
+
15
12
  export const convertMermaidToExcalidraw = async (
16
13
  mermaidDefinition: string,
17
14
  config?: MermaidConfig
18
15
  ): Promise<MermaidConversionResult> => {
19
16
  try {
20
- // Parse the Mermaid diagram to Excalidraw elements
21
17
  const result = await parseMermaidToExcalidraw(mermaidDefinition, config);
22
18
 
23
19
  return {
@@ -33,9 +29,7 @@ export const convertMermaidToExcalidraw = async (
33
29
  }
34
30
  };
35
31
 
36
- /**
37
- * Default Mermaid configuration for Excalidraw conversion
38
- */
32
+
39
33
  export const DEFAULT_MERMAID_CONFIG: MermaidConfig = {
40
34
  startOnLoad: false,
41
35
  flowchart: {
@@ -1,20 +1,4 @@
1
- /**
2
- * Thin WebMCP layer for the Excalidrop canvas.
3
- *
4
- * Exposes the live in-tab Excalidraw scene as browser-native tools via
5
- * `document.modelContext.registerTool()` (W3C WebML CG draft, Chromium 146+
6
- * behind `#enable-webmcp-testing`). No-ops where the API is absent.
7
- *
8
- * Tools mirror the local MCP names so agents recognise them:
9
- * - describe_scene (read-only)
10
- * - create_elements (write)
11
- * - update_element (write)
12
- * - delete_element (write)
13
- * - clear_canvas (consequential)
14
- *
15
- * The page itself is the tool registry — no HTTP/SSE/stdio involved.
16
- * Auth/session comes for free: tools run inside the user's tab.
17
- */
1
+
18
2
 
19
3
  interface MinimalCanvasApi {
20
4
  getSceneElements(): Array<Record<string, any>>;
@@ -53,7 +37,7 @@ function getModelContext(): ModelContextLike | null {
53
37
  (nav['modelContext'] as ModelContextLike | undefined);
54
38
  if (mc && typeof mc.registerTool === 'function') return mc;
55
39
  } catch {
56
- /* non-DOM / restricted context */
40
+
57
41
  }
58
42
  return null;
59
43
  }
@@ -64,7 +48,7 @@ function newId(): string {
64
48
  return (crypto as Crypto).randomUUID().slice(0, 12);
65
49
  }
66
50
  } catch {
67
- /* fall through */
51
+
68
52
  }
69
53
  return `el_${Math.random().toString(36).slice(2, 10)}`;
70
54
  }
@@ -107,11 +91,7 @@ const ELEMENT_SCHEMA: Record<string, unknown> = {
107
91
  additionalProperties: true,
108
92
  };
109
93
 
110
- /**
111
- * Register the thin WebMCP toolset against the live canvas.
112
- * Safe to call anywhere: feature-detects `document.modelContext` first.
113
- * Returns a handle whose `cleanup()` unregisters all tools (AbortSignal).
114
- */
94
+
115
95
  export function registerCanvasWebMCP(getApi: CanvasApiGetter): WebMCPHandle {
116
96
  const noop = () => {};
117
97
  const mc = getModelContext();
@@ -132,12 +112,12 @@ export function registerCanvasWebMCP(getApi: CanvasApiGetter): WebMCPHandle {
132
112
  const p = mc.registerTool(tool, { signal });
133
113
  if (p && typeof (p as Promise<void>).catch === 'function') {
134
114
  (p as Promise<void>).catch(() => {
135
- /* duplicate / invalid — ignore, keeps thin layer best-effort */
115
+
136
116
  });
137
117
  }
138
118
  count += 1;
139
119
  } catch {
140
- /* API present but rejected synchronously — ignore */
120
+
141
121
  }
142
122
  };
143
123
 
@@ -278,7 +258,7 @@ export function registerCanvasWebMCP(getApi: CanvasApiGetter): WebMCPHandle {
278
258
  try {
279
259
  controller.abort();
280
260
  } catch {
281
- /* ignore */
261
+
282
262
  }
283
263
  },
284
264
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "excalidrop",
3
- "version": "0.1.2",
3
+ "version": "0.1.4",
4
4
  "description": "Drop an Excalidraw canvas + MCP server into any project — per-project ports, one-command AI agent setup",
5
5
  "main": "dist/index.js",
6
6
  "type": "module",
@@ -19,6 +19,7 @@
19
19
  "dev:server": "npx tsc --watch",
20
20
  "production": "npm run build && npm run canvas",
21
21
  "postinstall": "node scripts/postinstall.mjs",
22
+ "prepare": "npm run build",
22
23
  "excalidrop": "node dist/cli.js",
23
24
  "prepublishOnly": "npm run build",
24
25
  "test:bind": "npm run build:server && node scripts/check-local-bind.mjs",