archdraw-mcp-server 1.0.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 (109) hide show
  1. package/dist/index.d.ts +3 -0
  2. package/dist/index.d.ts.map +1 -0
  3. package/dist/index.js +757 -0
  4. package/dist/index.js.map +1 -0
  5. package/dist/lib/__tests__/constants.test.d.ts +2 -0
  6. package/dist/lib/__tests__/constants.test.d.ts.map +1 -0
  7. package/dist/lib/__tests__/constants.test.js +47 -0
  8. package/dist/lib/__tests__/constants.test.js.map +1 -0
  9. package/dist/lib/__tests__/diagram-state.test.d.ts +2 -0
  10. package/dist/lib/__tests__/diagram-state.test.d.ts.map +1 -0
  11. package/dist/lib/__tests__/diagram-state.test.js +75 -0
  12. package/dist/lib/__tests__/diagram-state.test.js.map +1 -0
  13. package/dist/lib/__tests__/elk-runner.test.d.ts +2 -0
  14. package/dist/lib/__tests__/elk-runner.test.d.ts.map +1 -0
  15. package/dist/lib/__tests__/elk-runner.test.js +87 -0
  16. package/dist/lib/__tests__/elk-runner.test.js.map +1 -0
  17. package/dist/lib/checkpoints.d.ts +48 -0
  18. package/dist/lib/checkpoints.d.ts.map +1 -0
  19. package/dist/lib/checkpoints.js +58 -0
  20. package/dist/lib/checkpoints.js.map +1 -0
  21. package/dist/lib/constants.d.ts +29 -0
  22. package/dist/lib/constants.d.ts.map +1 -0
  23. package/dist/lib/constants.js +62 -0
  24. package/dist/lib/constants.js.map +1 -0
  25. package/dist/lib/diagram-state.d.ts +18 -0
  26. package/dist/lib/diagram-state.d.ts.map +1 -0
  27. package/dist/lib/diagram-state.js +55 -0
  28. package/dist/lib/diagram-state.js.map +1 -0
  29. package/dist/lib/elk-runner.d.ts +29 -0
  30. package/dist/lib/elk-runner.d.ts.map +1 -0
  31. package/dist/lib/elk-runner.js +532 -0
  32. package/dist/lib/elk-runner.js.map +1 -0
  33. package/dist/lib/http.d.ts +3 -0
  34. package/dist/lib/http.d.ts.map +1 -0
  35. package/dist/lib/http.js +13 -0
  36. package/dist/lib/http.js.map +1 -0
  37. package/dist/lib/node-catalog.d.ts +10 -0
  38. package/dist/lib/node-catalog.d.ts.map +1 -0
  39. package/dist/lib/node-catalog.js +122 -0
  40. package/dist/lib/node-catalog.js.map +1 -0
  41. package/dist/lib/parse-prompt.d.ts +26 -0
  42. package/dist/lib/parse-prompt.d.ts.map +1 -0
  43. package/dist/lib/parse-prompt.js +289 -0
  44. package/dist/lib/parse-prompt.js.map +1 -0
  45. package/dist/lib/prompt-builder.d.ts +14 -0
  46. package/dist/lib/prompt-builder.d.ts.map +1 -0
  47. package/dist/lib/prompt-builder.js +133 -0
  48. package/dist/lib/prompt-builder.js.map +1 -0
  49. package/dist/lib/schema.d.ts +1231 -0
  50. package/dist/lib/schema.d.ts.map +1 -0
  51. package/dist/lib/schema.js +258 -0
  52. package/dist/lib/schema.js.map +1 -0
  53. package/dist/server.d.ts +36 -0
  54. package/dist/server.d.ts.map +1 -0
  55. package/dist/server.js +287 -0
  56. package/dist/server.js.map +1 -0
  57. package/dist/tools/__tests__/export-diagram.test.d.ts +2 -0
  58. package/dist/tools/__tests__/export-diagram.test.d.ts.map +1 -0
  59. package/dist/tools/__tests__/export-diagram.test.js +40 -0
  60. package/dist/tools/__tests__/export-diagram.test.js.map +1 -0
  61. package/dist/tools/__tests__/update-diagram.test.d.ts +2 -0
  62. package/dist/tools/__tests__/update-diagram.test.d.ts.map +1 -0
  63. package/dist/tools/__tests__/update-diagram.test.js +90 -0
  64. package/dist/tools/__tests__/update-diagram.test.js.map +1 -0
  65. package/dist/tools/apply-template.d.ts +28 -0
  66. package/dist/tools/apply-template.d.ts.map +1 -0
  67. package/dist/tools/apply-template.js +388 -0
  68. package/dist/tools/apply-template.js.map +1 -0
  69. package/dist/tools/export-diagram.d.ts +36 -0
  70. package/dist/tools/export-diagram.d.ts.map +1 -0
  71. package/dist/tools/export-diagram.js +65 -0
  72. package/dist/tools/export-diagram.js.map +1 -0
  73. package/dist/tools/fix-layout.d.ts +19 -0
  74. package/dist/tools/fix-layout.d.ts.map +1 -0
  75. package/dist/tools/fix-layout.js +100 -0
  76. package/dist/tools/fix-layout.js.map +1 -0
  77. package/dist/tools/generate-diagram.d.ts +31 -0
  78. package/dist/tools/generate-diagram.d.ts.map +1 -0
  79. package/dist/tools/generate-diagram.js +385 -0
  80. package/dist/tools/generate-diagram.js.map +1 -0
  81. package/dist/tools/list-nodes.d.ts +18 -0
  82. package/dist/tools/list-nodes.d.ts.map +1 -0
  83. package/dist/tools/list-nodes.js +48 -0
  84. package/dist/tools/list-nodes.js.map +1 -0
  85. package/dist/tools/load-checkpoint.d.ts +18 -0
  86. package/dist/tools/load-checkpoint.d.ts.map +1 -0
  87. package/dist/tools/load-checkpoint.js +24 -0
  88. package/dist/tools/load-checkpoint.js.map +1 -0
  89. package/dist/tools/read-me.d.ts +2 -0
  90. package/dist/tools/read-me.d.ts.map +1 -0
  91. package/dist/tools/read-me.js +326 -0
  92. package/dist/tools/read-me.js.map +1 -0
  93. package/dist/tools/save-checkpoint.d.ts +11 -0
  94. package/dist/tools/save-checkpoint.d.ts.map +1 -0
  95. package/dist/tools/save-checkpoint.js +17 -0
  96. package/dist/tools/save-checkpoint.js.map +1 -0
  97. package/dist/tools/update-diagram.d.ts +20 -0
  98. package/dist/tools/update-diagram.d.ts.map +1 -0
  99. package/dist/tools/update-diagram.js +189 -0
  100. package/dist/tools/update-diagram.js.map +1 -0
  101. package/dist/tools/validate-diagram.d.ts +14 -0
  102. package/dist/tools/validate-diagram.d.ts.map +1 -0
  103. package/dist/tools/validate-diagram.js +181 -0
  104. package/dist/tools/validate-diagram.js.map +1 -0
  105. package/dist/types/index.d.ts +218 -0
  106. package/dist/types/index.d.ts.map +1 -0
  107. package/dist/types/index.js +2 -0
  108. package/dist/types/index.js.map +1 -0
  109. package/package.json +50 -0
