code-auditor-mcp 1.20.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 (180) 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/schemaAnalyzer.d.ts +21 -0
  58. package/dist/analyzers/schemaAnalyzer.d.ts.map +1 -0
  59. package/dist/analyzers/schemaAnalyzer.js +405 -0
  60. package/dist/analyzers/schemaAnalyzer.js.map +1 -0
  61. package/dist/analyzers/schemaAnalyzerCompat.d.ts +20 -0
  62. package/dist/analyzers/schemaAnalyzerCompat.d.ts.map +1 -0
  63. package/dist/analyzers/schemaAnalyzerCompat.js +69 -0
  64. package/dist/analyzers/schemaAnalyzerCompat.js.map +1 -0
  65. package/dist/analyzers/solidAnalyzerCompat.d.ts +20 -0
  66. package/dist/analyzers/solidAnalyzerCompat.d.ts.map +1 -0
  67. package/dist/analyzers/solidAnalyzerCompat.js +78 -0
  68. package/dist/analyzers/solidAnalyzerCompat.js.map +1 -0
  69. package/dist/analyzers/universal/UniversalDRYAnalyzer.d.ts +71 -0
  70. package/dist/analyzers/universal/UniversalDRYAnalyzer.d.ts.map +1 -0
  71. package/dist/analyzers/universal/UniversalDRYAnalyzer.js +276 -0
  72. package/dist/analyzers/universal/UniversalDRYAnalyzer.js.map +1 -0
  73. package/dist/analyzers/universal/UniversalDataAccessAnalyzer.d.ts +82 -0
  74. package/dist/analyzers/universal/UniversalDataAccessAnalyzer.d.ts.map +1 -0
  75. package/dist/analyzers/universal/UniversalDataAccessAnalyzer.js +489 -0
  76. package/dist/analyzers/universal/UniversalDataAccessAnalyzer.js.map +1 -0
  77. package/dist/analyzers/universal/UniversalDocumentationAnalyzer.d.ts +48 -0
  78. package/dist/analyzers/universal/UniversalDocumentationAnalyzer.d.ts.map +1 -0
  79. package/dist/analyzers/universal/UniversalDocumentationAnalyzer.js +175 -0
  80. package/dist/analyzers/universal/UniversalDocumentationAnalyzer.js.map +1 -0
  81. package/dist/analyzers/universal/UniversalSOLIDAnalyzer.d.ts +64 -0
  82. package/dist/analyzers/universal/UniversalSOLIDAnalyzer.d.ts.map +1 -0
  83. package/dist/analyzers/universal/UniversalSOLIDAnalyzer.js +286 -0
  84. package/dist/analyzers/universal/UniversalSOLIDAnalyzer.js.map +1 -0
  85. package/dist/analyzers/universal/UniversalSchemaAnalyzer.d.ts +119 -0
  86. package/dist/analyzers/universal/UniversalSchemaAnalyzer.d.ts.map +1 -0
  87. package/dist/analyzers/universal/UniversalSchemaAnalyzer.js +812 -0
  88. package/dist/analyzers/universal/UniversalSchemaAnalyzer.js.map +1 -0
  89. package/dist/auditRunner.d.ts.map +1 -1
  90. package/dist/auditRunner.js +23 -7
  91. package/dist/auditRunner.js.map +1 -1
  92. package/dist/codeIndexDB-enhanced.d.ts +80 -0
  93. package/dist/codeIndexDB-enhanced.d.ts.map +1 -0
  94. package/dist/codeIndexDB-enhanced.js +488 -0
  95. package/dist/codeIndexDB-enhanced.js.map +1 -0
  96. package/dist/codeIndexDb.d.ts +70 -1
  97. package/dist/codeIndexDb.d.ts.map +1 -1
  98. package/dist/codeIndexDb.js +199 -2
  99. package/dist/codeIndexDb.js.map +1 -1
  100. package/dist/config/defaults.js +1 -1
  101. package/dist/config/defaults.js.map +1 -1
  102. package/dist/languages/LanguageOrchestrator.d.ts +181 -0
  103. package/dist/languages/LanguageOrchestrator.d.ts.map +1 -0
  104. package/dist/languages/LanguageOrchestrator.js +365 -0
  105. package/dist/languages/LanguageOrchestrator.js.map +1 -0
  106. package/dist/languages/LanguageRegistry.d.ts +43 -0
  107. package/dist/languages/LanguageRegistry.d.ts.map +1 -0
  108. package/dist/languages/LanguageRegistry.js +86 -0
  109. package/dist/languages/LanguageRegistry.js.map +1 -0
  110. package/dist/languages/RuntimeManager.d.ts +181 -0
  111. package/dist/languages/RuntimeManager.d.ts.map +1 -0
  112. package/dist/languages/RuntimeManager.js +841 -0
  113. package/dist/languages/RuntimeManager.js.map +1 -0
  114. package/dist/languages/UniversalAnalyzer.d.ts +37 -0
  115. package/dist/languages/UniversalAnalyzer.d.ts.map +1 -0
  116. package/dist/languages/UniversalAnalyzer.js +101 -0
  117. package/dist/languages/UniversalAnalyzer.js.map +1 -0
  118. package/dist/languages/go/GoAdapter.d.ts +57 -0
  119. package/dist/languages/go/GoAdapter.d.ts.map +1 -0
  120. package/dist/languages/go/GoAdapter.js +360 -0
  121. package/dist/languages/go/GoAdapter.js.map +1 -0
  122. package/dist/languages/index.d.ts +13 -0
  123. package/dist/languages/index.d.ts.map +1 -0
  124. package/dist/languages/index.js +23 -0
  125. package/dist/languages/index.js.map +1 -0
  126. package/dist/languages/types.d.ts +182 -0
  127. package/dist/languages/types.d.ts.map +1 -0
  128. package/dist/languages/types.js +5 -0
  129. package/dist/languages/types.js.map +1 -0
  130. package/dist/languages/typescript/TypeScriptAdapter.d.ts +108 -0
  131. package/dist/languages/typescript/TypeScriptAdapter.d.ts.map +1 -0
  132. package/dist/languages/typescript/TypeScriptAdapter.js +567 -0
  133. package/dist/languages/typescript/TypeScriptAdapter.js.map +1 -0
  134. package/dist/languages/typescript/test-extraction.d.ts +2 -0
  135. package/dist/languages/typescript/test-extraction.d.ts.map +1 -0
  136. package/dist/languages/typescript/test-extraction.js +36 -0
  137. package/dist/languages/typescript/test-extraction.js.map +1 -0
  138. package/dist/mcp-hybrid.d.ts +10 -0
  139. package/dist/mcp-hybrid.d.ts.map +1 -0
  140. package/dist/mcp-hybrid.js +41 -0
  141. package/dist/mcp-hybrid.js.map +1 -0
  142. package/dist/mcp-index.d.ts +11 -0
  143. package/dist/mcp-index.d.ts.map +1 -0
  144. package/dist/mcp-index.js +101 -0
  145. package/dist/mcp-index.js.map +1 -0
  146. package/dist/mcp-tools/workflowGuide.d.ts.map +1 -1
  147. package/dist/mcp-tools/workflowGuide.js +67 -10
  148. package/dist/mcp-tools/workflowGuide.js.map +1 -1
  149. package/dist/mcp-tools-shared.d.ts +49 -0
  150. package/dist/mcp-tools-shared.d.ts.map +1 -0
  151. package/dist/mcp-tools-shared.js +1282 -0
  152. package/dist/mcp-tools-shared.js.map +1 -0
  153. package/dist/mcp-ui-server.d.ts +27 -0
  154. package/dist/mcp-ui-server.d.ts.map +1 -0
  155. package/dist/mcp-ui-server.js +484 -0
  156. package/dist/mcp-ui-server.js.map +1 -0
  157. package/dist/mcp-ui-simple.d.ts +27 -0
  158. package/dist/mcp-ui-simple.d.ts.map +1 -0
  159. package/dist/mcp-ui-simple.js +425 -0
  160. package/dist/mcp-ui-simple.js.map +1 -0
  161. package/dist/mcp.js +7 -4
  162. package/dist/mcp.js.map +1 -1
  163. package/dist/services/SchemaParser.d.ts +89 -0
  164. package/dist/services/SchemaParser.d.ts.map +1 -0
  165. package/dist/services/SchemaParser.js +434 -0
  166. package/dist/services/SchemaParser.js.map +1 -0
  167. package/dist/types/crossLanguage.d.ts +267 -0
  168. package/dist/types/crossLanguage.d.ts.map +1 -0
  169. package/dist/types/crossLanguage.js +6 -0
  170. package/dist/types/crossLanguage.js.map +1 -0
  171. package/dist/types.d.ts +128 -0
  172. package/dist/types.d.ts.map +1 -1
  173. package/dist/types.js.map +1 -1
  174. package/dist/utils/fileDiscovery.d.ts +6 -0
  175. package/dist/utils/fileDiscovery.d.ts.map +1 -1
  176. package/dist/utils/fileDiscovery.js +12 -1
  177. package/dist/utils/fileDiscovery.js.map +1 -1
  178. package/examples/schema-example.json +364 -0
  179. package/examples/schema-example.yaml +137 -0
  180. package/package.json +10 -3
