@markdy/mcp-server 1.1.7 → 1.2.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.
Files changed (2) hide show
  1. package/dist/index.js +161 -31
  2. package/package.json +3 -3
package/dist/index.js CHANGED
@@ -411,6 +411,7 @@ var CONTROL_KEYS = [
411
411
  "resetView",
412
412
  "fullscreen",
413
413
  "svg",
414
+ "gif",
414
415
  "share",
415
416
  "code",
416
417
  "theme"
@@ -462,6 +463,11 @@ var CONTROLS = {
462
463
  svg: { group: "controls", key: "svg", type: "boolean" },
463
464
  exportSvg: { group: "controls", key: "svg", type: "boolean" },
464
465
  export_svg: { group: "controls", key: "svg", type: "boolean" },
466
+ gif: { group: "controls", key: "gif", type: "boolean" },
467
+ exportGif: { group: "controls", key: "gif", type: "boolean" },
468
+ export_gif: { group: "controls", key: "gif", type: "boolean" },
469
+ gifButton: { group: "controls", key: "gif", type: "boolean" },
470
+ gif_button: { group: "controls", key: "gif", type: "boolean" },
465
471
  share: { group: "controls", key: "share", type: "boolean" },
466
472
  shareLink: { group: "controls", key: "share", type: "boolean" },
467
473
  share_link: { group: "controls", key: "share", type: "boolean" },
@@ -542,6 +548,11 @@ var FLAT = {
542
548
  fullscreen_button: CONTROLS.fullscreen_button,
543
549
  exportSvg: CONTROLS.exportSvg,
544
550
  export_svg: CONTROLS.export_svg,
551
+ gif: CONTROLS.gif,
552
+ exportGif: CONTROLS.exportGif,
553
+ export_gif: CONTROLS.export_gif,
554
+ gifButton: CONTROLS.gifButton,
555
+ gif_button: CONTROLS.gif_button,
545
556
  shareLink: CONTROLS.shareLink,
546
557
  share_link: CONTROLS.share_link,
547
558
  code: CONTROLS.code,
@@ -1002,6 +1013,116 @@ var THEMES = {
1002
1013
  },
1003
1014
  radiusMd: 4,
1004
1015
  spacing: { xs: 4, sm: 8, md: 16, lg: 24, xl: 40 }
1016
+ },
1017
+ ink: {
1018
+ name: "ink",
1019
+ canvas: "#f8fafd",
1020
+ surface: "#ffffff",
1021
+ surfaceRaised: "#eff6ff",
1022
+ border: "#1d4ed8",
1023
+ text: "#0f172a",
1024
+ textMuted: "#3b629b",
1025
+ paper: "#f8fafd",
1026
+ ink: "#1e40af",
1027
+ muted: "#4776b2",
1028
+ rule: "rgba(29, 78, 216, 0.14)",
1029
+ soft: "#60a5fa",
1030
+ link: "#2563eb",
1031
+ gridMinor: "rgba(37, 99, 235, 0.05)",
1032
+ gridMajor: "rgba(37, 99, 235, 0.10)",
1033
+ vignette: "rgba(219, 234, 254, 0.45)",
1034
+ accent: "#1d4ed8",
1035
+ accentTint: "rgba(29, 78, 216, 0.08)",
1036
+ nodeSurface: "#ffffff",
1037
+ nodeSurfaceRaised: "#f4f8ff",
1038
+ hairline: "rgba(29, 78, 216, 0.20)",
1039
+ shadow: "rgba(15, 35, 90, 0.09)",
1040
+ labelPlate: "#ffffff",
1041
+ flatCards: false,
1042
+ roles: {
1043
+ ...ROLE_COLORS,
1044
+ compute: "#1d4ed8",
1045
+ code: "#2563eb",
1046
+ client: "#0284c7",
1047
+ data: "#0369a1",
1048
+ messaging: "#4338ca",
1049
+ network: "#0284c7",
1050
+ security: "#1e3a8a",
1051
+ platform: "#3b82f6",
1052
+ observability: "#0891b2",
1053
+ delivery: "#4f46e5",
1054
+ flow: "#2563eb",
1055
+ distributed: "#475569"
1056
+ },
1057
+ edges: {
1058
+ request: "#1d4ed8",
1059
+ response: "#3b82f6",
1060
+ event: "#0284c7",
1061
+ dependency: "#64748b"
1062
+ },
1063
+ fonts: {
1064
+ title: 'ui-serif, "Charter", "Newsreader", "Georgia", "Songti SC", "Noto Serif", serif',
1065
+ nodeName: 'ui-sans-serif, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Inter, sans-serif',
1066
+ mono: '"JetBrains Mono", "SF Mono", ui-monospace, Menlo, monospace'
1067
+ },
1068
+ radiusMd: 6,
1069
+ spacing: { xs: 4, sm: 8, md: 16, lg: 24, xl: 40 },
1070
+ series: ["#1d4ed8", "#0284c7", "#4338ca", "#0891b2", "#1e3a8a"]
1071
+ },
1072
+ doodle: {
1073
+ name: "doodle",
1074
+ canvas: "#fffef9",
1075
+ surface: "#ffffff",
1076
+ surfaceRaised: "#fdf8ec",
1077
+ border: "#18181b",
1078
+ text: "#18181b",
1079
+ textMuted: "#52525b",
1080
+ paper: "#fffef9",
1081
+ ink: "#18181b",
1082
+ muted: "#52525b",
1083
+ rule: "rgba(24, 24, 27, 0.16)",
1084
+ soft: "#71717a",
1085
+ link: "#f43f5e",
1086
+ gridMinor: "rgba(24, 24, 27, 0.05)",
1087
+ gridMajor: "rgba(24, 24, 27, 0.08)",
1088
+ vignette: "rgba(245, 235, 210, 0.35)",
1089
+ accent: "#f43f5e",
1090
+ accentTint: "rgba(244, 63, 94, 0.12)",
1091
+ nodeSurface: "#ffffff",
1092
+ nodeSurfaceRaised: "#fffdf5",
1093
+ hairline: "rgba(24, 24, 27, 0.25)",
1094
+ shadow: "rgba(24, 24, 27, 0.15)",
1095
+ labelPlate: "#ffffff",
1096
+ flatCards: true,
1097
+ roles: {
1098
+ ...ROLE_COLORS,
1099
+ compute: "#2563eb",
1100
+ code: "#2563eb",
1101
+ client: "#f43f5e",
1102
+ data: "#10b981",
1103
+ messaging: "#8b5cf6",
1104
+ network: "#06b6d4",
1105
+ security: "#ef4444",
1106
+ platform: "#f59e0b",
1107
+ observability: "#14b8a6",
1108
+ delivery: "#f59e0b",
1109
+ flow: "#ec4899",
1110
+ distributed: "#71717a"
1111
+ },
1112
+ edges: {
1113
+ request: "#18181b",
1114
+ response: "#71717a",
1115
+ event: "#f43f5e",
1116
+ dependency: "#a1a1aa"
1117
+ },
1118
+ fonts: {
1119
+ title: '"Caveat", "Comic Neue", "Chalkboard SE", "Patrick Hand", "Comic Sans MS", cursive, sans-serif',
1120
+ nodeName: 'ui-sans-serif, -apple-system, BlinkMacSystemFont, "Segoe UI", Inter, Roboto, sans-serif',
1121
+ mono: '"JetBrains Mono", "SF Mono", ui-monospace, Menlo, monospace'
1122
+ },
1123
+ radiusMd: 12,
1124
+ spacing: { xs: 4, sm: 8, md: 16, lg: 24, xl: 40 },
1125
+ series: ["#f43f5e", "#2563eb", "#10b981", "#8b5cf6", "#f59e0b"]
1005
1126
  }
1006
1127
  };
1007
1128
 
@@ -1564,7 +1685,7 @@ function validateReferences(ast) {
1564
1685
  }
1565
1686
  }
