atlas-pipeline-mcp 1.0.20 → 1.0.22
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/mcp.js +191 -0
- package/dist/mcp.js.map +1 -1
- package/dist/tools/advanced-testgen.d.ts +93 -0
- package/dist/tools/advanced-testgen.d.ts.map +1 -0
- package/dist/tools/advanced-testgen.js +382 -0
- package/dist/tools/advanced-testgen.js.map +1 -0
- package/dist/tools/architecture-advisor.d.ts +174 -0
- package/dist/tools/architecture-advisor.d.ts.map +1 -0
- package/dist/tools/architecture-advisor.js +509 -0
- package/dist/tools/architecture-advisor.js.map +1 -0
- package/dist/tools/code-migration.d.ts +86 -0
- package/dist/tools/code-migration.d.ts.map +1 -0
- package/dist/tools/code-migration.js +339 -0
- package/dist/tools/code-migration.js.map +1 -0
- package/dist/tools/dashboard.d.ts +107 -0
- package/dist/tools/dashboard.d.ts.map +1 -0
- package/dist/tools/dashboard.js +544 -0
- package/dist/tools/dashboard.js.map +1 -0
- package/dist/tools/dependencies.d.ts +105 -0
- package/dist/tools/dependencies.d.ts.map +1 -0
- package/dist/tools/dependencies.js +410 -0
- package/dist/tools/dependencies.js.map +1 -0
- package/dist/tools/ml-predictor.d.ts +84 -0
- package/dist/tools/ml-predictor.d.ts.map +1 -0
- package/dist/tools/ml-predictor.js +407 -0
- package/dist/tools/ml-predictor.js.map +1 -0
- package/dist/tools/profiler.d.ts +83 -0
- package/dist/tools/profiler.d.ts.map +1 -0
- package/dist/tools/profiler.js +385 -0
- package/dist/tools/profiler.js.map +1 -0
- package/dist/tools/rag-search.d.ts +88 -0
- package/dist/tools/rag-search.d.ts.map +1 -0
- package/dist/tools/rag-search.js +338 -0
- package/dist/tools/rag-search.js.map +1 -0
- package/dist/tools/refactor.d.ts +63 -0
- package/dist/tools/refactor.d.ts.map +1 -0
- package/dist/tools/refactor.js +308 -0
- package/dist/tools/refactor.js.map +1 -0
- package/dist/tools/review.d.ts +98 -0
- package/dist/tools/review.d.ts.map +1 -0
- package/dist/tools/review.js +428 -0
- package/dist/tools/review.js.map +1 -0
- package/package.json +2 -2
|
@@ -0,0 +1,410 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Atlas Server - Dependency Analysis and Management Tool
|
|
3
|
+
*
|
|
4
|
+
* Comprehensive dependency management and analysis:
|
|
5
|
+
* - Dependency graph visualization
|
|
6
|
+
* - Circular dependency detection
|
|
7
|
+
* - Unused dependency identification
|
|
8
|
+
* - Security vulnerability scanning
|
|
9
|
+
* - Version compatibility checking
|
|
10
|
+
* - License compliance verification
|
|
11
|
+
* - Bundle size impact analysis
|
|
12
|
+
* - Upgrade path recommendations
|
|
13
|
+
*
|
|
14
|
+
* @module dependencies
|
|
15
|
+
* @author Nishant Unavane
|
|
16
|
+
* @version 1.0.0
|
|
17
|
+
*/
|
|
18
|
+
import { promises as fs } from 'fs';
|
|
19
|
+
import { join } from 'path';
|
|
20
|
+
import { logger, createTimer } from '../utils.js';
|
|
21
|
+
import { z } from 'zod';
|
|
22
|
+
// ============================================================================
|
|
23
|
+
// Validation Schema
|
|
24
|
+
// ============================================================================
|
|
25
|
+
const DependencyAnalysisOptionsSchema = z.object({
|
|
26
|
+
projectPath: z.string().min(1),
|
|
27
|
+
checkSecurity: z.boolean().optional(),
|
|
28
|
+
checkLicenses: z.boolean().optional(),
|
|
29
|
+
findUnused: z.boolean().optional(),
|
|
30
|
+
analyzeBundleSize: z.boolean().optional(),
|
|
31
|
+
suggestUpgrades: z.boolean().optional(),
|
|
32
|
+
});
|
|
33
|
+
// ============================================================================
|
|
34
|
+
// Package.json Parsing
|
|
35
|
+
// ============================================================================
|
|
36
|
+
/**
|
|
37
|
+
* Read and parse package.json
|
|
38
|
+
*/
|
|
39
|
+
async function readPackageJson(projectPath) {
|
|
40
|
+
try {
|
|
41
|
+
const pkgPath = join(projectPath, 'package.json');
|
|
42
|
+
const content = await fs.readFile(pkgPath, 'utf-8');
|
|
43
|
+
const pkg = JSON.parse(content);
|
|
44
|
+
return {
|
|
45
|
+
dependencies: pkg.dependencies || {},
|
|
46
|
+
devDependencies: pkg.devDependencies || {},
|
|
47
|
+
peerDependencies: pkg.peerDependencies || {},
|
|
48
|
+
name: pkg.name || 'unknown',
|
|
49
|
+
version: pkg.version || '0.0.0',
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
catch (error) {
|
|
53
|
+
throw new Error(`Failed to read package.json: ${error instanceof Error ? error.message : 'Unknown error'}`);
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Read package-lock.json for dependency tree
|
|
58
|
+
*/
|
|
59
|
+
async function readPackageLock(projectPath) {
|
|
60
|
+
try {
|
|
61
|
+
const lockPath = join(projectPath, 'package-lock.json');
|
|
62
|
+
const content = await fs.readFile(lockPath, 'utf-8');
|
|
63
|
+
return JSON.parse(content);
|
|
64
|
+
}
|
|
65
|
+
catch (error) {
|
|
66
|
+
logger.warn('No package-lock.json found - dependency tree will be incomplete');
|
|
67
|
+
return null;
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
// ============================================================================
|
|
71
|
+
// Dependency Graph Building
|
|
72
|
+
// ============================================================================
|
|
73
|
+
/**
|
|
74
|
+
* Build dependency graph from package-lock.json
|
|
75
|
+
*/
|
|
76
|
+
function buildDependencyGraph(packageLock) {
|
|
77
|
+
const nodes = [];
|
|
78
|
+
const edges = [];
|
|
79
|
+
const seen = new Set();
|
|
80
|
+
function traverse(name, version, depth, packages) {
|
|
81
|
+
const id = `${name}@${version}`;
|
|
82
|
+
if (seen.has(id))
|
|
83
|
+
return;
|
|
84
|
+
seen.add(id);
|
|
85
|
+
nodes.push({ id, name, version, depth });
|
|
86
|
+
if (packages && packages[name]) {
|
|
87
|
+
const pkg = packages[name];
|
|
88
|
+
const deps = pkg.dependencies || {};
|
|
89
|
+
for (const [depName, depVersion] of Object.entries(deps)) {
|
|
90
|
+
const depId = `${depName}@${depVersion}`;
|
|
91
|
+
edges.push({ from: id, to: depId });
|
|
92
|
+
traverse(depName, depVersion, depth + 1, packages);
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
if (packageLock?.packages) {
|
|
97
|
+
const rootDeps = packageLock.packages['']?.dependencies || {};
|
|
98
|
+
for (const [name, version] of Object.entries(rootDeps)) {
|
|
99
|
+
traverse(name, version, 0, packageLock.packages);
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
// Detect circular dependencies
|
|
103
|
+
const circular = detectCircularDependencies(edges);
|
|
104
|
+
return {
|
|
105
|
+
nodes,
|
|
106
|
+
edges,
|
|
107
|
+
circularDependencies: circular,
|
|
108
|
+
maxDepth: Math.max(...nodes.map(n => n.depth), 0),
|
|
109
|
+
totalNodes: nodes.length,
|
|
110
|
+
};
|
|
111
|
+
}
|
|
112
|
+
/**
|
|
113
|
+
* Detect circular dependencies using DFS
|
|
114
|
+
*/
|
|
115
|
+
function detectCircularDependencies(edges) {
|
|
116
|
+
const adjList = new Map();
|
|
117
|
+
// Build adjacency list
|
|
118
|
+
for (const edge of edges) {
|
|
119
|
+
if (!adjList.has(edge.from)) {
|
|
120
|
+
adjList.set(edge.from, []);
|
|
121
|
+
}
|
|
122
|
+
adjList.get(edge.from).push(edge.to);
|
|
123
|
+
}
|
|
124
|
+
const circular = [];
|
|
125
|
+
const visiting = new Set();
|
|
126
|
+
const visited = new Set();
|
|
127
|
+
function dfs(node, path) {
|
|
128
|
+
if (visiting.has(node)) {
|
|
129
|
+
// Found cycle
|
|
130
|
+
const cycleStart = path.indexOf(node);
|
|
131
|
+
if (cycleStart !== -1) {
|
|
132
|
+
circular.push(path.slice(cycleStart));
|
|
133
|
+
}
|
|
134
|
+
return;
|
|
135
|
+
}
|
|
136
|
+
if (visited.has(node))
|
|
137
|
+
return;
|
|
138
|
+
visiting.add(node);
|
|
139
|
+
path.push(node);
|
|
140
|
+
const neighbors = adjList.get(node) || [];
|
|
141
|
+
for (const neighbor of neighbors) {
|
|
142
|
+
dfs(neighbor, [...path]);
|
|
143
|
+
}
|
|
144
|
+
visiting.delete(node);
|
|
145
|
+
visited.add(node);
|
|
146
|
+
}
|
|
147
|
+
for (const node of adjList.keys()) {
|
|
148
|
+
if (!visited.has(node)) {
|
|
149
|
+
dfs(node, []);
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
return circular;
|
|
153
|
+
}
|
|
154
|
+
// ============================================================================
|
|
155
|
+
// Usage Detection
|
|
156
|
+
// ============================================================================
|
|
157
|
+
/**
|
|
158
|
+
* Find which dependencies are actually used in the codebase
|
|
159
|
+
*/
|
|
160
|
+
async function detectUsedDependencies(projectPath, dependencies) {
|
|
161
|
+
const used = new Set();
|
|
162
|
+
try {
|
|
163
|
+
// Search for import/require statements
|
|
164
|
+
const sourceFiles = await findSourceFiles(projectPath);
|
|
165
|
+
for (const file of sourceFiles) {
|
|
166
|
+
const content = await fs.readFile(file, 'utf-8');
|
|
167
|
+
for (const dep of dependencies) {
|
|
168
|
+
// Check for various import patterns
|
|
169
|
+
const patterns = [
|
|
170
|
+
new RegExp(`import .+ from ['"]${dep}['"]`, 'g'),
|
|
171
|
+
new RegExp(`import ['"]${dep}['"]`, 'g'),
|
|
172
|
+
new RegExp(`require\\(['"]${dep}['"]\\)`, 'g'),
|
|
173
|
+
new RegExp(`from ['"]${dep}/`, 'g'),
|
|
174
|
+
];
|
|
175
|
+
if (patterns.some(pattern => pattern.test(content))) {
|
|
176
|
+
used.add(dep);
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
catch (error) {
|
|
182
|
+
logger.warn({ error }, 'Failed to detect used dependencies');
|
|
183
|
+
}
|
|
184
|
+
return used;
|
|
185
|
+
}
|
|
186
|
+
/**
|
|
187
|
+
* Find all source files in project
|
|
188
|
+
*/
|
|
189
|
+
async function findSourceFiles(projectPath) {
|
|
190
|
+
const files = [];
|
|
191
|
+
async function scan(dir) {
|
|
192
|
+
try {
|
|
193
|
+
const entries = await fs.readdir(dir, { withFileTypes: true });
|
|
194
|
+
for (const entry of entries) {
|
|
195
|
+
const fullPath = join(dir, entry.name);
|
|
196
|
+
// Skip node_modules, dist, build
|
|
197
|
+
if (entry.isDirectory()) {
|
|
198
|
+
if (!['node_modules', 'dist', 'build', '.git'].includes(entry.name)) {
|
|
199
|
+
await scan(fullPath);
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
else if (entry.isFile()) {
|
|
203
|
+
// Include source files
|
|
204
|
+
if (entry.name.match(/\.(ts|tsx|js|jsx|mjs|cjs)$/)) {
|
|
205
|
+
files.push(fullPath);
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
catch (error) {
|
|
211
|
+
// Ignore errors for inaccessible directories
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
await scan(projectPath);
|
|
215
|
+
return files;
|
|
216
|
+
}
|
|
217
|
+
// ============================================================================
|
|
218
|
+
// Mock Security & License Data (In production, use real APIs)
|
|
219
|
+
// ============================================================================
|
|
220
|
+
/**
|
|
221
|
+
* Check for known vulnerabilities (mock - would use npm audit API)
|
|
222
|
+
*/
|
|
223
|
+
async function checkVulnerabilities(name, version) {
|
|
224
|
+
// In production: call npm audit API or Snyk API
|
|
225
|
+
// For now: return mock data for demonstration
|
|
226
|
+
const knownVulnerable = ['lodash', 'moment', 'request'];
|
|
227
|
+
if (knownVulnerable.includes(name)) {
|
|
228
|
+
return [{
|
|
229
|
+
severity: 'medium',
|
|
230
|
+
title: `Known vulnerability in ${name}`,
|
|
231
|
+
description: 'Mock vulnerability for demonstration',
|
|
232
|
+
fixedIn: '999.0.0',
|
|
233
|
+
cve: 'CVE-2021-XXXXX',
|
|
234
|
+
}];
|
|
235
|
+
}
|
|
236
|
+
return [];
|
|
237
|
+
}
|
|
238
|
+
/**
|
|
239
|
+
* Get package license (mock - would fetch from npm registry)
|
|
240
|
+
*/
|
|
241
|
+
async function getPackageLicense(name) {
|
|
242
|
+
// In production: fetch from npm registry
|
|
243
|
+
const commonLicenses = {
|
|
244
|
+
'express': 'MIT',
|
|
245
|
+
'react': 'MIT',
|
|
246
|
+
'vue': 'MIT',
|
|
247
|
+
'lodash': 'MIT',
|
|
248
|
+
'axios': 'MIT',
|
|
249
|
+
};
|
|
250
|
+
return commonLicenses[name] || 'Unknown';
|
|
251
|
+
}
|
|
252
|
+
// ============================================================================
|
|
253
|
+
// Main Analysis Function
|
|
254
|
+
// ============================================================================
|
|
255
|
+
/**
|
|
256
|
+
* Comprehensive dependency analysis
|
|
257
|
+
*/
|
|
258
|
+
export async function analyzeDependencies(options) {
|
|
259
|
+
const timer = createTimer();
|
|
260
|
+
const { projectPath, checkSecurity = true, checkLicenses = true, findUnused = true, analyzeBundleSize = true, suggestUpgrades = true, } = DependencyAnalysisOptionsSchema.parse(options);
|
|
261
|
+
logger.info({ projectPath }, 'Starting dependency analysis');
|
|
262
|
+
const warnings = [];
|
|
263
|
+
const issues = [];
|
|
264
|
+
const recommendations = [];
|
|
265
|
+
// Read package.json and package-lock.json
|
|
266
|
+
const pkg = await readPackageJson(projectPath);
|
|
267
|
+
const packageLock = await readPackageLock(projectPath);
|
|
268
|
+
const allDeps = {
|
|
269
|
+
...pkg.dependencies,
|
|
270
|
+
...pkg.devDependencies,
|
|
271
|
+
};
|
|
272
|
+
// Build dependency graph
|
|
273
|
+
const graph = packageLock ? buildDependencyGraph(packageLock) : {
|
|
274
|
+
nodes: [],
|
|
275
|
+
edges: [],
|
|
276
|
+
circularDependencies: [],
|
|
277
|
+
maxDepth: 0,
|
|
278
|
+
totalNodes: 0,
|
|
279
|
+
};
|
|
280
|
+
// Detect circular dependencies
|
|
281
|
+
if (graph.circularDependencies.length > 0) {
|
|
282
|
+
for (const cycle of graph.circularDependencies) {
|
|
283
|
+
issues.push({
|
|
284
|
+
type: 'circular-dependency',
|
|
285
|
+
severity: 'medium',
|
|
286
|
+
dependency: cycle[0] || 'unknown',
|
|
287
|
+
description: `Circular dependency detected: ${cycle.join(' → ')}`,
|
|
288
|
+
solution: 'Refactor to break the circular dependency',
|
|
289
|
+
});
|
|
290
|
+
}
|
|
291
|
+
}
|
|
292
|
+
// Find unused dependencies
|
|
293
|
+
const usedDeps = findUnused ? await detectUsedDependencies(projectPath, Object.keys(allDeps)) : new Set(Object.keys(allDeps));
|
|
294
|
+
// Analyze each dependency
|
|
295
|
+
const dependencies = [];
|
|
296
|
+
const devDependencies = [];
|
|
297
|
+
for (const [name, version] of Object.entries(pkg.dependencies)) {
|
|
298
|
+
const info = await analyzeSingleDependency(name, version, 'dependency', usedDeps, checkSecurity, checkLicenses);
|
|
299
|
+
dependencies.push(info);
|
|
300
|
+
if (!info.isUsed) {
|
|
301
|
+
issues.push({
|
|
302
|
+
type: 'unused-dependency',
|
|
303
|
+
severity: 'low',
|
|
304
|
+
dependency: name,
|
|
305
|
+
description: `${name} is not imported anywhere in the codebase`,
|
|
306
|
+
solution: `Remove with: npm uninstall ${name}`,
|
|
307
|
+
});
|
|
308
|
+
}
|
|
309
|
+
if (info.vulnerabilities && info.vulnerabilities.length > 0) {
|
|
310
|
+
for (const vuln of info.vulnerabilities) {
|
|
311
|
+
issues.push({
|
|
312
|
+
type: 'security-vulnerability',
|
|
313
|
+
severity: vuln.severity,
|
|
314
|
+
dependency: name,
|
|
315
|
+
description: vuln.description,
|
|
316
|
+
solution: vuln.fixedIn ? `Update to ${vuln.fixedIn}` : 'No fix available',
|
|
317
|
+
});
|
|
318
|
+
}
|
|
319
|
+
}
|
|
320
|
+
}
|
|
321
|
+
for (const [name, version] of Object.entries(pkg.devDependencies)) {
|
|
322
|
+
const info = await analyzeSingleDependency(name, version, 'devDependency', usedDeps, checkSecurity, checkLicenses);
|
|
323
|
+
devDependencies.push(info);
|
|
324
|
+
}
|
|
325
|
+
// Statistics
|
|
326
|
+
const statistics = {
|
|
327
|
+
totalDependencies: dependencies.length + devDependencies.length,
|
|
328
|
+
directDependencies: dependencies.length,
|
|
329
|
+
transitiveDependencies: graph.totalNodes - (dependencies.length + devDependencies.length),
|
|
330
|
+
unusedCount: [...dependencies, ...devDependencies].filter(d => !d.isUsed).length,
|
|
331
|
+
outdatedCount: [...dependencies, ...devDependencies].filter(d => d.updateAvailable).length,
|
|
332
|
+
vulnerableCount: issues.filter(i => i.type === 'security-vulnerability').length,
|
|
333
|
+
totalBundleSize: [...dependencies, ...devDependencies].reduce((sum, d) => sum + (d.size || 0), 0),
|
|
334
|
+
licenseBreakdown: {},
|
|
335
|
+
};
|
|
336
|
+
// License breakdown
|
|
337
|
+
for (const dep of [...dependencies, ...devDependencies]) {
|
|
338
|
+
if (dep.license) {
|
|
339
|
+
statistics.licenseBreakdown[dep.license] = (statistics.licenseBreakdown[dep.license] || 0) + 1;
|
|
340
|
+
}
|
|
341
|
+
}
|
|
342
|
+
// Generate recommendations
|
|
343
|
+
if (statistics.unusedCount > 0) {
|
|
344
|
+
recommendations.push({
|
|
345
|
+
priority: 7,
|
|
346
|
+
category: 'maintenance',
|
|
347
|
+
action: `Remove ${statistics.unusedCount} unused dependencies`,
|
|
348
|
+
reason: 'Reduces bundle size and attack surface',
|
|
349
|
+
estimatedImpact: 'Smaller bundle, faster installs',
|
|
350
|
+
});
|
|
351
|
+
}
|
|
352
|
+
if (statistics.vulnerableCount > 0) {
|
|
353
|
+
recommendations.push({
|
|
354
|
+
priority: 10,
|
|
355
|
+
category: 'security',
|
|
356
|
+
action: `Fix ${statistics.vulnerableCount} security vulnerabilities`,
|
|
357
|
+
reason: 'Critical security issues detected',
|
|
358
|
+
estimatedImpact: 'Eliminates known attack vectors',
|
|
359
|
+
});
|
|
360
|
+
}
|
|
361
|
+
if (graph.circularDependencies.length > 0) {
|
|
362
|
+
recommendations.push({
|
|
363
|
+
priority: 6,
|
|
364
|
+
category: 'maintenance',
|
|
365
|
+
action: `Resolve ${graph.circularDependencies.length} circular dependencies`,
|
|
366
|
+
reason: 'Can cause bundle issues and memory leaks',
|
|
367
|
+
estimatedImpact: 'Improved build reliability',
|
|
368
|
+
});
|
|
369
|
+
}
|
|
370
|
+
const executionTimeMs = timer.elapsed();
|
|
371
|
+
logger.info({
|
|
372
|
+
totalDeps: statistics.totalDependencies,
|
|
373
|
+
unused: statistics.unusedCount,
|
|
374
|
+
vulnerabilities: statistics.vulnerableCount,
|
|
375
|
+
executionTimeMs
|
|
376
|
+
}, 'Dependency analysis completed');
|
|
377
|
+
return {
|
|
378
|
+
projectPath,
|
|
379
|
+
dependencies,
|
|
380
|
+
devDependencies,
|
|
381
|
+
graph,
|
|
382
|
+
issues,
|
|
383
|
+
recommendations: recommendations.sort((a, b) => b.priority - a.priority),
|
|
384
|
+
statistics,
|
|
385
|
+
executionTimeMs,
|
|
386
|
+
warnings,
|
|
387
|
+
};
|
|
388
|
+
}
|
|
389
|
+
/**
|
|
390
|
+
* Analyze a single dependency
|
|
391
|
+
*/
|
|
392
|
+
async function analyzeSingleDependency(name, version, type, usedDeps, checkSecurity, checkLicenses) {
|
|
393
|
+
const vulnerabilities = checkSecurity ? await checkVulnerabilities(name, version) : [];
|
|
394
|
+
const license = checkLicenses ? await getPackageLicense(name) : undefined;
|
|
395
|
+
return {
|
|
396
|
+
name,
|
|
397
|
+
currentVersion: version,
|
|
398
|
+
type,
|
|
399
|
+
isUsed: usedDeps.has(name),
|
|
400
|
+
directDependents: [],
|
|
401
|
+
transitiveCount: 0,
|
|
402
|
+
vulnerabilities,
|
|
403
|
+
license,
|
|
404
|
+
};
|
|
405
|
+
}
|
|
406
|
+
// ============================================================================
|
|
407
|
+
// Export
|
|
408
|
+
// ============================================================================
|
|
409
|
+
export default analyzeDependencies;
|
|
410
|
+
//# sourceMappingURL=dependencies.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dependencies.js","sourceRoot":"","sources":["../../src/tools/dependencies.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Atlas Server - ML-Powered Bug & Performance Prediction
|
|
3
|
+
*
|
|
4
|
+
* Machine Learning based code analysis:
|
|
5
|
+
* - Bug probability prediction
|
|
6
|
+
* - Performance bottleneck detection
|
|
7
|
+
* - Code smell prediction using ML patterns
|
|
8
|
+
* - Maintenance effort estimation
|
|
9
|
+
* - Test coverage prediction
|
|
10
|
+
* - Regression risk analysis
|
|
11
|
+
* - Code churn correlation
|
|
12
|
+
* - Developer productivity insights
|
|
13
|
+
* - Technical debt quantification
|
|
14
|
+
* - Failure prediction based on historical patterns
|
|
15
|
+
*
|
|
16
|
+
* @module ml-predictor
|
|
17
|
+
* @author Nishant Unavane
|
|
18
|
+
* @version 1.0.0
|
|
19
|
+
*/
|
|
20
|
+
export interface MLPredictorOptions {
|
|
21
|
+
projectPath: string;
|
|
22
|
+
filePath?: string;
|
|
23
|
+
predictions?: PredictionType[];
|
|
24
|
+
modelType?: 'statistical' | 'llm' | 'hybrid';
|
|
25
|
+
confidenceThreshold?: number;
|
|
26
|
+
gitHistory?: boolean;
|
|
27
|
+
includeMetrics?: boolean;
|
|
28
|
+
}
|
|
29
|
+
export type PredictionType = 'bug-probability' | 'performance-issues' | 'maintenance-effort' | 'test-coverage' | 'regression-risk' | 'technical-debt' | 'code-churn' | 'failure-prediction';
|
|
30
|
+
export interface MLPredictorResult {
|
|
31
|
+
filePath: string;
|
|
32
|
+
predictions: Prediction[];
|
|
33
|
+
overallRisk: RiskLevel;
|
|
34
|
+
confidence: number;
|
|
35
|
+
recommendations: string[];
|
|
36
|
+
features: CodeFeatures;
|
|
37
|
+
analysisTimeMs: number;
|
|
38
|
+
modelUsed: string;
|
|
39
|
+
}
|
|
40
|
+
export interface Prediction {
|
|
41
|
+
type: PredictionType;
|
|
42
|
+
probability: number;
|
|
43
|
+
confidence: number;
|
|
44
|
+
severity: 'low' | 'medium' | 'high' | 'critical';
|
|
45
|
+
explanation: string;
|
|
46
|
+
evidence: Evidence[];
|
|
47
|
+
mitigation: string[];
|
|
48
|
+
}
|
|
49
|
+
export interface Evidence {
|
|
50
|
+
location: {
|
|
51
|
+
line: number;
|
|
52
|
+
column?: number;
|
|
53
|
+
};
|
|
54
|
+
snippet: string;
|
|
55
|
+
reason: string;
|
|
56
|
+
weight: number;
|
|
57
|
+
}
|
|
58
|
+
export type RiskLevel = 'minimal' | 'low' | 'moderate' | 'high' | 'critical';
|
|
59
|
+
export interface CodeFeatures {
|
|
60
|
+
cyclomaticComplexity: number;
|
|
61
|
+
cognitiveComplexity: number;
|
|
62
|
+
linesOfCode: number;
|
|
63
|
+
functionCount: number;
|
|
64
|
+
classCount: number;
|
|
65
|
+
nestingDepth: number;
|
|
66
|
+
commentRatio: number;
|
|
67
|
+
testCoverage: number;
|
|
68
|
+
commitCount: number;
|
|
69
|
+
authorCount: number;
|
|
70
|
+
churnRate: number;
|
|
71
|
+
patterns: DetectedPattern[];
|
|
72
|
+
}
|
|
73
|
+
export interface DetectedPattern {
|
|
74
|
+
name: string;
|
|
75
|
+
type: 'anti-pattern' | 'design-pattern' | 'code-smell';
|
|
76
|
+
confidence: number;
|
|
77
|
+
occurrences: number;
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* ML-powered code analysis and prediction
|
|
81
|
+
*/
|
|
82
|
+
export declare function predictCodeIssues(options: MLPredictorOptions): Promise<MLPredictorResult>;
|
|
83
|
+
export default predictCodeIssues;
|
|
84
|
+
//# sourceMappingURL=ml-predictor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ml-predictor.d.ts","sourceRoot":"","sources":["../../src/tools/ml-predictor.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAYH,MAAM,WAAW,kBAAkB;IACjC,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAGlB,WAAW,CAAC,EAAE,cAAc,EAAE,CAAC;IAG/B,SAAS,CAAC,EAAE,aAAa,GAAG,KAAK,GAAG,QAAQ,CAAC;IAC7C,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAG7B,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED,MAAM,MAAM,cAAc,GACtB,iBAAiB,GACjB,oBAAoB,GACpB,oBAAoB,GACpB,eAAe,GACf,iBAAiB,GACjB,gBAAgB,GAChB,YAAY,GACZ,oBAAoB,CAAC;AAEzB,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,UAAU,EAAE,CAAC;IAC1B,WAAW,EAAE,SAAS,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,QAAQ,EAAE,YAAY,CAAC;IACvB,cAAc,EAAE,MAAM,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,cAAc,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,GAAG,UAAU,CAAC;IACjD,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,QAAQ,EAAE,CAAC;IACrB,UAAU,EAAE,MAAM,EAAE,CAAC;CACtB;AAED,MAAM,WAAW,QAAQ;IACvB,QAAQ,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAC5C,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,MAAM,SAAS,GAAG,SAAS,GAAG,KAAK,GAAG,UAAU,GAAG,MAAM,GAAG,UAAU,CAAC;AAE7E,MAAM,WAAW,YAAY;IAE3B,oBAAoB,EAAE,MAAM,CAAC;IAC7B,mBAAmB,EAAE,MAAM,CAAC;IAC5B,WAAW,EAAE,MAAM,CAAC;IAGpB,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IAGrB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IAGrB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAGlB,QAAQ,EAAE,eAAe,EAAE,CAAC;CAC7B;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,cAAc,GAAG,gBAAgB,GAAG,YAAY,CAAC;IACvD,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;CACrB;AA2WD;;GAEG;AACH,wBAAsB,iBAAiB,CAAC,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAoF/F;AAMD,eAAe,iBAAiB,CAAC"}
|