@diagrammo/dgmo 0.52.0 → 0.54.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/.cursorrules +59 -58
- package/.github/copilot-instructions.md +59 -58
- package/.windsurfrules +59 -58
- package/SKILL.md +59 -58
- package/dist/advanced.d.ts +101 -230
- package/dist/advanced.js +330 -658
- package/dist/analyzer-TDN5KJFP.js +15 -0
- package/dist/auto.css +14 -6
- package/dist/auto.js +163 -139
- package/dist/auto.mjs +1859 -885
- package/dist/block.css +14 -6
- package/dist/block.js +96 -81
- package/dist/calculator-VBIT6GQF.js +11 -0
- package/dist/chart-meta-CPNVUZ5J.d.ts +232 -0
- package/dist/chart-meta.d.ts +2 -0
- package/dist/chart-meta.js +108 -0
- package/dist/charts-d3-25E4VWXO.js +27 -0
- package/dist/chunk-2CW5ZTNH.js +58 -0
- package/dist/{chunk-BPY242XU.js → chunk-2NYXI35Z.js} +32 -14
- package/dist/{chunk-AUIM2NVH.js → chunk-2NZOHEP4.js} +7 -8
- package/dist/{chunk-HFMYN6N2.js → chunk-3B2GXZCX.js} +4 -3
- package/dist/chunk-3FRO35WW.js +1158 -0
- package/dist/{chunk-J7TLCB2Q.js → chunk-3IUHKMJI.js} +2 -2
- package/dist/{chunk-R3YSD62R.js → chunk-3KHJJP3J.js} +3 -3
- package/dist/{chunk-6LBQ7ELG.js → chunk-3SBHODJ4.js} +36 -17
- package/dist/{chunk-4UNQ6X24.js → chunk-3SEEP2JM.js} +4 -4
- package/dist/{chunk-7L4UJOY6.js → chunk-3TYUXC7D.js} +2 -2
- package/dist/{chunk-Y2ZE3MSG.js → chunk-43E26CDA.js} +2 -2
- package/dist/{chunk-CCNDLW7Z.js → chunk-47JNEKJA.js} +9 -9
- package/dist/{chunk-WCT3NYCV.js → chunk-4ASYQ347.js} +33 -8
- package/dist/{chunk-I5IGB56C.js → chunk-4QV26TEG.js} +41 -1
- package/dist/{chunk-INE5YJBZ.js → chunk-4T6OCSJ2.js} +8 -8
- package/dist/{chunk-CXK4DZH3.js → chunk-4W2PE66Q.js} +12 -2
- package/dist/{chunk-7KINELPI.js → chunk-4ZIKWVSQ.js} +17 -16
- package/dist/{chunk-JED6ZDEE.js → chunk-5HWPEYWB.js} +2 -2
- package/dist/{chunk-HWX6ZHF3.js → chunk-5VXU6MND.js} +6 -6
- package/dist/{chunk-44VCIPHF.js → chunk-5XSNLXU5.js} +23 -20
- package/dist/{chunk-4AQRFDXL.js → chunk-62Y27T4C.js} +2 -2
- package/dist/{chunk-QHXCAEMX.js → chunk-6KL7TFLS.js} +5 -5
- package/dist/{chunk-5BHJZH62.js → chunk-6OYDOQ2Q.js} +18 -6
- package/dist/{chunk-5HILBT7X.js → chunk-7JDTNFAK.js} +3 -3
- package/dist/{chunk-JRCOYRRH.js → chunk-7K6NDSXH.js} +9 -9
- package/dist/{chunk-5NGAO4QK.js → chunk-7SP4C6EV.js} +11 -11
- package/dist/{chunk-I46X5VUA.js → chunk-7TF3QOOD.js} +25 -1
- package/dist/{chunk-WRNFDFPU.js → chunk-7U4OR7CD.js} +2 -2
- package/dist/{chunk-5RP7JRVP.js → chunk-7UPFTBOW.js} +21 -17
- package/dist/{chunk-AAXZDUOV.js → chunk-A3BDLDYG.js} +17 -16
- package/dist/{chunk-GCYTI3DE.js → chunk-ADCHLNWT.js} +56 -10
- package/dist/{chunk-QBZYACOG.js → chunk-ADYKAKE3.js} +3 -3
- package/dist/{chunk-HHKO6SKY.js → chunk-AHTTKERF.js} +3 -3
- package/dist/{chunk-BKVOYV6I.js → chunk-AJFHNS67.js} +15 -15
- package/dist/{chunk-EMLPOL77.js → chunk-AQEYUVGJ.js} +124 -41
- package/dist/{chunk-3LK5DNED.js → chunk-B4XS2AF2.js} +3 -3
- package/dist/{chunk-REJAIQ5S.js → chunk-B7N5KYXQ.js} +16 -16
- package/dist/chunk-BEOAKGNA.js +484 -0
- package/dist/{chunk-SMRFPVLQ.js → chunk-BM7MG6HT.js} +4 -4
- package/dist/{chunk-P3NRSSUU.js → chunk-BULHGPHK.js} +3 -3
- package/dist/{chunk-QZX5S6R3.js → chunk-BWYFIVZF.js} +149 -89
- package/dist/{chunk-UBLHQTLV.js → chunk-BZJIITYM.js} +11 -10
- package/dist/{chunk-PRI2OD4E.js → chunk-C2UORMIA.js} +11 -6
- package/dist/{chunk-3YRPZ7ZZ.js → chunk-CCGWX6AO.js} +4 -4
- package/dist/{chunk-H7KENAZO.js → chunk-COJW2NEY.js} +73 -13
- package/dist/{chunk-WBRZJOEC.js → chunk-COVYNAKJ.js} +6 -6
- package/dist/{chunk-7QE3XMRK.js → chunk-CSHFU6LT.js} +13 -13
- package/dist/{chunk-6EJITS44.js → chunk-DLU643TF.js} +7 -7
- package/dist/{chunk-LBMS4AW6.js → chunk-DPGQ5UMO.js} +14 -14
- package/dist/{chunk-LTXOLDUZ.js → chunk-EAI6XJ7D.js} +12 -5
- package/dist/{chunk-FT3ZYWET.js → chunk-EPRF3ZRV.js} +11 -10
- package/dist/chunk-EQOMY4PY.js +404 -0
- package/dist/{chunk-USZW2HHU.js → chunk-EQW6HOP4.js} +4 -3
- package/dist/{chunk-HBPDFCQY.js → chunk-F7XM366V.js} +10 -9
- package/dist/{chunk-DYWQFQJP.js → chunk-FFVFZLRT.js} +57 -24
- package/dist/{chunk-77FGAVZC.js → chunk-FR6UFVSV.js} +19 -17
- package/dist/{chunk-MUE65OTD.js → chunk-FVMKCZHF.js} +8 -6
- package/dist/{chunk-3QD7VP3U.js → chunk-GK32ZFZY.js} +17 -10
- package/dist/{chunk-TJVLKNGR.js → chunk-GKYHWJXI.js} +5 -5
- package/dist/{chunk-FQMUHRVC.js → chunk-GQ5ECRP4.js} +13 -10
- package/dist/{chunk-5QKQSSPO.js → chunk-GRM2A4BG.js} +4 -4
- package/dist/{chunk-OTOHI4JO.js → chunk-H3HFC3SQ.js} +2 -2
- package/dist/{chunk-BPIZNB5O.js → chunk-HAA25PLC.js} +10 -10
- package/dist/{chunk-YIBAWQGJ.js → chunk-HFEOOQ46.js} +4 -4
- package/dist/{chunk-J76PIKAT.js → chunk-HO3RCNF6.js} +3 -3
- package/dist/{chunk-7DF4J4RL.js → chunk-I47VHSPS.js} +19 -13
- package/dist/{chunk-5SEVICBT.js → chunk-ICKXIMBA.js} +10 -9
- package/dist/{chunk-A44USUV7.js → chunk-ICZ7M6IZ.js} +23 -17
- package/dist/{chunk-SWSIKFEB.js → chunk-IOIMQHQ6.js} +4 -4
- package/dist/{chunk-6HQH6JZE.js → chunk-IYNKLCAZ.js} +7 -7
- package/dist/{chunk-YAA6IID3.js → chunk-J7HQPVYH.js} +2 -2
- package/dist/{chunk-WBM7ZNDI.js → chunk-JYDMBWRP.js} +35 -18
- package/dist/{chunk-ZJV7GYR4.js → chunk-KBVOVDYP.js} +8 -8
- package/dist/{chunk-ICPJPQ5C.js → chunk-KDK5EKUR.js} +3 -3
- package/dist/{chunk-FHGVORFO.js → chunk-KINOX74I.js} +12 -12
- package/dist/{chunk-XD6ZYURY.js → chunk-KQ3FNRGR.js} +7 -14
- package/dist/{chunk-3HGU63UY.js → chunk-KQYQECWQ.js} +17 -16
- package/dist/{chunk-MUVJ57EP.js → chunk-KS5ZSM5T.js} +20 -17
- package/dist/{chunk-FY5MSZAP.js → chunk-KV4HLIJE.js} +21 -6
- package/dist/{chunk-LGT3PZCJ.js → chunk-LPJ6H5X4.js} +17 -17
- package/dist/{chunk-ONU3U4GL.js → chunk-LRSW4JLE.js} +52 -16
- package/dist/{chunk-TPFKKXCB.js → chunk-M24VXUFG.js} +7 -7
- package/dist/{chunk-QJMKPUYK.js → chunk-M3H7ZE6C.js} +21 -14
- package/dist/{chunk-QVENJMNX.js → chunk-MEQYZZFR.js} +2 -2
- package/dist/{chunk-75G3Q4DK.js → chunk-MTZOXISJ.js} +9 -9
- package/dist/{chunk-J7KJR3R6.js → chunk-N7BSBAVP.js} +133 -696
- package/dist/{chunk-VQOCMUWI.js → chunk-NUTWTV6G.js} +13 -11
- package/dist/{chunk-7BIZCTAX.js → chunk-O576GYAP.js} +3 -3
- package/dist/{chunk-H6PI3KJT.js → chunk-ODUT5WMC.js} +2 -2
- package/dist/{chunk-AL672HNE.js → chunk-OJ435DQZ.js} +17 -7
- package/dist/{chunk-3HF5YEFJ.js → chunk-OR3R27CU.js} +4 -4
- package/dist/{chunk-QGATPIPX.js → chunk-OSXQKC3S.js} +35 -23
- package/dist/{chunk-FUPF2UYQ.js → chunk-PIXZTCKH.js} +51 -108
- package/dist/{chunk-QOOUC2J5.js → chunk-Q5IHQ4NW.js} +12 -2
- package/dist/{chunk-4IHAV6O7.js → chunk-QBYP2FBZ.js} +10 -478
- package/dist/{chunk-GU46PPT3.js → chunk-QXGACPS2.js} +5 -5
- package/dist/{chunk-FMDSF3OV.js → chunk-QZAW5SFH.js} +2 -2
- package/dist/{chunk-YTMTPUH4.js → chunk-R5BGGBFF.js} +4 -4
- package/dist/{chunk-KGVZ5VGH.js → chunk-RIEAN4D5.js} +16 -12
- package/dist/{chunk-5223KXFD.js → chunk-RJ5LBZ5U.js} +7 -7
- package/dist/{chunk-K4EOKJA6.js → chunk-RRGKMJYL.js} +45 -18
- package/dist/{chunk-TTIM6YTT.js → chunk-S7FOIURR.js} +14 -13
- package/dist/{chunk-IM6PDDCE.js → chunk-S7YFT3PO.js} +78 -23
- package/dist/{chunk-ZEF5M5MB.js → chunk-SBOAZ7YK.js} +82 -296
- package/dist/{chunk-6NYWYNBI.js → chunk-SSHS42QG.js} +6 -6
- package/dist/{chunk-NNS4E7CW.js → chunk-T3FAJAJT.js} +18 -9
- package/dist/{chunk-ROOE4R4Y.js → chunk-T7Y554OK.js} +146 -18
- package/dist/chunk-TGOMHUOV.js +218 -0
- package/dist/{chunk-K2I2XOZD.js → chunk-TJN2OIVG.js} +30 -15
- package/dist/{chunk-VILVLS7P.js → chunk-TLNVYWPA.js} +8 -4
- package/dist/{chunk-GJFAMOGK.js → chunk-U4IN6AHE.js} +7 -7
- package/dist/chunk-U7VO6JAA.js +566 -0
- package/dist/{chunk-MX2EY5Y7.js → chunk-UEU6IYKY.js} +2 -2
- package/dist/{chunk-J6QROYDA.js → chunk-UIT7E6UF.js} +26 -10
- package/dist/{chunk-Z72XRXD4.js → chunk-UJRTPOHH.js} +3 -3
- package/dist/{chunk-TYS6CSS5.js → chunk-UU6LUYUH.js} +2 -2
- package/dist/{chunk-VL2O2F3W.js → chunk-VHO3YBTB.js} +2 -2
- package/dist/{chunk-4YFKQ5WT.js → chunk-VMSBMIHW.js} +5 -5
- package/dist/{chunk-Z5QVYKR7.js → chunk-VQFDBNYF.js} +4 -4
- package/dist/{chunk-UNURMIQO.js → chunk-W6PCFRPL.js} +4 -4
- package/dist/{chunk-FFUN5D66.js → chunk-WF64MW5G.js} +2 -2
- package/dist/{chunk-T4A4TSTJ.js → chunk-WKNAJ4BR.js} +20 -18
- package/dist/{chunk-CIRFIL4M.js → chunk-WW4BQ744.js} +11 -11
- package/dist/{chunk-ARGMQ3H4.js → chunk-WWHECSYZ.js} +3 -3
- package/dist/{chunk-ZNWAYU6N.js → chunk-XWODFBHJ.js} +73 -18
- package/dist/{chunk-HQQNCY7W.js → chunk-YENNFS5F.js} +10 -10
- package/dist/{chunk-TLVIHFRO.js → chunk-ZKPPI6BF.js} +2 -2
- package/dist/cli.cjs +173 -157
- package/dist/clock.js +9 -1
- package/dist/completion-registry.d.ts +129 -0
- package/dist/completion-registry.js +1270 -0
- package/dist/{compute-G55RG53N.js → compute-JAP5E2E4.js} +2 -2
- package/dist/countdown.js +4 -3
- package/dist/dgmo-router-TGZWFIZO.js +88 -0
- package/dist/dimensions-L6BXQXXL.js +22 -0
- package/dist/editor.js +51 -5
- package/dist/element.js +163 -139
- package/dist/element.mjs +1859 -885
- package/dist/flowchart-parser-UKYOW3VM.js +21 -0
- package/dist/{flowchart-renderer-MNCDS7MV.js → flowchart-renderer-DCFKUDDR.js} +16 -16
- package/dist/highlight.js +55 -6
- package/dist/index.d.ts +4 -2
- package/dist/index.js +89 -81
- package/dist/layout-25Y3VDYF.js +19 -0
- package/dist/layout-4SPLI4HG.js +15 -0
- package/dist/layout-5XGYNYVT.js +9 -0
- package/dist/{layout-OAC4PEAC.js → layout-A6OIGZN2.js} +7 -7
- package/dist/layout-AZUPXWSK.js +15 -0
- package/dist/{layout-F4WO357A.js → layout-CAAKQX4W.js} +3 -3
- package/dist/{layout-A5UHRWVH.js → layout-CB3XWCOI.js} +3 -3
- package/dist/layout-CH4HFFRD.js +15 -0
- package/dist/layout-G2ABQJQZ.js +20 -0
- package/dist/{layout-7QXCNOVS.js → layout-HBWT2G23.js} +3 -3
- package/dist/{layout-2L3WMRYU.js → layout-ITLPDG6M.js} +9 -8
- package/dist/layout-NF4EWFLT.js +17 -0
- package/dist/layout-NY7MHJCL.js +15 -0
- package/dist/layout-QBNAMEOA.js +19 -0
- package/dist/layout-SP7HJWKA.js +17 -0
- package/dist/{layout-search-55FU6HD3.js → layout-search-LUI475P3.js} +56 -35
- package/dist/legend-constants-B77VKB3R.js +54 -0
- package/dist/{palettes-UDLZ2SA4.js → palettes-FGTNFARW.js} +4 -4
- package/dist/parser-2UWWNTFL.js +12 -0
- package/dist/parser-3RXYQSA7.js +18 -0
- package/dist/parser-5C3PEZK3.js +11 -0
- package/dist/parser-66RYGJRB.js +20 -0
- package/dist/parser-6GN5YJBJ.js +13 -0
- package/dist/parser-6MQM7WT3.js +15 -0
- package/dist/{parser-DQAFLUJB.js → parser-7UI6UQ7B.js} +7 -7
- package/dist/parser-B2A7XOAK.js +12 -0
- package/dist/parser-CCNJKDDA.js +16 -0
- package/dist/parser-ESHNUFME.js +13 -0
- package/dist/parser-F4FEU57T.js +11 -0
- package/dist/parser-FHRMFUNX.js +15 -0
- package/dist/parser-FPCWDYQV.js +13 -0
- package/dist/parser-FY3YFFBS.js +20 -0
- package/dist/parser-GML6V2KZ.js +14 -0
- package/dist/parser-HA3PF5FL.js +15 -0
- package/dist/parser-KTYF6WO5.js +11 -0
- package/dist/{parser-ZL5QUFVH.js → parser-LTA2BOZO.js} +5 -5
- package/dist/parser-LU7UAKNB.js +13 -0
- package/dist/parser-MHKYQPC2.js +11 -0
- package/dist/parser-MVSYFK63.js +17 -0
- package/dist/parser-O7YQYFEN.js +15 -0
- package/dist/parser-OPIXXUY4.js +21 -0
- package/dist/parser-S4EJPNVN.js +19 -0
- package/dist/parser-T3D7BV6O.js +11 -0
- package/dist/{parser-YKYMQG3B.js → parser-VVE4THG3.js} +6 -6
- package/dist/parser-WPPJGB4R.js +12 -0
- package/dist/parser-X5XLFY4Z.js +22 -0
- package/dist/parser-XCPMEB2Z.js +11 -0
- package/dist/parser-XRDUX2AR.js +14 -0
- package/dist/parser-YPWYT46P.js +16 -0
- package/dist/parser-YULS5MLD.js +13 -0
- package/dist/pert.d.ts +2 -0
- package/dist/registry-CaSw0PSH.d.ts +350 -0
- package/dist/renderer-2DME63VZ.js +16 -0
- package/dist/renderer-3VY3VXJE.js +37 -0
- package/dist/renderer-4A32DX5L.js +24 -0
- package/dist/renderer-4K5YYX5R.js +28 -0
- package/dist/renderer-6CFML5G3.js +22 -0
- package/dist/renderer-7HMZ5OCJ.js +16 -0
- package/dist/renderer-7ZNVOVFG.js +16 -0
- package/dist/{renderer-CQY6ATOS.js → renderer-B7Y6I7JX.js} +9 -8
- package/dist/renderer-C3RI4OPJ.js +33 -0
- package/dist/renderer-CJ56SUMF.js +26 -0
- package/dist/renderer-COJZZ4F6.js +25 -0
- package/dist/renderer-FXMGCSRP.js +26 -0
- package/dist/{renderer-HSHHVYWF.js → renderer-G4UOW3RH.js} +7 -7
- package/dist/renderer-HQ4JFZOV.js +27 -0
- package/dist/{renderer-NHO46CT2.js → renderer-K7XLVPH5.js} +6 -6
- package/dist/{renderer-ZWIH4WDW.js → renderer-LHVCKEWF.js} +13 -13
- package/dist/renderer-OZX5KGQM.js +21 -0
- package/dist/{renderer-3F7OS2AX.js → renderer-P3YQES7B.js} +16 -16
- package/dist/renderer-PLVIARM7.js +24 -0
- package/dist/renderer-RA4PTAMF.js +19 -0
- package/dist/renderer-RMAM2SOJ.js +28 -0
- package/dist/renderer-SES7QZYL.js +37 -0
- package/dist/renderer-TQ5QDZOE.js +22 -0
- package/dist/renderer-V5SNTPAM.js +27 -0
- package/dist/{renderer-5DAKMIU2.js → renderer-WCWI4I6A.js} +5 -5
- package/dist/renderer-WVD6G2TS.js +34 -0
- package/dist/{renderer-DT4XRFEP.js → renderer-X2LYSMLU.js} +7 -7
- package/dist/renderer-Y3NXZINM.js +24 -0
- package/dist/{renderer-KNFTTOBL.js → renderer-YEFOOULC.js} +14 -14
- package/dist/renderer-YP3P6UVT.js +24 -0
- package/dist/renderer-YVMETH6V.js +29 -0
- package/dist/renderer-Z4GNKNXO.js +24 -0
- package/dist/renderer-radial-VYBZAXXE.js +21 -0
- package/dist/{resolver-EMTGNR3D.js → resolver-WFKZYBJ2.js} +4 -4
- package/dist/state-parser-VIW2WNA5.js +19 -0
- package/dist/state-renderer-H22AQD3U.js +38 -0
- package/dist/{themes-32xj5ZTW.d.ts → themes-tbBkIVsn.d.ts} +2 -349
- package/docs/ai-integration.md +59 -58
- package/docs/language-reference.md +323 -286
- package/fonts/Inter-Bold.woff2 +0 -0
- package/fonts/Inter-Regular.woff2 +0 -0
- package/gallery/fixtures/boxes-and-lines-diverging.dgmo +1 -2
- package/gallery/fixtures/boxes-and-lines.dgmo +1 -1
- package/gallery/fixtures/clock.dgmo +1 -1
- package/gallery/fixtures/event-line.dgmo +1 -1
- package/gallery/fixtures/gantt-full.dgmo +1 -1
- package/gallery/fixtures/gantt-sprints.dgmo +9 -9
- package/gallery/fixtures/gantt.dgmo +1 -1
- package/gallery/fixtures/legacy-syntax-backcompat.dgmo +16 -0
- package/gallery/fixtures/state-tags.dgmo +40 -0
- package/gallery/fixtures/swimlane.dgmo +1 -1
- package/gallery/fixtures/timeline-intraday.dgmo +1 -1
- package/package.json +9 -1
- package/dist/analyzer-BJ54GIFB.js +0 -15
- package/dist/calculator-LDYQCDDY.js +0 -11
- package/dist/charts-d3-MXEP6BNP.js +0 -26
- package/dist/chunk-BRENJ2BQ.js +0 -714
- package/dist/chunk-FQ7HTV52.js +0 -364
- package/dist/dgmo-router-X7ZGAPIE.js +0 -86
- package/dist/dimensions-45H6JQEY.js +0 -22
- package/dist/flowchart-parser-UKELHBSB.js +0 -21
- package/dist/layout-46N4JJYK.js +0 -17
- package/dist/layout-A4XWNVID.js +0 -14
- package/dist/layout-AM2JWW3X.js +0 -15
- package/dist/layout-EE6GE46Y.js +0 -17
- package/dist/layout-G23F7LDH.js +0 -9
- package/dist/layout-GM4UGR7B.js +0 -19
- package/dist/layout-GQQJXNYH.js +0 -15
- package/dist/layout-IIE2S5FK.js +0 -20
- package/dist/layout-VMCRX66I.js +0 -14
- package/dist/layout-ZDOSXL5G.js +0 -19
- package/dist/parser-2ECN6JA2.js +0 -16
- package/dist/parser-4WTIHM5J.js +0 -11
- package/dist/parser-5H2BTSJQ.js +0 -11
- package/dist/parser-75KVXUNS.js +0 -16
- package/dist/parser-774AC53T.js +0 -13
- package/dist/parser-BE4YCSRU.js +0 -11
- package/dist/parser-CNGUQUQI.js +0 -11
- package/dist/parser-DEUUSQIN.js +0 -22
- package/dist/parser-EYCKNKQA.js +0 -21
- package/dist/parser-FXISIU6A.js +0 -14
- package/dist/parser-GTB4XC7P.js +0 -18
- package/dist/parser-GVEPAUSD.js +0 -12
- package/dist/parser-HSQGTY4G.js +0 -19
- package/dist/parser-HVKRINUS.js +0 -11
- package/dist/parser-J5MIEYO4.js +0 -15
- package/dist/parser-KMZIXLDZ.js +0 -13
- package/dist/parser-LJHXWSXU.js +0 -14
- package/dist/parser-PT3W72G5.js +0 -15
- package/dist/parser-SBJQDPHL.js +0 -15
- package/dist/parser-SUWWWCMX.js +0 -12
- package/dist/parser-SXDRNZOA.js +0 -13
- package/dist/parser-UMILOW3M.js +0 -14
- package/dist/parser-UP3AZ367.js +0 -13
- package/dist/parser-WHPRV3X5.js +0 -20
- package/dist/parser-WX3UODSJ.js +0 -12
- package/dist/parser-XCIEN3KN.js +0 -13
- package/dist/parser-XIRTUMVN.js +0 -18
- package/dist/parser-YKCGIG45.js +0 -11
- package/dist/parser-ZGM2OJ6Y.js +0 -22
- package/dist/renderer-4QB4K7Q3.js +0 -24
- package/dist/renderer-5H4SY7YY.js +0 -22
- package/dist/renderer-5PIQPFOX.js +0 -16
- package/dist/renderer-6MU37QF5.js +0 -19
- package/dist/renderer-AQVMWJ4M.js +0 -27
- package/dist/renderer-BDDW6K7N.js +0 -24
- package/dist/renderer-BNB3VIDY.js +0 -26
- package/dist/renderer-CVW75CXL.js +0 -37
- package/dist/renderer-ERHBSTQT.js +0 -25
- package/dist/renderer-IDPVUFNB.js +0 -28
- package/dist/renderer-ILX6BGKR.js +0 -21
- package/dist/renderer-JP663HKG.js +0 -22
- package/dist/renderer-MVUZBESR.js +0 -16
- package/dist/renderer-N4EBR2FV.js +0 -28
- package/dist/renderer-NO2QJ5LZ.js +0 -27
- package/dist/renderer-OGFV5RXX.js +0 -34
- package/dist/renderer-PDLESJMS.js +0 -37
- package/dist/renderer-T4MTNINC.js +0 -24
- package/dist/renderer-TOUGFGTM.js +0 -24
- package/dist/renderer-U3KPD43Y.js +0 -34
- package/dist/renderer-X334IJU2.js +0 -26
- package/dist/renderer-Y5OAMOCR.js +0 -23
- package/dist/renderer-YONAKAJU.js +0 -16
- package/dist/renderer-YWMI6Y2U.js +0 -29
- package/dist/renderer-radial-7CGZMVMS.js +0 -21
- package/dist/state-parser-BATWAID2.js +0 -18
- package/dist/state-renderer-3FKZJ3LP.js +0 -34
|
@@ -1,184 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
interface DgmoError {
|
|
3
|
-
line: number;
|
|
4
|
-
column?: number;
|
|
5
|
-
message: string;
|
|
6
|
-
severity: DgmoSeverity;
|
|
7
|
-
/**
|
|
8
|
-
* Optional stable diagnostic code (e.g. 'E_ARROW_SUBSTRING_IN_LABEL').
|
|
9
|
-
* Additive; pre-existing diagnostics omit this field and existing
|
|
10
|
-
* substring-on-`.message` assertions keep working unchanged.
|
|
11
|
-
*/
|
|
12
|
-
code?: string;
|
|
13
|
-
}
|
|
14
|
-
declare function makeDgmoError(line: number, message: string, severity?: DgmoSeverity, code?: string): DgmoError;
|
|
15
|
-
/** Runtime params passed to `emit()` and forwarded to a message builder. */
|
|
16
|
-
type DiagnosticParams = Record<string, unknown>;
|
|
17
|
-
/**
|
|
18
|
-
* Parameter type for a `DiagnosticSpec.message` builder body. Typed loosely
|
|
19
|
-
* (`any`) on purpose: builders are hand-authored interpolation bags keyed by
|
|
20
|
-
* ad-hoc names, and dgmo's tsconfig enables `noPropertyAccessFromIndexSignature`
|
|
21
|
-
* (which forbids `p.name` dot-access on a `Record<string, unknown>`). Using
|
|
22
|
-
* `any` here keeps builder bodies readable (`p.name`) instead of forcing
|
|
23
|
-
* `p['name']` bracket access at every interpolation site.
|
|
24
|
-
*/
|
|
25
|
-
type DiagnosticMessageParams = any;
|
|
26
|
-
interface DiagnosticSpec {
|
|
27
|
-
/** Stable diagnostic code, e.g. `'E_MAP_UNKNOWN_PLACE'`. */
|
|
28
|
-
code: string;
|
|
29
|
-
/** Severity — must agree with the `E_`/`W_`/`I_` code prefix. */
|
|
30
|
-
severity: DgmoSeverity;
|
|
31
|
-
/** Owning chart type (`'map'`, `'swimlane'`, …) or `null` for universal/global codes. */
|
|
32
|
-
chartType: string | null;
|
|
33
|
-
/** Short human label for the catalog UI. */
|
|
34
|
-
title: string;
|
|
35
|
-
/**
|
|
36
|
-
* Canonical message wording. A plain string for static messages, or a
|
|
37
|
-
* builder `(params) => string` when the message interpolates runtime
|
|
38
|
-
* values. The builder must tolerate being called with `{}` so the
|
|
39
|
-
* catalog can show a representative message without live params.
|
|
40
|
-
*/
|
|
41
|
-
message: string | ((params: DiagnosticMessageParams) => string);
|
|
42
|
-
/** Optional fix guidance shown alongside the message. */
|
|
43
|
-
hint?: string;
|
|
44
|
-
/** Minimal `.dgmo` source that triggers this diagnostic (for docs/console). */
|
|
45
|
-
example?: string;
|
|
46
|
-
}
|
|
47
|
-
/** Optional extras when emitting (currently just an explicit column). */
|
|
48
|
-
interface EmitOptions {
|
|
49
|
-
column?: number;
|
|
50
|
-
}
|
|
51
|
-
/**
|
|
52
|
-
* Emit a diagnostic from its `DiagnosticSpec`. The code, severity, and
|
|
53
|
-
* canonical wording all come from the spec — call sites supply only the
|
|
54
|
-
* line and the interpolation params, so the code/severity can never drift
|
|
55
|
-
* out of sync with the declared spec. Replaces the per-parser
|
|
56
|
-
* `push`/`err`/`fail` wrappers that each re-declared this shape.
|
|
57
|
-
*/
|
|
58
|
-
declare function emit(spec: DiagnosticSpec, line: number, params?: DiagnosticParams, opts?: EmitOptions): DgmoError;
|
|
59
|
-
declare function formatDgmoError(err: DgmoError): string;
|
|
60
|
-
|
|
61
|
-
/**
|
|
62
|
-
* Color definitions for a single mode (light or dark).
|
|
63
|
-
* 10 semantic UI colors + 9 named accent colors = 19 total.
|
|
64
|
-
*
|
|
65
|
-
* `readonly` on every field (and the nested `colors` map) by design —
|
|
66
|
-
* palettes flow from the registry into every renderer; nothing in the
|
|
67
|
-
* pipeline should ever mutate a palette in place.
|
|
68
|
-
*/
|
|
69
|
-
interface PaletteColors {
|
|
70
|
-
/** Main background (#eceff4 light / #2e3440 dark for Nord) */
|
|
71
|
-
readonly bg: string;
|
|
72
|
-
/** Cards, panels (#e5e9f0 / #3b4252) */
|
|
73
|
-
readonly surface: string;
|
|
74
|
-
/** Popovers, dropdowns (#e5e9f0 / #434c5e) */
|
|
75
|
-
readonly overlay: string;
|
|
76
|
-
/** Borders, dividers, muted (#d8dee9 / #4c566a) */
|
|
77
|
-
readonly border: string;
|
|
78
|
-
/** Primary text (#2e3440 / #eceff4) */
|
|
79
|
-
readonly text: string;
|
|
80
|
-
/** Secondary/diminished text (#4c566a / #d8dee9) */
|
|
81
|
-
readonly textMuted: string;
|
|
82
|
-
/**
|
|
83
|
-
* Light-mode arg for `contrastText()` when text is rendered on a
|
|
84
|
-
* tinted shape fill (e.g. `shapeFill()` output). Must guarantee
|
|
85
|
-
* ≥ 4.5:1 WCAG AA against any `shapeFill()` the palette can produce.
|
|
86
|
-
* Distinct from `colors.white` because palette-aesthetic anchors don't
|
|
87
|
-
* always meet contrast requirements (TD-5).
|
|
88
|
-
*/
|
|
89
|
-
readonly textOnFillLight: string;
|
|
90
|
-
/** Dark-mode counterpart to `textOnFillLight`. */
|
|
91
|
-
readonly textOnFillDark: string;
|
|
92
|
-
/** Primary accent — buttons, links */
|
|
93
|
-
readonly primary: string;
|
|
94
|
-
/** Secondary accent */
|
|
95
|
-
readonly secondary: string;
|
|
96
|
-
/** Tertiary accent */
|
|
97
|
-
readonly accent: string;
|
|
98
|
-
/** Error/danger */
|
|
99
|
-
readonly destructive: string;
|
|
100
|
-
/**
|
|
101
|
-
* Used for: inline annotations (red), pie charts, cScale,
|
|
102
|
-
* series rotation, journey actors, Gantt tasks.
|
|
103
|
-
*/
|
|
104
|
-
readonly colors: {
|
|
105
|
-
readonly red: string;
|
|
106
|
-
readonly orange: string;
|
|
107
|
-
readonly yellow: string;
|
|
108
|
-
readonly green: string;
|
|
109
|
-
readonly blue: string;
|
|
110
|
-
readonly purple: string;
|
|
111
|
-
readonly teal: string;
|
|
112
|
-
readonly cyan: string;
|
|
113
|
-
readonly gray: string;
|
|
114
|
-
readonly black: string;
|
|
115
|
-
readonly white: string;
|
|
116
|
-
};
|
|
117
|
-
}
|
|
118
|
-
/**
|
|
119
|
-
* Complete palette definition. One object per color scheme.
|
|
120
|
-
* This is what palette authors create — the single artifact for NFR1.
|
|
121
|
-
*
|
|
122
|
-
* Palettes are immutable from the consumer's perspective; the registry
|
|
123
|
-
* hands out the same frozen-shape object on every `getPalette(id)`.
|
|
124
|
-
*/
|
|
125
|
-
interface PaletteConfig {
|
|
126
|
-
/** Registry key: 'nord', 'slate', 'catppuccin' */
|
|
127
|
-
readonly id: string;
|
|
128
|
-
/** Display name: 'Nord', 'Slate', 'Catppuccin' */
|
|
129
|
-
readonly name: string;
|
|
130
|
-
/** Light mode color definitions */
|
|
131
|
-
readonly light: PaletteColors;
|
|
132
|
-
/** Dark mode color definitions */
|
|
133
|
-
readonly dark: PaletteColors;
|
|
134
|
-
}
|
|
135
|
-
|
|
136
|
-
/** A single entry inside a tag group: `Value color` */
|
|
137
|
-
interface TagEntry {
|
|
138
|
-
readonly value: string;
|
|
139
|
-
readonly color: string;
|
|
140
|
-
/**
|
|
141
|
-
* The color NAME the author wrote (one of the recognized palette names),
|
|
142
|
-
* when the entry declared an explicit color. Absent for bare/auto-colored
|
|
143
|
-
* entries. `color` above is always the RESOLVED hex (auto and explicit are
|
|
144
|
-
* indistinguishable there); this preserves the authored-vs-auto distinction
|
|
145
|
-
* so a GUI editor can round-trip an explicit color through a reparse.
|
|
146
|
-
*/
|
|
147
|
-
readonly authoredColor?: string;
|
|
148
|
-
readonly lineNumber: number;
|
|
149
|
-
}
|
|
150
|
-
/**
|
|
151
|
-
* A tag group block: heading + entries.
|
|
152
|
-
*
|
|
153
|
-
* Parser internals build via `Writable<TagGroup>` from `utils/brand.ts`;
|
|
154
|
-
* once returned to a chart-type parser, consumers see the readonly view.
|
|
155
|
-
*/
|
|
156
|
-
interface TagGroup {
|
|
157
|
-
readonly name: string;
|
|
158
|
-
readonly alias?: string;
|
|
159
|
-
readonly entries: readonly TagEntry[];
|
|
160
|
-
/** Default value for nodes without explicit metadata. First entry unless another is marked `default`. */
|
|
161
|
-
readonly defaultValue?: string;
|
|
162
|
-
readonly lineNumber: number;
|
|
163
|
-
}
|
|
164
|
-
/**
|
|
165
|
-
* DOM-safe key for a tag group — used wherever the group name becomes a
|
|
166
|
-
* `data-tag-*` attribute suffix, an entity metadata key, or an `active-tag`
|
|
167
|
-
* match target. For a single-identifier name (the only form the parser used to
|
|
168
|
-
* accept) this is exactly `name.toLowerCase()`, so swapping it in for existing
|
|
169
|
-
* diagrams is byte-identical. A quoted multi-word name (`tag "Trust Zone" as tz`)
|
|
170
|
-
* slugs to a hyphenated identifier (`trust-zone`) so it never produces an
|
|
171
|
-
* invalid DOM attribute name; the original `name` is kept for the legend label.
|
|
172
|
-
*/
|
|
173
|
-
declare function tagAttrKey(name: string): string;
|
|
174
|
-
/**
|
|
175
|
-
* The categorical name cycle used to auto-assign colors to bare tag values,
|
|
176
|
-
* in deterministic order. Aliased to the shared {@link CATEGORICAL_COLOR_ORDER}
|
|
177
|
-
* (RGB-seeded, max-contrast, neutrals excluded) so tag swatches and data-chart
|
|
178
|
-
* series colors share one canonical rotation. If a group has more colorless
|
|
179
|
-
* entries than free categorical names, the cycle wraps.
|
|
180
|
-
*/
|
|
181
|
-
declare const autoTagColorCycle: readonly string[];
|
|
1
|
+
import { T as TagGroup, D as DgmoError, P as PaletteConfig } from './registry-CaSw0PSH.js';
|
|
182
2
|
|
|
183
3
|
/** A POI / route-stop position: gazetteer name (+ optional ISO scope) or coords. */
|
|
184
4
|
type PoiPos = {
|
|
@@ -638,173 +458,6 @@ interface ResolvedMap {
|
|
|
638
458
|
readonly error: string | null;
|
|
639
459
|
}
|
|
640
460
|
|
|
641
|
-
/**
|
|
642
|
-
* Compact view state schema (ADR-6).
|
|
643
|
-
* All fields optional. Only non-default values are encoded.
|
|
644
|
-
* `tag: null` means "user chose none"; absent `tag` means "use DSL default" (ADR-5).
|
|
645
|
-
*/
|
|
646
|
-
interface CompactViewState {
|
|
647
|
-
tag?: string | null;
|
|
648
|
-
cs?: number[];
|
|
649
|
-
cg?: string[];
|
|
650
|
-
swim?: string | null;
|
|
651
|
-
cl?: string[];
|
|
652
|
-
cc?: string[];
|
|
653
|
-
rm?: string;
|
|
654
|
-
htv?: Record<string, string[]>;
|
|
655
|
-
ha?: string[];
|
|
656
|
-
sem?: boolean;
|
|
657
|
-
cm?: boolean;
|
|
658
|
-
c4l?: string;
|
|
659
|
-
c4s?: string;
|
|
660
|
-
c4c?: string;
|
|
661
|
-
rps?: number;
|
|
662
|
-
spd?: number;
|
|
663
|
-
io?: Record<string, number>;
|
|
664
|
-
hd?: boolean;
|
|
665
|
-
cbd?: boolean;
|
|
666
|
-
rq?: string;
|
|
667
|
-
an?: boolean;
|
|
668
|
-
fl?: boolean;
|
|
669
|
-
}
|
|
670
|
-
interface DecodedDiagramUrl {
|
|
671
|
-
dsl: string;
|
|
672
|
-
viewState: CompactViewState;
|
|
673
|
-
palette?: string;
|
|
674
|
-
theme?: 'light' | 'dark';
|
|
675
|
-
filename?: string;
|
|
676
|
-
}
|
|
677
|
-
interface EncodeDiagramUrlOptions {
|
|
678
|
-
baseUrl?: string;
|
|
679
|
-
viewState?: CompactViewState;
|
|
680
|
-
palette?: string;
|
|
681
|
-
theme?: 'light' | 'dark';
|
|
682
|
-
filename?: string;
|
|
683
|
-
}
|
|
684
|
-
type EncodeDiagramUrlResult = {
|
|
685
|
-
url: string;
|
|
686
|
-
error?: undefined;
|
|
687
|
-
} | {
|
|
688
|
-
url?: undefined;
|
|
689
|
-
error: 'too-large';
|
|
690
|
-
compressedSize: number;
|
|
691
|
-
limit: number;
|
|
692
|
-
};
|
|
693
|
-
/**
|
|
694
|
-
* Encode a CompactViewState to a compressed string for URL embedding.
|
|
695
|
-
* Returns empty string if state has no keys (ADR-4).
|
|
696
|
-
*/
|
|
697
|
-
declare function encodeViewState(state: CompactViewState): string;
|
|
698
|
-
/**
|
|
699
|
-
* Decode a compressed view state string back to CompactViewState.
|
|
700
|
-
* Returns empty object on failure (no crash).
|
|
701
|
-
*/
|
|
702
|
-
declare function decodeViewState(encoded: string): CompactViewState;
|
|
703
|
-
/**
|
|
704
|
-
* Compress a DGMO DSL string into a shareable URL.
|
|
705
|
-
* Returns `{ url }` on success, or `{ error: 'too-large', compressedSize, limit }` if the
|
|
706
|
-
* compressed payload exceeds the 8 KB limit.
|
|
707
|
-
*/
|
|
708
|
-
declare function encodeDiagramUrl(dsl: string, options?: EncodeDiagramUrlOptions): EncodeDiagramUrlResult;
|
|
709
|
-
/**
|
|
710
|
-
* Decode a DGMO DSL string and view state from a URL query string or hash.
|
|
711
|
-
* Accepts any of:
|
|
712
|
-
* - `?dgmo=<payload>&vs=<state>`
|
|
713
|
-
* - `#dgmo=<payload>&vs=<state>` (backwards compat)
|
|
714
|
-
* - `dgmo=<payload>`
|
|
715
|
-
* - `<bare payload>`
|
|
716
|
-
*
|
|
717
|
-
* Returns `{ dsl, viewState }`. The DSL is empty string on invalid input.
|
|
718
|
-
*/
|
|
719
|
-
declare function decodeDiagramUrl(hash: string): DecodedDiagramUrl;
|
|
720
|
-
|
|
721
|
-
interface ChartTypeMeta {
|
|
722
|
-
readonly id: string;
|
|
723
|
-
readonly description: string;
|
|
724
|
-
readonly fallback?: true;
|
|
725
|
-
}
|
|
726
|
-
declare const chartTypes: readonly ChartTypeMeta[];
|
|
727
|
-
|
|
728
|
-
/** User-visible rendering category for dispatch and routing. */
|
|
729
|
-
type RenderCategory = 'data-chart' | 'visualization' | 'diagram';
|
|
730
|
-
|
|
731
|
-
/**
|
|
732
|
-
* Extracts the chart type from raw file content.
|
|
733
|
-
* First tries the first non-empty, non-comment line as a bare chart type name
|
|
734
|
-
* (e.g., `gantt Product Launch`).
|
|
735
|
-
* Falls back to inference when no explicit chart type is found.
|
|
736
|
-
*/
|
|
737
|
-
declare function parseDgmoChartType(content: string): string | null;
|
|
738
|
-
|
|
739
|
-
/**
|
|
740
|
-
* Returns the render category for a given chart type, or `null` if unknown.
|
|
741
|
-
* Use this instead of the internal framework map for dispatch in consumers.
|
|
742
|
-
*/
|
|
743
|
-
declare function getRenderCategory(chartType: string): RenderCategory | null;
|
|
744
|
-
/**
|
|
745
|
-
* Returns true if the chart type is an extended chart type
|
|
746
|
-
* handled by parseExtendedChart (scatter, sankey, function, heatmap, funnel).
|
|
747
|
-
* Returns false for standard chart types and all other types.
|
|
748
|
-
*/
|
|
749
|
-
declare function isExtendedChartType(chartType: string): boolean;
|
|
750
|
-
/**
|
|
751
|
-
* Returns all supported chart type identifiers in canonical (tier) order,
|
|
752
|
-
* derived from `chartTypes`. Consumers that need alphabetical order should
|
|
753
|
-
* call `.sort()` explicitly.
|
|
754
|
-
*/
|
|
755
|
-
declare function getAllChartTypes(): string[];
|
|
756
|
-
/**
|
|
757
|
-
* Canonical descriptions for every supported chart type. Derived from
|
|
758
|
-
* `chartTypes` so there is exactly one place to update when adding a new
|
|
759
|
-
* type. Consumed by the CLI `dgmo types` command, the editor autocomplete
|
|
760
|
-
* popup, and the MCP `list_chart_types` tool.
|
|
761
|
-
*/
|
|
762
|
-
declare const CHART_TYPE_DESCRIPTIONS: Record<string, string>;
|
|
763
|
-
type ParseResult = {
|
|
764
|
-
diagnostics: readonly DgmoError[];
|
|
765
|
-
};
|
|
766
|
-
type ParseFn = (content: string) => ParseResult;
|
|
767
|
-
/**
|
|
768
|
-
* Maps every chart-type id to the parser that handles it, DERIVED from
|
|
769
|
-
* `CHART_TYPE_REGISTRY` (src/chart-type-registry.ts). Adding a new chart type
|
|
770
|
-
* means adding ONE descriptor there plus its `chartTypes` metadata entry; the
|
|
771
|
-
* `chart-type-registry.test.ts` cross-check asserts the registry, `chartTypes`,
|
|
772
|
-
* the render-category sites, and the export handlers all stay in sync.
|
|
773
|
-
*/
|
|
774
|
-
declare const chartTypeParsers: ReadonlyArray<readonly [string, ParseFn]>;
|
|
775
|
-
/** Ids in the same order as `chartTypeParsers`; used for cross-checks. */
|
|
776
|
-
declare const knownChartTypeIds: readonly string[];
|
|
777
|
-
/**
|
|
778
|
-
* Parse DGMO content and return diagnostics without rendering.
|
|
779
|
-
* Useful for the CLI and editor to surface all errors before attempting render.
|
|
780
|
-
*/
|
|
781
|
-
declare function parseDgmo(content: string): {
|
|
782
|
-
diagnostics: DgmoError[];
|
|
783
|
-
chartType: string | null;
|
|
784
|
-
};
|
|
785
|
-
|
|
786
|
-
/** Validate that a hex string is well-formed (#RGB or #RRGGBB). */
|
|
787
|
-
declare function isValidHex(value: string): boolean;
|
|
788
|
-
/**
|
|
789
|
-
* Register a palette. Called at module initialization.
|
|
790
|
-
* Validates that all 19 color fields per mode are present and valid hex.
|
|
791
|
-
* Throws on malformed palettes to catch errors at startup, not at render time.
|
|
792
|
-
*/
|
|
793
|
-
declare function registerPalette(palette: PaletteConfig): void;
|
|
794
|
-
/** Get palette by id. Silently returns the default palette if id is unrecognized. */
|
|
795
|
-
declare function getPalette(id: string): PaletteConfig;
|
|
796
|
-
/**
|
|
797
|
-
* Resolve a palette by id, falling back to the default palette when the id is
|
|
798
|
-
* unregistered. If a `warn` callback is supplied, it is invoked once with a
|
|
799
|
-
* human-readable fallback message on a miss — the single place the "resolve,
|
|
800
|
-
* fall back, warn" policy lives, so each host can surface it its own way
|
|
801
|
-
* (console.warn, Obsidian Notice, MCP response). Silent when the id resolves or
|
|
802
|
-
* when no callback is passed.
|
|
803
|
-
*/
|
|
804
|
-
declare function resolvePaletteOrFallback(id: string, warn?: (message: string) => void): PaletteConfig;
|
|
805
|
-
/** List all registered palettes alphabetically (for the selector UI). */
|
|
806
|
-
declare function getAvailablePalettes(): PaletteConfig[];
|
|
807
|
-
|
|
808
461
|
/**
|
|
809
462
|
* All built-in palettes, keyed by camelCase id. Use directly with render():
|
|
810
463
|
*
|
|
@@ -940,4 +593,4 @@ declare const themes: {
|
|
|
940
593
|
readonly transparent: "transparent";
|
|
941
594
|
};
|
|
942
595
|
|
|
943
|
-
export {
|
|
596
|
+
export { type AirportData as A, type BoundaryTopology as B, type Gazetteer as G, type MapCompletionOptions as M, type ParsedMap as P, type RegionName as R, type Theme as T, type GazetteerEntry as a, type MapData as b, type MapLocationMatch as c, type MapPlaceCompletion as d, type MapRegionCompletion as e, type RegionNames as f, completeMapPlaces as g, completeMapRegions as h, type ResolvedMap as i, type MapLayoutLegend as j, type GeoExtent as k, type MapDirectives as l, type MapEdge as m, type MapPoi as n, type MapRegion as o, palettes as p, type MapRoute as q, type PoiPos as r, searchMapLocations as s, themes as t, type ProjectionFamily as u, type ResolvedEdge as v, type ResolvedPoi as w, type ResolvedRegion as x, type ResolvedRoute as y };
|
package/docs/ai-integration.md
CHANGED
|
@@ -68,7 +68,7 @@ _Generated from `language-reference.md` — the anti-patterns and 50-type index
|
|
|
68
68
|
LLMs default to Mermaid / PlantUML habits; DGMO differs. These rules prevent the most common parse errors:
|
|
69
69
|
|
|
70
70
|
- **No colons in declarations, directives, tags, or data rows.** `bar Revenue` (not `bar: Revenue`); `series Cloud blue, Legacy red` (not `series: ...`); `North 850` (not `North: 850`); `tag Team as t` (not `tag: Team`). A colon binds a value only in metadata (`key: value`), class/function type separators, and a few scoped spots — see §26.
|
|
71
|
-
- **No Mermaid arrow-labels.** Put the label
|
|
71
|
+
- **No Mermaid arrow-labels.** Put the label _between_ the dashes: `A -Login-> B`, never `A -> B: Login`. Sequence: `->` sync, `~>` async; left-to-right only — no `<-` / `<~`.
|
|
72
72
|
- **No indented edges on a map.** Every map connection is ONE full line — `JFK ~daily~> LAX`; for a hub repeat the origin per spoke (`JFK ~daily~> LHR`, …). A bare source with indented `-> dest` legs errors as `Malformed edge`; indented legs are valid ONLY inside a `route` block (an ordered stop→stop voyage). Edge endpoints auto-create their POIs — don't add separate `poi` lines for places already in an edge.
|
|
73
73
|
- **No `|` metadata delimiter** (removed 0.18.0 → `E_PIPE_OPERATOR_REMOVED`). Use same-line `Name key: value, k2: v2` or indented `key: value`. (`|` survives only in wireframe `{A | B}` dropdowns, in-arrow label text, and quoted names.)
|
|
74
74
|
- **No removed participant keywords.** Do not write `X is a service` / `external` / `frontend` / `networking` / `gateway` — these were removed and error. A bare name renders the default shape; for a typed glyph use `is a person` / `is a database` / `is a queue`.
|
|
@@ -80,7 +80,7 @@ LLMs default to Mermaid / PlantUML habits; DGMO differs. These rules prevent the
|
|
|
80
80
|
- **Declare before reference.** An edge target must be declared on a prior line; put metadata and edges on/under one declaration to avoid `Duplicate node` warnings.
|
|
81
81
|
- **No reference scaffolding in output.** Emit only DGMO source. This doc is organized with HTML-comment anchors (the `TYPE`, `TIPS`, and `AI-CORE` markers, each wrapped in comment delimiters); never copy any such `<!-- … -->` comment into a diagram. They mark sections of the docs, not DGMO syntax; the parser flags a stray HTML comment as an `Unexpected line` warning. (DGMO's only comment form is `//`.)
|
|
82
82
|
|
|
83
|
-
Two traps in the
|
|
83
|
+
Two traps in the _other_ direction (DGMO wants a colon / a space where you might not expect):
|
|
84
84
|
|
|
85
85
|
- **Infra node properties REQUIRE the colon** — `cache-hit: 80%`, `instances: 3`, `max-rps: 8000`, `latency-ms: 45`. But top-level infra **options** are space-separated (`default-rps 100`). Don't conflate them.
|
|
86
86
|
- **ER columns are space-separated** — `id int pk`, `email varchar` (the one SQL-DDL carve-out; everything else indented-typed uses a colon).
|
|
@@ -106,10 +106,11 @@ Billing t: Product
|
|
|
106
106
|
Valid markup is the floor, not the goal. A good diagram reads at a glance. Apply these unless the prompt says otherwise:
|
|
107
107
|
|
|
108
108
|
<!-- TITLE start -->
|
|
109
|
+
|
|
109
110
|
- **Always title it.** Every diagram gets a short title on the type-declaration line (`flowchart Checkout Flow`, `sequence Checkout`, `boxes-and-lines Service Map`) so it is self-describing — never leave the bare type keyword alone. Infer a fitting title from the request when the user gives none.
|
|
110
|
-
<!-- TITLE end -->
|
|
111
|
-
<!-- CATEGORIZE start -->
|
|
112
|
-
- **Categorize and color — by default, not only when obvious.** Before drawing, find the axis that sorts the items into kinds and color by it: layer (frontend / backend / data), role (client / service / datastore), trust zone (internal / external / third-party), status (done / active / blocked), owner/team, or read-path vs write-path. Almost every diagram has such an axis — actively look for one rather than leaving everything monochrome. Express it with a **tag group**, never ad-hoc per-node colors: declare `tag <Axis> as t` (the name is a single word — `tag TrustZone as tz` — or quote a multi-word name: `tag "Trust Zone" as tz`), indent the category values (a trailing color is optional — bare values auto-pick a palette color), set `active-tag <Axis>`, then assign each item `Node t: <Category>` (see the tag-group syntax in the per-type section below). Only the 11 named palette colors exist, and they re-resolve per palette/theme. Color the grouping so the categories — and the boundaries between them — read at a glance. **Buckets, not name tags — never 1:1.** A tag group must have
|
|
111
|
+
<!-- TITLE end -->
|
|
112
|
+
<!-- CATEGORIZE start -->
|
|
113
|
+
- **Categorize and color — by default, not only when obvious.** Before drawing, find the axis that sorts the items into kinds and color by it: layer (frontend / backend / data), role (client / service / datastore), trust zone (internal / external / third-party), status (done / active / blocked), owner/team, or read-path vs write-path. Almost every diagram has such an axis — actively look for one rather than leaving everything monochrome. Express it with a **tag group**, never ad-hoc per-node colors: declare `tag <Axis> as t` (the name is a single word — `tag TrustZone as tz` — or quote a multi-word name: `tag "Trust Zone" as tz`), indent the category values (a trailing color is optional — bare values auto-pick a palette color), set `active-tag <Axis>`, then assign each item `Node t: <Category>` (see the tag-group syntax in the per-type section below). Only the 11 named palette colors exist, and they re-resolve per palette/theme. Color the grouping so the categories — and the boundaries between them — read at a glance. **Buckets, not name tags — never 1:1.** A tag group must have _fewer_ values than it has members: each color should bucket two or more items so the palette compresses the diagram into a few meaningful kinds (aim for ~2–4 categories, and keep distinct colors well under half the item count). If you find yourself giving nearly every item its own value, you've enumerated, not categorized — merge the singletons up a level until each color groups at least two (a `cache` and a `database` are both `datastore`; a caller and a gateway are both `client`; two microservices are both `service`). One color per item is the same visual noise as random colors — the grouping only earns its place when a color means "these belong together." Leave items uncolored only when they genuinely form a single undifferentiated kind, or the user asked for no color.
|
|
113
114
|
<!-- CATEGORIZE end -->
|
|
114
115
|
- **Keep labels short.** A few words per node. Move detail into notes or metadata, never a full sentence inside a label.
|
|
115
116
|
- **Let the defaults show.** Don't add `no-*` opt-outs unless the user asked to hide or disable something — they strip helpful labels, values, and color.
|
|
@@ -117,58 +118,58 @@ Valid markup is the floor, not the goal. A good diagram reads at a glance. Apply
|
|
|
117
118
|
|
|
118
119
|
### Chart-type index (45) — pick the type, then fetch its section
|
|
119
120
|
|
|
120
|
-
| id
|
|
121
|
-
|
|
|
122
|
-
| `sequence`
|
|
123
|
-
| `flowchart`
|
|
124
|
-
| `state`
|
|
125
|
-
| `class`
|
|
126
|
-
| `er`
|
|
127
|
-
| `c4`
|
|
128
|
-
| `infra`
|
|
129
|
-
| `boxes-and-lines` | general-purpose node-edge diagrams with groups and tags
|
|
130
|
-
| `sitemap`
|
|
131
|
-
| `mindmap`
|
|
132
|
-
| `org`
|
|
133
|
-
| `family`
|
|
134
|
-
| `bracket`
|
|
135
|
-
| `kanban`
|
|
136
|
-
| `gantt`
|
|
137
|
-
| `pert`
|
|
138
|
-
| `swimlane`
|
|
139
|
-
| `version-control` | git / version-control branch-and-merge graph: commits, branches, merges, rebase, HEAD and remote-tracking (gitGraph-style)
|
|
140
|
-
| `timeline`
|
|
141
|
-
| `event-line`
|
|
142
|
-
| `body`
|
|
143
|
-
| `journey-map`
|
|
144
|
-
| `cycle`
|
|
145
|
-
| `raci`
|
|
146
|
-
| `tech-radar`
|
|
147
|
-
| `quadrant`
|
|
148
|
-
| `pyramid`
|
|
149
|
-
| `ring`
|
|
150
|
-
| `treemap`
|
|
151
|
-
| `block`
|
|
152
|
-
| `sketch`
|
|
153
|
-
| `goal`
|
|
154
|
-
| `countdown`
|
|
155
|
-
| `clock`
|
|
156
|
-
| `map`
|
|
157
|
-
| `wireframe`
|
|
158
|
-
| `bar`
|
|
159
|
-
| `line`
|
|
160
|
-
| `pie`
|
|
161
|
-
| `radar`
|
|
162
|
-
| `polar-area`
|
|
163
|
-
| `scatter`
|
|
164
|
-
| `heatmap`
|
|
165
|
-
| `funnel`
|
|
166
|
-
| `sankey`
|
|
167
|
-
| `arc`
|
|
168
|
-
| `slope`
|
|
169
|
-
| `venn`
|
|
170
|
-
| `wordcloud`
|
|
171
|
-
| `function`
|
|
121
|
+
| id | when to use |
|
|
122
|
+
| ----------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
123
|
+
| `sequence` | message / interaction flows over time |
|
|
124
|
+
| `flowchart` | decision trees and process flows |
|
|
125
|
+
| `state` | state-machine / lifecycle transitions |
|
|
126
|
+
| `class` | UML class hierarchies |
|
|
127
|
+
| `er` | database schemas and relationships |
|
|
128
|
+
| `c4` | system architecture (context / container / component / deployment) |
|
|
129
|
+
| `infra` | infrastructure traffic flow with RPS computation |
|
|
130
|
+
| `boxes-and-lines` | general-purpose node-edge diagrams with groups and tags |
|
|
131
|
+
| `sitemap` | site / app navigation structure |
|
|
132
|
+
| `mindmap` | radial hierarchy of ideas from a central topic |
|
|
133
|
+
| `org` | reporting hierarchy |
|
|
134
|
+
| `family` | family tree / genealogy: unions (couples), children, remarriage, adoption, GEDCOM-style metadata |
|
|
135
|
+
| `bracket` | single-elimination tournament bracket: winners auto-advance; seed the field for a day-0 skeleton or list results casually; two sides mirror to a championship |
|
|
136
|
+
| `kanban` | task-board columns |
|
|
137
|
+
| `gantt` | project scheduling with task dependencies and milestones |
|
|
138
|
+
| `pert` | project network with three-point estimates and critical path |
|
|
139
|
+
| `swimlane` | cross-functional process flow with lanes, phases and gateways (BPMN-style) |
|
|
140
|
+
| `version-control` | git / version-control branch-and-merge graph: commits, branches, merges, rebase, HEAD and remote-tracking (gitGraph-style) |
|
|
141
|
+
| `timeline` | events, eras, and date ranges |
|
|
142
|
+
| `event-line` | annotated narrative timeline — events on a line with descriptions, optionally not to scale (NOT the date-scaled `timeline`) |
|
|
143
|
+
| `body` | human anatomy figure annotated by muscle name — for medical, exercise, and educational diagrams |
|
|
144
|
+
| `journey-map` | UX flow with emotion scores, phases, annotations |
|
|
145
|
+
| `cycle` | cyclical process (PDCA, OODA, DevOps loops) |
|
|
146
|
+
| `raci` | tasks × roles responsibility matrix; variant (RACI / RASCI / DACI) is inferred from the markers used |
|
|
147
|
+
| `tech-radar` | technology adoption quadrants (adopt / trial / assess / hold) |
|
|
148
|
+
| `quadrant` | 2×2 positioning matrix |
|
|
149
|
+
| `pyramid` | stacked hierarchy of layers (Maslow, DIKW) |
|
|
150
|
+
| `ring` | concentric rings of nested categories |
|
|
151
|
+
| `treemap` | nested rectangles sized by value (budgets, disk usage, portfolios) |
|
|
152
|
+
| `block` | author-controlled grid of nested, collapsible blocks (system / architecture layouts) |
|
|
153
|
+
| `sketch` | GUI-first free-placement canvas: uniform shapes on a snap grid, arrows, tags (markup is app-generated) |
|
|
154
|
+
| `goal` | single progress-toward-a-target value (`now` vs `target`) as a progress bar, thermometer, or gauge — KPIs, fundraising, quotas |
|
|
155
|
+
| `countdown` | live "N days until X" that ticks every second and is accurate on every load — trip dates, launches, deadlines; the only dynamic chart type |
|
|
156
|
+
| `clock` | live world-clock board: current time for people/places across time zones, ticking every second, with optional working-hours status and sundown line |
|
|
157
|
+
| `map` | geographic concept map: regions, points, routes |
|
|
158
|
+
| `wireframe` | low-fidelity UI layout with panels and controls |
|
|
159
|
+
| `bar` | categorical comparisons (multi-series via `stack` / `group`) |
|
|
160
|
+
| `line` | trends over time (multiple series via a `series` block; filled via `fill`; dual y-axes via `y-label` / `y-right-label`) |
|
|
161
|
+
| `pie` | part-to-whole proportions (ring/doughnut via `hole`) |
|
|
162
|
+
| `radar` | multi-dimensional metrics |
|
|
163
|
+
| `polar-area` | radial bar chart |
|
|
164
|
+
| `scatter` | 2D points or bubble chart |
|
|
165
|
+
| `heatmap` | matrix intensity |
|
|
166
|
+
| `funnel` | conversion pipeline |
|
|
167
|
+
| `sankey` | flow / allocation |
|
|
168
|
+
| `arc` | network relationships (linear, or circular via `layout chord`) |
|
|
169
|
+
| `slope` | change between two periods |
|
|
170
|
+
| `venn` | set overlaps |
|
|
171
|
+
| `wordcloud` | term-frequency |
|
|
172
|
+
| `function` | mathematical expressions (colon required: `f(x): x^2`) |
|
|
172
173
|
|
|
173
174
|
**Need more than the index gives you?** Fetch the per-type section: MCP `get_language_reference(type)` / `get_examples(type)`, or read that type's section below. The `suggest_chart_type` tool returns the chosen type's section automatically.
|
|
174
175
|
|
|
@@ -449,7 +450,7 @@ RumRunner f: Bonny
|
|
|
449
450
|
```dgmo
|
|
450
451
|
gantt Blackbeard's Blockade — 1718
|
|
451
452
|
|
|
452
|
-
start 1718-05-01
|
|
453
|
+
start-date 1718-05-01
|
|
453
454
|
today-marker 1718-05-15
|
|
454
455
|
|
|
455
456
|
tag Role as r
|