agentic-qe 2.6.1 → 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.
Files changed (158) hide show
  1. package/.claude/agents/qe-code-intelligence.md +88 -1
  2. package/CHANGELOG.md +134 -0
  3. package/README.md +222 -159
  4. package/dist/agents/BaseAgent.d.ts +19 -0
  5. package/dist/agents/BaseAgent.d.ts.map +1 -1
  6. package/dist/agents/BaseAgent.js +41 -1
  7. package/dist/agents/BaseAgent.js.map +1 -1
  8. package/dist/agents/CodeIntelligenceAgent.d.ts +18 -1
  9. package/dist/agents/CodeIntelligenceAgent.d.ts.map +1 -1
  10. package/dist/agents/CodeIntelligenceAgent.js +96 -1
  11. package/dist/agents/CodeIntelligenceAgent.js.map +1 -1
  12. package/dist/agents/CoverageAnalyzerAgent.d.ts +8 -0
  13. package/dist/agents/CoverageAnalyzerAgent.d.ts.map +1 -1
  14. package/dist/agents/CoverageAnalyzerAgent.js +65 -1
  15. package/dist/agents/CoverageAnalyzerAgent.js.map +1 -1
  16. package/dist/agents/TestGeneratorAgent.d.ts +2 -2
  17. package/dist/agents/TestGeneratorAgent.d.ts.map +1 -1
  18. package/dist/agents/TestGeneratorAgent.js +16 -6
  19. package/dist/agents/TestGeneratorAgent.js.map +1 -1
  20. package/dist/agents/adapters/AgentLLMAdapter.d.ts +127 -0
  21. package/dist/agents/adapters/AgentLLMAdapter.d.ts.map +1 -0
  22. package/dist/agents/adapters/AgentLLMAdapter.js +366 -0
  23. package/dist/agents/adapters/AgentLLMAdapter.js.map +1 -0
  24. package/dist/agents/adapters/index.d.ts +1 -0
  25. package/dist/agents/adapters/index.d.ts.map +1 -1
  26. package/dist/agents/adapters/index.js +5 -1
  27. package/dist/agents/adapters/index.js.map +1 -1
  28. package/dist/agents/interfaces/IAgentLLM.d.ts +257 -0
  29. package/dist/agents/interfaces/IAgentLLM.d.ts.map +1 -0
  30. package/dist/agents/interfaces/IAgentLLM.js +39 -0
  31. package/dist/agents/interfaces/IAgentLLM.js.map +1 -0
  32. package/dist/agents/interfaces/index.d.ts +10 -0
  33. package/dist/agents/interfaces/index.d.ts.map +1 -0
  34. package/dist/agents/interfaces/index.js +14 -0
  35. package/dist/agents/interfaces/index.js.map +1 -0
  36. package/dist/agents/n8n/N8nBaseAgent.d.ts +18 -0
  37. package/dist/agents/n8n/N8nBaseAgent.d.ts.map +1 -1
  38. package/dist/agents/n8n/N8nBaseAgent.js +80 -0
  39. package/dist/agents/n8n/N8nBaseAgent.js.map +1 -1
  40. package/dist/cli/commands/knowledge-graph.d.ts +30 -0
  41. package/dist/cli/commands/knowledge-graph.d.ts.map +1 -1
  42. package/dist/cli/commands/knowledge-graph.js +206 -4
  43. package/dist/cli/commands/knowledge-graph.js.map +1 -1
  44. package/dist/cli/commands/providers.d.ts +50 -0
  45. package/dist/cli/commands/providers.d.ts.map +1 -0
  46. package/dist/cli/commands/providers.js +403 -0
  47. package/dist/cli/commands/providers.js.map +1 -0
  48. package/dist/cli/index.js +214 -0
  49. package/dist/cli/index.js.map +1 -1
  50. package/dist/code-intelligence/indexing/FileWatcher.d.ts.map +1 -1
  51. package/dist/code-intelligence/indexing/FileWatcher.js +11 -8
  52. package/dist/code-intelligence/indexing/FileWatcher.js.map +1 -1
  53. package/dist/code-intelligence/inference/ComponentBoundaryAnalyzer.d.ts +75 -0
  54. package/dist/code-intelligence/inference/ComponentBoundaryAnalyzer.d.ts.map +1 -0
  55. package/dist/code-intelligence/inference/ComponentBoundaryAnalyzer.js +400 -0
  56. package/dist/code-intelligence/inference/ComponentBoundaryAnalyzer.js.map +1 -0
  57. package/dist/code-intelligence/inference/ExternalSystemDetector.d.ts +31 -0
  58. package/dist/code-intelligence/inference/ExternalSystemDetector.d.ts.map +1 -0
  59. package/dist/code-intelligence/inference/ExternalSystemDetector.js +523 -0
  60. package/dist/code-intelligence/inference/ExternalSystemDetector.js.map +1 -0
  61. package/dist/code-intelligence/inference/ProjectMetadataAnalyzer.d.ts +78 -0
  62. package/dist/code-intelligence/inference/ProjectMetadataAnalyzer.d.ts.map +1 -0
  63. package/dist/code-intelligence/inference/ProjectMetadataAnalyzer.js +491 -0
  64. package/dist/code-intelligence/inference/ProjectMetadataAnalyzer.js.map +1 -0
  65. package/dist/code-intelligence/inference/index.d.ts +36 -0
  66. package/dist/code-intelligence/inference/index.d.ts.map +1 -0
  67. package/dist/code-intelligence/inference/index.js +65 -0
  68. package/dist/code-intelligence/inference/index.js.map +1 -0
  69. package/dist/code-intelligence/inference/types.d.ts +196 -0
  70. package/dist/code-intelligence/inference/types.d.ts.map +1 -0
  71. package/dist/code-intelligence/inference/types.js +9 -0
  72. package/dist/code-intelligence/inference/types.js.map +1 -0
  73. package/dist/code-intelligence/visualization/C4ComponentDiagramBuilder.d.ts +75 -0
  74. package/dist/code-intelligence/visualization/C4ComponentDiagramBuilder.d.ts.map +1 -0
  75. package/dist/code-intelligence/visualization/C4ComponentDiagramBuilder.js +267 -0
  76. package/dist/code-intelligence/visualization/C4ComponentDiagramBuilder.js.map +1 -0
  77. package/dist/code-intelligence/visualization/C4ContainerDiagramBuilder.d.ts +138 -0
  78. package/dist/code-intelligence/visualization/C4ContainerDiagramBuilder.d.ts.map +1 -0
  79. package/dist/code-intelligence/visualization/C4ContainerDiagramBuilder.js +343 -0
  80. package/dist/code-intelligence/visualization/C4ContainerDiagramBuilder.js.map +1 -0
  81. package/dist/code-intelligence/visualization/C4ContextDiagramBuilder.d.ts +67 -0
  82. package/dist/code-intelligence/visualization/C4ContextDiagramBuilder.d.ts.map +1 -0
  83. package/dist/code-intelligence/visualization/C4ContextDiagramBuilder.js +152 -0
  84. package/dist/code-intelligence/visualization/C4ContextDiagramBuilder.js.map +1 -0
  85. package/dist/code-intelligence/visualization/MermaidGenerator.d.ts +79 -0
  86. package/dist/code-intelligence/visualization/MermaidGenerator.d.ts.map +1 -1
  87. package/dist/code-intelligence/visualization/MermaidGenerator.js +143 -0
  88. package/dist/code-intelligence/visualization/MermaidGenerator.js.map +1 -1
  89. package/dist/config/ConfigLoader.d.ts +86 -0
  90. package/dist/config/ConfigLoader.d.ts.map +1 -0
  91. package/dist/config/ConfigLoader.js +450 -0
  92. package/dist/config/ConfigLoader.js.map +1 -0
  93. package/dist/config/ProviderConfig.d.ts +153 -0
  94. package/dist/config/ProviderConfig.d.ts.map +1 -0
  95. package/dist/config/ProviderConfig.js +155 -0
  96. package/dist/config/ProviderConfig.js.map +1 -0
  97. package/dist/config/index.d.ts +35 -0
  98. package/dist/config/index.d.ts.map +1 -0
  99. package/dist/config/index.js +45 -0
  100. package/dist/config/index.js.map +1 -0
  101. package/dist/core/memory/HNSWVectorMemory.js +1 -1
  102. package/dist/mcp/handlers/integration/integration-test-orchestrate.d.ts.map +1 -1
  103. package/dist/mcp/handlers/integration/integration-test-orchestrate.js +6 -9
  104. package/dist/mcp/handlers/integration/integration-test-orchestrate.js.map +1 -1
  105. package/dist/mcp/server-instructions.d.ts +1 -1
  106. package/dist/mcp/server-instructions.js +1 -1
  107. package/dist/mcp/server.d.ts +1 -0
  108. package/dist/mcp/server.d.ts.map +1 -1
  109. package/dist/memory/HNSWPatternStore.d.ts.map +1 -1
  110. package/dist/memory/HNSWPatternStore.js +23 -0
  111. package/dist/memory/HNSWPatternStore.js.map +1 -1
  112. package/dist/memory/RuVectorPatternStore.d.ts +5 -0
  113. package/dist/memory/RuVectorPatternStore.d.ts.map +1 -1
  114. package/dist/memory/RuVectorPatternStore.js +11 -0
  115. package/dist/memory/RuVectorPatternStore.js.map +1 -1
  116. package/dist/providers/CostOptimizationStrategies.d.ts +297 -0
  117. package/dist/providers/CostOptimizationStrategies.d.ts.map +1 -0
  118. package/dist/providers/CostOptimizationStrategies.js +831 -0
  119. package/dist/providers/CostOptimizationStrategies.js.map +1 -0
  120. package/dist/providers/HybridRouter.d.ts +142 -5
  121. package/dist/providers/HybridRouter.d.ts.map +1 -1
  122. package/dist/providers/HybridRouter.js +472 -6
  123. package/dist/providers/HybridRouter.js.map +1 -1
  124. package/dist/providers/HybridRouterComplexityIntegration.d.ts +169 -0
  125. package/dist/providers/HybridRouterComplexityIntegration.d.ts.map +1 -0
  126. package/dist/providers/HybridRouterComplexityIntegration.js +319 -0
  127. package/dist/providers/HybridRouterComplexityIntegration.js.map +1 -0
  128. package/dist/providers/HybridRouterModelSelection.d.ts +106 -0
  129. package/dist/providers/HybridRouterModelSelection.d.ts.map +1 -0
  130. package/dist/providers/HybridRouterModelSelection.js +420 -0
  131. package/dist/providers/HybridRouterModelSelection.js.map +1 -0
  132. package/dist/providers/LLMProviderFactory.d.ts +23 -9
  133. package/dist/providers/LLMProviderFactory.d.ts.map +1 -1
  134. package/dist/providers/LLMProviderFactory.js +54 -11
  135. package/dist/providers/LLMProviderFactory.js.map +1 -1
  136. package/dist/providers/OllamaProvider.d.ts +122 -0
  137. package/dist/providers/OllamaProvider.d.ts.map +1 -0
  138. package/dist/providers/OllamaProvider.js +425 -0
  139. package/dist/providers/OllamaProvider.js.map +1 -0
  140. package/dist/providers/index.d.ts +6 -1
  141. package/dist/providers/index.d.ts.map +1 -1
  142. package/dist/providers/index.js +17 -1
  143. package/dist/providers/index.js.map +1 -1
  144. package/dist/routing/ComplexityClassifier.d.ts +266 -0
  145. package/dist/routing/ComplexityClassifier.d.ts.map +1 -0
  146. package/dist/routing/ComplexityClassifier.js +567 -0
  147. package/dist/routing/ComplexityClassifier.js.map +1 -0
  148. package/dist/routing/ModelCapabilityRegistry.d.ts +98 -0
  149. package/dist/routing/ModelCapabilityRegistry.d.ts.map +1 -0
  150. package/dist/routing/ModelCapabilityRegistry.js +216 -0
  151. package/dist/routing/ModelCapabilityRegistry.js.map +1 -0
  152. package/dist/routing/index.d.ts +13 -0
  153. package/dist/routing/index.d.ts.map +1 -0
  154. package/dist/routing/index.js +24 -0
  155. package/dist/routing/index.js.map +1 -0
  156. package/docs/reference/model-capability-registry.md +402 -0
  157. package/docs/reference/provider-config-schema.md +608 -0
  158. package/package.json +20 -4
