asm-mcp-proxy 2.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/dist/index.js ADDED
@@ -0,0 +1,424 @@
1
+ #!/usr/bin/env node
2
+ "use strict";
3
+ /**
4
+ * ASM MCP Proxy - Thin Local Proxy
5
+ * stdio ↔ HTTP + JWT auth + Local Tools + Router Inteligente
6
+ */
7
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
8
+ if (k2 === undefined) k2 = k;
9
+ var desc = Object.getOwnPropertyDescriptor(m, k);
10
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
11
+ desc = { enumerable: true, get: function() { return m[k]; } };
12
+ }
13
+ Object.defineProperty(o, k2, desc);
14
+ }) : (function(o, m, k, k2) {
15
+ if (k2 === undefined) k2 = k;
16
+ o[k2] = m[k];
17
+ }));
18
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
19
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
20
+ }) : function(o, v) {
21
+ o["default"] = v;
22
+ });
23
+ var __importStar = (this && this.__importStar) || (function () {
24
+ var ownKeys = function(o) {
25
+ ownKeys = Object.getOwnPropertyNames || function (o) {
26
+ var ar = [];
27
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
28
+ return ar;
29
+ };
30
+ return ownKeys(o);
31
+ };
32
+ return function (mod) {
33
+ if (mod && mod.__esModule) return mod;
34
+ var result = {};
35
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
36
+ __setModuleDefault(result, mod);
37
+ return result;
38
+ };
39
+ })();
40
+ Object.defineProperty(exports, "__esModule", { value: true });
41
+ const readline = __importStar(require("readline"));
42
+ const router_1 = require("./router");
43
+ const gateway_client_1 = require("./gateway-client");
44
+ const token_manager_1 = require("./token-manager");
45
+ // Configuração
46
+ const MCP_GATEWAY_URL = process.env.MCP_GATEWAY_URL || 'https://asm-api-gateway.vitor-9a3.workers.dev';
47
+ const MCP_JWT_TOKEN = process.env.MCP_JWT_TOKEN || '';
48
+ const MCP_DEBUG = process.env.MCP_DEBUG === 'true';
49
+ const MCP_EMAIL = process.env.MCP_EMAIL || '';
50
+ const MCP_PASSWORD = process.env.MCP_PASSWORD || '';
51
+ // Log helper
52
+ function log(...args) {
53
+ if (MCP_DEBUG) {
54
+ console.error('[MCP-PROXY]', ...args);
55
+ }
56
+ }
57
+ // Validar configuração
58
+ if (!MCP_JWT_TOKEN) {
59
+ console.error('ERROR: MCP_JWT_TOKEN não configurado');
60
+ console.error('Configure via: export MCP_JWT_TOKEN="seu-token-aqui"');
61
+ process.exit(1);
62
+ }
63
+ // Inicializar Token Manager
64
+ const tokenManager = new token_manager_1.TokenManager(MCP_GATEWAY_URL);
65
+ tokenManager.initialize(MCP_JWT_TOKEN, MCP_EMAIL, MCP_PASSWORD);
66
+ // Helper para obter token atual (sempre atualizado)
67
+ function getCurrentToken() {
68
+ return tokenManager.getToken();
69
+ }
70
+ log('Iniciando ASM MCP Proxy v2.0...');
71
+ log('Gateway:', MCP_GATEWAY_URL);
72
+ log('Token:', MCP_JWT_TOKEN.substring(0, 20) + '...');
73
+ // Log token info
74
+ const tokenInfo = tokenManager.getTokenInfo();
75
+ if (tokenInfo) {
76
+ log('Token expires at:', tokenInfo.expiresAt.toISOString());
77
+ if (tokenInfo.isExpiringSoon) {
78
+ log('⚠️ Token expiring soon, will auto-refresh');
79
+ }
80
+ }
81
+ /**
82
+ * Processar linha JSON-RPC do stdin
83
+ */
84
+ async function processLine(line) {
85
+ try {
86
+ const request = JSON.parse(line);
87
+ log('Request:', request.method, request.id);
88
+ const { method, id, params } = request;
89
+ // Handle initialize
90
+ if (method === 'initialize') {
91
+ const response = {
92
+ jsonrpc: '2.0',
93
+ id,
94
+ result: {
95
+ protocolVersion: '2025-03-26',
96
+ capabilities: {
97
+ tools: { listChanged: true },
98
+ resources: { subscribe: false, listChanged: false },
99
+ prompts: { listChanged: false },
100
+ logging: {},
101
+ },
102
+ serverInfo: {
103
+ name: 'ASM Platform MCP Proxy',
104
+ version: '2.0.0',
105
+ },
106
+ },
107
+ };
108
+ console.log(JSON.stringify(response));
109
+ return;
110
+ }
111
+ // Handle tools/list
112
+ if (method === 'tools/list') {
113
+ try {
114
+ // Buscar tools do gateway
115
+ const gatewayResult = await (0, gateway_client_1.listToolsFromGateway)(MCP_GATEWAY_URL, getCurrentToken());
116
+ let cloudTools = [];
117
+ if (gatewayResult.success && Array.isArray(gatewayResult.output)) {
118
+ cloudTools = gatewayResult.output;
119
+ }
120
+ // Adicionar local tools
121
+ const localToolDefinitions = [
122
+ {
123
+ name: 'read_file',
124
+ description: 'Read file from local filesystem',
125
+ inputSchema: {
126
+ type: 'object',
127
+ properties: {
128
+ file_path: { type: 'string', description: 'Absolute file path' },
129
+ offset: { type: 'number', description: 'Line offset (1-indexed)' },
130
+ limit: { type: 'number', description: 'Number of lines to read' },
131
+ },
132
+ required: ['file_path'],
133
+ },
134
+ },
135
+ {
136
+ name: 'write_to_file',
137
+ description: 'Write file to local filesystem',
138
+ inputSchema: {
139
+ type: 'object',
140
+ properties: {
141
+ TargetFile: { type: 'string', description: 'Absolute file path' },
142
+ CodeContent: { type: 'string', description: 'File content' },
143
+ EmptyFile: { type: 'boolean', description: 'Create empty file' },
144
+ },
145
+ required: ['TargetFile', 'CodeContent'],
146
+ },
147
+ },
148
+ {
149
+ name: 'edit',
150
+ description: 'Edit file (find and replace)',
151
+ inputSchema: {
152
+ type: 'object',
153
+ properties: {
154
+ file_path: { type: 'string', description: 'Absolute file path' },
155
+ old_string: { type: 'string', description: 'String to replace' },
156
+ new_string: { type: 'string', description: 'Replacement string' },
157
+ replace_all: { type: 'boolean', description: 'Replace all occurrences' },
158
+ },
159
+ required: ['file_path', 'old_string', 'new_string'],
160
+ },
161
+ },
162
+ {
163
+ name: 'multi_edit',
164
+ description: 'Multiple edits in a single file',
165
+ inputSchema: {
166
+ type: 'object',
167
+ properties: {
168
+ file_path: { type: 'string', description: 'Absolute file path' },
169
+ edits: {
170
+ type: 'array',
171
+ description: 'Array of edits',
172
+ items: {
173
+ type: 'object',
174
+ properties: {
175
+ old_string: { type: 'string' },
176
+ new_string: { type: 'string' },
177
+ replace_all: { type: 'boolean' },
178
+ },
179
+ required: ['old_string', 'new_string'],
180
+ },
181
+ },
182
+ },
183
+ required: ['file_path', 'edits'],
184
+ },
185
+ },
186
+ {
187
+ name: 'list_dir',
188
+ description: 'List directory contents',
189
+ inputSchema: {
190
+ type: 'object',
191
+ properties: {
192
+ DirectoryPath: { type: 'string', description: 'Absolute directory path' },
193
+ },
194
+ required: ['DirectoryPath'],
195
+ },
196
+ },
197
+ {
198
+ name: 'grep_search',
199
+ description: 'Search in files (ripgrep)',
200
+ inputSchema: {
201
+ type: 'object',
202
+ properties: {
203
+ SearchPath: { type: 'string', description: 'Path to search' },
204
+ Query: { type: 'string', description: 'Search query' },
205
+ Includes: { type: 'array', description: 'Glob patterns to include' },
206
+ CaseSensitive: { type: 'boolean', description: 'Case sensitive search' },
207
+ FixedStrings: { type: 'boolean', description: 'Treat query as literal string' },
208
+ MatchPerLine: { type: 'boolean', description: 'Show line numbers' },
209
+ },
210
+ required: ['SearchPath', 'Query'],
211
+ },
212
+ },
213
+ {
214
+ name: 'find_by_name',
215
+ description: 'Find files by name (fd)',
216
+ inputSchema: {
217
+ type: 'object',
218
+ properties: {
219
+ SearchDirectory: { type: 'string', description: 'Directory to search' },
220
+ Pattern: { type: 'string', description: 'File name pattern' },
221
+ Extensions: { type: 'array', description: 'File extensions to filter' },
222
+ Type: { type: 'string', enum: ['file', 'directory', 'any'], description: 'Type filter' },
223
+ MaxDepth: { type: 'number', description: 'Max search depth' },
224
+ },
225
+ required: ['SearchDirectory', 'Pattern'],
226
+ },
227
+ },
228
+ {
229
+ name: 'run_command',
230
+ description: 'Run terminal command',
231
+ inputSchema: {
232
+ type: 'object',
233
+ properties: {
234
+ CommandLine: { type: 'string', description: 'Command to execute' },
235
+ Cwd: { type: 'string', description: 'Working directory' },
236
+ Blocking: { type: 'boolean', description: 'Wait for completion' },
237
+ },
238
+ required: ['CommandLine'],
239
+ },
240
+ },
241
+ {
242
+ name: 'git_operation',
243
+ description: 'Git operations',
244
+ inputSchema: {
245
+ type: 'object',
246
+ properties: {
247
+ operation: {
248
+ type: 'string',
249
+ enum: ['status', 'diff', 'log', 'branch', 'add', 'commit', 'push', 'pull'],
250
+ description: 'Git operation',
251
+ },
252
+ cwd: { type: 'string', description: 'Repository path' },
253
+ params: { type: 'object', description: 'Operation parameters' },
254
+ },
255
+ required: ['operation'],
256
+ },
257
+ },
258
+ ];
259
+ const allTools = [...cloudTools, ...localToolDefinitions];
260
+ const response = {
261
+ jsonrpc: '2.0',
262
+ id,
263
+ result: {
264
+ tools: allTools,
265
+ nextCursor: undefined,
266
+ },
267
+ };
268
+ console.log(JSON.stringify(response));
269
+ }
270
+ catch (error) {
271
+ log('Error listing tools:', error);
272
+ const errorResponse = {
273
+ jsonrpc: '2.0',
274
+ id,
275
+ error: {
276
+ code: -32603,
277
+ message: `Failed to list tools: ${error.message}`,
278
+ },
279
+ };
280
+ console.log(JSON.stringify(errorResponse));
281
+ }
282
+ return;
283
+ }
284
+ // Handle tools/call
285
+ if (method === 'tools/call') {
286
+ const { name, arguments: args = {} } = params;
287
+ try {
288
+ // Executar via router (local ou cloud)
289
+ const result = await (0, router_1.executeToolWithMetrics)(name, args, MCP_GATEWAY_URL, getCurrentToken());
290
+ if (result.success) {
291
+ const response = {
292
+ jsonrpc: '2.0',
293
+ id,
294
+ result: {
295
+ content: [
296
+ {
297
+ type: 'text',
298
+ text: typeof result.output === 'string' ? result.output : JSON.stringify(result.output, null, 2),
299
+ },
300
+ ],
301
+ isError: false,
302
+ },
303
+ };
304
+ console.log(JSON.stringify(response));
305
+ }
306
+ else {
307
+ const response = {
308
+ jsonrpc: '2.0',
309
+ id,
310
+ result: {
311
+ content: [
312
+ {
313
+ type: 'text',
314
+ text: result.error || 'Tool execution failed',
315
+ },
316
+ ],
317
+ isError: true,
318
+ },
319
+ };
320
+ console.log(JSON.stringify(response));
321
+ }
322
+ }
323
+ catch (error) {
324
+ log('Error executing tool:', error);
325
+ const errorResponse = {
326
+ jsonrpc: '2.0',
327
+ id,
328
+ result: {
329
+ content: [
330
+ {
331
+ type: 'text',
332
+ text: `Tool execution failed: ${error.message}`,
333
+ },
334
+ ],
335
+ isError: true,
336
+ },
337
+ };
338
+ console.log(JSON.stringify(errorResponse));
339
+ }
340
+ return;
341
+ }
342
+ // Handle resources/list (vazio por enquanto)
343
+ if (method === 'resources/list') {
344
+ const response = {
345
+ jsonrpc: '2.0',
346
+ id,
347
+ result: {
348
+ resources: [],
349
+ nextCursor: undefined,
350
+ },
351
+ };
352
+ console.log(JSON.stringify(response));
353
+ return;
354
+ }
355
+ // Handle prompts/list (vazio por enquanto)
356
+ if (method === 'prompts/list') {
357
+ const response = {
358
+ jsonrpc: '2.0',
359
+ id,
360
+ result: {
361
+ prompts: [],
362
+ nextCursor: undefined,
363
+ },
364
+ };
365
+ console.log(JSON.stringify(response));
366
+ return;
367
+ }
368
+ // Método não suportado
369
+ const errorResponse = {
370
+ jsonrpc: '2.0',
371
+ id,
372
+ error: {
373
+ code: -32601,
374
+ message: `Method not found: ${method}`,
375
+ },
376
+ };
377
+ console.log(JSON.stringify(errorResponse));
378
+ }
379
+ catch (error) {
380
+ log('Error processing line:', error);
381
+ const errorResponse = {
382
+ jsonrpc: '2.0',
383
+ id: null,
384
+ error: {
385
+ code: -32700,
386
+ message: `Parse error: ${error.message}`,
387
+ },
388
+ };
389
+ console.log(JSON.stringify(errorResponse));
390
+ }
391
+ }
392
+ // Criar interface readline para stdin
393
+ const rl = readline.createInterface({
394
+ input: process.stdin,
395
+ output: process.stdout,
396
+ terminal: false,
397
+ });
398
+ // Processar cada linha (JSON-RPC request)
399
+ rl.on('line', async (line) => {
400
+ if (line.trim()) {
401
+ await processLine(line.trim());
402
+ }
403
+ });
404
+ // Handle close - não fechar imediatamente, aguardar SIGTERM
405
+ rl.on('close', () => {
406
+ log('Stdin closed, waiting for SIGTERM...');
407
+ const stats = (0, router_1.getExecutionStats)();
408
+ log('Execution stats:', stats);
409
+ });
410
+ // Handle SIGTERM/SIGINT
411
+ process.on('SIGTERM', () => {
412
+ log('Received SIGTERM, closing proxy');
413
+ const stats = (0, router_1.getExecutionStats)();
414
+ log('Final stats:', stats);
415
+ process.exit(0);
416
+ });
417
+ process.on('SIGINT', () => {
418
+ log('Received SIGINT, closing proxy');
419
+ const stats = (0, router_1.getExecutionStats)();
420
+ log('Final stats:', stats);
421
+ process.exit(0);
422
+ });
423
+ log('Proxy ready, waiting for JSON-RPC requests...');
424
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,93 @@
1
+ /**
2
+ * Local Tools - Filesystem, Git, Terminal
3
+ * Tools que executam localmente no dispositivo do desenvolvedor
4
+ */
5
+ export interface ToolResult {
6
+ success: boolean;
7
+ output?: unknown;
8
+ error?: string;
9
+ }
10
+ /**
11
+ * Read file from local filesystem
12
+ */
13
+ export declare function readFile(args: {
14
+ file_path: string;
15
+ offset?: number;
16
+ limit?: number;
17
+ }): Promise<ToolResult>;
18
+ /**
19
+ * Write file to local filesystem
20
+ */
21
+ export declare function writeToFile(args: {
22
+ TargetFile: string;
23
+ CodeContent: string;
24
+ EmptyFile?: boolean;
25
+ }): Promise<ToolResult>;
26
+ /**
27
+ * Edit file (find and replace)
28
+ */
29
+ export declare function edit(args: {
30
+ file_path: string;
31
+ old_string: string;
32
+ new_string: string;
33
+ replace_all?: boolean;
34
+ }): Promise<ToolResult>;
35
+ /**
36
+ * Multi-edit (múltiplas edições em um arquivo)
37
+ */
38
+ export declare function multiEdit(args: {
39
+ file_path: string;
40
+ edits: Array<{
41
+ old_string: string;
42
+ new_string: string;
43
+ replace_all?: boolean;
44
+ }>;
45
+ }): Promise<ToolResult>;
46
+ /**
47
+ * List directory contents
48
+ */
49
+ export declare function listDir(args: {
50
+ DirectoryPath: string;
51
+ }): Promise<ToolResult>;
52
+ /**
53
+ * Grep search (busca em arquivos)
54
+ */
55
+ export declare function grepSearch(args: {
56
+ SearchPath: string;
57
+ Query: string;
58
+ Includes?: string[];
59
+ CaseSensitive?: boolean;
60
+ FixedStrings?: boolean;
61
+ MatchPerLine?: boolean;
62
+ }): Promise<ToolResult>;
63
+ /**
64
+ * Find by name (busca por nome de arquivo)
65
+ */
66
+ export declare function findByName(args: {
67
+ SearchDirectory: string;
68
+ Pattern: string;
69
+ Extensions?: string[];
70
+ Type?: 'file' | 'directory' | 'any';
71
+ MaxDepth?: number;
72
+ }): Promise<ToolResult>;
73
+ /**
74
+ * Run command (terminal)
75
+ */
76
+ export declare function runCommand(args: {
77
+ CommandLine: string;
78
+ Cwd?: string;
79
+ Blocking?: boolean;
80
+ }): Promise<ToolResult>;
81
+ /**
82
+ * Git operations
83
+ */
84
+ export declare function gitOperation(args: {
85
+ operation: 'status' | 'diff' | 'log' | 'branch' | 'add' | 'commit' | 'push' | 'pull';
86
+ cwd?: string;
87
+ params?: Record<string, unknown>;
88
+ }): Promise<ToolResult>;
89
+ /**
90
+ * Mapeamento de tools locais
91
+ */
92
+ export declare const LOCAL_TOOLS: Record<string, (args: any) => Promise<ToolResult>>;
93
+ //# sourceMappingURL=local-tools.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"local-tools.d.ts","sourceRoot":"","sources":["../src/local-tools.ts"],"names":[],"mappings":"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"}