@node-llm/core 1.5.2 → 1.6.0

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 (185) hide show
  1. package/README.md +84 -110
  2. package/dist/aliases.js +239 -239
  3. package/dist/chat/Chat.d.ts +18 -17
  4. package/dist/chat/Chat.d.ts.map +1 -1
  5. package/dist/chat/Chat.js +63 -42
  6. package/dist/chat/ChatOptions.d.ts +8 -9
  7. package/dist/chat/ChatOptions.d.ts.map +1 -1
  8. package/dist/chat/ChatResponse.d.ts +1 -1
  9. package/dist/chat/ChatResponse.d.ts.map +1 -1
  10. package/dist/chat/ChatResponse.js +22 -8
  11. package/dist/chat/ChatStream.d.ts.map +1 -1
  12. package/dist/chat/ChatStream.js +16 -22
  13. package/dist/chat/Content.d.ts +3 -3
  14. package/dist/chat/Content.d.ts.map +1 -1
  15. package/dist/chat/Content.js +3 -6
  16. package/dist/chat/Message.d.ts +3 -1
  17. package/dist/chat/Message.d.ts.map +1 -1
  18. package/dist/chat/Role.d.ts.map +1 -1
  19. package/dist/chat/Tool.d.ts +15 -15
  20. package/dist/chat/Tool.d.ts.map +1 -1
  21. package/dist/chat/Tool.js +9 -7
  22. package/dist/chat/ToolHandler.d.ts +4 -3
  23. package/dist/chat/ToolHandler.d.ts.map +1 -1
  24. package/dist/chat/ToolHandler.js +10 -14
  25. package/dist/chat/Validation.d.ts.map +1 -1
  26. package/dist/chat/Validation.js +13 -6
  27. package/dist/config.d.ts +4 -0
  28. package/dist/config.d.ts.map +1 -1
  29. package/dist/config.js +80 -25
  30. package/dist/constants.js +1 -1
  31. package/dist/errors/index.d.ts +21 -7
  32. package/dist/errors/index.d.ts.map +1 -1
  33. package/dist/errors/index.js +14 -0
  34. package/dist/index.d.ts +1 -1
  35. package/dist/index.d.ts.map +1 -1
  36. package/dist/index.js +1 -1
  37. package/dist/llm.d.ts +44 -46
  38. package/dist/llm.d.ts.map +1 -1
  39. package/dist/llm.js +206 -134
  40. package/dist/model_aliases.d.ts.map +1 -1
  41. package/dist/models/ModelRegistry.d.ts.map +1 -1
  42. package/dist/models/ModelRegistry.js +12 -10
  43. package/dist/models/PricingRegistry.d.ts +31 -0
  44. package/dist/models/PricingRegistry.d.ts.map +1 -0
  45. package/dist/models/PricingRegistry.js +101 -0
  46. package/dist/models/models.d.ts.map +1 -1
  47. package/dist/models/models.js +5954 -7352
  48. package/dist/models/types.d.ts +37 -34
  49. package/dist/models/types.d.ts.map +1 -1
  50. package/dist/moderation/Moderation.d.ts.map +1 -1
  51. package/dist/moderation/Moderation.js +15 -5
  52. package/dist/providers/BaseProvider.d.ts +12 -8
  53. package/dist/providers/BaseProvider.d.ts.map +1 -1
  54. package/dist/providers/BaseProvider.js +17 -7
  55. package/dist/providers/Provider.d.ts +20 -5
  56. package/dist/providers/Provider.d.ts.map +1 -1
  57. package/dist/providers/anthropic/AnthropicProvider.d.ts +1 -1
  58. package/dist/providers/anthropic/AnthropicProvider.d.ts.map +1 -1
  59. package/dist/providers/anthropic/AnthropicProvider.js +3 -3
  60. package/dist/providers/anthropic/Capabilities.d.ts +2 -1
  61. package/dist/providers/anthropic/Capabilities.d.ts.map +1 -1
  62. package/dist/providers/anthropic/Capabilities.js +3 -20
  63. package/dist/providers/anthropic/Chat.d.ts.map +1 -1
  64. package/dist/providers/anthropic/Chat.js +27 -17
  65. package/dist/providers/anthropic/Errors.d.ts.map +1 -1
  66. package/dist/providers/anthropic/Errors.js +5 -2
  67. package/dist/providers/anthropic/Models.d.ts.map +1 -1
  68. package/dist/providers/anthropic/Models.js +6 -6
  69. package/dist/providers/anthropic/Streaming.d.ts.map +1 -1
  70. package/dist/providers/anthropic/Streaming.js +17 -12
  71. package/dist/providers/anthropic/Utils.js +8 -5
  72. package/dist/providers/anthropic/index.d.ts.map +1 -1
  73. package/dist/providers/anthropic/index.js +4 -3
  74. package/dist/providers/anthropic/types.d.ts +11 -4
  75. package/dist/providers/anthropic/types.d.ts.map +1 -1
  76. package/dist/providers/deepseek/Capabilities.d.ts +7 -5
  77. package/dist/providers/deepseek/Capabilities.d.ts.map +1 -1
  78. package/dist/providers/deepseek/Capabilities.js +9 -5
  79. package/dist/providers/deepseek/Chat.d.ts.map +1 -1
  80. package/dist/providers/deepseek/Chat.js +10 -9
  81. package/dist/providers/deepseek/DeepSeekProvider.d.ts +1 -1
  82. package/dist/providers/deepseek/DeepSeekProvider.d.ts.map +1 -1
  83. package/dist/providers/deepseek/DeepSeekProvider.js +4 -4
  84. package/dist/providers/deepseek/Models.d.ts.map +1 -1
  85. package/dist/providers/deepseek/Models.js +7 -7
  86. package/dist/providers/deepseek/Streaming.d.ts.map +1 -1
  87. package/dist/providers/deepseek/Streaming.js +11 -8
  88. package/dist/providers/deepseek/index.d.ts.map +1 -1
  89. package/dist/providers/deepseek/index.js +5 -4
  90. package/dist/providers/gemini/Capabilities.d.ts +5 -33
  91. package/dist/providers/gemini/Capabilities.d.ts.map +1 -1
  92. package/dist/providers/gemini/Capabilities.js +7 -30
  93. package/dist/providers/gemini/Chat.d.ts.map +1 -1
  94. package/dist/providers/gemini/Chat.js +24 -19
  95. package/dist/providers/gemini/ChatUtils.d.ts.map +1 -1
  96. package/dist/providers/gemini/ChatUtils.js +10 -10
  97. package/dist/providers/gemini/Embeddings.d.ts.map +1 -1
  98. package/dist/providers/gemini/Embeddings.js +2 -2
  99. package/dist/providers/gemini/Errors.d.ts.map +1 -1
  100. package/dist/providers/gemini/Errors.js +5 -2
  101. package/dist/providers/gemini/GeminiProvider.d.ts +1 -1
  102. package/dist/providers/gemini/GeminiProvider.d.ts.map +1 -1
  103. package/dist/providers/gemini/GeminiProvider.js +3 -3
  104. package/dist/providers/gemini/Image.d.ts.map +1 -1
  105. package/dist/providers/gemini/Image.js +8 -8
  106. package/dist/providers/gemini/Models.d.ts.map +1 -1
  107. package/dist/providers/gemini/Models.js +6 -6
  108. package/dist/providers/gemini/Streaming.d.ts.map +1 -1
  109. package/dist/providers/gemini/Streaming.js +18 -14
  110. package/dist/providers/gemini/Transcription.d.ts.map +1 -1
  111. package/dist/providers/gemini/Transcription.js +11 -11
  112. package/dist/providers/gemini/index.d.ts +1 -1
  113. package/dist/providers/gemini/index.d.ts.map +1 -1
  114. package/dist/providers/gemini/index.js +5 -4
  115. package/dist/providers/gemini/types.d.ts +4 -4
  116. package/dist/providers/gemini/types.d.ts.map +1 -1
  117. package/dist/providers/ollama/Capabilities.d.ts.map +1 -1
  118. package/dist/providers/ollama/Capabilities.js +6 -2
  119. package/dist/providers/ollama/Models.js +1 -1
  120. package/dist/providers/ollama/OllamaProvider.d.ts +1 -1
  121. package/dist/providers/ollama/OllamaProvider.d.ts.map +1 -1
  122. package/dist/providers/ollama/OllamaProvider.js +2 -2
  123. package/dist/providers/ollama/index.d.ts +1 -1
  124. package/dist/providers/ollama/index.d.ts.map +1 -1
  125. package/dist/providers/ollama/index.js +7 -3
  126. package/dist/providers/openai/Capabilities.d.ts +2 -1
  127. package/dist/providers/openai/Capabilities.d.ts.map +1 -1
  128. package/dist/providers/openai/Capabilities.js +9 -21
  129. package/dist/providers/openai/Chat.d.ts.map +1 -1
  130. package/dist/providers/openai/Chat.js +18 -14
  131. package/dist/providers/openai/Embedding.d.ts.map +1 -1
  132. package/dist/providers/openai/Embedding.js +11 -7
  133. package/dist/providers/openai/Errors.d.ts.map +1 -1
  134. package/dist/providers/openai/Errors.js +5 -2
  135. package/dist/providers/openai/Image.d.ts.map +1 -1
  136. package/dist/providers/openai/Image.js +6 -6
  137. package/dist/providers/openai/Models.d.ts +1 -1
  138. package/dist/providers/openai/Models.d.ts.map +1 -1
  139. package/dist/providers/openai/Models.js +12 -8
  140. package/dist/providers/openai/Moderation.d.ts.map +1 -1
  141. package/dist/providers/openai/Moderation.js +6 -6
  142. package/dist/providers/openai/OpenAIProvider.d.ts +2 -3
  143. package/dist/providers/openai/OpenAIProvider.d.ts.map +1 -1
  144. package/dist/providers/openai/OpenAIProvider.js +4 -4
  145. package/dist/providers/openai/Streaming.d.ts.map +1 -1
  146. package/dist/providers/openai/Streaming.js +18 -13
  147. package/dist/providers/openai/Transcription.d.ts.map +1 -1
  148. package/dist/providers/openai/Transcription.js +15 -12
  149. package/dist/providers/openai/index.d.ts +1 -1
  150. package/dist/providers/openai/index.d.ts.map +1 -1
  151. package/dist/providers/openai/index.js +6 -5
  152. package/dist/providers/openai/types.d.ts +1 -1
  153. package/dist/providers/openai/utils.js +2 -2
  154. package/dist/providers/openrouter/Capabilities.d.ts +3 -3
  155. package/dist/providers/openrouter/Capabilities.d.ts.map +1 -1
  156. package/dist/providers/openrouter/Capabilities.js +21 -24
  157. package/dist/providers/openrouter/Models.d.ts.map +1 -1
  158. package/dist/providers/openrouter/Models.js +20 -16
  159. package/dist/providers/openrouter/OpenRouterProvider.d.ts.map +1 -1
  160. package/dist/providers/openrouter/OpenRouterProvider.js +1 -1
  161. package/dist/providers/openrouter/index.d.ts +1 -1
  162. package/dist/providers/openrouter/index.d.ts.map +1 -1
  163. package/dist/providers/openrouter/index.js +6 -5
  164. package/dist/providers/registry.d.ts +18 -2
  165. package/dist/providers/registry.d.ts.map +1 -1
  166. package/dist/providers/registry.js +17 -2
  167. package/dist/providers/utils.js +1 -1
  168. package/dist/schema/Schema.d.ts +3 -3
  169. package/dist/schema/Schema.d.ts.map +1 -1
  170. package/dist/schema/Schema.js +2 -2
  171. package/dist/schema/to-json-schema.d.ts +1 -1
  172. package/dist/schema/to-json-schema.d.ts.map +1 -1
  173. package/dist/streaming/Stream.d.ts.map +1 -1
  174. package/dist/streaming/Stream.js +3 -3
  175. package/dist/utils/Binary.d.ts.map +1 -1
  176. package/dist/utils/Binary.js +32 -23
  177. package/dist/utils/FileLoader.d.ts.map +1 -1
  178. package/dist/utils/FileLoader.js +25 -4
  179. package/dist/utils/audio.js +2 -2
  180. package/dist/utils/fetch.d.ts.map +1 -1
  181. package/dist/utils/fetch.js +14 -4
  182. package/dist/utils/logger.d.ts +3 -3
  183. package/dist/utils/logger.d.ts.map +1 -1
  184. package/dist/utils/logger.js +2 -2
  185. package/package.json +1 -1
