@vybestack/llxprt-code-core 0.1.23 → 0.2.2-nightly.250908.7b895396

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 (153) hide show
  1. package/README.md +21 -17
  2. package/dist/src/adapters/IStreamAdapter.d.ts +3 -3
  3. package/dist/src/auth/oauth-errors.d.ts +173 -0
  4. package/dist/src/auth/oauth-errors.js +461 -0
  5. package/dist/src/auth/oauth-errors.js.map +1 -0
  6. package/dist/src/auth/precedence.d.ts +1 -5
  7. package/dist/src/auth/precedence.js +28 -48
  8. package/dist/src/auth/precedence.js.map +1 -1
  9. package/dist/src/auth/token-store.js +2 -2
  10. package/dist/src/auth/token-store.js.map +1 -1
  11. package/dist/src/auth/types.d.ts +4 -4
  12. package/dist/src/code_assist/codeAssist.js +19 -6
  13. package/dist/src/code_assist/codeAssist.js.map +1 -1
  14. package/dist/src/code_assist/oauth2.d.ts +7 -0
  15. package/dist/src/code_assist/oauth2.js +82 -32
  16. package/dist/src/code_assist/oauth2.js.map +1 -1
  17. package/dist/src/code_assist/server.js +15 -4
  18. package/dist/src/code_assist/server.js.map +1 -1
  19. package/dist/src/code_assist/setup.js +9 -0
  20. package/dist/src/code_assist/setup.js.map +1 -1
  21. package/dist/src/config/index.d.ts +7 -0
  22. package/dist/src/config/index.js +8 -0
  23. package/dist/src/config/index.js.map +1 -0
  24. package/dist/src/core/client.d.ts +15 -20
  25. package/dist/src/core/client.js +98 -124
  26. package/dist/src/core/client.js.map +1 -1
  27. package/dist/src/core/compression-config.d.ts +10 -0
  28. package/dist/src/core/compression-config.js +17 -0
  29. package/dist/src/core/compression-config.js.map +1 -0
  30. package/dist/src/core/coreToolScheduler.js +50 -15
  31. package/dist/src/core/coreToolScheduler.js.map +1 -1
  32. package/dist/src/core/geminiChat.d.ts +68 -9
  33. package/dist/src/core/geminiChat.js +940 -405
  34. package/dist/src/core/geminiChat.js.map +1 -1
  35. package/dist/src/core/nonInteractiveToolExecutor.js +70 -19
  36. package/dist/src/core/nonInteractiveToolExecutor.js.map +1 -1
  37. package/dist/src/core/prompts.js +35 -25
  38. package/dist/src/core/prompts.js.map +1 -1
  39. package/dist/src/core/turn.d.ts +1 -0
  40. package/dist/src/core/turn.js +8 -6
  41. package/dist/src/core/turn.js.map +1 -1
  42. package/dist/src/ide/ide-client.d.ts +1 -1
  43. package/dist/src/ide/ide-client.js +12 -6
  44. package/dist/src/ide/ide-client.js.map +1 -1
  45. package/dist/src/index.d.ts +4 -2
  46. package/dist/src/index.js +5 -2
  47. package/dist/src/index.js.map +1 -1
  48. package/dist/src/prompt-config/TemplateEngine.js +17 -0
  49. package/dist/src/prompt-config/TemplateEngine.js.map +1 -1
  50. package/dist/src/prompt-config/defaults/core-defaults.js +39 -32
  51. package/dist/src/prompt-config/defaults/core-defaults.js.map +1 -1
  52. package/dist/src/prompt-config/defaults/core.md +2 -0
  53. package/dist/src/prompt-config/defaults/provider-defaults.js +34 -27
  54. package/dist/src/prompt-config/defaults/provider-defaults.js.map +1 -1
  55. package/dist/src/prompt-config/defaults/providers/gemini/core.md +270 -0
  56. package/dist/src/prompt-config/defaults/providers/gemini/models/gemini-2.5-flash/core.md +12 -0
  57. package/dist/src/prompt-config/defaults/providers/gemini/models/gemini-2.5-flash/gemini-2-5-flash/core.md +12 -0
  58. package/dist/src/prompt-config/types.d.ts +2 -0
  59. package/dist/src/providers/BaseProvider.d.ts +39 -13
  60. package/dist/src/providers/BaseProvider.js +102 -28
  61. package/dist/src/providers/BaseProvider.js.map +1 -1
  62. package/dist/src/providers/IProvider.d.ts +17 -3
  63. package/dist/src/providers/LoggingProviderWrapper.d.ts +10 -3
  64. package/dist/src/providers/LoggingProviderWrapper.js +33 -27
  65. package/dist/src/providers/LoggingProviderWrapper.js.map +1 -1
  66. package/dist/src/providers/ProviderContentGenerator.d.ts +2 -2
  67. package/dist/src/providers/ProviderContentGenerator.js +9 -6
  68. package/dist/src/providers/ProviderContentGenerator.js.map +1 -1
  69. package/dist/src/providers/ProviderManager.d.ts +4 -0
  70. package/dist/src/providers/ProviderManager.js +6 -0
  71. package/dist/src/providers/ProviderManager.js.map +1 -1
  72. package/dist/src/providers/anthropic/AnthropicProvider.d.ts +34 -21
  73. package/dist/src/providers/anthropic/AnthropicProvider.js +505 -492
  74. package/dist/src/providers/anthropic/AnthropicProvider.js.map +1 -1
  75. package/dist/src/providers/gemini/GeminiProvider.d.ts +23 -9
  76. package/dist/src/providers/gemini/GeminiProvider.js +344 -515
  77. package/dist/src/providers/gemini/GeminiProvider.js.map +1 -1
  78. package/dist/src/providers/openai/ConversationCache.d.ts +3 -3
  79. package/dist/src/providers/openai/IChatGenerateParams.d.ts +9 -4
  80. package/dist/src/providers/openai/OpenAIProvider.d.ts +46 -96
  81. package/dist/src/providers/openai/OpenAIProvider.js +580 -1392
  82. package/dist/src/providers/openai/OpenAIProvider.js.map +1 -1
  83. package/dist/src/providers/openai/buildResponsesRequest.d.ts +3 -3
  84. package/dist/src/providers/openai/buildResponsesRequest.js +67 -37
  85. package/dist/src/providers/openai/buildResponsesRequest.js.map +1 -1
  86. package/dist/src/providers/openai/estimateRemoteTokens.d.ts +2 -2
  87. package/dist/src/providers/openai/estimateRemoteTokens.js +21 -8
  88. package/dist/src/providers/openai/estimateRemoteTokens.js.map +1 -1
  89. package/dist/src/providers/openai/parseResponsesStream.d.ts +6 -2
  90. package/dist/src/providers/openai/parseResponsesStream.js +99 -391
  91. package/dist/src/providers/openai/parseResponsesStream.js.map +1 -1
  92. package/dist/src/providers/openai/syntheticToolResponses.d.ts +5 -5
  93. package/dist/src/providers/openai/syntheticToolResponses.js +102 -91
  94. package/dist/src/providers/openai/syntheticToolResponses.js.map +1 -1
  95. package/dist/src/providers/openai-responses/OpenAIResponsesProvider.d.ts +89 -0
  96. package/dist/src/providers/openai-responses/OpenAIResponsesProvider.js +451 -0
  97. package/dist/src/providers/openai-responses/OpenAIResponsesProvider.js.map +1 -0
  98. package/dist/src/providers/openai-responses/index.d.ts +1 -0
  99. package/dist/src/providers/openai-responses/index.js +2 -0
  100. package/dist/src/providers/openai-responses/index.js.map +1 -0
  101. package/dist/src/providers/tokenizers/OpenAITokenizer.js +3 -3
  102. package/dist/src/providers/tokenizers/OpenAITokenizer.js.map +1 -1
  103. package/dist/src/providers/types.d.ts +1 -1
  104. package/dist/src/services/ClipboardService.d.ts +19 -0
  105. package/dist/src/services/ClipboardService.js +66 -0
  106. package/dist/src/services/ClipboardService.js.map +1 -0
  107. package/dist/src/services/history/ContentConverters.d.ts +43 -0
  108. package/dist/src/services/history/ContentConverters.js +325 -0
  109. package/dist/src/services/history/ContentConverters.js.map +1 -0
  110. package/dist/src/{providers/IMessage.d.ts → services/history/HistoryEvents.d.ts} +16 -22
  111. package/dist/src/{providers/IMessage.js → services/history/HistoryEvents.js} +1 -1
  112. package/dist/src/services/history/HistoryEvents.js.map +1 -0
  113. package/dist/src/services/history/HistoryService.d.ts +220 -0
  114. package/dist/src/services/history/HistoryService.js +673 -0
  115. package/dist/src/services/history/HistoryService.js.map +1 -0
  116. package/dist/src/services/history/IContent.d.ts +183 -0
  117. package/dist/src/services/history/IContent.js +104 -0
  118. package/dist/src/services/history/IContent.js.map +1 -0
  119. package/dist/src/services/index.d.ts +1 -0
  120. package/dist/src/services/index.js +1 -0
  121. package/dist/src/services/index.js.map +1 -1
  122. package/dist/src/settings/SettingsService.js.map +1 -1
  123. package/dist/src/telemetry/types.d.ts +16 -4
  124. package/dist/src/telemetry/types.js.map +1 -1
  125. package/dist/src/tools/IToolFormatter.d.ts +2 -2
  126. package/dist/src/tools/ToolFormatter.d.ts +42 -4
  127. package/dist/src/tools/ToolFormatter.js +151 -64
  128. package/dist/src/tools/ToolFormatter.js.map +1 -1
  129. package/dist/src/tools/doubleEscapeUtils.d.ts +57 -0
  130. package/dist/src/tools/doubleEscapeUtils.js +241 -0
  131. package/dist/src/tools/doubleEscapeUtils.js.map +1 -0
  132. package/dist/src/tools/read-file.d.ts +6 -1
  133. package/dist/src/tools/read-file.js +25 -11
  134. package/dist/src/tools/read-file.js.map +1 -1
  135. package/dist/src/tools/todo-schemas.d.ts +4 -4
  136. package/dist/src/tools/tool-registry.d.ts +8 -1
  137. package/dist/src/tools/tool-registry.js +79 -23
  138. package/dist/src/tools/tool-registry.js.map +1 -1
  139. package/dist/src/tools/tools.js +13 -0
  140. package/dist/src/tools/tools.js.map +1 -1
  141. package/dist/src/tools/write-file.d.ts +6 -1
  142. package/dist/src/tools/write-file.js +48 -26
  143. package/dist/src/tools/write-file.js.map +1 -1
  144. package/dist/src/types/modelParams.d.ts +12 -0
  145. package/dist/src/utils/bfsFileSearch.js +2 -6
  146. package/dist/src/utils/bfsFileSearch.js.map +1 -1
  147. package/dist/src/utils/schemaValidator.js +16 -1
  148. package/dist/src/utils/schemaValidator.js.map +1 -1
  149. package/package.json +8 -7
  150. package/dist/src/providers/IMessage.js.map +0 -1
  151. package/dist/src/providers/adapters/GeminiCompatibleWrapper.d.ts +0 -69
  152. package/dist/src/providers/adapters/GeminiCompatibleWrapper.js +0 -577
  153. package/dist/src/providers/adapters/GeminiCompatibleWrapper.js.map +0 -1
