@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.
Files changed (36) hide show
  1. package/dist/src/config/defaultModelConfigs.js +11 -0
  2. package/dist/src/config/defaultModelConfigs.js.map +1 -1
  3. package/dist/src/config/models.d.ts +1 -0
  4. package/dist/src/config/models.js +5 -2
  5. package/dist/src/config/models.js.map +1 -1
  6. package/dist/src/config/providerModels.js +5 -0
  7. package/dist/src/config/providerModels.js.map +1 -1
  8. package/dist/src/core/coreToolScheduler.js +42 -5
  9. package/dist/src/core/coreToolScheduler.js.map +1 -1
  10. package/dist/src/core/tokenLimits.js +2 -1
  11. package/dist/src/core/tokenLimits.js.map +1 -1
  12. package/dist/src/generated/git-commit.d.ts +1 -1
  13. package/dist/src/generated/git-commit.js +1 -1
  14. package/dist/src/ide/types.d.ts +4 -4
  15. package/dist/src/policy/policy-engine.js +20 -6
  16. package/dist/src/policy/policy-engine.js.map +1 -1
  17. package/dist/src/scheduler/scheduler.js +36 -3
  18. package/dist/src/scheduler/scheduler.js.map +1 -1
  19. package/dist/src/services/chatCompressionService.js +3 -1
  20. package/dist/src/services/chatCompressionService.js.map +1 -1
  21. package/dist/src/services/test-data/resolved-aliases-retry.golden.json +16 -0
  22. package/dist/src/services/test-data/resolved-aliases.golden.json +16 -0
  23. package/dist/src/tools/mcp-client.js +3 -12
  24. package/dist/src/tools/mcp-client.js.map +1 -1
  25. package/dist/src/tools/mcp-tool.d.ts +9 -2
  26. package/dist/src/tools/mcp-tool.js +63 -11
  27. package/dist/src/tools/mcp-tool.js.map +1 -1
  28. package/dist/src/tools/tool-names.js +2 -1
  29. package/dist/src/tools/tool-names.js.map +1 -1
  30. package/dist/src/tools/tool-registry.d.ts +16 -0
  31. package/dist/src/tools/tool-registry.js +111 -2
  32. package/dist/src/tools/tool-registry.js.map +1 -1
  33. package/dist/src/utils/tool-utils.d.ts +63 -0
  34. package/dist/src/utils/tool-utils.js +356 -0
  35. package/dist/src/utils/tool-utils.js.map +1 -1
  36. 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
- break;
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