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
package/dist/utils.js ADDED
@@ -0,0 +1,279 @@
1
+ /**
2
+ * Atlas Server - Utility Functions
3
+ *
4
+ * Shared utilities for logging, timing, error handling, and common operations.
5
+ */
6
+ import pino from 'pino';
7
+ // ============================================================================
8
+ // Logger Configuration
9
+ // ============================================================================
10
+ /**
11
+ * Create a configured pino logger instance
12
+ */
13
+ export function createLogger(level = 'info') {
14
+ return pino({
15
+ level,
16
+ transport: {
17
+ target: 'pino-pretty',
18
+ options: {
19
+ colorize: true,
20
+ translateTime: 'SYS:standard',
21
+ ignore: 'pid,hostname',
22
+ },
23
+ },
24
+ });
25
+ }
26
+ /** Default logger instance */
27
+ export const logger = createLogger(process.env['LOG_LEVEL'] ?? 'info');
28
+ // ============================================================================
29
+ // Timing Utilities
30
+ // ============================================================================
31
+ /**
32
+ * Measure execution time of an async function
33
+ */
34
+ export async function measureTime(fn) {
35
+ const start = performance.now();
36
+ const result = await fn();
37
+ const durationMs = Math.round(performance.now() - start);
38
+ return { result, durationMs };
39
+ }
40
+ /**
41
+ * Create a simple timer for measuring elapsed time
42
+ */
43
+ export function createTimer() {
44
+ const start = performance.now();
45
+ return {
46
+ elapsed: () => Math.round(performance.now() - start),
47
+ };
48
+ }
49
+ /**
50
+ * Safely stringify an object, handling circular references
51
+ */
52
+ export function safeStringify(obj, indent = 2) {
53
+ const seen = new WeakSet();
54
+ return JSON.stringify(obj, (_key, value) => {
55
+ if (typeof value === 'object' && value !== null) {
56
+ if (seen.has(value)) {
57
+ return '[Circular]';
58
+ }
59
+ seen.add(value);
60
+ }
61
+ return value;
62
+ }, indent);
63
+ }
64
+ /**
65
+ * Create a stage result with timing
66
+ */
67
+ export async function executeStage(name, fn) {
68
+ const start = performance.now();
69
+ try {
70
+ const output = await fn();
71
+ const durationMs = Math.round(performance.now() - start);
72
+ return {
73
+ stageResult: {
74
+ name,
75
+ success: true,
76
+ durationMs,
77
+ output,
78
+ },
79
+ output,
80
+ };
81
+ }
82
+ catch (error) {
83
+ const durationMs = Math.round(performance.now() - start);
84
+ logger.error({ stage: name, error }, `Stage ${name} failed`);
85
+ return {
86
+ stageResult: {
87
+ name,
88
+ success: false,
89
+ durationMs,
90
+ output: error instanceof Error ? error.message : 'Unknown error',
91
+ },
92
+ output: null,
93
+ };
94
+ }
95
+ }
96
+ // ============================================================================
97
+ // Error Utilities
98
+ // ============================================================================
99
+ /**
100
+ * Create a structured pipeline error
101
+ */
102
+ export function createPipelineError(code, message, stage, details) {
103
+ return {
104
+ code,
105
+ message,
106
+ stage,
107
+ details,
108
+ };
109
+ }
110
+ /**
111
+ * Type guard to check if value is an Error
112
+ */
113
+ export function isError(value) {
114
+ return value instanceof Error;
115
+ }
116
+ /**
117
+ * Extract error message from unknown error type
118
+ */
119
+ export function getErrorMessage(error) {
120
+ if (isError(error)) {
121
+ return error.message;
122
+ }
123
+ if (typeof error === 'string') {
124
+ return error;
125
+ }
126
+ return 'An unknown error occurred';
127
+ }
128
+ // ============================================================================
129
+ // String Utilities
130
+ // ============================================================================
131
+ /**
132
+ * Generate a unique ID for tracking
133
+ */
134
+ export function generateId() {
135
+ return `${Date.now().toString(36)}-${Math.random().toString(36).substring(2, 9)}`;
136
+ }
137
+ /**
138
+ * Truncate string to max length with ellipsis
139
+ */
140
+ export function truncate(str, maxLength) {
141
+ if (str.length <= maxLength)
142
+ return str;
143
+ return `${str.substring(0, maxLength - 3)}...`;
144
+ }
145
+ /**
146
+ * Clean and normalize whitespace in a string
147
+ */
148
+ export function normalizeWhitespace(str) {
149
+ return str.replace(/\s+/g, ' ').trim();
150
+ }
151
+ /**
152
+ * Extract code blocks from markdown text
153
+ */
154
+ export function extractCodeBlocks(text) {
155
+ const codeBlockRegex = /```(\w*)\n([\s\S]*?)```/g;
156
+ const blocks = [];
157
+ let match;
158
+ while ((match = codeBlockRegex.exec(text)) !== null) {
159
+ blocks.push({
160
+ language: match[1] ?? 'text',
161
+ code: match[2]?.trim() ?? '',
162
+ });
163
+ }
164
+ return blocks;
165
+ }
166
+ const defaultRetryOptions = {
167
+ maxAttempts: 3,
168
+ initialDelayMs: 1000,
169
+ maxDelayMs: 10000,
170
+ backoffMultiplier: 2,
171
+ };
172
+ /**
173
+ * Retry an async function with exponential backoff
174
+ */
175
+ export async function retry(fn, options = {}) {
176
+ const opts = { ...defaultRetryOptions, ...options };
177
+ let lastError;
178
+ let delay = opts.initialDelayMs;
179
+ for (let attempt = 1; attempt <= opts.maxAttempts; attempt++) {
180
+ try {
181
+ return await fn();
182
+ }
183
+ catch (error) {
184
+ lastError = error;
185
+ if (attempt === opts.maxAttempts) {
186
+ break;
187
+ }
188
+ logger.warn({ attempt, maxAttempts: opts.maxAttempts, delay }, 'Retrying after failure');
189
+ await sleep(delay);
190
+ delay = Math.min(delay * opts.backoffMultiplier, opts.maxDelayMs);
191
+ }
192
+ }
193
+ throw lastError;
194
+ }
195
+ /**
196
+ * Sleep for a specified duration
197
+ */
198
+ export function sleep(ms) {
199
+ return new Promise((resolve) => setTimeout(resolve, ms));
200
+ }
201
+ // ============================================================================
202
+ // JSON Utilities
203
+ // ============================================================================
204
+ /**
205
+ * Safely parse JSON with error handling
206
+ */
207
+ export function safeJsonParse(text) {
208
+ try {
209
+ const data = JSON.parse(text);
210
+ return { success: true, data };
211
+ }
212
+ catch {
213
+ return { success: false, error: 'Invalid JSON' };
214
+ }
215
+ }
216
+ /**
217
+ * Extract JSON from a text that might contain markdown or other content
218
+ */
219
+ export function extractJson(text) {
220
+ // Try to find JSON object in the text
221
+ const jsonMatch = text.match(/\{[\s\S]*\}/);
222
+ if (jsonMatch) {
223
+ const result = safeJsonParse(jsonMatch[0]);
224
+ if (result.success) {
225
+ return result.data;
226
+ }
227
+ }
228
+ // Try to find JSON array
229
+ const arrayMatch = text.match(/\[[\s\S]*\]/);
230
+ if (arrayMatch) {
231
+ const result = safeJsonParse(arrayMatch[0]);
232
+ if (result.success) {
233
+ return result.data;
234
+ }
235
+ }
236
+ return null;
237
+ }
238
+ // ============================================================================
239
+ // Validation Utilities
240
+ // ============================================================================
241
+ /**
242
+ * Check if a value is defined (not null or undefined)
243
+ */
244
+ export function isDefined(value) {
245
+ return value !== null && value !== undefined;
246
+ }
247
+ /**
248
+ * Ensure a value is defined or throw
249
+ */
250
+ export function ensureDefined(value, message) {
251
+ if (!isDefined(value)) {
252
+ throw new Error(message);
253
+ }
254
+ return value;
255
+ }
256
+ // ============================================================================
257
+ // Date Utilities
258
+ // ============================================================================
259
+ /**
260
+ * Get current timestamp as ISO string
261
+ */
262
+ export function nowISO() {
263
+ return new Date().toISOString();
264
+ }
265
+ /**
266
+ * Format milliseconds to human-readable duration
267
+ */
268
+ export function formatDuration(ms) {
269
+ if (ms < 1000) {
270
+ return `${ms}ms`;
271
+ }
272
+ if (ms < 60000) {
273
+ return `${(ms / 1000).toFixed(1)}s`;
274
+ }
275
+ const minutes = Math.floor(ms / 60000);
276
+ const seconds = ((ms % 60000) / 1000).toFixed(0);
277
+ return `${minutes}m ${seconds}s`;
278
+ }
279
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,IAAI,MAAM,MAAM,CAAC;AAGxB,+EAA+E;AAC/E,uBAAuB;AACvB,+EAA+E;AAE/E;;GAEG;AACH,MAAM,UAAU,YAAY,CAAC,QAAgB,MAAM;IACjD,OAAO,IAAI,CAAC;QACV,KAAK;QACL,SAAS,EAAE;YACT,MAAM,EAAE,aAAa;YACrB,OAAO,EAAE;gBACP,QAAQ,EAAE,IAAI;gBACd,aAAa,EAAE,cAAc;gBAC7B,MAAM,EAAE,cAAc;aACvB;SACF;KACF,CAAC,CAAC;AACL,CAAC;AAED,8BAA8B;AAC9B,MAAM,CAAC,MAAM,MAAM,GAAG,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,MAAM,CAAC,CAAC;AAEvE,+EAA+E;AAC/E,mBAAmB;AACnB,+EAA+E;AAE/E;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,EAAoB;IAEpB,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;IAChC,MAAM,MAAM,GAAG,MAAM,EAAE,EAAE,CAAC;IAC1B,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC,CAAC;IACzD,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC;AAChC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,WAAW;IACzB,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;IAChC,OAAO;QACL,OAAO,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC;KACrD,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,aAAa,CAAC,GAAY,EAAE,SAAiB,CAAC;IAC5D,MAAM,IAAI,GAAG,IAAI,OAAO,EAAE,CAAC;IAC3B,OAAO,IAAI,CAAC,SAAS,CACnB,GAAG,EACH,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;QACd,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;YAChD,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;gBACpB,OAAO,YAAY,CAAC;YACtB,CAAC;YACD,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAClB,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC,EACD,MAAM,CACP,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,IAAe,EACf,EAAoB;IAEpB,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;IAEhC,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,EAAE,EAAE,CAAC;QAC1B,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC,CAAC;QAEzD,OAAO;YACL,WAAW,EAAE;gBACX,IAAI;gBACJ,OAAO,EAAE,IAAI;gBACb,UAAU;gBACV,MAAM;aACP;YACD,MAAM;SACP,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC,CAAC;QAEzD,MAAM,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,SAAS,IAAI,SAAS,CAAC,CAAC;QAE7D,OAAO;YACL,WAAW,EAAE;gBACX,IAAI;gBACJ,OAAO,EAAE,KAAK;gBACd,UAAU;gBACV,MAAM,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe;aACjE;YACD,MAAM,EAAE,IAAS;SAClB,CAAC;IACJ,CAAC;AACH,CAAC;AAED,+EAA+E;AAC/E,kBAAkB;AAClB,+EAA+E;AAE/E;;GAEG;AACH,MAAM,UAAU,mBAAmB,CACjC,IAAY,EACZ,OAAe,EACf,KAAiB,EACjB,OAAiC;IAEjC,OAAO;QACL,IAAI;QACJ,OAAO;QACP,KAAK;QACL,OAAO;KACR,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,OAAO,CAAC,KAAc;IACpC,OAAO,KAAK,YAAY,KAAK,CAAC;AAChC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,eAAe,CAAC,KAAc;IAC5C,IAAI,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACnB,OAAO,KAAK,CAAC,OAAO,CAAC;IACvB,CAAC;IACD,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,OAAO,KAAK,CAAC;IACf,CAAC;IACD,OAAO,2BAA2B,CAAC;AACrC,CAAC;AAED,+EAA+E;AAC/E,mBAAmB;AACnB,+EAA+E;AAE/E;;GAEG;AACH,MAAM,UAAU,UAAU;IACxB,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;AACpF,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,QAAQ,CAAC,GAAW,EAAE,SAAiB;IACrD,IAAI,GAAG,CAAC,MAAM,IAAI,SAAS;QAAE,OAAO,GAAG,CAAC;IACxC,OAAO,GAAG,GAAG,CAAC,SAAS,CAAC,CAAC,EAAE,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC;AACjD,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,mBAAmB,CAAC,GAAW;IAC7C,OAAO,GAAG,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;AACzC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAAC,IAAY;IAC5C,MAAM,cAAc,GAAG,0BAA0B,CAAC;IAClD,MAAM,MAAM,GAA8C,EAAE,CAAC;IAE7D,IAAI,KAAK,CAAC;IACV,OAAO,CAAC,KAAK,GAAG,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;QACpD,MAAM,CAAC,IAAI,CAAC;YACV,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC,IAAI,MAAM;YAC5B,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE;SAC7B,CAAC,CAAC;IACL,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAiBD,MAAM,mBAAmB,GAAiB;IACxC,WAAW,EAAE,CAAC;IACd,cAAc,EAAE,IAAI;IACpB,UAAU,EAAE,KAAK;IACjB,iBAAiB,EAAE,CAAC;CACrB,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,KAAK,CACzB,EAAoB,EACpB,UAAiC,EAAE;IAEnC,MAAM,IAAI,GAAG,EAAE,GAAG,mBAAmB,EAAE,GAAG,OAAO,EAAE,CAAC;IACpD,IAAI,SAAkB,CAAC;IACvB,IAAI,KAAK,GAAG,IAAI,CAAC,cAAc,CAAC;IAEhC,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,IAAI,IAAI,CAAC,WAAW,EAAE,OAAO,EAAE,EAAE,CAAC;QAC7D,IAAI,CAAC;YACH,OAAO,MAAM,EAAE,EAAE,CAAC;QACpB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,SAAS,GAAG,KAAK,CAAC;YAElB,IAAI,OAAO,KAAK,IAAI,CAAC,WAAW,EAAE,CAAC;gBACjC,MAAM;YACR,CAAC;YAED,MAAM,CAAC,IAAI,CACT,EAAE,OAAO,EAAE,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE,KAAK,EAAE,EACjD,wBAAwB,CACzB,CAAC;YAEF,MAAM,KAAK,CAAC,KAAK,CAAC,CAAC;YACnB,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC,iBAAiB,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;QACpE,CAAC;IACH,CAAC;IAED,MAAM,SAAS,CAAC;AAClB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,KAAK,CAAC,EAAU;IAC9B,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;AAC3D,CAAC;AAED,+EAA+E;AAC/E,iBAAiB;AACjB,+EAA+E;AAE/E;;GAEG;AACH,MAAM,UAAU,aAAa,CAAI,IAAY;IAC3C,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAM,CAAC;QACnC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;IACjC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,cAAc,EAAE,CAAC;IACnD,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,WAAW,CAAI,IAAY;IACzC,sCAAsC;IACtC,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;IAC5C,IAAI,SAAS,EAAE,CAAC;QACd,MAAM,MAAM,GAAG,aAAa,CAAI,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;QAC9C,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;YACnB,OAAO,MAAM,CAAC,IAAI,CAAC;QACrB,CAAC;IACH,CAAC;IAED,yBAAyB;IACzB,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;IAC7C,IAAI,UAAU,EAAE,CAAC;QACf,MAAM,MAAM,GAAG,aAAa,CAAI,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;QAC/C,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;YACnB,OAAO,MAAM,CAAC,IAAI,CAAC;QACrB,CAAC;IACH,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED,+EAA+E;AAC/E,uBAAuB;AACvB,+EAA+E;AAE/E;;GAEG;AACH,MAAM,UAAU,SAAS,CAAI,KAA2B;IACtD,OAAO,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,CAAC;AAC/C,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,aAAa,CAAI,KAA2B,EAAE,OAAe;IAC3E,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC;QACtB,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC;IAC3B,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,+EAA+E;AAC/E,iBAAiB;AACjB,+EAA+E;AAE/E;;GAEG;AACH,MAAM,UAAU,MAAM;IACpB,OAAO,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;AAClC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,cAAc,CAAC,EAAU;IACvC,IAAI,EAAE,GAAG,IAAI,EAAE,CAAC;QACd,OAAO,GAAG,EAAE,IAAI,CAAC;IACnB,CAAC;IACD,IAAI,EAAE,GAAG,KAAK,EAAE,CAAC;QACf,OAAO,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC;IACtC,CAAC;IACD,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,CAAC;IACvC,MAAM,OAAO,GAAG,CAAC,CAAC,EAAE,GAAG,KAAK,CAAC,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IACjD,OAAO,GAAG,OAAO,KAAK,OAAO,GAAG,CAAC;AACnC,CAAC"}
package/package.json ADDED
@@ -0,0 +1,77 @@
1
+ {
2
+ "name": "atlas-pipeline-mcp",
3
+ "version": "1.0.0",
4
+ "mcpName": "io.github.iamnishant51/atlas-pipeline",
5
+ "description": "Model Context Protocol server with multi-stage AI pipeline - works with any LLM provider (Ollama, OpenAI, Anthropic). Compatible with Cursor, GitHub Copilot, Windsurf, and more.",
6
+ "main": "dist/server.js",
7
+ "bin": {
8
+ "atlas-mcp": "./dist/mcp.js",
9
+ "atlas-server": "./dist/server.js"
10
+ },
11
+ "type": "module",
12
+ "files": [
13
+ "dist",
14
+ "README.md",
15
+ "LICENSE",
16
+ ".env.example"
17
+ ],
18
+ "scripts": {
19
+ "dev": "tsx watch src/server.ts",
20
+ "dev:mcp": "tsx src/mcp.ts",
21
+ "build": "tsc",
22
+ "start": "node dist/server.js",
23
+ "start:mcp": "node dist/mcp.js",
24
+ "lint": "eslint src --ext .ts",
25
+ "typecheck": "tsc --noEmit",
26
+ "prepublishOnly": "npm run build"
27
+ },
28
+ "keywords": [
29
+ "mcp",
30
+ "model-context-protocol",
31
+ "ai",
32
+ "llm",
33
+ "cursor",
34
+ "copilot",
35
+ "windsurf",
36
+ "claude",
37
+ "ollama",
38
+ "openai",
39
+ "anthropic",
40
+ "pipeline",
41
+ "code-generation",
42
+ "code-review",
43
+ "ai-assistant"
44
+ ],
45
+ "author": "",
46
+ "license": "MIT",
47
+ "repository": {
48
+ "type": "git",
49
+ "url": "git+https://github.com/YOUR_USERNAME/atlas-mcp-server.git"
50
+ },
51
+ "bugs": {
52
+ "url": "https://github.com/YOUR_USERNAME/atlas-mcp-server/issues"
53
+ },
54
+ "homepage": "https://github.com/YOUR_USERNAME/atlas-mcp-server#readme",
55
+ "dependencies": {
56
+ "@anthropic-ai/sdk": "^0.30.1",
57
+ "@fastify/cors": "^9.0.1",
58
+ "@fastify/env": "^4.4.0",
59
+ "@modelcontextprotocol/sdk": "^1.0.0",
60
+ "dotenv": "^17.2.3",
61
+ "fastify": "^4.28.1",
62
+ "ollama": "^0.5.9",
63
+ "openai": "^4.70.0",
64
+ "pino": "^9.4.0",
65
+ "pino-pretty": "^11.2.2",
66
+ "simple-git": "^3.27.0",
67
+ "zod": "^3.23.8"
68
+ },
69
+ "devDependencies": {
70
+ "@types/node": "^22.5.5",
71
+ "tsx": "^4.19.1",
72
+ "typescript": "^5.6.2"
73
+ },
74
+ "engines": {
75
+ "node": ">=20.0.0"
76
+ }
77
+ }