@node-llm/core 1.5.2 → 1.6.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 (185) hide show
  1. package/README.md +84 -110
  2. package/dist/aliases.js +239 -239
  3. package/dist/chat/Chat.d.ts +18 -17
  4. package/dist/chat/Chat.d.ts.map +1 -1
  5. package/dist/chat/Chat.js +63 -42
  6. package/dist/chat/ChatOptions.d.ts +8 -9
  7. package/dist/chat/ChatOptions.d.ts.map +1 -1
  8. package/dist/chat/ChatResponse.d.ts +1 -1
  9. package/dist/chat/ChatResponse.d.ts.map +1 -1
  10. package/dist/chat/ChatResponse.js +22 -8
  11. package/dist/chat/ChatStream.d.ts.map +1 -1
  12. package/dist/chat/ChatStream.js +16 -22
  13. package/dist/chat/Content.d.ts +3 -3
  14. package/dist/chat/Content.d.ts.map +1 -1
  15. package/dist/chat/Content.js +3 -6
  16. package/dist/chat/Message.d.ts +3 -1
  17. package/dist/chat/Message.d.ts.map +1 -1
  18. package/dist/chat/Role.d.ts.map +1 -1
  19. package/dist/chat/Tool.d.ts +15 -15
  20. package/dist/chat/Tool.d.ts.map +1 -1
  21. package/dist/chat/Tool.js +9 -7
  22. package/dist/chat/ToolHandler.d.ts +4 -3
  23. package/dist/chat/ToolHandler.d.ts.map +1 -1
  24. package/dist/chat/ToolHandler.js +10 -14
  25. package/dist/chat/Validation.d.ts.map +1 -1
  26. package/dist/chat/Validation.js +13 -6
  27. package/dist/config.d.ts +4 -0
  28. package/dist/config.d.ts.map +1 -1
  29. package/dist/config.js +80 -25
  30. package/dist/constants.js +1 -1
  31. package/dist/errors/index.d.ts +21 -7
  32. package/dist/errors/index.d.ts.map +1 -1
  33. package/dist/errors/index.js +14 -0
  34. package/dist/index.d.ts +1 -1
  35. package/dist/index.d.ts.map +1 -1
  36. package/dist/index.js +1 -1
  37. package/dist/llm.d.ts +44 -46
  38. package/dist/llm.d.ts.map +1 -1
  39. package/dist/llm.js +206 -134
  40. package/dist/model_aliases.d.ts.map +1 -1
  41. package/dist/models/ModelRegistry.d.ts.map +1 -1
  42. package/dist/models/ModelRegistry.js +12 -10
  43. package/dist/models/PricingRegistry.d.ts +31 -0
  44. package/dist/models/PricingRegistry.d.ts.map +1 -0
  45. package/dist/models/PricingRegistry.js +101 -0
  46. package/dist/models/models.d.ts.map +1 -1
  47. package/dist/models/models.js +5954 -7352
  48. package/dist/models/types.d.ts +37 -34
  49. package/dist/models/types.d.ts.map +1 -1
  50. package/dist/moderation/Moderation.d.ts.map +1 -1
  51. package/dist/moderation/Moderation.js +15 -5
  52. package/dist/providers/BaseProvider.d.ts +12 -8
  53. package/dist/providers/BaseProvider.d.ts.map +1 -1
  54. package/dist/providers/BaseProvider.js +17 -7
  55. package/dist/providers/Provider.d.ts +20 -5
  56. package/dist/providers/Provider.d.ts.map +1 -1
  57. package/dist/providers/anthropic/AnthropicProvider.d.ts +1 -1
  58. package/dist/providers/anthropic/AnthropicProvider.d.ts.map +1 -1
  59. package/dist/providers/anthropic/AnthropicProvider.js +3 -3
  60. package/dist/providers/anthropic/Capabilities.d.ts +2 -1
  61. package/dist/providers/anthropic/Capabilities.d.ts.map +1 -1
  62. package/dist/providers/anthropic/Capabilities.js +3 -20
  63. package/dist/providers/anthropic/Chat.d.ts.map +1 -1
  64. package/dist/providers/anthropic/Chat.js +27 -17
  65. package/dist/providers/anthropic/Errors.d.ts.map +1 -1
  66. package/dist/providers/anthropic/Errors.js +5 -2
  67. package/dist/providers/anthropic/Models.d.ts.map +1 -1
  68. package/dist/providers/anthropic/Models.js +6 -6
  69. package/dist/providers/anthropic/Streaming.d.ts.map +1 -1
  70. package/dist/providers/anthropic/Streaming.js +17 -12
  71. package/dist/providers/anthropic/Utils.js +8 -5
  72. package/dist/providers/anthropic/index.d.ts.map +1 -1
  73. package/dist/providers/anthropic/index.js +4 -3
  74. package/dist/providers/anthropic/types.d.ts +11 -4
  75. package/dist/providers/anthropic/types.d.ts.map +1 -1
  76. package/dist/providers/deepseek/Capabilities.d.ts +7 -5
  77. package/dist/providers/deepseek/Capabilities.d.ts.map +1 -1
  78. package/dist/providers/deepseek/Capabilities.js +9 -5
  79. package/dist/providers/deepseek/Chat.d.ts.map +1 -1
  80. package/dist/providers/deepseek/Chat.js +10 -9
  81. package/dist/providers/deepseek/DeepSeekProvider.d.ts +1 -1
  82. package/dist/providers/deepseek/DeepSeekProvider.d.ts.map +1 -1
  83. package/dist/providers/deepseek/DeepSeekProvider.js +4 -4
  84. package/dist/providers/deepseek/Models.d.ts.map +1 -1
  85. package/dist/providers/deepseek/Models.js +7 -7
  86. package/dist/providers/deepseek/Streaming.d.ts.map +1 -1
  87. package/dist/providers/deepseek/Streaming.js +11 -8
  88. package/dist/providers/deepseek/index.d.ts.map +1 -1
  89. package/dist/providers/deepseek/index.js +5 -4
  90. package/dist/providers/gemini/Capabilities.d.ts +5 -33
  91. package/dist/providers/gemini/Capabilities.d.ts.map +1 -1
  92. package/dist/providers/gemini/Capabilities.js +7 -30
  93. package/dist/providers/gemini/Chat.d.ts.map +1 -1
  94. package/dist/providers/gemini/Chat.js +24 -19
  95. package/dist/providers/gemini/ChatUtils.d.ts.map +1 -1
  96. package/dist/providers/gemini/ChatUtils.js +10 -10
  97. package/dist/providers/gemini/Embeddings.d.ts.map +1 -1
  98. package/dist/providers/gemini/Embeddings.js +2 -2
  99. package/dist/providers/gemini/Errors.d.ts.map +1 -1
  100. package/dist/providers/gemini/Errors.js +5 -2
  101. package/dist/providers/gemini/GeminiProvider.d.ts +1 -1
  102. package/dist/providers/gemini/GeminiProvider.d.ts.map +1 -1
  103. package/dist/providers/gemini/GeminiProvider.js +3 -3
  104. package/dist/providers/gemini/Image.d.ts.map +1 -1
  105. package/dist/providers/gemini/Image.js +8 -8
  106. package/dist/providers/gemini/Models.d.ts.map +1 -1
  107. package/dist/providers/gemini/Models.js +6 -6
  108. package/dist/providers/gemini/Streaming.d.ts.map +1 -1
  109. package/dist/providers/gemini/Streaming.js +18 -14
  110. package/dist/providers/gemini/Transcription.d.ts.map +1 -1
  111. package/dist/providers/gemini/Transcription.js +11 -11
  112. package/dist/providers/gemini/index.d.ts +1 -1
  113. package/dist/providers/gemini/index.d.ts.map +1 -1
  114. package/dist/providers/gemini/index.js +5 -4
  115. package/dist/providers/gemini/types.d.ts +4 -4
  116. package/dist/providers/gemini/types.d.ts.map +1 -1
  117. package/dist/providers/ollama/Capabilities.d.ts.map +1 -1
  118. package/dist/providers/ollama/Capabilities.js +6 -2
  119. package/dist/providers/ollama/Models.js +1 -1
  120. package/dist/providers/ollama/OllamaProvider.d.ts +1 -1
  121. package/dist/providers/ollama/OllamaProvider.d.ts.map +1 -1
  122. package/dist/providers/ollama/OllamaProvider.js +2 -2
  123. package/dist/providers/ollama/index.d.ts +1 -1
  124. package/dist/providers/ollama/index.d.ts.map +1 -1
  125. package/dist/providers/ollama/index.js +7 -3
  126. package/dist/providers/openai/Capabilities.d.ts +2 -1
  127. package/dist/providers/openai/Capabilities.d.ts.map +1 -1
  128. package/dist/providers/openai/Capabilities.js +9 -21
  129. package/dist/providers/openai/Chat.d.ts.map +1 -1
  130. package/dist/providers/openai/Chat.js +18 -14
  131. package/dist/providers/openai/Embedding.d.ts.map +1 -1
  132. package/dist/providers/openai/Embedding.js +11 -7
  133. package/dist/providers/openai/Errors.d.ts.map +1 -1
  134. package/dist/providers/openai/Errors.js +5 -2
  135. package/dist/providers/openai/Image.d.ts.map +1 -1
  136. package/dist/providers/openai/Image.js +6 -6
  137. package/dist/providers/openai/Models.d.ts +1 -1
  138. package/dist/providers/openai/Models.d.ts.map +1 -1
  139. package/dist/providers/openai/Models.js +12 -8
  140. package/dist/providers/openai/Moderation.d.ts.map +1 -1
  141. package/dist/providers/openai/Moderation.js +6 -6
  142. package/dist/providers/openai/OpenAIProvider.d.ts +2 -3
  143. package/dist/providers/openai/OpenAIProvider.d.ts.map +1 -1
  144. package/dist/providers/openai/OpenAIProvider.js +4 -4
  145. package/dist/providers/openai/Streaming.d.ts.map +1 -1
  146. package/dist/providers/openai/Streaming.js +18 -13
  147. package/dist/providers/openai/Transcription.d.ts.map +1 -1
  148. package/dist/providers/openai/Transcription.js +15 -12
  149. package/dist/providers/openai/index.d.ts +1 -1
  150. package/dist/providers/openai/index.d.ts.map +1 -1
  151. package/dist/providers/openai/index.js +6 -5
  152. package/dist/providers/openai/types.d.ts +1 -1
  153. package/dist/providers/openai/utils.js +2 -2
  154. package/dist/providers/openrouter/Capabilities.d.ts +3 -3
  155. package/dist/providers/openrouter/Capabilities.d.ts.map +1 -1
  156. package/dist/providers/openrouter/Capabilities.js +21 -24
  157. package/dist/providers/openrouter/Models.d.ts.map +1 -1
  158. package/dist/providers/openrouter/Models.js +20 -16
  159. package/dist/providers/openrouter/OpenRouterProvider.d.ts.map +1 -1
  160. package/dist/providers/openrouter/OpenRouterProvider.js +1 -1
  161. package/dist/providers/openrouter/index.d.ts +1 -1
  162. package/dist/providers/openrouter/index.d.ts.map +1 -1
  163. package/dist/providers/openrouter/index.js +6 -5
  164. package/dist/providers/registry.d.ts +18 -2
  165. package/dist/providers/registry.d.ts.map +1 -1
  166. package/dist/providers/registry.js +17 -2
  167. package/dist/providers/utils.js +1 -1
  168. package/dist/schema/Schema.d.ts +3 -3
  169. package/dist/schema/Schema.d.ts.map +1 -1
  170. package/dist/schema/Schema.js +2 -2
  171. package/dist/schema/to-json-schema.d.ts +1 -1
  172. package/dist/schema/to-json-schema.d.ts.map +1 -1
  173. package/dist/streaming/Stream.d.ts.map +1 -1
  174. package/dist/streaming/Stream.js +3 -3
  175. package/dist/utils/Binary.d.ts.map +1 -1
  176. package/dist/utils/Binary.js +32 -23
  177. package/dist/utils/FileLoader.d.ts.map +1 -1
  178. package/dist/utils/FileLoader.js +25 -4
  179. package/dist/utils/audio.js +2 -2
  180. package/dist/utils/fetch.d.ts.map +1 -1
  181. package/dist/utils/fetch.js +14 -4
  182. package/dist/utils/logger.d.ts +3 -3
  183. package/dist/utils/logger.d.ts.map +1 -1
  184. package/dist/utils/logger.js +2 -2
  185. package/package.json +1 -1
