@tng-sh/mcp-server 1.0.3 → 1.0.5
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 +283 -88
- package/dist/index.js.map +1 -1
- package/dist/init.d.ts.map +1 -1
- package/dist/init.js +8 -0
- package/dist/init.js.map +1 -1
- package/dist/prompts.d.ts +3 -0
- package/dist/prompts.d.ts.map +1 -0
- package/dist/prompts.js +63 -0
- package/dist/prompts.js.map +1 -0
- package/dist/tools/audit.d.ts +5 -2
- package/dist/tools/audit.d.ts.map +1 -1
- package/dist/tools/audit.js +115 -147
- package/dist/tools/audit.js.map +1 -1
- package/dist/tools/call_sites.d.ts +4 -1
- package/dist/tools/call_sites.d.ts.map +1 -1
- package/dist/tools/call_sites.js +16 -23
- package/dist/tools/call_sites.js.map +1 -1
- package/dist/tools/clones.d.ts +4 -1
- package/dist/tools/clones.d.ts.map +1 -1
- package/dist/tools/clones.js +19 -24
- package/dist/tools/clones.js.map +1 -1
- package/dist/tools/deadcode.d.ts +4 -1
- package/dist/tools/deadcode.d.ts.map +1 -1
- package/dist/tools/deadcode.js +19 -24
- package/dist/tools/deadcode.js.map +1 -1
- package/dist/tools/generate.d.ts +4 -1
- package/dist/tools/generate.d.ts.map +1 -1
- package/dist/tools/generate.js +19 -24
- package/dist/tools/generate.js.map +1 -1
- package/dist/tools/impact.d.ts +4 -1
- package/dist/tools/impact.d.ts.map +1 -1
- package/dist/tools/impact.js +19 -24
- package/dist/tools/impact.js.map +1 -1
- package/dist/tools/method_resolver.d.ts +20 -0
- package/dist/tools/method_resolver.d.ts.map +1 -0
- package/dist/tools/method_resolver.js +138 -0
- package/dist/tools/method_resolver.js.map +1 -0
- package/dist/tools/trace.d.ts +4 -1
- package/dist/tools/trace.d.ts.map +1 -1
- package/dist/tools/trace.js +19 -24
- package/dist/tools/trace.js.map +1 -1
- package/dist/tools/utils.d.ts +36 -1
- package/dist/tools/utils.d.ts.map +1 -1
- package/dist/tools/utils.js +305 -17
- package/dist/tools/utils.js.map +1 -1
- package/dist/tools/xray.d.ts +4 -1
- package/dist/tools/xray.d.ts.map +1 -1
- package/dist/tools/xray.js +21 -23
- package/dist/tools/xray.js.map +1 -1
- package/package.json +1 -1
package/dist/tools/utils.js
CHANGED
|
@@ -1,6 +1,9 @@
|
|
|
1
|
-
import { existsSync } from 'fs';
|
|
2
|
-
import { join, dirname, isAbsolute, resolve as pathResolve } from 'path';
|
|
3
|
-
import { execSync } from 'child_process';
|
|
1
|
+
import { existsSync, readdirSync, readFileSync } from 'fs';
|
|
2
|
+
import { join, dirname, isAbsolute, resolve as pathResolve, extname, basename } from 'path';
|
|
3
|
+
import { execSync, exec, execFile } from 'child_process';
|
|
4
|
+
import { promisify } from 'util';
|
|
5
|
+
const execAsync = promisify(exec);
|
|
6
|
+
const execFileAsync = promisify(execFile);
|
|
4
7
|
export function findProjectRoot(filePath) {
|
|
5
8
|
let dir = dirname(filePath);
|
|
6
9
|
// Look for project markers
|
|
@@ -142,7 +145,21 @@ export function detectLanguage(filePath) {
|
|
|
142
145
|
}
|
|
143
146
|
export function buildMcpResponse(payload) {
|
|
144
147
|
const format = payload.format || 'text';
|
|
145
|
-
const
|
|
148
|
+
const isError = !!payload.isError;
|
|
149
|
+
const status = isError ? 'error' : 'ok';
|
|
150
|
+
const code = payload.code || (isError ? 'tool_error' : 'ok');
|
|
151
|
+
const message = payload.message || payload.text || (isError ? 'Tool execution failed' : 'Success');
|
|
152
|
+
const envelope = {
|
|
153
|
+
tool: payload.tool,
|
|
154
|
+
ok: !isError,
|
|
155
|
+
status,
|
|
156
|
+
code,
|
|
157
|
+
message,
|
|
158
|
+
data: payload.raw ?? null,
|
|
159
|
+
details: payload.details ?? null,
|
|
160
|
+
next_actions: payload.next_actions ?? [],
|
|
161
|
+
meta: payload.meta ?? {},
|
|
162
|
+
};
|
|
146
163
|
if (format === 'text') {
|
|
147
164
|
return {
|
|
148
165
|
content: [
|
|
@@ -151,22 +168,12 @@ export function buildMcpResponse(payload) {
|
|
|
151
168
|
text: payload.text || '',
|
|
152
169
|
},
|
|
153
170
|
],
|
|
154
|
-
isError
|
|
171
|
+
isError,
|
|
155
172
|
};
|
|
156
173
|
}
|
|
157
|
-
|
|
158
|
-
tool: payload.tool,
|
|
159
|
-
status,
|
|
160
|
-
};
|
|
161
|
-
if (payload.isError) {
|
|
162
|
-
envelope.error = payload.text || 'Unknown error';
|
|
163
|
-
}
|
|
164
|
-
else if (format === 'both') {
|
|
174
|
+
if (format === 'both' && payload.text) {
|
|
165
175
|
envelope.text = payload.text || '';
|
|
166
176
|
}
|
|
167
|
-
if (payload.raw !== undefined) {
|
|
168
|
-
envelope.raw = payload.raw;
|
|
169
|
-
}
|
|
170
177
|
return {
|
|
171
178
|
content: [
|
|
172
179
|
{
|
|
@@ -174,7 +181,7 @@ export function buildMcpResponse(payload) {
|
|
|
174
181
|
text: JSON.stringify(envelope, null, 2),
|
|
175
182
|
},
|
|
176
183
|
],
|
|
177
|
-
isError
|
|
184
|
+
isError,
|
|
178
185
|
};
|
|
179
186
|
}
|
|
180
187
|
export function resolveFilePath(filePath, projectRoot) {
|
|
@@ -192,4 +199,285 @@ export function safeJsonParse(line) {
|
|
|
192
199
|
return null;
|
|
193
200
|
}
|
|
194
201
|
}
|
|
202
|
+
export async function runTngCommand(tngCommand, baseArgs, options) {
|
|
203
|
+
const retries = Math.max(0, options.retries || 0);
|
|
204
|
+
const timeoutMs = Math.max(1, options.timeoutSec || 1) * 1000;
|
|
205
|
+
let lastError;
|
|
206
|
+
const startedAt = Date.now();
|
|
207
|
+
for (let attempt = 1; attempt <= retries + 1; attempt++) {
|
|
208
|
+
try {
|
|
209
|
+
const command = tngCommand.shell
|
|
210
|
+
? `${tngCommand.cmd} ${baseArgs.map(shellEscape).join(' ')}`
|
|
211
|
+
: `${tngCommand.cmd} ${[...tngCommand.args, ...baseArgs].map(shellEscape).join(' ')}`;
|
|
212
|
+
if (options.debug) {
|
|
213
|
+
console.error(`[TNG MCP][debug] attempt=${attempt} cwd=${options.cwd}`);
|
|
214
|
+
console.error(`[TNG MCP][debug] command=${command}`);
|
|
215
|
+
}
|
|
216
|
+
const result = tngCommand.shell
|
|
217
|
+
? await execAsync(command, {
|
|
218
|
+
cwd: options.cwd,
|
|
219
|
+
env: getShellEnv(),
|
|
220
|
+
timeout: timeoutMs,
|
|
221
|
+
maxBuffer: 10 * 1024 * 1024,
|
|
222
|
+
})
|
|
223
|
+
: await execFileAsync(tngCommand.cmd, [...tngCommand.args, ...baseArgs], {
|
|
224
|
+
cwd: options.cwd,
|
|
225
|
+
env: getShellEnv(),
|
|
226
|
+
timeout: timeoutMs,
|
|
227
|
+
maxBuffer: 10 * 1024 * 1024,
|
|
228
|
+
});
|
|
229
|
+
return {
|
|
230
|
+
stdout: result.stdout ?? '',
|
|
231
|
+
stderr: result.stderr ?? '',
|
|
232
|
+
attempts: attempt,
|
|
233
|
+
durationMs: Date.now() - startedAt,
|
|
234
|
+
};
|
|
235
|
+
}
|
|
236
|
+
catch (error) {
|
|
237
|
+
lastError = error;
|
|
238
|
+
const retryable = isRetryableError(error);
|
|
239
|
+
if (options.debug) {
|
|
240
|
+
console.error(`[TNG MCP][debug] attempt=${attempt} failed retryable=${retryable} error=${error?.message}`);
|
|
241
|
+
}
|
|
242
|
+
if (!retryable || attempt > retries) {
|
|
243
|
+
throw error;
|
|
244
|
+
}
|
|
245
|
+
}
|
|
246
|
+
}
|
|
247
|
+
throw lastError;
|
|
248
|
+
}
|
|
249
|
+
function isRetryableError(error) {
|
|
250
|
+
if (!error)
|
|
251
|
+
return false;
|
|
252
|
+
const code = String(error.code || '');
|
|
253
|
+
if (code === 'ETIMEDOUT' || code === 'ECONNRESET' || code === 'EPIPE')
|
|
254
|
+
return true;
|
|
255
|
+
if (error.killed)
|
|
256
|
+
return true;
|
|
257
|
+
const message = String(error.message || '').toLowerCase();
|
|
258
|
+
return message.includes('timed out') || message.includes('timeout');
|
|
259
|
+
}
|
|
260
|
+
export function preflightTarget(request) {
|
|
261
|
+
const providedPath = (request.filePath || '').trim();
|
|
262
|
+
const providedMethod = (request.methodName || '').trim();
|
|
263
|
+
const root = resolveProjectRootForRequest(providedPath, request.projectRoot);
|
|
264
|
+
if (!providedPath) {
|
|
265
|
+
return {
|
|
266
|
+
ok: false,
|
|
267
|
+
code: 'missing_file_path',
|
|
268
|
+
message: 'file_path is required',
|
|
269
|
+
details: { tool: request.tool, project_root: root },
|
|
270
|
+
projectRoot: root,
|
|
271
|
+
};
|
|
272
|
+
}
|
|
273
|
+
const resolve = resolvePathWithShortName(providedPath, root);
|
|
274
|
+
if (!resolve.ok) {
|
|
275
|
+
return {
|
|
276
|
+
ok: false,
|
|
277
|
+
code: resolve.code,
|
|
278
|
+
message: resolve.message,
|
|
279
|
+
details: resolve.details,
|
|
280
|
+
projectRoot: root,
|
|
281
|
+
};
|
|
282
|
+
}
|
|
283
|
+
const ignoreCheck = checkIgnored(resolve.resolvedPath, root);
|
|
284
|
+
if (ignoreCheck.ignored) {
|
|
285
|
+
return {
|
|
286
|
+
ok: false,
|
|
287
|
+
code: 'ignored_by_config',
|
|
288
|
+
message: `Path is ignored by TNG config: ${ignoreCheck.rule}`,
|
|
289
|
+
details: {
|
|
290
|
+
provided_path: providedPath,
|
|
291
|
+
resolved_path: resolve.resolvedPath,
|
|
292
|
+
matched_rule: ignoreCheck.rule,
|
|
293
|
+
config_file: ignoreCheck.configFile,
|
|
294
|
+
project_root: root,
|
|
295
|
+
},
|
|
296
|
+
projectRoot: root,
|
|
297
|
+
resolvedPath: resolve.resolvedPath,
|
|
298
|
+
};
|
|
299
|
+
}
|
|
300
|
+
if (request.requireMethod && !providedMethod) {
|
|
301
|
+
return {
|
|
302
|
+
ok: false,
|
|
303
|
+
code: 'missing_method_name',
|
|
304
|
+
message: 'method_name is required',
|
|
305
|
+
details: { file_path: providedPath, resolved_path: resolve.resolvedPath, project_root: root },
|
|
306
|
+
projectRoot: root,
|
|
307
|
+
resolvedPath: resolve.resolvedPath,
|
|
308
|
+
};
|
|
309
|
+
}
|
|
310
|
+
if (providedMethod) {
|
|
311
|
+
const methodExists = fileLikelyContainsMethod(resolve.resolvedPath, providedMethod);
|
|
312
|
+
if (!methodExists) {
|
|
313
|
+
return {
|
|
314
|
+
ok: false,
|
|
315
|
+
code: 'method_not_found',
|
|
316
|
+
message: `Method '${providedMethod}' was not found in ${basename(resolve.resolvedPath)}`,
|
|
317
|
+
details: {
|
|
318
|
+
method_name: providedMethod,
|
|
319
|
+
class_name: request.className || null,
|
|
320
|
+
resolved_path: resolve.resolvedPath,
|
|
321
|
+
project_root: root,
|
|
322
|
+
},
|
|
323
|
+
projectRoot: root,
|
|
324
|
+
resolvedPath: resolve.resolvedPath,
|
|
325
|
+
};
|
|
326
|
+
}
|
|
327
|
+
}
|
|
328
|
+
return {
|
|
329
|
+
ok: true,
|
|
330
|
+
code: 'ok',
|
|
331
|
+
message: 'Preflight checks passed',
|
|
332
|
+
details: {
|
|
333
|
+
provided_path: providedPath,
|
|
334
|
+
resolved_path: resolve.resolvedPath,
|
|
335
|
+
project_root: root,
|
|
336
|
+
},
|
|
337
|
+
projectRoot: root,
|
|
338
|
+
resolvedPath: resolve.resolvedPath,
|
|
339
|
+
};
|
|
340
|
+
}
|
|
341
|
+
function resolveProjectRootForRequest(filePath, provided) {
|
|
342
|
+
if (provided && provided.trim().length > 0) {
|
|
343
|
+
return isAbsolute(provided) ? provided : pathResolve(process.cwd(), provided);
|
|
344
|
+
}
|
|
345
|
+
if (filePath) {
|
|
346
|
+
const abs = resolveFilePath(filePath);
|
|
347
|
+
return findProjectRoot(abs) || process.cwd();
|
|
348
|
+
}
|
|
349
|
+
return process.cwd();
|
|
350
|
+
}
|
|
351
|
+
function resolvePathWithShortName(filePath, projectRoot) {
|
|
352
|
+
const direct = resolveFilePath(filePath, projectRoot);
|
|
353
|
+
if (existsSync(direct)) {
|
|
354
|
+
return { ok: true, resolvedPath: direct };
|
|
355
|
+
}
|
|
356
|
+
const looksLikeShortName = !filePath.includes('/') && !filePath.includes('\\');
|
|
357
|
+
if (!looksLikeShortName) {
|
|
358
|
+
return {
|
|
359
|
+
ok: false,
|
|
360
|
+
code: 'file_not_found',
|
|
361
|
+
message: `File not found: ${filePath}`,
|
|
362
|
+
details: { provided_path: filePath, tried_path: direct, project_root: projectRoot },
|
|
363
|
+
};
|
|
364
|
+
}
|
|
365
|
+
const candidates = findShortNameCandidates(projectRoot, filePath);
|
|
366
|
+
if (candidates.length === 0) {
|
|
367
|
+
return {
|
|
368
|
+
ok: false,
|
|
369
|
+
code: 'file_not_found',
|
|
370
|
+
message: `No file matches short name '${filePath}'`,
|
|
371
|
+
details: { provided_path: filePath, project_root: projectRoot },
|
|
372
|
+
};
|
|
373
|
+
}
|
|
374
|
+
if (candidates.length > 1) {
|
|
375
|
+
return {
|
|
376
|
+
ok: false,
|
|
377
|
+
code: 'ambiguous_file_path',
|
|
378
|
+
message: `Short name '${filePath}' is ambiguous`,
|
|
379
|
+
details: {
|
|
380
|
+
provided_path: filePath,
|
|
381
|
+
project_root: projectRoot,
|
|
382
|
+
candidates: candidates.slice(0, 20),
|
|
383
|
+
},
|
|
384
|
+
};
|
|
385
|
+
}
|
|
386
|
+
return { ok: true, resolvedPath: candidates[0] };
|
|
387
|
+
}
|
|
388
|
+
function findShortNameCandidates(root, shortName) {
|
|
389
|
+
const results = [];
|
|
390
|
+
const token = shortName.toLowerCase();
|
|
391
|
+
const allowedExts = new Set(['.rb', '.py', '.js', '.jsx', '.ts', '.tsx']);
|
|
392
|
+
const skipDirs = new Set(['.git', 'node_modules', 'dist', 'build', '.venv', 'venv', '.bundle', 'vendor']);
|
|
393
|
+
const walk = (dir) => {
|
|
394
|
+
let entries;
|
|
395
|
+
try {
|
|
396
|
+
entries = readdirSync(dir, { withFileTypes: true });
|
|
397
|
+
}
|
|
398
|
+
catch {
|
|
399
|
+
return;
|
|
400
|
+
}
|
|
401
|
+
for (const entry of entries) {
|
|
402
|
+
const full = join(dir, entry.name);
|
|
403
|
+
if (entry.isDirectory()) {
|
|
404
|
+
if (skipDirs.has(entry.name))
|
|
405
|
+
continue;
|
|
406
|
+
walk(full);
|
|
407
|
+
continue;
|
|
408
|
+
}
|
|
409
|
+
const ext = extname(entry.name).toLowerCase();
|
|
410
|
+
if (!allowedExts.has(ext))
|
|
411
|
+
continue;
|
|
412
|
+
const base = basename(entry.name, ext).toLowerCase();
|
|
413
|
+
if (base === token || entry.name.toLowerCase() === token) {
|
|
414
|
+
results.push(full);
|
|
415
|
+
}
|
|
416
|
+
}
|
|
417
|
+
};
|
|
418
|
+
walk(root);
|
|
419
|
+
return results;
|
|
420
|
+
}
|
|
421
|
+
function fileLikelyContainsMethod(filePath, methodName) {
|
|
422
|
+
try {
|
|
423
|
+
const source = readFileSync(filePath, 'utf8');
|
|
424
|
+
return source.includes(methodName);
|
|
425
|
+
}
|
|
426
|
+
catch {
|
|
427
|
+
return false;
|
|
428
|
+
}
|
|
429
|
+
}
|
|
430
|
+
function checkIgnored(absPath, projectRoot) {
|
|
431
|
+
const configs = [
|
|
432
|
+
join(projectRoot, 'tng.config.js'),
|
|
433
|
+
join(projectRoot, 'tng_config.py'),
|
|
434
|
+
join(projectRoot, 'config', 'initializers', 'tng.rb'),
|
|
435
|
+
];
|
|
436
|
+
const relPath = normalizePath(absPath.replace(projectRoot, '').replace(/^[/\\]/, ''));
|
|
437
|
+
for (const cfg of configs) {
|
|
438
|
+
if (!existsSync(cfg))
|
|
439
|
+
continue;
|
|
440
|
+
let content = '';
|
|
441
|
+
try {
|
|
442
|
+
content = readFileSync(cfg, 'utf8');
|
|
443
|
+
}
|
|
444
|
+
catch {
|
|
445
|
+
continue;
|
|
446
|
+
}
|
|
447
|
+
const fileRules = extractRules(content, ['IGNORE_FILES', 'ignore_files']);
|
|
448
|
+
const folderRules = extractRules(content, ['IGNORE_FOLDERS', 'ignore_folders']);
|
|
449
|
+
for (const rule of fileRules) {
|
|
450
|
+
const normalized = normalizePath(rule);
|
|
451
|
+
if (normalized === relPath) {
|
|
452
|
+
return { ignored: true, rule, configFile: cfg };
|
|
453
|
+
}
|
|
454
|
+
}
|
|
455
|
+
for (const rule of folderRules) {
|
|
456
|
+
const normalized = normalizePath(rule).replace(/\/+$/, '');
|
|
457
|
+
if (relPath === normalized || relPath.startsWith(`${normalized}/`)) {
|
|
458
|
+
return { ignored: true, rule, configFile: cfg };
|
|
459
|
+
}
|
|
460
|
+
}
|
|
461
|
+
}
|
|
462
|
+
return { ignored: false };
|
|
463
|
+
}
|
|
464
|
+
function extractRules(content, keys) {
|
|
465
|
+
const values = [];
|
|
466
|
+
for (const key of keys) {
|
|
467
|
+
const rx = new RegExp(`${key}\\s*(?:=|:)\\s*\\[([\\s\\S]*?)\\]`, 'g');
|
|
468
|
+
let match;
|
|
469
|
+
while ((match = rx.exec(content)) !== null) {
|
|
470
|
+
const block = match[1];
|
|
471
|
+
const itemRx = /["']([^"']+)["']/g;
|
|
472
|
+
let m;
|
|
473
|
+
while ((m = itemRx.exec(block)) !== null) {
|
|
474
|
+
values.push(m[1]);
|
|
475
|
+
}
|
|
476
|
+
}
|
|
477
|
+
}
|
|
478
|
+
return values;
|
|
479
|
+
}
|
|
480
|
+
function normalizePath(value) {
|
|
481
|
+
return value.replace(/\\/g, '/').replace(/^\.?\//, '').replace(/\/+/g, '/');
|
|
482
|
+
}
|
|
195
483
|
//# sourceMappingURL=utils.js.map
|
package/dist/tools/utils.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/tools/utils.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/tools/utils.ts"],"names":[],"mappings":"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"}
|
package/dist/tools/xray.d.ts
CHANGED
|
@@ -4,13 +4,16 @@ interface XRayArgs {
|
|
|
4
4
|
project_root?: string;
|
|
5
5
|
response_format?: 'text' | 'json' | 'both';
|
|
6
6
|
raw_json?: boolean;
|
|
7
|
+
timeout_sec?: number;
|
|
8
|
+
retries?: number;
|
|
9
|
+
debug?: boolean;
|
|
7
10
|
}
|
|
8
11
|
export declare function xrayMethod(args: XRayArgs): Promise<{
|
|
9
12
|
content: {
|
|
10
13
|
type: "text";
|
|
11
14
|
text: string;
|
|
12
15
|
}[];
|
|
13
|
-
isError: boolean
|
|
16
|
+
isError: boolean;
|
|
14
17
|
}>;
|
|
15
18
|
export {};
|
|
16
19
|
//# sourceMappingURL=xray.d.ts.map
|
package/dist/tools/xray.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"xray.d.ts","sourceRoot":"","sources":["../../src/tools/xray.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"xray.d.ts","sourceRoot":"","sources":["../../src/tools/xray.ts"],"names":[],"mappings":"AAEA,UAAU,QAAQ;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,eAAe,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC;IAC3C,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,wBAAsB,UAAU,CAAC,IAAI,EAAE,QAAQ;;;;;;GAuI9C"}
|
package/dist/tools/xray.js
CHANGED
|
@@ -1,8 +1,4 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { promisify } from 'util';
|
|
3
|
-
import { findProjectRoot, getTngCommandConfig, getShellEnv, shellEscape, buildMcpResponse, resolveFilePath, safeJsonParse } from './utils.js';
|
|
4
|
-
const execAsync = promisify(exec);
|
|
5
|
-
const execFileAsync = promisify(execFile);
|
|
1
|
+
import { findProjectRoot, getTngCommandConfig, buildMcpResponse, resolveFilePath, safeJsonParse, runTngCommand } from './utils.js';
|
|
6
2
|
export async function xrayMethod(args) {
|
|
7
3
|
const { file_path, method_name, project_root } = args;
|
|
8
4
|
const responseFormat = args.response_format || (args.raw_json ? 'json' : 'text');
|
|
@@ -25,23 +21,17 @@ export async function xrayMethod(args) {
|
|
|
25
21
|
baseArgs = ['xray', '--json', '-f', file_path, '-m', method_name];
|
|
26
22
|
}
|
|
27
23
|
command = tngCommand.shell
|
|
28
|
-
? `${tngCommand.cmd} ${baseArgs.
|
|
29
|
-
: `${tngCommand.cmd} ${[...tngCommand.args, ...baseArgs].
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
const
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
: await execFileAsync(tngCommand.cmd, [...tngCommand.args, ...baseArgs], {
|
|
40
|
-
cwd,
|
|
41
|
-
env: getShellEnv(),
|
|
42
|
-
timeout: 120000,
|
|
43
|
-
maxBuffer: 10 * 1024 * 1024,
|
|
44
|
-
});
|
|
24
|
+
? `${tngCommand.cmd} ${baseArgs.join(' ')}`
|
|
25
|
+
: `${tngCommand.cmd} ${[...tngCommand.args, ...baseArgs].join(' ')}`;
|
|
26
|
+
const timeoutSec = args.timeout_sec ?? 120;
|
|
27
|
+
const retries = args.retries ?? 0;
|
|
28
|
+
const debug = args.debug ?? false;
|
|
29
|
+
const { stdout, stderr, attempts, durationMs } = await runTngCommand(tngCommand, baseArgs, {
|
|
30
|
+
cwd,
|
|
31
|
+
timeoutSec,
|
|
32
|
+
retries,
|
|
33
|
+
debug,
|
|
34
|
+
});
|
|
45
35
|
if (stderr && !stderr.includes('TNG')) {
|
|
46
36
|
console.error('[TNG MCP] stderr:', stderr);
|
|
47
37
|
}
|
|
@@ -78,6 +68,8 @@ export async function xrayMethod(args) {
|
|
|
78
68
|
raw: stdout,
|
|
79
69
|
isError: true,
|
|
80
70
|
format: responseFormat,
|
|
71
|
+
code: 'no_result',
|
|
72
|
+
meta: { attempts, duration_ms: durationMs, project_root: cwd },
|
|
81
73
|
});
|
|
82
74
|
}
|
|
83
75
|
const formattedOutput = formatXRayResult(result, file_path, method_name);
|
|
@@ -86,6 +78,8 @@ export async function xrayMethod(args) {
|
|
|
86
78
|
text: formattedOutput,
|
|
87
79
|
raw: result,
|
|
88
80
|
format: responseFormat,
|
|
81
|
+
code: 'ok',
|
|
82
|
+
meta: { attempts, duration_ms: durationMs, project_root: cwd },
|
|
89
83
|
});
|
|
90
84
|
}
|
|
91
85
|
catch (error) {
|
|
@@ -95,14 +89,16 @@ export async function xrayMethod(args) {
|
|
|
95
89
|
text: `Error: TNG CLI not found in project. Please install TNG first.`,
|
|
96
90
|
isError: true,
|
|
97
91
|
format: responseFormat,
|
|
92
|
+
code: 'cli_not_found',
|
|
98
93
|
});
|
|
99
94
|
}
|
|
100
95
|
if (error.killed) {
|
|
101
96
|
return buildMcpResponse({
|
|
102
97
|
tool: 'xray_method',
|
|
103
|
-
text: `Error: X-Ray generation timed out
|
|
98
|
+
text: `Error: X-Ray generation timed out.`,
|
|
104
99
|
isError: true,
|
|
105
100
|
format: responseFormat,
|
|
101
|
+
code: 'timeout',
|
|
106
102
|
});
|
|
107
103
|
}
|
|
108
104
|
let errorMessage = error.message;
|
|
@@ -128,6 +124,8 @@ export async function xrayMethod(args) {
|
|
|
128
124
|
text: `Error generating X-Ray for ${file_path}#${method_name}: ${errorMessage}`,
|
|
129
125
|
isError: true,
|
|
130
126
|
format: responseFormat,
|
|
127
|
+
code: 'xray_failed',
|
|
128
|
+
details: { file_path, method_name },
|
|
131
129
|
});
|
|
132
130
|
}
|
|
133
131
|
}
|
package/dist/tools/xray.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"xray.js","sourceRoot":"","sources":["../../src/tools/xray.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"xray.js","sourceRoot":"","sources":["../../src/tools/xray.ts"],"names":[],"mappings":"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"}
|