@@ -0,0 +1,189 @@
1
+ import { getDiagramState, setDiagramState } from '../lib/diagram-state.js';
2
+ import { fetchWithTimeout } from '../lib/http.js';
3
+ import { TIER_COLORS, COMM_COLORS, TIER_X_POSITIONS_LR, DEFAULT_NODE_WIDTH, DEFAULT_NODE_HEIGHT, DEFAULT_GROUP_WIDTH, DEFAULT_GROUP_HEIGHT, } from '../lib/constants.js';
4
+ const VERTICAL_GAP = 80;
5
+ function tierOf(node) {
6
+ const tier = (node.data?.tier || node.data?.layer || 'compute').toLowerCase();
7
+ return tier;
8
+ }
9
+ /** Find a non-colliding spot for a new node below the existing nodes of its tier. */
10
+ function findPlacement(nodes, tier) {
11
+ const sameTier = nodes.filter(n => tierOf(n) === tier);
12
+ if (sameTier.length === 0) {
13
+ return { x: TIER_X_POSITIONS_LR[tier] ?? 50, y: 80 };
14
+ }
15
+ const maxBottom = Math.max(...sameTier.map(n => n.position.y + (n.height || DEFAULT_NODE_HEIGHT)));
16
+ const x = sameTier[0].position.x;
17
+ return { x, y: maxBottom + VERTICAL_GAP };
18
+ }
19
+ function buildEdge(edge, id) {
20
+ const commType = (edge.communicationType || 'sync');
21
+ const commStyle = COMM_COLORS[commType] || COMM_COLORS.sync;
22
+ const label = edge.label || '';
23
+ const pathType = edge.pathType || 'smooth';
24
+ return {
25
+ id,
26
+ source: edge.source,
27
+ target: edge.target,
28
+ type: 'simpleFloating',
29
+ animated: commStyle.animated,
30
+ label,
31
+ labelShowBg: true,
32
+ labelBgPadding: [8, 4],
33
+ labelBgBorderRadius: 4,
34
+ labelBgStyle: { fill: '#1e1e2e', fillOpacity: 0.9 },
35
+ labelStyle: { fontSize: 10, fontWeight: 600, fill: '#e2e8f0' },
36
+ style: {
37
+ stroke: commStyle.color,
38
+ strokeWidth: 2,
39
+ strokeDasharray: commStyle.dash,
40
+ },
41
+ markerEnd: { type: 'arrowclosed', color: commStyle.color },
42
+ data: {
43
+ communicationType: commType,
44
+ pathType: pathType,
45
+ label,
46
+ },
47
+ };
48
+ }
49
+ export async function updateDiagram(input) {
50
+ const state = getDiagramState();
51
+ if (state.nodes.length === 0 && state.edges.length === 0) {
52
+ return {
53
+ success: false,
54
+ nodes: [],
55
+ edges: [],
56
+ message: '',
57
+ changes: { nodesAdded: 0, nodesRemoved: 0, nodesUpdated: 0, edgesAdded: 0, edgesRemoved: 0, nodesRepositioned: 0 },
58
+ error: 'No diagram exists. Call generate_diagram first.',
59
+ };
60
+ }
61
+ const changes = { nodesAdded: 0, nodesRemoved: 0, nodesUpdated: 0, edgesAdded: 0, edgesRemoved: 0, nodesRepositioned: 0 };
62
+ let nodes = state.nodes.map(n => ({
63
+ ...n,
64
+ position: { ...n.position },
65
+ data: { ...n.data },
66
+ }));
67
+ let edges = state.edges.map(e => ({ ...e }));
68
+ if (input.removeNodeIds && input.removeNodeIds.length > 0) {
69
+ const removeSet = new Set(input.removeNodeIds);
70
+ nodes = nodes.filter(n => !removeSet.has(n.id));
71
+ edges = edges.filter(e => !removeSet.has(e.source) && !removeSet.has(e.target));
72
+ changes.nodesRemoved = input.removeNodeIds.length;
73
+ changes.edgesRemoved = state.edges.length - edges.length;
74
+ }
75
+ if (input.removeEdgeIds && input.removeEdgeIds.length > 0) {
76
+ const removeSet = new Set(input.removeEdgeIds);
77
+ edges = edges.filter(e => !removeSet.has(e.id));
78
+ changes.edgesRemoved += input.removeEdgeIds.length;
79
+ }
80
+ if (input.addNodes && input.addNodes.length > 0) {
81
+ const newNodes = input.addNodes.map(node => {
82
+ const tier = (node.tier || 'compute').toLowerCase();
83
+ const isGroup = node.isGroup === true;
84
+ const placement = findPlacement(nodes, tier);
85
+ return {
86
+ id: node.id,
87
+ type: isGroup ? 'groupNode' : 'systemNode',
88
+ position: placement,
89
+ data: {
90
+ label: node.label,
91
+ icon: node.icon || (isGroup ? 'layers' : 'box'),
92
+ layer: tier,
93
+ tier: tier,
94
+ tierColor: node.tierColor || TIER_COLORS[tier] || TIER_COLORS.compute,
95
+ accentColor: node.accentColor,
96
+ subtitle: node.subtitle,
97
+ status: node.status,
98
+ isGroup,
99
+ parentId: node.parentId,
100
+ groupColor: node.groupColor,
101
+ },
102
+ width: isGroup ? (node.width || DEFAULT_GROUP_WIDTH) : (node.width || DEFAULT_NODE_WIDTH),
103
+ height: isGroup ? (node.height || DEFAULT_GROUP_HEIGHT) : (node.height || DEFAULT_NODE_HEIGHT),
104
+ zIndex: isGroup ? 0 : 1,
105
+ ...(node.parentId ? { parentNode: node.parentId } : {}),
106
+ };
107
+ });
108
+ nodes = [...nodes, ...newNodes];
109
+ changes.nodesAdded = input.addNodes.length;
110
+ changes.nodesRepositioned += input.addNodes.length;
111
+ }
112
+ if (input.updateNodes && input.updateNodes.length > 0) {
113
+ for (const update of input.updateNodes) {
114
+ const node = nodes.find(n => n.id === update.id);
115
+ if (node) {
116
+ if (update.label !== undefined)
117
+ node.data.label = update.label;
118
+ if (update.subtitle !== undefined)
119
+ node.data.subtitle = update.subtitle;
120
+ if (update.icon !== undefined)
121
+ node.data.icon = update.icon;
122
+ if (update.accentColor !== undefined)
123
+ node.data.accentColor = update.accentColor;
124
+ if (update.status !== undefined)
125
+ node.data.status = update.status;
126
+ if (update.tier) {
127
+ node.data.layer = update.tier;
128
+ node.data.tier = update.tier;
129
+ node.data.tierColor = update.tierColor || TIER_COLORS[update.tier] || TIER_COLORS.compute;
130
+ }
131
+ else if (update.tierColor) {
132
+ node.data.tierColor = update.tierColor;
133
+ }
134
+ changes.nodesUpdated++;
135
+ }
136
+ }
137
+ }
138
+ if (input.addEdges && input.addEdges.length > 0) {
139
+ let edgeIndex = edges.length;
140
+ const newEdges = input.addEdges.map(edge => buildEdge(edge, `edge-${edgeIndex++}`));
141
+ edges = [...edges, ...newEdges];
142
+ changes.edgesAdded = input.addEdges.length;
143
+ }
144
+ setDiagramState({ nodes, edges });
145
+ let sessionId;
146
+ let diagramUrl;
147
+ // Best-effort persistence: save the updated canvas to a new share session so
148
+ // the result is viewable in the editor. Never fail the update if the API is down.
149
+ const API_BASE = process.env.API_BASE_URL || 'http://localhost:3000';
150
+ try {
151
+ const saveResponse = await fetchWithTimeout(`${API_BASE}/api/diagram/load`, {
152
+ method: 'POST',
153
+ headers: { 'Content-Type': 'application/json' },
154
+ body: JSON.stringify({
155
+ nodes,
156
+ edges,
157
+ label: 'Updated MCP Diagram',
158
+ source: 'mcp',
159
+ }),
160
+ });
161
+ if (saveResponse.ok) {
162
+ const saveData = await saveResponse.json();
163
+ sessionId = saveData.sessionId;
164
+ const urlPath = saveData.url || `/editor?session=${saveData.sessionId}`;
165
+ diagramUrl = `${API_BASE}${urlPath}`;
166
+ }
167
+ }
168
+ catch {
169
+ // ignore — local state is still updated
170
+ }
171
+ const changeSummary = [
172
+ changes.nodesAdded > 0 ? `${changes.nodesAdded} node(s) added` : '',
173
+ changes.nodesRemoved > 0 ? `${changes.nodesRemoved} node(s) removed` : '',
174
+ changes.nodesUpdated > 0 ? `${changes.nodesUpdated} node(s) updated` : '',
175
+ changes.edgesAdded > 0 ? `${changes.edgesAdded} edge(s) added` : '',
176
+ changes.edgesRemoved > 0 ? `${changes.edgesRemoved} edge(s) removed` : '',
177
+ ].filter(Boolean).join(', ');
178
+ const urlLine = diagramUrl ? `\n\nView the updated diagram: ${diagramUrl}` : '';
179
+ return {
180
+ success: true,
181
+ nodes,
182
+ edges,
183
+ message: `Diagram updated. ${changeSummary}.${urlLine}`,
184
+ changes,
185
+ sessionId,
186
+ diagramUrl,
187
+ };
188
+ }
189
+ //# sourceMappingURL=update-diagram.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"update-diagram.js","sourceRoot":"","sources":["../../src/tools/update-diagram.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ interface Issue {
2
+ severity: 'error' | 'warning' | 'suggestion';
3
+ nodeId?: string;
4
+ message: string;
5
+ }
6
+ export declare function validateDiagram(): Promise<{
7
+ valid: boolean;
8
+ errorCount: number;
9
+ warningCount: number;
10
+ suggestionCount: number;
11
+ issues: Issue[];
12
+ }>;
13
+ export {};
14
+ //# sourceMappingURL=validate-diagram.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validate-diagram.d.ts","sourceRoot":"","sources":["../../src/tools/validate-diagram.ts"],"names":[],"mappings":"AAIA,UAAU,KAAK;IACb,QAAQ,EAAE,OAAO,GAAG,SAAS,GAAG,YAAY,CAAC;IAC7C,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;CACjB;AAMD,wBAAsB,eAAe,IAAI,OAAO,CAAC;IAC/C,KAAK,EAAE,OAAO,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,eAAe,EAAE,MAAM,CAAC;IACxB,MAAM,EAAE,KAAK,EAAE,CAAC;CACjB,CAAC,CAoMD"}
@@ -0,0 +1,181 @@
1
+ import { getDiagramState } from '../lib/diagram-state.js';
2
+ import { TIER_RANK } from '../lib/constants.js';
3
+ function getTier(node) {
4
+ return (node.data.tier || node.data.layer || 'compute').toLowerCase();
5
+ }
6
+ export async function validateDiagram() {
7
+ const state = getDiagramState();
8
+ if (state.nodes.length === 0 && state.edges.length === 0) {
9
+ return {
10
+ valid: false,
11
+ errorCount: 1,
12
+ warningCount: 0,
13
+ suggestionCount: 0,
14
+ issues: [{ severity: 'error', message: 'No diagram loaded. Call generate_diagram or apply_template first.' }],
15
+ };
16
+ }
17
+ const issues = [];
18
+ const nodeIds = new Set(state.nodes.map(n => n.id));
19
+ const nodeIdCounts = new Map();
20
+ const nodeEdgeCounts = new Map();
21
+ // Track how many edges TARGET each node (inbound degree)
22
+ const nodeInboundCounts = new Map();
23
+ // Track WHICH nodes each node connects TO (targets)
24
+ const nodeOutboundTargets = new Map();
25
+ for (const node of state.nodes) {
26
+ const count = nodeIdCounts.get(node.id) || 0;
27
+ nodeIdCounts.set(node.id, count + 1);
28
+ nodeEdgeCounts.set(node.id, 0);
29
+ nodeInboundCounts.set(node.id, 0);
30
+ nodeOutboundTargets.set(node.id, []);
31
+ }
32
+ for (const edge of state.edges) {
33
+ const sourceCount = nodeEdgeCounts.get(edge.source) || 0;
34
+ const targetCount = nodeEdgeCounts.get(edge.target) || 0;
35
+ nodeEdgeCounts.set(edge.source, sourceCount + 1);
36
+ nodeEdgeCounts.set(edge.target, targetCount + 1);
37
+ // Track inbound edges per node
38
+ const inbound = nodeInboundCounts.get(edge.target) || 0;
39
+ nodeInboundCounts.set(edge.target, inbound + 1);
40
+ // Track what each node connects to
41
+ const targets = nodeOutboundTargets.get(edge.source) || [];
42
+ targets.push(edge.target);
43
+ nodeOutboundTargets.set(edge.source, targets);
44
+ }
45
+ // ─── Duplicate IDs ────────────────────────────────────────────────────────
46
+ for (const [id, count] of nodeIdCounts) {
47
+ if (count > 1) {
48
+ issues.push({ severity: 'error', nodeId: id, message: `Duplicate node ID: '${id}'` });
49
+ }
50
+ }
51
+ // ─── Dangling edges ───────────────────────────────────────────────────────
52
+ for (const edge of state.edges) {
53
+ if (!nodeIds.has(edge.source)) {
54
+ issues.push({ severity: 'error', nodeId: edge.source, message: `Edge '${edge.id}' references non-existent source node '${edge.source}'` });
55
+ }
56
+ if (!nodeIds.has(edge.target)) {
57
+ issues.push({ severity: 'error', nodeId: edge.target, message: `Edge '${edge.id}' references non-existent target node '${edge.target}'` });
58
+ }
59
+ }
60
+ // ─── Orphan nodes ─────────────────────────────────────────────────────────
61
+ for (const node of state.nodes) {
62
+ const edgeCount = nodeEdgeCounts.get(node.id) || 0;
63
+ if (edgeCount === 0 && !node.data?.isGroup) {
64
+ issues.push({ severity: 'error', nodeId: node.id, message: `Orphan node '${node.data.label}' has no connections` });
65
+ }
66
+ }
67
+ // ─── STAR TOPOLOGY DETECTION — critical anti-pattern ─────────────────────
68
+ // If any single non-gateway node has more than 40% of all edges pointing TO it,
69
+ // it is being used as a hub — this is wrong.
70
+ const totalEdges = state.edges.length;
71
+ for (const node of state.nodes) {
72
+ if (node.data?.isGroup)
73
+ continue;
74
+ const tier = getTier(node);
75
+ const inbound = nodeInboundCounts.get(node.id) || 0;
76
+ const label = node.data?.label || node.id;
77
+ // Client-tier nodes should ONLY be sources (edges flow FROM them, not TO them)
78
+ // except for the very rare response-back pattern
79
+ if (tier === 'client' && inbound > 2) {
80
+ issues.push({
81
+ severity: 'error',
82
+ nodeId: node.id,
83
+ message: `STAR TOPOLOGY ERROR: Client node '${label}' is the TARGET of ${inbound} edges. ` +
84
+ `Client tier nodes (Web App, Mobile App) are SOURCES — they initiate requests. ` +
85
+ `Backend/service nodes must NOT connect back to the client. ` +
86
+ `Fix: reverse these edges so they flow FROM the client → API Gateway → Services.`,
87
+ });
88
+ }
89
+ // Any node receiving more than 50% of all edges is a hub — anti-pattern
90
+ if (totalEdges >= 4 && inbound >= Math.ceil(totalEdges * 0.5) && tier !== 'edge') {
91
+ issues.push({
92
+ severity: 'error',
93
+ nodeId: node.id,
94
+ message: `STAR TOPOLOGY ERROR: Node '${label}' (${tier} tier) is the hub — ${inbound} of ${totalEdges} edges point TO it. ` +
95
+ `Architecture must use a tiered flow, not a star/hub pattern. ` +
96
+ `Edges must flow: client → edge → compute → async/data → external.`,
97
+ });
98
+ }
99
+ }
100
+ // ─── BACKWARD EDGE DETECTION — edges flowing right-to-left across tiers ──
101
+ const nodeById = new Map(state.nodes.map(n => [n.id, n]));
102
+ for (const edge of state.edges) {
103
+ const sourceNode = nodeById.get(edge.source);
104
+ const targetNode = nodeById.get(edge.target);
105
+ if (!sourceNode || !targetNode)
106
+ continue;
107
+ if (sourceNode.data?.isGroup || targetNode.data?.isGroup)
108
+ continue;
109
+ const sourceTier = getTier(sourceNode);
110
+ const targetTier = getTier(targetNode);
111
+ const sourceTierOrder = TIER_RANK[sourceTier] ?? 2;
112
+ const targetTierOrder = TIER_RANK[targetTier] ?? 2;
113
+ // Severe backward: data/compute → client (e.g., database connecting to Web App)
114
+ if (sourceTierOrder > 1 && targetTierOrder === 0) {
115
+ issues.push({
116
+ severity: 'error',
117
+ nodeId: edge.source,
118
+ message: `BACKWARD EDGE: '${sourceNode.data?.label}' (${sourceTier}) → '${targetNode.data?.label}' (client). ` +
119
+ `Service and data nodes must NEVER connect to the client tier. ` +
120
+ `The client initiates requests; it never receives direct pushes from backend services (use WebSocket gateway or notification service instead).`,
121
+ });
122
+ }
123
+ // Edge tier should not connect back to client
124
+ if (sourceTierOrder >= 1 && targetTierOrder === 0) {
125
+ issues.push({
126
+ severity: 'warning',
127
+ nodeId: edge.source,
128
+ message: `DIRECTION WARNING: Edge from '${sourceNode.data?.label}' (${sourceTier}) points back TO '${targetNode.data?.label}' (client tier). ` +
129
+ `In a request-response architecture, backend→client connections should use response arrows or a separate WebSocket/SSE node, not direct edges.`,
130
+ });
131
+ }
132
+ }
133
+ // ─── Client tier node count ───────────────────────────────────────────────
134
+ const clientNodes = state.nodes.filter(n => getTier(n) === 'client');
135
+ if (clientNodes.length > 3) {
136
+ issues.push({ severity: 'warning', message: `Client tier has ${clientNodes.length} nodes (max recommended: 3)` });
137
+ }
138
+ // ─── Too many nodes ───────────────────────────────────────────────────────
139
+ if (state.nodes.length > 25) {
140
+ issues.push({ severity: 'warning', message: `Diagram has ${state.nodes.length} nodes (may be unreadable, consider simplifying)` });
141
+ }
142
+ // ─── Missing tier assignments ─────────────────────────────────────────────
143
+ for (const node of state.nodes) {
144
+ if (!node.data.layer && !node.data.tier) {
145
+ issues.push({ severity: 'warning', nodeId: node.id, message: `Node '${node.data.label}' has no tier assigned` });
146
+ }
147
+ }
148
+ // ─── No observability ─────────────────────────────────────────────────────
149
+ const observeNodes = state.nodes.filter(n => getTier(n) === 'observe');
150
+ if (observeNodes.length === 0) {
151
+ issues.push({ severity: 'suggestion', message: 'No observability nodes present (consider adding monitoring/logging)' });
152
+ }
153
+ // ─── No async communication ───────────────────────────────────────────────
154
+ const asyncOrEventEdges = state.edges.filter(e => e.data?.communicationType === 'async' || e.data?.communicationType === 'event');
155
+ if (asyncOrEventEdges.length === 0 && state.edges.length > 0) {
156
+ issues.push({ severity: 'suggestion', message: 'No async/event communication used (consider if async patterns would improve architecture)' });
157
+ }
158
+ // ─── Disconnected external nodes ──────────────────────────────────────────
159
+ const externalNodes = state.nodes.filter(n => getTier(n) === 'external');
160
+ for (const extNode of externalNodes) {
161
+ const edgeCount = nodeEdgeCounts.get(extNode.id) || 0;
162
+ if (edgeCount === 0) {
163
+ issues.push({ severity: 'suggestion', nodeId: extNode.id, message: `External tier node '${extNode.data.label}' has no edges` });
164
+ }
165
+ }
166
+ // ─── Too simple ───────────────────────────────────────────────────────────
167
+ if (state.nodes.length < 3) {
168
+ issues.push({ severity: 'suggestion', message: 'Diagram has fewer than 3 nodes (may be too simple to be useful)' });
169
+ }
170
+ const errorCount = issues.filter(i => i.severity === 'error').length;
171
+ const warningCount = issues.filter(i => i.severity === 'warning').length;
172
+ const suggestionCount = issues.filter(i => i.severity === 'suggestion').length;
173
+ return {
174
+ valid: errorCount === 0,
175
+ errorCount,
176
+ warningCount,
177
+ suggestionCount,
178
+ issues,
179
+ };
180
+ }
181
+ //# sourceMappingURL=validate-diagram.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validate-diagram.js","sourceRoot":"","sources":["../../src/tools/validate-diagram.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,218 @@
1
+ export type LayerType = 'client' | 'edge' | 'compute' | 'async' | 'data' | 'observe' | 'external' | 'group';
2
+ export type TierType = 'client' | 'edge' | 'compute' | 'async' | 'data' | 'observe' | 'external';
3
+ export type CommunicationType = 'sync' | 'async' | 'stream' | 'event' | 'dep';
4
+ export type PathType = 'smooth' | 'bezier' | 'step' | 'straight';
5
+ export type HandlePosition = 'right' | 'left' | 'top' | 'bottom';
6
+ export type MarkerType = 'arrowclosed' | 'arrow' | 'none';
7
+ export type EdgeVariant = 'solid' | 'dashed' | 'dotted';
8
+ export interface ArchitectureNode {
9
+ id: string;
10
+ type: string;
11
+ label: string;
12
+ subtitle?: string;
13
+ layer: LayerType;
14
+ tier?: TierType;
15
+ tierColor?: string;
16
+ accentColor?: string;
17
+ groupColor?: string;
18
+ status?: 'healthy' | 'warning' | 'error' | 'unknown';
19
+ shape?: string;
20
+ position?: {
21
+ x: number;
22
+ y: number;
23
+ };
24
+ width: number;
25
+ height: number;
26
+ icon: string;
27
+ metadata: Record<string, unknown>;
28
+ layerIndex?: number;
29
+ isGroup?: boolean;
30
+ parentId?: string;
31
+ groupLabel?: string;
32
+ serviceType?: string;
33
+ }
34
+ export interface ArchitectureEdge {
35
+ id: string;
36
+ source: string;
37
+ target: string;
38
+ sourceHandle?: HandlePosition;
39
+ targetHandle?: HandlePosition;
40
+ communicationType: CommunicationType;
41
+ pathType: PathType;
42
+ label: string;
43
+ labelPosition: 'center';
44
+ animated: boolean;
45
+ style: {
46
+ stroke: string;
47
+ strokeDasharray: string;
48
+ strokeWidth: number;
49
+ };
50
+ markerEnd: MarkerType;
51
+ markerStart: MarkerType;
52
+ edgeVariant?: EdgeVariant;
53
+ }
54
+ export interface ReactFlowNode {
55
+ id: string;
56
+ type: string;
57
+ position: {
58
+ x: number;
59
+ y: number;
60
+ };
61
+ data: {
62
+ label: string;
63
+ icon: string;
64
+ layer: LayerType;
65
+ tier?: TierType;
66
+ tierColor?: string;
67
+ accentColor?: string;
68
+ subtitle?: string;
69
+ serviceType?: string;
70
+ isGroup?: boolean;
71
+ parentId?: string;
72
+ groupLabel?: string;
73
+ groupColor?: string;
74
+ status?: 'healthy' | 'warning' | 'error' | 'unknown';
75
+ shape?: string;
76
+ };
77
+ width?: number;
78
+ height?: number;
79
+ zIndex?: number;
80
+ extent?: 'parent';
81
+ style?: Record<string, unknown>;
82
+ parentNode?: string;
83
+ }
84
+ export interface ReactFlowEdge {
85
+ id: string;
86
+ source: string;
87
+ target: string;
88
+ sourceHandle?: HandlePosition;
89
+ targetHandle?: HandlePosition;
90
+ type: string;
91
+ animated: boolean;
92
+ label: string;
93
+ labelShowBg: boolean;
94
+ labelBgPadding: [number, number];
95
+ labelBgBorderRadius: number;
96
+ labelBgStyle: {
97
+ fill: string;
98
+ fillOpacity?: number;
99
+ stroke?: string;
100
+ };
101
+ labelStyle: {
102
+ fontSize: number;
103
+ fontWeight: number;
104
+ fill: string;
105
+ };
106
+ style: {
107
+ stroke: string;
108
+ strokeWidth: number;
109
+ strokeDasharray: string;
110
+ };
111
+ markerEnd: {
112
+ type: string;
113
+ color: string;
114
+ };
115
+ data: {
116
+ communicationType: CommunicationType;
117
+ pathType: PathType;
118
+ label: string;
119
+ labelDetailed?: string;
120
+ edgeVariant?: EdgeVariant;
121
+ edgeType?: CommunicationType;
122
+ };
123
+ }
124
+ export interface DiagramResult {
125
+ success: boolean;
126
+ nodes: ReactFlowNode[];
127
+ edges: ReactFlowEdge[];
128
+ elkPositions: Array<{
129
+ id: string;
130
+ x: number;
131
+ y: number;
132
+ width: number;
133
+ height: number;
134
+ }>;
135
+ metadata: {
136
+ nodeCount: number;
137
+ edgeCount: number;
138
+ layoutAlgorithm: string;
139
+ direction: string;
140
+ };
141
+ diagramUrl?: string;
142
+ sessionId?: string;
143
+ message?: string;
144
+ errors?: string[];
145
+ }
146
+ export interface ComponentDefinition {
147
+ id: string;
148
+ label: string;
149
+ category: string;
150
+ color: string;
151
+ icon: string;
152
+ description: string;
153
+ }
154
+ export interface ElkNode {
155
+ id: string;
156
+ width: number;
157
+ height: number;
158
+ x?: number;
159
+ y?: number;
160
+ labels?: Array<{
161
+ text: string;
162
+ }>;
163
+ layoutOptions?: Record<string, string>;
164
+ }
165
+ export interface ElkEdge {
166
+ id: string;
167
+ sources: string[];
168
+ targets: string[];
169
+ labels?: Array<{
170
+ text: string;
171
+ }>;
172
+ }
173
+ export interface ElkGraph {
174
+ id: string;
175
+ layoutOptions: Record<string, string>;
176
+ children: ElkNode[];
177
+ edges: ElkEdge[];
178
+ }
179
+ export interface LayoutConfig {
180
+ algorithm: 'layered' | 'force';
181
+ direction: 'RIGHT' | 'DOWN' | 'LEFT' | 'UP';
182
+ elkOptions: Record<string, string>;
183
+ tierOrder: TierType[];
184
+ }
185
+ export interface UserIntent {
186
+ description: string;
187
+ systemType: string;
188
+ complexity: 'low' | 'medium' | 'high';
189
+ model?: string;
190
+ }
191
+ export interface GenerationProgress {
192
+ phase: 'planning' | 'components' | 'layout' | 'edges' | 'validating' | 'scoring' | 'complete' | 'error';
193
+ iteration: number;
194
+ currentAgent: string;
195
+ score: number;
196
+ message: string;
197
+ progress: number;
198
+ }
199
+ export interface TemplateInfo {
200
+ id: string;
201
+ name: string;
202
+ description: string;
203
+ category: string;
204
+ }
205
+ export interface NodeTypeSummary {
206
+ categories: Array<{
207
+ name: string;
208
+ count: number;
209
+ nodes: Array<{
210
+ id: string;
211
+ label: string;
212
+ icon: string;
213
+ description: string;
214
+ }>;
215
+ }>;
216
+ totalCount: number;
217
+ }
218
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":""}