specweave 0.34.5 → 0.34.6

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 (76) hide show
  1. package/bin/fix-marketplace-errors.sh +55 -7
  2. package/dist/plugins/specweave-github/lib/github-feature-sync.d.ts.map +1 -1
  3. package/dist/plugins/specweave-github/lib/github-feature-sync.js +3 -1
  4. package/dist/plugins/specweave-github/lib/github-feature-sync.js.map +1 -1
  5. package/dist/src/cli/commands/init.d.ts.map +1 -1
  6. package/dist/src/cli/commands/init.js +11 -2
  7. package/dist/src/cli/commands/init.js.map +1 -1
  8. package/dist/src/cli/commands/living-docs.js +4 -4
  9. package/dist/src/cli/commands/living-docs.js.map +1 -1
  10. package/dist/src/cli/helpers/init/brownfield-analysis.js +15 -15
  11. package/dist/src/cli/helpers/init/brownfield-analysis.js.map +1 -1
  12. package/dist/src/cli/helpers/init/living-docs-preflight.js +7 -7
  13. package/dist/src/cli/helpers/init/living-docs-preflight.js.map +1 -1
  14. package/dist/src/cli/helpers/init/plugin-installer.d.ts.map +1 -1
  15. package/dist/src/cli/helpers/init/plugin-installer.js +61 -9
  16. package/dist/src/cli/helpers/init/plugin-installer.js.map +1 -1
  17. package/dist/src/core/background/types.d.ts +3 -0
  18. package/dist/src/core/background/types.d.ts.map +1 -1
  19. package/dist/src/core/living-docs/delivery/delivery-generator.d.ts +58 -0
  20. package/dist/src/core/living-docs/delivery/delivery-generator.d.ts.map +1 -0
  21. package/dist/src/core/living-docs/delivery/delivery-generator.js +501 -0
  22. package/dist/src/core/living-docs/delivery/delivery-generator.js.map +1 -0
  23. package/dist/src/core/living-docs/delivery/index.d.ts +8 -0
  24. package/dist/src/core/living-docs/delivery/index.d.ts.map +1 -0
  25. package/dist/src/core/living-docs/delivery/index.js +7 -0
  26. package/dist/src/core/living-docs/delivery/index.js.map +1 -0
  27. package/dist/src/core/living-docs/diagrams/index.d.ts +8 -0
  28. package/dist/src/core/living-docs/diagrams/index.d.ts.map +1 -0
  29. package/dist/src/core/living-docs/diagrams/index.js +7 -0
  30. package/dist/src/core/living-docs/diagrams/index.js.map +1 -0
  31. package/dist/src/core/living-docs/diagrams/mermaid-generator.d.ts +103 -0
  32. package/dist/src/core/living-docs/diagrams/mermaid-generator.d.ts.map +1 -0
  33. package/dist/src/core/living-docs/diagrams/mermaid-generator.js +515 -0
  34. package/dist/src/core/living-docs/diagrams/mermaid-generator.js.map +1 -0
  35. package/dist/src/core/living-docs/enterprise/enterprise-generator.d.ts +85 -0
  36. package/dist/src/core/living-docs/enterprise/enterprise-generator.d.ts.map +1 -0
  37. package/dist/src/core/living-docs/enterprise/enterprise-generator.js +556 -0
  38. package/dist/src/core/living-docs/enterprise/enterprise-generator.js.map +1 -0
  39. package/dist/src/core/living-docs/enterprise/history-analyzer.d.ts +91 -0
  40. package/dist/src/core/living-docs/enterprise/history-analyzer.d.ts.map +1 -0
  41. package/dist/src/core/living-docs/enterprise/history-analyzer.js +321 -0
  42. package/dist/src/core/living-docs/enterprise/history-analyzer.js.map +1 -0
  43. package/dist/src/core/living-docs/enterprise/index.d.ts +18 -0
  44. package/dist/src/core/living-docs/enterprise/index.d.ts.map +1 -0
  45. package/dist/src/core/living-docs/enterprise/index.js +14 -0
  46. package/dist/src/core/living-docs/enterprise/index.js.map +1 -0
  47. package/dist/src/core/living-docs/enterprise/relationship-mapper.d.ts +58 -0
  48. package/dist/src/core/living-docs/enterprise/relationship-mapper.d.ts.map +1 -0
  49. package/dist/src/core/living-docs/enterprise/relationship-mapper.js +227 -0
  50. package/dist/src/core/living-docs/enterprise/relationship-mapper.js.map +1 -0
  51. package/dist/src/core/living-docs/enterprise/spec-loader.d.ts +161 -0
  52. package/dist/src/core/living-docs/enterprise/spec-loader.d.ts.map +1 -0
  53. package/dist/src/core/living-docs/enterprise/spec-loader.js +470 -0
  54. package/dist/src/core/living-docs/enterprise/spec-loader.js.map +1 -0
  55. package/dist/src/core/living-docs/intelligent-analyzer/inconsistency-detector.d.ts +31 -1
  56. package/dist/src/core/living-docs/intelligent-analyzer/inconsistency-detector.d.ts.map +1 -1
  57. package/dist/src/core/living-docs/intelligent-analyzer/inconsistency-detector.js +626 -14
  58. package/dist/src/core/living-docs/intelligent-analyzer/inconsistency-detector.js.map +1 -1
  59. package/dist/src/core/living-docs/intelligent-analyzer/index.d.ts +8 -0
  60. package/dist/src/core/living-docs/intelligent-analyzer/index.d.ts.map +1 -1
  61. package/dist/src/core/living-docs/intelligent-analyzer/index.js +87 -4
  62. package/dist/src/core/living-docs/intelligent-analyzer/index.js.map +1 -1
  63. package/dist/src/core/living-docs/intelligent-analyzer/types.d.ts +3 -1
  64. package/dist/src/core/living-docs/intelligent-analyzer/types.d.ts.map +1 -1
  65. package/dist/src/core/living-docs/operations/index.d.ts +8 -0
  66. package/dist/src/core/living-docs/operations/index.d.ts.map +1 -0
  67. package/dist/src/core/living-docs/operations/index.js +7 -0
  68. package/dist/src/core/living-docs/operations/index.js.map +1 -0
  69. package/dist/src/core/living-docs/operations/ops-generator.d.ts +53 -0
  70. package/dist/src/core/living-docs/operations/ops-generator.d.ts.map +1 -0
  71. package/dist/src/core/living-docs/operations/ops-generator.js +462 -0
  72. package/dist/src/core/living-docs/operations/ops-generator.js.map +1 -0
  73. package/package.json +1 -1
  74. package/plugins/specweave/commands/living-docs.md +168 -39
  75. package/plugins/specweave-github/lib/github-feature-sync.js +1 -1
  76. package/plugins/specweave-github/lib/github-feature-sync.ts +3 -1
