@didim365/agent-cli-core 0.2.4 → 0.2.7
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/src/config/defaultModelConfigs.js +11 -0
- package/dist/src/config/defaultModelConfigs.js.map +1 -1
- package/dist/src/config/models.d.ts +1 -0
- package/dist/src/config/models.js +5 -2
- package/dist/src/config/models.js.map +1 -1
- package/dist/src/config/providerModels.js +5 -0
- package/dist/src/config/providerModels.js.map +1 -1
- package/dist/src/core/coreToolScheduler.js +42 -5
- package/dist/src/core/coreToolScheduler.js.map +1 -1
- package/dist/src/core/tokenLimits.js +2 -1
- package/dist/src/core/tokenLimits.js.map +1 -1
- package/dist/src/generated/git-commit.d.ts +1 -1
- package/dist/src/generated/git-commit.js +1 -1
- package/dist/src/ide/types.d.ts +4 -4
- package/dist/src/policy/policy-engine.js +20 -6
- package/dist/src/policy/policy-engine.js.map +1 -1
- package/dist/src/scheduler/scheduler.js +36 -3
- package/dist/src/scheduler/scheduler.js.map +1 -1
- package/dist/src/services/chatCompressionService.js +3 -1
- package/dist/src/services/chatCompressionService.js.map +1 -1
- package/dist/src/services/test-data/resolved-aliases-retry.golden.json +16 -0
- package/dist/src/services/test-data/resolved-aliases.golden.json +16 -0
- package/dist/src/tools/mcp-client.js +3 -12
- package/dist/src/tools/mcp-client.js.map +1 -1
- package/dist/src/tools/mcp-tool.d.ts +9 -2
- package/dist/src/tools/mcp-tool.js +63 -11
- package/dist/src/tools/mcp-tool.js.map +1 -1
- package/dist/src/tools/tool-names.js +2 -1
- package/dist/src/tools/tool-names.js.map +1 -1
- package/dist/src/tools/tool-registry.d.ts +16 -0
- package/dist/src/tools/tool-registry.js +111 -2
- package/dist/src/tools/tool-registry.js.map +1 -1
- package/dist/src/utils/tool-utils.d.ts +63 -0
- package/dist/src/utils/tool-utils.js +356 -0
- package/dist/src/utils/tool-utils.js.map +1 -1
- package/package.json +1 -1
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
import { Kind, BaseDeclarativeTool, BaseToolInvocation } from './tools.js';
|
|
7
7
|
import { spawn } from 'node:child_process';
|
|
8
8
|
import { StringDecoder } from 'node:string_decoder';
|
|
9
|
-
import { DiscoveredMCPTool } from './mcp-tool.js';
|
|
9
|
+
import { DEFAULT_MAX_TOOL_NAME_LENGTH, DiscoveredMCPTool, generateValidName, simpleHash, } from './mcp-tool.js';
|
|
10
10
|
import { parse } from 'shell-quote';
|
|
11
11
|
import { ToolErrorType } from './tool-error.js';
|
|
12
12
|
import { safeJsonStringify } from '../utils/safeJsonStringify.js';
|
|
@@ -156,6 +156,106 @@ export class ToolRegistry {
|
|
|
156
156
|
}
|
|
157
157
|
this.allKnownTools.set(tool.name, tool);
|
|
158
158
|
}
|
|
159
|
+
/**
|
|
160
|
+
* Batch-registers MCP tools with deterministic naming via global
|
|
161
|
+
* re-registration.
|
|
162
|
+
*
|
|
163
|
+
* Collects retained MCP tools from servers NOT being updated, clears all
|
|
164
|
+
* MCP tools, then re-registers the combined set. This ensures cross-server
|
|
165
|
+
* conflicts are always resolved consistently regardless of call order
|
|
166
|
+
* (e.g. Promise.all() discovery or sequential refresh).
|
|
167
|
+
*
|
|
168
|
+
* Two-pass algorithm over the combined set:
|
|
169
|
+
* 1. Group by sanitized baseName → detect conflicts
|
|
170
|
+
* 2. Register: non-conflicting → unqualified, conflicting → FQN
|
|
171
|
+
* (with hash+counter disambiguation for same-server sanitize collision)
|
|
172
|
+
*/
|
|
173
|
+
registerMCPTools(newTools) {
|
|
174
|
+
if (newTools.length === 0) {
|
|
175
|
+
this.sortTools();
|
|
176
|
+
return;
|
|
177
|
+
}
|
|
178
|
+
// Determine which servers are being updated
|
|
179
|
+
const updatingServers = new Set(newTools.map((t) => t.serverName));
|
|
180
|
+
// Collect existing MCP tools from servers NOT being updated
|
|
181
|
+
const retainedTools = [];
|
|
182
|
+
for (const [, tool] of this.allKnownTools) {
|
|
183
|
+
if (tool instanceof DiscoveredMCPTool &&
|
|
184
|
+
!updatingServers.has(tool.serverName)) {
|
|
185
|
+
retainedTools.push(tool);
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
// Remove ALL MCP tools from registry (will be re-registered below)
|
|
189
|
+
for (const [name, tool] of [...this.allKnownTools]) {
|
|
190
|
+
if (tool instanceof DiscoveredMCPTool) {
|
|
191
|
+
this.allKnownTools.delete(name);
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
// Combine retained + new for global conflict resolution.
|
|
195
|
+
// Sort for deterministic naming regardless of discovery order (e.g. Promise.all).
|
|
196
|
+
const allMcpTools = [...retainedTools, ...newTools].sort((a, b) => {
|
|
197
|
+
const cmp = a.serverName.localeCompare(b.serverName);
|
|
198
|
+
return cmp !== 0 ? cmp : a.serverToolName.localeCompare(b.serverToolName);
|
|
199
|
+
});
|
|
200
|
+
// Pass 1: Group by sanitized baseName to detect conflicts
|
|
201
|
+
const nameToTools = new Map();
|
|
202
|
+
for (const tool of allMcpTools) {
|
|
203
|
+
const baseName = generateValidName(tool.serverToolName);
|
|
204
|
+
const group = nameToTools.get(baseName) ?? [];
|
|
205
|
+
group.push(tool);
|
|
206
|
+
nameToTools.set(baseName, group);
|
|
207
|
+
}
|
|
208
|
+
// Pass 2: Register with deterministic naming
|
|
209
|
+
for (const [baseName, groupedTools] of nameToTools) {
|
|
210
|
+
const hasBuiltInConflict = this.allKnownTools.has(baseName);
|
|
211
|
+
const hasNameConflict = groupedTools.length > 1;
|
|
212
|
+
const needsQualification = hasBuiltInConflict || hasNameConflict;
|
|
213
|
+
if (!needsQualification) {
|
|
214
|
+
// No conflict → register with unqualified name
|
|
215
|
+
this.allKnownTools.set(baseName, groupedTools[0].asFullyQualifiedTool(baseName));
|
|
216
|
+
continue;
|
|
217
|
+
}
|
|
218
|
+
// Conflict → use qualified names, detect FQN duplicates
|
|
219
|
+
const fqnMap = new Map();
|
|
220
|
+
for (const tool of groupedTools) {
|
|
221
|
+
const fqn = tool.getFullyQualifiedName();
|
|
222
|
+
const fqnGroup = fqnMap.get(fqn) ?? [];
|
|
223
|
+
fqnGroup.push(tool);
|
|
224
|
+
fqnMap.set(fqn, fqnGroup);
|
|
225
|
+
}
|
|
226
|
+
for (const [fqn, fqnTools] of fqnMap) {
|
|
227
|
+
if (fqnTools.length === 1) {
|
|
228
|
+
// Unique FQN → register as qualified
|
|
229
|
+
this.allKnownTools.set(fqn, fqnTools[0].asFullyQualifiedTool());
|
|
230
|
+
}
|
|
231
|
+
else {
|
|
232
|
+
// Same-server sanitize collision → hash + counter disambiguation
|
|
233
|
+
// Sort by serverToolName for deterministic counter assignment
|
|
234
|
+
const sortedFqnTools = [...fqnTools].sort((a, b) => a.serverToolName.localeCompare(b.serverToolName));
|
|
235
|
+
const usedKeys = new Set();
|
|
236
|
+
for (const tool of sortedFqnTools) {
|
|
237
|
+
const hash = simpleHash(tool.serverToolName);
|
|
238
|
+
// Strip trailing underscores to prevent '_' + '_hash' = '__hash'
|
|
239
|
+
const maxLen = DEFAULT_MAX_TOOL_NAME_LENGTH;
|
|
240
|
+
const fqnTrunc = fqn.slice(0, maxLen - 7).replace(/_+$/, '');
|
|
241
|
+
let disambiguated = `${fqnTrunc}_${hash.slice(0, 6)}`;
|
|
242
|
+
let counter = 2;
|
|
243
|
+
while (usedKeys.has(disambiguated)) {
|
|
244
|
+
const counterStr = String(counter);
|
|
245
|
+
// Dynamic slice to guarantee ≤maxLen chars: fqn + '_' + hash(6) + '_' + counter
|
|
246
|
+
const budget = maxLen - 1 - 6 - 1 - counterStr.length;
|
|
247
|
+
const budgetTrunc = fqn.slice(0, budget).replace(/_+$/, '');
|
|
248
|
+
disambiguated = `${budgetTrunc}_${hash.slice(0, 6)}_${counterStr}`;
|
|
249
|
+
counter++;
|
|
250
|
+
}
|
|
251
|
+
usedKeys.add(disambiguated);
|
|
252
|
+
this.allKnownTools.set(disambiguated, tool.asFullyQualifiedTool(disambiguated));
|
|
253
|
+
}
|
|
254
|
+
}
|
|
255
|
+
}
|
|
256
|
+
}
|
|
257
|
+
this.sortTools();
|
|
258
|
+
}
|
|
159
259
|
/**
|
|
160
260
|
* Unregisters a tool definition by name.
|
|
161
261
|
*
|
|
@@ -411,11 +511,20 @@ export class ToolRegistry {
|
|
|
411
511
|
getTool(name) {
|
|
412
512
|
let tool = this.allKnownTools.get(name);
|
|
413
513
|
if (!tool && name.includes('__')) {
|
|
514
|
+
// FQN fallback: search by getFullyQualifiedName().
|
|
515
|
+
// If multiple tools share the same FQN (e.g. after disambiguation),
|
|
516
|
+
// return undefined to avoid ambiguous resolution.
|
|
517
|
+
let matchCount = 0;
|
|
414
518
|
for (const t of this.allKnownTools.values()) {
|
|
415
519
|
if (t instanceof DiscoveredMCPTool) {
|
|
416
520
|
if (t.getFullyQualifiedName() === name) {
|
|
417
521
|
tool = t;
|
|
418
|
-
|
|
522
|
+
matchCount++;
|
|
523
|
+
if (matchCount > 1) {
|
|
524
|
+
// Ambiguous: multiple tools share this FQN
|
|
525
|
+
tool = undefined;
|
|
526
|
+
break;
|
|
527
|
+
}
|
|
419
528
|
}
|
|
420
529
|
}
|
|
421
530
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tool-registry.js","sourceRoot":"","sources":["../../../src/tools/tool-registry.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"tool-registry.js","sourceRoot":"","sources":["../../../src/tools/tool-registry.ts"],"names":[],"mappings":"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"}
|
|
@@ -13,6 +13,21 @@ import type { AnyDeclarativeTool, AnyToolInvocation } from '../index.js';
|
|
|
13
13
|
* @returns A suggestion string like " Did you mean 'tool'?" or " Did you mean one of: 'tool1', 'tool2'?", or an empty string if no suggestions are found.
|
|
14
14
|
*/
|
|
15
15
|
export declare function getToolSuggestion(unknownToolName: string, allToolNames: string[], topN?: number): string;
|
|
16
|
+
/**
|
|
17
|
+
* Fuzzy-matches a tool name against registered tool names.
|
|
18
|
+
*
|
|
19
|
+
* If exact match exists, returns it immediately.
|
|
20
|
+
* Otherwise, finds the closest match using Levenshtein distance.
|
|
21
|
+
* Auto-corrects only when:
|
|
22
|
+
* - Distance ≤ 2 (typo threshold)
|
|
23
|
+
* - Single unique candidate at minimum distance
|
|
24
|
+
*
|
|
25
|
+
* Server boundary protection: qualified names (containing '__') are only
|
|
26
|
+
* matched against tools with the same server prefix.
|
|
27
|
+
*
|
|
28
|
+
* @returns The matched tool name, or null if no suitable match
|
|
29
|
+
*/
|
|
30
|
+
export declare function fuzzyMatchToolName(name: string, allToolNames: string[]): string | null;
|
|
16
31
|
/**
|
|
17
32
|
* Checks if a tool invocation matches any of a list of patterns.
|
|
18
33
|
*
|
|
@@ -26,3 +41,51 @@ export declare function getToolSuggestion(unknownToolName: string, allToolNames:
|
|
|
26
41
|
* @returns True if the invocation matches any pattern, false otherwise.
|
|
27
42
|
*/
|
|
28
43
|
export declare function doesToolInvocationMatch(toolOrToolName: AnyDeclarativeTool | string, invocation: AnyToolInvocation | string, patterns: string[]): boolean;
|
|
44
|
+
/**
|
|
45
|
+
* Coerces parameter values to match the types declared in the JSON schema.
|
|
46
|
+
*
|
|
47
|
+
* Handles common sLM type mismatches:
|
|
48
|
+
* - string "42" → number 42 (when schema expects 'number' or 'integer')
|
|
49
|
+
* - string "true"/"false" → boolean (when schema expects 'boolean')
|
|
50
|
+
* - number 42 → string "42" (when schema expects 'string')
|
|
51
|
+
*
|
|
52
|
+
* Rules:
|
|
53
|
+
* - Only converts when the target type is unambiguous (single type in schema)
|
|
54
|
+
* - Conversion failure (e.g., "abc" → number) → original value preserved
|
|
55
|
+
* - Original args never mutated (shallow copy)
|
|
56
|
+
* - No conversion for 'object' or 'array' types (too risky)
|
|
57
|
+
*/
|
|
58
|
+
export declare function coerceParamTypes(args: Record<string, unknown>, schema: Record<string, unknown> | undefined): Record<string, unknown>;
|
|
59
|
+
/**
|
|
60
|
+
* Schema-based parameter normalization for MCP tools.
|
|
61
|
+
*
|
|
62
|
+
* Strategy (priority order):
|
|
63
|
+
* 1. Exact match: arg name exists in schema → no change
|
|
64
|
+
* 2. camelCase→snake_case: arg 'filePath' → schema 'file_path' → rename
|
|
65
|
+
* 3. Suffix match: arg 'path' → schema 'file_path' (required param preferred)
|
|
66
|
+
*
|
|
67
|
+
* Rules:
|
|
68
|
+
* - Canonical param already exists → no aliasing (protects correct calls)
|
|
69
|
+
* - Original args never mutated (shallow copy)
|
|
70
|
+
* - Ambiguous suffix matches skipped unless exactly one required candidate
|
|
71
|
+
* - Supports top-level properties and allOf composition
|
|
72
|
+
* - Gracefully handles malformed schema (non-array required, etc.)
|
|
73
|
+
*/
|
|
74
|
+
export declare function normalizeToolParamsBySchema(args: Record<string, unknown>, schema: Record<string, unknown> | undefined): Record<string, unknown>;
|
|
75
|
+
/**
|
|
76
|
+
* Normalizes tool parameter names by applying known aliases.
|
|
77
|
+
*
|
|
78
|
+
* Rules:
|
|
79
|
+
* - If the canonical parameter already exists in args, no aliasing occurs
|
|
80
|
+
* (protects correct calls from Gemini or properly-learned non-Gemini models)
|
|
81
|
+
* - If an alias is found AND the canonical param is missing, the alias value
|
|
82
|
+
* is moved to the canonical key
|
|
83
|
+
* - The original alias key is removed to avoid AJV additionalProperties errors
|
|
84
|
+
* - If the tool has no alias rules, args are returned unchanged (reference identity)
|
|
85
|
+
* - Original args object is never mutated (shallow copy)
|
|
86
|
+
*
|
|
87
|
+
* @param toolName The API name of the tool (e.g., 'read_file')
|
|
88
|
+
* @param args The raw arguments from the LLM
|
|
89
|
+
* @returns A new args object with normalized parameter names, or the original if unchanged
|
|
90
|
+
*/
|
|
91
|
+
export declare function normalizeToolParams(toolName: string, args: Record<string, unknown>): Record<string, unknown>;
|
|
@@ -34,6 +34,51 @@ export function getToolSuggestion(unknownToolName, allToolNames, topN = 3) {
|
|
|
34
34
|
return ` Did you mean ${suggestedNames}?`;
|
|
35
35
|
}
|
|
36
36
|
}
|
|
37
|
+
/**
|
|
38
|
+
* Fuzzy-matches a tool name against registered tool names.
|
|
39
|
+
*
|
|
40
|
+
* If exact match exists, returns it immediately.
|
|
41
|
+
* Otherwise, finds the closest match using Levenshtein distance.
|
|
42
|
+
* Auto-corrects only when:
|
|
43
|
+
* - Distance ≤ 2 (typo threshold)
|
|
44
|
+
* - Single unique candidate at minimum distance
|
|
45
|
+
*
|
|
46
|
+
* Server boundary protection: qualified names (containing '__') are only
|
|
47
|
+
* matched against tools with the same server prefix.
|
|
48
|
+
*
|
|
49
|
+
* @returns The matched tool name, or null if no suitable match
|
|
50
|
+
*/
|
|
51
|
+
export function fuzzyMatchToolName(name, allToolNames) {
|
|
52
|
+
if (!name || allToolNames.length === 0)
|
|
53
|
+
return null;
|
|
54
|
+
// Exact match — fast path
|
|
55
|
+
if (allToolNames.includes(name))
|
|
56
|
+
return name;
|
|
57
|
+
const MAX_DISTANCE = 2;
|
|
58
|
+
// Server boundary protection: qualified name → filter by same prefix
|
|
59
|
+
let candidates = allToolNames;
|
|
60
|
+
if (name.includes('__')) {
|
|
61
|
+
const separatorIndex = name.indexOf('__');
|
|
62
|
+
const prefix = name.slice(0, separatorIndex);
|
|
63
|
+
candidates = allToolNames.filter((t) => t.startsWith(prefix + '__'));
|
|
64
|
+
if (candidates.length === 0)
|
|
65
|
+
return null;
|
|
66
|
+
}
|
|
67
|
+
const matches = candidates
|
|
68
|
+
.map((toolName) => ({
|
|
69
|
+
name: toolName,
|
|
70
|
+
distance: levenshtein.get(name, toolName),
|
|
71
|
+
}))
|
|
72
|
+
.filter((m) => m.distance <= MAX_DISTANCE)
|
|
73
|
+
.sort((a, b) => a.distance - b.distance);
|
|
74
|
+
if (matches.length === 0)
|
|
75
|
+
return null;
|
|
76
|
+
// Ambiguity check: top candidate must be strictly closer than second
|
|
77
|
+
if (matches.length > 1 && matches[0].distance === matches[1].distance) {
|
|
78
|
+
return null;
|
|
79
|
+
}
|
|
80
|
+
return matches[0].name;
|
|
81
|
+
}
|
|
37
82
|
/**
|
|
38
83
|
* Checks if a tool invocation matches any of a list of patterns.
|
|
39
84
|
*
|
|
@@ -93,4 +138,315 @@ export function doesToolInvocationMatch(toolOrToolName, invocation, patterns) {
|
|
|
93
138
|
}
|
|
94
139
|
return false;
|
|
95
140
|
}
|
|
141
|
+
// ============================================================================
|
|
142
|
+
// Tool parameter alias normalization
|
|
143
|
+
// ============================================================================
|
|
144
|
+
/**
|
|
145
|
+
* Maps tool API names to their parameter alias normalization rules.
|
|
146
|
+
* Each entry maps an alias name (sent by non-Gemini LLMs) to the canonical
|
|
147
|
+
* parameter name expected by the tool's JSON schema.
|
|
148
|
+
*
|
|
149
|
+
* Non-Gemini models (OpenAI, Claude) may send alternative parameter names
|
|
150
|
+
* on their first tool call (e.g., 'path' instead of 'file_path') because
|
|
151
|
+
* of training data conventions. This map enables transparent normalization
|
|
152
|
+
* before AJV schema validation.
|
|
153
|
+
*/
|
|
154
|
+
const TOOL_PARAM_ALIASES = {
|
|
155
|
+
read_file: {
|
|
156
|
+
path: 'file_path',
|
|
157
|
+
filepath: 'file_path',
|
|
158
|
+
filePath: 'file_path',
|
|
159
|
+
file: 'file_path',
|
|
160
|
+
},
|
|
161
|
+
search_file_content: {
|
|
162
|
+
query: 'pattern',
|
|
163
|
+
search_query: 'pattern',
|
|
164
|
+
regex: 'pattern',
|
|
165
|
+
search: 'pattern',
|
|
166
|
+
// dir_path aliases — optional param, silent failure if ignored
|
|
167
|
+
path: 'dir_path',
|
|
168
|
+
directory: 'dir_path',
|
|
169
|
+
dirPath: 'dir_path',
|
|
170
|
+
dir: 'dir_path',
|
|
171
|
+
},
|
|
172
|
+
list_directory: {
|
|
173
|
+
path: 'dir_path',
|
|
174
|
+
directory: 'dir_path',
|
|
175
|
+
dirPath: 'dir_path',
|
|
176
|
+
dir: 'dir_path',
|
|
177
|
+
},
|
|
178
|
+
glob: {
|
|
179
|
+
glob_pattern: 'pattern',
|
|
180
|
+
search_pattern: 'pattern',
|
|
181
|
+
// dir_path aliases — optional param, silent failure if ignored
|
|
182
|
+
path: 'dir_path',
|
|
183
|
+
directory: 'dir_path',
|
|
184
|
+
dirPath: 'dir_path',
|
|
185
|
+
dir: 'dir_path',
|
|
186
|
+
},
|
|
187
|
+
write_file: {
|
|
188
|
+
path: 'file_path',
|
|
189
|
+
filepath: 'file_path',
|
|
190
|
+
filePath: 'file_path',
|
|
191
|
+
},
|
|
192
|
+
replace: {
|
|
193
|
+
path: 'file_path',
|
|
194
|
+
filepath: 'file_path',
|
|
195
|
+
filePath: 'file_path',
|
|
196
|
+
// old_string / new_string aliases — required params
|
|
197
|
+
old_text: 'old_string',
|
|
198
|
+
oldText: 'old_string',
|
|
199
|
+
original: 'old_string',
|
|
200
|
+
original_string: 'old_string',
|
|
201
|
+
new_text: 'new_string',
|
|
202
|
+
newText: 'new_string',
|
|
203
|
+
replacement: 'new_string',
|
|
204
|
+
replacement_string: 'new_string',
|
|
205
|
+
// instruction aliases
|
|
206
|
+
description: 'instruction',
|
|
207
|
+
reason: 'instruction',
|
|
208
|
+
change_description: 'instruction',
|
|
209
|
+
},
|
|
210
|
+
run_shell_command: {
|
|
211
|
+
cmd: 'command',
|
|
212
|
+
shell_command: 'command',
|
|
213
|
+
},
|
|
214
|
+
google_web_search: {
|
|
215
|
+
search_query: 'query',
|
|
216
|
+
search: 'query',
|
|
217
|
+
q: 'query',
|
|
218
|
+
},
|
|
219
|
+
web_fetch: {
|
|
220
|
+
url: 'prompt',
|
|
221
|
+
input: 'prompt',
|
|
222
|
+
request: 'prompt',
|
|
223
|
+
},
|
|
224
|
+
read_many_files: {
|
|
225
|
+
files: 'include',
|
|
226
|
+
paths: 'include',
|
|
227
|
+
file_paths: 'include',
|
|
228
|
+
patterns: 'include',
|
|
229
|
+
glob_patterns: 'include',
|
|
230
|
+
},
|
|
231
|
+
get_internal_docs: {
|
|
232
|
+
file_path: 'path',
|
|
233
|
+
filepath: 'path',
|
|
234
|
+
filePath: 'path',
|
|
235
|
+
doc_path: 'path',
|
|
236
|
+
},
|
|
237
|
+
};
|
|
238
|
+
// ============================================================================
|
|
239
|
+
// Parameter type coercion (sLM fault tolerance — Phase 5)
|
|
240
|
+
// ============================================================================
|
|
241
|
+
/**
|
|
242
|
+
* Coerces parameter values to match the types declared in the JSON schema.
|
|
243
|
+
*
|
|
244
|
+
* Handles common sLM type mismatches:
|
|
245
|
+
* - string "42" → number 42 (when schema expects 'number' or 'integer')
|
|
246
|
+
* - string "true"/"false" → boolean (when schema expects 'boolean')
|
|
247
|
+
* - number 42 → string "42" (when schema expects 'string')
|
|
248
|
+
*
|
|
249
|
+
* Rules:
|
|
250
|
+
* - Only converts when the target type is unambiguous (single type in schema)
|
|
251
|
+
* - Conversion failure (e.g., "abc" → number) → original value preserved
|
|
252
|
+
* - Original args never mutated (shallow copy)
|
|
253
|
+
* - No conversion for 'object' or 'array' types (too risky)
|
|
254
|
+
*/
|
|
255
|
+
export function coerceParamTypes(args, schema) {
|
|
256
|
+
if (!schema)
|
|
257
|
+
return args;
|
|
258
|
+
// Reuse extractSchemaInfo to support allOf merged properties (Issue #3)
|
|
259
|
+
const schemaInfo = extractSchemaInfo(schema);
|
|
260
|
+
const properties = schemaInfo?.properties;
|
|
261
|
+
if (!properties)
|
|
262
|
+
return args;
|
|
263
|
+
let changed = false;
|
|
264
|
+
const coerced = { ...args };
|
|
265
|
+
for (const [key, value] of Object.entries(coerced)) {
|
|
266
|
+
const propSchema = properties[key];
|
|
267
|
+
if (!propSchema?.type || value === undefined || value === null)
|
|
268
|
+
continue;
|
|
269
|
+
const targetType = propSchema.type;
|
|
270
|
+
const actualType = typeof value;
|
|
271
|
+
// string → number/integer
|
|
272
|
+
if (actualType === 'string' &&
|
|
273
|
+
(targetType === 'number' || targetType === 'integer')) {
|
|
274
|
+
const strValue = value;
|
|
275
|
+
if (strValue.trim() === '')
|
|
276
|
+
continue; // 빈/공백 문자열 → 0 변환 방지
|
|
277
|
+
const num = Number(strValue);
|
|
278
|
+
if (!Number.isNaN(num) &&
|
|
279
|
+
Number.isFinite(num) &&
|
|
280
|
+
(targetType === 'number' || Number.isInteger(num))) {
|
|
281
|
+
coerced[key] = num;
|
|
282
|
+
changed = true;
|
|
283
|
+
}
|
|
284
|
+
}
|
|
285
|
+
// string → boolean
|
|
286
|
+
else if (actualType === 'string' && targetType === 'boolean') {
|
|
287
|
+
if (value === 'true') {
|
|
288
|
+
coerced[key] = true;
|
|
289
|
+
changed = true;
|
|
290
|
+
}
|
|
291
|
+
else if (value === 'false') {
|
|
292
|
+
coerced[key] = false;
|
|
293
|
+
changed = true;
|
|
294
|
+
}
|
|
295
|
+
}
|
|
296
|
+
// number/boolean → string
|
|
297
|
+
else if ((actualType === 'number' || actualType === 'boolean') &&
|
|
298
|
+
targetType === 'string') {
|
|
299
|
+
coerced[key] = String(value);
|
|
300
|
+
changed = true;
|
|
301
|
+
}
|
|
302
|
+
}
|
|
303
|
+
return changed ? coerced : args;
|
|
304
|
+
}
|
|
305
|
+
// ============================================================================
|
|
306
|
+
// Schema-based parameter normalization (MCP tools)
|
|
307
|
+
// ============================================================================
|
|
308
|
+
/**
|
|
309
|
+
* Converts a camelCase string to snake_case.
|
|
310
|
+
* e.g., 'filePath' → 'file_path', 'lineNumber' → 'line_number'
|
|
311
|
+
*/
|
|
312
|
+
function toSnakeCase(str) {
|
|
313
|
+
return str.replace(/[A-Z]/g, (letter, offset) => (offset === 0 ? '' : '_') + letter.toLowerCase());
|
|
314
|
+
}
|
|
315
|
+
/**
|
|
316
|
+
* Extracts merged properties and required keys from a JSON Schema.
|
|
317
|
+
* Supports top-level properties and allOf composition.
|
|
318
|
+
* Returns undefined if no properties are found.
|
|
319
|
+
*/
|
|
320
|
+
function extractSchemaInfo(schema) {
|
|
321
|
+
const s = schema;
|
|
322
|
+
const mergedProperties = {};
|
|
323
|
+
const mergedRequired = [];
|
|
324
|
+
// Collect top-level properties
|
|
325
|
+
if (s.properties) {
|
|
326
|
+
Object.assign(mergedProperties, s.properties);
|
|
327
|
+
if (Array.isArray(s.required)) {
|
|
328
|
+
for (const r of s.required) {
|
|
329
|
+
if (typeof r === 'string')
|
|
330
|
+
mergedRequired.push(r);
|
|
331
|
+
}
|
|
332
|
+
}
|
|
333
|
+
}
|
|
334
|
+
// Collect allOf sub-schema properties (additive — merges with top-level)
|
|
335
|
+
if (Array.isArray(s.allOf) && s.allOf.length > 0) {
|
|
336
|
+
for (const sub of s.allOf) {
|
|
337
|
+
const subSchema = sub;
|
|
338
|
+
if (subSchema.properties) {
|
|
339
|
+
Object.assign(mergedProperties, subSchema.properties);
|
|
340
|
+
}
|
|
341
|
+
if (Array.isArray(subSchema.required)) {
|
|
342
|
+
for (const r of subSchema.required) {
|
|
343
|
+
if (typeof r === 'string')
|
|
344
|
+
mergedRequired.push(r);
|
|
345
|
+
}
|
|
346
|
+
}
|
|
347
|
+
}
|
|
348
|
+
}
|
|
349
|
+
if (Object.keys(mergedProperties).length > 0) {
|
|
350
|
+
return { properties: mergedProperties, required: mergedRequired };
|
|
351
|
+
}
|
|
352
|
+
return undefined;
|
|
353
|
+
}
|
|
354
|
+
/**
|
|
355
|
+
* Schema-based parameter normalization for MCP tools.
|
|
356
|
+
*
|
|
357
|
+
* Strategy (priority order):
|
|
358
|
+
* 1. Exact match: arg name exists in schema → no change
|
|
359
|
+
* 2. camelCase→snake_case: arg 'filePath' → schema 'file_path' → rename
|
|
360
|
+
* 3. Suffix match: arg 'path' → schema 'file_path' (required param preferred)
|
|
361
|
+
*
|
|
362
|
+
* Rules:
|
|
363
|
+
* - Canonical param already exists → no aliasing (protects correct calls)
|
|
364
|
+
* - Original args never mutated (shallow copy)
|
|
365
|
+
* - Ambiguous suffix matches skipped unless exactly one required candidate
|
|
366
|
+
* - Supports top-level properties and allOf composition
|
|
367
|
+
* - Gracefully handles malformed schema (non-array required, etc.)
|
|
368
|
+
*/
|
|
369
|
+
export function normalizeToolParamsBySchema(args, schema) {
|
|
370
|
+
if (!schema)
|
|
371
|
+
return args;
|
|
372
|
+
const info = extractSchemaInfo(schema);
|
|
373
|
+
if (!info)
|
|
374
|
+
return args;
|
|
375
|
+
const schemaKeys = new Set(Object.keys(info.properties));
|
|
376
|
+
const requiredKeys = new Set(info.required);
|
|
377
|
+
// Check if any normalization is needed
|
|
378
|
+
const argKeys = Object.keys(args);
|
|
379
|
+
const unknownKeys = argKeys.filter((k) => !schemaKeys.has(k));
|
|
380
|
+
if (unknownKeys.length === 0)
|
|
381
|
+
return args;
|
|
382
|
+
const normalized = { ...args };
|
|
383
|
+
for (const argKey of unknownKeys) {
|
|
384
|
+
if (normalized[argKey] === undefined)
|
|
385
|
+
continue;
|
|
386
|
+
// Strategy 1: camelCase → snake_case exact match
|
|
387
|
+
const snakeKey = toSnakeCase(argKey);
|
|
388
|
+
if (snakeKey !== argKey &&
|
|
389
|
+
schemaKeys.has(snakeKey) &&
|
|
390
|
+
normalized[snakeKey] === undefined) {
|
|
391
|
+
normalized[snakeKey] = normalized[argKey];
|
|
392
|
+
delete normalized[argKey];
|
|
393
|
+
continue;
|
|
394
|
+
}
|
|
395
|
+
// Strategy 2: Suffix match (e.g., 'path' → 'file_path')
|
|
396
|
+
const suffix = argKey; // The arg key itself is the suffix
|
|
397
|
+
const candidates = [...schemaKeys].filter((sk) => sk !== argKey && sk.endsWith(`_${suffix}`));
|
|
398
|
+
if (candidates.length === 1 && normalized[candidates[0]] === undefined) {
|
|
399
|
+
// Unambiguous suffix match
|
|
400
|
+
normalized[candidates[0]] = normalized[argKey];
|
|
401
|
+
delete normalized[argKey];
|
|
402
|
+
}
|
|
403
|
+
else if (candidates.length > 1) {
|
|
404
|
+
// Ambiguous — resolve ONLY when exactly one required candidate
|
|
405
|
+
const requiredCandidates = candidates.filter((c) => requiredKeys.has(c));
|
|
406
|
+
if (requiredCandidates.length === 1 &&
|
|
407
|
+
normalized[requiredCandidates[0]] === undefined) {
|
|
408
|
+
normalized[requiredCandidates[0]] = normalized[argKey];
|
|
409
|
+
delete normalized[argKey];
|
|
410
|
+
}
|
|
411
|
+
// else: skip (ambiguous — required 0개 또는 2개 이상이면 매핑하지 않음)
|
|
412
|
+
}
|
|
413
|
+
}
|
|
414
|
+
return normalized;
|
|
415
|
+
}
|
|
416
|
+
// ============================================================================
|
|
417
|
+
// Static alias normalization (built-in tools)
|
|
418
|
+
// ============================================================================
|
|
419
|
+
/**
|
|
420
|
+
* Normalizes tool parameter names by applying known aliases.
|
|
421
|
+
*
|
|
422
|
+
* Rules:
|
|
423
|
+
* - If the canonical parameter already exists in args, no aliasing occurs
|
|
424
|
+
* (protects correct calls from Gemini or properly-learned non-Gemini models)
|
|
425
|
+
* - If an alias is found AND the canonical param is missing, the alias value
|
|
426
|
+
* is moved to the canonical key
|
|
427
|
+
* - The original alias key is removed to avoid AJV additionalProperties errors
|
|
428
|
+
* - If the tool has no alias rules, args are returned unchanged (reference identity)
|
|
429
|
+
* - Original args object is never mutated (shallow copy)
|
|
430
|
+
*
|
|
431
|
+
* @param toolName The API name of the tool (e.g., 'read_file')
|
|
432
|
+
* @param args The raw arguments from the LLM
|
|
433
|
+
* @returns A new args object with normalized parameter names, or the original if unchanged
|
|
434
|
+
*/
|
|
435
|
+
export function normalizeToolParams(toolName, args) {
|
|
436
|
+
const aliasMap = TOOL_PARAM_ALIASES[toolName];
|
|
437
|
+
if (!aliasMap) {
|
|
438
|
+
return args;
|
|
439
|
+
}
|
|
440
|
+
let changed = false;
|
|
441
|
+
const normalized = { ...args };
|
|
442
|
+
for (const [alias, canonical] of Object.entries(aliasMap)) {
|
|
443
|
+
if (normalized[canonical] === undefined &&
|
|
444
|
+
normalized[alias] !== undefined) {
|
|
445
|
+
normalized[canonical] = normalized[alias];
|
|
446
|
+
delete normalized[alias];
|
|
447
|
+
changed = true;
|
|
448
|
+
}
|
|
449
|
+
}
|
|
450
|
+
return changed ? normalized : args;
|
|
451
|
+
}
|
|
96
452
|
//# sourceMappingURL=tool-utils.js.map
|