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.
- package/dist/adapters/GoAdapter.d.ts +53 -0
- package/dist/adapters/GoAdapter.d.ts.map +1 -0
- package/dist/adapters/GoAdapter.js +602 -0
- package/dist/adapters/GoAdapter.js.map +1 -0
- package/dist/adapters/GoConfig.d.ts +35 -0
- package/dist/adapters/GoConfig.d.ts.map +1 -0
- package/dist/adapters/GoConfig.js +155 -0
- package/dist/adapters/GoConfig.js.map +1 -0
- package/dist/adapters/LanguageAdapter.d.ts +135 -0
- package/dist/adapters/LanguageAdapter.d.ts.map +1 -0
- package/dist/adapters/LanguageAdapter.js +47 -0
- package/dist/adapters/LanguageAdapter.js.map +1 -0
- package/dist/adapters/TypeScriptAdapter.d.ts +43 -0
- package/dist/adapters/TypeScriptAdapter.d.ts.map +1 -0
- package/dist/adapters/TypeScriptAdapter.js +386 -0
- package/dist/adapters/TypeScriptAdapter.js.map +1 -0
- package/dist/adapters/UniversalAnalyzer.d.ts +42 -0
- package/dist/adapters/UniversalAnalyzer.d.ts.map +1 -0
- package/dist/adapters/UniversalAnalyzer.js +103 -0
- package/dist/adapters/UniversalAnalyzer.js.map +1 -0
- package/dist/adapters/UniversalSOLIDAnalyzer.d.ts +48 -0
- package/dist/adapters/UniversalSOLIDAnalyzer.d.ts.map +1 -0
- package/dist/adapters/UniversalSOLIDAnalyzer.js +178 -0
- package/dist/adapters/UniversalSOLIDAnalyzer.js.map +1 -0
- package/dist/adapters/solidAnalyzerCompat.d.ts +21 -0
- package/dist/adapters/solidAnalyzerCompat.d.ts.map +1 -0
- package/dist/adapters/solidAnalyzerCompat.js +78 -0
- package/dist/adapters/solidAnalyzerCompat.js.map +1 -0
- package/dist/analyzers/cross-language/APIContractAnalyzer.d.ts +103 -0
- package/dist/analyzers/cross-language/APIContractAnalyzer.d.ts.map +1 -0
- package/dist/analyzers/cross-language/APIContractAnalyzer.js +425 -0
- package/dist/analyzers/cross-language/APIContractAnalyzer.js.map +1 -0
- package/dist/analyzers/cross-language/CrossLanguageSOLIDAnalyzer.d.ts +117 -0
- package/dist/analyzers/cross-language/CrossLanguageSOLIDAnalyzer.d.ts.map +1 -0
- package/dist/analyzers/cross-language/CrossLanguageSOLIDAnalyzer.js +618 -0
- package/dist/analyzers/cross-language/CrossLanguageSOLIDAnalyzer.js.map +1 -0
- package/dist/analyzers/cross-language/DependencyGraphBuilder.d.ts +129 -0
- package/dist/analyzers/cross-language/DependencyGraphBuilder.d.ts.map +1 -0
- package/dist/analyzers/cross-language/DependencyGraphBuilder.js +473 -0
- package/dist/analyzers/cross-language/DependencyGraphBuilder.js.map +1 -0
- package/dist/analyzers/cross-language/SchemaValidator.d.ts +126 -0
- package/dist/analyzers/cross-language/SchemaValidator.d.ts.map +1 -0
- package/dist/analyzers/cross-language/SchemaValidator.js +522 -0
- package/dist/analyzers/cross-language/SchemaValidator.js.map +1 -0
- package/dist/analyzers/dataAccessAnalyzerCompat.d.ts +20 -0
- package/dist/analyzers/dataAccessAnalyzerCompat.d.ts.map +1 -0
- package/dist/analyzers/dataAccessAnalyzerCompat.js +59 -0
- package/dist/analyzers/dataAccessAnalyzerCompat.js.map +1 -0
- package/dist/analyzers/documentationAnalyzerCompat.d.ts +20 -0
- package/dist/analyzers/documentationAnalyzerCompat.d.ts.map +1 -0
- package/dist/analyzers/documentationAnalyzerCompat.js +52 -0
- package/dist/analyzers/documentationAnalyzerCompat.js.map +1 -0
- package/dist/analyzers/dryAnalyzerCompat.d.ts +20 -0
- package/dist/analyzers/dryAnalyzerCompat.d.ts.map +1 -0
- package/dist/analyzers/dryAnalyzerCompat.js +44 -0
- package/dist/analyzers/dryAnalyzerCompat.js.map +1 -0
- package/dist/analyzers/schemaAnalyzer.d.ts +21 -0
- package/dist/analyzers/schemaAnalyzer.d.ts.map +1 -0
- package/dist/analyzers/schemaAnalyzer.js +405 -0
- package/dist/analyzers/schemaAnalyzer.js.map +1 -0
- package/dist/analyzers/schemaAnalyzerCompat.d.ts +20 -0
- package/dist/analyzers/schemaAnalyzerCompat.d.ts.map +1 -0
- package/dist/analyzers/schemaAnalyzerCompat.js +69 -0
- package/dist/analyzers/schemaAnalyzerCompat.js.map +1 -0
- package/dist/analyzers/solidAnalyzerCompat.d.ts +20 -0
- package/dist/analyzers/solidAnalyzerCompat.d.ts.map +1 -0
- package/dist/analyzers/solidAnalyzerCompat.js +78 -0
- package/dist/analyzers/solidAnalyzerCompat.js.map +1 -0
- package/dist/analyzers/universal/UniversalDRYAnalyzer.d.ts +71 -0
- package/dist/analyzers/universal/UniversalDRYAnalyzer.d.ts.map +1 -0
- package/dist/analyzers/universal/UniversalDRYAnalyzer.js +276 -0
- package/dist/analyzers/universal/UniversalDRYAnalyzer.js.map +1 -0
- package/dist/analyzers/universal/UniversalDataAccessAnalyzer.d.ts +82 -0
- package/dist/analyzers/universal/UniversalDataAccessAnalyzer.d.ts.map +1 -0
- package/dist/analyzers/universal/UniversalDataAccessAnalyzer.js +489 -0
- package/dist/analyzers/universal/UniversalDataAccessAnalyzer.js.map +1 -0
- package/dist/analyzers/universal/UniversalDocumentationAnalyzer.d.ts +48 -0
- package/dist/analyzers/universal/UniversalDocumentationAnalyzer.d.ts.map +1 -0
- package/dist/analyzers/universal/UniversalDocumentationAnalyzer.js +175 -0
- package/dist/analyzers/universal/UniversalDocumentationAnalyzer.js.map +1 -0
- package/dist/analyzers/universal/UniversalSOLIDAnalyzer.d.ts +64 -0
- package/dist/analyzers/universal/UniversalSOLIDAnalyzer.d.ts.map +1 -0
- package/dist/analyzers/universal/UniversalSOLIDAnalyzer.js +286 -0
- package/dist/analyzers/universal/UniversalSOLIDAnalyzer.js.map +1 -0
- package/dist/analyzers/universal/UniversalSchemaAnalyzer.d.ts +119 -0
- package/dist/analyzers/universal/UniversalSchemaAnalyzer.d.ts.map +1 -0
- package/dist/analyzers/universal/UniversalSchemaAnalyzer.js +812 -0
- package/dist/analyzers/universal/UniversalSchemaAnalyzer.js.map +1 -0
- package/dist/auditRunner.d.ts.map +1 -1
- package/dist/auditRunner.js +23 -7
- package/dist/auditRunner.js.map +1 -1
- package/dist/codeIndexDB-enhanced.d.ts +80 -0
- package/dist/codeIndexDB-enhanced.d.ts.map +1 -0
- package/dist/codeIndexDB-enhanced.js +488 -0
- package/dist/codeIndexDB-enhanced.js.map +1 -0
- package/dist/codeIndexDb.d.ts +70 -1
- package/dist/codeIndexDb.d.ts.map +1 -1
- package/dist/codeIndexDb.js +199 -2
- package/dist/codeIndexDb.js.map +1 -1
- package/dist/config/defaults.js +1 -1
- package/dist/config/defaults.js.map +1 -1
- package/dist/languages/LanguageOrchestrator.d.ts +181 -0
- package/dist/languages/LanguageOrchestrator.d.ts.map +1 -0
- package/dist/languages/LanguageOrchestrator.js +365 -0
- package/dist/languages/LanguageOrchestrator.js.map +1 -0
- package/dist/languages/LanguageRegistry.d.ts +43 -0
- package/dist/languages/LanguageRegistry.d.ts.map +1 -0
- package/dist/languages/LanguageRegistry.js +86 -0
- package/dist/languages/LanguageRegistry.js.map +1 -0
- package/dist/languages/RuntimeManager.d.ts +181 -0
- package/dist/languages/RuntimeManager.d.ts.map +1 -0
- package/dist/languages/RuntimeManager.js +841 -0
- package/dist/languages/RuntimeManager.js.map +1 -0
- package/dist/languages/UniversalAnalyzer.d.ts +37 -0
- package/dist/languages/UniversalAnalyzer.d.ts.map +1 -0
- package/dist/languages/UniversalAnalyzer.js +101 -0
- package/dist/languages/UniversalAnalyzer.js.map +1 -0
- package/dist/languages/go/GoAdapter.d.ts +57 -0
- package/dist/languages/go/GoAdapter.d.ts.map +1 -0
- package/dist/languages/go/GoAdapter.js +360 -0
- package/dist/languages/go/GoAdapter.js.map +1 -0
- package/dist/languages/index.d.ts +13 -0
- package/dist/languages/index.d.ts.map +1 -0
- package/dist/languages/index.js +23 -0
- package/dist/languages/index.js.map +1 -0
- package/dist/languages/types.d.ts +182 -0
- package/dist/languages/types.d.ts.map +1 -0
- package/dist/languages/types.js +5 -0
- package/dist/languages/types.js.map +1 -0
- package/dist/languages/typescript/TypeScriptAdapter.d.ts +108 -0
- package/dist/languages/typescript/TypeScriptAdapter.d.ts.map +1 -0
- package/dist/languages/typescript/TypeScriptAdapter.js +567 -0
- package/dist/languages/typescript/TypeScriptAdapter.js.map +1 -0
- package/dist/languages/typescript/test-extraction.d.ts +2 -0
- package/dist/languages/typescript/test-extraction.d.ts.map +1 -0
- package/dist/languages/typescript/test-extraction.js +36 -0
- package/dist/languages/typescript/test-extraction.js.map +1 -0
- package/dist/mcp-hybrid.d.ts +10 -0
- package/dist/mcp-hybrid.d.ts.map +1 -0
- package/dist/mcp-hybrid.js +41 -0
- package/dist/mcp-hybrid.js.map +1 -0
- package/dist/mcp-index.d.ts +11 -0
- package/dist/mcp-index.d.ts.map +1 -0
- package/dist/mcp-index.js +101 -0
- package/dist/mcp-index.js.map +1 -0
- package/dist/mcp-tools/workflowGuide.d.ts.map +1 -1
- package/dist/mcp-tools/workflowGuide.js +67 -10
- package/dist/mcp-tools/workflowGuide.js.map +1 -1
- package/dist/mcp-tools-shared.d.ts +49 -0
- package/dist/mcp-tools-shared.d.ts.map +1 -0
- package/dist/mcp-tools-shared.js +1282 -0
- package/dist/mcp-tools-shared.js.map +1 -0
- package/dist/mcp-ui-server.d.ts +27 -0
- package/dist/mcp-ui-server.d.ts.map +1 -0
- package/dist/mcp-ui-server.js +484 -0
- package/dist/mcp-ui-server.js.map +1 -0
- package/dist/mcp-ui-simple.d.ts +27 -0
- package/dist/mcp-ui-simple.d.ts.map +1 -0
- package/dist/mcp-ui-simple.js +425 -0
- package/dist/mcp-ui-simple.js.map +1 -0
- package/dist/mcp.js +7 -4
- package/dist/mcp.js.map +1 -1
- package/dist/services/SchemaParser.d.ts +89 -0
- package/dist/services/SchemaParser.d.ts.map +1 -0
- package/dist/services/SchemaParser.js +434 -0
- package/dist/services/SchemaParser.js.map +1 -0
- package/dist/types/crossLanguage.d.ts +267 -0
- package/dist/types/crossLanguage.d.ts.map +1 -0
- package/dist/types/crossLanguage.js +6 -0
- package/dist/types/crossLanguage.js.map +1 -0
- package/dist/types.d.ts +128 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +1 -1
- package/dist/utils/fileDiscovery.d.ts +6 -0
- package/dist/utils/fileDiscovery.d.ts.map +1 -1
- package/dist/utils/fileDiscovery.js +12 -1
- package/dist/utils/fileDiscovery.js.map +1 -1
- package/examples/schema-example.json +364 -0
- package/examples/schema-example.yaml +137 -0
- 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"}
|