@@ -0,0 +1,103 @@
1
+ /**
2
+ * Mermaid Diagram Generator
3
+ *
4
+ * Generates various Mermaid diagrams for enterprise documentation:
5
+ * - System architecture (C4 context)
6
+ * - Feature hierarchy
7
+ * - Team org charts
8
+ * - Module dependencies
9
+ * - Timeline/Gantt charts
10
+ */
11
+ import type { EnhancedFeatureSpec } from '../enterprise/spec-loader.js';
12
+ import type { ProjectTimeline } from '../enterprise/history-analyzer.js';
13
+ import type { RelationshipMap } from '../enterprise/relationship-mapper.js';
14
+ import type { RepoAnalysis } from '../intelligent-analyzer/types.js';
15
+ export interface MermaidGeneratorOptions {
16
+ projectPath: string;
17
+ projectName: string;
18
+ features?: EnhancedFeatureSpec[];
19
+ timeline?: ProjectTimeline;
20
+ relationships?: RelationshipMap;
21
+ repoAnalyses?: Map<string, RepoAnalysis>;
22
+ teams?: Array<{
23
+ name: string;
24
+ repos: string[];
25
+ members?: string[];
26
+ }>;
27
+ }
28
+ export interface MermaidGenerationResult {
29
+ diagrams: MermaidDiagram[];
30
+ savedFiles: string[];
31
+ }
32
+ export interface MermaidDiagram {
33
+ name: string;
34
+ type: DiagramType;
35
+ content: string;
36
+ description: string;
37
+ }
38
+ export type DiagramType = 'flowchart' | 'sequence' | 'classDiagram' | 'stateDiagram' | 'erDiagram' | 'gantt' | 'pie' | 'mindmap' | 'timeline' | 'c4Context';
39
+ export declare class MermaidGenerator {
40
+ private options;
41
+ constructor(options: MermaidGeneratorOptions);
42
+ /**
43
+ * Generate all diagrams
44
+ */
45
+ generate(): Promise<MermaidGenerationResult>;
46
+ /**
47
+ * Generate feature hierarchy flowchart
48
+ */
49
+ private generateFeatureHierarchy;
50
+ /**
51
+ * Generate team org chart
52
+ */
53
+ private generateTeamOrgChart;
54
+ /**
55
+ * Generate module dependencies graph
56
+ */
57
+ private generateModuleDependencies;
58
+ /**
59
+ * Generate project timeline Gantt chart
60
+ */
61
+ private generateProjectTimeline;
62
+ /**
63
+ * Generate system architecture C4 context diagram
64
+ */
65
+ private generateSystemArchitecture;
66
+ /**
67
+ * Generate feature status pie chart
68
+ */
69
+ private generateFeatureStatusPie;
70
+ /**
71
+ * Generate team-to-feature ownership diagram
72
+ */
73
+ private generateTeamFeatureOwnership;
74
+ /**
75
+ * Generate index file for all diagrams
76
+ */
77
+ private generateIndex;
78
+ /**
79
+ * Wrap diagram in markdown document
80
+ */
81
+ private wrapDiagram;
82
+ /**
83
+ * Sanitize ID for Mermaid (remove special characters)
84
+ */
85
+ private sanitizeId;
86
+ /**
87
+ * Truncate string to max length
88
+ */
89
+ private truncate;
90
+ /**
91
+ * Get status icon
92
+ */
93
+ private getStatusIcon;
94
+ /**
95
+ * Get event icon
96
+ */
97
+ private getEventIcon;
98
+ }
99
+ /**
100
+ * Standalone function for quick diagram generation
101
+ */
102
+ export declare function generateMermaidDiagrams(options: MermaidGeneratorOptions): Promise<MermaidGenerationResult>;
103
+ //# sourceMappingURL=mermaid-generator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mermaid-generator.d.ts","sourceRoot":"","sources":["../../../../../src/core/living-docs/diagrams/mermaid-generator.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAIH,OAAO,KAAK,EAAE,mBAAmB,EAAgB,MAAM,8BAA8B,CAAC;AACtF,OAAO,KAAK,EAAE,eAAe,EAAiB,MAAM,mCAAmC,CAAC;AACxF,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sCAAsC,CAAC;AAC5E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kCAAkC,CAAC;AAErE,MAAM,WAAW,uBAAuB;IACtC,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,mBAAmB,EAAE,CAAC;IACjC,QAAQ,CAAC,EAAE,eAAe,CAAC;IAC3B,aAAa,CAAC,EAAE,eAAe,CAAC;IAChC,YAAY,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;IACzC,KAAK,CAAC,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,EAAE,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC,CAAC;CACtE;AAED,MAAM,WAAW,uBAAuB;IACtC,QAAQ,EAAE,cAAc,EAAE,CAAC;IAC3B,UAAU,EAAE,MAAM,EAAE,CAAC;CACtB;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,WAAW,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,MAAM,WAAW,GACnB,WAAW,GACX,UAAU,GACV,cAAc,GACd,cAAc,GACd,WAAW,GACX,OAAO,GACP,KAAK,GACL,SAAS,GACT,UAAU,GACV,WAAW,CAAC;AAEhB,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,OAAO,CAA0B;gBAE7B,OAAO,EAAE,uBAAuB;IAI5C;;OAEG;IACG,QAAQ,IAAI,OAAO,CAAC,uBAAuB,CAAC;IA8ElD;;OAEG;IACH,OAAO,CAAC,wBAAwB;IAqDhC;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAkC5B;;OAEG;IACH,OAAO,CAAC,0BAA0B;IA+ClC;;OAEG;IACH,OAAO,CAAC,uBAAuB;IAiD/B;;OAEG;IACH,OAAO,CAAC,0BAA0B;IAyGlC;;OAEG;IACH,OAAO,CAAC,wBAAwB;IAuBhC;;OAEG;IACH,OAAO,CAAC,4BAA4B;IAsDpC;;OAEG;IACH,OAAO,CAAC,aAAa;IA8BrB;;OAEG;IACH,OAAO,CAAC,WAAW;IAanB;;OAEG;IACH,OAAO,CAAC,UAAU;IAIlB;;OAEG;IACH,OAAO,CAAC,QAAQ;IAKhB;;OAEG;IACH,OAAO,CAAC,aAAa;IASrB;;OAEG;IACH,OAAO,CAAC,YAAY;CAUrB;AAED;;GAEG;AACH,wBAAsB,uBAAuB,CAC3C,OAAO,EAAE,uBAAuB,GAC/B,OAAO,CAAC,uBAAuB,CAAC,CAGlC"}
@@ -0,0 +1,515 @@
1
+ /**
2
+ * Mermaid Diagram Generator
3
+ *
4
+ * Generates various Mermaid diagrams for enterprise documentation:
5
+ * - System architecture (C4 context)
6
+ * - Feature hierarchy
7
+ * - Team org charts
8
+ * - Module dependencies
9
+ * - Timeline/Gantt charts
10
+ */
11
+ import * as fs from 'fs';
12
+ import * as path from 'path';
13
+ export class MermaidGenerator {
14
+ constructor(options) {
15
+ this.options = options;
16
+ }
17
+ /**
18
+ * Generate all diagrams
19
+ */
20
+ async generate() {
21
+ const diagrams = [];
22
+ const savedFiles = [];
23
+ const diagramsPath = path.join(this.options.projectPath, '.specweave/docs/internal/diagrams');
24
+ fs.mkdirSync(diagramsPath, { recursive: true });
25
+ // Generate feature hierarchy diagram
26
+ if (this.options.features && this.options.features.length > 0) {
27
+ const featureHierarchy = this.generateFeatureHierarchy();
28
+ diagrams.push(featureHierarchy);
29
+ const featurePath = path.join(diagramsPath, 'feature-hierarchy.md');
30
+ fs.writeFileSync(featurePath, this.wrapDiagram(featureHierarchy));
31
+ savedFiles.push(featurePath);
32
+ }
33
+ // Generate team org chart
34
+ if (this.options.teams && this.options.teams.length > 0) {
35
+ const orgChart = this.generateTeamOrgChart();
36
+ diagrams.push(orgChart);
37
+ const orgPath = path.join(diagramsPath, 'team-org-chart.md');
38
+ fs.writeFileSync(orgPath, this.wrapDiagram(orgChart));
39
+ savedFiles.push(orgPath);
40
+ }
41
+ // Generate module dependencies
42
+ if (this.options.relationships) {
43
+ const moduleDeps = this.generateModuleDependencies();
44
+ diagrams.push(moduleDeps);
45
+ const modulePath = path.join(diagramsPath, 'module-dependencies.md');
46
+ fs.writeFileSync(modulePath, this.wrapDiagram(moduleDeps));
47
+ savedFiles.push(modulePath);
48
+ }
49
+ // Generate project timeline
50
+ if (this.options.timeline) {
51
+ const timelineChart = this.generateProjectTimeline();
52
+ diagrams.push(timelineChart);
53
+ const timelinePath = path.join(diagramsPath, 'project-timeline.md');
54
+ fs.writeFileSync(timelinePath, this.wrapDiagram(timelineChart));
55
+ savedFiles.push(timelinePath);
56
+ }
57
+ // Generate system architecture (C4)
58
+ if (this.options.repoAnalyses && this.options.repoAnalyses.size > 0) {
59
+ const systemArch = this.generateSystemArchitecture();
60
+ diagrams.push(systemArch);
61
+ const archPath = path.join(diagramsPath, 'system-architecture.md');
62
+ fs.writeFileSync(archPath, this.wrapDiagram(systemArch));
63
+ savedFiles.push(archPath);
64
+ }
65
+ // Generate feature status pie chart
66
+ if (this.options.features && this.options.features.length > 0) {
67
+ const statusPie = this.generateFeatureStatusPie();
68
+ diagrams.push(statusPie);
69
+ const piePath = path.join(diagramsPath, 'feature-status.md');
70
+ fs.writeFileSync(piePath, this.wrapDiagram(statusPie));
71
+ savedFiles.push(piePath);
72
+ }
73
+ // Generate team-to-feature ownership diagram
74
+ if (this.options.relationships && this.options.teams) {
75
+ const teamFeatures = this.generateTeamFeatureOwnership();
76
+ diagrams.push(teamFeatures);
77
+ const teamFeatPath = path.join(diagramsPath, 'team-feature-ownership.md');
78
+ fs.writeFileSync(teamFeatPath, this.wrapDiagram(teamFeatures));
79
+ savedFiles.push(teamFeatPath);
80
+ }
81
+ // Generate index file
82
+ const indexPath = path.join(diagramsPath, 'index.md');
83
+ fs.writeFileSync(indexPath, this.generateIndex(diagrams));
84
+ savedFiles.push(indexPath);
85
+ return { diagrams, savedFiles };
86
+ }
87
+ /**
88
+ * Generate feature hierarchy flowchart
89
+ */
90
+ generateFeatureHierarchy() {
91
+ const features = this.options.features || [];
92
+ const lines = ['flowchart TB'];
93
+ // Group features by project
94
+ const byProject = new Map();
95
+ for (const f of features) {
96
+ const proj = f.project || 'default';
97
+ if (!byProject.has(proj))
98
+ byProject.set(proj, []);
99
+ byProject.get(proj).push(f);
100
+ }
101
+ // Create subgraphs for each project
102
+ for (const [project, projectFeatures] of byProject) {
103
+ const safeProject = this.sanitizeId(project);
104
+ lines.push(` subgraph ${safeProject}["${project}"]`);
105
+ for (const feature of projectFeatures.slice(0, 20)) { // Limit for readability
106
+ const safeId = this.sanitizeId(feature.featureId);
107
+ const statusIcon = this.getStatusIcon(feature.status);
108
+ lines.push(` ${safeId}["${statusIcon} ${feature.featureId}: ${this.truncate(feature.featureName, 30)}"]`);
109
+ // Add user stories as children
110
+ for (const us of feature.userStories.slice(0, 5)) { // Limit
111
+ const safeUsId = this.sanitizeId(us.id);
112
+ const usIcon = this.getStatusIcon(us.status);
113
+ lines.push(` ${safeUsId}["${usIcon} ${us.id}"]`);
114
+ lines.push(` ${safeId} --> ${safeUsId}`);
115
+ }
116
+ if (feature.userStories.length > 5) {
117
+ lines.push(` ${safeId}_more["... +${feature.userStories.length - 5} more"]`);
118
+ lines.push(` ${safeId} --> ${safeId}_more`);
119
+ }
120
+ }
121
+ lines.push(' end');
122
+ }
123
+ // Add styling
124
+ lines.push('');
125
+ lines.push(' classDef completed fill:#90EE90,stroke:#333');
126
+ lines.push(' classDef active fill:#87CEEB,stroke:#333');
127
+ lines.push(' classDef archived fill:#D3D3D3,stroke:#333');
128
+ return {
129
+ name: 'Feature Hierarchy',
130
+ type: 'flowchart',
131
+ content: lines.join('\n'),
132
+ description: 'Hierarchical view of all features and user stories',
133
+ };
134
+ }
135
+ /**
136
+ * Generate team org chart
137
+ */
138
+ generateTeamOrgChart() {
139
+ const teams = this.options.teams || [];
140
+ const lines = ['flowchart TB'];
141
+ // Root node
142
+ lines.push(` org["${this.options.projectName}"]`);
143
+ for (const team of teams) {
144
+ const safeId = this.sanitizeId(team.name);
145
+ lines.push(` ${safeId}["${team.name}<br/>${team.repos.length} repos"]`);
146
+ lines.push(` org --> ${safeId}`);
147
+ // Add repos under team
148
+ for (const repo of team.repos.slice(0, 5)) {
149
+ const safeRepoId = this.sanitizeId(team.name + '_' + repo);
150
+ lines.push(` ${safeRepoId}[("${repo}")]`);
151
+ lines.push(` ${safeId} --> ${safeRepoId}`);
152
+ }
153
+ if (team.repos.length > 5) {
154
+ const moreId = this.sanitizeId(team.name + '_more');
155
+ lines.push(` ${moreId}["... +${team.repos.length - 5} more"]`);
156
+ lines.push(` ${safeId} --> ${moreId}`);
157
+ }
158
+ }
159
+ return {
160
+ name: 'Team Organization',
161
+ type: 'flowchart',
162
+ content: lines.join('\n'),
163
+ description: 'Team structure with repository ownership',
164
+ };
165
+ }
166
+ /**
167
+ * Generate module dependencies graph
168
+ */
169
+ generateModuleDependencies() {
170
+ const relationships = this.options.relationships;
171
+ const lines = ['flowchart LR'];
172
+ if (!relationships) {
173
+ lines.push(' empty["No module dependencies detected"]');
174
+ return {
175
+ name: 'Module Dependencies',
176
+ type: 'flowchart',
177
+ content: lines.join('\n'),
178
+ description: 'Module-to-module dependency graph',
179
+ };
180
+ }
181
+ const moduleDeps = relationships.moduleDependencies;
182
+ const addedModules = new Set();
183
+ // Add all modules and their dependencies
184
+ for (const [module, deps] of moduleDeps.entries()) {
185
+ const safeModule = this.sanitizeId(module);
186
+ if (!addedModules.has(module)) {
187
+ lines.push(` ${safeModule}["${module}"]`);
188
+ addedModules.add(module);
189
+ }
190
+ for (const dep of deps.slice(0, 10)) { // Limit edges
191
+ const safeDep = this.sanitizeId(dep);
192
+ if (!addedModules.has(dep)) {
193
+ lines.push(` ${safeDep}["${dep}"]`);
194
+ addedModules.add(dep);
195
+ }
196
+ lines.push(` ${safeModule} --> ${safeDep}`);
197
+ }
198
+ }
199
+ if (addedModules.size === 0) {
200
+ lines.push(' empty["No module dependencies detected"]');
201
+ }
202
+ return {
203
+ name: 'Module Dependencies',
204
+ type: 'flowchart',
205
+ content: lines.join('\n'),
206
+ description: 'Module-to-module dependency graph',
207
+ };
208
+ }
209
+ /**
210
+ * Generate project timeline Gantt chart
211
+ */
212
+ generateProjectTimeline() {
213
+ const timeline = this.options.timeline;
214
+ const lines = [
215
+ 'gantt',
216
+ ` title ${this.options.projectName} Timeline`,
217
+ ' dateFormat YYYY-MM-DD',
218
+ ];
219
+ if (!timeline || timeline.events.length === 0) {
220
+ return {
221
+ name: 'Project Timeline',
222
+ type: 'gantt',
223
+ content: lines.join('\n') + '\n section Empty\n No events :2024-01-01, 1d',
224
+ description: 'Project history and milestones',
225
+ };
226
+ }
227
+ // Group events by year/quarter
228
+ const bySection = new Map();
229
+ for (const event of timeline.events) {
230
+ const date = new Date(event.date);
231
+ const section = `${date.getFullYear()} Q${Math.ceil((date.getMonth() + 1) / 3)}`;
232
+ if (!bySection.has(section))
233
+ bySection.set(section, []);
234
+ bySection.get(section).push(event);
235
+ }
236
+ // Sort sections chronologically
237
+ const sortedSections = Array.from(bySection.keys()).sort();
238
+ for (const section of sortedSections.slice(-8)) { // Last 8 quarters
239
+ lines.push(` section ${section}`);
240
+ const events = bySection.get(section);
241
+ for (const event of events.slice(0, 5)) { // Limit events per section
242
+ const safeTitle = this.truncate(event.title, 40).replace(/:/g, ' ');
243
+ const date = event.date.split('T')[0];
244
+ const icon = this.getEventIcon(event.type);
245
+ lines.push(` ${icon} ${safeTitle} :${date}, 1d`);
246
+ }
247
+ }
248
+ return {
249
+ name: 'Project Timeline',
250
+ type: 'gantt',
251
+ content: lines.join('\n'),
252
+ description: 'Project history and milestones',
253
+ };
254
+ }
255
+ /**
256
+ * Generate system architecture C4 context diagram
257
+ */
258
+ generateSystemArchitecture() {
259
+ const analyses = this.options.repoAnalyses;
260
+ const lines = ['flowchart TB'];
261
+ if (!analyses || analyses.size === 0) {
262
+ lines.push(' empty["No system components detected"]');
263
+ return {
264
+ name: 'System Architecture',
265
+ type: 'flowchart',
266
+ content: lines.join('\n'),
267
+ description: 'C4-style system context diagram',
268
+ };
269
+ }
270
+ // External actors
271
+ lines.push(' subgraph external["External Actors"]');
272
+ lines.push(' user["👤 User"]');
273
+ lines.push(' admin["👤 Admin"]');
274
+ lines.push(' end');
275
+ lines.push('');
276
+ // System boundary
277
+ lines.push(` subgraph system["${this.options.projectName}"]`);
278
+ // Categorize repos by type
279
+ const frontends = [];
280
+ const backends = [];
281
+ const databases = [];
282
+ const services = [];
283
+ for (const [name, analysis] of analyses) {
284
+ const purpose = analysis.purpose.toLowerCase();
285
+ const concepts = analysis.keyConcepts.join(' ').toLowerCase();
286
+ if (purpose.includes('frontend') || purpose.includes('ui') || concepts.includes('react') || concepts.includes('vue')) {
287
+ frontends.push(name);
288
+ }
289
+ else if (purpose.includes('database') || purpose.includes('storage') || concepts.includes('postgres') || concepts.includes('mongo')) {
290
+ databases.push(name);
291
+ }
292
+ else if (purpose.includes('api') || purpose.includes('backend') || purpose.includes('service')) {
293
+ backends.push(name);
294
+ }
295
+ else {
296
+ services.push(name);
297
+ }
298
+ }
299
+ // Add frontend layer
300
+ if (frontends.length > 0) {
301
+ lines.push(' subgraph frontend["Frontend Layer"]');
302
+ for (const f of frontends.slice(0, 5)) {
303
+ lines.push(` ${this.sanitizeId(f)}["📱 ${f}"]`);
304
+ }
305
+ lines.push(' end');
306
+ }
307
+ // Add backend layer
308
+ if (backends.length > 0) {
309
+ lines.push(' subgraph backend["Backend Layer"]');
310
+ for (const b of backends.slice(0, 5)) {
311
+ lines.push(` ${this.sanitizeId(b)}["⚙️ ${b}"]`);
312
+ }
313
+ lines.push(' end');
314
+ }
315
+ // Add services layer
316
+ if (services.length > 0) {
317
+ lines.push(' subgraph services["Services"]');
318
+ for (const s of services.slice(0, 5)) {
319
+ lines.push(` ${this.sanitizeId(s)}["🔧 ${s}"]`);
320
+ }
321
+ lines.push(' end');
322
+ }
323
+ // Add data layer
324
+ if (databases.length > 0) {
325
+ lines.push(' subgraph data["Data Layer"]');
326
+ for (const d of databases.slice(0, 3)) {
327
+ lines.push(` ${this.sanitizeId(d)}[("💾 ${d}")]`);
328
+ }
329
+ lines.push(' end');
330
+ }
331
+ lines.push(' end');
332
+ // Add connections
333
+ lines.push('');
334
+ lines.push(' user --> frontend');
335
+ lines.push(' admin --> frontend');
336
+ if (frontends.length > 0 && backends.length > 0) {
337
+ lines.push(' frontend --> backend');
338
+ }
339
+ if (backends.length > 0 && databases.length > 0) {
340
+ lines.push(' backend --> data');
341
+ }
342
+ if (backends.length > 0 && services.length > 0) {
343
+ lines.push(' backend <--> services');
344
+ }
345
+ return {
346
+ name: 'System Architecture',
347
+ type: 'flowchart',
348
+ content: lines.join('\n'),
349
+ description: 'C4-style system context diagram',
350
+ };
351
+ }
352
+ /**
353
+ * Generate feature status pie chart
354
+ */
355
+ generateFeatureStatusPie() {
356
+ const features = this.options.features || [];
357
+ const completed = features.filter(f => f.status === 'completed').length;
358
+ const active = features.filter(f => f.status === 'active').length;
359
+ const archived = features.filter(f => f.status === 'archived').length;
360
+ const lines = [
361
+ 'pie showData',
362
+ ` title Feature Status Distribution`,
363
+ ` "Completed" : ${completed}`,
364
+ ` "Active" : ${active}`,
365
+ ` "Archived" : ${archived}`,
366
+ ];
367
+ return {
368
+ name: 'Feature Status',
369
+ type: 'pie',
370
+ content: lines.join('\n'),
371
+ description: 'Distribution of feature statuses',
372
+ };
373
+ }
374
+ /**
375
+ * Generate team-to-feature ownership diagram
376
+ */
377
+ generateTeamFeatureOwnership() {
378
+ const relationships = this.options.relationships;
379
+ const teams = this.options.teams || [];
380
+ const lines = ['flowchart LR'];
381
+ if (!relationships) {
382
+ lines.push(' empty["No team ownership data"]');
383
+ return {
384
+ name: 'Team Feature Ownership',
385
+ type: 'flowchart',
386
+ content: lines.join('\n'),
387
+ description: 'Which team owns which features',
388
+ };
389
+ }
390
+ // Add teams
391
+ lines.push(' subgraph teams["Teams"]');
392
+ for (const team of teams) {
393
+ const safeId = this.sanitizeId('team_' + team.name);
394
+ lines.push(` ${safeId}["👥 ${team.name}"]`);
395
+ }
396
+ lines.push(' end');
397
+ // Add features
398
+ lines.push(' subgraph features["Features"]');
399
+ const addedFeatures = new Set();
400
+ for (const features of relationships.teamToFeatures.values()) {
401
+ for (const featureId of features.slice(0, 10)) {
402
+ if (!addedFeatures.has(featureId)) {
403
+ const safeId = this.sanitizeId('feature_' + featureId);
404
+ lines.push(` ${safeId}["📋 ${featureId}"]`);
405
+ addedFeatures.add(featureId);
406
+ }
407
+ }
408
+ }
409
+ lines.push(' end');
410
+ // Add connections
411
+ for (const [team, features] of relationships.teamToFeatures) {
412
+ const safeTeamId = this.sanitizeId('team_' + team);
413
+ for (const featureId of features.slice(0, 5)) {
414
+ const safeFeatureId = this.sanitizeId('feature_' + featureId);
415
+ lines.push(` ${safeTeamId} --> ${safeFeatureId}`);
416
+ }
417
+ }
418
+ return {
419
+ name: 'Team Feature Ownership',
420
+ type: 'flowchart',
421
+ content: lines.join('\n'),
422
+ description: 'Which team owns which features',
423
+ };
424
+ }
425
+ /**
426
+ * Generate index file for all diagrams
427
+ */
428
+ generateIndex(diagrams) {
429
+ const lines = [
430
+ '# Diagrams',
431
+ '',
432
+ `*Auto-generated for ${this.options.projectName}*`,
433
+ '',
434
+ '## Available Diagrams',
435
+ '',
436
+ '| Diagram | Type | Description |',
437
+ '|---------|------|-------------|',
438
+ ];
439
+ for (const diagram of diagrams) {
440
+ const filename = diagram.name.toLowerCase().replace(/\s+/g, '-') + '.md';
441
+ lines.push(`| [${diagram.name}](./${filename}) | ${diagram.type} | ${diagram.description} |`);
442
+ }
443
+ lines.push('');
444
+ lines.push('## Viewing Diagrams');
445
+ lines.push('');
446
+ lines.push('These diagrams use [Mermaid](https://mermaid.js.org/) syntax and can be viewed:');
447
+ lines.push('');
448
+ lines.push('1. **GitHub/GitLab**: Rendered automatically in markdown files');
449
+ lines.push('2. **VS Code**: Install "Mermaid Preview" extension');
450
+ lines.push('3. **Docusaurus**: Built-in mermaid support');
451
+ lines.push('4. **Online**: Copy to [mermaid.live](https://mermaid.live)');
452
+ return lines.join('\n');
453
+ }
454
+ /**
455
+ * Wrap diagram in markdown document
456
+ */
457
+ wrapDiagram(diagram) {
458
+ return [
459
+ `# ${diagram.name}`,
460
+ '',
461
+ `*${diagram.description}*`,
462
+ '',
463
+ '```mermaid',
464
+ diagram.content,
465
+ '```',
466
+ '',
467
+ ].join('\n');
468
+ }
469
+ /**
470
+ * Sanitize ID for Mermaid (remove special characters)
471
+ */
472
+ sanitizeId(id) {
473
+ return id.replace(/[^a-zA-Z0-9_]/g, '_').replace(/^_+|_+$/g, '');
474
+ }
475
+ /**
476
+ * Truncate string to max length
477
+ */
478
+ truncate(str, maxLen) {
479
+ if (str.length <= maxLen)
480
+ return str;
481
+ return str.slice(0, maxLen - 3) + '...';
482
+ }
483
+ /**
484
+ * Get status icon
485
+ */
486
+ getStatusIcon(status) {
487
+ switch (status) {
488
+ case 'completed': return '✅';
489
+ case 'active': return '🔵';
490
+ case 'archived': return '📦';
491
+ default: return '⬜';
492
+ }
493
+ }
494
+ /**
495
+ * Get event icon
496
+ */
497
+ getEventIcon(type) {
498
+ switch (type) {
499
+ case 'feature_started': return '🚀';
500
+ case 'feature_completed': return '✅';
501
+ case 'release': return '📦';
502
+ case 'milestone': return '🎯';
503
+ case 'incident': return '⚠️';
504
+ default: return '📌';
505
+ }
506
+ }
507
+ }
508
+ /**
509
+ * Standalone function for quick diagram generation
510
+ */
511
+ export async function generateMermaidDiagrams(options) {
512
+ const generator = new MermaidGenerator(options);
513
+ return generator.generate();
514
+ }
515
+ //# sourceMappingURL=mermaid-generator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mermaid-generator.js","sourceRoot":"","sources":["../../../../../src/core/living-docs/diagrams/mermaid-generator.ts"],"names":[],"mappings":"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"}