code-auditor-mcp 1.21.0 → 2.0.0

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 (149) hide show
  1. package/dist/adapters/GoAdapter.d.ts +53 -0
  2. package/dist/adapters/GoAdapter.d.ts.map +1 -0
  3. package/dist/adapters/GoAdapter.js +602 -0
  4. package/dist/adapters/GoAdapter.js.map +1 -0
  5. package/dist/adapters/GoConfig.d.ts +35 -0
  6. package/dist/adapters/GoConfig.d.ts.map +1 -0
  7. package/dist/adapters/GoConfig.js +155 -0
  8. package/dist/adapters/GoConfig.js.map +1 -0
  9. package/dist/adapters/LanguageAdapter.d.ts +135 -0
  10. package/dist/adapters/LanguageAdapter.d.ts.map +1 -0
  11. package/dist/adapters/LanguageAdapter.js +47 -0
  12. package/dist/adapters/LanguageAdapter.js.map +1 -0
  13. package/dist/adapters/TypeScriptAdapter.d.ts +43 -0
  14. package/dist/adapters/TypeScriptAdapter.d.ts.map +1 -0
  15. package/dist/adapters/TypeScriptAdapter.js +386 -0
  16. package/dist/adapters/TypeScriptAdapter.js.map +1 -0
  17. package/dist/adapters/UniversalAnalyzer.d.ts +42 -0
  18. package/dist/adapters/UniversalAnalyzer.d.ts.map +1 -0
  19. package/dist/adapters/UniversalAnalyzer.js +103 -0
  20. package/dist/adapters/UniversalAnalyzer.js.map +1 -0
  21. package/dist/adapters/UniversalSOLIDAnalyzer.d.ts +48 -0
  22. package/dist/adapters/UniversalSOLIDAnalyzer.d.ts.map +1 -0
  23. package/dist/adapters/UniversalSOLIDAnalyzer.js +178 -0
  24. package/dist/adapters/UniversalSOLIDAnalyzer.js.map +1 -0
  25. package/dist/adapters/solidAnalyzerCompat.d.ts +21 -0
  26. package/dist/adapters/solidAnalyzerCompat.d.ts.map +1 -0
  27. package/dist/adapters/solidAnalyzerCompat.js +78 -0
  28. package/dist/adapters/solidAnalyzerCompat.js.map +1 -0
  29. package/dist/analyzers/cross-language/APIContractAnalyzer.d.ts +103 -0
  30. package/dist/analyzers/cross-language/APIContractAnalyzer.d.ts.map +1 -0
  31. package/dist/analyzers/cross-language/APIContractAnalyzer.js +425 -0
  32. package/dist/analyzers/cross-language/APIContractAnalyzer.js.map +1 -0
  33. package/dist/analyzers/cross-language/CrossLanguageSOLIDAnalyzer.d.ts +117 -0
  34. package/dist/analyzers/cross-language/CrossLanguageSOLIDAnalyzer.d.ts.map +1 -0
  35. package/dist/analyzers/cross-language/CrossLanguageSOLIDAnalyzer.js +618 -0
  36. package/dist/analyzers/cross-language/CrossLanguageSOLIDAnalyzer.js.map +1 -0
  37. package/dist/analyzers/cross-language/DependencyGraphBuilder.d.ts +129 -0
  38. package/dist/analyzers/cross-language/DependencyGraphBuilder.d.ts.map +1 -0
  39. package/dist/analyzers/cross-language/DependencyGraphBuilder.js +473 -0
  40. package/dist/analyzers/cross-language/DependencyGraphBuilder.js.map +1 -0
  41. package/dist/analyzers/cross-language/SchemaValidator.d.ts +126 -0
  42. package/dist/analyzers/cross-language/SchemaValidator.d.ts.map +1 -0
  43. package/dist/analyzers/cross-language/SchemaValidator.js +522 -0
  44. package/dist/analyzers/cross-language/SchemaValidator.js.map +1 -0
  45. package/dist/analyzers/dataAccessAnalyzerCompat.d.ts +20 -0
  46. package/dist/analyzers/dataAccessAnalyzerCompat.d.ts.map +1 -0
  47. package/dist/analyzers/dataAccessAnalyzerCompat.js +59 -0
  48. package/dist/analyzers/dataAccessAnalyzerCompat.js.map +1 -0
  49. package/dist/analyzers/documentationAnalyzerCompat.d.ts +20 -0
  50. package/dist/analyzers/documentationAnalyzerCompat.d.ts.map +1 -0
  51. package/dist/analyzers/documentationAnalyzerCompat.js +52 -0
  52. package/dist/analyzers/documentationAnalyzerCompat.js.map +1 -0
  53. package/dist/analyzers/dryAnalyzerCompat.d.ts +20 -0
  54. package/dist/analyzers/dryAnalyzerCompat.d.ts.map +1 -0
  55. package/dist/analyzers/dryAnalyzerCompat.js +44 -0
  56. package/dist/analyzers/dryAnalyzerCompat.js.map +1 -0
  57. package/dist/analyzers/schemaAnalyzerCompat.d.ts +20 -0
  58. package/dist/analyzers/schemaAnalyzerCompat.d.ts.map +1 -0
  59. package/dist/analyzers/schemaAnalyzerCompat.js +69 -0
  60. package/dist/analyzers/schemaAnalyzerCompat.js.map +1 -0
  61. package/dist/analyzers/solidAnalyzerCompat.d.ts +20 -0
  62. package/dist/analyzers/solidAnalyzerCompat.d.ts.map +1 -0
  63. package/dist/analyzers/solidAnalyzerCompat.js +78 -0
  64. package/dist/analyzers/solidAnalyzerCompat.js.map +1 -0
  65. package/dist/analyzers/universal/UniversalDRYAnalyzer.d.ts +71 -0
  66. package/dist/analyzers/universal/UniversalDRYAnalyzer.d.ts.map +1 -0
  67. package/dist/analyzers/universal/UniversalDRYAnalyzer.js +276 -0
  68. package/dist/analyzers/universal/UniversalDRYAnalyzer.js.map +1 -0
  69. package/dist/analyzers/universal/UniversalDataAccessAnalyzer.d.ts +82 -0
  70. package/dist/analyzers/universal/UniversalDataAccessAnalyzer.d.ts.map +1 -0
  71. package/dist/analyzers/universal/UniversalDataAccessAnalyzer.js +489 -0
  72. package/dist/analyzers/universal/UniversalDataAccessAnalyzer.js.map +1 -0
  73. package/dist/analyzers/universal/UniversalDocumentationAnalyzer.d.ts +48 -0
  74. package/dist/analyzers/universal/UniversalDocumentationAnalyzer.d.ts.map +1 -0
  75. package/dist/analyzers/universal/UniversalDocumentationAnalyzer.js +175 -0
  76. package/dist/analyzers/universal/UniversalDocumentationAnalyzer.js.map +1 -0
  77. package/dist/analyzers/universal/UniversalSOLIDAnalyzer.d.ts +64 -0
  78. package/dist/analyzers/universal/UniversalSOLIDAnalyzer.d.ts.map +1 -0
  79. package/dist/analyzers/universal/UniversalSOLIDAnalyzer.js +286 -0
  80. package/dist/analyzers/universal/UniversalSOLIDAnalyzer.js.map +1 -0
  81. package/dist/analyzers/universal/UniversalSchemaAnalyzer.d.ts +119 -0
  82. package/dist/analyzers/universal/UniversalSchemaAnalyzer.d.ts.map +1 -0
  83. package/dist/analyzers/universal/UniversalSchemaAnalyzer.js +812 -0
  84. package/dist/analyzers/universal/UniversalSchemaAnalyzer.js.map +1 -0
  85. package/dist/auditRunner.d.ts.map +1 -1
  86. package/dist/auditRunner.js +20 -8
  87. package/dist/auditRunner.js.map +1 -1
  88. package/dist/codeIndexDB-enhanced.d.ts +80 -0
  89. package/dist/codeIndexDB-enhanced.d.ts.map +1 -0
  90. package/dist/codeIndexDB-enhanced.js +488 -0
  91. package/dist/codeIndexDB-enhanced.js.map +1 -0
  92. package/dist/codeIndexDb.js +2 -2
  93. package/dist/codeIndexDb.js.map +1 -1
  94. package/dist/config/defaults.js +1 -1
  95. package/dist/config/defaults.js.map +1 -1
  96. package/dist/languages/LanguageOrchestrator.d.ts +181 -0
  97. package/dist/languages/LanguageOrchestrator.d.ts.map +1 -0
  98. package/dist/languages/LanguageOrchestrator.js +365 -0
  99. package/dist/languages/LanguageOrchestrator.js.map +1 -0
  100. package/dist/languages/LanguageRegistry.d.ts +43 -0
  101. package/dist/languages/LanguageRegistry.d.ts.map +1 -0
  102. package/dist/languages/LanguageRegistry.js +86 -0
  103. package/dist/languages/LanguageRegistry.js.map +1 -0
  104. package/dist/languages/RuntimeManager.d.ts +181 -0
  105. package/dist/languages/RuntimeManager.d.ts.map +1 -0
  106. package/dist/languages/RuntimeManager.js +841 -0
  107. package/dist/languages/RuntimeManager.js.map +1 -0
  108. package/dist/languages/UniversalAnalyzer.d.ts +37 -0
  109. package/dist/languages/UniversalAnalyzer.d.ts.map +1 -0
  110. package/dist/languages/UniversalAnalyzer.js +101 -0
  111. package/dist/languages/UniversalAnalyzer.js.map +1 -0
  112. package/dist/languages/go/GoAdapter.d.ts +57 -0
  113. package/dist/languages/go/GoAdapter.d.ts.map +1 -0
  114. package/dist/languages/go/GoAdapter.js +360 -0
  115. package/dist/languages/go/GoAdapter.js.map +1 -0
  116. package/dist/languages/index.d.ts +13 -0
  117. package/dist/languages/index.d.ts.map +1 -0
  118. package/dist/languages/index.js +23 -0
  119. package/dist/languages/index.js.map +1 -0
  120. package/dist/languages/types.d.ts +182 -0
  121. package/dist/languages/types.d.ts.map +1 -0
  122. package/dist/languages/types.js +5 -0
  123. package/dist/languages/types.js.map +1 -0
  124. package/dist/languages/typescript/TypeScriptAdapter.d.ts +108 -0
  125. package/dist/languages/typescript/TypeScriptAdapter.d.ts.map +1 -0
  126. package/dist/languages/typescript/TypeScriptAdapter.js +567 -0
  127. package/dist/languages/typescript/TypeScriptAdapter.js.map +1 -0
  128. package/dist/languages/typescript/test-extraction.d.ts +2 -0
  129. package/dist/languages/typescript/test-extraction.d.ts.map +1 -0
  130. package/dist/languages/typescript/test-extraction.js +36 -0
  131. package/dist/languages/typescript/test-extraction.js.map +1 -0
  132. package/dist/mcp-tools-shared.d.ts +3 -0
  133. package/dist/mcp-tools-shared.d.ts.map +1 -1
  134. package/dist/mcp-tools-shared.js +123 -2
  135. package/dist/mcp-tools-shared.js.map +1 -1
  136. package/dist/mcp.js +3 -0
  137. package/dist/mcp.js.map +1 -1
  138. package/dist/types/crossLanguage.d.ts +267 -0
  139. package/dist/types/crossLanguage.d.ts.map +1 -0
  140. package/dist/types/crossLanguage.js +6 -0
  141. package/dist/types/crossLanguage.js.map +1 -0
  142. package/dist/types.d.ts +1 -0
  143. package/dist/types.d.ts.map +1 -1
  144. package/dist/types.js.map +1 -1
  145. package/dist/utils/fileDiscovery.d.ts +6 -0
  146. package/dist/utils/fileDiscovery.d.ts.map +1 -1
  147. package/dist/utils/fileDiscovery.js +12 -1
  148. package/dist/utils/fileDiscovery.js.map +1 -1
  149. package/package.json +19 -20
