@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.
Files changed (211) hide show
  1. package/README.md +14 -11
  2. package/dist/agent/Agent.d.ts +41 -14
  3. package/dist/agent/Agent.d.ts.map +1 -1
  4. package/dist/agent/Agent.js +12 -3
  5. package/dist/aliases.d.ts +477 -283
  6. package/dist/aliases.d.ts.map +1 -1
  7. package/dist/aliases.js +546 -352
  8. package/dist/chat/Chat.d.ts +23 -13
  9. package/dist/chat/Chat.d.ts.map +1 -1
  10. package/dist/chat/Chat.js +59 -16
  11. package/dist/chat/ChatOptions.d.ts +28 -11
  12. package/dist/chat/ChatOptions.d.ts.map +1 -1
  13. package/dist/chat/ChatResponse.d.ts +5 -0
  14. package/dist/chat/ChatResponse.d.ts.map +1 -1
  15. package/dist/chat/ChatResponse.js +12 -4
  16. package/dist/chat/ChatStream.d.ts.map +1 -1
  17. package/dist/chat/ChatStream.js +20 -10
  18. package/dist/chat/PromptCache.d.ts +7 -0
  19. package/dist/chat/PromptCache.d.ts.map +1 -0
  20. package/dist/chat/PromptCache.js +7 -0
  21. package/dist/chat/Temperature.d.ts +7 -0
  22. package/dist/chat/Temperature.d.ts.map +1 -0
  23. package/dist/chat/Temperature.js +17 -0
  24. package/dist/chat/Tool.d.ts +52 -8
  25. package/dist/chat/Tool.d.ts.map +1 -1
  26. package/dist/chat/Tool.js +53 -5
  27. package/dist/chat/ToolCallOutcome.d.ts +18 -6
  28. package/dist/chat/ToolCallOutcome.d.ts.map +1 -1
  29. package/dist/chat/ToolCallOutcome.js +14 -0
  30. package/dist/chat/ToolHandler.d.ts +2 -2
  31. package/dist/chat/ToolHandler.d.ts.map +1 -1
  32. package/dist/chat/ToolResultWindow.d.ts +16 -0
  33. package/dist/chat/ToolResultWindow.d.ts.map +1 -0
  34. package/dist/chat/ToolResultWindow.js +25 -0
  35. package/dist/config.d.ts +42 -2
  36. package/dist/config.d.ts.map +1 -1
  37. package/dist/config.js +80 -27
  38. package/dist/constants.d.ts +7 -0
  39. package/dist/constants.d.ts.map +1 -1
  40. package/dist/constants.js +3 -1
  41. package/dist/errors/billing.d.ts +7 -0
  42. package/dist/errors/billing.d.ts.map +1 -0
  43. package/dist/errors/billing.js +24 -0
  44. package/dist/errors/index.d.ts +28 -0
  45. package/dist/errors/index.d.ts.map +1 -1
  46. package/dist/errors/index.js +32 -0
  47. package/dist/executor/Executor.d.ts.map +1 -1
  48. package/dist/executor/Executor.js +5 -3
  49. package/dist/index.d.ts +12 -3
  50. package/dist/index.d.ts.map +1 -1
  51. package/dist/index.js +4 -1
  52. package/dist/judge/Judge.d.ts +107 -0
  53. package/dist/judge/Judge.d.ts.map +1 -0
  54. package/dist/judge/Judge.js +104 -0
  55. package/dist/judge/Judgment.d.ts +116 -0
  56. package/dist/judge/Judgment.d.ts.map +1 -0
  57. package/dist/judge/Judgment.js +159 -0
  58. package/dist/judge/Question.d.ts +91 -0
  59. package/dist/judge/Question.d.ts.map +1 -0
  60. package/dist/judge/Question.js +180 -0
  61. package/dist/llm.d.ts +48 -1
  62. package/dist/llm.d.ts.map +1 -1
  63. package/dist/llm.js +111 -5
  64. package/dist/models/ModelRegistry.d.ts +23 -19
  65. package/dist/models/ModelRegistry.d.ts.map +1 -1
  66. package/dist/models/ModelRegistry.js +28 -2
  67. package/dist/models/models.json +15154 -4786
  68. package/dist/models/types.d.ts +14 -1
  69. package/dist/models/types.d.ts.map +1 -1
  70. package/dist/providers/BaseProvider.d.ts +2 -1
  71. package/dist/providers/BaseProvider.d.ts.map +1 -1
  72. package/dist/providers/BaseProvider.js +3 -0
  73. package/dist/providers/Provider.d.ts +60 -1
  74. package/dist/providers/Provider.d.ts.map +1 -1
  75. package/dist/providers/anthropic/AnthropicProvider.d.ts +2 -0
  76. package/dist/providers/anthropic/AnthropicProvider.d.ts.map +1 -1
  77. package/dist/providers/anthropic/AnthropicProvider.js +2 -0
  78. package/dist/providers/anthropic/Capabilities.d.ts +1 -0
  79. package/dist/providers/anthropic/Capabilities.d.ts.map +1 -1
  80. package/dist/providers/anthropic/Capabilities.js +3 -0
  81. package/dist/providers/anthropic/Chat.d.ts.map +1 -1
  82. package/dist/providers/anthropic/Chat.js +7 -75
  83. package/dist/providers/anthropic/Errors.d.ts.map +1 -1
  84. package/dist/providers/anthropic/Errors.js +4 -3
  85. package/dist/providers/anthropic/Streaming.d.ts.map +1 -1
  86. package/dist/providers/anthropic/Streaming.js +4 -66
  87. package/dist/providers/anthropic/Utils.d.ts +33 -1
  88. package/dist/providers/anthropic/Utils.d.ts.map +1 -1
  89. package/dist/providers/anthropic/Utils.js +114 -0
  90. package/dist/providers/anthropic/types.d.ts +17 -3
  91. package/dist/providers/anthropic/types.d.ts.map +1 -1
  92. package/dist/providers/azure/AzureProvider.d.ts +54 -0
  93. package/dist/providers/azure/AzureProvider.d.ts.map +1 -0
  94. package/dist/providers/azure/AzureProvider.js +110 -0
  95. package/dist/providers/azure/Capabilities.d.ts +16 -0
  96. package/dist/providers/azure/Capabilities.d.ts.map +1 -0
  97. package/dist/providers/azure/Capabilities.js +36 -0
  98. package/dist/providers/azure/Embedding.d.ts +11 -0
  99. package/dist/providers/azure/Embedding.d.ts.map +1 -0
  100. package/dist/providers/azure/Embedding.js +23 -0
  101. package/dist/providers/azure/Models.d.ts +18 -0
  102. package/dist/providers/azure/Models.d.ts.map +1 -0
  103. package/dist/providers/azure/Models.js +29 -0
  104. package/dist/providers/azure/index.d.ts +5 -0
  105. package/dist/providers/azure/index.d.ts.map +1 -0
  106. package/dist/providers/azure/index.js +28 -0
  107. package/dist/providers/bedrock/BedrockProvider.d.ts.map +1 -1
  108. package/dist/providers/bedrock/BedrockProvider.js +1 -0
  109. package/dist/providers/bedrock/Capabilities.d.ts +1 -0
  110. package/dist/providers/bedrock/Capabilities.d.ts.map +1 -1
  111. package/dist/providers/bedrock/Capabilities.js +3 -0
  112. package/dist/providers/bedrock/Chat.d.ts.map +1 -1
  113. package/dist/providers/bedrock/Chat.js +6 -2
  114. package/dist/providers/bedrock/Errors.d.ts.map +1 -1
  115. package/dist/providers/bedrock/Errors.js +4 -0
  116. package/dist/providers/bedrock/Streaming.d.ts.map +1 -1
  117. package/dist/providers/bedrock/Streaming.js +4 -1
  118. package/dist/providers/deepseek/Capabilities.d.ts +1 -0
  119. package/dist/providers/deepseek/Capabilities.d.ts.map +1 -1
  120. package/dist/providers/deepseek/Capabilities.js +3 -0
  121. package/dist/providers/deepseek/Chat.d.ts.map +1 -1
  122. package/dist/providers/deepseek/Chat.js +3 -2
  123. package/dist/providers/deepseek/DeepSeekProvider.d.ts +1 -0
  124. package/dist/providers/deepseek/DeepSeekProvider.d.ts.map +1 -1
  125. package/dist/providers/deepseek/DeepSeekProvider.js +1 -0
  126. package/dist/providers/deepseek/Errors.d.ts.map +1 -1
  127. package/dist/providers/deepseek/Errors.js +5 -4
  128. package/dist/providers/gemini/Capabilities.d.ts +1 -0
  129. package/dist/providers/gemini/Capabilities.d.ts.map +1 -1
  130. package/dist/providers/gemini/Capabilities.js +3 -0
  131. package/dist/providers/gemini/Chat.d.ts.map +1 -1
  132. package/dist/providers/gemini/Chat.js +3 -2
  133. package/dist/providers/gemini/Errors.d.ts.map +1 -1
  134. package/dist/providers/gemini/Errors.js +4 -3
  135. package/dist/providers/gemini/GeminiProvider.d.ts +1 -0
  136. package/dist/providers/gemini/GeminiProvider.d.ts.map +1 -1
  137. package/dist/providers/gemini/GeminiProvider.js +1 -0
  138. package/dist/providers/mistral/Capabilities.d.ts +1 -0
  139. package/dist/providers/mistral/Capabilities.d.ts.map +1 -1
  140. package/dist/providers/mistral/Capabilities.js +3 -0
  141. package/dist/providers/mistral/Chat.d.ts.map +1 -1
  142. package/dist/providers/mistral/Chat.js +3 -2
  143. package/dist/providers/mistral/Errors.d.ts.map +1 -1
  144. package/dist/providers/mistral/Errors.js +4 -3
  145. package/dist/providers/mistral/MistralProvider.d.ts +1 -0
  146. package/dist/providers/mistral/MistralProvider.d.ts.map +1 -1
  147. package/dist/providers/mistral/MistralProvider.js +1 -0
  148. package/dist/providers/ollama/OllamaProvider.d.ts.map +1 -1
  149. package/dist/providers/ollama/OllamaProvider.js +1 -0
  150. package/dist/providers/openai/Capabilities.d.ts +6 -0
  151. package/dist/providers/openai/Capabilities.d.ts.map +1 -1
  152. package/dist/providers/openai/Capabilities.js +10 -0
  153. package/dist/providers/openai/Chat.d.ts +3 -0
  154. package/dist/providers/openai/Chat.d.ts.map +1 -1
  155. package/dist/providers/openai/Chat.js +26 -7
  156. package/dist/providers/openai/Embedding.d.ts +2 -0
  157. package/dist/providers/openai/Embedding.d.ts.map +1 -1
  158. package/dist/providers/openai/Embedding.js +8 -5
  159. package/dist/providers/openai/Errors.d.ts.map +1 -1
  160. package/dist/providers/openai/Errors.js +4 -3
  161. package/dist/providers/openai/Models.d.ts +10 -0
  162. package/dist/providers/openai/Models.d.ts.map +1 -1
  163. package/dist/providers/openai/Models.js +12 -8
  164. package/dist/providers/openai/OpenAIProvider.d.ts +11 -1
  165. package/dist/providers/openai/OpenAIProvider.d.ts.map +1 -1
  166. package/dist/providers/openai/OpenAIProvider.js +36 -0
  167. package/dist/providers/openai/Responses.d.ts +30 -0
  168. package/dist/providers/openai/Responses.d.ts.map +1 -0
  169. package/dist/providers/openai/Responses.js +176 -0
  170. package/dist/providers/openai/Streaming.d.ts +2 -0
  171. package/dist/providers/openai/Streaming.d.ts.map +1 -1
  172. package/dist/providers/openai/Streaming.js +19 -5
  173. package/dist/providers/openrouter/Capabilities.d.ts +1 -0
  174. package/dist/providers/openrouter/Capabilities.d.ts.map +1 -1
  175. package/dist/providers/openrouter/Capabilities.js +3 -0
  176. package/dist/providers/openrouter/OpenRouterProvider.d.ts +1 -0
  177. package/dist/providers/openrouter/OpenRouterProvider.d.ts.map +1 -1
  178. package/dist/providers/openrouter/OpenRouterProvider.js +1 -0
  179. package/dist/providers/registry.d.ts +3 -1
  180. package/dist/providers/registry.d.ts.map +1 -1
  181. package/dist/providers/registry.js +3 -1
  182. package/dist/providers/typesafe/SystemOne.d.ts +11 -0
  183. package/dist/providers/typesafe/SystemOne.d.ts.map +1 -0
  184. package/dist/providers/typesafe/SystemOne.js +171 -0
  185. package/dist/providers/typesafe/TypeSafeProvider.d.ts +27 -0
  186. package/dist/providers/typesafe/TypeSafeProvider.d.ts.map +1 -0
  187. package/dist/providers/typesafe/TypeSafeProvider.js +76 -0
  188. package/dist/providers/typesafe/index.d.ts +4 -0
  189. package/dist/providers/typesafe/index.d.ts.map +1 -0
  190. package/dist/providers/typesafe/index.js +19 -0
  191. package/dist/providers/xai/Capabilities.d.ts +1 -0
  192. package/dist/providers/xai/Capabilities.d.ts.map +1 -1
  193. package/dist/providers/xai/Capabilities.js +3 -0
  194. package/dist/providers/xai/Chat.d.ts.map +1 -1
  195. package/dist/providers/xai/Chat.js +3 -2
  196. package/dist/providers/xai/Errors.d.ts.map +1 -1
  197. package/dist/providers/xai/Errors.js +5 -2
  198. package/dist/providers/xai/XAIProvider.d.ts +1 -0
  199. package/dist/providers/xai/XAIProvider.d.ts.map +1 -1
  200. package/dist/providers/xai/XAIProvider.js +1 -0
  201. package/dist/schema/Schema.d.ts +3 -3
  202. package/dist/schema/Schema.d.ts.map +1 -1
  203. package/dist/schema/to-json-schema.d.ts +2 -2
  204. package/dist/schema/to-json-schema.d.ts.map +1 -1
  205. package/dist/schema/to-json-schema.js +3 -8
  206. package/dist/schema/zod.d.ts +32 -0
  207. package/dist/schema/zod.d.ts.map +1 -0
  208. package/dist/schema/zod.js +31 -0
  209. package/dist/types/Middleware.d.ts +9 -0
  210. package/dist/types/Middleware.d.ts.map +1 -1
  211. 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 ?? process.env.OPENAI_API_KEY?.trim();
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 ?? process.env.OPENAI_API_BASE?.trim() ?? DEFAULT_OPENAI_BASE_URL;
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 ?? process.env.ANTHROPIC_API_KEY?.trim();
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 ?? process.env.ANTHROPIC_API_BASE?.trim() ?? DEFAULT_ANTHROPIC_BASE_URL);
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 ?? process.env.GEMINI_API_KEY?.trim();
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 ?? process.env.GEMINI_API_BASE?.trim() ?? DEFAULT_GEMINI_BASE_URL;
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 ?? process.env.DEEPSEEK_API_KEY?.trim();
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 (this._deepseekApiBase ?? process.env.DEEPSEEK_API_BASE?.trim() ?? DEFAULT_DEEPSEEK_BASE_URL);
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 ?? process.env.OLLAMA_API_BASE?.trim() ?? DEFAULT_OLLAMA_BASE_URL;
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 ?? process.env.OPENROUTER_API_KEY?.trim();
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 ?? process.env.XAI_API_KEY?.trim();
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 ?? process.env.XAI_API_BASE?.trim() ?? DEFAULT_XAI_BASE_URL;
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 ?? process.env.MISTRAL_API_KEY?.trim();
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 ?? process.env.MISTRAL_API_BASE?.trim() ?? DEFAULT_MISTRAL_BASE_URL;
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 ?? process.env.AWS_BEARER_TOKEN_BEDROCK?.trim();
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 ?? process.env.AWS_ACCESS_KEY_ID?.trim();
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 ?? process.env.AWS_SECRET_ACCESS_KEY?.trim();
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 ?? process.env.AWS_SESSION_TOKEN?.trim();
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 ?? process.env.AWS_REGION?.trim() ?? DEFAULT_BEDROCK_REGION;
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 ?? process.env.BEDROCK_API_BASE?.trim();
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 ?? process.env.AWS_GUARDRAIL_ID?.trim();
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 ?? process.env.AWS_GUARDRAIL_VERSION?.trim();
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 ?? process.env.NODELLM_PROVIDER?.trim();
229
+ return this._provider ?? this.fromEnv("NODELLM_PROVIDER");
177
230
  }
