@node-llm/core 0.8.0 → 1.1.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 (110) hide show
  1. package/README.md +0 -167
  2. package/dist/aliases.json +126 -0
  3. package/dist/chat/Chat.d.ts +7 -3
  4. package/dist/chat/Chat.d.ts.map +1 -1
  5. package/dist/chat/Chat.js +6 -7
  6. package/dist/chat/ChatStream.d.ts +25 -0
  7. package/dist/chat/ChatStream.d.ts.map +1 -0
  8. package/dist/chat/ChatStream.js +93 -0
  9. package/dist/config.d.ts +5 -3
  10. package/dist/config.d.ts.map +1 -1
  11. package/dist/config.js +2 -0
  12. package/dist/embedding/Embedding.d.ts +1 -1
  13. package/dist/embedding/Embedding.d.ts.map +1 -1
  14. package/dist/errors/index.d.ts +22 -0
  15. package/dist/errors/index.d.ts.map +1 -1
  16. package/dist/errors/index.js +32 -0
  17. package/dist/index.d.ts +10 -15
  18. package/dist/index.d.ts.map +1 -1
  19. package/dist/index.js +10 -9
  20. package/dist/llm.d.ts +4 -3
  21. package/dist/llm.d.ts.map +1 -1
  22. package/dist/llm.js +44 -37
  23. package/dist/model_aliases.d.ts +3 -0
  24. package/dist/model_aliases.d.ts.map +1 -0
  25. package/dist/model_aliases.js +20 -0
  26. package/dist/models/ModelRegistry.d.ts +4 -0
  27. package/dist/models/ModelRegistry.d.ts.map +1 -1
  28. package/dist/models/ModelRegistry.js +15 -0
  29. package/dist/models/models.d.ts +729 -60
  30. package/dist/models/models.d.ts.map +1 -1
  31. package/dist/models/models.js +24375 -2312
  32. package/dist/models/types.d.ts +3 -3
  33. package/dist/models/types.d.ts.map +1 -1
  34. package/dist/models/types.js +3 -0
  35. package/dist/providers/BaseProvider.d.ts +23 -0
  36. package/dist/providers/BaseProvider.d.ts.map +1 -0
  37. package/dist/providers/BaseProvider.js +31 -0
  38. package/dist/providers/Provider.d.ts +17 -1
  39. package/dist/providers/Provider.d.ts.map +1 -1
  40. package/dist/providers/anthropic/AnthropicProvider.d.ts +6 -7
  41. package/dist/providers/anthropic/AnthropicProvider.d.ts.map +1 -1
  42. package/dist/providers/anthropic/AnthropicProvider.js +16 -13
  43. package/dist/providers/anthropic/Streaming.d.ts +1 -1
  44. package/dist/providers/anthropic/Streaming.d.ts.map +1 -1
  45. package/dist/providers/anthropic/Streaming.js +80 -54
  46. package/dist/providers/deepseek/Capabilities.js +1 -1
  47. package/dist/providers/deepseek/DeepSeekProvider.d.ts +5 -1
  48. package/dist/providers/deepseek/DeepSeekProvider.d.ts.map +1 -1
  49. package/dist/providers/deepseek/DeepSeekProvider.js +15 -1
  50. package/dist/providers/deepseek/Streaming.d.ts +1 -1
  51. package/dist/providers/deepseek/Streaming.d.ts.map +1 -1
  52. package/dist/providers/deepseek/Streaming.js +80 -48
  53. package/dist/providers/gemini/Capabilities.d.ts.map +1 -1
  54. package/dist/providers/gemini/Embeddings.d.ts +1 -1
  55. package/dist/providers/gemini/Embeddings.d.ts.map +1 -1
  56. package/dist/providers/gemini/GeminiProvider.d.ts +6 -4
  57. package/dist/providers/gemini/GeminiProvider.d.ts.map +1 -1
  58. package/dist/providers/gemini/GeminiProvider.js +14 -4
  59. package/dist/providers/gemini/Streaming.d.ts +1 -1
  60. package/dist/providers/gemini/Streaming.d.ts.map +1 -1
  61. package/dist/providers/gemini/Streaming.js +62 -39
  62. package/dist/providers/gemini/index.d.ts +1 -1
  63. package/dist/providers/gemini/index.js +1 -1
  64. package/dist/providers/ollama/Capabilities.d.ts.map +1 -1
  65. package/dist/providers/ollama/Capabilities.js +5 -1
  66. package/dist/providers/ollama/OllamaProvider.d.ts +1 -0
  67. package/dist/providers/ollama/OllamaProvider.d.ts.map +1 -1
  68. package/dist/providers/ollama/OllamaProvider.js +3 -0
  69. package/dist/providers/ollama/index.d.ts +1 -1
  70. package/dist/providers/ollama/index.js +1 -1
  71. package/dist/providers/openai/Embedding.d.ts +1 -1
  72. package/dist/providers/openai/Embedding.d.ts.map +1 -1
  73. package/dist/providers/openai/OpenAIProvider.d.ts +6 -3
  74. package/dist/providers/openai/OpenAIProvider.d.ts.map +1 -1
  75. package/dist/providers/openai/OpenAIProvider.js +15 -1
  76. package/dist/providers/openai/Streaming.d.ts +1 -1
  77. package/dist/providers/openai/Streaming.d.ts.map +1 -1
  78. package/dist/providers/openai/Streaming.js +75 -43
  79. package/dist/providers/openai/index.d.ts +1 -1
  80. package/dist/providers/openai/index.js +1 -1
  81. package/dist/providers/openrouter/Capabilities.d.ts +13 -0
  82. package/dist/providers/openrouter/Capabilities.d.ts.map +1 -0
  83. package/dist/providers/openrouter/Capabilities.js +67 -0
  84. package/dist/providers/openrouter/Models.d.ts +11 -0
  85. package/dist/providers/openrouter/Models.d.ts.map +1 -0
  86. package/dist/providers/openrouter/Models.js +88 -0
  87. package/dist/providers/openrouter/OpenRouterProvider.d.ts +21 -0
  88. package/dist/providers/openrouter/OpenRouterProvider.d.ts.map +1 -0
  89. package/dist/providers/openrouter/OpenRouterProvider.js +24 -0
  90. package/dist/providers/openrouter/index.d.ts +11 -0
  91. package/dist/providers/openrouter/index.d.ts.map +1 -0
  92. package/dist/providers/openrouter/index.js +26 -0
  93. package/dist/providers/registry.d.ts +11 -1
  94. package/dist/providers/registry.d.ts.map +1 -1
  95. package/dist/providers/registry.js +15 -1
  96. package/dist/streaming/Stream.d.ts +29 -0
  97. package/dist/streaming/Stream.d.ts.map +1 -0
  98. package/dist/streaming/Stream.js +67 -0
  99. package/dist/utils/FileLoader.d.ts.map +1 -1
  100. package/dist/utils/FileLoader.js +34 -3
  101. package/dist/utils/logger.d.ts +13 -0
  102. package/dist/utils/logger.d.ts.map +1 -0
  103. package/dist/utils/logger.js +24 -0
  104. package/package.json +2 -2
  105. package/dist/chat/Stream.d.ts +0 -21
  106. package/dist/chat/Stream.d.ts.map +0 -1
  107. package/dist/chat/Stream.js +0 -73
  108. package/dist/providers/Embedding.d.ts +0 -20
  109. package/dist/providers/Embedding.d.ts.map +0 -1
  110. package/dist/providers/Embedding.js +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC;AACtC,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC1C,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAC3D,YAAY,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AACjD,YAAY,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC;AAC3C,YAAY,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACzD,YAAY,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AACrD,YAAY,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAErE,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,GAAG,EAAE,aAAa,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AACrE,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,YAAY,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAE3D,OAAO,EAAE,cAAc,EAAE,MAAM,sCAAsC,CAAC;AACtE,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AACrE,OAAO,EAAE,yBAAyB,EAAE,MAAM,gCAAgC,CAAC;AAC3E,OAAO,EAAE,sBAAsB,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AACrF,YAAY,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAC3E,cAAc,mBAAmB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,uBAAuB,CAAC;AACtC,cAAc,wBAAwB,CAAC;AACvC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,sBAAsB,CAAC;AACrC,cAAc,uBAAuB,CAAC;AAEtC,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AACzE,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,YAAY,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC"}