@@ -16,6 +16,71 @@
16
16
  import { DebugLogger } from '../debug/DebugLogger.js';
17
17
  export class ToolFormatter {
18
18
  logger = new DebugLogger('llxprt:tools:formatter');
19
+ /**
20
+ * Convert Gemini format tools directly to OpenAI format
21
+ * @param geminiTools Tools in Gemini format with functionDeclarations
22
+ * @returns Tools in OpenAI format with type: "function" wrapper
23
+ */
24
+ convertGeminiToOpenAI(geminiTools) {
25
+ if (!geminiTools) {
26
+ this.logger.debug(() => `convertGeminiToOpenAI called with undefined tools`);
27
+ return undefined;
28
+ }
29
+ if (this.logger.enabled) {
30
+ this.logger.debug(() => `convertGeminiToOpenAI input:`, {
31
+ toolGroupCount: geminiTools.length,
32
+ hasFirstGroup: !!geminiTools[0],
33
+ firstGroupFunctionCount: geminiTools[0]?.functionDeclarations?.length || 0,
34
+ });
35
+ }
36
+ const openAITools = geminiTools.flatMap((toolGroup) => toolGroup.functionDeclarations.map((decl) => {
37
+ const convertedParams = this.convertGeminiSchemaToStandard(decl.parametersJsonSchema || {});
38
+ return {
39
+ type: 'function',
40
+ function: {
41
+ name: decl.name,
42
+ description: decl.description || '',
43
+ parameters: convertedParams,
44
+ },
45
+ };
46
+ }));
47
+ if (this.logger.enabled) {
48
+ this.logger.debug(() => `Converted ${openAITools.length} tools from Gemini to OpenAI format`, {
49
+ toolNames: openAITools.map((t) => t.function.name),
50
+ hasFirstTool: !!openAITools[0],
51
+ firstToolName: openAITools[0]?.function?.name,
52
+ });
53
+ }
54
+ return openAITools;
55
+ }
56
+ /**
57
+ * Convert Gemini format tools directly to Anthropic format
58
+ * @param geminiTools Tools in Gemini format with functionDeclarations
59
+ * @returns Tools in Anthropic format with input_schema
60
+ */
61
+ convertGeminiToAnthropic(geminiTools) {
62
+ if (!geminiTools)
63
+ return undefined;
64
+ const anthropicTools = geminiTools.flatMap((toolGroup) => toolGroup.functionDeclarations.map((decl) => {
65
+ const convertedParams = this.convertGeminiSchemaToStandard(decl.parametersJsonSchema || {});
66
+ // Remove verbose per-tool logging
67
+ return {
68
+ name: decl.name,
69
+ description: decl.description || '',
70
+ input_schema: {
71
+ type: 'object',
72
+ ...convertedParams,
73
+ },
74
+ };
75
+ }));
76
+ if (this.logger.enabled) {
77
+ this.logger.debug(() => `Converted ${anthropicTools.length} tools from Gemini to Anthropic format`, {
78
+ toolNames: anthropicTools.map((t) => t.name),
79
+ hasFirstTool: !!anthropicTools[0],
80
+ });
81
+ }
82
+ return anthropicTools;
83
+ }
19
84
  /**
20
85
  * Converts Gemini schema format (with uppercase Type enums) to standard JSON Schema format
21
86
  */
@@ -45,6 +110,31 @@ export class ToolFormatter {
45
110
  if (newSchema.type) {
46
111
  newSchema.type = String(newSchema.type).toLowerCase();
47
112
  }
113
+ // Convert enum values if present (they should remain as-is)
114
+ // But ensure they're arrays of strings, not some other type
115
+ if (newSchema.enum && Array.isArray(newSchema.enum)) {
116
+ newSchema.enum = newSchema.enum.map((v) => String(v));
117
+ }
118
+ // Convert minLength from string to number if present
119
+ if (newSchema.minLength && typeof newSchema.minLength === 'string') {
120
+ const minLengthNum = parseInt(newSchema.minLength, 10);
121
+ if (!isNaN(minLengthNum)) {
122
+ newSchema.minLength = minLengthNum;
123
+ }
124
+ else {
125
+ delete newSchema.minLength;
126
+ }
127
+ }
128
+ // Convert maxLength from string to number if present
129
+ if (newSchema.maxLength && typeof newSchema.maxLength === 'string') {
130
+ const maxLengthNum = parseInt(newSchema.maxLength, 10);
131
+ if (!isNaN(maxLengthNum)) {
132
+ newSchema.maxLength = maxLengthNum;
133
+ }
134
+ else {
135
+ delete newSchema.maxLength;
136
+ }
137
+ }
48
138
  return newSchema;
49
139
  }
50
140
  toProviderFormat(tools, format) {
@@ -52,20 +142,20 @@ export class ToolFormatter {
52
142
  case 'openai':
53
143
  case 'deepseek': // DeepSeek uses same format as OpenAI for now
54
144
  case 'qwen': // Qwen uses same format as OpenAI for now
55
- this.logger.debug(() => `Converting ${tools.length} tools to ${format} format`);
145
+ // Guard verbose conversion logging
146
+ if (this.logger.enabled) {
147
+ this.logger.debug(() => `Converting ${tools.length} tools to ${format} format`);
148
+ }
56
149
  return tools.map((tool) => {
150
+ const convertedParams = this.convertGeminiSchemaToStandard(tool.function.parameters);
57
151
  const converted = {
58
152
  type: 'function',
59
153
  function: {
60
154
  name: tool.function.name,
61
155
  description: tool.function.description,
62
- parameters: this.convertGeminiSchemaToStandard(tool.function.parameters),
156
+ parameters: convertedParams,
63
157
  },
64
158
  };
65
- this.logger.debug(() => `Converted tool ${tool.function.name} to ${format} format:`, {
66
- original: tool.function.parameters,
67
- converted: converted.function.parameters,
68
- });
69
159
  return converted;
70
160
  });
71
161
  case 'anthropic':
@@ -120,17 +210,15 @@ export class ToolFormatter {
120
210
  !openAiToolCall.function.arguments) {
121
211
  throw new Error(`Invalid ${format} tool call format`);
122
212
  }
123
- // Debug logging for tool call conversion
124
- this.logger.debug(() => `Converting ${format} tool call from provider format:`, {
125
- format,
126
- toolName: openAiToolCall.function.name,
127
- argumentsType: typeof openAiToolCall.function.arguments,
128
- argumentsLength: openAiToolCall.function.arguments.length,
129
- argumentsPreview: openAiToolCall.function.arguments.length > 100
130
- ? openAiToolCall.function.arguments.substring(0, 100) + '...'
131
- : openAiToolCall.function.arguments,
132
- rawArguments: openAiToolCall.function.arguments,
133
- });
213
+ // Only log tool call conversions if debug is enabled to avoid performance overhead
214
+ if (this.logger.enabled) {
215
+ this.logger.debug(() => `Converting ${format} tool call from provider format:`, {
216
+ format,
217
+ toolName: openAiToolCall.function.name,
218
+ argumentsType: typeof openAiToolCall.function.arguments,
219
+ argumentsLength: openAiToolCall.function.arguments.length,
220
+ });
221
+ }
134
222
  // Check if arguments look double-stringified
135
223
  if (format === 'qwen') {
136
224
  const args = openAiToolCall.function.arguments;
@@ -158,12 +246,10 @@ export class ToolFormatter {
158
246
  }
159
247
  return [
160
248
  {
249
+ type: 'tool_call',
161
250
  id: openAiToolCall.id,
162
- type: 'function',
163
- function: {
164
- name: openAiToolCall.function.name,
165
- arguments: openAiToolCall.function.arguments,
166
- },
251
+ name: openAiToolCall.function.name,
252
+ parameters: JSON.parse(openAiToolCall.function.arguments),
167
253
  },
168
254
  ];
169
255
  }
@@ -176,14 +262,10 @@ export class ToolFormatter {
176
262
  }
177
263
  return [
178
264
  {
265
+ type: 'tool_call',
179
266
  id: anthropicToolCall.id,
180
- type: 'function',
181
- function: {
182
- name: anthropicToolCall.name,
183
- arguments: anthropicToolCall.input
184
- ? JSON.stringify(anthropicToolCall.input)
185
- : '',
186
- },
267
+ name: anthropicToolCall.name,
268
+ parameters: anthropicToolCall.input || {},
187
269
  },
188
270
  ];
189
271
  }
@@ -195,12 +277,10 @@ export class ToolFormatter {
195
277
  }
196
278
  return [
197
279
  {
280
+ type: 'tool_call',
198
281
  id: `hermes_${Date.now()}_${Math.random().toString(36).substring(7)}`,
199
- type: 'function',
200
- function: {
201
- name: hermesToolCall.name,
202
- arguments: JSON.stringify(hermesToolCall.arguments || {}),
203
- },
282
+ name: hermesToolCall.name,
283
+ parameters: hermesToolCall.arguments || {},
204
284
  },
205
285
  ];
206
286
  }
@@ -212,12 +292,10 @@ export class ToolFormatter {
212
292
  }
213
293
  return [
214
294
  {
295
+ type: 'tool_call',
215
296
  id: `xml_${Date.now()}_${Math.random().toString(36).substring(7)}`,
216
- type: 'function',
217
- function: {
218
- name: xmlToolCall.name,
219
- arguments: JSON.stringify(xmlToolCall.arguments || {}),
220
- },
297
+ name: xmlToolCall.name,
298
+ parameters: xmlToolCall.arguments || {},
221
299
  },
222
300
  ];
223
301
  }
