@node-llm/core 1.8.0 → 1.10.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 (101) hide show
  1. package/README.md +35 -0
  2. package/dist/aliases.d.ts +105 -9
  3. package/dist/aliases.d.ts.map +1 -1
  4. package/dist/aliases.js +105 -9
  5. package/dist/chat/Chat.d.ts +8 -3
  6. package/dist/chat/Chat.d.ts.map +1 -1
  7. package/dist/chat/Chat.js +181 -131
  8. package/dist/chat/ChatOptions.d.ts +2 -0
  9. package/dist/chat/ChatOptions.d.ts.map +1 -1
  10. package/dist/chat/ChatResponse.d.ts +24 -3
  11. package/dist/chat/ChatResponse.d.ts.map +1 -1
  12. package/dist/chat/ChatResponse.js +72 -5
  13. package/dist/chat/ChatStream.d.ts.map +1 -1
  14. package/dist/chat/ChatStream.js +111 -56
  15. package/dist/config.d.ts.map +1 -1
  16. package/dist/config.js +9 -7
  17. package/dist/constants.d.ts +6 -0
  18. package/dist/constants.d.ts.map +1 -1
  19. package/dist/constants.js +6 -0
  20. package/dist/errors/index.d.ts +20 -2
  21. package/dist/errors/index.d.ts.map +1 -1
  22. package/dist/errors/index.js +31 -3
  23. package/dist/index.d.ts +5 -2
  24. package/dist/index.d.ts.map +1 -1
  25. package/dist/index.js +2 -0
  26. package/dist/llm.d.ts +8 -1
  27. package/dist/llm.d.ts.map +1 -1
  28. package/dist/llm.js +156 -59
  29. package/dist/middlewares/CostGuardMiddleware.d.ts +24 -0
  30. package/dist/middlewares/CostGuardMiddleware.d.ts.map +1 -0
  31. package/dist/middlewares/CostGuardMiddleware.js +23 -0
  32. package/dist/middlewares/PIIMaskMiddleware.d.ts +23 -0
  33. package/dist/middlewares/PIIMaskMiddleware.d.ts.map +1 -0
  34. package/dist/middlewares/PIIMaskMiddleware.js +41 -0
  35. package/dist/middlewares/UsageLoggerMiddleware.d.ts +22 -0
  36. package/dist/middlewares/UsageLoggerMiddleware.d.ts.map +1 -0
  37. package/dist/middlewares/UsageLoggerMiddleware.js +30 -0
  38. package/dist/middlewares/index.d.ts +4 -0
  39. package/dist/middlewares/index.d.ts.map +1 -0
  40. package/dist/middlewares/index.js +3 -0
  41. package/dist/models/ModelRegistry.d.ts.map +1 -1
  42. package/dist/models/ModelRegistry.js +4 -2
  43. package/dist/models/PricingRegistry.js +3 -3
  44. package/dist/models/{models.js → models.json} +9934 -8196
  45. package/dist/providers/BaseProvider.d.ts +6 -1
  46. package/dist/providers/BaseProvider.d.ts.map +1 -1
  47. package/dist/providers/BaseProvider.js +19 -0
  48. package/dist/providers/anthropic/AnthropicProvider.d.ts.map +1 -1
  49. package/dist/providers/anthropic/AnthropicProvider.js +2 -1
  50. package/dist/providers/anthropic/Chat.d.ts.map +1 -1
  51. package/dist/providers/anthropic/Chat.js +2 -1
  52. package/dist/providers/anthropic/Errors.d.ts.map +1 -1
  53. package/dist/providers/anthropic/Errors.js +15 -1
  54. package/dist/providers/anthropic/Streaming.d.ts.map +1 -1
  55. package/dist/providers/anthropic/Streaming.js +19 -3
  56. package/dist/providers/bedrock/Chat.d.ts.map +1 -1
  57. package/dist/providers/bedrock/Chat.js +2 -20
  58. package/dist/providers/bedrock/Errors.d.ts +2 -0
  59. package/dist/providers/bedrock/Errors.d.ts.map +1 -0
  60. package/dist/providers/bedrock/Errors.js +51 -0
  61. package/dist/providers/bedrock/Streaming.d.ts.map +1 -1
  62. package/dist/providers/bedrock/Streaming.js +2 -3
  63. package/dist/providers/deepseek/Chat.d.ts.map +1 -1
  64. package/dist/providers/deepseek/Chat.js +2 -2
  65. package/dist/providers/deepseek/DeepSeekProvider.d.ts.map +1 -1
  66. package/dist/providers/deepseek/DeepSeekProvider.js +2 -1
  67. package/dist/providers/deepseek/Errors.d.ts +2 -0
  68. package/dist/providers/deepseek/Errors.d.ts.map +1 -0
  69. package/dist/providers/deepseek/Errors.js +45 -0
  70. package/dist/providers/deepseek/Streaming.d.ts.map +1 -1
  71. package/dist/providers/deepseek/Streaming.js +13 -2
  72. package/dist/providers/gemini/Errors.d.ts.map +1 -1
  73. package/dist/providers/gemini/Errors.js +13 -1
  74. package/dist/providers/gemini/GeminiProvider.d.ts.map +1 -1
  75. package/dist/providers/gemini/GeminiProvider.js +2 -1
  76. package/dist/providers/ollama/OllamaProvider.d.ts.map +1 -1
  77. package/dist/providers/ollama/OllamaProvider.js +2 -2
  78. package/dist/providers/openai/Errors.d.ts.map +1 -1
  79. package/dist/providers/openai/Errors.js +31 -5
  80. package/dist/providers/openai/OpenAIProvider.d.ts +1 -1
  81. package/dist/providers/openai/OpenAIProvider.d.ts.map +1 -1
  82. package/dist/providers/openai/OpenAIProvider.js +15 -3
  83. package/dist/providers/openai/Streaming.d.ts.map +1 -1
  84. package/dist/providers/openai/Streaming.js +10 -0
  85. package/dist/providers/openrouter/OpenRouterProvider.d.ts.map +1 -1
  86. package/dist/providers/openrouter/OpenRouterProvider.js +2 -1
  87. package/dist/providers/registry.d.ts +3 -0
  88. package/dist/providers/registry.d.ts.map +1 -1
  89. package/dist/providers/registry.js +10 -2
  90. package/dist/types/Middleware.d.ts +98 -0
  91. package/dist/types/Middleware.d.ts.map +1 -0
  92. package/dist/types/Middleware.js +1 -0
  93. package/dist/utils/json.d.ts +6 -0
  94. package/dist/utils/json.d.ts.map +1 -0
  95. package/dist/utils/json.js +43 -0
  96. package/dist/utils/middleware-runner.d.ts +7 -0
  97. package/dist/utils/middleware-runner.d.ts.map +1 -0
  98. package/dist/utils/middleware-runner.js +20 -0
  99. package/package.json +1 -1
  100. package/dist/models/models.d.ts +0 -572
  101. package/dist/models/models.d.ts.map +0 -1