package/dist/index.js CHANGED
@@ -1,12 +1,13 @@
1
- export { Chat } from "./chat/Chat.js";
2
- export { Stream } from "./chat/Stream.js";
3
- export { GeneratedImage } from "./image/GeneratedImage.js";
1
+ export * from "./chat/Message.js";
2
+ export * from "./chat/Content.js";
3
+ export * from "./chat/Tool.js";
4
+ export * from "./chat/ChatOptions.js";
5
+ export * from "./chat/ChatResponse.js";
6
+ export * from "./chat/Chat.js";
7
+ export * from "./chat/ChatStream.js";
8
+ export * from "./streaming/Stream.js";
4
9
  export { z } from "zod";
5
- export { LLM, Transcription, Moderation, Embedding } from "./llm.js";
10
+ export { NodeLLM, Transcription, Moderation, Embedding } from "./llm.js";
6
11
  export { config } from "./config.js";
7
12
  export { providerRegistry } from "./providers/registry.js";
8
- export { OpenAIProvider } from "./providers/openai/OpenAIProvider.js";
9
- export { registerOpenAIProvider } from "./providers/openai/index.js";
10
- export { registerAnthropicProvider } from "./providers/anthropic/index.js";
11
- export { registerOllamaProvider, OllamaProvider } from "./providers/ollama/index.js";
12
- export * from "./errors/index.js";
13
+ export { Schema } from "./schema/Schema.js";
package/dist/llm.d.ts CHANGED
@@ -18,10 +18,9 @@ type LLMConfig = {
18
18
  defaultModerationModel?: string;
19
19
  defaultEmbeddingModel?: string;
20
20
  } & Partial<NodeLLMConfig>;