1566
1687
  for (const node of Object.values(ast.nodes)) {
1567
- if (node.style && !ast.styles[node.style]) {
1688
+ if (typeof node.style === "string" && !ast.styles[node.style]) {
1568
1689
  pushWarning(ast.diagnostics, seen, node.line, `node '${node.id}' references unknown style '${node.style}'`);
1569
1690
  }
1570
1691
  }
@@ -1668,6 +1789,7 @@ function parse(source, opts = {}) {
1668
1789
  height: 720,
1669
1790
  fps: 60,
1670
1791
  theme: "paper",
1792
+ explicitTheme: false,
1671
1793
  direction: "LR"
1672
1794
  };
1673
1795
  const styles = {};
@@ -1766,6 +1888,7 @@ function parse(source, opts = {}) {
1766
1888
  const str = parseStringToken(rest2);
1767
1889
  if (str) {
1768
1890
  title = str.value;
1891
+ meta.title = title;
1769
1892
  remainder = str.rest;
1770
1893
  }
1771
1894
  const inlineLayout = remainder.match(/\blayout\s+(LR|RL|TB|BT)\b/i);
@@ -1788,8 +1911,11 @@ function parse(source, opts = {}) {
1788
1911
  } else if (k === "fps") {
1789
1912
  meta.fps = Number(v);
1790
1913
  } else if (k === "duration") meta.duration = Number(v);
1791
- else if (k === "theme") meta.theme = String(v);
1792
- else if (k === "direction" || k === "layout") meta.direction = String(v).toUpperCase();
1914
+ else if (k === "theme") {
1915
+ const val = String(v).toLowerCase();
1916
+ meta.theme = val;
1917
+ meta.explicitTheme = val !== "auto";
1918
+ } else if (k === "direction" || k === "layout") meta.direction = String(v).toUpperCase();
1793
1919
  else if (PLAYER_FLAT_KEY_SET.has(k)) {
1794
1920
  const error = applyPlayerSetting(meta.player ??= {}, "player", k, String(v));
1795
1921
  if (error) diagnostics.push({ severity: "warning", message: error, line: lineNo });
@@ -1808,6 +1934,16 @@ function parse(source, opts = {}) {
1808
1934
  i++;
1809
1935
  continue;
1810
1936
  }
1937
+ if (/^theme\s*[:=]?\s*([a-zA-Z0-9_-]+)/i.test(line)) {
1938
+ const match = line.match(/^theme\s*[:=]?\s*([a-zA-Z0-9_-]+)/i);
1939
+ if (match) {
1940
+ const val = match[1].toLowerCase();
1941
+ meta.theme = val;
1942
+ meta.explicitTheme = val !== "auto";
1943
+ }
1944
+ i++;
1945
+ continue;
1946
+ }
1811
1947
  const directiveMatch = line.match(PLAYER_DIRECTIVE_RE);
1812
1948
  if (directiveMatch) {
1813
1949
  const error = applyPlayerSetting(meta.player ??= {}, "player", directiveMatch[1], directiveMatch[2] ?? "");
@@ -2674,7 +2810,7 @@ function diagnoseMarkdyCode(code, options = {}) {
2674
2810
  snippet: trimmed,
2675
2811
  suggestion: closeTheme ? `Use theme '${closeTheme.match}'.` : `Choose from: ${THEME_NAMES.join(", ")}.`,
2676
2812
  didYouMean: closeTheme?.match,
2677
- ruleExplanation: "Supported themes: paper, editorial, midnight, blueprint, graphite, nebula, sketchy, terminal.",
2813
+ ruleExplanation: "Supported themes: paper, editorial, midnight, blueprint, graphite, nebula, sketchy, terminal, ink, doodle.",
2678
2814
  fix: closeTheme ? { original: themeMatch[0], replacement: `theme=${closeTheme.match}` } : void 0
2679
2815
  });
2680
2816
  }
@@ -3472,7 +3608,9 @@ function getIntelliCodeCompletions(docText, cursorLine, cursorCol) {
3472
3608
  { name: "editorial", desc: "High-contrast serif luxury publication layout" },
3473
3609
  { name: "graphite", desc: "Sleek slate monochrome engineering aesthetic" },
3474
3610
  { name: "terminal", desc: "Retro phosphor CRT hacker terminal green on black" },
3475
- { name: "sketchy", desc: "Hand-drawn sketchy whiteboard marker design" }
3611
+ { name: "sketchy", desc: "Hand-drawn sketchy whiteboard marker design" },
3612
+ { name: "ink", desc: "Monochromatic blue ink style inspired by ballpoint pens, fountain pens, cyanotypes & porcelain" },
3613
+ { name: "doodle", desc: "Playful hand-drawn doodle sketchbook with felt-tip marker pens and comic block shadows" }
3476
3614
  ];
3477
3615
  for (const t of themeEntries) {
3478
3616
  items.push({
@@ -4517,7 +4655,7 @@ var ARCHITECTURE_TEMPLATES = [
4517
4655
  title: "Cloud Microservices & Database Tier",
4518
4656
  category: "Cloud / Microservices",
4519
4657
  description: "Multi-tier microservices architecture with API gateway, auth, database, and Redis cache.",
4520
- code: `scene theme=paper width=1440 height=760
4658
+ code: `scene theme=paper
4521
4659
  layout LR
4522
4660
 
4523
4661
  browser WebApp "Web Application"
@@ -4537,24 +4675,23 @@ beat reveal "System Overview":
4537
4675
  show $nodes stagger=40ms
4538
4676
 
4539
4677
  beat authFlow "Authenticate Request":
4540
- frame clients ApiGateway AuthService zoom=1.12
4541
4678
  WebApp -> ApiGateway "GET /profile" -> AuthService "validate_jwt"
4542
4679
  WebApp <- ApiGateway "200 OK (Claims)"
4543
4680
 
4544
4681
  beat checkout "Process Order":
4545
- frame ApiGateway OrderService PaymentService dataTier zoom=1.1
4546
4682
  MobileApp -> ApiGateway "POST /checkout" -> OrderService "create_order"
4547
4683
  OrderService -> RedisCache "check inventory"
4548
4684
  OrderService -> PaymentService "authorize charge"
4549
4685
  PaymentService -> MainDB "record transaction"
4550
- MobileApp <- ApiGateway "201 Created"`
4686
+ MobileApp <- ApiGateway "201 Created"
4687
+ glow MainDB color=#10b981`
4551
4688
  },
4552
4689
  {
4553
4690
  id: "ai-rag-pipeline",
4554
4691
  title: "AI Agent & RAG Pipeline",
4555
4692
  category: "AI / Machine Learning",
4556
4693
  description: "Retrieval-Augmented Generation agent flow with embedding vector search, LLM synthesis, and sandbox tool execution.",
4557
- code: `scene theme=editorial width=1440 height=760
4694
+ code: `scene theme=editorial
4558
4695
  layout LR
4559
4696
 
4560
4697
  user User "Engineer"
@@ -4572,13 +4709,11 @@ beat init "System Reveal":
4572
4709
  show $nodes stagger=50ms
4573
4710
 
4574
4711
  beat retrieve "Query & Vector Search":
4575
- frame User ChatUI Orchestrator aiCore zoom=1.12
4576
4712
  User -> ChatUI "Ask technical question" -> Orchestrator "parse intent"
4577
4713
  Orchestrator -> Embedder "embed(query)" -> VectorDB "cosine search (k=5)"
4578
4714
  Orchestrator <- VectorDB "retrieved context chunks"
4579
4715
 
4580
4716
  beat generate "Synthesis & Tool Execution":
4581
- frame Orchestrator LLM Tools zoom=1.15
4582
4717
  Orchestrator -> LLM "prompt + context"
4583
4718
  LLM -> Tools "execute_code(sql)"
4584
4719
  LLM <- Tools "tool_result"
@@ -4590,7 +4725,7 @@ beat generate "Synthesis & Tool Execution":
4590
4725
  title: "Event-Driven Architecture & Kafka Fan-Out",
4591
4726
  category: "Messaging / Streaming",
4592
4727
  description: "Event ingestion and parallel asynchronous consumer worker fan-out with dead-letter queue.",
4593
- code: `scene theme=midnight width=1440 height=760
4728
+ code: `scene theme=midnight
4594
4729
  layout LR
4595
4730
 
4596
4731
  service IngestionAPI "Ingestion API"
@@ -4608,22 +4743,21 @@ beat reveal "Topology":
4608
4743
  show $nodes stagger=40ms
4609
4744
 
4610
4745
  beat publish "Publish Event":
4611
- frame IngestionAPI KafkaTopic zoom=1.15
4612
4746
  IngestionAPI ~> KafkaTopic "publish(OrderPlaced)"
4613
4747
  glow KafkaTopic color=#38bdf8
4614
4748
 
4615
4749
  beat fanout "Parallel Fan-out Processing":
4616
- frame KafkaTopic workers zoom=1.12
4617
4750
  KafkaTopic ~> InventoryWorker "consume event" & KafkaTopic ~> NotificationWorker "consume event" & KafkaTopic ~> AnalyticsWorker "consume event"
4618
4751
  InventoryWorker -> InventoryDB "UPDATE stock"
4619
- AnalyticsWorker -> AnalyticsDB "INSERT analytics"`
4752
+ AnalyticsWorker -> AnalyticsDB "INSERT analytics"
4753
+ glow AnalyticsDB color=#10b981`
4620
4754
  },
4621
4755
  {
4622
4756
  id: "k8s-ingress-cluster",
4623
4757
  title: "Kubernetes Cluster & Cloud Ingress",
4624
4758
  category: "DevOps / Infrastructure",
4625
4759
  description: "Cloudflare edge, Traefik ingress controller, pod deployments, ClusterIP routing, and persistent storage volumes.",
4626
- code: `scene theme=blueprint width=1440 height=800
4760
+ code: `scene theme=blueprint
4627
4761
  layout LR
4628
4762
 
4629
4763
  cloud CDN "Cloudflare CDN"
@@ -4642,18 +4776,18 @@ beat reveal "Cluster Architecture":
4642
4776
  show $nodes stagger=40ms
4643
4777
 
4644
4778
  beat routing "Ingress Traffic Routing":
4645
- frame CDN Ingress frontendPods zoom=1.12
4646
4779
  CDN -> Ingress "HTTPS Request" -> WebPod1 "reverse proxy"
4647
4780
  WebPod1 -> ClusterIP "internal call" -> ApiPod1 "gRPC invocation"
4648
4781
  ApiPod1 -> PV "read/write volume"
4649
- CDN <- Ingress "200 HTTP OK"`
4782
+ CDN <- Ingress "200 HTTP OK"
4783
+ glow ApiPod1 color=#10b981`
4650
4784
  },
4651
4785
  {
4652
4786
  id: "cicd-gitops-pipeline",
4653
4787
  title: "CI/CD GitOps Delivery Pipeline",
4654
4788
  category: "DevOps / CI-CD",
4655
4789
  description: "GitHub commits, automated GitHub Actions testing, container registry push, and ArgoCD production deployment.",
4656
- code: `scene theme=graphite width=1440 height=720
4790
+ code: `scene theme=graphite
4657
4791
  layout LR
4658
4792
 
4659
4793
  user Dev "Developer"
@@ -4667,7 +4801,6 @@ beat reveal "Pipeline Infrastructure":
4667
4801
  show $nodes stagger=45ms
4668
4802
 
4669
4803
  beat build "Commit & Build Validation":
4670
- frame Dev GitHub Actions DockerHub zoom=1.12
4671
4804
  Dev -> GitHub "git push origin main"
4672
4805
  GitHub ~> Actions "trigger workflow"
4673
4806
  Actions -> Actions "run unit & visual tests"
@@ -4675,7 +4808,6 @@ beat build "Commit & Build Validation":
4675
4808
  glow DockerHub color=#10b981
4676
4809
 
4677
4810
  beat deploy "GitOps Sync & Deployment":
4678
- frame DockerHub ArgoCD Production zoom=1.15
4679
4811
  ArgoCD -> GitHub "detect manifest drift"
4680
4812
  ArgoCD -> DockerHub "pull image:v1.0.7"
4681
4813
  ArgoCD -> Production "apply rollout"
@@ -4686,7 +4818,7 @@ beat deploy "GitOps Sync & Deployment":
4686
4818
  title: "OAuth2 / OIDC Authentication Flow",
4687
4819
  category: "Security / Identity",
4688
4820
  description: "End-to-end authorization code grant flow with IdP redirect, consent, token exchange, and protected API access.",
4689
- code: `scene theme=paper width=1440 height=720
4821
+ code: `scene theme=paper
4690
4822
  layout LR
4691
4823
 
4692
4824
  browser User "End User Browser"
@@ -4698,14 +4830,12 @@ beat reveal "System Overview":
4698
4830
  show $nodes stagger=50ms
4699
4831
 
4700
4832
  beat redirect "Authorize & Consent":
4701
- frame User ClientApp IdP zoom=1.15
4702
4833
  User -> ClientApp "click 'Login with IdP'"
4703
4834
  User <- ClientApp "302 Redirect to /authorize"
4704
4835
  User -> IdP "submit credentials & consent"
4705
4836
  User <- IdP "302 Redirect with ?code=AUTH_CODE"
4706
4837
 
4707
4838
  beat exchange "Token Exchange & API Access":
4708
- frame ClientApp IdP ResourceServer zoom=1.15
4709
4839
  ClientApp -> IdP "POST /token (code + secret)"
4710
4840
  ClientApp <- IdP "200 OK (access_token + id_token)"
4711
4841
  ClientApp -> ResourceServer "GET /userinfo (Bearer Token)"
@@ -4717,7 +4847,7 @@ beat exchange "Token Exchange & API Access":
4717
4847
  title: "Resilient Multi-Region High Availability & Cache-Aside",
4718
4848
  category: "Distributed Systems",
4719
4849
  description: "GeoDNS global routing, primary/failover regions, Redis master/replica cache-aside pattern, and Aurora global storage replication.",
4720
- code: `scene theme=midnight width=1440 height=760
4850
+ code: `scene theme=midnight
4721
4851
  layout LR
4722
4852
 
4723
4853
  gateway GeoDNS "Global Route53 / Anycast"
@@ -4734,23 +4864,23 @@ beat reveal "Global Infrastructure":
4734
4864
  show $nodes stagger=40ms
4735
4865
 
4736
4866
  beat readCache "Cache-Aside Read Flow":
4737
- frame GeoDNS eastTier AuroraGlobal zoom=1.12
4738
4867
  GeoDNS -> RegionEast "route nearest user" -> RedisPrimary "GET item:101"
4739
4868
  RegionEast <- RedisPrimary "cache miss"
4740
4869
  RegionEast -> AuroraGlobal "SELECT FROM db"
4741
4870
  RegionEast -> RedisPrimary "SET item:101 (TTL 60s)"
4742
4871
  GeoDNS <- RegionEast "200 OK (Payload)"
4872
+ glow RedisPrimary color=#38bdf8
4743
4873
 
4744
4874
  beat replication "Global Storage Replication":
4745
- frame RedisPrimary RedisReplica AuroraGlobal zoom=1.15
4746
- RedisPrimary ~> RedisReplica "async sync" & AuroraGlobal ~> AuroraGlobal "storage replication"`
4875
+ RedisPrimary ~> RedisReplica "async sync" & AuroraGlobal ~> AuroraGlobal "storage replication"
4876
+ glow AuroraGlobal color=#10b981`
4747
4877
  },
4748
4878
  {
4749
4879
  id: "decision-flowchart",
4750
4880
  title: "Quality Gate Decision Flowchart",
4751
4881
  category: "Workflows / Flowcharts",
4752
4882
  description: "Top-down pull request quality evaluation workflow with branch decision diamonds and fallback rejection states.",
4753
- code: `scene theme=sketchy width=1280 height=720 type=flowchart
4883
+ code: `scene theme=sketchy type=flowchart
4754
4884
  layout TB
4755
4885
 
4756
4886
  start PR "New Pull Request"
@@ -5361,7 +5491,7 @@ function createMarkdyMcpServer() {
5361
5491
  },
5362
5492
  {
5363
5493
  name: "theme",
5364
- description: "Preferred visual theme (paper, editorial, midnight, blueprint, graphite, nebula, sketchy, terminal).",
5494
+ description: "Preferred visual theme (paper, editorial, midnight, blueprint, graphite, nebula, sketchy, terminal, ink, doodle).",
5365
5495
  required: false
5366
5496
  },
5367
5497
  {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@markdy/mcp-server",
3
- "version": "1.1.7",
3
+ "version": "1.2.0",
4
4
  "description": "Model Context Protocol server for Markdy diagram validation, transpilation, and generation.",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -39,8 +39,8 @@
39
39
  },
40
40
  "dependencies": {
41
41
  "@modelcontextprotocol/sdk": "^1.6.1",
42
- "@markdy/compat": "1.1.7",
43
- "@markdy/core": "1.1.7"
42
+ "@markdy/compat": "1.2.0",
43
+ "@markdy/core": "1.2.0"
44
44
  },
45
45
  "devDependencies": {
46
46
  "@types/node": "^25.9.5",