@zigrivers/scaffold 3.21.0 → 3.23.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/README.md +21 -7
- package/content/knowledge/data-science/README.md +23 -0
- package/content/knowledge/data-science/data-science-architecture.md +163 -0
- package/content/knowledge/data-science/data-science-conventions.md +233 -0
- package/content/knowledge/data-science/data-science-data-versioning.md +198 -0
- package/content/knowledge/data-science/data-science-dev-environment.md +159 -0
- package/content/knowledge/data-science/data-science-experiment-tracking.md +194 -0
- package/content/knowledge/data-science/data-science-model-evaluation.md +160 -0
- package/content/knowledge/data-science/data-science-notebook-discipline.md +170 -0
- package/content/knowledge/data-science/data-science-observability.md +161 -0
- package/content/knowledge/data-science/data-science-project-structure.md +178 -0
- package/content/knowledge/data-science/data-science-reproducibility.md +164 -0
- package/content/knowledge/data-science/data-science-requirements.md +151 -0
- package/content/knowledge/data-science/data-science-security.md +151 -0
- package/content/knowledge/data-science/data-science-testing.md +183 -0
- package/content/knowledge/ml/README.md +10 -0
- package/content/methodology/data-science-overlay.yml +39 -0
- package/dist/cli/commands/dashboard.d.ts.map +1 -1
- package/dist/cli/commands/dashboard.js +40 -0
- package/dist/cli/commands/dashboard.js.map +1 -1
- package/dist/config/schema.d.ts +672 -126
- package/dist/config/schema.d.ts.map +1 -1
- package/dist/config/schema.js +8 -0
- package/dist/config/schema.js.map +1 -1
- package/dist/config/schema.test.js +2 -2
- package/dist/config/schema.test.js.map +1 -1
- package/dist/config/validators/data-science.d.ts +4 -0
- package/dist/config/validators/data-science.d.ts.map +1 -0
- package/dist/config/validators/data-science.js +15 -0
- package/dist/config/validators/data-science.js.map +1 -0
- package/dist/config/validators/index.d.ts.map +1 -1
- package/dist/config/validators/index.js +2 -0
- package/dist/config/validators/index.js.map +1 -1
- package/dist/core/assembly/knowledge-loader.d.ts.map +1 -1
- package/dist/core/assembly/knowledge-loader.js +6 -0
- package/dist/core/assembly/knowledge-loader.js.map +1 -1
- package/dist/core/assembly/knowledge-loader.test.js +34 -0
- package/dist/core/assembly/knowledge-loader.test.js.map +1 -1
- package/dist/dashboard/dependency-graph.d.ts +19 -0
- package/dist/dashboard/dependency-graph.d.ts.map +1 -0
- package/dist/dashboard/dependency-graph.js +180 -0
- package/dist/dashboard/dependency-graph.js.map +1 -0
- package/dist/dashboard/dependency-graph.test.d.ts +2 -0
- package/dist/dashboard/dependency-graph.test.d.ts.map +1 -0
- package/dist/dashboard/dependency-graph.test.js +409 -0
- package/dist/dashboard/dependency-graph.test.js.map +1 -0
- package/dist/dashboard/generator.d.ts +46 -0
- package/dist/dashboard/generator.d.ts.map +1 -1
- package/dist/dashboard/generator.js +1 -0
- package/dist/dashboard/generator.js.map +1 -1
- package/dist/dashboard/multi-service.test.js +257 -1
- package/dist/dashboard/multi-service.test.js.map +1 -1
- package/dist/dashboard/template.d.ts +13 -0
- package/dist/dashboard/template.d.ts.map +1 -1
- package/dist/dashboard/template.js +176 -0
- package/dist/dashboard/template.js.map +1 -1
- package/dist/e2e/dashboard-cross-service-graph-wiring.test.d.ts +2 -0
- package/dist/e2e/dashboard-cross-service-graph-wiring.test.d.ts.map +1 -0
- package/dist/e2e/dashboard-cross-service-graph-wiring.test.js +130 -0
- package/dist/e2e/dashboard-cross-service-graph-wiring.test.js.map +1 -0
- package/dist/e2e/dashboard-cross-service-graph.test.d.ts +2 -0
- package/dist/e2e/dashboard-cross-service-graph.test.d.ts.map +1 -0
- package/dist/e2e/dashboard-cross-service-graph.test.js +216 -0
- package/dist/e2e/dashboard-cross-service-graph.test.js.map +1 -0
- package/dist/e2e/project-type-overlays.test.js +73 -0
- package/dist/e2e/project-type-overlays.test.js.map +1 -1
- package/dist/project/adopt.d.ts.map +1 -1
- package/dist/project/adopt.js +3 -1
- package/dist/project/adopt.js.map +1 -1
- package/dist/project/detectors/coverage.test.d.ts +2 -0
- package/dist/project/detectors/coverage.test.d.ts.map +1 -0
- package/dist/project/detectors/coverage.test.js +78 -0
- package/dist/project/detectors/coverage.test.js.map +1 -0
- package/dist/project/detectors/data-science.d.ts +4 -0
- package/dist/project/detectors/data-science.d.ts.map +1 -0
- package/dist/project/detectors/data-science.js +32 -0
- package/dist/project/detectors/data-science.js.map +1 -0
- package/dist/project/detectors/data-science.test.d.ts +2 -0
- package/dist/project/detectors/data-science.test.d.ts.map +1 -0
- package/dist/project/detectors/data-science.test.js +62 -0
- package/dist/project/detectors/data-science.test.js.map +1 -0
- package/dist/project/detectors/disambiguate.d.ts +2 -0
- package/dist/project/detectors/disambiguate.d.ts.map +1 -1
- package/dist/project/detectors/disambiguate.js +3 -2
- package/dist/project/detectors/disambiguate.js.map +1 -1
- package/dist/project/detectors/disambiguate.test.js +10 -1
- package/dist/project/detectors/disambiguate.test.js.map +1 -1
- package/dist/project/detectors/index.d.ts.map +1 -1
- package/dist/project/detectors/index.js +2 -0
- package/dist/project/detectors/index.js.map +1 -1
- package/dist/project/detectors/library.d.ts.map +1 -1
- package/dist/project/detectors/library.js +1 -0
- package/dist/project/detectors/library.js.map +1 -1
- package/dist/project/detectors/resolve-detection.test.js +31 -0
- package/dist/project/detectors/resolve-detection.test.js.map +1 -1
- package/dist/project/detectors/types.d.ts +6 -2
- package/dist/project/detectors/types.d.ts.map +1 -1
- package/dist/project/detectors/types.js.map +1 -1
- package/dist/types/config.d.ts +8 -1
- package/dist/types/config.d.ts.map +1 -1
- package/dist/wizard/copy/core.d.ts.map +1 -1
- package/dist/wizard/copy/core.js +4 -0
- package/dist/wizard/copy/core.js.map +1 -1
- package/dist/wizard/copy/data-science.d.ts +3 -0
- package/dist/wizard/copy/data-science.d.ts.map +1 -0
- package/dist/wizard/copy/data-science.js +15 -0
- package/dist/wizard/copy/data-science.js.map +1 -0
- package/dist/wizard/copy/index.d.ts.map +1 -1
- package/dist/wizard/copy/index.js +2 -0
- package/dist/wizard/copy/index.js.map +1 -1
- package/dist/wizard/copy/types.d.ts +5 -1
- package/dist/wizard/copy/types.d.ts.map +1 -1
- package/dist/wizard/copy/types.test-d.js +7 -0
- package/dist/wizard/copy/types.test-d.js.map +1 -1
- package/dist/wizard/questions.d.ts +2 -1
- package/dist/wizard/questions.d.ts.map +1 -1
- package/dist/wizard/questions.js +9 -1
- package/dist/wizard/questions.js.map +1 -1
- package/dist/wizard/questions.test.js +14 -0
- package/dist/wizard/questions.test.js.map +1 -1
- package/dist/wizard/wizard.d.ts.map +1 -1
- package/dist/wizard/wizard.js +1 -0
- package/dist/wizard/wizard.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,409 @@
|
|
|
1
|
+
import { describe, it, expect, vi, beforeEach } from 'vitest';
|
|
2
|
+
import { resolveCrossReadReadiness } from '../core/assembly/cross-reads.js';
|
|
3
|
+
import { buildDependencyGraph } from './dependency-graph.js';
|
|
4
|
+
vi.mock('../core/assembly/cross-reads.js', () => ({
|
|
5
|
+
resolveCrossReadReadiness: vi.fn(),
|
|
6
|
+
}));
|
|
7
|
+
// Minimal valid ScaffoldConfig for builder (builder only uses services + passes
|
|
8
|
+
// config through to resolveCrossReadReadiness which is mocked).
|
|
9
|
+
function makeConfig(services) {
|
|
10
|
+
return {
|
|
11
|
+
version: 2,
|
|
12
|
+
methodology: 'deep',
|
|
13
|
+
platforms: ['claude-code'],
|
|
14
|
+
project: {
|
|
15
|
+
services: services.map(s => ({
|
|
16
|
+
name: s.name,
|
|
17
|
+
projectType: s.projectType,
|
|
18
|
+
backendConfig: {
|
|
19
|
+
apiStyle: 'rest',
|
|
20
|
+
dataStore: ['relational'],
|
|
21
|
+
authMechanism: 'jwt',
|
|
22
|
+
asyncMessaging: 'none',
|
|
23
|
+
deployTarget: 'container',
|
|
24
|
+
domain: 'none',
|
|
25
|
+
},
|
|
26
|
+
})),
|
|
27
|
+
},
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
function makeOverlay(crossReadsByStep = {}, enabledByStep = {}) {
|
|
31
|
+
const steps = {};
|
|
32
|
+
for (const step of Object.keys(crossReadsByStep)) {
|
|
33
|
+
steps[step] = { enabled: enabledByStep[step] ?? true };
|
|
34
|
+
}
|
|
35
|
+
return {
|
|
36
|
+
steps,
|
|
37
|
+
knowledge: {},
|
|
38
|
+
reads: {},
|
|
39
|
+
dependencies: {},
|
|
40
|
+
crossReads: crossReadsByStep,
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
function makeInput(overrides = {}) {
|
|
44
|
+
const services = overrides.services ?? [
|
|
45
|
+
{ name: 'api', projectType: 'backend' },
|
|
46
|
+
{ name: 'web', projectType: 'web-app' },
|
|
47
|
+
];
|
|
48
|
+
return {
|
|
49
|
+
config: overrides.config ?? makeConfig(services.map(s => ({ name: s.name, projectType: s.projectType }))),
|
|
50
|
+
projectRoot: overrides.projectRoot ?? '/tmp/proj',
|
|
51
|
+
services: services,
|
|
52
|
+
perServiceOverlay: overrides.perServiceOverlay ?? new Map(),
|
|
53
|
+
globalSteps: overrides.globalSteps,
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
beforeEach(() => {
|
|
57
|
+
vi.mocked(resolveCrossReadReadiness).mockReset();
|
|
58
|
+
// Default: any cross-read resolves to 'completed'. Override per-test as needed.
|
|
59
|
+
vi.mocked(resolveCrossReadReadiness).mockImplementation(([cr]) => [{ ...cr, status: 'completed' }]);
|
|
60
|
+
});
|
|
61
|
+
describe('buildDependencyGraph — core aggregation', () => {
|
|
62
|
+
it('test 1: returns null when all services have zero cross-reads', () => {
|
|
63
|
+
const input = makeInput({
|
|
64
|
+
perServiceOverlay: new Map([
|
|
65
|
+
['api', makeOverlay()],
|
|
66
|
+
['web', makeOverlay()],
|
|
67
|
+
]),
|
|
68
|
+
});
|
|
69
|
+
const result = buildDependencyGraph(input);
|
|
70
|
+
expect(result).toBeNull();
|
|
71
|
+
});
|
|
72
|
+
it('test 2: single edge — web consumes api:create-prd → 1 edge, 2 nodes', () => {
|
|
73
|
+
const input = makeInput({
|
|
74
|
+
perServiceOverlay: new Map([
|
|
75
|
+
['api', makeOverlay()],
|
|
76
|
+
['web', makeOverlay({
|
|
77
|
+
'implementation-plan': [{ service: 'api', step: 'create-prd' }],
|
|
78
|
+
})],
|
|
79
|
+
]),
|
|
80
|
+
});
|
|
81
|
+
const result = buildDependencyGraph(input);
|
|
82
|
+
expect(result).not.toBeNull();
|
|
83
|
+
expect(result.nodes).toHaveLength(2);
|
|
84
|
+
expect(result.nodes.map(n => n.name).sort()).toEqual(['api', 'web']);
|
|
85
|
+
expect(result.edges).toHaveLength(1);
|
|
86
|
+
expect(result.edges[0].consumer).toBe('web');
|
|
87
|
+
expect(result.edges[0].producer).toBe('api');
|
|
88
|
+
expect(result.edges[0].steps).toEqual([
|
|
89
|
+
{ consumerStep: 'implementation-plan', producerStep: 'create-prd', status: 'completed' },
|
|
90
|
+
]);
|
|
91
|
+
});
|
|
92
|
+
it('test 3: multi-step aggregation — two steps each cross-reading different api steps', () => {
|
|
93
|
+
const input = makeInput({
|
|
94
|
+
perServiceOverlay: new Map([
|
|
95
|
+
['api', makeOverlay()],
|
|
96
|
+
['web', makeOverlay({
|
|
97
|
+
'step-a': [{ service: 'api', step: 'create-prd' }],
|
|
98
|
+
'step-b': [{ service: 'api', step: 'tech-stack' }],
|
|
99
|
+
})],
|
|
100
|
+
]),
|
|
101
|
+
});
|
|
102
|
+
const result = buildDependencyGraph(input);
|
|
103
|
+
expect(result).not.toBeNull();
|
|
104
|
+
expect(result.edges).toHaveLength(1); // same consumer+producer = 1 aggregate edge
|
|
105
|
+
expect(result.edges[0].steps).toHaveLength(2);
|
|
106
|
+
expect(result.edges[0].steps.map(s => s.consumerStep).sort()).toEqual(['step-a', 'step-b']);
|
|
107
|
+
expect(result.edges[0].steps.map(s => s.producerStep).sort()).toEqual(['create-prd', 'tech-stack']);
|
|
108
|
+
});
|
|
109
|
+
});
|
|
110
|
+
describe('buildDependencyGraph — layer assignment', () => {
|
|
111
|
+
it('test 4: three-layer chain — web → api → shared-lib', () => {
|
|
112
|
+
const services = [
|
|
113
|
+
{ name: 'shared-lib', projectType: 'library' },
|
|
114
|
+
{ name: 'api', projectType: 'backend' },
|
|
115
|
+
{ name: 'web', projectType: 'web-app' },
|
|
116
|
+
];
|
|
117
|
+
const input = makeInput({
|
|
118
|
+
services,
|
|
119
|
+
config: makeConfig(services.map(s => ({ name: s.name, projectType: s.projectType }))),
|
|
120
|
+
perServiceOverlay: new Map([
|
|
121
|
+
['shared-lib', makeOverlay()],
|
|
122
|
+
['api', makeOverlay({
|
|
123
|
+
'tech-stack': [{ service: 'shared-lib', step: 'api-contract' }],
|
|
124
|
+
})],
|
|
125
|
+
['web', makeOverlay({
|
|
126
|
+
'implementation-plan': [{ service: 'api', step: 'create-prd' }],
|
|
127
|
+
})],
|
|
128
|
+
]),
|
|
129
|
+
});
|
|
130
|
+
const result = buildDependencyGraph(input);
|
|
131
|
+
expect(result).not.toBeNull();
|
|
132
|
+
const byName = new Map(result.nodes.map(n => [n.name, n]));
|
|
133
|
+
expect(byName.get('shared-lib').layer).toBe(0);
|
|
134
|
+
expect(byName.get('api').layer).toBe(1);
|
|
135
|
+
expect(byName.get('web').layer).toBe(2);
|
|
136
|
+
});
|
|
137
|
+
it('test 5: orphan service — 4 services, 1 with no edges touches it', () => {
|
|
138
|
+
const services = [
|
|
139
|
+
{ name: 'api', projectType: 'backend' },
|
|
140
|
+
{ name: 'web', projectType: 'web-app' },
|
|
141
|
+
{ name: 'worker', projectType: 'backend' }, // orphan
|
|
142
|
+
{ name: 'shared-lib', projectType: 'library' },
|
|
143
|
+
];
|
|
144
|
+
const input = makeInput({
|
|
145
|
+
services,
|
|
146
|
+
config: makeConfig(services.map(s => ({ name: s.name, projectType: s.projectType }))),
|
|
147
|
+
perServiceOverlay: new Map([
|
|
148
|
+
['api', makeOverlay({
|
|
149
|
+
'tech-stack': [{ service: 'shared-lib', step: 'api-contract' }],
|
|
150
|
+
})],
|
|
151
|
+
['web', makeOverlay({
|
|
152
|
+
'implementation-plan': [{ service: 'api', step: 'create-prd' }],
|
|
153
|
+
})],
|
|
154
|
+
['worker', makeOverlay()],
|
|
155
|
+
['shared-lib', makeOverlay()],
|
|
156
|
+
]),
|
|
157
|
+
});
|
|
158
|
+
const result = buildDependencyGraph(input);
|
|
159
|
+
expect(result).not.toBeNull();
|
|
160
|
+
expect(result.nodes).toHaveLength(4);
|
|
161
|
+
const byName = new Map(result.nodes.map(n => [n.name, n]));
|
|
162
|
+
expect(byName.get('worker').layer).toBe(0); // orphan at layer 0
|
|
163
|
+
expect(byName.get('shared-lib').layer).toBe(0);
|
|
164
|
+
// Chain layers unaffected by the orphan — regression lock on cross-graph interference.
|
|
165
|
+
expect(byName.get('api').layer).toBe(1);
|
|
166
|
+
expect(byName.get('web').layer).toBe(2);
|
|
167
|
+
// no edges touch worker
|
|
168
|
+
expect(result.edges.some(e => e.consumer === 'worker' || e.producer === 'worker')).toBe(false);
|
|
169
|
+
});
|
|
170
|
+
it('test 6: cycle — A ↔ B → both same layer, 2 nodes, 2 edges, no crash', () => {
|
|
171
|
+
const services = [
|
|
172
|
+
{ name: 'svc-a', projectType: 'backend' },
|
|
173
|
+
{ name: 'svc-b', projectType: 'backend' },
|
|
174
|
+
];
|
|
175
|
+
const input = makeInput({
|
|
176
|
+
services,
|
|
177
|
+
config: makeConfig(services.map(s => ({ name: s.name, projectType: s.projectType }))),
|
|
178
|
+
perServiceOverlay: new Map([
|
|
179
|
+
['svc-a', makeOverlay({
|
|
180
|
+
'step-a1': [{ service: 'svc-b', step: 'step-b1' }],
|
|
181
|
+
})],
|
|
182
|
+
['svc-b', makeOverlay({
|
|
183
|
+
'step-b1': [{ service: 'svc-a', step: 'step-a1' }],
|
|
184
|
+
})],
|
|
185
|
+
]),
|
|
186
|
+
});
|
|
187
|
+
const result = buildDependencyGraph(input);
|
|
188
|
+
expect(result).not.toBeNull();
|
|
189
|
+
expect(result.nodes).toHaveLength(2);
|
|
190
|
+
expect(result.edges).toHaveLength(2);
|
|
191
|
+
const byName = new Map(result.nodes.map(n => [n.name, n]));
|
|
192
|
+
expect(byName.get('svc-a').layer).toBe(byName.get('svc-b').layer);
|
|
193
|
+
});
|
|
194
|
+
it('test 6b: cycle cascade — root → A ↔ B → leaf collapses downstream into cycle layer', () => {
|
|
195
|
+
// Documents spec §3.4's known limitation: when a cycle has nodes strictly
|
|
196
|
+
// downstream of it, the simplified layered algorithm lumps the downstream
|
|
197
|
+
// node into the cycle layer alongside the participants (full SCC analysis
|
|
198
|
+
// would avoid this but triples the code size). Locks the current behavior
|
|
199
|
+
// so a future refactor that silently "fixes" it gets caught.
|
|
200
|
+
const services = [
|
|
201
|
+
{ name: 'root', projectType: 'library' },
|
|
202
|
+
{ name: 'svc-a', projectType: 'backend' },
|
|
203
|
+
{ name: 'svc-b', projectType: 'backend' },
|
|
204
|
+
{ name: 'leaf', projectType: 'web-app' },
|
|
205
|
+
];
|
|
206
|
+
const input = makeInput({
|
|
207
|
+
services,
|
|
208
|
+
config: makeConfig(services.map(s => ({ name: s.name, projectType: s.projectType }))),
|
|
209
|
+
perServiceOverlay: new Map([
|
|
210
|
+
['root', makeOverlay()],
|
|
211
|
+
['svc-a', makeOverlay({
|
|
212
|
+
'step-a1': [
|
|
213
|
+
{ service: 'root', step: 'seed' },
|
|
214
|
+
{ service: 'svc-b', step: 'step-b1' },
|
|
215
|
+
],
|
|
216
|
+
})],
|
|
217
|
+
['svc-b', makeOverlay({
|
|
218
|
+
'step-b1': [{ service: 'svc-a', step: 'step-a1' }],
|
|
219
|
+
})],
|
|
220
|
+
['leaf', makeOverlay({
|
|
221
|
+
'leaf-step': [{ service: 'svc-a', step: 'step-a1' }],
|
|
222
|
+
})],
|
|
223
|
+
]),
|
|
224
|
+
});
|
|
225
|
+
const result = buildDependencyGraph(input);
|
|
226
|
+
expect(result).not.toBeNull();
|
|
227
|
+
const byName = new Map(result.nodes.map(n => [n.name, n]));
|
|
228
|
+
expect(byName.get('root').layer).toBe(0);
|
|
229
|
+
const cycleLayer = byName.get('svc-a').layer;
|
|
230
|
+
expect(byName.get('svc-b').layer).toBe(cycleLayer);
|
|
231
|
+
// Documented cascade: leaf (consumer of cycle) gets the same layer as the cycle.
|
|
232
|
+
expect(byName.get('leaf').layer).toBe(cycleLayer);
|
|
233
|
+
});
|
|
234
|
+
});
|
|
235
|
+
describe('buildDependencyGraph — layout + determinism', () => {
|
|
236
|
+
it('test 8: same input twice → identical x/y + identical SVG paths', () => {
|
|
237
|
+
const services = [
|
|
238
|
+
{ name: 'api', projectType: 'backend' },
|
|
239
|
+
{ name: 'web', projectType: 'web-app' },
|
|
240
|
+
];
|
|
241
|
+
const input = makeInput({
|
|
242
|
+
services,
|
|
243
|
+
config: makeConfig(services.map(s => ({ name: s.name, projectType: s.projectType }))),
|
|
244
|
+
perServiceOverlay: new Map([
|
|
245
|
+
['api', makeOverlay()],
|
|
246
|
+
['web', makeOverlay({
|
|
247
|
+
'implementation-plan': [{ service: 'api', step: 'create-prd' }],
|
|
248
|
+
})],
|
|
249
|
+
]),
|
|
250
|
+
});
|
|
251
|
+
const first = buildDependencyGraph(input);
|
|
252
|
+
const second = buildDependencyGraph(input);
|
|
253
|
+
expect(first.nodes.map(n => ({ name: n.name, x: n.x, y: n.y, layer: n.layer })))
|
|
254
|
+
.toEqual(second.nodes.map(n => ({ name: n.name, x: n.x, y: n.y, layer: n.layer })));
|
|
255
|
+
expect(first.edges.map(e => ({ consumer: e.consumer, producer: e.producer, path: e.svgPath })))
|
|
256
|
+
.toEqual(second.edges.map(e => ({ consumer: e.consumer, producer: e.producer, path: e.svgPath })));
|
|
257
|
+
expect(first.viewBox).toEqual(second.viewBox);
|
|
258
|
+
});
|
|
259
|
+
it('test 9: viewBox dimensions scale with layer count + tallest-layer node count', () => {
|
|
260
|
+
// Small graph: 2 layers, 1 node each → narrow + short.
|
|
261
|
+
const small = buildDependencyGraph(makeInput({
|
|
262
|
+
services: [
|
|
263
|
+
{ name: 'api', projectType: 'backend' },
|
|
264
|
+
{ name: 'web', projectType: 'web-app' },
|
|
265
|
+
],
|
|
266
|
+
perServiceOverlay: new Map([
|
|
267
|
+
['api', makeOverlay()],
|
|
268
|
+
['web', makeOverlay({ step: [{ service: 'api', step: 's' }] })],
|
|
269
|
+
]),
|
|
270
|
+
}));
|
|
271
|
+
// Wider graph: 3 layers.
|
|
272
|
+
const wide = buildDependencyGraph(makeInput({
|
|
273
|
+
services: [
|
|
274
|
+
{ name: 'a', projectType: 'backend' },
|
|
275
|
+
{ name: 'b', projectType: 'backend' },
|
|
276
|
+
{ name: 'c', projectType: 'backend' },
|
|
277
|
+
],
|
|
278
|
+
config: makeConfig([
|
|
279
|
+
{ name: 'a', projectType: 'backend' },
|
|
280
|
+
{ name: 'b', projectType: 'backend' },
|
|
281
|
+
{ name: 'c', projectType: 'backend' },
|
|
282
|
+
]),
|
|
283
|
+
perServiceOverlay: new Map([
|
|
284
|
+
['a', makeOverlay()],
|
|
285
|
+
['b', makeOverlay({ s: [{ service: 'a', step: 'x' }] })],
|
|
286
|
+
['c', makeOverlay({ s: [{ service: 'b', step: 'x' }] })],
|
|
287
|
+
]),
|
|
288
|
+
}));
|
|
289
|
+
expect(wide.viewBox.width).toBeGreaterThan(small.viewBox.width);
|
|
290
|
+
// Taller graph: 2 layers with 2 nodes in the tall layer → taller than small.
|
|
291
|
+
const tall = buildDependencyGraph(makeInput({
|
|
292
|
+
services: [
|
|
293
|
+
{ name: 'producer', projectType: 'library' },
|
|
294
|
+
{ name: 'cons-a', projectType: 'web-app' },
|
|
295
|
+
{ name: 'cons-b', projectType: 'web-app' },
|
|
296
|
+
],
|
|
297
|
+
config: makeConfig([
|
|
298
|
+
{ name: 'producer', projectType: 'library' },
|
|
299
|
+
{ name: 'cons-a', projectType: 'web-app' },
|
|
300
|
+
{ name: 'cons-b', projectType: 'web-app' },
|
|
301
|
+
]),
|
|
302
|
+
perServiceOverlay: new Map([
|
|
303
|
+
['producer', makeOverlay()],
|
|
304
|
+
['cons-a', makeOverlay({ s: [{ service: 'producer', step: 'x' }] })],
|
|
305
|
+
['cons-b', makeOverlay({ s: [{ service: 'producer', step: 'x' }] })],
|
|
306
|
+
]),
|
|
307
|
+
}));
|
|
308
|
+
expect(tall.viewBox.height).toBeGreaterThan(small.viewBox.height);
|
|
309
|
+
});
|
|
310
|
+
});
|
|
311
|
+
describe('buildDependencyGraph — readiness + filters (regression)', () => {
|
|
312
|
+
it('test 7: readiness threads 5 reachable statuses from resolveCrossReadReadiness', () => {
|
|
313
|
+
// service-unknown is filtered at aggregation time (§2.1) BEFORE readiness is
|
|
314
|
+
// called, so only 5 of the 6 CrossReadStatus values can appear on an edge.
|
|
315
|
+
const services = [
|
|
316
|
+
{ name: 'producer', projectType: 'library' },
|
|
317
|
+
{ name: 'web', projectType: 'web-app' },
|
|
318
|
+
];
|
|
319
|
+
const input = makeInput({
|
|
320
|
+
services,
|
|
321
|
+
config: makeConfig(services.map(s => ({ name: s.name, projectType: s.projectType }))),
|
|
322
|
+
perServiceOverlay: new Map([
|
|
323
|
+
['producer', makeOverlay()],
|
|
324
|
+
['web', makeOverlay({
|
|
325
|
+
'step-1': [{ service: 'producer', step: 'completed-step' }],
|
|
326
|
+
'step-2': [{ service: 'producer', step: 'pending-step' }],
|
|
327
|
+
'step-3': [{ service: 'producer', step: 'not-bootstrapped-step' }],
|
|
328
|
+
'step-4': [{ service: 'producer', step: 'read-error-step' }],
|
|
329
|
+
'step-5': [{ service: 'producer', step: 'not-exported-step' }],
|
|
330
|
+
})],
|
|
331
|
+
]),
|
|
332
|
+
});
|
|
333
|
+
// Mock returns a different status based on cr.step
|
|
334
|
+
vi.mocked(resolveCrossReadReadiness).mockImplementation(([cr]) => {
|
|
335
|
+
const map = {
|
|
336
|
+
'completed-step': 'completed',
|
|
337
|
+
'pending-step': 'pending',
|
|
338
|
+
'not-bootstrapped-step': 'not-bootstrapped',
|
|
339
|
+
'read-error-step': 'read-error',
|
|
340
|
+
'not-exported-step': 'not-exported',
|
|
341
|
+
};
|
|
342
|
+
return [{ ...cr, status: map[cr.step] }];
|
|
343
|
+
});
|
|
344
|
+
const result = buildDependencyGraph(input);
|
|
345
|
+
expect(result).not.toBeNull();
|
|
346
|
+
expect(result.edges).toHaveLength(1);
|
|
347
|
+
const statuses = result.edges[0].steps.map(s => s.status).sort();
|
|
348
|
+
expect(statuses).toEqual(['completed', 'not-bootstrapped', 'not-exported', 'pending', 'read-error']);
|
|
349
|
+
});
|
|
350
|
+
it('test 10: self-reference filter — cr svc → svc dropped', () => {
|
|
351
|
+
const input = makeInput({
|
|
352
|
+
perServiceOverlay: new Map([
|
|
353
|
+
['api', makeOverlay({
|
|
354
|
+
'step-a': [{ service: 'api', step: 'step-b' }], // self-reference
|
|
355
|
+
})],
|
|
356
|
+
['web', makeOverlay()],
|
|
357
|
+
]),
|
|
358
|
+
});
|
|
359
|
+
const result = buildDependencyGraph(input);
|
|
360
|
+
expect(result).toBeNull(); // 0 edges after filtering → null
|
|
361
|
+
});
|
|
362
|
+
// eslint-disable-next-line max-len
|
|
363
|
+
it('test 11: service-unknown filter — target not in services[] dropped BEFORE readiness lookup, edgeMap empty → null', () => {
|
|
364
|
+
const input = makeInput({
|
|
365
|
+
perServiceOverlay: new Map([
|
|
366
|
+
['api', makeOverlay()],
|
|
367
|
+
['web', makeOverlay({
|
|
368
|
+
'step-a': [{ service: 'nonexistent', step: 'step-b' }], // unknown producer
|
|
369
|
+
})],
|
|
370
|
+
]),
|
|
371
|
+
});
|
|
372
|
+
const result = buildDependencyGraph(input);
|
|
373
|
+
// Builder short-circuits when edgeMap.size === 0
|
|
374
|
+
expect(result).toBeNull();
|
|
375
|
+
// Filter order contract (spec §2.1): unknown-service cross-reads must be
|
|
376
|
+
// dropped BEFORE resolveCrossReadReadiness is called, both because that
|
|
377
|
+
// helper is filesystem-touching and because the caller (layoutGraph) does
|
|
378
|
+
// byName.get(producer)! which would crash. Lock the invariant:
|
|
379
|
+
expect(resolveCrossReadReadiness).not.toHaveBeenCalled();
|
|
380
|
+
});
|
|
381
|
+
it('test 12: disabled-step filter — cr declared on disabled consumer step dropped', () => {
|
|
382
|
+
const input = makeInput({
|
|
383
|
+
perServiceOverlay: new Map([
|
|
384
|
+
['api', makeOverlay()],
|
|
385
|
+
['web', makeOverlay({ 'step-a': [{ service: 'api', step: 'create-prd' }] }, { 'step-a': false })],
|
|
386
|
+
]),
|
|
387
|
+
});
|
|
388
|
+
const result = buildDependencyGraph(input);
|
|
389
|
+
expect(result).toBeNull();
|
|
390
|
+
});
|
|
391
|
+
// eslint-disable-next-line max-len
|
|
392
|
+
it('test 13: mixed filter — self-ref + unknown + disabled, all dropped BEFORE readiness lookup, null returned', () => {
|
|
393
|
+
const input = makeInput({
|
|
394
|
+
perServiceOverlay: new Map([
|
|
395
|
+
['api', makeOverlay()],
|
|
396
|
+
['web', makeOverlay({
|
|
397
|
+
'self-ref-step': [{ service: 'web', step: 'x' }], // self-ref
|
|
398
|
+
'unknown-step': [{ service: 'nonexistent', step: 'x' }], // unknown
|
|
399
|
+
'disabled-step': [{ service: 'api', step: 'x' }], // disabled
|
|
400
|
+
}, { 'disabled-step': false })],
|
|
401
|
+
]),
|
|
402
|
+
});
|
|
403
|
+
const result = buildDependencyGraph(input);
|
|
404
|
+
expect(result).toBeNull();
|
|
405
|
+
// All three filter classes drop BEFORE readiness lookup:
|
|
406
|
+
expect(resolveCrossReadReadiness).not.toHaveBeenCalled();
|
|
407
|
+
});
|
|
408
|
+
});
|
|
409
|
+
//# sourceMappingURL=dependency-graph.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dependency-graph.test.js","sourceRoot":"","sources":["../../src/dashboard/dependency-graph.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -65,6 +65,44 @@ export interface GeneratorOptions {
|
|
|
65
65
|
}
|
|
66
66
|
export declare function generateDashboardData(opts: GeneratorOptions): DashboardData;
|
|
67
67
|
export declare function generateHtml(data: DashboardData): string;
|
|
68
|
+
/** A node in the service dependency graph. One per service. */
|
|
69
|
+
export interface DependencyGraphNode {
|
|
70
|
+
/** Service name (kebab-case, matches config). */
|
|
71
|
+
name: string;
|
|
72
|
+
/** Project type — used for styling consistency with service cards. */
|
|
73
|
+
projectType: string;
|
|
74
|
+
/** Depth in the topological ordering (0 = no upstream or orphan). */
|
|
75
|
+
layer: number;
|
|
76
|
+
/** Layout-computed x,y in the SVG viewBox. Filled by layoutGraph, not the builder. */
|
|
77
|
+
x: number;
|
|
78
|
+
y: number;
|
|
79
|
+
}
|
|
80
|
+
/** A step-level cross-read relationship, aggregated into a service-level edge. */
|
|
81
|
+
export interface StepEdgeDetail {
|
|
82
|
+
consumerStep: string;
|
|
83
|
+
producerStep: string;
|
|
84
|
+
/** Readiness from CrossReadStatus taxonomy (src/core/assembly/cross-reads.ts:177).
|
|
85
|
+
* service-unknown is filtered upstream (§2.1 of spec) so cannot appear here in practice. */
|
|
86
|
+
status: 'completed' | 'pending' | 'not-bootstrapped' | 'read-error' | 'service-unknown' | 'not-exported';
|
|
87
|
+
}
|
|
88
|
+
/** A service-level aggregate edge: consumer depends on producer. */
|
|
89
|
+
export interface DependencyGraphEdge {
|
|
90
|
+
consumer: string;
|
|
91
|
+
producer: string;
|
|
92
|
+
/** Step-level detail rolled up into this edge — rendered as tooltip rows. */
|
|
93
|
+
steps: StepEdgeDetail[];
|
|
94
|
+
/** SVG path string (cubic bezier) computed by layoutGraph. */
|
|
95
|
+
svgPath: string;
|
|
96
|
+
}
|
|
97
|
+
export interface DependencyGraphData {
|
|
98
|
+
nodes: DependencyGraphNode[];
|
|
99
|
+
edges: DependencyGraphEdge[];
|
|
100
|
+
/** SVG viewBox dimensions — computed by layoutGraph. */
|
|
101
|
+
viewBox: {
|
|
102
|
+
width: number;
|
|
103
|
+
height: number;
|
|
104
|
+
};
|
|
105
|
+
}
|
|
68
106
|
export interface ServiceSummary {
|
|
69
107
|
/** Service id from config (kebab-case). */
|
|
70
108
|
name: string;
|
|
@@ -110,6 +148,12 @@ export interface MultiServiceDashboardData {
|
|
|
110
148
|
/** Preserves input order. */
|
|
111
149
|
services: ServiceSummary[];
|
|
112
150
|
aggregate: MultiServiceAggregate;
|
|
151
|
+
/**
|
|
152
|
+
* Optional. null or absent when zero cross-service edges exist (graph
|
|
153
|
+
* section omitted per §4). Optional (not required-nullable) preserves
|
|
154
|
+
* source compatibility with hand-written literals in multi-service.test.ts.
|
|
155
|
+
*/
|
|
156
|
+
dependencyGraph?: DependencyGraphData | null;
|
|
113
157
|
}
|
|
114
158
|
export interface MultiServiceGeneratorOptions {
|
|
115
159
|
services: Array<{
|
|
@@ -119,6 +163,8 @@ export interface MultiServiceGeneratorOptions {
|
|
|
119
163
|
metaPrompts?: Map<string, MetaPromptFile>;
|
|
120
164
|
}>;
|
|
121
165
|
methodology: string;
|
|
166
|
+
/** Optional. Pass pre-built DependencyGraphData; generator normalizes null/undefined to null on output. */
|
|
167
|
+
dependencyGraph?: DependencyGraphData | null;
|
|
122
168
|
}
|
|
123
169
|
export declare function generateMultiServiceDashboardData(opts: MultiServiceGeneratorOptions): MultiServiceDashboardData;
|
|
124
170
|
export declare function generateMultiServiceHtml(data: MultiServiceDashboardData): string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generator.d.ts","sourceRoot":"","sources":["../../src/dashboard/generator.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"generator.d.ts","sourceRoot":"","sources":["../../src/dashboard/generator.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generator.js","sourceRoot":"","sources":["../../src/dashboard/generator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAE3C,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAA;AAC/D,OAAO,EAAE,aAAa,EAAE,yBAAyB,EAAE,MAAM,eAAe,CAAA;AAExE,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;AAC9C,MAAM,GAAG,GAAG,OAAO,CAAC,oBAAoB,CAAwB,CAAA;AA4DhE,SAAS,SAAS,CAChB,IAAY,EACZ,KAAoB,EACpB,WAAyC;IAEzC,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;IAC/B,MAAM,IAAI,GAAG,WAAW,EAAE,GAAG,CAAC,IAAI,CAAC,CAAA;IACnC,MAAM,EAAE,GAAG,IAAI,EAAE,WAAW,CAAA;IAE5B,OAAO;QACL,IAAI;QACJ,MAAM,EAAE,KAAK,CAAC,MAAM;QACpB,KAAK,EAAE,EAAE,EAAE,KAAK,IAAI,IAAI;QACxB,KAAK,EAAE,KAAK,CAAC,KAAK,IAAI,IAAI;QAC1B,WAAW,EAAE,KAAK,CAAC,EAAE,IAAI,IAAI;QAC7B,WAAW,EAAE,KAAK,CAAC,YAAY,IAAI,IAAI;QACvC,WAAW,EAAE,EAAE,EAAE,WAAW,IAAI,EAAE;QAClC,OAAO,EAAE,EAAE,EAAE,OAAO,IAAI,IAAI;QAC5B,YAAY,EAAE,EAAE,EAAE,YAAY,IAAI,EAAE;QACpC,OAAO,EAAE,EAAE,EAAE,OAAO,IAAI,EAAE;QAC1B,KAAK,EAAE,EAAE,EAAE,KAAK,IAAI,IAAI;QACxB,WAAW,EAAE,EAAE,EAAE,WAAW,IAAI,IAAI;QACpC,cAAc,EAAE,IAAI,EAAE,IAAI,IAAI,EAAE;KACjC,CAAA;AACH,CAAC;AAED,SAAS,WAAW,CAClB,KAAsB;IAEtB,qDAAqD;IACrD,MAAM,YAAY,GAAG,IAAI,GAAG,EAA2B,CAAA;IAEvD,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAA;QAC5B,IAAI,SAAS,IAAI,SAAS,IAAI,aAAa,EAAE,CAAC;YAC5C,MAAM,QAAQ,GAAG,YAAY,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,EAAE,CAAA;YAClD,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;YACnB,YAAY,CAAC,GAAG,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAA;QACvC,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;QACpB,MAAM,UAAU,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,CAAA;QACjD,6BAA6B;QAC7B,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,IAAI,QAAQ,CAAC,CAAC,CAAA;QAExE,MAAM,SAAS,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,WAAW,CAAC,CAAC,MAAM,CAAA;QACzE,MAAM,OAAO,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,MAAM,CAAA;QACrE,MAAM,OAAO,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,MAAM,CAAA;QACrE,MAAM,UAAU,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,aAAa,CAAC,CAAC,MAAM,CAAA;QAE5E,OAAO;YACL,MAAM,EAAE,CAAC,CAAC,MAAM;YAChB,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,WAAW,EAAE,CAAC,CAAC,WAAW;YAC1B,WAAW,EAAE,CAAC,CAAC,WAAW;YAC1B,KAAK,EAAE,UAAU;YACjB,MAAM,EAAE;gBACN,SAAS;gBACT,OAAO;gBACP,OAAO;gBACP,UAAU;gBACV,KAAK,EAAE,UAAU,CAAC,MAAM;aACzB;SACF,CAAA;IACH,CAAC,CAAC,CAAA;AACJ,CAAC;AAED,SAAS,mBAAmB,CAC1B,KAAoB,EACpB,WAAyC;IAEzC,MAAM,QAAQ,GAAG,KAAK,CAAC,aAAa,CAAA;IACpC,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAA;IAEnD,MAAM,IAAI,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAA;IACxB,MAAM,IAAI,GAAG,WAAW,EAAE,GAAG,CAAC,IAAI,CAAC,CAAA;IACnC,MAAM,EAAE,GAAG,IAAI,EAAE,WAAW,CAAA;IAE5B,OAAO;QACL,IAAI;QACJ,OAAO,EAAE,EAAE,EAAE,OAAO,IAAI,IAAI;QAC5B,WAAW,EAAE,EAAE,EAAE,WAAW,IAAI,EAAE;QAClC,OAAO,EAAE,aAAa,IAAI,EAAE;KAC7B,CAAA;AACH,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,IAAsB;IAC1D,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,WAAW,EAAE,GAAG,IAAI,CAAA;IAE3D,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAChD,SAAS,CAAC,IAAI,EAAE,KAAK,EAAE,WAAW,CAAC,CACpC,CAAA;IAED,MAAM,MAAM,GAAG,WAAW,CAAC,KAAK,CAAC,CAAA;IAEjC,MAAM,SAAS,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,WAAW,CAAC,CAAC,MAAM,CAAA;IACpE,MAAM,OAAO,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,MAAM,CAAA;IAChE,MAAM,OAAO,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,MAAM,CAAA;IAChE,MAAM,UAAU,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,aAAa,CAAC,CAAC,MAAM,CAAA;IACvE,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM,CAAA;IAE1B,OAAO;QACL,WAAW,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;QACrC,WAAW;QACX,eAAe,EAAE,GAAG,CAAC,OAAO;QAC5B,MAAM;QACN,KAAK;QACL,QAAQ,EAAE;YACR,KAAK;YACL,SAAS;YACT,OAAO;YACP,OAAO;YACP,UAAU;YACV,UAAU,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,SAAS,GAAG,OAAO,CAAC,GAAG,KAAK,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;SAC5E;QACD,YAAY,EAAE,mBAAmB,CAAC,KAAK,EAAE,WAAW,CAAC;QACrD,SAAS,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YAC7B,EAAE,EAAE,CAAC,CAAC,EAAE;YACR,IAAI,EAAE,CAAC,CAAC,MAAM;YACd,QAAQ,EAAE,CAAC,CAAC,QAAQ;YACpB,SAAS,EAAE,CAAC,CAAC,EAAE;YACf,WAAW,EAAE,CAAC,CAAC,cAAc,KAAK,KAAK;SACxC,CAAC,CAAC;KACJ,CAAA;AACH,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,IAAmB;IAC9C,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAA;IAC9C,OAAO,aAAa,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAA;AACtC,CAAC;
|
|
1
|
+
{"version":3,"file":"generator.js","sourceRoot":"","sources":["../../src/dashboard/generator.ts"],"names":[],"mappings":"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"}
|