21
- declare class LLMCore {
21
+ declare class NodeLLMCore {
22
22
  readonly models: typeof ModelRegistry;
23
23
  readonly config: {
24
- [key: string]: any;
25
24
  openaiApiKey?: string;
26
25
  openaiApiBase?: string;
27
26
  anthropicApiKey?: string;
@@ -31,6 +30,8 @@ declare class LLMCore {
31
30
  deepseekApiKey?: string;
32
31
  deepseekApiBase?: string;
33
32
  ollamaApiBase?: string;
33
+ openrouterApiKey?: string;
34
+ openrouterApiBase?: string;
34
35
  };
35
36
  private provider?;
36
37
  private defaultTranscriptionModelId?;
@@ -70,5 +71,5 @@ declare class LLMCore {
70
71
  }): Promise<Embedding>;
71
72
  }
72
73
  export { Transcription, Moderation, Embedding };
73
- export declare const LLM: LLMCore;
74
+ export declare const NodeLLM: NodeLLMCore;
74
75
  //# sourceMappingURL=llm.d.ts.map
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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"}
package/dist/llm.js CHANGED
@@ -1,17 +1,23 @@
1
1
  import { Chat } from "./chat/Chat.js";
2
- import { providerRegistry } from "./providers/registry.js";
3
- import { ensureOpenAIRegistered } from "./providers/openai/index.js";
4
- import { registerGeminiProvider } from "./providers/gemini/index.js";
5
- import { registerAnthropicProvider } from "./providers/anthropic/index.js";
6
- import { registerDeepSeekProvider } from "./providers/deepseek/index.js";
7
- import { registerOllamaProvider } from "./providers/ollama/index.js";
2
+ import { providerRegistry, ensureOpenAIRegistered, registerAnthropicProvider, registerGeminiProvider, registerDeepSeekProvider, registerOllamaProvider, registerOpenRouterProvider, } from "./providers/registry.js";
8
3
  import { GeneratedImage } from "./image/GeneratedImage.js";
9
4
  import { ModelRegistry } from "./models/ModelRegistry.js";
10
5
  import { Transcription } from "./transcription/Transcription.js";
11
6
  import { Moderation } from "./moderation/Moderation.js";
12
7
  import { Embedding } from "./embedding/Embedding.js";
8
+ import { ProviderNotConfiguredError, UnsupportedFeatureError, ModelCapabilityError } from "./errors/index.js";
9
+ import { resolveModelAlias } from "./model_aliases.js";
13
10
  import { config } from "./config.js";
14
- class LLMCore {
11
+ // Provider registration map
12
+ const PROVIDER_REGISTRARS = {
13
+ openai: ensureOpenAIRegistered,
14
+ gemini: registerGeminiProvider,
15
+ anthropic: registerAnthropicProvider,
16
+ deepseek: registerDeepSeekProvider,
17
+ ollama: registerOllamaProvider,
18
+ openrouter: registerOpenRouterProvider,
19
+ };
20
+ class NodeLLMCore {
15
21
  models = ModelRegistry;
16
22
  config = config;
17
23
  provider;
@@ -50,20 +56,10 @@ class LLMCore {
50
56
  };
51
57
  }
52
58
  if (typeof provider === "string") {
53
- if (provider === "openai") {
54
- ensureOpenAIRegistered();
55
- }
56
- if (provider === "gemini") {
57
- registerGeminiProvider();
58
- }
59
- if (provider === "anthropic") {
60
- registerAnthropicProvider();
61
- }
62
- if (provider === "deepseek") {
63
- registerDeepSeekProvider();
64
- }
65
- if (provider === "ollama") {
66
- registerOllamaProvider();
59
+ // Use the provider registrars map
60
+ const registrar = PROVIDER_REGISTRARS[provider];
61
+ if (registrar) {
62
+ registrar();
67
63
  }
68
64
  this.provider = providerRegistry.resolve(provider);
69
65
  }
@@ -73,51 +69,60 @@ class LLMCore {
73
69
  }
74
70
  ensureProviderSupport(method) {
75
71
  if (!this.provider) {
76
- throw new Error("LLM provider not configured");
72
+ throw new ProviderNotConfiguredError();
77
73
  }
78
74
  if (!this.provider[method]) {
79
- throw new Error(`Provider does not support ${method}`);
75
+ throw new UnsupportedFeatureError("Provider", String(method));
80
76
  }
81
77
  return this.provider;
82
78
  }
83
79
  chat(model, options) {
84
80
  if (!this.provider) {
85
- throw new Error("LLM provider not configured");
81
+ throw new ProviderNotConfiguredError();
86
82
  }
87
- return new Chat(this.provider, model, options);
83
+ // Resolve model alias based on the current provider
84
+ const resolvedModel = resolveModelAlias(model, this.provider.id);
85
+ return new Chat(this.provider, resolvedModel, options, this.retry);
88
86
  }
89
87
  async listModels() {
90
88
  const provider = this.ensureProviderSupport("listModels");
91
- return provider.listModels();
89
+ const models = await provider.listModels();
90
+ // Dynamically update the model registry with the fetched info
91
+ ModelRegistry.save(models);
92
+ return models;
92
93
  }
93
94
  async paint(prompt, options) {
94
95
  const provider = this.ensureProviderSupport("paint");
95
- const model = options?.model;
96
+ // Default to resolving aliases
97
+ const rawModel = options?.model;
98
+ const model = resolveModelAlias(rawModel || "", provider.id);
96
99
  if (options?.assumeModelExists) {
97
100
  console.warn(`[NodeLLM] Skipping validation for model ${model}`);
98
101
  }
99
102
  else if (model && provider.capabilities && !provider.capabilities.supportsImageGeneration(model)) {
100
- throw new Error(`Model ${model} does not support image generation.`);
103
+ throw new ModelCapabilityError(model, "image generation");
101
104
  }
102
105
  const response = await provider.paint({
103
106
  prompt,
104
107
  ...options,
108
+ model,
105
109
  });
106
110
  return new GeneratedImage(response);
107
111
  }
108
112
  async transcribe(file, options) {
109
113
  const provider = this.ensureProviderSupport("transcribe");
110
- const model = options?.model || this.defaultTranscriptionModelId;
114
+ const rawModel = options?.model || this.defaultTranscriptionModelId || "";
115
+ const model = resolveModelAlias(rawModel, provider.id);
111
116
  if (options?.assumeModelExists) {
112
117
  console.warn(`[NodeLLM] Skipping validation for model ${model}`);
113
118
  }
114
119
  else if (model && provider.capabilities && !provider.capabilities.supportsTranscription(model)) {
115
- throw new Error(`Model ${model} does not support transcription.`);
120
+ throw new ModelCapabilityError(model, "transcription");
116
121
  }
117
122
  const response = await provider.transcribe({
118
123
  file,
119
- model,
120
124
  ...options,
125
+ model,
121
126
  });
122
127
  return new Transcription(response);
123
128
  }
@@ -135,23 +140,25 @@ class LLMCore {
135
140
  }
136
141
  async moderate(input, options) {
137
142
  const provider = this.ensureProviderSupport("moderate");
138
- const model = options?.model || this.defaultModerationModelId;
143
+ const rawModel = options?.model || this.defaultModerationModelId || "";
144
+ const model = resolveModelAlias(rawModel, provider.id);
139
145
  if (options?.assumeModelExists) {
140
146
  console.warn(`[NodeLLM] Skipping validation for model ${model}`);
141
147
  }
142
148
  else if (model && provider.capabilities && !provider.capabilities.supportsModeration(model)) {
143
- throw new Error(`Model ${model} does not support moderation.`);
149
+ throw new ModelCapabilityError(model, "moderation");
144
150
  }
145
151
  const response = await provider.moderate({
146
152
  input,
147
- model,
148
153
  ...options,
154
+ model,
149
155
  });
150
156
  return new Moderation(response);
151
157
  }
152
158
  async embed(input, options) {
153
159
  const provider = this.ensureProviderSupport("embed");
154
- const model = options?.model || this.defaultEmbeddingModelId;
160
+ const rawModel = options?.model || this.defaultEmbeddingModelId || "";
161
+ const model = resolveModelAlias(rawModel, provider.id);
155
162
  const request = {
156
163
  input,
157
164
  model,
@@ -161,11 +168,11 @@ class LLMCore {
161
168
  console.warn(`[NodeLLM] Skipping validation for model ${request.model}`);
162
169
  }
163
170
  else if (request.model && provider.capabilities && !provider.capabilities.supportsEmbeddings(request.model)) {
164
- throw new Error(`Model ${request.model} does not support embeddings.`);
171
+ throw new ModelCapabilityError(request.model, "embeddings");
165
172
  }
166
173
  const response = await provider.embed(request);
167
174
  return new Embedding(response);
168
175
  }
169
176
  }
170
177
  export { Transcription, Moderation, Embedding };
171
- export const LLM = new LLMCore();
178
+ export const NodeLLM = new NodeLLMCore();
@@ -0,0 +1,3 @@
1
+ export type ProviderName = "openai" | "anthropic" | "gemini" | "vertexai" | "openrouter" | "mistral" | "deepseek" | "bedrock" | string;
2
+ export declare function resolveModelAlias(alias: string, provider?: ProviderName): string;
3
+ //# sourceMappingURL=model_aliases.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"model_aliases.d.ts","sourceRoot":"","sources":["../src/model_aliases.ts"],"names":[],"mappings":"AAKA,MAAM,MAAM,YAAY,GAAG,QAAQ,GAAG,WAAW,GAAG,QAAQ,GAAG,UAAU,GAAG,YAAY,GAAG,SAAS,GAAG,UAAU,GAAG,SAAS,GAAG,MAAM,CAAC;AAEvI,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,YAAY,GAAG,MAAM,CAkBhF"}
@@ -0,0 +1,20 @@
1
+ // This file is auto-generated or manually maintained to map generic model aliases
2
+ // to provider-specific model IDs.
3
+ // @ts-ignore
4
+ import aliases from "./aliases.json" assert { type: "json" };
5
+ export function resolveModelAlias(alias, provider) {
6
+ if (!provider) {
7
+ return alias;
8
+ }
9
+ // Check if the alias exists in our registry
10
+ const aliasEntry = aliases[alias];
11
+ if (aliasEntry) {
12
+ // Check if there is a specific mapping for this provider
13
+ if (aliasEntry[provider.toLowerCase()]) {
14
+ return aliasEntry[provider.toLowerCase()];
15
+ }
16
+ }
17
+ // If no alias found or no mapping for this provider, return the original string
18
+ // This allows users to pass raw model IDs that aren't in our alias list.
19
+ return alias;
20
+ }
@@ -2,6 +2,10 @@ import { Model } from "./types.js";
2
2
  export declare class ModelRegistry {
3
3
  private static models;
4
4
  static find(modelId: string, provider?: string): Model | undefined;
5
+ /**
6
+ * Add or update models in the registry.
7
+ */
8
+ static save(models: Model | Model[]): void;
5
9
  /**
6
10
  * Get all available models.
7
11
  */
@@ -1 +1 @@
1
- {"version":3,"file":"ModelRegistry.d.ts","sourceRoot":"","sources":["../../src/models/ModelRegistry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAGnC,qBAAa,aAAa;IACtB,OAAO,CAAC,MAAM,CAAC,MAAM,CAA6C;IAElE,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,KAAK,GAAG,SAAS;IAMlE;;OAEG;IACH,MAAM,CAAC,GAAG,IAAI,KAAK,EAAE;IAIrB;;OAEG;IACH,MAAM,CAAC,kBAAkB,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAKhF;;OAEG;IACH,MAAM,CAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO;IAK/E;;OAEG;IACH,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAK9E;;OAEG;IACH,MAAM,CAAC,aAAa,CAAC,KAAK,EAAE;QAAE,YAAY,EAAE,MAAM,CAAC;QAAC,aAAa,EAAE,MAAM,CAAC;QAAC,YAAY,EAAE,MAAM,CAAC;QAAC,aAAa,CAAC,EAAE,MAAM,CAAC;QAAC,gBAAgB,CAAC,EAAE,MAAM,CAAA;KAAE,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM;sBAA3I,MAAM;uBAAiB,MAAM;sBAAgB,MAAM;wBAAkB,MAAM;2BAAqB,MAAM;;;;;sBAAtG,MAAM;uBAAiB,MAAM;sBAAgB,MAAM;wBAAkB,MAAM;2BAAqB,MAAM;;CA+BrJ"}
1
+ {"version":3,"file":"ModelRegistry.d.ts","sourceRoot":"","sources":["../../src/models/ModelRegistry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAGnC,qBAAa,aAAa;IACtB,OAAO,CAAC,MAAM,CAAC,MAAM,CAA6C;IAElE,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,KAAK,GAAG,SAAS;IAMlE;;OAEG;IACH,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,GAAG,KAAK,EAAE,GAAG,IAAI;IAa1C;;OAEG;IACH,MAAM,CAAC,GAAG,IAAI,KAAK,EAAE;IAIrB;;OAEG;IACH,MAAM,CAAC,kBAAkB,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAKhF;;OAEG;IACH,MAAM,CAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO;IAK/E;;OAEG;IACH,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAK9E;;OAEG;IACH,MAAM,CAAC,aAAa,CAAC,KAAK,EAAE;QAAE,YAAY,EAAE,MAAM,CAAC;QAAC,aAAa,EAAE,MAAM,CAAC;QAAC,YAAY,EAAE,MAAM,CAAC;QAAC,aAAa,CAAC,EAAE,MAAM,CAAC;QAAC,gBAAgB,CAAC,EAAE,MAAM,CAAA;KAAE,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM;sBAA3I,MAAM;uBAAiB,MAAM;sBAAgB,MAAM;wBAAkB,MAAM;2BAAqB,MAAM;;;;;sBAAtG,MAAM;uBAAiB,MAAM;sBAAgB,MAAM;wBAAkB,MAAM;2BAAqB,MAAM;;CA+BrJ"}
@@ -4,6 +4,21 @@ export class ModelRegistry {
4
4
  static find(modelId, provider) {
5
5
  return this.models.find(m => (m.id === modelId || m.family === modelId) && (!provider || m.provider === provider));
6
6
  }
7
+ /**
8
+ * Add or update models in the registry.
9
+ */
10
+ static save(models) {
11
+ const toAdd = Array.isArray(models) ? models : [models];
12
+ toAdd.forEach(newModel => {
13
+ const index = this.models.findIndex(m => m.id === newModel.id && m.provider === newModel.provider);
14
+ if (index >= 0) {
15
+ this.models[index] = newModel;
16
+ }
17
+ else {
18
+ this.models.push(newModel);
19
+ }
20
+ });
21
+ }
7
22
  /**
8
23
  * Get all available models.
9
24
  */