@tng-sh/mcp-server 1.0.4 → 1.0.6
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/README.md +4 -54
- package/dist/index.js +75 -78
- package/dist/index.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 +18 -2
- package/dist/tools/audit.d.ts.map +1 -1
- package/dist/tools/audit.js +253 -135
- package/dist/tools/audit.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/package.json +1 -3
package/dist/tools/audit.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
interface AuditArgs {
|
|
2
|
-
file_path
|
|
2
|
+
file_path?: string;
|
|
3
3
|
method_name: string;
|
|
4
4
|
class_name?: string;
|
|
5
5
|
test_type?: string;
|
|
@@ -10,7 +10,23 @@ interface AuditArgs {
|
|
|
10
10
|
retries?: number;
|
|
11
11
|
debug?: boolean;
|
|
12
12
|
}
|
|
13
|
-
export declare function
|
|
13
|
+
export declare function startRemoteAudit(args: AuditArgs): Promise<{
|
|
14
|
+
content: {
|
|
15
|
+
type: "text";
|
|
16
|
+
text: string;
|
|
17
|
+
}[];
|
|
18
|
+
isError: boolean;
|
|
19
|
+
}>;
|
|
20
|
+
interface CheckAuditArgs {
|
|
21
|
+
job_id: number;
|
|
22
|
+
project_root?: string;
|
|
23
|
+
response_format?: 'text' | 'json' | 'both';
|
|
24
|
+
raw_json?: boolean;
|
|
25
|
+
timeout_sec?: number;
|
|
26
|
+
retries?: number;
|
|
27
|
+
debug?: boolean;
|
|
28
|
+
}
|
|
29
|
+
export declare function checkAuditStatus(args: CheckAuditArgs): Promise<{
|
|
14
30
|
content: {
|
|
15
31
|
type: "text";
|
|
16
32
|
text: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"audit.d.ts","sourceRoot":"","sources":["../../src/tools/audit.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"audit.d.ts","sourceRoot":"","sources":["../../src/tools/audit.ts"],"names":[],"mappings":"AAWA,UAAU,SAAS;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,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;AAgCD,wBAAsB,gBAAgB,CAAC,IAAI,EAAE,SAAS;;;;;;GA6IrD;AAED,UAAU,cAAc;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,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,gBAAgB,CAAC,IAAI,EAAE,cAAc;;;;;;GAiK1D"}
|
package/dist/tools/audit.js
CHANGED
|
@@ -1,23 +1,84 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
import { relative } from 'path';
|
|
2
|
+
import { buildMcpResponse, findProjectRoot, getTngCommandConfig, resolveFilePath, runTngCommand, safeJsonParse } from './utils.js';
|
|
3
|
+
import { resolveMethodCandidates } from './method_resolver.js';
|
|
4
|
+
function buildAmbiguousText(methodName, totalMatches, candidates, projectRoot) {
|
|
5
|
+
const lines = candidates.map((candidate, index) => {
|
|
6
|
+
const displayPath = toDisplayPath(candidate.file_path, projectRoot);
|
|
7
|
+
const classSuffix = candidate.class_name ? ` (${candidate.class_name})` : '';
|
|
8
|
+
return `${index + 1}. ${displayPath}:${candidate.line} ${candidate.method_name}${classSuffix}`;
|
|
9
|
+
});
|
|
10
|
+
return [
|
|
11
|
+
`I found ${totalMatches} methods named "${methodName}". Which one should I audit?`,
|
|
12
|
+
'',
|
|
13
|
+
...lines,
|
|
14
|
+
'',
|
|
15
|
+
'Reply with the number or provide an exact file_path (and class_name if needed).',
|
|
16
|
+
].join('\n');
|
|
17
|
+
}
|
|
18
|
+
function buildNoMatchText(methodName, className, projectRoot) {
|
|
19
|
+
const classHint = className ? ` in class "${className}"` : '';
|
|
20
|
+
return [
|
|
21
|
+
`I could not find a method named "${methodName}"${classHint} in ${projectRoot}.`,
|
|
22
|
+
'Provide file_path (and optionally class_name), then I can prepare the audit prompt.',
|
|
23
|
+
].join('\n');
|
|
24
|
+
}
|
|
25
|
+
function toDisplayPath(absPath, projectRoot) {
|
|
26
|
+
const rel = relative(projectRoot, absPath);
|
|
27
|
+
return rel && !rel.startsWith('..') ? rel : absPath;
|
|
28
|
+
}
|
|
29
|
+
export async function startRemoteAudit(args) {
|
|
4
30
|
const responseFormat = args.response_format || (args.raw_json ? 'json' : 'text');
|
|
31
|
+
const methodName = String(args.method_name || '').trim();
|
|
32
|
+
const requestedClass = args.class_name ? String(args.class_name).trim() : '';
|
|
33
|
+
const inputFilePath = args.file_path ? String(args.file_path).trim() : '';
|
|
5
34
|
try {
|
|
6
|
-
|
|
7
|
-
const
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
35
|
+
const absoluteFilePath = inputFilePath ? resolveFilePath(inputFilePath, args.project_root) : '';
|
|
36
|
+
const cwd = args.project_root
|
|
37
|
+
|| (absoluteFilePath ? findProjectRoot(absoluteFilePath) : null)
|
|
38
|
+
|| process.cwd();
|
|
39
|
+
const resolution = resolveMethodCandidates({
|
|
40
|
+
project_root: cwd,
|
|
41
|
+
method_name: methodName,
|
|
42
|
+
file_path: inputFilePath || undefined,
|
|
43
|
+
class_name: requestedClass || undefined,
|
|
44
|
+
limit: 10,
|
|
45
|
+
});
|
|
46
|
+
if (resolution.total_matches === 0) {
|
|
47
|
+
return buildMcpResponse({
|
|
48
|
+
tool: 'start_remote_audit',
|
|
49
|
+
text: buildNoMatchText(methodName, requestedClass, cwd),
|
|
50
|
+
raw: { method_name: methodName, class_name: requestedClass || null, project_root: cwd },
|
|
51
|
+
format: responseFormat,
|
|
52
|
+
code: 'method_not_found',
|
|
53
|
+
});
|
|
54
|
+
}
|
|
55
|
+
if (resolution.total_matches > 1) {
|
|
56
|
+
return buildMcpResponse({
|
|
57
|
+
tool: 'start_remote_audit',
|
|
58
|
+
text: buildAmbiguousText(methodName, resolution.total_matches, resolution.candidates, cwd),
|
|
59
|
+
raw: {
|
|
60
|
+
method_name: methodName,
|
|
61
|
+
class_name: requestedClass || null,
|
|
62
|
+
project_root: cwd,
|
|
63
|
+
total_matches: resolution.total_matches,
|
|
64
|
+
candidates: resolution.candidates,
|
|
65
|
+
},
|
|
66
|
+
format: responseFormat,
|
|
67
|
+
code: 'needs_disambiguation',
|
|
68
|
+
});
|
|
69
|
+
}
|
|
70
|
+
const selected = resolution.candidates[0];
|
|
71
|
+
const targetFilePath = selected.file_path;
|
|
72
|
+
const targetClass = requestedClass || selected.class_name || null;
|
|
73
|
+
const tngCommand = getTngCommandConfig(cwd, targetFilePath);
|
|
74
|
+
const baseArgs = ['--audit', '--start', '--json', '-f', targetFilePath, '-m', methodName];
|
|
75
|
+
if (targetClass) {
|
|
76
|
+
baseArgs.push('--class', targetClass);
|
|
15
77
|
}
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
baseArgs.push('--type', test_type);
|
|
78
|
+
if (args.test_type) {
|
|
79
|
+
baseArgs.push('--type', args.test_type);
|
|
19
80
|
}
|
|
20
|
-
const timeoutSec = args.timeout_sec ??
|
|
81
|
+
const timeoutSec = args.timeout_sec ?? 60;
|
|
21
82
|
const retries = args.retries ?? 0;
|
|
22
83
|
const debug = args.debug ?? false;
|
|
23
84
|
const { stdout, stderr, attempts, durationMs } = await runTngCommand(tngCommand, baseArgs, {
|
|
@@ -29,164 +90,221 @@ export async function auditMethod(args) {
|
|
|
29
90
|
if (stderr && !stderr.includes('TNG')) {
|
|
30
91
|
console.error('[TNG MCP] stderr:', stderr);
|
|
31
92
|
}
|
|
32
|
-
// Parse the JSON output from TNG
|
|
33
|
-
// TNG CLI returns JSON events line by line, we need the "result" event
|
|
34
93
|
const lines = stdout.trim().split('\n');
|
|
35
|
-
let
|
|
94
|
+
let jobStartedEvent = null;
|
|
36
95
|
for (const line of lines) {
|
|
37
|
-
|
|
96
|
+
const event = safeJsonParse(line);
|
|
97
|
+
if (!event)
|
|
38
98
|
continue;
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
result = event;
|
|
43
|
-
break;
|
|
44
|
-
}
|
|
45
|
-
if (event.type === 'error' || event.type === 'auth_error') {
|
|
46
|
-
throw new Error(event.message || 'Audit failed');
|
|
47
|
-
}
|
|
99
|
+
if (event.type === 'job_started' && typeof event.job_id === 'number') {
|
|
100
|
+
jobStartedEvent = event;
|
|
101
|
+
break;
|
|
48
102
|
}
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
if (line.includes('{') && line.includes('issues')) {
|
|
52
|
-
const parsed = safeJsonParse(line);
|
|
53
|
-
if (parsed) {
|
|
54
|
-
result = parsed;
|
|
55
|
-
}
|
|
56
|
-
}
|
|
103
|
+
if (event.type === 'error' || event.type === 'auth_error') {
|
|
104
|
+
throw new Error(event.message || 'Audit start failed');
|
|
57
105
|
}
|
|
58
106
|
}
|
|
59
|
-
if (!
|
|
107
|
+
if (!jobStartedEvent) {
|
|
60
108
|
return buildMcpResponse({
|
|
61
|
-
tool: '
|
|
62
|
-
text: `
|
|
109
|
+
tool: 'start_remote_audit',
|
|
110
|
+
text: `Failed to start remote audit. Raw output:\n${stdout.substring(0, 800)}`,
|
|
63
111
|
raw: stdout,
|
|
64
112
|
isError: true,
|
|
65
113
|
format: responseFormat,
|
|
66
|
-
code: '
|
|
114
|
+
code: 'no_job_started_result',
|
|
67
115
|
meta: { attempts, duration_ms: durationMs, project_root: cwd },
|
|
68
116
|
});
|
|
69
117
|
}
|
|
70
|
-
// Format the response for MCP
|
|
71
|
-
const formattedOutput = formatAuditResult(result);
|
|
72
118
|
return buildMcpResponse({
|
|
73
|
-
tool: '
|
|
74
|
-
text:
|
|
75
|
-
raw:
|
|
119
|
+
tool: 'start_remote_audit',
|
|
120
|
+
text: `Audit job started successfully.\nJob ID: ${jobStartedEvent.job_id}\n\nUse the \`check_audit_status\` tool with job_id: ${jobStartedEvent.job_id} and project_root: "${cwd}" to poll for completion.`,
|
|
121
|
+
raw: {
|
|
122
|
+
job_id: jobStartedEvent.job_id,
|
|
123
|
+
file_path: targetFilePath,
|
|
124
|
+
method_name: methodName,
|
|
125
|
+
class_name: targetClass,
|
|
126
|
+
project_root: cwd,
|
|
127
|
+
},
|
|
76
128
|
format: responseFormat,
|
|
77
129
|
code: 'ok',
|
|
78
130
|
meta: { attempts, duration_ms: durationMs, project_root: cwd },
|
|
79
131
|
});
|
|
80
132
|
}
|
|
81
133
|
catch (error) {
|
|
82
|
-
// Handle specific error cases
|
|
83
134
|
if (error.code === 'ENOENT') {
|
|
84
135
|
return buildMcpResponse({
|
|
85
|
-
tool: '
|
|
86
|
-
text: `Error: TNG CLI not found in project. Please install TNG
|
|
87
|
-
|
|
88
|
-
**For Ruby projects:**
|
|
89
|
-
\`gem install tng\` or add to Gemfile: \`gem 'tng'\`
|
|
90
|
-
|
|
91
|
-
**For Python projects:**
|
|
92
|
-
\`pip install tng-python\` or \`uv add tng-python\`
|
|
93
|
-
|
|
94
|
-
**For Node.js projects:**
|
|
95
|
-
\`npm install tng-js\`
|
|
96
|
-
|
|
97
|
-
Then configure your API key by running the appropriate init command.`,
|
|
136
|
+
tool: 'start_remote_audit',
|
|
137
|
+
text: `Error: TNG CLI not found in project. Please install TNG and retry.`,
|
|
98
138
|
isError: true,
|
|
99
139
|
format: responseFormat,
|
|
100
140
|
code: 'cli_not_found',
|
|
101
|
-
next_actions: ['Install TNG in this project and retry.'],
|
|
102
|
-
});
|
|
103
|
-
}
|
|
104
|
-
if (error.killed) {
|
|
105
|
-
return buildMcpResponse({
|
|
106
|
-
tool: 'audit_method',
|
|
107
|
-
text: `Error: Audit timed out.`,
|
|
108
|
-
isError: true,
|
|
109
|
-
format: responseFormat,
|
|
110
|
-
code: 'timeout',
|
|
111
141
|
});
|
|
112
142
|
}
|
|
113
|
-
// Extract error message
|
|
114
|
-
let errorMessage = error.message;
|
|
115
|
-
try {
|
|
116
|
-
const errorOutput = error.stdout || error.stderr || '';
|
|
117
|
-
const lines = errorOutput.split('\n');
|
|
118
|
-
for (const line of lines) {
|
|
119
|
-
if (!line.trim())
|
|
120
|
-
continue;
|
|
121
|
-
try {
|
|
122
|
-
const event = JSON.parse(line);
|
|
123
|
-
if (event.type === 'error' || event.type === 'auth_error') {
|
|
124
|
-
errorMessage = event.message || errorMessage;
|
|
125
|
-
break;
|
|
126
|
-
}
|
|
127
|
-
}
|
|
128
|
-
catch { }
|
|
129
|
-
}
|
|
130
|
-
}
|
|
131
|
-
catch { }
|
|
132
143
|
return buildMcpResponse({
|
|
133
|
-
tool: '
|
|
134
|
-
text: `Error
|
|
135
|
-
|
|
136
|
-
Make sure TNG is properly installed and configured in your project.`,
|
|
144
|
+
tool: 'start_remote_audit',
|
|
145
|
+
text: `Error starting remote audit for ${methodName}: ${error.message}`,
|
|
137
146
|
isError: true,
|
|
138
147
|
format: responseFormat,
|
|
139
|
-
code: '
|
|
140
|
-
details: {
|
|
148
|
+
code: 'audit_start_failed',
|
|
149
|
+
details: {
|
|
150
|
+
file_path: inputFilePath || null,
|
|
151
|
+
method_name: methodName,
|
|
152
|
+
class_name: requestedClass || null,
|
|
153
|
+
},
|
|
141
154
|
});
|
|
142
155
|
}
|
|
143
156
|
}
|
|
144
|
-
function
|
|
145
|
-
|
|
146
|
-
const
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
const lang = detectLanguage(result.file_path || '');
|
|
156
|
-
output += `## Source Code\n\`\`\`${lang}\n${sourceCode}\n\`\`\`\n\n`;
|
|
157
|
+
export async function checkAuditStatus(args) {
|
|
158
|
+
const responseFormat = args.response_format || (args.raw_json ? 'json' : 'text');
|
|
159
|
+
const jobIdStr = String(args.job_id || '').trim();
|
|
160
|
+
if (!jobIdStr || isNaN(Number(jobIdStr))) {
|
|
161
|
+
return buildMcpResponse({
|
|
162
|
+
tool: 'check_audit_status',
|
|
163
|
+
text: `Error: A valid numeric job_id is required.`,
|
|
164
|
+
isError: true,
|
|
165
|
+
format: responseFormat,
|
|
166
|
+
code: 'invalid_job_id',
|
|
167
|
+
});
|
|
157
168
|
}
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
169
|
+
try {
|
|
170
|
+
// We need a project root that contains tng.config.js so the CLI can find the API key.
|
|
171
|
+
// Priority: explicit project_root > findProjectRoot from cwd > process.cwd()
|
|
172
|
+
let cwd = args.project_root || '';
|
|
173
|
+
if (!cwd) {
|
|
174
|
+
const discovered = findProjectRoot(process.cwd());
|
|
175
|
+
cwd = discovered || process.cwd();
|
|
176
|
+
}
|
|
177
|
+
const tngCommand = getTngCommandConfig(cwd, '');
|
|
178
|
+
// we can use '.' as file and 'dummy' as method just to bypass the CLI guards
|
|
179
|
+
const baseArgs = ['--audit', '--check', jobIdStr, '-m', 'dummy', '-f', '.', '--json'];
|
|
180
|
+
const perCallTimeout = args.timeout_sec ?? 30;
|
|
181
|
+
const retries = args.retries ?? 0;
|
|
182
|
+
const debug = args.debug ?? false;
|
|
183
|
+
// Auto-polling: loop every 30s for up to 10 minutes
|
|
184
|
+
const POLL_INTERVAL_MS = 30_000;
|
|
185
|
+
const MAX_POLL_DURATION_MS = 10 * 60 * 1000; // 10 minutes
|
|
186
|
+
const pollStart = Date.now();
|
|
187
|
+
let lastPartialResults = null;
|
|
188
|
+
while (true) {
|
|
189
|
+
const { stdout, stderr, attempts, durationMs } = await runTngCommand(tngCommand, baseArgs, {
|
|
190
|
+
cwd,
|
|
191
|
+
timeoutSec: perCallTimeout,
|
|
192
|
+
retries,
|
|
193
|
+
debug,
|
|
194
|
+
});
|
|
195
|
+
if (stderr && !stderr.includes('TNG')) {
|
|
196
|
+
console.error('[TNG MCP] stderr:', stderr);
|
|
197
|
+
}
|
|
198
|
+
let resultData = null;
|
|
199
|
+
try {
|
|
200
|
+
const parsed = safeJsonParse(stdout.trim());
|
|
201
|
+
if (parsed && !parsed.type) {
|
|
202
|
+
resultData = parsed;
|
|
203
|
+
}
|
|
204
|
+
else {
|
|
205
|
+
const lines = stdout.trim().split('\n');
|
|
206
|
+
for (let i = lines.length - 1; i >= 0; i--) {
|
|
207
|
+
const line = lines[i];
|
|
208
|
+
if (!line.trim())
|
|
209
|
+
continue;
|
|
210
|
+
const lParsed = safeJsonParse(line);
|
|
211
|
+
if (lParsed && !lParsed.type) {
|
|
212
|
+
resultData = lParsed;
|
|
213
|
+
break;
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
}
|
|
166
217
|
}
|
|
167
|
-
|
|
168
|
-
|
|
218
|
+
catch (e) { }
|
|
219
|
+
if (!resultData) {
|
|
220
|
+
return buildMcpResponse({
|
|
221
|
+
tool: 'check_audit_status',
|
|
222
|
+
text: `Failed to parse status response. Raw output:\n${stdout.substring(0, 800)}`,
|
|
223
|
+
raw: stdout,
|
|
224
|
+
isError: true,
|
|
225
|
+
format: responseFormat,
|
|
226
|
+
code: 'invalid_status_response',
|
|
227
|
+
meta: { attempts, duration_ms: durationMs, project_root: cwd },
|
|
228
|
+
});
|
|
169
229
|
}
|
|
170
|
-
|
|
171
|
-
|
|
230
|
+
// If job is done, return the final result immediately
|
|
231
|
+
if (resultData.status !== 'pending' && resultData.status !== 'processing') {
|
|
232
|
+
let outputText = JSON.stringify(resultData, null, 2);
|
|
233
|
+
if (resultData.result) {
|
|
234
|
+
outputText = JSON.stringify(resultData.result, null, 2);
|
|
235
|
+
}
|
|
236
|
+
else if (resultData.content && resultData.content.prompt) {
|
|
237
|
+
outputText = resultData.content.prompt;
|
|
238
|
+
}
|
|
239
|
+
else if (resultData.prompt) {
|
|
240
|
+
outputText = resultData.prompt;
|
|
241
|
+
}
|
|
242
|
+
const totalDuration = Date.now() - pollStart;
|
|
243
|
+
return buildMcpResponse({
|
|
244
|
+
tool: 'check_audit_status',
|
|
245
|
+
text: outputText,
|
|
246
|
+
raw: resultData,
|
|
247
|
+
format: responseFormat,
|
|
248
|
+
code: 'ok',
|
|
249
|
+
meta: { attempts, duration_ms: totalDuration, project_root: cwd },
|
|
250
|
+
});
|
|
172
251
|
}
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
252
|
+
// If partial results are available, return them immediately so the user can see findings as they arrive
|
|
253
|
+
if (resultData.partial_results && JSON.stringify(resultData.partial_results) !== JSON.stringify(lastPartialResults)) {
|
|
254
|
+
lastPartialResults = resultData.partial_results;
|
|
255
|
+
const elapsed = Date.now() - pollStart;
|
|
256
|
+
const partialStr = JSON.stringify(resultData.partial_results, null, 2);
|
|
257
|
+
return buildMcpResponse({
|
|
258
|
+
tool: 'check_audit_status',
|
|
259
|
+
text: `Job ${jobIdStr} is still ${resultData.status} (${Math.round(elapsed / 1000)}s elapsed).${resultData.info ? ' ' + resultData.info : ''}\n\n--- PARTIAL RESULTS SO FAR ---\n${partialStr}\n------------------------------\n\nCall check_audit_status again with job_id: ${jobIdStr} and project_root: "${cwd}" to continue polling.`,
|
|
260
|
+
raw: resultData,
|
|
261
|
+
format: responseFormat,
|
|
262
|
+
code: 'partial_results',
|
|
263
|
+
meta: { duration_ms: elapsed, project_root: cwd },
|
|
264
|
+
});
|
|
186
265
|
}
|
|
266
|
+
// Check if we've exceeded the max polling duration
|
|
267
|
+
const elapsed = Date.now() - pollStart;
|
|
268
|
+
if (elapsed >= MAX_POLL_DURATION_MS) {
|
|
269
|
+
let partialStr = '';
|
|
270
|
+
if (lastPartialResults) {
|
|
271
|
+
partialStr = `\n\n--- PARTIAL RESULTS SO FAR ---\n${JSON.stringify(lastPartialResults, null, 2)}\n------------------------------\n`;
|
|
272
|
+
}
|
|
273
|
+
return buildMcpResponse({
|
|
274
|
+
tool: 'check_audit_status',
|
|
275
|
+
text: `Job ${jobIdStr} is still ${resultData.status} after ${Math.round(elapsed / 1000)}s.${resultData.info ? ' ' + resultData.info : ''}\nPolling timed out. You can call check_audit_status again to continue waiting.\n${partialStr}`,
|
|
276
|
+
raw: resultData,
|
|
277
|
+
format: responseFormat,
|
|
278
|
+
code: 'poll_timeout',
|
|
279
|
+
meta: { duration_ms: elapsed, project_root: cwd },
|
|
280
|
+
});
|
|
281
|
+
}
|
|
282
|
+
// Log progress and sleep before next poll
|
|
283
|
+
if (debug) {
|
|
284
|
+
console.error(`[TNG MCP][debug] Job ${jobIdStr} still ${resultData.status} (${resultData.info || 'no info'}). Polling again in ${POLL_INTERVAL_MS / 1000}s...`);
|
|
285
|
+
}
|
|
286
|
+
await new Promise(resolve => setTimeout(resolve, POLL_INTERVAL_MS));
|
|
287
|
+
}
|
|
288
|
+
}
|
|
289
|
+
catch (error) {
|
|
290
|
+
if (error.code === 'ENOENT') {
|
|
291
|
+
return buildMcpResponse({
|
|
292
|
+
tool: 'check_audit_status',
|
|
293
|
+
text: `Error: TNG CLI not found in project. Please install TNG and retry.`,
|
|
294
|
+
isError: true,
|
|
295
|
+
format: responseFormat,
|
|
296
|
+
code: 'cli_not_found',
|
|
297
|
+
});
|
|
298
|
+
}
|
|
299
|
+
return buildMcpResponse({
|
|
300
|
+
tool: 'check_audit_status',
|
|
301
|
+
text: `Error checking audit status for job ${jobIdStr}: ${error.message}\nSTDOUT: ${error.stdout || 'N/A'}\nSTDERR: ${error.stderr || 'N/A'}`,
|
|
302
|
+
isError: true,
|
|
303
|
+
format: responseFormat,
|
|
304
|
+
code: 'audit_check_failed',
|
|
305
|
+
details: { job_id: jobIdStr },
|
|
306
|
+
meta: { project_root: args.project_root },
|
|
187
307
|
});
|
|
188
|
-
output += '\n';
|
|
189
308
|
}
|
|
190
|
-
return output;
|
|
191
309
|
}
|
|
192
310
|
//# sourceMappingURL=audit.js.map
|
package/dist/tools/audit.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"audit.js","sourceRoot":"","sources":["../../src/tools/audit.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"audit.js","sourceRoot":"","sources":["../../src/tools/audit.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
export interface MethodCandidate {
|
|
2
|
+
file_path: string;
|
|
3
|
+
class_name?: string | null;
|
|
4
|
+
method_name: string;
|
|
5
|
+
line: number;
|
|
6
|
+
}
|
|
7
|
+
interface ResolveInput {
|
|
8
|
+
project_root: string;
|
|
9
|
+
method_name: string;
|
|
10
|
+
file_path?: string;
|
|
11
|
+
class_name?: string;
|
|
12
|
+
limit?: number;
|
|
13
|
+
}
|
|
14
|
+
interface ResolveResult {
|
|
15
|
+
candidates: MethodCandidate[];
|
|
16
|
+
total_matches: number;
|
|
17
|
+
}
|
|
18
|
+
export declare function resolveMethodCandidates(input: ResolveInput): ResolveResult;
|
|
19
|
+
export {};
|
|
20
|
+
//# sourceMappingURL=method_resolver.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"method_resolver.d.ts","sourceRoot":"","sources":["../../src/tools/method_resolver.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,eAAe;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;CAChB;AAED,UAAU,YAAY;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,UAAU,aAAa;IACnB,UAAU,EAAE,eAAe,EAAE,CAAC;IAC9B,aAAa,EAAE,MAAM,CAAC;CACzB;AAKD,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,YAAY,GAAG,aAAa,CA8B1E"}
|