@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.
@@ -1,5 +1,5 @@
1
1
  interface AuditArgs {
2
- file_path: string;
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 auditMethod(args: AuditArgs): Promise<{
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":"AAEA,UAAU,SAAS;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,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;AAED,wBAAsB,WAAW,CAAC,IAAI,EAAE,SAAS;;;;;;GAsJhD"}
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"}
@@ -1,23 +1,84 @@
1
- import { findProjectRoot, getTngCommandConfig, detectLanguage, buildMcpResponse, resolveFilePath, safeJsonParse, runTngCommand } from './utils.js';
2
- export async function auditMethod(args) {
3
- const { file_path, method_name, class_name, test_type, project_root } = args;
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
- // Resolve to absolute path if relative
7
- const absoluteFilePath = resolveFilePath(file_path, project_root);
8
- // Find project root if not provided
9
- const cwd = project_root || findProjectRoot(absoluteFilePath) || process.cwd();
10
- // Find TNG command in the project
11
- const tngCommand = getTngCommandConfig(cwd, file_path);
12
- const baseArgs = ['--audit', '--json', '-f', file_path, '-m', method_name];
13
- if (class_name) {
14
- baseArgs.push('--class', class_name);
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
- // Add --type for Python/JS/TS if provided
17
- if (test_type) {
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 ?? 420;
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 result = null;
94
+ let jobStartedEvent = null;
36
95
  for (const line of lines) {
37
- if (!line.trim())
96
+ const event = safeJsonParse(line);
97
+ if (!event)
38
98
  continue;
39
- try {
40
- const event = JSON.parse(line);
41
- if (event.type === 'result') {
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
- catch (e) {
50
- // Try parsing the whole output as single JSON (fallback)
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 (!result) {
107
+ if (!jobStartedEvent) {
60
108
  return buildMcpResponse({
61
- tool: 'audit_method',
62
- text: `No audit results returned. Raw output:\n${stdout.substring(0, 500)}`,
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: 'no_result',
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: 'audit_method',
74
- text: formattedOutput,
75
- raw: result,
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: 'audit_method',
86
- text: `Error: TNG CLI not found in project. Please install TNG first:
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: 'audit_method',
134
- text: `Error auditing ${file_path}#${method_name}: ${errorMessage}
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: 'audit_failed',
140
- details: { file_path, method_name, class_name: class_name || null },
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 formatAuditResult(result) {
145
- // VSCode plugin expects result to have issues, behaviours, etc.
146
- const issues = result.issues || [];
147
- const behaviours = result.behaviours || [];
148
- const methodName = result.method_name || 'Unknown';
149
- const className = result.class_name || 'Unknown';
150
- const sourceCode = result.method_source_with_lines || result.source_code || '';
151
- let output = `# Audit Results for ${className}#${methodName}\n\n`;
152
- // Add method source code
153
- if (sourceCode) {
154
- // Try to find the file path in the result, or default to unknown
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
- // Format issues
159
- if (issues.length > 0) {
160
- output += `## Issues Found (${issues.length})\n\n`;
161
- issues.forEach((issue, index) => {
162
- output += `### ${index + 1}. ${issue.category || 'General'} - Severity: ${issue.severity || 'Medium'}\n`;
163
- output += `**Description:** ${issue.description || issue.summary || 'No description'}\n`;
164
- if (issue.location) {
165
- output += `**Location:** Line ${issue.location}\n`;
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
- if (issue.fix) {
168
- output += `**Suggested Fix:** ${issue.fix}\n`;
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
- if (issue.reasoning) {
171
- output += `**Reasoning:** ${issue.reasoning}\n`;
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
- output += '\n';
174
- });
175
- }
176
- else {
177
- output += `## No Issues Found\n\n`;
178
- }
179
- // Format behaviors
180
- if (behaviours.length > 0) {
181
- output += `## Behaviors (${behaviours.length})\n\n`;
182
- behaviours.forEach((behavior, index) => {
183
- output += `${index + 1}. ${behavior.description || behavior.summary}\n`;
184
- if (behavior.reasoning) {
185
- output += ` - ${behavior.reasoning}\n`;
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
@@ -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"}