agentic-qe 2.6.2 → 2.6.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude/agents/qe-code-intelligence.md +88 -1
- package/CHANGELOG.md +63 -0
- package/README.md +1 -1
- package/dist/agents/CodeIntelligenceAgent.d.ts +4 -1
- package/dist/agents/CodeIntelligenceAgent.d.ts.map +1 -1
- package/dist/agents/CodeIntelligenceAgent.js +30 -1
- package/dist/agents/CodeIntelligenceAgent.js.map +1 -1
- package/dist/cli/commands/knowledge-graph.d.ts +30 -0
- package/dist/cli/commands/knowledge-graph.d.ts.map +1 -1
- package/dist/cli/commands/knowledge-graph.js +206 -4
- package/dist/cli/commands/knowledge-graph.js.map +1 -1
- package/dist/cli/index.js +152 -0
- package/dist/cli/index.js.map +1 -1
- package/dist/code-intelligence/inference/ComponentBoundaryAnalyzer.d.ts +75 -0
- package/dist/code-intelligence/inference/ComponentBoundaryAnalyzer.d.ts.map +1 -0
- package/dist/code-intelligence/inference/ComponentBoundaryAnalyzer.js +400 -0
- package/dist/code-intelligence/inference/ComponentBoundaryAnalyzer.js.map +1 -0
- package/dist/code-intelligence/inference/ExternalSystemDetector.d.ts +31 -0
- package/dist/code-intelligence/inference/ExternalSystemDetector.d.ts.map +1 -0
- package/dist/code-intelligence/inference/ExternalSystemDetector.js +523 -0
- package/dist/code-intelligence/inference/ExternalSystemDetector.js.map +1 -0
- package/dist/code-intelligence/inference/ProjectMetadataAnalyzer.d.ts +78 -0
- package/dist/code-intelligence/inference/ProjectMetadataAnalyzer.d.ts.map +1 -0
- package/dist/code-intelligence/inference/ProjectMetadataAnalyzer.js +491 -0
- package/dist/code-intelligence/inference/ProjectMetadataAnalyzer.js.map +1 -0
- package/dist/code-intelligence/inference/index.d.ts +36 -0
- package/dist/code-intelligence/inference/index.d.ts.map +1 -0
- package/dist/code-intelligence/inference/index.js +65 -0
- package/dist/code-intelligence/inference/index.js.map +1 -0
- package/dist/code-intelligence/inference/types.d.ts +196 -0
- package/dist/code-intelligence/inference/types.d.ts.map +1 -0
- package/dist/code-intelligence/inference/types.js +9 -0
- package/dist/code-intelligence/inference/types.js.map +1 -0
- package/dist/code-intelligence/visualization/C4ComponentDiagramBuilder.d.ts +75 -0
- package/dist/code-intelligence/visualization/C4ComponentDiagramBuilder.d.ts.map +1 -0
- package/dist/code-intelligence/visualization/C4ComponentDiagramBuilder.js +267 -0
- package/dist/code-intelligence/visualization/C4ComponentDiagramBuilder.js.map +1 -0
- package/dist/code-intelligence/visualization/C4ContainerDiagramBuilder.d.ts +138 -0
- package/dist/code-intelligence/visualization/C4ContainerDiagramBuilder.d.ts.map +1 -0
- package/dist/code-intelligence/visualization/C4ContainerDiagramBuilder.js +343 -0
- package/dist/code-intelligence/visualization/C4ContainerDiagramBuilder.js.map +1 -0
- package/dist/code-intelligence/visualization/C4ContextDiagramBuilder.d.ts +67 -0
- package/dist/code-intelligence/visualization/C4ContextDiagramBuilder.d.ts.map +1 -0
- package/dist/code-intelligence/visualization/C4ContextDiagramBuilder.js +152 -0
- package/dist/code-intelligence/visualization/C4ContextDiagramBuilder.js.map +1 -0
- package/dist/code-intelligence/visualization/MermaidGenerator.d.ts +79 -0
- package/dist/code-intelligence/visualization/MermaidGenerator.d.ts.map +1 -1
- package/dist/code-intelligence/visualization/MermaidGenerator.js +143 -0
- package/dist/code-intelligence/visualization/MermaidGenerator.js.map +1 -1
- package/dist/config/ConfigLoader.d.ts +1 -0
- package/dist/config/ConfigLoader.d.ts.map +1 -1
- package/dist/config/ConfigLoader.js +33 -3
- package/dist/config/ConfigLoader.js.map +1 -1
- package/dist/mcp/handlers/integration/integration-test-orchestrate.d.ts.map +1 -1
- package/dist/mcp/handlers/integration/integration-test-orchestrate.js +6 -9
- package/dist/mcp/handlers/integration/integration-test-orchestrate.js.map +1 -1
- package/dist/mcp/server-instructions.d.ts +1 -1
- package/dist/mcp/server-instructions.js +1 -1
- package/package.json +2 -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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"}
|