@zigrivers/scaffold 3.21.0 → 3.22.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (30) hide show
  1. package/dist/cli/commands/dashboard.d.ts.map +1 -1
  2. package/dist/cli/commands/dashboard.js +40 -0
  3. package/dist/cli/commands/dashboard.js.map +1 -1
  4. package/dist/dashboard/dependency-graph.d.ts +19 -0
  5. package/dist/dashboard/dependency-graph.d.ts.map +1 -0
  6. package/dist/dashboard/dependency-graph.js +180 -0
  7. package/dist/dashboard/dependency-graph.js.map +1 -0
  8. package/dist/dashboard/dependency-graph.test.d.ts +2 -0
  9. package/dist/dashboard/dependency-graph.test.d.ts.map +1 -0
  10. package/dist/dashboard/dependency-graph.test.js +409 -0
  11. package/dist/dashboard/dependency-graph.test.js.map +1 -0
  12. package/dist/dashboard/generator.d.ts +46 -0
  13. package/dist/dashboard/generator.d.ts.map +1 -1
  14. package/dist/dashboard/generator.js +1 -0
  15. package/dist/dashboard/generator.js.map +1 -1
  16. package/dist/dashboard/multi-service.test.js +257 -1
  17. package/dist/dashboard/multi-service.test.js.map +1 -1
  18. package/dist/dashboard/template.d.ts +13 -0
  19. package/dist/dashboard/template.d.ts.map +1 -1
  20. package/dist/dashboard/template.js +176 -0
  21. package/dist/dashboard/template.js.map +1 -1
  22. package/dist/e2e/dashboard-cross-service-graph-wiring.test.d.ts +2 -0
  23. package/dist/e2e/dashboard-cross-service-graph-wiring.test.d.ts.map +1 -0
  24. package/dist/e2e/dashboard-cross-service-graph-wiring.test.js +130 -0
  25. package/dist/e2e/dashboard-cross-service-graph-wiring.test.js.map +1 -0
  26. package/dist/e2e/dashboard-cross-service-graph.test.d.ts +2 -0
  27. package/dist/e2e/dashboard-cross-service-graph.test.d.ts.map +1 -0
  28. package/dist/e2e/dashboard-cross-service-graph.test.js +216 -0
  29. package/dist/e2e/dashboard-cross-service-graph.test.js.map +1 -0
  30. 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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"}
@@ -224,6 +224,7 @@ export function generateMultiServiceDashboardData(opts) {
224
224
  servicesComplete,
225
225
  servicesByPhase,
226
226
  },
227
+ dependencyGraph: opts.dependencyGraph ?? null,
227
228
  };
228
229
  }
