@node-llm/core 1.4.3 → 1.5.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/README.md +65 -2
- package/dist/chat/Chat.d.ts +51 -0
- package/dist/chat/Chat.d.ts.map +1 -1
- package/dist/chat/Chat.js +189 -55
- package/dist/chat/ChatOptions.d.ts +11 -2
- package/dist/chat/ChatOptions.d.ts.map +1 -1
- package/dist/chat/ChatResponse.d.ts +7 -1
- package/dist/chat/ChatResponse.d.ts.map +1 -1
- package/dist/chat/ChatResponse.js +9 -1
- package/dist/chat/ChatStream.d.ts +15 -1
- package/dist/chat/ChatStream.d.ts.map +1 -1
- package/dist/chat/ChatStream.js +122 -36
- package/dist/chat/Role.d.ts +1 -1
- package/dist/chat/Role.d.ts.map +1 -1
- package/dist/config.d.ts +11 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +7 -1
- package/dist/constants.d.ts +11 -0
- package/dist/constants.d.ts.map +1 -1
- package/dist/constants.js +12 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/llm.d.ts +4 -0
- package/dist/llm.d.ts.map +1 -1
- package/dist/llm.js +10 -0
- package/dist/providers/Provider.d.ts +6 -0
- package/dist/providers/Provider.d.ts.map +1 -1
- package/dist/providers/anthropic/AnthropicProvider.d.ts +1 -0
- package/dist/providers/anthropic/AnthropicProvider.d.ts.map +1 -1
- package/dist/providers/anthropic/AnthropicProvider.js +1 -0
- package/dist/providers/anthropic/Chat.d.ts.map +1 -1
- package/dist/providers/anthropic/Chat.js +4 -3
- package/dist/providers/anthropic/Streaming.d.ts.map +1 -1
- package/dist/providers/anthropic/Streaming.js +3 -2
- package/dist/providers/anthropic/Utils.js +2 -2
- package/dist/providers/deepseek/Chat.d.ts.map +1 -1
- package/dist/providers/deepseek/Chat.js +8 -5
- package/dist/providers/deepseek/DeepSeekProvider.d.ts +1 -0
- package/dist/providers/deepseek/DeepSeekProvider.d.ts.map +1 -1
- package/dist/providers/deepseek/DeepSeekProvider.js +1 -0
- package/dist/providers/deepseek/Streaming.d.ts.map +1 -1
- package/dist/providers/deepseek/Streaming.js +7 -4
- package/dist/providers/gemini/Chat.d.ts.map +1 -1
- package/dist/providers/gemini/Chat.js +4 -3
- package/dist/providers/gemini/ChatUtils.js +5 -5
- package/dist/providers/gemini/GeminiProvider.d.ts +1 -0
- package/dist/providers/gemini/GeminiProvider.d.ts.map +1 -1
- package/dist/providers/gemini/GeminiProvider.js +1 -0
- package/dist/providers/gemini/Streaming.d.ts.map +1 -1
- package/dist/providers/gemini/Streaming.js +3 -2
- package/dist/providers/ollama/OllamaProvider.d.ts.map +1 -1
- package/dist/providers/ollama/OllamaProvider.js +1 -0
- package/dist/providers/openai/Capabilities.d.ts +1 -0
- package/dist/providers/openai/Capabilities.d.ts.map +1 -1
- package/dist/providers/openai/Capabilities.js +3 -0
- package/dist/providers/openai/Chat.d.ts +4 -2
- package/dist/providers/openai/Chat.d.ts.map +1 -1
- package/dist/providers/openai/Chat.js +16 -7
- package/dist/providers/openai/Embedding.d.ts.map +1 -1
- package/dist/providers/openai/Embedding.js +3 -2
- package/dist/providers/openai/Image.d.ts.map +1 -1
- package/dist/providers/openai/Image.js +3 -2
- package/dist/providers/openai/Moderation.d.ts.map +1 -1
- package/dist/providers/openai/Moderation.js +3 -2
- package/dist/providers/openai/OpenAIProvider.d.ts +1 -0
- package/dist/providers/openai/OpenAIProvider.d.ts.map +1 -1
- package/dist/providers/openai/OpenAIProvider.js +3 -2
- package/dist/providers/openai/Streaming.d.ts +4 -2
- package/dist/providers/openai/Streaming.d.ts.map +1 -1
- package/dist/providers/openai/Streaming.js +15 -6
- package/dist/providers/openai/Transcription.d.ts.map +1 -1
- package/dist/providers/openai/Transcription.js +5 -4
- package/dist/providers/openrouter/OpenRouterProvider.d.ts +1 -0
- package/dist/providers/openrouter/OpenRouterProvider.d.ts.map +1 -1
- package/dist/providers/openrouter/OpenRouterProvider.js +1 -0
- package/dist/providers/utils.d.ts +8 -0
- package/dist/providers/utils.d.ts.map +1 -0
- package/dist/providers/utils.js +16 -0
- package/dist/utils/fetch.d.ts +12 -0
- package/dist/utils/fetch.d.ts.map +1 -0
- package/dist/utils/fetch.js +34 -0
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ChatStream.d.ts","sourceRoot":"","sources":["../../src/chat/ChatStream.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAE/D,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,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,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAE/D,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAIhD;;;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;IA8B5B;;OAEG;IACH,IAAI,OAAO,IAAI,SAAS,OAAO,EAAE,CAEhC;IAED;;;OAGG;IACH,MAAM,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC;IA6J1C;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAM1B;;;OAGG;YACW,uBAAuB;IASrC;;OAEG;YACW,eAAe;CA2C9B"}
|
package/dist/chat/ChatStream.js
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import { ChatResponseString } from "./ChatResponse.js";
|
|
2
2
|
import { Stream } from "../streaming/Stream.js";
|
|
3
|
+
import { config } from "../config.js";
|
|
4
|
+
import { ToolExecutionMode } from "../constants.js";
|
|
3
5
|
/**
|
|
4
6
|
* Internal handler for chat streaming logic.
|
|
5
7
|
* Wraps the provider's stream with side effects like history updates and events.
|
|
@@ -9,29 +11,41 @@ export class ChatStream {
|
|
|
9
11
|
model;
|
|
10
12
|
options;
|
|
11
13
|
messages;
|
|
12
|
-
|
|
14
|
+
systemMessages;
|
|
15
|
+
constructor(provider, model, options = {}, messages, systemMessages) {
|
|
13
16
|
this.provider = provider;
|
|
14
17
|
this.model = model;
|
|
15
18
|
this.options = options;
|
|
16
19
|
this.messages = messages ?? [];
|
|
20
|
+
this.systemMessages = systemMessages ?? [];
|
|
17
21
|
// Only initialize if we're starting a new history
|
|
18
|
-
if (this.messages.length === 0) {
|
|
22
|
+
if (this.messages.length === 0 && this.systemMessages.length === 0) {
|
|
19
23
|
if (options.systemPrompt) {
|
|
20
|
-
this.
|
|
24
|
+
this.systemMessages.push({
|
|
21
25
|
role: "system",
|
|
22
26
|
content: options.systemPrompt,
|
|
23
27
|
});
|
|
24
28
|
}
|
|
25
29
|
if (options.messages) {
|
|
26
|
-
|
|
30
|
+
for (const msg of options.messages) {
|
|
31
|
+
if (msg.role === "system" || msg.role === "developer") {
|
|
32
|
+
this.systemMessages.push(msg);
|
|
33
|
+
}
|
|
34
|
+
else {
|
|
35
|
+
this.messages.push(msg);
|
|
36
|
+
}
|
|
37
|
+
}
|
|
27
38
|
}
|
|
28
39
|
}
|
|
40
|
+
if (!this.options.toolExecution) {
|
|
41
|
+
this.options.toolExecution = config.toolExecution || ToolExecutionMode.AUTO;
|
|
42
|
+
}
|
|
29
43
|
}
|
|
30
44
|
/**
|
|
31
45
|
* Read-only access to message history
|
|
32
46
|
*/
|
|
33
47
|
get history() {
|
|
34
|
-
return this.messages;
|
|
48
|
+
return [...this.systemMessages, ...this.messages];
|
|
35
49
|
}
|
|
36
50
|
/**
|
|
37
51
|
* Creates a high-level Stream object for the chat response.
|
|
@@ -40,7 +54,7 @@ export class ChatStream {
|
|
|
40
54
|
create(content) {
|
|
41
55
|
const controller = new AbortController();
|
|
42
56
|
// We create a wrapper async generator that handles our side effects
|
|
43
|
-
const sideEffectGenerator = async function* (provider, model, messages, options, abortController) {
|
|
57
|
+
const sideEffectGenerator = async function* (self, provider, model, messages, systemMessages, options, abortController) {
|
|
44
58
|
messages.push({ role: "user", content });
|
|
45
59
|
if (!provider.stream) {
|
|
46
60
|
throw new Error("Streaming not supported by provider");
|
|
@@ -49,18 +63,32 @@ export class ChatStream {
|
|
|
49
63
|
let fullReasoning = "";
|
|
50
64
|
let toolCalls;
|
|
51
65
|
let isFirst = true;
|
|
66
|
+
const maxToolCalls = options.maxToolCalls ?? 5;
|
|
67
|
+
let stepCount = 0;
|
|
52
68
|
// Main streaming loop - may iterate multiple times for tool calls
|
|
53
69
|
while (true) {
|
|
70
|
+
stepCount++;
|
|
71
|
+
if (stepCount > maxToolCalls) {
|
|
72
|
+
throw new Error(`[NodeLLM] Maximum tool execution calls (${maxToolCalls}) exceeded during streaming.`);
|
|
73
|
+
}
|
|
54
74
|
fullContent = "";
|
|
55
75
|
fullReasoning = "";
|
|
56
76
|
toolCalls = undefined;
|
|
57
77
|
try {
|
|
78
|
+
let requestMessages = [...systemMessages, ...messages];
|
|
79
|
+
if (options.onBeforeRequest) {
|
|
80
|
+
const result = await options.onBeforeRequest(requestMessages);
|
|
81
|
+
if (result) {
|
|
82
|
+
requestMessages = result;
|
|
83
|
+
}
|
|
84
|
+
}
|
|
58
85
|
for await (const chunk of provider.stream({
|
|
59
86
|
model,
|
|
60
|
-
messages,
|
|
87
|
+
messages: requestMessages,
|
|
61
88
|
tools: options.tools,
|
|
62
89
|
temperature: options.temperature,
|
|
63
|
-
max_tokens: options.maxTokens,
|
|
90
|
+
max_tokens: options.maxTokens ?? config.maxTokens,
|
|
91
|
+
requestTimeout: options.requestTimeout ?? config.requestTimeout,
|
|
64
92
|
signal: abortController.signal,
|
|
65
93
|
})) {
|
|
66
94
|
if (isFirst) {
|
|
@@ -81,52 +109,50 @@ export class ChatStream {
|
|
|
81
109
|
toolCalls = chunk.tool_calls;
|
|
82
110
|
}
|
|
83
111
|
}
|
|
84
|
-
//
|
|
112
|
+
// Build the response object for hooks and history
|
|
113
|
+
let assistantResponse = new ChatResponseString(fullContent || "", { input_tokens: 0, output_tokens: 0, total_tokens: 0 }, model, provider.id, fullReasoning || undefined);
|
|
114
|
+
// --- Content Policy Hooks (Output) ---
|
|
115
|
+
if (options.onAfterResponse) {
|
|
116
|
+
const result = await options.onAfterResponse(assistantResponse);
|
|
117
|
+
if (result) {
|
|
118
|
+
assistantResponse = result;
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
// Add assistant message to history (now potentially redacted)
|
|
85
122
|
messages.push({
|
|
86
123
|
role: "assistant",
|
|
87
|
-
content:
|
|
124
|
+
content: assistantResponse || null,
|
|
88
125
|
tool_calls: toolCalls,
|
|
89
126
|
reasoning: fullReasoning || undefined
|
|
90
127
|
});
|
|
91
128
|
// If no tool calls, we're done
|
|
92
129
|
if (!toolCalls || toolCalls.length === 0) {
|
|
93
130
|
if (options.onEndMessage) {
|
|
94
|
-
options.onEndMessage(
|
|
131
|
+
options.onEndMessage(assistantResponse);
|
|
95
132
|
}
|
|
96
133
|
break;
|
|
97
134
|
}
|
|
135
|
+
// Dry-run mode: stop after proposing tools
|
|
136
|
+
if (!self.shouldExecuteTools(toolCalls, options.toolExecution)) {
|
|
137
|
+
break;
|
|
138
|
+
}
|
|
98
139
|
// Execute tool calls
|
|
99
140
|
for (const toolCall of toolCalls) {
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
try {
|
|
105
|
-
const args = JSON.parse(toolCall.function.arguments);
|
|
106
|
-
const result = await tool.handler(args);
|
|
107
|
-
if (options.onToolResult)
|
|
108
|
-
options.onToolResult(result);
|
|
109
|
-
messages.push({
|
|
110
|
-
role: "tool",
|
|
111
|
-
tool_call_id: toolCall.id,
|
|
112
|
-
content: result,
|
|
113
|
-
});
|
|
114
|
-
}
|
|
115
|
-
catch (error) {
|
|
141
|
+
// Confirm mode: request approval
|
|
142
|
+
if (options.toolExecution === ToolExecutionMode.CONFIRM) {
|
|
143
|
+
const approved = await self.requestToolConfirmation(toolCall, options.onConfirmToolCall);
|
|
144
|
+
if (!approved) {
|
|
116
145
|
messages.push({
|
|
117
146
|
role: "tool",
|
|
118
147
|
tool_call_id: toolCall.id,
|
|
119
|
-
content:
|
|
148
|
+
content: "Action cancelled by user.",
|
|
120
149
|
});
|
|
150
|
+
continue;
|
|
121
151
|
}
|
|
122
152
|
}
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
tool_call_id: toolCall.id,
|
|
127
|
-
content: "Error: Tool not found or no handler provided",
|
|
128
|
-
});
|
|
129
|
-
}
|
|
153
|
+
// Execute the tool
|
|
154
|
+
const toolResult = await self.executeToolCall(toolCall, options.tools, options.onToolCallStart, options.onToolCallEnd, options.onToolCallError);
|
|
155
|
+
messages.push(toolResult);
|
|
130
156
|
}
|
|
131
157
|
// Continue loop to stream the next response after tool execution
|
|
132
158
|
}
|
|
@@ -138,6 +164,66 @@ export class ChatStream {
|
|
|
138
164
|
}
|
|
139
165
|
}
|
|
140
166
|
};
|
|
141
|
-
return new Stream(() => sideEffectGenerator(this.provider, this.model, this.messages, this.options, controller), controller);
|
|
167
|
+
return new Stream(() => sideEffectGenerator(this, this.provider, this.model, this.messages, this.systemMessages, this.options, controller), controller);
|
|
168
|
+
}
|
|
169
|
+
/**
|
|
170
|
+
* Check if tool execution should proceed based on the current mode.
|
|
171
|
+
*/
|
|
172
|
+
shouldExecuteTools(toolCalls, mode) {
|
|
173
|
+
if (!toolCalls || toolCalls.length === 0)
|
|
174
|
+
return false;
|
|
175
|
+
if (mode === ToolExecutionMode.DRY_RUN)
|
|
176
|
+
return false;
|
|
177
|
+
return true;
|
|
178
|
+
}
|
|
179
|
+
/**
|
|
180
|
+
* Request user confirmation for a tool call in "confirm" mode.
|
|
181
|
+
* Returns true if approved, false if rejected.
|
|
182
|
+
*/
|
|
183
|
+
async requestToolConfirmation(toolCall, onConfirm) {
|
|
184
|
+
if (!onConfirm)
|
|
185
|
+
return true;
|
|
186
|
+
const confirmed = await onConfirm(toolCall);
|
|
187
|
+
return confirmed !== false;
|
|
188
|
+
}
|
|
189
|
+
/**
|
|
190
|
+
* Execute a single tool call and return the result message.
|
|
191
|
+
*/
|
|
192
|
+
async executeToolCall(toolCall, tools, onStart, onEnd, onError) {
|
|
193
|
+
if (onStart)
|
|
194
|
+
onStart(toolCall);
|
|
195
|
+
const tool = tools?.find((t) => t.function.name === toolCall.function.name);
|
|
196
|
+
if (tool?.handler) {
|
|
197
|
+
try {
|
|
198
|
+
const args = JSON.parse(toolCall.function.arguments);
|
|
199
|
+
const result = await tool.handler(args);
|
|
200
|
+
if (onEnd)
|
|
201
|
+
onEnd(toolCall, result);
|
|
202
|
+
return {
|
|
203
|
+
role: "tool",
|
|
204
|
+
tool_call_id: toolCall.id,
|
|
205
|
+
content: result,
|
|
206
|
+
};
|
|
207
|
+
}
|
|
208
|
+
catch (error) {
|
|
209
|
+
if (onError)
|
|
210
|
+
onError(toolCall, error);
|
|
211
|
+
return {
|
|
212
|
+
role: "tool",
|
|
213
|
+
tool_call_id: toolCall.id,
|
|
214
|
+
content: `Error executing tool: ${error.message}`,
|
|
215
|
+
};
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
else {
|
|
219
|
+
const error = new Error("Tool not found or no handler provided");
|
|
220
|
+
if (onError)
|
|
221
|
+
onError(toolCall, error);
|
|
222
|
+
return {
|
|
223
|
+
role: "tool",
|
|
224
|
+
tool_call_id: toolCall.id,
|
|
225
|
+
content: "Error: Tool not found or no handler provided",
|
|
226
|
+
};
|
|
227
|
+
}
|
|
142
228
|
}
|
|
143
229
|
}
|
package/dist/chat/Role.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export type Role = "system" | "user" | "assistant" | "tool";
|
|
1
|
+
export type Role = "system" | "developer" | "user" | "assistant" | "tool";
|
|
2
2
|
//# sourceMappingURL=Role.d.ts.map
|
package/dist/chat/Role.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Role.d.ts","sourceRoot":"","sources":["../../src/chat/Role.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,IAAI,GACZ,QAAQ,GACR,MAAM,GACN,WAAW,GACX,MAAM,CAAC"}
|
|
1
|
+
{"version":3,"file":"Role.d.ts","sourceRoot":"","sources":["../../src/chat/Role.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,IAAI,GACZ,QAAQ,GACR,WAAW,GACX,MAAM,GACN,WAAW,GACX,MAAM,CAAC"}
|
package/dist/config.d.ts
CHANGED
|
@@ -15,7 +15,13 @@ export interface NodeLLMConfig {
|
|
|
15
15
|
openrouterApiKey?: string;
|
|
16
16
|
openrouterApiBase?: string;
|
|
17
17
|
debug?: boolean;
|
|
18
|
+
maxToolCalls?: number;
|
|
19
|
+
maxRetries?: number;
|
|
20
|
+
requestTimeout?: number;
|
|
21
|
+
maxTokens?: number;
|
|
22
|
+
toolExecution?: ToolExecutionMode;
|
|
18
23
|
}
|
|
24
|
+
import { ToolExecutionMode } from "./constants.js";
|
|
19
25
|
declare class Configuration implements NodeLLMConfig {
|
|
20
26
|
openaiApiKey?: string;
|
|
21
27
|
openaiApiBase?: string;
|
|
@@ -29,6 +35,11 @@ declare class Configuration implements NodeLLMConfig {
|
|
|
29
35
|
openrouterApiKey?: string;
|
|
30
36
|
openrouterApiBase?: string;
|
|
31
37
|
debug?: boolean;
|
|
38
|
+
maxToolCalls: number;
|
|
39
|
+
maxRetries: number;
|
|
40
|
+
requestTimeout: number;
|
|
41
|
+
maxTokens: number;
|
|
42
|
+
toolExecution: ToolExecutionMode;
|
|
32
43
|
}
|
|
33
44
|
export declare const config: Configuration;
|
|
34
45
|
export {};
|
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;IAC3B,KAAK,CAAC,EAAE,OAAO,CAAC;
|
|
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;IAC3B,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;CACnC;AAED,OAAO,EAOL,iBAAiB,EAClB,MAAM,gBAAgB,CAAC;AAExB,cAAM,aAAc,YAAW,aAAa;IACnC,YAAY,CAAC,EAAE,MAAM,CAAsC;IAC3D,aAAa,CAAC,EAAE,MAAM,CAAuC;IAC7D,eAAe,CAAC,EAAE,MAAM,CAAyC;IACjE,gBAAgB,CAAC,EAAE,MAAM,CAA0C;IACnE,YAAY,CAAC,EAAE,MAAM,CAAsC;IAC3D,aAAa,CAAC,EAAE,MAAM,CAAuC;IAC7D,cAAc,CAAC,EAAE,MAAM,CAAwC;IAC/D,eAAe,CAAC,EAAE,MAAM,CAAyC;IACjE,aAAa,CAAC,EAAE,MAAM,CAAkE;IACxF,gBAAgB,CAAC,EAAE,MAAM,CAA0C;IACnE,iBAAiB,CAAC,EAAE,MAAM,CAA2C;IACrE,KAAK,CAAC,EAAE,OAAO,CAAwC;IACvD,YAAY,EAAE,MAAM,CAA0B;IAC9C,UAAU,EAAE,MAAM,CAAuB;IACzC,cAAc,EAAE,MAAM,CAA2B;IACjD,SAAS,EAAE,MAAM,CAAsB;IACvC,aAAa,EAAE,iBAAiB,CAA0B;CAClE;AAED,eAAO,MAAM,MAAM,eAAsB,CAAC"}
|
package/dist/config.js
CHANGED
|
@@ -1,3 +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
2
|
class Configuration {
|
|
2
3
|
openaiApiKey = process.env.OPENAI_API_KEY?.trim();
|
|
3
4
|
openaiApiBase = process.env.OPENAI_API_BASE?.trim();
|
|
@@ -7,9 +8,14 @@ class Configuration {
|
|
|
7
8
|
geminiApiBase = process.env.GEMINI_API_BASE?.trim();
|
|
8
9
|
deepseekApiKey = process.env.DEEPSEEK_API_KEY?.trim();
|
|
9
10
|
deepseekApiBase = process.env.DEEPSEEK_API_BASE?.trim();
|
|
10
|
-
ollamaApiBase = process.env.OLLAMA_API_BASE?.trim() ||
|
|
11
|
+
ollamaApiBase = process.env.OLLAMA_API_BASE?.trim() || DEFAULT_OLLAMA_BASE_URL;
|
|
11
12
|
openrouterApiKey = process.env.OPENROUTER_API_KEY?.trim();
|
|
12
13
|
openrouterApiBase = process.env.OPENROUTER_API_BASE?.trim();
|
|
13
14
|
debug = process.env.NODELLM_DEBUG === "true";
|
|
15
|
+
maxToolCalls = DEFAULT_MAX_TOOL_CALLS;
|
|
16
|
+
maxRetries = DEFAULT_MAX_RETRIES;
|
|
17
|
+
requestTimeout = DEFAULT_REQUEST_TIMEOUT;
|
|
18
|
+
maxTokens = DEFAULT_MAX_TOKENS;
|
|
19
|
+
toolExecution = DEFAULT_TOOL_EXECUTION;
|
|
14
20
|
}
|
|
15
21
|
export const config = new Configuration();
|
package/dist/constants.d.ts
CHANGED
|
@@ -1,3 +1,14 @@
|
|
|
1
|
+
export declare enum ToolExecutionMode {
|
|
2
|
+
AUTO = "auto",
|
|
3
|
+
CONFIRM = "confirm",
|
|
4
|
+
DRY_RUN = "dry-run"
|
|
5
|
+
}
|
|
6
|
+
export declare const DEFAULT_MAX_TOOL_CALLS = 5;
|
|
7
|
+
export declare const DEFAULT_MAX_RETRIES = 2;
|
|
8
|
+
export declare const DEFAULT_TOOL_EXECUTION = ToolExecutionMode.AUTO;
|
|
9
|
+
export declare const DEFAULT_REQUEST_TIMEOUT = 30000;
|
|
10
|
+
export declare const DEFAULT_MAX_TOKENS = 4096;
|
|
11
|
+
export declare const DEFAULT_OLLAMA_BASE_URL = "http://localhost:11434/v1";
|
|
1
12
|
export declare const DEFAULT_MODELS: {
|
|
2
13
|
readonly TRANSCRIPTION: "whisper-1";
|
|
3
14
|
readonly MODERATION: "omni-moderation-latest";
|
package/dist/constants.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,cAAc;;;;;CAKjB,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;AACvC,eAAO,MAAM,uBAAuB,8BAA8B,CAAC;AAEnE,eAAO,MAAM,cAAc;;;;;CAKjB,CAAC"}
|
package/dist/constants.js
CHANGED
|
@@ -1,3 +1,15 @@
|
|
|
1
|
+
export var ToolExecutionMode;
|
|
2
|
+
(function (ToolExecutionMode) {
|
|
3
|
+
ToolExecutionMode["AUTO"] = "auto";
|
|
4
|
+
ToolExecutionMode["CONFIRM"] = "confirm";
|
|
5
|
+
ToolExecutionMode["DRY_RUN"] = "dry-run";
|
|
6
|
+
})(ToolExecutionMode || (ToolExecutionMode = {}));
|
|
7
|
+
export const DEFAULT_MAX_TOOL_CALLS = 5;
|
|
8
|
+
export const DEFAULT_MAX_RETRIES = 2;
|
|
9
|
+
export const DEFAULT_TOOL_EXECUTION = ToolExecutionMode.AUTO;
|
|
10
|
+
export const DEFAULT_REQUEST_TIMEOUT = 30000; // 30 seconds
|
|
11
|
+
export const DEFAULT_MAX_TOKENS = 4096; // 4K tokens output limit
|
|
12
|
+
export const DEFAULT_OLLAMA_BASE_URL = "http://localhost:11434/v1";
|
|
1
13
|
export const DEFAULT_MODELS = {
|
|
2
14
|
TRANSCRIPTION: "whisper-1",
|
|
3
15
|
MODERATION: "omni-moderation-latest",
|
package/dist/index.d.ts
CHANGED
|
@@ -15,4 +15,5 @@ export { Schema } from "./schema/Schema.js";
|
|
|
15
15
|
export { BaseProvider } from "./providers/BaseProvider.js";
|
|
16
16
|
export { resolveModelAlias } from "./model_aliases.js";
|
|
17
17
|
export { default as MODEL_ALIASES } from "./aliases.js";
|
|
18
|
+
export { ToolExecutionMode, DEFAULT_MAX_TOOL_CALLS, DEFAULT_MAX_RETRIES, DEFAULT_TOOL_EXECUTION, DEFAULT_OLLAMA_BASE_URL, DEFAULT_MODELS } from "./constants.js";
|
|
18
19
|
//# sourceMappingURL=index.d.ts.map
|
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,EAAE,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AACzE,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,YAAY,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAC5C,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAC3D,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,cAAc,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,EAAE,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AACzE,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,YAAY,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAC5C,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAC3D,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"}
|
package/dist/index.js
CHANGED
|
@@ -14,3 +14,4 @@ export { Schema } from "./schema/Schema.js";
|
|
|
14
14
|
export { BaseProvider } from "./providers/BaseProvider.js";
|
|
15
15
|
export { resolveModelAlias } from "./model_aliases.js";
|
|
16
16
|
export { default as MODEL_ALIASES } from "./aliases.js";
|
|
17
|
+
export { ToolExecutionMode, DEFAULT_MAX_TOOL_CALLS, DEFAULT_MAX_RETRIES, DEFAULT_TOOL_EXECUTION, DEFAULT_OLLAMA_BASE_URL, DEFAULT_MODELS } from "./constants.js";
|
package/dist/llm.d.ts
CHANGED
|
@@ -77,6 +77,7 @@ export declare class NodeLLMCore {
|
|
|
77
77
|
size?: string;
|
|
78
78
|
quality?: string;
|
|
79
79
|
assumeModelExists?: boolean;
|
|
80
|
+
requestTimeout?: number;
|
|
80
81
|
}): Promise<GeneratedImage>;
|
|
81
82
|
transcribe(file: string, options?: {
|
|
82
83
|
model?: string;
|
|
@@ -85,6 +86,7 @@ export declare class NodeLLMCore {
|
|
|
85
86
|
speakerNames?: string[];
|
|
86
87
|
speakerReferences?: string[];
|
|
87
88
|
assumeModelExists?: boolean;
|
|
89
|
+
requestTimeout?: number;
|
|
88
90
|
}): Promise<Transcription>;
|
|
89
91
|
get defaultTranscriptionModel(): string | undefined;
|
|
90
92
|
get defaultModerationModel(): string | undefined;
|
|
@@ -93,11 +95,13 @@ export declare class NodeLLMCore {
|
|
|
93
95
|
moderate(input: string | string[], options?: {
|
|
94
96
|
model?: string;
|
|
95
97
|
assumeModelExists?: boolean;
|
|
98
|
+
requestTimeout?: number;
|
|
96
99
|
}): Promise<Moderation>;
|
|
97
100
|
embed(input: string | string[], options?: {
|
|
98
101
|
model?: string;
|
|
99
102
|
dimensions?: number;
|
|
100
103
|
assumeModelExists?: boolean;
|
|
104
|
+
requestTimeout?: number;
|
|
101
105
|
}): Promise<Embedding>;
|
|
102
106
|
}
|
|
103
107
|
export { Transcription, Moderation, Embedding };
|
package/dist/llm.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"llm.d.ts","sourceRoot":"","sources":["../src/llm.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC;AACtC,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EACL,QAAQ,EACR,SAAS,EAIV,MAAM,yBAAyB,CAAC;AAUjC,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAC3D,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAE,MAAM,kCAAkC,CAAC;AACjE,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AACxD,OAAO,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AASrD,OAAO,EAAU,aAAa,EAAE,MAAM,aAAa,CAAC;AAEpD,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,KAAK,SAAS,GAAG;IACf,QAAQ,CAAC,EAAE,QAAQ,GAAG,MAAM,CAAC;IAC7B,KAAK,CAAC,EAAE,YAAY,CAAC;IACrB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,yBAAyB,CAAC,EAAE,MAAM,CAAC;IACnC,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,qBAAqB,CAAC,EAAE,MAAM,CAAC;CAChC,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;AAY3B,qBAAa,WAAW;IACtB,SAAgB,MAAM,uBAAiB;IACvC,SAAgB,MAAM,EAAE,aAAa,CAAC;IACtC,OAAO,CAAC,QAAQ,CAAC,CAAW;IAC5B,OAAO,CAAC,kBAAkB,CAAC,CAAS;IACpC,OAAO,CAAC,2BAA2B,CAAC,CAAS;IAC7C,OAAO,CAAC,wBAAwB,CAAC,CAAS;IAC1C,OAAO,CAAC,uBAAuB,CAAC,CAAS;IAEzC,OAAO,CAAC,KAAK,CAGX;IAEF;;OAEG;gBACS,YAAY,CAAC,EAAE,aAAa;
|
|
1
|
+
{"version":3,"file":"llm.d.ts","sourceRoot":"","sources":["../src/llm.ts"],"names":[],"mappings":"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"}
|
package/dist/llm.js
CHANGED
|
@@ -34,6 +34,9 @@ export class NodeLLMCore {
|
|
|
34
34
|
*/
|
|
35
35
|
constructor(customConfig) {
|
|
36
36
|
this.config = customConfig || config;
|
|
37
|
+
if (this.config.maxRetries !== undefined) {
|
|
38
|
+
this.retry.attempts = this.config.maxRetries + 1;
|
|
39
|
+
}
|
|
37
40
|
}
|
|
38
41
|
/**
|
|
39
42
|
* Returns a scoped LLM instance configured for a specific provider.
|
|
@@ -89,6 +92,9 @@ export class NodeLLMCore {
|
|
|
89
92
|
const { provider, retry, defaultChatModel, defaultTranscriptionModel, defaultModerationModel, defaultEmbeddingModel, ...apiConfig } = options;
|
|
90
93
|
// Merge API keys into global config
|
|
91
94
|
Object.assign(this.config, apiConfig);
|
|
95
|
+
if (apiConfig.maxRetries !== undefined) {
|
|
96
|
+
this.retry.attempts = apiConfig.maxRetries + 1;
|
|
97
|
+
}
|
|
92
98
|
if (defaultChatModel) {
|
|
93
99
|
this.defaultChatModelId = defaultChatModel;
|
|
94
100
|
}
|
|
@@ -158,6 +164,7 @@ export class NodeLLMCore {
|
|
|
158
164
|
prompt,
|
|
159
165
|
...options,
|
|
160
166
|
model,
|
|
167
|
+
requestTimeout: options?.requestTimeout ?? this.config.requestTimeout,
|
|
161
168
|
});
|
|
162
169
|
return new GeneratedImage(response);
|
|
163
170
|
}
|
|
@@ -175,6 +182,7 @@ export class NodeLLMCore {
|
|
|
175
182
|
file,
|
|
176
183
|
...options,
|
|
177
184
|
model,
|
|
185
|
+
requestTimeout: options?.requestTimeout ?? this.config.requestTimeout,
|
|
178
186
|
});
|
|
179
187
|
return new Transcription(response);
|
|
180
188
|
}
|
|
@@ -204,6 +212,7 @@ export class NodeLLMCore {
|
|
|
204
212
|
input,
|
|
205
213
|
...options,
|
|
206
214
|
model,
|
|
215
|
+
requestTimeout: options?.requestTimeout ?? this.config.requestTimeout,
|
|
207
216
|
});
|
|
208
217
|
return new Moderation(response);
|
|
209
218
|
}
|
|
@@ -215,6 +224,7 @@ export class NodeLLMCore {
|
|
|
215
224
|
input,
|
|
216
225
|
model,
|
|
217
226
|
dimensions: options?.dimensions,
|
|
227
|
+
requestTimeout: options?.requestTimeout ?? this.config.requestTimeout,
|
|
218
228
|
};
|
|
219
229
|
if (options?.assumeModelExists) {
|
|
220
230
|
console.warn(`[NodeLLM] Skipping validation for model ${request.model}`);
|
|
@@ -8,6 +8,7 @@ export interface ChatRequest {
|
|
|
8
8
|
max_tokens?: number;
|
|
9
9
|
response_format?: any;
|
|
10
10
|
headers?: Record<string, string>;
|
|
11
|
+
requestTimeout?: number;
|
|
11
12
|
[key: string]: any;
|
|
12
13
|
}
|
|
13
14
|
export interface ChatChunk {
|
|
@@ -41,6 +42,7 @@ export interface ProviderCapabilities {
|
|
|
41
42
|
supportsTranscription(modelId: string): boolean;
|
|
42
43
|
supportsModeration(modelId: string): boolean;
|
|
43
44
|
supportsReasoning(modelId: string): boolean;
|
|
45
|
+
supportsDeveloperRole(modelId: string): boolean;
|
|
44
46
|
getContextWindow(modelId: string): number | null;
|
|
45
47
|
}
|
|
46
48
|
export interface ModelInfo {
|
|
@@ -64,6 +66,7 @@ export interface ImageRequest {
|
|
|
64
66
|
size?: string;
|
|
65
67
|
quality?: string;
|
|
66
68
|
n?: number;
|
|
69
|
+
requestTimeout?: number;
|
|
67
70
|
}
|
|
68
71
|
export interface ImageResponse {
|
|
69
72
|
url?: string;
|
|
@@ -78,6 +81,7 @@ export interface TranscriptionRequest {
|
|
|
78
81
|
language?: string;
|
|
79
82
|
speakerNames?: string[];
|
|
80
83
|
speakerReferences?: string[];
|
|
84
|
+
requestTimeout?: number;
|
|
81
85
|
}
|
|
82
86
|
export interface TranscriptionSegment {
|
|
83
87
|
id: number;
|
|
@@ -96,6 +100,7 @@ export interface TranscriptionResponse {
|
|
|
96
100
|
export interface ModerationRequest {
|
|
97
101
|
input: string | string[];
|
|
98
102
|
model?: string;
|
|
103
|
+
requestTimeout?: number;
|
|
99
104
|
}
|
|
100
105
|
export interface ModerationResult {
|
|
101
106
|
flagged: boolean;
|
|
@@ -112,6 +117,7 @@ export interface EmbeddingRequest {
|
|
|
112
117
|
model?: string;
|
|
113
118
|
dimensions?: number;
|
|
114
119
|
user?: string;
|
|
120
|
+
requestTimeout?: number;
|
|
115
121
|
}
|
|
116
122
|
export interface EmbeddingVector {
|
|
117
123
|
embedding: number[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Provider.d.ts","sourceRoot":"","sources":["../../src/providers/Provider.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"Provider.d.ts","sourceRoot":"","sources":["../../src/providers/Provider.ts"],"names":[],"mappings":"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"}
|
|
@@ -19,6 +19,7 @@ export declare class AnthropicProvider extends BaseProvider implements Provider
|
|
|
19
19
|
supportsTranscription: (_model: string) => boolean;
|
|
20
20
|
supportsModeration: (_model: string) => boolean;
|
|
21
21
|
supportsReasoning: (_model: string) => boolean;
|
|
22
|
+
supportsDeveloperRole: (_model: string) => boolean;
|
|
22
23
|
getContextWindow: (model: string) => number | null;
|
|
23
24
|
};
|
|
24
25
|
constructor(options: AnthropicProviderOptions);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AnthropicProvider.d.ts","sourceRoot":"","sources":["../../../src/providers/anthropic/AnthropicProvider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,YAAY,EAAE,SAAS,EAAE,SAAS,EAAwJ,MAAM,gBAAgB,CAAC;AACjP,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAMlD,MAAM,WAAW,wBAAwB;IACvC,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,qBAAa,iBAAkB,SAAQ,YAAa,YAAW,QAAQ;
|
|
1
|
+
{"version":3,"file":"AnthropicProvider.d.ts","sourceRoot":"","sources":["../../../src/providers/anthropic/AnthropicProvider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,YAAY,EAAE,SAAS,EAAE,SAAS,EAAwJ,MAAM,gBAAgB,CAAC;AACjP,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAMlD,MAAM,WAAW,wBAAwB;IACvC,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,qBAAa,iBAAkB,SAAQ,YAAa,YAAW,QAAQ;IAmBzD,OAAO,CAAC,QAAQ,CAAC,OAAO;IAlBpC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAgB;IAC5C,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAqB;IACnD,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAkB;IAEzC,YAAY;gCACO,MAAM;+BACP,MAAM;0CACK,MAAM;qCACX,MAAM;0CACD,MAAM;wCACR,MAAM;qCACT,MAAM;oCACP,MAAM;wCACF,MAAM;kCACZ,MAAM;MAChC;gBAE2B,OAAO,EAAE,wBAAwB;IAQvD,OAAO,IAAI,MAAM;IAIjB,OAAO,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;IAQxC,SAAS,CAAC,YAAY,IAAI,MAAM;IAIhB,YAAY,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM;IAIhD,IAAI,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,YAAY,CAAC;IAIhD,MAAM,CAAC,OAAO,EAAE,WAAW,GAAG,cAAc,CAAC,SAAS,CAAC;IAIxD,UAAU,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;CAKzC"}
|
|
@@ -18,6 +18,7 @@ export class AnthropicProvider extends BaseProvider {
|
|
|
18
18
|
supportsTranscription: (_model) => false,
|
|
19
19
|
supportsModeration: (_model) => false,
|
|
20
20
|
supportsReasoning: (_model) => false,
|
|
21
|
+
supportsDeveloperRole: (_model) => true,
|
|
21
22
|
getContextWindow: (model) => Capabilities.getContextWindow(model),
|
|
22
23
|
};
|
|
23
24
|
constructor(options) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Chat.d.ts","sourceRoot":"","sources":["../../../src/providers/anthropic/Chat.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,YAAY,EAAS,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"Chat.d.ts","sourceRoot":"","sources":["../../../src/providers/anthropic/Chat.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,YAAY,EAAS,MAAM,gBAAgB,CAAC;AAYlE,qBAAa,aAAa;IACZ,OAAO,CAAC,QAAQ,CAAC,OAAO;IAAU,OAAO,CAAC,QAAQ,CAAC,MAAM;gBAAxC,OAAO,EAAE,MAAM,EAAmB,MAAM,EAAE,MAAM;IAEvE,OAAO,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,YAAY,CAAC;CA4G3D"}
|
|
@@ -2,6 +2,7 @@ import { Capabilities } from "./Capabilities.js";
|
|
|
2
2
|
import { handleAnthropicError } from "./Errors.js";
|
|
3
3
|
import { ModelRegistry } from "../../models/ModelRegistry.js";
|
|
4
4
|
import { logger } from "../../utils/logger.js";
|
|
5
|
+
import { fetchWithTimeout } from "../../utils/fetch.js";
|
|
5
6
|
import { formatSystemPrompt, formatMessages } from "./Utils.js";
|
|
6
7
|
export class AnthropicChat {
|
|
7
8
|
baseUrl;
|
|
@@ -24,7 +25,7 @@ export class AnthropicChat {
|
|
|
24
25
|
const instruction = `CRITICAL: Respond ONLY with a valid JSON object matching the requested schema.${schemaText}\n\nDo not include any other text or explanation.`;
|
|
25
26
|
system = system ? `${system}\n\n${instruction}` : instruction;
|
|
26
27
|
}
|
|
27
|
-
const { model: _model, messages: _messages, tools: _tools, temperature: _temp, max_tokens: _max, response_format: _format, headers: _headers, ...rest } = request;
|
|
28
|
+
const { model: _model, messages: _messages, tools: _tools, temperature: _temp, max_tokens: _max, response_format: _format, headers: _headers, requestTimeout, ...rest } = request;
|
|
28
29
|
const body = {
|
|
29
30
|
model: model,
|
|
30
31
|
messages: messages,
|
|
@@ -57,11 +58,11 @@ export class AnthropicChat {
|
|
|
57
58
|
}
|
|
58
59
|
const url = `${this.baseUrl}/messages`;
|
|
59
60
|
logger.logRequest("Anthropic", "POST", url, body);
|
|
60
|
-
const response = await
|
|
61
|
+
const response = await fetchWithTimeout(url, {
|
|
61
62
|
method: "POST",
|
|
62
63
|
headers: headers,
|
|
63
64
|
body: JSON.stringify(body),
|
|
64
|
-
});
|
|
65
|
+
}, requestTimeout);
|
|
65
66
|
if (!response.ok) {
|
|
66
67
|
await handleAnthropicError(response, model);
|
|
67
68
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Streaming.d.ts","sourceRoot":"","sources":["../../../src/providers/anthropic/Streaming.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"Streaming.d.ts","sourceRoot":"","sources":["../../../src/providers/anthropic/Streaming.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAQxD,qBAAa,kBAAkB;IACjB,OAAO,CAAC,QAAQ,CAAC,OAAO;IAAU,OAAO,CAAC,QAAQ,CAAC,MAAM;gBAAxC,OAAO,EAAE,MAAM,EAAmB,MAAM,EAAE,MAAM;IAEtE,OAAO,CACZ,OAAO,EAAE,WAAW,EACpB,UAAU,CAAC,EAAE,eAAe,GAC3B,cAAc,CAAC,SAAS,CAAC;CAqM7B"}
|
|
@@ -2,6 +2,7 @@ import { Capabilities } from "./Capabilities.js";
|
|
|
2
2
|
import { handleAnthropicError } from "./Errors.js";
|
|
3
3
|
import { formatSystemPrompt, formatMessages } from "./Utils.js";
|
|
4
4
|
import { logger } from "../../utils/logger.js";
|
|
5
|
+
import { fetchWithTimeout } from "../../utils/fetch.js";
|
|
5
6
|
export class AnthropicStreaming {
|
|
6
7
|
baseUrl;
|
|
7
8
|
apiKey;
|
|
@@ -59,12 +60,12 @@ export class AnthropicStreaming {
|
|
|
59
60
|
try {
|
|
60
61
|
const url = `${this.baseUrl}/messages`;
|
|
61
62
|
logger.logRequest("Anthropic", "POST", url, body);
|
|
62
|
-
const response = await
|
|
63
|
+
const response = await fetchWithTimeout(url, {
|
|
63
64
|
method: "POST",
|
|
64
65
|
headers: headers,
|
|
65
66
|
body: JSON.stringify(body),
|
|
66
67
|
signal: abortController.signal,
|
|
67
|
-
});
|
|
68
|
+
}, request.requestTimeout);
|
|
68
69
|
if (!response.ok) {
|
|
69
70
|
await handleAnthropicError(response, model);
|
|
70
71
|
}
|