@node-llm/core 1.8.0 → 1.9.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 +3 -0
- package/dist/aliases.d.ts.map +1 -1
- package/dist/aliases.js +3 -0
- package/dist/chat/Chat.d.ts +7 -3
- package/dist/chat/Chat.d.ts.map +1 -1
- package/dist/chat/Chat.js +15 -3
- package/dist/chat/ChatResponse.d.ts +24 -3
- package/dist/chat/ChatResponse.d.ts.map +1 -1
- package/dist/chat/ChatResponse.js +72 -5
- package/dist/chat/ChatStream.d.ts.map +1 -1
- package/dist/chat/ChatStream.js +13 -1
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +9 -7
- package/dist/constants.d.ts +6 -0
- package/dist/constants.d.ts.map +1 -1
- package/dist/constants.js +6 -0
- package/dist/errors/index.d.ts +20 -2
- package/dist/errors/index.d.ts.map +1 -1
- package/dist/errors/index.js +31 -3
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/models/ModelRegistry.d.ts.map +1 -1
- package/dist/models/ModelRegistry.js +4 -2
- package/dist/models/PricingRegistry.js +3 -3
- package/dist/models/{models.js → models.json} +8331 -7603
- package/dist/providers/anthropic/AnthropicProvider.d.ts.map +1 -1
- package/dist/providers/anthropic/AnthropicProvider.js +2 -1
- package/dist/providers/anthropic/Chat.d.ts.map +1 -1
- package/dist/providers/anthropic/Chat.js +2 -1
- package/dist/providers/anthropic/Errors.d.ts.map +1 -1
- package/dist/providers/anthropic/Errors.js +15 -1
- package/dist/providers/anthropic/Streaming.d.ts.map +1 -1
- package/dist/providers/anthropic/Streaming.js +19 -3
- package/dist/providers/bedrock/Chat.d.ts.map +1 -1
- package/dist/providers/bedrock/Chat.js +2 -20
- package/dist/providers/bedrock/Errors.d.ts +2 -0
- package/dist/providers/bedrock/Errors.d.ts.map +1 -0
- package/dist/providers/bedrock/Errors.js +51 -0
- package/dist/providers/bedrock/Streaming.d.ts.map +1 -1
- package/dist/providers/bedrock/Streaming.js +2 -3
- package/dist/providers/deepseek/Chat.d.ts.map +1 -1
- package/dist/providers/deepseek/Chat.js +2 -2
- package/dist/providers/deepseek/DeepSeekProvider.d.ts.map +1 -1
- package/dist/providers/deepseek/DeepSeekProvider.js +2 -1
- package/dist/providers/deepseek/Errors.d.ts +2 -0
- package/dist/providers/deepseek/Errors.d.ts.map +1 -0
- package/dist/providers/deepseek/Errors.js +45 -0
- package/dist/providers/deepseek/Streaming.d.ts.map +1 -1
- package/dist/providers/deepseek/Streaming.js +13 -2
- package/dist/providers/gemini/Errors.d.ts.map +1 -1
- package/dist/providers/gemini/Errors.js +13 -1
- package/dist/providers/gemini/GeminiProvider.d.ts.map +1 -1
- package/dist/providers/gemini/GeminiProvider.js +2 -1
- package/dist/providers/ollama/OllamaProvider.d.ts.map +1 -1
- package/dist/providers/ollama/OllamaProvider.js +2 -2
- package/dist/providers/openai/Errors.d.ts.map +1 -1
- package/dist/providers/openai/Errors.js +31 -5
- package/dist/providers/openai/OpenAIProvider.d.ts.map +1 -1
- package/dist/providers/openai/OpenAIProvider.js +2 -1
- package/dist/providers/openai/Streaming.d.ts.map +1 -1
- package/dist/providers/openai/Streaming.js +10 -0
- package/dist/providers/openrouter/OpenRouterProvider.d.ts.map +1 -1
- package/dist/providers/openrouter/OpenRouterProvider.js +2 -1
- package/dist/providers/registry.d.ts +3 -0
- package/dist/providers/registry.d.ts.map +1 -1
- package/dist/providers/registry.js +10 -2
- package/dist/utils/json.d.ts +6 -0
- package/dist/utils/json.d.ts.map +1 -0
- package/dist/utils/json.js +43 -0
- package/package.json +1 -1
- package/dist/models/models.d.ts +0 -572
- package/dist/models/models.d.ts.map +0 -1
package/dist/aliases.d.ts
CHANGED
|
@@ -532,6 +532,9 @@ declare const _default: {
|
|
|
532
532
|
readonly openrouter: "moonshotai/kimi-k2-thinking";
|
|
533
533
|
readonly bedrock: "moonshot.kimi-k2-thinking";
|
|
534
534
|
};
|
|
535
|
+
readonly "kimi-k2.5": {
|
|
536
|
+
readonly openrouter: "moonshotai/kimi-k2.5";
|
|
537
|
+
};
|
|
535
538
|
readonly "llama-3-1-70b": {
|
|
536
539
|
readonly bedrock: "meta.llama3-1-70b-instruct-v1:0";
|
|
537
540
|
readonly openrouter: "meta-llama/llama-3.1-70b-instruct";
|
package/dist/aliases.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"aliases.d.ts","sourceRoot":"","sources":["../src/aliases.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"aliases.d.ts","sourceRoot":"","sources":["../src/aliases.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,wBA60BW"}
|
package/dist/aliases.js
CHANGED
|
@@ -532,6 +532,9 @@ export default {
|
|
|
532
532
|
"openrouter": "moonshotai/kimi-k2-thinking",
|
|
533
533
|
"bedrock": "moonshot.kimi-k2-thinking"
|
|
534
534
|
},
|
|
535
|
+
"kimi-k2.5": {
|
|
536
|
+
"openrouter": "moonshotai/kimi-k2.5"
|
|
537
|
+
},
|
|
535
538
|
"llama-3-1-70b": {
|
|
536
539
|
"bedrock": "meta.llama3-1-70b-instruct-v1:0",
|
|
537
540
|
"openrouter": "meta-llama/llama-3.1-70b-instruct"
|
package/dist/chat/Chat.d.ts
CHANGED
|
@@ -19,7 +19,7 @@ export interface AskOptions {
|
|
|
19
19
|
signal?: AbortSignal;
|
|
20
20
|
}
|
|
21
21
|
import { ChatResponseString } from "./ChatResponse.js";
|
|
22
|
-
export declare class Chat {
|
|
22
|
+
export declare class Chat<S = unknown> {
|
|
23
23
|
private readonly provider;
|
|
24
24
|
private model;
|
|
25
25
|
private readonly options;
|
|
@@ -79,7 +79,11 @@ export declare class Chat {
|
|
|
79
79
|
* Add a message manually to the chat history.
|
|
80
80
|
* Useful for rehydrating sessions from a database.
|
|
81
81
|
*/
|
|
82
|
-
add(role: "user" | "assistant" | "system" | "developer", content: string | MessageContent): this;
|
|
82
|
+
add(role: "user" | "assistant" | "system" | "developer" | "tool", content: string | MessageContent): this;
|
|
83
|
+
/**
|
|
84
|
+
* Add a raw Message object to the chat history.
|
|
85
|
+
*/
|
|
86
|
+
addMessage(message: Message): this;
|
|
83
87
|
/**
|
|
84
88
|
* Set the temperature for the chat session.
|
|
85
89
|
* Controls randomness: 0.0 (deterministic) to 1.0 (creative).
|
|
@@ -106,7 +110,7 @@ export declare class Chat {
|
|
|
106
110
|
* Enforce a specific schema for the output.
|
|
107
111
|
* Can accept a Schema object or a Zod schema/JSON Schema directly.
|
|
108
112
|
*/
|
|
109
|
-
withSchema(schema: Schema | z.ZodType<
|
|
113
|
+
withSchema<T>(schema: Schema | z.ZodType<T> | Record<string, unknown> | null): Chat<T>;
|
|
110
114
|
/**
|
|
111
115
|
* Enable and configure extended thinking for reasoning models.
|
|
112
116
|
*/
|
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,EACf,MAAM,0BAA0B,CAAC;AAGlC,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAEhD,OAAO,EAAkB,cAAc,EAAE,MAAM,WAAW,CAAC;AAC3D,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAE7C,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAMpD,MAAM,WAAW,UAAU;IACzB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,EAAE,cAAc,CAAC;IAC1B,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB;AAED,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAEvD,qBAAa,IAAI;
|
|
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
|
@@ -150,6 +150,18 @@ export class Chat {
|
|
|
150
150
|
}
|
|
151
151
|
return this;
|
|
152
152
|
}
|
|
153
|
+
/**
|
|
154
|
+
* Add a raw Message object to the chat history.
|
|
155
|
+
*/
|
|
156
|
+
addMessage(message) {
|
|
157
|
+
if (message.role === "system" || message.role === "developer") {
|
|
158
|
+
this.systemMessages.push(message);
|
|
159
|
+
}
|
|
160
|
+
else {
|
|
161
|
+
this.messages.push(message);
|
|
162
|
+
}
|
|
163
|
+
return this;
|
|
164
|
+
}
|
|
153
165
|
/**
|
|
154
166
|
* Set the temperature for the chat session.
|
|
155
167
|
* Controls randomness: 0.0 (deterministic) to 1.0 (creative).
|
|
@@ -374,7 +386,7 @@ export class Chat {
|
|
|
374
386
|
this.options.onNewMessage();
|
|
375
387
|
let response = await this.executor.executeChat(executeOptions);
|
|
376
388
|
trackUsage(response.usage);
|
|
377
|
-
let 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);
|
|
389
|
+
let 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);
|
|
378
390
|
// --- Content Policy Hooks (Output - Turn 1) ---
|
|
379
391
|
if (this.options.onAfterResponse) {
|
|
380
392
|
const result = await this.options.onAfterResponse(assistantMessage);
|
|
@@ -458,7 +470,7 @@ export class Chat {
|
|
|
458
470
|
...this.options.params
|
|
459
471
|
});
|
|
460
472
|
trackUsage(response.usage);
|
|
461
|
-
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);
|
|
473
|
+
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);
|
|
462
474
|
// --- Content Policy Hooks (Output - Tool Turns) ---
|
|
463
475
|
if (this.options.onAfterResponse) {
|
|
464
476
|
const result = await this.options.onAfterResponse(assistantMessage);
|
|
@@ -478,7 +490,7 @@ export class Chat {
|
|
|
478
490
|
}
|
|
479
491
|
// For the final return, we might want to aggregate reasoning too if it happened in multiple turns?
|
|
480
492
|
// Usually reasoning only happens once or we just want the last one.
|
|
481
|
-
return new ChatResponseString(assistantMessage.toString() || "", totalUsage, this.model, this.provider.id, assistantMessage.thinking, assistantMessage.reasoning, response.tool_calls, assistantMessage.finish_reason);
|
|
493
|
+
return new ChatResponseString(assistantMessage.toString() || "", totalUsage, this.model, this.provider.id, assistantMessage.thinking, assistantMessage.reasoning, response.tool_calls, assistantMessage.finish_reason, this.options.schema);
|
|
482
494
|
}
|
|
483
495
|
/**
|
|
484
496
|
* Streams the model's response to a user question.
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { Usage, ThinkingResult } from "../providers/Provider.js";
|
|
2
2
|
import { ToolCall } from "./Tool.js";
|
|
3
|
+
import { Schema } from "../schema/Schema.js";
|
|
3
4
|
/**
|
|
4
5
|
* Enhanced string that includes token usage metadata.
|
|
5
6
|
* Behaves like a regular string but has .usage and .input_tokens etc.
|
|
@@ -12,7 +13,10 @@ export declare class ChatResponseString extends String {
|
|
|
12
13
|
readonly reasoning?: string | null | undefined;
|
|
13
14
|
readonly tool_calls?: ToolCall[] | undefined;
|
|
14
15
|
readonly finish_reason?: string | null | undefined;
|
|
15
|
-
|
|
16
|
+
readonly schema?: Schema | undefined;
|
|
17
|
+
private _cachedData;
|
|
18
|
+
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);
|
|
16
20
|
get finishReason(): string | null | undefined;
|
|
17
21
|
get input_tokens(): number;
|
|
18
22
|
get output_tokens(): number;
|
|
@@ -58,9 +62,26 @@ export declare class ChatResponseString extends String {
|
|
|
58
62
|
*/
|
|
59
63
|
withContent(newContent: string): ChatResponseString;
|
|
60
64
|
/**
|
|
61
|
-
* Attempt to parse the content as JSON.
|
|
62
|
-
* Returns the parsed object or null if parsing fails.
|
|
65
|
+
* Attempt to extract and parse the content as JSON.
|
|
63
66
|
*/
|
|
64
67
|
get parsed(): unknown;
|
|
68
|
+
/**
|
|
69
|
+
* Access the parsed data.
|
|
70
|
+
* If a Zod schema was provided via .withSchema(), this will validate the data.
|
|
71
|
+
* Throws ZodError if validation fails.
|
|
72
|
+
*/
|
|
73
|
+
get data(): unknown;
|
|
74
|
+
/**
|
|
75
|
+
* Safe version of .data that returns null instead of throwing on validation error.
|
|
76
|
+
*/
|
|
77
|
+
get safeData(): unknown;
|
|
78
|
+
/**
|
|
79
|
+
* Returns true if the content contains valid JSON that matches the schema (if provided).
|
|
80
|
+
*/
|
|
81
|
+
get isValid(): boolean;
|
|
82
|
+
/**
|
|
83
|
+
* Returns the validation error if the content doesn't match the schema.
|
|
84
|
+
*/
|
|
85
|
+
get validationError(): Error | null;
|
|
65
86
|
}
|
|
66
87
|
//# 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,cAAc,EAAE,MAAM,0BAA0B,CAAC;AACjE,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;
|
|
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;AACjE,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;IAZjC,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;IAKjC,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;;;;;;;;MAUP;IAED;;OAEG;IACH,IAAI,GAAG;;;;;;;;MAEN;IAED,QAAQ;IAIR;;OAEG;IACH,WAAW,CAAC,UAAU,EAAE,MAAM,GAAG,kBAAkB;IAcnD;;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"}
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import { extractJson } from "../utils/json.js";
|
|
2
|
+
import { z } from "zod";
|
|
1
3
|
/**
|
|
2
4
|
* Enhanced string that includes token usage metadata.
|
|
3
5
|
* Behaves like a regular string but has .usage and .input_tokens etc.
|
|
@@ -10,7 +12,10 @@ export class ChatResponseString extends String {
|
|
|
10
12
|
reasoning;
|
|
11
13
|
tool_calls;
|
|
12
14
|
finish_reason;
|
|
13
|
-
|
|
15
|
+
schema;
|
|
16
|
+
_cachedData = undefined;
|
|
17
|
+
_validationError = null;
|
|
18
|
+
constructor(content, usage, model, provider, thinking, reasoning, tool_calls, finish_reason, schema) {
|
|
14
19
|
super(content);
|
|
15
20
|
this.usage = usage;
|
|
16
21
|
this.model = model;
|
|
@@ -19,6 +24,7 @@ export class ChatResponseString extends String {
|
|
|
19
24
|
this.reasoning = reasoning;
|
|
20
25
|
this.tool_calls = tool_calls;
|
|
21
26
|
this.finish_reason = finish_reason;
|
|
27
|
+
this.schema = schema;
|
|
22
28
|
}
|
|
23
29
|
get finishReason() {
|
|
24
30
|
return this.finish_reason;
|
|
@@ -91,18 +97,79 @@ export class ChatResponseString extends String {
|
|
|
91
97
|
* Return a new ChatResponseString with modified content but preserved metadata.
|
|
92
98
|
*/
|
|
93
99
|
withContent(newContent) {
|
|
94
|
-
return new ChatResponseString(newContent, this.usage, this.model, this.provider, this.thinking, this.reasoning, this.tool_calls, this.finish_reason);
|
|
100
|
+
return new ChatResponseString(newContent, this.usage, this.model, this.provider, this.thinking, this.reasoning, this.tool_calls, this.finish_reason, this.schema);
|
|
95
101
|
}
|
|
96
102
|
/**
|
|
97
|
-
* Attempt to parse the content as JSON.
|
|
98
|
-
* Returns the parsed object or null if parsing fails.
|
|
103
|
+
* Attempt to extract and parse the content as JSON.
|
|
99
104
|
*/
|
|
100
105
|
get parsed() {
|
|
101
106
|
try {
|
|
102
|
-
|
|
107
|
+
const cleanJson = extractJson(this.valueOf());
|
|
108
|
+
return JSON.parse(cleanJson);
|
|
103
109
|
}
|
|
104
110
|
catch {
|
|
105
111
|
return null;
|
|
106
112
|
}
|
|
107
113
|
}
|
|
114
|
+
/**
|
|
115
|
+
* Access the parsed data.
|
|
116
|
+
* If a Zod schema was provided via .withSchema(), this will validate the data.
|
|
117
|
+
* Throws ZodError if validation fails.
|
|
118
|
+
*/
|
|
119
|
+
get data() {
|
|
120
|
+
if (this._cachedData !== undefined)
|
|
121
|
+
return this._cachedData;
|
|
122
|
+
if (this._validationError)
|
|
123
|
+
throw this._validationError;
|
|
124
|
+
const json = this.parsed;
|
|
125
|
+
if (this.schema && this.schema.definition.schema instanceof z.ZodType) {
|
|
126
|
+
try {
|
|
127
|
+
this._cachedData = this.schema.definition.schema.parse(json);
|
|
128
|
+
return this._cachedData;
|
|
129
|
+
}
|
|
130
|
+
catch (e) {
|
|
131
|
+
this._validationError = e;
|
|
132
|
+
throw e;
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
this._cachedData = json;
|
|
136
|
+
return json;
|
|
137
|
+
}
|
|
138
|
+
/**
|
|
139
|
+
* Safe version of .data that returns null instead of throwing on validation error.
|
|
140
|
+
*/
|
|
141
|
+
get safeData() {
|
|
142
|
+
try {
|
|
143
|
+
return this.data;
|
|
144
|
+
}
|
|
145
|
+
catch {
|
|
146
|
+
return null;
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
/**
|
|
150
|
+
* Returns true if the content contains valid JSON that matches the schema (if provided).
|
|
151
|
+
*/
|
|
152
|
+
get isValid() {
|
|
153
|
+
if (!this.schema)
|
|
154
|
+
return this.parsed !== null;
|
|
155
|
+
try {
|
|
156
|
+
void this.data;
|
|
157
|
+
return true;
|
|
158
|
+
}
|
|
159
|
+
catch {
|
|
160
|
+
return false;
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
/**
|
|
164
|
+
* Returns the validation error if the content doesn't match the schema.
|
|
165
|
+
*/
|
|
166
|
+
get validationError() {
|
|
167
|
+
try {
|
|
168
|
+
void this.data;
|
|
169
|
+
return null;
|
|
170
|
+
}
|
|
171
|
+
catch (e) {
|
|
172
|
+
return e;
|
|
173
|
+
}
|
|
174
|
+
}
|
|
108
175
|
}
|
|
@@ -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;
|
|
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;AAUvC;;;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;CA0RrF"}
|
package/dist/chat/ChatStream.js
CHANGED
|
@@ -8,6 +8,7 @@ import { toJsonSchema } from "../schema/to-json-schema.js";
|
|
|
8
8
|
import { ChatValidator } from "./Validation.js";
|
|
9
9
|
import { ToolHandler } from "./ToolHandler.js";
|
|
10
10
|
import { logger } from "../utils/logger.js";
|
|
11
|
+
import { ModelRegistry } from "../models/ModelRegistry.js";
|
|
11
12
|
/**
|
|
12
13
|
* Internal handler for chat streaming logic.
|
|
13
14
|
* Wraps the provider's stream with side effects like history updates and events.
|
|
@@ -97,12 +98,22 @@ export class ChatStream {
|
|
|
97
98
|
const totalUsage = { input_tokens: 0, output_tokens: 0, total_tokens: 0 };
|
|
98
99
|
const trackUsage = (u) => {
|
|
99
100
|
if (u) {
|
|
101
|
+
// Fallback cost calculation if provider didn't return it
|
|
102
|
+
if (u.cost === undefined) {
|
|
103
|
+
const withCost = ModelRegistry.calculateCost(u, model, provider.id);
|
|
104
|
+
u.cost = withCost.cost;
|
|
105
|
+
u.input_cost = withCost.input_cost;
|
|
106
|
+
u.output_cost = withCost.output_cost;
|
|
107
|
+
}
|
|
100
108
|
totalUsage.input_tokens += u.input_tokens;
|
|
101
109
|
totalUsage.output_tokens += u.output_tokens;
|
|
102
110
|
totalUsage.total_tokens += u.total_tokens;
|
|
103
111
|
if (u.cached_tokens) {
|
|
104
112
|
totalUsage.cached_tokens = (totalUsage.cached_tokens ?? 0) + u.cached_tokens;
|
|
105
113
|
}
|
|
114
|
+
if (u.cost !== undefined) {
|
|
115
|
+
totalUsage.cost = (totalUsage.cost ?? 0) + u.cost;
|
|
116
|
+
}
|
|
106
117
|
}
|
|
107
118
|
};
|
|
108
119
|
while (true) {
|
|
@@ -169,7 +180,8 @@ export class ChatStream {
|
|
|
169
180
|
trackUsage(currentTurnUsage);
|
|
170
181
|
}
|
|
171
182
|
}
|
|
172
|
-
let assistantResponse = new ChatResponseString(fullContent || "", currentTurnUsage || { input_tokens: 0, output_tokens: 0, total_tokens: 0 }, model, provider.id, thinking.text || thinking.signature ? thinking : undefined, fullReasoning || undefined
|
|
183
|
+
let assistantResponse = new ChatResponseString(fullContent || "", currentTurnUsage || { input_tokens: 0, output_tokens: 0, total_tokens: 0 }, model, provider.id, thinking.text || thinking.signature ? thinking : undefined, fullReasoning || undefined, toolCalls, undefined, // finish_reason
|
|
184
|
+
options.schema);
|
|
173
185
|
if (options.onAfterResponse) {
|
|
174
186
|
const result = await options.onAfterResponse(assistantResponse);
|
|
175
187
|
if (result) {
|
package/dist/config.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,WAAW,aAAa;IAC5B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAE3B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,0BAA0B,CAAC,EAAE,MAAM,CAAC;IACpC,uBAAuB,CAAC,EAAE,MAAM,CAAC;IAEjC,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE,iBAAiB,CAAC;IAClC,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,OAAO,
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
|
package/dist/config.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { DEFAULT_MAX_TOOL_CALLS, DEFAULT_MAX_RETRIES, DEFAULT_REQUEST_TIMEOUT, DEFAULT_MAX_TOKENS, DEFAULT_TOOL_EXECUTION, DEFAULT_OLLAMA_BASE_URL } from "./constants.js";
|
|
1
|
+
import { DEFAULT_MAX_TOOL_CALLS, DEFAULT_MAX_RETRIES, DEFAULT_REQUEST_TIMEOUT, DEFAULT_MAX_TOKENS, DEFAULT_TOOL_EXECUTION, DEFAULT_OPENAI_BASE_URL, DEFAULT_ANTHROPIC_BASE_URL, DEFAULT_GEMINI_BASE_URL, DEFAULT_DEEPSEEK_BASE_URL, DEFAULT_OPENROUTER_BASE_URL, DEFAULT_OLLAMA_BASE_URL, DEFAULT_BEDROCK_REGION } from "./constants.js";
|
|
2
2
|
export class Configuration {
|
|
3
3
|
_openaiApiKey;
|
|
4
4
|
_openaiApiBase;
|
|
@@ -27,7 +27,7 @@ export class Configuration {
|
|
|
27
27
|
this._openaiApiKey = v;
|
|
28
28
|
}
|
|
29
29
|
get openaiApiBase() {
|
|
30
|
-
return this._openaiApiBase ?? process.env.OPENAI_API_BASE?.trim();
|
|
30
|
+
return this._openaiApiBase ?? process.env.OPENAI_API_BASE?.trim() ?? DEFAULT_OPENAI_BASE_URL;
|
|
31
31
|
}
|
|
32
32
|
set openaiApiBase(v) {
|
|
33
33
|
this._openaiApiBase = v;
|
|
@@ -39,7 +39,7 @@ export class Configuration {
|
|
|
39
39
|
this._anthropicApiKey = v;
|
|
40
40
|
}
|
|
41
41
|
get anthropicApiBase() {
|
|
42
|
-
return this._anthropicApiBase ?? process.env.ANTHROPIC_API_BASE?.trim();
|
|
42
|
+
return (this._anthropicApiBase ?? process.env.ANTHROPIC_API_BASE?.trim() ?? DEFAULT_ANTHROPIC_BASE_URL);
|
|
43
43
|
}
|
|
44
44
|
set anthropicApiBase(v) {
|
|
45
45
|
this._anthropicApiBase = v;
|
|
@@ -51,7 +51,7 @@ export class Configuration {
|
|
|
51
51
|
this._geminiApiKey = v;
|
|
52
52
|
}
|
|
53
53
|
get geminiApiBase() {
|
|
54
|
-
return this._geminiApiBase ?? process.env.GEMINI_API_BASE?.trim();
|
|
54
|
+
return this._geminiApiBase ?? process.env.GEMINI_API_BASE?.trim() ?? DEFAULT_GEMINI_BASE_URL;
|
|
55
55
|
}
|
|
56
56
|
set geminiApiBase(v) {
|
|
57
57
|
this._geminiApiBase = v;
|
|
@@ -63,7 +63,7 @@ export class Configuration {
|
|
|
63
63
|
this._deepseekApiKey = v;
|
|
64
64
|
}
|
|
65
65
|
get deepseekApiBase() {
|
|
66
|
-
return this._deepseekApiBase ?? process.env.DEEPSEEK_API_BASE?.trim();
|
|
66
|
+
return (this._deepseekApiBase ?? process.env.DEEPSEEK_API_BASE?.trim() ?? DEFAULT_DEEPSEEK_BASE_URL);
|
|
67
67
|
}
|
|
68
68
|
set deepseekApiBase(v) {
|
|
69
69
|
this._deepseekApiBase = v;
|
|
@@ -81,7 +81,9 @@ export class Configuration {
|
|
|
81
81
|
this._openrouterApiKey = v;
|
|
82
82
|
}
|
|
83
83
|
get openrouterApiBase() {
|
|
84
|
-
return this._openrouterApiBase ??
|
|
84
|
+
return (this._openrouterApiBase ??
|
|
85
|
+
process.env.OPENROUTER_API_BASE?.trim() ??
|
|
86
|
+
DEFAULT_OPENROUTER_BASE_URL);
|
|
85
87
|
}
|
|
86
88
|
set openrouterApiBase(v) {
|
|
87
89
|
this._openrouterApiBase = v;
|
|
@@ -112,7 +114,7 @@ export class Configuration {
|
|
|
112
114
|
this._bedrockSessionToken = v;
|
|
113
115
|
}
|
|
114
116
|
get bedrockRegion() {
|
|
115
|
-
return this._bedrockRegion ?? process.env.AWS_REGION?.trim() ??
|
|
117
|
+
return this._bedrockRegion ?? process.env.AWS_REGION?.trim() ?? DEFAULT_BEDROCK_REGION;
|
|
116
118
|
}
|
|
117
119
|
set bedrockRegion(v) {
|
|
118
120
|
this._bedrockRegion = v;
|
package/dist/constants.d.ts
CHANGED
|
@@ -8,6 +8,11 @@ export declare const DEFAULT_MAX_RETRIES = 2;
|
|
|
8
8
|
export declare const DEFAULT_TOOL_EXECUTION = ToolExecutionMode.AUTO;
|
|
9
9
|
export declare const DEFAULT_REQUEST_TIMEOUT = 30000;
|
|
10
10
|
export declare const DEFAULT_MAX_TOKENS = 4096;
|
|
11
|
+
export declare const DEFAULT_OPENAI_BASE_URL = "https://api.openai.com/v1";
|
|
12
|
+
export declare const DEFAULT_ANTHROPIC_BASE_URL = "https://api.anthropic.com/v1";
|
|
13
|
+
export declare const DEFAULT_GEMINI_BASE_URL = "https://generativelanguage.googleapis.com/v1beta";
|
|
14
|
+
export declare const DEFAULT_DEEPSEEK_BASE_URL = "https://api.deepseek.com";
|
|
15
|
+
export declare const DEFAULT_OPENROUTER_BASE_URL = "https://openrouter.ai/api/v1";
|
|
11
16
|
export declare const DEFAULT_OLLAMA_BASE_URL = "http://localhost:11434/v1";
|
|
12
17
|
export declare const DEFAULT_MODELS: {
|
|
13
18
|
readonly TRANSCRIPTION: "whisper-1";
|
|
@@ -15,4 +20,5 @@ export declare const DEFAULT_MODELS: {
|
|
|
15
20
|
readonly EMBEDDING: "text-embedding-3-small";
|
|
16
21
|
readonly IMAGE: "dall-e-3";
|
|
17
22
|
};
|
|
23
|
+
export declare const DEFAULT_BEDROCK_REGION = "us-east-1";
|
|
18
24
|
//# sourceMappingURL=constants.d.ts.map
|
package/dist/constants.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA,oBAAY,iBAAiB;IAC3B,IAAI,SAAS;IACb,OAAO,YAAY;IACnB,OAAO,YAAY;CACpB;AAED,eAAO,MAAM,sBAAsB,IAAI,CAAC;AACxC,eAAO,MAAM,mBAAmB,IAAI,CAAC;AACrC,eAAO,MAAM,sBAAsB,yBAAyB,CAAC;AAC7D,eAAO,MAAM,uBAAuB,QAAQ,CAAC;AAC7C,eAAO,MAAM,kBAAkB,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA,oBAAY,iBAAiB;IAC3B,IAAI,SAAS;IACb,OAAO,YAAY;IACnB,OAAO,YAAY;CACpB;AAED,eAAO,MAAM,sBAAsB,IAAI,CAAC;AACxC,eAAO,MAAM,mBAAmB,IAAI,CAAC;AACrC,eAAO,MAAM,sBAAsB,yBAAyB,CAAC;AAC7D,eAAO,MAAM,uBAAuB,QAAQ,CAAC;AAC7C,eAAO,MAAM,kBAAkB,OAAO,CAAC;AAEvC,eAAO,MAAM,uBAAuB,8BAA8B,CAAC;AACnE,eAAO,MAAM,0BAA0B,iCAAiC,CAAC;AACzE,eAAO,MAAM,uBAAuB,qDAAqD,CAAC;AAC1F,eAAO,MAAM,yBAAyB,6BAA6B,CAAC;AACpE,eAAO,MAAM,2BAA2B,iCAAiC,CAAC;AAC1E,eAAO,MAAM,uBAAuB,8BAA8B,CAAC;AAEnE,eAAO,MAAM,cAAc;;;;;CAKjB,CAAC;AAEX,eAAO,MAAM,sBAAsB,cAAc,CAAC"}
|
package/dist/constants.js
CHANGED
|
@@ -9,6 +9,11 @@ export const DEFAULT_MAX_RETRIES = 2;
|
|
|
9
9
|
export const DEFAULT_TOOL_EXECUTION = ToolExecutionMode.AUTO;
|
|
10
10
|
export const DEFAULT_REQUEST_TIMEOUT = 30000; // 30 seconds
|
|
11
11
|
export const DEFAULT_MAX_TOKENS = 4096; // 4K tokens output limit
|
|
12
|
+
export const DEFAULT_OPENAI_BASE_URL = "https://api.openai.com/v1";
|
|
13
|
+
export const DEFAULT_ANTHROPIC_BASE_URL = "https://api.anthropic.com/v1";
|
|
14
|
+
export const DEFAULT_GEMINI_BASE_URL = "https://generativelanguage.googleapis.com/v1beta";
|
|
15
|
+
export const DEFAULT_DEEPSEEK_BASE_URL = "https://api.deepseek.com";
|
|
16
|
+
export const DEFAULT_OPENROUTER_BASE_URL = "https://openrouter.ai/api/v1";
|
|
12
17
|
export const DEFAULT_OLLAMA_BASE_URL = "http://localhost:11434/v1";
|
|
13
18
|
export const DEFAULT_MODELS = {
|
|
14
19
|
TRANSCRIPTION: "whisper-1",
|
|
@@ -16,3 +21,4 @@ export const DEFAULT_MODELS = {
|
|
|
16
21
|
EMBEDDING: "text-embedding-3-small",
|
|
17
22
|
IMAGE: "dall-e-3"
|
|
18
23
|
};
|
|
24
|
+
export const DEFAULT_BEDROCK_REGION = "us-east-1";
|
package/dist/errors/index.d.ts
CHANGED
|
@@ -35,6 +35,12 @@ export declare class APIError extends LLMError {
|
|
|
35
35
|
export declare class BadRequestError extends APIError {
|
|
36
36
|
constructor(message: string, body: unknown, provider?: string, model?: string);
|
|
37
37
|
}
|
|
38
|
+
/**
|
|
39
|
+
* 400 - Specifically for context window/token limit issues
|
|
40
|
+
*/
|
|
41
|
+
export declare class ContextWindowExceededError extends BadRequestError {
|
|
42
|
+
constructor(message: string, body: unknown, provider?: string, model?: string);
|
|
43
|
+
}
|
|
38
44
|
/**
|
|
39
45
|
* 401 - Invalid or missing API key
|
|
40
46
|
*/
|
|
@@ -66,6 +72,12 @@ export declare class AuthenticationError extends APIError {
|
|
|
66
72
|
export declare class RateLimitError extends APIError {
|
|
67
73
|
constructor(message: string, body: unknown, provider?: string, model?: string);
|
|
68
74
|
}
|
|
75
|
+
/**
|
|
76
|
+
* 429 - Out of credits or monthly quota exceeded
|
|
77
|
+
*/
|
|
78
|
+
export declare class InsufficientQuotaError extends RateLimitError {
|
|
79
|
+
constructor(message: string, body: unknown, provider?: string, model?: string);
|
|
80
|
+
}
|
|
69
81
|
/**
|
|
70
82
|
* 500+ - Provider server error
|
|
71
83
|
*/
|
|
@@ -87,8 +99,14 @@ export declare class ConfigurationError extends LLMError {
|
|
|
87
99
|
/**
|
|
88
100
|
* Requested model or provider not found
|
|
89
101
|
*/
|
|
90
|
-
export declare class NotFoundError extends
|
|
91
|
-
constructor(message: string);
|
|
102
|
+
export declare class NotFoundError extends APIError {
|
|
103
|
+
constructor(message: string, status?: number, body?: unknown, provider?: string, model?: string);
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* Specifically when the requested model ID is invalid/unknown
|
|
107
|
+
*/
|
|
108
|
+
export declare class InvalidModelError extends NotFoundError {
|
|
109
|
+
constructor(message: string, body: unknown, provider?: string, model?: string);
|
|
92
110
|
}
|
|
93
111
|
/**
|
|
94
112
|
* Model does not support requested capability
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/errors/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH;;GAEG;AACH,qBAAa,QAAS,SAAQ,KAAK;aAGf,IAAI,CAAC,EAAE,MAAM;gBAD7B,OAAO,EAAE,MAAM,EACC,IAAI,CAAC,EAAE,MAAM,YAAA;CAMhC;AAED;;GAEG;AACH,qBAAa,QAAS,SAAQ,QAAQ;aAGlB,MAAM,EAAE,MAAM;aACd,IAAI,EAAE,OAAO;aACb,QAAQ,CAAC,EAAE,MAAM;aACjB,KAAK,CAAC,EAAE,MAAM;gBAJ9B,OAAO,EAAE,MAAM,EACC,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,OAAO,EACb,QAAQ,CAAC,EAAE,MAAM,YAAA,EACjB,KAAK,CAAC,EAAE,MAAM,YAAA;CAIjC;AAED;;GAEG;AACH,qBAAa,eAAgB,SAAQ,QAAQ;gBAC/B,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM;CAI9E;AAED;;GAEG;AACH,qBAAa,iBAAkB,SAAQ,QAAQ;gBACjC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,CAAC,EAAE,MAAM;CAI9D;AAED;;GAEG;AACH,qBAAa,oBAAqB,SAAQ,QAAQ;gBACpC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,CAAC,EAAE,MAAM;CAI9D;AAED;;GAEG;AACH,qBAAa,cAAe,SAAQ,QAAQ;gBAC9B,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,CAAC,EAAE,MAAM;CAI9D;AAED;;;GAGG;AACH,qBAAa,mBAAoB,SAAQ,QAAQ;gBACnC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,CAAC,EAAE,MAAM;CAI9E;AAED;;GAEG;AACH,qBAAa,cAAe,SAAQ,QAAQ;gBAC9B,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM;CAI9E;AAED;;GAEG;AACH,qBAAa,WAAY,SAAQ,QAAQ;gBAC3B,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM;CAI9F;AAED;;GAEG;AACH,qBAAa,uBAAwB,SAAQ,WAAW;gBAC1C,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM;CAI9F;AAED;;GAEG;AACH,qBAAa,kBAAmB,SAAQ,QAAQ;gBAClC,OAAO,EAAE,MAAM;CAG5B;AAED;;GAEG;AACH,qBAAa,aAAc,SAAQ,QAAQ;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/errors/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH;;GAEG;AACH,qBAAa,QAAS,SAAQ,KAAK;aAGf,IAAI,CAAC,EAAE,MAAM;gBAD7B,OAAO,EAAE,MAAM,EACC,IAAI,CAAC,EAAE,MAAM,YAAA;CAMhC;AAED;;GAEG;AACH,qBAAa,QAAS,SAAQ,QAAQ;aAGlB,MAAM,EAAE,MAAM;aACd,IAAI,EAAE,OAAO;aACb,QAAQ,CAAC,EAAE,MAAM;aACjB,KAAK,CAAC,EAAE,MAAM;gBAJ9B,OAAO,EAAE,MAAM,EACC,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,OAAO,EACb,QAAQ,CAAC,EAAE,MAAM,YAAA,EACjB,KAAK,CAAC,EAAE,MAAM,YAAA;CAIjC;AAED;;GAEG;AACH,qBAAa,eAAgB,SAAQ,QAAQ;gBAC/B,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM;CAI9E;AAED;;GAEG;AACH,qBAAa,0BAA2B,SAAQ,eAAe;gBACjD,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM;CAI9E;AAED;;GAEG;AACH,qBAAa,iBAAkB,SAAQ,QAAQ;gBACjC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,CAAC,EAAE,MAAM;CAI9D;AAED;;GAEG;AACH,qBAAa,oBAAqB,SAAQ,QAAQ;gBACpC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,CAAC,EAAE,MAAM;CAI9D;AAED;;GAEG;AACH,qBAAa,cAAe,SAAQ,QAAQ;gBAC9B,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,CAAC,EAAE,MAAM;CAI9D;AAED;;;GAGG;AACH,qBAAa,mBAAoB,SAAQ,QAAQ;gBACnC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,CAAC,EAAE,MAAM;CAI9E;AAED;;GAEG;AACH,qBAAa,cAAe,SAAQ,QAAQ;gBAC9B,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM;CAI9E;AAED;;GAEG;AACH,qBAAa,sBAAuB,SAAQ,cAAc;gBAC5C,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM;CAI9E;AAED;;GAEG;AACH,qBAAa,WAAY,SAAQ,QAAQ;gBAC3B,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM;CAI9F;AAED;;GAEG;AACH,qBAAa,uBAAwB,SAAQ,WAAW;gBAC1C,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM;CAI9F;AAED;;GAEG;AACH,qBAAa,kBAAmB,SAAQ,QAAQ;gBAClC,OAAO,EAAE,MAAM;CAG5B;AAED;;GAEG;AACH,qBAAa,aAAc,SAAQ,QAAQ;gBAEvC,OAAO,EAAE,MAAM,EACf,MAAM,GAAE,MAAY,EACpB,IAAI,GAAE,OAAc,EACpB,QAAQ,CAAC,EAAE,MAAM,EACjB,KAAK,CAAC,EAAE,MAAM;CAKjB;AAED;;GAEG;AACH,qBAAa,iBAAkB,SAAQ,aAAa;gBACtC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM;CAI9E;AAED;;GAEG;AACH,qBAAa,eAAgB,SAAQ,QAAQ;gBAC/B,OAAO,EAAE,MAAM;CAG5B;AAED;;GAEG;AACH,qBAAa,0BAA2B,SAAQ,QAAQ;;CAIvD;AAED;;GAEG;AACH,qBAAa,uBAAwB,SAAQ,QAAQ;aAEjC,QAAQ,EAAE,MAAM;aAChB,OAAO,EAAE,MAAM;gBADf,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM;CAIlC;AAED;;GAEG;AACH,qBAAa,oBAAqB,SAAQ,QAAQ;aAE9B,KAAK,EAAE,MAAM;aACb,UAAU,EAAE,MAAM;gBADlB,KAAK,EAAE,MAAM,EACb,UAAU,EAAE,MAAM;CAIrC;AACD;;GAEG;AACH,qBAAa,SAAU,SAAQ,QAAQ;aAGnB,QAAQ,CAAC,EAAE,MAAM;aACjB,KAAK,EAAE,OAAO;gBAF9B,OAAO,EAAE,MAAM,EACC,QAAQ,CAAC,EAAE,MAAM,YAAA,EACjB,KAAK,GAAE,OAAe;CAKzC"}
|
package/dist/errors/index.js
CHANGED
|
@@ -49,6 +49,15 @@ export class BadRequestError extends APIError {
|
|
|
49
49
|
this.name = "BadRequestError";
|
|
50
50
|
}
|
|
51
51
|
}
|
|
52
|
+
/**
|
|
53
|
+
* 400 - Specifically for context window/token limit issues
|
|
54
|
+
*/
|
|
55
|
+
export class ContextWindowExceededError extends BadRequestError {
|
|
56
|
+
constructor(message, body, provider, model) {
|
|
57
|
+
super(message, body, provider, model);
|
|
58
|
+
this.name = "ContextWindowExceededError";
|
|
59
|
+
}
|
|
60
|
+
}
|
|
52
61
|
/**
|
|
53
62
|
* 401 - Invalid or missing API key
|
|
54
63
|
*/
|
|
@@ -95,6 +104,15 @@ export class RateLimitError extends APIError {
|
|
|
95
104
|
this.name = "RateLimitError";
|
|
96
105
|
}
|
|
97
106
|
}
|
|
107
|
+
/**
|
|
108
|
+
* 429 - Out of credits or monthly quota exceeded
|
|
109
|
+
*/
|
|
110
|
+
export class InsufficientQuotaError extends RateLimitError {
|
|
111
|
+
constructor(message, body, provider, model) {
|
|
112
|
+
super(message, body, provider, model);
|
|
113
|
+
this.name = "InsufficientQuotaError";
|
|
114
|
+
}
|
|
115
|
+
}
|
|
98
116
|
/**
|
|
99
117
|
* 500+ - Provider server error
|
|
100
118
|
*/
|
|
@@ -124,9 +142,19 @@ export class ConfigurationError extends LLMError {
|
|
|
124
142
|
/**
|
|
125
143
|
* Requested model or provider not found
|
|
126
144
|
*/
|
|
127
|
-
export class NotFoundError extends
|
|
128
|
-
constructor(message) {
|
|
129
|
-
super(message,
|
|
145
|
+
export class NotFoundError extends APIError {
|
|
146
|
+
constructor(message, status = 404, body = null, provider, model) {
|
|
147
|
+
super(message, status, body, provider, model);
|
|
148
|
+
this.name = "NotFoundError";
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
/**
|
|
152
|
+
* Specifically when the requested model ID is invalid/unknown
|
|
153
|
+
*/
|
|
154
|
+
export class InvalidModelError extends NotFoundError {
|
|
155
|
+
constructor(message, body, provider, model) {
|
|
156
|
+
super(message, 404, body, provider, model);
|
|
157
|
+
this.name = "InvalidModelError";
|
|
130
158
|
}
|
|
131
159
|
}
|
|
132
160
|
/**
|
package/dist/index.d.ts
CHANGED
|
@@ -10,10 +10,10 @@ export { z } from "zod";
|
|
|
10
10
|
export { NodeLLM, LegacyNodeLLM, createLLM, NodeLLMCore, Transcription, Moderation, Embedding, ModelRegistry, PricingRegistry } from "./llm.js";
|
|
11
11
|
export { config } from "./config.js";
|
|
12
12
|
export type { NodeLLMConfig } from "./config.js";
|
|
13
|
-
export { providerRegistry } from "./providers/registry.js";
|
|
13
|
+
export { providerRegistry, ProviderInterceptor } from "./providers/registry.js";
|
|
14
14
|
export { Schema } from "./schema/Schema.js";
|
|
15
15
|
export { BaseProvider } from "./providers/BaseProvider.js";
|
|
16
|
-
export { ChatRequest, ChatResponse, ChatChunk, ThinkingConfig, ThinkingResult, Usage } from "./providers/Provider.js";
|
|
16
|
+
export { Provider, ProviderCapabilities, ChatRequest, ChatResponse, ChatChunk, ThinkingConfig, ThinkingResult, Usage, ImageRequest, ImageResponse, TranscriptionRequest, TranscriptionResponse, ModerationRequest, ModerationResponse, ModerationResult, EmbeddingRequest, EmbeddingResponse } from "./providers/Provider.js";
|
|
17
17
|
export { resolveModelAlias } from "./model_aliases.js";
|
|
18
18
|
export { default as MODEL_ALIASES } from "./aliases.js";
|
|
19
19
|
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;AAEtC,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,MAAM,yBAAyB,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;AAEtC,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 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ModelRegistry.d.ts","sourceRoot":"","sources":["../../src/models/ModelRegistry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"ModelRegistry.d.ts","sourceRoot":"","sources":["../../src/models/ModelRegistry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAKnC,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;IAQlE;;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;IAK/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;KAC3B,EACD,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM;sBAPA,MAAM;uBACL,MAAM;sBACP,MAAM;wBACJ,MAAM;2BACH,MAAM;;;;;sBAJX,MAAM;uBACL,MAAM;sBACP,MAAM;wBACJ,MAAM;2BACH,MAAM;;CAyC9B"}
|
|
@@ -1,9 +1,11 @@
|
|
|
1
|
-
|
|
1
|
+
// @ts-ignore - Node 20.9 requires 'assert', but TS 5.3+ enforces 'with'
|
|
2
|
+
import modelsData from "./models.json" assert { type: "json" };
|
|
2
3
|
import { PricingRegistry } from "./PricingRegistry.js";
|
|
3
4
|
export class ModelRegistry {
|
|
4
5
|
static models = modelsData;
|
|
5
6
|
static find(modelId, provider) {
|
|
6
|
-
return this.models.find((m) => m.id.toLowerCase() === modelId.toLowerCase() &&
|
|
7
|
+
return this.models.find((m) => m.id.toLowerCase() === modelId.toLowerCase() &&
|
|
8
|
+
(!provider || m.provider.toLowerCase() === provider.toLowerCase()));
|
|
7
9
|
}
|
|
8
10
|
/**
|
|
9
11
|
* Add or update models in the registry.
|