@@ -8,6 +8,9 @@ import { toJsonSchema } from "../schema/to-json-schema.js";
8
8
  import { ChatValidator } from "./Validation.js";
9
9
  import { ToolHandler } from "./ToolHandler.js";
10
10
  import { logger } from "../utils/logger.js";
11
+ import { ModelRegistry } from "../models/ModelRegistry.js";
12
+ import { runMiddleware } from "../utils/middleware-runner.js";
13
+ import { randomUUID } from "node:crypto";
11
14
  /**
12
15
  * Internal handler for chat streaming logic.
13
16
  * Wraps the provider's stream with side effects like history updates and events.
@@ -57,6 +60,9 @@ export class ChatStream {
57
60
  ...requestOptions,
58
61
  headers: { ...baseOptions.headers, ...requestOptions.headers }
59
62
  };
63
+ const requestId = randomUUID();
64
+ const state = {};
65
+ const middlewares = options.middlewares || [];
60
66
  // Process Multimodal Content
61
67
  let messageContent = content;
62
68
  const files = [...(requestOptions.images ?? []), ...(requestOptions.files ?? [])];
@@ -70,53 +76,73 @@ export class ChatStream {
70
76
  ChatValidator.validateTools(provider, model, true, options);
71
77
  }
72
78
  messages.push({ role: "user", content: messageContent });
73
- if (!provider.stream) {
74
- throw new Error("Streaming not supported by provider");
75
- }
76
- // Process Schema/Structured Output
77
- let responseFormat = options.responseFormat;
78
- if (!responseFormat && options.schema) {
79
- ChatValidator.validateStructuredOutput(provider, model, true, options);
80
- const jsonSchema = toJsonSchema(options.schema.definition.schema);
81
- responseFormat = {
82
- type: "json_schema",
83
- json_schema: {
84
- name: options.schema.definition.name,
85
- description: options.schema.definition.description,
86
- strict: options.schema.definition.strict ?? true,
87
- schema: jsonSchema
79
+ // Prepare Middleware Context
80
+ const context = {
81
+ requestId,
82
+ provider: provider.id,
83
+ model: model,
84
+ messages: [...systemMessages, ...messages],
85
+ options: options,
86
+ state
87
+ };
88
+ try {
89
+ // 1. onRequest Hook
90
+ await runMiddleware(middlewares, "onRequest", context);
91
+ if (!provider.stream) {
92
+ throw new Error("Streaming not supported by provider");
93
+ }
94
+ // Process Schema/Structured Output
95
+ let responseFormat = options.responseFormat;
96
+ if (!responseFormat && options.schema) {
97
+ ChatValidator.validateStructuredOutput(provider, model, true, options);
98
+ const jsonSchema = toJsonSchema(options.schema.definition.schema);
99
+ responseFormat = {
100
+ type: "json_schema",
101
+ json_schema: {
102
+ name: options.schema.definition.name,
103
+ description: options.schema.definition.description,
104
+ strict: options.schema.definition.strict ?? true,
105
+ schema: jsonSchema
106
+ }
107
+ };
108
+ }
109
+ let isFirst = true;
110
+ const maxToolCalls = options.maxToolCalls ?? 5;
111
+ let stepCount = 0;
112
+ const totalUsage = { input_tokens: 0, output_tokens: 0, total_tokens: 0 };
113
+ const trackUsage = (u) => {
114
+ if (u) {
115
+ // Fallback cost calculation if provider didn't return it
116
+ if (u.cost === undefined) {
117
+ const withCost = ModelRegistry.calculateCost(u, model, provider.id);
118
+ u.cost = withCost.cost;
119
+ u.input_cost = withCost.input_cost;
120
+ u.output_cost = withCost.output_cost;
121
+ }
122
+ totalUsage.input_tokens += u.input_tokens;
123
+ totalUsage.output_tokens += u.output_tokens;
124
+ totalUsage.total_tokens += u.total_tokens;
125
+ if (u.cached_tokens) {
126
+ totalUsage.cached_tokens = (totalUsage.cached_tokens ?? 0) + u.cached_tokens;
127
+ }
128
+ if (u.cost !== undefined) {
129
+ totalUsage.cost = (totalUsage.cost ?? 0) + u.cost;
130
+ }
88
131
  }
89
132
  };
90
- }
91
- if (!provider.stream) {
92
- throw new Error("Streaming not supported by provider");
93
- }
94
- let isFirst = true;
95
- const maxToolCalls = options.maxToolCalls ?? 5;
96
- let stepCount = 0;
97
- const totalUsage = { input_tokens: 0, output_tokens: 0, total_tokens: 0 };
98
- const trackUsage = (u) => {
99
- if (u) {
100
- totalUsage.input_tokens += u.input_tokens;
101
- totalUsage.output_tokens += u.output_tokens;
102
- totalUsage.total_tokens += u.total_tokens;
103
- if (u.cached_tokens) {
104
- totalUsage.cached_tokens = (totalUsage.cached_tokens ?? 0) + u.cached_tokens;
133
+ let assistantResponse;
134
+ while (true) {
135
+ stepCount++;
136
+ if (stepCount > maxToolCalls) {
137
+ throw new Error(`[NodeLLM] Maximum tool execution calls (${maxToolCalls}) exceeded during streaming.`);
105
138
  }
106
- }
107
- };
108
- while (true) {
109
- stepCount++;
110
- if (stepCount > maxToolCalls) {
111
- throw new Error(`[NodeLLM] Maximum tool execution calls (${maxToolCalls}) exceeded during streaming.`);
112
- }
113
- let fullContent = "";
114
- let fullReasoning = "";
115
- const thinking = { text: "" };
116
- let toolCalls;
117
- let currentTurnUsage;
118
- try {
119
- let requestMessages = [...systemMessages, ...messages];
139
+ let fullContent = "";
140
+ let fullReasoning = "";
141
+ const thinking = { text: "" };
142
+ let toolCalls;
143
+ let currentTurnUsage;
144
+ context.messages = [...systemMessages, ...messages];
145
+ let requestMessages = context.messages; // Use up-to-date messages from context
120
146
  if (options.onBeforeRequest) {
121
147
  const result = await options.onBeforeRequest(requestMessages);
122
148
  if (result) {
@@ -169,7 +195,8 @@ export class ChatStream {
169
195
  trackUsage(currentTurnUsage);
170
196
  }
171
197
  }
172
- let assistantResponse = new ChatResponseString(fullContent || "", currentTurnUsage || { input_tokens: 0, output_tokens: 0, total_tokens: 0 }, model, provider.id, thinking.text || thinking.signature ? thinking : undefined, fullReasoning || undefined);
198
+ assistantResponse = new ChatResponseString(fullContent || "", currentTurnUsage || { input_tokens: 0, output_tokens: 0, total_tokens: 0 }, model, provider.id, thinking.text || thinking.signature ? thinking : undefined, fullReasoning || undefined, toolCalls, undefined, // finish_reason
199
+ options.schema);
173
200
  if (options.onAfterResponse) {
174
201
  const result = await options.onAfterResponse(assistantResponse);
175
202
  if (result) {
@@ -200,34 +227,62 @@ export class ChatStream {
200
227
  continue;
201
228
  }
202
229
  }
230
+ // 2. onToolCallStart Hook
231
+ await runMiddleware(middlewares, "onToolCallStart", context, toolCall);
203
232
  try {
204
233
  const toolResult = await ToolHandler.execute(toolCall, options.tools, options.onToolCallStart, options.onToolCallEnd);
234
+ // 3. onToolCallEnd Hook
235
+ await runMiddleware(middlewares, "onToolCallEnd", context, toolCall, toolResult.content);
205
236
  messages.push(provider.formatToolResultMessage(toolResult.tool_call_id, toolResult.content));
206
237
  }
207
238
  catch (error) {
208
- const err = error;
209
- const directive = await options.onToolCallError?.(toolCall, err);
239
+ let currentError = error;
240
+ // 4. onToolCallError Hook
241
+ const middlewareDirective = await runMiddleware(middlewares, "onToolCallError", context, toolCall, currentError);
242
+ const directive = middlewareDirective || (await options.onToolCallError?.(toolCall, currentError));
210
243
  if (directive === "STOP") {
211
244
  throw error;
212
245
  }
213
- messages.push(provider.formatToolResultMessage(toolCall.id, `Fatal error executing tool '${toolCall.function.name}': ${err.message}`, { isError: true }));
246
+ if (directive === "RETRY") {
247
+ try {
248
+ const toolResult = await ToolHandler.execute(toolCall, options.tools, options.onToolCallStart, options.onToolCallEnd);
249
+ await runMiddleware(middlewares, "onToolCallEnd", context, toolCall, toolResult.content);
250
+ messages.push(provider.formatToolResultMessage(toolResult.tool_call_id, toolResult.content));
251
+ continue;
252
+ }
253
+ catch (retryError) {
254
+ currentError = retryError;
255
+ await runMiddleware(middlewares, "onToolCallError", context, toolCall, currentError);
256
+ }
257
+ }
258
+ messages.push(provider.formatToolResultMessage(toolCall.id, `Fatal error executing tool '${toolCall.function.name}': ${currentError.message}`, { isError: true }));
214
259
  if (directive === "CONTINUE") {
215
260
  continue;
216
261
  }
217
- const isFatal = err.fatal === true || err.status === 401 || err.status === 403;
262
+ const isFatal = currentError.fatal === true ||
263
+ currentError.status === 401 ||
264
+ currentError.status === 403;
218
265
  if (isFatal) {
219
- throw err;
266
+ throw currentError;
220
267
  }
221
- logger.error(`Tool execution failed for '${toolCall.function.name}':`, error);
268
+ logger.error(`Tool execution failed for '${toolCall.function.name}':`, currentError);
222
269
  }
223
270
  }
271
+ // Loop continues -> streaming next chunk
224
272
  }
225
- catch (error) {
226
- if (error instanceof Error && error.name === "AbortError") {
227
- // Aborted
228
- }
229
- throw error;
273
+ // 5. onResponse Hook
274
+ if (assistantResponse) {
275
+ await runMiddleware(middlewares, "onResponse", context, assistantResponse);
276
+ }
277
+ }
278
+ catch (err) {
279
+ // 6. onError Hook
280
+ await runMiddleware(middlewares, "onError", context, err);
281
+ if (err instanceof Error && err.name === "AbortError") {
282
+ // Aborted, still maybe want onError? Middleware logic says "onError".
283
+ // But rethrow for sure.
230
284
  }
285
+ throw err;
231
286
  }
232
287
  };
233
288
  return new Stream(() => sideEffectGenerator(this, this.provider, this.model, this.messages, this.systemMessages, this.options, controller, content, options), controller);
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
package/dist/config.js CHANGED
@@ -1,4 +1,4 @@
1
- import { DEFAULT_MAX_TOOL_CALLS, DEFAULT_MAX_RETRIES, DEFAULT_REQUEST_TIMEOUT, DEFAULT_MAX_TOKENS, DEFAULT_TOOL_EXECUTION, DEFAULT_OLLAMA_BASE_URL } from "./constants.js";
1
+ import { DEFAULT_MAX_TOOL_CALLS, DEFAULT_MAX_RETRIES, DEFAULT_REQUEST_TIMEOUT, DEFAULT_MAX_TOKENS, DEFAULT_TOOL_EXECUTION, DEFAULT_OPENAI_BASE_URL, DEFAULT_ANTHROPIC_BASE_URL, DEFAULT_GEMINI_BASE_URL, DEFAULT_DEEPSEEK_BASE_URL, DEFAULT_OPENROUTER_BASE_URL, DEFAULT_OLLAMA_BASE_URL, DEFAULT_BEDROCK_REGION } from "./constants.js";
2
2
  export class Configuration {
3
3
  _openaiApiKey;
4
4
  _openaiApiBase;
@@ -27,7 +27,7 @@ export class Configuration {
27
27
  this._openaiApiKey = v;
28
28
  }
29
29
  get openaiApiBase() {
30
- return this._openaiApiBase ?? process.env.OPENAI_API_BASE?.trim();
30
+ return this._openaiApiBase ?? process.env.OPENAI_API_BASE?.trim() ?? DEFAULT_OPENAI_BASE_URL;
31
31
  }
32
32
  set openaiApiBase(v) {
33
33
  this._openaiApiBase = v;
@@ -39,7 +39,7 @@ export class Configuration {
39
39
  this._anthropicApiKey = v;
40
40
  }
41
41
  get anthropicApiBase() {
42
- return this._anthropicApiBase ?? process.env.ANTHROPIC_API_BASE?.trim();
42
+ return (this._anthropicApiBase ?? process.env.ANTHROPIC_API_BASE?.trim() ?? DEFAULT_ANTHROPIC_BASE_URL);
43
43
  }
44
44
  set anthropicApiBase(v) {
45
45
  this._anthropicApiBase = v;
@@ -51,7 +51,7 @@ export class Configuration {
51
51
  this._geminiApiKey = v;
52
52
  }
53
53
  get geminiApiBase() {
54
- return this._geminiApiBase ?? process.env.GEMINI_API_BASE?.trim();
54
+ return this._geminiApiBase ?? process.env.GEMINI_API_BASE?.trim() ?? DEFAULT_GEMINI_BASE_URL;
55
55
  }
56
56
  set geminiApiBase(v) {
57
57
  this._geminiApiBase = v;
@@ -63,7 +63,7 @@ export class Configuration {
63
63
  this._deepseekApiKey = v;
64
64
  }
65
65
  get deepseekApiBase() {
66
- return this._deepseekApiBase ?? process.env.DEEPSEEK_API_BASE?.trim();
66
+ return (this._deepseekApiBase ?? process.env.DEEPSEEK_API_BASE?.trim() ?? DEFAULT_DEEPSEEK_BASE_URL);
67
67
  }
68
68
  set deepseekApiBase(v) {
69
69
  this._deepseekApiBase = v;
@@ -81,7 +81,9 @@ export class Configuration {
81
81
  this._openrouterApiKey = v;
82
82
  }
83
83
  get openrouterApiBase() {
84
- return this._openrouterApiBase ?? process.env.OPENROUTER_API_BASE?.trim();
84
+ return (this._openrouterApiBase ??
85
+ process.env.OPENROUTER_API_BASE?.trim() ??
86
+ DEFAULT_OPENROUTER_BASE_URL);
85
87
  }
86
88
  set openrouterApiBase(v) {
87
89
  this._openrouterApiBase = v;
@@ -112,7 +114,7 @@ export class Configuration {
112
114
  this._bedrockSessionToken = v;
113
115
  }
114
116
  get bedrockRegion() {
115
- return this._bedrockRegion ?? process.env.AWS_REGION?.trim() ?? "us-east-1";
117
+ return this._bedrockRegion ?? process.env.AWS_REGION?.trim() ?? DEFAULT_BEDROCK_REGION;
116
118
  }
117
119
  set bedrockRegion(v) {
118
120
  this._bedrockRegion = v;
@@ -8,6 +8,11 @@ export declare const DEFAULT_MAX_RETRIES = 2;
8
8
  export declare const DEFAULT_TOOL_EXECUTION = ToolExecutionMode.AUTO;
9
9
  export declare const DEFAULT_REQUEST_TIMEOUT = 30000;
10
10
  export declare const DEFAULT_MAX_TOKENS = 4096;
11
+ export declare const DEFAULT_OPENAI_BASE_URL = "https://api.openai.com/v1";
12
+ export declare const DEFAULT_ANTHROPIC_BASE_URL = "https://api.anthropic.com/v1";
13
+ export declare const DEFAULT_GEMINI_BASE_URL = "https://generativelanguage.googleapis.com/v1beta";
14
+ export declare const DEFAULT_DEEPSEEK_BASE_URL = "https://api.deepseek.com";
15
+ export declare const DEFAULT_OPENROUTER_BASE_URL = "https://openrouter.ai/api/v1";
11
16
  export declare const DEFAULT_OLLAMA_BASE_URL = "http://localhost:11434/v1";
12
17
  export declare const DEFAULT_MODELS: {
13
18
  readonly TRANSCRIPTION: "whisper-1";
@@ -15,4 +20,5 @@ export declare const DEFAULT_MODELS: {
15
20
  readonly EMBEDDING: "text-embedding-3-small";
16
21
  readonly IMAGE: "dall-e-3";
17
22
  };
23
+ export declare const DEFAULT_BEDROCK_REGION = "us-east-1";
18
24
  //# sourceMappingURL=constants.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA,oBAAY,iBAAiB;IAC3B,IAAI,SAAS;IACb,OAAO,YAAY;IACnB,OAAO,YAAY;CACpB;AAED,eAAO,MAAM,sBAAsB,IAAI,CAAC;AACxC,eAAO,MAAM,mBAAmB,IAAI,CAAC;AACrC,eAAO,MAAM,sBAAsB,yBAAyB,CAAC;AAC7D,eAAO,MAAM,uBAAuB,QAAQ,CAAC;AAC7C,eAAO,MAAM,kBAAkB,OAAO,CAAC;AACvC,eAAO,MAAM,uBAAuB,8BAA8B,CAAC;AAEnE,eAAO,MAAM,cAAc;;;;;CAKjB,CAAC"}
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA,oBAAY,iBAAiB;IAC3B,IAAI,SAAS;IACb,OAAO,YAAY;IACnB,OAAO,YAAY;CACpB;AAED,eAAO,MAAM,sBAAsB,IAAI,CAAC;AACxC,eAAO,MAAM,mBAAmB,IAAI,CAAC;AACrC,eAAO,MAAM,sBAAsB,yBAAyB,CAAC;AAC7D,eAAO,MAAM,uBAAuB,QAAQ,CAAC;AAC7C,eAAO,MAAM,kBAAkB,OAAO,CAAC;AAEvC,eAAO,MAAM,uBAAuB,8BAA8B,CAAC;AACnE,eAAO,MAAM,0BAA0B,iCAAiC,CAAC;AACzE,eAAO,MAAM,uBAAuB,qDAAqD,CAAC;AAC1F,eAAO,MAAM,yBAAyB,6BAA6B,CAAC;AACpE,eAAO,MAAM,2BAA2B,iCAAiC,CAAC;AAC1E,eAAO,MAAM,uBAAuB,8BAA8B,CAAC;AAEnE,eAAO,MAAM,cAAc;;;;;CAKjB,CAAC;AAEX,eAAO,MAAM,sBAAsB,cAAc,CAAC"}
package/dist/constants.js CHANGED
@@ -9,6 +9,11 @@ export const DEFAULT_MAX_RETRIES = 2;
9
9
  export const DEFAULT_TOOL_EXECUTION = ToolExecutionMode.AUTO;
10
10
  export const DEFAULT_REQUEST_TIMEOUT = 30000; // 30 seconds
11
11
  export const DEFAULT_MAX_TOKENS = 4096; // 4K tokens output limit
12
+ export const DEFAULT_OPENAI_BASE_URL = "https://api.openai.com/v1";
13
+ export const DEFAULT_ANTHROPIC_BASE_URL = "https://api.anthropic.com/v1";
14
+ export const DEFAULT_GEMINI_BASE_URL = "https://generativelanguage.googleapis.com/v1beta";
15
+ export const DEFAULT_DEEPSEEK_BASE_URL = "https://api.deepseek.com";
16
+ export const DEFAULT_OPENROUTER_BASE_URL = "https://openrouter.ai/api/v1";
12
17
  export const DEFAULT_OLLAMA_BASE_URL = "http://localhost:11434/v1";
13
18
  export const DEFAULT_MODELS = {
14
19
  TRANSCRIPTION: "whisper-1",
@@ -16,3 +21,4 @@ export const DEFAULT_MODELS = {
16
21
  EMBEDDING: "text-embedding-3-small",
17
22
  IMAGE: "dall-e-3"
18
23
  };
24
+ export const DEFAULT_BEDROCK_REGION = "us-east-1";
@@ -35,6 +35,12 @@ export declare class APIError extends LLMError {
35
35
  export declare class BadRequestError extends APIError {
36
36
  constructor(message: string, body: unknown, provider?: string, model?: string);
37
37
  }
38
+ /**
39
+ * 400 - Specifically for context window/token limit issues
40
+ */
41
+ export declare class ContextWindowExceededError extends BadRequestError {
42
+ constructor(message: string, body: unknown, provider?: string, model?: string);
43
+ }
38
44
  /**
39
45
  * 401 - Invalid or missing API key
40
46
  */
