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.
Files changed (64) hide show
  1. package/.env.example +21 -0
  2. package/LICENSE +21 -0
  3. package/README.md +175 -0
  4. package/dist/mcp.d.ts +21 -0
  5. package/dist/mcp.d.ts.map +1 -0
  6. package/dist/mcp.js +404 -0
  7. package/dist/mcp.js.map +1 -0
  8. package/dist/pipeline.d.ts +39 -0
  9. package/dist/pipeline.d.ts.map +1 -0
  10. package/dist/pipeline.js +355 -0
  11. package/dist/pipeline.js.map +1 -0
  12. package/dist/providers/index.d.ts +14 -0
  13. package/dist/providers/index.d.ts.map +1 -0
  14. package/dist/providers/index.js +13 -0
  15. package/dist/providers/index.js.map +1 -0
  16. package/dist/providers/llm-provider.d.ts +71 -0
  17. package/dist/providers/llm-provider.d.ts.map +1 -0
  18. package/dist/providers/llm-provider.js +357 -0
  19. package/dist/providers/llm-provider.js.map +1 -0
  20. package/dist/server.d.ts +27 -0
  21. package/dist/server.d.ts.map +1 -0
  22. package/dist/server.js +312 -0
  23. package/dist/server.js.map +1 -0
  24. package/dist/tools/context.d.ts +23 -0
  25. package/dist/tools/context.d.ts.map +1 -0
  26. package/dist/tools/context.js +363 -0
  27. package/dist/tools/context.js.map +1 -0
  28. package/dist/tools/critique.d.ts +40 -0
  29. package/dist/tools/critique.d.ts.map +1 -0
  30. package/dist/tools/critique.js +315 -0
  31. package/dist/tools/critique.js.map +1 -0
  32. package/dist/tools/decompose.d.ts +34 -0
  33. package/dist/tools/decompose.d.ts.map +1 -0
  34. package/dist/tools/decompose.js +328 -0
  35. package/dist/tools/decompose.js.map +1 -0
  36. package/dist/tools/git.d.ts +66 -0
  37. package/dist/tools/git.d.ts.map +1 -0
  38. package/dist/tools/git.js +333 -0
  39. package/dist/tools/git.js.map +1 -0
  40. package/dist/tools/intent.d.ts +24 -0
  41. package/dist/tools/intent.d.ts.map +1 -0
  42. package/dist/tools/intent.js +245 -0
  43. package/dist/tools/intent.js.map +1 -0
  44. package/dist/tools/ollama.d.ts +104 -0
  45. package/dist/tools/ollama.d.ts.map +1 -0
  46. package/dist/tools/ollama.js +299 -0
  47. package/dist/tools/ollama.js.map +1 -0
  48. package/dist/tools/optimize.d.ts +64 -0
  49. package/dist/tools/optimize.d.ts.map +1 -0
  50. package/dist/tools/optimize.js +302 -0
  51. package/dist/tools/optimize.js.map +1 -0
  52. package/dist/tools/variants.d.ts +49 -0
  53. package/dist/tools/variants.d.ts.map +1 -0
  54. package/dist/tools/variants.js +252 -0
  55. package/dist/tools/variants.js.map +1 -0
  56. package/dist/types.d.ts +447 -0
  57. package/dist/types.d.ts.map +1 -0
  58. package/dist/types.js +25 -0
  59. package/dist/types.js.map +1 -0
  60. package/dist/utils.d.ts +117 -0
  61. package/dist/utils.d.ts.map +1 -0
  62. package/dist/utils.js +279 -0
  63. package/dist/utils.js.map +1 -0
  64. package/package.json +77 -0
