@agent-canvas/cli 0.1.0
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/bin/agent-canvas.js +2 -0
- package/dist/commands/start.d.ts +3 -0
- package/dist/commands/start.js +197 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.js +452 -0
- package/dist/lib/protocol.d.ts +203 -0
- package/dist/lib/protocol.js +1 -0
- package/dist/lib/ws-client.d.ts +13 -0
- package/dist/lib/ws-client.js +88 -0
- package/dist/server/index.d.ts +6 -0
- package/dist/server/index.js +162 -0
- package/dist/static/assets/Tableau10-B-NsZVaP.js +1 -0
- package/dist/static/assets/_commonjs-dynamic-modules-TDtrdbi3.js +1 -0
- package/dist/static/assets/ar-SA-G6X2FPQ2-DyNcQEG6.js +10 -0
- package/dist/static/assets/arc-BbhT3kpR.js +1 -0
- package/dist/static/assets/array-BKyUJesY.js +1 -0
- package/dist/static/assets/az-AZ-76LH7QW2-6FRN2HRu.js +1 -0
- package/dist/static/assets/bg-BG-XCXSNQG7-BAatOQKg.js +5 -0
- package/dist/static/assets/blockDiagram-38ab4fdb-CWMvXzur.js +118 -0
- package/dist/static/assets/bn-BD-2XOGV67Q-CS2Tej4d.js +5 -0
- package/dist/static/assets/c4Diagram-3d4e48cf-C7AOUEVw.js +10 -0
- package/dist/static/assets/ca-ES-6MX7JW3Y-CrRON-ta.js +8 -0
- package/dist/static/assets/channel-DfDbkfoc.js +1 -0
- package/dist/static/assets/classDiagram-70f12bd4-Dy_Zdc-c.js +2 -0
- package/dist/static/assets/classDiagram-v2-f2320105-CjSxB_UF.js +2 -0
- package/dist/static/assets/clone-C-cGF6mM.js +1 -0
- package/dist/static/assets/createText-2e5e7dd3-CREXrDg4.js +7 -0
- package/dist/static/assets/cs-CZ-2BRQDIVT-BLn2zwD5.js +11 -0
- package/dist/static/assets/da-DK-5WZEPLOC-DTfqWS1m.js +5 -0
- package/dist/static/assets/de-DE-XR44H4JA-CBm33ToK.js +8 -0
- package/dist/static/assets/directory-open-01563666-DWU9wJ6I.js +1 -0
- package/dist/static/assets/directory-open-4ed118d0-CunoC1EB.js +1 -0
- package/dist/static/assets/edges-e0da2a9e-XV6mdrlk.js +4 -0
- package/dist/static/assets/el-GR-BZB4AONW-CovIUFtq.js +10 -0
- package/dist/static/assets/erDiagram-9861fffd-BHiuXMbj.js +51 -0
- package/dist/static/assets/es-ES-U4NZUMDT-xhwf3Gvs.js +9 -0
- package/dist/static/assets/eu-ES-A7QVB2H4-CY-s9u74.js +11 -0
- package/dist/static/assets/fa-IR-HGAKTJCU-CqiYv3_M.js +8 -0
- package/dist/static/assets/fi-FI-Z5N7JZ37-ByFmziTt.js +6 -0
- package/dist/static/assets/file-open-002ab408-DIuFHtCF.js +1 -0
- package/dist/static/assets/file-open-7c801643-684qeFg4.js +1 -0
- package/dist/static/assets/file-save-3189631c-C1wFhQhH.js +1 -0
- package/dist/static/assets/file-save-745eba88-Bb9F9Kg7.js +1 -0
- package/dist/static/assets/flowDb-956e92f1--YaaQ1az.js +10 -0
- package/dist/static/assets/flowDiagram-66a62f08-CiStLJ_j.js +4 -0
- package/dist/static/assets/flowDiagram-v2-96b9c2cf-D8VcptSb.js +1 -0
- package/dist/static/assets/flowchart-elk-definition-4a651766-iZZsNsFB.js +139 -0
- package/dist/static/assets/fr-FR-RHASNOE6-BDM0Orh-.js +9 -0
- package/dist/static/assets/ganttDiagram-c361ad54--D8Gb02S.js +257 -0
- package/dist/static/assets/gitGraphDiagram-72cf32ee-BP9V2H_i.js +70 -0
- package/dist/static/assets/gl-ES-HMX3MZ6V-YzWSA_U5.js +10 -0
- package/dist/static/assets/graph-CDY5v4hg.js +1 -0
- package/dist/static/assets/he-IL-6SHJWFNN-DGhuVKeh.js +10 -0
- package/dist/static/assets/hi-IN-IWLTKZ5I-Bf2OxFpo.js +4 -0
- package/dist/static/assets/hu-HU-A5ZG7DT2-Bgm6MfVV.js +7 -0
- package/dist/static/assets/id-ID-SAP4L64H-Be4CWRpp.js +10 -0
- package/dist/static/assets/image-blob-reduce.esm-D6s-rqMO.js +7 -0
- package/dist/static/assets/index-3862675e-DO7_p44e.js +1 -0
- package/dist/static/assets/index-D9K5p6xj.js +256 -0
- package/dist/static/assets/index-M3ercR-c.js +97 -0
- package/dist/static/assets/infoDiagram-f8f76790-R_fZ7_IN.js +7 -0
- package/dist/static/assets/init-Gi6I4Gst.js +1 -0
- package/dist/static/assets/it-IT-JPQ66NNP-BNcyVwD2.js +11 -0
- package/dist/static/assets/ja-JP-DBVTYXUO-CLiGkSXX.js +8 -0
- package/dist/static/assets/journeyDiagram-49397b02-DXa6Hio7.js +139 -0
- package/dist/static/assets/kaa-6HZHGXH3-CtCiUe72.js +1 -0
- package/dist/static/assets/kab-KAB-ZGHBKWFO-jaWR3c0c.js +8 -0
- package/dist/static/assets/katex-Cu_Erd72.js +261 -0
- package/dist/static/assets/kk-KZ-P5N5QNE5-Dz3mQQBP.js +1 -0
- package/dist/static/assets/km-KH-HSX4SM5Z-CQlDP0cg.js +11 -0
- package/dist/static/assets/ko-KR-MTYHY66A-SADoSfWj.js +9 -0
- package/dist/static/assets/ku-TR-6OUDTVRD-B27fDZ8n.js +9 -0
- package/dist/static/assets/layout-DFkOIywR.js +1 -0
- package/dist/static/assets/line-BkGGz1Gi.js +1 -0
- package/dist/static/assets/linear-bj4xbXj8.js +1 -0
- package/dist/static/assets/lt-LT-XHIRWOB4-CoJ8AQlv.js +3 -0
- package/dist/static/assets/lv-LV-5QDEKY6T-BNu6FZuj.js +7 -0
- package/dist/static/assets/mindmap-definition-fc14e90a-DmZ8jzp5.js +425 -0
- package/dist/static/assets/mr-IN-CRQNXWMA-BvurhLbm.js +13 -0
- package/dist/static/assets/my-MM-5M5IBNSE-mRTevT97.js +1 -0
- package/dist/static/assets/nb-NO-T6EIAALU-BcOTaqeP.js +10 -0
- package/dist/static/assets/nl-NL-IS3SIHDZ-Bd8Xm5YF.js +8 -0
- package/dist/static/assets/nn-NO-6E72VCQL-DEvQB3Jv.js +8 -0
- package/dist/static/assets/oc-FR-POXYY2M6--hbNWw9E.js +8 -0
- package/dist/static/assets/ordinal-BENe2yWM.js +1 -0
- package/dist/static/assets/pa-IN-N4M65BXN-pIQoan9P.js +4 -0
- package/dist/static/assets/path-CbwjOpE9.js +1 -0
- package/dist/static/assets/pica-C10VOhpQ.js +7 -0
- package/dist/static/assets/pieDiagram-8a3498a8-CiEHu0OP.js +35 -0
- package/dist/static/assets/pl-PL-T2D74RX3-DFiZqgo0.js +9 -0
- package/dist/static/assets/pt-BR-5N22H2LF-Cc0xlz4q.js +9 -0
- package/dist/static/assets/pt-PT-UZXXM6DQ-B3zd49KM.js +9 -0
- package/dist/static/assets/quadrantDiagram-120e2f19-DKTSsmZy.js +7 -0
- package/dist/static/assets/requirementDiagram-deff3bca-DQOiJiwY.js +52 -0
- package/dist/static/assets/ro-RO-JPDTUUEW-C9N7IthB.js +11 -0
- package/dist/static/assets/roundRect-0PYZxl1G.js +1 -0
- package/dist/static/assets/ru-RU-B4JR7IUQ-CIZdU2_B.js +9 -0
- package/dist/static/assets/sankeyDiagram-04a897e0-TilwwYL-.js +8 -0
- package/dist/static/assets/sequenceDiagram-704730f1-BiVJk4lg.js +122 -0
- package/dist/static/assets/si-LK-N5RQ5JYF-CxFkliCr.js +1 -0
- package/dist/static/assets/sk-SK-C5VTKIMK-JZtsQcSw.js +6 -0
- package/dist/static/assets/sl-SI-NN7IZMDC-BUYqyq49.js +6 -0
- package/dist/static/assets/stateDiagram-587899a1-B1sCio7H.js +1 -0
- package/dist/static/assets/stateDiagram-v2-d93cdb3a-CoGzFssB.js +1 -0
- package/dist/static/assets/styles-6aaf32cf-C1s7Ul3J.js +207 -0
- package/dist/static/assets/styles-9a916d00-Bp5-VH98.js +160 -0
- package/dist/static/assets/styles-c10674c1-DfO5CrB5.js +116 -0
- package/dist/static/assets/subset-shared.chunk-QCqXuXCH.js +84 -0
- package/dist/static/assets/subset-worker.chunk-BjKI4tmi.js +1 -0
- package/dist/static/assets/sv-SE-XGPEYMSR-Cz1rfwXY.js +10 -0
- package/dist/static/assets/svgDrawCommon-08f97a94-mI-dkcv_.js +1 -0
- package/dist/static/assets/ta-IN-2NMHFXQM-CtHc6ooj.js +9 -0
- package/dist/static/assets/th-TH-HPSO5L25-xIQ7sAKy.js +2 -0
- package/dist/static/assets/timeline-definition-85554ec2-BylSkqlD.js +61 -0
- package/dist/static/assets/tr-TR-DEFEU3FU-CrIfozru.js +7 -0
- package/dist/static/assets/uk-UA-QMV73CPH-Dr07MVsF.js +6 -0
- package/dist/static/assets/vi-VN-M7AON7JQ-ChRYxYRs.js +5 -0
- package/dist/static/assets/xychartDiagram-e933f94c-ByBCDYvY.js +7 -0
- package/dist/static/assets/zh-CN-LNUGB5OW-B9Dg6rSU.js +10 -0
- package/dist/static/assets/zh-HK-E62DVLB3-17W7WnGJ.js +1 -0
- package/dist/static/assets/zh-TW-RAJ6MFWO-B1yJY7cJ.js +9 -0
- package/dist/static/chunk-3KPV5WBD.js +25695 -0
- package/dist/static/chunk-3KPV5WBD.js.map +7 -0
- package/dist/static/chunk-66VA7UC4.js +7 -0
- package/dist/static/chunk-66VA7UC4.js.map +7 -0
- package/dist/static/chunk-LMHBUWQS.js +709 -0
- package/dist/static/chunk-LMHBUWQS.js.map +7 -0
- package/dist/static/chunk-MFAYKRVR.js +66 -0
- package/dist/static/chunk-MFAYKRVR.js.map +7 -0
- package/dist/static/chunk-OKSO7T74.js +4132 -0
- package/dist/static/chunk-OKSO7T74.js.map +7 -0
- package/dist/static/chunk-XDFCUUT6.js +31 -0
- package/dist/static/chunk-XDFCUUT6.js.map +7 -0
- package/dist/static/data/image-WB3WPX2D.js +13 -0
- package/dist/static/data/image-WB3WPX2D.js.map +7 -0
- package/dist/static/fonts/Assistant/Assistant-Bold.woff2 +0 -0
- package/dist/static/fonts/Assistant/Assistant-Medium.woff2 +0 -0
- package/dist/static/fonts/Assistant/Assistant-Regular.woff2 +0 -0
- package/dist/static/fonts/Assistant/Assistant-SemiBold.woff2 +0 -0
- package/dist/static/fonts/Cascadia/CascadiaCode-Regular.woff2 +0 -0
- package/dist/static/fonts/ComicShanns/ComicShanns-Regular-279a7b317d12eb88de06167bd672b4b4.woff2 +0 -0
- package/dist/static/fonts/ComicShanns/ComicShanns-Regular-6e066e8de2ac57ea9283adb9c24d7f0c.woff2 +0 -0
- package/dist/static/fonts/ComicShanns/ComicShanns-Regular-dc6a8806fa96795d7b3be5026f989a17.woff2 +0 -0
- package/dist/static/fonts/ComicShanns/ComicShanns-Regular-fcb0fc02dcbee4c9846b3e2508668039.woff2 +0 -0
- package/dist/static/fonts/Excalifont/Excalifont-Regular-349fac6ca4700ffec595a7150a0d1e1d.woff2 +0 -0
- package/dist/static/fonts/Excalifont/Excalifont-Regular-3f2c5db56cc93c5a6873b1361d730c16.woff2 +0 -0
- package/dist/static/fonts/Excalifont/Excalifont-Regular-41b173a47b57366892116a575a43e2b6.woff2 +0 -0
- package/dist/static/fonts/Excalifont/Excalifont-Regular-623ccf21b21ef6b3a0d87738f77eb071.woff2 +0 -0
- package/dist/static/fonts/Excalifont/Excalifont-Regular-a88b72a24fb54c9f94e3b5fdaa7481c9.woff2 +0 -0
- package/dist/static/fonts/Excalifont/Excalifont-Regular-b9dcf9d2e50a1eaf42fc664b50a3fd0d.woff2 +0 -0
- package/dist/static/fonts/Excalifont/Excalifont-Regular-be310b9bcd4f1a43f571c46df7809174.woff2 +0 -0
- package/dist/static/fonts/Liberation/LiberationSans-Regular.woff2 +0 -0
- package/dist/static/fonts/Lilita/Lilita-Regular-i7dPIFZ9Zz-WBtRtedDbYE98RXi4EwSsbg.woff2 +0 -0
- package/dist/static/fonts/Lilita/Lilita-Regular-i7dPIFZ9Zz-WBtRtedDbYEF8RXi4EwQ.woff2 +0 -0
- package/dist/static/fonts/Nunito/Nunito-Regular-XRXI3I6Li01BKofiOc5wtlZ2di8HDIkhdTA3j6zbXWjgevT5.woff2 +0 -0
- package/dist/static/fonts/Nunito/Nunito-Regular-XRXI3I6Li01BKofiOc5wtlZ2di8HDIkhdTQ3j6zbXWjgeg.woff2 +0 -0
- package/dist/static/fonts/Nunito/Nunito-Regular-XRXI3I6Li01BKofiOc5wtlZ2di8HDIkhdTk3j6zbXWjgevT5.woff2 +0 -0
- package/dist/static/fonts/Nunito/Nunito-Regular-XRXI3I6Li01BKofiOc5wtlZ2di8HDIkhdTo3j6zbXWjgevT5.woff2 +0 -0
- package/dist/static/fonts/Nunito/Nunito-Regular-XRXI3I6Li01BKofiOc5wtlZ2di8HDIkhdTs3j6zbXWjgevT5.woff2 +0 -0
- package/dist/static/fonts/Virgil/Virgil-Regular.woff2 +0 -0
- package/dist/static/fonts/Xiaolai/Xiaolai-Regular-019d66dcad46dc156b162d267f981c20.woff2 +0 -0
- package/dist/static/fonts/Xiaolai/Xiaolai-Regular-04b718e5623574919c8b0dea5f301444.woff2 +0 -0
- package/dist/static/fonts/Xiaolai/Xiaolai-Regular-069e77aac84590e2e991d0a0176d34f2.woff2 +0 -0
- package/dist/static/fonts/Xiaolai/Xiaolai-Regular-06c77b8c66e51ed6c63ccb502dd8b8af.woff2 +0 -0
- package/dist/static/fonts/Xiaolai/Xiaolai-Regular-08e0dc436ad0ad61ba5558db0674d762.woff2 +0 -0
- package/dist/static/fonts/Xiaolai/Xiaolai-Regular-093b9ef39a46ceae95a1df18a0a3a326.woff2 +0 -0
- package/dist/static/fonts/Xiaolai/Xiaolai-Regular-095c169f3314805276f603a362766abd.woff2 +0 -0
- package/dist/static/fonts/Xiaolai/Xiaolai-Regular-09850c4077f3fffe707905872e0e2460.woff2 +0 -0
- package/dist/static/fonts/Xiaolai/Xiaolai-Regular-0986d134c05864f5025962eef9f994a0.woff2 +0 -0
- package/dist/static/fonts/Xiaolai/Xiaolai-Regular-0b5d723fdc4e249c140f0909e87d03b4.woff2 +0 -0
- package/dist/static/fonts/Xiaolai/Xiaolai-Regular-0f626226ba1272e832aea87bafd9720e.woff2 +0 -0
- package/dist/static/fonts/Xiaolai/Xiaolai-Regular-0f7fb1e0d5015bb1371343153ecf7ce3.woff2 +0 -0
- package/dist/static/fonts/Xiaolai/Xiaolai-Regular-0fa55a080fcd0f9dc2e0b0058b793df8.woff2 +0 -0
- package/dist/static/fonts/Xiaolai/Xiaolai-Regular-0facdf1ea213ba40261022f5d5ed4493.woff2 +0 -0
- package/dist/static/fonts/Xiaolai/Xiaolai-Regular-10a7ae9a371830a80c3d844acf1c02d7.woff2 +0 -0
- package/dist/static/fonts/Xiaolai/Xiaolai-Regular-112c051027b2d766c19a519f6ee1f4f7.woff2 +0 -0
- package/dist/static/fonts/Xiaolai/Xiaolai-Regular-11c345711937f0ba4b8f7b6b919c8440.woff2 +0 -0
- package/dist/static/fonts/Xiaolai/Xiaolai-Regular-12b52b58eb3df36804b9a654ec9ee194.woff2 +0 -0
- package/dist/static/fonts/Xiaolai/Xiaolai-Regular-13ae07ed2e272d26d59bc0691cd7117a.woff2 +0 -0
- package/dist/static/fonts/Xiaolai/Xiaolai-Regular-13d2887ec8ee73c43acdabc52a05af7b.woff2 +0 -0
- package/dist/static/fonts/Xiaolai/Xiaolai-Regular-145aa02cdd91946e67dc934e1acffe75.woff2 +0 -0
- package/dist/static/fonts/Xiaolai/Xiaolai-Regular-15dc6d811c9cd078f9086a740d5a1038.woff2 +0 -0
- package/dist/static/fonts/Xiaolai/Xiaolai-Regular-173945821411c09f70c95f98d590e697.woff2 +0 -0
- package/dist/static/fonts/Xiaolai/Xiaolai-Regular-1b611157cd46bb184d4fa4dae2d6a2b8.woff2 +0 -0
- package/dist/static/fonts/Xiaolai/Xiaolai-Regular-1e6fd68f1f3902ce48ce8c69df385622.woff2 +0 -0
- package/dist/static/fonts/Xiaolai/Xiaolai-Regular-1ee544f0f1dac422545c505baa788992.woff2 +0 -0
- package/dist/static/fonts/Xiaolai/Xiaolai-Regular-1fdc0c67ed57263a80fd108c1f6ccf24.woff2 +0 -0
- package/dist/static/fonts/Xiaolai/Xiaolai-Regular-203b0e569e3b14aac86a003dc3fa523e.woff2 +0 -0
- package/dist/static/fonts/Xiaolai/Xiaolai-Regular-20cc1bbf50e7efb442756cb605672c1f.woff2 +0 -0
- package/dist/static/fonts/Xiaolai/Xiaolai-Regular-20e7bf72fa05de9adf7dbcc7bf51dde6.woff2 +0 -0
- package/dist/static/fonts/Xiaolai/Xiaolai-Regular-21430ee05a1248901da8d0de08744d47.woff2 +0 -0
- package/dist/static/fonts/Xiaolai/Xiaolai-Regular-23686f7f29da6e8008c36dd3a80c83d6.woff2 +0 -0
- package/dist/static/fonts/Xiaolai/Xiaolai-Regular-23ad2d71b280f00b1363b95b7bea94eb.woff2 +0 -0
- package/dist/static/fonts/Xiaolai/Xiaolai-Regular-23f228f3999c01983860012330e4be08.woff2 +0 -0
- package/dist/static/fonts/Xiaolai/Xiaolai-Regular-24476a126f129212beb33f66853ea151.woff2 +0 -0
- package/dist/static/fonts/Xiaolai/Xiaolai-Regular-24a21c1e4449222e8d1898d69ff3a404.woff2 +0 -0
- package/dist/static/fonts/Xiaolai/Xiaolai-Regular-25b7f38e18f035f96cb5e547bd2bd08c.woff2 +0 -0
- package/dist/static/fonts/Xiaolai/Xiaolai-Regular-29cec36cd205b211da97acabaa62f055.woff2 +0 -0
- package/dist/static/fonts/Xiaolai/Xiaolai-Regular-2a26d20a23b00898ce82f09d2ee47c3f.woff2 +0 -0
- package/dist/static/fonts/Xiaolai/Xiaolai-Regular-2adbc89c11e65905393d3dfc468b9d5b.woff2 +0 -0
- package/dist/static/fonts/Xiaolai/Xiaolai-Regular-2b7441d46298788ac94e610ffcc709b6.woff2 +0 -0
- package/dist/static/fonts/Xiaolai/Xiaolai-Regular-2b77e8ebfb2367ab2662396a60e7d320.woff2 +0 -0
- package/dist/static/fonts/Xiaolai/Xiaolai-Regular-2cf96d082d35ea3d8106851223ad0d16.woff2 +0 -0
- package/dist/static/fonts/Xiaolai/Xiaolai-Regular-2d43040e86ff03ba677f6f9c04cd0805.woff2 +0 -0
- package/dist/static/fonts/Xiaolai/Xiaolai-Regular-2e33e8dc771ef5e1d9127d60a6b73679.woff2 +0 -0
- package/dist/static/fonts/Xiaolai/Xiaolai-Regular-33432927cd87d40cfe393c7482bf221f.woff2 +0 -0
- package/dist/static/fonts/Xiaolai/Xiaolai-Regular-353f33792a8f60dc69323ddf635a269e.woff2 +0 -0
- package/dist/static/fonts/Xiaolai/Xiaolai-Regular-36925dfe329a45086cbb7fc5c20d45ac.woff2 +0 -0
- package/dist/static/fonts/Xiaolai/Xiaolai-Regular-3717077e38f98d89eae729b6c14e56dc.woff2 +0 -0
- package/dist/static/fonts/Xiaolai/Xiaolai-Regular-3756e81d3e149cf6099163ee79944fec.woff2 +0 -0
- package/dist/static/fonts/Xiaolai/Xiaolai-Regular-395c35dd584b56b0789f58a0559beaf1.woff2 +0 -0
- package/dist/static/fonts/Xiaolai/Xiaolai-Regular-3c9de2ae0ea4bc91a510942dfa4be8d2.woff2 +0 -0
- package/dist/static/fonts/Xiaolai/Xiaolai-Regular-3cc70dbb64df5b21f1326cc24dee2195.woff2 +0 -0
- package/dist/static/fonts/Xiaolai/Xiaolai-Regular-3e1f8f654357353bf0e04ba5c34b5f7f.woff2 +0 -0
- package/dist/static/fonts/Xiaolai/Xiaolai-Regular-3e63ed8162808a9e425ed80a8bc79114.woff2 +0 -0
- package/dist/static/fonts/Xiaolai/Xiaolai-Regular-3eaa538115d76932653c21d8dc28f207.woff2 +0 -0
- package/dist/static/fonts/Xiaolai/Xiaolai-Regular-4095eb84ef3874e2600247bee0b04026.woff2 +0 -0
- package/dist/static/fonts/Xiaolai/Xiaolai-Regular-41521fade99856108931b4768b1b2648.woff2 +0 -0
- package/dist/static/fonts/Xiaolai/Xiaolai-Regular-450da755d5bcb70906e1295e559b9602.woff2 +0 -0
- package/dist/static/fonts/Xiaolai/Xiaolai-Regular-452225341522a7942f0f6aab1a5c91a3.woff2 +0 -0
- package/dist/static/fonts/Xiaolai/Xiaolai-Regular-4535823663ad81405188a528d8f2b1a2.woff2 +0 -0
- package/dist/static/fonts/Xiaolai/Xiaolai-Regular-4806e761d750087c2d734fc64596eaff.woff2 +0 -0
- package/dist/static/fonts/Xiaolai/Xiaolai-Regular-4a0fdb40036e87b40aa08dd30584cb85.woff2 +0 -0
- package/dist/static/fonts/Xiaolai/Xiaolai-Regular-4a38cc3e9cf104e69ba246d37f8cf135.woff2 +0 -0
- package/dist/static/fonts/Xiaolai/Xiaolai-Regular-4aca6a43e59aceee2166b0c7e4e85ef1.woff2 +0 -0
- package/dist/static/fonts/Xiaolai/Xiaolai-Regular-4bfaa8ffa64c5ee560aa2daba7c9cbd3.woff2 +0 -0
- package/dist/static/fonts/Xiaolai/Xiaolai-Regular-4dc6d5f188d5c96d44815cd1e81aa885.woff2 +0 -0
- package/dist/static/fonts/Xiaolai/Xiaolai-Regular-4ddc14ed3eb0c3e46364317dfc0144a3.woff2 +0 -0
- package/dist/static/fonts/Xiaolai/Xiaolai-Regular-4ee10ae43505e2e0bc62656ced49c0fa.woff2 +0 -0
- package/dist/static/fonts/Xiaolai/Xiaolai-Regular-4f50e5136e136527280bc902c5817561.woff2 +0 -0
- package/dist/static/fonts/Xiaolai/Xiaolai-Regular-51502f1206be09c565f1547c406e9558.woff2 +0 -0
- package/dist/static/fonts/Xiaolai/Xiaolai-Regular-51a0e808bbc8361236ac521a119758a3.woff2 +0 -0
- package/dist/static/fonts/Xiaolai/Xiaolai-Regular-52a84a22fd1369bffeaf21da2d6158dc.woff2 +0 -0
- package/dist/static/fonts/Xiaolai/Xiaolai-Regular-5330a2119a716e4e7224ed108b085dac.woff2 +0 -0
- package/dist/static/fonts/Xiaolai/Xiaolai-Regular-543fa46ace099a7099dad69123399400.woff2 +0 -0
- package/dist/static/fonts/Xiaolai/Xiaolai-Regular-544fc28abe2c5c30e62383fd4dac255f.woff2 +0 -0
- package/dist/static/fonts/Xiaolai/Xiaolai-Regular-54acdfc2166ad7fcbd074f75fd4a56ba.woff2 +0 -0
- package/dist/static/fonts/Xiaolai/Xiaolai-Regular-5572b3513ba8df57a3d5d7303ee6b11b.woff2 +0 -0
- package/dist/static/fonts/Xiaolai/Xiaolai-Regular-56467a5c8840c4d23a60b2f935114848.woff2 +0 -0
- package/dist/static/fonts/Xiaolai/Xiaolai-Regular-56a32a7689abd0326e57c10c6c069bb4.woff2 +0 -0
- package/dist/static/fonts/Xiaolai/Xiaolai-Regular-57862b464a55b18c7bf234ce22907d73.woff2 +0 -0
- package/dist/static/fonts/Xiaolai/Xiaolai-Regular-583d166e56ba0de4b77eabb47ef67839.woff2 +0 -0
- package/dist/static/fonts/Xiaolai/Xiaolai-Regular-5882ffa04f32584d26109137e2da4352.woff2 +0 -0
- package/dist/static/fonts/Xiaolai/Xiaolai-Regular-58fd02350d0bc52cf1ca3bb32ce9766e.woff2 +0 -0
- package/dist/static/fonts/Xiaolai/Xiaolai-Regular-5935a5775af3d5c6307ac667bd9ae74e.woff2 +0 -0
- package/dist/static/fonts/Xiaolai/Xiaolai-Regular-59e9ff77b0efaf684bc09274fb6908c9.woff2 +0 -0
- package/dist/static/fonts/Xiaolai/Xiaolai-Regular-5a1ce3117cfe90c48e8fb4a9a00f694d.woff2 +0 -0
- package/dist/static/fonts/Xiaolai/Xiaolai-Regular-5a45d991244d4c7140217e1e5f5ca4f4.woff2 +0 -0
- package/dist/static/fonts/Xiaolai/Xiaolai-Regular-5a7fac4b8b23a6e4e5ba0c9bf1756c91.woff2 +0 -0
- package/dist/static/fonts/Xiaolai/Xiaolai-Regular-5b0ed6971aaab9c8ad563230bd5471a7.woff2 +0 -0
- package/dist/static/fonts/Xiaolai/Xiaolai-Regular-5d2898fbc097a7e24c6f38d80587621e.woff2 +0 -0
- package/dist/static/fonts/Xiaolai/Xiaolai-Regular-603aefd23e350ba7eb124273e3c9bcf1.woff2 +0 -0
- package/dist/static/fonts/Xiaolai/Xiaolai-Regular-60a3089806700d379f11827ee9843b6b.woff2 +0 -0
- package/dist/static/fonts/Xiaolai/Xiaolai-Regular-60a41c7e1c68f22424e6d22df544bc82.woff2 +0 -0
- package/dist/static/fonts/Xiaolai/Xiaolai-Regular-642b26e2e5f5fb780b51b593dbc8c851.woff2 +0 -0
- package/dist/static/fonts/Xiaolai/Xiaolai-Regular-66493ba5a8367f2928812f446f47b56a.woff2 +0 -0
- package/dist/static/fonts/Xiaolai/Xiaolai-Regular-670ba603758d94268e8606f240a42e12.woff2 +0 -0
- package/dist/static/fonts/Xiaolai/Xiaolai-Regular-671a2c20b1eb9e4ef8a192833940e319.woff2 +0 -0
- package/dist/static/fonts/Xiaolai/Xiaolai-Regular-684d65f1793cac449dde5d59cb3c47fb.woff2 +0 -0
- package/dist/static/fonts/Xiaolai/Xiaolai-Regular-69c09cc5fa3e55c74fc4821f76909cc3.woff2 +0 -0
- package/dist/static/fonts/Xiaolai/Xiaolai-Regular-6ae5b42180ad70b971c91e7eefb8eba2.woff2 +0 -0
- package/dist/static/fonts/Xiaolai/Xiaolai-Regular-6e092f71c1e634059ada0e52abadce67.woff2 +0 -0
- package/dist/static/fonts/Xiaolai/Xiaolai-Regular-6f3256af8454371776bc46670d33cc65.woff2 +0 -0
- package/dist/static/fonts/Xiaolai/Xiaolai-Regular-6fe5c5973cc06f74b2387a631ea36b88.woff2 +0 -0
- package/dist/static/fonts/Xiaolai/Xiaolai-Regular-70c2eb8d64e71a42a834eb857ea9df51.woff2 +0 -0
- package/dist/static/fonts/Xiaolai/Xiaolai-Regular-70e811fd7994e61f408c923de6ddd078.woff2 +0 -0
- package/dist/static/fonts/Xiaolai/Xiaolai-Regular-7197d6fda6cba7c3874c53d6381ca239.woff2 +0 -0
- package/dist/static/fonts/Xiaolai/Xiaolai-Regular-72252d73220fa3cd856677888cee1635.woff2 +0 -0
- package/dist/static/fonts/Xiaolai/Xiaolai-Regular-72536a3d71b694a0d53dd90ddceae41e.woff2 +0 -0
- package/dist/static/fonts/Xiaolai/Xiaolai-Regular-726303e0774b4e678bff8c2deb6ca603.woff2 +0 -0
- package/dist/static/fonts/Xiaolai/Xiaolai-Regular-733171b4ffcd17ea1fe1c0ba627173bf.woff2 +0 -0
- package/dist/static/fonts/Xiaolai/Xiaolai-Regular-739bc1a567439c7cffcd1614644593d2.woff2 +0 -0
- package/dist/static/fonts/Xiaolai/Xiaolai-Regular-73e309718fd16cea44b4d54a33581811.woff2 +0 -0
- package/dist/static/fonts/Xiaolai/Xiaolai-Regular-7494dc504ae00ee9cd0505f990f88c5d.woff2 +0 -0
- package/dist/static/fonts/Xiaolai/Xiaolai-Regular-74e2263a91439c25b91d5132ce9f4d62.woff2 +0 -0
- package/dist/static/fonts/Xiaolai/Xiaolai-Regular-761d05e3cd968cf574166867998ef06a.woff2 +0 -0
- package/dist/static/fonts/Xiaolai/Xiaolai-Regular-7718fe60986d8b42b1be9c5ace5ccf25.woff2 +0 -0
- package/dist/static/fonts/Xiaolai/Xiaolai-Regular-774d4f764a1299da5d28ec2f2ffe0d69.woff2 +0 -0
- package/dist/static/fonts/Xiaolai/Xiaolai-Regular-79d494361ae093b69e74ee9dbe65bfd4.woff2 +0 -0
- package/dist/static/fonts/Xiaolai/Xiaolai-Regular-79f007c1c6d07557120982951ea67998.woff2 +0 -0
- package/dist/static/fonts/Xiaolai/Xiaolai-Regular-7a07ddc0f0c0f5f4a9bad6ee3dda66b5.woff2 +0 -0
- package/dist/static/fonts/Xiaolai/Xiaolai-Regular-7ab2bed91166a9dca83a5ebfbe2a7f38.woff2 +0 -0
- package/dist/static/fonts/Xiaolai/Xiaolai-Regular-7ccce86603f80a099ddb0cb21d4ae3e3.woff2 +0 -0
- package/dist/static/fonts/Xiaolai/Xiaolai-Regular-7e4bde7e9c7f84cd34d8a845e384c746.woff2 +0 -0
- package/dist/static/fonts/Xiaolai/Xiaolai-Regular-7e929f262f30c8ee78bf398150b1a7cd.woff2 +0 -0
- package/dist/static/fonts/Xiaolai/Xiaolai-Regular-7eb9fffd1aa890d07d0f88cc82e6cfe4.woff2 +0 -0
- package/dist/static/fonts/Xiaolai/Xiaolai-Regular-7f855356ab893b0d2b9c1c83b8116f0e.woff2 +0 -0
- package/dist/static/fonts/Xiaolai/Xiaolai-Regular-829615148e6357d826b9242eb7fbbd1e.woff2 +0 -0
- package/dist/static/fonts/Xiaolai/Xiaolai-Regular-866fa7613df6b3fd272bcfd4530c0bb9.woff2 +0 -0
- package/dist/static/fonts/Xiaolai/Xiaolai-Regular-87599f94b6cc129d505b375798d0d751.woff2 +0 -0
- package/dist/static/fonts/Xiaolai/Xiaolai-Regular-8c2f33cee3993174f7e87c28e4bf42ee.woff2 +0 -0
- package/dist/static/fonts/Xiaolai/Xiaolai-Regular-8d3bcabb847b56243b16afe62adaaf21.woff2 +0 -0
- package/dist/static/fonts/Xiaolai/Xiaolai-Regular-8de5b863cb50dfefdd07cb11c774d579.woff2 +0 -0
- package/dist/static/fonts/Xiaolai/Xiaolai-Regular-8e9f97f01034820170065b2921b4fb5e.woff2 +0 -0
- package/dist/static/fonts/Xiaolai/Xiaolai-Regular-8f476c4c99813d57cbe6eca4727388ad.woff2 +0 -0
- package/dist/static/fonts/Xiaolai/Xiaolai-Regular-903bb6865f3452e2fda42e3a25547bc5.woff2 +0 -0
- package/dist/static/fonts/Xiaolai/Xiaolai-Regular-91ddb2969bf2d31ba02ad82998d1314c.woff2 +0 -0
- package/dist/static/fonts/Xiaolai/Xiaolai-Regular-938d90c10ff8c20386af7f242c05d6b0.woff2 +0 -0
- package/dist/static/fonts/Xiaolai/Xiaolai-Regular-93fc8f28a33234bcadf1527cafabd502.woff2 +0 -0
- package/dist/static/fonts/Xiaolai/Xiaolai-Regular-95429962233afd82db1c27df1500a28c.woff2 +0 -0
- package/dist/static/fonts/Xiaolai/Xiaolai-Regular-9544732d2e62d1a429674f8ee41b5d3a.woff2 +0 -0
- package/dist/static/fonts/Xiaolai/Xiaolai-Regular-9592bfc861f07bcb8d75c196b370e548.woff2 +0 -0
- package/dist/static/fonts/Xiaolai/Xiaolai-Regular-95bfd249da4902577b4b7d76ebdd0b44.woff2 +0 -0
- package/dist/static/fonts/Xiaolai/Xiaolai-Regular-968cffdc8ee679da094e77ebf50f58ef.woff2 +0 -0
- package/dist/static/fonts/Xiaolai/Xiaolai-Regular-97f7f48ce90c9429bf32ae51469db74d.woff2 +0 -0
- package/dist/static/fonts/Xiaolai/Xiaolai-Regular-982b630266d87db93d2539affb1275c6.woff2 +0 -0
- package/dist/static/fonts/Xiaolai/Xiaolai-Regular-98f2ad84457de7f3740d9920b8fa8667.woff2 +0 -0
- package/dist/static/fonts/Xiaolai/Xiaolai-Regular-99a16ef6a64934d5781933dbd9c46b2e.woff2 +0 -0
- package/dist/static/fonts/Xiaolai/Xiaolai-Regular-9cfb2a77a4e45025105ad29a1748b90d.woff2 +0 -0
- package/dist/static/fonts/Xiaolai/Xiaolai-Regular-9d81066dd2b337c938df6e90380a00dc.woff2 +0 -0
- package/dist/static/fonts/Xiaolai/Xiaolai-Regular-9eb5a99df4e76ac3363453ac9ca288b1.woff2 +0 -0
- package/dist/static/fonts/Xiaolai/Xiaolai-Regular-a004ddfcb26e67bd6e678c8ed19e25ce.woff2 +0 -0
- package/dist/static/fonts/Xiaolai/Xiaolai-Regular-a0ca5df4258213d7fc9fce80f65ce760.woff2 +0 -0
- package/dist/static/fonts/Xiaolai/Xiaolai-Regular-a1f916d6039285c4ffb900cd654e418f.woff2 +0 -0
- package/dist/static/fonts/Xiaolai/Xiaolai-Regular-a203b91dad570bf05a58c3c3ddb529bf.woff2 +0 -0
- package/dist/static/fonts/Xiaolai/Xiaolai-Regular-a365e82ed54697a52f27adcea1315fe8.woff2 +0 -0
- package/dist/static/fonts/Xiaolai/Xiaolai-Regular-a4c34be6d42152e64b0df90bc4607f64.woff2 +0 -0
- package/dist/static/fonts/Xiaolai/Xiaolai-Regular-a7accba310e821da5505f71c03b76bdb.woff2 +0 -0
- package/dist/static/fonts/Xiaolai/Xiaolai-Regular-aa0d470430e6391eca720c7cfa44446f.woff2 +0 -0
- package/dist/static/fonts/Xiaolai/Xiaolai-Regular-aa5c9ca6cf4fba00433b7aa3fa10671a.woff2 +0 -0
- package/dist/static/fonts/Xiaolai/Xiaolai-Regular-ac9ceb44437becc3e9c4dbfebab7fc2d.woff2 +0 -0
- package/dist/static/fonts/Xiaolai/Xiaolai-Regular-b1220a3c61f85cc0408deedb4c5f57a2.woff2 +0 -0
- package/dist/static/fonts/Xiaolai/Xiaolai-Regular-b358f7a51ece39a3247942b1feabdb29.woff2 +0 -0
- package/dist/static/fonts/Xiaolai/Xiaolai-Regular-b57aaedfd8ebdf3931f25119dc6a5eb2.woff2 +0 -0
- package/dist/static/fonts/Xiaolai/Xiaolai-Regular-b5c1596551c256e0e9cf02028595b092.woff2 +0 -0
- package/dist/static/fonts/Xiaolai/Xiaolai-Regular-b6d128682ee29e471486354d486a1b90.woff2 +0 -0
- package/dist/static/fonts/Xiaolai/Xiaolai-Regular-b6fd38ca30869792244804b04bc058da.woff2 +0 -0
- package/dist/static/fonts/Xiaolai/Xiaolai-Regular-b7d203b051eff504ff59ddca7576b6a9.woff2 +0 -0
- package/dist/static/fonts/Xiaolai/Xiaolai-Regular-b96d9226ce77ec94ceca043d712182e6.woff2 +0 -0
- package/dist/static/fonts/Xiaolai/Xiaolai-Regular-ba3de316d63c7e339987b16f41a0b879.woff2 +0 -0
- package/dist/static/fonts/Xiaolai/Xiaolai-Regular-bafff7a14c27403dcc6cf1432e8ea836.woff2 +0 -0
- package/dist/static/fonts/Xiaolai/Xiaolai-Regular-bd77e3c7f9e0b072d96af37f73d1aa32.woff2 +0 -0
- package/dist/static/fonts/Xiaolai/Xiaolai-Regular-be549ab72f0719d606a5c01e2c0219b6.woff2 +0 -0
- package/dist/static/fonts/Xiaolai/Xiaolai-Regular-c16ed9740b85badf16e86ea782a3062f.woff2 +0 -0
- package/dist/static/fonts/Xiaolai/Xiaolai-Regular-c1f94158256bb1f3bf665b053d895af9.woff2 +0 -0
- package/dist/static/fonts/Xiaolai/Xiaolai-Regular-c40533fdf4cc57177b12803598af7e59.woff2 +0 -0
- package/dist/static/fonts/Xiaolai/Xiaolai-Regular-c4a687ac4f0c2766eefc9f77ed99cddf.woff2 +0 -0
- package/dist/static/fonts/Xiaolai/Xiaolai-Regular-c69f61a4ab18d0488c8d1fc12e7028e8.woff2 +0 -0
- package/dist/static/fonts/Xiaolai/Xiaolai-Regular-c8b71798409ccc126ee264a00aadcf21.woff2 +0 -0
- package/dist/static/fonts/Xiaolai/Xiaolai-Regular-c99eda15fc26a2941579560f76c3a5cf.woff2 +0 -0
- package/dist/static/fonts/Xiaolai/Xiaolai-Regular-cb17fc3db95f6d139afc9d31a8e93293.woff2 +0 -0
- package/dist/static/fonts/Xiaolai/Xiaolai-Regular-cbaaefaaf326668277aa24dfa93c4d28.woff2 +0 -0
- package/dist/static/fonts/Xiaolai/Xiaolai-Regular-cd145ce4a0ea18469358df53c207bc1b.woff2 +0 -0
- package/dist/static/fonts/Xiaolai/Xiaolai-Regular-cdbce89e82cc1ab53a2decbf5819278f.woff2 +0 -0
- package/dist/static/fonts/Xiaolai/Xiaolai-Regular-ce4884f96f11589608b76b726a755803.woff2 +0 -0
- package/dist/static/fonts/Xiaolai/Xiaolai-Regular-cf2cc71752631e579e35b0e423bf2638.woff2 +0 -0
- package/dist/static/fonts/Xiaolai/Xiaolai-Regular-cf6ff4e0f491ca0cf3038187a997b9b4.woff2 +0 -0
- package/dist/static/fonts/Xiaolai/Xiaolai-Regular-cfb211578629b7e8153b37240de6a9d5.woff2 +0 -0
- package/dist/static/fonts/Xiaolai/Xiaolai-Regular-d0cf73942fea1c74edbdf0b3011f4656.woff2 +0 -0
- package/dist/static/fonts/Xiaolai/Xiaolai-Regular-d2666cbed13462c5dc36fa2f15c202ca.woff2 +0 -0
- package/dist/static/fonts/Xiaolai/Xiaolai-Regular-d3716376641d615e2995605b29bca7b6.woff2 +0 -0
- package/dist/static/fonts/Xiaolai/Xiaolai-Regular-dac48066b5883d8b4551fc584f0c2a3e.woff2 +0 -0
- package/dist/static/fonts/Xiaolai/Xiaolai-Regular-dbea1af6dcd9860be40c3d18254338f5.woff2 +0 -0
- package/dist/static/fonts/Xiaolai/Xiaolai-Regular-e11567fd2accf9957cd0d3c2be937d87.woff2 +0 -0
- package/dist/static/fonts/Xiaolai/Xiaolai-Regular-e2ead7ea7da0437f085f42ffc05f8d13.woff2 +0 -0
- package/dist/static/fonts/Xiaolai/Xiaolai-Regular-e3fcf5180fd466c8915c4e8069491054.woff2 +0 -0
- package/dist/static/fonts/Xiaolai/Xiaolai-Regular-e480d9c614742d05f0e78f274f1e69e6.woff2 +0 -0
- package/dist/static/fonts/Xiaolai/Xiaolai-Regular-e4bca6cfa53e499cae0a6be4894a90e9.woff2 +0 -0
- package/dist/static/fonts/Xiaolai/Xiaolai-Regular-e51ef413167c6e14e0c0fdcc585f2fc9.woff2 +0 -0
- package/dist/static/fonts/Xiaolai/Xiaolai-Regular-e5f453bb04da18eed01675eeebd88bf8.woff2 +0 -0
- package/dist/static/fonts/Xiaolai/Xiaolai-Regular-e656f091b9dc4709722c9f4b84d3c797.woff2 +0 -0
- package/dist/static/fonts/Xiaolai/Xiaolai-Regular-ec181b795ac1fb5a50d700b6e996d745.woff2 +0 -0
- package/dist/static/fonts/Xiaolai/Xiaolai-Regular-ee8bae97908d5147b423f77ad0d3c1bb.woff2 +0 -0
- package/dist/static/fonts/Xiaolai/Xiaolai-Regular-f0f13b5c60e0af5553bd359f5513be1b.woff2 +0 -0
- package/dist/static/fonts/Xiaolai/Xiaolai-Regular-f2b54d4e7be0eaefe1c2c56836fa5368.woff2 +0 -0
- package/dist/static/fonts/Xiaolai/Xiaolai-Regular-f56414bf9bced67990def8660e306759.woff2 +0 -0
- package/dist/static/fonts/Xiaolai/Xiaolai-Regular-f5d079153c99a25b9be5b8583c4cc8a7.woff2 +0 -0
- package/dist/static/fonts/Xiaolai/Xiaolai-Regular-f6032fc06eb20480f096199713f70885.woff2 +0 -0
- package/dist/static/fonts/Xiaolai/Xiaolai-Regular-f8ee5d36068a42b51d0e4a1116cfcec1.woff2 +0 -0
- package/dist/static/index.css +6615 -0
- package/dist/static/index.css.map +7 -0
- package/dist/static/index.html +28 -0
- package/dist/static/index.js +33142 -0
- package/dist/static/index.js.map +7 -0
- package/dist/static/locales/ar-SA-XORAP2EK.js +586 -0
- package/dist/static/locales/ar-SA-XORAP2EK.js.map +7 -0
- package/dist/static/locales/az-AZ-NAUU3Z4Y.js +586 -0
- package/dist/static/locales/az-AZ-NAUU3Z4Y.js.map +7 -0
- package/dist/static/locales/bg-BG-AAABLFCY.js +586 -0
- package/dist/static/locales/bg-BG-AAABLFCY.js.map +7 -0
- package/dist/static/locales/bn-BD-PM4AC5WG.js +586 -0
- package/dist/static/locales/bn-BD-PM4AC5WG.js.map +7 -0
- package/dist/static/locales/ca-ES-YNNMFRQX.js +586 -0
- package/dist/static/locales/ca-ES-YNNMFRQX.js.map +7 -0
- package/dist/static/locales/cs-CZ-DGZA5IKG.js +586 -0
- package/dist/static/locales/cs-CZ-DGZA5IKG.js.map +7 -0
- package/dist/static/locales/da-DK-N76F4QAJ.js +586 -0
- package/dist/static/locales/da-DK-N76F4QAJ.js.map +7 -0
- package/dist/static/locales/de-DE-DMRXZ2SZ.js +586 -0
- package/dist/static/locales/de-DE-DMRXZ2SZ.js.map +7 -0
- package/dist/static/locales/el-GR-HIKPLEXI.js +586 -0
- package/dist/static/locales/el-GR-HIKPLEXI.js.map +7 -0
- package/dist/static/locales/en-OZCJJ2HN.js +78 -0
- package/dist/static/locales/en-OZCJJ2HN.js.map +7 -0
- package/dist/static/locales/es-ES-AQYVXC32.js +586 -0
- package/dist/static/locales/es-ES-AQYVXC32.js.map +7 -0
- package/dist/static/locales/eu-ES-3TOEU5DE.js +586 -0
- package/dist/static/locales/eu-ES-3TOEU5DE.js.map +7 -0
- package/dist/static/locales/fa-IR-527GAKUP.js +586 -0
- package/dist/static/locales/fa-IR-527GAKUP.js.map +7 -0
- package/dist/static/locales/fi-FI-M3WLVDFP.js +586 -0
- package/dist/static/locales/fi-FI-M3WLVDFP.js.map +7 -0
- package/dist/static/locales/fr-FR-YE4VDJFI.js +586 -0
- package/dist/static/locales/fr-FR-YE4VDJFI.js.map +7 -0
- package/dist/static/locales/gl-ES-KMXUYGUN.js +586 -0
- package/dist/static/locales/gl-ES-KMXUYGUN.js.map +7 -0
- package/dist/static/locales/he-IL-4MU5N22B.js +586 -0
- package/dist/static/locales/he-IL-4MU5N22B.js.map +7 -0
- package/dist/static/locales/hi-IN-ZHZNZWFC.js +586 -0
- package/dist/static/locales/hi-IN-ZHZNZWFC.js.map +7 -0
- package/dist/static/locales/hu-HU-VIYZI3X4.js +586 -0
- package/dist/static/locales/hu-HU-VIYZI3X4.js.map +7 -0
- package/dist/static/locales/id-ID-22TWZNLA.js +586 -0
- package/dist/static/locales/id-ID-22TWZNLA.js.map +7 -0
- package/dist/static/locales/it-IT-MDEQ2SG3.js +586 -0
- package/dist/static/locales/it-IT-MDEQ2SG3.js.map +7 -0
- package/dist/static/locales/ja-JP-K2DI4W6B.js +586 -0
- package/dist/static/locales/ja-JP-K2DI4W6B.js.map +7 -0
- package/dist/static/locales/kaa-6BPSNM3R.js +586 -0
- package/dist/static/locales/kaa-6BPSNM3R.js.map +7 -0
- package/dist/static/locales/kab-KAB-2S7ZURK7.js +586 -0
- package/dist/static/locales/kab-KAB-2S7ZURK7.js.map +7 -0
- package/dist/static/locales/kk-KZ-UJPYGRQQ.js +586 -0
- package/dist/static/locales/kk-KZ-UJPYGRQQ.js.map +7 -0
- package/dist/static/locales/km-KH-M5T5JKUE.js +586 -0
- package/dist/static/locales/km-KH-M5T5JKUE.js.map +7 -0
- package/dist/static/locales/ko-KR-RQX37SNF.js +586 -0
- package/dist/static/locales/ko-KR-RQX37SNF.js.map +7 -0
- package/dist/static/locales/ku-TR-5XJDIERL.js +586 -0
- package/dist/static/locales/ku-TR-5XJDIERL.js.map +7 -0
- package/dist/static/locales/lt-LT-MGUBX6CA.js +586 -0
- package/dist/static/locales/lt-LT-MGUBX6CA.js.map +7 -0
- package/dist/static/locales/lv-LV-MD7N5VHD.js +586 -0
- package/dist/static/locales/lv-LV-MD7N5VHD.js.map +7 -0
- package/dist/static/locales/mr-IN-4XWMNGQC.js +586 -0
- package/dist/static/locales/mr-IN-4XWMNGQC.js.map +7 -0
- package/dist/static/locales/my-MM-O4Z74GN5.js +586 -0
- package/dist/static/locales/my-MM-O4Z74GN5.js.map +7 -0
- package/dist/static/locales/nb-NO-BMB73KRH.js +586 -0
- package/dist/static/locales/nb-NO-BMB73KRH.js.map +7 -0
- package/dist/static/locales/nl-NL-F2257BLQ.js +586 -0
- package/dist/static/locales/nl-NL-F2257BLQ.js.map +7 -0
- package/dist/static/locales/nn-NO-NCORG7TS.js +586 -0
- package/dist/static/locales/nn-NO-NCORG7TS.js.map +7 -0
- package/dist/static/locales/oc-FR-ATFBDMF6.js +586 -0
- package/dist/static/locales/oc-FR-ATFBDMF6.js.map +7 -0
- package/dist/static/locales/pa-IN-D2I375G4.js +586 -0
- package/dist/static/locales/pa-IN-D2I375G4.js.map +7 -0
- package/dist/static/locales/percentages-YKFLWNK2.js +12 -0
- package/dist/static/locales/percentages-YKFLWNK2.js.map +7 -0
- package/dist/static/locales/pl-PL-YJHOWAAW.js +586 -0
- package/dist/static/locales/pl-PL-YJHOWAAW.js.map +7 -0
- package/dist/static/locales/pt-BR-APOPYZJ7.js +586 -0
- package/dist/static/locales/pt-BR-APOPYZJ7.js.map +7 -0
- package/dist/static/locales/pt-PT-W56WCN7P.js +586 -0
- package/dist/static/locales/pt-PT-W56WCN7P.js.map +7 -0
- package/dist/static/locales/ro-RO-L575VRQA.js +586 -0
- package/dist/static/locales/ro-RO-L575VRQA.js.map +7 -0
- package/dist/static/locales/ru-RU-BLG6HZG5.js +586 -0
- package/dist/static/locales/ru-RU-BLG6HZG5.js.map +7 -0
- package/dist/static/locales/si-LK-KT7GGO6D.js +586 -0
- package/dist/static/locales/si-LK-KT7GGO6D.js.map +7 -0
- package/dist/static/locales/sk-SK-DY6IPO5U.js +586 -0
- package/dist/static/locales/sk-SK-DY6IPO5U.js.map +7 -0
- package/dist/static/locales/sl-SI-5DZSRA47.js +586 -0
- package/dist/static/locales/sl-SI-5DZSRA47.js.map +7 -0
- package/dist/static/locales/sv-SE-V32YHALQ.js +586 -0
- package/dist/static/locales/sv-SE-V32YHALQ.js.map +7 -0
- package/dist/static/locales/ta-IN-5JRAGQAO.js +586 -0
- package/dist/static/locales/ta-IN-5JRAGQAO.js.map +7 -0
- package/dist/static/locales/th-TH-55ACRHDJ.js +586 -0
- package/dist/static/locales/th-TH-55ACRHDJ.js.map +7 -0
- package/dist/static/locales/tr-TR-7QYBXDBO.js +586 -0
- package/dist/static/locales/tr-TR-7QYBXDBO.js.map +7 -0
- package/dist/static/locales/uk-UA-TJS2TMRH.js +586 -0
- package/dist/static/locales/uk-UA-TJS2TMRH.js.map +7 -0
- package/dist/static/locales/vi-VN-Y5CQ2EKQ.js +586 -0
- package/dist/static/locales/vi-VN-Y5CQ2EKQ.js.map +7 -0
- package/dist/static/locales/zh-CN-4MXUOFTH.js +586 -0
- package/dist/static/locales/zh-CN-4MXUOFTH.js.map +7 -0
- package/dist/static/locales/zh-HK-RBTGIU3U.js +586 -0
- package/dist/static/locales/zh-HK-RBTGIU3U.js.map +7 -0
- package/dist/static/locales/zh-TW-U5VF4CCU.js +586 -0
- package/dist/static/locales/zh-TW-U5VF4CCU.js.map +7 -0
- package/dist/static/subset-shared.chunk.js +15 -0
- package/dist/static/subset-shared.chunk.js.map +7 -0
- package/dist/static/subset-worker.chunk.js +26 -0
- package/dist/static/subset-worker.chunk.js.map +7 -0
- package/package.json +36 -0
|
@@ -0,0 +1,197 @@
|
|
|
1
|
+
import { spawn, exec } from 'child_process';
|
|
2
|
+
import { resolve, dirname } from 'path';
|
|
3
|
+
import { fileURLToPath } from 'url';
|
|
4
|
+
import { readFileSync, existsSync } from 'fs';
|
|
5
|
+
import { promisify } from 'util';
|
|
6
|
+
import { connectToCanvas, isCanvasRunning, generateId } from '../lib/ws-client';
|
|
7
|
+
import { startServer, isBrowserServerRunning } from '../server';
|
|
8
|
+
const execAsync = promisify(exec);
|
|
9
|
+
const __dirname = dirname(fileURLToPath(import.meta.url));
|
|
10
|
+
function getDevElectronAppPath() {
|
|
11
|
+
// Check if running in monorepo dev mode
|
|
12
|
+
const devPath = resolve(__dirname, '../../../electron-app');
|
|
13
|
+
if (existsSync(resolve(devPath, 'package.json'))) {
|
|
14
|
+
return devPath;
|
|
15
|
+
}
|
|
16
|
+
return null;
|
|
17
|
+
}
|
|
18
|
+
async function findElectronAppCommand() {
|
|
19
|
+
// Check if agent-canvas-app command is available
|
|
20
|
+
try {
|
|
21
|
+
const cmd = process.platform === 'win32' ? 'where' : 'which';
|
|
22
|
+
await execAsync(`${cmd} agent-canvas-app`);
|
|
23
|
+
return 'agent-canvas-app';
|
|
24
|
+
}
|
|
25
|
+
catch {
|
|
26
|
+
return null;
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
async function launchElectronApp() {
|
|
30
|
+
// First, try to find installed electron-app command
|
|
31
|
+
const appCommand = await findElectronAppCommand();
|
|
32
|
+
if (appCommand) {
|
|
33
|
+
// Use installed electron-app
|
|
34
|
+
const child = spawn(appCommand, [], {
|
|
35
|
+
detached: true,
|
|
36
|
+
stdio: 'ignore',
|
|
37
|
+
});
|
|
38
|
+
child.unref();
|
|
39
|
+
}
|
|
40
|
+
else {
|
|
41
|
+
// Check if running in dev mode (monorepo)
|
|
42
|
+
const devPath = getDevElectronAppPath();
|
|
43
|
+
if (devPath) {
|
|
44
|
+
const child = spawn('bun', ['run', 'dev'], {
|
|
45
|
+
cwd: devPath,
|
|
46
|
+
detached: true,
|
|
47
|
+
stdio: 'ignore',
|
|
48
|
+
});
|
|
49
|
+
child.unref();
|
|
50
|
+
}
|
|
51
|
+
else {
|
|
52
|
+
// electron-app not found
|
|
53
|
+
console.error('Electron app not found.');
|
|
54
|
+
console.error('');
|
|
55
|
+
console.error('To use --app mode, install the electron app:');
|
|
56
|
+
console.error(' npm install -g @agent-canvas/electron-app');
|
|
57
|
+
console.error('');
|
|
58
|
+
console.error('Or use browser mode (default):');
|
|
59
|
+
console.error(' agent-canvas start');
|
|
60
|
+
process.exit(1);
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
// Wait for app to start
|
|
64
|
+
const maxRetries = 30;
|
|
65
|
+
const retryInterval = 500;
|
|
66
|
+
for (let i = 0; i < maxRetries; i++) {
|
|
67
|
+
await new Promise((r) => setTimeout(r, retryInterval));
|
|
68
|
+
if (await isCanvasRunning()) {
|
|
69
|
+
return;
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
throw new Error('Failed to start electron app');
|
|
73
|
+
}
|
|
74
|
+
async function openBrowser(url) {
|
|
75
|
+
const platform = process.platform;
|
|
76
|
+
try {
|
|
77
|
+
if (platform === 'darwin') {
|
|
78
|
+
await execAsync(`open "${url}"`);
|
|
79
|
+
}
|
|
80
|
+
else if (platform === 'win32') {
|
|
81
|
+
await execAsync(`start "" "${url}"`);
|
|
82
|
+
}
|
|
83
|
+
else {
|
|
84
|
+
await execAsync(`xdg-open "${url}"`);
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
catch {
|
|
88
|
+
console.log(`Please open ${url} in your browser`);
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
async function loadFile(filePath) {
|
|
92
|
+
const absolutePath = resolve(filePath);
|
|
93
|
+
console.log(`Loading file: ${absolutePath}`);
|
|
94
|
+
try {
|
|
95
|
+
const content = readFileSync(absolutePath, 'utf-8');
|
|
96
|
+
const data = JSON.parse(content);
|
|
97
|
+
const client = await connectToCanvas();
|
|
98
|
+
const result = await client.send({
|
|
99
|
+
type: 'loadScene',
|
|
100
|
+
id: generateId(),
|
|
101
|
+
params: {
|
|
102
|
+
elements: data.elements || [],
|
|
103
|
+
appState: data.appState,
|
|
104
|
+
files: data.files,
|
|
105
|
+
},
|
|
106
|
+
});
|
|
107
|
+
if (result.success) {
|
|
108
|
+
console.log(`Loaded ${result.elementCount} elements from ${filePath}`);
|
|
109
|
+
}
|
|
110
|
+
else {
|
|
111
|
+
console.error(`Failed to load file: ${result.error}`);
|
|
112
|
+
process.exit(1);
|
|
113
|
+
}
|
|
114
|
+
client.close();
|
|
115
|
+
}
|
|
116
|
+
catch (err) {
|
|
117
|
+
console.error(`Failed to parse file: ${err instanceof Error ? err.message : err}`);
|
|
118
|
+
process.exit(1);
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
// Browser mode (default)
|
|
122
|
+
export async function startBrowser(filePath) {
|
|
123
|
+
if (filePath) {
|
|
124
|
+
const absolutePath = resolve(filePath);
|
|
125
|
+
if (!existsSync(absolutePath)) {
|
|
126
|
+
console.error(`File not found: ${absolutePath}`);
|
|
127
|
+
process.exit(1);
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
const running = await isBrowserServerRunning();
|
|
131
|
+
if (running) {
|
|
132
|
+
console.log('Canvas server already running');
|
|
133
|
+
console.log('Opening browser...');
|
|
134
|
+
await openBrowser('http://localhost:7891');
|
|
135
|
+
}
|
|
136
|
+
else {
|
|
137
|
+
console.log('Starting canvas server...');
|
|
138
|
+
const { httpUrl } = await startServer();
|
|
139
|
+
console.log('Opening browser...');
|
|
140
|
+
await openBrowser(httpUrl);
|
|
141
|
+
}
|
|
142
|
+
// Wait for browser to connect, then load file if specified
|
|
143
|
+
if (filePath) {
|
|
144
|
+
console.log('Waiting for browser to connect...');
|
|
145
|
+
const maxRetries = 30;
|
|
146
|
+
const retryInterval = 500;
|
|
147
|
+
for (let i = 0; i < maxRetries; i++) {
|
|
148
|
+
await new Promise((r) => setTimeout(r, retryInterval));
|
|
149
|
+
try {
|
|
150
|
+
await loadFile(filePath);
|
|
151
|
+
break;
|
|
152
|
+
}
|
|
153
|
+
catch {
|
|
154
|
+
if (i === maxRetries - 1) {
|
|
155
|
+
console.error('Timeout waiting for browser to connect');
|
|
156
|
+
process.exit(1);
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
// Keep the server running
|
|
162
|
+
console.log('\nCanvas is ready. Press Ctrl+C to stop.');
|
|
163
|
+
await new Promise(() => { }); // Block forever
|
|
164
|
+
}
|
|
165
|
+
// Electron app mode (--app)
|
|
166
|
+
export async function startApp(filePath) {
|
|
167
|
+
if (filePath) {
|
|
168
|
+
const absolutePath = resolve(filePath);
|
|
169
|
+
if (!existsSync(absolutePath)) {
|
|
170
|
+
console.error(`File not found: ${absolutePath}`);
|
|
171
|
+
process.exit(1);
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
console.log('Checking if canvas app is running...');
|
|
175
|
+
const running = await isCanvasRunning();
|
|
176
|
+
if (!running) {
|
|
177
|
+
console.log('Starting canvas app...');
|
|
178
|
+
await launchElectronApp();
|
|
179
|
+
}
|
|
180
|
+
console.log('Connecting to canvas app...');
|
|
181
|
+
try {
|
|
182
|
+
const client = await connectToCanvas();
|
|
183
|
+
console.log('Connected to canvas app');
|
|
184
|
+
if (filePath) {
|
|
185
|
+
await loadFile(filePath);
|
|
186
|
+
}
|
|
187
|
+
client.close();
|
|
188
|
+
}
|
|
189
|
+
catch (err) {
|
|
190
|
+
console.error('Failed to connect:', err instanceof Error ? err.message : err);
|
|
191
|
+
process.exit(1);
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
// Legacy export for backward compatibility
|
|
195
|
+
export async function start(filePath) {
|
|
196
|
+
return startBrowser(filePath);
|
|
197
|
+
}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,452 @@
|
|
|
1
|
+
import { Command } from 'commander';
|
|
2
|
+
import { writeFileSync } from 'node:fs';
|
|
3
|
+
import { encode as toToon } from '@toon-format/toon';
|
|
4
|
+
import { startBrowser, startApp } from './commands/start';
|
|
5
|
+
import { connectToCanvas, generateId } from './lib/ws-client';
|
|
6
|
+
const program = new Command();
|
|
7
|
+
program
|
|
8
|
+
.name('agent-canvas')
|
|
9
|
+
.description('CLI for Agent Canvas - Excalidraw interface for AI agents')
|
|
10
|
+
.version('0.1.0');
|
|
11
|
+
program
|
|
12
|
+
.command('start')
|
|
13
|
+
.description('Start the canvas (browser mode by default, use --app for Electron)')
|
|
14
|
+
.option('-f, --file <path>', 'Load an .excalidraw file on start')
|
|
15
|
+
.option('--app', 'Use Electron app instead of browser')
|
|
16
|
+
.action(async (options) => {
|
|
17
|
+
if (options.app) {
|
|
18
|
+
await startApp(options.file);
|
|
19
|
+
}
|
|
20
|
+
else {
|
|
21
|
+
await startBrowser(options.file);
|
|
22
|
+
}
|
|
23
|
+
});
|
|
24
|
+
// ============================================================================
|
|
25
|
+
// Add Shape
|
|
26
|
+
// ============================================================================
|
|
27
|
+
program
|
|
28
|
+
.command('add-shape')
|
|
29
|
+
.description('Add a shape to the canvas')
|
|
30
|
+
.requiredOption('-t, --type <type>', 'Shape type: rectangle, ellipse, or diamond')
|
|
31
|
+
.requiredOption('-x, --x <number>', 'X coordinate', parseFloat)
|
|
32
|
+
.requiredOption('-y, --y <number>', 'Y coordinate', parseFloat)
|
|
33
|
+
.option('-w, --width <number>', 'Width of the shape', parseFloat)
|
|
34
|
+
.option('-h, --height <number>', 'Height of the shape', parseFloat)
|
|
35
|
+
.option('--stroke-color <color>', 'Stroke color (hex)')
|
|
36
|
+
.option('--background-color <color>', 'Background color (hex or "transparent")')
|
|
37
|
+
.option('--stroke-width <number>', 'Stroke width in pixels', parseFloat)
|
|
38
|
+
.option('--stroke-style <style>', 'Stroke style: solid, dashed, or dotted')
|
|
39
|
+
.option('--fill-style <style>', 'Fill style: hachure, cross-hatch, solid, or zigzag')
|
|
40
|
+
.option('-l, --label <text>', 'Text label inside the shape')
|
|
41
|
+
.option('--label-font-size <number>', 'Label font size', parseFloat)
|
|
42
|
+
.action(async (options) => {
|
|
43
|
+
const client = await connectToCanvas();
|
|
44
|
+
const params = {
|
|
45
|
+
type: options.type,
|
|
46
|
+
x: options.x,
|
|
47
|
+
y: options.y,
|
|
48
|
+
width: options.width,
|
|
49
|
+
height: options.height,
|
|
50
|
+
strokeColor: options.strokeColor,
|
|
51
|
+
backgroundColor: options.backgroundColor,
|
|
52
|
+
strokeWidth: options.strokeWidth,
|
|
53
|
+
strokeStyle: options.strokeStyle,
|
|
54
|
+
fillStyle: options.fillStyle,
|
|
55
|
+
};
|
|
56
|
+
if (options.label) {
|
|
57
|
+
params.label = { text: options.label, fontSize: options.labelFontSize };
|
|
58
|
+
}
|
|
59
|
+
const result = await client.send({ type: 'addShape', id: generateId(), params });
|
|
60
|
+
if (result.success) {
|
|
61
|
+
console.log(`Shape created (id: ${result.elementId})`);
|
|
62
|
+
}
|
|
63
|
+
else {
|
|
64
|
+
console.error(`Failed: ${result.error}`);
|
|
65
|
+
process.exit(1);
|
|
66
|
+
}
|
|
67
|
+
client.close();
|
|
68
|
+
});
|
|
69
|
+
// ============================================================================
|
|
70
|
+
// Add Text
|
|
71
|
+
// ============================================================================
|
|
72
|
+
program
|
|
73
|
+
.command('add-text')
|
|
74
|
+
.description('Add text to the canvas')
|
|
75
|
+
.requiredOption('-t, --text <text>', 'Text content (use \\n for newlines)')
|
|
76
|
+
.requiredOption('-x, --x <number>', 'X coordinate', parseFloat)
|
|
77
|
+
.requiredOption('-y, --y <number>', 'Y coordinate', parseFloat)
|
|
78
|
+
.option('--font-size <number>', 'Font size', parseFloat)
|
|
79
|
+
.option('--text-align <align>', 'Text alignment: left, center, or right')
|
|
80
|
+
.option('--stroke-color <color>', 'Text color (hex)')
|
|
81
|
+
.action(async (options) => {
|
|
82
|
+
const client = await connectToCanvas();
|
|
83
|
+
const result = await client.send({
|
|
84
|
+
type: 'addText',
|
|
85
|
+
id: generateId(),
|
|
86
|
+
params: {
|
|
87
|
+
text: options.text,
|
|
88
|
+
x: options.x,
|
|
89
|
+
y: options.y,
|
|
90
|
+
fontSize: options.fontSize,
|
|
91
|
+
textAlign: options.textAlign,
|
|
92
|
+
strokeColor: options.strokeColor,
|
|
93
|
+
},
|
|
94
|
+
});
|
|
95
|
+
if (result.success) {
|
|
96
|
+
console.log(`Text created (id: ${result.elementId})`);
|
|
97
|
+
}
|
|
98
|
+
else {
|
|
99
|
+
console.error(`Failed: ${result.error}`);
|
|
100
|
+
process.exit(1);
|
|
101
|
+
}
|
|
102
|
+
client.close();
|
|
103
|
+
});
|
|
104
|
+
// ============================================================================
|
|
105
|
+
// Add Line
|
|
106
|
+
// ============================================================================
|
|
107
|
+
program
|
|
108
|
+
.command('add-line')
|
|
109
|
+
.description('Add a line to the canvas')
|
|
110
|
+
.requiredOption('-x, --x <number>', 'Start X coordinate', parseFloat)
|
|
111
|
+
.requiredOption('-y, --y <number>', 'Start Y coordinate', parseFloat)
|
|
112
|
+
.requiredOption('--end-x <number>', 'End X coordinate', parseFloat)
|
|
113
|
+
.requiredOption('--end-y <number>', 'End Y coordinate', parseFloat)
|
|
114
|
+
.option('--stroke-color <color>', 'Line color (hex)')
|
|
115
|
+
.option('--stroke-width <number>', 'Line width in pixels', parseFloat)
|
|
116
|
+
.option('--stroke-style <style>', 'Line style: solid, dashed, or dotted')
|
|
117
|
+
.action(async (options) => {
|
|
118
|
+
const client = await connectToCanvas();
|
|
119
|
+
const result = await client.send({
|
|
120
|
+
type: 'addLine',
|
|
121
|
+
id: generateId(),
|
|
122
|
+
params: {
|
|
123
|
+
x: options.x,
|
|
124
|
+
y: options.y,
|
|
125
|
+
endX: options.endX,
|
|
126
|
+
endY: options.endY,
|
|
127
|
+
strokeColor: options.strokeColor,
|
|
128
|
+
strokeWidth: options.strokeWidth,
|
|
129
|
+
strokeStyle: options.strokeStyle,
|
|
130
|
+
},
|
|
131
|
+
});
|
|
132
|
+
if (result.success) {
|
|
133
|
+
console.log(`Line created (id: ${result.elementId})`);
|
|
134
|
+
}
|
|
135
|
+
else {
|
|
136
|
+
console.error(`Failed: ${result.error}`);
|
|
137
|
+
process.exit(1);
|
|
138
|
+
}
|
|
139
|
+
client.close();
|
|
140
|
+
});
|
|
141
|
+
// ============================================================================
|
|
142
|
+
// Add Arrow
|
|
143
|
+
// ============================================================================
|
|
144
|
+
program
|
|
145
|
+
.command('add-arrow')
|
|
146
|
+
.description('Add an arrow to the canvas')
|
|
147
|
+
.requiredOption('-x, --x <number>', 'Start X coordinate', parseFloat)
|
|
148
|
+
.requiredOption('-y, --y <number>', 'Start Y coordinate', parseFloat)
|
|
149
|
+
.requiredOption('--end-x <number>', 'End X coordinate', parseFloat)
|
|
150
|
+
.requiredOption('--end-y <number>', 'End Y coordinate', parseFloat)
|
|
151
|
+
.option('--stroke-color <color>', 'Arrow color (hex)')
|
|
152
|
+
.option('--stroke-width <number>', 'Arrow width in pixels', parseFloat)
|
|
153
|
+
.option('--stroke-style <style>', 'Arrow style: solid, dashed, or dotted')
|
|
154
|
+
.option('--start-arrowhead <type>', 'Start arrowhead: arrow, bar, dot, triangle, diamond, none')
|
|
155
|
+
.option('--end-arrowhead <type>', 'End arrowhead: arrow, bar, dot, triangle, diamond, none')
|
|
156
|
+
.action(async (options) => {
|
|
157
|
+
const client = await connectToCanvas();
|
|
158
|
+
const result = await client.send({
|
|
159
|
+
type: 'addArrow',
|
|
160
|
+
id: generateId(),
|
|
161
|
+
params: {
|
|
162
|
+
x: options.x,
|
|
163
|
+
y: options.y,
|
|
164
|
+
endX: options.endX,
|
|
165
|
+
endY: options.endY,
|
|
166
|
+
strokeColor: options.strokeColor,
|
|
167
|
+
strokeWidth: options.strokeWidth,
|
|
168
|
+
strokeStyle: options.strokeStyle,
|
|
169
|
+
startArrowhead: options.startArrowhead,
|
|
170
|
+
endArrowhead: options.endArrowhead,
|
|
171
|
+
},
|
|
172
|
+
});
|
|
173
|
+
if (result.success) {
|
|
174
|
+
console.log(`Arrow created (id: ${result.elementId})`);
|
|
175
|
+
}
|
|
176
|
+
else {
|
|
177
|
+
console.error(`Failed: ${result.error}`);
|
|
178
|
+
process.exit(1);
|
|
179
|
+
}
|
|
180
|
+
client.close();
|
|
181
|
+
});
|
|
182
|
+
// ============================================================================
|
|
183
|
+
// Add Polygon
|
|
184
|
+
// ============================================================================
|
|
185
|
+
program
|
|
186
|
+
.command('add-polygon')
|
|
187
|
+
.description('Add a polygon to the canvas')
|
|
188
|
+
.requiredOption('-p, --points <json>', 'Points as JSON array: [{"x":0,"y":0},{"x":100,"y":0},{"x":50,"y":100}]')
|
|
189
|
+
.option('--stroke-color <color>', 'Stroke color (hex)')
|
|
190
|
+
.option('--background-color <color>', 'Background color (hex or "transparent")')
|
|
191
|
+
.option('--stroke-width <number>', 'Stroke width in pixels', parseFloat)
|
|
192
|
+
.option('--stroke-style <style>', 'Stroke style: solid, dashed, or dotted')
|
|
193
|
+
.option('--fill-style <style>', 'Fill style: hachure, cross-hatch, solid, or zigzag')
|
|
194
|
+
.action(async (options) => {
|
|
195
|
+
let points;
|
|
196
|
+
try {
|
|
197
|
+
points = JSON.parse(options.points);
|
|
198
|
+
}
|
|
199
|
+
catch {
|
|
200
|
+
console.error('Invalid points JSON');
|
|
201
|
+
process.exit(1);
|
|
202
|
+
}
|
|
203
|
+
const client = await connectToCanvas();
|
|
204
|
+
const result = await client.send({
|
|
205
|
+
type: 'addPolygon',
|
|
206
|
+
id: generateId(),
|
|
207
|
+
params: {
|
|
208
|
+
points,
|
|
209
|
+
strokeColor: options.strokeColor,
|
|
210
|
+
backgroundColor: options.backgroundColor,
|
|
211
|
+
strokeWidth: options.strokeWidth,
|
|
212
|
+
strokeStyle: options.strokeStyle,
|
|
213
|
+
fillStyle: options.fillStyle,
|
|
214
|
+
},
|
|
215
|
+
});
|
|
216
|
+
if (result.success) {
|
|
217
|
+
console.log(`Polygon created (id: ${result.elementId})`);
|
|
218
|
+
}
|
|
219
|
+
else {
|
|
220
|
+
console.error(`Failed: ${result.error}`);
|
|
221
|
+
process.exit(1);
|
|
222
|
+
}
|
|
223
|
+
client.close();
|
|
224
|
+
});
|
|
225
|
+
// ============================================================================
|
|
226
|
+
// Delete Elements
|
|
227
|
+
// ============================================================================
|
|
228
|
+
program
|
|
229
|
+
.command('delete-elements')
|
|
230
|
+
.description('Delete elements from the canvas')
|
|
231
|
+
.requiredOption('-i, --element-ids <ids>', 'Comma-separated element IDs to delete')
|
|
232
|
+
.action(async (options) => {
|
|
233
|
+
const elementIds = options.elementIds.split(',').map((s) => s.trim());
|
|
234
|
+
const client = await connectToCanvas();
|
|
235
|
+
const result = await client.send({
|
|
236
|
+
type: 'deleteElements',
|
|
237
|
+
id: generateId(),
|
|
238
|
+
params: { elementIds },
|
|
239
|
+
});
|
|
240
|
+
if (result.success) {
|
|
241
|
+
console.log(`Deleted ${result.deletedCount} element(s)`);
|
|
242
|
+
}
|
|
243
|
+
else {
|
|
244
|
+
console.error(`Failed: ${result.error}`);
|
|
245
|
+
process.exit(1);
|
|
246
|
+
}
|
|
247
|
+
client.close();
|
|
248
|
+
});
|
|
249
|
+
// ============================================================================
|
|
250
|
+
// Rotate Elements
|
|
251
|
+
// ============================================================================
|
|
252
|
+
program
|
|
253
|
+
.command('rotate-elements')
|
|
254
|
+
.description('Rotate elements (degrees, positive = clockwise)')
|
|
255
|
+
.requiredOption('-i, --element-ids <ids>', 'Comma-separated element IDs to rotate')
|
|
256
|
+
.requiredOption('-a, --angle <degrees>', 'Rotation angle in degrees', parseFloat)
|
|
257
|
+
.action(async (options) => {
|
|
258
|
+
const elementIds = options.elementIds.split(',').map((s) => s.trim());
|
|
259
|
+
const client = await connectToCanvas();
|
|
260
|
+
const result = await client.send({
|
|
261
|
+
type: 'rotateElements',
|
|
262
|
+
id: generateId(),
|
|
263
|
+
params: { elementIds, angle: options.angle },
|
|
264
|
+
});
|
|
265
|
+
if (result.success) {
|
|
266
|
+
console.log(`Rotated ${result.rotatedCount} element(s)`);
|
|
267
|
+
}
|
|
268
|
+
else {
|
|
269
|
+
console.error(`Failed: ${result.error}`);
|
|
270
|
+
process.exit(1);
|
|
271
|
+
}
|
|
272
|
+
client.close();
|
|
273
|
+
});
|
|
274
|
+
// ============================================================================
|
|
275
|
+
// Group Elements
|
|
276
|
+
// ============================================================================
|
|
277
|
+
program
|
|
278
|
+
.command('group-elements')
|
|
279
|
+
.description('Group multiple elements together')
|
|
280
|
+
.requiredOption('-i, --element-ids <ids>', 'Comma-separated element IDs')
|
|
281
|
+
.action(async (options) => {
|
|
282
|
+
const elementIds = options.elementIds.split(',').map((s) => s.trim());
|
|
283
|
+
const client = await connectToCanvas();
|
|
284
|
+
const result = await client.send({
|
|
285
|
+
type: 'groupElements',
|
|
286
|
+
id: generateId(),
|
|
287
|
+
params: { elementIds },
|
|
288
|
+
});
|
|
289
|
+
if (result.success) {
|
|
290
|
+
console.log(`Group created (id: ${result.groupId})`);
|
|
291
|
+
}
|
|
292
|
+
else {
|
|
293
|
+
console.error(`Failed: ${result.error}`);
|
|
294
|
+
process.exit(1);
|
|
295
|
+
}
|
|
296
|
+
client.close();
|
|
297
|
+
});
|
|
298
|
+
// ============================================================================
|
|
299
|
+
// Ungroup Element
|
|
300
|
+
// ============================================================================
|
|
301
|
+
program
|
|
302
|
+
.command('ungroup-element')
|
|
303
|
+
.description('Remove an element from its group')
|
|
304
|
+
.requiredOption('-i, --element-id <id>', 'Element ID to ungroup')
|
|
305
|
+
.action(async (options) => {
|
|
306
|
+
const client = await connectToCanvas();
|
|
307
|
+
const result = await client.send({
|
|
308
|
+
type: 'ungroupElement',
|
|
309
|
+
id: generateId(),
|
|
310
|
+
params: { elementId: options.elementId },
|
|
311
|
+
});
|
|
312
|
+
if (result.success) {
|
|
313
|
+
console.log('Element ungrouped');
|
|
314
|
+
}
|
|
315
|
+
else {
|
|
316
|
+
console.error(`Failed: ${result.error}`);
|
|
317
|
+
process.exit(1);
|
|
318
|
+
}
|
|
319
|
+
client.close();
|
|
320
|
+
});
|
|
321
|
+
// ============================================================================
|
|
322
|
+
// Move Elements
|
|
323
|
+
// ============================================================================
|
|
324
|
+
program
|
|
325
|
+
.command('move-elements')
|
|
326
|
+
.description('Move elements by offset')
|
|
327
|
+
.requiredOption('-i, --element-ids <ids>', 'Comma-separated element IDs')
|
|
328
|
+
.requiredOption('--delta-x <number>', 'Horizontal offset (positive = right)', parseFloat)
|
|
329
|
+
.requiredOption('--delta-y <number>', 'Vertical offset (positive = down)', parseFloat)
|
|
330
|
+
.action(async (options) => {
|
|
331
|
+
const elementIds = options.elementIds.split(',').map((s) => s.trim());
|
|
332
|
+
const client = await connectToCanvas();
|
|
333
|
+
const result = await client.send({
|
|
334
|
+
type: 'moveElements',
|
|
335
|
+
id: generateId(),
|
|
336
|
+
params: { elementIds, deltaX: options.deltaX, deltaY: options.deltaY },
|
|
337
|
+
});
|
|
338
|
+
if (result.success) {
|
|
339
|
+
console.log(`Moved ${result.movedCount} element(s)`);
|
|
340
|
+
}
|
|
341
|
+
else {
|
|
342
|
+
console.error(`Failed: ${result.error}`);
|
|
343
|
+
process.exit(1);
|
|
344
|
+
}
|
|
345
|
+
client.close();
|
|
346
|
+
});
|
|
347
|
+
// ============================================================================
|
|
348
|
+
// Read Scene
|
|
349
|
+
// ============================================================================
|
|
350
|
+
program
|
|
351
|
+
.command('read')
|
|
352
|
+
.description('Read all elements from the canvas (TOON format by default)')
|
|
353
|
+
.option('--json', 'Output as JSON')
|
|
354
|
+
.action(async (options) => {
|
|
355
|
+
const client = await connectToCanvas();
|
|
356
|
+
const result = await client.send({
|
|
357
|
+
type: 'readScene',
|
|
358
|
+
id: generateId(),
|
|
359
|
+
});
|
|
360
|
+
if (result.success && result.elements) {
|
|
361
|
+
if (options.json) {
|
|
362
|
+
console.log(JSON.stringify(result.elements, null, 2));
|
|
363
|
+
}
|
|
364
|
+
else {
|
|
365
|
+
// Simplify elements for TOON output
|
|
366
|
+
const elements = result.elements.map(el => ({
|
|
367
|
+
id: el.id,
|
|
368
|
+
type: el.type,
|
|
369
|
+
x: Math.round(el.x),
|
|
370
|
+
y: Math.round(el.y),
|
|
371
|
+
...(el.width !== undefined && { w: Math.round(el.width) }),
|
|
372
|
+
...(el.height !== undefined && { h: Math.round(el.height) }),
|
|
373
|
+
...(el.text && { text: el.text }),
|
|
374
|
+
...(el.groupIds?.length && { groups: el.groupIds }),
|
|
375
|
+
}));
|
|
376
|
+
console.log(toToon({ elements }));
|
|
377
|
+
}
|
|
378
|
+
}
|
|
379
|
+
else {
|
|
380
|
+
console.error(`Failed: ${result.error}`);
|
|
381
|
+
process.exit(1);
|
|
382
|
+
}
|
|
383
|
+
client.close();
|
|
384
|
+
});
|
|
385
|
+
// ============================================================================
|
|
386
|
+
// Export Image
|
|
387
|
+
// ============================================================================
|
|
388
|
+
program
|
|
389
|
+
.command('export')
|
|
390
|
+
.description('Export canvas to PNG image')
|
|
391
|
+
.option('-o, --output <path>', 'Output file path')
|
|
392
|
+
.option('--no-background', 'Export without background')
|
|
393
|
+
.option('--dark', 'Use dark mode')
|
|
394
|
+
.option('--embed-scene', 'Embed scene data in PNG')
|
|
395
|
+
.option('--scale <scale>', 'Export scale (1, 2, or 3)', '1')
|
|
396
|
+
.action(async (options) => {
|
|
397
|
+
const scale = parseInt(options.scale, 10);
|
|
398
|
+
if (![1, 2, 3].includes(scale)) {
|
|
399
|
+
console.error('Scale must be 1, 2, or 3');
|
|
400
|
+
process.exit(1);
|
|
401
|
+
}
|
|
402
|
+
const client = await connectToCanvas();
|
|
403
|
+
const result = await client.send({
|
|
404
|
+
type: 'exportImage',
|
|
405
|
+
id: generateId(),
|
|
406
|
+
params: {
|
|
407
|
+
background: options.background,
|
|
408
|
+
dark: options.dark ?? false,
|
|
409
|
+
embedScene: options.embedScene ?? false,
|
|
410
|
+
scale: scale,
|
|
411
|
+
},
|
|
412
|
+
});
|
|
413
|
+
if (result.success && result.dataUrl) {
|
|
414
|
+
// Extract base64 data from data URL
|
|
415
|
+
const base64Data = result.dataUrl.replace(/^data:image\/png;base64,/, '');
|
|
416
|
+
const buffer = Buffer.from(base64Data, 'base64');
|
|
417
|
+
// Generate output path if not specified
|
|
418
|
+
const outputPath = options.output || `canvas-${Date.now()}.png`;
|
|
419
|
+
writeFileSync(outputPath, buffer);
|
|
420
|
+
console.log(`Exported to ${outputPath}`);
|
|
421
|
+
}
|
|
422
|
+
else {
|
|
423
|
+
console.error(`Failed: ${result.error}`);
|
|
424
|
+
process.exit(1);
|
|
425
|
+
}
|
|
426
|
+
client.close();
|
|
427
|
+
});
|
|
428
|
+
// ============================================================================
|
|
429
|
+
// Save Scene
|
|
430
|
+
// ============================================================================
|
|
431
|
+
program
|
|
432
|
+
.command('save')
|
|
433
|
+
.description('Save canvas to an .excalidraw file')
|
|
434
|
+
.argument('<filepath>', 'Output file path (.excalidraw)')
|
|
435
|
+
.action(async (filepath) => {
|
|
436
|
+
const client = await connectToCanvas();
|
|
437
|
+
const result = await client.send({
|
|
438
|
+
type: 'saveScene',
|
|
439
|
+
id: generateId(),
|
|
440
|
+
});
|
|
441
|
+
if (result.success && result.data) {
|
|
442
|
+
const outputPath = filepath.endsWith('.excalidraw') ? filepath : `${filepath}.excalidraw`;
|
|
443
|
+
writeFileSync(outputPath, JSON.stringify(result.data, null, 2));
|
|
444
|
+
console.log(`Saved to ${outputPath}`);
|
|
445
|
+
}
|
|
446
|
+
else {
|
|
447
|
+
console.error(`Failed: ${result.error}`);
|
|
448
|
+
process.exit(1);
|
|
449
|
+
}
|
|
450
|
+
client.close();
|
|
451
|
+
});
|
|
452
|
+
program.parse();
|