@@ -15,6 +15,7 @@ export interface AskOptions {
15
15
  headers?: Record<string, string>;
16
16
  maxToolCalls?: number;
17
17
  requestTimeout?: number;
18
+ signal?: AbortSignal;
18
19
  }
19
20
  import { ChatResponseString } from "./ChatResponse.js";
20
21
  export declare class Chat {
@@ -43,13 +44,13 @@ export declare class Chat {
43
44
  */
44
45
  withTool(tool: ToolResolvable): this;
45
46
  /**
46
- * Add multiple tools to the chat session.
47
- * Supports passing Tool classes (which will be instantiated) or instances.
48
- * Can replace existing tools if options.replace is true.
49
- *
50
- * @example
51
- * chat.withTools([WeatherTool, new CalculatorTool()], { replace: true });
52
- */
47
+ * Add multiple tools to the chat session.
48
+ * Supports passing Tool classes (which will be instantiated) or instances.
49
+ * Can replace existing tools if options.replace is true.
50
+ *
51
+ * @example
52
+ * chat.withTools([WeatherTool, new CalculatorTool()], { replace: true });
53
+ */
53
54
  withTools(tools: ToolResolvable[], options?: {
54
55
  replace?: boolean;
55
56
  }): this;
@@ -82,31 +83,31 @@ export declare class Chat {
82
83
  */
83
84
  withRequestOptions(options: {
84
85
  headers?: Record<string, string>;
85
- responseFormat?: any;
86
+ responseFormat?: unknown;
86
87
  }): this;
87
88
  /**
88
89
  * Set provider-specific parameters.
89
90
  * These will be merged into the final request payload.
90
91
  */
91
- withParams(params: Record<string, any>): this;
92
+ withParams(params: Record<string, unknown>): this;
92
93
  /**
93
94
  * Enforce a specific schema for the output.
94
95
  * Can accept a Schema object or a Zod schema/JSON Schema directly.
95
96
  */
96
- withSchema(schema: Schema | z.ZodType<any> | Record<string, any> | null): this;
97
+ withSchema(schema: Schema | z.ZodType<unknown> | Record<string, unknown> | null): this;
97
98
  onNewMessage(handler: () => void): this;
98
99
  onEndMessage(handler: (message: ChatResponseString) => void): this;
99
- onToolCall(handler: (toolCall: any) => void): this;
100
- onToolResult(handler: (result: any) => void): this;
100
+ onToolCall(handler: (toolCall: unknown) => void): this;
101
+ onToolResult(handler: (result: unknown) => void): this;
101
102
  /**
102
103
  * Called when a tool call starts.
103
104
  */
104
- onToolCallStart(handler: (toolCall: any) => void): this;
105
+ onToolCallStart(handler: (toolCall: unknown) => void): this;
105
106
  /**
106
107
  * Called when a tool call ends successfully.
107
108
  */
108
- onToolCallEnd(handler: (toolCall: any, result: any) => void): this;
109
- onToolCallError(handler: (toolCall: any, error: Error) => 'STOP' | 'CONTINUE' | void | Promise<'STOP' | 'CONTINUE' | void>): this;
109
+ onToolCallEnd(handler: (toolCall: unknown, result: unknown) => void): this;
110
+ onToolCallError(handler: (toolCall: unknown, error: Error) => "STOP" | "CONTINUE" | "RETRY" | void | Promise<"STOP" | "CONTINUE" | "RETRY" | void>): this;
110
111
  /**
111
112
  * Set the tool execution mode.
112
113
  * - "auto": (Default) Automatically execute all tool calls.
@@ -118,7 +119,7 @@ export declare class Chat {
118
119
  * Hook for confirming tool execution in "confirm" mode.
119
120
  * Return true to proceed, false to cancel the specific call.
120
121
  */
121
- onConfirmToolCall(handler: (toolCall: any) => Promise<boolean> | boolean): this;
122
+ onConfirmToolCall(handler: (toolCall: unknown) => Promise<boolean> | boolean): this;
122
123
  /**
123
124
  * Add a hook to process messages before sending to the LLM.
124
125
  * Useful for PII detection, redaction, and input moderation.
@@ -132,7 +133,7 @@ export declare class Chat {
132
133
  /**
133
134
  * Ask the model a question
134
135
  */
135
- ask(content: string | any[], options?: AskOptions): Promise<ChatResponseString>;
136
+ ask(content: string | ContentPart[], options?: AskOptions): Promise<ChatResponseString>;
136
137
  /**
137
138
  * Streams the model's response to a user question.
138
139
  */
@@ -1 +1 @@
1
- {"version":3,"file":"Chat.d.ts","sourceRoot":"","sources":["../../src/chat/Chat.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Chat.d.ts","sourceRoot":"","sources":["../../src/chat/Chat.ts"],"names":[],"mappings":"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"}
package/dist/chat/Chat.js CHANGED
@@ -10,6 +10,7 @@ import { ToolExecutionMode } from "../constants.js";
10
10
  import { ConfigurationError } from "../errors/index.js";
11
11
  import { ChatValidator } from "./Validation.js";
12
12
  import { ToolHandler } from "./ToolHandler.js";
13
+ import { logger } from "../utils/logger.js";
13
14
  import { ChatResponseString } from "./ChatResponse.js";
14
15
  export class Chat {
15
16
  provider;
@@ -64,11 +65,19 @@ export class Chat {
64
65
  acc.output_tokens += msg.usage.output_tokens;
65
66
  acc.total_tokens += msg.usage.total_tokens;
66
67
  acc.cached_tokens = (acc.cached_tokens ?? 0) + (msg.usage.cached_tokens ?? 0);
67
- acc.cache_creation_tokens = (acc.cache_creation_tokens ?? 0) + (msg.usage.cache_creation_tokens ?? 0);
68
+ acc.cache_creation_tokens =
69
+ (acc.cache_creation_tokens ?? 0) + (msg.usage.cache_creation_tokens ?? 0);
68
70
  acc.cost = (acc.cost ?? 0) + (msg.usage.cost ?? 0);
69
71
  }
70
72
  return acc;
71
- }, { input_tokens: 0, output_tokens: 0, total_tokens: 0, cached_tokens: 0, cache_creation_tokens: 0, cost: 0 });
73
+ }, {
74
+ input_tokens: 0,
75
+ output_tokens: 0,
76
+ total_tokens: 0,
77
+ cached_tokens: 0,
78
+ cache_creation_tokens: 0,
79
+ cost: 0
80
+ });
72
81
  }
