@nahisaho/musubix-core 1.0.0 → 1.0.2

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 (33) hide show
  1. package/dist/cli/commands/codegen.d.ts +125 -0
  2. package/dist/cli/commands/codegen.d.ts.map +1 -0
  3. package/dist/cli/commands/codegen.js +684 -0
  4. package/dist/cli/commands/codegen.js.map +1 -0
  5. package/dist/cli/commands/design.d.ts +158 -0
  6. package/dist/cli/commands/design.d.ts.map +1 -0
  7. package/dist/cli/commands/design.js +562 -0
  8. package/dist/cli/commands/design.js.map +1 -0
  9. package/dist/cli/commands/explain.d.ts +116 -0
  10. package/dist/cli/commands/explain.d.ts.map +1 -0
  11. package/dist/cli/commands/explain.js +419 -0
  12. package/dist/cli/commands/explain.js.map +1 -0
  13. package/dist/cli/commands/index.d.ts +13 -0
  14. package/dist/cli/commands/index.d.ts.map +1 -1
  15. package/dist/cli/commands/index.js +31 -7
  16. package/dist/cli/commands/index.js.map +1 -1
  17. package/dist/cli/commands/requirements.d.ts +103 -0
  18. package/dist/cli/commands/requirements.d.ts.map +1 -0
  19. package/dist/cli/commands/requirements.js +403 -0
  20. package/dist/cli/commands/requirements.js.map +1 -0
  21. package/dist/cli/commands/skills.d.ts +99 -0
  22. package/dist/cli/commands/skills.d.ts.map +1 -0
  23. package/dist/cli/commands/skills.js +363 -0
  24. package/dist/cli/commands/skills.js.map +1 -0
  25. package/dist/cli/commands/test.d.ts +113 -0
  26. package/dist/cli/commands/test.d.ts.map +1 -0
  27. package/dist/cli/commands/test.js +532 -0
  28. package/dist/cli/commands/test.js.map +1 -0
  29. package/dist/cli/commands/trace.d.ts +132 -0
  30. package/dist/cli/commands/trace.d.ts.map +1 -0
  31. package/dist/cli/commands/trace.js +553 -0
  32. package/dist/cli/commands/trace.js.map +1 -0
  33. package/package.json +5 -3
