@node-llm/core 1.3.0 → 1.4.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/LICENSE +21 -0
- package/README.md +4 -2
- package/dist/aliases.d.ts +134 -0
- package/dist/aliases.d.ts.map +1 -0
- package/dist/{aliases.json → aliases.js} +8 -2
- package/dist/chat/Chat.d.ts.map +1 -1
- package/dist/chat/Chat.js +3 -3
- package/dist/chat/ChatResponse.d.ts +2 -1
- package/dist/chat/ChatResponse.d.ts.map +1 -1
- package/dist/chat/ChatResponse.js +3 -1
- package/dist/chat/ChatStream.js +1 -2
- package/dist/chat/Message.d.ts +1 -0
- package/dist/chat/Message.d.ts.map +1 -1
- package/dist/config.d.ts +2 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -0
- package/dist/llm.d.ts +19 -1
- package/dist/llm.d.ts.map +1 -1
- package/dist/llm.js +22 -2
- package/dist/model_aliases.d.ts.map +1 -1
- package/dist/model_aliases.js +6 -9
- package/dist/providers/BaseProvider.d.ts +0 -1
- package/dist/providers/BaseProvider.d.ts.map +1 -1
- package/dist/providers/anthropic/AnthropicProvider.js +1 -1
- package/dist/utils/logger.d.ts +0 -3
- package/dist/utils/logger.d.ts.map +1 -1
- package/dist/utils/logger.js +2 -4
- package/package.json +1 -1
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 NodeLLM contributors
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
CHANGED
|
@@ -178,15 +178,17 @@ await NodeLLM.transcribe("meeting-recording.wav");
|
|
|
178
178
|
```
|
|
179
179
|
|
|
180
180
|
### ⚡ Scoped Parallelism
|
|
181
|
-
Run multiple providers in parallel safely without global configuration side effects using isolated contexts.
|
|
181
|
+
Run multiple providers in parallel safely without global configuration side effects using isolated contexts. You can also override credentials (API keys) for specific instances.
|
|
182
|
+
|
|
182
183
|
```ts
|
|
183
184
|
const [gpt, claude] = await Promise.all([
|
|
184
185
|
// Each call branch off into its own isolated context
|
|
185
186
|
NodeLLM.withProvider("openai").chat("gpt-4o").ask(prompt),
|
|
186
|
-
NodeLLM.withProvider("anthropic").chat("claude-3
|
|
187
|
+
NodeLLM.withProvider("anthropic", { anthropicApiKey: "..." }).chat("claude-3.5-sonnet").ask(prompt),
|
|
187
188
|
]);
|
|
188
189
|
```
|
|
189
190
|
|
|
191
|
+
|
|
190
192
|
### 🧠 Deep Reasoning
|
|
191
193
|
Direct access to the thought process of models like **DeepSeek R1** or **OpenAI o1/o3** using the `.reasoning` field.
|
|
192
194
|
```ts
|
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
declare const _default: {
|
|
2
|
+
readonly "chatgpt-4o": {
|
|
3
|
+
readonly openai: "chatgpt-4o-latest";
|
|
4
|
+
readonly openrouter: "openai/chatgpt-4o-latest";
|
|
5
|
+
};
|
|
6
|
+
readonly "claude-3-5-haiku": {
|
|
7
|
+
readonly anthropic: "claude-3-5-haiku-20241022";
|
|
8
|
+
readonly openrouter: "anthropic/claude-3.5-haiku";
|
|
9
|
+
readonly bedrock: "anthropic.claude-3-5-haiku-20241022-v1:0";
|
|
10
|
+
};
|
|
11
|
+
readonly "claude-3-5-sonnet": {
|
|
12
|
+
readonly anthropic: "claude-3-5-sonnet-20240620";
|
|
13
|
+
readonly openrouter: "anthropic/claude-3.5-sonnet";
|
|
14
|
+
readonly bedrock: "anthropic.claude-3-5-sonnet-20240620-v1:0";
|
|
15
|
+
};
|
|
16
|
+
readonly "claude-sonnet-4-5": {
|
|
17
|
+
readonly anthropic: "claude-sonnet-4-5-20250929";
|
|
18
|
+
};
|
|
19
|
+
readonly "claude-sonnet-4": {
|
|
20
|
+
readonly anthropic: "claude-sonnet-4-20250514";
|
|
21
|
+
};
|
|
22
|
+
readonly "claude-3-7-sonnet": {
|
|
23
|
+
readonly anthropic: "claude-3-7-sonnet-20250219";
|
|
24
|
+
readonly openrouter: "anthropic/claude-3.7-sonnet";
|
|
25
|
+
readonly bedrock: "us.anthropic.claude-3-7-sonnet-20250219-v1:0";
|
|
26
|
+
};
|
|
27
|
+
readonly "claude-3-haiku": {
|
|
28
|
+
readonly anthropic: "claude-3-haiku-20240307";
|
|
29
|
+
readonly openrouter: "anthropic/claude-3-haiku";
|
|
30
|
+
readonly bedrock: "anthropic.claude-3-haiku-20240307-v1:0:200k";
|
|
31
|
+
};
|
|
32
|
+
readonly "claude-3-opus": {
|
|
33
|
+
readonly anthropic: "claude-3-opus-20240229";
|
|
34
|
+
readonly openrouter: "anthropic/claude-3-opus";
|
|
35
|
+
readonly bedrock: "anthropic.claude-3-opus-20240229-v1:0:200k";
|
|
36
|
+
};
|
|
37
|
+
readonly "claude-3-sonnet": {
|
|
38
|
+
readonly bedrock: "anthropic.claude-3-sonnet-20240229-v1:0";
|
|
39
|
+
};
|
|
40
|
+
readonly "deepseek-chat": {
|
|
41
|
+
readonly deepseek: "deepseek-chat";
|
|
42
|
+
readonly openrouter: "deepseek/deepseek-chat";
|
|
43
|
+
};
|
|
44
|
+
readonly "gemini-flash": {
|
|
45
|
+
readonly gemini: "gemini-flash-latest";
|
|
46
|
+
readonly vertexai: "gemini-flash-latest";
|
|
47
|
+
readonly openrouter: "google/gemini-flash-latest";
|
|
48
|
+
};
|
|
49
|
+
readonly "gemini-pro": {
|
|
50
|
+
readonly gemini: "gemini-1.5-pro-001";
|
|
51
|
+
readonly vertexai: "gemini-1.5-pro-001";
|
|
52
|
+
readonly openrouter: "google/gemini-1.5-pro-001";
|
|
53
|
+
};
|
|
54
|
+
readonly "gemini-1.5-flash": {
|
|
55
|
+
readonly gemini: "gemini-1.5-flash-001";
|
|
56
|
+
readonly vertexai: "gemini-1.5-flash-001";
|
|
57
|
+
readonly openrouter: "google/gemini-1.5-flash-001";
|
|
58
|
+
};
|
|
59
|
+
readonly "gemini-1.5-pro": {
|
|
60
|
+
readonly gemini: "gemini-1.5-pro-001";
|
|
61
|
+
readonly vertexai: "gemini-1.5-pro-001";
|
|
62
|
+
readonly openrouter: "google/gemini-1.5-pro-001";
|
|
63
|
+
};
|
|
64
|
+
readonly "gemini-2.0-flash": {
|
|
65
|
+
readonly gemini: "gemini-2.0-flash";
|
|
66
|
+
readonly vertexai: "gemini-2.0-flash";
|
|
67
|
+
};
|
|
68
|
+
readonly "gemini-2.0-flash-001": {
|
|
69
|
+
readonly gemini: "gemini-2.0-flash-001";
|
|
70
|
+
readonly openrouter: "google/gemini-2.0-flash-001";
|
|
71
|
+
readonly vertexai: "gemini-2.0-flash-001";
|
|
72
|
+
};
|
|
73
|
+
readonly "gpt-3.5-turbo": {
|
|
74
|
+
readonly openai: "gpt-3.5-turbo";
|
|
75
|
+
readonly openrouter: "openai/gpt-3.5-turbo";
|
|
76
|
+
};
|
|
77
|
+
readonly "gpt-4": {
|
|
78
|
+
readonly openai: "gpt-4";
|
|
79
|
+
readonly openrouter: "openai/gpt-4";
|
|
80
|
+
};
|
|
81
|
+
readonly "gpt-4-turbo": {
|
|
82
|
+
readonly openai: "gpt-4-turbo";
|
|
83
|
+
readonly openrouter: "openai/gpt-4-turbo";
|
|
84
|
+
};
|
|
85
|
+
readonly "gpt-4o": {
|
|
86
|
+
readonly openai: "gpt-4o";
|
|
87
|
+
readonly openrouter: "openai/gpt-4o";
|
|
88
|
+
};
|
|
89
|
+
readonly "gpt-4o-mini": {
|
|
90
|
+
readonly openai: "gpt-4o-mini";
|
|
91
|
+
readonly openrouter: "openai/gpt-4o-mini";
|
|
92
|
+
};
|
|
93
|
+
readonly "llama-3-1-405b": {
|
|
94
|
+
readonly openrouter: "meta-llama/llama-3.1-405b";
|
|
95
|
+
};
|
|
96
|
+
readonly "llama-3-1-405b-instruct": {
|
|
97
|
+
readonly openrouter: "meta-llama/llama-3.1-405b-instruct";
|
|
98
|
+
};
|
|
99
|
+
readonly "llama-3-1-70b": {
|
|
100
|
+
readonly openrouter: "meta-llama/llama-3.1-70b";
|
|
101
|
+
};
|
|
102
|
+
readonly "llama-3-1-70b-instruct": {
|
|
103
|
+
readonly openrouter: "meta-llama/llama-3.1-70b-instruct";
|
|
104
|
+
};
|
|
105
|
+
readonly "llama-3-1-8b": {
|
|
106
|
+
readonly openrouter: "meta-llama/llama-3.1-8b";
|
|
107
|
+
};
|
|
108
|
+
readonly "llama-3-1-8b-instruct": {
|
|
109
|
+
readonly openrouter: "meta-llama/llama-3.1-8b-instruct";
|
|
110
|
+
};
|
|
111
|
+
readonly "llama-3-2-1b-instruct": {
|
|
112
|
+
readonly openrouter: "meta-llama/llama-3.2-1b-instruct";
|
|
113
|
+
};
|
|
114
|
+
readonly "llama-3-2-3b-instruct": {
|
|
115
|
+
readonly openrouter: "meta-llama/llama-3.2-3b-instruct";
|
|
116
|
+
};
|
|
117
|
+
readonly "llama-3-3-70b-instruct": {
|
|
118
|
+
readonly openrouter: "meta-llama/llama-3.3-70b-instruct";
|
|
119
|
+
};
|
|
120
|
+
readonly "mistral-large": {
|
|
121
|
+
readonly mistral: "mistral-large-latest";
|
|
122
|
+
readonly openrouter: "mistralai/mistral-large";
|
|
123
|
+
};
|
|
124
|
+
readonly "mistral-medium": {
|
|
125
|
+
readonly mistral: "mistral-medium-latest";
|
|
126
|
+
readonly openrouter: "mistralai/mistral-medium";
|
|
127
|
+
};
|
|
128
|
+
readonly "mistral-small": {
|
|
129
|
+
readonly mistral: "mistral-small-latest";
|
|
130
|
+
readonly openrouter: "mistralai/mistral-small";
|
|
131
|
+
};
|
|
132
|
+
};
|
|
133
|
+
export default _default;
|
|
134
|
+
//# sourceMappingURL=aliases.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"aliases.d.ts","sourceRoot":"","sources":["../src/aliases.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,wBAmIW"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
{
|
|
1
|
+
export default {
|
|
2
2
|
"chatgpt-4o": {
|
|
3
3
|
"openai": "chatgpt-4o-latest",
|
|
4
4
|
"openrouter": "openai/chatgpt-4o-latest"
|
|
@@ -13,6 +13,12 @@
|
|
|
13
13
|
"openrouter": "anthropic/claude-3.5-sonnet",
|
|
14
14
|
"bedrock": "anthropic.claude-3-5-sonnet-20240620-v1:0"
|
|
15
15
|
},
|
|
16
|
+
"claude-sonnet-4-5": {
|
|
17
|
+
"anthropic": "claude-sonnet-4-5-20250929"
|
|
18
|
+
},
|
|
19
|
+
"claude-sonnet-4": {
|
|
20
|
+
"anthropic": "claude-sonnet-4-20250514"
|
|
21
|
+
},
|
|
16
22
|
"claude-3-7-sonnet": {
|
|
17
23
|
"anthropic": "claude-3-7-sonnet-20250219",
|
|
18
24
|
"openrouter": "anthropic/claude-3.7-sonnet",
|
|
@@ -123,4 +129,4 @@
|
|
|
123
129
|
"mistral": "mistral-small-latest",
|
|
124
130
|
"openrouter": "mistralai/mistral-small"
|
|
125
131
|
}
|
|
126
|
-
}
|
|
132
|
+
};
|
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":"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
|
|
1
|
+
{"version":3,"file":"Chat.d.ts","sourceRoot":"","sources":["../../src/chat/Chat.ts"],"names":[],"mappings":"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"}
|
package/dist/chat/Chat.js
CHANGED
|
@@ -296,7 +296,7 @@ export class Chat {
|
|
|
296
296
|
this.options.onNewMessage();
|
|
297
297
|
let response = await this.executor.executeChat(executeOptions);
|
|
298
298
|
trackUsage(response.usage);
|
|
299
|
-
const firstAssistantMessage = new ChatResponseString(response.content ?? "", response.usage ?? { input_tokens: 0, output_tokens: 0, total_tokens: 0 }, this.model, response.reasoning);
|
|
299
|
+
const firstAssistantMessage = new ChatResponseString(response.content ?? "", response.usage ?? { input_tokens: 0, output_tokens: 0, total_tokens: 0 }, this.model, this.provider.id, response.reasoning);
|
|
300
300
|
this.messages.push({
|
|
301
301
|
role: "assistant",
|
|
302
302
|
content: firstAssistantMessage,
|
|
@@ -346,7 +346,7 @@ export class Chat {
|
|
|
346
346
|
headers: this.options.headers,
|
|
347
347
|
});
|
|
348
348
|
trackUsage(response.usage);
|
|
349
|
-
const assistantMessage = new ChatResponseString(response.content ?? "", response.usage ?? { input_tokens: 0, output_tokens: 0, total_tokens: 0 }, this.model, response.reasoning);
|
|
349
|
+
const assistantMessage = new ChatResponseString(response.content ?? "", response.usage ?? { input_tokens: 0, output_tokens: 0, total_tokens: 0 }, this.model, this.provider.id, response.reasoning);
|
|
350
350
|
this.messages.push({
|
|
351
351
|
role: "assistant",
|
|
352
352
|
content: assistantMessage,
|
|
@@ -359,7 +359,7 @@ export class Chat {
|
|
|
359
359
|
}
|
|
360
360
|
// For the final return, we might want to aggregate reasoning too if it happened in multiple turns?
|
|
361
361
|
// Usually reasoning only happens once or we just want the last one.
|
|
362
|
-
return new ChatResponseString(response.content ?? "", totalUsage, this.model, response.reasoning);
|
|
362
|
+
return new ChatResponseString(response.content ?? "", totalUsage, this.model, this.provider.id, response.reasoning);
|
|
363
363
|
}
|
|
364
364
|
/**
|
|
365
365
|
* Streams the model's response to a user question.
|
|
@@ -6,8 +6,9 @@ import { Usage } from "../providers/Provider.js";
|
|
|
6
6
|
export declare class ChatResponseString extends String {
|
|
7
7
|
readonly usage: Usage;
|
|
8
8
|
readonly model: string;
|
|
9
|
+
readonly provider: string;
|
|
9
10
|
readonly reasoning?: string | null | undefined;
|
|
10
|
-
constructor(content: string, usage: Usage, model: string, reasoning?: string | null | undefined);
|
|
11
|
+
constructor(content: string, usage: Usage, model: string, provider: string, reasoning?: string | null | undefined);
|
|
11
12
|
get input_tokens(): number;
|
|
12
13
|
get output_tokens(): number;
|
|
13
14
|
get total_tokens(): number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ChatResponse.d.ts","sourceRoot":"","sources":["../../src/chat/ChatResponse.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,0BAA0B,CAAC;AAEjD;;;GAGG;AACH,qBAAa,kBAAmB,SAAQ,MAAM;aAG1B,KAAK,EAAE,KAAK;aACZ,KAAK,EAAE,MAAM;aACb,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI;
|
|
1
|
+
{"version":3,"file":"ChatResponse.d.ts","sourceRoot":"","sources":["../../src/chat/ChatResponse.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,0BAA0B,CAAC;AAEjD;;;GAGG;AACH,qBAAa,kBAAmB,SAAQ,MAAM;aAG1B,KAAK,EAAE,KAAK;aACZ,KAAK,EAAE,MAAM;aACb,QAAQ,EAAE,MAAM;aAChB,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI;gBAJzC,OAAO,EAAE,MAAM,EACC,KAAK,EAAE,KAAK,EACZ,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,MAAM,EAChB,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,YAAA;IAK3C,IAAI,YAAY,WAAsC;IACtD,IAAI,aAAa,WAAuC;IACxD,IAAI,YAAY,WAAsC;IACtD,IAAI,aAAa,uBAAuC;IACxD,IAAI,IAAI,uBAA8B;IACtC,IAAI,UAAU,uBAAoC;IAClD,IAAI,WAAW,uBAAqC;IAEpD,IAAI,OAAO,IAAI,MAAM,CAEpB;IAED,IAAI,QAAQ,IAAI,MAAM,CAErB;IAED,QAAQ;IAIR;;;OAGG;IACH,IAAI,MAAM,IAAI,GAAG,CAMhB;CACF"}
|
|
@@ -5,11 +5,13 @@
|
|
|
5
5
|
export class ChatResponseString extends String {
|
|
6
6
|
usage;
|
|
7
7
|
model;
|
|
8
|
+
provider;
|
|
8
9
|
reasoning;
|
|
9
|
-
constructor(content, usage, model, reasoning) {
|
|
10
|
+
constructor(content, usage, model, provider, reasoning) {
|
|
10
11
|
super(content);
|
|
11
12
|
this.usage = usage;
|
|
12
13
|
this.model = model;
|
|
14
|
+
this.provider = provider;
|
|
13
15
|
this.reasoning = reasoning;
|
|
14
16
|
}
|
|
15
17
|
get input_tokens() { return this.usage.input_tokens; }
|
package/dist/chat/ChatStream.js
CHANGED
|
@@ -86,13 +86,12 @@ export class ChatStream {
|
|
|
86
86
|
role: "assistant",
|
|
87
87
|
content: fullContent || null,
|
|
88
88
|
tool_calls: toolCalls,
|
|
89
|
-
// @ts-ignore
|
|
90
89
|
reasoning: fullReasoning || undefined
|
|
91
90
|
});
|
|
92
91
|
// If no tool calls, we're done
|
|
93
92
|
if (!toolCalls || toolCalls.length === 0) {
|
|
94
93
|
if (options.onEndMessage) {
|
|
95
|
-
options.onEndMessage(new ChatResponseString(fullContent, { input_tokens: 0, output_tokens: 0, total_tokens: 0 }, model, fullReasoning || undefined));
|
|
94
|
+
options.onEndMessage(new ChatResponseString(fullContent, { input_tokens: 0, output_tokens: 0, total_tokens: 0 }, model, provider.id, fullReasoning || undefined));
|
|
96
95
|
}
|
|
97
96
|
break;
|
|
98
97
|
}
|
package/dist/chat/Message.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Message.d.ts","sourceRoot":"","sources":["../../src/chat/Message.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AACrC,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,KAAK,EAAE,MAAM,0BAA0B,CAAC;AAEjD,MAAM,WAAW,OAAO;IACtB,IAAI,EAAE,IAAI,CAAC;IACX,OAAO,EAAE,cAAc,GAAG,IAAI,CAAC;IAC/B,UAAU,CAAC,EAAE,QAAQ,EAAE,CAAC;IACxB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"Message.d.ts","sourceRoot":"","sources":["../../src/chat/Message.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AACrC,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,KAAK,EAAE,MAAM,0BAA0B,CAAC;AAEjD,MAAM,WAAW,OAAO;IACtB,IAAI,EAAE,IAAI,CAAC;IACX,OAAO,EAAE,cAAc,GAAG,IAAI,CAAC;IAC/B,UAAU,CAAC,EAAE,QAAQ,EAAE,CAAC;IACxB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,KAAK,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB"}
|
package/dist/config.d.ts
CHANGED
|
@@ -14,6 +14,7 @@ export interface NodeLLMConfig {
|
|
|
14
14
|
ollamaApiBase?: string;
|
|
15
15
|
openrouterApiKey?: string;
|
|
16
16
|
openrouterApiBase?: string;
|
|
17
|
+
debug?: boolean;
|
|
17
18
|
}
|
|
18
19
|
declare class Configuration implements NodeLLMConfig {
|
|
19
20
|
openaiApiKey?: string;
|
|
@@ -27,6 +28,7 @@ declare class Configuration implements NodeLLMConfig {
|
|
|
27
28
|
ollamaApiBase?: string;
|
|
28
29
|
openrouterApiKey?: string;
|
|
29
30
|
openrouterApiBase?: string;
|
|
31
|
+
debug?: boolean;
|
|
30
32
|
}
|
|
31
33
|
export declare const config: Configuration;
|
|
32
34
|
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;
|
|
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;CACjB;AAED,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,CAAsE;IAC5F,gBAAgB,CAAC,EAAE,MAAM,CAA0C;IACnE,iBAAiB,CAAC,EAAE,MAAM,CAA2C;IACrE,KAAK,CAAC,EAAE,OAAO,CAAwC;CAC/D;AAED,eAAO,MAAM,MAAM,eAAsB,CAAC"}
|
package/dist/config.js
CHANGED
|
@@ -10,5 +10,6 @@ class Configuration {
|
|
|
10
10
|
ollamaApiBase = process.env.OLLAMA_API_BASE?.trim() || "http://localhost:11434/v1";
|
|
11
11
|
openrouterApiKey = process.env.OPENROUTER_API_KEY?.trim();
|
|
12
12
|
openrouterApiBase = process.env.OPENROUTER_API_BASE?.trim();
|
|
13
|
+
debug = process.env.NODELLM_DEBUG === "true";
|
|
13
14
|
}
|
|
14
15
|
export const config = new Configuration();
|
package/dist/index.d.ts
CHANGED
|
@@ -12,4 +12,7 @@ export { config } from "./config.js";
|
|
|
12
12
|
export type { NodeLLMConfig } from "./config.js";
|
|
13
13
|
export { providerRegistry } from "./providers/registry.js";
|
|
14
14
|
export { Schema } from "./schema/Schema.js";
|
|
15
|
+
export { BaseProvider } from "./providers/BaseProvider.js";
|
|
16
|
+
export { resolveModelAlias } from "./model_aliases.js";
|
|
17
|
+
export { default as MODEL_ALIASES } from "./aliases.js";
|
|
15
18
|
//# 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;
|
|
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"}
|
package/dist/index.js
CHANGED
|
@@ -11,3 +11,6 @@ export { NodeLLM, Transcription, Moderation, Embedding } from "./llm.js";
|
|
|
11
11
|
export { config } from "./config.js";
|
|
12
12
|
export { providerRegistry } from "./providers/registry.js";
|
|
13
13
|
export { Schema } from "./schema/Schema.js";
|
|
14
|
+
export { BaseProvider } from "./providers/BaseProvider.js";
|
|
15
|
+
export { resolveModelAlias } from "./model_aliases.js";
|
|
16
|
+
export { default as MODEL_ALIASES } from "./aliases.js";
|
package/dist/llm.d.ts
CHANGED
|
@@ -37,6 +37,9 @@ export declare class NodeLLMCore {
|
|
|
37
37
|
* This respects the current global configuration but avoids side effects
|
|
38
38
|
* on the main NodeLLM singleton.
|
|
39
39
|
*
|
|
40
|
+
* @param providerName - The provider to use (e.g., "openai", "anthropic")
|
|
41
|
+
* @param scopedConfig - Optional configuration overrides for this scoped instance
|
|
42
|
+
*
|
|
40
43
|
* @example
|
|
41
44
|
* ```ts
|
|
42
45
|
* const openai = NodeLLM.withProvider("openai");
|
|
@@ -48,8 +51,23 @@ export declare class NodeLLMCore {
|
|
|
48
51
|
* anthropic.chat("claude-3-5-sonnet").ask(prompt),
|
|
49
52
|
* ]);
|
|
50
53
|
* ```
|
|
54
|
+
*
|
|
55
|
+
* @example With scoped credentials
|
|
56
|
+
* ```ts
|
|
57
|
+
* const customAnthropic = NodeLLM.withProvider("anthropic", {
|
|
58
|
+
* anthropicApiKey: "sk-ant-custom-key"
|
|
59
|
+
* });
|
|
60
|
+
* ```
|
|
61
|
+
*/
|
|
62
|
+
withProvider(providerName: string, scopedConfig?: Partial<NodeLLMConfig>): NodeLLMCore;
|
|
63
|
+
/**
|
|
64
|
+
* Register a custom LLM provider.
|
|
65
|
+
* This allows you to extend NodeLLM with your own logic at runtime.
|
|
66
|
+
*
|
|
67
|
+
* @param name - Unique identifier for the provider
|
|
68
|
+
* @param factory - A function that returns a Provider instance
|
|
51
69
|
*/
|
|
52
|
-
|
|
70
|
+
registerProvider(name: string, factory: () => Provider): void;
|
|
53
71
|
configure(configOrCallback: LLMConfig | ((config: NodeLLMConfig) => void)): void;
|
|
54
72
|
private ensureProviderSupport;
|
|
55
73
|
chat(model?: string, options?: ChatOptions): Chat;
|
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;IAIxC
|
|
1
|
+
{"version":3,"file":"llm.d.ts","sourceRoot":"","sources":["../src/llm.ts"],"names":[],"mappings":"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"}
|
package/dist/llm.js
CHANGED
|
@@ -40,6 +40,9 @@ export class NodeLLMCore {
|
|
|
40
40
|
* This respects the current global configuration but avoids side effects
|
|
41
41
|
* on the main NodeLLM singleton.
|
|
42
42
|
*
|
|
43
|
+
* @param providerName - The provider to use (e.g., "openai", "anthropic")
|
|
44
|
+
* @param scopedConfig - Optional configuration overrides for this scoped instance
|
|
45
|
+
*
|
|
43
46
|
* @example
|
|
44
47
|
* ```ts
|
|
45
48
|
* const openai = NodeLLM.withProvider("openai");
|
|
@@ -51,12 +54,29 @@ export class NodeLLMCore {
|
|
|
51
54
|
* anthropic.chat("claude-3-5-sonnet").ask(prompt),
|
|
52
55
|
* ]);
|
|
53
56
|
* ```
|
|
57
|
+
*
|
|
58
|
+
* @example With scoped credentials
|
|
59
|
+
* ```ts
|
|
60
|
+
* const customAnthropic = NodeLLM.withProvider("anthropic", {
|
|
61
|
+
* anthropicApiKey: "sk-ant-custom-key"
|
|
62
|
+
* });
|
|
63
|
+
* ```
|
|
54
64
|
*/
|
|
55
|
-
withProvider(providerName) {
|
|
56
|
-
const scoped = new NodeLLMCore({ ...this.config });
|
|
65
|
+
withProvider(providerName, scopedConfig) {
|
|
66
|
+
const scoped = new NodeLLMCore({ ...this.config, ...scopedConfig });
|
|
57
67
|
scoped.configure({ provider: providerName });
|
|
58
68
|
return scoped;
|
|
59
69
|
}
|
|
70
|
+
/**
|
|
71
|
+
* Register a custom LLM provider.
|
|
72
|
+
* This allows you to extend NodeLLM with your own logic at runtime.
|
|
73
|
+
*
|
|
74
|
+
* @param name - Unique identifier for the provider
|
|
75
|
+
* @param factory - A function that returns a Provider instance
|
|
76
|
+
*/
|
|
77
|
+
registerProvider(name, factory) {
|
|
78
|
+
providerRegistry.register(name, factory);
|
|
79
|
+
}
|
|
60
80
|
configure(configOrCallback) {
|
|
61
81
|
// Callback style: for setting API keys
|
|
62
82
|
if (typeof configOrCallback === "function") {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"model_aliases.d.ts","sourceRoot":"","sources":["../src/model_aliases.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"model_aliases.d.ts","sourceRoot":"","sources":["../src/model_aliases.ts"],"names":[],"mappings":"AAIA,MAAM,MAAM,YAAY,GAAG,QAAQ,GAAG,WAAW,GAAG,QAAQ,GAAG,UAAU,GAAG,YAAY,GAAG,SAAS,GAAG,UAAU,GAAG,SAAS,GAAG,MAAM,CAAC;AAEvI,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,YAAY,GAAG,MAAM,CAiBhF"}
|
package/dist/model_aliases.js
CHANGED
|
@@ -1,20 +1,17 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
// @ts-ignore
|
|
4
|
-
import aliases from "./aliases.json" assert { type: "json" };
|
|
1
|
+
import aliases from "./aliases.js";
|
|
2
|
+
import { logger } from "./utils/logger.js";
|
|
5
3
|
export function resolveModelAlias(alias, provider) {
|
|
6
4
|
if (!provider) {
|
|
7
5
|
return alias;
|
|
8
6
|
}
|
|
9
|
-
// Check if the alias exists in our registry
|
|
10
7
|
const aliasEntry = aliases[alias];
|
|
11
8
|
if (aliasEntry) {
|
|
12
|
-
// Check if there is a specific mapping for this provider
|
|
13
9
|
if (aliasEntry[provider.toLowerCase()]) {
|
|
14
|
-
|
|
10
|
+
const resolved = aliasEntry[provider.toLowerCase()];
|
|
11
|
+
logger.debug(`Resolved model alias '${alias}' → '${resolved}' for provider '${provider}'`);
|
|
12
|
+
return resolved;
|
|
15
13
|
}
|
|
16
14
|
}
|
|
17
|
-
|
|
18
|
-
// This allows users to pass raw model IDs that aren't in our alias list.
|
|
15
|
+
logger.debug(`No alias mapping found for '${alias}' with provider '${provider}', using as-is`);
|
|
19
16
|
return alias;
|
|
20
17
|
}
|
|
@@ -7,7 +7,6 @@ import { Provider, ChatRequest, ChatResponse, ChatChunk, ModelInfo, ImageRequest
|
|
|
7
7
|
export declare abstract class BaseProvider implements Provider {
|
|
8
8
|
abstract apiBase(): string;
|
|
9
9
|
abstract headers(): Record<string, string>;
|
|
10
|
-
abstract headers(): Record<string, string>;
|
|
11
10
|
protected abstract providerName(): string;
|
|
12
11
|
get id(): string;
|
|
13
12
|
defaultModel(feature?: string): string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BaseProvider.d.ts","sourceRoot":"","sources":["../../src/providers/BaseProvider.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,EACR,WAAW,EACX,YAAY,EACZ,SAAS,EACT,SAAS,EACT,YAAY,EACZ,aAAa,EACb,oBAAoB,EACpB,qBAAqB,EACrB,iBAAiB,EACjB,kBAAkB,EAClB,gBAAgB,EAChB,iBAAiB,EAClB,MAAM,eAAe,CAAC;AAEvB;;;;GAIG;AACH,8BAAsB,YAAa,YAAW,QAAQ;aACpC,OAAO,IAAI,MAAM;aACjB,OAAO,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"BaseProvider.d.ts","sourceRoot":"","sources":["../../src/providers/BaseProvider.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,EACR,WAAW,EACX,YAAY,EACZ,SAAS,EACT,SAAS,EACT,YAAY,EACZ,aAAa,EACb,oBAAoB,EACpB,qBAAqB,EACrB,iBAAiB,EACjB,kBAAkB,EAClB,gBAAgB,EAChB,iBAAiB,EAClB,MAAM,eAAe,CAAC;AAEvB;;;;GAIG;AACH,8BAAsB,YAAa,YAAW,QAAQ;aACpC,OAAO,IAAI,MAAM;aACjB,OAAO,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;IACjD,SAAS,CAAC,QAAQ,CAAC,YAAY,IAAI,MAAM;IAEzC,IAAI,EAAE,IAAI,MAAM,CAEf;IAEM,YAAY,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM;IAI7C,SAAS,CAAC,qBAAqB,CAAC,OAAO,EAAE,MAAM,GAAG,KAAK;IAIvD,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,YAAY,CAAC;IAC1D,QAAQ,CAAC,YAAY,CAAC,EAAE,GAAG,CAAC;IAErB,MAAM,CAAC,CAAC,OAAO,EAAE,WAAW,GAAG,aAAa,CAAC,SAAS,CAAC;IAIxD,UAAU,CAAC,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;IAInC,KAAK,CAAC,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,aAAa,CAAC;IAIrD,UAAU,CAAC,CAAC,OAAO,EAAE,oBAAoB,GAAG,OAAO,CAAC,qBAAqB,CAAC;IAI1E,QAAQ,CAAC,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAIlE,KAAK,CAAC,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,iBAAiB,CAAC;CAGpE"}
|
|
@@ -42,7 +42,7 @@ export class AnthropicProvider extends BaseProvider {
|
|
|
42
42
|
return "Anthropic";
|
|
43
43
|
}
|
|
44
44
|
defaultModel(feature) {
|
|
45
|
-
return "claude-3-5-
|
|
45
|
+
return "claude-3-5-haiku-20241022";
|
|
46
46
|
}
|
|
47
47
|
async chat(request) {
|
|
48
48
|
return this.chatHandler.execute(request);
|
package/dist/utils/logger.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":"AAEA,cAAM,MAAM;IACV,OAAO,CAAC,cAAc;IAItB,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,GAAG,GAAG,IAAI;IAOxC;;OAEG;IACH,UAAU,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,GAAG,GAAG,IAAI;IAS3E;;OAEG;IACH,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,GAAG,GAAG,IAAI;IASnF,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAI3B,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,KAAK,GAAG,IAAI;IAI3C,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;CAG5B;AAED,eAAO,MAAM,MAAM,QAAe,CAAC"}
|
package/dist/utils/logger.js
CHANGED
|
@@ -1,9 +1,7 @@
|
|
|
1
|
-
|
|
2
|
-
* Centralized logger for`NodeLLM`
|
|
3
|
-
*/
|
|
1
|
+
import { config } from "../config.js";
|
|
4
2
|
class Logger {
|
|
5
3
|
isDebugEnabled() {
|
|
6
|
-
return process.env.NODELLM_DEBUG === "true";
|
|
4
|
+
return process.env.NODELLM_DEBUG === "true" || config.debug === true;
|
|
7
5
|
}
|
|
8
6
|
debug(message, data) {
|
|
9
7
|
if (this.isDebugEnabled()) {
|