73
82
  /**
74
83
  * Add a tool to the chat session (fluent API)
@@ -78,13 +87,13 @@ export class Chat {
78
87
  return this.withTools([tool]);
79
88
  }
80
89
  /**
81
- * Add multiple tools to the chat session.
82
- * Supports passing Tool classes (which will be instantiated) or instances.
83
- * Can replace existing tools if options.replace is true.
84
- *
85
- * @example
86
- * chat.withTools([WeatherTool, new CalculatorTool()], { replace: true });
87
- */
90
+ * Add multiple tools to the chat session.
91
+ * Supports passing Tool classes (which will be instantiated) or instances.
92
+ * Can replace existing tools if options.replace is true.
93
+ *
94
+ * @example
95
+ * chat.withTools([WeatherTool, new CalculatorTool()], { replace: true });
96
+ */
88
97
  withTools(tools, options) {
89
98
  if (options?.replace) {
90
99
  this.options.tools = [];
@@ -259,7 +268,7 @@ export class Chat {
259
268
  }
260
269
  this.messages.push({
261
270
  role: "user",
262
- content: messageContent,
271
+ content: messageContent
263
272
  });
264
273
  // Process Schema/Structured Output
265
274
  let responseFormat = this.options.responseFormat;
@@ -272,7 +281,7 @@ export class Chat {
272
281
  name: this.options.schema.definition.name,
273
282
  description: this.options.schema.definition.description,
274
283
  strict: this.options.schema.definition.strict ?? true,
275
- schema: jsonSchema,
284
+ schema: jsonSchema
276
285
  }
277
286
  };
278
287
  }