@@ -0,0 +1,365 @@
1
+ /**
2
+ * Language Orchestrator
3
+ * Coordinates multiple language analyzers and merges results
4
+ */
5
+ import { discoverFiles } from '../utils/fileDiscovery.js';
6
+ import * as path from 'path';
7
+ export class LanguageOrchestrator {
8
+ runtimeManager;
9
+ codeIndex;
10
+ constructor(runtimeManager, codeIndex) {
11
+ this.runtimeManager = runtimeManager;
12
+ this.codeIndex = codeIndex;
13
+ }
14
+ /**
15
+ * Analyze a polyglot project
16
+ */
17
+ async analyzePolyglotProject(projectPath, options = {}) {
18
+ console.error(`[LanguageOrchestrator] Starting polyglot analysis of: ${projectPath}`);
19
+ const startTime = Date.now();
20
+ // Initialize runtime manager if needed
21
+ if (!this.runtimeManager.getAvailableRuntimes().length) {
22
+ console.error(`[LanguageOrchestrator] Runtime manager not initialized, initializing...`);
23
+ await this.runtimeManager.initialize();
24
+ }
25
+ // 1. Discover and group files by language
26
+ console.error(`[LanguageOrchestrator] Discovering files in: ${projectPath}`);
27
+ const filesByLanguage = await this.discoverAndGroupFiles(projectPath, options);
28
+ console.error(`[LanguageOrchestrator] Discovered files:`, Object.fromEntries(Object.entries(filesByLanguage).map(([lang, files]) => [lang, files.length])));
29
+ // 2. Determine which languages to analyze
30
+ const languagesToAnalyze = this.selectLanguages(filesByLanguage, options);
31
+ console.log(`[LanguageOrchestrator] Languages to analyze:`, languagesToAnalyze);
32
+ // 2.5. Validate runtime compatibility for selected languages
33
+ for (const language of languagesToAnalyze) {
34
+ if (!this.runtimeManager.hasRuntime(language)) {
35
+ console.warn(`[LanguageOrchestrator] No runtime available for ${language}, skipping...`);
36
+ }
37
+ }
38
+ // 3. Run language-specific analyses in parallel
39
+ const analysisPromises = languagesToAnalyze.map(language => this.analyzeLanguage(language, filesByLanguage[language] || [], options));
40
+ const analysisResults = await Promise.all(analysisPromises);
41
+ console.log(`[LanguageOrchestrator] Completed ${analysisResults.length} language analyses`);
42
+ // 4. Merge results
43
+ const mergedResult = this.mergeLanguageResults(analysisResults, languagesToAnalyze);
44
+ // 5. Build cross-references if enabled
45
+ if (options.buildCrossReferences) {
46
+ mergedResult.crossReferences = await this.buildCrossReferences(analysisResults);
47
+ console.log(`[LanguageOrchestrator] Built ${mergedResult.crossReferences.length} cross-references`);
48
+ }
49
+ // 6. Detect cross-language violations
50
+ if (options.enableCrossLanguageAnalysis) {
51
+ mergedResult.crossLanguageViolations = await this.detectCrossLanguageViolations(analysisResults, mergedResult.crossReferences || []);
52
+ console.log(`[LanguageOrchestrator] Found ${mergedResult.crossLanguageViolations.length} cross-language violations`);
53
+ }
54
+ // 7. Validate API contracts
55
+ if (options.validateAPIContracts) {
56
+ mergedResult.apiContracts = await this.validateAPIContracts(analysisResults);
57
+ console.log(`[LanguageOrchestrator] Validated ${mergedResult.apiContracts?.length || 0} API contracts`);
58
+ }
59
+ // 8. Generate dependency graph
60
+ if (options.generateDependencyGraph) {
61
+ mergedResult.dependencyGraph = await this.generateDependencyGraph(analysisResults, mergedResult.crossReferences || []);
62
+ console.log(`[LanguageOrchestrator] Generated dependency graph with ${mergedResult.dependencyGraph.nodes.length} nodes`);
63
+ }
64
+ // 9. Update index if requested
65
+ if (options.updateIndex && mergedResult.indexEntries) {
66
+ await this.updateCodeIndex(mergedResult.indexEntries, mergedResult.crossReferences || []);
67
+ console.log(`[LanguageOrchestrator] Updated index with ${mergedResult.indexEntries.length} entries`);
68
+ }
69
+ // 10. Final metrics
70
+ mergedResult.metrics.executionTime = Date.now() - startTime;
71
+ console.log(`[LanguageOrchestrator] Analysis complete in ${mergedResult.metrics.executionTime}ms`);
72
+ return mergedResult;
73
+ }
74
+ /**
75
+ * Discover files and group by language
76
+ */
77
+ async discoverAndGroupFiles(projectPath, options) {
78
+ const allFiles = await discoverFiles(projectPath);
79
+ const filesByLanguage = {};
80
+ for (const file of allFiles) {
81
+ const language = this.detectLanguage(file);
82
+ if (language) {
83
+ if (!filesByLanguage[language]) {
84
+ filesByLanguage[language] = [];
85
+ }
86
+ filesByLanguage[language].push(file);
87
+ }
88
+ }
89
+ return filesByLanguage;
90
+ }
91
+ /**
92
+ * Detect programming language from file extension
93
+ */
94
+ detectLanguage(filePath) {
95
+ const ext = path.extname(filePath).toLowerCase();
96
+ const languageMap = {
97
+ '.ts': 'typescript',
98
+ '.tsx': 'typescript',
99
+ '.js': 'javascript',
100
+ '.jsx': 'javascript',
101
+ '.go': 'go',
102
+ '.py': 'python',
103
+ '.rs': 'rust',
104
+ '.java': 'java',
105
+ '.kt': 'kotlin',
106
+ '.cs': 'csharp',
107
+ '.cpp': 'cpp',
108
+ '.c': 'c',
109
+ '.h': 'c',
110
+ '.hpp': 'cpp'
111
+ };
112
+ return languageMap[ext] || null;
113
+ }
114
+ /**
115
+ * Select which languages to analyze based on options and availability
116
+ */
117
+ selectLanguages(filesByLanguage, options) {
118
+ const discoveredLanguages = Object.keys(filesByLanguage);
119
+ // Map discovered languages to runtime names
120
+ const languageToRuntime = this.mapLanguageToRuntime();
121
+ // If specific languages requested, filter to those
122
+ if (options.languages && options.languages.length > 0) {
123
+ return options.languages.filter(lang => {
124
+ const runtimeName = languageToRuntime[lang] || lang;
125
+ return discoveredLanguages.includes(lang) &&
126
+ this.runtimeManager.hasRuntime(runtimeName);
127
+ });
128
+ }
129
+ // Otherwise, analyze all discovered languages that have available runtimes
130
+ return discoveredLanguages.filter(lang => {
131
+ const runtimeName = languageToRuntime[lang] || lang;
132
+ return this.runtimeManager.hasRuntime(runtimeName);
133
+ });
134
+ }
135
+ /**
136
+ * Map language names to runtime names
137
+ */
138
+ mapLanguageToRuntime() {
139
+ return {
140
+ 'typescript': 'node',
141
+ 'javascript': 'node',
142
+ 'go': 'go',
143
+ 'python': 'python',
144
+ 'rust': 'rust'
145
+ };
146
+ }
147
+ /**
148
+ * Analyze files for a specific language
149
+ */
150
+ async analyzeLanguage(language, files, options) {
151
+ console.log(`[LanguageOrchestrator] Analyzing ${files.length} ${language} files`);
152
+ // Map language to runtime name
153
+ const languageToRuntime = this.mapLanguageToRuntime();
154
+ const runtimeName = languageToRuntime[language] || language;
155
+ // Use the mapped runtime name for analysis
156
+ const result = await this.runtimeManager.spawnAnalyzer(runtimeName, files, {
157
+ analyzers: options.analyzers,
158
+ minSeverity: options.minSeverity,
159
+ timeout: options.timeout,
160
+ language: language // Pass original language for context
161
+ });
162
+ return {
163
+ language,
164
+ result: result || {
165
+ violations: [],
166
+ indexEntries: [],
167
+ metrics: { filesAnalyzed: 0, executionTime: 0 },
168
+ errors: [`No analyzer available for ${language} (runtime: ${runtimeName})`]
169
+ }
170
+ };
171
+ }
172
+ /**
173
+ * Merge results from multiple language analyses
174
+ */
175
+ mergeLanguageResults(results, languages) {
176
+ const merged = {
177
+ violations: [],
178
+ errors: [],
179
+ crossLanguageViolations: [],
180
+ metrics: {
181
+ totalFiles: 0,
182
+ totalViolations: 0,
183
+ languagesAnalyzed: languages,
184
+ executionTime: 0,
185
+ crossLanguageReferences: 0,
186
+ apiContractsChecked: 0
187
+ },
188
+ languageStats: new Map(),
189
+ indexEntries: []
190
+ };
191
+ for (const { language, result } of results) {
192
+ // Merge violations
193
+ merged.violations.push(...result.violations);
194
+ // Merge errors
195
+ if (result.errors) {
196
+ merged.errors.push(...result.errors);
197
+ }
198
+ // Merge index entries
199
+ if (result.indexEntries) {
200
+ merged.indexEntries.push(...result.indexEntries);
201
+ }
202
+ // Calculate language stats
203
+ merged.languageStats.set(language, {
204
+ filesAnalyzed: result.metrics.filesAnalyzed,
205
+ violations: result.violations.length,
206
+ functions: result.indexEntries?.filter(e => e.type === 'function').length || 0,
207
+ classes: result.indexEntries?.filter(e => e.type === 'class').length || 0,
208
+ interfaces: result.indexEntries?.filter(e => e.type === 'interface').length || 0,
209
+ executionTime: result.metrics.executionTime
210
+ });
211
+ // Update totals
212
+ merged.metrics.totalFiles += result.metrics.filesAnalyzed;
213
+ merged.metrics.totalViolations += result.violations.length;
214
+ }
215
+ return merged;
216
+ }
217
+ /**
218
+ * Build cross-references between languages
219
+ */
220
+ async buildCrossReferences(results) {
221
+ // This is a placeholder for cross-reference building logic
222
+ // In future phases, this will analyze:
223
+ // - Function calls across language boundaries
224
+ // - API endpoints and their consumers
225
+ // - Shared type definitions
226
+ // - Import/export relationships
227
+ console.log('[LanguageOrchestrator] Building cross-references (placeholder)');
228
+ return [];
229
+ }
230
+ /**
231
+ * Detect violations that span multiple languages
232
+ */
233
+ async detectCrossLanguageViolations(results, crossReferences) {
234
+ console.log('[LanguageOrchestrator] Detecting cross-language violations...');
235
+ const violations = [];
236
+ // Collect all entities from results
237
+ const allEntities = [];
238
+ for (const { result } of results) {
239
+ if (result.indexEntries) {
240
+ allEntities.push(...result.indexEntries);
241
+ }
242
+ }
243
+ // Import and run API contract analysis
244
+ try {
245
+ const { APIContractAnalyzer } = await import('../analyzers/cross-language/APIContractAnalyzer.js');
246
+ const endpoints = APIContractAnalyzer.extractEndpoints(allEntities);
247
+ const apiCalls = APIContractAnalyzer.extractAPICalls(allEntities);
248
+ if (endpoints.length > 0 || apiCalls.length > 0) {
249
+ const contractAnalyzer = new APIContractAnalyzer();
250
+ const contractViolations = await contractAnalyzer.analyzeContracts(endpoints, apiCalls);
251
+ // Convert to CrossLanguageViolation format
252
+ for (const violation of contractViolations) {
253
+ violations.push({
254
+ ...violation,
255
+ crossLanguageType: 'api-mismatch',
256
+ relatedFiles: [violation.file, ...(violation.endpoint ? [violation.endpoint.file] : [])],
257
+ relatedLanguages: [
258
+ violation.call?.language || 'unknown',
259
+ violation.endpoint?.language || 'unknown'
260
+ ].filter(lang => lang !== 'unknown')
261
+ });
262
+ }
263
+ }
264
+ }
265
+ catch (error) {
266
+ console.warn('[LanguageOrchestrator] Failed to run API contract analysis:', error);
267
+ }
268
+ // Import and run schema validation
269
+ try {
270
+ const { SchemaValidator } = await import('../analyzers/cross-language/SchemaValidator.js');
271
+ const schemas = SchemaValidator.extractSchemas(allEntities);
272
+ if (schemas.length > 0) {
273
+ const schemaValidator = new SchemaValidator();
274
+ const schemaViolations = await schemaValidator.validateSchemas(schemas);
275
+ // Convert to CrossLanguageViolation format
276
+ for (const violation of schemaViolations) {
277
+ violations.push({
278
+ ...violation,
279
+ crossLanguageType: 'type-mismatch',
280
+ relatedFiles: violation.schemas.map(s => s.file),
281
+ relatedLanguages: violation.schemas.map(s => s.language)
282
+ });
283
+ }
284
+ }
285
+ }
286
+ catch (error) {
287
+ console.warn('[LanguageOrchestrator] Failed to run schema validation:', error);
288
+ }
289
+ console.log(`[LanguageOrchestrator] Found ${violations.length} cross-language violations`);
290
+ return violations;
291
+ }
292
+ /**
293
+ * Validate API contracts between frontend and backend
294
+ */
295
+ async validateAPIContracts(results) {
296
+ // Placeholder for API contract validation
297
+ console.log('[LanguageOrchestrator] Validating API contracts (placeholder)');
298
+ return [];
299
+ }
300
+ /**
301
+ * Generate dependency graph across languages
302
+ */
303
+ async generateDependencyGraph(results, crossReferences) {
304
+ console.log('[LanguageOrchestrator] Generating cross-language dependency graph...');
305
+ try {
306
+ const { DependencyGraphBuilder } = await import('../analyzers/cross-language/DependencyGraphBuilder.js');
307
+ // Collect all entities
308
+ const allEntities = [];
309
+ for (const { result } of results) {
310
+ if (result.indexEntries) {
311
+ allEntities.push(...result.indexEntries);
312
+ }
313
+ }
314
+ // Build the dependency graph
315
+ const graphBuilder = new DependencyGraphBuilder({
316
+ includeInternalDependencies: true,
317
+ includeExternalDependencies: true,
318
+ includeTestFiles: false,
319
+ clusterByPackage: true
320
+ });
321
+ const graph = await graphBuilder.buildGraph(allEntities, crossReferences);
322
+ console.log(`[LanguageOrchestrator] Generated dependency graph with ${graph.nodes.length} nodes and ${graph.edges.length} edges`);
323
+ return graph;
324
+ }
325
+ catch (error) {
326
+ console.warn('[LanguageOrchestrator] Failed to generate dependency graph:', error);
327
+ return {
328
+ nodes: [],
329
+ edges: [],
330
+ cycles: [],
331
+ metrics: {
332
+ totalNodes: 0,
333
+ totalEdges: 0,
334
+ cycleCount: 0,
335
+ averageDepth: 0,
336
+ maxDepth: 0,
337
+ stronglyConnectedComponents: 0
338
+ }
339
+ };
340
+ }
341
+ }
342
+ /**
343
+ * Update the unified code index
344
+ */
345
+ async updateCodeIndex(indexEntries, crossReferences) {
346
+ // Placeholder for index updates
347
+ console.log('[LanguageOrchestrator] Updating code index (placeholder)');
348
+ }
349
+ /**
350
+ * Get orchestrator statistics
351
+ */
352
+ getStats() {
353
+ const runtimeStats = this.runtimeManager.getStats();
354
+ return {
355
+ runtimes: runtimeStats,
356
+ capabilities: {
357
+ crossLanguageAnalysis: true,
358
+ apiContractValidation: true,
359
+ dependencyGraphGeneration: true,
360
+ unifiedIndexing: true
361
+ }
362
+ };
363
+ }
364
+ }
365
+ //# sourceMappingURL=LanguageOrchestrator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LanguageOrchestrator.js","sourceRoot":"","sources":["../../src/languages/LanguageOrchestrator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,43 @@
1
+ /**
2
+ * Registry for managing language adapters
3
+ */
4
+ import type { LanguageAdapter } from './types.js';
5
+ export declare class LanguageRegistry {
6
+ private static instance;
7
+ private adapters;
8
+ private extensionMap;
9
+ private constructor();
10
+ /**
11
+ * Get singleton instance
12
+ */
13
+ static getInstance(): LanguageRegistry;
14
+ /**
15
+ * Register a language adapter
16
+ */
17
+ registerAdapter(adapter: LanguageAdapter): void;
18
+ /**
19
+ * Unregister a language adapter
20
+ */
21
+ unregisterAdapter(name: string): void;
22
+ /**
23
+ * Get adapter by name
24
+ */
25
+ getAdapter(name: string): LanguageAdapter | null;
26
+ /**
27
+ * Get adapter for a file based on its extension
28
+ */
29
+ getAdapterForFile(filePath: string): LanguageAdapter | null;
30
+ /**
31
+ * Get all registered adapters
32
+ */
33
+ getAllAdapters(): LanguageAdapter[];
34
+ /**
35
+ * Get all supported file extensions
36
+ */
37
+ getSupportedExtensions(): string[];
38
+ /**
39
+ * Clear all registered adapters
40
+ */
41
+ clear(): void;
42
+ }
43
+ //# sourceMappingURL=LanguageRegistry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LanguageRegistry.d.ts","sourceRoot":"","sources":["../../src/languages/LanguageRegistry.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAGlD,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAmB;IAC1C,OAAO,CAAC,QAAQ,CAAsC;IACtD,OAAO,CAAC,YAAY,CAAsC;IAE1D,OAAO;IAEP;;OAEG;IACH,MAAM,CAAC,WAAW,IAAI,gBAAgB;IAOtC;;OAEG;IACH,eAAe,CAAC,OAAO,EAAE,eAAe,GAAG,IAAI;IAS/C;;OAEG;IACH,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAWrC;;OAEG;IACH,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,eAAe,GAAG,IAAI;IAIhD;;OAEG;IACH,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,eAAe,GAAG,IAAI;IAmB3D;;OAEG;IACH,cAAc,IAAI,eAAe,EAAE;IAInC;;OAEG;IACH,sBAAsB,IAAI,MAAM,EAAE;IAIlC;;OAEG;IACH,KAAK,IAAI,IAAI;CAId"}
@@ -0,0 +1,86 @@
1
+ /**
2
+ * Registry for managing language adapters
3
+ */
4
+ import path from 'path';
5
+ export class LanguageRegistry {
6
+ static instance;
7
+ adapters = new Map();
8
+ extensionMap = new Map();
9
+ constructor() { }
10
+ /**
11
+ * Get singleton instance
12
+ */
13
+ static getInstance() {
14
+ if (!LanguageRegistry.instance) {
15
+ LanguageRegistry.instance = new LanguageRegistry();
16
+ }
17
+ return LanguageRegistry.instance;
18
+ }
19
+ /**
20
+ * Register a language adapter
21
+ */
22
+ registerAdapter(adapter) {
23
+ this.adapters.set(adapter.name, adapter);
24
+ // Map file extensions to adapter
25
+ for (const ext of adapter.fileExtensions) {
26
+ this.extensionMap.set(ext.toLowerCase(), adapter);
27
+ }
28
+ }
29
+ /**
30
+ * Unregister a language adapter
31
+ */
32
+ unregisterAdapter(name) {
33
+ const adapter = this.adapters.get(name);
34
+ if (adapter) {
35
+ // Remove extension mappings
36
+ for (const ext of adapter.fileExtensions) {
37
+ this.extensionMap.delete(ext.toLowerCase());
38
+ }
39
+ this.adapters.delete(name);
40
+ }
41
+ }
42
+ /**
43
+ * Get adapter by name
44
+ */
45
+ getAdapter(name) {
46
+ return this.adapters.get(name) || null;
47
+ }
48
+ /**
49
+ * Get adapter for a file based on its extension
50
+ */
51
+ getAdapterForFile(filePath) {
52
+ const ext = path.extname(filePath).toLowerCase();
53
+ const adapter = this.extensionMap.get(ext);
54
+ // Double-check with adapter's supportsFile method
55
+ if (adapter && adapter.supportsFile(filePath)) {
56
+ return adapter;
57
+ }
58
+ // Fallback: try all adapters
59
+ for (const adapter of this.adapters.values()) {
60
+ if (adapter.supportsFile(filePath)) {
61
+ return adapter;
62
+ }
63
+ }
64
+ return null;
65
+ }
66
+ /**
67
+ * Get all registered adapters
68
+ */
69
+ getAllAdapters() {
70
+ return Array.from(this.adapters.values());
71
+ }
72
+ /**
73
+ * Get all supported file extensions
74
+ */
75
+ getSupportedExtensions() {
76
+ return Array.from(this.extensionMap.keys());
77
+ }
78
+ /**
79
+ * Clear all registered adapters
80
+ */
81
+ clear() {
82
+ this.adapters.clear();
83
+ this.extensionMap.clear();
84
+ }
85
+ }
86
+ //# sourceMappingURL=LanguageRegistry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LanguageRegistry.js","sourceRoot":"","sources":["../../src/languages/LanguageRegistry.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB,MAAM,OAAO,gBAAgB;IACnB,MAAM,CAAC,QAAQ,CAAmB;IAClC,QAAQ,GAAG,IAAI,GAAG,EAA2B,CAAC;IAC9C,YAAY,GAAG,IAAI,GAAG,EAA2B,CAAC;IAE1D,gBAAuB,CAAC;IAExB;;OAEG;IACH,MAAM,CAAC,WAAW;QAChB,IAAI,CAAC,gBAAgB,CAAC,QAAQ,EAAE,CAAC;YAC/B,gBAAgB,CAAC,QAAQ,GAAG,IAAI,gBAAgB,EAAE,CAAC;QACrD,CAAC;QACD,OAAO,gBAAgB,CAAC,QAAQ,CAAC;IACnC,CAAC;IAED;;OAEG;IACH,eAAe,CAAC,OAAwB;QACtC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAEzC,iCAAiC;QACjC,KAAK,MAAM,GAAG,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC;YACzC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,WAAW,EAAE,EAAE,OAAO,CAAC,CAAC;QACpD,CAAC;IACH,CAAC;IAED;;OAEG;IACH,iBAAiB,CAAC,IAAY;QAC5B,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACxC,IAAI,OAAO,EAAE,CAAC;YACZ,4BAA4B;YAC5B,KAAK,MAAM,GAAG,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC;gBACzC,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC;YAC9C,CAAC;YACD,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAC7B,CAAC;IACH,CAAC;IAED;;OAEG;IACH,UAAU,CAAC,IAAY;QACrB,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC;IACzC,CAAC;IAED;;OAEG;IACH,iBAAiB,CAAC,QAAgB;QAChC,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,WAAW,EAAE,CAAC;QACjD,MAAM,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAE3C,kDAAkD;QAClD,IAAI,OAAO,IAAI,OAAO,CAAC,YAAY,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC9C,OAAO,OAAO,CAAC;QACjB,CAAC;QAED,6BAA6B;QAC7B,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC;YAC7C,IAAI,OAAO,CAAC,YAAY,CAAC,QAAQ,CAAC,EAAE,CAAC;gBACnC,OAAO,OAAO,CAAC;YACjB,CAAC;QACH,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;OAEG;IACH,cAAc;QACZ,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;IAC5C,CAAC;IAED;;OAEG;IACH,sBAAsB;QACpB,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC,CAAC;IAC9C,CAAC;IAED;;OAEG;IACH,KAAK;QACH,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;QACtB,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC;IAC5B,CAAC;CACF"}