agentic-qe 2.6.2 → 2.6.4

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 (60) hide show
  1. package/.claude/agents/qe-code-intelligence.md +88 -1
  2. package/CHANGELOG.md +69 -0
  3. package/README.md +1 -1
  4. package/dist/agents/CodeIntelligenceAgent.d.ts +4 -1
  5. package/dist/agents/CodeIntelligenceAgent.d.ts.map +1 -1
  6. package/dist/agents/CodeIntelligenceAgent.js +30 -1
  7. package/dist/agents/CodeIntelligenceAgent.js.map +1 -1
  8. package/dist/cli/commands/knowledge-graph.d.ts +30 -0
  9. package/dist/cli/commands/knowledge-graph.d.ts.map +1 -1
  10. package/dist/cli/commands/knowledge-graph.js +206 -4
  11. package/dist/cli/commands/knowledge-graph.js.map +1 -1
  12. package/dist/cli/index.js +152 -0
  13. package/dist/cli/index.js.map +1 -1
  14. package/dist/code-intelligence/inference/ComponentBoundaryAnalyzer.d.ts +75 -0
  15. package/dist/code-intelligence/inference/ComponentBoundaryAnalyzer.d.ts.map +1 -0
  16. package/dist/code-intelligence/inference/ComponentBoundaryAnalyzer.js +400 -0
  17. package/dist/code-intelligence/inference/ComponentBoundaryAnalyzer.js.map +1 -0
  18. package/dist/code-intelligence/inference/ExternalSystemDetector.d.ts +31 -0
  19. package/dist/code-intelligence/inference/ExternalSystemDetector.d.ts.map +1 -0
  20. package/dist/code-intelligence/inference/ExternalSystemDetector.js +523 -0
  21. package/dist/code-intelligence/inference/ExternalSystemDetector.js.map +1 -0
  22. package/dist/code-intelligence/inference/ProjectMetadataAnalyzer.d.ts +78 -0
  23. package/dist/code-intelligence/inference/ProjectMetadataAnalyzer.d.ts.map +1 -0
  24. package/dist/code-intelligence/inference/ProjectMetadataAnalyzer.js +491 -0
  25. package/dist/code-intelligence/inference/ProjectMetadataAnalyzer.js.map +1 -0
  26. package/dist/code-intelligence/inference/index.d.ts +36 -0
  27. package/dist/code-intelligence/inference/index.d.ts.map +1 -0
  28. package/dist/code-intelligence/inference/index.js +65 -0
  29. package/dist/code-intelligence/inference/index.js.map +1 -0
  30. package/dist/code-intelligence/inference/types.d.ts +196 -0
  31. package/dist/code-intelligence/inference/types.d.ts.map +1 -0
  32. package/dist/code-intelligence/inference/types.js +9 -0
  33. package/dist/code-intelligence/inference/types.js.map +1 -0
  34. package/dist/code-intelligence/visualization/C4ComponentDiagramBuilder.d.ts +75 -0
  35. package/dist/code-intelligence/visualization/C4ComponentDiagramBuilder.d.ts.map +1 -0
  36. package/dist/code-intelligence/visualization/C4ComponentDiagramBuilder.js +267 -0
  37. package/dist/code-intelligence/visualization/C4ComponentDiagramBuilder.js.map +1 -0
  38. package/dist/code-intelligence/visualization/C4ContainerDiagramBuilder.d.ts +138 -0
  39. package/dist/code-intelligence/visualization/C4ContainerDiagramBuilder.d.ts.map +1 -0
  40. package/dist/code-intelligence/visualization/C4ContainerDiagramBuilder.js +343 -0
  41. package/dist/code-intelligence/visualization/C4ContainerDiagramBuilder.js.map +1 -0
  42. package/dist/code-intelligence/visualization/C4ContextDiagramBuilder.d.ts +67 -0
  43. package/dist/code-intelligence/visualization/C4ContextDiagramBuilder.d.ts.map +1 -0
  44. package/dist/code-intelligence/visualization/C4ContextDiagramBuilder.js +152 -0
  45. package/dist/code-intelligence/visualization/C4ContextDiagramBuilder.js.map +1 -0
  46. package/dist/code-intelligence/visualization/MermaidGenerator.d.ts +79 -0
  47. package/dist/code-intelligence/visualization/MermaidGenerator.d.ts.map +1 -1
  48. package/dist/code-intelligence/visualization/MermaidGenerator.js +143 -0
  49. package/dist/code-intelligence/visualization/MermaidGenerator.js.map +1 -1
  50. package/dist/config/ConfigLoader.d.ts +1 -0
  51. package/dist/config/ConfigLoader.d.ts.map +1 -1
  52. package/dist/config/ConfigLoader.js +33 -3
  53. package/dist/config/ConfigLoader.js.map +1 -1
  54. package/dist/core/memory/HNSWVectorMemory.js +1 -1
  55. package/dist/mcp/handlers/integration/integration-test-orchestrate.d.ts.map +1 -1
  56. package/dist/mcp/handlers/integration/integration-test-orchestrate.js +6 -9
  57. package/dist/mcp/handlers/integration/integration-test-orchestrate.js.map +1 -1
  58. package/dist/mcp/server-instructions.d.ts +1 -1
  59. package/dist/mcp/server-instructions.js +1 -1
  60. package/package.json +3 -1