@@ -285,7 +294,8 @@ export class Chat {
285
294
  headers: { ...this.options.headers, ...options?.headers },
286
295
  response_format: responseFormat, // Pass to provider
287
296
  requestTimeout: options?.requestTimeout ?? this.options.requestTimeout ?? config.requestTimeout,
288
- ...this.options.params,
297
+ signal: options?.signal,
298
+ ...this.options.params
289
299
  };
290
300
  // --- Content Policy Hooks (Input) ---
291
301
  if (this.options.onBeforeRequest) {
@@ -296,7 +306,7 @@ export class Chat {
296
306
  executeOptions.messages = result;
297
307
  }
298
308
  }
299
- let totalUsage = { input_tokens: 0, output_tokens: 0, total_tokens: 0 };
309
+ const totalUsage = { input_tokens: 0, output_tokens: 0, total_tokens: 0 };
300
310
  const trackUsage = (u) => {
301
311
  if (u) {
302
312
  totalUsage.input_tokens += u.input_tokens;
@@ -325,9 +335,9 @@ export class Chat {
325
335
  }
326
336
  this.messages.push({
327
337
  role: "assistant",
328
- content: assistantMessage || null,
338
+ content: assistantMessage?.toString() || null,
329
339
  tool_calls: response.tool_calls,
330
- usage: response.usage,
340
+ usage: response.usage
331
341
  });
332
342
  if (this.options.onEndMessage && (!response.tool_calls || response.tool_calls.length === 0)) {
333
343
  this.options.onEndMessage(assistantMessage);
@@ -348,45 +358,55 @@ export class Chat {
348
358
  if (this.options.toolExecution === ToolExecutionMode.CONFIRM) {
349
359
  const approved = await ToolHandler.requestToolConfirmation(toolCall, this.options.onConfirmToolCall);
350
360
  if (!approved) {
351
- this.messages.push({
352
- role: "tool",
353
- tool_call_id: toolCall.id,
354
- content: "Action cancelled by user.",
355
- });
361
+ this.messages.push(this.provider.formatToolResultMessage(toolCall.id, "Action cancelled by user."));
356
362
  continue;
357
363
  }
358
364
  }
359
365
  try {
360
366
  const toolResult = await ToolHandler.execute(toolCall, this.options.tools, this.options.onToolCallStart, this.options.onToolCallEnd);
361
- this.messages.push(toolResult);
367
+ this.messages.push(this.provider.formatToolResultMessage(toolResult.tool_call_id, toolResult.content));
362
368
  }
363
369
  catch (error) {
364
- const directive = await this.options.onToolCallError?.(toolCall, error);
365
- if (directive === 'STOP') {
366
- throw error;
370
+ let currentError = error;
371
+ const directive = await this.options.onToolCallError?.(toolCall, currentError);
372
+ if (directive === "STOP") {
373
+ throw currentError;
374
+ }
375
+ if (directive === "RETRY") {
376
+ try {
377
+ const toolResult = await ToolHandler.execute(toolCall, this.options.tools, this.options.onToolCallStart, this.options.onToolCallEnd);
378
+ this.messages.push(this.provider.formatToolResultMessage(toolResult.tool_call_id, toolResult.content));
379
+ continue;
380
+ }
381
+ catch (retryError) {
382
+ // If retry also fails, fall through to default logic
383
+ currentError = retryError;
384
+ }
367
385
  }
368
- this.messages.push({
369
- role: "tool",
370
- tool_call_id: toolCall.id,
371
- content: `Fatal error executing tool '${toolCall.function.name}': ${error.message}`,
372
- });
373
- if (directive === 'CONTINUE') {
386
+ this.messages.push(this.provider.formatToolResultMessage(toolCall.id, `Fatal error executing tool '${toolCall.function.name}': ${currentError.message}`, { isError: true }));
387
+ if (directive === "CONTINUE") {
374
388
  continue;
375
389
  }
376
390
  // Default short-circuit logic
377
- const isFatal = error.fatal === true || error.status === 401 || error.status === 403;
391
+ const errorObj = currentError;
392
+ const isFatal = errorObj.fatal === true || errorObj.status === 401 || errorObj.status === 403;
378
393
  if (isFatal) {
379
- throw error;
394
+ throw currentError;
380
395
  }
381
- console.error(`[NodeLLM] Tool execution failed for '${toolCall.function.name}':`, error);
396
+ logger.error(`Tool execution failed for '${toolCall.function.name}':`, currentError);
382
397
  }
383
398
  }
384
399
  response = await this.executor.executeChat({
385
400
  model: this.model,
386
401
  messages: [...this.systemMessages, ...this.messages],
387
402
  tools: this.options.tools,
403
+ temperature: options?.temperature ?? this.options.temperature,
404
+ max_tokens: options?.maxTokens ?? this.options.maxTokens ?? config.maxTokens,
388
405
  headers: this.options.headers,
406
+ response_format: responseFormat,
389
407
  requestTimeout: options?.requestTimeout ?? this.options.requestTimeout ?? config.requestTimeout,
408
+ signal: options?.signal,
409
+ ...this.options.params
390
410
  });
391
411
  trackUsage(response.usage);
392
412
  assistantMessage = new ChatResponseString(response.content ?? "", response.usage ?? { input_tokens: 0, output_tokens: 0, total_tokens: 0 }, this.model, this.provider.id, response.reasoning);
@@ -399,15 +419,15 @@ export class Chat {
399
419
  }
400
420
  this.messages.push({
401
421
  role: "assistant",
402
- content: assistantMessage || null,
422
+ content: assistantMessage?.toString() || null,
403
423
  tool_calls: response.tool_calls,
404
- usage: response.usage,
424
+ usage: response.usage
405
425
  });
406
426
  if (this.options.onEndMessage && (!response.tool_calls || response.tool_calls.length === 0)) {
407
427
  this.options.onEndMessage(assistantMessage);
408
428
  }
409
429
  }
410
- // For the final return, we might want to aggregate reasoning too if it happened in multiple turns?
430
+ // For the final return, we might want to aggregate reasoning too if it happened in multiple turns?
411
431
  // Usually reasoning only happens once or we just want the last one.
412
432
  return new ChatResponseString(assistantMessage.toString() || "", totalUsage, this.model, this.provider.id, assistantMessage.reasoning, response.tool_calls);
413
433
  }
@@ -429,7 +449,7 @@ export class Chat {
429
449
  toolInstance = new tool();
430
450
  }
431
451
  catch (e) {
432
- console.error(`[NodeLLM] Failed to instantiate tool class: ${tool.name}`, e);
452
+ logger.error(`Failed to instantiate tool class: ${tool.name}`, e);
433
453
  return null;
434
454
  }
435
455
  }
@@ -442,17 +462,18 @@ export class Chat {
442
462
  if (typeof toolInstance.toLLMTool === "function") {
443
463
  return toolInstance.toLLMTool();
444
464
  }
445
- if (!toolInstance.function || !toolInstance.function.name) {
465
+ const toolObj = toolInstance;
466
+ if (!toolObj.function || !toolObj.function.name) {
446
467
  // 1. Validate structure
447
468
  throw new ConfigurationError(`[NodeLLM] Tool validation failed: 'function.name' is required for raw tool objects.`);
448
469
  }
449
- if (toolInstance.type !== 'function') {
470
+ if (toolObj.type !== "function") {
450
471
  // 2. Ensure 'type: function' exists (standardize for providers)
451
- toolInstance.type = 'function';
472
+ toolObj.type = "function";
452
473
  }
453
- if (typeof toolInstance.handler !== 'function') {
474
+ if (typeof toolObj.handler !== "function") {
454
475
  // 3. Validate handler existence
455
- throw new ConfigurationError(`[NodeLLM] Tool validation failed: Tool '${toolInstance.function.name}' must have a 'handler' function. (Note: Only Tool subclasses use 'execute()')`);
476
+ throw new ConfigurationError(`[NodeLLM] Tool validation failed: Tool '${toolObj.function.name}' must have a 'handler' function. (Note: Only Tool subclasses use 'execute()')`);
456
477
  }
457
478
  return toolInstance;
458
479
  }
@@ -3,6 +3,7 @@ import { ToolResolvable } from "./Tool.js";
3
3
  import { Schema } from "../schema/Schema.js";
4
4
  import { ChatResponseString } from "./ChatResponse.js";
5
5
  import { ToolExecutionMode } from "../constants.js";
6
+ import { ResponseFormat } from "../providers/Provider.js";
6
7
  export interface ChatOptions {
7
8
  systemPrompt?: string;
8
9
  messages?: Message[];
@@ -10,22 +11,20 @@ export interface ChatOptions {
10
11
  temperature?: number;
11
12
  maxTokens?: number;
12
13
  onNewMessage?: () => void;
13
- onEndMessage?: (message: any) => void;
14
- onToolCallStart?: (toolCall: any) => void;
15
- onToolCallEnd?: (toolCall: any, result: any) => void;
16
- onToolCallError?: (toolCall: any, error: Error) => 'STOP' | 'CONTINUE' | void | Promise<'STOP' | 'CONTINUE' | void>;
14
+ onEndMessage?: (message: ChatResponseString) => void;
15
+ onToolCallStart?: (toolCall: unknown) => void;
16
+ onToolCallEnd?: (toolCall: unknown, result: unknown) => void;
17
+ onToolCallError?: (toolCall: unknown, error: Error) => "STOP" | "CONTINUE" | "RETRY" | void | Promise<"STOP" | "CONTINUE" | "RETRY" | void>;
17
18
  headers?: Record<string, string>;
18
19
  schema?: Schema;
19
- responseFormat?: {
20
- type: "json_object" | "text";
21
- };
22
- params?: Record<string, any>;
20
+ responseFormat?: ResponseFormat;
21
+ params?: Record<string, unknown>;
23
22
  assumeModelExists?: boolean;
24
23
  provider?: string;
25
24
  maxToolCalls?: number;
26
25
  requestTimeout?: number;
27
26
  toolExecution?: ToolExecutionMode;
28
- onConfirmToolCall?: (toolCall: any) => Promise<boolean> | boolean;
27
+ onConfirmToolCall?: (toolCall: unknown) => Promise<boolean> | boolean;
29
28
  onBeforeRequest?: (messages: Message[]) => Promise<Message[] | void>;
30
29
  onAfterResponse?: (response: ChatResponseString) => Promise<ChatResponseString | void>;
31
30
  }
@@ -1 +1 @@
1
- {"version":3,"file":"ChatOptions.d.ts","sourceRoot":"","sources":["../../src/chat/ChatOptions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAkB,cAAc,EAAE,MAAM,WAAW,CAAC;AAC3D,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC7C,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAEpD,MAAM,WAAW,WAAW;IAC1B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,OAAO,EAAE,CAAC;IACrB,KAAK,CAAC,EAAE,cAAc,EAAE,CAAC;IACzB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,IAAI,CAAC;IAC1B,YAAY,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,KAAK,IAAI,CAAC;IACtC,eAAe,CAAC,EAAE,CAAC,QAAQ,EAAE,GAAG,KAAK,IAAI,CAAC;IAC1C,aAAa,CAAC,EAAE,CAAC,QAAQ,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,KAAK,IAAI,CAAC;IACrD,eAAe,CAAC,EAAE,CAAC,QAAQ,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK,KAAK,MAAM,GAAG,UAAU,GAAG,IAAI,GAAG,OAAO,CAAC,MAAM,GAAG,UAAU,GAAG,IAAI,CAAC,CAAC;IACpH,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,cAAc,CAAC,EAAE;QAAE,IAAI,EAAE,aAAa,GAAG,MAAM,CAAA;KAAE,CAAC;IAClD,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC7B,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,aAAa,CAAC,EAAE,iBAAiB,CAAC;IAClC,iBAAiB,CAAC,EAAE,CAAC,QAAQ,EAAE,GAAG,KAAK,OAAO,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC;IAClE,eAAe,CAAC,EAAE,CAAC,QAAQ,EAAE,OAAO,EAAE,KAAK,OAAO,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,CAAC;IACrE,eAAe,CAAC,EAAE,CAAC,QAAQ,EAAE,kBAAkB,KAAK,OAAO,CAAC,kBAAkB,GAAG,IAAI,CAAC,CAAC;CACxF"}
1
+ {"version":3,"file":"ChatOptions.d.ts","sourceRoot":"","sources":["../../src/chat/ChatOptions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAC3C,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC7C,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAE1D,MAAM,WAAW,WAAW;IAC1B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,OAAO,EAAE,CAAC;IACrB,KAAK,CAAC,EAAE,cAAc,EAAE,CAAC;IACzB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,IAAI,CAAC;IAC1B,YAAY,CAAC,EAAE,CAAC,OAAO,EAAE,kBAAkB,KAAK,IAAI,CAAC;IACrD,eAAe,CAAC,EAAE,CAAC,QAAQ,EAAE,OAAO,KAAK,IAAI,CAAC;IAC9C,aAAa,CAAC,EAAE,CAAC,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,KAAK,IAAI,CAAC;IAC7D,eAAe,CAAC,EAAE,CAChB,QAAQ,EAAE,OAAO,EACjB,KAAK,EAAE,KAAK,KACT,MAAM,GAAG,UAAU,GAAG,OAAO,GAAG,IAAI,GAAG,OAAO,CAAC,MAAM,GAAG,UAAU,GAAG,OAAO,GAAG,IAAI,CAAC,CAAC;IAC1F,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjC,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,aAAa,CAAC,EAAE,iBAAiB,CAAC;IAClC,iBAAiB,CAAC,EAAE,CAAC,QAAQ,EAAE,OAAO,KAAK,OAAO,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC;IACtE,eAAe,CAAC,EAAE,CAAC,QAAQ,EAAE,OAAO,EAAE,KAAK,OAAO,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,CAAC;IACrE,eAAe,CAAC,EAAE,CAAC,QAAQ,EAAE,kBAAkB,KAAK,OAAO,CAAC,kBAAkB,GAAG,IAAI,CAAC,CAAC;CACxF"}
@@ -29,6 +29,6 @@ export declare class ChatResponseString extends String {
29
29
  * Attempt to parse the content as JSON.
30
30
  * Returns the parsed object or null if parsing fails.
31
31
  */
32
- get parsed(): any;
32
+ get parsed(): unknown;
33
33
  }
34
34
  //# sourceMappingURL=ChatResponse.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ChatResponse.d.ts","sourceRoot":"","sources":["../../src/chat/ChatResponse.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,0BAA0B,CAAC;AACjD,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAErC;;;GAGG;AACH,qBAAa,kBAAmB,SAAQ,MAAM;aAG1B,KAAK,EAAE,KAAK;aACZ,KAAK,EAAE,MAAM;aACb,QAAQ,EAAE,MAAM;aAChB,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI;aACzB,UAAU,CAAC,EAAE,QAAQ,EAAE;gBALvC,OAAO,EAAE,MAAM,EACC,KAAK,EAAE,KAAK,EACZ,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,MAAM,EAChB,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,YAAA,EACzB,UAAU,CAAC,EAAE,QAAQ,EAAE,YAAA;IAKzC,IAAI,YAAY,WAAsC;IACtD,IAAI,aAAa,WAAuC;IACxD,IAAI,YAAY,WAAsC;IACtD,IAAI,aAAa,uBAAuC;IACxD,IAAI,IAAI,uBAA8B;IACtC,IAAI,UAAU,uBAAoC;IAClD,IAAI,WAAW,uBAAqC;IAEpD,IAAI,OAAO,IAAI,MAAM,CAEpB;IAED,IAAI,QAAQ,IAAI,MAAM,CAErB;IAED,QAAQ;IAIR;;OAEG;IACH,WAAW,CAAC,UAAU,EAAE,MAAM,GAAG,kBAAkB;IAWnD;;;OAGG;IACH,IAAI,MAAM,IAAI,GAAG,CAMhB;CACF"}
1
+ {"version":3,"file":"ChatResponse.d.ts","sourceRoot":"","sources":["../../src/chat/ChatResponse.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,0BAA0B,CAAC;AACjD,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAErC;;;GAGG;AACH,qBAAa,kBAAmB,SAAQ,MAAM;aAG1B,KAAK,EAAE,KAAK;aACZ,KAAK,EAAE,MAAM;aACb,QAAQ,EAAE,MAAM;aAChB,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI;aACzB,UAAU,CAAC,EAAE,QAAQ,EAAE;gBALvC,OAAO,EAAE,MAAM,EACC,KAAK,EAAE,KAAK,EACZ,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,MAAM,EAChB,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,YAAA,EACzB,UAAU,CAAC,EAAE,QAAQ,EAAE,YAAA;IAKzC,IAAI,YAAY,WAEf;IACD,IAAI,aAAa,WAEhB;IACD,IAAI,YAAY,WAEf;IACD,IAAI,aAAa,uBAEhB;IACD,IAAI,IAAI,uBAEP;IACD,IAAI,UAAU,uBAEb;IACD,IAAI,WAAW,uBAEd;IAED,IAAI,OAAO,IAAI,MAAM,CAEpB;IAED,IAAI,QAAQ,IAAI,MAAM,CAErB;IAED,QAAQ;IAIR;;OAEG;IACH,WAAW,CAAC,UAAU,EAAE,MAAM,GAAG,kBAAkB;IAWnD;;;OAGG;IACH,IAAI,MAAM,IAAI,OAAO,CAMpB;CACF"}
@@ -16,13 +16,27 @@ export class ChatResponseString extends String {
16
16
  this.reasoning = reasoning;
17
17
  this.tool_calls = tool_calls;
18
18
  }
19
- get input_tokens() { return this.usage.input_tokens; }
20
- get output_tokens() { return this.usage.output_tokens; }
21
- get total_tokens() { return this.usage.total_tokens; }
22
- get cached_tokens() { return this.usage.cached_tokens; }
23
- get cost() { return this.usage.cost; }
24
- get input_cost() { return this.usage.input_cost; }
25
- get output_cost() { return this.usage.output_cost; }
19
+ get input_tokens() {
20
+ return this.usage.input_tokens;
21
+ }
22
+ get output_tokens() {
23
+ return this.usage.output_tokens;
24
+ }
25
+ get total_tokens() {
26
+ return this.usage.total_tokens;
27
+ }
28
+ get cached_tokens() {
29
+ return this.usage.cached_tokens;
30
+ }
31
+ get cost() {
32
+ return this.usage.cost;
33
+ }
34
+ get input_cost() {
35
+ return this.usage.input_cost;
36
+ }
37
+ get output_cost() {
38
+ return this.usage.output_cost;
39
+ }
26
40
  get content() {
27
41
  return this.valueOf();
28
42
  }
@@ -46,7 +60,7 @@ export class ChatResponseString extends String {
46
60
  try {
47
61
  return JSON.parse(this.valueOf());
48
62
  }
49
- catch (e) {
63
+ catch {
50
64
  return null;
51
65
  }
52
66
  }
@@ -1 +1 @@
1
- {"version":3,"file":"ChatStream.d.ts","sourceRoot":"","sources":["../../src/chat/ChatStream.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,WAAW,EAA4C,MAAM,cAAc,CAAC;AACrF,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAS,MAAM,0BAA0B,CAAC;AAEtE,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAGhD,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAOvC;;;GAGG;AACH,qBAAa,UAAU;IAKnB,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,OAAO;IAN1B,OAAO,CAAC,QAAQ,CAAY;IAC5B,OAAO,CAAC,cAAc,CAAY;gBAGf,QAAQ,EAAE,QAAQ,EAClB,KAAK,EAAE,MAAM,EACb,OAAO,GAAE,WAAgB,EAC1C,QAAQ,CAAC,EAAE,OAAO,EAAE,EACpB,cAAc,CAAC,EAAE,OAAO,EAAE;IA6B5B,IAAI,OAAO,IAAI,SAAS,OAAO,EAAE,CAEhC;IAED,MAAM,CAAC,OAAO,EAAE,MAAM,GAAG,WAAW,EAAE,EAAE,OAAO,GAAE,UAAe,GAAG,MAAM,CAAC,SAAS,CAAC;CAsOrF"}
1
+ {"version":3,"file":"ChatStream.d.ts","sourceRoot":"","sources":["../../src/chat/ChatStream.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,WAAW,EAA4D,MAAM,cAAc,CAAC;AACrG,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAS,MAAM,0BAA0B,CAAC;AAEtE,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAGhD,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AASvC;;;GAGG;AACH,qBAAa,UAAU;IAKnB,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,OAAO;IAN1B,OAAO,CAAC,QAAQ,CAAY;IAC5B,OAAO,CAAC,cAAc,CAAY;gBAGf,QAAQ,EAAE,QAAQ,EAClB,KAAK,EAAE,MAAM,EACb,OAAO,GAAE,WAAgB,EAC1C,QAAQ,CAAC,EAAE,OAAO,EAAE,EACpB,cAAc,CAAC,EAAE,OAAO,EAAE;IA6B5B,IAAI,OAAO,IAAI,SAAS,OAAO,EAAE,CAEhC;IAED,MAAM,CAAC,OAAO,EAAE,MAAM,GAAG,WAAW,EAAE,EAAE,OAAO,GAAE,UAAe,GAAG,MAAM,CAAC,SAAS,CAAC;CAsPrF"}
@@ -7,6 +7,7 @@ import { FileLoader } from "../utils/FileLoader.js";
7
7
  import { toJsonSchema } from "../schema/to-json-schema.js";
8
8
  import { ChatValidator } from "./Validation.js";
9
9
  import { ToolHandler } from "./ToolHandler.js";
10
+ import { logger } from "../utils/logger.js";
10
11
  /**
11
12
  * Internal handler for chat streaming logic.
12
13
  * Wraps the provider's stream with side effects like history updates and events.
@@ -27,7 +28,7 @@ export class ChatStream {
27
28
  if (options.systemPrompt) {
28
29
  this.systemMessages.push({
29
30
  role: "system",
30
- content: options.systemPrompt,
31
+ content: options.systemPrompt
31
32
  });
32
33
  }
33
34
  if (options.messages) {
@@ -83,7 +84,7 @@ export class ChatStream {
83
84
  name: options.schema.definition.name,
84
85
  description: options.schema.definition.description,
85
86
  strict: options.schema.definition.strict ?? true,
86
- schema: jsonSchema,
87
+ schema: jsonSchema
87
88
  }
88
89
  };
89
90
  }
@@ -93,7 +94,7 @@ export class ChatStream {
93
94
  let isFirst = true;
94
95
  const maxToolCalls = options.maxToolCalls ?? 5;
95
96
  let stepCount = 0;
96
- let totalUsage = { input_tokens: 0, output_tokens: 0, total_tokens: 0 };
97
+ const totalUsage = { input_tokens: 0, output_tokens: 0, total_tokens: 0 };
97
98
  const trackUsage = (u) => {
98
99
  if (u) {
99
100
  totalUsage.input_tokens += u.input_tokens;
@@ -131,7 +132,7 @@ export class ChatStream {
131
132
  headers: options.headers,
132
133
  requestTimeout: options.requestTimeout ?? config.requestTimeout,
133
134
  signal: abortController.signal,
134
- ...options.params,
135
+ ...options.params
135
136
  })) {
136
137
  if (isFirst) {
137
138
  if (options.onNewMessage)
@@ -181,41 +182,34 @@ export class ChatStream {
181
182
  if (options.toolExecution === ToolExecutionMode.CONFIRM) {
182
183
  const approved = await ToolHandler.requestToolConfirmation(toolCall, options.onConfirmToolCall);
183
184
  if (!approved) {
184
- messages.push({
185
- role: "tool",
186
- tool_call_id: toolCall.id,
187
- content: "Action cancelled by user.",
188
- });
185
+ messages.push(provider.formatToolResultMessage(toolCall.id, "Action cancelled by user."));
189
186
  continue;
190
187
  }
191
188
  }
192
189
  try {
193
190
  const toolResult = await ToolHandler.execute(toolCall, options.tools, options.onToolCallStart, options.onToolCallEnd);
194
- messages.push(toolResult);
191
+ messages.push(provider.formatToolResultMessage(toolResult.tool_call_id, toolResult.content));
195
192
  }
196
193
  catch (error) {
197
- const directive = await options.onToolCallError?.(toolCall, error);
198
- if (directive === 'STOP') {
194
+ const err = error;
195
+ const directive = await options.onToolCallError?.(toolCall, err);
196
+ if (directive === "STOP") {
199
197
  throw error;
200
198
  }
201
- messages.push({
202
- role: "tool",
203
- tool_call_id: toolCall.id,
204
- content: `Fatal error executing tool '${toolCall.function.name}': ${error.message}`,
205
- });
206
- if (directive === 'CONTINUE') {
199
+ messages.push(provider.formatToolResultMessage(toolCall.id, `Fatal error executing tool '${toolCall.function.name}': ${err.message}`, { isError: true }));
200
+ if (directive === "CONTINUE") {
207
201
  continue;
208
202
  }
209
- const isFatal = error.fatal === true || error.status === 401 || error.status === 403;
203
+ const isFatal = err.fatal === true || err.status === 401 || err.status === 403;
210
204
  if (isFatal) {
211
- throw error;
205
+ throw err;
212
206
  }
213
- console.error(`[NodeLLM] Tool execution failed for '${toolCall.function.name}':`, error);
207
+ logger.error(`Tool execution failed for '${toolCall.function.name}':`, error);
214
208
  }
215
209
  }
216
210
  }
217
211
  catch (error) {
218
- if (error instanceof Error && error.name === 'AbortError') {
212
+ if (error instanceof Error && error.name === "AbortError") {
219
213
  // Aborted
220
214
  }
221
215
  throw error;
@@ -21,12 +21,12 @@ export type ContentPart = {
21
21
  export declare const isBinaryContent: (part: ContentPart) => boolean;
22
22
  export declare const isTextContent: (part: ContentPart) => boolean;
23
23
  export declare const partitionContentParts: (parts: ContentPart[]) => {
24
- textParts: ({
24
+ textParts: {
25
25
  type: "text";
26
26
  text: string;
27
- })[];
27
+ }[];
28
28
  binaryParts: ContentPart[];
29
29
  };
30
30
  export declare const formatMultimodalContent: (content: string | ContentPart[], parts: ContentPart[]) => MessageContent;
31
- export type MessageContent = string | String | ContentPart[];
31
+ export type MessageContent = string | string | ContentPart[];
32
32
  //# sourceMappingURL=Content.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Content.d.ts","sourceRoot":"","sources":["../../src/chat/Content.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,WAAW,GACnB;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAC9B;IAAE,IAAI,EAAE,WAAW,CAAC;IAAC,SAAS,EAAE;QAAE,GAAG,EAAE,MAAM,CAAA;KAAE,CAAA;CAAE,GACjD;IAAE,IAAI,EAAE,aAAa,CAAC;IAAC,WAAW,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAA;CAAE,GACtE;IAAE,IAAI,EAAE,WAAW,CAAC;IAAC,SAAS,EAAE;QAAE,GAAG,EAAE,MAAM,CAAA;KAAE,CAAA;CAAE,CAAC;AAEtD,eAAO,MAAM,eAAe,GAAI,MAAM,WAAW,KAAG,OACmC,CAAC;AAExF,eAAO,MAAM,aAAa,GAAI,MAAM,WAAW,KAAG,OAC5B,CAAC;AAEvB,eAAO,MAAM,qBAAqB,GAAI,OAAO,WAAW,EAAE;eAEZ,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,EAAE;;CAG/E,CAAC;AAEF,eAAO,MAAM,uBAAuB,GAAI,SAAS,MAAM,GAAG,WAAW,EAAE,EAAE,OAAO,WAAW,EAAE,KAAG,cA2B/F,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG,MAAM,GAAG,MAAM,GAAG,WAAW,EAAE,CAAC"}
1
+ {"version":3,"file":"Content.d.ts","sourceRoot":"","sources":["../../src/chat/Content.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,WAAW,GACnB;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAC9B;IAAE,IAAI,EAAE,WAAW,CAAC;IAAC,SAAS,EAAE;QAAE,GAAG,EAAE,MAAM,CAAA;KAAE,CAAA;CAAE,GACjD;IAAE,IAAI,EAAE,aAAa,CAAC;IAAC,WAAW,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAA;CAAE,GACtE;IAAE,IAAI,EAAE,WAAW,CAAC;IAAC,SAAS,EAAE;QAAE,GAAG,EAAE,MAAM,CAAA;KAAE,CAAA;CAAE,CAAC;AAEtD,eAAO,MAAM,eAAe,GAAI,MAAM,WAAW,KAAG,OACmC,CAAC;AAExF,eAAO,MAAM,aAAa,GAAI,MAAM,WAAW,KAAG,OAA+B,CAAC;AAElF,eAAO,MAAM,qBAAqB,GAAI,OAAO,WAAW,EAAE;eAEZ;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,EAAE;;CAG7E,CAAC;AAEF,eAAO,MAAM,uBAAuB,GAClC,SAAS,MAAM,GAAG,WAAW,EAAE,EAC/B,OAAO,WAAW,EAAE,KACnB,cAwBF,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG,MAAM,GAAG,MAAM,GAAG,WAAW,EAAE,CAAC"}
@@ -9,9 +9,9 @@ export const partitionContentParts = (parts) => {
9
9
  export const formatMultimodalContent = (content, parts) => {
10
10
  const { textParts, binaryParts } = partitionContentParts(parts);
11
11
  let fullText = typeof content === "string" ? content : "";
12
- let currentParts = typeof content === "string" ? [] : content;
12
+ const currentParts = typeof content === "string" ? [] : content;
13
13
  if (textParts.length > 0) {
14
- const additionalText = textParts.map(f => f.text).join("\n");
14
+ const additionalText = textParts.map((f) => f.text).join("\n");
15
15
  if (typeof content === "string") {
16
16
  fullText += "\n" + additionalText;
17
17
  }
@@ -21,10 +21,7 @@ export const formatMultimodalContent = (content, parts) => {
21
21
  }
22
22
  if (binaryParts.length > 0) {
23
23
  if (typeof content === "string") {
24
- return [
25
- { type: "text", text: fullText },
26
- ...binaryParts
27
- ];
24
+ return [{ type: "text", text: fullText }, ...binaryParts];
28
25
  }
29
26
  else {
30
27
  return [...currentParts, ...binaryParts];
@@ -2,13 +2,15 @@ import { Role } from "./Role.js";
2
2
  import { ToolCall } from "./Tool.js";
3
3
  import { MessageContent } from "./Content.js";
4
4
  import { Usage } from "../providers/Provider.js";
5
+ import { ChatResponseString } from "./ChatResponse.js";
5
6
  export interface Message {
6
7
  role: Role;
7
- content: MessageContent | null;
8
+ content: MessageContent | ChatResponseString | null;
8
9
  tool_calls?: ToolCall[];
9
10
  tool_call_id?: string;
10
11
  name?: string;
11
12
  usage?: Usage;
12
13
  reasoning?: string;
14
+ isError?: boolean;
13
15
  }
14
16
  //# sourceMappingURL=Message.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Message.d.ts","sourceRoot":"","sources":["../../src/chat/Message.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AACrC,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,KAAK,EAAE,MAAM,0BAA0B,CAAC;AAEjD,MAAM,WAAW,OAAO;IACtB,IAAI,EAAE,IAAI,CAAC;IACX,OAAO,EAAE,cAAc,GAAG,IAAI,CAAC;IAC/B,UAAU,CAAC,EAAE,QAAQ,EAAE,CAAC;IACxB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,KAAK,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB"}
1
+ {"version":3,"file":"Message.d.ts","sourceRoot":"","sources":["../../src/chat/Message.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AACrC,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,KAAK,EAAE,MAAM,0BAA0B,CAAC;AACjD,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAEvD,MAAM,WAAW,OAAO;IACtB,IAAI,EAAE,IAAI,CAAC;IACX,OAAO,EAAE,cAAc,GAAG,kBAAkB,GAAG,IAAI,CAAC;IACpD,UAAU,CAAC,EAAE,QAAQ,EAAE,CAAC;IACxB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,KAAK,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB"}
@@ -1 +1 @@
1
- {"version":3,"file":"Role.d.ts","sourceRoot":"","sources":["../../src/chat/Role.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,IAAI,GACZ,QAAQ,GACR,WAAW,GACX,MAAM,GACN,WAAW,GACX,MAAM,CAAC"}
1
+ {"version":3,"file":"Role.d.ts","sourceRoot":"","sources":["../../src/chat/Role.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,IAAI,GAAG,QAAQ,GAAG,WAAW,GAAG,MAAM,GAAG,WAAW,GAAG,MAAM,CAAC"}