@@ -0,0 +1,181 @@
1
+ /**
2
+ * Language Orchestrator
3
+ * Coordinates multiple language analyzers and merges results
4
+ */
5
+ import { RuntimeManager } from './RuntimeManager.js';
6
+ import { CodeIndexDB } from '../codeIndexDB.js';
7
+ import { Violation } from '../types.js';
8
+ export interface PolyglotAnalysisOptions {
9
+ languages?: string[];
10
+ autoDetect?: boolean;
11
+ analyzers?: string[];
12
+ minSeverity?: 'info' | 'warning' | 'critical';
13
+ enableCrossLanguageAnalysis?: boolean;
14
+ buildCrossReferences?: boolean;
15
+ validateAPIContracts?: boolean;
16
+ maxConcurrency?: number;
17
+ timeout?: number;
18
+ updateIndex?: boolean;
19
+ indexFunctions?: boolean;
20
+ includeMetrics?: boolean;
21
+ generateDependencyGraph?: boolean;
22
+ }
23
+ export interface PolyglotAnalysisResult {
24
+ violations: Violation[];
25
+ errors: any[];
26
+ crossLanguageViolations: CrossLanguageViolation[];
27
+ dependencyGraph?: DependencyGraph;
28
+ apiContracts?: APIContractAnalysis[];
29
+ metrics: PolyglotMetrics;
30
+ languageStats: Map<string, LanguageStats>;
31
+ indexEntries?: any[];
32
+ crossReferences?: CrossReference[];
33
+ }
34
+ export interface CrossLanguageViolation extends Violation {
35
+ crossLanguageType: 'api-mismatch' | 'type-mismatch' | 'contract-violation' | 'unused-export';
36
+ relatedFiles: string[];
37
+ relatedLanguages: string[];
38
+ }
39
+ export interface DependencyGraph {
40
+ nodes: DependencyNode[];
41
+ edges: DependencyEdge[];
42
+ cycles?: DependencyCycle[];
43
+ metrics?: DependencyMetrics;
44
+ }
45
+ export interface DependencyNode {
46
+ id: string;
47
+ name: string;
48
+ language: string;
49
+ type: string;
50
+ file: string;
51
+ weight?: number;
52
+ cluster?: string;
53
+ }
54
+ export interface DependencyEdge {
55
+ from: string;
56
+ to: string;
57
+ type: string;
58
+ protocol?: string;
59
+ weight?: number;
60
+ }
61
+ export interface DependencyCycle {
62
+ nodes: string[];
63
+ severity: 'warning' | 'critical';
64
+ suggestion?: string;
65
+ }
66
+ export interface DependencyMetrics {
67
+ totalNodes: number;
68
+ totalEdges: number;
69
+ cycleCount: number;
70
+ averageDepth: number;
71
+ maxDepth: number;
72
+ stronglyConnectedComponents: number;
73
+ }
74
+ export interface APIContractAnalysis {
75
+ endpoint: string;
76
+ method: string;
77
+ frontendUsage: any[];
78
+ backendImplementation: any;
79
+ mismatches: string[];
80
+ }
81
+ export interface PolyglotMetrics {
82
+ totalFiles: number;
83
+ totalViolations: number;
84
+ languagesAnalyzed: string[];
85
+ executionTime: number;
86
+ crossLanguageReferences: number;
87
+ apiContractsChecked: number;
88
+ }
89
+ export interface LanguageStats {
90
+ filesAnalyzed: number;
91
+ violations: number;
92
+ functions: number;
93
+ classes: number;
94
+ interfaces: number;
95
+ executionTime: number;
96
+ }
97
+ export interface CrossReference {
98
+ sourceId: string;
99
+ targetId: string;
100
+ type: 'calls' | 'implements' | 'api-call';
101
+ sourceLanguage: string;
102
+ targetLanguage: string;
103
+ confidence: number;
104
+ }
105
+ export declare class LanguageOrchestrator {
106
+ private runtimeManager;
107
+ private codeIndex;
108
+ constructor(runtimeManager: RuntimeManager, codeIndex: CodeIndexDB);
109
+ /**
110
+ * Analyze a polyglot project
111
+ */
112
+ analyzePolyglotProject(projectPath: string, options?: PolyglotAnalysisOptions): Promise<PolyglotAnalysisResult>;
113
+ /**
114
+ * Discover files and group by language
115
+ */
116
+ private discoverAndGroupFiles;
117
+ /**
118
+ * Detect programming language from file extension
119
+ */
120
+ private detectLanguage;
121
+ /**
122
+ * Select which languages to analyze based on options and availability
123
+ */
124
+ private selectLanguages;
125
+ /**
126
+ * Map language names to runtime names
127
+ */
128
+ private mapLanguageToRuntime;
129
+ /**
130
+ * Analyze files for a specific language
131
+ */
132
+ private analyzeLanguage;
133
+ /**
134
+ * Merge results from multiple language analyses
135
+ */
136
+ private mergeLanguageResults;
137
+ /**
138
+ * Build cross-references between languages
139
+ */
140
+ private buildCrossReferences;
141
+ /**
142
+ * Detect violations that span multiple languages
143
+ */
144
+ private detectCrossLanguageViolations;
145
+ /**
146
+ * Validate API contracts between frontend and backend
147
+ */
148
+ private validateAPIContracts;
149
+ /**
150
+ * Generate dependency graph across languages
151
+ */
152
+ private generateDependencyGraph;
153
+ /**
154
+ * Update the unified code index
155
+ */
156
+ private updateCodeIndex;
157
+ /**
158
+ * Get orchestrator statistics
159
+ */
160
+ getStats(): {
161
+ runtimes: {
162
+ total: number;
163
+ available: number;
164
+ withAnalyzers: number;
165
+ runtimes: {
166
+ [k: string]: {
167
+ available: boolean;
168
+ version: string;
169
+ hasAnalyzer: boolean;
170
+ };
171
+ };
172
+ };
173
+ capabilities: {
174
+ crossLanguageAnalysis: boolean;
175
+ apiContractValidation: boolean;
176
+ dependencyGraphGeneration: boolean;
177
+ unifiedIndexing: boolean;
178
+ };
179
+ };
180
+ }
181
+ //# sourceMappingURL=LanguageOrchestrator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LanguageOrchestrator.d.ts","sourceRoot":"","sources":["../../src/languages/LanguageOrchestrator.ts"],"names":[],"mappings":"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"}
@@ -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"}