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,357 @@
1
+ /**
2
+ * Atlas MCP Server - Unified LLM Provider
3
+ *
4
+ * Supports multiple LLM backends with a unified interface:
5
+ * - Ollama (local, free)
6
+ * - OpenAI (GPT-4, GPT-4-turbo, GPT-3.5-turbo)
7
+ * - Anthropic (Claude 3.5, Claude 3)
8
+ *
9
+ * Auto-detects available providers and falls back gracefully.
10
+ */
11
+ import { Ollama } from 'ollama';
12
+ import OpenAI from 'openai';
13
+ import Anthropic from '@anthropic-ai/sdk';
14
+ import { logger, retry, getErrorMessage, extractJson } from '../utils.js';
15
+ // ============================================================================
16
+ // Abstract Provider Interface
17
+ // ============================================================================
18
+ export class LLMProvider {
19
+ }
20
+ // ============================================================================
21
+ // Ollama Provider
22
+ // ============================================================================
23
+ class OllamaProvider extends LLMProvider {
24
+ type = 'ollama';
25
+ client;
26
+ _model = '';
27
+ initialized = false;
28
+ baseUrl;
29
+ maxRetries;
30
+ constructor(config) {
31
+ super();
32
+ this.baseUrl = config.ollamaBaseUrl ?? 'http://localhost:11434';
33
+ this.client = new Ollama({ host: this.baseUrl });
34
+ this._model = config.ollamaModel ?? '';
35
+ this.maxRetries = config.maxRetries ?? 3;
36
+ }
37
+ get model() {
38
+ return this._model || 'auto-detect';
39
+ }
40
+ async isAvailable() {
41
+ try {
42
+ const models = await this.client.list();
43
+ if (models.models.length === 0) {
44
+ logger.debug('Ollama running but no models installed');
45
+ return false;
46
+ }
47
+ // Auto-select model if not specified
48
+ if (!this._model) {
49
+ this._model = models.models[0].name;
50
+ logger.info({ model: this._model }, 'Ollama: auto-selected model');
51
+ }
52
+ else {
53
+ // Verify specified model exists
54
+ const exists = models.models.some(m => m.name.includes(this._model.split(':')[0]));
55
+ if (!exists) {
56
+ this._model = models.models[0].name;
57
+ logger.warn({ fallback: this._model }, 'Ollama: specified model not found, using fallback');
58
+ }
59
+ }
60
+ this.initialized = true;
61
+ return true;
62
+ }
63
+ catch {
64
+ logger.debug('Ollama not available');
65
+ return false;
66
+ }
67
+ }
68
+ async complete(prompt, options = {}) {
69
+ if (!this.initialized)
70
+ await this.isAvailable();
71
+ const startTime = performance.now();
72
+ const response = await retry(async () => {
73
+ const fullPrompt = options.systemPrompt
74
+ ? `${options.systemPrompt}\n\n${prompt}`
75
+ : prompt;
76
+ return await this.client.generate({
77
+ model: this._model,
78
+ prompt: fullPrompt,
79
+ options: {
80
+ temperature: options.temperature ?? 0.7,
81
+ num_predict: options.maxTokens ?? 2048,
82
+ stop: options.stop,
83
+ },
84
+ stream: false,
85
+ });
86
+ }, { maxAttempts: this.maxRetries });
87
+ return {
88
+ text: response.response,
89
+ provider: 'ollama',
90
+ model: this._model,
91
+ usage: {
92
+ promptTokens: response.prompt_eval_count ?? 0,
93
+ completionTokens: response.eval_count ?? 0,
94
+ totalTokens: (response.prompt_eval_count ?? 0) + (response.eval_count ?? 0),
95
+ },
96
+ durationMs: Math.round(performance.now() - startTime),
97
+ };
98
+ }
99
+ async completeJson(prompt, options = {}) {
100
+ const jsonPrompt = `${prompt}\n\nIMPORTANT: Respond with valid JSON only. No markdown, no explanation.`;
101
+ const response = await this.complete(jsonPrompt, { ...options, temperature: options.temperature ?? 0.3 });
102
+ return { data: extractJson(response.text), raw: response.text };
103
+ }
104
+ }
105
+ // ============================================================================
106
+ // OpenAI Provider
107
+ // ============================================================================
108
+ class OpenAIProvider extends LLMProvider {
109
+ type = 'openai';
110
+ client;
111
+ _model;
112
+ maxRetries;
113
+ constructor(config) {
114
+ super();
115
+ this._model = config.openaiModel ?? 'gpt-4-turbo-preview';
116
+ this.maxRetries = config.maxRetries ?? 3;
117
+ this.client = new OpenAI({
118
+ apiKey: config.openaiApiKey,
119
+ baseURL: config.openaiBaseUrl,
120
+ maxRetries: this.maxRetries,
121
+ });
122
+ }
123
+ get model() {
124
+ return this._model;
125
+ }
126
+ async isAvailable() {
127
+ try {
128
+ // Quick test with minimal tokens
129
+ await this.client.chat.completions.create({
130
+ model: this._model,
131
+ messages: [{ role: 'user', content: 'hi' }],
132
+ max_tokens: 5,
133
+ });
134
+ return true;
135
+ }
136
+ catch (error) {
137
+ logger.debug({ error: getErrorMessage(error) }, 'OpenAI not available');
138
+ return false;
139
+ }
140
+ }
141
+ async complete(prompt, options = {}) {
142
+ const startTime = performance.now();
143
+ const messages = [];
144
+ if (options.systemPrompt) {
145
+ messages.push({ role: 'system', content: options.systemPrompt });
146
+ }
147
+ messages.push({ role: 'user', content: prompt });
148
+ const response = await this.client.chat.completions.create({
149
+ model: this._model,
150
+ messages,
151
+ temperature: options.temperature ?? 0.7,
152
+ max_tokens: options.maxTokens ?? 2048,
153
+ stop: options.stop,
154
+ response_format: options.jsonMode ? { type: 'json_object' } : undefined,
155
+ });
156
+ const choice = response.choices[0];
157
+ return {
158
+ text: choice?.message?.content ?? '',
159
+ provider: 'openai',
160
+ model: this._model,
161
+ usage: response.usage ? {
162
+ promptTokens: response.usage.prompt_tokens,
163
+ completionTokens: response.usage.completion_tokens,
164
+ totalTokens: response.usage.total_tokens,
165
+ } : undefined,
166
+ durationMs: Math.round(performance.now() - startTime),
167
+ };
168
+ }
169
+ async completeJson(prompt, options = {}) {
170
+ const response = await this.complete(prompt, { ...options, jsonMode: true });
171
+ return { data: extractJson(response.text), raw: response.text };
172
+ }
173
+ }
174
+ // ============================================================================
175
+ // Anthropic Provider
176
+ // ============================================================================
177
+ class AnthropicProvider extends LLMProvider {
178
+ type = 'anthropic';
179
+ client;
180
+ _model;
181
+ maxRetries;
182
+ constructor(config) {
183
+ super();
184
+ this._model = config.anthropicModel ?? 'claude-3-5-sonnet-20241022';
185
+ this.maxRetries = config.maxRetries ?? 3;
186
+ this.client = new Anthropic({
187
+ apiKey: config.anthropicApiKey,
188
+ maxRetries: this.maxRetries,
189
+ });
190
+ }
191
+ get model() {
192
+ return this._model;
193
+ }
194
+ async isAvailable() {
195
+ try {
196
+ await this.client.messages.create({
197
+ model: this._model,
198
+ max_tokens: 10,
199
+ messages: [{ role: 'user', content: 'hi' }],
200
+ });
201
+ return true;
202
+ }
203
+ catch (error) {
204
+ logger.debug({ error: getErrorMessage(error) }, 'Anthropic not available');
205
+ return false;
206
+ }
207
+ }
208
+ async complete(prompt, options = {}) {
209
+ const startTime = performance.now();
210
+ const response = await this.client.messages.create({
211
+ model: this._model,
212
+ max_tokens: options.maxTokens ?? 2048,
213
+ system: options.systemPrompt,
214
+ messages: [{ role: 'user', content: prompt }],
215
+ });
216
+ const textBlock = response.content.find(block => block.type === 'text');
217
+ const text = textBlock && 'text' in textBlock ? textBlock.text : '';
218
+ return {
219
+ text,
220
+ provider: 'anthropic',
221
+ model: this._model,
222
+ usage: {
223
+ promptTokens: response.usage.input_tokens,
224
+ completionTokens: response.usage.output_tokens,
225
+ totalTokens: response.usage.input_tokens + response.usage.output_tokens,
226
+ },
227
+ durationMs: Math.round(performance.now() - startTime),
228
+ };
229
+ }
230
+ async completeJson(prompt, options = {}) {
231
+ const jsonPrompt = `${prompt}\n\nIMPORTANT: Respond with valid JSON only. No markdown, no explanation.`;
232
+ const response = await this.complete(jsonPrompt, { ...options, temperature: options.temperature ?? 0.3 });
233
+ return { data: extractJson(response.text), raw: response.text };
234
+ }
235
+ }
236
+ // ============================================================================
237
+ // Provider Factory
238
+ // ============================================================================
239
+ let activeProvider = null;
240
+ /**
241
+ * Create a provider instance based on configuration
242
+ */
243
+ export function createProvider(config) {
244
+ switch (config.type) {
245
+ case 'ollama':
246
+ return new OllamaProvider(config);
247
+ case 'openai':
248
+ return new OpenAIProvider(config);
249
+ case 'anthropic':
250
+ return new AnthropicProvider(config);
251
+ default:
252
+ return new OllamaProvider(config);
253
+ }
254
+ }
255
+ /**
256
+ * Get or create the active provider with auto-detection
257
+ */
258
+ export async function getActiveProvider(config) {
259
+ if (activeProvider)
260
+ return activeProvider;
261
+ const effectiveConfig = config ?? {
262
+ type: process.env['LLM_PROVIDER'] ?? 'auto',
263
+ // Ollama
264
+ ollamaBaseUrl: process.env['OLLAMA_BASE_URL'] ?? 'http://localhost:11434',
265
+ ollamaModel: process.env['OLLAMA_MODEL'] ?? '',
266
+ // OpenAI
267
+ openaiApiKey: process.env['OPENAI_API_KEY'],
268
+ openaiModel: process.env['OPENAI_MODEL'] ?? 'gpt-4-turbo-preview',
269
+ openaiBaseUrl: process.env['OPENAI_BASE_URL'],
270
+ // Anthropic
271
+ anthropicApiKey: process.env['ANTHROPIC_API_KEY'],
272
+ anthropicModel: process.env['ANTHROPIC_MODEL'] ?? 'claude-3-5-sonnet-20241022',
273
+ maxRetries: 3,
274
+ };
275
+ // If specific provider requested, use it
276
+ if (effectiveConfig.type !== 'auto') {
277
+ activeProvider = createProvider(effectiveConfig);
278
+ const available = await activeProvider.isAvailable();
279
+ if (!available) {
280
+ throw new Error(`Requested provider '${effectiveConfig.type}' is not available`);
281
+ }
282
+ logger.info({ provider: effectiveConfig.type, model: activeProvider.model }, 'Using configured provider');
283
+ return activeProvider;
284
+ }
285
+ // Auto-detect: try providers in order of preference
286
+ const providers = [
287
+ {
288
+ name: 'anthropic',
289
+ check: () => !!effectiveConfig.anthropicApiKey,
290
+ create: () => new AnthropicProvider(effectiveConfig),
291
+ },
292
+ {
293
+ name: 'openai',
294
+ check: () => !!effectiveConfig.openaiApiKey,
295
+ create: () => new OpenAIProvider(effectiveConfig),
296
+ },
297
+ {
298
+ name: 'ollama',
299
+ check: () => true, // Always try Ollama
300
+ create: () => new OllamaProvider(effectiveConfig),
301
+ },
302
+ ];
303
+ for (const { name, check, create } of providers) {
304
+ if (!check())
305
+ continue;
306
+ const provider = create();
307
+ const available = await provider.isAvailable();
308
+ if (available) {
309
+ activeProvider = provider;
310
+ logger.info({ provider: name, model: provider.model }, 'Auto-detected provider');
311
+ return provider;
312
+ }
313
+ }
314
+ throw new Error('No LLM provider available. Please configure one of:\n' +
315
+ '- OLLAMA_BASE_URL (with Ollama running)\n' +
316
+ '- OPENAI_API_KEY\n' +
317
+ '- ANTHROPIC_API_KEY');
318
+ }
319
+ /**
320
+ * Reset the active provider (for testing or reconfiguration)
321
+ */
322
+ export function resetProvider() {
323
+ activeProvider = null;
324
+ }
325
+ /**
326
+ * Check if any provider is available
327
+ */
328
+ export async function checkProviders() {
329
+ const config = {
330
+ type: 'auto',
331
+ ollamaBaseUrl: process.env['OLLAMA_BASE_URL'] ?? 'http://localhost:11434',
332
+ openaiApiKey: process.env['OPENAI_API_KEY'],
333
+ anthropicApiKey: process.env['ANTHROPIC_API_KEY'],
334
+ };
335
+ const available = [];
336
+ // Check Ollama
337
+ const ollama = new OllamaProvider(config);
338
+ if (await ollama.isAvailable())
339
+ available.push('ollama');
340
+ // Check OpenAI
341
+ if (config.openaiApiKey) {
342
+ const openai = new OpenAIProvider(config);
343
+ if (await openai.isAvailable())
344
+ available.push('openai');
345
+ }
346
+ // Check Anthropic
347
+ if (config.anthropicApiKey) {
348
+ const anthropic = new AnthropicProvider(config);
349
+ if (await anthropic.isAvailable())
350
+ available.push('anthropic');
351
+ }
352
+ return {
353
+ available,
354
+ activeProvider: activeProvider?.type ?? null,
355
+ };
356
+ }
357
+ //# sourceMappingURL=llm-provider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"llm-provider.js","sourceRoot":"","sources":["../../src/providers/llm-provider.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,27 @@
1
+ /**
2
+ * Atlas Server - Fastify HTTP Server
3
+ *
4
+ * Production-ready HTTP server with:
5
+ * - Pipeline execution endpoints
6
+ * - Health checks
7
+ * - Request validation
8
+ * - Error handling
9
+ * - CORS support
10
+ * - Structured logging
11
+ */
12
+ import 'dotenv/config';
13
+ import { type FastifyInstance } from 'fastify';
14
+ import type { ServerConfig } from './types.js';
15
+ /**
16
+ * Create and configure the Fastify server
17
+ */
18
+ export declare function createServer(config?: Partial<ServerConfig>): Promise<FastifyInstance>;
19
+ /**
20
+ * Start the server
21
+ */
22
+ export declare function startServer(config?: Partial<ServerConfig>): Promise<FastifyInstance>;
23
+ /**
24
+ * Graceful shutdown handler
25
+ */
26
+ export declare function shutdown(server: FastifyInstance): Promise<void>;
27
+ //# sourceMappingURL=server.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,eAAe,CAAC;AACvB,OAAgB,EAAE,KAAK,eAAe,EAA0C,MAAM,SAAS,CAAC;AAEhG,OAAO,KAAK,EAAmB,YAAY,EAAE,MAAM,YAAY,CAAC;AA2BhE;;GAEG;AACH,wBAAsB,YAAY,CAAC,MAAM,GAAE,OAAO,CAAC,YAAY,CAAM,GAAG,OAAO,CAAC,eAAe,CAAC,CAyD/F;AA6MD;;GAEG;AACH,wBAAsB,WAAW,CAAC,MAAM,GAAE,OAAO,CAAC,YAAY,CAAM,GAAG,OAAO,CAAC,eAAe,CAAC,CAmC9F;AAED;;GAEG;AACH,wBAAsB,QAAQ,CAAC,MAAM,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CAUrE"}