229
230
  export function generateMultiServiceHtml(data) {
@@ -1 +1 @@
1
- {"version":3,"file":"generator.js","sourceRoot":"","sources":["../../src/dashboard/generator.ts"],"names":[],"mappings":"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"}
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;AA8GD,SAAS,gBAAgB,CACvB,GAAqD;IAErD,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,WAAW,EAAE,GAAG,GAAG,CAAA;IACrD,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;IAE3C,IAAI,SAAS,GAAG,CAAC,CAAA;IACjB,IAAI,OAAO,GAAG,CAAC,CAAA;IACf,IAAI,OAAO,GAAG,CAAC,CAAA;IACf,IAAI,UAAU,GAAG,CAAC,CAAA;IAElB,sEAAsE;IACtE,IAAI,kBAAkB,GAAkB,IAAI,CAAA;IAE5C,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,OAAO,EAAE,CAAC;QACpC,QAAQ,KAAK,CAAC,MAAM,EAAE,CAAC;YACvB,KAAK,WAAW;gBAAE,SAAS,EAAE,CAAC;gBAAC,MAAK;YACpC,KAAK,SAAS;gBAAE,OAAO,EAAE,CAAC;gBAAC,MAAK;YAChC,KAAK,SAAS;gBAAE,OAAO,EAAE,CAAC;gBAAC,MAAK;YAChC,KAAK,aAAa;gBAAE,UAAU,EAAE,CAAC;gBAAC,MAAK;QACvC,CAAC;QAED,IAAI,KAAK,CAAC,MAAM,KAAK,SAAS,IAAI,KAAK,CAAC,MAAM,KAAK,aAAa,EAAE,CAAC;YACjE,MAAM,SAAS,GAAG,WAAW,EAAE,GAAG,CAAC,IAAI,CAAC,EAAE,WAAW,CAAC,KAAK,CAAA;YAC3D,IAAI,SAAS,IAAI,SAAS,IAAI,aAAa,EAAE,CAAC;gBAC5C,MAAM,QAAQ,GAAG,aAAa,CAAC,SAAuC,CAAC,CAAC,MAAM,CAAA;gBAC9E,IAAI,kBAAkB,KAAK,IAAI,IAAI,QAAQ,GAAG,kBAAkB,EAAE,CAAC;oBACjE,kBAAkB,GAAG,QAAQ,CAAA;gBAC/B,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,MAAM,KAAK,GAAG,OAAO,CAAC,MAAM,CAAA;IAC5B,MAAM,UAAU,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,GAAG,OAAO,CAAC,GAAG,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;IAEpF,MAAM,gBAAgB,GACpB,kBAAkB,KAAK,IAAI;QACzB,CAAC,CAAC,IAAI;QACN,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,kBAAkB,CAAC,EAAE,WAAW,IAAI,IAAI,CAAA;IAE5E,MAAM,QAAQ,GAAG,KAAK,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,CAAA;IACjD,IAAI,WAAW,GAAkB,IAAI,CAAA;IACrC,IAAI,QAAQ,EAAE,CAAC;QACb,uEAAuE;QACvE,uEAAuE;QACvE,wDAAwD;QACxD,WAAW,GAAG,WAAW,EAAE,GAAG,CAAC,QAAQ,CAAC,EAAE,WAAW,CAAC,OAAO,IAAI,IAAI,CAAA;IACvE,CAAC;IAED,OAAO;QACL,IAAI;QACJ,WAAW;QACX,UAAU;QACV,SAAS;QACT,OAAO;QACP,OAAO;QACP,UAAU;QACV,KAAK;QACL,kBAAkB;QAClB,gBAAgB;QAChB,gBAAgB,EAAE,QAAQ;QAC1B,mBAAmB,EAAE,WAAW;KACjC,CAAA;AACH,CAAC;AAED,SAAS,oBAAoB,CAC3B,QAAkD;IAElD,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;QACpB,IAAI,OAAO,GAAG,CAAC,CAAA;QACf,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;YAC3B,IAAI,GAAG,GAAG,KAAK,CAAA;YACf,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC5D,IAAI,KAAK,CAAC,MAAM,KAAK,WAAW,IAAI,KAAK,CAAC,MAAM,KAAK,SAAS;oBAAE,SAAQ;gBACxE,MAAM,SAAS,GAAG,GAAG,CAAC,WAAW,EAAE,GAAG,CAAC,IAAI,CAAC,EAAE,WAAW,CAAC,KAAK,CAAA;gBAC/D,IAAI,SAAS,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC;oBACzB,GAAG,GAAG,IAAI,CAAA;oBACV,MAAK;gBACP,CAAC;YACH,CAAC;YACD,IAAI,GAAG;gBAAE,OAAO,EAAE,CAAA;QACpB,CAAC;QACD,OAAO;YACL,SAAS,EAAE,CAAC,CAAC,IAAI;YACjB,SAAS,EAAE,CAAC,CAAC,WAAW;YACxB,WAAW,EAAE,CAAC,CAAC,MAAM;YACrB,YAAY,EAAE,OAAO;SACtB,CAAA;IACH,CAAC,CAAC,CAAA;AACJ,CAAC;AAED,MAAM,UAAU,iCAAiC,CAC/C,IAAkC;IAElC,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,WAAW,EAAE,GAAG,IAAI,CAAA;IAE7C,MAAM,QAAQ,GAAG,KAAK,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAA;IAE5C,MAAM,aAAa,GAAG,QAAQ,CAAC,MAAM,CAAA;IACrC,yEAAyE;IACzE,wEAAwE;IACxE,yBAAyB;IACzB,IAAI,iBAAiB,GAAG,CAAC,CAAA;IACzB,IAAI,aAAa,GAAG,CAAC,EAAE,CAAC;QACtB,IAAI,QAAQ,GAAG,CAAC,CAAA;QAChB,KAAK,MAAM,CAAC,IAAI,QAAQ,EAAE,CAAC;YACzB,QAAQ,IAAI,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAA;QACnE,CAAC;QACD,iBAAiB,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,QAAQ,GAAG,aAAa,CAAC,GAAG,GAAG,CAAC,CAAA;IAClE,CAAC;IACD,MAAM,gBAAgB,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,IAAI,CAAC,CAAC,UAAU,KAAK,GAAG,CAAC,CAAC,MAAM,CAAA;IACzF,MAAM,eAAe,GAAG,oBAAoB,CAAC,KAAK,CAAC,CAAA;IAEnD,OAAO;QACL,WAAW,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;QACrC,WAAW;QACX,eAAe,EAAE,GAAG,CAAC,OAAO;QAC5B,QAAQ;QACR,SAAS,EAAE;YACT,aAAa;YACb,iBAAiB;YACjB,gBAAgB;YAChB,eAAe;SAChB;QACD,eAAe,EAAE,IAAI,CAAC,eAAe,IAAI,IAAI;KAC9C,CAAA;AACH,CAAC;AAED,MAAM,UAAU,wBAAwB,CAAC,IAA+B;IACtE,8EAA8E;IAC9E,2EAA2E;IAC3E,iCAAiC;IACjC,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,SAAS,CAAC,CAAA;IACvE,OAAO,yBAAyB,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAA;AAClD,CAAC"}