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.
@@ -0,0 +1,308 @@
1
+ /**
2
+ * Atlas Server - AI-Powered Code Refactoring Tool
3
+ *
4
+ * Advanced refactoring capabilities beyond simple code cleanup:
5
+ * - Pattern detection (design patterns, anti-patterns)
6
+ * - Complexity reduction (cyclomatic complexity analysis)
7
+ * - SOLID principles enforcement
8
+ * - Performance hotspot identification
9
+ * - Automated Extract Method/Class/Interface
10
+ * - Dead code elimination
11
+ * - Type inference and migration
12
+ * - Dependency injection suggestions
13
+ *
14
+ * @module refactor
15
+ * @author Nishant Unavane
16
+ * @version 1.0.0
17
+ */
18
+ import { getActiveProvider, isNoLLMMode } from '../providers/index.js';
19
+ import { logger, createTimer } from '../utils.js';
20
+ import { validateInput } from './validation.js';
21
+ import { z } from 'zod';
22
+ // ============================================================================
23
+ // Validation Schema
24
+ // ============================================================================
25
+ const RefactorOptionsSchema = z.object({
26
+ code: z.string().min(1).max(500000),
27
+ language: z.string().min(1),
28
+ filePath: z.string().optional(),
29
+ targets: z.array(z.enum([
30
+ 'complexity', 'duplication', 'naming', 'structure',
31
+ 'performance', 'solid', 'patterns', 'types',
32
+ 'async', 'functional', 'deadcode'
33
+ ])).optional(),
34
+ maxComplexity: z.number().min(1).max(50).optional(),
35
+ enforceSOLID: z.boolean().optional(),
36
+ preserveBehavior: z.boolean().optional(),
37
+ addTypes: z.boolean().optional(),
38
+ modernize: z.boolean().optional(),
39
+ projectContext: z.string().optional(),
40
+ dependencies: z.array(z.string()).optional(),
41
+ });
42
+ // ============================================================================
43
+ // Code Metrics Calculator
44
+ // ============================================================================
45
+ /**
46
+ * Calculate code metrics for before/after comparison
47
+ */
48
+ function calculateMetrics(code, language) {
49
+ const lines = code.split('\n');
50
+ const nonEmptyLines = lines.filter(l => l.trim().length > 0);
51
+ const commentLines = lines.filter(l => {
52
+ const trimmed = l.trim();
53
+ return trimmed.startsWith('//') ||
54
+ trimmed.startsWith('/*') ||
55
+ trimmed.startsWith('*') ||
56
+ trimmed.startsWith('#');
57
+ });
58
+ // Simple cyclomatic complexity (count decision points)
59
+ const decisionPoints = (code.match(/\b(if|else|for|while|case|catch|\?|&&|\|\|)\b/g) || []).length;
60
+ const cyclomaticComplexity = decisionPoints + 1;
61
+ // Maintainability Index (simplified formula)
62
+ // MI = max(0, (171 - 5.2 * ln(Halstead Volume) - 0.23 * CC - 16.2 * ln(LOC)) * 100 / 171)
63
+ const volume = Math.log(nonEmptyLines.length + 1) * 10; // Simplified
64
+ const mi = Math.max(0, (171 - 5.2 * volume - 0.23 * cyclomaticComplexity - 16.2 * Math.log(nonEmptyLines.length + 1)) * 100 / 171);
65
+ // Count functions and classes
66
+ const functionCount = (code.match(/\b(function|def|fn|func)\s+\w+/g) || []).length +
67
+ (code.match(/=>\s*{/g) || []).length;
68
+ const classCount = (code.match(/\b(class|struct|interface)\s+\w+/g) || []).length;
69
+ return {
70
+ linesOfCode: nonEmptyLines.length,
71
+ cyclomaticComplexity,
72
+ maintainabilityIndex: Math.round(mi),
73
+ duplicatedLines: 0, // Would need more sophisticated analysis
74
+ functionCount,
75
+ classCount,
76
+ commentRatio: commentLines.length / (nonEmptyLines.length || 1),
77
+ };
78
+ }
79
+ // ============================================================================
80
+ // Pattern Detection
81
+ // ============================================================================
82
+ /**
83
+ * Detect common code smells and anti-patterns
84
+ */
85
+ function detectPatterns(code, language) {
86
+ const smells = [];
87
+ const patterns = [];
88
+ // God Class detection
89
+ if (code.match(/class\s+\w+\s*{[^}]{2000,}}/s)) {
90
+ smells.push('God Class: Class with too many responsibilities');
91
+ }
92
+ // Long Method detection
93
+ const methods = code.match(/(?:function|def|fn)\s+\w+[^{]*{[^}]{500,}}/gs) || [];
94
+ if (methods.length > 0) {
95
+ smells.push(`Long Method: ${methods.length} functions with 50+ lines`);
96
+ }
97
+ // Magic Numbers
98
+ const magicNumbers = code.match(/\b\d{3,}\b/g) || [];
99
+ if (magicNumbers.length > 3) {
100
+ smells.push(`Magic Numbers: ${magicNumbers.length} hardcoded numeric literals`);
101
+ }
102
+ // Nested Conditionals
103
+ if (code.match(/if\s*\([^)]+\)\s*{[^}]*if\s*\([^)]+\)\s*{[^}]*if/s)) {
104
+ smells.push('Deeply Nested Conditionals: Consider guard clauses');
105
+ }
106
+ // Singleton Pattern detection
107
+ if (code.match(/private\s+static\s+\w+\s+instance\s*[=;]/)) {
108
+ patterns.push('Singleton Pattern detected');
109
+ }
110
+ // Factory Pattern detection
111
+ if (code.match(/class\s+\w*Factory/)) {
112
+ patterns.push('Factory Pattern detected');
113
+ }
114
+ // Observer Pattern detection
115
+ if (code.match(/\b(on|addEventListener|subscribe|emit)\b/)) {
116
+ patterns.push('Observer Pattern detected');
117
+ }
118
+ return { smells, patterns };
119
+ }
120
+ // ============================================================================
121
+ // Main Refactor Function
122
+ // ============================================================================
123
+ /**
124
+ * AI-powered code refactoring with pattern detection
125
+ */
126
+ export async function refactorCode(options) {
127
+ const timer = createTimer();
128
+ // Validate input
129
+ const validated = validateInput(RefactorOptionsSchema, options);
130
+ const { code, language, filePath, targets = [], maxComplexity = 10, enforceSOLID = true } = validated;
131
+ logger.info({ language, targets, filePath }, 'Starting code refactoring');
132
+ // Calculate initial metrics
133
+ const beforeMetrics = calculateMetrics(code, language);
134
+ // Detect patterns
135
+ const { smells, patterns } = detectPatterns(code, language);
136
+ const warnings = [];
137
+ const changes = [];
138
+ // Build refactoring prompt
139
+ const targetsStr = targets.length > 0
140
+ ? targets.join(', ')
141
+ : 'all common refactorings';
142
+ const prompt = `You are a senior software architect with 50 years of experience. Refactor this ${language} code.
143
+
144
+ **Original Code:**
145
+ \`\`\`${language}
146
+ ${code}
147
+ \`\`\`
148
+
149
+ **Current Metrics:**
150
+ - Lines of Code: ${beforeMetrics.linesOfCode}
151
+ - Cyclomatic Complexity: ${beforeMetrics.cyclomaticComplexity}
152
+ - Maintainability Index: ${beforeMetrics.maintainabilityIndex}/100
153
+ - Functions: ${beforeMetrics.functionCount}
154
+ - Classes: ${beforeMetrics.classCount}
155
+
156
+ **Detected Issues:**
157
+ ${smells.length > 0 ? smells.map(s => `- ${s}`).join('\n') : '- No major code smells detected'}
158
+
159
+ **Detected Patterns:**
160
+ ${patterns.length > 0 ? patterns.map(p => `- ${p}`).join('\n') : '- No design patterns detected'}
161
+
162
+ **Refactoring Targets:** ${targetsStr}
163
+ **Max Complexity Target:** ${maxComplexity}
164
+ **Enforce SOLID Principles:** ${enforceSOLID ? 'Yes' : 'No'}
165
+
166
+ **Instructions:**
167
+ 1. Refactor the code to improve:
168
+ - Readability and maintainability
169
+ - Performance where applicable
170
+ - Type safety (add types if missing)
171
+ - Follow SOLID principles ${enforceSOLID ? '(strictly)' : '(loosely)'}
172
+ - Reduce cyclomatic complexity to ${maxComplexity} or below
173
+ 2. Add descriptive comments for complex logic
174
+ 3. Use modern ${language} features and best practices
175
+ 4. Extract reusable functions/classes
176
+ 5. Remove code duplication
177
+ 6. Preserve original behavior exactly
178
+
179
+ **Provide:**
180
+ 1. The refactored code
181
+ 2. A list of changes made (one per line, format: "TYPE: Description")
182
+ 3. Suggestions for further improvements
183
+
184
+ Format your response as:
185
+ \`\`\`${language}
186
+ [refactored code here]
187
+ \`\`\`
188
+
189
+ CHANGES:
190
+ - [change 1]
191
+ - [change 2]
192
+ ...
193
+
194
+ SUGGESTIONS:
195
+ - [suggestion 1]
196
+ - [suggestion 2]
197
+ ...`;
198
+ // Get LLM provider
199
+ let refactoredCode = code;
200
+ let suggestions = [];
201
+ if (isNoLLMMode()) {
202
+ warnings.push('No LLM provider available - using basic refactoring only');
203
+ // Basic automated refactorings without LLM
204
+ refactoredCode = applyBasicRefactorings(code, language, targets);
205
+ suggestions = [
206
+ 'Install an LLM provider for advanced AI-powered refactoring',
207
+ 'Consider manual code review for complex changes'
208
+ ];
209
+ }
210
+ else {
211
+ const provider = await getActiveProvider();
212
+ try {
213
+ const response = await provider.complete(prompt, {
214
+ maxTokens: 4000,
215
+ temperature: 0.3, // Lower temp for more consistent refactoring
216
+ });
217
+ const responseText = response.text;
218
+ // Parse response
219
+ const codeMatch = responseText.match(new RegExp(`\`\`\`${language}\\s*([\\s\\S]*?)\`\`\``));
220
+ if (codeMatch && codeMatch[1]) {
221
+ refactoredCode = codeMatch[1].trim();
222
+ }
223
+ else {
224
+ warnings.push('Could not extract refactored code from LLM response');
225
+ refactoredCode = code;
226
+ }
227
+ // Parse changes
228
+ const changesMatch = responseText.match(/CHANGES:\s*([\s\S]*?)(?:SUGGESTIONS:|$)/);
229
+ if (changesMatch && changesMatch[1]) {
230
+ const changeLines = changesMatch[1].trim().split('\n')
231
+ .filter((line) => line.trim().startsWith('-'))
232
+ .map((line) => line.replace(/^-\s*/, '').trim());
233
+ changeLines.forEach((changeLine, idx) => {
234
+ const [typeStr, ...descParts] = changeLine.split(':');
235
+ const type = typeStr?.toLowerCase().trim() || 'structure';
236
+ const description = descParts.join(':').trim();
237
+ if (description) {
238
+ changes.push({
239
+ type,
240
+ description,
241
+ lineNumber: 1, // Would need more sophisticated parsing
242
+ impact: beforeMetrics.cyclomaticComplexity > 15 ? 'high' : 'medium',
243
+ autoApplicable: true,
244
+ });
245
+ }
246
+ });
247
+ }
248
+ // Parse suggestions
249
+ const suggestionsMatch = responseText.match(/SUGGESTIONS:\s*([\s\S]*?)$/);
250
+ if (suggestionsMatch && suggestionsMatch[1]) {
251
+ suggestions = suggestionsMatch[1].trim().split('\n')
252
+ .filter((line) => line.trim().startsWith('-'))
253
+ .map((line) => line.replace(/^-\s*/, '').trim())
254
+ .filter(Boolean);
255
+ }
256
+ }
257
+ catch (error) {
258
+ logger.error({ error }, 'Refactoring failed');
259
+ warnings.push(`LLM error: ${error instanceof Error ? error.message : 'Unknown error'}`);
260
+ refactoredCode = code;
261
+ }
262
+ }
263
+ // Calculate final metrics
264
+ const afterMetrics = calculateMetrics(refactoredCode, language);
265
+ // Add metrics comparison to suggestions
266
+ if (afterMetrics.cyclomaticComplexity < beforeMetrics.cyclomaticComplexity) {
267
+ suggestions.unshift(`✅ Complexity reduced from ${beforeMetrics.cyclomaticComplexity} to ${afterMetrics.cyclomaticComplexity}`);
268
+ }
269
+ if (afterMetrics.maintainabilityIndex > beforeMetrics.maintainabilityIndex) {
270
+ suggestions.unshift(`✅ Maintainability improved from ${beforeMetrics.maintainabilityIndex} to ${afterMetrics.maintainabilityIndex}`);
271
+ }
272
+ const executionTimeMs = timer.elapsed();
273
+ logger.info({
274
+ beforeComplexity: beforeMetrics.cyclomaticComplexity,
275
+ afterComplexity: afterMetrics.cyclomaticComplexity,
276
+ changesCount: changes.length,
277
+ executionTimeMs
278
+ }, 'Refactoring completed');
279
+ return {
280
+ originalCode: code,
281
+ refactoredCode,
282
+ changes,
283
+ metrics: afterMetrics,
284
+ suggestions,
285
+ executionTimeMs,
286
+ warnings,
287
+ };
288
+ }
289
+ /**
290
+ * Apply basic refactorings without LLM
291
+ */
292
+ function applyBasicRefactorings(code, language, targets) {
293
+ let result = code;
294
+ // Remove trailing whitespace
295
+ result = result.split('\n').map(line => line.trimEnd()).join('\n');
296
+ // Consistent indentation
297
+ result = result.replace(/\t/g, ' ');
298
+ // Remove multiple blank lines
299
+ result = result.replace(/\n{3,}/g, '\n\n');
300
+ // Add space after keywords
301
+ result = result.replace(/\b(if|for|while|switch|catch)\(/g, '$1 (');
302
+ return result;
303
+ }
304
+ // ============================================================================
305
+ // Export
306
+ // ============================================================================
307
+ export default refactorCode;
308
+ //# sourceMappingURL=refactor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"refactor.js","sourceRoot":"","sources":["../../src/tools/refactor.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,98 @@
1
+ /**
2
+ * Atlas Server - AI Code Review Assistant
3
+ *
4
+ * Comprehensive AI-powered code review capabilities:
5
+ * - Multi-dimensional code quality analysis
6
+ * - Best practices enforcement
7
+ * - Architectural pattern validation
8
+ * - Security vulnerability detection
9
+ * - Performance optimization suggestions
10
+ * - Test coverage recommendations
11
+ * - Documentation quality assessment
12
+ * - Team coding standards compliance
13
+ *
14
+ * @module review
15
+ * @author Nishant Unavane
16
+ * @version 1.0.0
17
+ */
18
+ export interface CodeReviewOptions {
19
+ code: string;
20
+ language: string;
21
+ filePath?: string;
22
+ checkQuality?: boolean;
23
+ checkSecurity?: boolean;
24
+ checkPerformance?: boolean;
25
+ checkArchitecture?: boolean;
26
+ checkTests?: boolean;
27
+ checkDocumentation?: boolean;
28
+ framework?: string;
29
+ teamStandards?: string;
30
+ pullRequestContext?: string;
31
+ changedFiles?: string[];
32
+ }
33
+ export interface CodeReviewResult {
34
+ code: string;
35
+ overallScore: number;
36
+ grades: ReviewGrades;
37
+ findings: ReviewFinding[];
38
+ suggestions: ReviewSuggestion[];
39
+ metrics: QualityMetrics;
40
+ summary: string;
41
+ executionTimeMs: number;
42
+ warnings: string[];
43
+ }
44
+ export interface ReviewGrades {
45
+ quality: Grade;
46
+ security: Grade;
47
+ performance: Grade;
48
+ architecture: Grade;
49
+ tests: Grade;
50
+ documentation: Grade;
51
+ }
52
+ export interface Grade {
53
+ score: number;
54
+ letter: 'A+' | 'A' | 'B' | 'C' | 'D' | 'F';
55
+ issues: number;
56
+ strengths: string[];
57
+ weaknesses: string[];
58
+ }
59
+ export interface ReviewFinding {
60
+ severity: 'blocker' | 'critical' | 'major' | 'minor' | 'info';
61
+ category: ReviewCategory;
62
+ title: string;
63
+ description: string;
64
+ location?: CodeLocation;
65
+ suggestion: string;
66
+ autoFixable: boolean;
67
+ references?: string[];
68
+ }
69
+ export type ReviewCategory = 'correctness' | 'security' | 'performance' | 'maintainability' | 'reliability' | 'architecture' | 'testing' | 'documentation' | 'style' | 'best-practices';
70
+ export interface CodeLocation {
71
+ startLine: number;
72
+ endLine: number;
73
+ snippet?: string;
74
+ }
75
+ export interface ReviewSuggestion {
76
+ priority: 'must' | 'should' | 'consider';
77
+ category: string;
78
+ description: string;
79
+ codeExample?: string;
80
+ rationale: string;
81
+ }
82
+ export interface QualityMetrics {
83
+ totalLines: number;
84
+ codeLines: number;
85
+ commentLines: number;
86
+ blankLines: number;
87
+ commentRatio: number;
88
+ averageComplexity: number;
89
+ duplicatedCodeRatio: number;
90
+ testCoverage?: number;
91
+ documentationCoverage: number;
92
+ }
93
+ /**
94
+ * Comprehensive AI-powered code review
95
+ */
96
+ export declare function reviewCode(options: CodeReviewOptions): Promise<CodeReviewResult>;
97
+ export default reviewCode;
98
+ //# sourceMappingURL=review.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"review.d.ts","sourceRoot":"","sources":["../../src/tools/review.ts"],"names":[],"mappings":"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"}