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,328 @@
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 { getOllamaClient, PromptTemplates } from './ollama.js';
11
+ import { logger } from '../utils.js';
12
+ // ============================================================================
13
+ // Configuration
14
+ // ============================================================================
15
+ const MAX_TASKS = 10;
16
+ const MIN_TASKS = 1;
17
+ // ============================================================================
18
+ // Task Decomposition
19
+ // ============================================================================
20
+ /**
21
+ * Decompose a complex request into actionable tasks
22
+ */
23
+ export async function decomposeTask(context) {
24
+ logger.debug({ intent: context.intent.primaryIntent }, 'Starting task decomposition');
25
+ const { intent, codeSnippets, projectInfo } = context;
26
+ // For simple, high-confidence intents, use rule-based decomposition
27
+ if (intent.confidence >= 0.9 && isSimpleIntent(intent.primaryIntent)) {
28
+ return ruleBasedDecomposition(context);
29
+ }
30
+ // For complex requests, use LLM-based decomposition
31
+ return llmDecomposition(context);
32
+ }
33
+ /**
34
+ * Check if intent is simple enough for rule-based decomposition
35
+ */
36
+ function isSimpleIntent(intentType) {
37
+ return ['explanation', 'documentation', 'general_question'].includes(intentType);
38
+ }
39
+ /**
40
+ * Rule-based decomposition for simple intents
41
+ */
42
+ function ruleBasedDecomposition(context) {
43
+ const { intent } = context;
44
+ const tasks = [];
45
+ switch (intent.primaryIntent) {
46
+ case 'explanation':
47
+ tasks.push(createTask('research', 'Research the concept', 1, 'low'), createTask('implementation', 'Prepare clear explanation', 2, 'low', ['1']));
48
+ break;
49
+ case 'documentation':
50
+ tasks.push(createTask('research', 'Analyze code to document', 1, 'low'), createTask('documentation', 'Write documentation', 2, 'medium', ['1']), createTask('review', 'Review for clarity', 3, 'low', ['2']));
51
+ break;
52
+ case 'general_question':
53
+ tasks.push(createTask('research', 'Research the answer', 1, 'low'), createTask('implementation', 'Formulate response', 2, 'low', ['1']));
54
+ break;
55
+ default:
56
+ tasks.push(createTask('research', 'Understand requirements', 1, 'low'), createTask('implementation', 'Implement solution', 2, 'medium', ['1']));
57
+ }
58
+ return {
59
+ summary: summarizeIntent(context),
60
+ tasks,
61
+ executionOrder: tasks.map((t) => t.id),
62
+ overallComplexity: 'low',
63
+ };
64
+ }
65
+ /**
66
+ * LLM-based decomposition for complex requests
67
+ */
68
+ async function llmDecomposition(context) {
69
+ const client = getOllamaClient();
70
+ const prompt = buildDecompositionPrompt(context);
71
+ const response = await client.generateJson(prompt, {
72
+ systemPrompt: PromptTemplates.taskDecomposition,
73
+ temperature: 0.4,
74
+ });
75
+ if (response.data) {
76
+ const tasks = response.data.tasks
77
+ .slice(0, MAX_TASKS)
78
+ .map((t, index) => ({
79
+ id: (index + 1).toString(),
80
+ description: t.description,
81
+ type: t.type,
82
+ priority: Math.min(5, Math.max(1, t.priority)),
83
+ dependencies: t.dependencies,
84
+ complexity: normalizeComplexity(t.complexity),
85
+ approach: t.approach,
86
+ }));
87
+ return {
88
+ summary: response.data.summary,
89
+ tasks,
90
+ executionOrder: calculateExecutionOrder(tasks),
91
+ overallComplexity: normalizeComplexity(response.data.overallComplexity),
92
+ };
93
+ }
94
+ // Fallback to simple decomposition
95
+ logger.warn('LLM decomposition failed, using fallback');
96
+ return fallbackDecomposition(context);
97
+ }
98
+ /**
99
+ * Build the decomposition prompt with context
100
+ */
101
+ function buildDecompositionPrompt(context) {
102
+ const { intent, codeSnippets, projectInfo, gitContext } = context;
103
+ let prompt = `Decompose this development task into actionable subtasks.
104
+
105
+ ## User Intent
106
+ - Type: ${intent.primaryIntent}
107
+ - Keywords: ${intent.keywords.join(', ')}
108
+ - Entities: ${intent.entities.map((e) => `${e.type}: ${e.value}`).join(', ')}
109
+ `;
110
+ if (projectInfo) {
111
+ prompt += `
112
+ ## Project Context
113
+ - Languages: ${projectInfo.languages.join(', ')}
114
+ - Frameworks: ${projectInfo.frameworks.join(', ')}
115
+ - Package Manager: ${projectInfo.packageManager ?? 'unknown'}
116
+ `;
117
+ }
118
+ if (gitContext) {
119
+ prompt += `
120
+ ## Git Context
121
+ - Branch: ${gitContext.currentBranch}
122
+ - Has uncommitted changes: ${gitContext.isDirty}
123
+ - Recent commits: ${gitContext.recentCommits.slice(0, 3).map((c) => c.message).join('; ')}
124
+ `;
125
+ }
126
+ if (codeSnippets.length > 0) {
127
+ prompt += `
128
+ ## Relevant Code
129
+ ${codeSnippets.slice(0, 2).map((s) => `File: ${s.filePath}\n\`\`\`${s.language}\n${s.content.substring(0, 500)}\n\`\`\``).join('\n\n')}
130
+ `;
131
+ }
132
+ prompt += `
133
+ ## Output Format
134
+ Provide a JSON object with:
135
+ {
136
+ "summary": "Brief description of the overall task",
137
+ "tasks": [
138
+ {
139
+ "description": "Task description",
140
+ "type": "research|design|implementation|testing|documentation|review",
141
+ "priority": 1-5,
142
+ "complexity": "low|medium|high",
143
+ "dependencies": ["task_ids this depends on"],
144
+ "approach": "Suggested approach (optional)"
145
+ }
146
+ ],
147
+ "overallComplexity": "low|medium|high"
148
+ }`;
149
+ return prompt;
150
+ }
151
+ /**
152
+ * Calculate optimal execution order based on dependencies
153
+ */
154
+ function calculateExecutionOrder(tasks) {
155
+ const order = [];
156
+ const completed = new Set();
157
+ const remaining = new Set(tasks.map((t) => t.id));
158
+ // Topological sort
159
+ while (remaining.size > 0) {
160
+ let progress = false;
161
+ for (const taskId of remaining) {
162
+ const task = tasks.find((t) => t.id === taskId);
163
+ if (!task)
164
+ continue;
165
+ // Check if all dependencies are completed
166
+ const dependenciesMet = task.dependencies.every((dep) => completed.has(dep));
167
+ if (dependenciesMet) {
168
+ order.push(taskId);
169
+ completed.add(taskId);
170
+ remaining.delete(taskId);
171
+ progress = true;
172
+ }
173
+ }
174
+ // If no progress, we have a cycle - just add remaining in order
175
+ if (!progress) {
176
+ for (const taskId of remaining) {
177
+ order.push(taskId);
178
+ }
179
+ break;
180
+ }
181
+ }
182
+ return order;
183
+ }
184
+ /**
185
+ * Fallback decomposition when LLM fails
186
+ */
187
+ function fallbackDecomposition(context) {
188
+ const { intent } = context;
189
+ const tasks = [
190
+ createTask('research', 'Understand requirements and gather context', 1, 'low'),
191
+ createTask('design', 'Design solution approach', 2, 'medium', ['1']),
192
+ createTask('implementation', 'Implement the solution', 3, 'medium', ['2']),
193
+ createTask('testing', 'Test and validate', 4, 'low', ['3']),
194
+ createTask('review', 'Review and refine', 5, 'low', ['4']),
195
+ ];
196
+ return {
197
+ summary: summarizeIntent(context),
198
+ tasks,
199
+ executionOrder: tasks.map((t) => t.id),
200
+ overallComplexity: 'medium',
201
+ };
202
+ }
203
+ // ============================================================================
204
+ // Helper Functions
205
+ // ============================================================================
206
+ /**
207
+ * Create a task with defaults
208
+ */
209
+ function createTask(type, description, priority, complexity, dependencies = []) {
210
+ return {
211
+ id: priority.toString(),
212
+ description,
213
+ type,
214
+ priority,
215
+ dependencies,
216
+ complexity,
217
+ };
218
+ }
219
+ /**
220
+ * Normalize complexity string to valid value
221
+ */
222
+ function normalizeComplexity(value) {
223
+ const normalized = value.toLowerCase();
224
+ if (normalized === 'low' || normalized === 'medium' || normalized === 'high') {
225
+ return normalized;
226
+ }
227
+ return 'medium';
228
+ }
229
+ /**
230
+ * Create a summary from intent
231
+ */
232
+ function summarizeIntent(context) {
233
+ const { intent } = context;
234
+ const action = intent.primaryIntent.replace(/_/g, ' ');
235
+ const entities = intent.entities.map((e) => e.value).join(', ');
236
+ if (entities) {
237
+ return `${action} involving ${entities}`;
238
+ }
239
+ return action;
240
+ }
241
+ // ============================================================================
242
+ // Task Utilities
243
+ // ============================================================================
244
+ /**
245
+ * Estimate total effort from tasks
246
+ */
247
+ export function estimateTotalEffort(tasks) {
248
+ const efforts = tasks.map((task) => {
249
+ switch (task.complexity) {
250
+ case 'low': return { min: 0.5, max: 2 };
251
+ case 'medium': return { min: 2, max: 8 };
252
+ case 'high': return { min: 8, max: 24 };
253
+ }
254
+ });
255
+ const minHours = efforts.reduce((sum, e) => sum + e.min, 0);
256
+ const maxHours = efforts.reduce((sum, e) => sum + e.max, 0);
257
+ return {
258
+ minHours,
259
+ maxHours,
260
+ averageHours: (minHours + maxHours) / 2,
261
+ };
262
+ }
263
+ /**
264
+ * Get critical path (longest dependency chain)
265
+ */
266
+ export function getCriticalPath(tasks) {
267
+ const taskMap = new Map(tasks.map((t) => [t.id, t]));
268
+ let longestPath = [];
269
+ function findPath(taskId, currentPath) {
270
+ const task = taskMap.get(taskId);
271
+ if (!task)
272
+ return;
273
+ const newPath = [...currentPath, taskId];
274
+ if (newPath.length > longestPath.length) {
275
+ longestPath = newPath;
276
+ }
277
+ // Find tasks that depend on this one
278
+ for (const t of tasks) {
279
+ if (t.dependencies.includes(taskId)) {
280
+ findPath(t.id, newPath);
281
+ }
282
+ }
283
+ }
284
+ // Start from tasks with no dependencies
285
+ for (const task of tasks) {
286
+ if (task.dependencies.length === 0) {
287
+ findPath(task.id, []);
288
+ }
289
+ }
290
+ return longestPath;
291
+ }
292
+ /**
293
+ * Check if tasks form a valid DAG (no cycles)
294
+ */
295
+ export function validateTaskGraph(tasks) {
296
+ const visited = new Set();
297
+ const recursionStack = new Set();
298
+ const taskMap = new Map(tasks.map((t) => [t.id, t]));
299
+ function hasCycle(taskId) {
300
+ visited.add(taskId);
301
+ recursionStack.add(taskId);
302
+ const task = taskMap.get(taskId);
303
+ if (task) {
304
+ for (const depId of task.dependencies) {
305
+ if (!visited.has(depId)) {
306
+ const cycle = hasCycle(depId);
307
+ if (cycle)
308
+ return cycle;
309
+ }
310
+ else if (recursionStack.has(depId)) {
311
+ return [depId, taskId];
312
+ }
313
+ }
314
+ }
315
+ recursionStack.delete(taskId);
316
+ return null;
317
+ }
318
+ for (const task of tasks) {
319
+ if (!visited.has(task.id)) {
320
+ const cycle = hasCycle(task.id);
321
+ if (cycle) {
322
+ return { valid: false, cycleNodes: cycle };
323
+ }
324
+ }
325
+ }
326
+ return { valid: true };
327
+ }
328
+ //# sourceMappingURL=decompose.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"decompose.js","sourceRoot":"","sources":["../../src/tools/decompose.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,66 @@
1
+ /**
2
+ * Atlas Server - Git Context Tool
3
+ *
4
+ * Provides git repository context including:
5
+ * - Current branch and status
6
+ * - Recent commit history
7
+ * - Uncommitted changes
8
+ * - File history and blame information
9
+ */
10
+ import type { GitContext, GitCommit } from '../types.js';
11
+ /**
12
+ * Get comprehensive git context for a repository
13
+ */
14
+ export declare function getGitContext(repoPath: string, commitLimit?: number): Promise<GitContext | null>;
15
+ /**
16
+ * Get the diff for uncommitted changes
17
+ */
18
+ export declare function getUncommittedDiff(repoPath: string): Promise<string | null>;
19
+ /**
20
+ * Get the diff for a specific commit
21
+ */
22
+ export declare function getCommitDiff(repoPath: string, commitHash: string): Promise<string | null>;
23
+ /**
24
+ * Get blame information for a file
25
+ */
26
+ export declare function getFileBlame(repoPath: string, filePath: string): Promise<BlameInfo[] | null>;
27
+ /**
28
+ * Get file history (commits that modified a file)
29
+ */
30
+ export declare function getFileHistory(repoPath: string, filePath: string, limit?: number): Promise<GitCommit[]>;
31
+ /**
32
+ * Get list of files changed between two refs
33
+ */
34
+ export declare function getChangedFiles(repoPath: string, fromRef: string, toRef?: string): Promise<string[]>;
35
+ /**
36
+ * Get the current HEAD commit hash
37
+ */
38
+ export declare function getHeadCommit(repoPath: string): Promise<string | null>;
39
+ /**
40
+ * List all branches (local and remote)
41
+ */
42
+ export declare function listBranches(repoPath: string): Promise<{
43
+ current: string;
44
+ local: string[];
45
+ remote: string[];
46
+ }>;
47
+ export interface BlameInfo {
48
+ lineNumber: number;
49
+ commitHash: string;
50
+ author: string;
51
+ date: string;
52
+ content: string;
53
+ }
54
+ /**
55
+ * Create a new branch
56
+ */
57
+ export declare function createBranch(repoPath: string, branchName: string, startPoint?: string): Promise<boolean>;
58
+ /**
59
+ * Stage files for commit
60
+ */
61
+ export declare function stageFiles(repoPath: string, files: string[]): Promise<boolean>;
62
+ /**
63
+ * Create a commit
64
+ */
65
+ export declare function createCommit(repoPath: string, message: string): Promise<string | null>;
66
+ //# sourceMappingURL=git.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"git.d.ts","sourceRoot":"","sources":["../../src/tools/git.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,KAAK,EAAE,UAAU,EAAE,SAAS,EAAa,MAAM,aAAa,CAAC;AAapE;;GAEG;AACH,wBAAsB,aAAa,CACjC,QAAQ,EAAE,MAAM,EAChB,WAAW,GAAE,MAA6B,GACzC,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,CA0C5B;AAED;;GAEG;AACH,wBAAsB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CASjF;AAED;;GAEG;AACH,wBAAsB,aAAa,CACjC,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CASxB;AAED;;GAEG;AACH,wBAAsB,YAAY,CAChC,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,SAAS,EAAE,GAAG,IAAI,CAAC,CAS7B;AAED;;GAEG;AACH,wBAAsB,cAAc,CAClC,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,EAChB,KAAK,GAAE,MAAW,GACjB,OAAO,CAAC,SAAS,EAAE,CAAC,CAYtB;AAED;;GAEG;AACH,wBAAsB,eAAe,CACnC,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,EACf,KAAK,GAAE,MAAe,GACrB,OAAO,CAAC,MAAM,EAAE,CAAC,CASnB;AAED;;GAEG;AACH,wBAAsB,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAS5E;AAED;;GAEG;AACH,wBAAsB,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC;IAC5D,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB,CAAC,CAgBD;AA4FD,MAAM,WAAW,SAAS;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACjB;AAuDD;;GAEG;AACH,wBAAsB,YAAY,CAChC,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,MAAM,EAClB,UAAU,CAAC,EAAE,MAAM,GAClB,OAAO,CAAC,OAAO,CAAC,CAclB;AAED;;GAEG;AACH,wBAAsB,UAAU,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC,CAUpF;AAED;;GAEG;AACH,wBAAsB,YAAY,CAChC,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAUxB"}