@@ -0,0 +1,562 @@
1
+ /**
2
+ * Design Command
3
+ *
4
+ * CLI commands for design generation and validation
5
+ *
6
+ * @packageDocumentation
7
+ * @module cli/commands/design
8
+ *
9
+ * @see REQ-CLI-002 - Design CLI
10
+ * @see REQ-DG-001 - Pattern Detection
11
+ * @see REQ-DG-002 - SOLID Validation
12
+ * @see DES-MUSUBIX-001 Section 16-C.2 - designコマンド設計
13
+ * @see TSK-066〜070 - Design CLI実装
14
+ */
15
+ import { readFile, writeFile, mkdir, access } from 'fs/promises';
16
+ import { resolve, dirname } from 'path';
17
+ import { ExitCode, getGlobalOptions, outputResult } from '../base.js';
18
+ /**
19
+ * SOLID principles validation rules
20
+ */
21
+ export const SOLID_PRINCIPLES = {
22
+ S: 'Single Responsibility Principle',
23
+ O: 'Open/Closed Principle',
24
+ L: 'Liskov Substitution Principle',
25
+ I: 'Interface Segregation Principle',
26
+ D: 'Dependency Inversion Principle',
27
+ };
28
+ /**
29
+ * Known design patterns
30
+ */
31
+ const KNOWN_PATTERNS = {
32
+ factory: {
33
+ name: 'Factory',
34
+ category: 'creational',
35
+ intent: 'Define an interface for creating objects without specifying concrete classes',
36
+ applicability: ['Object creation logic is complex', 'System needs to be independent of how objects are created'],
37
+ consequences: {
38
+ positive: ['Isolates concrete classes', 'Easy to introduce new products'],
39
+ negative: ['May require new subclasses for minor variations'],
40
+ },
41
+ },
42
+ singleton: {
43
+ name: 'Singleton',
44
+ category: 'creational',
45
+ intent: 'Ensure a class has only one instance',
46
+ applicability: ['Exactly one instance is needed', 'Global access point required'],
47
+ consequences: {
48
+ positive: ['Controlled access to sole instance', 'Reduced namespace'],
49
+ negative: ['Difficult to test', 'Hidden dependencies'],
50
+ },
51
+ },
52
+ observer: {
53
+ name: 'Observer',
54
+ category: 'behavioral',
55
+ intent: 'Define a one-to-many dependency between objects',
56
+ applicability: ['Changes to one object require changes to others', 'Objects should be loosely coupled'],
57
+ consequences: {
58
+ positive: ['Loose coupling', 'Broadcast communication'],
59
+ negative: ['Unexpected updates', 'Memory leaks if not managed'],
60
+ },
61
+ },
62
+ strategy: {
63
+ name: 'Strategy',
64
+ category: 'behavioral',
65
+ intent: 'Define a family of algorithms and make them interchangeable',
66
+ applicability: ['Multiple algorithms exist for a task', 'Behavior varies based on context'],
67
+ consequences: {
68
+ positive: ['Algorithms can vary independently', 'Eliminates conditional statements'],
69
+ negative: ['Increased number of objects', 'Clients must be aware of strategies'],
70
+ },
71
+ },
72
+ adapter: {
73
+ name: 'Adapter',
74
+ category: 'structural',
75
+ intent: 'Convert interface of a class into another interface clients expect',
76
+ applicability: ['Use existing class with incompatible interface', 'Create reusable class with unrelated classes'],
77
+ consequences: {
78
+ positive: ['Increased reusability', 'Flexibility in design'],
79
+ negative: ['Increased complexity', 'Performance overhead'],
80
+ },
81
+ },
82
+ };
83
+ /**
84
+ * Register design command
85
+ */
86
+ export function registerDesignCommand(program) {
87
+ const design = program
88
+ .command('design')
89
+ .description('Design generation and validation');
90
+ // design generate
91
+ design
92
+ .command('generate <requirements>')
93
+ .description('Generate design from requirements')
94
+ .option('-o, --output <file>', 'Output file')
95
+ .option('-f, --format <format>', 'Output format', 'markdown')
96
+ .option('-l, --level <level>', 'C4 level', 'component')
97
+ .action(async (requirements, options) => {
98
+ const globalOpts = getGlobalOptions(program);
99
+ try {
100
+ const reqPath = resolve(process.cwd(), requirements);
101
+ const content = await readFile(reqPath, 'utf-8');
102
+ // Parse requirements and generate design
103
+ const model = generateC4Model(content, options.level ?? 'component');
104
+ const patterns = detectApplicablePatterns(content);
105
+ const traceability = generateTraceability(content, model);
106
+ const result = {
107
+ success: true,
108
+ design: model,
109
+ patterns,
110
+ traceability,
111
+ message: `Generated ${options.level ?? 'component'} design with ${model.elements.length} elements`,
112
+ };
113
+ // Output
114
+ if (options.output) {
115
+ const outputPath = resolve(process.cwd(), options.output);
116
+ await mkdir(dirname(outputPath), { recursive: true });
117
+ let outputContent;
118
+ if (options.format === 'mermaid') {
119
+ outputContent = generateMermaidDiagram(model);
120
+ }
121
+ else if (options.format === 'plantuml') {
122
+ outputContent = generatePlantUMLDiagram(model);
123
+ }
124
+ else if (options.format === 'json' || globalOpts.json) {
125
+ outputContent = JSON.stringify(result, null, 2);
126
+ }
127
+ else {
128
+ outputContent = generateMarkdownDesign(model, patterns, traceability);
129
+ }
130
+ await writeFile(outputPath, outputContent, 'utf-8');
131
+ if (!globalOpts.quiet) {
132
+ console.log(`✅ Design saved to ${outputPath}`);
133
+ }
134
+ }
135
+ else {
136
+ outputResult(result, globalOpts);
137
+ }
138
+ process.exit(ExitCode.SUCCESS);
139
+ }
140
+ catch (error) {
141
+ if (!globalOpts.quiet) {
142
+ console.error(`❌ Design generation failed: ${error.message}`);
143
+ }
144
+ process.exit(ExitCode.GENERAL_ERROR);
145
+ }
146
+ });
147
+ // design patterns
148
+ design
149
+ .command('patterns <context>')
150
+ .description('Detect applicable design patterns')
151
+ .option('-p, --patterns <list>', 'Pattern categories to check', 'all')
152
+ .action(async (context, _options) => {
153
+ const globalOpts = getGlobalOptions(program);
154
+ try {
155
+ // Check if context is a file or direct text
156
+ let content;
157
+ try {
158
+ const contextPath = resolve(process.cwd(), context);
159
+ await access(contextPath);
160
+ content = await readFile(contextPath, 'utf-8');
161
+ }
162
+ catch {
163
+ content = context;
164
+ }
165
+ const patterns = detectApplicablePatterns(content);
166
+ const recommendations = generatePatternRecommendations(content, patterns);
167
+ const result = {
168
+ success: true,
169
+ patterns: patterns.map(p => ({
170
+ name: p.name,
171
+ category: p.category,
172
+ confidence: 0.8,
173
+ location: 'identified from context',
174
+ suggestion: p.intent,
175
+ })),
176
+ recommendations,
177
+ message: `Detected ${patterns.length} applicable patterns`,
178
+ };
179
+ outputResult(result, globalOpts);
180
+ process.exit(ExitCode.SUCCESS);
181
+ }
182
+ catch (error) {
183
+ if (!globalOpts.quiet) {
184
+ console.error(`❌ Pattern detection failed: ${error.message}`);
185
+ }
186
+ process.exit(ExitCode.GENERAL_ERROR);
187
+ }
188
+ });
189
+ // design validate
190
+ design
191
+ .command('validate <file>')
192
+ .description('Validate SOLID compliance')
193
+ .option('--strict', 'Enable strict mode', false)
194
+ .action(async (file, options) => {
195
+ const globalOpts = getGlobalOptions(program);
196
+ try {
197
+ const filePath = resolve(process.cwd(), file);
198
+ const content = await readFile(filePath, 'utf-8');
199
+ const { violations, gaps } = validateDesign(content, options.strict ?? false);
200
+ const result = {
201
+ success: true,
202
+ valid: violations.length === 0 && gaps.length === 0,
203
+ solidViolations: violations,
204
+ traceabilityGaps: gaps,
205
+ message: violations.length === 0
206
+ ? '✅ Design is SOLID compliant'
207
+ : `❌ Found ${violations.length} SOLID violations`,
208
+ };
209
+ outputResult(result, globalOpts);
210
+ process.exit(violations.filter(v => v.severity === 'error').length === 0
211
+ ? ExitCode.SUCCESS
212
+ : ExitCode.VALIDATION_ERROR);
213
+ }
214
+ catch (error) {
215
+ if (!globalOpts.quiet) {
216
+ console.error(`❌ Validation failed: ${error.message}`);
217
+ }
218
+ process.exit(ExitCode.GENERAL_ERROR);
219
+ }
220
+ });
221
+ // design c4
222
+ design
223
+ .command('c4 <file>')
224
+ .description('Generate C4 diagram')
225
+ .option('-l, --level <level>', 'C4 level (context|container|component|code)', 'component')
226
+ .option('-f, --format <format>', 'Output format (mermaid|plantuml)', 'mermaid')
227
+ .option('-o, --output <file>', 'Output file')
228
+ .action(async (file, options) => {
229
+ const globalOpts = getGlobalOptions(program);
230
+ try {
231
+ const filePath = resolve(process.cwd(), file);
232
+ const content = await readFile(filePath, 'utf-8');
233
+ const model = generateC4Model(content, options.level ?? 'component');
234
+ let diagram;
235
+ if (options.format === 'plantuml') {
236
+ diagram = generatePlantUMLDiagram(model);
237
+ }
238
+ else {
239
+ diagram = generateMermaidDiagram(model);
240
+ }
241
+ if (options.output) {
242
+ const outputPath = resolve(process.cwd(), options.output);
243
+ await mkdir(dirname(outputPath), { recursive: true });
244
+ await writeFile(outputPath, diagram, 'utf-8');
245
+ if (!globalOpts.quiet) {
246
+ console.log(`✅ C4 diagram saved to ${outputPath}`);
247
+ }
248
+ }
249
+ else {
250
+ console.log(diagram);
251
+ }
252
+ process.exit(ExitCode.SUCCESS);
253
+ }
254
+ catch (error) {
255
+ if (!globalOpts.quiet) {
256
+ console.error(`❌ C4 generation failed: ${error.message}`);
257
+ }
258
+ process.exit(ExitCode.GENERAL_ERROR);
259
+ }
260
+ });
261
+ // design adr
262
+ design
263
+ .command('adr <decision>')
264
+ .description('Generate ADR document')
265
+ .option('-o, --output <dir>', 'Output directory', 'docs/adr')
266
+ .option('--context <text>', 'Decision context')
267
+ .option('--status <status>', 'ADR status', 'proposed')
268
+ .action(async (decision, options) => {
269
+ const globalOpts = getGlobalOptions(program);
270
+ try {
271
+ const outputDir = resolve(process.cwd(), options.output ?? 'docs/adr');
272
+ await mkdir(outputDir, { recursive: true });
273
+ // Get next ADR number
274
+ const { readdir } = await import('fs/promises');
275
+ let files = [];
276
+ try {
277
+ files = await readdir(outputDir);
278
+ }
279
+ catch {
280
+ // Directory is new
281
+ }
282
+ const adrNumbers = files
283
+ .filter(f => f.match(/^\d{4}-/))
284
+ .map(f => parseInt(f.slice(0, 4), 10))
285
+ .filter(n => !isNaN(n));
286
+ const nextNumber = Math.max(0, ...adrNumbers) + 1;
287
+ const adr = {
288
+ id: `ADR-${String(nextNumber).padStart(4, '0')}`,
289
+ title: decision,
290
+ date: new Date().toISOString().split('T')[0],
291
+ status: options.status ?? 'proposed',
292
+ context: options.context ?? 'Context to be filled',
293
+ decision: decision,
294
+ consequences: ['Positive and negative consequences to be documented'],
295
+ relatedRequirements: [],
296
+ };
297
+ const content = generateADRMarkdown(adr);
298
+ const slug = decision.toLowerCase().replace(/[^a-z0-9]+/g, '-').slice(0, 50);
299
+ const filename = `${String(nextNumber).padStart(4, '0')}-${slug}.md`;
300
+ const outputPath = resolve(outputDir, filename);
301
+ await writeFile(outputPath, content, 'utf-8');
302
+ if (!globalOpts.quiet) {
303
+ console.log(`✅ ADR created: ${outputPath}`);
304
+ }
305
+ if (globalOpts.json) {
306
+ outputResult({ success: true, adr, path: outputPath }, globalOpts);
307
+ }
308
+ process.exit(ExitCode.SUCCESS);
309
+ }
310
+ catch (error) {
311
+ if (!globalOpts.quiet) {
312
+ console.error(`❌ ADR generation failed: ${error.message}`);
313
+ }
314
+ process.exit(ExitCode.GENERAL_ERROR);
315
+ }
316
+ });
317
+ }
318
+ /**
319
+ * Generate C4 model from content
320
+ */
321
+ function generateC4Model(content, level) {
322
+ const elements = [];
323
+ const relationships = [];
324
+ // Extract entities from content
325
+ const systemMatches = content.match(/\b(?:system|service|application|component|module)\s+["']?([A-Za-z0-9_-]+)["']?/gi) || [];
326
+ const actorMatches = content.match(/\b(?:user|admin|client|actor)\s+["']?([A-Za-z0-9_-]+)["']?/gi) || [];
327
+ const seenIds = new Set();
328
+ for (const match of actorMatches) {
329
+ const name = match.split(/\s+/).pop()?.replace(/["']/g, '') || 'Unknown';
330
+ const id = `person-${name.toLowerCase()}`;
331
+ if (!seenIds.has(id)) {
332
+ seenIds.add(id);
333
+ elements.push({
334
+ id,
335
+ name,
336
+ description: `${name} user/actor`,
337
+ type: 'person',
338
+ });
339
+ }
340
+ }
341
+ for (const match of systemMatches) {
342
+ const words = match.split(/\s+/);
343
+ const type = words[0].toLowerCase();
344
+ const name = words.pop()?.replace(/["']/g, '') || 'Unknown';
345
+ const id = `${type}-${name.toLowerCase()}`;
346
+ if (!seenIds.has(id)) {
347
+ seenIds.add(id);
348
+ elements.push({
349
+ id,
350
+ name,
351
+ description: `${name} ${type}`,
352
+ type: level === 'context' ? 'software_system' : level === 'container' ? 'container' : 'component',
353
+ });
354
+ }
355
+ }
356
+ // Generate relationships
357
+ const elementIds = elements.map(e => e.id);
358
+ for (let i = 0; i < elementIds.length - 1; i++) {
359
+ relationships.push({
360
+ source: elementIds[i],
361
+ target: elementIds[i + 1],
362
+ description: 'interacts with',
363
+ });
364
+ }
365
+ return {
366
+ level,
367
+ title: `${level.charAt(0).toUpperCase() + level.slice(1)} Diagram`,
368
+ elements,
369
+ relationships,
370
+ };
371
+ }
372
+ /**
373
+ * Detect applicable patterns
374
+ */
375
+ function detectApplicablePatterns(content) {
376
+ const patterns = [];
377
+ const contentLower = content.toLowerCase();
378
+ // Pattern detection heuristics
379
+ if (contentLower.includes('create') || contentLower.includes('factory') || contentLower.includes('builder')) {
380
+ patterns.push(KNOWN_PATTERNS.factory);
381
+ }
382
+ if (contentLower.includes('single') || contentLower.includes('unique') || contentLower.includes('global')) {
383
+ patterns.push(KNOWN_PATTERNS.singleton);
384
+ }
385
+ if (contentLower.includes('notify') || contentLower.includes('event') || contentLower.includes('subscribe')) {
386
+ patterns.push(KNOWN_PATTERNS.observer);
387
+ }
388
+ if (contentLower.includes('algorithm') || contentLower.includes('strategy') || contentLower.includes('interchangeable')) {
389
+ patterns.push(KNOWN_PATTERNS.strategy);
390
+ }
391
+ if (contentLower.includes('adapter') || contentLower.includes('convert') || contentLower.includes('compatible')) {
392
+ patterns.push(KNOWN_PATTERNS.adapter);
393
+ }
394
+ return patterns;
395
+ }
396
+ /**
397
+ * Generate traceability
398
+ */
399
+ function generateTraceability(content, model) {
400
+ const traceability = [];
401
+ // Extract requirement IDs
402
+ const reqMatches = content.match(/REQ-[A-Z]+-\d+/g) || [];
403
+ for (const req of reqMatches) {
404
+ if (model.elements.length > 0) {
405
+ traceability.push({
406
+ requirement: req,
407
+ designElement: model.elements[0].id,
408
+ });
409
+ }
410
+ }
411
+ return traceability;
412
+ }
413
+ /**
414
+ * Generate pattern recommendations
415
+ */
416
+ function generatePatternRecommendations(analysisContent, patterns) {
417
+ const recommendations = [];
418
+ if (patterns.length === 0) {
419
+ recommendations.push('Consider applying design patterns to improve code structure');
420
+ }
421
+ for (const pattern of patterns) {
422
+ recommendations.push(`${pattern.name}: ${pattern.intent}`);
423
+ }
424
+ // Add content-based recommendations
425
+ if (analysisContent.toLowerCase().includes('complex') || analysisContent.toLowerCase().includes('multiple')) {
426
+ recommendations.push('Consider decomposing complex logic into smaller components');
427
+ }
428
+ return recommendations;
429
+ }
430
+ /**
431
+ * Validate design
432
+ */
433
+ function validateDesign(designContent, strict) {
434
+ const violations = [];
435
+ const gaps = [];
436
+ // Simple heuristic validation
437
+ const contentLower = designContent.toLowerCase();
438
+ // Check for potential SRP violations
439
+ if (contentLower.includes('and') && designContent.match(/class\s+\w+/gi)?.length) {
440
+ if (strict) {
441
+ violations.push({
442
+ principle: 'S',
443
+ element: 'Multiple responsibilities detected',
444
+ message: 'Class may have multiple responsibilities',
445
+ severity: 'warning',
446
+ });
447
+ }
448
+ }
449
+ // Check for traceability
450
+ const reqMatches = designContent.match(/REQ-[A-Z]+-\d+/g) || [];
451
+ const desMatches = designContent.match(/DES-[A-Z]+-\d+/g) || [];
452
+ if (reqMatches.length > 0 && desMatches.length === 0) {
453
+ const firstReq = reqMatches[0];
454
+ if (firstReq) {
455
+ gaps.push({
456
+ requirement: firstReq,
457
+ message: 'No design element traceability found',
458
+ });
459
+ }
460
+ }
461
+ return { violations, gaps };
462
+ }
463
+ /**
464
+ * Generate Mermaid diagram
465
+ */
466
+ function generateMermaidDiagram(model) {
467
+ let diagram = `---\ntitle: ${model.title}\n---\nflowchart TD\n`;
468
+ for (const element of model.elements) {
469
+ const shape = element.type === 'person' ? '([' : element.type === 'software_system' ? '[' : '[[';
470
+ const closeShape = element.type === 'person' ? '])' : element.type === 'software_system' ? ']' : ']]';
471
+ diagram += ` ${element.id}${shape}"${element.name}"${closeShape}\n`;
472
+ }
473
+ for (const rel of model.relationships) {
474
+ diagram += ` ${rel.source} -->|${rel.description}| ${rel.target}\n`;
475
+ }
476
+ return diagram;
477
+ }
478
+ /**
479
+ * Generate PlantUML diagram
480
+ */
481
+ function generatePlantUMLDiagram(model) {
482
+ let diagram = '@startuml\n';
483
+ diagram += `title ${model.title}\n\n`;
484
+ for (const element of model.elements) {
485
+ if (element.type === 'person') {
486
+ diagram += `actor "${element.name}" as ${element.id}\n`;
487
+ }
488
+ else {
489
+ diagram += `component "${element.name}" as ${element.id}\n`;
490
+ }
491
+ }
492
+ diagram += '\n';
493
+ for (const rel of model.relationships) {
494
+ diagram += `${rel.source} --> ${rel.target} : ${rel.description}\n`;
495
+ }
496
+ diagram += '@enduml\n';
497
+ return diagram;
498
+ }
499
+ /**
500
+ * Generate markdown design document
501
+ */
502
+ function generateMarkdownDesign(model, patterns, traceability) {
503
+ let output = `# Design Document\n\n`;
504
+ output += `## C4 ${model.title}\n\n`;
505
+ output += `### Elements\n\n`;
506
+ output += `| ID | Name | Type | Description |\n`;
507
+ output += `|----|------|------|-------------|\n`;
508
+ for (const el of model.elements) {
509
+ output += `| ${el.id} | ${el.name} | ${el.type} | ${el.description} |\n`;
510
+ }
511
+ output += `\n### Relationships\n\n`;
512
+ output += `| Source | Target | Description |\n`;
513
+ output += `|--------|--------|-------------|\n`;
514
+ for (const rel of model.relationships) {
515
+ output += `| ${rel.source} | ${rel.target} | ${rel.description} |\n`;
516
+ }
517
+ if (patterns.length > 0) {
518
+ output += `\n## Design Patterns\n\n`;
519
+ for (const pattern of patterns) {
520
+ output += `### ${pattern.name}\n`;
521
+ output += `- **Category**: ${pattern.category}\n`;
522
+ output += `- **Intent**: ${pattern.intent}\n\n`;
523
+ }
524
+ }
525
+ if (traceability.length > 0) {
526
+ output += `\n## Traceability\n\n`;
527
+ output += `| Requirement | Design Element |\n`;
528
+ output += `|-------------|----------------|\n`;
529
+ for (const trace of traceability) {
530
+ output += `| ${trace.requirement} | ${trace.designElement} |\n`;
531
+ }
532
+ }
533
+ return output;
534
+ }
535
+ /**
536
+ * Generate ADR markdown
537
+ */
538
+ function generateADRMarkdown(adrDoc) {
539
+ return `# ${adrDoc.id}: ${adrDoc.title}
540
+
541
+ - **Date**: ${adrDoc.date}
542
+ - **Status**: ${adrDoc.status}
543
+
544
+ ## Context
545
+
546
+ ${adrDoc.context}
547
+
548
+ ## Decision
549
+
550
+ ${adrDoc.decision}
551
+
552
+ ## Consequences
553
+
554
+ ${adrDoc.consequences.map(c => `- ${c}`).join('\n')}
555
+
556
+ ## Related Requirements
557
+
558
+ ${adrDoc.relatedRequirements.length > 0 ? adrDoc.relatedRequirements.map(r => `- ${r}`).join('\n') : '- None'}
559
+ `;
560
+ }
561
+ export { generateC4Model, generateMermaidDiagram, generatePlantUMLDiagram };
562
+ //# sourceMappingURL=design.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"design.js","sourceRoot":"","sources":["../../../src/cli/commands/design.ts"],"names":[],"mappings":"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"}