atlas-pipeline-mcp 1.0.20 → 1.0.21
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/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/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/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 +1 -1
|
@@ -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,83 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Atlas Server - Performance Profiling and Analysis Tool
|
|
3
|
+
*
|
|
4
|
+
* Advanced performance profiling for code optimization:
|
|
5
|
+
* - Time complexity analysis
|
|
6
|
+
* - Space complexity analysis
|
|
7
|
+
* - Benchmark generation
|
|
8
|
+
* - Memory leak detection
|
|
9
|
+
* - CPU hotspot identification
|
|
10
|
+
* - I/O bottleneck detection
|
|
11
|
+
* - Algorithm efficiency suggestions
|
|
12
|
+
* - Big-O notation analysis
|
|
13
|
+
*
|
|
14
|
+
* @module profiler
|
|
15
|
+
* @author Nishant Unavane
|
|
16
|
+
* @version 1.0.0
|
|
17
|
+
*/
|
|
18
|
+
export interface ProfileOptions {
|
|
19
|
+
code: string;
|
|
20
|
+
language: string;
|
|
21
|
+
filePath?: string;
|
|
22
|
+
analyzeTime?: boolean;
|
|
23
|
+
analyzeSpace?: boolean;
|
|
24
|
+
detectLeaks?: boolean;
|
|
25
|
+
identifyHotspots?: boolean;
|
|
26
|
+
generateBenchmark?: boolean;
|
|
27
|
+
inputSizes?: number[];
|
|
28
|
+
expectedInputSize?: 'small' | 'medium' | 'large' | 'huge';
|
|
29
|
+
constraints?: string[];
|
|
30
|
+
}
|
|
31
|
+
export interface ProfileResult {
|
|
32
|
+
code: string;
|
|
33
|
+
analysis: PerformanceAnalysis;
|
|
34
|
+
hotspots: PerformanceHotspot[];
|
|
35
|
+
suggestions: OptimizationSuggestion[];
|
|
36
|
+
benchmarkCode?: string;
|
|
37
|
+
executionTimeMs: number;
|
|
38
|
+
warnings: string[];
|
|
39
|
+
}
|
|
40
|
+
export interface PerformanceAnalysis {
|
|
41
|
+
timeComplexity: ComplexityInfo;
|
|
42
|
+
spaceComplexity: ComplexityInfo;
|
|
43
|
+
algorithmType?: AlgorithmType;
|
|
44
|
+
potentialBottlenecks: string[];
|
|
45
|
+
memoryLeakRisk: 'none' | 'low' | 'medium' | 'high';
|
|
46
|
+
ioOperations: IOOperation[];
|
|
47
|
+
}
|
|
48
|
+
export interface ComplexityInfo {
|
|
49
|
+
bigO: string;
|
|
50
|
+
bestCase: string;
|
|
51
|
+
averageCase: string;
|
|
52
|
+
worstCase: string;
|
|
53
|
+
explanation: string;
|
|
54
|
+
confidence: number;
|
|
55
|
+
}
|
|
56
|
+
export interface PerformanceHotspot {
|
|
57
|
+
location: string;
|
|
58
|
+
type: 'cpu' | 'memory' | 'io' | 'network';
|
|
59
|
+
severity: 'critical' | 'high' | 'medium' | 'low';
|
|
60
|
+
description: string;
|
|
61
|
+
estimatedImpact: string;
|
|
62
|
+
}
|
|
63
|
+
export interface OptimizationSuggestion {
|
|
64
|
+
priority: number;
|
|
65
|
+
category: OptimizationCategory;
|
|
66
|
+
description: string;
|
|
67
|
+
codeExample?: string;
|
|
68
|
+
estimatedGain: string;
|
|
69
|
+
}
|
|
70
|
+
export type AlgorithmType = 'linear-search' | 'binary-search' | 'sorting' | 'dynamic-programming' | 'greedy' | 'divide-conquer' | 'backtracking' | 'graph-traversal' | 'tree-traversal' | 'other';
|
|
71
|
+
export type OptimizationCategory = 'algorithm' | 'data-structure' | 'caching' | 'parallelization' | 'lazy-evaluation' | 'early-exit' | 'memory' | 'io' | 'network' | 'database';
|
|
72
|
+
export interface IOOperation {
|
|
73
|
+
type: 'file' | 'network' | 'database';
|
|
74
|
+
operation: string;
|
|
75
|
+
isBlocking: boolean;
|
|
76
|
+
isRepeated: boolean;
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Comprehensive performance profiling and analysis
|
|
80
|
+
*/
|
|
81
|
+
export declare function profileCode(options: ProfileOptions): Promise<ProfileResult>;
|
|
82
|
+
export default profileCode;
|
|
83
|
+
//# sourceMappingURL=profiler.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"profiler.d.ts","sourceRoot":"","sources":["../../src/tools/profiler.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAUH,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAGlB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAG3B,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IAGtB,iBAAiB,CAAC,EAAE,OAAO,GAAG,QAAQ,GAAG,OAAO,GAAG,MAAM,CAAC;IAC1D,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;CACxB;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,mBAAmB,CAAC;IAC9B,QAAQ,EAAE,kBAAkB,EAAE,CAAC;IAC/B,WAAW,EAAE,sBAAsB,EAAE,CAAC;IACtC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,eAAe,EAAE,MAAM,CAAC;IACxB,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,MAAM,WAAW,mBAAmB;IAClC,cAAc,EAAE,cAAc,CAAC;IAC/B,eAAe,EAAE,cAAc,CAAC;IAChC,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,oBAAoB,EAAE,MAAM,EAAE,CAAC;IAC/B,cAAc,EAAE,MAAM,GAAG,KAAK,GAAG,QAAQ,GAAG,MAAM,CAAC;IACnD,YAAY,EAAE,WAAW,EAAE,CAAC;CAC7B;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,KAAK,GAAG,QAAQ,GAAG,IAAI,GAAG,SAAS,CAAC;IAC1C,QAAQ,EAAE,UAAU,GAAG,MAAM,GAAG,QAAQ,GAAG,KAAK,CAAC;IACjD,WAAW,EAAE,MAAM,CAAC;IACpB,eAAe,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,sBAAsB;IACrC,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,oBAAoB,CAAC;IAC/B,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,MAAM,aAAa,GACrB,eAAe,GACf,eAAe,GACf,SAAS,GACT,qBAAqB,GACrB,QAAQ,GACR,gBAAgB,GAChB,cAAc,GACd,iBAAiB,GACjB,gBAAgB,GAChB,OAAO,CAAC;AAEZ,MAAM,MAAM,oBAAoB,GAC5B,WAAW,GACX,gBAAgB,GAChB,SAAS,GACT,iBAAiB,GACjB,iBAAiB,GACjB,YAAY,GACZ,QAAQ,GACR,IAAI,GACJ,SAAS,GACT,UAAU,CAAC;AAEf,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,UAAU,CAAC;IACtC,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,OAAO,CAAC;IACpB,UAAU,EAAE,OAAO,CAAC;CACrB;AAyKD;;GAEG;AACH,wBAAsB,WAAW,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,aAAa,CAAC,CA0PjF;AAMD,eAAe,WAAW,CAAC"}
|