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.
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +757 -0
- package/dist/index.js.map +1 -0
- package/dist/lib/__tests__/constants.test.d.ts +2 -0
- package/dist/lib/__tests__/constants.test.d.ts.map +1 -0
- package/dist/lib/__tests__/constants.test.js +47 -0
- package/dist/lib/__tests__/constants.test.js.map +1 -0
- package/dist/lib/__tests__/diagram-state.test.d.ts +2 -0
- package/dist/lib/__tests__/diagram-state.test.d.ts.map +1 -0
- package/dist/lib/__tests__/diagram-state.test.js +75 -0
- package/dist/lib/__tests__/diagram-state.test.js.map +1 -0
- package/dist/lib/__tests__/elk-runner.test.d.ts +2 -0
- package/dist/lib/__tests__/elk-runner.test.d.ts.map +1 -0
- package/dist/lib/__tests__/elk-runner.test.js +87 -0
- package/dist/lib/__tests__/elk-runner.test.js.map +1 -0
- package/dist/lib/checkpoints.d.ts +48 -0
- package/dist/lib/checkpoints.d.ts.map +1 -0
- package/dist/lib/checkpoints.js +58 -0
- package/dist/lib/checkpoints.js.map +1 -0
- package/dist/lib/constants.d.ts +29 -0
- package/dist/lib/constants.d.ts.map +1 -0
- package/dist/lib/constants.js +62 -0
- package/dist/lib/constants.js.map +1 -0
- package/dist/lib/diagram-state.d.ts +18 -0
- package/dist/lib/diagram-state.d.ts.map +1 -0
- package/dist/lib/diagram-state.js +55 -0
- package/dist/lib/diagram-state.js.map +1 -0
- package/dist/lib/elk-runner.d.ts +29 -0
- package/dist/lib/elk-runner.d.ts.map +1 -0
- package/dist/lib/elk-runner.js +532 -0
- package/dist/lib/elk-runner.js.map +1 -0
- package/dist/lib/http.d.ts +3 -0
- package/dist/lib/http.d.ts.map +1 -0
- package/dist/lib/http.js +13 -0
- package/dist/lib/http.js.map +1 -0
- package/dist/lib/node-catalog.d.ts +10 -0
- package/dist/lib/node-catalog.d.ts.map +1 -0
- package/dist/lib/node-catalog.js +122 -0
- package/dist/lib/node-catalog.js.map +1 -0
- package/dist/lib/parse-prompt.d.ts +26 -0
- package/dist/lib/parse-prompt.d.ts.map +1 -0
- package/dist/lib/parse-prompt.js +289 -0
- package/dist/lib/parse-prompt.js.map +1 -0
- package/dist/lib/prompt-builder.d.ts +14 -0
- package/dist/lib/prompt-builder.d.ts.map +1 -0
- package/dist/lib/prompt-builder.js +133 -0
- package/dist/lib/prompt-builder.js.map +1 -0
- package/dist/lib/schema.d.ts +1231 -0
- package/dist/lib/schema.d.ts.map +1 -0
- package/dist/lib/schema.js +258 -0
- package/dist/lib/schema.js.map +1 -0
- package/dist/server.d.ts +36 -0
- package/dist/server.d.ts.map +1 -0
- package/dist/server.js +287 -0
- package/dist/server.js.map +1 -0
- package/dist/tools/__tests__/export-diagram.test.d.ts +2 -0
- package/dist/tools/__tests__/export-diagram.test.d.ts.map +1 -0
- package/dist/tools/__tests__/export-diagram.test.js +40 -0
- package/dist/tools/__tests__/export-diagram.test.js.map +1 -0
- package/dist/tools/__tests__/update-diagram.test.d.ts +2 -0
- package/dist/tools/__tests__/update-diagram.test.d.ts.map +1 -0
- package/dist/tools/__tests__/update-diagram.test.js +90 -0
- package/dist/tools/__tests__/update-diagram.test.js.map +1 -0
- package/dist/tools/apply-template.d.ts +28 -0
- package/dist/tools/apply-template.d.ts.map +1 -0
- package/dist/tools/apply-template.js +388 -0
- package/dist/tools/apply-template.js.map +1 -0
- package/dist/tools/export-diagram.d.ts +36 -0
- package/dist/tools/export-diagram.d.ts.map +1 -0
- package/dist/tools/export-diagram.js +65 -0
- package/dist/tools/export-diagram.js.map +1 -0
- package/dist/tools/fix-layout.d.ts +19 -0
- package/dist/tools/fix-layout.d.ts.map +1 -0
- package/dist/tools/fix-layout.js +100 -0
- package/dist/tools/fix-layout.js.map +1 -0
- package/dist/tools/generate-diagram.d.ts +31 -0
- package/dist/tools/generate-diagram.d.ts.map +1 -0
- package/dist/tools/generate-diagram.js +385 -0
- package/dist/tools/generate-diagram.js.map +1 -0
- package/dist/tools/list-nodes.d.ts +18 -0
- package/dist/tools/list-nodes.d.ts.map +1 -0
- package/dist/tools/list-nodes.js +48 -0
- package/dist/tools/list-nodes.js.map +1 -0
- package/dist/tools/load-checkpoint.d.ts +18 -0
- package/dist/tools/load-checkpoint.d.ts.map +1 -0
- package/dist/tools/load-checkpoint.js +24 -0
- package/dist/tools/load-checkpoint.js.map +1 -0
- package/dist/tools/read-me.d.ts +2 -0
- package/dist/tools/read-me.d.ts.map +1 -0
- package/dist/tools/read-me.js +326 -0
- package/dist/tools/read-me.js.map +1 -0
- package/dist/tools/save-checkpoint.d.ts +11 -0
- package/dist/tools/save-checkpoint.d.ts.map +1 -0
- package/dist/tools/save-checkpoint.js +17 -0
- package/dist/tools/save-checkpoint.js.map +1 -0
- package/dist/tools/update-diagram.d.ts +20 -0
- package/dist/tools/update-diagram.d.ts.map +1 -0
- package/dist/tools/update-diagram.js +189 -0
- package/dist/tools/update-diagram.js.map +1 -0
- package/dist/tools/validate-diagram.d.ts +14 -0
- package/dist/tools/validate-diagram.d.ts.map +1 -0
- package/dist/tools/validate-diagram.js +181 -0
- package/dist/tools/validate-diagram.js.map +1 -0
- package/dist/types/index.d.ts +218 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +2 -0
- package/dist/types/index.js.map +1 -0
- package/package.json +50 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generate-diagram.js","sourceRoot":"","sources":["../../src/tools/generate-diagram.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { ListNodeTypesInput } from '../lib/schema.js';
|
|
2
|
+
interface SearchResult {
|
|
3
|
+
id: string;
|
|
4
|
+
label: string;
|
|
5
|
+
icon: string;
|
|
6
|
+
description: string;
|
|
7
|
+
}
|
|
8
|
+
interface CategoryResult {
|
|
9
|
+
name: string;
|
|
10
|
+
count: number;
|
|
11
|
+
nodes: SearchResult[];
|
|
12
|
+
}
|
|
13
|
+
export declare function listNodeTypes(input: ListNodeTypesInput): Promise<{
|
|
14
|
+
categories: CategoryResult[];
|
|
15
|
+
totalCount: number;
|
|
16
|
+
}>;
|
|
17
|
+
export {};
|
|
18
|
+
//# sourceMappingURL=list-nodes.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"list-nodes.d.ts","sourceRoot":"","sources":["../../src/tools/list-nodes.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAI3D,UAAU,YAAY;IACpB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,UAAU,cAAc;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,YAAY,EAAE,CAAC;CACvB;AAED,wBAAsB,aAAa,CAAC,KAAK,EAAE,kBAAkB,GAAG,OAAO,CAAC;IACtE,UAAU,EAAE,cAAc,EAAE,CAAC;IAC7B,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC,CAwDD"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { getComponentsByCategory, searchComponents } from '../lib/node-catalog.js';
|
|
2
|
+
export async function listNodeTypes(input) {
|
|
3
|
+
const { category, search, limit } = input;
|
|
4
|
+
if (search && search.trim()) {
|
|
5
|
+
const results = searchComponents(search, limit);
|
|
6
|
+
const categoryMap = new Map();
|
|
7
|
+
for (const component of results) {
|
|
8
|
+
if (!categoryMap.has(component.category)) {
|
|
9
|
+
categoryMap.set(component.category, []);
|
|
10
|
+
}
|
|
11
|
+
categoryMap.get(component.category).push(component);
|
|
12
|
+
}
|
|
13
|
+
const categories = Array.from(categoryMap.entries())
|
|
14
|
+
.map(([name, comps]) => ({
|
|
15
|
+
name,
|
|
16
|
+
count: comps.length,
|
|
17
|
+
nodes: comps.map((n) => ({
|
|
18
|
+
id: n.id,
|
|
19
|
+
label: n.label,
|
|
20
|
+
icon: n.icon,
|
|
21
|
+
description: n.description,
|
|
22
|
+
})),
|
|
23
|
+
}))
|
|
24
|
+
.sort((a, b) => a.name.localeCompare(b.name));
|
|
25
|
+
return {
|
|
26
|
+
categories,
|
|
27
|
+
totalCount: results.length,
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
if (category && category.trim()) {
|
|
31
|
+
const summary = getComponentsByCategory();
|
|
32
|
+
const filteredCategories = summary.categories.filter(c => c.name.toLowerCase().includes(category.toLowerCase()));
|
|
33
|
+
return {
|
|
34
|
+
categories: filteredCategories,
|
|
35
|
+
totalCount: filteredCategories.reduce((sum, c) => sum + c.count, 0),
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
const summary = getComponentsByCategory();
|
|
39
|
+
const limitedCategories = summary.categories.map((cat) => ({
|
|
40
|
+
...cat,
|
|
41
|
+
nodes: cat.nodes.slice(0, Math.ceil(limit / summary.categories.length)),
|
|
42
|
+
}));
|
|
43
|
+
return {
|
|
44
|
+
categories: limitedCategories,
|
|
45
|
+
totalCount: summary.totalCount,
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
//# sourceMappingURL=list-nodes.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"list-nodes.js","sourceRoot":"","sources":["../../src/tools/list-nodes.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,uBAAuB,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAgBnF,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,KAAyB;IAI3D,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,KAAK,CAAC;IAE1C,IAAI,MAAM,IAAI,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC;QAC5B,MAAM,OAAO,GAAG,gBAAgB,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QAEhD,MAAM,WAAW,GAAG,IAAI,GAAG,EAAiC,CAAC;QAC7D,KAAK,MAAM,SAAS,IAAI,OAAO,EAAE,CAAC;YAChC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE,CAAC;gBACzC,WAAW,CAAC,GAAG,CAAC,SAAS,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;YAC1C,CAAC;YACD,WAAW,CAAC,GAAG,CAAC,SAAS,CAAC,QAAQ,CAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACvD,CAAC;QAED,MAAM,UAAU,GAAqB,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC;aACnE,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC;YACvB,IAAI;YACJ,KAAK,EAAE,KAAK,CAAC,MAAM;YACnB,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAsB,EAAE,EAAE,CAAC,CAAC;gBAC5C,EAAE,EAAE,CAAC,CAAC,EAAE;gBACR,KAAK,EAAE,CAAC,CAAC,KAAK;gBACd,IAAI,EAAE,CAAC,CAAC,IAAI;gBACZ,WAAW,EAAE,CAAC,CAAC,WAAW;aAC3B,CAAC,CAAC;SACJ,CAAC,CAAC;aACF,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;QAEhD,OAAO;YACL,UAAU;YACV,UAAU,EAAE,OAAO,CAAC,MAAM;SAC3B,CAAC;IACJ,CAAC;IAED,IAAI,QAAQ,IAAI,QAAQ,CAAC,IAAI,EAAE,EAAE,CAAC;QAChC,MAAM,OAAO,GAAG,uBAAuB,EAAE,CAAC;QAC1C,MAAM,kBAAkB,GAAG,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CACvD,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC,CACtD,CAAC;QAEF,OAAO;YACL,UAAU,EAAE,kBAAkB;YAC9B,UAAU,EAAE,kBAAkB,CAAC,MAAM,CAAC,CAAC,GAAW,EAAE,CAAiB,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;SAC5F,CAAC;IACJ,CAAC;IAED,MAAM,OAAO,GAAG,uBAAuB,EAAE,CAAC;IAE1C,MAAM,iBAAiB,GAAqB,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,GAAmB,EAAE,EAAE,CAAC,CAAC;QAC3F,GAAG,GAAG;QACN,KAAK,EAAE,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;KACxE,CAAC,CAAC,CAAC;IAEJ,OAAO;QACL,UAAU,EAAE,iBAAiB;QAC7B,UAAU,EAAE,OAAO,CAAC,UAAU;KAC/B,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { LoadCheckpointInput } from '../lib/schema.js';
|
|
2
|
+
export declare function loadCheckpoint(input: LoadCheckpointInput): Promise<{
|
|
3
|
+
success: boolean;
|
|
4
|
+
name?: string;
|
|
5
|
+
restoredAt?: string;
|
|
6
|
+
nodeCount?: number;
|
|
7
|
+
edgeCount?: number;
|
|
8
|
+
message?: string;
|
|
9
|
+
availableCheckpoints?: Array<{
|
|
10
|
+
name: string;
|
|
11
|
+
description?: string;
|
|
12
|
+
savedAt: string;
|
|
13
|
+
nodeCount: number;
|
|
14
|
+
edgeCount: number;
|
|
15
|
+
}>;
|
|
16
|
+
error?: string;
|
|
17
|
+
}>;
|
|
18
|
+
//# sourceMappingURL=load-checkpoint.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"load-checkpoint.d.ts","sourceRoot":"","sources":["../../src/tools/load-checkpoint.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAI5D,wBAAsB,cAAc,CAAC,KAAK,EAAE,mBAAmB,GAAG,OAAO,CAAC;IACxE,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,oBAAoB,CAAC,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC5H,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC,CAwBD"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { loadCheckpoint as loadCheckpointFromStore, getCheckpointState, listCheckpoints } from '../lib/checkpoints.js';
|
|
2
|
+
import { setDiagramState } from '../lib/diagram-state.js';
|
|
3
|
+
export async function loadCheckpoint(input) {
|
|
4
|
+
if (input.listAvailable) {
|
|
5
|
+
const checkpoints = listCheckpoints();
|
|
6
|
+
return {
|
|
7
|
+
success: true,
|
|
8
|
+
availableCheckpoints: checkpoints,
|
|
9
|
+
message: checkpoints.length === 0
|
|
10
|
+
? 'No checkpoints saved yet.'
|
|
11
|
+
: `Found ${checkpoints.length} checkpoint(s).`,
|
|
12
|
+
};
|
|
13
|
+
}
|
|
14
|
+
const result = loadCheckpointFromStore(input.name);
|
|
15
|
+
if (!result.success) {
|
|
16
|
+
return result;
|
|
17
|
+
}
|
|
18
|
+
const state = getCheckpointState(input.name);
|
|
19
|
+
if (state) {
|
|
20
|
+
setDiagramState(state);
|
|
21
|
+
}
|
|
22
|
+
return result;
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=load-checkpoint.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"load-checkpoint.js","sourceRoot":"","sources":["../../src/tools/load-checkpoint.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,IAAI,uBAAuB,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACvH,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAE1D,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,KAA0B;IAU7D,IAAI,KAAK,CAAC,aAAa,EAAE,CAAC;QACxB,MAAM,WAAW,GAAG,eAAe,EAAE,CAAC;QACtC,OAAO;YACL,OAAO,EAAE,IAAI;YACb,oBAAoB,EAAE,WAAW;YACjC,OAAO,EAAE,WAAW,CAAC,MAAM,KAAK,CAAC;gBAC/B,CAAC,CAAC,2BAA2B;gBAC7B,CAAC,CAAC,SAAS,WAAW,CAAC,MAAM,iBAAiB;SACjD,CAAC;IACJ,CAAC;IAED,MAAM,MAAM,GAAG,uBAAuB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAEnD,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QACpB,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,MAAM,KAAK,GAAG,kBAAkB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC7C,IAAI,KAAK,EAAE,CAAC;QACV,eAAe,CAAC,KAAY,CAAC,CAAC;IAChC,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"read-me.d.ts","sourceRoot":"","sources":["../../src/tools/read-me.ts"],"names":[],"mappings":"AAAA,wBAAgB,SAAS,IAAI,MAAM,CAoUlC"}
|
|
@@ -0,0 +1,326 @@
|
|
|
1
|
+
export function getReadMe() {
|
|
2
|
+
return `# ArchDraw MCP Reference Guide
|
|
3
|
+
|
|
4
|
+
## âš¡ DIAGRAM GENERATION RULES (MANDATORY - ALWAYS FOLLOW THESE)
|
|
5
|
+
|
|
6
|
+
1. **LAYOUT ALGORITHM**: ALWAYS use a ranked/layered layout (Dagre, ELK, or Graphviz dot engine). Direction: LEFT TO RIGHT (rankdir=LR) or TOP TO BOTTOM (rankdir=TB). Never place nodes with random/arbitrary x,y coordinates. Minimum rank separation: 120px between tiers. Minimum node separation: 60px within same tier.
|
|
7
|
+
2. **NODE SIZING — NO TRUNCATION EVER**: Node width = auto-fit to longest text line + 40px padding on each side. Node height = auto-fit to number of text lines + 20px padding top/bottom. NEVER hardcode a fixed width smaller than the label. If subtitle exists, calculate width based on whichever line is longer. Minimum node width: 180px. No maximum.
|
|
8
|
+
3. **TIERED STRUCTURE — MANDATORY**: Group all nodes into explicit tiers before rendering: Tier 1 → Entry points (Client, Browser, Mobile). Tier 2 → Infrastructure (Load Balancer, CDN, API Gateway). Tier 3 → Services (Auth, Business Logic, Workers). Tier 4 → Data Layer (Databases, Cache, Queue). Nodes in the same tier must be vertically aligned. No node from Tier N should visually overlap with Tier N+1.
|
|
9
|
+
4. **EDGE ROUTING — NO CROSSING OR OVERLAPPING**: Use orthogonal (right-angle) or curved (bezier) routing — never straight diagonal lines that cross nodes. Edges must never pass through a node bounding box. If two edges share a path, offset them by at least 8px. Sync connections (REST, HTTPS, SQL, gRPC) → solid lines. Async connections (AMQP, Kafka, Queue, Pub/Sub) → dashed lines. Always label edges with protocol name (REST, HTTPS, SQL, AMQP, etc.). Arrow direction must clearly show data/request flow.
|
|
10
|
+
5. **COLLISION DETECTION — NO OVERLAPPING NODES**: After placing all nodes, run a bounding box collision check. If any two nodes overlap, increase node separation and re-layout. Nodes must have a minimum margin of 40px between each other on all sides. If a tier has too many nodes, split into sub-tiers or increase canvas height.
|
|
11
|
+
6. **COLOR & VISUAL GROUPING**: Color-code nodes by category, not randomly: Infrastructure → Gray (#6B7280). Auth/Security → Purple (#7C3AED). Services → Blue (#2563EB). Async/Queue → Orange (#D97706). Databases → Green (#059669). Cache → Teal (#0891B2). Use same color for border and icon; light tint for fill (10% opacity). Group related nodes inside a labeled bounding box/container (isGroup).
|
|
12
|
+
7. **TYPOGRAPHY**: Primary label: Bold, 13-14px, full name (NO ellipsis, NO truncation). Subtitle: Regular, 11px, tech stack (e.g., "MySQL, PostgreSQL"). Edge labels: 10px, italic, placed at midpoint of edge. Font: Inter, Roboto, or any clean sans-serif.
|
|
13
|
+
8. **CANVAS & OUTPUT**: Auto-size the canvas to fit all nodes + 80px padding on all sides. Never clip any node or label at canvas boundary. Export/render at minimum 1400px wide for complex diagrams. Background: White (#FFFFFF) or Off-white (#F9FAFB).
|
|
14
|
+
|
|
15
|
+
---
|
|
16
|
+
|
|
17
|
+
## 🚨 CRITICAL ARCHITECTURE RULES (SYSTEMATIC FIXES — DO NOT SKIP)
|
|
18
|
+
|
|
19
|
+
### RULE A — AUTH SERVICE TOPOLOGY
|
|
20
|
+
**The Auth Service receives arrows ONLY from login and token refresh endpoints. NO other arrows from the gateway into Auth Service are permitted.**
|
|
21
|
+
|
|
22
|
+
- CORRECT: Client → API Gateway → Auth Service (label: "POST /login" or "POST /token/refresh" ONLY)
|
|
23
|
+
- CORRECT: Client → API Gateway → Order Service (gateway validates JWT internally — no Auth hop needed)
|
|
24
|
+
- WRONG: API Gateway → Auth Service → Order Service (Auth as per-request proxy hop)
|
|
25
|
+
- WRONG: Any arrow from gateway to Auth Service labeled with a business operation
|
|
26
|
+
|
|
27
|
+
BEFORE FINALIZING: Audit every edge whose target is the Auth Service. If the source is API Gateway and the edge label is not login/register/token-refresh — DELETE that edge.
|
|
28
|
+
|
|
29
|
+
### RULE B — OBJECT STORAGE IS MANDATORY FOR MEDIA DOMAINS
|
|
30
|
+
**Drawing a CDN without an origin storage, or a Transcoding Worker without a destination, is architecturally invalid.**
|
|
31
|
+
|
|
32
|
+
Mandatory when domain involves: video streaming, image sharing, audio streaming, file storage, document management, or any CDN node.
|
|
33
|
+
|
|
34
|
+
Required pipeline for video platforms:
|
|
35
|
+
\`Upload → Object Storage (raw) → Transcoding Worker → Object Storage (output) → CDN → Client\`
|
|
36
|
+
|
|
37
|
+
Never omit object storage if a CDN or Transcoding Worker is present in the diagram.
|
|
38
|
+
|
|
39
|
+
### RULE C — ANALYTICS EVENT STREAM IS CORE INFRASTRUCTURE
|
|
40
|
+
**For engagement-loop platforms, the analytics event stream is NOT optional telemetry — it is the product's primary feedback loop.**
|
|
41
|
+
|
|
42
|
+
Mandatory when domain involves: video/audio streaming, social media, e-commerce, gaming.
|
|
43
|
+
|
|
44
|
+
Required pattern:
|
|
45
|
+
\`Client → (play/click/view event) → Event Stream (Kafka/Kinesis) → Analytics Processor → Recommendation Engine\`
|
|
46
|
+
|
|
47
|
+
Watch history, play events, and engagement signals are the INPUT to recommendation engines — without this stream, the recommendation engine has no data source.
|
|
48
|
+
|
|
49
|
+
### RULE D — SECURITY SERVICES MUST NOT BYPASS THE GATEWAY
|
|
50
|
+
**DRM, Auth, and License Servers must NEVER connect directly to client-tier nodes.**
|
|
51
|
+
|
|
52
|
+
- CORRECT: Client → API Gateway → DRM License Service (gateway verifies subscription before issuing license)
|
|
53
|
+
- WRONG: Client → DRM License Service (unauthenticated clients could request licenses)
|
|
54
|
+
|
|
55
|
+
BEFORE FINALIZING: Audit every edge where source is \`client\` tier and target is a security/DRM/auth node. If API Gateway is not in the path — re-route through the gateway.
|
|
56
|
+
|
|
57
|
+
### RULE E — EDGE DIRECTION: LEFT→RIGHT ONLY, NO STAR TOPOLOGY
|
|
58
|
+
**This is the most common generation error. Edges MUST flow from lower tier → higher tier, never backward.**
|
|
59
|
+
|
|
60
|
+
CORRECT tier flow (mandatory for every diagram):
|
|
61
|
+
\`\`\`
|
|
62
|
+
client (0) → edge (1) → compute (2) → async (3) → data (4) → external (5)
|
|
63
|
+
\`\`\`
|
|
64
|
+
|
|
65
|
+
Client nodes (Web App, Mobile App) are SOURCES — edges go FROM them, not TO them:
|
|
66
|
+
- CORRECT: Web App → API Gateway → Auth Service → PostgreSQL
|
|
67
|
+
- WRONG: Auth Service → Web App (backward edge)
|
|
68
|
+
- WRONG: PostgreSQL → Web App (data to client — forbidden)
|
|
69
|
+
- WRONG: All nodes → Web App (star/hub anti-pattern)
|
|
70
|
+
|
|
71
|
+
Web Client is NOT a hub. NEVER connect multiple backend nodes back to the client.
|
|
72
|
+
|
|
73
|
+
If a backend needs to push data to the client, use:
|
|
74
|
+
- A WebSocket Gateway node (tier: edge) with a \`stream\` edge
|
|
75
|
+
- A Push Notification Service node (tier: compute) with a \`stream\` edge to client
|
|
76
|
+
|
|
77
|
+
Diagrams with star topology (>45% of all edges pointing to one node) will be rejected by the validator.
|
|
78
|
+
|
|
79
|
+
---
|
|
80
|
+
|
|
81
|
+
## TIER SYSTEM
|
|
82
|
+
7 layers in order (left→right in LR layout, top→bottom in DOWN layout):
|
|
83
|
+
|
|
84
|
+
| Tier | Color | Hex | What belongs here |
|
|
85
|
+
|------|-------|-----|-------------------|
|
|
86
|
+
| client | slate | #64748b | Browser, Mobile App, Web Client, CLI |
|
|
87
|
+
| edge | indigo | #6366f1 | CDN, Load Balancer, API Gateway, WAF, Nginx |
|
|
88
|
+
| compute | teal | #0d9488 | API Server, Auth Service, Business Logic, Workers |
|
|
89
|
+
| async | amber | #d97706 | Message Queue, Event Bus, Task Queue, Kafka, SQS |
|
|
90
|
+
| data | blue | #3b82f6 | PostgreSQL, Redis, MongoDB, S3, Elasticsearch |
|
|
91
|
+
| external | violet | #8b5cf6 | Stripe, Twilio, SendGrid, Maps API, OAuth providers |
|
|
92
|
+
| observe | gray | #6b7280 | Prometheus, Grafana, Jaeger, Datadog, ELK Stack |
|
|
93
|
+
|
|
94
|
+
---
|
|
95
|
+
|
|
96
|
+
## DOMAIN COMPLETENESS CHECKLIST
|
|
97
|
+
Before generating any diagram, identify the domain and verify these required nodes are included:
|
|
98
|
+
|
|
99
|
+
| Domain | Required Nodes (cannot be omitted) |
|
|
100
|
+
|--------|-------------------------------------|
|
|
101
|
+
| Video Streaming | Object Storage (raw + output), Transcoding Worker, CDN, DRM (via gateway), Analytics Event Stream, Recommendation Engine |
|
|
102
|
+
| Social Media | Object Storage (media), CDN, Engagement Event Stream, Feed Ranking Service, Notification Service |
|
|
103
|
+
| E-Commerce | Payment Gateway, Order Queue, Inventory Service, Notification Service |
|
|
104
|
+
| Ride-sharing | Real-time Location Service, Matching Engine, Payment Gateway, Push Notification |
|
|
105
|
+
| SaaS / B2B | Auth Service (login only), Billing Service, Audit Log, Webhook Delivery |
|
|
106
|
+
| Chat / Messaging | WebSocket Gateway, Message Queue, Notification Service, Media Storage |
|
|
107
|
+
| Audio Streaming | Object Storage, CDN, Transcoding Worker, Recommendation Engine, Analytics Stream |
|
|
108
|
+
|
|
109
|
+
---
|
|
110
|
+
|
|
111
|
+
## GROUPS (REQUIRED)
|
|
112
|
+
Groups are visual containers that cluster related nodes. **Every diagram must have at least one.**
|
|
113
|
+
|
|
114
|
+
### Group node fields:
|
|
115
|
+
\`\`\`json
|
|
116
|
+
{
|
|
117
|
+
"id": "backend_group",
|
|
118
|
+
"label": "Backend Services",
|
|
119
|
+
"tier": "compute",
|
|
120
|
+
"subtitle": "Core application API layer",
|
|
121
|
+
"isGroup": true,
|
|
122
|
+
"groupColor": "#0f172a",
|
|
123
|
+
"width": 560,
|
|
124
|
+
"height": 300,
|
|
125
|
+
"icon": "layers"
|
|
126
|
+
}
|
|
127
|
+
\`\`\`
|
|
128
|
+
|
|
129
|
+
### Child node (placed inside a group):
|
|
130
|
+
\`\`\`json
|
|
131
|
+
{
|
|
132
|
+
"id": "user_api",
|
|
133
|
+
"label": "User API",
|
|
134
|
+
"tier": "compute",
|
|
135
|
+
"subtitle": "CRUD for user accounts",
|
|
136
|
+
"parentId": "backend_group",
|
|
137
|
+
"icon": "user",
|
|
138
|
+
"accentColor": "#0d9488"
|
|
139
|
+
}
|
|
140
|
+
\`\`\`
|
|
141
|
+
|
|
142
|
+
### Group sizing guide:
|
|
143
|
+
- 2 children → 400×200
|
|
144
|
+
- 3-4 children → 550×280
|
|
145
|
+
- 5-6 children → 700×350
|
|
146
|
+
- Groups do NOT connect to edges — only leaf nodes do
|
|
147
|
+
|
|
148
|
+
---
|
|
149
|
+
|
|
150
|
+
## NODE PROPERTIES (full reference)
|
|
151
|
+
|
|
152
|
+
| Field | Required | Description |
|
|
153
|
+
|-------|----------|-------------|
|
|
154
|
+
| id | YES | Snake_case unique identifier |
|
|
155
|
+
| label | YES | 1-3 word display name |
|
|
156
|
+
| tier | YES | One of 7 tier values |
|
|
157
|
+
| subtitle | YES | Specific description (e.g. "PostgreSQL 15, handles orders table") |
|
|
158
|
+
| isGroup | when grouping | true = renders as swimlane container |
|
|
159
|
+
| parentId | when child | ID of parent group node |
|
|
160
|
+
| groupColor | for groups | Background tint hex (e.g. "#0f172a") |
|
|
161
|
+
| icon | recommended | Lucide icon name (use list_node_types) |
|
|
162
|
+
| accentColor | optional | Override color for visual diff within same tier |
|
|
163
|
+
| status | optional | healthy / warning / error / unknown |
|
|
164
|
+
| width/height | for groups | Set larger than content |
|
|
165
|
+
|
|
166
|
+
**Available accentColors**: #3b82f6 #0ea5e9 #06b6d4 #14b8a6 #22c55e #f59e0b #f97316 #ef4444 #ec4899 #6b7280 #f43f5e #a855f7 #84cc16 #fb923c #0ea5e9
|
|
167
|
+
|
|
168
|
+
---
|
|
169
|
+
|
|
170
|
+
## COMMUNICATION TYPES
|
|
171
|
+
|
|
172
|
+
| Type | Use Case | Visual |
|
|
173
|
+
|------|----------|--------|
|
|
174
|
+
| sync | REST, gRPC, HTTP request-response | Solid slate gray |
|
|
175
|
+
| async | Kafka, SQS, background jobs | Dashed amber, animated |
|
|
176
|
+
| stream | WebSocket, SSE, real-time feeds | Dashed green, animated |
|
|
177
|
+
| event | Pub/sub, domain events | Dashed pink, animated |
|
|
178
|
+
| dep | Build-time / config dependency | Dotted gray |
|
|
179
|
+
|
|
180
|
+
**Edge label rules:**
|
|
181
|
+
- sync: label optional (e.g. "GET /users", "JWT auth")
|
|
182
|
+
- async/event/stream: label REQUIRED (e.g. "order.created", "payment.processed")
|
|
183
|
+
- dep: label optional (e.g. "config", "env vars")
|
|
184
|
+
|
|
185
|
+
---
|
|
186
|
+
|
|
187
|
+
## LAYOUT DIRECTION
|
|
188
|
+
- **RIGHT** (default): Left-to-right tiers. Best for microservices, API architectures
|
|
189
|
+
- **DOWN**: Top-to-bottom. Best for pipelines, mobile-first, CI/CD flows
|
|
190
|
+
|
|
191
|
+
---
|
|
192
|
+
|
|
193
|
+
## BEST PRACTICES
|
|
194
|
+
1. Client tier: 1-2 nodes max
|
|
195
|
+
2. Data tier NEVER connects directly to client tier
|
|
196
|
+
3. Observability nodes use \`dep\` edges FROM them (not TO them)
|
|
197
|
+
4. Use \`accentColor\` to differentiate services within the same compute tier
|
|
198
|
+
5. Add \`status: "warning"\` or \`"error"\` to highlight problem areas
|
|
199
|
+
6. Groups should use their tier's color as \`groupColor\` tinted darker
|
|
200
|
+
7. External tier only for third-party services (not your own microservices)
|
|
201
|
+
8. Prefer \`pathType: "Smoothstep"\` for most edges; \`"step"\` for right-angle flows
|
|
202
|
+
9. Auth Service: only receives edges labeled login/register/token-refresh from the gateway
|
|
203
|
+
10. Object storage is mandatory in any diagram with a CDN or media processing
|
|
204
|
+
11. Analytics event stream is mandatory in any diagram with a recommendation engine
|
|
205
|
+
12. **EDGE DIRECTION**: Every edge must point from a LOWER tier to a HIGHER tier (client→edge→compute→async→data)
|
|
206
|
+
13. **NO STAR TOPOLOGY**: Never use Web Client as a hub. If you have 10 services, none of them connect TO the web client.
|
|
207
|
+
14. **BACKWARD EDGE CHECK**: Before calling generate_diagram, scan every edge -- if the target is a client tier node and source is not also client tier -- DELETE that edge.
|
|
208
|
+
|
|
209
|
+
---
|
|
210
|
+
|
|
211
|
+
## CANONICAL FULL EXAMPLE
|
|
212
|
+
A well-structured 12-node diagram with groups:
|
|
213
|
+
|
|
214
|
+
\`\`\`json
|
|
215
|
+
{
|
|
216
|
+
"label": "E-Commerce Platform",
|
|
217
|
+
"direction": "RIGHT",
|
|
218
|
+
"nodes": [
|
|
219
|
+
{ "id": "web_client", "label": "Web App", "tier": "client", "subtitle": "React SPA, Next.js", "icon": "globe" },
|
|
220
|
+
{ "id": "mobile_client", "label": "Mobile App", "tier": "client", "subtitle": "React Native iOS/Android", "icon": "smartphone" },
|
|
221
|
+
{ "id": "api_gateway", "label": "API Gateway", "tier": "edge", "subtitle": "Rate limiting, auth routing, SSL termination", "icon": "shield" },
|
|
222
|
+
|
|
223
|
+
{ "id": "backend_group", "label": "Core Services", "tier": "compute", "subtitle": "Business logic layer", "isGroup": true, "groupColor": "#042f2e", "width": 600, "height": 320 },
|
|
224
|
+
{ "id": "order_svc", "label": "Order Service", "tier": "compute", "subtitle": "Create & manage orders, inventory check", "parentId": "backend_group", "icon": "shopping-cart", "accentColor": "#0d9488" },
|
|
225
|
+
{ "id": "user_svc", "label": "User Service", "tier": "compute", "subtitle": "Auth, profiles, sessions", "parentId": "backend_group", "icon": "user", "accentColor": "#6366f1" },
|
|
226
|
+
{ "id": "payment_svc", "label": "Payment Service", "tier": "compute", "subtitle": "Stripe integration, refund logic", "parentId": "backend_group", "icon": "credit-card", "accentColor": "#8b5cf6" },
|
|
227
|
+
|
|
228
|
+
{ "id": "order_queue", "label": "Order Queue", "tier": "async", "subtitle": "Kafka topic: orders.created", "icon": "zap" },
|
|
229
|
+
|
|
230
|
+
{ "id": "data_group", "label": "Data Layer", "tier": "data", "subtitle": "Persistent storage", "isGroup": true, "groupColor": "#0c1a2e", "width": 440, "height": 240 },
|
|
231
|
+
{ "id": "postgres", "label": "PostgreSQL", "tier": "data", "subtitle": "Primary DB — users, orders, products", "parentId": "data_group", "icon": "database" },
|
|
232
|
+
{ "id": "redis", "label": "Redis Cache", "tier": "data", "subtitle": "Session store, rate limit counters", "parentId": "data_group", "icon": "zap" },
|
|
233
|
+
|
|
234
|
+
{ "id": "stripe", "label": "Stripe", "tier": "external", "subtitle": "Payment gateway, webhooks", "icon": "credit-card" },
|
|
235
|
+
{ "id": "monitoring", "label": "Grafana", "tier": "observe", "subtitle": "Metrics, dashboards, alerting", "icon": "activity" }
|
|
236
|
+
],
|
|
237
|
+
"edges": [
|
|
238
|
+
{ "id": "e1", "source": "web_client", "target": "api_gateway", "communicationType": "sync", "label": "HTTPS" },
|
|
239
|
+
{ "id": "e2", "source": "mobile_client", "target": "api_gateway", "communicationType": "sync", "label": "REST API" },
|
|
240
|
+
{ "id": "e3", "source": "api_gateway", "target": "order_svc", "communicationType": "sync", "label": "POST /orders" },
|
|
241
|
+
{ "id": "e4", "source": "api_gateway", "target": "user_svc", "communicationType": "sync", "label": "GET /users" },
|
|
242
|
+
{ "id": "e5", "source": "order_svc", "target": "order_queue", "communicationType": "async", "label": "order.created" },
|
|
243
|
+
{ "id": "e6", "source": "order_queue", "target": "payment_svc", "communicationType": "async", "label": "process payment" },
|
|
244
|
+
{ "id": "e7", "source": "payment_svc", "target": "stripe", "communicationType": "sync", "label": "charge API" },
|
|
245
|
+
{ "id": "e8", "source": "order_svc", "target": "postgres", "communicationType": "sync" },
|
|
246
|
+
{ "id": "e9", "source": "user_svc", "target": "redis", "communicationType": "sync", "label": "session cache" },
|
|
247
|
+
{ "id": "e10", "source": "monitoring", "target": "order_svc", "communicationType": "dep" },
|
|
248
|
+
{ "id": "e11", "source": "monitoring", "target": "postgres", "communicationType": "dep" }
|
|
249
|
+
]
|
|
250
|
+
}
|
|
251
|
+
\`\`\`
|
|
252
|
+
|
|
253
|
+
---
|
|
254
|
+
|
|
255
|
+
## 💡 MERMAID CODE GENERATION FEW-SHOT EXAMPLES
|
|
256
|
+
|
|
257
|
+
### Example 1: 3-Tier Web App
|
|
258
|
+
* **User Prompt**: "Create a 3-tier Web App with a React client, Express API, and PostgreSQL database."
|
|
259
|
+
* **Mermaid Output**:
|
|
260
|
+
\`\`\`mermaid
|
|
261
|
+
graph LR
|
|
262
|
+
subgraph Client["Client Tier"]
|
|
263
|
+
ReactClient["React Client App<br>[React]"]
|
|
264
|
+
end
|
|
265
|
+
subgraph Compute["Compute Tier"]
|
|
266
|
+
ExpressAPI["Express API<br>[Express.js]"]
|
|
267
|
+
end
|
|
268
|
+
subgraph Data["Data Tier"]
|
|
269
|
+
PostgreSQLDB[("PostgreSQL DB<br>[PostgreSQL]")]
|
|
270
|
+
end
|
|
271
|
+
ReactClient -->|"HTTPS REST"| ExpressAPI
|
|
272
|
+
ExpressAPI -->|"SQL query"| PostgreSQLDB
|
|
273
|
+
\`\`\`
|
|
274
|
+
|
|
275
|
+
### Example 2: E-Commerce Queue
|
|
276
|
+
* **User Prompt**: "Draw an e-commerce backend with an Order Service publishing order events to Kafka and a Payment Service consuming them."
|
|
277
|
+
* **Mermaid Output**:
|
|
278
|
+
\`\`\`mermaid
|
|
279
|
+
graph LR
|
|
280
|
+
subgraph Compute["Compute Tier"]
|
|
281
|
+
OrderService["Order Service<br>[Go]"]
|
|
282
|
+
PaymentService["Payment Service<br>[Node.js]"]
|
|
283
|
+
end
|
|
284
|
+
subgraph Async["Async Tier"]
|
|
285
|
+
KafkaBroker["Kafka Message Bus<br>[Kafka]"]
|
|
286
|
+
end
|
|
287
|
+
OrderService -.->|"publish order.created"| KafkaBroker
|
|
288
|
+
KafkaBroker -.->|"consume event"| PaymentService
|
|
289
|
+
\`\`\`
|
|
290
|
+
|
|
291
|
+
### Example 3: VOD Video Streaming
|
|
292
|
+
* **User Prompt**: "Create a video transcoder where raw uploads to S3 trigger an FFmpeg worker which writes HLS output to an output S3 bucket."
|
|
293
|
+
* **Mermaid Output**:
|
|
294
|
+
\`\`\`mermaid
|
|
295
|
+
graph LR
|
|
296
|
+
subgraph Compute["Compute Tier"]
|
|
297
|
+
Transcoder["Transcoder Worker<br>[FFmpeg]"]
|
|
298
|
+
end
|
|
299
|
+
subgraph Data["Data Tier"]
|
|
300
|
+
RawBucket[("S3 Upload Bucket<br>[S3]")]
|
|
301
|
+
OutputBucket[("S3 Output Bucket<br>[S3]")]
|
|
302
|
+
end
|
|
303
|
+
RawBucket -.->|"S3 event notification"| Transcoder
|
|
304
|
+
Transcoder -->|"write HLS streams"| OutputBucket
|
|
305
|
+
\`\`\`
|
|
306
|
+
|
|
307
|
+
### Example 4: Real-time Live Chat
|
|
308
|
+
* **User Prompt**: "Design a live chat where client connects to WebSocket gateway which forwards chat messages to a Chat Service to store in MongoDB."
|
|
309
|
+
* **Mermaid Output**:
|
|
310
|
+
\`\`\`mermaid
|
|
311
|
+
graph LR
|
|
312
|
+
subgraph Edge["Edge Tier"]
|
|
313
|
+
WSGateway["WebSocket Gateway<br>[Node.js]"]
|
|
314
|
+
end
|
|
315
|
+
subgraph Compute["Compute Tier"]
|
|
316
|
+
ChatService["Chat Service<br>[Go]"]
|
|
317
|
+
end
|
|
318
|
+
subgraph Data["Data Tier"]
|
|
319
|
+
MongoDB[("MongoDB Chat Store<br>[MongoDB]")]
|
|
320
|
+
end
|
|
321
|
+
WSGateway -.->|"WebSocket forward"| ChatService
|
|
322
|
+
ChatService -->|"NoSQL write"| MongoDB
|
|
323
|
+
\`\`\`
|
|
324
|
+
`;
|
|
325
|
+
}
|
|
326
|
+
//# sourceMappingURL=read-me.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"read-me.js","sourceRoot":"","sources":["../../src/tools/read-me.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,SAAS;IACvB,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAkUR,CAAC;AACF,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { SaveCheckpointInput } from '../lib/schema.js';
|
|
2
|
+
export declare function saveCheckpoint(input: SaveCheckpointInput): Promise<{
|
|
3
|
+
success: boolean;
|
|
4
|
+
name: string;
|
|
5
|
+
savedAt: string;
|
|
6
|
+
nodeCount: number;
|
|
7
|
+
edgeCount: number;
|
|
8
|
+
overwritten?: boolean;
|
|
9
|
+
error?: string;
|
|
10
|
+
}>;
|
|
11
|
+
//# sourceMappingURL=save-checkpoint.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"save-checkpoint.d.ts","sourceRoot":"","sources":["../../src/tools/save-checkpoint.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAI5D,wBAAsB,cAAc,CAAC,KAAK,EAAE,mBAAmB,GAAG,OAAO,CAAC;IACxE,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC,CAcD"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { getDiagramState, hasDiagramState } from '../lib/diagram-state.js';
|
|
2
|
+
import { saveCheckpoint as saveCheckpointToStore } from '../lib/checkpoints.js';
|
|
3
|
+
export async function saveCheckpoint(input) {
|
|
4
|
+
if (!hasDiagramState()) {
|
|
5
|
+
return {
|
|
6
|
+
success: false,
|
|
7
|
+
name: input.name,
|
|
8
|
+
savedAt: '',
|
|
9
|
+
nodeCount: 0,
|
|
10
|
+
edgeCount: 0,
|
|
11
|
+
error: 'No diagram to save. Call generate_diagram or apply_template first.',
|
|
12
|
+
};
|
|
13
|
+
}
|
|
14
|
+
const state = getDiagramState();
|
|
15
|
+
return saveCheckpointToStore(input.name, input.description, state);
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=save-checkpoint.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"save-checkpoint.js","sourceRoot":"","sources":["../../src/tools/save-checkpoint.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC3E,OAAO,EAAE,cAAc,IAAI,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAEhF,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,KAA0B;IAS7D,IAAI,CAAC,eAAe,EAAE,EAAE,CAAC;QACvB,OAAO;YACL,OAAO,EAAE,KAAK;YACd,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,OAAO,EAAE,EAAE;YACX,SAAS,EAAE,CAAC;YACZ,SAAS,EAAE,CAAC;YACZ,KAAK,EAAE,oEAAoE;SAC5E,CAAC;IACJ,CAAC;IAED,MAAM,KAAK,GAAG,eAAe,EAAE,CAAC;IAChC,OAAO,qBAAqB,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;AACrE,CAAC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import type { ReactFlowNode, ReactFlowEdge } from '../types/index.js';
|
|
2
|
+
import type { UpdateDiagramInput } from '../lib/schema.js';
|
|
3
|
+
export declare function updateDiagram(input: UpdateDiagramInput): Promise<{
|
|
4
|
+
success: boolean;
|
|
5
|
+
nodes: ReactFlowNode[];
|
|
6
|
+
edges: ReactFlowEdge[];
|
|
7
|
+
message: string;
|
|
8
|
+
changes: {
|
|
9
|
+
nodesAdded: number;
|
|
10
|
+
nodesRemoved: number;
|
|
11
|
+
nodesUpdated: number;
|
|
12
|
+
edgesAdded: number;
|
|
13
|
+
edgesRemoved: number;
|
|
14
|
+
nodesRepositioned: number;
|
|
15
|
+
};
|
|
16
|
+
sessionId?: string;
|
|
17
|
+
diagramUrl?: string;
|
|
18
|
+
error?: string;
|
|
19
|
+
}>;
|
|
20
|
+
//# sourceMappingURL=update-diagram.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"update-diagram.d.ts","sourceRoot":"","sources":["../../src/tools/update-diagram.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AACtE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAsE3D,wBAAsB,aAAa,CAAC,KAAK,EAAE,kBAAkB,GAAG,OAAO,CAAC;IACtE,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,aAAa,EAAE,CAAC;IACvB,KAAK,EAAE,aAAa,EAAE,CAAC;IACvB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE;QACP,UAAU,EAAE,MAAM,CAAC;QACnB,YAAY,EAAE,MAAM,CAAC;QACrB,YAAY,EAAE,MAAM,CAAC;QACrB,UAAU,EAAE,MAAM,CAAC;QACnB,YAAY,EAAE,MAAM,CAAC;QACrB,iBAAiB,EAAE,MAAM,CAAC;KAC3B,CAAC;IACF,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC,CAmJD"}
|