@@ -0,0 +1,363 @@
1
+ /**
2
+ * Atlas Server - Context Aggregation Tool
3
+ *
4
+ * Gathers and aggregates context from multiple sources:
5
+ * - Project structure analysis
6
+ * - Relevant code snippets
7
+ * - Configuration files
8
+ * - Dependencies information
9
+ */
10
+ import { readFile, readdir, stat } from 'node:fs/promises';
11
+ import { join, extname, relative } from 'node:path';
12
+ import { logger } from '../utils.js';
13
+ // ============================================================================
14
+ // Configuration
15
+ // ============================================================================
16
+ const MAX_FILE_SIZE = 100 * 1024; // 100KB max file size to read
17
+ const MAX_SNIPPET_LENGTH = 2000; // Max characters per snippet
18
+ const MAX_SNIPPETS = 10; // Max number of snippets to return
19
+ const CODE_EXTENSIONS = new Set([
20
+ '.ts', '.tsx', '.js', '.jsx', '.mjs', '.cjs',
21
+ '.py', '.pyw',
22
+ '.rs',
23
+ '.go',
24
+ '.java',
25
+ '.rb',
26
+ '.php',
27
+ '.swift',
28
+ '.kt', '.kts',
29
+ '.c', '.h', '.cpp', '.hpp', '.cc',
30
+ '.cs',
31
+ '.vue', '.svelte',
32
+ ]);
33
+ const CONFIG_FILES = [
34
+ 'package.json',
35
+ 'tsconfig.json',
36
+ 'pyproject.toml',
37
+ 'Cargo.toml',
38
+ 'go.mod',
39
+ 'pom.xml',
40
+ 'build.gradle',
41
+ 'requirements.txt',
42
+ 'Gemfile',
43
+ 'composer.json',
44
+ '.env',
45
+ '.env.example',
46
+ ];
47
+ const IGNORE_DIRS = new Set([
48
+ 'node_modules',
49
+ '.git',
50
+ 'dist',
51
+ 'build',
52
+ 'out',
53
+ '.next',
54
+ '__pycache__',
55
+ '.pytest_cache',
56
+ 'target',
57
+ 'vendor',
58
+ '.venv',
59
+ 'venv',
60
+ 'env',
61
+ ]);
62
+ // ============================================================================
63
+ // Context Building
64
+ // ============================================================================
65
+ /**
66
+ * Build comprehensive context for the pipeline
67
+ */
68
+ export async function buildContext(intent, repoPath, gitContext) {
69
+ logger.debug({ repoPath, hasGitContext: !!gitContext }, 'Building context');
70
+ const context = {
71
+ intent,
72
+ codeSnippets: [],
73
+ gitContext,
74
+ };
75
+ if (!repoPath) {
76
+ return context;
77
+ }
78
+ try {
79
+ // Gather project info
80
+ context.projectInfo = await analyzeProject(repoPath);
81
+ // Find relevant code snippets based on intent
82
+ context.codeSnippets = await findRelevantSnippets(repoPath, intent, context.projectInfo);
83
+ logger.debug({
84
+ snippetCount: context.codeSnippets.length,
85
+ languages: context.projectInfo.languages,
86
+ }, 'Context built successfully');
87
+ }
88
+ catch (error) {
89
+ logger.warn({ error, repoPath }, 'Error building context');
90
+ }
91
+ return context;
92
+ }
93
+ /**
94
+ * Analyze project structure and configuration
95
+ */
96
+ export async function analyzeProject(rootPath) {
97
+ const languages = new Set();
98
+ const frameworks = new Set();
99
+ const configFiles = [];
100
+ let packageManager;
101
+ // Check for config files
102
+ for (const configFile of CONFIG_FILES) {
103
+ try {
104
+ const filePath = join(rootPath, configFile);
105
+ await stat(filePath);
106
+ configFiles.push(configFile);
107
+ }
108
+ catch {
109
+ // File doesn't exist
110
+ }
111
+ }
112
+ // Detect package manager
113
+ if (configFiles.includes('package.json')) {
114
+ if (await fileExists(join(rootPath, 'bun.lockb'))) {
115
+ packageManager = 'bun';
116
+ }
117
+ else if (await fileExists(join(rootPath, 'pnpm-lock.yaml'))) {
118
+ packageManager = 'pnpm';
119
+ }
120
+ else if (await fileExists(join(rootPath, 'yarn.lock'))) {
121
+ packageManager = 'yarn';
122
+ }
123
+ else {
124
+ packageManager = 'npm';
125
+ }
126
+ }
127
+ // Analyze package.json for frameworks
128
+ const packageJsonPath = join(rootPath, 'package.json');
129
+ if (await fileExists(packageJsonPath)) {
130
+ try {
131
+ const content = await readFile(packageJsonPath, 'utf-8');
132
+ const pkg = JSON.parse(content);
133
+ const allDeps = {
134
+ ...pkg.dependencies,
135
+ ...pkg.devDependencies,
136
+ };
137
+ // Detect frameworks
138
+ if (allDeps['next'])
139
+ frameworks.add('Next.js');
140
+ if (allDeps['react'])
141
+ frameworks.add('React');
142
+ if (allDeps['vue'])
143
+ frameworks.add('Vue');
144
+ if (allDeps['@angular/core'])
145
+ frameworks.add('Angular');
146
+ if (allDeps['svelte'])
147
+ frameworks.add('Svelte');
148
+ if (allDeps['express'])
149
+ frameworks.add('Express');
150
+ if (allDeps['fastify'])
151
+ frameworks.add('Fastify');
152
+ if (allDeps['koa'])
153
+ frameworks.add('Koa');
154
+ if (allDeps['nestjs'] || allDeps['@nestjs/core'])
155
+ frameworks.add('NestJS');
156
+ // Detect TypeScript
157
+ if (allDeps['typescript'])
158
+ languages.add('TypeScript');
159
+ }
160
+ catch {
161
+ // Ignore parse errors
162
+ }
163
+ }
164
+ // Scan for code files to detect languages
165
+ await scanForLanguages(rootPath, languages, 3);
166
+ return {
167
+ rootPath,
168
+ languages: Array.from(languages),
169
+ frameworks: Array.from(frameworks),
170
+ packageManager,
171
+ configFiles,
172
+ };
173
+ }
174
+ /**
175
+ * Find code snippets relevant to the user's intent
176
+ */
177
+ async function findRelevantSnippets(rootPath, intent, projectInfo) {
178
+ const snippets = [];
179
+ const targetFiles = [];
180
+ // Find files mentioned in entities
181
+ for (const entity of intent.entities) {
182
+ if (entity.type === 'file') {
183
+ const filePath = await findFile(rootPath, entity.value);
184
+ if (filePath) {
185
+ targetFiles.push(filePath);
186
+ }
187
+ }
188
+ }
189
+ // If no specific files, scan for relevant files based on keywords
190
+ if (targetFiles.length === 0) {
191
+ const relevantFiles = await scanForRelevantFiles(rootPath, intent.keywords, 5);
192
+ targetFiles.push(...relevantFiles);
193
+ }
194
+ // Read and create snippets
195
+ for (const filePath of targetFiles.slice(0, MAX_SNIPPETS)) {
196
+ try {
197
+ const content = await readFile(filePath, 'utf-8');
198
+ const language = detectLanguage(filePath);
199
+ snippets.push({
200
+ filePath: relative(rootPath, filePath),
201
+ content: content.substring(0, MAX_SNIPPET_LENGTH),
202
+ language,
203
+ lineRange: { start: 1, end: content.split('\n').length },
204
+ relevance: calculateRelevance(content, intent.keywords),
205
+ });
206
+ }
207
+ catch {
208
+ // Skip unreadable files
209
+ }
210
+ }
211
+ // Sort by relevance
212
+ return snippets.sort((a, b) => b.relevance - a.relevance);
213
+ }
214
+ // ============================================================================
215
+ // Helper Functions
216
+ // ============================================================================
217
+ /**
218
+ * Check if a file exists
219
+ */
220
+ async function fileExists(path) {
221
+ try {
222
+ await stat(path);
223
+ return true;
224
+ }
225
+ catch {
226
+ return false;
227
+ }
228
+ }
229
+ /**
230
+ * Scan directory for languages used
231
+ */
232
+ async function scanForLanguages(dir, languages, depth) {
233
+ if (depth <= 0)
234
+ return;
235
+ try {
236
+ const entries = await readdir(dir, { withFileTypes: true });
237
+ for (const entry of entries) {
238
+ if (entry.isDirectory()) {
239
+ if (!IGNORE_DIRS.has(entry.name)) {
240
+ await scanForLanguages(join(dir, entry.name), languages, depth - 1);
241
+ }
242
+ }
243
+ else if (entry.isFile()) {
244
+ const ext = extname(entry.name).toLowerCase();
245
+ const lang = EXTENSION_TO_LANGUAGE[ext];
246
+ if (lang) {
247
+ languages.add(lang);
248
+ }
249
+ }
250
+ }
251
+ }
252
+ catch {
253
+ // Ignore read errors
254
+ }
255
+ }
256
+ /**
257
+ * Find a file by name in the project
258
+ */
259
+ async function findFile(rootPath, fileName) {
260
+ const queue = [rootPath];
261
+ while (queue.length > 0) {
262
+ const dir = queue.shift();
263
+ try {
264
+ const entries = await readdir(dir, { withFileTypes: true });
265
+ for (const entry of entries) {
266
+ const fullPath = join(dir, entry.name);
267
+ if (entry.isFile() && entry.name === fileName) {
268
+ return fullPath;
269
+ }
270
+ if (entry.isDirectory() && !IGNORE_DIRS.has(entry.name)) {
271
+ queue.push(fullPath);
272
+ }
273
+ }
274
+ }
275
+ catch {
276
+ // Ignore read errors
277
+ }
278
+ }
279
+ return null;
280
+ }
281
+ /**
282
+ * Scan for files relevant to keywords
283
+ */
284
+ async function scanForRelevantFiles(rootPath, keywords, maxFiles) {
285
+ const files = [];
286
+ const queue = [rootPath];
287
+ while (queue.length > 0 && files.length < maxFiles * 2) {
288
+ const dir = queue.shift();
289
+ try {
290
+ const entries = await readdir(dir, { withFileTypes: true });
291
+ for (const entry of entries) {
292
+ const fullPath = join(dir, entry.name);
293
+ if (entry.isFile() && CODE_EXTENSIONS.has(extname(entry.name).toLowerCase())) {
294
+ const score = keywords.filter((kw) => entry.name.toLowerCase().includes(kw.toLowerCase())).length;
295
+ if (score > 0) {
296
+ files.push({ path: fullPath, score });
297
+ }
298
+ }
299
+ if (entry.isDirectory() && !IGNORE_DIRS.has(entry.name)) {
300
+ queue.push(fullPath);
301
+ }
302
+ }
303
+ }
304
+ catch {
305
+ // Ignore read errors
306
+ }
307
+ }
308
+ return files
309
+ .sort((a, b) => b.score - a.score)
310
+ .slice(0, maxFiles)
311
+ .map((f) => f.path);
312
+ }
313
+ /**
314
+ * Detect language from file extension
315
+ */
316
+ function detectLanguage(filePath) {
317
+ const ext = extname(filePath).toLowerCase();
318
+ return EXTENSION_TO_LANGUAGE[ext] ?? 'text';
319
+ }
320
+ /**
321
+ * Calculate relevance score based on keyword matches
322
+ */
323
+ function calculateRelevance(content, keywords) {
324
+ if (keywords.length === 0)
325
+ return 0.5;
326
+ const lowerContent = content.toLowerCase();
327
+ const matches = keywords.filter((kw) => lowerContent.includes(kw.toLowerCase())).length;
328
+ return Math.min(1, matches / keywords.length);
329
+ }
330
+ /**
331
+ * Extension to language mapping
332
+ */
333
+ const EXTENSION_TO_LANGUAGE = {
334
+ '.ts': 'TypeScript',
335
+ '.tsx': 'TypeScript',
336
+ '.js': 'JavaScript',
337
+ '.jsx': 'JavaScript',
338
+ '.mjs': 'JavaScript',
339
+ '.cjs': 'JavaScript',
340
+ '.py': 'Python',
341
+ '.pyw': 'Python',
342
+ '.rs': 'Rust',
343
+ '.go': 'Go',
344
+ '.java': 'Java',
345
+ '.rb': 'Ruby',
346
+ '.php': 'PHP',
347
+ '.swift': 'Swift',
348
+ '.kt': 'Kotlin',
349
+ '.kts': 'Kotlin',
350
+ '.c': 'C',
351
+ '.h': 'C',
352
+ '.cpp': 'C++',
353
+ '.hpp': 'C++',
354
+ '.cc': 'C++',
355
+ '.cs': 'C#',
356
+ '.vue': 'Vue',
357
+ '.svelte': 'Svelte',
358
+ };
359
+ // ============================================================================
360
+ // Exports
361
+ // ============================================================================
362
+ export { CODE_EXTENSIONS, CONFIG_FILES, IGNORE_DIRS };
363
+ //# sourceMappingURL=context.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context.js","sourceRoot":"","sources":["../../src/tools/context.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,40 @@
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 type { SolutionVariant, Critique, CritiqueResult, CritiqueAssessment } from '../types.js';
12
+ /**
13
+ * Critique all solution variants
14
+ */
15
+ export declare function critiqueVariants(variants: SolutionVariant[]): Promise<CritiqueResult>;
16
+ /**
17
+ * Get the most common issues across variants
18
+ */
19
+ export declare function getCommonIssues(critiques: Critique[]): {
20
+ category: keyof CritiqueAssessment;
21
+ count: number;
22
+ examples: string[];
23
+ }[];
24
+ /**
25
+ * Get improvement priorities based on critiques
26
+ */
27
+ export declare function getImprovementPriorities(critiques: Critique[]): {
28
+ area: keyof CritiqueAssessment;
29
+ averageScore: number;
30
+ priority: 'high' | 'medium' | 'low';
31
+ }[];
32
+ /**
33
+ * Compare two critiques
34
+ */
35
+ export declare function compareCritiques(a: Critique, b: Critique): {
36
+ winner: string;
37
+ margin: number;
38
+ comparison: Record<keyof CritiqueAssessment, 'a' | 'b' | 'tie'>;
39
+ };
40
+ //# sourceMappingURL=critique.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"critique.d.ts","sourceRoot":"","sources":["../../src/tools/critique.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EACV,eAAe,EACf,QAAQ,EACR,cAAc,EACd,kBAAkB,EAEnB,MAAM,aAAa,CAAC;AAQrB;;GAEG;AACH,wBAAsB,gBAAgB,CACpC,QAAQ,EAAE,eAAe,EAAE,GAC1B,OAAO,CAAC,cAAc,CAAC,CAyBzB;AAsQD;;GAEG;AACH,wBAAgB,eAAe,CAAC,SAAS,EAAE,QAAQ,EAAE,GAAG;IACtD,QAAQ,EAAE,MAAM,kBAAkB,CAAC;IACnC,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB,EAAE,CAkBF;AAED;;GAEG;AACH,wBAAgB,wBAAwB,CAAC,SAAS,EAAE,QAAQ,EAAE,GAAG;IAC/D,IAAI,EAAE,MAAM,kBAAkB,CAAC;IAC/B,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,GAAG,QAAQ,GAAG,KAAK,CAAC;CACrC,EAAE,CAsBF;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,QAAQ,GAAG;IAC1D,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC,MAAM,kBAAkB,EAAE,GAAG,GAAG,GAAG,GAAG,KAAK,CAAC,CAAC;CACjE,CAcA"}