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,491 @@
1
+ "use strict";
2
+ /**
3
+ * Project Metadata Analyzer for C4 Model Integration
4
+ *
5
+ * Extracts project metadata from configuration files to generate C4 diagrams:
6
+ * - Parse package.json for system name, type, and technology stack
7
+ * - Parse docker-compose.yml and Dockerfile for container detection
8
+ * - Analyze directory structure to infer system architecture
9
+ */
10
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
11
+ if (k2 === undefined) k2 = k;
12
+ var desc = Object.getOwnPropertyDescriptor(m, k);
13
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
14
+ desc = { enumerable: true, get: function() { return m[k]; } };
15
+ }
16
+ Object.defineProperty(o, k2, desc);
17
+ }) : (function(o, m, k, k2) {
18
+ if (k2 === undefined) k2 = k;
19
+ o[k2] = m[k];
20
+ }));
21
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
22
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
23
+ }) : function(o, v) {
24
+ o["default"] = v;
25
+ });
26
+ var __importStar = (this && this.__importStar) || (function () {
27
+ var ownKeys = function(o) {
28
+ ownKeys = Object.getOwnPropertyNames || function (o) {
29
+ var ar = [];
30
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
31
+ return ar;
32
+ };
33
+ return ownKeys(o);
34
+ };
35
+ return function (mod) {
36
+ if (mod && mod.__esModule) return mod;
37
+ var result = {};
38
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
39
+ __setModuleDefault(result, mod);
40
+ return result;
41
+ };
42
+ })();
43
+ Object.defineProperty(exports, "__esModule", { value: true });
44
+ exports.ProjectMetadataAnalyzer = void 0;
45
+ const fs = __importStar(require("fs-extra"));
46
+ const path = __importStar(require("path"));
47
+ const yaml = __importStar(require("yaml"));
48
+ const crypto_1 = require("crypto");
49
+ class ProjectMetadataAnalyzer {
50
+ constructor(rootDir) {
51
+ this.rootDir = rootDir;
52
+ }
53
+ /**
54
+ * Analyze project and extract metadata
55
+ */
56
+ async analyze() {
57
+ const startTime = Date.now();
58
+ try {
59
+ // Parse package.json
60
+ const packageData = await this.parsePackageJson();
61
+ // Detect containers
62
+ const containers = await this.detectContainers();
63
+ // Detect system type
64
+ const systemType = await this.detectSystemType();
65
+ // Detect technology stack
66
+ const techStack = await this.detectTechnologyStack();
67
+ // Detect layers
68
+ const layers = await this.detectLayers();
69
+ const metadata = {
70
+ name: packageData.systemName || 'unknown-system',
71
+ description: packageData.systemDescription,
72
+ systemType,
73
+ technology: techStack.primary,
74
+ containers,
75
+ layers,
76
+ version: packageData.version,
77
+ repository: packageData.repository,
78
+ };
79
+ return metadata;
80
+ }
81
+ catch (error) {
82
+ throw new Error(`Failed to analyze project metadata: ${error instanceof Error ? error.message : String(error)}`);
83
+ }
84
+ }
85
+ /**
86
+ * Parse package.json for basic metadata
87
+ */
88
+ async parsePackageJson() {
89
+ const packagePath = path.join(this.rootDir, 'package.json');
90
+ if (!(await fs.pathExists(packagePath))) {
91
+ return {
92
+ hasBin: false,
93
+ hasMain: false,
94
+ hasTypes: false,
95
+ dependencies: {},
96
+ };
97
+ }
98
+ const packageJson = await fs.readJson(packagePath);
99
+ const repository = typeof packageJson.repository === 'string'
100
+ ? packageJson.repository
101
+ : packageJson.repository?.url;
102
+ return {
103
+ systemName: packageJson.name,
104
+ systemDescription: packageJson.description,
105
+ version: packageJson.version,
106
+ repository,
107
+ hasBin: !!packageJson.bin,
108
+ hasMain: !!packageJson.main,
109
+ hasTypes: !!packageJson.types,
110
+ dependencies: {
111
+ ...packageJson.dependencies,
112
+ ...packageJson.devDependencies,
113
+ },
114
+ };
115
+ }
116
+ /**
117
+ * Parse docker-compose.yml to detect containers
118
+ */
119
+ async parseDockerCompose() {
120
+ const composePath = path.join(this.rootDir, 'docker-compose.yml');
121
+ if (!(await fs.pathExists(composePath))) {
122
+ return [];
123
+ }
124
+ try {
125
+ const content = await fs.readFile(composePath, 'utf-8');
126
+ const compose = yaml.parse(content);
127
+ if (!compose.services) {
128
+ return [];
129
+ }
130
+ const containers = [];
131
+ for (const [serviceName, service] of Object.entries(compose.services)) {
132
+ const container = this.parseDockerService(serviceName, service);
133
+ if (container) {
134
+ containers.push(container);
135
+ }
136
+ }
137
+ return containers;
138
+ }
139
+ catch (error) {
140
+ console.warn(`Failed to parse docker-compose.yml: ${error}`);
141
+ return [];
142
+ }
143
+ }
144
+ /**
145
+ * Parse a Docker service definition
146
+ */
147
+ parseDockerService(serviceName, service) {
148
+ const image = service.image || '';
149
+ const type = this.detectContainerType(serviceName, image, service);
150
+ const technology = this.extractTechnology(image, service);
151
+ const port = this.extractPort(service.ports);
152
+ const dependencies = [];
153
+ if (service.depends_on) {
154
+ if (Array.isArray(service.depends_on)) {
155
+ dependencies.push(...service.depends_on);
156
+ }
157
+ else {
158
+ dependencies.push(...Object.keys(service.depends_on));
159
+ }
160
+ }
161
+ return {
162
+ id: this.generateContainerId(serviceName),
163
+ name: serviceName,
164
+ type,
165
+ technology,
166
+ port,
167
+ dependencies,
168
+ };
169
+ }
170
+ /**
171
+ * Detect container type from service name and image
172
+ */
173
+ detectContainerType(serviceName, image, service) {
174
+ const lowerName = serviceName.toLowerCase();
175
+ const lowerImage = image.toLowerCase();
176
+ // Database detection
177
+ if (lowerName.includes('db') ||
178
+ lowerName.includes('database') ||
179
+ lowerImage.includes('postgres') ||
180
+ lowerImage.includes('mysql') ||
181
+ lowerImage.includes('mongo') ||
182
+ lowerImage.includes('mariadb')) {
183
+ return 'database';
184
+ }
185
+ // Cache detection
186
+ if (lowerName.includes('redis') ||
187
+ lowerName.includes('cache') ||
188
+ lowerImage.includes('redis') ||
189
+ lowerImage.includes('memcached')) {
190
+ return 'cache';
191
+ }
192
+ // Queue detection
193
+ if (lowerName.includes('queue') ||
194
+ lowerName.includes('rabbitmq') ||
195
+ lowerName.includes('kafka') ||
196
+ lowerImage.includes('rabbitmq') ||
197
+ lowerImage.includes('kafka') ||
198
+ lowerImage.includes('redis') // Redis can be a queue
199
+ ) {
200
+ return 'queue';
201
+ }
202
+ // API detection
203
+ if (lowerName.includes('api') || lowerName.includes('gateway')) {
204
+ return 'api';
205
+ }
206
+ // Service detection
207
+ if (lowerName.includes('service') || lowerName.includes('worker')) {
208
+ return 'service';
209
+ }
210
+ // Default to application
211
+ return 'application';
212
+ }
213
+ /**
214
+ * Extract technology from image or service definition
215
+ */
216
+ extractTechnology(image, service) {
217
+ const lowerImage = image.toLowerCase();
218
+ // Common technology detection
219
+ const techMap = {
220
+ postgres: 'PostgreSQL',
221
+ mysql: 'MySQL',
222
+ mariadb: 'MariaDB',
223
+ mongo: 'MongoDB',
224
+ redis: 'Redis',
225
+ rabbitmq: 'RabbitMQ',
226
+ kafka: 'Apache Kafka',
227
+ nginx: 'Nginx',
228
+ node: 'Node.js',
229
+ python: 'Python',
230
+ java: 'Java',
231
+ golang: 'Go',
232
+ rust: 'Rust',
233
+ };
234
+ for (const [key, tech] of Object.entries(techMap)) {
235
+ if (lowerImage.includes(key)) {
236
+ return tech;
237
+ }
238
+ }
239
+ // Extract from image name
240
+ const parts = image.split(':')[0].split('/');
241
+ const imageName = parts[parts.length - 1];
242
+ return imageName || 'Unknown';
243
+ }
244
+ /**
245
+ * Extract primary port from ports configuration
246
+ */
247
+ extractPort(ports) {
248
+ if (!ports || ports.length === 0) {
249
+ return undefined;
250
+ }
251
+ // Parse first port mapping (e.g., "3000:3000" or "3000")
252
+ const firstPort = ports[0];
253
+ const match = firstPort.match(/(\d+):?(\d+)?/);
254
+ if (match) {
255
+ // Return external port (first number)
256
+ return parseInt(match[1], 10);
257
+ }
258
+ return undefined;
259
+ }
260
+ /**
261
+ * Parse Dockerfile to detect base image and technology
262
+ */
263
+ async parseDockerfile() {
264
+ const dockerfilePath = path.join(this.rootDir, 'Dockerfile');
265
+ if (!(await fs.pathExists(dockerfilePath))) {
266
+ return {};
267
+ }
268
+ try {
269
+ const content = await fs.readFile(dockerfilePath, 'utf-8');
270
+ const instructions = this.parseDockerInstructions(content);
271
+ // Find FROM instruction
272
+ const fromInstruction = instructions.find((i) => i.instruction === 'FROM');
273
+ if (!fromInstruction) {
274
+ return {};
275
+ }
276
+ const baseImage = fromInstruction.arguments.split(' ')[0];
277
+ const technology = this.extractTechnology(baseImage, {});
278
+ return { baseImage, technology };
279
+ }
280
+ catch (error) {
281
+ console.warn(`Failed to parse Dockerfile: ${error}`);
282
+ return {};
283
+ }
284
+ }
285
+ /**
286
+ * Parse Dockerfile instructions
287
+ */
288
+ parseDockerInstructions(content) {
289
+ const lines = content.split('\n');
290
+ const instructions = [];
291
+ for (const line of lines) {
292
+ const trimmed = line.trim();
293
+ // Skip comments and empty lines
294
+ if (!trimmed || trimmed.startsWith('#')) {
295
+ continue;
296
+ }
297
+ // Parse instruction
298
+ const match = trimmed.match(/^([A-Z]+)\s+(.+)$/);
299
+ if (match) {
300
+ instructions.push({
301
+ instruction: match[1],
302
+ arguments: match[2],
303
+ });
304
+ }
305
+ }
306
+ return instructions;
307
+ }
308
+ /**
309
+ * Detect all containers (Docker + inferred)
310
+ */
311
+ async detectContainers() {
312
+ const containers = [];
313
+ // Containers from docker-compose
314
+ const dockerContainers = await this.parseDockerCompose();
315
+ containers.push(...dockerContainers);
316
+ // Inferred main application container if not in docker-compose
317
+ if (containers.length === 0) {
318
+ const packageData = await this.parsePackageJson();
319
+ const dockerfile = await this.parseDockerfile();
320
+ const mainContainer = {
321
+ id: this.generateContainerId('app'),
322
+ name: packageData.systemName || 'application',
323
+ type: 'application',
324
+ technology: dockerfile.technology || 'Unknown',
325
+ };
326
+ containers.push(mainContainer);
327
+ }
328
+ return containers;
329
+ }
330
+ /**
331
+ * Detect system type based on project structure
332
+ */
333
+ async detectSystemType() {
334
+ const packageData = await this.parsePackageJson();
335
+ // CLI detection
336
+ if (packageData.hasBin) {
337
+ return 'cli';
338
+ }
339
+ // Library detection
340
+ if (packageData.hasMain && packageData.hasTypes && !packageData.hasBin) {
341
+ return 'library';
342
+ }
343
+ // Microservice vs Monolith detection
344
+ const hasDockerCompose = await fs.pathExists(path.join(this.rootDir, 'docker-compose.yml'));
345
+ const containers = await this.parseDockerCompose();
346
+ if (hasDockerCompose && containers.length > 1) {
347
+ return 'microservice';
348
+ }
349
+ // Check for services directory (common in microservices)
350
+ const servicesDir = path.join(this.rootDir, 'services');
351
+ const hasServicesDir = await fs.pathExists(servicesDir);
352
+ if (hasServicesDir) {
353
+ const entries = await fs.readdir(servicesDir);
354
+ const serviceDirs = await Promise.all(entries.map(async (entry) => {
355
+ const fullPath = path.join(servicesDir, entry);
356
+ const stat = await fs.stat(fullPath);
357
+ return stat.isDirectory();
358
+ }));
359
+ if (serviceDirs.filter(Boolean).length > 1) {
360
+ return 'microservice';
361
+ }
362
+ }
363
+ // Default to monolith
364
+ return 'monolith';
365
+ }
366
+ /**
367
+ * Detect technology stack
368
+ */
369
+ async detectTechnologyStack() {
370
+ const packageData = await this.parsePackageJson();
371
+ const dependencies = packageData.dependencies;
372
+ const frameworks = [];
373
+ const databases = [];
374
+ const infrastructure = [];
375
+ // Detect frameworks
376
+ if (dependencies.express)
377
+ frameworks.push('Express');
378
+ if (dependencies.fastify)
379
+ frameworks.push('Fastify');
380
+ if (dependencies.koa)
381
+ frameworks.push('Koa');
382
+ if (dependencies.react)
383
+ frameworks.push('React');
384
+ if (dependencies.vue)
385
+ frameworks.push('Vue');
386
+ if (dependencies.angular)
387
+ frameworks.push('Angular');
388
+ if (dependencies.next)
389
+ frameworks.push('Next.js');
390
+ if (dependencies.nest || dependencies['@nestjs/core'])
391
+ frameworks.push('NestJS');
392
+ // Detect databases
393
+ if (dependencies.pg)
394
+ databases.push('PostgreSQL');
395
+ if (dependencies.mysql || dependencies.mysql2)
396
+ databases.push('MySQL');
397
+ if (dependencies.mongodb || dependencies.mongoose)
398
+ databases.push('MongoDB');
399
+ if (dependencies.redis)
400
+ databases.push('Redis');
401
+ if (dependencies['better-sqlite3'] || dependencies.sqlite3)
402
+ databases.push('SQLite');
403
+ // Detect infrastructure
404
+ if (dependencies.docker || dependencies.dockerode)
405
+ infrastructure.push('Docker');
406
+ if (dependencies.kubernetes || dependencies['@kubernetes/client-node'])
407
+ infrastructure.push('Kubernetes');
408
+ if (dependencies['aws-sdk'])
409
+ infrastructure.push('AWS');
410
+ // Determine primary technology
411
+ let primary = 'TypeScript';
412
+ let runtime = 'Node.js';
413
+ const hasTsConfig = await fs.pathExists(path.join(this.rootDir, 'tsconfig.json'));
414
+ if (!hasTsConfig) {
415
+ primary = 'JavaScript';
416
+ }
417
+ // Check for other runtimes
418
+ const pyRequirements = await fs.pathExists(path.join(this.rootDir, 'requirements.txt'));
419
+ const goMod = await fs.pathExists(path.join(this.rootDir, 'go.mod'));
420
+ const cargoToml = await fs.pathExists(path.join(this.rootDir, 'Cargo.toml'));
421
+ if (pyRequirements) {
422
+ primary = 'Python';
423
+ runtime = 'Python';
424
+ }
425
+ else if (goMod) {
426
+ primary = 'Go';
427
+ runtime = 'Go';
428
+ }
429
+ else if (cargoToml) {
430
+ primary = 'Rust';
431
+ runtime = 'Rust';
432
+ }
433
+ return {
434
+ primary,
435
+ runtime,
436
+ frameworks,
437
+ databases,
438
+ infrastructure,
439
+ };
440
+ }
441
+ /**
442
+ * Detect architectural layers from directory structure
443
+ */
444
+ async detectLayers() {
445
+ const layers = [];
446
+ const layerDirs = [
447
+ 'controllers',
448
+ 'services',
449
+ 'repositories',
450
+ 'models',
451
+ 'routes',
452
+ 'middleware',
453
+ 'utils',
454
+ 'helpers',
455
+ 'views',
456
+ 'components',
457
+ 'domain',
458
+ 'infrastructure',
459
+ 'application',
460
+ 'presentation',
461
+ ];
462
+ for (const layerDir of layerDirs) {
463
+ const layerPath = path.join(this.rootDir, 'src', layerDir);
464
+ const exists = await fs.pathExists(layerPath);
465
+ if (exists) {
466
+ layers.push(layerDir);
467
+ }
468
+ }
469
+ return layers;
470
+ }
471
+ /**
472
+ * Generate container ID
473
+ */
474
+ generateContainerId(name) {
475
+ return (0, crypto_1.createHash)('md5').update(name).digest('hex').substring(0, 8);
476
+ }
477
+ /**
478
+ * Get project root directory
479
+ */
480
+ getRootDir() {
481
+ return this.rootDir;
482
+ }
483
+ /**
484
+ * Set project root directory
485
+ */
486
+ setRootDir(rootDir) {
487
+ this.rootDir = rootDir;
488
+ }
489
+ }
490
+ exports.ProjectMetadataAnalyzer = ProjectMetadataAnalyzer;
491
+ //# sourceMappingURL=ProjectMetadataAnalyzer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ProjectMetadataAnalyzer.js","sourceRoot":"","sources":["../../../src/code-intelligence/inference/ProjectMetadataAnalyzer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,36 @@
1
+ /**
2
+ * C4 Model Inference Module
3
+ *
4
+ * Provides automatic detection of C4 model elements from codebase analysis.
5
+ * This module analyzes project structure, dependencies, and configuration files
6
+ * to infer C4 architecture diagrams at Context, Container, and Component levels.
7
+ *
8
+ * @example
9
+ * ```typescript
10
+ * import {
11
+ * ProjectMetadataAnalyzer,
12
+ * ExternalSystemDetector,
13
+ * ComponentBoundaryAnalyzer,
14
+ * ProjectMetadata,
15
+ * ExternalSystem,
16
+ * Component
17
+ * } from './inference';
18
+ *
19
+ * // Analyze project for C4 Context diagram
20
+ * const metadataAnalyzer = new ProjectMetadataAnalyzer('/path/to/project');
21
+ * const metadata = await metadataAnalyzer.analyze();
22
+ *
23
+ * // Detect external systems
24
+ * const externalDetector = new ExternalSystemDetector('/path/to/project');
25
+ * const externalSystems = await externalDetector.detect();
26
+ *
27
+ * // Analyze components
28
+ * const componentAnalyzer = new ComponentBoundaryAnalyzer('/path/to/project/src');
29
+ * const components = await componentAnalyzer.analyze();
30
+ * ```
31
+ */
32
+ export * from './types.js';
33
+ export { ProjectMetadataAnalyzer } from './ProjectMetadataAnalyzer.js';
34
+ export { ExternalSystemDetector } from './ExternalSystemDetector.js';
35
+ export { ComponentBoundaryAnalyzer } from './ComponentBoundaryAnalyzer.js';
36
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/code-intelligence/inference/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AAKH,cAAc,YAAY,CAAC;AAO3B,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AAGvE,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AAGrE,OAAO,EAAE,yBAAyB,EAAE,MAAM,gCAAgC,CAAC"}
@@ -0,0 +1,65 @@
1
+ "use strict";
2
+ /**
3
+ * C4 Model Inference Module
4
+ *
5
+ * Provides automatic detection of C4 model elements from codebase analysis.
6
+ * This module analyzes project structure, dependencies, and configuration files
7
+ * to infer C4 architecture diagrams at Context, Container, and Component levels.
8
+ *
9
+ * @example
10
+ * ```typescript
11
+ * import {
12
+ * ProjectMetadataAnalyzer,
13
+ * ExternalSystemDetector,
14
+ * ComponentBoundaryAnalyzer,
15
+ * ProjectMetadata,
16
+ * ExternalSystem,
17
+ * Component
18
+ * } from './inference';
19
+ *
20
+ * // Analyze project for C4 Context diagram
21
+ * const metadataAnalyzer = new ProjectMetadataAnalyzer('/path/to/project');
22
+ * const metadata = await metadataAnalyzer.analyze();
23
+ *
24
+ * // Detect external systems
25
+ * const externalDetector = new ExternalSystemDetector('/path/to/project');
26
+ * const externalSystems = await externalDetector.detect();
27
+ *
28
+ * // Analyze components
29
+ * const componentAnalyzer = new ComponentBoundaryAnalyzer('/path/to/project/src');
30
+ * const components = await componentAnalyzer.analyze();
31
+ * ```
32
+ */
33
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
34
+ if (k2 === undefined) k2 = k;
35
+ var desc = Object.getOwnPropertyDescriptor(m, k);
36
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
37
+ desc = { enumerable: true, get: function() { return m[k]; } };
38
+ }
39
+ Object.defineProperty(o, k2, desc);
40
+ }) : (function(o, m, k, k2) {
41
+ if (k2 === undefined) k2 = k;
42
+ o[k2] = m[k];
43
+ }));
44
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
45
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
46
+ };
47
+ Object.defineProperty(exports, "__esModule", { value: true });
48
+ exports.ComponentBoundaryAnalyzer = exports.ExternalSystemDetector = exports.ProjectMetadataAnalyzer = void 0;
49
+ // ============================================================================
50
+ // All types from consolidated types.ts
51
+ // ============================================================================
52
+ __exportStar(require("./types.js"), exports);
53
+ // ============================================================================
54
+ // Analyzers
55
+ // ============================================================================
56
+ // C4 Context & Container level analysis
57
+ var ProjectMetadataAnalyzer_js_1 = require("./ProjectMetadataAnalyzer.js");
58
+ Object.defineProperty(exports, "ProjectMetadataAnalyzer", { enumerable: true, get: function () { return ProjectMetadataAnalyzer_js_1.ProjectMetadataAnalyzer; } });
59
+ // External system detection for C4 Context diagrams
60
+ var ExternalSystemDetector_js_1 = require("./ExternalSystemDetector.js");
61
+ Object.defineProperty(exports, "ExternalSystemDetector", { enumerable: true, get: function () { return ExternalSystemDetector_js_1.ExternalSystemDetector; } });
62
+ // Component boundary analysis for C4 Component diagrams
63
+ var ComponentBoundaryAnalyzer_js_1 = require("./ComponentBoundaryAnalyzer.js");
64
+ Object.defineProperty(exports, "ComponentBoundaryAnalyzer", { enumerable: true, get: function () { return ComponentBoundaryAnalyzer_js_1.ComponentBoundaryAnalyzer; } });
65
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/code-intelligence/inference/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;;;;;;;;;;;;;;;;;AAEH,+EAA+E;AAC/E,uCAAuC;AACvC,+EAA+E;AAC/E,6CAA2B;AAE3B,+EAA+E;AAC/E,YAAY;AACZ,+EAA+E;AAE/E,wCAAwC;AACxC,2EAAuE;AAA9D,qIAAA,uBAAuB,OAAA;AAEhC,oDAAoD;AACpD,yEAAqE;AAA5D,mIAAA,sBAAsB,OAAA;AAE/B,wDAAwD;AACxD,+EAA2E;AAAlE,yIAAA,yBAAyB,OAAA"}