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":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.test.d.ts","sourceRoot":"","sources":["../../../src/lib/__tests__/constants.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { describe, it, expect } from 'vitest';
|
|
2
|
+
import { TIER_ORDER, TIER_RANK, TIER_COLORS, COMM_COLORS, DEFAULT_NODE_WIDTH, isTier, } from '../constants.js';
|
|
3
|
+
describe('TIER_ORDER', () => {
|
|
4
|
+
it('places client first and external after data', () => {
|
|
5
|
+
expect(TIER_ORDER[0]).toBe('client');
|
|
6
|
+
expect(TIER_ORDER.indexOf('data')).toBeGreaterThan(TIER_ORDER.indexOf('compute'));
|
|
7
|
+
expect(TIER_ORDER.indexOf('external')).toBeGreaterThan(TIER_ORDER.indexOf('data'));
|
|
8
|
+
});
|
|
9
|
+
});
|
|
10
|
+
describe('TIER_RANK', () => {
|
|
11
|
+
it('assigns monotonic ranks matching left-to-right flow', () => {
|
|
12
|
+
expect(TIER_RANK.client).toBe(0);
|
|
13
|
+
expect(TIER_RANK.edge).toBe(1);
|
|
14
|
+
expect(TIER_RANK.compute).toBe(2);
|
|
15
|
+
expect(TIER_RANK.async).toBe(3);
|
|
16
|
+
expect(TIER_RANK.data).toBe(4);
|
|
17
|
+
expect(TIER_RANK.external).toBe(5);
|
|
18
|
+
});
|
|
19
|
+
});
|
|
20
|
+
describe('TIER_COLORS', () => {
|
|
21
|
+
it('provides a color for every tier', () => {
|
|
22
|
+
for (const tier of TIER_ORDER) {
|
|
23
|
+
expect(TIER_COLORS[tier]).toMatch(/^#[0-9a-f]{6}$/i);
|
|
24
|
+
}
|
|
25
|
+
});
|
|
26
|
+
});
|
|
27
|
+
describe('COMM_COLORS', () => {
|
|
28
|
+
it('animates async/stream/event but not sync/dep', () => {
|
|
29
|
+
expect(COMM_COLORS.async.animated).toBe(true);
|
|
30
|
+
expect(COMM_COLORS.stream.animated).toBe(true);
|
|
31
|
+
expect(COMM_COLORS.event.animated).toBe(true);
|
|
32
|
+
expect(COMM_COLORS.sync.animated).toBe(false);
|
|
33
|
+
expect(COMM_COLORS.dep.animated).toBe(false);
|
|
34
|
+
});
|
|
35
|
+
it('keeps the default node size constants', () => {
|
|
36
|
+
expect(DEFAULT_NODE_WIDTH).toBe(200);
|
|
37
|
+
});
|
|
38
|
+
});
|
|
39
|
+
describe('isTier', () => {
|
|
40
|
+
it('validates known tiers and rejects junk', () => {
|
|
41
|
+
expect(isTier('compute')).toBe(true);
|
|
42
|
+
expect(isTier('COMPUTE')).toBe(true);
|
|
43
|
+
expect(isTier('bogus')).toBe(false);
|
|
44
|
+
expect(isTier(undefined)).toBe(false);
|
|
45
|
+
});
|
|
46
|
+
});
|
|
47
|
+
//# sourceMappingURL=constants.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.test.js","sourceRoot":"","sources":["../../../src/lib/__tests__/constants.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"diagram-state.test.d.ts","sourceRoot":"","sources":["../../../src/lib/__tests__/diagram-state.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
import { beforeEach, describe, it, expect, vi } from 'vitest';
|
|
2
|
+
function makeNode(id, overrides = {}) {
|
|
3
|
+
return {
|
|
4
|
+
id,
|
|
5
|
+
type: 'systemNode',
|
|
6
|
+
position: { x: 0, y: 0 },
|
|
7
|
+
data: { label: id, icon: 'box', layer: 'compute', tier: 'compute', tierColor: '#0d9488' },
|
|
8
|
+
width: 200,
|
|
9
|
+
height: 70,
|
|
10
|
+
...overrides,
|
|
11
|
+
};
|
|
12
|
+
}
|
|
13
|
+
function makeEdge(id, source, target) {
|
|
14
|
+
return {
|
|
15
|
+
id,
|
|
16
|
+
source,
|
|
17
|
+
target,
|
|
18
|
+
type: 'simpleFloating',
|
|
19
|
+
animated: false,
|
|
20
|
+
label: '',
|
|
21
|
+
labelShowBg: true,
|
|
22
|
+
labelBgPadding: [8, 4],
|
|
23
|
+
labelBgBorderRadius: 4,
|
|
24
|
+
labelBgStyle: { fill: '#1e1e2e' },
|
|
25
|
+
labelStyle: { fontSize: 10, fontWeight: 600, fill: '#e2e8f0' },
|
|
26
|
+
style: { stroke: '#94a3b8', strokeWidth: 2, strokeDasharray: '' },
|
|
27
|
+
markerEnd: { type: 'arrowclosed', color: '#94a3b8' },
|
|
28
|
+
data: { communicationType: 'sync', pathType: 'smooth', label: '' },
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
describe('diagram-state', () => {
|
|
32
|
+
beforeEach(() => {
|
|
33
|
+
vi.resetModules();
|
|
34
|
+
});
|
|
35
|
+
it('returns empty state before anything is set', async () => {
|
|
36
|
+
const { getDiagramState } = await import('../diagram-state.js');
|
|
37
|
+
const state = getDiagramState();
|
|
38
|
+
expect(state.nodes).toEqual([]);
|
|
39
|
+
expect(state.edges).toEqual([]);
|
|
40
|
+
expect(state.sessionId).toBeUndefined();
|
|
41
|
+
});
|
|
42
|
+
it('stores and returns nodes/edges and sessionId', async () => {
|
|
43
|
+
const { setDiagramState, getDiagramState } = await import('../diagram-state.js');
|
|
44
|
+
const nodes = [makeNode('a'), makeNode('b')];
|
|
45
|
+
const edges = [makeEdge('e1', 'a', 'b')];
|
|
46
|
+
setDiagramState({ nodes, edges, sessionId: 'sess-123' });
|
|
47
|
+
const state = getDiagramState();
|
|
48
|
+
expect(state.nodes).toHaveLength(2);
|
|
49
|
+
expect(state.edges).toHaveLength(1);
|
|
50
|
+
expect(state.sessionId).toBe('sess-123');
|
|
51
|
+
// returned copies must not mutate the store
|
|
52
|
+
state.nodes.push(makeNode('c'));
|
|
53
|
+
expect(getDiagramState().nodes).toHaveLength(2);
|
|
54
|
+
});
|
|
55
|
+
it('sets sessionId independently without losing nodes', async () => {
|
|
56
|
+
const { setDiagramState, setDiagramSessionId, getDiagramState } = await import('../diagram-state.js');
|
|
57
|
+
setDiagramState({ nodes: [makeNode('a')], edges: [] });
|
|
58
|
+
setDiagramSessionId('sess-456');
|
|
59
|
+
expect(getDiagramState().sessionId).toBe('sess-456');
|
|
60
|
+
expect(getDiagramState().nodes).toHaveLength(1);
|
|
61
|
+
});
|
|
62
|
+
it('ignores falsy session ids', async () => {
|
|
63
|
+
const { setDiagramState, setDiagramSessionId, getDiagramState } = await import('../diagram-state.js');
|
|
64
|
+
setDiagramState({ nodes: [makeNode('a')], edges: [] });
|
|
65
|
+
setDiagramSessionId(undefined);
|
|
66
|
+
expect(getDiagramState().sessionId).toBeUndefined();
|
|
67
|
+
});
|
|
68
|
+
it('hasDiagramState reflects whether state was set', async () => {
|
|
69
|
+
const { setDiagramState, hasDiagramState } = await import('../diagram-state.js');
|
|
70
|
+
expect(hasDiagramState()).toBe(false);
|
|
71
|
+
setDiagramState({ nodes: [makeNode('a')], edges: [] });
|
|
72
|
+
expect(hasDiagramState()).toBe(true);
|
|
73
|
+
});
|
|
74
|
+
});
|
|
75
|
+
//# sourceMappingURL=diagram-state.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"diagram-state.test.js","sourceRoot":"","sources":["../../../src/lib/__tests__/diagram-state.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"elk-runner.test.d.ts","sourceRoot":"","sources":["../../../src/lib/__tests__/elk-runner.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
import { describe, it, expect } from 'vitest';
|
|
2
|
+
import { generateELKOptions, runFallbackLayout } from '../elk-runner.js';
|
|
3
|
+
function makeNode(id, overrides = {}) {
|
|
4
|
+
return {
|
|
5
|
+
id,
|
|
6
|
+
type: 'systemNode',
|
|
7
|
+
label: id,
|
|
8
|
+
layer: 'compute',
|
|
9
|
+
width: 200,
|
|
10
|
+
height: 70,
|
|
11
|
+
icon: 'box',
|
|
12
|
+
metadata: {},
|
|
13
|
+
...overrides,
|
|
14
|
+
};
|
|
15
|
+
}
|
|
16
|
+
function makeEdge(id, source, target) {
|
|
17
|
+
return {
|
|
18
|
+
id,
|
|
19
|
+
source,
|
|
20
|
+
target,
|
|
21
|
+
communicationType: 'sync',
|
|
22
|
+
pathType: 'smooth',
|
|
23
|
+
label: '',
|
|
24
|
+
labelPosition: 'center',
|
|
25
|
+
animated: false,
|
|
26
|
+
style: { stroke: '#94a3b8', strokeDasharray: '', strokeWidth: 2 },
|
|
27
|
+
markerEnd: 'arrowclosed',
|
|
28
|
+
markerStart: 'none',
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
describe('generateELKOptions', () => {
|
|
32
|
+
it('honors the requested direction', () => {
|
|
33
|
+
expect(generateELKOptions('DOWN')['elk.direction']).toBe('DOWN');
|
|
34
|
+
expect(generateELKOptions('UP')['elk.direction']).toBe('UP');
|
|
35
|
+
expect(generateELKOptions('LEFT')['elk.direction']).toBe('LEFT');
|
|
36
|
+
expect(generateELKOptions('RIGHT')['elk.direction']).toBe('RIGHT');
|
|
37
|
+
});
|
|
38
|
+
it('defaults to RIGHT', () => {
|
|
39
|
+
expect(generateELKOptions()['elk.direction']).toBe('RIGHT');
|
|
40
|
+
});
|
|
41
|
+
it('scales spacing by density', () => {
|
|
42
|
+
const low = generateELKOptions('RIGHT', 'low');
|
|
43
|
+
const high = generateELKOptions('RIGHT', 'high');
|
|
44
|
+
expect(Number(high['elk.spacing.nodeNode'])).toBeGreaterThan(Number(low['elk.spacing.nodeNode']));
|
|
45
|
+
});
|
|
46
|
+
});
|
|
47
|
+
describe('runFallbackLayout', () => {
|
|
48
|
+
it('emits parentNode at the top level for grouped children', () => {
|
|
49
|
+
const group = makeNode('backend_group', {
|
|
50
|
+
isGroup: true,
|
|
51
|
+
layer: 'compute',
|
|
52
|
+
width: 500,
|
|
53
|
+
height: 280,
|
|
54
|
+
});
|
|
55
|
+
const child = makeNode('order_svc', {
|
|
56
|
+
parentId: 'backend_group',
|
|
57
|
+
layer: 'compute',
|
|
58
|
+
});
|
|
59
|
+
const edge = makeEdge('e1', 'client', 'order_svc');
|
|
60
|
+
const result = runFallbackLayout([group, child, makeNode('client', { layer: 'client' })], [edge]);
|
|
61
|
+
const outputChild = result.nodes.find(n => n.id === 'order_svc');
|
|
62
|
+
expect(outputChild).toBeDefined();
|
|
63
|
+
expect(outputChild?.parentNode).toBe('backend_group');
|
|
64
|
+
expect(outputChild?.data.parentId).toBe('backend_group');
|
|
65
|
+
const outputGroup = result.nodes.find(n => n.id === 'backend_group');
|
|
66
|
+
expect(outputGroup?.type).toBe('groupNode');
|
|
67
|
+
expect(outputGroup?.data.isGroup).toBe(true);
|
|
68
|
+
});
|
|
69
|
+
it('produces positioned, non-overlapping nodes', () => {
|
|
70
|
+
const nodes = [
|
|
71
|
+
makeNode('web', { layer: 'client' }),
|
|
72
|
+
makeNode('gw', { layer: 'edge' }),
|
|
73
|
+
makeNode('db', { layer: 'data' }),
|
|
74
|
+
];
|
|
75
|
+
const edges = [makeEdge('e1', 'web', 'gw'), makeEdge('e2', 'gw', 'db')];
|
|
76
|
+
const result = runFallbackLayout(nodes, edges);
|
|
77
|
+
expect(result.nodes).toHaveLength(3);
|
|
78
|
+
for (const node of result.nodes) {
|
|
79
|
+
expect(typeof node.position.x).toBe('number');
|
|
80
|
+
expect(typeof node.position.y).toBe('number');
|
|
81
|
+
expect(node.data.tierColor).toMatch(/^#[0-9a-f]{6}$/i);
|
|
82
|
+
}
|
|
83
|
+
const positions = result.nodes.map(n => `${n.position.x},${n.position.y}`);
|
|
84
|
+
expect(new Set(positions).size).toBe(3);
|
|
85
|
+
});
|
|
86
|
+
});
|
|
87
|
+
//# sourceMappingURL=elk-runner.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"elk-runner.test.js","sourceRoot":"","sources":["../../../src/lib/__tests__/elk-runner.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
export interface Checkpoint {
|
|
2
|
+
name: string;
|
|
3
|
+
description?: string;
|
|
4
|
+
savedAt: string;
|
|
5
|
+
state: {
|
|
6
|
+
nodes: unknown[];
|
|
7
|
+
edges: unknown[];
|
|
8
|
+
};
|
|
9
|
+
}
|
|
10
|
+
export declare function saveCheckpoint(name: string, description: string | undefined, state: {
|
|
11
|
+
nodes: unknown[];
|
|
12
|
+
edges: unknown[];
|
|
13
|
+
}): {
|
|
14
|
+
success: boolean;
|
|
15
|
+
name: string;
|
|
16
|
+
savedAt: string;
|
|
17
|
+
nodeCount: number;
|
|
18
|
+
edgeCount: number;
|
|
19
|
+
overwritten?: boolean;
|
|
20
|
+
};
|
|
21
|
+
export declare function loadCheckpoint(name: string): {
|
|
22
|
+
success: boolean;
|
|
23
|
+
name?: string;
|
|
24
|
+
restoredAt?: string;
|
|
25
|
+
nodeCount?: number;
|
|
26
|
+
edgeCount?: number;
|
|
27
|
+
message?: string;
|
|
28
|
+
availableCheckpoints?: Array<{
|
|
29
|
+
name: string;
|
|
30
|
+
description?: string;
|
|
31
|
+
savedAt: string;
|
|
32
|
+
nodeCount: number;
|
|
33
|
+
edgeCount: number;
|
|
34
|
+
}>;
|
|
35
|
+
error?: string;
|
|
36
|
+
};
|
|
37
|
+
export declare function getCheckpointState(name: string): {
|
|
38
|
+
nodes: unknown[];
|
|
39
|
+
edges: unknown[];
|
|
40
|
+
} | null;
|
|
41
|
+
export declare function listCheckpoints(): Array<{
|
|
42
|
+
name: string;
|
|
43
|
+
description?: string;
|
|
44
|
+
savedAt: string;
|
|
45
|
+
nodeCount: number;
|
|
46
|
+
edgeCount: number;
|
|
47
|
+
}>;
|
|
48
|
+
//# sourceMappingURL=checkpoints.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"checkpoints.d.ts","sourceRoot":"","sources":["../../src/lib/checkpoints.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE;QACL,KAAK,EAAE,OAAO,EAAE,CAAC;QACjB,KAAK,EAAE,OAAO,EAAE,CAAC;KAClB,CAAC;CACH;AAID,wBAAgB,cAAc,CAC5B,IAAI,EAAE,MAAM,EACZ,WAAW,EAAE,MAAM,GAAG,SAAS,EAC/B,KAAK,EAAE;IAAE,KAAK,EAAE,OAAO,EAAE,CAAC;IAAC,KAAK,EAAE,OAAO,EAAE,CAAA;CAAE,GAC5C;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,OAAO,CAAA;CAAE,CAsBlH;AAED,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG;IAC5C,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,CAoBA;AAED,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG;IAAE,KAAK,EAAE,OAAO,EAAE,CAAC;IAAC,KAAK,EAAE,OAAO,EAAE,CAAA;CAAE,GAAG,IAAI,CAM9F;AAED,wBAAgB,eAAe,IAAI,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,CAAC,CAQtI"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
const checkpoints = new Map();
|
|
2
|
+
export function saveCheckpoint(name, description, state) {
|
|
3
|
+
const savedAt = new Date().toISOString();
|
|
4
|
+
const overwritten = checkpoints.has(name);
|
|
5
|
+
checkpoints.set(name, {
|
|
6
|
+
name,
|
|
7
|
+
description,
|
|
8
|
+
savedAt,
|
|
9
|
+
state: {
|
|
10
|
+
nodes: JSON.parse(JSON.stringify(state.nodes)),
|
|
11
|
+
edges: JSON.parse(JSON.stringify(state.edges)),
|
|
12
|
+
},
|
|
13
|
+
});
|
|
14
|
+
return {
|
|
15
|
+
success: true,
|
|
16
|
+
name,
|
|
17
|
+
savedAt,
|
|
18
|
+
nodeCount: state.nodes.length,
|
|
19
|
+
edgeCount: state.edges.length,
|
|
20
|
+
overwritten,
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
export function loadCheckpoint(name) {
|
|
24
|
+
const checkpoint = checkpoints.get(name);
|
|
25
|
+
if (!checkpoint) {
|
|
26
|
+
return {
|
|
27
|
+
success: false,
|
|
28
|
+
error: `Checkpoint '${name}' not found`,
|
|
29
|
+
availableCheckpoints: listCheckpoints(),
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
const restoredAt = new Date().toISOString();
|
|
33
|
+
return {
|
|
34
|
+
success: true,
|
|
35
|
+
name: checkpoint.name,
|
|
36
|
+
restoredAt,
|
|
37
|
+
nodeCount: checkpoint.state.nodes.length,
|
|
38
|
+
edgeCount: checkpoint.state.edges.length,
|
|
39
|
+
message: 'Diagram restored. Call get_diagram_state to view it.',
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
export function getCheckpointState(name) {
|
|
43
|
+
const checkpoint = checkpoints.get(name);
|
|
44
|
+
return checkpoint ? {
|
|
45
|
+
nodes: JSON.parse(JSON.stringify(checkpoint.state.nodes)),
|
|
46
|
+
edges: JSON.parse(JSON.stringify(checkpoint.state.edges)),
|
|
47
|
+
} : null;
|
|
48
|
+
}
|
|
49
|
+
export function listCheckpoints() {
|
|
50
|
+
return Array.from(checkpoints.values()).map(cp => ({
|
|
51
|
+
name: cp.name,
|
|
52
|
+
description: cp.description,
|
|
53
|
+
savedAt: cp.savedAt,
|
|
54
|
+
nodeCount: cp.state.nodes.length,
|
|
55
|
+
edgeCount: cp.state.edges.length,
|
|
56
|
+
}));
|
|
57
|
+
}
|
|
58
|
+
//# sourceMappingURL=checkpoints.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"checkpoints.js","sourceRoot":"","sources":["../../src/lib/checkpoints.ts"],"names":[],"mappings":"AAUA,MAAM,WAAW,GAAG,IAAI,GAAG,EAAsB,CAAC;AAElD,MAAM,UAAU,cAAc,CAC5B,IAAY,EACZ,WAA+B,EAC/B,KAA6C;IAE7C,MAAM,OAAO,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IACzC,MAAM,WAAW,GAAG,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAE1C,WAAW,CAAC,GAAG,CAAC,IAAI,EAAE;QACpB,IAAI;QACJ,WAAW;QACX,OAAO;QACP,KAAK,EAAE;YACL,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YAC9C,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;SAC/C;KACF,CAAC,CAAC;IAEH,OAAO;QACL,OAAO,EAAE,IAAI;QACb,IAAI;QACJ,OAAO;QACP,SAAS,EAAE,KAAK,CAAC,KAAK,CAAC,MAAM;QAC7B,SAAS,EAAE,KAAK,CAAC,KAAK,CAAC,MAAM;QAC7B,WAAW;KACZ,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,IAAY;IAUzC,MAAM,UAAU,GAAG,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAEzC,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,OAAO;YACL,OAAO,EAAE,KAAK;YACd,KAAK,EAAE,eAAe,IAAI,aAAa;YACvC,oBAAoB,EAAE,eAAe,EAAE;SACxC,CAAC;IACJ,CAAC;IAED,MAAM,UAAU,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAC5C,OAAO;QACL,OAAO,EAAE,IAAI;QACb,IAAI,EAAE,UAAU,CAAC,IAAI;QACrB,UAAU;QACV,SAAS,EAAE,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM;QACxC,SAAS,EAAE,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM;QACxC,OAAO,EAAE,sDAAsD;KAChE,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,IAAY;IAC7C,MAAM,UAAU,GAAG,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACzC,OAAO,UAAU,CAAC,CAAC,CAAC;QAClB,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACzD,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;KAC1D,CAAC,CAAC,CAAC,IAAI,CAAC;AACX,CAAC;AAED,MAAM,UAAU,eAAe;IAC7B,OAAO,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;QACjD,IAAI,EAAE,EAAE,CAAC,IAAI;QACb,WAAW,EAAE,EAAE,CAAC,WAAW;QAC3B,OAAO,EAAE,EAAE,CAAC,OAAO;QACnB,SAAS,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM;QAChC,SAAS,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM;KACjC,CAAC,CAAC,CAAC;AACN,CAAC"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import type { CommunicationType, TierType } from '../types/index.js';
|
|
2
|
+
/**
|
|
3
|
+
* Canonical MCP constants — the single source of truth for the tier palette,
|
|
4
|
+
* tier ordering, communication styles, and fallback positions.
|
|
5
|
+
*
|
|
6
|
+
* This palette matches the tool contract (index.ts descriptions + read_me) and
|
|
7
|
+
* is deliberately kept in one place so generate / update / layout / templates /
|
|
8
|
+
* validation never drift from each other. If a color must change, change it
|
|
9
|
+
* here and in the corresponding frontend theme documentation.
|
|
10
|
+
*/
|
|
11
|
+
export declare const TIER_ORDER: TierType[];
|
|
12
|
+
/** Tier rank for direction/topology checks — lower number = further upstream (left). */
|
|
13
|
+
export declare const TIER_RANK: Record<TierType, number>;
|
|
14
|
+
export declare const TIER_COLORS: Record<TierType, string>;
|
|
15
|
+
export interface CommStyle {
|
|
16
|
+
color: string;
|
|
17
|
+
dash: string;
|
|
18
|
+
animated: boolean;
|
|
19
|
+
}
|
|
20
|
+
export declare const COMM_COLORS: Record<CommunicationType, CommStyle>;
|
|
21
|
+
export declare const DEFAULT_NODE_WIDTH = 200;
|
|
22
|
+
export declare const DEFAULT_NODE_HEIGHT = 100;
|
|
23
|
+
export declare const DEFAULT_GROUP_WIDTH = 500;
|
|
24
|
+
export declare const DEFAULT_GROUP_HEIGHT = 280;
|
|
25
|
+
/** Fallback tier column positions (LEFT-RIGHT layout). */
|
|
26
|
+
export declare const TIER_X_POSITIONS_LR: Record<TierType, number>;
|
|
27
|
+
export type LayoutDirection = 'RIGHT' | 'DOWN' | 'LEFT' | 'UP';
|
|
28
|
+
export declare function isTier(value: string | undefined): value is TierType;
|
|
29
|
+
//# sourceMappingURL=constants.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/lib/constants.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAErE;;;;;;;;GAQG;AAEH,eAAO,MAAM,UAAU,EAAE,QAAQ,EAQhC,CAAC;AAEF,wFAAwF;AACxF,eAAO,MAAM,SAAS,EAAE,MAAM,CAAC,QAAQ,EAAE,MAAM,CAQ9C,CAAC;AAEF,eAAO,MAAM,WAAW,EAAE,MAAM,CAAC,QAAQ,EAAE,MAAM,CAQhD,CAAC;AAEF,MAAM,WAAW,SAAS;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED,eAAO,MAAM,WAAW,EAAE,MAAM,CAAC,iBAAiB,EAAE,SAAS,CAM5D,CAAC;AAEF,eAAO,MAAM,kBAAkB,MAAM,CAAC;AACtC,eAAO,MAAM,mBAAmB,MAAM,CAAC;AACvC,eAAO,MAAM,mBAAmB,MAAM,CAAC;AACvC,eAAO,MAAM,oBAAoB,MAAM,CAAC;AAExC,0DAA0D;AAC1D,eAAO,MAAM,mBAAmB,EAAE,MAAM,CAAC,QAAQ,EAAE,MAAM,CAQxD,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;AAE/D,wBAAgB,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,KAAK,IAAI,QAAQ,CAEnE"}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Canonical MCP constants — the single source of truth for the tier palette,
|
|
3
|
+
* tier ordering, communication styles, and fallback positions.
|
|
4
|
+
*
|
|
5
|
+
* This palette matches the tool contract (index.ts descriptions + read_me) and
|
|
6
|
+
* is deliberately kept in one place so generate / update / layout / templates /
|
|
7
|
+
* validation never drift from each other. If a color must change, change it
|
|
8
|
+
* here and in the corresponding frontend theme documentation.
|
|
9
|
+
*/
|
|
10
|
+
export const TIER_ORDER = [
|
|
11
|
+
'client',
|
|
12
|
+
'edge',
|
|
13
|
+
'compute',
|
|
14
|
+
'async',
|
|
15
|
+
'data',
|
|
16
|
+
'external',
|
|
17
|
+
'observe',
|
|
18
|
+
];
|
|
19
|
+
/** Tier rank for direction/topology checks — lower number = further upstream (left). */
|
|
20
|
+
export const TIER_RANK = {
|
|
21
|
+
client: 0,
|
|
22
|
+
edge: 1,
|
|
23
|
+
compute: 2,
|
|
24
|
+
async: 3,
|
|
25
|
+
data: 4,
|
|
26
|
+
external: 5,
|
|
27
|
+
observe: 6,
|
|
28
|
+
};
|
|
29
|
+
export const TIER_COLORS = {
|
|
30
|
+
client: '#64748b', // slate
|
|
31
|
+
edge: '#6366f1', // indigo
|
|
32
|
+
compute: '#0d9488', // teal
|
|
33
|
+
async: '#d97706', // amber
|
|
34
|
+
data: '#3b82f6', // blue
|
|
35
|
+
external: '#8b5cf6', // violet
|
|
36
|
+
observe: '#6b7280', // gray
|
|
37
|
+
};
|
|
38
|
+
export const COMM_COLORS = {
|
|
39
|
+
sync: { color: '#94a3b8', dash: '', animated: false },
|
|
40
|
+
async: { color: '#f59e0b', dash: '8,4', animated: true },
|
|
41
|
+
stream: { color: '#10b981', dash: '4,2', animated: true },
|
|
42
|
+
event: { color: '#ec4899', dash: '2,3', animated: true },
|
|
43
|
+
dep: { color: '#94a3b8', dash: '6,6', animated: false },
|
|
44
|
+
};
|
|
45
|
+
export const DEFAULT_NODE_WIDTH = 200;
|
|
46
|
+
export const DEFAULT_NODE_HEIGHT = 100;
|
|
47
|
+
export const DEFAULT_GROUP_WIDTH = 500;
|
|
48
|
+
export const DEFAULT_GROUP_HEIGHT = 280;
|
|
49
|
+
/** Fallback tier column positions (LEFT-RIGHT layout). */
|
|
50
|
+
export const TIER_X_POSITIONS_LR = {
|
|
51
|
+
client: 50,
|
|
52
|
+
edge: 400,
|
|
53
|
+
compute: 750,
|
|
54
|
+
async: 1200,
|
|
55
|
+
data: 1550,
|
|
56
|
+
external: 1900,
|
|
57
|
+
observe: 2250,
|
|
58
|
+
};
|
|
59
|
+
export function isTier(value) {
|
|
60
|
+
return !!value && TIER_ORDER.includes(value.toLowerCase());
|
|
61
|
+
}
|
|
62
|
+
//# sourceMappingURL=constants.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/lib/constants.ts"],"names":[],"mappings":"AAEA;;;;;;;;GAQG;AAEH,MAAM,CAAC,MAAM,UAAU,GAAe;IACpC,QAAQ;IACR,MAAM;IACN,SAAS;IACT,OAAO;IACP,MAAM;IACN,UAAU;IACV,SAAS;CACV,CAAC;AAEF,wFAAwF;AACxF,MAAM,CAAC,MAAM,SAAS,GAA6B;IACjD,MAAM,EAAE,CAAC;IACT,IAAI,EAAE,CAAC;IACP,OAAO,EAAE,CAAC;IACV,KAAK,EAAE,CAAC;IACR,IAAI,EAAE,CAAC;IACP,QAAQ,EAAE,CAAC;IACX,OAAO,EAAE,CAAC;CACX,CAAC;AAEF,MAAM,CAAC,MAAM,WAAW,GAA6B;IACnD,MAAM,EAAI,SAAS,EAAE,QAAQ;IAC7B,IAAI,EAAM,SAAS,EAAE,SAAS;IAC9B,OAAO,EAAG,SAAS,EAAE,OAAO;IAC5B,KAAK,EAAK,SAAS,EAAE,QAAQ;IAC7B,IAAI,EAAM,SAAS,EAAE,OAAO;IAC5B,QAAQ,EAAE,SAAS,EAAE,SAAS;IAC9B,OAAO,EAAG,SAAS,EAAE,OAAO;CAC7B,CAAC;AAQF,MAAM,CAAC,MAAM,WAAW,GAAyC;IAC/D,IAAI,EAAI,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,EAAE,EAAK,QAAQ,EAAE,KAAK,EAAE;IAC1D,KAAK,EAAG,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE;IACzD,MAAM,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE;IACzD,KAAK,EAAG,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE;IACzD,GAAG,EAAK,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE;CAC3D,CAAC;AAEF,MAAM,CAAC,MAAM,kBAAkB,GAAG,GAAG,CAAC;AACtC,MAAM,CAAC,MAAM,mBAAmB,GAAG,GAAG,CAAC;AACvC,MAAM,CAAC,MAAM,mBAAmB,GAAG,GAAG,CAAC;AACvC,MAAM,CAAC,MAAM,oBAAoB,GAAG,GAAG,CAAC;AAExC,0DAA0D;AAC1D,MAAM,CAAC,MAAM,mBAAmB,GAA6B;IAC3D,MAAM,EAAE,EAAE;IACV,IAAI,EAAE,GAAG;IACT,OAAO,EAAE,GAAG;IACZ,KAAK,EAAE,IAAI;IACX,IAAI,EAAE,IAAI;IACV,QAAQ,EAAE,IAAI;IACd,OAAO,EAAE,IAAI;CACd,CAAC;AAIF,MAAM,UAAU,MAAM,CAAC,KAAyB;IAC9C,OAAO,CAAC,CAAC,KAAK,IAAI,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAC,WAAW,EAAc,CAAC,CAAC;AACzE,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { ReactFlowNode, ReactFlowEdge } from '../types/index.js';
|
|
2
|
+
export interface DiagramState {
|
|
3
|
+
nodes: ReactFlowNode[];
|
|
4
|
+
edges: ReactFlowEdge[];
|
|
5
|
+
sessionId?: string;
|
|
6
|
+
}
|
|
7
|
+
export declare function getDiagramState(): DiagramState;
|
|
8
|
+
export declare function setDiagramState(state: DiagramState): void;
|
|
9
|
+
export declare function setDiagramSessionId(sessionId: string | undefined): void;
|
|
10
|
+
export declare function hasDiagramState(): boolean;
|
|
11
|
+
/**
|
|
12
|
+
* Pull the latest diagram for a session from the frontend API and use it as the
|
|
13
|
+
* local working state. Sessions are intentionally world-readable (sharedCanvas),
|
|
14
|
+
* so this is a read-only sync — safe to call without auth. Returns false if the
|
|
15
|
+
* session is missing or the API is unreachable (local state is left untouched).
|
|
16
|
+
*/
|
|
17
|
+
export declare function syncDiagramStateFromSession(sessionId: string, apiBase?: string): Promise<boolean>;
|
|
18
|
+
//# sourceMappingURL=diagram-state.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"diagram-state.d.ts","sourceRoot":"","sources":["../../src/lib/diagram-state.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAGtE,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,aAAa,EAAE,CAAC;IACvB,KAAK,EAAE,aAAa,EAAE,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAID,wBAAgB,eAAe,IAAI,YAAY,CAS9C;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,YAAY,GAAG,IAAI,CAMzD;AAED,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,CAOvE;AAED,wBAAgB,eAAe,IAAI,OAAO,CAEzC;AAED;;;;;GAKG;AACH,wBAAsB,2BAA2B,CAC/C,SAAS,EAAE,MAAM,EACjB,OAAO,CAAC,EAAE,MAAM,GACf,OAAO,CAAC,OAAO,CAAC,CAYlB"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import { fetchWithTimeout } from './http.js';
|
|
2
|
+
let currentDiagramState = null;
|
|
3
|
+
export function getDiagramState() {
|
|
4
|
+
if (!currentDiagramState) {
|
|
5
|
+
return { nodes: [], edges: [] };
|
|
6
|
+
}
|
|
7
|
+
return {
|
|
8
|
+
nodes: [...currentDiagramState.nodes],
|
|
9
|
+
edges: [...currentDiagramState.edges],
|
|
10
|
+
...(currentDiagramState.sessionId ? { sessionId: currentDiagramState.sessionId } : {}),
|
|
11
|
+
};
|
|
12
|
+
}
|
|
13
|
+
export function setDiagramState(state) {
|
|
14
|
+
currentDiagramState = {
|
|
15
|
+
nodes: [...state.nodes],
|
|
16
|
+
edges: [...state.edges],
|
|
17
|
+
...(state.sessionId ? { sessionId: state.sessionId } : {}),
|
|
18
|
+
};
|
|
19
|
+
}
|
|
20
|
+
export function setDiagramSessionId(sessionId) {
|
|
21
|
+
if (!sessionId)
|
|
22
|
+
return;
|
|
23
|
+
if (!currentDiagramState) {
|
|
24
|
+
currentDiagramState = { nodes: [], edges: [], sessionId };
|
|
25
|
+
}
|
|
26
|
+
else {
|
|
27
|
+
currentDiagramState.sessionId = sessionId;
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
export function hasDiagramState() {
|
|
31
|
+
return currentDiagramState !== null;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Pull the latest diagram for a session from the frontend API and use it as the
|
|
35
|
+
* local working state. Sessions are intentionally world-readable (sharedCanvas),
|
|
36
|
+
* so this is a read-only sync — safe to call without auth. Returns false if the
|
|
37
|
+
* session is missing or the API is unreachable (local state is left untouched).
|
|
38
|
+
*/
|
|
39
|
+
export async function syncDiagramStateFromSession(sessionId, apiBase) {
|
|
40
|
+
const API_BASE = apiBase || process.env.API_BASE_URL || 'http://localhost:3000';
|
|
41
|
+
try {
|
|
42
|
+
const response = await fetchWithTimeout(`${API_BASE}/api/diagram/session/${encodeURIComponent(sessionId)}`);
|
|
43
|
+
if (!response.ok)
|
|
44
|
+
return false;
|
|
45
|
+
const data = await response.json();
|
|
46
|
+
if (!Array.isArray(data.nodes) || !Array.isArray(data.edges))
|
|
47
|
+
return false;
|
|
48
|
+
setDiagramState({ nodes: data.nodes, edges: data.edges, sessionId });
|
|
49
|
+
return true;
|
|
50
|
+
}
|
|
51
|
+
catch {
|
|
52
|
+
return false;
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
//# sourceMappingURL=diagram-state.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"diagram-state.js","sourceRoot":"","sources":["../../src/lib/diagram-state.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAQ7C,IAAI,mBAAmB,GAAwB,IAAI,CAAC;AAEpD,MAAM,UAAU,eAAe;IAC7B,IAAI,CAAC,mBAAmB,EAAE,CAAC;QACzB,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC;IAClC,CAAC;IACD,OAAO;QACL,KAAK,EAAE,CAAC,GAAG,mBAAmB,CAAC,KAAK,CAAC;QACrC,KAAK,EAAE,CAAC,GAAG,mBAAmB,CAAC,KAAK,CAAC;QACrC,GAAG,CAAC,mBAAmB,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,mBAAmB,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACvF,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,KAAmB;IACjD,mBAAmB,GAAG;QACpB,KAAK,EAAE,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC;QACvB,KAAK,EAAE,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC;QACvB,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,KAAK,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAC3D,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,SAA6B;IAC/D,IAAI,CAAC,SAAS;QAAE,OAAO;IACvB,IAAI,CAAC,mBAAmB,EAAE,CAAC;QACzB,mBAAmB,GAAG,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,SAAS,EAAE,CAAC;IAC5D,CAAC;SAAM,CAAC;QACN,mBAAmB,CAAC,SAAS,GAAG,SAAS,CAAC;IAC5C,CAAC;AACH,CAAC;AAED,MAAM,UAAU,eAAe;IAC7B,OAAO,mBAAmB,KAAK,IAAI,CAAC;AACtC,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,2BAA2B,CAC/C,SAAiB,EACjB,OAAgB;IAEhB,MAAM,QAAQ,GAAG,OAAO,IAAI,OAAO,CAAC,GAAG,CAAC,YAAY,IAAI,uBAAuB,CAAC;IAChF,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,gBAAgB,CAAC,GAAG,QAAQ,wBAAwB,kBAAkB,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;QAC5G,IAAI,CAAC,QAAQ,CAAC,EAAE;YAAE,OAAO,KAAK,CAAC;QAC/B,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAA0D,CAAC;QAC3F,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC;YAAE,OAAO,KAAK,CAAC;QAC3E,eAAe,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;QACrE,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import type { ArchitectureNode, ArchitectureEdge, ReactFlowNode, ReactFlowEdge } from '../types/index.js';
|
|
2
|
+
import type { ElkNode as LocalElkNode, ElkEdge as LocalElkEdge } from '../types/index.js';
|
|
3
|
+
import { type LayoutDirection } from './constants.js';
|
|
4
|
+
export interface LayoutOptions {
|
|
5
|
+
direction?: LayoutDirection;
|
|
6
|
+
spacingMultiplier?: number;
|
|
7
|
+
}
|
|
8
|
+
export interface LayoutResult {
|
|
9
|
+
nodes: ReactFlowNode[];
|
|
10
|
+
edges: ReactFlowEdge[];
|
|
11
|
+
elkPositions: Array<{
|
|
12
|
+
id: string;
|
|
13
|
+
x: number;
|
|
14
|
+
y: number;
|
|
15
|
+
width: number;
|
|
16
|
+
height: number;
|
|
17
|
+
}>;
|
|
18
|
+
}
|
|
19
|
+
export declare function generateELKOptions(direction?: LayoutDirection, density?: 'low' | 'medium' | 'high'): Record<string, string>;
|
|
20
|
+
export declare function computeDensity(nodes: ArchitectureNode[]): 'low' | 'medium' | 'high';
|
|
21
|
+
export declare function nodesToElkFormat(nodes: ArchitectureNode[]): LocalElkNode[];
|
|
22
|
+
export declare function edgesToElkFormat(edges: ArchitectureEdge[]): LocalElkEdge[];
|
|
23
|
+
export declare function runELKLayout(nodes: ArchitectureNode[], edges: ArchitectureEdge[], options?: LayoutOptions): Promise<LayoutResult>;
|
|
24
|
+
export declare function runFallbackLayout(nodes: ArchitectureNode[], edges: ArchitectureEdge[], options?: LayoutOptions): LayoutResult;
|
|
25
|
+
export declare function validateLayout(nodes: ReactFlowNode[], edges: ReactFlowEdge[]): {
|
|
26
|
+
valid: boolean;
|
|
27
|
+
errors: string[];
|
|
28
|
+
};
|
|
29
|
+
//# sourceMappingURL=elk-runner.d.ts.map
|