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
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":"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"}
|
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
|
+
}
|