@@ -32,14 +32,17 @@ export class OpenAITranscription {
32
32
  if (request.language) {
33
33
  formData.append("language", request.language);
34
34
  }
35
- const url = buildUrl(this.baseUrl, '/audio/transcriptions');
36
- logger.logRequest("OpenAI", "POST", url, { model: request.model || DEFAULT_MODELS.TRANSCRIPTION, file: fileName });
35
+ const url = buildUrl(this.baseUrl, "/audio/transcriptions");
36
+ logger.logRequest("OpenAI", "POST", url, {
37
+ model: request.model || DEFAULT_MODELS.TRANSCRIPTION,
38
+ file: fileName
39
+ });
37
40
  const response = await fetchWithTimeout(url, {
38
41
  method: "POST",
39
42
  headers: {
40
- "Authorization": `Bearer ${this.apiKey}`,
43
+ Authorization: `Bearer ${this.apiKey}`
41
44
  },
42
- body: formData,
45
+ body: formData
43
46
  }, request.requestTimeout);
44
47
  if (!response.ok) {
45
48
  await handleOpenAIError(response, request.model || DEFAULT_MODELS.TRANSCRIPTION);
@@ -50,7 +53,7 @@ export class OpenAITranscription {
50
53
  text: json.text,
51
54
  model: json.model || request.model || DEFAULT_MODELS.TRANSCRIPTION,
52
55
  duration: json.duration || estimatedDuration,
53
- segments: json.segments?.map(s => ({
56
+ segments: json.segments?.map((s) => ({
54
57
  id: s.id,
55
58
  start: s.start,
56
59
  end: s.end,
@@ -62,7 +65,7 @@ export class OpenAITranscription {
62
65
  const { data, fileName, duration: estimatedDuration } = await AudioUtils.load(request.file);
63
66
  const base64Audio = Buffer.from(data).toString("base64");
64
67
  const model = request.model || "gpt-4o";
65
- let actualModel = "gpt-4o-audio-preview";
68
+ const actualModel = "gpt-4o-audio-preview";
66
69
  let defaultPrompt = "Transcribe the audio exactly. Return only the transcription text.";
67
70
  let isDiarization = false;
68
71
  if (model.includes("diarize")) {
@@ -125,15 +128,15 @@ export class OpenAITranscription {
125
128
  }
126
129
  ]
127
130
  };
128
- const url = buildUrl(this.baseUrl, '/chat/completions');
131
+ const url = buildUrl(this.baseUrl, "/chat/completions");
129
132
  logger.logRequest("OpenAI", "POST", url, body);
130
133
  const response = await fetchWithTimeout(url, {
131
134
  method: "POST",
132
135
  headers: {
133
- "Authorization": `Bearer ${this.apiKey}`,
134
- "Content-Type": "application/json",
136
+ Authorization: `Bearer ${this.apiKey}`,
137
+ "Content-Type": "application/json"
135
138
  },
136
- body: JSON.stringify(body),
139
+ body: JSON.stringify(body)
137
140
  }, request.requestTimeout);
138
141
  if (!response.ok) {
139
142
  await handleOpenAIError(response, actualModel);
@@ -154,10 +157,10 @@ export class OpenAITranscription {
154
157
  text: s.text || "",
155
158
  speaker: s.speaker
156
159
  }));
157
- text = segments.map(s => `${s.speaker}: ${s.text}`).join("\n");
160
+ text = segments.map((s) => `${s.speaker}: ${s.text}`).join("\n");
158
161
  }
159
162
  }
160
- catch (e) {
163
+ catch {
161
164
  text = content;
162
165
  }
163
166
  }
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * Idempotent registration of the OpenAI provider.
3
- * Automatically called by NodeLLM.configure({ provider: 'openai' })
3
+ * Automatically called when using createLLM({ provider: 'openai' })
4
4
  */
5
5
  export declare function registerOpenAIProvider(): void;
6
6
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/providers/openai/index.ts"],"names":[],"mappings":"AAMA;;;GAGG;AACH,wBAAgB,sBAAsB,SAerC;AAED;;GAEG;AACH,eAAO,MAAM,sBAAsB,+BAAyB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/providers/openai/index.ts"],"names":[],"mappings":"AAMA;;;GAGG;AACH,wBAAgB,sBAAsB,SAgBrC;AAED;;GAEG;AACH,eAAO,MAAM,sBAAsB,+BAAyB,CAAC"}
@@ -1,17 +1,18 @@
1
- import { config } from "../../config.js";
1
+ import { config as globalConfig } from "../../config.js";
2
2
  import { providerRegistry } from "../registry.js";
3
3
  import { OpenAIProvider } from "./OpenAIProvider.js";
4
4
  let registered = false;
5
5
  /**
6
6
  * Idempotent registration of the OpenAI provider.
7
- * Automatically called by NodeLLM.configure({ provider: 'openai' })
7
+ * Automatically called when using createLLM({ provider: 'openai' })
8
8
  */
9
9
  export function registerOpenAIProvider() {
10
10
  if (registered)
11
11
  return;
12
- providerRegistry.register("openai", () => {
13
- const apiKey = config.openaiApiKey;
14
- const baseUrl = config.openaiApiBase;
12
+ providerRegistry.register("openai", (config) => {
13
+ const cfg = config || globalConfig;
14
+ const apiKey = cfg.openaiApiKey;
15
+ const baseUrl = cfg.openaiApiBase;
15
16
  if (!apiKey) {
16
17
  throw new Error("openaiApiKey is not set in config or OPENAI_API_KEY environment variable");
17
18
  }
@@ -11,7 +11,7 @@ export interface OpenAIChatResponse {
11
11
  reasoning_content?: string | null;
12
12
  tool_calls?: Array<{
13
13
  id: string;
14
- type: 'function';
14
+ type: "function";
15
15
  function: {
16
16
  name: string;
17
17
  arguments: string;
@@ -17,8 +17,8 @@
17
17
  * // => 'https://resource.azure.com/openai/deployments/gpt-4/chat/completions?api-version=2024-08-01'
18
18
  */
19
19
  export function buildUrl(baseUrl, endpoint) {
20
- if (baseUrl.includes('?')) {
21
- const [basePath, queryString] = baseUrl.split('?');
20
+ if (baseUrl.includes("?")) {
21
+ const [basePath, queryString] = baseUrl.split("?");
22
22
  return `${basePath}${endpoint}?${queryString}`;
23
23
  }
24
24
  return `${baseUrl}${endpoint}`;
@@ -4,9 +4,9 @@ export declare class OpenRouterCapabilities {
4
4
  static supportsTools(model: string): boolean;
5
5
  static supportsStructuredOutput(model: string): boolean;
6
6
  static supportsEmbeddings(model: string): boolean;
7
- static supportsImageGeneration(model: string): boolean;
8
- static supportsTranscription(model: string): boolean;
9
- static supportsModeration(model: string): boolean;
7
+ static supportsImageGeneration(_model: string): boolean;
8
+ static supportsTranscription(_model: string): boolean;
9
+ static supportsModeration(_model: string): boolean;
10
10
  static supportsReasoning(model: string): boolean;
11
11
  static getContextWindow(model: string): number | null;
12
12
  }
@@ -1 +1 @@
1
- {"version":3,"file":"Capabilities.d.ts","sourceRoot":"","sources":["../../../src/providers/openrouter/Capabilities.ts"],"names":[],"mappings":"AAEA,qBAAa,sBAAsB;IACjC,OAAO,CAAC,MAAM,CAAC,SAAS;IAIxB,MAAM,CAAC,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO;IAc7C,MAAM,CAAC,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO;IAS5C,MAAM,CAAC,wBAAwB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO;IAUvD,MAAM,CAAC,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO;IASjD,MAAM,CAAC,uBAAuB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO;IAItD,MAAM,CAAC,qBAAqB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO;IAIpD,MAAM,CAAC,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO;IAIjD,MAAM,CAAC,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO;IAWhD,MAAM,CAAC,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;CAItD"}
1
+ {"version":3,"file":"Capabilities.d.ts","sourceRoot":"","sources":["../../../src/providers/openrouter/Capabilities.ts"],"names":[],"mappings":"AAEA,qBAAa,sBAAsB;IACjC,OAAO,CAAC,MAAM,CAAC,SAAS;IAIxB,MAAM,CAAC,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO;IAiB7C,MAAM,CAAC,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO;IAU5C,MAAM,CAAC,wBAAwB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO;IAQvD,MAAM,CAAC,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO;IAQjD,MAAM,CAAC,uBAAuB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO;IAIvD,MAAM,CAAC,qBAAqB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO;IAIrD,MAAM,CAAC,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO;IAIlD,MAAM,CAAC,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO;IAahD,MAAM,CAAC,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;CAItD"}
@@ -6,20 +6,20 @@ export class OpenRouterCapabilities {
6
6
  static supportsVision(model) {
7
7
  const info = this.findModel(model);
8
8
  if (info)
9
- return info.capabilities.includes('vision') || info.modalities.input.includes('image');
9
+ return info.capabilities.includes("vision") || info.modalities.input.includes("image");
10
10
  // Fallback heuristics
11
- return model.includes('vision') ||
12
- model.includes('gpt-4o') ||
13
- model.includes('claude-3') ||
14
- model.includes('gemini-1.5') ||
15
- model.includes('gemini-2.0') ||
16
- model.includes('flash') ||
17
- model.includes('gemini-pro-vision');
11
+ return (model.includes("vision") ||
12
+ model.includes("gpt-4o") ||
13
+ model.includes("claude-3") ||
14
+ model.includes("gemini-1.5") ||
15
+ model.includes("gemini-2.0") ||
16
+ model.includes("flash") ||
17
+ model.includes("gemini-pro-vision"));
18
18
  }
19
19
  static supportsTools(model) {
20
20
  const info = this.findModel(model);
21
21
  if (info)
22
- return info.capabilities.includes('tools') || info.capabilities.includes('function_calling');
22
+ return info.capabilities.includes("tools") || info.capabilities.includes("function_calling");
23
23
  // Fallback: Default to true for OpenRouter as most models support tools
24
24
  // but this is the "honest" check we wanted.
25
25
  return true;
@@ -27,38 +27,35 @@ export class OpenRouterCapabilities {
27
27
  static supportsStructuredOutput(model) {
28
28
  const info = this.findModel(model);
29
29
  if (info)
30
- return info.capabilities.includes('structured_output') || info.id.includes('gpt-4');
30
+ return info.capabilities.includes("structured_output") || info.id.includes("gpt-4");
31
31
  // Fallback heuristics
32
- return model.includes('gpt-4') ||
33
- model.includes('gpt-3.5') ||
34
- model.includes('claude-3');
32
+ return model.includes("gpt-4") || model.includes("gpt-3.5") || model.includes("claude-3");
35
33
  }
36
34
  static supportsEmbeddings(model) {
37
35
  const info = this.findModel(model);
38
36
  if (info)
39
- return info.capabilities.includes('embeddings');
37
+ return info.capabilities.includes("embeddings");
40
38
  // Fallback heuristics
41
- return model.includes('embedding') ||
42
- model.includes('text-sdk');
39
+ return model.includes("embedding") || model.includes("text-sdk");
43
40
  }
44
- static supportsImageGeneration(model) {
41
+ static supportsImageGeneration(_model) {
45
42
  return false;
46
43
  }
47
- static supportsTranscription(model) {
44
+ static supportsTranscription(_model) {
48
45
  return false;
49
46
  }
50
- static supportsModeration(model) {
47
+ static supportsModeration(_model) {
51
48
  return false;
52
49
  }
53
50
  static supportsReasoning(model) {
54
51
  const info = this.findModel(model);
55
52
  if (info)
56
- return info.capabilities.includes('reasoning');
53
+ return info.capabilities.includes("reasoning");
57
54
  // Fallback heuristics
58
- return model.includes('o1') ||
59
- model.includes('o3') ||
60
- model.includes('deepseek-r1') ||
61
- model.includes('qwq');
55
+ return (model.includes("o1") ||
56
+ model.includes("o3") ||
57
+ model.includes("deepseek-r1") ||
58
+ model.includes("qwq"));
62
59
  }
63
60
  static getContextWindow(model) {
64
61
  const info = this.findModel(model);
@@ -1 +1 @@
1
- {"version":3,"file":"Models.d.ts","sourceRoot":"","sources":["../../../src/providers/openrouter/Models.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAwB3C,qBAAa,gBAAgB;IAEzB,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,MAAM;gBADN,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM;IAG3B,OAAO,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;IAiBrC,OAAO,CAAC,UAAU;IA0BlB,OAAO,CAAC,iBAAiB;IAyBzB,OAAO,CAAC,YAAY;CA2BrB"}
1
+ {"version":3,"file":"Models.d.ts","sourceRoot":"","sources":["../../../src/providers/openrouter/Models.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAwB3C,qBAAa,gBAAgB;IAEzB,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,MAAM;gBADN,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM;IAG3B,OAAO,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;IAiBrC,OAAO,CAAC,UAAU;IA0BlB,OAAO,CAAC,iBAAiB;IA8BzB,OAAO,CAAC,YAAY;CA6BrB"}
@@ -8,9 +8,9 @@ export class OpenRouterModels {
8
8
  async execute() {
9
9
  const response = await fetch(`${this.baseUrl}/models`, {
10
10
  headers: {
11
- "Authorization": `Bearer ${this.apiKey}`,
12
- "Content-Type": "application/json",
13
- },
11
+ Authorization: `Bearer ${this.apiKey}`,
12
+ "Content-Type": "application/json"
13
+ }
14
14
  });
15
15
  if (!response.ok) {
16
16
  throw new Error(`OpenRouter API error: ${response.status}`);
@@ -19,7 +19,7 @@ export class OpenRouterModels {
19
19
  return data.data.map((model) => this.parseModel(model));
20
20
  }
21
21
  parseModel(model) {
22
- const family = model.id.split('/')[0] || "";
22
+ const family = model.id.split("/")[0] || "";
23
23
  return {
24
24
  id: model.id,
25
25
  name: model.name,
@@ -46,18 +46,21 @@ export class OpenRouterModels {
46
46
  const caps = [];
47
47
  const params = model.supported_parameters || [];
48
48
  const inputModalities = model.architecture?.input_modalities || [];
49
- if (params.includes('tools') || params.includes('function_calling')) {
50
- caps.push('tools');
49
+ if (params.includes("tools") || params.includes("function_calling")) {
50
+ caps.push("tools");
51
51
  }
52
- if (inputModalities.includes('image')) {
53
- caps.push('vision');
52
+ if (inputModalities.includes("image")) {
53
+ caps.push("vision");
54
54
  }
55
- if (model.id.includes('embedding') || model.id.includes('text-sdk')) {
56
- caps.push('embeddings');
55
+ if (model.id.includes("embedding") || model.id.includes("text-sdk")) {
56
+ caps.push("embeddings");
57
57
  }
58
58
  // Heuristics for reasoning
59
- if (model.id.includes('o1') || model.id.includes('o3') || model.id.includes('deepseek-r1') || model.id.includes('qwq')) {
60
- caps.push('reasoning');
59
+ if (model.id.includes("o1") ||
60
+ model.id.includes("o3") ||
61
+ model.id.includes("deepseek-r1") ||
62
+ model.id.includes("qwq")) {
63
+ caps.push("reasoning");
61
64
  }
62
65
  return caps;
63
66
  }
@@ -71,17 +74,18 @@ export class OpenRouterModels {
71
74
  const completion = parseFloat(pricing.completion);
72
75
  const cachedInput = pricing.input_cache_read ? parseFloat(pricing.input_cache_read) : 0;
73
76
  const reasoning = pricing.internal_reasoning ? parseFloat(pricing.internal_reasoning) : 0;
77
+ const standard = result.text_tokens.standard;
74
78
  if (prompt > 0) {
75
- result.text_tokens.standard.input_per_million = prompt * 1_000_000;
79
+ standard.input_per_million = prompt * 1_000_000;
76
80
  }
77
81
  if (completion > 0) {
78
- result.text_tokens.standard.output_per_million = completion * 1_000_000;
82
+ standard.output_per_million = completion * 1_000_000;
79
83
  }
80
84
  if (cachedInput > 0) {
81
- result.text_tokens.standard.cached_input_per_million = cachedInput * 1_000_000;
85
+ standard.cached_input_per_million = cachedInput * 1_000_000;
82
86
  }
83
87
  if (reasoning > 0) {
84
- result.text_tokens.standard.reasoning_output_per_million = reasoning * 1_000_000;
88
+ standard.reasoning_output_per_million = reasoning * 1_000_000;
85
89
  }
86
90
  return result;
87
91
  }
@@ -1 +1 @@
1
- {"version":3,"file":"OpenRouterProvider.d.ts","sourceRoot":"","sources":["../../../src/providers/openrouter/OpenRouterProvider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAG7D,MAAM,WAAW,yBAAyB;IACxC,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,qBAAa,kBAAmB,SAAQ,cAAc;IAC7C,YAAY;gCACO,MAAM;+BACP,MAAM;0CACK,MAAM;oCACZ,MAAM;yCACD,MAAM;uCACR,MAAM;oCACT,MAAM;mCACP,MAAM;wCACD,MAAM;kCACZ,MAAM;MAChC;gBAEU,OAAO,EAAE,yBAAyB;IAO9C,SAAS,CAAC,YAAY,IAAI,MAAM;CAGjC"}
1
+ {"version":3,"file":"OpenRouterProvider.d.ts","sourceRoot":"","sources":["../../../src/providers/openrouter/OpenRouterProvider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAG7D,MAAM,WAAW,yBAAyB;IACxC,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,qBAAa,kBAAmB,SAAQ,cAAc;IAC7C,YAAY;gCACO,MAAM;+BACP,MAAM;0CACK,MAAM;oCAEZ,MAAM;yCACD,MAAM;uCAER,MAAM;oCACT,MAAM;mCACP,MAAM;wCACD,MAAM;kCACZ,MAAM;MAChC;gBAEU,OAAO,EAAE,yBAAyB;IAO9C,SAAS,CAAC,YAAY,IAAI,MAAM;CAGjC"}
@@ -11,7 +11,7 @@ export class OpenRouterProvider extends OpenAIProvider {
11
11
  supportsModeration: (model) => OpenRouterCapabilities.supportsModeration(model),
12
12
  supportsReasoning: (model) => OpenRouterCapabilities.supportsReasoning(model),
13
13
  supportsDeveloperRole: (_model) => true,
14
- getContextWindow: (model) => OpenRouterCapabilities.getContextWindow(model) || null,
14
+ getContextWindow: (model) => OpenRouterCapabilities.getContextWindow(model) || null
15
15
  };
16
16
  constructor(options) {
17
17
  super({
@@ -1,7 +1,7 @@
1
1
  export * from "./OpenRouterProvider.js";
2
2
  /**
3
3
  * Idempotent registration of the OpenRouter provider.
4
- * Automatically called by NodeLLM.configure({ provider: 'openrouter' })
4
+ * Automatically called when using createLLM({ provider: 'openrouter' })
5
5
  */
6
6
  export declare function registerOpenRouterProvider(): void;
7
7
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/providers/openrouter/index.ts"],"names":[],"mappings":"AAIA,cAAc,yBAAyB,CAAC;AAIxC;;;GAGG;AACH,wBAAgB,0BAA0B,SAezC;AAED;;GAEG;AACH,eAAO,MAAM,0BAA0B,mCAA6B,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/providers/openrouter/index.ts"],"names":[],"mappings":"AAIA,cAAc,yBAAyB,CAAC;AAIxC;;;GAGG;AACH,wBAAgB,0BAA0B,SAkBzC;AAED;;GAEG;AACH,eAAO,MAAM,0BAA0B,mCAA6B,CAAC"}
@@ -1,18 +1,19 @@
1
- import { config } from "../../config.js";
1
+ import { config as globalConfig } from "../../config.js";
2
2
  import { providerRegistry } from "../registry.js";
3
3
  import { OpenRouterProvider } from "./OpenRouterProvider.js";
4
4
  export * from "./OpenRouterProvider.js";
5
5
  let registered = false;
6
6
  /**
7
7
  * Idempotent registration of the OpenRouter provider.
8
- * Automatically called by NodeLLM.configure({ provider: 'openrouter' })
8
+ * Automatically called when using createLLM({ provider: 'openrouter' })
9
9
  */
10
10
  export function registerOpenRouterProvider() {
11
11
  if (registered)
12
12
  return;
13
- providerRegistry.register("openrouter", () => {
14
- const apiKey = config.openrouterApiKey;
15
- const baseUrl = config.openrouterApiBase;
13
+ providerRegistry.register("openrouter", (config) => {
14
+ const cfg = config || globalConfig;
15
+ const apiKey = cfg.openrouterApiKey;
16
+ const baseUrl = cfg.openrouterApiBase;
16
17
  if (!apiKey) {
17
18
  throw new Error("openrouterApiKey is not set in config or OPENROUTER_API_KEY environment variable");
18
19
  }
@@ -5,7 +5,8 @@ import { registerGeminiProvider } from "./gemini/index.js";
5
5
  import { registerDeepSeekProvider } from "./deepseek/index.js";
6
6
  import { registerOllamaProvider } from "./ollama/index.js";
7
7
  import { registerOpenRouterProvider } from "./openrouter/index.js";
8
- type ProviderFactory = () => Provider;
8
+ import { NodeLLMConfig } from "../config.js";
9
+ type ProviderFactory = (config?: NodeLLMConfig) => Provider;
9
10
  declare class ProviderRegistry {
10
11
  private providers;
11
12
  /**
@@ -15,7 +16,7 @@ declare class ProviderRegistry {
15
16
  /**
16
17
  * Resolve a provider by name
17
18
  */
18
- resolve(name: string): Provider;
19
+ resolve(name: string, config?: NodeLLMConfig): Provider;
19
20
  /**
20
21
  * Check if a provider is registered
21
22
  */
@@ -25,6 +26,21 @@ declare class ProviderRegistry {
25
26
  */
26
27
  list(): string[];
27
28
  }
29
+ /**
30
+ * Global provider registry.
31
+ *
32
+ * @internal
33
+ * This is an internal implementation detail. Use `NodeLLM.registerProvider()`
34
+ * or `createLLM()` instead of accessing this directly.
35
+ *
36
+ * **For custom providers**, use the public API:
37
+ * ```typescript
38
+ * import { NodeLLM, BaseProvider } from '@node-llm/core';
39
+ *
40
+ * class MyProvider extends BaseProvider { ... }
41
+ * NodeLLM.registerProvider("my-provider", () => new MyProvider());
42
+ * ```
43
+ */
28
44
  export declare const providerRegistry: ProviderRegistry;
29
45
  export { registerOpenAIProvider as ensureOpenAIRegistered, registerOpenAIProvider, registerAnthropicProvider, registerGeminiProvider, registerDeepSeekProvider, registerOllamaProvider, registerOpenRouterProvider };
30
46
  //# sourceMappingURL=registry.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/providers/registry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AAC3D,OAAO,EAAE,yBAAyB,EAAE,MAAM,sBAAsB,CAAC;AACjE,OAAO,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AAC3D,OAAO,EAAE,wBAAwB,EAAE,MAAM,qBAAqB,CAAC;AAC/D,OAAO,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AAC3D,OAAO,EAAE,0BAA0B,EAAE,MAAM,uBAAuB,CAAC;AAEnE,KAAK,eAAe,GAAG,MAAM,QAAQ,CAAC;AAEtC,cAAM,gBAAgB;IACpB,OAAO,CAAC,SAAS,CAAsC;IAEvD;;OAEG;IACH,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,eAAe,GAAG,IAAI;IAQtD;;OAEG;IACH,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,QAAQ;IAU/B;;OAEG;IACH,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAI1B;;OAEG;IACH,IAAI,IAAI,MAAM,EAAE;CAGjB;AAED,eAAO,MAAM,gBAAgB,kBAAyB,CAAC;AAGvD,OAAO,EACL,sBAAsB,IAAI,sBAAsB,EAChD,sBAAsB,EACtB,yBAAyB,EACzB,sBAAsB,EACtB,wBAAwB,EACxB,sBAAsB,EACtB,0BAA0B,EAC3B,CAAC"}
1
+ {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/providers/registry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AAC3D,OAAO,EAAE,yBAAyB,EAAE,MAAM,sBAAsB,CAAC;AACjE,OAAO,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AAC3D,OAAO,EAAE,wBAAwB,EAAE,MAAM,qBAAqB,CAAC;AAC/D,OAAO,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AAC3D,OAAO,EAAE,0BAA0B,EAAE,MAAM,uBAAuB,CAAC;AAEnE,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAE7C,KAAK,eAAe,GAAG,CAAC,MAAM,CAAC,EAAE,aAAa,KAAK,QAAQ,CAAC;AAE5D,cAAM,gBAAgB;IACpB,OAAO,CAAC,SAAS,CAAsC;IAEvD;;OAEG;IACH,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,eAAe,GAAG,IAAI;IAQtD;;OAEG;IACH,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,aAAa,GAAG,QAAQ;IAUvD;;OAEG;IACH,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAI1B;;OAEG;IACH,IAAI,IAAI,MAAM,EAAE;CAGjB;AAED;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,gBAAgB,kBAAyB,CAAC;AAGvD,OAAO,EACL,sBAAsB,IAAI,sBAAsB,EAChD,sBAAsB,EACtB,yBAAyB,EACzB,sBAAsB,EACtB,wBAAwB,EACxB,sBAAsB,EACtB,0BAA0B,EAC3B,CAAC"}
@@ -18,12 +18,12 @@ class ProviderRegistry {
18
18
  /**
19
19
  * Resolve a provider by name
20
20
  */
21
- resolve(name) {
21
+ resolve(name, config) {
22
22
  const factory = this.providers.get(name);
23
23
  if (!factory) {
24
24
  throw new Error(`Unknown LLM provider '${name}'`);
25
25
  }
26
- return factory();
26
+ return factory(config);
27
27
  }
28
28
  /**
29
29
  * Check if a provider is registered
@@ -38,6 +38,21 @@ class ProviderRegistry {
38
38
  return [...this.providers.keys()];
39
39
  }
40
40
  }
41
+ /**
42
+ * Global provider registry.
43
+ *
44
+ * @internal
45
+ * This is an internal implementation detail. Use `NodeLLM.registerProvider()`
46
+ * or `createLLM()` instead of accessing this directly.
47
+ *
48
+ * **For custom providers**, use the public API:
49
+ * ```typescript
50
+ * import { NodeLLM, BaseProvider } from '@node-llm/core';
51
+ *
52
+ * class MyProvider extends BaseProvider { ... }
53
+ * NodeLLM.registerProvider("my-provider", () => new MyProvider());
54
+ * ```
55
+ */
41
56
  export const providerRegistry = new ProviderRegistry();
42
57
  // Exported registration functions (delegates to provider-specific index files)
43
58
  export { registerOpenAIProvider as ensureOpenAIRegistered, registerOpenAIProvider, registerAnthropicProvider, registerGeminiProvider, registerDeepSeekProvider, registerOllamaProvider, registerOpenRouterProvider };
@@ -4,7 +4,7 @@
4
4
  * If supportsDeveloperRole is false, both "system" and "developer" messages are mapped to "system".
5
5
  */
6
6
  export function mapSystemMessages(messages, supportsDeveloperRole) {
7
- return messages.map(msg => {
7
+ return messages.map((msg) => {
8
8
  if (msg.role === "system" || msg.role === "developer") {
9
9
  return {
10
10
  ...msg,
@@ -1,18 +1,18 @@
1
1
  import { z } from "zod";
2
2
  export interface SchemaDefinition {
3
3
  name: string;
4
- schema: z.ZodType<any> | Record<string, any>;
4
+ schema: z.ZodType<unknown> | Record<string, unknown>;
5
5
  description?: string;
6
6
  strict?: boolean;
7
7
  }
8
8
  export declare class Schema {
9
9
  readonly definition: SchemaDefinition;
10
10
  constructor(definition: SchemaDefinition);
11
- static fromZod(name: string, schema: z.ZodType<any>, options?: {
11
+ static fromZod(name: string, schema: z.ZodType<unknown>, options?: {
12
12
  description?: string;
13
13
  strict?: boolean;
14
14
  }): Schema;
15
- static fromJson(name: string, schema: Record<string, any>, options?: {
15
+ static fromJson(name: string, schema: Record<string, unknown>, options?: {
16
16
  description?: string;
17
17
  strict?: boolean;
18
18
  }): Schema;
@@ -1 +1 @@
1
- {"version":3,"file":"Schema.d.ts","sourceRoot":"","sources":["../../src/schema/Schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC7C,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,qBAAa,MAAM;aAEC,UAAU,EAAE,gBAAgB;gBAA5B,UAAU,EAAE,gBAAgB;IAG9C,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC,EAAE;QAAE,WAAW,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,MAAM;IASlH,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,OAAO,CAAC,EAAE;QAAE,WAAW,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,MAAM;CAQzH"}
1
+ {"version":3,"file":"Schema.d.ts","sourceRoot":"","sources":["../../src/schema/Schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACrD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,qBAAa,MAAM;aACW,UAAU,EAAE,gBAAgB;gBAA5B,UAAU,EAAE,gBAAgB;IAExD,MAAM,CAAC,OAAO,CACZ,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,EAC1B,OAAO,CAAC,EAAE;QAAE,WAAW,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,OAAO,CAAA;KAAE,GACnD,MAAM;IAST,MAAM,CAAC,QAAQ,CACb,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,OAAO,CAAC,EAAE;QAAE,WAAW,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,OAAO,CAAA;KAAE,GACnD,MAAM;CAQV"}
@@ -8,7 +8,7 @@ export class Schema {
8
8
  name,
9
9
  schema,
10
10
  description: options?.description,
11
- strict: options?.strict,
11
+ strict: options?.strict
12
12
  });
13
13
  }
14
14
  static fromJson(name, schema, options) {
@@ -16,7 +16,7 @@ export class Schema {
16
16
  name,
17
17
  schema,
18
18
  description: options?.description,
19
- strict: options?.strict,
19
+ strict: options?.strict
20
20
  });
21
21
  }
22
22
  }
@@ -1,3 +1,3 @@
1
1
  import { z } from "zod";
2
- export declare function toJsonSchema(schema: z.ZodType<any> | Record<string, any>): Record<string, any>;
2
+ export declare function toJsonSchema(schema: z.ZodType<unknown> | Record<string, unknown>): Record<string, unknown>;
3
3
  //# sourceMappingURL=to-json-schema.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"to-json-schema.d.ts","sourceRoot":"","sources":["../../src/schema/to-json-schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,wBAAgB,YAAY,CAAC,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAO9F"}
1
+ {"version":3,"file":"to-json-schema.d.ts","sourceRoot":"","sources":["../../src/schema/to-json-schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,wBAAgB,YAAY,CAC1B,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GACnD,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAOzB"}
@@ -1 +1 @@
1
- {"version":3,"file":"Stream.d.ts","sourceRoot":"","sources":["../../src/streaming/Stream.ts"],"names":[],"mappings":"AAEA;;;GAGG;AACH,qBAAa,MAAM,CAAC,CAAC,CAAE,YAAW,aAAa,CAAC,CAAC,CAAC;IAI9C,OAAO,CAAC,QAAQ;IAChB,OAAO,CAAC,UAAU,CAAC;IAJrB,OAAO,CAAC,QAAQ,CAAS;gBAGf,QAAQ,EAAE,MAAM,aAAa,CAAC,CAAC,CAAC,EAChC,UAAU,CAAC,EAAE,eAAe,YAAA;IAGtC;;OAEG;IACH,MAAM,CAAC,iBAAiB,CAAC,CAAC,EACxB,QAAQ,EAAE,aAAa,CAAC,CAAC,CAAC,EAC1B,UAAU,CAAC,EAAE,eAAe,GAC3B,MAAM,CAAC,CAAC,CAAC;IAIZ,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,aAAa,CAAC,CAAC,CAAC;IAQ1C;;;OAGG;IACH,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;IAwB7B;;OAEG;IACG,OAAO,IAAI,OAAO,CAAC,CAAC,EAAE,CAAC;IAQ7B;;OAEG;IACH,KAAK,IAAI,IAAI;CAGd"}
1
+ {"version":3,"file":"Stream.d.ts","sourceRoot":"","sources":["../../src/streaming/Stream.ts"],"names":[],"mappings":"AACA;;;GAGG;AACH,qBAAa,MAAM,CAAC,CAAC,CAAE,YAAW,aAAa,CAAC,CAAC,CAAC;IAI9C,OAAO,CAAC,QAAQ;IAChB,OAAO,CAAC,UAAU,CAAC;IAJrB,OAAO,CAAC,QAAQ,CAAS;gBAGf,QAAQ,EAAE,MAAM,aAAa,CAAC,CAAC,CAAC,EAChC,UAAU,CAAC,EAAE,eAAe,YAAA;IAGtC;;OAEG;IACH,MAAM,CAAC,iBAAiB,CAAC,CAAC,EAAE,QAAQ,EAAE,aAAa,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC,EAAE,eAAe,GAAG,MAAM,CAAC,CAAC,CAAC;IAIhG,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,aAAa,CAAC,CAAC,CAAC;IAQ1C;;;OAGG;IACH,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;IAwB7B;;OAEG;IACG,OAAO,IAAI,OAAO,CAAC,CAAC,EAAE,CAAC;IAQ7B;;OAEG;IACH,KAAK,IAAI,IAAI;CAGd"}
@@ -18,7 +18,7 @@ export class Stream {
18
18
  }
19
19
  [Symbol.asyncIterator]() {
20
20
  if (this.consumed) {
21
- throw new Error('Cannot iterate over a consumed stream, use `.tee()` to split the stream.');
21
+ throw new Error("Cannot iterate over a consumed stream, use `.tee()` to split the stream.");
22
22
  }
23
23
  this.consumed = true;
24
24
  return this.iterator();
@@ -40,12 +40,12 @@ export class Stream {
40
40
  right.push(result);
41
41
  }
42
42
  return queue.shift();
43
- },
43
+ }
44
44
  };
45
45
  };
46
46
  return [
47
47
  new Stream(() => teeIterator(left), this.controller),
48
- new Stream(() => teeIterator(right), this.controller),
48
+ new Stream(() => teeIterator(right), this.controller)
49
49
  ];
50
50
  }
51
51
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"Binary.d.ts","sourceRoot":"","sources":["../../src/utils/Binary.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,qBAAa,WAAW;IACtB;;OAEG;WACU,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC;IA4C9D,OAAO,CAAC,MAAM,CAAC,aAAa;CAgB7B"}
1
+ {"version":3,"file":"Binary.d.ts","sourceRoot":"","sources":["../../src/utils/Binary.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,qBAAa,WAAW;IACtB;;OAEG;WACU,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC;IA0C9D,OAAO,CAAC,MAAM,CAAC,aAAa;CA0B7B"}