@node-llm/core 1.17.1 → 1.19.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 +14 -11
- package/dist/agent/Agent.d.ts +41 -14
- package/dist/agent/Agent.d.ts.map +1 -1
- package/dist/agent/Agent.js +12 -3
- package/dist/aliases.d.ts +477 -283
- package/dist/aliases.d.ts.map +1 -1
- package/dist/aliases.js +546 -352
- package/dist/chat/Chat.d.ts +23 -13
- package/dist/chat/Chat.d.ts.map +1 -1
- package/dist/chat/Chat.js +59 -16
- package/dist/chat/ChatOptions.d.ts +28 -11
- package/dist/chat/ChatOptions.d.ts.map +1 -1
- package/dist/chat/ChatResponse.d.ts +5 -0
- package/dist/chat/ChatResponse.d.ts.map +1 -1
- package/dist/chat/ChatResponse.js +12 -4
- package/dist/chat/ChatStream.d.ts.map +1 -1
- package/dist/chat/ChatStream.js +20 -10
- package/dist/chat/PromptCache.d.ts +7 -0
- package/dist/chat/PromptCache.d.ts.map +1 -0
- package/dist/chat/PromptCache.js +7 -0
- package/dist/chat/Temperature.d.ts +7 -0
- package/dist/chat/Temperature.d.ts.map +1 -0
- package/dist/chat/Temperature.js +17 -0
- package/dist/chat/Tool.d.ts +52 -8
- package/dist/chat/Tool.d.ts.map +1 -1
- package/dist/chat/Tool.js +53 -5
- package/dist/chat/ToolCallOutcome.d.ts +18 -6
- package/dist/chat/ToolCallOutcome.d.ts.map +1 -1
- package/dist/chat/ToolCallOutcome.js +14 -0
- package/dist/chat/ToolHandler.d.ts +2 -2
- package/dist/chat/ToolHandler.d.ts.map +1 -1
- package/dist/chat/ToolResultWindow.d.ts +16 -0
- package/dist/chat/ToolResultWindow.d.ts.map +1 -0
- package/dist/chat/ToolResultWindow.js +25 -0
- package/dist/config.d.ts +42 -2
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +80 -27
- package/dist/constants.d.ts +7 -0
- package/dist/constants.d.ts.map +1 -1
- package/dist/constants.js +3 -1
- package/dist/errors/billing.d.ts +7 -0
- package/dist/errors/billing.d.ts.map +1 -0
- package/dist/errors/billing.js +24 -0
- package/dist/errors/index.d.ts +28 -0
- package/dist/errors/index.d.ts.map +1 -1
- package/dist/errors/index.js +32 -0
- package/dist/executor/Executor.d.ts.map +1 -1
- package/dist/executor/Executor.js +5 -3
- package/dist/index.d.ts +12 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -1
- package/dist/judge/Judge.d.ts +107 -0
- package/dist/judge/Judge.d.ts.map +1 -0
- package/dist/judge/Judge.js +104 -0
- package/dist/judge/Judgment.d.ts +116 -0
- package/dist/judge/Judgment.d.ts.map +1 -0
- package/dist/judge/Judgment.js +159 -0
- package/dist/judge/Question.d.ts +91 -0
- package/dist/judge/Question.d.ts.map +1 -0
- package/dist/judge/Question.js +180 -0
- package/dist/llm.d.ts +48 -1
- package/dist/llm.d.ts.map +1 -1
- package/dist/llm.js +111 -5
- package/dist/models/ModelRegistry.d.ts +23 -19
- package/dist/models/ModelRegistry.d.ts.map +1 -1
- package/dist/models/ModelRegistry.js +28 -2
- package/dist/models/models.json +15154 -4786
- package/dist/models/types.d.ts +14 -1
- package/dist/models/types.d.ts.map +1 -1
- package/dist/providers/BaseProvider.d.ts +2 -1
- package/dist/providers/BaseProvider.d.ts.map +1 -1
- package/dist/providers/BaseProvider.js +3 -0
- package/dist/providers/Provider.d.ts +60 -1
- package/dist/providers/Provider.d.ts.map +1 -1
- package/dist/providers/anthropic/AnthropicProvider.d.ts +2 -0
- package/dist/providers/anthropic/AnthropicProvider.d.ts.map +1 -1
- package/dist/providers/anthropic/AnthropicProvider.js +2 -0
- package/dist/providers/anthropic/Capabilities.d.ts +1 -0
- package/dist/providers/anthropic/Capabilities.d.ts.map +1 -1
- package/dist/providers/anthropic/Capabilities.js +3 -0
- package/dist/providers/anthropic/Chat.d.ts.map +1 -1
- package/dist/providers/anthropic/Chat.js +7 -75
- package/dist/providers/anthropic/Errors.d.ts.map +1 -1
- package/dist/providers/anthropic/Errors.js +4 -3
- package/dist/providers/anthropic/Streaming.d.ts.map +1 -1
- package/dist/providers/anthropic/Streaming.js +4 -66
- package/dist/providers/anthropic/Utils.d.ts +33 -1
- package/dist/providers/anthropic/Utils.d.ts.map +1 -1
- package/dist/providers/anthropic/Utils.js +114 -0
- package/dist/providers/anthropic/types.d.ts +17 -3
- package/dist/providers/anthropic/types.d.ts.map +1 -1
- package/dist/providers/azure/AzureProvider.d.ts +54 -0
- package/dist/providers/azure/AzureProvider.d.ts.map +1 -0
- package/dist/providers/azure/AzureProvider.js +110 -0
- package/dist/providers/azure/Capabilities.d.ts +16 -0
- package/dist/providers/azure/Capabilities.d.ts.map +1 -0
- package/dist/providers/azure/Capabilities.js +36 -0
- package/dist/providers/azure/Embedding.d.ts +11 -0
- package/dist/providers/azure/Embedding.d.ts.map +1 -0
- package/dist/providers/azure/Embedding.js +23 -0
- package/dist/providers/azure/Models.d.ts +18 -0
- package/dist/providers/azure/Models.d.ts.map +1 -0
- package/dist/providers/azure/Models.js +29 -0
- package/dist/providers/azure/index.d.ts +5 -0
- package/dist/providers/azure/index.d.ts.map +1 -0
- package/dist/providers/azure/index.js +28 -0
- package/dist/providers/bedrock/BedrockProvider.d.ts.map +1 -1
- package/dist/providers/bedrock/BedrockProvider.js +1 -0
- package/dist/providers/bedrock/Capabilities.d.ts +1 -0
- package/dist/providers/bedrock/Capabilities.d.ts.map +1 -1
- package/dist/providers/bedrock/Capabilities.js +3 -0
- package/dist/providers/bedrock/Chat.d.ts.map +1 -1
- package/dist/providers/bedrock/Chat.js +6 -2
- package/dist/providers/bedrock/Errors.d.ts.map +1 -1
- package/dist/providers/bedrock/Errors.js +4 -0
- package/dist/providers/bedrock/Streaming.d.ts.map +1 -1
- package/dist/providers/bedrock/Streaming.js +4 -1
- package/dist/providers/deepseek/Capabilities.d.ts +1 -0
- package/dist/providers/deepseek/Capabilities.d.ts.map +1 -1
- package/dist/providers/deepseek/Capabilities.js +3 -0
- package/dist/providers/deepseek/Chat.d.ts.map +1 -1
- package/dist/providers/deepseek/Chat.js +3 -2
- 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/Errors.d.ts.map +1 -1
- package/dist/providers/deepseek/Errors.js +5 -4
- package/dist/providers/gemini/Capabilities.d.ts +1 -0
- package/dist/providers/gemini/Capabilities.d.ts.map +1 -1
- package/dist/providers/gemini/Capabilities.js +3 -0
- package/dist/providers/gemini/Chat.d.ts.map +1 -1
- package/dist/providers/gemini/Chat.js +3 -2
- package/dist/providers/gemini/Errors.d.ts.map +1 -1
- package/dist/providers/gemini/Errors.js +4 -3
- 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/mistral/Capabilities.d.ts +1 -0
- package/dist/providers/mistral/Capabilities.d.ts.map +1 -1
- package/dist/providers/mistral/Capabilities.js +3 -0
- package/dist/providers/mistral/Chat.d.ts.map +1 -1
- package/dist/providers/mistral/Chat.js +3 -2
- package/dist/providers/mistral/Errors.d.ts.map +1 -1
- package/dist/providers/mistral/Errors.js +4 -3
- package/dist/providers/mistral/MistralProvider.d.ts +1 -0
- package/dist/providers/mistral/MistralProvider.d.ts.map +1 -1
- package/dist/providers/mistral/MistralProvider.js +1 -0
- 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 +6 -0
- package/dist/providers/openai/Capabilities.d.ts.map +1 -1
- package/dist/providers/openai/Capabilities.js +10 -0
- package/dist/providers/openai/Chat.d.ts +3 -0
- package/dist/providers/openai/Chat.d.ts.map +1 -1
- package/dist/providers/openai/Chat.js +26 -7
- package/dist/providers/openai/Embedding.d.ts +2 -0
- package/dist/providers/openai/Embedding.d.ts.map +1 -1
- package/dist/providers/openai/Embedding.js +8 -5
- package/dist/providers/openai/Errors.d.ts.map +1 -1
- package/dist/providers/openai/Errors.js +4 -3
- package/dist/providers/openai/Models.d.ts +10 -0
- package/dist/providers/openai/Models.d.ts.map +1 -1
- package/dist/providers/openai/Models.js +12 -8
- package/dist/providers/openai/OpenAIProvider.d.ts +11 -1
- package/dist/providers/openai/OpenAIProvider.d.ts.map +1 -1
- package/dist/providers/openai/OpenAIProvider.js +36 -0
- package/dist/providers/openai/Responses.d.ts +30 -0
- package/dist/providers/openai/Responses.d.ts.map +1 -0
- package/dist/providers/openai/Responses.js +176 -0
- package/dist/providers/openai/Streaming.d.ts +2 -0
- package/dist/providers/openai/Streaming.d.ts.map +1 -1
- package/dist/providers/openai/Streaming.js +19 -5
- package/dist/providers/openrouter/Capabilities.d.ts +1 -0
- package/dist/providers/openrouter/Capabilities.d.ts.map +1 -1
- package/dist/providers/openrouter/Capabilities.js +3 -0
- 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/registry.d.ts +3 -1
- package/dist/providers/registry.d.ts.map +1 -1
- package/dist/providers/registry.js +3 -1
- package/dist/providers/typesafe/SystemOne.d.ts +11 -0
- package/dist/providers/typesafe/SystemOne.d.ts.map +1 -0
- package/dist/providers/typesafe/SystemOne.js +171 -0
- package/dist/providers/typesafe/TypeSafeProvider.d.ts +27 -0
- package/dist/providers/typesafe/TypeSafeProvider.d.ts.map +1 -0
- package/dist/providers/typesafe/TypeSafeProvider.js +76 -0
- package/dist/providers/typesafe/index.d.ts +4 -0
- package/dist/providers/typesafe/index.d.ts.map +1 -0
- package/dist/providers/typesafe/index.js +19 -0
- package/dist/providers/xai/Capabilities.d.ts +1 -0
- package/dist/providers/xai/Capabilities.d.ts.map +1 -1
- package/dist/providers/xai/Capabilities.js +3 -0
- package/dist/providers/xai/Chat.d.ts.map +1 -1
- package/dist/providers/xai/Chat.js +3 -2
- package/dist/providers/xai/Errors.d.ts.map +1 -1
- package/dist/providers/xai/Errors.js +5 -2
- package/dist/providers/xai/XAIProvider.d.ts +1 -0
- package/dist/providers/xai/XAIProvider.d.ts.map +1 -1
- package/dist/providers/xai/XAIProvider.js +1 -0
- package/dist/schema/Schema.d.ts +3 -3
- package/dist/schema/Schema.d.ts.map +1 -1
- package/dist/schema/to-json-schema.d.ts +2 -2
- package/dist/schema/to-json-schema.d.ts.map +1 -1
- package/dist/schema/to-json-schema.js +3 -8
- package/dist/schema/zod.d.ts +32 -0
- package/dist/schema/zod.d.ts.map +1 -0
- package/dist/schema/zod.js +31 -0
- package/dist/types/Middleware.d.ts +9 -0
- package/dist/types/Middleware.d.ts.map +1 -1
- package/package.json +5 -3
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_TOOL_CONCURRENCY, 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_XAI_BASE_URL, DEFAULT_MISTRAL_BASE_URL, DEFAULT_BEDROCK_REGION } from "./constants.js";
|
|
1
|
+
import { DEFAULT_MAX_TOOL_CALLS, DEFAULT_MAX_RETRIES, DEFAULT_REQUEST_TIMEOUT, DEFAULT_MAX_TOKENS, DEFAULT_TOOL_EXECUTION, DEFAULT_TOOL_CONCURRENCY, 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_XAI_BASE_URL, DEFAULT_MISTRAL_BASE_URL, DEFAULT_TYPESAFE_BASE_URL, DEFAULT_BEDROCK_REGION } from "./constants.js";
|
|
2
2
|
export class Configuration {
|
|
3
3
|
_openaiApiKey;
|
|
4
4
|
_openaiApiBase;
|
|
@@ -15,6 +15,12 @@ export class Configuration {
|
|
|
15
15
|
_xaiApiBase;
|
|
16
16
|
_mistralApiKey;
|
|
17
17
|
_mistralApiBase;
|
|
18
|
+
_azureApiKey;
|
|
19
|
+
_azureApiBase;
|
|
20
|
+
_azureAuthToken;
|
|
21
|
+
_azureDeployments;
|
|
22
|
+
_typesafeApiKey;
|
|
23
|
+
_typesafeApiBase;
|
|
18
24
|
_bedrockApiKey;
|
|
19
25
|
_bedrockAccessKeyId;
|
|
20
26
|
_bedrockSecretAccessKey;
|
|
@@ -25,147 +31,194 @@ export class Configuration {
|
|
|
25
31
|
_bedrockGuardrailVersion;
|
|
26
32
|
_debug;
|
|
27
33
|
_provider;
|
|
34
|
+
_envFallback;
|
|
28
35
|
get openaiApiKey() {
|
|
29
|
-
return this._openaiApiKey ??
|
|
36
|
+
return this._openaiApiKey ?? this.fromEnv("OPENAI_API_KEY");
|
|
30
37
|
}
|
|
31
38
|
set openaiApiKey(v) {
|
|
32
39
|
this._openaiApiKey = v;
|
|
33
40
|
}
|
|
34
41
|
get openaiApiBase() {
|
|
35
|
-
return this._openaiApiBase ??
|
|
42
|
+
return this._openaiApiBase ?? this.fromEnv("OPENAI_API_BASE") ?? DEFAULT_OPENAI_BASE_URL;
|
|
36
43
|
}
|
|
37
44
|
set openaiApiBase(v) {
|
|
38
45
|
this._openaiApiBase = v;
|
|
39
46
|
}
|
|
40
47
|
get anthropicApiKey() {
|
|
41
|
-
return this._anthropicApiKey ??
|
|
48
|
+
return this._anthropicApiKey ?? this.fromEnv("ANTHROPIC_API_KEY");
|
|
42
49
|
}
|
|
43
50
|
set anthropicApiKey(v) {
|
|
44
51
|
this._anthropicApiKey = v;
|
|
45
52
|
}
|
|
46
53
|
get anthropicApiBase() {
|
|
47
|
-
return (this._anthropicApiBase ??
|
|
54
|
+
return (this._anthropicApiBase ?? this.fromEnv("ANTHROPIC_API_BASE") ?? DEFAULT_ANTHROPIC_BASE_URL);
|
|
48
55
|
}
|
|
49
56
|
set anthropicApiBase(v) {
|
|
50
57
|
this._anthropicApiBase = v;
|
|
51
58
|
}
|
|
52
59
|
get geminiApiKey() {
|
|
53
|
-
return this._geminiApiKey ??
|
|
60
|
+
return this._geminiApiKey ?? this.fromEnv("GEMINI_API_KEY");
|
|
54
61
|
}
|
|
55
62
|
set geminiApiKey(v) {
|
|
56
63
|
this._geminiApiKey = v;
|
|
57
64
|
}
|
|
58
65
|
get geminiApiBase() {
|
|
59
|
-
return this._geminiApiBase ??
|
|
66
|
+
return this._geminiApiBase ?? this.fromEnv("GEMINI_API_BASE") ?? DEFAULT_GEMINI_BASE_URL;
|
|
60
67
|
}
|
|
61
68
|
set geminiApiBase(v) {
|
|
62
69
|
this._geminiApiBase = v;
|
|
63
70
|
}
|
|
64
71
|
get deepseekApiKey() {
|
|
65
|
-
return this._deepseekApiKey ??
|
|
72
|
+
return this._deepseekApiKey ?? this.fromEnv("DEEPSEEK_API_KEY");
|
|
66
73
|
}
|
|
67
74
|
set deepseekApiKey(v) {
|
|
68
75
|
this._deepseekApiKey = v;
|
|
69
76
|
}
|
|
70
77
|
get deepseekApiBase() {
|
|
71
|
-
return
|
|
78
|
+
return this._deepseekApiBase ?? this.fromEnv("DEEPSEEK_API_BASE") ?? DEFAULT_DEEPSEEK_BASE_URL;
|
|
72
79
|
}
|
|
73
80
|
set deepseekApiBase(v) {
|
|
74
81
|
this._deepseekApiBase = v;
|
|
75
82
|
}
|
|
76
83
|
get ollamaApiBase() {
|
|
77
|
-
return this._ollamaApiBase ??
|
|
84
|
+
return this._ollamaApiBase ?? this.fromEnv("OLLAMA_API_BASE") ?? DEFAULT_OLLAMA_BASE_URL;
|
|
78
85
|
}
|
|
79
86
|
set ollamaApiBase(v) {
|
|
80
87
|
this._ollamaApiBase = v;
|
|
81
88
|
}
|
|
82
89
|
get openrouterApiKey() {
|
|
83
|
-
return this._openrouterApiKey ??
|
|
90
|
+
return this._openrouterApiKey ?? this.fromEnv("OPENROUTER_API_KEY");
|
|
84
91
|
}
|
|
85
92
|
set openrouterApiKey(v) {
|
|
86
93
|
this._openrouterApiKey = v;
|
|
87
94
|
}
|
|
88
95
|
get openrouterApiBase() {
|
|
89
|
-
return (this._openrouterApiBase ??
|
|
90
|
-
process.env.OPENROUTER_API_BASE?.trim() ??
|
|
91
|
-
DEFAULT_OPENROUTER_BASE_URL);
|
|
96
|
+
return (this._openrouterApiBase ?? this.fromEnv("OPENROUTER_API_BASE") ?? DEFAULT_OPENROUTER_BASE_URL);
|
|
92
97
|
}
|
|
93
98
|
set openrouterApiBase(v) {
|
|
94
99
|
this._openrouterApiBase = v;
|
|
95
100
|
}
|
|
96
101
|
get xaiApiKey() {
|
|
97
|
-
return this._xaiApiKey ??
|
|
102
|
+
return this._xaiApiKey ?? this.fromEnv("XAI_API_KEY");
|
|
98
103
|
}
|
|
99
104
|
set xaiApiKey(v) {
|
|
100
105
|
this._xaiApiKey = v;
|
|
101
106
|
}
|
|
102
107
|
get xaiApiBase() {
|
|
103
|
-
return this._xaiApiBase ??
|
|
108
|
+
return this._xaiApiBase ?? this.fromEnv("XAI_API_BASE") ?? DEFAULT_XAI_BASE_URL;
|
|
104
109
|
}
|
|
105
110
|
set xaiApiBase(v) {
|
|
106
111
|
this._xaiApiBase = v;
|
|
107
112
|
}
|
|
108
113
|
get mistralApiKey() {
|
|
109
|
-
return this._mistralApiKey ??
|
|
114
|
+
return this._mistralApiKey ?? this.fromEnv("MISTRAL_API_KEY");
|
|
110
115
|
}
|
|
111
116
|
set mistralApiKey(v) {
|
|
112
117
|
this._mistralApiKey = v;
|
|
113
118
|
}
|
|
114
119
|
get mistralApiBase() {
|
|
115
|
-
return this._mistralApiBase ??
|
|
120
|
+
return this._mistralApiBase ?? this.fromEnv("MISTRAL_API_BASE") ?? DEFAULT_MISTRAL_BASE_URL;
|
|
116
121
|
}
|
|
117
122
|
set mistralApiBase(v) {
|
|
118
123
|
this._mistralApiBase = v;
|
|
119
124
|
}
|
|
125
|
+
get azureApiKey() {
|
|
126
|
+
return this._azureApiKey ?? this.fromEnv("AZURE_API_KEY");
|
|
127
|
+
}
|
|
128
|
+
set azureApiKey(v) {
|
|
129
|
+
this._azureApiKey = v;
|
|
130
|
+
}
|
|
131
|
+
// No default: every Azure resource has its own address.
|
|
132
|
+
get azureApiBase() {
|
|
133
|
+
return this._azureApiBase ?? this.fromEnv("AZURE_API_BASE");
|
|
134
|
+
}
|
|
135
|
+
set azureApiBase(v) {
|
|
136
|
+
this._azureApiBase = v;
|
|
137
|
+
}
|
|
138
|
+
get azureAuthToken() {
|
|
139
|
+
return this._azureAuthToken ?? this.fromEnv("AZURE_AUTH_TOKEN");
|
|
140
|
+
}
|
|
141
|
+
set azureAuthToken(v) {
|
|
142
|
+
this._azureAuthToken = v;
|
|
143
|
+
}
|
|
144
|
+
get azureDeployments() {
|
|
145
|
+
return this._azureDeployments;
|
|
146
|
+
}
|
|
147
|
+
set azureDeployments(v) {
|
|
148
|
+
this._azureDeployments = v;
|
|
149
|
+
}
|
|
150
|
+
get typesafeApiKey() {
|
|
151
|
+
// TYPESAFE_API_KEY matches the provider's name; JEV_API_KEY is accepted too.
|
|
152
|
+
return this._typesafeApiKey ?? this.fromEnv("TYPESAFE_API_KEY") ?? this.fromEnv("JEV_API_KEY");
|
|
153
|
+
}
|
|
154
|
+
set typesafeApiKey(v) {
|
|
155
|
+
this._typesafeApiKey = v;
|
|
156
|
+
}
|
|
157
|
+
get typesafeApiBase() {
|
|
158
|
+
return this._typesafeApiBase ?? this.fromEnv("TYPESAFE_API_BASE") ?? DEFAULT_TYPESAFE_BASE_URL;
|
|
159
|
+
}
|
|
160
|
+
set typesafeApiBase(v) {
|
|
161
|
+
this._typesafeApiBase = v;
|
|
162
|
+
}
|
|
120
163
|
// AWS Bedrock configuration
|
|
121
164
|
get bedrockApiKey() {
|
|
122
|
-
return this._bedrockApiKey ??
|
|
165
|
+
return this._bedrockApiKey ?? this.fromEnv("AWS_BEARER_TOKEN_BEDROCK");
|
|
123
166
|
}
|
|
124
167
|
set bedrockApiKey(v) {
|
|
125
168
|
this._bedrockApiKey = v;
|
|
126
169
|
}
|
|
127
170
|
get bedrockAccessKeyId() {
|
|
128
|
-
return this._bedrockAccessKeyId ??
|
|
171
|
+
return this._bedrockAccessKeyId ?? this.fromEnv("AWS_ACCESS_KEY_ID");
|
|
129
172
|
}
|
|
130
173
|
set bedrockAccessKeyId(v) {
|
|
131
174
|
this._bedrockAccessKeyId = v;
|
|
132
175
|
}
|
|
133
176
|
get bedrockSecretAccessKey() {
|
|
134
|
-
return this._bedrockSecretAccessKey ??
|
|
177
|
+
return this._bedrockSecretAccessKey ?? this.fromEnv("AWS_SECRET_ACCESS_KEY");
|
|
135
178
|
}
|
|
136
179
|
set bedrockSecretAccessKey(v) {
|
|
137
180
|
this._bedrockSecretAccessKey = v;
|
|
138
181
|
}
|
|
139
182
|
get bedrockSessionToken() {
|
|
140
|
-
return this._bedrockSessionToken ??
|
|
183
|
+
return this._bedrockSessionToken ?? this.fromEnv("AWS_SESSION_TOKEN");
|
|
141
184
|
}
|
|
142
185
|
set bedrockSessionToken(v) {
|
|
143
186
|
this._bedrockSessionToken = v;
|
|
144
187
|
}
|
|
145
188
|
get bedrockRegion() {
|
|
146
|
-
return this._bedrockRegion ??
|
|
189
|
+
return this._bedrockRegion ?? this.fromEnv("AWS_REGION") ?? DEFAULT_BEDROCK_REGION;
|
|
147
190
|
}
|
|
148
191
|
set bedrockRegion(v) {
|
|
149
192
|
this._bedrockRegion = v;
|
|
150
193
|
}
|
|
151
194
|
get bedrockApiBase() {
|
|
152
|
-
return this._bedrockApiBase ??
|
|
195
|
+
return this._bedrockApiBase ?? this.fromEnv("BEDROCK_API_BASE");
|
|
153
196
|
}
|
|
154
197
|
set bedrockApiBase(v) {
|
|
155
198
|
this._bedrockApiBase = v;
|
|
156
199
|
}
|
|
157
200
|
get bedrockGuardrailIdentifier() {
|
|
158
|
-
return this._bedrockGuardrailIdentifier ??
|
|
201
|
+
return this._bedrockGuardrailIdentifier ?? this.fromEnv("AWS_GUARDRAIL_ID");
|
|
159
202
|
}
|
|
160
203
|
set bedrockGuardrailIdentifier(v) {
|
|
161
204
|
this._bedrockGuardrailIdentifier = v;
|
|
162
205
|
}
|
|
163
206
|
get bedrockGuardrailVersion() {
|
|
164
|
-
return this._bedrockGuardrailVersion ??
|
|
207
|
+
return this._bedrockGuardrailVersion ?? this.fromEnv("AWS_GUARDRAIL_VERSION");
|
|
165
208
|
}
|
|
166
209
|
set bedrockGuardrailVersion(v) {
|
|
167
210
|
this._bedrockGuardrailVersion = v;
|
|
168
211
|
}
|
|
212
|
+
get envFallback() {
|
|
213
|
+
return this._envFallback;
|
|
214
|
+
}
|
|
215
|
+
set envFallback(v) {
|
|
216
|
+
this._envFallback = v;
|
|
217
|
+
}
|
|
218
|
+
/** An environment variable, unless envFallback is false. */
|
|
219
|
+
fromEnv(name) {
|
|
220
|
+
return this._envFallback === false ? undefined : process.env[name]?.trim();
|
|
221
|
+
}
|
|
169
222
|
get debug() {
|
|
170
223
|
return this._debug ?? process.env.NODELLM_DEBUG === "true";
|
|
171
224
|
}
|
|
@@ -173,7 +226,7 @@ export class Configuration {
|
|
|
173
226
|
this._debug = v;
|
|
174
227
|
}
|
|
175
228
|
get provider() {
|
|
176
|
-
return this._provider ??
|
|
229
|
+
return this._provider ?? this.fromEnv("NODELLM_PROVIDER");
|
|
177
230
|
}
|
|
178
231
|
set provider(v) {
|
|
179
232
|
this._provider = v;
|
package/dist/constants.d.ts
CHANGED
|
@@ -6,6 +6,11 @@ export declare enum ToolExecutionMode {
|
|
|
6
6
|
export declare const DEFAULT_MAX_TOOL_CALLS = 5;
|
|
7
7
|
export declare const DEFAULT_MAX_CORRECTIONS = 5;
|
|
8
8
|
export declare const DEFAULT_MAX_RETRIES = 2;
|
|
9
|
+
/**
|
|
10
|
+
* A tool execution mode as callers may pass it: the enum member or its string
|
|
11
|
+
* value, so `withToolExecution("confirm")` compiles as the docs write it.
|
|
12
|
+
*/
|
|
13
|
+
export type ToolExecutionModeInput = ToolExecutionMode | `${ToolExecutionMode}`;
|
|
9
14
|
export declare const DEFAULT_TOOL_EXECUTION = ToolExecutionMode.AUTO;
|
|
10
15
|
export declare const DEFAULT_TOOL_CONCURRENCY = false;
|
|
11
16
|
export declare const DEFAULT_REQUEST_TIMEOUT = 30000;
|
|
@@ -18,11 +23,13 @@ export declare const DEFAULT_OPENROUTER_BASE_URL = "https://openrouter.ai/api/v1
|
|
|
18
23
|
export declare const DEFAULT_OLLAMA_BASE_URL = "http://localhost:11434/v1";
|
|
19
24
|
export declare const DEFAULT_XAI_BASE_URL = "https://api.x.ai/v1";
|
|
20
25
|
export declare const DEFAULT_MISTRAL_BASE_URL = "https://api.mistral.ai/v1";
|
|
26
|
+
export declare const DEFAULT_TYPESAFE_BASE_URL = "https://api.typesafe.ai";
|
|
21
27
|
export declare const DEFAULT_MODELS: {
|
|
22
28
|
readonly TRANSCRIPTION: "whisper-1";
|
|
23
29
|
readonly MODERATION: "omni-moderation-latest";
|
|
24
30
|
readonly EMBEDDING: "text-embedding-3-small";
|
|
25
31
|
readonly IMAGE: "dall-e-3";
|
|
32
|
+
readonly JUDGMENT: "jev-latest";
|
|
26
33
|
};
|
|
27
34
|
export declare const DEFAULT_BEDROCK_REGION = "us-east-1";
|
|
28
35
|
//# 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;AAGxC,eAAO,MAAM,uBAAuB,IAAI,CAAC;AACzC,eAAO,MAAM,mBAAmB,IAAI,CAAC;AACrC,eAAO,MAAM,sBAAsB,yBAAyB,CAAC;AAC7D,eAAO,MAAM,wBAAwB,QAAQ,CAAC;AAC9C,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;AACnE,eAAO,MAAM,oBAAoB,wBAAwB,CAAC;AAC1D,eAAO,MAAM,wBAAwB,8BAA8B,CAAC;AAEpE,eAAO,MAAM,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;AAGxC,eAAO,MAAM,uBAAuB,IAAI,CAAC;AACzC,eAAO,MAAM,mBAAmB,IAAI,CAAC;AACrC;;;GAGG;AACH,MAAM,MAAM,sBAAsB,GAAG,iBAAiB,GAAG,GAAG,iBAAiB,EAAE,CAAC;AAEhF,eAAO,MAAM,sBAAsB,yBAAyB,CAAC;AAC7D,eAAO,MAAM,wBAAwB,QAAQ,CAAC;AAC9C,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;AACnE,eAAO,MAAM,oBAAoB,wBAAwB,CAAC;AAC1D,eAAO,MAAM,wBAAwB,8BAA8B,CAAC;AAEpE,eAAO,MAAM,yBAAyB,4BAA4B,CAAC;AAEnE,eAAO,MAAM,cAAc;;;;;;CAMjB,CAAC;AAEX,eAAO,MAAM,sBAAsB,cAAc,CAAC"}
|
package/dist/constants.js
CHANGED
|
@@ -21,10 +21,12 @@ export const DEFAULT_OPENROUTER_BASE_URL = "https://openrouter.ai/api/v1";
|
|
|
21
21
|
export const DEFAULT_OLLAMA_BASE_URL = "http://localhost:11434/v1";
|
|
22
22
|
export const DEFAULT_XAI_BASE_URL = "https://api.x.ai/v1";
|
|
23
23
|
export const DEFAULT_MISTRAL_BASE_URL = "https://api.mistral.ai/v1";
|
|
24
|
+
export const DEFAULT_TYPESAFE_BASE_URL = "https://api.typesafe.ai";
|
|
24
25
|
export const DEFAULT_MODELS = {
|
|
25
26
|
TRANSCRIPTION: "whisper-1",
|
|
26
27
|
MODERATION: "omni-moderation-latest",
|
|
27
28
|
EMBEDDING: "text-embedding-3-small",
|
|
28
|
-
IMAGE: "dall-e-3"
|
|
29
|
+
IMAGE: "dall-e-3",
|
|
30
|
+
JUDGMENT: "jev-latest"
|
|
29
31
|
};
|
|
30
32
|
export const DEFAULT_BEDROCK_REGION = "us-east-1";
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Whether a provider's error means the account can't pay for the request, whatever status it
|
|
3
|
+
* arrived with: providers report this as 402, 400, 403 or 429. Every provider's error handler
|
|
4
|
+
* asks this first, so the same problem is an InsufficientQuotaError everywhere.
|
|
5
|
+
*/
|
|
6
|
+
export declare function isBillingProblem(status: number, message: string, code?: string): boolean;
|
|
7
|
+
//# sourceMappingURL=billing.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"billing.d.ts","sourceRoot":"","sources":["../../src/errors/billing.ts"],"names":[],"mappings":"AAcA;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAKxF"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
// Phrases providers use when an account is out of credit or its billing isn't set up. A plain
|
|
2
|
+
// "quota" isn't one of them: providers also use it for per-minute rate limits, which pass on their
|
|
3
|
+
// own and are worth retrying.
|
|
4
|
+
const BILLING_PHRASES = [
|
|
5
|
+
"credit balance",
|
|
6
|
+
"insufficient balance",
|
|
7
|
+
"insufficient credit",
|
|
8
|
+
"insufficient funds",
|
|
9
|
+
"out of credits",
|
|
10
|
+
"exceeded your current quota",
|
|
11
|
+
"billing",
|
|
12
|
+
"payment required"
|
|
13
|
+
];
|
|
14
|
+
/**
|
|
15
|
+
* Whether a provider's error means the account can't pay for the request, whatever status it
|
|
16
|
+
* arrived with: providers report this as 402, 400, 403 or 429. Every provider's error handler
|
|
17
|
+
* asks this first, so the same problem is an InsufficientQuotaError everywhere.
|
|
18
|
+
*/
|
|
19
|
+
export function isBillingProblem(status, message, code) {
|
|
20
|
+
if (status === 402 || code === "insufficient_quota")
|
|
21
|
+
return true;
|
|
22
|
+
const text = message.toLowerCase();
|
|
23
|
+
return BILLING_PHRASES.some((phrase) => text.includes(phrase));
|
|
24
|
+
}
|
package/dist/errors/index.d.ts
CHANGED
|
@@ -12,6 +12,7 @@
|
|
|
12
12
|
*
|
|
13
13
|
* @see ARCHITECTURE.md for error contract details
|
|
14
14
|
*/
|
|
15
|
+
import type { Usage } from "../providers/Provider.js";
|
|
15
16
|
/**
|
|
16
17
|
* Base class for all NodeLLM errors
|
|
17
18
|
*/
|
|
@@ -146,4 +147,31 @@ export declare class ToolError extends LLMError {
|
|
|
146
147
|
readonly fatal: boolean;
|
|
147
148
|
constructor(message: string, toolName?: string | undefined, fatal?: boolean);
|
|
148
149
|
}
|
|
150
|
+
/**
|
|
151
|
+
* Thrown when the model still wants to call tools after `maxToolCalls` rounds of tool calls.
|
|
152
|
+
* Its pending calls are answered with an error result, so the chat can be asked again.
|
|
153
|
+
*/
|
|
154
|
+
/**
|
|
155
|
+
* An ask spent its `maxCost` before finishing its tool loop. The tool calls it stopped before
|
|
156
|
+
* running are answered in the history, so the chat can be asked again.
|
|
157
|
+
*/
|
|
158
|
+
export declare class CostLimitError extends LLMError {
|
|
159
|
+
/** The limit, in US dollars */
|
|
160
|
+
readonly limit: number;
|
|
161
|
+
/** Usage of every request in the ask that reached the limit */
|
|
162
|
+
readonly usage: Usage;
|
|
163
|
+
constructor(
|
|
164
|
+
/** The limit, in US dollars */
|
|
165
|
+
limit: number,
|
|
166
|
+
/** Usage of every request in the ask that reached the limit */
|
|
167
|
+
usage: Usage);
|
|
168
|
+
}
|
|
169
|
+
export declare class ToolCallLimitError extends LLMError {
|
|
170
|
+
readonly limit: number;
|
|
171
|
+
/** Usage of every request in the ask that reached the limit */
|
|
172
|
+
readonly usage: Usage;
|
|
173
|
+
constructor(limit: number,
|
|
174
|
+
/** Usage of every request in the ask that reached the limit */
|
|
175
|
+
usage: Usage);
|
|
176
|
+
}
|
|
149
177
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/errors/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/errors/index.ts"],"names":[],"mappings":"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"}
|
package/dist/errors/index.js
CHANGED
|
@@ -213,3 +213,35 @@ export class ToolError extends LLMError {
|
|
|
213
213
|
this.name = "ToolError";
|
|
214
214
|
}
|
|
215
215
|
}
|
|
216
|
+
/**
|
|
217
|
+
* Thrown when the model still wants to call tools after `maxToolCalls` rounds of tool calls.
|
|
218
|
+
* Its pending calls are answered with an error result, so the chat can be asked again.
|
|
219
|
+
*/
|
|
220
|
+
/**
|
|
221
|
+
* An ask spent its `maxCost` before finishing its tool loop. The tool calls it stopped before
|
|
222
|
+
* running are answered in the history, so the chat can be asked again.
|
|
223
|
+
*/
|
|
224
|
+
export class CostLimitError extends LLMError {
|
|
225
|
+
limit;
|
|
226
|
+
usage;
|
|
227
|
+
constructor(
|
|
228
|
+
/** The limit, in US dollars */
|
|
229
|
+
limit,
|
|
230
|
+
/** Usage of every request in the ask that reached the limit */
|
|
231
|
+
usage) {
|
|
232
|
+
super(`[NodeLLM] Cost limit ($${limit}) reached.`, "COST_LIMIT");
|
|
233
|
+
this.limit = limit;
|
|
234
|
+
this.usage = usage;
|
|
235
|
+
}
|
|
236
|
+
}
|
|
237
|
+
export class ToolCallLimitError extends LLMError {
|
|
238
|
+
limit;
|
|
239
|
+
usage;
|
|
240
|
+
constructor(limit,
|
|
241
|
+
/** Usage of every request in the ask that reached the limit */
|
|
242
|
+
usage) {
|
|
243
|
+
super(`[NodeLLM] Maximum tool execution calls (${limit}) exceeded.`, "TOOL_CALL_LIMIT");
|
|
244
|
+
this.limit = limit;
|
|
245
|
+
this.usage = usage;
|
|
246
|
+
}
|
|
247
|
+
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Executor.d.ts","sourceRoot":"","sources":["../../src/executor/Executor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAG/E,qBAAa,QAAQ;IAEjB,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,KAAK;gBADL,QAAQ,EAAE,QAAQ,EAClB,KAAK,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE;IAGzD,WAAW,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"Executor.d.ts","sourceRoot":"","sources":["../../src/executor/Executor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAG/E,qBAAa,QAAQ;IAEjB,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,KAAK;gBADL,QAAQ,EAAE,QAAQ,EAClB,KAAK,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE;IAGzD,WAAW,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,YAAY,CAAC;IAiC9D;;;;OAIG;IACH,OAAO,CAAC,YAAY;CAYrB"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { RateLimitError, ServerError } from "../errors/index.js";
|
|
1
|
+
import { InsufficientQuotaError, RateLimitError, ServerError } from "../errors/index.js";
|
|
2
2
|
export class Executor {
|
|
3
3
|
provider;
|
|
4
4
|
retry;
|
|
@@ -17,8 +17,10 @@ export class Executor {
|
|
|
17
17
|
}
|
|
18
18
|
catch (error) {
|
|
19
19
|
lastError = error;
|
|
20
|
-
//
|
|
21
|
-
|
|
20
|
+
// Fatal errors (bad request, authentication, an account out of credit) fail straight away:
|
|
21
|
+
// trying again can't help.
|
|
22
|
+
const isRetryable = (error instanceof RateLimitError && !(error instanceof InsufficientQuotaError)) ||
|
|
23
|
+
error instanceof ServerError;
|
|
22
24
|
if (!isRetryable || attempt >= this.retry.attempts) {
|
|
23
25
|
throw error;
|
|
24
26
|
}
|
package/dist/index.d.ts
CHANGED
|
@@ -8,19 +8,28 @@ export * from "./chat/ChatStream.js";
|
|
|
8
8
|
export * from "./streaming/Stream.js";
|
|
9
9
|
export * from "./errors/index.js";
|
|
10
10
|
export { Agent, defineAgent } from "./agent/Agent.js";
|
|
11
|
-
export
|
|
11
|
+
export { Judge, defineJudge } from "./judge/Judge.js";
|
|
12
|
+
export type { JudgeCallOptions, QuestionsOf } from "./judge/Judge.js";
|
|
13
|
+
export { probability, choice, score } from "./judge/Question.js";
|
|
14
|
+
export type { Description, JsonValue, ProbabilityCriteria, ProbabilityQuestion, ChoiceQuestion, ScoreQuestion, QuestionDefinition, QuestionMap } from "./judge/Question.js";
|
|
15
|
+
export { Judgment, ProbabilityAnswer, ChoiceAnswer, ScoreAnswer } from "./judge/Judgment.js";
|
|
16
|
+
export type { Answer, AnswerFor, AnswersOf, JudgmentResult } from "./judge/Judgment.js";
|
|
17
|
+
export type { AgentConfig, DefinedAgent } from "./agent/Agent.js";
|
|
12
18
|
export type { Middleware, MiddlewareContext } from "./types/Middleware.js";
|
|
13
19
|
export * from "./middlewares/index.js";
|
|
14
|
-
export { z } from "zod";
|
|
20
|
+
export { z } from "zod/v3";
|
|
15
21
|
export { NodeLLM, LegacyNodeLLM, createLLM, NodeLLMCore, Transcription, Moderation, Embedding, ModelRegistry, PricingRegistry } from "./llm.js";
|
|
22
|
+
export type { LLMConfig } from "./llm.js";
|
|
16
23
|
export { config } from "./config.js";
|
|
17
24
|
export type { NodeLLMConfig } from "./config.js";
|
|
18
25
|
export { providerRegistry, ProviderInterceptor } from "./providers/registry.js";
|
|
19
26
|
export { Schema } from "./schema/Schema.js";
|
|
27
|
+
export type { ZodSchema } from "./schema/zod.js";
|
|
20
28
|
export { BaseProvider } from "./providers/BaseProvider.js";
|
|
21
|
-
export { Provider, ProviderCapabilities, ChatRequest, ChatResponse, ChatChunk, ThinkingConfig, ThinkingResult, Usage, ImageRequest, ImageResponse, TranscriptionRequest, TranscriptionResponse, TranscriptionSegment, TranscriptionWord, ModerationRequest, ModerationResponse, ModerationResult, EmbeddingRequest, EmbeddingResponse, ToolChoice } from "./providers/Provider.js";
|
|
29
|
+
export { Provider, ProviderCapabilities, ChatRequest, ChatResponse, ChatChunk, ThinkingConfig, ThinkingEffort, ThinkingResult, Usage, ImageRequest, ImageResponse, TranscriptionRequest, TranscriptionResponse, TranscriptionSegment, TranscriptionWord, ModerationRequest, ModerationResponse, ModerationResult, EmbeddingRequest, EmbeddingResponse, JudgmentRequest, JudgmentResponse, JudgmentInput, JudgmentAnswerData, ToolChoice } from "./providers/Provider.js";
|
|
22
30
|
export { resolveModelAlias } from "./model_aliases.js";
|
|
23
31
|
export { default as MODEL_ALIASES } from "./aliases.js";
|
|
32
|
+
export type { ToolExecutionModeInput } from "./constants.js";
|
|
24
33
|
export { ToolExecutionMode, DEFAULT_MAX_TOOL_CALLS, DEFAULT_MAX_RETRIES, DEFAULT_TOOL_EXECUTION, DEFAULT_OLLAMA_BASE_URL, DEFAULT_MODELS } from "./constants.js";
|
|
25
34
|
export { fetchWithTimeout } from "./utils/fetch.js";
|
|
26
35
|
//# 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;AACtC,cAAc,mBAAmB,CAAC;AAClC,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACtD,YAAY,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,uBAAuB,CAAC;AACtC,cAAc,wBAAwB,CAAC;AACvC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,sBAAsB,CAAC;AACrC,cAAc,uBAAuB,CAAC;AACtC,cAAc,mBAAmB,CAAC;AAClC,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACtD,YAAY,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACtE,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAC;AACjE,YAAY,EACV,WAAW,EACX,SAAS,EACT,mBAAmB,EACnB,mBAAmB,EACnB,cAAc,EACd,aAAa,EACb,kBAAkB,EAClB,WAAW,EACZ,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,QAAQ,EAAE,iBAAiB,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAC7F,YAAY,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACxF,YAAY,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAClE,YAAY,EAAE,UAAU,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC3E,cAAc,wBAAwB,CAAC;AAEvC,OAAO,EAAE,CAAC,EAAE,MAAM,QAAQ,CAAC;AAC3B,OAAO,EACL,OAAO,EACP,aAAa,EACb,SAAS,EACT,WAAW,EACX,aAAa,EACb,UAAU,EACV,SAAS,EACT,aAAa,EACb,eAAe,EAChB,MAAM,UAAU,CAAC;AAClB,YAAY,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAC1C,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,YAAY,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAC3D,OAAO,EACL,QAAQ,EACR,oBAAoB,EACpB,WAAW,EACX,YAAY,EACZ,SAAS,EACT,cAAc,EACd,cAAc,EACd,cAAc,EACd,KAAK,EACL,YAAY,EACZ,aAAa,EACb,oBAAoB,EACpB,qBAAqB,EACrB,oBAAoB,EACpB,iBAAiB,EACjB,iBAAiB,EACjB,kBAAkB,EAClB,gBAAgB,EAChB,gBAAgB,EAChB,iBAAiB,EACjB,eAAe,EACf,gBAAgB,EAChB,aAAa,EACb,kBAAkB,EAClB,UAAU,EACX,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,cAAc,CAAC;AACxD,YAAY,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AAC7D,OAAO,EACL,iBAAiB,EACjB,sBAAsB,EACtB,mBAAmB,EACnB,sBAAsB,EACtB,uBAAuB,EACvB,cAAc,EACf,MAAM,gBAAgB,CAAC;AAExB,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -8,8 +8,11 @@ export * from "./chat/ChatStream.js";
|
|
|
8
8
|
export * from "./streaming/Stream.js";
|
|
9
9
|
export * from "./errors/index.js";
|
|
10
10
|
export { Agent, defineAgent } from "./agent/Agent.js";
|
|
11
|
+
export { Judge, defineJudge } from "./judge/Judge.js";
|
|
12
|
+
export { probability, choice, score } from "./judge/Question.js";
|
|
13
|
+
export { Judgment, ProbabilityAnswer, ChoiceAnswer, ScoreAnswer } from "./judge/Judgment.js";
|
|
11
14
|
export * from "./middlewares/index.js";
|
|
12
|
-
export { z } from "zod";
|
|
15
|
+
export { z } from "zod/v3";
|
|
13
16
|
export { NodeLLM, LegacyNodeLLM, createLLM, NodeLLMCore, Transcription, Moderation, Embedding, ModelRegistry, PricingRegistry } from "./llm.js";
|
|
14
17
|
export { config } from "./config.js";
|
|
15
18
|
export { providerRegistry } from "./providers/registry.js";
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
import { NodeLLMCore } from "../llm.js";
|
|
2
|
+
import { JudgmentInput } from "../providers/Provider.js";
|
|
3
|
+
import { LazyValue } from "../agent/Agent.js";
|
|
4
|
+
import { QuestionMap } from "./Question.js";
|
|
5
|
+
import { JudgmentResult } from "./Judgment.js";
|
|
6
|
+
/** The questions a Judge class declares, once resolved. */
|
|
7
|
+
export type QuestionsOf<T> = T extends {
|
|
8
|
+
questions: infer Q;
|
|
9
|
+
} ? Q extends (...args: never[]) => infer R ? R extends QuestionMap ? R : never : Q extends QuestionMap ? Q : never : never;
|
|
10
|
+
export interface JudgeCallOptions<I = Record<string, unknown>> {
|
|
11
|
+
/** Values for the inputs the judge declares; available to lazy settings. */
|
|
12
|
+
inputs?: I;
|
|
13
|
+
/** Overrides the judge's model for this call. */
|
|
14
|
+
model?: string;
|
|
15
|
+
/** Overrides the judge's provider for this call. */
|
|
16
|
+
provider?: string;
|
|
17
|
+
/** Merged over the judge's own providerOptions. */
|
|
18
|
+
providerOptions?: Record<string, unknown>;
|
|
19
|
+
requestTimeout?: number;
|
|
20
|
+
/** The NodeLLM instance to judge with. Defaults to the global NodeLLM. */
|
|
21
|
+
llm?: NodeLLMCore;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* A reusable set of typed questions about your application data.
|
|
25
|
+
*
|
|
26
|
+
* Subclass it and declare `questions`; call `judge` with the input. Answers are
|
|
27
|
+
* typed from the declaration, so a choice's answer is a union of its options.
|
|
28
|
+
*
|
|
29
|
+
* @example
|
|
30
|
+
* class TicketTriage extends Judge {
|
|
31
|
+
* static questions = {
|
|
32
|
+
* urgent: probability("Does this need attention today?"),
|
|
33
|
+
* department: choice("Which team should handle this?", {
|
|
34
|
+
* billing: "Payments and refunds",
|
|
35
|
+
* technical: "Bugs and integrations",
|
|
36
|
+
* other: null
|
|
37
|
+
* }),
|
|
38
|
+
* frustration: score("How frustrated is the customer?", ["Calm", "Frustrated", "Angry"])
|
|
39
|
+
* };
|
|
40
|
+
* }
|
|
41
|
+
*
|
|
42
|
+
* const judgment = await TicketTriage.judge("Please refund the duplicate charge today.");
|
|
43
|
+
* judgment.urgent.probability; // number
|
|
44
|
+
* judgment.department.choice; // "billing" | "technical" | "other"
|
|
45
|
+
*
|
|
46
|
+
* Settings can depend on runtime data. Declare the inputs a judge needs and
|
|
47
|
+
* pass them to `judge`; `questions`, `model` and `providerOptions` may be
|
|
48
|
+
* functions of those inputs, resolved once per judgment.
|
|
49
|
+
*
|
|
50
|
+
* @example
|
|
51
|
+
* class TeamRouter extends Judge {
|
|
52
|
+
* static inputs = ["teams"] as const;
|
|
53
|
+
* static questions = ({ teams }: { teams: Team[] }) => ({
|
|
54
|
+
* team: choice("Which team should handle this?",
|
|
55
|
+
* Object.fromEntries(teams.map((t) => [t.slug, t.description])))
|
|
56
|
+
* });
|
|
57
|
+
* }
|
|
58
|
+
* await TeamRouter.judge(ticket.body, { inputs: { teams } });
|
|
59
|
+
*/
|
|
60
|
+
export declare abstract class Judge {
|
|
61
|
+
/** The judgment model. Defaults to the instance default, then `jev-latest`. */
|
|
62
|
+
static model?: LazyValue<string, never>;
|
|
63
|
+
/** Routes to a specific provider; normally inferred from the model. */
|
|
64
|
+
static provider?: string;
|
|
65
|
+
/** Names of the inputs `judge` must be given. */
|
|
66
|
+
static inputs?: readonly string[];
|
|
67
|
+
/** The questions, or a function of the declared inputs returning them. */
|
|
68
|
+
static questions: LazyValue<QuestionMap, never>;
|
|
69
|
+
/** Provider-specific request fields, or a function of the inputs. */
|
|
70
|
+
static providerOptions?: LazyValue<Record<string, unknown>, never>;
|
|
71
|
+
/**
|
|
72
|
+
* Judges the input and returns typed answers. The input is text, an object,
|
|
73
|
+
* or an array of JSON-compatible values - or a function of the inputs that
|
|
74
|
+
* returns one.
|
|
75
|
+
*/
|
|
76
|
+
static judge<T extends typeof Judge, I extends Record<string, unknown> = Record<string, unknown>>(this: T, input: LazyValue<JudgmentInput, I>, options?: JudgeCallOptions<I>): Promise<JudgmentResult<QuestionsOf<T>>>;
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Defines a judge without a class, mirroring `defineAgent`.
|
|
80
|
+
*
|
|
81
|
+
* @example
|
|
82
|
+
* const Urgency = defineJudge({
|
|
83
|
+
* questions: { urgent: probability("Does this need attention today?") }
|
|
84
|
+
* });
|
|
85
|
+
* (await Urgency.judge("The site is down")).urgent.probability;
|
|
86
|
+
*/
|
|
87
|
+
export declare function defineJudge<const Q extends QuestionMap>(definition: {
|
|
88
|
+
questions: LazyValue<Q, never>;
|
|
89
|
+
model?: LazyValue<string, never>;
|
|
90
|
+
provider?: string;
|
|
91
|
+
inputs?: readonly string[];
|
|
92
|
+
providerOptions?: LazyValue<Record<string, unknown>, never>;
|
|
93
|
+
}): {
|
|
94
|
+
new (): {};
|
|
95
|
+
questions: LazyValue<Q, never>;
|
|
96
|
+
model: LazyValue<string, never> | undefined;
|
|
97
|
+
provider: string | undefined;
|
|
98
|
+
inputs: readonly string[] | undefined;
|
|
99
|
+
providerOptions: LazyValue<Record<string, unknown>, never> | undefined;
|
|
100
|
+
/**
|
|
101
|
+
* Judges the input and returns typed answers. The input is text, an object,
|
|
102
|
+
* or an array of JSON-compatible values - or a function of the inputs that
|
|
103
|
+
* returns one.
|
|
104
|
+
*/
|
|
105
|
+
judge<T extends typeof Judge, I extends Record<string, unknown> = Record<string, unknown>>(this: T, input: LazyValue<JudgmentInput, I>, options?: JudgeCallOptions<I>): Promise<JudgmentResult<QuestionsOf<T>>>;
|
|
106
|
+
};
|
|
107
|
+
//# sourceMappingURL=Judge.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Judge.d.ts","sourceRoot":"","sources":["../../src/judge/Judge.ts"],"names":[],"mappings":"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"}
|