living-documentation 7.40.0 → 7.41.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/src/frontend/diagram/evidence.js +146 -0
- package/dist/src/frontend/diagram/history.js +4 -0
- package/dist/src/frontend/diagram/main.js +4 -0
- package/dist/src/frontend/diagram/network.js +10 -5
- package/dist/src/frontend/diagram/persistence.js +5 -0
- package/dist/src/frontend/diagram/state.js +1 -0
- package/dist/src/frontend/diagram.html +70 -0
- package/dist/src/frontend/i18n/en.json +9 -0
- package/dist/src/frontend/i18n/fr.json +9 -0
- package/dist/src/mcp/server.d.ts.map +1 -1
- package/dist/src/mcp/server.js +86 -8
- package/dist/src/mcp/server.js.map +1 -1
- package/dist/src/mcp/tools/diagrams.d.ts +56 -18
- package/dist/src/mcp/tools/diagrams.d.ts.map +1 -1
- package/dist/src/mcp/tools/diagrams.js +269 -24
- package/dist/src/mcp/tools/diagrams.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
// ── Evidence / source consultation mode ───────────────────────────────────────
|
|
2
|
+
// Shows document-provenance markers for nodes and edges that carry `evidence`.
|
|
3
|
+
|
|
4
|
+
import { st } from './state.js';
|
|
5
|
+
import { t } from './t.js';
|
|
6
|
+
|
|
7
|
+
function evidenceItems(item) {
|
|
8
|
+
return Array.isArray(item && item.evidence)
|
|
9
|
+
? item.evidence.filter((e) => e && typeof e.documentId === 'string' && e.documentId.trim())
|
|
10
|
+
: [];
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
function documentHref(documentId) {
|
|
14
|
+
return '/?doc=' + encodeURIComponent(documentId);
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
function markerPositionForNode(node) {
|
|
18
|
+
if (!st.network || !node) return null;
|
|
19
|
+
const bodyNode = st.network.body.nodes[node.id];
|
|
20
|
+
if (!bodyNode) return null;
|
|
21
|
+
const w = (bodyNode.shape && bodyNode.shape.width) || node.nodeWidth || 120;
|
|
22
|
+
const h = (bodyNode.shape && bodyNode.shape.height) || node.nodeHeight || 60;
|
|
23
|
+
return st.network.canvasToDOM({ x: bodyNode.x + w / 2 - 8, y: bodyNode.y - h / 2 + 8 });
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
function markerPositionForEdge(edge) {
|
|
27
|
+
if (!st.network || !edge) return null;
|
|
28
|
+
const bbox = st.edgeLabelBBox && st.edgeLabelBBox[edge.id];
|
|
29
|
+
if (bbox) return st.network.canvasToDOM({ x: bbox.cx, y: bbox.cy });
|
|
30
|
+
|
|
31
|
+
const from = st.network.body.nodes[edge.from];
|
|
32
|
+
const to = edge.to && st.network.body.nodes[edge.to];
|
|
33
|
+
if (!from || !to) return null;
|
|
34
|
+
return st.network.canvasToDOM({ x: (from.x + to.x) / 2, y: (from.y + to.y) / 2 });
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
function makeMarker(kind, id, pos) {
|
|
38
|
+
const marker = document.createElement('button');
|
|
39
|
+
marker.type = 'button';
|
|
40
|
+
marker.className = 'evidence-marker';
|
|
41
|
+
marker.textContent = '⌘';
|
|
42
|
+
marker.title = t('diagram.evidence.marker_title');
|
|
43
|
+
marker.setAttribute('aria-label', marker.title);
|
|
44
|
+
marker.style.left = `${Math.round(pos.x)}px`;
|
|
45
|
+
marker.style.top = `${Math.round(pos.y)}px`;
|
|
46
|
+
marker.addEventListener('click', (event) => {
|
|
47
|
+
event.preventDefault();
|
|
48
|
+
event.stopPropagation();
|
|
49
|
+
showEvidencePanel(kind, id);
|
|
50
|
+
});
|
|
51
|
+
return marker;
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
export function renderEvidenceMarkers() {
|
|
55
|
+
const layer = document.getElementById('evidenceLayer');
|
|
56
|
+
if (!layer) return;
|
|
57
|
+
layer.replaceChildren();
|
|
58
|
+
layer.classList.toggle('hidden', !st.evidenceMode);
|
|
59
|
+
if (!st.evidenceMode || !st.network || !st.nodes || !st.edges) return;
|
|
60
|
+
|
|
61
|
+
for (const node of st.nodes.get()) {
|
|
62
|
+
if (!evidenceItems(node).length || node.shapeType === 'anchor') continue;
|
|
63
|
+
const pos = markerPositionForNode(node);
|
|
64
|
+
if (pos) layer.appendChild(makeMarker('node', node.id, pos));
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
for (const edge of st.edges.get()) {
|
|
68
|
+
if (!evidenceItems(edge).length) continue;
|
|
69
|
+
const pos = markerPositionForEdge(edge);
|
|
70
|
+
if (pos) layer.appendChild(makeMarker('edge', edge.id, pos));
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
export function bindEvidenceModeToNetwork() {
|
|
75
|
+
if (!st.network) return;
|
|
76
|
+
st.network.on('afterDrawing', renderEvidenceMarkers);
|
|
77
|
+
renderEvidenceMarkers();
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
export function initEvidenceMode() {
|
|
81
|
+
window.addEventListener('diagram:network-ready', bindEvidenceModeToNetwork);
|
|
82
|
+
document.getElementById('btnEvidenceClose')?.addEventListener('click', hideEvidencePanel);
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
export function toggleEvidenceMode() {
|
|
86
|
+
st.evidenceMode = !st.evidenceMode;
|
|
87
|
+
const btn = document.getElementById('btnEvidenceMode');
|
|
88
|
+
if (btn) btn.classList.toggle('tool-active', st.evidenceMode);
|
|
89
|
+
if (!st.evidenceMode) hideEvidencePanel();
|
|
90
|
+
renderEvidenceMarkers();
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
export function hideEvidencePanel() {
|
|
94
|
+
const panel = document.getElementById('evidencePanel');
|
|
95
|
+
if (panel) panel.classList.add('hidden');
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
function showEvidencePanel(kind, id) {
|
|
99
|
+
const panel = document.getElementById('evidencePanel');
|
|
100
|
+
const title = document.getElementById('evidencePanelTitle');
|
|
101
|
+
const body = document.getElementById('evidencePanelBody');
|
|
102
|
+
if (!panel || !title || !body) return;
|
|
103
|
+
|
|
104
|
+
const item = kind === 'node' ? st.nodes.get(id) : st.edges.get(id);
|
|
105
|
+
const entries = evidenceItems(item);
|
|
106
|
+
title.textContent = kind === 'node'
|
|
107
|
+
? t('diagram.evidence.node_title')
|
|
108
|
+
: t('diagram.evidence.edge_title');
|
|
109
|
+
body.replaceChildren();
|
|
110
|
+
|
|
111
|
+
if (!entries.length) {
|
|
112
|
+
const empty = document.createElement('p');
|
|
113
|
+
empty.className = 'text-sm text-gray-500 dark:text-gray-400';
|
|
114
|
+
empty.textContent = t('diagram.evidence.empty');
|
|
115
|
+
body.appendChild(empty);
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
for (const entry of entries) {
|
|
119
|
+
const card = document.createElement('article');
|
|
120
|
+
card.className = 'rounded-md border border-gray-200 dark:border-gray-700 bg-white dark:bg-gray-900 p-3 space-y-2';
|
|
121
|
+
|
|
122
|
+
const link = document.createElement('a');
|
|
123
|
+
link.className = 'block text-sm font-semibold text-blue-600 dark:text-blue-400 hover:underline break-all';
|
|
124
|
+
link.href = documentHref(entry.documentId);
|
|
125
|
+
link.textContent = entry.documentId;
|
|
126
|
+
card.appendChild(link);
|
|
127
|
+
|
|
128
|
+
if (entry.section) {
|
|
129
|
+
const section = document.createElement('p');
|
|
130
|
+
section.className = 'text-xs font-medium text-gray-500 dark:text-gray-400';
|
|
131
|
+
section.textContent = `${t('diagram.evidence.section_label')}: ${entry.section}`;
|
|
132
|
+
card.appendChild(section);
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
if (entry.summary) {
|
|
136
|
+
const summary = document.createElement('p');
|
|
137
|
+
summary.className = 'text-sm text-gray-700 dark:text-gray-300 leading-snug';
|
|
138
|
+
summary.textContent = entry.summary;
|
|
139
|
+
card.appendChild(summary);
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
body.appendChild(card);
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
panel.classList.remove('hidden');
|
|
146
|
+
}
|
|
@@ -21,6 +21,9 @@ function captureState() {
|
|
|
21
21
|
const nodes = st.nodes.get().map((n) => ({
|
|
22
22
|
id: n.id, label: n.label,
|
|
23
23
|
shapeType: n.shapeType || 'box', colorKey: n.colorKey || 'c-gray',
|
|
24
|
+
kind: n.kind || null, renderAs: n.renderAs || null,
|
|
25
|
+
description: n.description || null,
|
|
26
|
+
evidence: Array.isArray(n.evidence) ? n.evidence : null,
|
|
24
27
|
nodeWidth: n.nodeWidth || null, nodeHeight: n.nodeHeight || null,
|
|
25
28
|
fontSize: n.fontSize || null, textAlign: n.textAlign || null, textValign: n.textValign || null,
|
|
26
29
|
bgOpacity: n.bgOpacity ?? null,
|
|
@@ -37,6 +40,7 @@ function captureState() {
|
|
|
37
40
|
fromPort: e.fromPort || null, toPort: e.toPort || null,
|
|
38
41
|
edgeColor: e.edgeColor || null, edgeWidth: e.edgeWidth || null,
|
|
39
42
|
edgeLocked: e.edgeLocked || false,
|
|
43
|
+
evidence: Array.isArray(e.evidence) ? e.evidence : null,
|
|
40
44
|
}));
|
|
41
45
|
return {
|
|
42
46
|
nodes,
|
|
@@ -21,6 +21,7 @@ import { uploadImageBlob } from './image-upload.js';
|
|
|
21
21
|
import { promptImageName } from './image-name-modal.js';
|
|
22
22
|
import { showToast } from './toast.js';
|
|
23
23
|
import { t } from './t.js';
|
|
24
|
+
import { initEvidenceMode, toggleEvidenceMode } from './evidence.js';
|
|
24
25
|
|
|
25
26
|
// ── Tool management ───────────────────────────────────────────────────────────
|
|
26
27
|
|
|
@@ -30,6 +31,7 @@ function setTool(tool, shape) {
|
|
|
30
31
|
|
|
31
32
|
document.querySelectorAll('.tool-btn').forEach((b) => b.classList.remove('tool-active'));
|
|
32
33
|
if (st.alignGuides) document.getElementById('btnAlign').classList.add('tool-active');
|
|
34
|
+
if (st.evidenceMode) document.getElementById('btnEvidenceMode').classList.add('tool-active');
|
|
33
35
|
|
|
34
36
|
const key = tool === 'addNode' ? `addNode:${shape || st.pendingShape}` : tool;
|
|
35
37
|
const btn = document.getElementById(TOOL_BTN_MAP[key]);
|
|
@@ -134,6 +136,7 @@ document.getElementById('btnDelete').addEventListener('click', deleteSelected);
|
|
|
134
136
|
document.getElementById('btnAlign').addEventListener('click', toggleAlignGuides);
|
|
135
137
|
document.getElementById('btnGrid').addEventListener('click', toggleGrid);
|
|
136
138
|
document.getElementById('btnEdgeStraight').addEventListener('click', toggleEdgeStraight);
|
|
139
|
+
document.getElementById('btnEvidenceMode').addEventListener('click', toggleEvidenceMode);
|
|
137
140
|
document.getElementById('btnResizeMode').addEventListener('click', toggleResizeMode);
|
|
138
141
|
|
|
139
142
|
document.getElementById('btnZoomOut').addEventListener('click', () => adjustZoom(-0.2));
|
|
@@ -147,6 +150,7 @@ document.getElementById('btnNewDiagram').addEventListener('click', newDiagram);
|
|
|
147
150
|
|
|
148
151
|
// Dirty state on title edits
|
|
149
152
|
document.getElementById('diagramTitle').addEventListener('input', markDirty);
|
|
153
|
+
initEvidenceMode();
|
|
150
154
|
|
|
151
155
|
// ── Node panel wiring ─────────────────────────────────────────────────────────
|
|
152
156
|
|
|
@@ -52,11 +52,15 @@ export function initNetwork(savedNodes, savedEdges, edgesStraight = false) {
|
|
|
52
52
|
const edgeSmooth = edgesStraight ? { enabled: false } : { type: 'continuous' };
|
|
53
53
|
|
|
54
54
|
st.nodes = new vis.DataSet(
|
|
55
|
-
savedNodes.map((n) =>
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
55
|
+
savedNodes.map((n) => {
|
|
56
|
+
const shapeType = n.shapeType || n.renderAs || 'box';
|
|
57
|
+
return {
|
|
58
|
+
...n,
|
|
59
|
+
shapeType,
|
|
60
|
+
...visNodeProps(shapeType, n.colorKey || 'c-gray', n.nodeWidth, n.nodeHeight, n.fontSize, n.textAlign, n.textValign),
|
|
61
|
+
...(n.locked ? { fixed: { x: true, y: true }, draggable: false } : {}),
|
|
62
|
+
};
|
|
63
|
+
})
|
|
60
64
|
);
|
|
61
65
|
st.edges = new vis.DataSet(
|
|
62
66
|
savedEdges.map((e) => {
|
|
@@ -871,6 +875,7 @@ export function initNetwork(savedNodes, savedEdges, edgesStraight = false) {
|
|
|
871
875
|
}
|
|
872
876
|
st.network.redraw();
|
|
873
877
|
});
|
|
878
|
+
window.dispatchEvent(new CustomEvent('diagram:network-ready'));
|
|
874
879
|
}
|
|
875
880
|
|
|
876
881
|
// ── Anchor snap-to-connect ────────────────────────────────────────────────────
|
|
@@ -70,6 +70,7 @@ export async function openDiagram(id) {
|
|
|
70
70
|
st.edgesStraight = diagram.edgesStraight === true;
|
|
71
71
|
document.getElementById('btnSave').disabled = true;
|
|
72
72
|
document.getElementById('diagramTitle').value = diagram.title || '';
|
|
73
|
+
document.getElementById('evidencePanel')?.classList.add('hidden');
|
|
73
74
|
document.getElementById('btnEdgeStraight').classList.toggle('tool-active', st.edgesStraight);
|
|
74
75
|
applyGridState(diagram.gridEnabled ?? true);
|
|
75
76
|
applyAlignGuidesState(diagram.alignGuides ?? true);
|
|
@@ -125,6 +126,9 @@ export async function saveDiagram() {
|
|
|
125
126
|
.map((n) => ({
|
|
126
127
|
id: n.id, label: n.label,
|
|
127
128
|
shapeType: n.shapeType || 'box', colorKey: n.colorKey || 'c-gray',
|
|
129
|
+
kind: n.kind || null, renderAs: n.renderAs || null,
|
|
130
|
+
description: n.description || null,
|
|
131
|
+
evidence: Array.isArray(n.evidence) ? n.evidence : null,
|
|
128
132
|
nodeWidth: n.nodeWidth || null, nodeHeight: n.nodeHeight || null,
|
|
129
133
|
fontSize: n.fontSize || null, textAlign: n.textAlign || null, textValign: n.textValign || null,
|
|
130
134
|
bgOpacity: n.bgOpacity ?? null,
|
|
@@ -145,6 +149,7 @@ export async function saveDiagram() {
|
|
|
145
149
|
fromPort: e.fromPort || null, toPort: e.toPort || null,
|
|
146
150
|
edgeColor: e.edgeColor || null, edgeWidth: e.edgeWidth || null,
|
|
147
151
|
edgeLocked: e.edgeLocked || false, edgeLabelWidth: e.edgeLabelWidth || null,
|
|
152
|
+
evidence: Array.isArray(e.evidence) ? e.evidence : null,
|
|
148
153
|
}));
|
|
149
154
|
|
|
150
155
|
const title = document.getElementById('diagramTitle').value || t('diagram.toast.untitled');
|
|
@@ -32,6 +32,7 @@ export const st = {
|
|
|
32
32
|
edgeLabelBBox: {}, // edgeId → {cx, cy, w, h, rotation} canvas world coords, used by label resize
|
|
33
33
|
freeArrowFirstPoint: null, // addEdge two-click flow: {x, y} canvas coords of first click, or null
|
|
34
34
|
exportingPng: false, // suppress interactive-only canvas chrome during PNG export
|
|
35
|
+
evidenceMode: false, // when true, show document-provenance markers on nodes/edges
|
|
35
36
|
};
|
|
36
37
|
|
|
37
38
|
export function markDirty() {
|
|
@@ -252,6 +252,40 @@
|
|
|
252
252
|
opacity: 1;
|
|
253
253
|
transform: translateY(0);
|
|
254
254
|
}
|
|
255
|
+
|
|
256
|
+
#evidenceLayer {
|
|
257
|
+
position: absolute;
|
|
258
|
+
inset: 0;
|
|
259
|
+
pointer-events: none;
|
|
260
|
+
z-index: 18;
|
|
261
|
+
overflow: hidden;
|
|
262
|
+
}
|
|
263
|
+
#evidenceLayer.hidden {
|
|
264
|
+
display: none;
|
|
265
|
+
}
|
|
266
|
+
.evidence-marker {
|
|
267
|
+
position: absolute;
|
|
268
|
+
width: 1.25rem;
|
|
269
|
+
height: 1.25rem;
|
|
270
|
+
transform: translate(-50%, -50%);
|
|
271
|
+
display: flex;
|
|
272
|
+
align-items: center;
|
|
273
|
+
justify-content: center;
|
|
274
|
+
border-radius: 999px;
|
|
275
|
+
border: 1px solid #0284c7;
|
|
276
|
+
background: #e0f2fe;
|
|
277
|
+
color: #0369a1;
|
|
278
|
+
font-size: 0.7rem;
|
|
279
|
+
font-weight: 700;
|
|
280
|
+
line-height: 1;
|
|
281
|
+
box-shadow: 0 2px 8px rgba(2, 132, 199, 0.28);
|
|
282
|
+
pointer-events: auto;
|
|
283
|
+
}
|
|
284
|
+
.dark .evidence-marker {
|
|
285
|
+
border-color: #38bdf8;
|
|
286
|
+
background: #082f49;
|
|
287
|
+
color: #e0f2fe;
|
|
288
|
+
}
|
|
255
289
|
</style>
|
|
256
290
|
</head>
|
|
257
291
|
<body
|
|
@@ -490,6 +524,19 @@
|
|
|
490
524
|
<polyline points="8,2 12,2 12,6" />
|
|
491
525
|
</svg>
|
|
492
526
|
</button>
|
|
527
|
+
<button
|
|
528
|
+
id="btnEvidenceMode"
|
|
529
|
+
class="tool-btn"
|
|
530
|
+
data-i18n-title="diagram.toolbar.evidence_mode"
|
|
531
|
+
>
|
|
532
|
+
<svg width="14" height="14" viewBox="0 0 14 14" fill="none" stroke="currentColor" stroke-width="1.4" stroke-linecap="round" stroke-linejoin="round">
|
|
533
|
+
<path d="M4 1.5 H8.5 L11 4 V12.5 H4 Z" />
|
|
534
|
+
<path d="M8.5 1.5 V4 H11" />
|
|
535
|
+
<path d="M1.5 5.5 H6.5" />
|
|
536
|
+
<path d="M1.5 8 H6.5" />
|
|
537
|
+
<path d="M1.5 10.5 H5" />
|
|
538
|
+
</svg>
|
|
539
|
+
</button>
|
|
493
540
|
<button
|
|
494
541
|
id="btnResizeMode"
|
|
495
542
|
class="tool-btn active-tool"
|
|
@@ -597,6 +644,9 @@
|
|
|
597
644
|
<!-- Debug overlay layer -->
|
|
598
645
|
<div id="debugLayer"></div>
|
|
599
646
|
|
|
647
|
+
<!-- Evidence markers layer -->
|
|
648
|
+
<div id="evidenceLayer" class="hidden"></div>
|
|
649
|
+
|
|
600
650
|
<!-- Stamp overlay: intercepts canvas clicks during stamp mode -->
|
|
601
651
|
<div id="stampOverlay" style="position:absolute;inset:0;display:none;z-index:11;cursor:crosshair;"></div>
|
|
602
652
|
|
|
@@ -633,6 +683,26 @@
|
|
|
633
683
|
</div>
|
|
634
684
|
</div>
|
|
635
685
|
|
|
686
|
+
<!-- Evidence panel -->
|
|
687
|
+
<aside
|
|
688
|
+
id="evidencePanel"
|
|
689
|
+
class="hidden absolute top-0 right-0 bottom-0 w-80 max-w-[85vw] z-30 bg-gray-50 dark:bg-gray-900 border-l border-gray-200 dark:border-gray-700 shadow-xl flex flex-col"
|
|
690
|
+
>
|
|
691
|
+
<div class="flex items-center justify-between gap-2 px-4 py-3 border-b border-gray-200 dark:border-gray-700">
|
|
692
|
+
<h2
|
|
693
|
+
id="evidencePanelTitle"
|
|
694
|
+
class="text-sm font-semibold text-gray-800 dark:text-gray-100"
|
|
695
|
+
data-i18n="diagram.evidence.panel_title"
|
|
696
|
+
>Sources</h2>
|
|
697
|
+
<button
|
|
698
|
+
id="btnEvidenceClose"
|
|
699
|
+
class="tool-btn !w-7 !h-7"
|
|
700
|
+
data-i18n-title="diagram.evidence.close"
|
|
701
|
+
>×</button>
|
|
702
|
+
</div>
|
|
703
|
+
<div id="evidencePanelBody" class="flex-1 overflow-y-auto p-3 space-y-3"></div>
|
|
704
|
+
</aside>
|
|
705
|
+
|
|
636
706
|
<!-- Node panel -->
|
|
637
707
|
<div id="nodePanel" class="float-panel hidden">
|
|
638
708
|
<button
|
|
@@ -484,6 +484,15 @@
|
|
|
484
484
|
"diagram.edge_panel.width_increase": "Increase width",
|
|
485
485
|
"diagram.edge_panel.clear_ports": "Clear attachment points",
|
|
486
486
|
|
|
487
|
+
"diagram.toolbar.evidence_mode": "Source consultation mode",
|
|
488
|
+
"diagram.evidence.panel_title": "Sources",
|
|
489
|
+
"diagram.evidence.node_title": "Node sources",
|
|
490
|
+
"diagram.evidence.edge_title": "Relation sources",
|
|
491
|
+
"diagram.evidence.marker_title": "View document sources",
|
|
492
|
+
"diagram.evidence.close": "Close sources",
|
|
493
|
+
"diagram.evidence.empty": "No source attached.",
|
|
494
|
+
"diagram.evidence.section_label": "Section",
|
|
495
|
+
|
|
487
496
|
"diagram.label_input.placeholder": "Label…",
|
|
488
497
|
"diagram.empty_state": "Select or create a diagram",
|
|
489
498
|
|
|
@@ -484,6 +484,15 @@
|
|
|
484
484
|
"diagram.edge_panel.width_increase": "Augmenter l'épaisseur",
|
|
485
485
|
"diagram.edge_panel.clear_ports": "Supprimer les points d'attache",
|
|
486
486
|
|
|
487
|
+
"diagram.toolbar.evidence_mode": "Mode consultation des sources",
|
|
488
|
+
"diagram.evidence.panel_title": "Sources",
|
|
489
|
+
"diagram.evidence.node_title": "Sources du nœud",
|
|
490
|
+
"diagram.evidence.edge_title": "Sources de la relation",
|
|
491
|
+
"diagram.evidence.marker_title": "Voir les sources documentaires",
|
|
492
|
+
"diagram.evidence.close": "Fermer les sources",
|
|
493
|
+
"diagram.evidence.empty": "Aucune source attachée.",
|
|
494
|
+
"diagram.evidence.section_label": "Section",
|
|
495
|
+
|
|
487
496
|
"diagram.label_input.placeholder": "Libellé…",
|
|
488
497
|
"diagram.empty_state": "Sélectionne ou crée un diagramme",
|
|
489
498
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../../src/mcp/server.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,MAAM,EAAqB,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../../src/mcp/server.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,MAAM,EAAqB,MAAM,SAAS,CAAC;AAo9CpD,wBAAgB,SAAS,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CA4BlD"}
|
package/dist/src/mcp/server.js
CHANGED
|
@@ -185,11 +185,21 @@ label warnings are disabled for screen-guide.
|
|
|
185
185
|
- Exception: screen-guide diagrams may have unlabeled edges.
|
|
186
186
|
|
|
187
187
|
## Node label format (C4 convention)
|
|
188
|
-
|
|
188
|
+
Either provide a full C4 label in \`name\` using \`\\n\` line breaks, or provide
|
|
189
|
+
\`kind\` plus optional \`description\` and let the MCP build the C4 label:
|
|
189
190
|
\`\`\`
|
|
190
191
|
Name\\n[Type]\\nShort description of role or responsibility
|
|
191
192
|
\`\`\`
|
|
192
|
-
|
|
193
|
+
Architectural \`kind\` is separate from visual \`renderAs\`: \`kind\` describes
|
|
194
|
+
the concept, \`renderAs\` chooses the shape. If \`kind\` is present and
|
|
195
|
+
\`renderAs\` is absent, the MCP chooses the default shape and color for that
|
|
196
|
+
kind. Legacy \`type\` still works as the visual shape when \`kind\` is absent.
|
|
197
|
+
Kinds: \`person\`, \`software_system\`, \`external_system\`, \`container\`,
|
|
198
|
+
\`component\`, \`database\`, \`object_storage\`, \`queue\`, \`device\`, \`api\`,
|
|
199
|
+
\`cloud_service\`, \`browser_app\`, \`mobile_app\`, \`backend_service\`, \`job\`,
|
|
200
|
+
\`unknown\`.
|
|
201
|
+
Types include \`[Person]\`, \`[Software System]\`, \`[External System]\`,
|
|
202
|
+
\`[Container]\`, \`[Component]\`, \`[Database]\`, \`[Device]\`.
|
|
193
203
|
Keep descriptions to 1–2 short lines.
|
|
194
204
|
|
|
195
205
|
## Coordinate system (when positions are provided)
|
|
@@ -273,6 +283,7 @@ full template):
|
|
|
273
283
|
// ── Tool definitions ──────────────────────────────────────────────────────────
|
|
274
284
|
const SHAPE_LIST = 'box, actor (person), database, ellipse, circle, post-it, text-free, image, anchor (invisible endpoint for free-end arrows — screen-guide only)';
|
|
275
285
|
const COLOR_LIST = 'c-blue, c-green, c-gray, c-teal, c-amber, c-orange, c-rose, c-purple, c-cyan, c-indigo, c-pink, c-lime, c-red, c-sky, c-slate (short aliases like "blue", "teal" also work)';
|
|
286
|
+
const KIND_LIST = 'person, software_system, external_system, container, component, database, object_storage, queue, device, api, cloud_service, browser_app, mobile_app, backend_service, job, unknown';
|
|
276
287
|
const GUIDE_HINT = 'If unsure of the workflow, call `get_server_guide` first.';
|
|
277
288
|
const CREATE_DIAGRAM_DESCRIPTION = [
|
|
278
289
|
'Create or overwrite a diagram from a high-level description.',
|
|
@@ -294,10 +305,17 @@ const CREATE_DIAGRAM_DESCRIPTION = [
|
|
|
294
305
|
'',
|
|
295
306
|
'## Source-of-truth contract',
|
|
296
307
|
'Documents are authoritative. A diagram must not contain information absent from the documents. If a diagram needs a concept that isn\'t documented, create or update the document first (via `create_document`).',
|
|
308
|
+
'Use `evidence` on nodes and edges to cite the document sections that justify what is drawn. Evidence must come from Markdown documents read or created through the documentation tools, not from source-code tools. If the required document does not exist, create it first.',
|
|
297
309
|
'',
|
|
298
310
|
'## Positioning',
|
|
299
311
|
'`x` and `y` are **optional**. Omit them and the editor auto-lays out nodes. Provide coordinates only when a fixed layout is required (e.g., following a C4 convention). When provided: origin `(0,0)` is the canvas center, `+x` = right, `+y` = down; use multiples of 40.',
|
|
300
312
|
'',
|
|
313
|
+
'## MCP default styling',
|
|
314
|
+
'Diagrams created through this tool default to `edgesStraight: false`, `gridEnabled: false`, and `alignGuides: true`.',
|
|
315
|
+
'`kind` describes the architectural concept; `renderAs` describes the visual shape. When `kind` is present and `renderAs` is absent, the MCP chooses the default shape and color for that kind and builds a C4 label from `name`, `[Kind]`, and optional `description`. Legacy `type` remains supported as the visual shape when `kind` is absent.',
|
|
316
|
+
'Edges default to curved port-anchored arrows with `arrowDir: "to"`, `dashes: false`, label offsets at `0`, and automatic `fromPort`/`toPort` inferred from node positions. Label width and font size are estimated from label length unless explicitly supplied.',
|
|
317
|
+
'Use `arrowDir: "both"` when a single relation represents a bidirectional exchange.',
|
|
318
|
+
'',
|
|
301
319
|
'## Guardrails (enforced)',
|
|
302
320
|
'- `diagramType` is required.',
|
|
303
321
|
'- For `container`, `component`, or `uml`, `userRequestedExplicitly: true` is required — confirms the user asked for that type by name. Otherwise the call is rejected.',
|
|
@@ -323,6 +341,7 @@ const CREATE_DIAGRAM_DESCRIPTION = [
|
|
|
323
341
|
`## Available shapes and colors`,
|
|
324
342
|
`Shapes: ${SHAPE_LIST}.`,
|
|
325
343
|
`Colors: ${COLOR_LIST}.`,
|
|
344
|
+
`Kinds: ${KIND_LIST}.`,
|
|
326
345
|
'',
|
|
327
346
|
GUIDE_HINT,
|
|
328
347
|
].join('\n');
|
|
@@ -464,25 +483,50 @@ const TOOLS = [
|
|
|
464
483
|
type: 'boolean',
|
|
465
484
|
description: 'Set to true only when the user explicitly asked for a container, component, UML, or screen-guide diagram by name. Required for those diagramType values; ignored for "context".',
|
|
466
485
|
},
|
|
486
|
+
edgesStraight: { type: 'boolean', description: 'Optional diagram-level style. Defaults to false for MCP-created diagrams.' },
|
|
487
|
+
gridEnabled: { type: 'boolean', description: 'Optional diagram-level style. Defaults to false for MCP-created diagrams.' },
|
|
488
|
+
alignGuides: { type: 'boolean', description: 'Optional diagram-level style. Defaults to true for MCP-created diagrams.' },
|
|
467
489
|
nodes: {
|
|
468
490
|
type: 'array',
|
|
469
491
|
description: 'List of nodes. Node labels should follow the C4 convention: "Name\\n[Type]\\nShort description".',
|
|
470
492
|
items: {
|
|
471
493
|
type: 'object',
|
|
472
494
|
properties: {
|
|
473
|
-
name: { type: 'string', description: 'Node label shown in the diagram.
|
|
474
|
-
|
|
495
|
+
name: { type: 'string', description: 'Node label shown in the diagram. With `kind`, pass the display name only and optional `description`; without `kind`, use \\n for C4 labels. Empty string allowed for zone overlays, anchors, and the image background.' },
|
|
496
|
+
kind: { type: 'string', enum: KIND_LIST.split(', '), description: 'Optional architectural concept. When present, the MCP builds a C4 label and chooses default renderAs/color unless overridden.' },
|
|
497
|
+
renderAs: { type: 'string', description: `Optional visual shape override used with kind. Available: ${SHAPE_LIST}.` },
|
|
498
|
+
description: { type: 'string', description: 'Optional architectural description appended as the third C4 label line when kind is present and name is not already a multiline label.' },
|
|
499
|
+
type: { type: 'string', description: `Legacy visual shape. Still supported when kind is absent. Available: ${SHAPE_LIST}.` },
|
|
475
500
|
color: { type: 'string', description: `Color key, e.g. c-blue or "blue". Available: ${COLOR_LIST}.` },
|
|
476
501
|
x: { type: 'number', description: 'Optional canvas X (0 = center). Omit to auto-lay out. When provided, use multiples of 40 (screen-guide exception: pixel-aligned).' },
|
|
477
502
|
y: { type: 'number', description: 'Optional canvas Y (0 = center, positive = down). Omit to auto-lay out. When provided, use multiples of 40 (screen-guide exception: pixel-aligned).' },
|
|
478
503
|
width: { type: 'number', description: 'Optional explicit node width in pixels. Required for image backgrounds and zone overlays in screen-guide diagrams. Otherwise estimated from the label.' },
|
|
479
504
|
height: { type: 'number', description: 'Optional explicit node height in pixels. Required for image backgrounds and zone overlays in screen-guide diagrams. Otherwise estimated from the label.' },
|
|
505
|
+
fontSize: { type: ['number', 'null'], description: 'Optional node label font size. Defaults to null so the editor uses its shape default.' },
|
|
506
|
+
textAlign: { type: ['string', 'null'], description: 'Optional node text horizontal alignment. Defaults to null.' },
|
|
507
|
+
textValign: { type: ['string', 'null'], description: 'Optional node text vertical alignment. Defaults to null.' },
|
|
480
508
|
bgOpacity: { type: 'number', description: 'Optional background opacity (0–1). Use 0.15–0.20 for translucent zone-overlay boxes in screen-guide diagrams.' },
|
|
509
|
+
rotation: { type: ['number', 'null'], description: 'Optional node shape rotation in radians. Defaults to 0.' },
|
|
510
|
+
labelRotation: { type: ['number', 'null'], description: 'Optional node label rotation in radians. Defaults to 0.' },
|
|
481
511
|
locked: { type: 'boolean', description: 'Optional: lock the node so it cannot be moved or resized by accident. Recommended for screen-guide backgrounds and zone overlays.' },
|
|
482
512
|
linkedDiagramId: { type: 'string', description: 'Optional: id of another diagram to navigate to when clicking this node (C4 drill-down).' },
|
|
513
|
+
groupId: { type: ['string', 'null'], description: 'Optional editor group id. Defaults to null.' },
|
|
483
514
|
imageSrc: { type: 'string', description: 'Required when `type` is "image". URL path returned by POST /api/images/upload (e.g. "/images/foo.png").' },
|
|
515
|
+
evidence: {
|
|
516
|
+
type: 'array',
|
|
517
|
+
description: 'Optional documentary provenance for this node. Cite only Markdown documents from list_documents/read_document/create_document, not source files.',
|
|
518
|
+
items: {
|
|
519
|
+
type: 'object',
|
|
520
|
+
properties: {
|
|
521
|
+
documentId: { type: 'string', description: 'Document id as returned by list_documents or create_document.' },
|
|
522
|
+
section: { type: ['string', 'null'], description: 'Optional section heading inside the document.' },
|
|
523
|
+
summary: { type: ['string', 'null'], description: 'Short paraphrase of the documentary fact that justifies this node.' },
|
|
524
|
+
},
|
|
525
|
+
required: ['documentId'],
|
|
526
|
+
},
|
|
527
|
+
},
|
|
484
528
|
},
|
|
485
|
-
required: ['name'
|
|
529
|
+
required: ['name'],
|
|
486
530
|
},
|
|
487
531
|
},
|
|
488
532
|
edges: {
|
|
@@ -494,6 +538,31 @@ const TOOLS = [
|
|
|
494
538
|
from: { type: 'string', description: 'Name of the source node (must match a node `name` exactly).' },
|
|
495
539
|
to: { type: 'string', description: 'Name of the target node (must match a node `name` exactly). Optional for screen-guide diagrams — omit to render a free-end arrow the user can drag.' },
|
|
496
540
|
label: { type: 'string', description: 'Edge label — verb phrase describing the interaction. Strongly recommended; missing labels produce warnings (except for screen-guide).' },
|
|
541
|
+
arrowDir: { type: 'string', enum: ['to', 'both', 'none'], description: 'Optional arrow direction. Defaults to "to"; use "both" for one bidirectional exchange edge.' },
|
|
542
|
+
dashes: { type: 'boolean', description: 'Optional dashed-line flag. Defaults to false.' },
|
|
543
|
+
fontSize: { type: ['number', 'null'], description: 'Optional edge-label font size. Defaults to 12, or 11 for labels longer than 36 characters.' },
|
|
544
|
+
labelRotation: { type: ['number', 'null'], description: 'Optional edge-label rotation in radians. Defaults to 0.' },
|
|
545
|
+
edgeLabelOffsetX: { type: ['number', 'null'], description: 'Optional edge-label X offset. Defaults to 0.' },
|
|
546
|
+
edgeLabelOffsetY: { type: ['number', 'null'], description: 'Optional edge-label Y offset. Defaults to 0.' },
|
|
547
|
+
fromPort: { type: ['string', 'null'], enum: ['N', 'NE', 'E', 'SE', 'S', 'SW', 'W', 'NW', null], description: 'Optional source attachment port. Defaults from relative node positions.' },
|
|
548
|
+
toPort: { type: ['string', 'null'], enum: ['N', 'NE', 'E', 'SE', 'S', 'SW', 'W', 'NW', null], description: 'Optional target attachment port. Defaults from relative node positions.' },
|
|
549
|
+
edgeColor: { type: ['string', 'null'], description: 'Optional custom edge color. Defaults to null.' },
|
|
550
|
+
edgeWidth: { type: ['number', 'null'], description: 'Optional custom edge width. Defaults to null.' },
|
|
551
|
+
edgeLocked: { type: 'boolean', description: 'Optional lock flag for the edge. Defaults to false.' },
|
|
552
|
+
edgeLabelWidth: { type: ['number', 'null'], description: 'Optional fixed edge-label wrapping width. Defaults to 80/95/105 depending on label length.' },
|
|
553
|
+
evidence: {
|
|
554
|
+
type: 'array',
|
|
555
|
+
description: 'Optional documentary provenance for this relation. Cite only Markdown documents from list_documents/read_document/create_document, not source files.',
|
|
556
|
+
items: {
|
|
557
|
+
type: 'object',
|
|
558
|
+
properties: {
|
|
559
|
+
documentId: { type: 'string', description: 'Document id as returned by list_documents or create_document.' },
|
|
560
|
+
section: { type: ['string', 'null'], description: 'Optional section heading inside the document.' },
|
|
561
|
+
summary: { type: ['string', 'null'], description: 'Short paraphrase of the documentary fact that justifies this relation.' },
|
|
562
|
+
},
|
|
563
|
+
required: ['documentId'],
|
|
564
|
+
},
|
|
565
|
+
},
|
|
497
566
|
},
|
|
498
567
|
required: ['from'],
|
|
499
568
|
},
|
|
@@ -721,10 +790,19 @@ Living Documentation is a tool where knowledge lives primarily in Markdown docum
|
|
|
721
790
|
3. **Ignore any document whose frontmatter contains \`status: SuperSeeded\`** — it is deprecated and must not be used as a source of truth.
|
|
722
791
|
4. Read the frontmatter (\`description\` and \`tags\` fields) of each relevant document with \`read_document\` to find answers to the diagram-specific questions below.
|
|
723
792
|
5. Only ask the user for information that cannot be found in any active (non-superseded) document.
|
|
793
|
+
6. Every architectural node or relation should include \`evidence\` entries that cite the Markdown documents and sections that justify it. Evidence must come from documents, not from source code. If the required document does not exist, create it first.
|
|
794
|
+
|
|
795
|
+
## Node semantics and label format — mandatory
|
|
724
796
|
|
|
725
|
-
|
|
797
|
+
Prefer structured node semantics when calling \`create_diagram\`: pass \`kind\`
|
|
798
|
+
(\`person\`, \`software_system\`, \`external_system\`, \`container\`, \`component\`,
|
|
799
|
+
\`database\`, \`object_storage\`, \`queue\`, \`device\`, \`api\`, \`cloud_service\`,
|
|
800
|
+
\`browser_app\`, \`mobile_app\`, \`backend_service\`, \`job\`, \`unknown\`) plus optional
|
|
801
|
+
\`description\`. The MCP will build the Simon Brown C4 label and choose the
|
|
802
|
+
default visual shape/color. Use \`renderAs\` only when the default visual shape
|
|
803
|
+
should be overridden.
|
|
726
804
|
|
|
727
|
-
|
|
805
|
+
If you do not use \`kind\`, every node label must follow the C4 convention using \\n for line breaks:
|
|
728
806
|
|
|
729
807
|
\`\`\`
|
|
730
808
|
Name\\n[Type]\\nShort description of role or responsibility
|
|
@@ -735,7 +813,7 @@ Examples:
|
|
|
735
813
|
- \`"Advertiser\\n[Person]\\nUploads media and\\npays for campaigns"\`
|
|
736
814
|
- \`"Stripe\\n[External System]\\nCard payment and\\npre-authorization"\`
|
|
737
815
|
|
|
738
|
-
Types to use: \`[Person]\`, \`[Software System]\`, \`[External System]\`, \`[Database]\`, \`[Device]\`
|
|
816
|
+
Types to use include: \`[Person]\`, \`[Software System]\`, \`[External System]\`, \`[Container]\`, \`[Component]\`, \`[Database]\`, \`[Device]\`
|
|
739
817
|
Keep descriptions short — 1 to 2 lines maximum.
|
|
740
818
|
|
|
741
819
|
## C4 progression — mandatory ordering
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.js","sourceRoot":"","sources":["../../../src/mcp/server.ts"],"names":[],"mappings":";;AA84CA,8BA4BC;AA16CD,wEAAmE;AACnE,0FAAmG;AACnG,iEAK4C;AAC5C,qCAAoD;AACpD,iDAAgH;AAChH,+CAAwF;AACxF,2CAA2F;AAC3F,+CAA+J;AAE/J,iFAAiF;AACjF,sEAAsE;AACtE,6EAA6E;AAC7E,qCAAqC;AACrC,MAAM,YAAY,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAgQpB,CAAC;AAEF,iFAAiF;AAEjF,MAAM,UAAU,GAAI,gJAAgJ,CAAC;AACrK,MAAM,UAAU,GAAI,6KAA6K,CAAC;AAClM,MAAM,UAAU,GAAI,2DAA2D,CAAC;AAEhF,MAAM,0BAA0B,GAAG;IACjC,8DAA8D;IAC9D,EAAE;IACF,uDAAuD;IACvD,wCAAwC;IACxC,0DAA0D;IAC1D,+GAA+G;IAC/G,4EAA4E;IAC5E,EAAE;IACF,eAAe;IACf,0QAA0Q;IAC1Q,EAAE;IACF,gCAAgC;IAChC,0KAA0K;IAC1K,kGAAkG;IAClG,sFAAsF;IACtF,sIAAsI;IACtI,EAAE;IACF,6BAA6B;IAC7B,kNAAkN;IAClN,EAAE;IACF,gBAAgB;IAChB,6QAA6Q;IAC7Q,EAAE;IACF,0BAA0B;IAC1B,8BAA8B;IAC9B,wKAAwK;IACxK,wEAAwE;IACxE,EAAE;IACF,0DAA0D;IAC1D,SAAS;IACT,GAAG;IACH,6BAA6B;IAC7B,qDAAqD;IACrD,cAAc;IACd,wIAAwI;IACxI,wIAAwI;IACxI,wIAAwI;IACxI,MAAM;IACN,cAAc;IACd,iOAAiO;IACjO,2NAA2N;IAC3N,KAAK;IACL,GAAG;IACH,KAAK;IACL,EAAE;IACF,gCAAgC;IAChC,WAAW,UAAU,GAAG;IACxB,WAAW,UAAU,GAAG;IACxB,EAAE;IACF,UAAU;CACX,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAEb,MAAM,2BAA2B,GAAG;IAClC,wcAAwc;IACxc,EAAE;IACF,4DAA4D;IAC5D,6NAA6N;IAC7N,EAAE;IACF,2OAA2O;IAC3O,mEAAmE;IACnE,mJAAmJ;IACnJ,EAAE;IACF,8BAA8B;IAC9B,wFAAwF;IACxF,EAAE;IACF,KAAK;IACL,KAAK;IACL,sBAAsB;IACtB,6BAA6B;IAC7B,mFAAmF;IACnF,kFAAkF;IAClF,KAAK;IACL,KAAK;IACL,EAAE;IACF,mNAAmN;IACnN,sFAAsF;IACtF,uDAAuD;IACvD,6HAA6H;IAC7H,8DAA8D;IAC9D,EAAE;IACF,uBAAuB;IACvB,SAAS;IACT,GAAG;IACH,6CAA6C;IAC7C,iCAAiC;IACjC,uBAAuB;IACvB,8XAA8X;IAC9X,GAAG;IACH,KAAK;IACL,EAAE;IACF,6BAA6B;IAC7B,iMAAiM;IACjM,EAAE;IACF,UAAU;CACX,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAEb,MAAM,KAAK,GAAG;IACZ;QACE,IAAI,EAAE,kBAAkB;QACxB,WAAW,EAAE,iPAAiP;QAC9P,WAAW,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,EAAE,EAAE;KAChD;IACD;QACE,IAAI,EAAE,gBAAgB;QACtB,WAAW,EAAE,oRAAoR,UAAU,EAAE;QAC7S,WAAW,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,EAAE,EAAE;KAChD;IACD;QACE,IAAI,EAAE,eAAe;QACrB,WAAW,EAAE,4MAA4M,UAAU,EAAE;QACrO,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,2CAA2C,EAAE;aACjF;YACD,QAAQ,EAAE,CAAC,IAAI,CAAC;SACjB;KACF;IACD;QACE,IAAI,EAAE,iBAAiB;QACvB,WAAW,EAAE;YACX,2SAA2S;YAC3S,EAAE;YACF,aAAa;YACb,sDAAsD;YACtD,+FAA+F;YAC/F,2HAA2H;YAC3H,iHAAiH;YACjH,EAAE;YACF,2NAA2N;YAC3N,EAAE;YACF,mCAAmC;YACnC,EAAE;YACF,UAAU;SACX,CAAC,IAAI,CAAC,IAAI,CAAC;QACZ,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,EAAE,EAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,2CAA2C,EAAE;gBACrF,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,mHAAmH,EAAE;aAC9J;YACD,QAAQ,EAAE,CAAC,IAAI,EAAE,SAAS,CAAC;SAC5B;KACF;IACD;QACE,IAAI,EAAE,iBAAiB;QACvB,WAAW,EAAE,2BAA2B;QACxC,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,KAAK,EAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,+BAA+B,EAAE;gBAC1E,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,oEAAoE,EAAE;gBAC/G,MAAM,EAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,6EAA6E,EAAE;gBACxH,OAAO,EAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,0DAA0D,EAAE;aACtG;YACD,QAAQ,EAAE,CAAC,OAAO,EAAE,UAAU,CAAC;SAChC;KACF;IACD;QACE,IAAI,EAAE,eAAe;QACrB,WAAW,EAAE,+MAA+M,UAAU,EAAE;QACxO,WAAW,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,EAAE,EAAE;KAChD;IACD;QACE,IAAI,EAAE,cAAc;QACpB,WAAW,EAAE,2KAA2K,UAAU,EAAE;QACpM,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,yCAAyC,EAAE;aAC/E;YACD,QAAQ,EAAE,CAAC,IAAI,CAAC;SACjB;KACF;IACD;QACE,IAAI,EAAE,gBAAgB;QACtB,WAAW,EAAE,0BAA0B;QACvC,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,EAAE,EAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,mFAAmF,EAAE;gBAC3H,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,eAAe,EAAE;gBACvD,WAAW,EAAE;oBACX,IAAI,EAAE,QAAQ;oBACd,IAAI,EAAE,CAAC,SAAS,EAAE,WAAW,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,cAAc,EAAE,OAAO,CAAC;oBAC1F,WAAW,EAAE,oLAAoL;iBAClM;gBACD,uBAAuB,EAAE;oBACvB,IAAI,EAAE,SAAS;oBACf,WAAW,EAAE,iLAAiL;iBAC/L;gBACD,KAAK,EAAE;oBACL,IAAI,EAAE,OAAO;oBACb,WAAW,EAAE,kGAAkG;oBAC/G,KAAK,EAAE;wBACL,IAAI,EAAE,QAAQ;wBACd,UAAU,EAAE;4BACV,IAAI,EAAa,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,gLAAgL,EAAE;4BAClO,IAAI,EAAa,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,eAAe,UAAU,GAAG,EAAE;4BAC9E,KAAK,EAAY,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,gDAAgD,UAAU,GAAG,EAAE;4BAC/G,CAAC,EAAgB,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,mIAAmI,EAAE;4BACrL,CAAC,EAAgB,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,oJAAoJ,EAAE;4BACtM,KAAK,EAAY,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,wJAAwJ,EAAE;4BAC1M,MAAM,EAAW,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,yJAAyJ,EAAE;4BAC3M,SAAS,EAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,+GAA+G,EAAE;4BACjK,MAAM,EAAW,EAAE,IAAI,EAAE,SAAS,EAAE,WAAW,EAAE,mIAAmI,EAAE;4BACtL,eAAe,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,yFAAyF,EAAE;4BAC3I,QAAQ,EAAS,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,yGAAyG,EAAE;yBAC5J;wBACD,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC;qBAC3B;iBACF;gBACD,KAAK,EAAE;oBACL,IAAI,EAAE,OAAO;oBACb,WAAW,EAAE,mKAAmK;oBAChL,KAAK,EAAE;wBACL,IAAI,EAAE,QAAQ;wBACd,UAAU,EAAE;4BACV,IAAI,EAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,6DAA6D,EAAE;4BACrG,EAAE,EAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,qJAAqJ,EAAE;4BAC7L,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,uIAAuI,EAAE;yBAChL;wBACD,QAAQ,EAAE,CAAC,MAAM,CAAC;qBACnB;iBACF;aACF;YACD,QAAQ,EAAE,CAAC,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,OAAO,CAAC;SACrD;KACF;IACD;QACE,IAAI,EAAE,mBAAmB;QACzB,WAAW,EAAE;YACX,oIAAoI;YACpI,EAAE;YACF,kRAAkR;YAClR,EAAE;YACF,6GAA6G;SAC9G,CAAC,IAAI,CAAC,IAAI,CAAC;QACZ,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,OAAO,EAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,mJAAmJ,EAAE;gBAChM,UAAU,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,6DAA6D,EAAE;aAC3G;SACF;KACF;IACD;QACE,IAAI,EAAE,kBAAkB;QACxB,WAAW,EAAE;YACX,2FAA2F;YAC3F,EAAE;YACF,8PAA8P;YAC9P,EAAE;YACF,4FAA4F;SAC7F,CAAC,IAAI,CAAC,IAAI,CAAC;QACZ,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,gEAAgE,EAAE;aACxG;YACD,QAAQ,EAAE,CAAC,MAAM,CAAC;SACnB;KACF;IACD;QACE,IAAI,EAAE,eAAe;QACrB,WAAW,EAAE;YACX,6MAA6M;YAC7M,EAAE;YACF,wIAAwI;SACzI,CAAC,IAAI,CAAC,IAAI,CAAC;QACZ,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,2CAA2C,EAAE;aACjF;YACD,QAAQ,EAAE,CAAC,IAAI,CAAC;SACjB;KACF;IACD;QACE,IAAI,EAAE,cAAc;QACpB,WAAW,EAAE;YACX,mJAAmJ;YACnJ,EAAE;YACF,4JAA4J;YAC5J,EAAE;YACF,uLAAuL;SACxL,CAAC,IAAI,CAAC,IAAI,CAAC;QACZ,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,aAAa,EAAE;aACnD;YACD,QAAQ,EAAE,CAAC,IAAI,CAAC;SACjB;KACF;IACD;QACE,IAAI,EAAE,kBAAkB;QACxB,WAAW,EAAE;YACX,oPAAoP;YACpP,EAAE;YACF,qEAAqE;SACtE,CAAC,IAAI,CAAC,IAAI,CAAC;QACZ,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,aAAa,EAAE;aACnD;YACD,QAAQ,EAAE,CAAC,IAAI,CAAC;SACjB;KACF;IACD;QACE,IAAI,EAAE,cAAc;QACpB,WAAW,EAAE;YACX,yKAAyK;YACzK,EAAE;YACF,0EAA0E;YAC1E,EAAE;YACF,uDAAuD;YACvD,yNAAyN;YACzN,EAAE;YACF,4CAA4C;YAC5C,oKAAoK;YACpK,EAAE;YACF,yJAAyJ;YACzJ,6MAA6M;YAC7M,8KAA8K;YAC9K,0EAA0E;YAC1E,EAAE;YACF,mJAAmJ;YACnJ,EAAE;YACF,mGAAmG;SACpG,CAAC,IAAI,CAAC,IAAI,CAAC;QACZ,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,EAAE,EAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,aAAa,EAAE;gBACpD,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,mFAAmF,EAAE;aAC3H;YACD,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC;SACzB;KACF;IACD;QACE,IAAI,EAAE,iBAAiB;QACvB,WAAW,EAAE,2UAA2U;QACxV,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,EAAE,EAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,aAAa,EAAE;gBACpD,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,mFAAmF,EAAE;aAC3H;YACD,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC;SACzB;KACF;IACD;QACE,IAAI,EAAE,+BAA+B;QACrC,WAAW,EAAE,oVAAoV;QACjW,WAAW,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,EAAE,EAAE;KAChD;IACD;QACE,IAAI,EAAE,eAAe;QACrB,WAAW,EAAE;YACX,oEAAoE;YACpE,EAAE;YACF,yIAAyI;SAC1I,CAAC,IAAI,CAAC,IAAI,CAAC;QACZ,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,KAAK,EAAU,EAAE,IAAI,EAAE,QAAQ,EAAG,WAAW,EAAE,6CAA6C,EAAE;gBAC9F,OAAO,EAAQ,EAAE,IAAI,EAAE,QAAQ,EAAG,WAAW,EAAE,4DAA4D,EAAE;gBAC7G,aAAa,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,WAAW,EAAE,gBAAgB,EAAE;gBACjE,UAAU,EAAK,EAAE,IAAI,EAAE,QAAQ,EAAG,WAAW,EAAE,+DAA+D,EAAE;aACjH;YACD,QAAQ,EAAE,CAAC,OAAO,CAAC;SACpB;KACF;CACO,CAAC;AAEX,kFAAkF;AAClF,2EAA2E;AAC3E,+EAA+E;AAC/E,sCAAsC;AAEtC,MAAM,OAAO,GAAG;IACd;QACE,IAAI,EAAE,iBAAiB;QACvB,WAAW,EAAE,idAAid;KAC/d;IACD;QACE,IAAI,EAAE,YAAY;QAClB,WAAW,EAAE,+aAA+a;QAC5b,SAAS,EAAE;YACT,EAAE,IAAI,EAAE,gBAAgB,EAAE,WAAW,EAAE,uHAAuH,EAAE,QAAQ,EAAE,KAAK,EAAE;YACjL,EAAE,IAAI,EAAE,eAAe,EAAG,WAAW,EAAE,2MAA2M,EAAE,QAAQ,EAAE,KAAK,EAAE;SACtQ;KACF;IACD;QACE,IAAI,EAAE,0BAA0B;QAChC,WAAW,EAAE,kNAAkN;QAC/N,SAAS,EAAE;YACT,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,uFAAuF,EAAE,QAAQ,EAAE,KAAK,EAAE;SACzI;KACF;IACD;QACE,IAAI,EAAE,4BAA4B;QAClC,WAAW,EAAE,oKAAoK;KAClL;IACD;QACE,IAAI,EAAE,sBAAsB;QAC5B,WAAW,EAAE,oHAAoH;QACjI,SAAS,EAAE;YACT,EAAE,IAAI,EAAE,SAAS,EAAE,WAAW,EAAE,6DAA6D,EAAE,QAAQ,EAAE,IAAI,EAAE;SAChH;KACF;IACD;QACE,IAAI,EAAE,0BAA0B;QAChC,WAAW,EAAE,yKAAyK;QACtL,SAAS,EAAE;YACT,EAAE,IAAI,EAAE,WAAW,EAAE,WAAW,EAAE,qFAAqF,EAAE,QAAQ,EAAE,KAAK,EAAE;SAC3I;KACF;IACD;QACE,IAAI,EAAE,uBAAuB;QAC7B,WAAW,EAAE,oSAAoS;QACjT,SAAS,EAAE;YACT,EAAE,IAAI,EAAE,YAAY,EAAK,WAAW,EAAE,yGAAyG,EAAE,QAAQ,EAAE,IAAI,EAAE;YACjK,EAAE,IAAI,EAAE,eAAe,EAAE,WAAW,EAAE,+JAA+J,EAAE,QAAQ,EAAE,KAAK,EAAE;SACzN;KACF;IACD;QACE,IAAI,EAAE,MAAM;QACZ,WAAW,EAAE,mEAAmE;KACjF;IACD;QACE,IAAI,EAAE,KAAK;QACX,WAAW,EAAE,kFAAkF;KAChG;CACO,CAAC;AAIX,gFAAgF;AAChF,MAAM,QAAQ,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAuDhB,CAAC,IAAI,EAAE,CAAC;AAET,SAAS,mBAAmB,CAAC,IAAgB,EAAE,IAA4B;IACzE,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,iBAAiB;YACpB,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAyDZ,CAAC,IAAI,EAAE,CAAC;QAEL,KAAK,YAAY,CAAC,CAAC,CAAC;YAClB,MAAM,KAAK,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACpD,MAAM,WAAW,GAAG,IAAI,CAAC,cAAc;gBACrC,CAAC,CAAC,yCAAyC,IAAI,CAAC,cAAc,KAAK;gBACnE,CAAC,CAAC,0GAA0G,CAAC;YAC/G,MAAM,SAAS,GAAG,IAAI,CAAC,aAAa;gBAClC,CAAC,CAAC,iDAAiD,IAAI,CAAC,aAAa,kDAAkD;gBACvH,CAAC,CAAC,iJAAiJ,CAAC;YACtJ,OAAO;;;EAGX,WAAW;;;;;;;;;;;;;;;;;;;YAmBD,KAAK;;;;;;;;;;;;;;;;;;;;;;;EAuBf,SAAS;;;;;;;;;;;;;;;CAeV,CAAC,IAAI,EAAE,CAAC;QACL,CAAC;QAED,KAAK,0BAA0B;YAC7B,OAAO;EACX,QAAQ;;;;;;;;+DAQqD,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,2BAA2B,IAAI,CAAC,KAAK,MAAM,CAAC,CAAC,CAAC,+CAA+C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA6BxK,CAAC,IAAI,EAAE,CAAC;QAEL,KAAK,4BAA4B;YAC/B,OAAO;EACX,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA0CT,CAAC,IAAI,EAAE,CAAC;QAEL,KAAK,sBAAsB,CAAC,CAAC,CAAC;YAC5B,MAAM,OAAO,GAAG,CAAC,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,IAAI,OAAO,CAAC;YACrE,OAAO;EACX,QAAQ;;;;kCAIwB,OAAO;;;;;;;yCAOA,OAAO;;4BAEpB,OAAO;;EAEjC,eAAe,CAAC,OAAO,CAAC;;;;;;;;CAQzB,CAAC,IAAI,EAAE,CAAC;QACL,CAAC;QAED,KAAK,0BAA0B;YAC7B,OAAO;EACX,QAAQ;;;;4BAIkB,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,aAAa,IAAI,CAAC,SAAS,IAAI,CAAC,CAAC,CAAC,uBAAuB;;;;EAIpG,IAAI,CAAC,SAAS;gBACd,CAAC,CAAC,sCAAsC,IAAI,CAAC,SAAS,yCAAyC;gBAC/F,CAAC,CAAC;gFAC4E;;;;;;;;;;;;;;;;;;;;;;;;;;;CA2B/E,CAAC,IAAI,EAAE,CAAC;QAEL,KAAK,MAAM;YACT,OAAO;EACX,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA4BT,CAAC,IAAI,EAAE,CAAC;QAEL,KAAK,KAAK;YACR,OAAO;EACX,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAiCT,CAAC,IAAI,EAAE,CAAC;QAEL,KAAK,uBAAuB,CAAC,CAAC,CAAC;YAC7B,MAAM,UAAU,GAAG,CAAC,IAAI,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;YAClD,MAAM,aAAa,GAAG,CAAC,IAAI,CAAC,aAAa,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;YACxD,OAAO;;;;;;;;;;;;;;;;;EAiBX,UAAU;gBACV,CAAC,CAAC,wBAAwB,UAAU,+CAA+C,UAAU,MAAM;gBACnG,CAAC,CAAC,iHAAiH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA0DnH,aAAa;gBACb,CAAC,CAAC,gCAAgC,aAAa,qEAAqE;gBACpH,CAAC,CAAC,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAsEL,CAAC,IAAI,EAAE,CAAC;QACL,CAAC;IACH,CAAC;AACH,CAAC;AAED,SAAS,eAAe,CAAC,OAAe;IACtC,QAAQ,OAAO,EAAE,CAAC;QAChB,KAAK,OAAO;YACV,OAAO;;;mFAGsE,CAAC;QAChF,KAAK,UAAU;YACb,OAAO;;;sIAGyH,CAAC;QACnI,KAAK,OAAO;YACV,OAAO;;;uDAG0C,CAAC;QACpD,KAAK,UAAU;YACb,OAAO;;;;0CAI6B,CAAC;QACvC,KAAK,UAAU,CAAC;QAChB,KAAK,SAAS;YACZ,OAAO;;;;6FAIgF,CAAC;QAC1F;YACE,OAAO,WAAW,OAAO,uDAAuD,OAAO,wHAAwH,CAAC;IACpN,CAAC;AACH,CAAC;AAED,SAAS,eAAe,CAAC,QAAgB;IACvC,MAAM,MAAM,GAAG,IAAI,iBAAM,CACvB,EAAE,IAAI,EAAE,sBAAsB,EAAE,OAAO,EAAE,OAAO,EAAE,EAClD;QACE,YAAY,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE;QACxC,YAAY,EAAE,YAAY;KAC3B,CACF,CAAC;IAEF,MAAM,CAAC,iBAAiB,CAAC,iCAAsB,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;IAEjF,MAAM,CAAC,iBAAiB,CAAC,mCAAwB,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC;IAEvF,MAAM,CAAC,iBAAiB,CAAC,iCAAsB,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;QACjE,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,IAAkB,CAAC;QAC/C,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;QAClD,IAAI,CAAC,MAAM;YAAE,MAAM,IAAI,KAAK,CAAC,mBAAmB,IAAI,EAAE,CAAC,CAAC;QACxD,MAAM,IAAI,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,IAAI,EAAE,CAA2B,CAAC;QACxE,MAAM,IAAI,GAAG,mBAAmB,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAC7C,OAAO;YACL,WAAW,EAAE,MAAM,CAAC,WAAW;YAC/B,QAAQ,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,EAAE,CAAC;SAChF,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,MAAM,CAAC,iBAAiB,CAAC,gCAAqB,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;QAChE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,GAAG,EAAE,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC;QACtD,IAAI,CAAC;YACH,QAAQ,IAAI,EAAE,CAAC;gBACb,KAAK,kBAAkB;oBACrB,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC,EAAE,CAAC;gBACtE,KAAK,gBAAgB;oBACnB,OAAO,IAAA,6BAAiB,EAAC,QAAQ,CAAC,CAAC;gBACrC,KAAK,eAAe;oBAClB,OAAO,IAAA,4BAAgB,EAAC,QAAQ,EAAE,IAAsB,CAAC,CAAC;gBAC5D,KAAK,iBAAiB;oBACpB,OAAO,IAAA,8BAAkB,EAAC,QAAQ,EAAE,IAEnC,CAAC,CAAC;gBACL,KAAK,iBAAiB;oBACpB,OAAO,IAAA,8BAAkB,EAAC,QAAQ,EAAE,IAAuC,CAAC,CAAC;gBAC/E,KAAK,eAAe;oBAClB,OAAO,IAAA,2BAAgB,EAAC,QAAQ,CAAC,CAAC;gBACpC,KAAK,cAAc;oBACjB,OAAO,IAAA,0BAAe,EAAC,QAAQ,EAAE,IAAsB,CAAC,CAAC;gBAC3D,KAAK,gBAAgB;oBACnB,OAAO,IAAA,4BAAiB,EAAC,QAAQ,EAAE,IAOlC,CAAC,CAAC;gBACL,KAAK,mBAAmB;oBACtB,OAAO,IAAA,4BAAmB,EAAC,QAAQ,EAAE,IAAiD,CAAC,CAAC;gBAC1F,KAAK,kBAAkB;oBACrB,OAAO,IAAA,2BAAkB,EAAC,QAAQ,EAAE,IAAwB,CAAC,CAAC;gBAChE,KAAK,eAAe;oBAClB,OAAO,IAAA,yBAAgB,EAAC,QAAQ,EAAE,IAEjC,CAAC,CAAC;gBACL,KAAK,eAAe;oBAClB,OAAO,IAAA,2BAAgB,EAAC,QAAQ,EAAE,IAAsB,CAAC,CAAC;gBAC5D,KAAK,cAAc;oBACjB,OAAO,IAAA,0BAAe,EAAC,QAAQ,EAAE,IAAsB,CAAC,CAAC;gBAC3D,KAAK,kBAAkB;oBACrB,OAAO,IAAA,8BAAmB,EAAC,QAAQ,EAAE,IAAsB,CAAC,CAAC;gBAC/D,KAAK,cAAc;oBACjB,OAAO,IAAA,0BAAe,EAAC,QAAQ,EAAE,IAAoC,CAAC,CAAC;gBACzE,KAAK,iBAAiB;oBACpB,OAAO,IAAA,6BAAkB,EAAC,QAAQ,EAAE,IAAoC,CAAC,CAAC;gBAC5E,KAAK,+BAA+B;oBAClC,OAAO,IAAA,yCAA8B,EAAC,QAAQ,CAAC,CAAC;gBAClD;oBACE,MAAM,IAAI,KAAK,CAAC,iBAAiB,IAAI,EAAE,CAAC,CAAC;YAC7C,CAAC;QACH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;gBAC/F,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAgB,SAAS,CAAC,QAAgB;IACxC,MAAM,MAAM,GAAG,IAAA,gBAAM,GAAE,CAAC;IAExB,oEAAoE;IACpE,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,EAAE,GAAY,EAAE,GAAa,EAAE,EAAE;QACrD,MAAM,MAAM,GAAG,eAAe,CAAC,QAAQ,CAAC,CAAC;QACzC,MAAM,SAAS,GAAG,IAAI,iDAA6B,CAAC,EAAE,kBAAkB,EAAE,SAAS,EAAE,CAAC,CAAC;QACvF,IAAI,CAAC;YACH,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;YAChC,MAAM,SAAS,CAAC,aAAa,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;QACpD,CAAC;gBAAS,CAAC;YACT,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;QACvB,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,qEAAqE;IACrE,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,IAAa,EAAE,GAAa,EAAE,EAAE;QAC/C,GAAG,CAAC,IAAI,CAAC;YACP,GAAG,EAAE,sBAAsB;YAC3B,OAAO,EAAE,OAAO;YAChB,SAAS,EAAE,iBAAiB;YAC5B,QAAQ,EAAE,WAAW;YACrB,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;YAC7B,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,WAAW,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;SAC1E,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../../../src/mcp/server.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,53 @@
|
|
|
1
|
+
interface DiagramNodeInput {
|
|
2
|
+
name: string;
|
|
3
|
+
type?: string;
|
|
4
|
+
kind?: string;
|
|
5
|
+
renderAs?: string;
|
|
6
|
+
description?: string;
|
|
7
|
+
color?: string;
|
|
8
|
+
x?: number;
|
|
9
|
+
y?: number;
|
|
10
|
+
width?: number;
|
|
11
|
+
height?: number;
|
|
12
|
+
fontSize?: number | null;
|
|
13
|
+
textAlign?: string | null;
|
|
14
|
+
textValign?: string | null;
|
|
15
|
+
bgOpacity?: number | null;
|
|
16
|
+
rotation?: number | null;
|
|
17
|
+
labelRotation?: number | null;
|
|
18
|
+
locked?: boolean;
|
|
19
|
+
linkedDiagramId?: string;
|
|
20
|
+
imageSrc?: string | null;
|
|
21
|
+
groupId?: string | null;
|
|
22
|
+
nodeLink?: {
|
|
23
|
+
type?: unknown;
|
|
24
|
+
value?: unknown;
|
|
25
|
+
} | null;
|
|
26
|
+
evidence?: EvidenceInput[];
|
|
27
|
+
}
|
|
28
|
+
interface DiagramEdgeInput {
|
|
29
|
+
from: string;
|
|
30
|
+
to?: string;
|
|
31
|
+
label?: string;
|
|
32
|
+
arrowDir?: string;
|
|
33
|
+
dashes?: boolean;
|
|
34
|
+
fontSize?: number | null;
|
|
35
|
+
labelRotation?: number | null;
|
|
36
|
+
edgeLabelOffsetX?: number | null;
|
|
37
|
+
edgeLabelOffsetY?: number | null;
|
|
38
|
+
fromPort?: string | null;
|
|
39
|
+
toPort?: string | null;
|
|
40
|
+
edgeColor?: string | null;
|
|
41
|
+
edgeWidth?: number | null;
|
|
42
|
+
edgeLocked?: boolean;
|
|
43
|
+
edgeLabelWidth?: number | null;
|
|
44
|
+
evidence?: EvidenceInput[];
|
|
45
|
+
}
|
|
46
|
+
interface EvidenceInput {
|
|
47
|
+
documentId?: unknown;
|
|
48
|
+
section?: unknown;
|
|
49
|
+
summary?: unknown;
|
|
50
|
+
}
|
|
1
51
|
export declare function toolListDiagrams(docsPath: string): {
|
|
2
52
|
content: {
|
|
3
53
|
type: "text";
|
|
@@ -17,28 +67,16 @@ export declare function toolCreateDiagram(docsPath: string, args: {
|
|
|
17
67
|
title: string;
|
|
18
68
|
diagramType?: string;
|
|
19
69
|
userRequestedExplicitly?: boolean;
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
y?: number;
|
|
26
|
-
width?: number;
|
|
27
|
-
height?: number;
|
|
28
|
-
bgOpacity?: number;
|
|
29
|
-
locked?: boolean;
|
|
30
|
-
linkedDiagramId?: string;
|
|
31
|
-
imageSrc?: string;
|
|
32
|
-
}>;
|
|
33
|
-
edges: Array<{
|
|
34
|
-
from: string;
|
|
35
|
-
to?: string;
|
|
36
|
-
label?: string;
|
|
37
|
-
}>;
|
|
70
|
+
edgesStraight?: boolean;
|
|
71
|
+
gridEnabled?: boolean;
|
|
72
|
+
alignGuides?: boolean;
|
|
73
|
+
nodes: DiagramNodeInput[];
|
|
74
|
+
edges: DiagramEdgeInput[];
|
|
38
75
|
}): {
|
|
39
76
|
content: {
|
|
40
77
|
type: "text";
|
|
41
78
|
text: string;
|
|
42
79
|
}[];
|
|
43
80
|
};
|
|
81
|
+
export {};
|
|
44
82
|
//# sourceMappingURL=diagrams.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"diagrams.d.ts","sourceRoot":"","sources":["../../../../src/mcp/tools/diagrams.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"diagrams.d.ts","sourceRoot":"","sources":["../../../../src/mcp/tools/diagrams.ts"],"names":[],"mappings":"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"}
|
|
@@ -8,6 +8,57 @@ exports.toolReadDiagram = toolReadDiagram;
|
|
|
8
8
|
exports.toolCreateDiagram = toolCreateDiagram;
|
|
9
9
|
const fs_1 = __importDefault(require("fs"));
|
|
10
10
|
const path_1 = __importDefault(require("path"));
|
|
11
|
+
const VALID_PORTS = new Set(['N', 'NE', 'E', 'SE', 'S', 'SW', 'W', 'NW']);
|
|
12
|
+
const VALID_ARROW_DIRS = new Set(['to', 'both', 'none']);
|
|
13
|
+
const KIND_DEFAULTS = {
|
|
14
|
+
person: { renderAs: 'actor', color: 'c-gray', labelType: 'Person' },
|
|
15
|
+
software_system: { renderAs: 'box', color: 'c-blue', labelType: 'Software System' },
|
|
16
|
+
external_system: { renderAs: 'box', color: 'c-slate', labelType: 'External System' },
|
|
17
|
+
container: { renderAs: 'box', color: 'c-sky', labelType: 'Container' },
|
|
18
|
+
component: { renderAs: 'box', color: 'c-indigo', labelType: 'Component' },
|
|
19
|
+
database: { renderAs: 'database', color: 'c-teal', labelType: 'Database' },
|
|
20
|
+
object_storage: { renderAs: 'database', color: 'c-teal', labelType: 'Object Storage' },
|
|
21
|
+
queue: { renderAs: 'ellipse', color: 'c-amber', labelType: 'Queue' },
|
|
22
|
+
device: { renderAs: 'box', color: 'c-sky', labelType: 'Device' },
|
|
23
|
+
api: { renderAs: 'box', color: 'c-cyan', labelType: 'API' },
|
|
24
|
+
cloud_service: { renderAs: 'box', color: 'c-slate', labelType: 'Cloud Service' },
|
|
25
|
+
browser_app: { renderAs: 'box', color: 'c-sky', labelType: 'Browser App' },
|
|
26
|
+
mobile_app: { renderAs: 'box', color: 'c-sky', labelType: 'Mobile App' },
|
|
27
|
+
backend_service: { renderAs: 'box', color: 'c-sky', labelType: 'Backend Service' },
|
|
28
|
+
job: { renderAs: 'box', color: 'c-amber', labelType: 'Job' },
|
|
29
|
+
unknown: { renderAs: 'box', color: 'c-gray', labelType: 'Unknown' },
|
|
30
|
+
};
|
|
31
|
+
const NODE_STYLE_KEYS = [
|
|
32
|
+
'kind',
|
|
33
|
+
'renderAs',
|
|
34
|
+
'description',
|
|
35
|
+
'evidence',
|
|
36
|
+
'fontSize',
|
|
37
|
+
'textAlign',
|
|
38
|
+
'textValign',
|
|
39
|
+
'bgOpacity',
|
|
40
|
+
'rotation',
|
|
41
|
+
'labelRotation',
|
|
42
|
+
'imageSrc',
|
|
43
|
+
'groupId',
|
|
44
|
+
'nodeLink',
|
|
45
|
+
'locked',
|
|
46
|
+
];
|
|
47
|
+
const EDGE_STYLE_KEYS = [
|
|
48
|
+
'arrowDir',
|
|
49
|
+
'dashes',
|
|
50
|
+
'fontSize',
|
|
51
|
+
'labelRotation',
|
|
52
|
+
'edgeLabelOffsetX',
|
|
53
|
+
'edgeLabelOffsetY',
|
|
54
|
+
'fromPort',
|
|
55
|
+
'toPort',
|
|
56
|
+
'edgeColor',
|
|
57
|
+
'edgeWidth',
|
|
58
|
+
'edgeLocked',
|
|
59
|
+
'edgeLabelWidth',
|
|
60
|
+
'evidence',
|
|
61
|
+
];
|
|
11
62
|
// Estimates node dimensions from label content (font ~13px, lineH ~17px, pad 16px).
|
|
12
63
|
// Used to size MCP-created nodes so multiline labels are not clipped.
|
|
13
64
|
function estimateNodeSize(label, shapeType) {
|
|
@@ -32,6 +83,120 @@ function estimateNodeSize(label, shapeType) {
|
|
|
32
83
|
const nodeHeight = Math.round(rawHFinal / 8) * 8;
|
|
33
84
|
return { nodeWidth, nodeHeight };
|
|
34
85
|
}
|
|
86
|
+
function estimateEdgeLabelWidth(label) {
|
|
87
|
+
if (label.length <= 24)
|
|
88
|
+
return 80;
|
|
89
|
+
if (label.length <= 36)
|
|
90
|
+
return 95;
|
|
91
|
+
return 105;
|
|
92
|
+
}
|
|
93
|
+
function estimateEdgeFontSize(label) {
|
|
94
|
+
return label.length > 36 ? 11 : 12;
|
|
95
|
+
}
|
|
96
|
+
function normalizeArrowDir(raw) {
|
|
97
|
+
if (!raw)
|
|
98
|
+
return 'to';
|
|
99
|
+
const dir = raw.toLowerCase();
|
|
100
|
+
if (!VALID_ARROW_DIRS.has(dir)) {
|
|
101
|
+
throw new Error(`Invalid arrowDir "${raw}". Allowed: to, both, none.`);
|
|
102
|
+
}
|
|
103
|
+
return dir;
|
|
104
|
+
}
|
|
105
|
+
function normalizePort(raw, fieldName) {
|
|
106
|
+
if (raw === null)
|
|
107
|
+
return null;
|
|
108
|
+
if (raw === undefined)
|
|
109
|
+
return undefined;
|
|
110
|
+
const port = raw.toUpperCase();
|
|
111
|
+
if (!VALID_PORTS.has(port)) {
|
|
112
|
+
throw new Error(`Invalid ${fieldName} "${raw}". Allowed: ${Array.from(VALID_PORTS).join(', ')}.`);
|
|
113
|
+
}
|
|
114
|
+
return port;
|
|
115
|
+
}
|
|
116
|
+
function numberOrNull(value, fallback) {
|
|
117
|
+
return typeof value === 'number' && Number.isFinite(value) ? value : fallback;
|
|
118
|
+
}
|
|
119
|
+
function stringOrNull(value) {
|
|
120
|
+
return typeof value === 'string' ? value : null;
|
|
121
|
+
}
|
|
122
|
+
function normalizeEvidence(raw) {
|
|
123
|
+
if (raw === undefined)
|
|
124
|
+
return null;
|
|
125
|
+
if (!Array.isArray(raw))
|
|
126
|
+
throw new Error('evidence must be an array when provided.');
|
|
127
|
+
return raw
|
|
128
|
+
.map((item, index) => {
|
|
129
|
+
if (!item || typeof item !== 'object') {
|
|
130
|
+
throw new Error(`evidence[${index}] must be an object.`);
|
|
131
|
+
}
|
|
132
|
+
if (typeof item.documentId !== 'string' || !item.documentId.trim()) {
|
|
133
|
+
throw new Error(`evidence[${index}].documentId is required and must be a non-empty string.`);
|
|
134
|
+
}
|
|
135
|
+
return {
|
|
136
|
+
documentId: item.documentId,
|
|
137
|
+
section: typeof item.section === 'string' && item.section.trim() ? item.section : null,
|
|
138
|
+
summary: typeof item.summary === 'string' && item.summary.trim() ? item.summary : null,
|
|
139
|
+
};
|
|
140
|
+
});
|
|
141
|
+
}
|
|
142
|
+
function hasEvidence(items) {
|
|
143
|
+
return items.some(item => Array.isArray(item.evidence) && item.evidence.length > 0);
|
|
144
|
+
}
|
|
145
|
+
function resolveNodeLink(n) {
|
|
146
|
+
if (n.linkedDiagramId)
|
|
147
|
+
return { type: 'diagram', value: n.linkedDiagramId };
|
|
148
|
+
if (n.nodeLink &&
|
|
149
|
+
typeof n.nodeLink.type === 'string' &&
|
|
150
|
+
typeof n.nodeLink.value === 'string') {
|
|
151
|
+
return { type: n.nodeLink.type, value: n.nodeLink.value };
|
|
152
|
+
}
|
|
153
|
+
return null;
|
|
154
|
+
}
|
|
155
|
+
function inferPorts(fromNode, toNode) {
|
|
156
|
+
if (!toNode)
|
|
157
|
+
return { fromPort: 'E', toPort: null };
|
|
158
|
+
const fromX = typeof fromNode.x === 'number' ? fromNode.x : undefined;
|
|
159
|
+
const fromY = typeof fromNode.y === 'number' ? fromNode.y : undefined;
|
|
160
|
+
const toX = typeof toNode.x === 'number' ? toNode.x : undefined;
|
|
161
|
+
const toY = typeof toNode.y === 'number' ? toNode.y : undefined;
|
|
162
|
+
if (fromX === undefined || fromY === undefined || toX === undefined || toY === undefined) {
|
|
163
|
+
return { fromPort: 'E', toPort: 'W' };
|
|
164
|
+
}
|
|
165
|
+
const dx = toX - fromX;
|
|
166
|
+
const dy = toY - fromY;
|
|
167
|
+
if (Math.abs(dx) >= Math.abs(dy) && dx !== 0) {
|
|
168
|
+
return dx > 0 ? { fromPort: 'E', toPort: 'W' } : { fromPort: 'W', toPort: 'E' };
|
|
169
|
+
}
|
|
170
|
+
if (dy !== 0) {
|
|
171
|
+
return dy > 0 ? { fromPort: 'S', toPort: 'N' } : { fromPort: 'N', toPort: 'S' };
|
|
172
|
+
}
|
|
173
|
+
return { fromPort: 'E', toPort: 'W' };
|
|
174
|
+
}
|
|
175
|
+
function normalizeAlignedExternalSystemWidths(nodes) {
|
|
176
|
+
const columns = new Map();
|
|
177
|
+
for (const node of nodes) {
|
|
178
|
+
const isExternalSystem = node.shapeType === 'box' && /\[External System\]/i.test(node.label);
|
|
179
|
+
if (!isExternalSystem || typeof node.x !== 'number')
|
|
180
|
+
continue;
|
|
181
|
+
const column = columns.get(node.x) ?? [];
|
|
182
|
+
column.push(node);
|
|
183
|
+
columns.set(node.x, column);
|
|
184
|
+
}
|
|
185
|
+
for (const column of columns.values()) {
|
|
186
|
+
if (column.length < 2)
|
|
187
|
+
continue;
|
|
188
|
+
const maxWidth = Math.max(...column.map(n => Number(n.nodeWidth) || 0));
|
|
189
|
+
for (const node of column)
|
|
190
|
+
node.nodeWidth = maxWidth;
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
function copyExistingFields(source, target, keys) {
|
|
194
|
+
for (const key of keys) {
|
|
195
|
+
if (Object.prototype.hasOwnProperty.call(source, key))
|
|
196
|
+
target[key] = source[key];
|
|
197
|
+
}
|
|
198
|
+
return target;
|
|
199
|
+
}
|
|
35
200
|
// Maps semantic type names → vis-network shape properties.
|
|
36
201
|
// All shapes are rendered via the frontend's ctxRenderer (shape: 'custom'),
|
|
37
202
|
// but we keep `shape` here for backward compatibility with older stored diagrams.
|
|
@@ -79,6 +244,29 @@ function resolveColor(raw) {
|
|
|
79
244
|
return key;
|
|
80
245
|
return COLOR_ALIASES[key] ?? 'c-blue';
|
|
81
246
|
}
|
|
247
|
+
function normalizeKind(raw) {
|
|
248
|
+
if (!raw)
|
|
249
|
+
return null;
|
|
250
|
+
const kind = raw.toLowerCase();
|
|
251
|
+
if (!KIND_DEFAULTS[kind]) {
|
|
252
|
+
throw new Error(`Invalid kind "${raw}". Allowed: ${Object.keys(KIND_DEFAULTS).join(', ')}.`);
|
|
253
|
+
}
|
|
254
|
+
return kind;
|
|
255
|
+
}
|
|
256
|
+
function resolveRenderAs(n, kind) {
|
|
257
|
+
return n.renderAs ?? (kind ? KIND_DEFAULTS[kind].renderAs : n.type ?? 'box');
|
|
258
|
+
}
|
|
259
|
+
function resolveNodeColor(n, kind) {
|
|
260
|
+
return resolveColor(n.color ?? (kind ? KIND_DEFAULTS[kind].color : undefined));
|
|
261
|
+
}
|
|
262
|
+
function buildNodeLabel(n, kind) {
|
|
263
|
+
if (!kind || n.name.includes('\n'))
|
|
264
|
+
return n.name;
|
|
265
|
+
const lines = [n.name, `[${KIND_DEFAULTS[kind].labelType}]`];
|
|
266
|
+
if (n.description && n.description.trim())
|
|
267
|
+
lines.push(n.description.trim());
|
|
268
|
+
return lines.join('\n');
|
|
269
|
+
}
|
|
82
270
|
function diagramsFilePath(docsPath) {
|
|
83
271
|
return path_1.default.join(docsPath, '.diagrams.json');
|
|
84
272
|
}
|
|
@@ -110,22 +298,32 @@ function toolReadDiagram(docsPath, args) {
|
|
|
110
298
|
const idToLabel = {};
|
|
111
299
|
for (const n of diagram.nodes)
|
|
112
300
|
idToLabel[n.id] = n.label;
|
|
113
|
-
const nodes = diagram.nodes.map(n => ({
|
|
301
|
+
const nodes = diagram.nodes.map(n => copyExistingFields(n, {
|
|
114
302
|
name: n.label,
|
|
115
303
|
type: n.shapeType,
|
|
116
304
|
color: n.colorKey,
|
|
117
305
|
...(n.x !== undefined ? { x: n.x } : {}),
|
|
118
306
|
...(n.y !== undefined ? { y: n.y } : {}),
|
|
119
|
-
|
|
120
|
-
|
|
307
|
+
...(n.nodeWidth !== undefined ? { width: n.nodeWidth } : {}),
|
|
308
|
+
...(n.nodeHeight !== undefined ? { height: n.nodeHeight } : {}),
|
|
309
|
+
}, NODE_STYLE_KEYS));
|
|
310
|
+
const edges = diagram.edges.map(e => copyExistingFields(e, {
|
|
121
311
|
from: idToLabel[e.from] ?? e.from,
|
|
122
312
|
...(e.to !== undefined ? { to: idToLabel[e.to] ?? e.to } : {}),
|
|
123
|
-
...(e.label ? { label: e.label } : {}),
|
|
124
|
-
}));
|
|
313
|
+
...(e.label !== undefined ? { label: e.label } : {}),
|
|
314
|
+
}, EDGE_STYLE_KEYS));
|
|
125
315
|
return {
|
|
126
316
|
content: [{
|
|
127
317
|
type: 'text',
|
|
128
|
-
text: JSON.stringify({
|
|
318
|
+
text: JSON.stringify({
|
|
319
|
+
id: diagram.id,
|
|
320
|
+
title: diagram.title,
|
|
321
|
+
...(diagram.edgesStraight !== undefined ? { edgesStraight: diagram.edgesStraight } : {}),
|
|
322
|
+
...(diagram.gridEnabled !== undefined ? { gridEnabled: diagram.gridEnabled } : {}),
|
|
323
|
+
...(diagram.alignGuides !== undefined ? { alignGuides: diagram.alignGuides } : {}),
|
|
324
|
+
nodes,
|
|
325
|
+
edges,
|
|
326
|
+
}, null, 2),
|
|
129
327
|
}],
|
|
130
328
|
};
|
|
131
329
|
}
|
|
@@ -152,59 +350,101 @@ function toolCreateDiagram(docsPath, args) {
|
|
|
152
350
|
const nameToId = {};
|
|
153
351
|
const nodes = args.nodes.map((n, i) => {
|
|
154
352
|
const nodeId = `n${i + 1}`;
|
|
353
|
+
const kind = normalizeKind(n.kind);
|
|
354
|
+
const renderAs = resolveRenderAs(n, kind);
|
|
355
|
+
const label = buildNodeLabel(n, kind);
|
|
155
356
|
nameToId[n.name] = nodeId;
|
|
156
|
-
|
|
357
|
+
nameToId[label] = nodeId;
|
|
358
|
+
const shapeInfo = SHAPE_MAP[renderAs.toLowerCase()] ?? { shape: 'box', shapeType: 'box' };
|
|
157
359
|
if (shapeInfo.shapeType === 'image' && !n.imageSrc) {
|
|
158
360
|
throw new Error(`Node "${n.name || `#${i + 1}`}" uses type "image" but is missing \`imageSrc\`. ` +
|
|
159
361
|
`Upload the image via POST /api/images/upload and pass the returned URL (e.g. "/images/foo.png").`);
|
|
160
362
|
}
|
|
161
|
-
const estimated = estimateNodeSize(
|
|
363
|
+
const estimated = estimateNodeSize(label, shapeInfo.shapeType);
|
|
162
364
|
const nodeWidth = n.width ?? estimated.nodeWidth;
|
|
163
365
|
const nodeHeight = n.height ?? estimated.nodeHeight;
|
|
164
366
|
const node = {
|
|
165
367
|
id: nodeId,
|
|
166
|
-
label
|
|
368
|
+
label,
|
|
167
369
|
shape: shapeInfo.shape,
|
|
168
370
|
shapeType: shapeInfo.shapeType,
|
|
169
|
-
|
|
371
|
+
kind,
|
|
372
|
+
renderAs: shapeInfo.shapeType,
|
|
373
|
+
description: stringOrNull(n.description),
|
|
374
|
+
evidence: normalizeEvidence(n.evidence),
|
|
375
|
+
colorKey: resolveNodeColor(n, kind),
|
|
170
376
|
nodeWidth,
|
|
171
377
|
nodeHeight,
|
|
378
|
+
fontSize: numberOrNull(n.fontSize, null),
|
|
379
|
+
textAlign: stringOrNull(n.textAlign),
|
|
380
|
+
textValign: stringOrNull(n.textValign),
|
|
381
|
+
bgOpacity: numberOrNull(n.bgOpacity, null),
|
|
382
|
+
rotation: numberOrNull(n.rotation, 0),
|
|
383
|
+
labelRotation: numberOrNull(n.labelRotation, 0),
|
|
384
|
+
imageSrc: stringOrNull(n.imageSrc),
|
|
385
|
+
groupId: stringOrNull(n.groupId),
|
|
386
|
+
nodeLink: resolveNodeLink(n),
|
|
387
|
+
locked: n.locked === true,
|
|
172
388
|
};
|
|
173
389
|
if (n.x !== undefined)
|
|
174
390
|
node.x = n.x;
|
|
175
391
|
if (n.y !== undefined)
|
|
176
392
|
node.y = n.y;
|
|
177
|
-
if (n.bgOpacity !== undefined)
|
|
178
|
-
node.bgOpacity = n.bgOpacity;
|
|
179
|
-
if (n.locked !== undefined)
|
|
180
|
-
node.locked = n.locked;
|
|
181
|
-
if (n.linkedDiagramId)
|
|
182
|
-
node.nodeLink = { type: 'diagram', value: n.linkedDiagramId };
|
|
183
|
-
if (n.imageSrc)
|
|
184
|
-
node.imageSrc = n.imageSrc;
|
|
185
393
|
return node;
|
|
186
394
|
});
|
|
395
|
+
normalizeAlignedExternalSystemWidths(nodes);
|
|
187
396
|
const edges = args.edges.map((e, i) => {
|
|
188
397
|
const fromId = nameToId[e.from];
|
|
189
398
|
if (!fromId)
|
|
190
399
|
throw new Error(`Edge references unknown node: "${e.from}"`);
|
|
191
|
-
const
|
|
400
|
+
const fromNode = nodes.find(n => n.id === fromId);
|
|
401
|
+
if (!fromNode)
|
|
402
|
+
throw new Error(`Edge references unknown node: "${e.from}"`);
|
|
403
|
+
const label = e.label ?? '';
|
|
404
|
+
const edge = {
|
|
405
|
+
id: `e${i + 1}`,
|
|
406
|
+
from: fromId,
|
|
407
|
+
to: '',
|
|
408
|
+
label,
|
|
409
|
+
arrowDir: normalizeArrowDir(e.arrowDir),
|
|
410
|
+
dashes: e.dashes === true,
|
|
411
|
+
fontSize: numberOrNull(e.fontSize, estimateEdgeFontSize(label)),
|
|
412
|
+
labelRotation: numberOrNull(e.labelRotation, 0),
|
|
413
|
+
edgeLabelOffsetX: numberOrNull(e.edgeLabelOffsetX, 0),
|
|
414
|
+
edgeLabelOffsetY: numberOrNull(e.edgeLabelOffsetY, 0),
|
|
415
|
+
edgeColor: stringOrNull(e.edgeColor),
|
|
416
|
+
edgeWidth: numberOrNull(e.edgeWidth, null),
|
|
417
|
+
edgeLocked: e.edgeLocked === true,
|
|
418
|
+
edgeLabelWidth: numberOrNull(e.edgeLabelWidth, estimateEdgeLabelWidth(label)),
|
|
419
|
+
evidence: normalizeEvidence(e.evidence),
|
|
420
|
+
};
|
|
421
|
+
let toNode;
|
|
192
422
|
if (e.to !== undefined && e.to !== '') {
|
|
193
423
|
const toId = nameToId[e.to];
|
|
194
424
|
if (!toId)
|
|
195
425
|
throw new Error(`Edge references unknown node: "${e.to}"`);
|
|
196
426
|
edge.to = toId;
|
|
427
|
+
toNode = nodes.find(n => n.id === toId);
|
|
197
428
|
}
|
|
198
429
|
else {
|
|
199
430
|
delete edge.to;
|
|
200
431
|
}
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
432
|
+
const inferredPorts = inferPorts(fromNode, toNode);
|
|
433
|
+
const fromPort = normalizePort(e.fromPort, 'fromPort') ?? inferredPorts.fromPort;
|
|
434
|
+
const toPort = normalizePort(e.toPort, 'toPort') ?? inferredPorts.toPort;
|
|
435
|
+
edge.fromPort = fromPort;
|
|
436
|
+
edge.toPort = toPort;
|
|
205
437
|
return edge;
|
|
206
438
|
});
|
|
207
|
-
const diagram = {
|
|
439
|
+
const diagram = {
|
|
440
|
+
id,
|
|
441
|
+
title: args.title,
|
|
442
|
+
nodes,
|
|
443
|
+
edges,
|
|
444
|
+
edgesStraight: args.edgesStraight ?? false,
|
|
445
|
+
gridEnabled: args.gridEnabled ?? false,
|
|
446
|
+
alignGuides: args.alignGuides ?? true,
|
|
447
|
+
};
|
|
208
448
|
const all = loadDiagrams(docsPath);
|
|
209
449
|
const existingIndex = all.findIndex(d => d.id === id);
|
|
210
450
|
if (existingIndex !== -1) {
|
|
@@ -226,6 +466,11 @@ function toolCreateDiagram(docsPath, args) {
|
|
|
226
466
|
warnings.push(`Context diagram has ${nodes.length} nodes — keep it ≤ ${CONTEXT_NODE_SOFT_LIMIT} for readability. ` +
|
|
227
467
|
`If the system is too large, create a container diagram for the detailed view instead.`);
|
|
228
468
|
}
|
|
469
|
+
if (['context', 'container', 'component', 'uml'].includes(diagramType) &&
|
|
470
|
+
!hasEvidence(nodes) &&
|
|
471
|
+
!hasEvidence(edges)) {
|
|
472
|
+
warnings.push('Diagram has no evidence metadata. Consider adding document references for auditability.');
|
|
473
|
+
}
|
|
229
474
|
return {
|
|
230
475
|
content: [{
|
|
231
476
|
type: 'text',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"diagrams.js","sourceRoot":"","sources":["../../../../src/mcp/tools/diagrams.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"diagrams.js","sourceRoot":"","sources":["../../../../src/mcp/tools/diagrams.ts"],"names":[],"mappings":"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"}
|