@node-llm/core 1.15.2 → 1.16.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.
- package/dist/aliases.d.ts +315 -26
- package/dist/aliases.d.ts.map +1 -1
- package/dist/aliases.js +334 -45
- package/dist/chat/Chat.d.ts +22 -2
- package/dist/chat/Chat.d.ts.map +1 -1
- package/dist/chat/Chat.js +45 -3
- package/dist/chat/ChatOptions.d.ts +3 -1
- package/dist/chat/ChatOptions.d.ts.map +1 -1
- package/dist/chat/ChatResponse.d.ts +8 -2
- package/dist/chat/ChatResponse.d.ts.map +1 -1
- package/dist/chat/ChatResponse.js +9 -3
- package/dist/chat/ChatStream.d.ts.map +1 -1
- package/dist/chat/ChatStream.js +2 -0
- package/dist/chat/Tool.d.ts.map +1 -1
- package/dist/chat/Tool.js +21 -11
- package/dist/chat/ToolHandler.d.ts.map +1 -1
- package/dist/chat/ToolHandler.js +9 -2
- package/dist/chat/Validation.d.ts +1 -0
- package/dist/chat/Validation.d.ts.map +1 -1
- package/dist/chat/Validation.js +10 -0
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/llm.d.ts +4 -0
- package/dist/llm.d.ts.map +1 -1
- package/dist/models/ModelRegistry.d.ts +3 -0
- package/dist/models/ModelRegistry.d.ts.map +1 -1
- package/dist/models/ModelRegistry.js +53 -16
- package/dist/models/PricingRegistry.d.ts.map +1 -1
- package/dist/models/PricingRegistry.js +14 -0
- package/dist/models/models.json +15118 -8614
- package/dist/providers/BaseProvider.d.ts.map +1 -1
- package/dist/providers/BaseProvider.js +1 -0
- package/dist/providers/Provider.d.ts +33 -0
- package/dist/providers/Provider.d.ts.map +1 -1
- package/dist/providers/anthropic/AnthropicProvider.js +1 -1
- package/dist/providers/anthropic/Capabilities.d.ts +1 -0
- package/dist/providers/anthropic/Capabilities.d.ts.map +1 -1
- package/dist/providers/anthropic/Capabilities.js +15 -34
- package/dist/providers/anthropic/Chat.d.ts.map +1 -1
- package/dist/providers/anthropic/Chat.js +16 -2
- package/dist/providers/anthropic/Streaming.d.ts.map +1 -1
- package/dist/providers/anthropic/Streaming.js +15 -1
- package/dist/providers/bedrock/BedrockProvider.d.ts +1 -1
- package/dist/providers/bedrock/BedrockProvider.js +1 -1
- package/dist/providers/bedrock/Capabilities.d.ts +3 -28
- package/dist/providers/bedrock/Capabilities.d.ts.map +1 -1
- package/dist/providers/bedrock/Capabilities.js +62 -183
- package/dist/providers/bedrock/Chat.d.ts.map +1 -1
- package/dist/providers/bedrock/Chat.js +1 -0
- package/dist/providers/bedrock/Streaming.d.ts.map +1 -1
- package/dist/providers/bedrock/Streaming.js +1 -0
- package/dist/providers/bedrock/mapper.d.ts +4 -3
- package/dist/providers/bedrock/mapper.d.ts.map +1 -1
- package/dist/providers/bedrock/mapper.js +19 -4
- package/dist/providers/deepseek/Capabilities.d.ts +2 -1
- package/dist/providers/deepseek/Capabilities.d.ts.map +1 -1
- package/dist/providers/deepseek/Capabilities.js +21 -30
- package/dist/providers/deepseek/DeepSeekProvider.d.ts +1 -1
- package/dist/providers/gemini/Capabilities.d.ts +1 -1
- package/dist/providers/gemini/Capabilities.d.ts.map +1 -1
- package/dist/providers/gemini/Capabilities.js +33 -87
- package/dist/providers/gemini/Chat.d.ts.map +1 -1
- package/dist/providers/gemini/Chat.js +44 -9
- package/dist/providers/gemini/ChatUtils.d.ts.map +1 -1
- package/dist/providers/gemini/ChatUtils.js +59 -49
- package/dist/providers/gemini/GeminiProvider.js +1 -1
- package/dist/providers/gemini/Image.d.ts.map +1 -1
- package/dist/providers/gemini/Image.js +17 -5
- package/dist/providers/gemini/Streaming.d.ts.map +1 -1
- package/dist/providers/gemini/Streaming.js +41 -1
- package/dist/providers/gemini/types.d.ts +1 -0
- package/dist/providers/gemini/types.d.ts.map +1 -1
- package/dist/providers/mistral/Capabilities.d.ts +1 -0
- package/dist/providers/mistral/Capabilities.d.ts.map +1 -1
- package/dist/providers/mistral/Capabilities.js +30 -59
- package/dist/providers/mistral/Chat.d.ts.map +1 -1
- package/dist/providers/mistral/Chat.js +13 -1
- package/dist/providers/mistral/Streaming.d.ts.map +1 -1
- package/dist/providers/mistral/Streaming.js +13 -1
- package/dist/providers/mistral/Transcription.d.ts.map +1 -1
- package/dist/providers/mistral/Transcription.js +3 -1
- package/dist/providers/ollama/Capabilities.d.ts +1 -0
- package/dist/providers/ollama/Capabilities.d.ts.map +1 -1
- package/dist/providers/ollama/Capabilities.js +17 -27
- package/dist/providers/openai/Capabilities.d.ts +2 -1
- package/dist/providers/openai/Capabilities.d.ts.map +1 -1
- package/dist/providers/openai/Capabilities.js +35 -71
- package/dist/providers/openai/Chat.d.ts.map +1 -1
- package/dist/providers/openai/Chat.js +4 -1
- package/dist/providers/openai/Image.d.ts +1 -0
- package/dist/providers/openai/Image.d.ts.map +1 -1
- package/dist/providers/openai/Image.js +61 -2
- package/dist/providers/openai/Streaming.d.ts.map +1 -1
- package/dist/providers/openai/Streaming.js +7 -1
- package/dist/providers/openai/Transcription.d.ts.map +1 -1
- package/dist/providers/openai/Transcription.js +7 -2
- package/dist/providers/openrouter/Capabilities.d.ts +10 -9
- package/dist/providers/openrouter/Capabilities.d.ts.map +1 -1
- package/dist/providers/openrouter/Capabilities.js +25 -48
- package/dist/providers/utils.d.ts +4 -0
- package/dist/providers/utils.d.ts.map +1 -1
- package/dist/providers/utils.js +11 -0
- package/dist/providers/xai/Capabilities.d.ts +13 -9
- package/dist/providers/xai/Capabilities.d.ts.map +1 -1
- package/dist/providers/xai/Capabilities.js +34 -65
- package/dist/transcription/Transcription.d.ts +23 -1
- package/dist/transcription/Transcription.d.ts.map +1 -1
- package/dist/transcription/Transcription.js +22 -0
- package/dist/utils/Binary.d.ts +8 -0
- package/dist/utils/Binary.d.ts.map +1 -1
- package/dist/utils/Binary.js +12 -0
- package/package.json +1 -1
package/dist/chat/Chat.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { Message } from "./Message.js";
|
|
2
2
|
import { ContentPart, MessageContent } from "./Content.js";
|
|
3
3
|
import { ChatOptions } from "./ChatOptions.js";
|
|
4
|
-
import { Provider, Usage, ChatChunk, ThinkingConfig } from "../providers/Provider.js";
|
|
4
|
+
import { Provider, Usage, ChatChunk, ThinkingConfig, ToolChoice } from "../providers/Provider.js";
|
|
5
5
|
import { Stream } from "../streaming/Stream.js";
|
|
6
6
|
import { ToolResolvable } from "./Tool.js";
|
|
7
7
|
import { Schema } from "../schema/Schema.js";
|
|
@@ -53,11 +53,27 @@ export declare class Chat<S = unknown> {
|
|
|
53
53
|
* Can replace existing tools if options.replace is true.
|
|
54
54
|
*
|
|
55
55
|
* @example
|
|
56
|
-
* chat.withTools([WeatherTool, new CalculatorTool()], { replace: true });
|
|
56
|
+
* chat.withTools([WeatherTool, new CalculatorTool()], { replace: true, choice: 'required' });
|
|
57
57
|
*/
|
|
58
58
|
withTools(tools: ToolResolvable[], options?: {
|
|
59
59
|
replace?: boolean;
|
|
60
|
+
choice?: ToolChoice;
|
|
61
|
+
calls?: "one" | "many" | number;
|
|
60
62
|
}): this;
|
|
63
|
+
/**
|
|
64
|
+
* Control whether/how tools are called.
|
|
65
|
+
* - 'auto': (Default) Model decides.
|
|
66
|
+
* - 'none': Model cannot call tools.
|
|
67
|
+
* - 'required': Model must call at least one tool.
|
|
68
|
+
* - string: Force a specific tool by name.
|
|
69
|
+
*/
|
|
70
|
+
withToolChoice(choice: ToolChoice): this;
|
|
71
|
+
/**
|
|
72
|
+
* Control whether the model may return one or multiple tool calls.
|
|
73
|
+
* - 'many': (Default) Parallel tool calling allowed.
|
|
74
|
+
* - 'one' or 1: Only one tool call allowed in a single response.
|
|
75
|
+
*/
|
|
76
|
+
withToolCalls(calls: "one" | "many" | number): this;
|
|
61
77
|
/**
|
|
62
78
|
* Add instructions (system prompt) to the chat.
|
|
63
79
|
* By default, it appends a new system message.
|
|
@@ -87,6 +103,10 @@ export declare class Chat<S = unknown> {
|
|
|
87
103
|
* Add a raw Message object to the chat history.
|
|
88
104
|
*/
|
|
89
105
|
addMessage(message: Message): this;
|
|
106
|
+
/**
|
|
107
|
+
* Add multiple messages to the chat history.
|
|
108
|
+
*/
|
|
109
|
+
addMessages(messages: Message[]): this;
|
|
90
110
|
/**
|
|
91
111
|
* Set the temperature for the chat session.
|
|
92
112
|
* Controls randomness: 0.0 (deterministic) to 1.0 (creative).
|
package/dist/chat/Chat.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Chat.d.ts","sourceRoot":"","sources":["../../src/chat/Chat.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EACL,WAAW,EAGX,cAAc,EACf,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EACL,QAAQ,EACR,KAAK,EACL,SAAS,EAET,cAAc,
|
|
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
|
@@ -97,7 +97,7 @@ export class Chat {
|
|
|
97
97
|
* Can replace existing tools if options.replace is true.
|
|
98
98
|
*
|
|
99
99
|
* @example
|
|
100
|
-
* chat.withTools([WeatherTool, new CalculatorTool()], { replace: true });
|
|
100
|
+
* chat.withTools([WeatherTool, new CalculatorTool()], { replace: true, choice: 'required' });
|
|
101
101
|
*/
|
|
102
102
|
withTools(tools, options) {
|
|
103
103
|
if (options?.replace) {
|
|
@@ -106,6 +106,12 @@ export class Chat {
|
|
|
106
106
|
if (!this.options.tools) {
|
|
107
107
|
this.options.tools = [];
|
|
108
108
|
}
|
|
109
|
+
if (options?.choice) {
|
|
110
|
+
this.options.toolChoice = options.choice;
|
|
111
|
+
}
|
|
112
|
+
if (options?.calls) {
|
|
113
|
+
this.options.toolCalls = options.calls;
|
|
114
|
+
}
|
|
109
115
|
for (const tool of tools) {
|
|
110
116
|
const normalized = this.normalizeTool(tool);
|
|
111
117
|
if (normalized) {
|
|
@@ -114,6 +120,26 @@ export class Chat {
|
|
|
114
120
|
}
|
|
115
121
|
return this;
|
|
116
122
|
}
|
|
123
|
+
/**
|
|
124
|
+
* Control whether/how tools are called.
|
|
125
|
+
* - 'auto': (Default) Model decides.
|
|
126
|
+
* - 'none': Model cannot call tools.
|
|
127
|
+
* - 'required': Model must call at least one tool.
|
|
128
|
+
* - string: Force a specific tool by name.
|
|
129
|
+
*/
|
|
130
|
+
withToolChoice(choice) {
|
|
131
|
+
this.options.toolChoice = choice;
|
|
132
|
+
return this;
|
|
133
|
+
}
|
|
134
|
+
/**
|
|
135
|
+
* Control whether the model may return one or multiple tool calls.
|
|
136
|
+
* - 'many': (Default) Parallel tool calling allowed.
|
|
137
|
+
* - 'one' or 1: Only one tool call allowed in a single response.
|
|
138
|
+
*/
|
|
139
|
+
withToolCalls(calls) {
|
|
140
|
+
this.options.toolCalls = calls;
|
|
141
|
+
return this;
|
|
142
|
+
}
|
|
117
143
|
/**
|
|
118
144
|
* Add instructions (system prompt) to the chat.
|
|
119
145
|
* By default, it appends a new system message.
|
|
@@ -166,6 +192,15 @@ export class Chat {
|
|
|
166
192
|
}
|
|
167
193
|
return this;
|
|
168
194
|
}
|
|
195
|
+
/**
|
|
196
|
+
* Add multiple messages to the chat history.
|
|
197
|
+
*/
|
|
198
|
+
addMessages(messages) {
|
|
199
|
+
for (const msg of messages) {
|
|
200
|
+
this.addMessage(msg);
|
|
201
|
+
}
|
|
202
|
+
return this;
|
|
203
|
+
}
|
|
169
204
|
/**
|
|
170
205
|
* Set the temperature for the chat session.
|
|
171
206
|
* Controls randomness: 0.0 (deterministic) to 1.0 (creative).
|
|
@@ -332,6 +367,9 @@ export class Chat {
|
|
|
332
367
|
if (this.options.tools && this.options.tools.length > 0) {
|
|
333
368
|
ChatValidator.validateTools(this.provider, this.model, true, this.options);
|
|
334
369
|
}
|
|
370
|
+
if (this.options.toolChoice || this.options.params?.tool_choice) {
|
|
371
|
+
ChatValidator.validateToolChoice(this.provider, this.model, this.options.toolChoice || this.options.params?.tool_choice, this.options);
|
|
372
|
+
}
|
|
335
373
|
this.messages.push({
|
|
336
374
|
role: "user",
|
|
337
375
|
content: messageContent
|
|
@@ -379,6 +417,8 @@ export class Chat {
|
|
|
379
417
|
max_tokens: options?.maxTokens ?? this.options.maxTokens ?? config.maxTokens,
|
|
380
418
|
headers: { ...this.options.headers, ...options?.headers },
|
|
381
419
|
response_format: responseFormat, // Pass to provider
|
|
420
|
+
tool_choice: this.options.toolChoice,
|
|
421
|
+
parallel_tool_calls: this.options.toolCalls === "one" || this.options.toolCalls === 1 ? false : undefined,
|
|
382
422
|
requestTimeout: options?.requestTimeout ?? this.options.requestTimeout ?? config.requestTimeout,
|
|
383
423
|
thinking: options?.thinking ?? this.options.thinking,
|
|
384
424
|
prediction: options?.prediction ?? this.options.prediction,
|
|
@@ -422,7 +462,7 @@ export class Chat {
|
|
|
422
462
|
this.options.onNewMessage();
|
|
423
463
|
let response = await this.executor.executeChat(executeOptions);
|
|
424
464
|
trackUsage(response.usage);
|
|
425
|
-
assistantMessage = new ChatResponseString(response.content ?? "", response.usage ?? { input_tokens: 0, output_tokens: 0, total_tokens: 0 }, this.model, this.provider.id, response.thinking, response.reasoning, response.tool_calls, response.finish_reason, this.options.schema);
|
|
465
|
+
assistantMessage = new ChatResponseString(response.content ?? "", response.usage ?? { input_tokens: 0, output_tokens: 0, total_tokens: 0 }, this.model, this.provider.id, response.thinking, response.reasoning, response.tool_calls, response.finish_reason, this.options.schema, response.metadata, response.attachments);
|
|
426
466
|
// --- Content Policy Hooks (Output - Turn 1) ---
|
|
427
467
|
if (this.options.onAfterResponse) {
|
|
428
468
|
const result = await this.options.onAfterResponse(assistantMessage);
|
|
@@ -513,13 +553,15 @@ export class Chat {
|
|
|
513
553
|
max_tokens: options?.maxTokens ?? this.options.maxTokens ?? config.maxTokens,
|
|
514
554
|
headers: this.options.headers,
|
|
515
555
|
response_format: responseFormat,
|
|
556
|
+
tool_choice: this.options.toolChoice,
|
|
557
|
+
parallel_tool_calls: this.options.toolCalls === "one" || this.options.toolCalls === 1 ? false : undefined,
|
|
516
558
|
requestTimeout: options?.requestTimeout ?? this.options.requestTimeout ?? config.requestTimeout,
|
|
517
559
|
prediction: options?.prediction ?? this.options.prediction,
|
|
518
560
|
signal: options?.signal,
|
|
519
561
|
...this.options.params
|
|
520
562
|
});
|
|
521
563
|
trackUsage(response.usage);
|
|
522
|
-
assistantMessage = new ChatResponseString(response.content ?? "", response.usage ?? { input_tokens: 0, output_tokens: 0, total_tokens: 0 }, this.model, this.provider.id, response.thinking, response.reasoning, response.tool_calls, response.finish_reason, this.options.schema);
|
|
564
|
+
assistantMessage = new ChatResponseString(response.content ?? "", response.usage ?? { input_tokens: 0, output_tokens: 0, total_tokens: 0 }, this.model, this.provider.id, response.thinking, response.reasoning, response.tool_calls, response.finish_reason, this.options.schema, response.metadata, response.attachments);
|
|
523
565
|
if (this.options.onAfterResponse) {
|
|
524
566
|
const result = await this.options.onAfterResponse(assistantMessage);
|
|
525
567
|
if (result)
|
|
@@ -5,7 +5,7 @@ import { ContentPart } from "./Content.js";
|
|
|
5
5
|
import { Schema } from "../schema/Schema.js";
|
|
6
6
|
import { ChatResponseString } from "./ChatResponse.js";
|
|
7
7
|
import { ToolExecutionMode } from "../constants.js";
|
|
8
|
-
import { ResponseFormat, ThinkingConfig } from "../providers/Provider.js";
|
|
8
|
+
import { ResponseFormat, ThinkingConfig, ToolChoice } from "../providers/Provider.js";
|
|
9
9
|
export interface ChatOptions {
|
|
10
10
|
systemPrompt?: string;
|
|
11
11
|
middlewares?: Middleware[];
|
|
@@ -29,6 +29,8 @@ export interface ChatOptions {
|
|
|
29
29
|
maxToolCalls?: number;
|
|
30
30
|
requestTimeout?: number;
|
|
31
31
|
toolExecution?: ToolExecutionMode;
|
|
32
|
+
toolChoice?: ToolChoice;
|
|
33
|
+
toolCalls?: "one" | "many" | number;
|
|
32
34
|
onConfirmToolCall?: (toolCall: unknown) => Promise<boolean> | boolean;
|
|
33
35
|
onBeforeRequest?: (messages: Message[]) => Promise<Message[] | void>;
|
|
34
36
|
onAfterResponse?: (response: ChatResponseString) => Promise<ChatResponseString | void>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ChatOptions.d.ts","sourceRoot":"","sources":["../../src/chat/ChatOptions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACpD,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAC3C,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,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,cAAc,EAAE,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"ChatOptions.d.ts","sourceRoot":"","sources":["../../src/chat/ChatOptions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACpD,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAC3C,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,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,cAAc,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAEtF,MAAM,WAAW,WAAW;IAC1B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,UAAU,EAAE,CAAC;IAC3B,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,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC,QAAQ,CAAC,EAAE,cAAc,CAAC;IAC1B,UAAU,CAAC,EAAE,MAAM,GAAG,WAAW,EAAE,CAAC;IACpC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,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,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,SAAS,CAAC,EAAE,KAAK,GAAG,MAAM,GAAG,MAAM,CAAC;IACpC,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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Usage, ThinkingResult } from "../providers/Provider.js";
|
|
1
|
+
import { Usage, ThinkingResult, Attachment } from "../providers/Provider.js";
|
|
2
2
|
import { ToolCall } from "./Tool.js";
|
|
3
3
|
import { Schema } from "../schema/Schema.js";
|
|
4
4
|
/**
|
|
@@ -14,9 +14,11 @@ export declare class ChatResponseString extends String {
|
|
|
14
14
|
readonly tool_calls?: ToolCall[] | undefined;
|
|
15
15
|
readonly finish_reason?: string | null | undefined;
|
|
16
16
|
readonly schema?: Schema | undefined;
|
|
17
|
+
readonly metadata?: Record<string, unknown> | undefined;
|
|
18
|
+
readonly attachments?: Attachment[] | undefined;
|
|
17
19
|
private _cachedData;
|
|
18
20
|
private _validationError;
|
|
19
|
-
constructor(content: string, usage: Usage, model: string, provider: string, thinking?: ThinkingResult | undefined, reasoning?: string | null | undefined, tool_calls?: ToolCall[] | undefined, finish_reason?: string | null | undefined, schema?: Schema | undefined);
|
|
21
|
+
constructor(content: string, usage: Usage, model: string, provider: string, thinking?: ThinkingResult | undefined, reasoning?: string | null | undefined, tool_calls?: ToolCall[] | undefined, finish_reason?: string | null | undefined, schema?: Schema | undefined, metadata?: Record<string, unknown> | undefined, attachments?: Attachment[] | undefined);
|
|
20
22
|
get finishReason(): string | null | undefined;
|
|
21
23
|
get input_tokens(): number;
|
|
22
24
|
get output_tokens(): number;
|
|
@@ -43,6 +45,8 @@ export declare class ChatResponseString extends String {
|
|
|
43
45
|
reasoning: string | null | undefined;
|
|
44
46
|
tool_calls: ToolCall[] | undefined;
|
|
45
47
|
finish_reason: string | null | undefined;
|
|
48
|
+
metadata: Record<string, unknown> | undefined;
|
|
49
|
+
attachments: Attachment[] | undefined;
|
|
46
50
|
};
|
|
47
51
|
/**
|
|
48
52
|
* Alias for meta (backwards compatibility)
|
|
@@ -55,6 +59,8 @@ export declare class ChatResponseString extends String {
|
|
|
55
59
|
reasoning: string | null | undefined;
|
|
56
60
|
tool_calls: ToolCall[] | undefined;
|
|
57
61
|
finish_reason: string | null | undefined;
|
|
62
|
+
metadata: Record<string, unknown> | undefined;
|
|
63
|
+
attachments: Attachment[] | undefined;
|
|
58
64
|
};
|
|
59
65
|
toString(): string;
|
|
60
66
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ChatResponse.d.ts","sourceRoot":"","sources":["../../src/chat/ChatResponse.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"ChatResponse.d.ts","sourceRoot":"","sources":["../../src/chat/ChatResponse.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAC7E,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AACrC,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAI7C;;;GAGG;AACH,qBAAa,kBAAmB,SAAQ,MAAM;aAM1B,KAAK,EAAE,KAAK;aACZ,KAAK,EAAE,MAAM;aACb,QAAQ,EAAE,MAAM;aAChB,QAAQ,CAAC,EAAE,cAAc;aACzB,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI;aACzB,UAAU,CAAC,EAAE,QAAQ,EAAE;aACvB,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI;aAC7B,MAAM,CAAC,EAAE,MAAM;aACf,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;aAClC,WAAW,CAAC,EAAE,UAAU,EAAE;IAd5C,OAAO,CAAC,WAAW,CAAsB;IACzC,OAAO,CAAC,gBAAgB,CAAsB;gBAG5C,OAAO,EAAE,MAAM,EACC,KAAK,EAAE,KAAK,EACZ,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,MAAM,EAChB,QAAQ,CAAC,EAAE,cAAc,YAAA,EACzB,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,YAAA,EACzB,UAAU,CAAC,EAAE,QAAQ,EAAE,YAAA,EACvB,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,YAAA,EAC7B,MAAM,CAAC,EAAE,MAAM,YAAA,EACf,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,YAAA,EAClC,WAAW,CAAC,EAAE,UAAU,EAAE,YAAA;IAK5C,IAAI,YAAY,8BAEf;IAED,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;IAGD,IAAI,WAAW,WAEd;IACD,IAAI,YAAY,WAEf;IACD,IAAI,WAAW,WAEd;IACD,IAAI,YAAY,uBAEf;IAED,IAAI,OAAO,IAAI,MAAM,CAEpB;IAED,IAAI,QAAQ,IAAI,MAAM,CAErB;IAED;;;OAGG;IACH,IAAI,IAAI;;;;;;;;;;MAYP;IAED;;OAEG;IACH,IAAI,GAAG;;;;;;;;;;MAEN;IAED,QAAQ;IAIR;;OAEG;IACH,WAAW,CAAC,UAAU,EAAE,MAAM,GAAG,kBAAkB;IAgBnD;;OAEG;IACH,IAAI,MAAM,IAAI,OAAO,CAOpB;IAED;;;;OAIG;IACH,IAAI,IAAI,IAAI,OAAO,CAkBlB;IAED;;OAEG;IACH,IAAI,QAAQ,IAAI,OAAO,CAMtB;IAED;;OAEG;IACH,IAAI,OAAO,IAAI,OAAO,CAQrB;IAED;;OAEG;IACH,IAAI,eAAe,IAAI,KAAK,GAAG,IAAI,CAOlC;CACF"}
|
|
@@ -13,9 +13,11 @@ export class ChatResponseString extends String {
|
|
|
13
13
|
tool_calls;
|
|
14
14
|
finish_reason;
|
|
15
15
|
schema;
|
|
16
|
+
metadata;
|
|
17
|
+
attachments;
|
|
16
18
|
_cachedData = undefined;
|
|
17
19
|
_validationError = null;
|
|
18
|
-
constructor(content, usage, model, provider, thinking, reasoning, tool_calls, finish_reason, schema) {
|
|
20
|
+
constructor(content, usage, model, provider, thinking, reasoning, tool_calls, finish_reason, schema, metadata, attachments) {
|
|
19
21
|
super(content);
|
|
20
22
|
this.usage = usage;
|
|
21
23
|
this.model = model;
|
|
@@ -25,6 +27,8 @@ export class ChatResponseString extends String {
|
|
|
25
27
|
this.tool_calls = tool_calls;
|
|
26
28
|
this.finish_reason = finish_reason;
|
|
27
29
|
this.schema = schema;
|
|
30
|
+
this.metadata = metadata;
|
|
31
|
+
this.attachments = attachments;
|
|
28
32
|
}
|
|
29
33
|
get finishReason() {
|
|
30
34
|
return this.finish_reason;
|
|
@@ -81,7 +85,9 @@ export class ChatResponseString extends String {
|
|
|
81
85
|
thinking: this.thinking,
|
|
82
86
|
reasoning: this.reasoning,
|
|
83
87
|
tool_calls: this.tool_calls,
|
|
84
|
-
finish_reason: this.finish_reason
|
|
88
|
+
finish_reason: this.finish_reason,
|
|
89
|
+
metadata: this.metadata,
|
|
90
|
+
attachments: this.attachments
|
|
85
91
|
};
|
|
86
92
|
}
|
|
87
93
|
/**
|
|
@@ -97,7 +103,7 @@ export class ChatResponseString extends String {
|
|
|
97
103
|
* Return a new ChatResponseString with modified content but preserved metadata.
|
|
98
104
|
*/
|
|
99
105
|
withContent(newContent) {
|
|
100
|
-
return new ChatResponseString(newContent, this.usage, this.model, this.provider, this.thinking, this.reasoning, this.tool_calls, this.finish_reason, this.schema);
|
|
106
|
+
return new ChatResponseString(newContent, this.usage, this.model, this.provider, this.thinking, this.reasoning, this.tool_calls, this.finish_reason, this.schema, this.metadata, this.attachments);
|
|
101
107
|
}
|
|
102
108
|
/**
|
|
103
109
|
* Attempt to extract and parse the content as JSON.
|
|
@@ -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,EACL,WAAW,EAIZ,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAyB,MAAM,0BAA0B,CAAC;AAEtF,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAGhD,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAavC;;;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;
|
|
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,EACL,WAAW,EAIZ,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAyB,MAAM,0BAA0B,CAAC;AAEtF,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAGhD,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAavC;;;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;CAwXrF"}
|
package/dist/chat/ChatStream.js
CHANGED
|
@@ -157,6 +157,8 @@ export class ChatStream {
|
|
|
157
157
|
max_tokens: options.maxTokens ?? config.maxTokens,
|
|
158
158
|
response_format: responseFormat,
|
|
159
159
|
headers: options.headers,
|
|
160
|
+
tool_choice: options.toolChoice,
|
|
161
|
+
parallel_tool_calls: options.toolCalls === "one" || options.toolCalls === 1 ? false : undefined,
|
|
160
162
|
requestTimeout: options.requestTimeout ?? config.requestTimeout,
|
|
161
163
|
thinking: options.thinking,
|
|
162
164
|
prediction: options.prediction,
|
package/dist/chat/Tool.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Tool.d.ts","sourceRoot":"","sources":["../../src/chat/Tool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,MAAM,WAAW,QAAQ;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,UAAU,CAAC;IACjB,QAAQ,EAAE;QACR,IAAI,EAAE,MAAM,CAAC;QACb,SAAS,EAAE,MAAM,CAAC;KACnB,CAAC;CACH;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,UAAU,CAAC;IACjB,QAAQ,EAAE;QACR,IAAI,EAAE,MAAM,CAAC;QACb,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,MAAM,CAAC,EAAE,OAAO,CAAC;QACjB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;KACrC,CAAC;IACF,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,OAAO,CAAC,MAAM,GAAG,QAAQ,CAAC,CAAC;CACzD;AAED;;;;;;;;;;;;;;;GAeG;AACH,qBAAa,QAAQ;aACS,OAAO,EAAE,MAAM;gBAAf,OAAO,EAAE,MAAM;IAE3C,QAAQ,IAAI,MAAM;IAIlB,MAAM,IAAI;QAAE,IAAI,EAAE,IAAI,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE;CAG1C;AAED;;GAEG;AACH,MAAM,MAAM,cAAc,GAAG,IAAI,GAAG;IAAE,QAAQ,IAAI,CAAA;CAAE,GAAG,cAAc,CAAC;AAEtE;;GAEG;AACH,8BAAsB,IAAI,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IACpD;;OAEG;IACH,SAAgB,IAAI,EAAE,MAAM,CAAC;IAE7B;;OAEG;IACH,SAAgB,WAAW,EAAE,MAAM,CAAC;IAEpC;;;OAGG;IACH,SAAgB,MAAM,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAE7E;;;OAGG;IACI,MAAM,CAAC,EAAE,OAAO,CAAC;IAExB;;;OAGG;aACa,OAAO,CAAC,IAAI,EAAE,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC;IAElD;;;;;;;;;;;;;OAaG;IACH,SAAS,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,QAAQ;IAIzC;;;;OAIG;IACU,OAAO,CAAC,IAAI,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,GAAG,QAAQ,CAAC;
|
|
1
|
+
{"version":3,"file":"Tool.d.ts","sourceRoot":"","sources":["../../src/chat/Tool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,MAAM,WAAW,QAAQ;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,UAAU,CAAC;IACjB,QAAQ,EAAE;QACR,IAAI,EAAE,MAAM,CAAC;QACb,SAAS,EAAE,MAAM,CAAC;KACnB,CAAC;CACH;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,UAAU,CAAC;IACjB,QAAQ,EAAE;QACR,IAAI,EAAE,MAAM,CAAC;QACb,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,MAAM,CAAC,EAAE,OAAO,CAAC;QACjB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;KACrC,CAAC;IACF,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,OAAO,CAAC,MAAM,GAAG,QAAQ,CAAC,CAAC;CACzD;AAED;;;;;;;;;;;;;;;GAeG;AACH,qBAAa,QAAQ;aACS,OAAO,EAAE,MAAM;gBAAf,OAAO,EAAE,MAAM;IAE3C,QAAQ,IAAI,MAAM;IAIlB,MAAM,IAAI;QAAE,IAAI,EAAE,IAAI,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE;CAG1C;AAED;;GAEG;AACH,MAAM,MAAM,cAAc,GAAG,IAAI,GAAG;IAAE,QAAQ,IAAI,CAAA;CAAE,GAAG,cAAc,CAAC;AAEtE;;GAEG;AACH,8BAAsB,IAAI,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IACpD;;OAEG;IACH,SAAgB,IAAI,EAAE,MAAM,CAAC;IAE7B;;OAEG;IACH,SAAgB,WAAW,EAAE,MAAM,CAAC;IAEpC;;;OAGG;IACH,SAAgB,MAAM,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAE7E;;;OAGG;IACI,MAAM,CAAC,EAAE,OAAO,CAAC;IAExB;;;OAGG;aACa,OAAO,CAAC,IAAI,EAAE,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC;IAElD;;;;;;;;;;;;;OAaG;IACH,SAAS,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,QAAQ;IAIzC;;;;OAIG;IACU,OAAO,CAAC,IAAI,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,GAAG,QAAQ,CAAC;IA0BzD;;;OAGG;IACI,SAAS,IAAI,cAAc;CAwBnC"}
|
package/dist/chat/Tool.js
CHANGED
|
@@ -60,19 +60,29 @@ export class Tool {
|
|
|
60
60
|
* Preserves ToolHalt instances for the execution loop to detect.
|
|
61
61
|
*/
|
|
62
62
|
async handler(args) {
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
63
|
+
try {
|
|
64
|
+
// 1. Runtime validation if Zod schema is provided
|
|
65
|
+
let validatedArgs = args;
|
|
66
|
+
if (this.schema instanceof z.ZodType) {
|
|
67
|
+
try {
|
|
68
|
+
validatedArgs = this.schema.parse(args);
|
|
69
|
+
}
|
|
70
|
+
catch (validationError) {
|
|
71
|
+
return `Invalid tool arguments: ${validationError.message || validationError}`;
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
const result = await this.execute(validatedArgs);
|
|
75
|
+
// Preserve ToolHalt for the execution loop to handle
|
|
76
|
+
if (result instanceof ToolHalt) {
|
|
77
|
+
return result;
|
|
78
|
+
}
|
|
79
|
+
if (result === undefined || result === null)
|
|
80
|
+
return "";
|
|
81
|
+
return typeof result === "string" ? result : JSON.stringify(result);
|
|
67
82
|
}
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
if (result instanceof ToolHalt) {
|
|
71
|
-
return result;
|
|
83
|
+
catch (error) {
|
|
84
|
+
return `Error executing tool '${this.name}': ${error.message || error}`;
|
|
72
85
|
}
|
|
73
|
-
if (result === undefined || result === null)
|
|
74
|
-
return "";
|
|
75
|
-
return typeof result === "string" ? result : JSON.stringify(result);
|
|
76
86
|
}
|
|
77
87
|
/**
|
|
78
88
|
* Converts the tool definition and logic into a standard ToolDefinition interface.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ToolHandler.d.ts","sourceRoot":"","sources":["../../src/chat/ToolHandler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAEpD,OAAO,EAAE,QAAQ,EAAE,cAAc,EAAY,MAAM,WAAW,CAAC;AAE/D;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,OAAO,CAAC;CACjB;AAED,qBAAa,WAAW;IACtB,MAAM,CAAC,kBAAkB,CAAC,SAAS,EAAE,QAAQ,EAAE,GAAG,SAAS,EAAE,IAAI,CAAC,EAAE,iBAAiB,GAAG,OAAO;WAMlF,uBAAuB,CAClC,QAAQ,EAAE,QAAQ,EAClB,SAAS,CAAC,EAAE,CAAC,IAAI,EAAE,QAAQ,KAAK,OAAO,CAAC,OAAO,CAAC,GAAG,OAAO,GACzD,OAAO,CAAC,OAAO,CAAC;WAMN,OAAO,CAClB,QAAQ,EAAE,QAAQ,EAClB,KAAK,EAAE,cAAc,EAAE,GAAG,SAAS,EACnC,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,QAAQ,KAAK,IAAI,EAClC,KAAK,CAAC,EAAE,CAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,KAAK,IAAI,GAChD,OAAO,CAAC,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"ToolHandler.d.ts","sourceRoot":"","sources":["../../src/chat/ToolHandler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAEpD,OAAO,EAAE,QAAQ,EAAE,cAAc,EAAY,MAAM,WAAW,CAAC;AAE/D;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,OAAO,CAAC;CACjB;AAED,qBAAa,WAAW;IACtB,MAAM,CAAC,kBAAkB,CAAC,SAAS,EAAE,QAAQ,EAAE,GAAG,SAAS,EAAE,IAAI,CAAC,EAAE,iBAAiB,GAAG,OAAO;WAMlF,uBAAuB,CAClC,QAAQ,EAAE,QAAQ,EAClB,SAAS,CAAC,EAAE,CAAC,IAAI,EAAE,QAAQ,KAAK,OAAO,CAAC,OAAO,CAAC,GAAG,OAAO,GACzD,OAAO,CAAC,OAAO,CAAC;WAMN,OAAO,CAClB,QAAQ,EAAE,QAAQ,EAClB,KAAK,EAAE,cAAc,EAAE,GAAG,SAAS,EACnC,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,QAAQ,KAAK,IAAI,EAClC,KAAK,CAAC,EAAE,CAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,KAAK,IAAI,GAChD,OAAO,CAAC,mBAAmB,CAAC;CAsChC"}
|
package/dist/chat/ToolHandler.js
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { ToolExecutionMode } from "../constants.js";
|
|
2
|
-
import { ToolError } from "../errors/index.js";
|
|
3
2
|
import { ToolHalt } from "./Tool.js";
|
|
4
3
|
export class ToolHandler {
|
|
5
4
|
static shouldExecuteTools(toolCalls, mode) {
|
|
@@ -39,7 +38,15 @@ export class ToolHandler {
|
|
|
39
38
|
};
|
|
40
39
|
}
|
|
41
40
|
else {
|
|
42
|
-
|
|
41
|
+
// Model tried to call a tool that isn't available
|
|
42
|
+
const availableTools = tools?.map((t) => t.function.name) || [];
|
|
43
|
+
const errorMsg = `Model tried to call unavailable tool '${toolCall.function.name}'. Available tools: [${availableTools.join(", ")}].`;
|
|
44
|
+
return {
|
|
45
|
+
role: "tool",
|
|
46
|
+
tool_call_id: toolCall.id,
|
|
47
|
+
content: errorMsg,
|
|
48
|
+
halted: false
|
|
49
|
+
};
|
|
43
50
|
}
|
|
44
51
|
}
|
|
45
52
|
}
|
|
@@ -6,5 +6,6 @@ export declare class ChatValidator {
|
|
|
6
6
|
static validateVision(provider: Provider, model: string, hasBinary: boolean, options: ValidationOptions): void;
|
|
7
7
|
static validateTools(provider: Provider, model: string, hasTools: boolean, options: ValidationOptions): void;
|
|
8
8
|
static validateStructuredOutput(provider: Provider, model: string, hasSchema: boolean, options: ValidationOptions): void;
|
|
9
|
+
static validateToolChoice(provider: Provider, model: string, toolChoice: unknown, options: ValidationOptions): void;
|
|
9
10
|
}
|
|
10
11
|
//# sourceMappingURL=Validation.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Validation.d.ts","sourceRoot":"","sources":["../../src/chat/Validation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AAGpD,MAAM,WAAW,iBAAiB;IAChC,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC7B;AAED,qBAAa,aAAa;IACxB,MAAM,CAAC,cAAc,CACnB,QAAQ,EAAE,QAAQ,EAClB,KAAK,EAAE,MAAM,EACb,SAAS,EAAE,OAAO,EAClB,OAAO,EAAE,iBAAiB;IAiB5B,MAAM,CAAC,aAAa,CAClB,QAAQ,EAAE,QAAQ,EAClB,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,OAAO,EACjB,OAAO,EAAE,iBAAiB;IAiB5B,MAAM,CAAC,wBAAwB,CAC7B,QAAQ,EAAE,QAAQ,EAClB,KAAK,EAAE,MAAM,EACb,SAAS,EAAE,OAAO,EAClB,OAAO,EAAE,iBAAiB;
|
|
1
|
+
{"version":3,"file":"Validation.d.ts","sourceRoot":"","sources":["../../src/chat/Validation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AAGpD,MAAM,WAAW,iBAAiB;IAChC,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC7B;AAED,qBAAa,aAAa;IACxB,MAAM,CAAC,cAAc,CACnB,QAAQ,EAAE,QAAQ,EAClB,KAAK,EAAE,MAAM,EACb,SAAS,EAAE,OAAO,EAClB,OAAO,EAAE,iBAAiB;IAiB5B,MAAM,CAAC,aAAa,CAClB,QAAQ,EAAE,QAAQ,EAClB,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,OAAO,EACjB,OAAO,EAAE,iBAAiB;IAiB5B,MAAM,CAAC,wBAAwB,CAC7B,QAAQ,EAAE,QAAQ,EAClB,KAAK,EAAE,MAAM,EACb,SAAS,EAAE,OAAO,EAClB,OAAO,EAAE,iBAAiB;IAiB5B,MAAM,CAAC,kBAAkB,CACvB,QAAQ,EAAE,QAAQ,EAClB,KAAK,EAAE,MAAM,EACb,UAAU,EAAE,OAAO,EACnB,OAAO,EAAE,iBAAiB;CAa7B"}
|
package/dist/chat/Validation.js
CHANGED
|
@@ -36,4 +36,14 @@ export class ChatValidator {
|
|
|
36
36
|
logger.warn(`Skipping structured output capability validation for model ${model}`);
|
|
37
37
|
}
|
|
38
38
|
}
|
|
39
|
+
static validateToolChoice(provider, model, toolChoice, options) {
|
|
40
|
+
if (!toolChoice)
|
|
41
|
+
return;
|
|
42
|
+
if (!options.assumeModelExists &&
|
|
43
|
+
provider.capabilities &&
|
|
44
|
+
provider.capabilities.supportsToolChoice &&
|
|
45
|
+
!provider.capabilities.supportsToolChoice(model)) {
|
|
46
|
+
throw new Error(`Model ${model} does not support tool choice.`);
|
|
47
|
+
}
|
|
48
|
+
}
|
|
39
49
|
}
|
package/dist/index.d.ts
CHANGED
|
@@ -18,7 +18,7 @@ export type { NodeLLMConfig } from "./config.js";
|
|
|
18
18
|
export { providerRegistry, ProviderInterceptor } from "./providers/registry.js";
|
|
19
19
|
export { Schema } from "./schema/Schema.js";
|
|
20
20
|
export { BaseProvider } from "./providers/BaseProvider.js";
|
|
21
|
-
export { Provider, ProviderCapabilities, ChatRequest, ChatResponse, ChatChunk, ThinkingConfig, ThinkingResult, Usage, ImageRequest, ImageResponse, TranscriptionRequest, TranscriptionResponse, ModerationRequest, ModerationResponse, ModerationResult, EmbeddingRequest, EmbeddingResponse } from "./providers/Provider.js";
|
|
21
|
+
export { Provider, ProviderCapabilities, ChatRequest, ChatResponse, ChatChunk, ThinkingConfig, ThinkingResult, Usage, ImageRequest, ImageResponse, TranscriptionRequest, TranscriptionResponse, TranscriptionSegment, TranscriptionWord, ModerationRequest, ModerationResponse, ModerationResult, EmbeddingRequest, EmbeddingResponse } from "./providers/Provider.js";
|
|
22
22
|
export { resolveModelAlias } from "./model_aliases.js";
|
|
23
23
|
export { default as MODEL_ALIASES } from "./aliases.js";
|
|
24
24
|
export { ToolExecutionMode, DEFAULT_MAX_TOOL_CALLS, DEFAULT_MAX_RETRIES, DEFAULT_TOOL_EXECUTION, DEFAULT_OLLAMA_BASE_URL, DEFAULT_MODELS } from "./constants.js";
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,uBAAuB,CAAC;AACtC,cAAc,wBAAwB,CAAC;AACvC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,sBAAsB,CAAC;AACrC,cAAc,uBAAuB,CAAC;AACtC,cAAc,mBAAmB,CAAC;AAClC,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACtD,YAAY,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACpD,YAAY,EAAE,UAAU,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC3E,cAAc,wBAAwB,CAAC;AAEvC,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EACL,OAAO,EACP,aAAa,EACb,SAAS,EACT,WAAW,EACX,aAAa,EACb,UAAU,EACV,SAAS,EACT,aAAa,EACb,eAAe,EAChB,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,YAAY,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAChF,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAC5C,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAC3D,OAAO,EACL,QAAQ,EACR,oBAAoB,EACpB,WAAW,EACX,YAAY,EACZ,SAAS,EACT,cAAc,EACd,cAAc,EACd,KAAK,EACL,YAAY,EACZ,aAAa,EACb,oBAAoB,EACpB,qBAAqB,EACrB,iBAAiB,EACjB,kBAAkB,EAClB,gBAAgB,EAChB,gBAAgB,EAChB,iBAAiB,EAClB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,cAAc,CAAC;AACxD,OAAO,EACL,iBAAiB,EACjB,sBAAsB,EACtB,mBAAmB,EACnB,sBAAsB,EACtB,uBAAuB,EACvB,cAAc,EACf,MAAM,gBAAgB,CAAC;AAExB,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,uBAAuB,CAAC;AACtC,cAAc,wBAAwB,CAAC;AACvC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,sBAAsB,CAAC;AACrC,cAAc,uBAAuB,CAAC;AACtC,cAAc,mBAAmB,CAAC;AAClC,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACtD,YAAY,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACpD,YAAY,EAAE,UAAU,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC3E,cAAc,wBAAwB,CAAC;AAEvC,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EACL,OAAO,EACP,aAAa,EACb,SAAS,EACT,WAAW,EACX,aAAa,EACb,UAAU,EACV,SAAS,EACT,aAAa,EACb,eAAe,EAChB,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,YAAY,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAChF,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAC5C,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAC3D,OAAO,EACL,QAAQ,EACR,oBAAoB,EACpB,WAAW,EACX,YAAY,EACZ,SAAS,EACT,cAAc,EACd,cAAc,EACd,KAAK,EACL,YAAY,EACZ,aAAa,EACb,oBAAoB,EACpB,qBAAqB,EACrB,oBAAoB,EACpB,iBAAiB,EACjB,iBAAiB,EACjB,kBAAkB,EAClB,gBAAgB,EAChB,gBAAgB,EAChB,iBAAiB,EAClB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,cAAc,CAAC;AACxD,OAAO,EACL,iBAAiB,EACjB,sBAAsB,EACtB,mBAAmB,EACnB,sBAAsB,EACtB,uBAAuB,EACvB,cAAc,EACf,MAAM,gBAAgB,CAAC;AAExB,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC"}
|
package/dist/llm.d.ts
CHANGED
|
@@ -56,11 +56,15 @@ export declare class NodeLLMCore {
|
|
|
56
56
|
listModels(): Promise<ModelInfo[]>;
|
|
57
57
|
paint(prompt: string, options?: {
|
|
58
58
|
model?: string;
|
|
59
|
+
images?: string[];
|
|
60
|
+
mask?: string;
|
|
59
61
|
size?: string;
|
|
60
62
|
quality?: string;
|
|
63
|
+
n?: number;
|
|
61
64
|
assumeModelExists?: boolean;
|
|
62
65
|
requestTimeout?: number;
|
|
63
66
|
middlewares?: Middleware[];
|
|
67
|
+
[key: string]: unknown;
|
|
64
68
|
}): Promise<GeneratedImage>;
|
|
65
69
|
transcribe(file: string, options?: {
|
|
66
70
|
model?: string;
|
package/dist/llm.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"llm.d.ts","sourceRoot":"","sources":["../src/llm.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"llm.d.ts","sourceRoot":"","sources":["../src/llm.ts"],"names":[],"mappings":"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"}
|
|
@@ -31,12 +31,14 @@ export declare class ModelRegistry {
|
|
|
31
31
|
total_tokens: number;
|
|
32
32
|
cached_tokens?: number;
|
|
33
33
|
reasoning_tokens?: number;
|
|
34
|
+
image_tokens?: number;
|
|
34
35
|
}, modelId: string, provider: string): {
|
|
35
36
|
input_tokens: number;
|
|
36
37
|
output_tokens: number;
|
|
37
38
|
total_tokens: number;
|
|
38
39
|
cached_tokens?: number;
|
|
39
40
|
reasoning_tokens?: number;
|
|
41
|
+
image_tokens?: number;
|
|
40
42
|
} | {
|
|
41
43
|
input_cost: number;
|
|
42
44
|
output_cost: number;
|
|
@@ -46,6 +48,7 @@ export declare class ModelRegistry {
|
|
|
46
48
|
total_tokens: number;
|
|
47
49
|
cached_tokens?: number;
|
|
48
50
|
reasoning_tokens?: number;
|
|
51
|
+
image_tokens?: number;
|
|
49
52
|
};
|
|
50
53
|
}
|
|
51
54
|
//# sourceMappingURL=ModelRegistry.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ModelRegistry.d.ts","sourceRoot":"","sources":["../../src/models/ModelRegistry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAInC,qBAAa,aAAa;IACxB,OAAO,CAAC,MAAM,CAAC,MAAM,CAA6C;IAElE,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,KAAK,GAAG,SAAS;
|
|
1
|
+
{"version":3,"file":"ModelRegistry.d.ts","sourceRoot":"","sources":["../../src/models/ModelRegistry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAInC,qBAAa,aAAa;IACxB,OAAO,CAAC,MAAM,CAAC,MAAM,CAA6C;IAElE,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,KAAK,GAAG,SAAS;IAmBlE;;OAEG;IACH,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,GAAG,KAAK,EAAE,GAAG,IAAI;IAe1C;;OAEG;IACH,MAAM,CAAC,GAAG,IAAI,KAAK,EAAE;IAIrB;;OAEG;IACH,MAAM,CAAC,kBAAkB,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAKhF;;OAEG;IACH,MAAM,CAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO;IAwB/E;;OAEG;IACH,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAK9E;;OAEG;IACH,MAAM,CAAC,aAAa,CAClB,KAAK,EAAE;QACL,YAAY,EAAE,MAAM,CAAC;QACrB,aAAa,EAAE,MAAM,CAAC;QACtB,YAAY,EAAE,MAAM,CAAC;QACrB,aAAa,CAAC,EAAE,MAAM,CAAC;QACvB,gBAAgB,CAAC,EAAE,MAAM,CAAC;QAC1B,YAAY,CAAC,EAAE,MAAM,CAAC;KACvB,EACD,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM;sBARA,MAAM;uBACL,MAAM;sBACP,MAAM;wBACJ,MAAM;2BACH,MAAM;uBACV,MAAM;;;;;sBALP,MAAM;uBACL,MAAM;sBACP,MAAM;wBACJ,MAAM;2BACH,MAAM;uBACV,MAAM;;CAoD1B"}
|
|
@@ -3,8 +3,18 @@ import { PricingRegistry } from "./PricingRegistry.js";
|
|
|
3
3
|
export class ModelRegistry {
|
|
4
4
|
static models = modelsData;
|
|
5
5
|
static find(modelId, provider) {
|
|
6
|
-
|
|
6
|
+
// Exact match
|
|
7
|
+
const exactMatch = this.models.find((m) => m.id.toLowerCase() === modelId.toLowerCase() &&
|
|
7
8
|
(!provider || m.provider.toLowerCase() === provider.toLowerCase()));
|
|
9
|
+
if (exactMatch)
|
|
10
|
+
return exactMatch;
|
|
11
|
+
// Fuzzy match (prefix matching)
|
|
12
|
+
return this.models.find((m) => {
|
|
13
|
+
if (provider && m.provider.toLowerCase() !== provider.toLowerCase())
|
|
14
|
+
return false;
|
|
15
|
+
return (m.id.toLowerCase().startsWith(modelId.toLowerCase()) ||
|
|
16
|
+
modelId.toLowerCase().startsWith(m.id.toLowerCase()));
|
|
17
|
+
});
|
|
8
18
|
}
|
|
9
19
|
/**
|
|
10
20
|
* Add or update models in the registry.
|
|
@@ -39,7 +49,23 @@ export class ModelRegistry {
|
|
|
39
49
|
*/
|
|
40
50
|
static supports(modelId, capability, provider) {
|
|
41
51
|
const model = this.find(modelId, provider);
|
|
42
|
-
|
|
52
|
+
if (!model)
|
|
53
|
+
return false;
|
|
54
|
+
if (model.capabilities.includes(capability))
|
|
55
|
+
return true;
|
|
56
|
+
// Fallback for vision: check modalities
|
|
57
|
+
if (capability === "vision" && model.modalities?.input?.includes("image")) {
|
|
58
|
+
return true;
|
|
59
|
+
}
|
|
60
|
+
// Fallback for embeddings: check modalities
|
|
61
|
+
if (capability === "embeddings" && model.modalities?.output?.includes("embeddings")) {
|
|
62
|
+
return true;
|
|
63
|
+
}
|
|
64
|
+
// Fallback for reasoning: check model ID
|
|
65
|
+
if (capability === "reasoning") {
|
|
66
|
+
return /o1-|o3-|reasoner|-r1|qwq|3-7/.test(modelId.toLowerCase());
|
|
67
|
+
}
|
|
68
|
+
return false;
|
|
43
69
|
}
|
|
44
70
|
/**
|
|
45
71
|
* Get context window size.
|
|
@@ -53,22 +79,33 @@ export class ModelRegistry {
|
|
|
53
79
|
*/
|
|
54
80
|
static calculateCost(usage, modelId, provider) {
|
|
55
81
|
const pricing = PricingRegistry.getPricing(modelId, provider);
|
|
56
|
-
if (!pricing
|
|
82
|
+
if (!pricing) {
|
|
57
83
|
return usage;
|
|
58
84
|
}
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
85
|
+
let inputCost = 0;
|
|
86
|
+
let outputCost = 0;
|
|
87
|
+
// 1. Text pricing
|
|
88
|
+
if (pricing.text_tokens?.standard) {
|
|
89
|
+
const prices = pricing.text_tokens.standard;
|
|
90
|
+
const inputPrice = prices.input_per_million || 0;
|
|
91
|
+
const outputPrice = prices.output_per_million || 0;
|
|
92
|
+
const reasoningPrice = prices.reasoning_output_per_million ??
|
|
93
|
+
(modelId.includes("reasoner") || modelId.includes("3-7") ? outputPrice * 2.5 : outputPrice);
|
|
94
|
+
const cachedPrice = prices.cached_input_per_million ?? inputPrice / 2;
|
|
95
|
+
inputCost +=
|
|
96
|
+
((usage.input_tokens - (usage.cached_tokens || 0)) / 1_000_000) * inputPrice +
|
|
97
|
+
((usage.cached_tokens || 0) / 1_000_000) * cachedPrice;
|
|
98
|
+
const outputTokens = usage.output_tokens - (usage.reasoning_tokens || 0);
|
|
99
|
+
const reasoningTokens = usage.reasoning_tokens || 0;
|
|
100
|
+
outputCost +=
|
|
101
|
+
(outputTokens / 1_000_000) * outputPrice + (reasoningTokens / 1_000_000) * reasoningPrice;
|
|
102
|
+
}
|
|
103
|
+
// 2. Image pricing (usually per image, but here we treat image_tokens as 'count' if small, or tokens if large)
|
|
104
|
+
// RubyLLM v1.15 uses prices directly for images if provide details.
|
|
105
|
+
if (pricing.images?.standard && usage.image_tokens) {
|
|
106
|
+
const imagePrice = pricing.images.standard.input || 0;
|
|
107
|
+
inputCost += usage.image_tokens * imagePrice;
|
|
108
|
+
}
|
|
72
109
|
const totalCost = inputCost + outputCost;
|
|
73
110
|
return {
|
|
74
111
|
...usage,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PricingRegistry.d.ts","sourceRoot":"","sources":["../../src/models/PricingRegistry.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE1C;;;GAGG;AACH,qBAAa,eAAe;IAC1B,OAAO,CAAC,MAAM,CAAC,gBAAgB,CAAmC;IAClE,OAAO,CAAC,MAAM,CAAC,WAAW,CAA2B;IAGrD,OAAO,CAAC,MAAM,CAAC,gBAAgB,
|
|
1
|
+
{"version":3,"file":"PricingRegistry.d.ts","sourceRoot":"","sources":["../../src/models/PricingRegistry.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE1C;;;GAGG;AACH,qBAAa,eAAe;IAC1B,OAAO,CAAC,MAAM,CAAC,gBAAgB,CAAmC;IAClE,OAAO,CAAC,MAAM,CAAC,WAAW,CAA2B;IAGrD,OAAO,CAAC,MAAM,CAAC,gBAAgB,CAsD7B;IAEF;;OAEG;IACH,MAAM,CAAC,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS;IAmB9E;;OAEG;IACH,MAAM,CAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,YAAY;IAIxE;;OAEG;WACU,YAAY,CAAC,GAAG,EAAE,MAAM;IAmBrC;;OAEG;IACH,MAAM,CAAC,cAAc,IAAI,IAAI,GAAG,IAAI;IAIpC;;OAEG;IACH,MAAM,CAAC,KAAK;CAIb"}
|