@@ -0,0 +1,196 @@
1
+ /**
2
+ * C4 Model Inference Types
3
+ *
4
+ * Consolidated type definitions for all C4 model inference components.
5
+ * All interfaces are defined here to ensure consistency across the module.
6
+ */
7
+ export type SystemType = 'microservice' | 'monolith' | 'library' | 'cli';
8
+ export type ContainerType = 'application' | 'database' | 'cache' | 'queue' | 'service' | 'api';
9
+ export type ExternalSystemType = 'database' | 'api' | 'cache' | 'queue' | 'storage' | 'auth' | 'monitoring';
10
+ export type RelationshipType = 'uses' | 'stores_data_in' | 'sends_messages_to' | 'authenticates_with' | 'depends_on' | 'calls' | 'imports';
11
+ /**
12
+ * Project metadata for C4 Context and Container diagrams
13
+ */
14
+ export interface ProjectMetadata {
15
+ /** System/project name */
16
+ name: string;
17
+ /** Human-readable description */
18
+ description?: string;
19
+ /** Type of system architecture */
20
+ systemType: SystemType;
21
+ /** Primary technology stack */
22
+ technology: string;
23
+ /** Containers within the system */
24
+ containers: Container[];
25
+ /** Detected architectural layers */
26
+ layers?: string[];
27
+ /** Version from package.json */
28
+ version?: string;
29
+ /** Repository URL */
30
+ repository?: string;
31
+ }
32
+ /**
33
+ * External system that the project interacts with
34
+ */
35
+ export interface ExternalSystem {
36
+ /** Unique identifier */
37
+ id: string;
38
+ /** Display name */
39
+ name: string;
40
+ /** Type of external system */
41
+ type: ExternalSystemType;
42
+ /** Specific technology (e.g., "PostgreSQL", "Redis") */
43
+ technology?: string;
44
+ /** How the system relates to this external system */
45
+ relationship: 'uses' | 'stores_data_in' | 'sends_messages_to' | 'authenticates_with';
46
+ /** Human-readable description */
47
+ description?: string;
48
+ }
49
+ /**
50
+ * Mapping configuration for detecting external systems from package names
51
+ */
52
+ export interface ExternalSystemMapping {
53
+ /** Regex pattern to match package names */
54
+ packagePattern: RegExp;
55
+ /** Type of system this package indicates */
56
+ systemType: ExternalSystemType;
57
+ /** Technology name */
58
+ technology: string;
59
+ /** Default relationship type */
60
+ relationship: ExternalSystem['relationship'];
61
+ /** Default description */
62
+ description?: string;
63
+ }
64
+ /**
65
+ * Container definition (C4 Level 2)
66
+ * Represents an application, database, or service within the system
67
+ */
68
+ export interface Container {
69
+ /** Unique identifier */
70
+ id: string;
71
+ /** Display name */
72
+ name: string;
73
+ /** Type of container */
74
+ type: ContainerType;
75
+ /** Technology stack */
76
+ technology: string;
77
+ /** Human-readable description */
78
+ description?: string;
79
+ /** Exposed port (if applicable) */
80
+ port?: number;
81
+ /** IDs of containers this depends on */
82
+ dependencies?: string[];
83
+ }
84
+ /**
85
+ * Dependency relationship between containers
86
+ */
87
+ export interface ContainerDependency {
88
+ /** Source container ID */
89
+ fromId: string;
90
+ /** Target container ID */
91
+ toId: string;
92
+ /** Type of dependency */
93
+ type: 'uses' | 'depends_on' | 'calls';
94
+ /** Communication protocol (e.g., "HTTP", "gRPC") */
95
+ protocol?: string;
96
+ }
97
+ /**
98
+ * Component within a container (C4 Level 3)
99
+ */
100
+ export interface Component {
101
+ /** Unique identifier */
102
+ id: string;
103
+ /** Display name */
104
+ name: string;
105
+ /** Type of component */
106
+ type: 'layer' | 'module' | 'feature' | 'package';
107
+ /** Human-readable description */
108
+ description?: string;
109
+ /** Technology/framework */
110
+ technology?: string;
111
+ /** Files belonging to this component */
112
+ files: string[];
113
+ /** Component responsibilities */
114
+ responsibilities?: string[];
115
+ /** Boundary/container this belongs to */
116
+ boundary?: string;
117
+ }
118
+ /**
119
+ * Relationship between components
120
+ */
121
+ export interface ComponentRelationship {
122
+ /** Source component ID */
123
+ sourceId: string;
124
+ /** Target component ID */
125
+ targetId: string;
126
+ /** Type of relationship */
127
+ type: 'imports' | 'calls' | 'uses' | 'depends_on';
128
+ /** Number of references (for weighting) */
129
+ count?: number;
130
+ }
131
+ /**
132
+ * Configuration for component boundary detection
133
+ */
134
+ export interface ComponentBoundaryConfig {
135
+ /** Root directory to analyze */
136
+ rootDir: string;
137
+ /** Minimum files for a component */
138
+ minFilesPerComponent: number;
139
+ /** Whether to analyze import relationships */
140
+ analyzeImports: boolean;
141
+ /** Glob patterns to exclude */
142
+ excludePatterns: string[];
143
+ /** Maximum directory depth */
144
+ maxDepth: number;
145
+ }
146
+ /**
147
+ * Result of component boundary analysis
148
+ */
149
+ export interface ComponentAnalysisResult {
150
+ /** Detected components */
151
+ components: Component[];
152
+ /** Relationships between components */
153
+ relationships: ComponentRelationship[];
154
+ /** Analysis metadata */
155
+ metadata: AnalysisMetadata;
156
+ /** Detected architecture pattern */
157
+ architecture?: 'layered' | 'modular' | 'feature' | 'mixed';
158
+ }
159
+ /**
160
+ * Metadata about an analysis run
161
+ */
162
+ export interface AnalysisMetadata {
163
+ /** Timestamp of analysis */
164
+ timestamp: number;
165
+ /** Duration in milliseconds */
166
+ durationMs: number;
167
+ /** Number of files analyzed */
168
+ filesAnalyzed: number;
169
+ /** Number of containers detected */
170
+ containersDetected: number;
171
+ /** Number of layers detected */
172
+ layersDetected: number;
173
+ }
174
+ /**
175
+ * Technology detection configuration
176
+ */
177
+ export interface TechnologyDetectionConfig {
178
+ enableFrameworkDetection: boolean;
179
+ enableDatabaseDetection: boolean;
180
+ enableInfrastructureDetection: boolean;
181
+ customTechnologies?: Record<string, string>;
182
+ }
183
+ /**
184
+ * C4 diagram generation options
185
+ */
186
+ export interface C4DiagramOptions {
187
+ /** Include user personas */
188
+ includeUsers?: boolean;
189
+ /** Include external systems */
190
+ includeExternalSystems?: boolean;
191
+ /** Maximum components to show */
192
+ maxComponents?: number;
193
+ /** Show labels on relationships */
194
+ showRelationshipLabels?: boolean;
195
+ }
196
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/code-intelligence/inference/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+ /**
3
+ * C4 Model Inference Types
4
+ *
5
+ * Consolidated type definitions for all C4 model inference components.
6
+ * All interfaces are defined here to ensure consistency across the module.
7
+ */
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/code-intelligence/inference/types.ts"],"names":[],"mappings":";AAAA;;;;;GAKG"}
@@ -0,0 +1,75 @@
1
+ import type { Component, ComponentRelationship } from '../inference/types.js';
2
+ /**
3
+ * Builds C4 Component diagrams in Mermaid syntax
4
+ *
5
+ * Component diagrams show the internal structure of a container, breaking it down
6
+ * into components and showing their relationships. Components are typically classes,
7
+ * modules, or services within a container.
8
+ *
9
+ * @example
10
+ * ```typescript
11
+ * const builder = new C4ComponentDiagramBuilder();
12
+ * const diagram = builder.build('API Application', components, relationships);
13
+ * ```
14
+ */
15
+ export declare class C4ComponentDiagramBuilder {
16
+ /**
17
+ * Build a C4 Component diagram in Mermaid syntax
18
+ *
19
+ * @param containerName - Name of the container being detailed
20
+ * @param components - List of components within the container
21
+ * @param relationships - Relationships between components
22
+ * @returns Mermaid C4Component diagram as string
23
+ */
24
+ build(containerName: string, components: Component[], relationships: ComponentRelationship[]): string;
25
+ /**
26
+ * Group components by their boundary
27
+ *
28
+ * @param components - List of components
29
+ * @returns Map of boundary name to components
30
+ */
31
+ private groupByBoundary;
32
+ /**
33
+ * Format a component definition
34
+ *
35
+ * @param component - Component to format
36
+ * @returns Mermaid Component definition
37
+ */
38
+ private formatComponent;
39
+ /**
40
+ * Infer technology/type for component
41
+ *
42
+ * @param component - Component to analyze
43
+ * @returns Technology description
44
+ */
45
+ private inferTechnology;
46
+ /**
47
+ * Get description for component
48
+ *
49
+ * @param component - Component to describe
50
+ * @returns Description text
51
+ */
52
+ private getComponentDescription;
53
+ /**
54
+ * Generate relationships between components
55
+ *
56
+ * @param relationships - List of component relationships
57
+ * @returns Mermaid Rel definitions
58
+ */
59
+ private generateComponentRelationships;
60
+ /**
61
+ * Get description for relationship
62
+ *
63
+ * @param relationship - Component relationship
64
+ * @returns Relationship description
65
+ */
66
+ private getRelationshipDescription;
67
+ /**
68
+ * Sanitize name for Mermaid syntax
69
+ *
70
+ * @param name - Original name
71
+ * @returns Sanitized name
72
+ */
73
+ private sanitizeName;
74
+ }
75
+ //# sourceMappingURL=C4ComponentDiagramBuilder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"C4ComponentDiagramBuilder.d.ts","sourceRoot":"","sources":["../../../src/code-intelligence/visualization/C4ComponentDiagramBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAE9E;;;;;;;;;;;;GAYG;AACH,qBAAa,yBAAyB;IACpC;;;;;;;OAOG;IACH,KAAK,CACH,aAAa,EAAE,MAAM,EACrB,UAAU,EAAE,SAAS,EAAE,EACvB,aAAa,EAAE,qBAAqB,EAAE,GACrC,MAAM;IA2CT;;;;;OAKG;IACH,OAAO,CAAC,eAAe;IAcvB;;;;;OAKG;IACH,OAAO,CAAC,eAAe;IAQvB;;;;;OAKG;IACH,OAAO,CAAC,eAAe;IAmEvB;;;;;OAKG;IACH,OAAO,CAAC,uBAAuB;IA6D/B;;;;;OAKG;IACH,OAAO,CAAC,8BAA8B;IAsBtC;;;;;OAKG;IACH,OAAO,CAAC,0BAA0B;IAmBlC;;;;;OAKG;IACH,OAAO,CAAC,YAAY;CAQrB"}
@@ -0,0 +1,267 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.C4ComponentDiagramBuilder = void 0;
4
+ /**
5
+ * Builds C4 Component diagrams in Mermaid syntax
6
+ *
7
+ * Component diagrams show the internal structure of a container, breaking it down
8
+ * into components and showing their relationships. Components are typically classes,
9
+ * modules, or services within a container.
10
+ *
11
+ * @example
12
+ * ```typescript
13
+ * const builder = new C4ComponentDiagramBuilder();
14
+ * const diagram = builder.build('API Application', components, relationships);
15
+ * ```
16
+ */
17
+ class C4ComponentDiagramBuilder {
18
+ /**
19
+ * Build a C4 Component diagram in Mermaid syntax
20
+ *
21
+ * @param containerName - Name of the container being detailed
22
+ * @param components - List of components within the container
23
+ * @param relationships - Relationships between components
24
+ * @returns Mermaid C4Component diagram as string
25
+ */
26
+ build(containerName, components, relationships) {
27
+ const lines = [
28
+ 'C4Component',
29
+ ` title Component diagram for ${containerName}`,
30
+ '',
31
+ ];
32
+ if (components.length === 0) {
33
+ lines.push(' Component(empty, "No Components", "N/A", "No components detected")');
34
+ return lines.join('\n');
35
+ }
36
+ // Group components by boundary if they have one
37
+ const grouped = this.groupByBoundary(components);
38
+ // Add components with boundaries
39
+ for (const [boundary, boundaryComponents] of grouped.entries()) {
40
+ if (boundary) {
41
+ const boundaryId = this.sanitizeName(boundary);
42
+ lines.push(` Container_Boundary(${boundaryId}, "${boundary}") {`);
43
+ for (const component of boundaryComponents) {
44
+ lines.push(' ' + this.formatComponent(component));
45
+ }
46
+ lines.push(' }');
47
+ }
48
+ else {
49
+ // Components without boundary
50
+ for (const component of boundaryComponents) {
51
+ lines.push(this.formatComponent(component));
52
+ }
53
+ }
54
+ }
55
+ // Add relationships
56
+ if (relationships.length > 0) {
57
+ lines.push('');
58
+ lines.push(this.generateComponentRelationships(relationships));
59
+ }
60
+ return lines.filter(line => line !== undefined && line !== '').join('\n');
61
+ }
62
+ /**
63
+ * Group components by their boundary
64
+ *
65
+ * @param components - List of components
66
+ * @returns Map of boundary name to components
67
+ */
68
+ groupByBoundary(components) {
69
+ const grouped = new Map();
70
+ for (const component of components) {
71
+ const boundary = component.boundary || '';
72
+ if (!grouped.has(boundary)) {
73
+ grouped.set(boundary, []);
74
+ }
75
+ grouped.get(boundary).push(component);
76
+ }
77
+ return grouped;
78
+ }
79
+ /**
80
+ * Format a component definition
81
+ *
82
+ * @param component - Component to format
83
+ * @returns Mermaid Component definition
84
+ */
85
+ formatComponent(component) {
86
+ const id = this.sanitizeName(component.name);
87
+ const technology = this.inferTechnology(component);
88
+ const description = this.getComponentDescription(component);
89
+ return ` Component(${id}, "${component.name}", "${technology}", "${description}")`;
90
+ }
91
+ /**
92
+ * Infer technology/type for component
93
+ *
94
+ * @param component - Component to analyze
95
+ * @returns Technology description
96
+ */
97
+ inferTechnology(component) {
98
+ const name = component.name.toLowerCase();
99
+ // Controllers
100
+ if (name.includes('controller') || name.endsWith('ctrl')) {
101
+ return 'MVC Controller';
102
+ }
103
+ // Services
104
+ if (name.includes('service') || name.endsWith('svc')) {
105
+ return 'Service Component';
106
+ }
107
+ // Repositories/DAOs
108
+ if (name.includes('repository') || name.includes('dao') || name.includes('store')) {
109
+ return 'Data Access Object';
110
+ }
111
+ // Middleware
112
+ if (name.includes('middleware') || name.includes('guard') || name.includes('interceptor')) {
113
+ return 'Middleware';
114
+ }
115
+ // Validators
116
+ if (name.includes('validator') || name.includes('validation')) {
117
+ return 'Validator';
118
+ }
119
+ // Utilities
120
+ if (name.includes('util') || name.includes('helper') || name.includes('helper')) {
121
+ return 'Utility Component';
122
+ }
123
+ // Security
124
+ if (name.includes('auth') || name.includes('security') || name.includes('jwt')) {
125
+ return 'Security Component';
126
+ }
127
+ // Models/Entities
128
+ if (name.includes('model') || name.includes('entity') || name.includes('schema')) {
129
+ return 'Data Model';
130
+ }
131
+ // Handlers
132
+ if (name.includes('handler') || name.includes('processor')) {
133
+ return 'Event Handler';
134
+ }
135
+ // Adapters
136
+ if (name.includes('adapter') || name.includes('client')) {
137
+ return 'External Adapter';
138
+ }
139
+ // Default based on file extension or generic
140
+ if (component.type) {
141
+ const typeMap = {
142
+ class: 'Class Component',
143
+ interface: 'Interface',
144
+ function: 'Function Component',
145
+ module: 'Module',
146
+ };
147
+ return typeMap[component.type] || 'Component';
148
+ }
149
+ return 'Component';
150
+ }
151
+ /**
152
+ * Get description for component
153
+ *
154
+ * @param component - Component to describe
155
+ * @returns Description text
156
+ */
157
+ getComponentDescription(component) {
158
+ const name = component.name.toLowerCase();
159
+ // Controllers
160
+ if (name.includes('controller')) {
161
+ return 'Handles HTTP requests and responses';
162
+ }
163
+ // Services
164
+ if (name.includes('service')) {
165
+ return 'Implements business logic';
166
+ }
167
+ // Repositories
168
+ if (name.includes('repository') || name.includes('dao')) {
169
+ return 'Manages data persistence';
170
+ }
171
+ // Authentication
172
+ if (name.includes('auth')) {
173
+ return 'Provides authentication and authorization';
174
+ }
175
+ // Validation
176
+ if (name.includes('validator')) {
177
+ return 'Validates input data';
178
+ }
179
+ // Middleware
180
+ if (name.includes('middleware')) {
181
+ return 'Processes requests in pipeline';
182
+ }
183
+ // Utilities
184
+ if (name.includes('util') || name.includes('helper')) {
185
+ return 'Provides utility functions';
186
+ }
187
+ // Handlers
188
+ if (name.includes('handler')) {
189
+ return 'Handles events and messages';
190
+ }
191
+ // Adapters
192
+ if (name.includes('adapter')) {
193
+ return 'Adapts external interfaces';
194
+ }
195
+ // Models
196
+ if (name.includes('model') || name.includes('entity')) {
197
+ return 'Represents data structure';
198
+ }
199
+ // Default description
200
+ if (component.responsibilities && component.responsibilities.length > 0) {
201
+ return component.responsibilities[0];
202
+ }
203
+ return 'Application component';
204
+ }
205
+ /**
206
+ * Generate relationships between components
207
+ *
208
+ * @param relationships - List of component relationships
209
+ * @returns Mermaid Rel definitions
210
+ */
211
+ generateComponentRelationships(relationships) {
212
+ const lines = [];
213
+ const seen = new Set();
214
+ for (const rel of relationships) {
215
+ const fromId = this.sanitizeName(rel.sourceId);
216
+ const toId = this.sanitizeName(rel.targetId);
217
+ // Avoid duplicate relationships
218
+ const relKey = `${fromId}-${toId}-${rel.type}`;
219
+ if (seen.has(relKey)) {
220
+ continue;
221
+ }
222
+ seen.add(relKey);
223
+ const description = this.getRelationshipDescription(rel);
224
+ lines.push(` Rel(${fromId}, ${toId}, "${description}")`);
225
+ }
226
+ return lines.join('\n');
227
+ }
228
+ /**
229
+ * Get description for relationship
230
+ *
231
+ * @param relationship - Component relationship
232
+ * @returns Relationship description
233
+ */
234
+ getRelationshipDescription(relationship) {
235
+ const typeDescriptions = {
236
+ depends_on: 'Depends on',
237
+ uses: 'Uses',
238
+ calls: 'Calls',
239
+ inherits: 'Inherits from',
240
+ implements: 'Implements',
241
+ contains: 'Contains',
242
+ imports: 'Imports',
243
+ injects: 'Injects',
244
+ configures: 'Configures',
245
+ validates: 'Validates with',
246
+ handles: 'Handles via',
247
+ delegates: 'Delegates to',
248
+ };
249
+ return typeDescriptions[relationship.type] || 'Uses';
250
+ }
251
+ /**
252
+ * Sanitize name for Mermaid syntax
253
+ *
254
+ * @param name - Original name
255
+ * @returns Sanitized name
256
+ */
257
+ sanitizeName(name) {
258
+ return name
259
+ .replace(/[^a-zA-Z0-9_\s-]/g, '')
260
+ .replace(/\s+/g, '_')
261
+ .replace(/-+/g, '_')
262
+ .replace(/^_+|_+$/g, '') // Remove leading/trailing underscores
263
+ .toLowerCase();
264
+ }
265
+ }
266
+ exports.C4ComponentDiagramBuilder = C4ComponentDiagramBuilder;
267
+ //# sourceMappingURL=C4ComponentDiagramBuilder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"C4ComponentDiagramBuilder.js","sourceRoot":"","sources":["../../../src/code-intelligence/visualization/C4ComponentDiagramBuilder.ts"],"names":[],"mappings":"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"}