@@ -239,31 +317,34 @@ export class ToolFormatter {
239
317
  if (deltaToolCall.index !== undefined) {
240
318
  if (!accumulatedToolCalls[deltaToolCall.index]) {
241
319
  accumulatedToolCalls[deltaToolCall.index] = {
320
+ type: 'tool_call',
242
321
  id: deltaToolCall.id || '',
243
- type: 'function',
244
- function: { name: '', arguments: '' },
322
+ name: '',
323
+ parameters: {},
245
324
  };
246
325
  }
247
326
  const tc = accumulatedToolCalls[deltaToolCall.index];
248
327
  if (deltaToolCall.id)
249
328
  tc.id = deltaToolCall.id;
250
329
  if (deltaToolCall.function?.name)
251
- tc.function.name = deltaToolCall.function.name;
330
+ tc.name = deltaToolCall.function.name;
252
331
  if (deltaToolCall.function?.arguments) {
253
332
  // Enhanced debug logging for all formats, especially Qwen
254
- this.logger.debug(() => `[${format}] Accumulating argument chunk for tool ${tc.function.name}:`, {
255
- format,
256
- toolName: tc.function.name,
257
- index: deltaToolCall.index,
258
- chunk: deltaToolCall.function.arguments,
259
- chunkLength: deltaToolCall.function.arguments.length,
260
- currentAccumulated: tc.function.arguments,
261
- currentAccumulatedLength: tc.function.arguments.length,
262
- startsWithQuote: deltaToolCall.function.arguments.startsWith('"'),
263
- endsWithQuote: deltaToolCall.function.arguments.endsWith('"'),
264
- containsEscapedQuote: deltaToolCall.function.arguments.includes('\\"'),
265
- containsDoubleEscapedQuote: deltaToolCall.function.arguments.includes('\\\\"'),
266
- });
333
+ // Store accumulated arguments as string first, will parse at the end
334
+ if (!('_argumentsString' in tc)) {
335
+ tc._argumentsString =
336
+ '';
337
+ }
338
+ // Only log argument accumulation in debug mode to prevent performance issues
339
+ if (this.logger.enabled) {
340
+ this.logger.debug(() => `[${format}] Accumulating argument chunk for tool ${tc.name}`, {
341
+ format,
342
+ toolName: tc.name,
343
+ index: deltaToolCall.index,
344
+ chunkLength: deltaToolCall.function.arguments.length,
345
+ currentAccumulatedLength: tc._argumentsString.length,
346
+ });
347
+ }
267
348
  // Special Qwen double-stringification detection
268
349
  if (format === 'qwen') {
269
350
  // Check if this looks like a double-stringified value
@@ -271,20 +352,26 @@ export class ToolFormatter {
271
352
  if (chunk.includes('\\"[') ||
272
353
  chunk.includes('\\\\"') ||
273
354
  (chunk.startsWith('"\\"') && chunk.endsWith('\\""'))) {
274
- this.logger.error(() => `[Qwen] Detected potential double-stringification in chunk for ${tc.function.name}`, {
355
+ this.logger.error(() => `[Qwen] Detected potential double-stringification in chunk for ${tc.name}`, {
275
356
  chunk,
276
357
  pattern: 'Contains escaped quotes that suggest double-stringification',
277
358
  });
278
359
  }
279
360
  }
280
- tc.function.arguments += deltaToolCall.function.arguments;
281
- // Log the accumulated state after adding chunk
282
- this.logger.debug(() => `[${format}] After accumulation for ${tc.function.name}:`, {
283
- totalLength: tc.function.arguments.length,
284
- preview: tc.function.arguments.length > 100
285
- ? tc.function.arguments.substring(0, 100) + '...'
286
- : tc.function.arguments,
287
- });
361
+ tc._argumentsString +=
362
+ deltaToolCall.function.arguments;
363
+ // Remove excessive accumulation logging
364
+ // Try to parse parameters
365
+ try {
366
+ const argsStr = tc
367
+ ._argumentsString;
368
+ if (argsStr.trim()) {
369
+ tc.parameters = JSON.parse(argsStr);
370
+ }
371
+ }
372
+ catch {
373
+ // Keep accumulating, parameters will be set when complete
374
+ }
288
375
  }
289
376
  }
290
377
  break;
@@ -1 +1 @@
1
- {"version":3,"file":"ToolFormatter.js","sourceRoot":"","sources":["../../../src/tools/ToolFormatter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ToolFormatter.js","sourceRoot":"","sources":["../../../src/tools/ToolFormatter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,57 @@
1
+ /**
2
+ * Copyright 2025 Vybestack LLC
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
16
+ /**
17
+ * Detects if a tool format should use double-escape handling
18
+ * @param toolFormat - The tool format to check
19
+ * @returns true if the format typically needs double-escape handling
20
+ */
21
+ export declare function shouldUseDoubleEscapeHandling(toolFormat: string): boolean;
22
+ /**
23
+ * Checks if a JSON string appears to be double-stringified
24
+ * @param jsonString - The JSON string to check
25
+ * @returns Object with detection results and corrected value if applicable
26
+ */
27
+ export declare function detectDoubleEscaping(jsonString: string): {
28
+ isDoubleEscaped: boolean;
29
+ correctedValue?: unknown;
30
+ originalValue: string;
31
+ detectionDetails: {
32
+ firstParse?: string;
33
+ secondParse?: unknown;
34
+ error?: string;
35
+ };
36
+ };
37
+ /**
38
+ * Detects double-escaping in streaming tool call chunks
39
+ * @param chunk - The streaming chunk to analyze
40
+ * @returns true if double-escaping patterns are detected
41
+ */
42
+ export declare function detectDoubleEscapingInChunk(chunk: string): boolean;
43
+ /**
44
+ * Processes tool call parameters, fixing double-escaping if detected
45
+ * @param parametersString - The JSON string containing tool parameters
46
+ * @param toolName - Name of the tool (for logging)
47
+ * @param format - The tool format being used (for context)
48
+ * @returns Processed parameters object
49
+ */
50
+ export declare function processToolParameters(parametersString: string, toolName: string, format: string): unknown;
51
+ /**
52
+ * Logs double-escaping detection in streaming chunks (for debugging)
53
+ * @param chunk - The chunk that contains potential double-escaping
54
+ * @param toolName - Name of the tool
55
+ * @param format - The tool format
56
+ */
57
+ export declare function logDoubleEscapingInChunk(chunk: string, toolName: string, format: string): void;
@@ -0,0 +1,241 @@
1
+ /**
2
+ * Copyright 2025 Vybestack LLC
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
16
+ /**
17
+ * Utility functions for detecting and handling double-escaped tool calls
18
+ * Used by providers that need to work with models that double-escape JSON parameters
19
+ * (e.g., Qwen models, GLM-4.5 models)
20
+ */
21
+ import { DebugLogger } from '../debug/index.js';
22
+ const logger = new DebugLogger('llxprt:tools:doubleEscape');
23
+ /**
24
+ * Detects if a tool format should use double-escape handling
25
+ * @param toolFormat - The tool format to check
26
+ * @returns true if the format typically needs double-escape handling
27
+ */
28
+ export function shouldUseDoubleEscapeHandling(toolFormat) {
29
+ // Qwen format needs double-escape handling (includes GLM-4.5 which uses qwen format)
30
+ return toolFormat === 'qwen';
31
+ }
32
+ /**
33
+ * Checks if a JSON string appears to be double-stringified
34
+ * @param jsonString - The JSON string to check
35
+ * @returns Object with detection results and corrected value if applicable
36
+ */
37
+ export function detectDoubleEscaping(jsonString) {
38
+ const result = {
39
+ isDoubleEscaped: false,
40
+ correctedValue: undefined,
41
+ originalValue: jsonString,
42
+ detectionDetails: {},
43
+ };
44
+ try {
45
+ const parsed = JSON.parse(jsonString);
46
+ if (typeof parsed === 'string') {
47
+ result.detectionDetails.firstParse = parsed;
48
+ // Arguments were stringified, let's check if they're double-stringified
49
+ try {
50
+ const doubleParsed = JSON.parse(parsed);
51
+ result.isDoubleEscaped = true;
52
+ result.correctedValue = doubleParsed;
53
+ result.detectionDetails.secondParse = doubleParsed;
54
+ logger.error(() => `Detected double-stringified JSON parameters`, {
55
+ firstParse: parsed,
56
+ secondParse: doubleParsed,
57
+ originalLength: jsonString.length,
58
+ });
59
+ }
60
+ catch (_secondParseError) {
61
+ // Not double-stringified, just single stringified
62
+ logger.debug(() => `JSON parameters are single-stringified (normal)`);
63
+ result.correctedValue = parsed;
64
+ }
65
+ }
66
+ else if (typeof parsed === 'object' && parsed !== null) {
67
+ // Check if it's an object with stringified values (common pattern)
68
+ const hasStringifiedValues = Object.values(parsed).some((value) => {
69
+ if (typeof value === 'string') {
70
+ try {
71
+ const testParse = JSON.parse(value);
72
+ // If we can parse it and it's an array or object, it's likely stringified
73
+ return typeof testParse === 'object';
74
+ }
75
+ catch {
76
+ return false;
77
+ }
78
+ }
79
+ return false;
80
+ });
81
+ if (hasStringifiedValues) {
82
+ // Fix stringified values
83
+ const fixed = { ...parsed };
84
+ for (const [key, value] of Object.entries(fixed)) {
85
+ if (typeof value === 'string') {
86
+ try {
87
+ const testParse = JSON.parse(value);
88
+ if (typeof testParse === 'object') {
89
+ fixed[key] = testParse;
90
+ result.isDoubleEscaped = true;
91
+ }
92
+ }
93
+ catch {
94
+ // Keep original value if can't parse
95
+ }
96
+ }
97
+ }
98
+ result.correctedValue = fixed;
99
+ if (result.isDoubleEscaped) {
100
+ logger.error(() => `Fixed stringified parameter values`, {
101
+ original: parsed,
102
+ fixed,
103
+ });
104
+ }
105
+ }
106
+ else {
107
+ result.correctedValue = parsed;
108
+ }
109
+ }
110
+ else {
111
+ // Already parsed correctly
112
+ result.correctedValue = parsed;
113
+ }
114
+ }
115
+ catch (parseError) {
116
+ result.detectionDetails.error = String(parseError);
117
+ logger.error(() => `Failed to parse JSON parameters:`, parseError);
118
+ }
119
+ return result;
120
+ }
121
+ /**
122
+ * Detects double-escaping in streaming tool call chunks
123
+ * @param chunk - The streaming chunk to analyze
124
+ * @returns true if double-escaping patterns are detected
125
+ */
126
+ export function detectDoubleEscapingInChunk(chunk) {
127
+ // Check for common double-escaping patterns in streaming chunks
128
+ // Using String.raw to avoid eslint no-useless-escape issues
129
+ const backslashBracket = String.raw `\\[`;
130
+ const doubleBackslash = String.raw `\\\\`;
131
+ const backslashQuote = String.raw `\\"`;
132
+ const startPattern = String.raw `"\\`;
133
+ const endPattern = String.raw `\\"`;
134
+ return (chunk.includes(backslashBracket) ||
135
+ chunk.includes(doubleBackslash) ||
136
+ chunk.includes(backslashQuote) ||
137
+ (chunk.startsWith(startPattern) && chunk.endsWith(endPattern)));
138
+ }
139
+ /**
140
+ * Processes tool call parameters, fixing double-escaping if detected
141
+ * @param parametersString - The JSON string containing tool parameters
142
+ * @param toolName - Name of the tool (for logging)
143
+ * @param format - The tool format being used (for context)
144
+ * @returns Processed parameters object
145
+ */
146
+ export function processToolParameters(parametersString, toolName, format) {
147
+ if (!parametersString.trim()) {
148
+ return {};
149
+ }
150
+ // Only apply double-escape handling for formats that need it
151
+ if (!shouldUseDoubleEscapeHandling(format)) {
152
+ // For formats that don't need double-escape handling, parse the JSON string
153
+ try {
154
+ return JSON.parse(parametersString);
155
+ }
156
+ catch (e) {
157
+ logger.debug(() => `Failed to parse tool parameters as JSON: ${e}`);
158
+ return parametersString; // Return as-is if not valid JSON
159
+ }
160
+ }
161
+ // Apply double-escape detection and fixing for qwen format
162
+ const detection = detectDoubleEscaping(parametersString);
163
+ if (detection.isDoubleEscaped) {
164
+ logger.error(() => `[${format}] Fixed double-escaped parameters for ${toolName}`, {
165
+ tool: toolName,
166
+ format,
167
+ originalLength: parametersString.length,
168
+ fixed: true,
169
+ });
170
+ // Convert string numbers to actual numbers for qwen format
171
+ return convertStringNumbersToNumbers(detection.correctedValue);
172
+ }
173
+ else if (detection.detectionDetails.error) {
174
+ logger.error(() => `[${format}] Failed to parse parameters for ${toolName}`, {
175
+ tool: toolName,
176
+ format,
177
+ error: detection.detectionDetails.error,
178
+ });
179
+ // Return the string as-is if parsing fails
180
+ return parametersString;
181
+ }
182
+ // Convert string numbers to actual numbers for qwen format
183
+ return convertStringNumbersToNumbers(detection.correctedValue);
184
+ }
185
+ /**
186
+ * Converts string numbers to actual numbers in an object
187
+ * This is needed for qwen models that stringify numeric parameters
188
+ * @param obj - The object to fix
189
+ * @returns The object with numeric strings converted to numbers
190
+ */
191
+ function convertStringNumbersToNumbers(obj) {
192
+ if (obj === null || obj === undefined) {
193
+ return obj;
194
+ }
195
+ if (typeof obj === 'string') {
196
+ // Check if it's a numeric string
197
+ if (/^-?\d+$/.test(obj)) {
198
+ // Integer
199
+ const num = parseInt(obj, 10);
200
+ if (!isNaN(num))
201
+ return num;
202
+ }
203
+ else if (/^-?\d*\.?\d+$/.test(obj)) {
204
+ // Float
205
+ const num = parseFloat(obj);
206
+ if (!isNaN(num))
207
+ return num;
208
+ }
209
+ return obj;
210
+ }
211
+ if (Array.isArray(obj)) {
212
+ return obj.map(convertStringNumbersToNumbers);
213
+ }
214
+ if (typeof obj === 'object') {
215
+ const result = {};
216
+ for (const [key, value] of Object.entries(obj)) {
217
+ result[key] = convertStringNumbersToNumbers(value);
218
+ }
219
+ return result;
220
+ }
221
+ return obj;
222
+ }
223
+ /**
224
+ * Logs double-escaping detection in streaming chunks (for debugging)
225
+ * @param chunk - The chunk that contains potential double-escaping
226
+ * @param toolName - Name of the tool
227
+ * @param format - The tool format
228
+ */
229
+ export function logDoubleEscapingInChunk(chunk, toolName, format) {
230
+ // Only log for formats that use double-escape handling
231
+ if (shouldUseDoubleEscapeHandling(format) &&
232
+ detectDoubleEscapingInChunk(chunk)) {
233
+ logger.error(() => `[${format}] Detected potential double-escaping in streaming chunk for ${toolName}`, {
234
+ chunk,
235
+ tool: toolName,
236
+ format,
237
+ pattern: 'Contains escaped quotes that suggest double-stringification',
238
+ });
239
+ }
240
+ }
241
+ //# sourceMappingURL=doubleEscapeUtils.js.map