@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.
- package/dist/index.js +161 -31
- 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")
|
|
1792
|
-
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
-
|
|
4746
|
-
|
|
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
|
|
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.
|
|
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.
|
|
43
|
-
"@markdy/core": "1.
|
|
42
|
+
"@markdy/compat": "1.2.0",
|
|
43
|
+
"@markdy/core": "1.2.0"
|
|
44
44
|
},
|
|
45
45
|
"devDependencies": {
|
|
46
46
|
"@types/node": "^25.9.5",
|