atlas-pipeline-mcp 1.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/.env.example +21 -0
- package/LICENSE +21 -0
- package/README.md +175 -0
- package/dist/mcp.d.ts +21 -0
- package/dist/mcp.d.ts.map +1 -0
- package/dist/mcp.js +404 -0
- package/dist/mcp.js.map +1 -0
- package/dist/pipeline.d.ts +39 -0
- package/dist/pipeline.d.ts.map +1 -0
- package/dist/pipeline.js +355 -0
- package/dist/pipeline.js.map +1 -0
- package/dist/providers/index.d.ts +14 -0
- package/dist/providers/index.d.ts.map +1 -0
- package/dist/providers/index.js +13 -0
- package/dist/providers/index.js.map +1 -0
- package/dist/providers/llm-provider.d.ts +71 -0
- package/dist/providers/llm-provider.d.ts.map +1 -0
- package/dist/providers/llm-provider.js +357 -0
- package/dist/providers/llm-provider.js.map +1 -0
- package/dist/server.d.ts +27 -0
- package/dist/server.d.ts.map +1 -0
- package/dist/server.js +312 -0
- package/dist/server.js.map +1 -0
- package/dist/tools/context.d.ts +23 -0
- package/dist/tools/context.d.ts.map +1 -0
- package/dist/tools/context.js +363 -0
- package/dist/tools/context.js.map +1 -0
- package/dist/tools/critique.d.ts +40 -0
- package/dist/tools/critique.d.ts.map +1 -0
- package/dist/tools/critique.js +315 -0
- package/dist/tools/critique.js.map +1 -0
- package/dist/tools/decompose.d.ts +34 -0
- package/dist/tools/decompose.d.ts.map +1 -0
- package/dist/tools/decompose.js +328 -0
- package/dist/tools/decompose.js.map +1 -0
- package/dist/tools/git.d.ts +66 -0
- package/dist/tools/git.d.ts.map +1 -0
- package/dist/tools/git.js +333 -0
- package/dist/tools/git.js.map +1 -0
- package/dist/tools/intent.d.ts +24 -0
- package/dist/tools/intent.d.ts.map +1 -0
- package/dist/tools/intent.js +245 -0
- package/dist/tools/intent.js.map +1 -0
- package/dist/tools/ollama.d.ts +104 -0
- package/dist/tools/ollama.d.ts.map +1 -0
- package/dist/tools/ollama.js +299 -0
- package/dist/tools/ollama.js.map +1 -0
- package/dist/tools/optimize.d.ts +64 -0
- package/dist/tools/optimize.d.ts.map +1 -0
- package/dist/tools/optimize.js +302 -0
- package/dist/tools/optimize.js.map +1 -0
- package/dist/tools/variants.d.ts +49 -0
- package/dist/tools/variants.d.ts.map +1 -0
- package/dist/tools/variants.js +252 -0
- package/dist/tools/variants.js.map +1 -0
- package/dist/types.d.ts +447 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +25 -0
- package/dist/types.js.map +1 -0
- package/dist/utils.d.ts +117 -0
- package/dist/utils.d.ts.map +1 -0
- package/dist/utils.js +279 -0
- package/dist/utils.js.map +1 -0
- package/package.json +77 -0
|
@@ -0,0 +1,315 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Atlas Server - Critique Tool
|
|
3
|
+
*
|
|
4
|
+
* Provides thorough code review and critique:
|
|
5
|
+
* - Correctness analysis
|
|
6
|
+
* - Performance evaluation
|
|
7
|
+
* - Maintainability assessment
|
|
8
|
+
* - Security review
|
|
9
|
+
* - Best practices check
|
|
10
|
+
*/
|
|
11
|
+
import { getOllamaClient, PromptTemplates } from './ollama.js';
|
|
12
|
+
import { logger } from '../utils.js';
|
|
13
|
+
// ============================================================================
|
|
14
|
+
// Critique Generation
|
|
15
|
+
// ============================================================================
|
|
16
|
+
/**
|
|
17
|
+
* Critique all solution variants
|
|
18
|
+
*/
|
|
19
|
+
export async function critiqueVariants(variants) {
|
|
20
|
+
logger.debug({ variantCount: variants.length }, 'Starting critique');
|
|
21
|
+
const critiques = [];
|
|
22
|
+
for (const variant of variants) {
|
|
23
|
+
const critique = await critiqueVariant(variant);
|
|
24
|
+
critiques.push(critique);
|
|
25
|
+
}
|
|
26
|
+
// Find the best variant
|
|
27
|
+
const viableCritiques = critiques.filter((c) => c.isViable);
|
|
28
|
+
const bestCritique = viableCritiques.length > 0
|
|
29
|
+
? viableCritiques.reduce((best, current) => current.qualityScore > best.qualityScore ? current : best)
|
|
30
|
+
: critiques.reduce((best, current) => current.qualityScore > best.qualityScore ? current : best);
|
|
31
|
+
return {
|
|
32
|
+
critiques,
|
|
33
|
+
bestVariantId: bestCritique.variantId,
|
|
34
|
+
summary: generateCritiqueSummary(critiques),
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Critique a single variant
|
|
39
|
+
*/
|
|
40
|
+
async function critiqueVariant(variant) {
|
|
41
|
+
const client = getOllamaClient();
|
|
42
|
+
const prompt = buildCritiquePrompt(variant);
|
|
43
|
+
const response = await client.generateJson(prompt, {
|
|
44
|
+
systemPrompt: PromptTemplates.codeCritique,
|
|
45
|
+
temperature: 0.3, // Lower temp for analytical work
|
|
46
|
+
maxTokens: 2048,
|
|
47
|
+
});
|
|
48
|
+
if (response.data) {
|
|
49
|
+
const assessment = normalizeAssessment(response.data.assessment);
|
|
50
|
+
const issues = response.data.issues.map((issue) => ({
|
|
51
|
+
severity: normalizeSeverity(issue.severity),
|
|
52
|
+
category: normalizeCategory(issue.category),
|
|
53
|
+
description: issue.description,
|
|
54
|
+
location: issue.location,
|
|
55
|
+
suggestedFix: issue.suggestedFix,
|
|
56
|
+
}));
|
|
57
|
+
return {
|
|
58
|
+
variantId: variant.id,
|
|
59
|
+
qualityScore: calculateQualityScore(assessment, issues),
|
|
60
|
+
assessment,
|
|
61
|
+
issues,
|
|
62
|
+
suggestions: response.data.suggestions,
|
|
63
|
+
isViable: response.data.isViable,
|
|
64
|
+
};
|
|
65
|
+
}
|
|
66
|
+
// Fallback critique
|
|
67
|
+
return fallbackCritique(variant);
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Build the critique prompt for a variant
|
|
71
|
+
*/
|
|
72
|
+
function buildCritiquePrompt(variant) {
|
|
73
|
+
return `Critically analyze this solution variant.
|
|
74
|
+
|
|
75
|
+
## Variant ${variant.label}: ${variant.approach}
|
|
76
|
+
|
|
77
|
+
### Code
|
|
78
|
+
\`\`\`
|
|
79
|
+
${variant.content}
|
|
80
|
+
\`\`\`
|
|
81
|
+
|
|
82
|
+
### Stated Pros
|
|
83
|
+
${variant.tradeoffs.pros.map((p) => `- ${p}`).join('\n')}
|
|
84
|
+
|
|
85
|
+
### Stated Cons
|
|
86
|
+
${variant.tradeoffs.cons.map((c) => `- ${c}`).join('\n')}
|
|
87
|
+
|
|
88
|
+
### Target Use Case
|
|
89
|
+
${variant.useCase}
|
|
90
|
+
|
|
91
|
+
## Analyze For:
|
|
92
|
+
1. **Correctness**: Does it solve the problem correctly? Any bugs?
|
|
93
|
+
2. **Performance**: Are there efficiency issues? Memory leaks? N+1 queries?
|
|
94
|
+
3. **Maintainability**: Is it readable? Well-structured? Documented?
|
|
95
|
+
4. **Security**: Any vulnerabilities? Input validation? Injection risks?
|
|
96
|
+
5. **Best Practices**: Does it follow conventions? Modern patterns?
|
|
97
|
+
|
|
98
|
+
## Output Format
|
|
99
|
+
{
|
|
100
|
+
"assessment": {
|
|
101
|
+
"correctness": 0-100,
|
|
102
|
+
"performance": 0-100,
|
|
103
|
+
"maintainability": 0-100,
|
|
104
|
+
"security": 0-100,
|
|
105
|
+
"bestPractices": 0-100
|
|
106
|
+
},
|
|
107
|
+
"issues": [
|
|
108
|
+
{
|
|
109
|
+
"severity": "critical|major|minor|suggestion",
|
|
110
|
+
"category": "correctness|performance|maintainability|security|bestPractices",
|
|
111
|
+
"description": "Clear description of the issue",
|
|
112
|
+
"location": "Line or section where issue occurs (optional)",
|
|
113
|
+
"suggestedFix": "How to fix it (optional)"
|
|
114
|
+
}
|
|
115
|
+
],
|
|
116
|
+
"suggestions": ["General improvement suggestions"],
|
|
117
|
+
"isViable": true/false
|
|
118
|
+
}`;
|
|
119
|
+
}
|
|
120
|
+
// ============================================================================
|
|
121
|
+
// Fallback and Normalization
|
|
122
|
+
// ============================================================================
|
|
123
|
+
/**
|
|
124
|
+
* Fallback critique when LLM fails
|
|
125
|
+
*/
|
|
126
|
+
function fallbackCritique(variant) {
|
|
127
|
+
// Basic heuristic analysis
|
|
128
|
+
const hasTypeAnnotations = variant.content.includes(': ');
|
|
129
|
+
const hasErrorHandling = variant.content.includes('try') ||
|
|
130
|
+
variant.content.includes('catch') ||
|
|
131
|
+
variant.content.includes('throw');
|
|
132
|
+
const hasComments = variant.content.includes('//') || variant.content.includes('/*');
|
|
133
|
+
const isShort = variant.content.length < 500;
|
|
134
|
+
const assessment = {
|
|
135
|
+
correctness: 60, // Assume reasonable correctness
|
|
136
|
+
performance: isShort ? 70 : 50,
|
|
137
|
+
maintainability: hasComments ? 65 : 45,
|
|
138
|
+
security: hasErrorHandling ? 60 : 40,
|
|
139
|
+
bestPractices: hasTypeAnnotations ? 70 : 50,
|
|
140
|
+
};
|
|
141
|
+
const issues = [];
|
|
142
|
+
if (!hasErrorHandling) {
|
|
143
|
+
issues.push({
|
|
144
|
+
severity: 'minor',
|
|
145
|
+
category: 'security',
|
|
146
|
+
description: 'No error handling detected',
|
|
147
|
+
suggestedFix: 'Add try-catch blocks for error handling',
|
|
148
|
+
});
|
|
149
|
+
}
|
|
150
|
+
if (!hasComments) {
|
|
151
|
+
issues.push({
|
|
152
|
+
severity: 'suggestion',
|
|
153
|
+
category: 'maintainability',
|
|
154
|
+
description: 'Code lacks comments',
|
|
155
|
+
suggestedFix: 'Add comments explaining complex logic',
|
|
156
|
+
});
|
|
157
|
+
}
|
|
158
|
+
return {
|
|
159
|
+
variantId: variant.id,
|
|
160
|
+
qualityScore: calculateQualityScore(assessment, issues),
|
|
161
|
+
assessment,
|
|
162
|
+
issues,
|
|
163
|
+
suggestions: [
|
|
164
|
+
'Consider adding more comprehensive error handling',
|
|
165
|
+
'Add documentation comments for public APIs',
|
|
166
|
+
],
|
|
167
|
+
isViable: true,
|
|
168
|
+
};
|
|
169
|
+
}
|
|
170
|
+
/**
|
|
171
|
+
* Normalize assessment scores to valid range
|
|
172
|
+
*/
|
|
173
|
+
function normalizeAssessment(assessment) {
|
|
174
|
+
const normalize = (value) => Math.min(100, Math.max(0, Math.round(value)));
|
|
175
|
+
return {
|
|
176
|
+
correctness: normalize(assessment['correctness'] ?? 50),
|
|
177
|
+
performance: normalize(assessment['performance'] ?? 50),
|
|
178
|
+
maintainability: normalize(assessment['maintainability'] ?? 50),
|
|
179
|
+
security: normalize(assessment['security'] ?? 50),
|
|
180
|
+
bestPractices: normalize(assessment['bestPractices'] ?? 50),
|
|
181
|
+
};
|
|
182
|
+
}
|
|
183
|
+
/**
|
|
184
|
+
* Normalize severity string
|
|
185
|
+
*/
|
|
186
|
+
function normalizeSeverity(severity) {
|
|
187
|
+
const normalized = severity.toLowerCase();
|
|
188
|
+
if (normalized === 'critical')
|
|
189
|
+
return 'critical';
|
|
190
|
+
if (normalized === 'major')
|
|
191
|
+
return 'major';
|
|
192
|
+
if (normalized === 'minor')
|
|
193
|
+
return 'minor';
|
|
194
|
+
return 'suggestion';
|
|
195
|
+
}
|
|
196
|
+
/**
|
|
197
|
+
* Normalize category string
|
|
198
|
+
*/
|
|
199
|
+
function normalizeCategory(category) {
|
|
200
|
+
const normalized = category.toLowerCase();
|
|
201
|
+
if (normalized.includes('correct'))
|
|
202
|
+
return 'correctness';
|
|
203
|
+
if (normalized.includes('perform'))
|
|
204
|
+
return 'performance';
|
|
205
|
+
if (normalized.includes('maintain') || normalized.includes('read'))
|
|
206
|
+
return 'maintainability';
|
|
207
|
+
if (normalized.includes('secur'))
|
|
208
|
+
return 'security';
|
|
209
|
+
return 'bestPractices';
|
|
210
|
+
}
|
|
211
|
+
/**
|
|
212
|
+
* Calculate overall quality score
|
|
213
|
+
*/
|
|
214
|
+
function calculateQualityScore(assessment, issues) {
|
|
215
|
+
// Weighted average of assessment scores
|
|
216
|
+
const weights = {
|
|
217
|
+
correctness: 0.3,
|
|
218
|
+
performance: 0.2,
|
|
219
|
+
maintainability: 0.2,
|
|
220
|
+
security: 0.15,
|
|
221
|
+
bestPractices: 0.15,
|
|
222
|
+
};
|
|
223
|
+
let score = Object.entries(assessment).reduce((total, [key, value]) => total + value * (weights[key] ?? 0.1), 0);
|
|
224
|
+
// Deduct for issues
|
|
225
|
+
const severityPenalty = {
|
|
226
|
+
critical: 15,
|
|
227
|
+
major: 8,
|
|
228
|
+
minor: 3,
|
|
229
|
+
suggestion: 1,
|
|
230
|
+
};
|
|
231
|
+
for (const issue of issues) {
|
|
232
|
+
score -= severityPenalty[issue.severity];
|
|
233
|
+
}
|
|
234
|
+
return Math.min(100, Math.max(0, Math.round(score)));
|
|
235
|
+
}
|
|
236
|
+
/**
|
|
237
|
+
* Generate summary of all critiques
|
|
238
|
+
*/
|
|
239
|
+
function generateCritiqueSummary(critiques) {
|
|
240
|
+
const viableCount = critiques.filter((c) => c.isViable).length;
|
|
241
|
+
const avgScore = critiques.reduce((sum, c) => sum + c.qualityScore, 0) / critiques.length;
|
|
242
|
+
const totalIssues = critiques.reduce((sum, c) => sum + c.issues.length, 0);
|
|
243
|
+
const criticalIssues = critiques.reduce((sum, c) => sum + c.issues.filter((i) => i.severity === 'critical').length, 0);
|
|
244
|
+
return `Reviewed ${critiques.length} variants. ${viableCount} are viable. ` +
|
|
245
|
+
`Average quality score: ${avgScore.toFixed(0)}/100. ` +
|
|
246
|
+
`Total issues found: ${totalIssues} (${criticalIssues} critical).`;
|
|
247
|
+
}
|
|
248
|
+
// ============================================================================
|
|
249
|
+
// Critique Analysis Utilities
|
|
250
|
+
// ============================================================================
|
|
251
|
+
/**
|
|
252
|
+
* Get the most common issues across variants
|
|
253
|
+
*/
|
|
254
|
+
export function getCommonIssues(critiques) {
|
|
255
|
+
const issuesByCategory = new Map();
|
|
256
|
+
for (const critique of critiques) {
|
|
257
|
+
for (const issue of critique.issues) {
|
|
258
|
+
const existing = issuesByCategory.get(issue.category) ?? [];
|
|
259
|
+
existing.push(issue.description);
|
|
260
|
+
issuesByCategory.set(issue.category, existing);
|
|
261
|
+
}
|
|
262
|
+
}
|
|
263
|
+
return Array.from(issuesByCategory.entries())
|
|
264
|
+
.map(([category, descriptions]) => ({
|
|
265
|
+
category,
|
|
266
|
+
count: descriptions.length,
|
|
267
|
+
examples: [...new Set(descriptions)].slice(0, 3),
|
|
268
|
+
}))
|
|
269
|
+
.sort((a, b) => b.count - a.count);
|
|
270
|
+
}
|
|
271
|
+
/**
|
|
272
|
+
* Get improvement priorities based on critiques
|
|
273
|
+
*/
|
|
274
|
+
export function getImprovementPriorities(critiques) {
|
|
275
|
+
const areas = [
|
|
276
|
+
'correctness',
|
|
277
|
+
'performance',
|
|
278
|
+
'maintainability',
|
|
279
|
+
'security',
|
|
280
|
+
'bestPractices',
|
|
281
|
+
];
|
|
282
|
+
return areas
|
|
283
|
+
.map((area) => {
|
|
284
|
+
const scores = critiques.map((c) => c.assessment[area]);
|
|
285
|
+
const averageScore = scores.reduce((a, b) => a + b, 0) / scores.length;
|
|
286
|
+
let priority;
|
|
287
|
+
if (averageScore < 50)
|
|
288
|
+
priority = 'high';
|
|
289
|
+
else if (averageScore < 70)
|
|
290
|
+
priority = 'medium';
|
|
291
|
+
else
|
|
292
|
+
priority = 'low';
|
|
293
|
+
return { area, averageScore, priority };
|
|
294
|
+
})
|
|
295
|
+
.sort((a, b) => a.averageScore - b.averageScore);
|
|
296
|
+
}
|
|
297
|
+
/**
|
|
298
|
+
* Compare two critiques
|
|
299
|
+
*/
|
|
300
|
+
export function compareCritiques(a, b) {
|
|
301
|
+
const comparison = {};
|
|
302
|
+
for (const key of Object.keys(a.assessment)) {
|
|
303
|
+
const diff = a.assessment[key] - b.assessment[key];
|
|
304
|
+
if (diff > 5)
|
|
305
|
+
comparison[key] = 'a';
|
|
306
|
+
else if (diff < -5)
|
|
307
|
+
comparison[key] = 'b';
|
|
308
|
+
else
|
|
309
|
+
comparison[key] = 'tie';
|
|
310
|
+
}
|
|
311
|
+
const margin = a.qualityScore - b.qualityScore;
|
|
312
|
+
const winner = margin > 0 ? a.variantId : margin < 0 ? b.variantId : 'tie';
|
|
313
|
+
return { winner, margin: Math.abs(margin), comparison };
|
|
314
|
+
}
|
|
315
|
+
//# sourceMappingURL=critique.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"critique.js","sourceRoot":"","sources":["../../src/tools/critique.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Atlas Server - Task Decomposition Tool
|
|
3
|
+
*
|
|
4
|
+
* Breaks down complex user requests into:
|
|
5
|
+
* - Smaller, actionable subtasks
|
|
6
|
+
* - Dependency relationships
|
|
7
|
+
* - Priority and complexity estimates
|
|
8
|
+
* - Suggested execution order
|
|
9
|
+
*/
|
|
10
|
+
import type { PipelineContext, DecomposedTask, DecompositionResult } from '../types.js';
|
|
11
|
+
/**
|
|
12
|
+
* Decompose a complex request into actionable tasks
|
|
13
|
+
*/
|
|
14
|
+
export declare function decomposeTask(context: PipelineContext): Promise<DecompositionResult>;
|
|
15
|
+
/**
|
|
16
|
+
* Estimate total effort from tasks
|
|
17
|
+
*/
|
|
18
|
+
export declare function estimateTotalEffort(tasks: DecomposedTask[]): {
|
|
19
|
+
minHours: number;
|
|
20
|
+
maxHours: number;
|
|
21
|
+
averageHours: number;
|
|
22
|
+
};
|
|
23
|
+
/**
|
|
24
|
+
* Get critical path (longest dependency chain)
|
|
25
|
+
*/
|
|
26
|
+
export declare function getCriticalPath(tasks: DecomposedTask[]): string[];
|
|
27
|
+
/**
|
|
28
|
+
* Check if tasks form a valid DAG (no cycles)
|
|
29
|
+
*/
|
|
30
|
+
export declare function validateTaskGraph(tasks: DecomposedTask[]): {
|
|
31
|
+
valid: boolean;
|
|
32
|
+
cycleNodes?: string[];
|
|
33
|
+
};
|
|
34
|
+
//# sourceMappingURL=decompose.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"decompose.d.ts","sourceRoot":"","sources":["../../src/tools/decompose.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EACV,eAAe,EACf,cAAc,EACd,mBAAmB,EAEpB,MAAM,aAAa,CAAC;AAerB;;GAEG;AACH,wBAAsB,aAAa,CACjC,OAAO,EAAE,eAAe,GACvB,OAAO,CAAC,mBAAmB,CAAC,CAe9B;AAyRD;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,cAAc,EAAE,GAAG;IAC5D,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;CACtB,CAiBA;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,cAAc,EAAE,GAAG,MAAM,EAAE,CA8BjE;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,cAAc,EAAE,GAAG;IAC1D,KAAK,EAAE,OAAO,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;CACvB,CAmCA"}
|