178
231
  set provider(v) {
179
232
  this._provider = v;
@@ -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
@@ -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;;;;;CAKjB,CAAC;AAEX,eAAO,MAAM,sBAAsB,cAAc,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
+ }
@@ -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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"}
@@ -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;IA8B9D;;;;OAIG;IACH,OAAO,CAAC,YAAY;CAYrB"}
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
- // If it's a fatal error (BadRequest, Authentication), don't retry
21
- const isRetryable = error instanceof RateLimitError || error instanceof ServerError;
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 type { AgentConfig } from "./agent/Agent.js";
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
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,uBAAuB,CAAC;AACtC,cAAc,wBAAwB,CAAC;AACvC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,sBAAsB,CAAC;AACrC,cAAc,uBAAuB,CAAC;AACtC,cAAc,mBAAmB,CAAC;AAClC,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACtD,YAAY,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACpD,YAAY,EAAE,UAAU,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC3E,cAAc,wBAAwB,CAAC;AAEvC,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EACL,OAAO,EACP,aAAa,EACb,SAAS,EACT,WAAW,EACX,aAAa,EACb,UAAU,EACV,SAAS,EACT,aAAa,EACb,eAAe,EAChB,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,YAAY,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAChF,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAC5C,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAC3D,OAAO,EACL,QAAQ,EACR,oBAAoB,EACpB,WAAW,EACX,YAAY,EACZ,SAAS,EACT,cAAc,EACd,cAAc,EACd,KAAK,EACL,YAAY,EACZ,aAAa,EACb,oBAAoB,EACpB,qBAAqB,EACrB,oBAAoB,EACpB,iBAAiB,EACjB,iBAAiB,EACjB,kBAAkB,EAClB,gBAAgB,EAChB,gBAAgB,EAChB,iBAAiB,EACjB,UAAU,EACX,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,cAAc,CAAC;AACxD,OAAO,EACL,iBAAiB,EACjB,sBAAsB,EACtB,mBAAmB,EACnB,sBAAsB,EACtB,uBAAuB,EACvB,cAAc,EACf,MAAM,gBAAgB,CAAC;AAExB,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,uBAAuB,CAAC;AACtC,cAAc,wBAAwB,CAAC;AACvC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,sBAAsB,CAAC;AACrC,cAAc,uBAAuB,CAAC;AACtC,cAAc,mBAAmB,CAAC;AAClC,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACtD,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":"AAAA,OAAO,EAAW,WAAW,EAAE,MAAM,WAAW,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAE/C,2DAA2D;AAC3D,MAAM,MAAM,WAAW,CAAC,CAAC,IAAI,CAAC,SAAS;IAAE,SAAS,EAAE,MAAM,CAAC,CAAA;CAAE,GACzD,CAAC,SAAS,CAAC,GAAG,IAAI,EAAE,KAAK,EAAE,KAAK,MAAM,CAAC,GACrC,CAAC,SAAS,WAAW,GACnB,CAAC,GACD,KAAK,GACP,CAAC,SAAS,WAAW,GACnB,CAAC,GACD,KAAK,GACT,KAAK,CAAC;AAEV,MAAM,WAAW,gBAAgB,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAC3D,4EAA4E;IAC5E,MAAM,CAAC,EAAE,CAAC,CAAC;IACX,iDAAiD;IACjD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,oDAAoD;IACpD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,mDAAmD;IACnD,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC1C,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,0EAA0E;IAC1E,GAAG,CAAC,EAAE,WAAW,CAAC;CACnB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AACH,8BAAsB,KAAK;IACzB,+EAA+E;IAC/E,MAAM,CAAC,KAAK,CAAC,EAAE,SAAS,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IACxC,uEAAuE;IACvE,MAAM,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IACzB,iDAAiD;IACjD,MAAM,CAAC,MAAM,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAClC,0EAA0E;IAC1E,MAAM,CAAC,SAAS,EAAE,SAAS,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;IAChD,qEAAqE;IACrE,MAAM,CAAC,eAAe,CAAC,EAAE,SAAS,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,KAAK,CAAC,CAAC;IAEnE;;;;OAIG;WACU,KAAK,CAChB,CAAC,SAAS,OAAO,KAAK,EACtB,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAE3D,IAAI,EAAE,CAAC,EACP,KAAK,EAAE,SAAS,CAAC,aAAa,EAAE,CAAC,CAAC,EAClC,OAAO,GAAE,gBAAgB,CAAC,CAAC,CAAM,GAChC,OAAO,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;CA2B3C;AAYD;;;;;;;;GAQG;AACH,wBAAgB,WAAW,CAAC,KAAK,CAAC,CAAC,SAAS,WAAW,EAAE,UAAU,EAAE;IACnE,SAAS,EAAE,SAAS,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;IAC/B,KAAK,CAAC,EAAE,SAAS,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IACjC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC3B,eAAe,CAAC,EAAE,SAAS,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,KAAK,CAAC,CAAC;CAC7D;;;;;;;IAlEC;;;;OAIG;UAED,CAAC,SAAS,OAAO,KAAK,EACtB,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,kCAE3B,CAAC,SACA,SAAS,CAAC,aAAa,EAAE,CAAC,CAAC,YACzB,gBAAgB,CAAC,CAAC,CAAC,GAC3B,OAAO,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;EA8D3C"}