@@ -66,6 +72,12 @@ export declare class AuthenticationError extends APIError {
66
72
  export declare class RateLimitError extends APIError {
67
73
  constructor(message: string, body: unknown, provider?: string, model?: string);
68
74
  }
75
+ /**
76
+ * 429 - Out of credits or monthly quota exceeded
77
+ */
78
+ export declare class InsufficientQuotaError extends RateLimitError {
79
+ constructor(message: string, body: unknown, provider?: string, model?: string);
80
+ }
69
81
  /**
70
82
  * 500+ - Provider server error
71
83
  */
@@ -87,8 +99,14 @@ export declare class ConfigurationError extends LLMError {
87
99
  /**
88
100
  * Requested model or provider not found
89
101
  */
90
- export declare class NotFoundError extends LLMError {
91
- constructor(message: string);
102
+ export declare class NotFoundError extends APIError {
103
+ constructor(message: string, status?: number, body?: unknown, provider?: string, model?: string);
104
+ }
105
+ /**
106
+ * Specifically when the requested model ID is invalid/unknown
107
+ */
108
+ export declare class InvalidModelError extends NotFoundError {
109
+ constructor(message: string, body: unknown, provider?: string, model?: string);
92
110
  }
93
111
  /**
94
112
  * Model does not support requested capability
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/errors/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/errors/index.ts"],"names":[],"mappings":"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"}
@@ -49,6 +49,15 @@ export class BadRequestError extends APIError {
49
49
  this.name = "BadRequestError";
50
50
  }
51
51
  }
52
+ /**
53
+ * 400 - Specifically for context window/token limit issues
54
+ */
55
+ export class ContextWindowExceededError extends BadRequestError {
56
+ constructor(message, body, provider, model) {
57
+ super(message, body, provider, model);
58
+ this.name = "ContextWindowExceededError";
59
+ }
60
+ }
52
61
  /**
53
62
  * 401 - Invalid or missing API key
54
63
  */
@@ -95,6 +104,15 @@ export class RateLimitError extends APIError {
95
104
  this.name = "RateLimitError";
96
105
  }
97
106
  }
107
+ /**
108
+ * 429 - Out of credits or monthly quota exceeded
109
+ */
110
+ export class InsufficientQuotaError extends RateLimitError {
111
+ constructor(message, body, provider, model) {
112
+ super(message, body, provider, model);
113
+ this.name = "InsufficientQuotaError";
114
+ }
115
+ }
98
116
  /**
99
117
  * 500+ - Provider server error
100
118
  */
@@ -124,9 +142,19 @@ export class ConfigurationError extends LLMError {
124
142
  /**
125
143
  * Requested model or provider not found
126
144
  */
127
- export class NotFoundError extends LLMError {
128
- constructor(message) {
129
- super(message, "NOT_FOUND_ERROR");
145
+ export class NotFoundError extends APIError {
146
+ constructor(message, status = 404, body = null, provider, model) {
147
+ super(message, status, body, provider, model);
148
+ this.name = "NotFoundError";
149
+ }
150
+ }
151
+ /**
152
+ * Specifically when the requested model ID is invalid/unknown
153
+ */
154
+ export class InvalidModelError extends NotFoundError {
155
+ constructor(message, body, provider, model) {
156
+ super(message, 404, body, provider, model);
157
+ this.name = "InvalidModelError";
130
158
  }
131
159
  }
132
160
  /**
package/dist/index.d.ts CHANGED
@@ -6,14 +6,17 @@ export * from "./chat/ChatResponse.js";
6
6
  export * from "./chat/Chat.js";
7
7
  export * from "./chat/ChatStream.js";
8
8
  export * from "./streaming/Stream.js";
9
+ export * from "./errors/index.js";
10
+ export type { Middleware, MiddlewareContext } from "./types/Middleware.js";
11
+ export * from "./middlewares/index.js";
9
12
  export { z } from "zod";
10
13
  export { NodeLLM, LegacyNodeLLM, createLLM, NodeLLMCore, Transcription, Moderation, Embedding, ModelRegistry, PricingRegistry } from "./llm.js";
11
14
  export { config } from "./config.js";
12
15
  export type { NodeLLMConfig } from "./config.js";
13
- export { providerRegistry } from "./providers/registry.js";
16
+ export { providerRegistry, ProviderInterceptor } from "./providers/registry.js";
14
17
  export { Schema } from "./schema/Schema.js";
15
18
  export { BaseProvider } from "./providers/BaseProvider.js";
16
- export { ChatRequest, ChatResponse, ChatChunk, ThinkingConfig, ThinkingResult, Usage } from "./providers/Provider.js";
19
+ export { Provider, ProviderCapabilities, ChatRequest, ChatResponse, ChatChunk, ThinkingConfig, ThinkingResult, Usage, ImageRequest, ImageResponse, TranscriptionRequest, TranscriptionResponse, ModerationRequest, ModerationResponse, ModerationResult, EmbeddingRequest, EmbeddingResponse } from "./providers/Provider.js";
17
20
  export { resolveModelAlias } from "./model_aliases.js";
18
21
  export { default as MODEL_ALIASES } from "./aliases.js";
19
22
  export { ToolExecutionMode, DEFAULT_MAX_TOOL_CALLS, DEFAULT_MAX_RETRIES, DEFAULT_TOOL_EXECUTION, DEFAULT_OLLAMA_BASE_URL, DEFAULT_MODELS } from "./constants.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,uBAAuB,CAAC;AACtC,cAAc,wBAAwB,CAAC;AACvC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,sBAAsB,CAAC;AACrC,cAAc,uBAAuB,CAAC;AAEtC,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EACL,OAAO,EACP,aAAa,EACb,SAAS,EACT,WAAW,EACX,aAAa,EACb,UAAU,EACV,SAAS,EACT,aAAa,EACb,eAAe,EAChB,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,YAAY,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAC5C,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAC3D,OAAO,EACL,WAAW,EACX,YAAY,EACZ,SAAS,EACT,cAAc,EACd,cAAc,EACd,KAAK,EACN,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,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,iBAAiB,EACjB,kBAAkB,EAClB,gBAAgB,EAChB,gBAAgB,EAChB,iBAAiB,EAClB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,cAAc,CAAC;AACxD,OAAO,EACL,iBAAiB,EACjB,sBAAsB,EACtB,mBAAmB,EACnB,sBAAsB,EACtB,uBAAuB,EACvB,cAAc,EACf,MAAM,gBAAgB,CAAC;AAExB,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC"}
package/dist/index.js CHANGED
@@ -6,6 +6,8 @@ export * from "./chat/ChatResponse.js";
6
6
  export * from "./chat/Chat.js";
7
7
  export * from "./chat/ChatStream.js";
8
8
  export * from "./streaming/Stream.js";
9
+ export * from "./errors/index.js";
10
+ export * from "./middlewares/index.js";
9
11
  export { z } from "zod";
10
12
  export { NodeLLM, LegacyNodeLLM, createLLM, NodeLLMCore, Transcription, Moderation, Embedding, ModelRegistry, PricingRegistry } from "./llm.js";
11
13
  export { config } from "./config.js";
package/dist/llm.d.ts CHANGED
@@ -8,6 +8,7 @@ import { Transcription } from "./transcription/Transcription.js";
8
8
  import { Moderation } from "./moderation/Moderation.js";
9
9
  import { Embedding } from "./embedding/Embedding.js";
10
10
  import { NodeLLMConfig } from "./config.js";
11
+ import { Middleware } from "./types/Middleware.js";
11
12
  export interface RetryOptions {
12
13
  attempts?: number;
13
14
  delayMs?: number;
@@ -15,6 +16,7 @@ export interface RetryOptions {
15
16
  type LLMConfig = {
16
17
  provider?: Provider | string;
17
18
  retry?: RetryOptions;
19
+ middlewares?: Middleware[];
18
20
  defaultChatModel?: string;
19
21
  defaultTranscriptionModel?: string;
20
22
  defaultModerationModel?: string;
@@ -24,10 +26,11 @@ export declare class NodeLLMCore {
24
26
  readonly config: NodeLLMConfig;
25
27
  readonly provider?: Provider | undefined;
26
28
  readonly retry: Required<RetryOptions>;
29
+ readonly middlewares: Middleware[];
27
30
  private readonly defaults;
28
31
  readonly models: typeof ModelRegistry;
29
32
  readonly pricing: typeof PricingRegistry;
30
- constructor(config: NodeLLMConfig, provider?: Provider | undefined, retry?: Required<RetryOptions>, defaults?: {
33
+ constructor(config: NodeLLMConfig, provider?: Provider | undefined, retry?: Required<RetryOptions>, middlewares?: Middleware[], defaults?: {
31
34
  chat?: string;
32
35
  transcription?: string;
33
36
  moderation?: string;
@@ -57,6 +60,7 @@ export declare class NodeLLMCore {
57
60
  quality?: string;
58
61
  assumeModelExists?: boolean;
59
62
  requestTimeout?: number;
63
+ middlewares?: Middleware[];
60
64
  }): Promise<GeneratedImage>;
61
65
  transcribe(file: string, options?: {
62
66
  model?: string;
@@ -66,17 +70,20 @@ export declare class NodeLLMCore {
66
70
  speakerReferences?: string[];
67
71
  assumeModelExists?: boolean;
68
72
  requestTimeout?: number;
73
+ middlewares?: Middleware[];
69
74
  }): Promise<Transcription>;
70
75
  moderate(input: string | string[], options?: {
71
76
  model?: string;
72
77
  assumeModelExists?: boolean;
73
78
  requestTimeout?: number;
79
+ middlewares?: Middleware[];
74
80
  }): Promise<Moderation>;
75
81
  embed(input: string | string[], options?: {
76
82
  model?: string;
77
83
  dimensions?: number;
78
84
  assumeModelExists?: boolean;
79
85
  requestTimeout?: number;
86
+ middlewares?: Middleware[];
80
87
  }): Promise<Embedding>;
81
88
  }
82
89
  export { Transcription, Moderation, Embedding, ModelRegistry, PricingRegistry };
package/dist/llm.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"llm.d.ts","sourceRoot":"","sources":["../src/llm.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"llm.d.ts","sourceRoot":"","sources":["../src/llm.ts"],"names":[],"mappings":"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"}