@@ -0,0 +1,138 @@
1
+ import type { ProjectMetadata, ExternalSystem } from '../inference/types.js';
2
+ /**
3
+ * Builds C4 Container diagrams in Mermaid syntax
4
+ *
5
+ * Container diagrams show the high-level technology choices and how containers
6
+ * communicate with each other. Containers represent applications or data stores.
7
+ *
8
+ * @example
9
+ * ```typescript
10
+ * const builder = new C4ContainerDiagramBuilder();
11
+ * const diagram = builder.build(metadata, externalSystems);
12
+ * ```
13
+ */
14
+ export declare class C4ContainerDiagramBuilder {
15
+ /**
16
+ * Build a C4 Container diagram in Mermaid syntax
17
+ *
18
+ * @param metadata - Project metadata containing container information
19
+ * @param externalSystems - Detected external systems
20
+ * @returns Mermaid C4Container diagram as string
21
+ */
22
+ build(metadata: ProjectMetadata, externalSystems: ExternalSystem[]): string;
23
+ /**
24
+ * Format a container definition
25
+ *
26
+ * @param container - Container to format
27
+ * @returns Mermaid Container definition
28
+ */
29
+ private formatContainer;
30
+ /**
31
+ * Format a database container definition
32
+ *
33
+ * @param container - Database container to format
34
+ * @returns Mermaid ContainerDb definition
35
+ */
36
+ private formatContainerDb;
37
+ /**
38
+ * Format external database as ContainerDb
39
+ *
40
+ * @param external - External database system
41
+ * @returns Mermaid ContainerDb definition
42
+ */
43
+ private formatExternalDb;
44
+ /**
45
+ * Format external system as Container
46
+ *
47
+ * @param external - External system
48
+ * @returns Mermaid Container definition
49
+ */
50
+ private formatExternalContainer;
51
+ /**
52
+ * Check if container is a database
53
+ *
54
+ * @param container - Container to check
55
+ * @returns True if container is a database
56
+ */
57
+ private isDatabase;
58
+ /**
59
+ * Check if external system should be shown in container diagram
60
+ *
61
+ * @param external - External system to check
62
+ * @returns True if relevant for container diagram
63
+ */
64
+ private isRelevantExternal;
65
+ /**
66
+ * Infer technology stack for container
67
+ *
68
+ * @param container - Container to analyze
69
+ * @returns Technology description
70
+ */
71
+ private inferTechnology;
72
+ /**
73
+ * Infer database technology
74
+ *
75
+ * @param container - Database container
76
+ * @returns Database technology
77
+ */
78
+ private inferDatabaseTechnology;
79
+ /**
80
+ * Get external system technology
81
+ *
82
+ * @param external - External system
83
+ * @returns Technology description
84
+ */
85
+ private getExternalTechnology;
86
+ /**
87
+ * Get container description
88
+ *
89
+ * @param container - Container to describe
90
+ * @returns Description text
91
+ */
92
+ private getContainerDescription;
93
+ /**
94
+ * Get database description
95
+ *
96
+ * @param container - Database container
97
+ * @returns Description text
98
+ */
99
+ private getDatabaseDescription;
100
+ /**
101
+ * Generate relationships between containers
102
+ *
103
+ * @param containers - List of containers
104
+ * @returns Mermaid Rel definitions
105
+ */
106
+ private generateContainerRelationships;
107
+ /**
108
+ * Generate relationships to external systems
109
+ *
110
+ * @param containers - Internal containers
111
+ * @param externals - External systems
112
+ * @returns Mermaid Rel definitions
113
+ */
114
+ private generateExternalRelationships;
115
+ /**
116
+ * Infer relationship between two containers
117
+ *
118
+ * @param from - Source container
119
+ * @param to - Target container
120
+ * @returns Relationship description or null
121
+ */
122
+ private inferRelationship;
123
+ /**
124
+ * Get relationship description for external system
125
+ *
126
+ * @param external - External system
127
+ * @returns Relationship description
128
+ */
129
+ private getExternalRelationship;
130
+ /**
131
+ * Sanitize name for Mermaid syntax
132
+ *
133
+ * @param name - Original name
134
+ * @returns Sanitized name
135
+ */
136
+ private sanitizeName;
137
+ }
138
+ //# sourceMappingURL=C4ContainerDiagramBuilder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"C4ContainerDiagramBuilder.d.ts","sourceRoot":"","sources":["../../../src/code-intelligence/visualization/C4ContainerDiagramBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAa,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAExF;;;;;;;;;;;GAWG;AACH,qBAAa,yBAAyB;IACpC;;;;;;OAMG;IACH,KAAK,CAAC,QAAQ,EAAE,eAAe,EAAE,eAAe,EAAE,cAAc,EAAE,GAAG,MAAM;IA2C3E;;;;;OAKG;IACH,OAAO,CAAC,eAAe;IAQvB;;;;;OAKG;IACH,OAAO,CAAC,iBAAiB;IAQzB;;;;;OAKG;IACH,OAAO,CAAC,gBAAgB;IAQxB;;;;;OAKG;IACH,OAAO,CAAC,uBAAuB;IAQ/B;;;;;OAKG;IACH,OAAO,CAAC,UAAU;IAMlB;;;;;OAKG;IACH,OAAO,CAAC,kBAAkB;IAK1B;;;;;OAKG;IACH,OAAO,CAAC,eAAe;IAmBvB;;;;;OAKG;IACH,OAAO,CAAC,uBAAuB;IAa/B;;;;;OAKG;IACH,OAAO,CAAC,qBAAqB;IAgB7B;;;;;OAKG;IACH,OAAO,CAAC,uBAAuB;IAY/B;;;;;OAKG;IACH,OAAO,CAAC,sBAAsB;IAI9B;;;;;OAKG;IACH,OAAO,CAAC,8BAA8B;IA2BtC;;;;;;OAMG;IACH,OAAO,CAAC,6BAA6B;IAoBrC;;;;;;OAMG;IACH,OAAO,CAAC,iBAAiB;IA2BzB;;;;;OAKG;IACH,OAAO,CAAC,uBAAuB;IAa/B;;;;;OAKG;IACH,OAAO,CAAC,YAAY;CAOrB"}
@@ -0,0 +1,343 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.C4ContainerDiagramBuilder = void 0;
4
+ /**
5
+ * Builds C4 Container diagrams in Mermaid syntax
6
+ *
7
+ * Container diagrams show the high-level technology choices and how containers
8
+ * communicate with each other. Containers represent applications or data stores.
9
+ *
10
+ * @example
11
+ * ```typescript
12
+ * const builder = new C4ContainerDiagramBuilder();
13
+ * const diagram = builder.build(metadata, externalSystems);
14
+ * ```
15
+ */
16
+ class C4ContainerDiagramBuilder {
17
+ /**
18
+ * Build a C4 Container diagram in Mermaid syntax
19
+ *
20
+ * @param metadata - Project metadata containing container information
21
+ * @param externalSystems - Detected external systems
22
+ * @returns Mermaid C4Container diagram as string
23
+ */
24
+ build(metadata, externalSystems) {
25
+ const lines = [
26
+ 'C4Container',
27
+ ` title Container diagram for ${metadata.name}`,
28
+ '',
29
+ ];
30
+ // Add containers
31
+ if (metadata.containers.length > 0) {
32
+ for (const container of metadata.containers) {
33
+ if (this.isDatabase(container)) {
34
+ lines.push(this.formatContainerDb(container));
35
+ }
36
+ else {
37
+ lines.push(this.formatContainer(container));
38
+ }
39
+ }
40
+ lines.push('');
41
+ }
42
+ // Add external systems as containers
43
+ if (externalSystems.length > 0) {
44
+ for (const external of externalSystems) {
45
+ if (external.type === 'database') {
46
+ lines.push(this.formatExternalDb(external));
47
+ }
48
+ else if (this.isRelevantExternal(external)) {
49
+ lines.push(this.formatExternalContainer(external));
50
+ }
51
+ }
52
+ lines.push('');
53
+ }
54
+ // Add relationships
55
+ lines.push(this.generateContainerRelationships(metadata.containers));
56
+ // Add relationships to external systems
57
+ if (externalSystems.length > 0) {
58
+ lines.push('');
59
+ lines.push(this.generateExternalRelationships(metadata.containers, externalSystems));
60
+ }
61
+ return lines.filter(line => line !== undefined && line !== '').join('\n');
62
+ }
63
+ /**
64
+ * Format a container definition
65
+ *
66
+ * @param container - Container to format
67
+ * @returns Mermaid Container definition
68
+ */
69
+ formatContainer(container) {
70
+ const id = this.sanitizeName(container.name);
71
+ const technology = this.inferTechnology(container);
72
+ const description = this.getContainerDescription(container);
73
+ return ` Container(${id}, "${container.name}", "${technology}", "${description}")`;
74
+ }
75
+ /**
76
+ * Format a database container definition
77
+ *
78
+ * @param container - Database container to format
79
+ * @returns Mermaid ContainerDb definition
80
+ */
81
+ formatContainerDb(container) {
82
+ const id = this.sanitizeName(container.name);
83
+ const technology = this.inferDatabaseTechnology(container);
84
+ const description = this.getDatabaseDescription(container);
85
+ return ` ContainerDb(${id}, "${container.name}", "${technology}", "${description}")`;
86
+ }
87
+ /**
88
+ * Format external database as ContainerDb
89
+ *
90
+ * @param external - External database system
91
+ * @returns Mermaid ContainerDb definition
92
+ */
93
+ formatExternalDb(external) {
94
+ const id = this.sanitizeName(external.name);
95
+ const technology = this.getExternalTechnology(external);
96
+ const description = external.description || 'External database system';
97
+ return ` ContainerDb(${id}, "${external.name}", "${technology}", "${description}")`;
98
+ }
99
+ /**
100
+ * Format external system as Container
101
+ *
102
+ * @param external - External system
103
+ * @returns Mermaid Container definition
104
+ */
105
+ formatExternalContainer(external) {
106
+ const id = this.sanitizeName(external.name);
107
+ const technology = this.getExternalTechnology(external);
108
+ const description = external.description || 'External system';
109
+ return ` Container(${id}, "${external.name}", "${technology}", "${description}")`;
110
+ }
111
+ /**
112
+ * Check if container is a database
113
+ *
114
+ * @param container - Container to check
115
+ * @returns True if container is a database
116
+ */
117
+ isDatabase(container) {
118
+ const dbKeywords = ['database', 'db', 'postgres', 'mysql', 'mongo', 'redis', 'cache'];
119
+ const name = container.name.toLowerCase();
120
+ return dbKeywords.some(keyword => name.includes(keyword));
121
+ }
122
+ /**
123
+ * Check if external system should be shown in container diagram
124
+ *
125
+ * @param external - External system to check
126
+ * @returns True if relevant for container diagram
127
+ */
128
+ isRelevantExternal(external) {
129
+ const relevantTypes = ['database', 'api', 'service', 'messageQueue', 'cache', 'storage'];
130
+ return relevantTypes.includes(external.type);
131
+ }
132
+ /**
133
+ * Infer technology stack for container
134
+ *
135
+ * @param container - Container to analyze
136
+ * @returns Technology description
137
+ */
138
+ inferTechnology(container) {
139
+ const name = container.name.toLowerCase();
140
+ if (name.includes('api') || name.includes('backend')) {
141
+ return 'Node.js, TypeScript';
142
+ }
143
+ if (name.includes('frontend') || name.includes('ui') || name.includes('web')) {
144
+ return 'React, TypeScript';
145
+ }
146
+ if (name.includes('service') || name.includes('worker')) {
147
+ return 'Node.js';
148
+ }
149
+ if (name.includes('gateway') || name.includes('proxy')) {
150
+ return 'NGINX, Node.js';
151
+ }
152
+ return 'Application';
153
+ }
154
+ /**
155
+ * Infer database technology
156
+ *
157
+ * @param container - Database container
158
+ * @returns Database technology
159
+ */
160
+ inferDatabaseTechnology(container) {
161
+ const name = container.name.toLowerCase();
162
+ if (name.includes('postgres') || name.includes('pg'))
163
+ return 'PostgreSQL';
164
+ if (name.includes('mysql'))
165
+ return 'MySQL';
166
+ if (name.includes('mongo'))
167
+ return 'MongoDB';
168
+ if (name.includes('redis'))
169
+ return 'Redis';
170
+ if (name.includes('elastic'))
171
+ return 'Elasticsearch';
172
+ if (name.includes('dynamodb'))
173
+ return 'DynamoDB';
174
+ return 'Database';
175
+ }
176
+ /**
177
+ * Get external system technology
178
+ *
179
+ * @param external - External system
180
+ * @returns Technology description
181
+ */
182
+ getExternalTechnology(external) {
183
+ const name = external.name.toLowerCase();
184
+ if (name.includes('postgres'))
185
+ return 'PostgreSQL';
186
+ if (name.includes('mysql'))
187
+ return 'MySQL';
188
+ if (name.includes('mongo'))
189
+ return 'MongoDB';
190
+ if (name.includes('redis'))
191
+ return 'Redis';
192
+ if (name.includes('rabbitmq'))
193
+ return 'RabbitMQ';
194
+ if (name.includes('kafka'))
195
+ return 'Apache Kafka';
196
+ if (name.includes('aws'))
197
+ return 'AWS Service';
198
+ if (name.includes('gcp'))
199
+ return 'GCP Service';
200
+ if (name.includes('azure'))
201
+ return 'Azure Service';
202
+ return 'External Service';
203
+ }
204
+ /**
205
+ * Get container description
206
+ *
207
+ * @param container - Container to describe
208
+ * @returns Description text
209
+ */
210
+ getContainerDescription(container) {
211
+ const name = container.name.toLowerCase();
212
+ if (name.includes('api'))
213
+ return 'Provides application functionality via REST API';
214
+ if (name.includes('frontend'))
215
+ return 'Delivers web interface to users';
216
+ if (name.includes('service'))
217
+ return 'Handles business logic and processing';
218
+ if (name.includes('worker'))
219
+ return 'Processes background tasks';
220
+ if (name.includes('gateway'))
221
+ return 'Routes and manages API traffic';
222
+ return 'Application component';
223
+ }
224
+ /**
225
+ * Get database description
226
+ *
227
+ * @param container - Database container
228
+ * @returns Description text
229
+ */
230
+ getDatabaseDescription(container) {
231
+ return 'Stores application data and state';
232
+ }
233
+ /**
234
+ * Generate relationships between containers
235
+ *
236
+ * @param containers - List of containers
237
+ * @returns Mermaid Rel definitions
238
+ */
239
+ generateContainerRelationships(containers) {
240
+ const lines = [];
241
+ const relationships = new Set();
242
+ for (const container of containers) {
243
+ const fromId = this.sanitizeName(container.name);
244
+ // Find likely relationships based on naming patterns
245
+ for (const other of containers) {
246
+ if (container === other)
247
+ continue;
248
+ const toId = this.sanitizeName(other.name);
249
+ const relationship = this.inferRelationship(container, other);
250
+ if (relationship) {
251
+ const relKey = `${fromId}-${toId}`;
252
+ if (!relationships.has(relKey)) {
253
+ relationships.add(relKey);
254
+ lines.push(` Rel(${fromId}, ${toId}, "${relationship}")`);
255
+ }
256
+ }
257
+ }
258
+ }
259
+ return lines.join('\n');
260
+ }
261
+ /**
262
+ * Generate relationships to external systems
263
+ *
264
+ * @param containers - Internal containers
265
+ * @param externals - External systems
266
+ * @returns Mermaid Rel definitions
267
+ */
268
+ generateExternalRelationships(containers, externals) {
269
+ const lines = [];
270
+ for (const container of containers) {
271
+ const fromId = this.sanitizeName(container.name);
272
+ for (const external of externals) {
273
+ if (!this.isRelevantExternal(external) && external.type !== 'database') {
274
+ continue;
275
+ }
276
+ const toId = this.sanitizeName(external.name);
277
+ const relationship = this.getExternalRelationship(external);
278
+ lines.push(` Rel(${fromId}, ${toId}, "${relationship}")`);
279
+ }
280
+ }
281
+ return lines.join('\n');
282
+ }
283
+ /**
284
+ * Infer relationship between two containers
285
+ *
286
+ * @param from - Source container
287
+ * @param to - Target container
288
+ * @returns Relationship description or null
289
+ */
290
+ inferRelationship(from, to) {
291
+ const fromName = from.name.toLowerCase();
292
+ const toName = to.name.toLowerCase();
293
+ // Frontend -> Backend/API
294
+ if (fromName.includes('frontend') && (toName.includes('api') || toName.includes('backend'))) {
295
+ return 'Makes API calls to';
296
+ }
297
+ // API/Backend -> Database
298
+ if ((fromName.includes('api') || fromName.includes('backend')) && this.isDatabase(to)) {
299
+ return 'Reads from and writes to';
300
+ }
301
+ // Service -> Database
302
+ if (fromName.includes('service') && this.isDatabase(to)) {
303
+ return 'Reads from and writes to';
304
+ }
305
+ // Gateway -> API/Service
306
+ if (fromName.includes('gateway') && (toName.includes('api') || toName.includes('service'))) {
307
+ return 'Routes requests to';
308
+ }
309
+ return null;
310
+ }
311
+ /**
312
+ * Get relationship description for external system
313
+ *
314
+ * @param external - External system
315
+ * @returns Relationship description
316
+ */
317
+ getExternalRelationship(external) {
318
+ const typeRelationships = {
319
+ database: 'Reads from and writes to',
320
+ api: 'Makes API calls to',
321
+ service: 'Sends requests to',
322
+ messageQueue: 'Publishes to and consumes from',
323
+ cache: 'Reads from and writes to',
324
+ storage: 'Stores files in',
325
+ };
326
+ return typeRelationships[external.type] || 'Communicates with';
327
+ }
328
+ /**
329
+ * Sanitize name for Mermaid syntax
330
+ *
331
+ * @param name - Original name
332
+ * @returns Sanitized name
333
+ */
334
+ sanitizeName(name) {
335
+ return name
336
+ .replace(/[^a-zA-Z0-9_\s-]/g, '')
337
+ .replace(/\s+/g, '_')
338
+ .replace(/-+/g, '_')
339
+ .toLowerCase();
340
+ }
341
+ }
342
+ exports.C4ContainerDiagramBuilder = C4ContainerDiagramBuilder;
343
+ //# sourceMappingURL=C4ContainerDiagramBuilder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"C4ContainerDiagramBuilder.js","sourceRoot":"","sources":["../../../src/code-intelligence/visualization/C4ContainerDiagramBuilder.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,67 @@
1
+ import type { ProjectMetadata, ExternalSystem } from '../inference/types.js';
2
+ /**
3
+ * Builds C4 Context diagrams in Mermaid syntax
4
+ *
5
+ * Context diagrams show the system in its environment with users and external systems.
6
+ * This is the highest level of abstraction in C4 modeling.
7
+ *
8
+ * @example
9
+ * ```typescript
10
+ * const builder = new C4ContextDiagramBuilder();
11
+ * const diagram = builder.build(metadata, externalSystems);
12
+ * ```
13
+ */
14
+ export declare class C4ContextDiagramBuilder {
15
+ /**
16
+ * Build a C4 Context diagram in Mermaid syntax
17
+ *
18
+ * @param metadata - Project metadata containing system information
19
+ * @param externalSystems - Detected external systems and dependencies
20
+ * @returns Mermaid C4Context diagram as string
21
+ */
22
+ build(metadata: ProjectMetadata, externalSystems: ExternalSystem[]): string;
23
+ /**
24
+ * Sanitize system name for Mermaid syntax
25
+ * Removes special characters and replaces spaces with underscores
26
+ *
27
+ * @param name - Original system name
28
+ * @returns Sanitized name safe for Mermaid
29
+ */
30
+ private formatSystemName;
31
+ /**
32
+ * Generate default user/person actors
33
+ *
34
+ * @returns Mermaid Person definitions
35
+ */
36
+ private generatePersons;
37
+ /**
38
+ * Generate external system definitions
39
+ *
40
+ * @param systems - Detected external systems
41
+ * @returns Mermaid System_Ext definitions
42
+ */
43
+ private generateExternalSystems;
44
+ /**
45
+ * Get description for external system based on type
46
+ *
47
+ * @param system - External system
48
+ * @returns Human-readable description
49
+ */
50
+ private getSystemDescription;
51
+ /**
52
+ * Generate relationships between system and external systems
53
+ *
54
+ * @param metadata - Project metadata
55
+ * @param externals - External systems
56
+ * @returns Mermaid Rel definitions
57
+ */
58
+ private generateRelationships;
59
+ /**
60
+ * Get relationship label based on external system type
61
+ *
62
+ * @param system - External system
63
+ * @returns Relationship description
64
+ */
65
+ private getRelationshipLabel;
66
+ }
67
+ //# sourceMappingURL=C4ContextDiagramBuilder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"C4ContextDiagramBuilder.d.ts","sourceRoot":"","sources":["../../../src/code-intelligence/visualization/C4ContextDiagramBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAa,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAExF;;;;;;;;;;;GAWG;AACH,qBAAa,uBAAuB;IAClC;;;;;;OAMG;IACH,KAAK,CAAC,QAAQ,EAAE,eAAe,EAAE,eAAe,EAAE,cAAc,EAAE,GAAG,MAAM;IAyB3E;;;;;;OAMG;IACH,OAAO,CAAC,gBAAgB;IAQxB;;;;OAIG;IACH,OAAO,CAAC,eAAe;IASvB;;;;;OAKG;IACH,OAAO,CAAC,uBAAuB;IAoB/B;;;;;OAKG;IACH,OAAO,CAAC,oBAAoB;IAe5B;;;;;;OAMG;IACH,OAAO,CAAC,qBAAqB;IAkB7B;;;;;OAKG;IACH,OAAO,CAAC,oBAAoB;CAc7B"}