ai 3.1.34 → 3.1.36

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.mts CHANGED
@@ -1234,32 +1234,27 @@ declare class StreamTextResult<TOOLS extends Record<string, CoreTool>> {
1234
1234
  */
1235
1235
  declare const experimental_streamText: typeof streamText;
1236
1236
 
1237
- /**
1238
- Registry for managing models. It enables getting a model with a string id.
1239
- */
1240
- type experimental_ModelRegistry = {
1241
- /**
1242
- Returns the language model with the given id in the format `providerId:modelId`.
1243
- The model id is then passed to the provider function to get the model.
1244
-
1245
- @param {string} id - The id of the model to return.
1246
-
1247
- @throws {NoSuchModelError} If no model with the given id exists.
1248
- @throws {NoSuchProviderError} If no provider with the given id exists.
1249
-
1250
- @returns {LanguageModel} The language model associated with the id.
1251
- */
1252
- languageModel(id: string): LanguageModel;
1253
- };
1254
- /**
1255
- * Creates a model registry for the given providers.
1256
- */
1257
- declare function experimental_createModelRegistry(providers: Record<string, (id: string) => LanguageModel>): experimental_ModelRegistry;
1237
+ declare class InvalidModelIdError extends Error {
1238
+ readonly id: string;
1239
+ constructor({ id, message, }: {
1240
+ id: string;
1241
+ message?: string;
1242
+ });
1243
+ static isInvalidModelIdError(error: unknown): error is InvalidModelIdError;
1244
+ toJSON(): {
1245
+ name: string;
1246
+ message: string;
1247
+ stack: string | undefined;
1248
+ id: string;
1249
+ };
1250
+ }
1258
1251
 
1259
1252
  declare class NoSuchModelError extends Error {
1260
1253
  readonly modelId: string;
1261
- constructor({ modelId, message, }: {
1254
+ readonly modelType: string;
1255
+ constructor({ modelId, modelType, message, }: {
1262
1256
  modelId: string;
1257
+ modelType: string;
1263
1258
  message?: string;
1264
1259
  });
1265
1260
  static isNoSuchModelError(error: unknown): error is NoSuchModelError;
@@ -1268,13 +1263,16 @@ declare class NoSuchModelError extends Error {
1268
1263
  message: string;
1269
1264
  stack: string | undefined;
1270
1265
  modelId: string;
1266
+ modelType: string;
1271
1267
  };
1272
1268
  }
1273
1269
 
1274
1270
  declare class NoSuchProviderError extends Error {
1275
1271
  readonly providerId: string;
1276
- constructor({ providerId, message, }: {
1272
+ readonly availableProviders: string[];
1273
+ constructor({ providerId, availableProviders, message, }: {
1277
1274
  providerId: string;
1275
+ availableProviders: string[];
1278
1276
  message?: string;
1279
1277
  });
1280
1278
  static isNoSuchProviderError(error: unknown): error is NoSuchProviderError;
@@ -1283,23 +1281,65 @@ declare class NoSuchProviderError extends Error {
1283
1281
  message: string;
1284
1282
  stack: string | undefined;
1285
1283
  providerId: string;
1284
+ availableProviders: string[];
1286
1285
  };
1287
1286
  }
1288
1287
 
1289
- declare class InvalidModelIdError extends Error {
1290
- readonly id: string;
1291
- constructor({ id, message, }: {
1292
- id: string;
1293
- message?: string;
1294
- });
1295
- static isInvalidModelIdError(error: unknown): error is InvalidModelIdError;
1296
- toJSON(): {
1297
- name: string;
1298
- message: string;
1299
- stack: string | undefined;
1300
- id: string;
1301
- };
1288
+ /**
1289
+ Registry for managing models. It enables getting a model with a string id.
1290
+ */
1291
+ type experimental_ProviderRegistry = {
1292
+ /**
1293
+ Returns the language model with the given id in the format `providerId:modelId`.
1294
+ The model id is then passed to the provider function to get the model.
1295
+
1296
+ @param {string} id - The id of the model to return.
1297
+
1298
+ @throws {NoSuchModelError} If no model with the given id exists.
1299
+ @throws {NoSuchProviderError} If no provider with the given id exists.
1300
+
1301
+ @returns {LanguageModel} The language model associated with the id.
1302
+ */
1303
+ languageModel(id: string): LanguageModel;
1304
+ /**
1305
+ Returns the text embedding model with the given id in the format `providerId:modelId`.
1306
+ The model id is then passed to the provider function to get the model.
1307
+
1308
+ @param {string} id - The id of the model to return.
1309
+
1310
+ @throws {NoSuchModelError} If no model with the given id exists.
1311
+ @throws {NoSuchProviderError} If no provider with the given id exists.
1312
+
1313
+ @returns {LanguageModel} The language model associated with the id.
1314
+ */
1315
+ textEmbeddingModel(id: string): EmbeddingModel<string>;
1316
+ };
1317
+ /**
1318
+ * @deprecated Use `experimental_ProviderRegistry` instead.
1319
+ */
1320
+ type experimental_ModelRegistry = experimental_ProviderRegistry;
1321
+ /**
1322
+ * Provider for language and text embedding models. Compatible with the
1323
+ * provider registry.
1324
+ */
1325
+ interface Provider {
1326
+ /**
1327
+ * Returns a language model with the given id.
1328
+ */
1329
+ languageModel?: (modelId: string) => LanguageModel;
1330
+ /**
1331
+ * Returns a text embedding model with the given id.
1332
+ */
1333
+ textEmbedding?: (modelId: string) => EmbeddingModel<string>;
1302
1334
  }
1335
+ /**
1336
+ * Creates a registry for the given providers.
1337
+ */
1338
+ declare function experimental_createProviderRegistry(providers: Record<string, Provider>): experimental_ProviderRegistry;
1339
+ /**
1340
+ * @deprecated Use `experimental_createProviderRegistry` instead.
1341
+ */
1342
+ declare const experimental_createModelRegistry: typeof experimental_createProviderRegistry;
1303
1343
 
1304
1344
  /**
1305
1345
  * Calculates the cosine similarity between two vectors. This is a useful metric for
@@ -2041,4 +2081,4 @@ declare const generateId: (size?: number | undefined) => string;
2041
2081
  */
2042
2082
  declare const nanoid: (size?: number | undefined) => string;
2043
2083
 
2044
- export { AIStream, AIStreamCallbacksAndOptions, AIStreamParser, AIStreamParserOptions, AWSBedrockAnthropicMessagesStream, AWSBedrockAnthropicStream, AWSBedrockCohereStream, AWSBedrockLlama2Stream, AWSBedrockStream, AnthropicStream, AssistantContent, AssistantResponse, CallWarning, CohereStream, CompletionUsage, CoreAssistantMessage, CoreMessage, CoreSystemMessage, CoreTool, CoreToolChoice, CoreToolMessage, CoreUserMessage, DataContent, DeepPartial, EmbedManyResult, EmbedResult, Embedding, EmbeddingModel, ExperimentalAssistantMessage, ExperimentalMessage, ExperimentalTool, ExperimentalToolMessage, ExperimentalUserMessage, FinishReason, FunctionCallPayload, GenerateObjectResult, GenerateTextResult, GoogleGenerativeAIStream, HuggingFaceStream, ImagePart, InkeepAIStreamCallbacksAndOptions, InkeepChatResultCallbacks, InkeepOnFinalMetadata, InkeepStream, InvalidMessageRoleError, InvalidModelIdError, langchainAdapter as LangChainAdapter, LangChainStream, LanguageModel, LogProbs, MistralStream, NoSuchModelError, NoSuchProviderError, ObjectStreamInputPart, ObjectStreamPart, OpenAIStream, OpenAIStreamCallbacks, ReplicateStream, StreamData, StreamObjectResult, StreamTextResult, StreamingTextResponse, TextPart$1 as TextPart, TextStreamPart, TokenUsage, ToolCallPart, ToolCallPayload, ToolContent, ToolResultPart, UserContent, convertDataContentToBase64String, convertDataContentToUint8Array, convertToCoreMessages, cosineSimilarity, createCallbacksTransformer, createEventStreamTransformer, createStreamDataTransformer, embed, embedMany, experimental_AssistantResponse, experimental_ModelRegistry, experimental_StreamData, experimental_createModelRegistry, experimental_generateObject, experimental_generateText, experimental_streamObject, experimental_streamText, generateId, generateObject, generateText, nanoid, readableFromAsyncIterable, streamObject, streamText, streamToResponse, tool, trimStartOfStreamHelper };
2084
+ export { AIStream, AIStreamCallbacksAndOptions, AIStreamParser, AIStreamParserOptions, AWSBedrockAnthropicMessagesStream, AWSBedrockAnthropicStream, AWSBedrockCohereStream, AWSBedrockLlama2Stream, AWSBedrockStream, AnthropicStream, AssistantContent, AssistantResponse, CallWarning, CohereStream, CompletionUsage, CoreAssistantMessage, CoreMessage, CoreSystemMessage, CoreTool, CoreToolChoice, CoreToolMessage, CoreUserMessage, DataContent, DeepPartial, EmbedManyResult, EmbedResult, Embedding, EmbeddingModel, ExperimentalAssistantMessage, ExperimentalMessage, ExperimentalTool, ExperimentalToolMessage, ExperimentalUserMessage, FinishReason, FunctionCallPayload, GenerateObjectResult, GenerateTextResult, GoogleGenerativeAIStream, HuggingFaceStream, ImagePart, InkeepAIStreamCallbacksAndOptions, InkeepChatResultCallbacks, InkeepOnFinalMetadata, InkeepStream, InvalidMessageRoleError, InvalidModelIdError, langchainAdapter as LangChainAdapter, LangChainStream, LanguageModel, LogProbs, MistralStream, NoSuchModelError, NoSuchProviderError, ObjectStreamInputPart, ObjectStreamPart, OpenAIStream, OpenAIStreamCallbacks, ReplicateStream, StreamData, StreamObjectResult, StreamTextResult, StreamingTextResponse, TextPart$1 as TextPart, TextStreamPart, TokenUsage, ToolCallPart, ToolCallPayload, ToolContent, ToolResultPart, UserContent, convertDataContentToBase64String, convertDataContentToUint8Array, convertToCoreMessages, cosineSimilarity, createCallbacksTransformer, createEventStreamTransformer, createStreamDataTransformer, embed, embedMany, experimental_AssistantResponse, experimental_ModelRegistry, experimental_ProviderRegistry, experimental_StreamData, experimental_createModelRegistry, experimental_createProviderRegistry, experimental_generateObject, experimental_generateText, experimental_streamObject, experimental_streamText, generateId, generateObject, generateText, nanoid, readableFromAsyncIterable, streamObject, streamText, streamToResponse, tool, trimStartOfStreamHelper };
package/dist/index.d.ts CHANGED
@@ -1234,32 +1234,27 @@ declare class StreamTextResult<TOOLS extends Record<string, CoreTool>> {
1234
1234
  */
1235
1235
  declare const experimental_streamText: typeof streamText;
1236
1236
 
1237
- /**
1238
- Registry for managing models. It enables getting a model with a string id.
1239
- */
1240
- type experimental_ModelRegistry = {
1241
- /**
1242
- Returns the language model with the given id in the format `providerId:modelId`.
1243
- The model id is then passed to the provider function to get the model.
1244
-
1245
- @param {string} id - The id of the model to return.
1246
-
1247
- @throws {NoSuchModelError} If no model with the given id exists.
1248
- @throws {NoSuchProviderError} If no provider with the given id exists.
1249
-
1250
- @returns {LanguageModel} The language model associated with the id.
1251
- */
1252
- languageModel(id: string): LanguageModel;
1253
- };
1254
- /**
1255
- * Creates a model registry for the given providers.
1256
- */
1257
- declare function experimental_createModelRegistry(providers: Record<string, (id: string) => LanguageModel>): experimental_ModelRegistry;
1237
+ declare class InvalidModelIdError extends Error {
1238
+ readonly id: string;
1239
+ constructor({ id, message, }: {
1240
+ id: string;
1241
+ message?: string;
1242
+ });
1243
+ static isInvalidModelIdError(error: unknown): error is InvalidModelIdError;
1244
+ toJSON(): {
1245
+ name: string;
1246
+ message: string;
1247
+ stack: string | undefined;
1248
+ id: string;
1249
+ };
1250
+ }
1258
1251
 
1259
1252
  declare class NoSuchModelError extends Error {
1260
1253
  readonly modelId: string;
1261
- constructor({ modelId, message, }: {
1254
+ readonly modelType: string;
1255
+ constructor({ modelId, modelType, message, }: {
1262
1256
  modelId: string;
1257
+ modelType: string;
1263
1258
  message?: string;
1264
1259
  });
1265
1260
  static isNoSuchModelError(error: unknown): error is NoSuchModelError;
@@ -1268,13 +1263,16 @@ declare class NoSuchModelError extends Error {
1268
1263
  message: string;
1269
1264
  stack: string | undefined;
1270
1265
  modelId: string;
1266
+ modelType: string;
1271
1267
  };
1272
1268
  }
1273
1269
 
1274
1270
  declare class NoSuchProviderError extends Error {
1275
1271
  readonly providerId: string;
1276
- constructor({ providerId, message, }: {
1272
+ readonly availableProviders: string[];
1273
+ constructor({ providerId, availableProviders, message, }: {
1277
1274
  providerId: string;
1275
+ availableProviders: string[];
1278
1276
  message?: string;
1279
1277
  });
1280
1278
  static isNoSuchProviderError(error: unknown): error is NoSuchProviderError;
@@ -1283,23 +1281,65 @@ declare class NoSuchProviderError extends Error {
1283
1281
  message: string;
1284
1282
  stack: string | undefined;
1285
1283
  providerId: string;
1284
+ availableProviders: string[];
1286
1285
  };
1287
1286
  }
1288
1287
 
1289
- declare class InvalidModelIdError extends Error {
1290
- readonly id: string;
1291
- constructor({ id, message, }: {
1292
- id: string;
1293
- message?: string;
1294
- });
1295
- static isInvalidModelIdError(error: unknown): error is InvalidModelIdError;
1296
- toJSON(): {
1297
- name: string;
1298
- message: string;
1299
- stack: string | undefined;
1300
- id: string;
1301
- };
1288
+ /**
1289
+ Registry for managing models. It enables getting a model with a string id.
1290
+ */
1291
+ type experimental_ProviderRegistry = {
1292
+ /**
1293
+ Returns the language model with the given id in the format `providerId:modelId`.
1294
+ The model id is then passed to the provider function to get the model.
1295
+
1296
+ @param {string} id - The id of the model to return.
1297
+
1298
+ @throws {NoSuchModelError} If no model with the given id exists.
1299
+ @throws {NoSuchProviderError} If no provider with the given id exists.
1300
+
1301
+ @returns {LanguageModel} The language model associated with the id.
1302
+ */
1303
+ languageModel(id: string): LanguageModel;
1304
+ /**
1305
+ Returns the text embedding model with the given id in the format `providerId:modelId`.
1306
+ The model id is then passed to the provider function to get the model.
1307
+
1308
+ @param {string} id - The id of the model to return.
1309
+
1310
+ @throws {NoSuchModelError} If no model with the given id exists.
1311
+ @throws {NoSuchProviderError} If no provider with the given id exists.
1312
+
1313
+ @returns {LanguageModel} The language model associated with the id.
1314
+ */
1315
+ textEmbeddingModel(id: string): EmbeddingModel<string>;
1316
+ };
1317
+ /**
1318
+ * @deprecated Use `experimental_ProviderRegistry` instead.
1319
+ */
1320
+ type experimental_ModelRegistry = experimental_ProviderRegistry;
1321
+ /**
1322
+ * Provider for language and text embedding models. Compatible with the
1323
+ * provider registry.
1324
+ */
1325
+ interface Provider {
1326
+ /**
1327
+ * Returns a language model with the given id.
1328
+ */
1329
+ languageModel?: (modelId: string) => LanguageModel;
1330
+ /**
1331
+ * Returns a text embedding model with the given id.
1332
+ */
1333
+ textEmbedding?: (modelId: string) => EmbeddingModel<string>;
1302
1334
  }
1335
+ /**
1336
+ * Creates a registry for the given providers.
1337
+ */
1338
+ declare function experimental_createProviderRegistry(providers: Record<string, Provider>): experimental_ProviderRegistry;
1339
+ /**
1340
+ * @deprecated Use `experimental_createProviderRegistry` instead.
1341
+ */
1342
+ declare const experimental_createModelRegistry: typeof experimental_createProviderRegistry;
1303
1343
 
1304
1344
  /**
1305
1345
  * Calculates the cosine similarity between two vectors. This is a useful metric for
@@ -2041,4 +2081,4 @@ declare const generateId: (size?: number | undefined) => string;
2041
2081
  */
2042
2082
  declare const nanoid: (size?: number | undefined) => string;
2043
2083
 
2044
- export { AIStream, AIStreamCallbacksAndOptions, AIStreamParser, AIStreamParserOptions, AWSBedrockAnthropicMessagesStream, AWSBedrockAnthropicStream, AWSBedrockCohereStream, AWSBedrockLlama2Stream, AWSBedrockStream, AnthropicStream, AssistantContent, AssistantResponse, CallWarning, CohereStream, CompletionUsage, CoreAssistantMessage, CoreMessage, CoreSystemMessage, CoreTool, CoreToolChoice, CoreToolMessage, CoreUserMessage, DataContent, DeepPartial, EmbedManyResult, EmbedResult, Embedding, EmbeddingModel, ExperimentalAssistantMessage, ExperimentalMessage, ExperimentalTool, ExperimentalToolMessage, ExperimentalUserMessage, FinishReason, FunctionCallPayload, GenerateObjectResult, GenerateTextResult, GoogleGenerativeAIStream, HuggingFaceStream, ImagePart, InkeepAIStreamCallbacksAndOptions, InkeepChatResultCallbacks, InkeepOnFinalMetadata, InkeepStream, InvalidMessageRoleError, InvalidModelIdError, langchainAdapter as LangChainAdapter, LangChainStream, LanguageModel, LogProbs, MistralStream, NoSuchModelError, NoSuchProviderError, ObjectStreamInputPart, ObjectStreamPart, OpenAIStream, OpenAIStreamCallbacks, ReplicateStream, StreamData, StreamObjectResult, StreamTextResult, StreamingTextResponse, TextPart$1 as TextPart, TextStreamPart, TokenUsage, ToolCallPart, ToolCallPayload, ToolContent, ToolResultPart, UserContent, convertDataContentToBase64String, convertDataContentToUint8Array, convertToCoreMessages, cosineSimilarity, createCallbacksTransformer, createEventStreamTransformer, createStreamDataTransformer, embed, embedMany, experimental_AssistantResponse, experimental_ModelRegistry, experimental_StreamData, experimental_createModelRegistry, experimental_generateObject, experimental_generateText, experimental_streamObject, experimental_streamText, generateId, generateObject, generateText, nanoid, readableFromAsyncIterable, streamObject, streamText, streamToResponse, tool, trimStartOfStreamHelper };
2084
+ export { AIStream, AIStreamCallbacksAndOptions, AIStreamParser, AIStreamParserOptions, AWSBedrockAnthropicMessagesStream, AWSBedrockAnthropicStream, AWSBedrockCohereStream, AWSBedrockLlama2Stream, AWSBedrockStream, AnthropicStream, AssistantContent, AssistantResponse, CallWarning, CohereStream, CompletionUsage, CoreAssistantMessage, CoreMessage, CoreSystemMessage, CoreTool, CoreToolChoice, CoreToolMessage, CoreUserMessage, DataContent, DeepPartial, EmbedManyResult, EmbedResult, Embedding, EmbeddingModel, ExperimentalAssistantMessage, ExperimentalMessage, ExperimentalTool, ExperimentalToolMessage, ExperimentalUserMessage, FinishReason, FunctionCallPayload, GenerateObjectResult, GenerateTextResult, GoogleGenerativeAIStream, HuggingFaceStream, ImagePart, InkeepAIStreamCallbacksAndOptions, InkeepChatResultCallbacks, InkeepOnFinalMetadata, InkeepStream, InvalidMessageRoleError, InvalidModelIdError, langchainAdapter as LangChainAdapter, LangChainStream, LanguageModel, LogProbs, MistralStream, NoSuchModelError, NoSuchProviderError, ObjectStreamInputPart, ObjectStreamPart, OpenAIStream, OpenAIStreamCallbacks, ReplicateStream, StreamData, StreamObjectResult, StreamTextResult, StreamingTextResponse, TextPart$1 as TextPart, TextStreamPart, TokenUsage, ToolCallPart, ToolCallPayload, ToolContent, ToolResultPart, UserContent, convertDataContentToBase64String, convertDataContentToUint8Array, convertToCoreMessages, cosineSimilarity, createCallbacksTransformer, createEventStreamTransformer, createStreamDataTransformer, embed, embedMany, experimental_AssistantResponse, experimental_ModelRegistry, experimental_ProviderRegistry, experimental_StreamData, experimental_createModelRegistry, experimental_createProviderRegistry, experimental_generateObject, experimental_generateText, experimental_streamObject, experimental_streamText, generateId, generateObject, generateText, nanoid, readableFromAsyncIterable, streamObject, streamText, streamToResponse, tool, trimStartOfStreamHelper };
package/dist/index.js CHANGED
@@ -87,6 +87,7 @@ __export(streams_exports, {
87
87
  experimental_AssistantResponse: () => experimental_AssistantResponse,
88
88
  experimental_StreamData: () => experimental_StreamData,
89
89
  experimental_createModelRegistry: () => experimental_createModelRegistry,
90
+ experimental_createProviderRegistry: () => experimental_createProviderRegistry,
90
91
  experimental_generateObject: () => experimental_generateObject,
91
92
  experimental_generateText: () => experimental_generateText,
92
93
  experimental_streamObject: () => experimental_streamObject,
@@ -108,7 +109,7 @@ __export(streams_exports, {
108
109
  });
109
110
  module.exports = __toCommonJS(streams_exports);
110
111
  var import_ui_utils5 = require("@ai-sdk/ui-utils");
111
- var import_provider_utils6 = require("@ai-sdk/provider-utils");
112
+ var import_provider_utils7 = require("@ai-sdk/provider-utils");
112
113
 
113
114
  // core/util/retry-with-exponential-backoff.ts
114
115
  var import_provider = require("@ai-sdk/provider");
@@ -249,7 +250,7 @@ var EmbedManyResult = class {
249
250
 
250
251
  // core/generate-object/generate-object.ts
251
252
  var import_provider5 = require("@ai-sdk/provider");
252
- var import_provider_utils3 = require("@ai-sdk/provider-utils");
253
+ var import_provider_utils4 = require("@ai-sdk/provider-utils");
253
254
 
254
255
  // core/generate-text/token-usage.ts
255
256
  function calculateTokenUsage(usage) {
@@ -333,6 +334,7 @@ var InvalidMessageRoleError = class extends Error {
333
334
  };
334
335
 
335
336
  // core/prompt/convert-to-language-model-prompt.ts
337
+ var import_provider_utils3 = require("@ai-sdk/provider-utils");
336
338
  function convertToLanguageModelPrompt(prompt) {
337
339
  const languageModelMessages = [];
338
340
  if (prompt.system != null) {
@@ -390,6 +392,47 @@ function convertToLanguageModelMessage(message) {
390
392
  mimeType: part.mimeType
391
393
  };
392
394
  }
395
+ if (typeof part.image === "string") {
396
+ try {
397
+ const url = new URL(part.image);
398
+ switch (url.protocol) {
399
+ case "http:":
400
+ case "https:": {
401
+ return {
402
+ type: "image",
403
+ image: url,
404
+ mimeType: part.mimeType
405
+ };
406
+ }
407
+ case "data:": {
408
+ try {
409
+ const [header, base64Content] = part.image.split(",");
410
+ const mimeType = header.split(";")[0].split(":")[1];
411
+ if (mimeType == null || base64Content == null) {
412
+ throw new Error("Invalid data URL format");
413
+ }
414
+ return {
415
+ type: "image",
416
+ image: convertDataContentToUint8Array(base64Content),
417
+ mimeType
418
+ };
419
+ } catch (error) {
420
+ throw new Error(
421
+ `Error processing data URL: ${(0, import_provider_utils3.getErrorMessage)(
422
+ message
423
+ )}`
424
+ );
425
+ }
426
+ }
427
+ default: {
428
+ throw new Error(
429
+ `Unsupported URL protocol: ${url.protocol}`
430
+ );
431
+ }
432
+ }
433
+ } catch (_ignored) {
434
+ }
435
+ }
393
436
  const imageUint8 = convertDataContentToUint8Array(part.image);
394
437
  return {
395
438
  type: "image",
@@ -700,7 +743,7 @@ async function generateObject({
700
743
  throw new Error(`Unsupported mode: ${_exhaustiveCheck}`);
701
744
  }
702
745
  }
703
- const parseResult = (0, import_provider_utils3.safeParseJSON)({ text: result, schema });
746
+ const parseResult = (0, import_provider_utils4.safeParseJSON)({ text: result, schema });
704
747
  if (!parseResult.success) {
705
748
  throw parseResult.error;
706
749
  }
@@ -1116,7 +1159,7 @@ function parsePartialJson(jsonText) {
1116
1159
  }
1117
1160
 
1118
1161
  // core/generate-object/stream-object.ts
1119
- var import_provider_utils4 = require("@ai-sdk/provider-utils");
1162
+ var import_provider_utils5 = require("@ai-sdk/provider-utils");
1120
1163
  async function streamObject({
1121
1164
  model,
1122
1165
  schema,
@@ -1290,7 +1333,7 @@ var StreamObjectResult = class {
1290
1333
  usage = calculateTokenUsage(chunk.usage);
1291
1334
  controller.enqueue({ ...chunk, usage });
1292
1335
  resolveUsage(usage);
1293
- const validationResult = (0, import_provider_utils4.safeValidateTypes)({
1336
+ const validationResult = (0, import_provider_utils5.safeValidateTypes)({
1294
1337
  value: latestObject,
1295
1338
  schema
1296
1339
  });
@@ -1389,7 +1432,7 @@ function prepareToolsAndToolChoice({
1389
1432
 
1390
1433
  // core/generate-text/tool-call.ts
1391
1434
  var import_provider6 = require("@ai-sdk/provider");
1392
- var import_provider_utils5 = require("@ai-sdk/provider-utils");
1435
+ var import_provider_utils6 = require("@ai-sdk/provider-utils");
1393
1436
  function parseToolCall({
1394
1437
  toolCall,
1395
1438
  tools
@@ -1405,7 +1448,7 @@ function parseToolCall({
1405
1448
  availableTools: Object.keys(tools)
1406
1449
  });
1407
1450
  }
1408
- const parseResult = (0, import_provider_utils5.safeParseJSON)({
1451
+ const parseResult = (0, import_provider_utils6.safeParseJSON)({
1409
1452
  text: toolCall.args,
1410
1453
  schema: tool2.parameters
1411
1454
  });
@@ -2116,21 +2159,24 @@ var InvalidModelIdError = class extends Error {
2116
2159
  var NoSuchModelError = class extends Error {
2117
2160
  constructor({
2118
2161
  modelId,
2119
- message = `No such model: ${modelId}`
2162
+ modelType,
2163
+ message = `No such ${modelType}: ${modelId}`
2120
2164
  }) {
2121
2165
  super(message);
2122
2166
  this.name = "AI_NoSuchModelError";
2123
2167
  this.modelId = modelId;
2168
+ this.modelType = modelType;
2124
2169
  }
2125
2170
  static isNoSuchModelError(error) {
2126
- return error instanceof Error && error.name === "AI_NoSuchModelError" && typeof error.modelId === "string";
2171
+ return error instanceof Error && error.name === "AI_NoSuchModelError" && typeof error.modelId === "string" && typeof error.modelType === "string";
2127
2172
  }
2128
2173
  toJSON() {
2129
2174
  return {
2130
2175
  name: this.name,
2131
2176
  message: this.message,
2132
2177
  stack: this.stack,
2133
- modelId: this.modelId
2178
+ modelId: this.modelId,
2179
+ modelType: this.modelType
2134
2180
  };
2135
2181
  }
2136
2182
  };
@@ -2139,75 +2185,78 @@ var NoSuchModelError = class extends Error {
2139
2185
  var NoSuchProviderError = class extends Error {
2140
2186
  constructor({
2141
2187
  providerId,
2142
- message = `No such provider: ${providerId}`
2188
+ availableProviders,
2189
+ message = `No such provider: ${providerId} (available providers: ${availableProviders.join()})`
2143
2190
  }) {
2144
2191
  super(message);
2145
2192
  this.name = "AI_NoSuchProviderError";
2146
2193
  this.providerId = providerId;
2194
+ this.availableProviders = availableProviders;
2147
2195
  }
2148
2196
  static isNoSuchProviderError(error) {
2149
- return error instanceof Error && error.name === "AI_NoSuchProviderError" && typeof error.providerId === "string";
2197
+ return error instanceof Error && error.name === "AI_NoSuchProviderError" && typeof error.providerId === "string" && Array.isArray(error.availableProviders);
2150
2198
  }
2151
2199
  toJSON() {
2152
2200
  return {
2153
2201
  name: this.name,
2154
2202
  message: this.message,
2155
2203
  stack: this.stack,
2156
- providerId: this.providerId
2204
+ providerId: this.providerId,
2205
+ availableProviders: this.availableProviders
2157
2206
  };
2158
2207
  }
2159
2208
  };
2160
2209
 
2161
- // core/registry/model-registry.ts
2162
- function experimental_createModelRegistry(providers) {
2163
- const registry = new DefaultModelRegistry();
2210
+ // core/registry/provider-registry.ts
2211
+ function experimental_createProviderRegistry(providers) {
2212
+ const registry = new DefaultProviderRegistry();
2164
2213
  for (const [id, provider] of Object.entries(providers)) {
2165
- registry.registerLanguageModelProvider({ id, provider });
2214
+ registry.registerProvider({ id, provider });
2166
2215
  }
2167
2216
  return registry;
2168
2217
  }
2169
- var DefaultModelRegistry = class {
2218
+ var experimental_createModelRegistry = experimental_createProviderRegistry;
2219
+ var DefaultProviderRegistry = class {
2170
2220
  constructor() {
2171
- // Mapping of provider id to provider
2172
2221
  this.providers = {};
2173
2222
  }
2174
- /**
2175
- Registers a language model provider with a given id.
2176
-
2177
- @param {string} id - The id of the provider.
2178
- @param {(id: string) => LanguageModel} provider - The provider function to register.
2179
- */
2180
- registerLanguageModelProvider({
2181
- id,
2182
- provider
2183
- }) {
2223
+ registerProvider({ id, provider }) {
2184
2224
  this.providers[id] = provider;
2185
2225
  }
2186
- /**
2187
- Returns the language model with the given id.
2188
- The id can either be a registered model id or use a provider prefix.
2189
- Provider ids are separated from the model id by a colon: `providerId:modelId`.
2190
- The model id is then passed to the provider function to get the model.
2191
-
2192
- @param {string} id - The id of the model to return.
2193
-
2194
- @throws {NoSuchModelError} If no model with the given id exists.
2195
- @throws {NoSuchProviderError} If no provider with the given id exists.
2196
-
2197
- @returns {LanguageModel} The language model associated with the id.
2198
- */
2199
- languageModel(id) {
2226
+ getProvider(id) {
2227
+ const provider = this.providers[id];
2228
+ if (provider == null) {
2229
+ throw new NoSuchProviderError({
2230
+ providerId: id,
2231
+ availableProviders: Object.keys(this.providers)
2232
+ });
2233
+ }
2234
+ return provider;
2235
+ }
2236
+ splitId(id) {
2200
2237
  if (!id.includes(":")) {
2201
2238
  throw new InvalidModelIdError({ id });
2202
2239
  }
2203
- const [providerId, modelId] = id.split(":");
2204
- const provider = this.providers[providerId];
2205
- if (!provider) {
2206
- throw new NoSuchProviderError({ providerId });
2240
+ return id.split(":");
2241
+ }
2242
+ languageModel(id) {
2243
+ var _a, _b;
2244
+ const [providerId, modelId] = this.splitId(id);
2245
+ const model = (_b = (_a = this.getProvider(providerId)).languageModel) == null ? void 0 : _b.call(_a, modelId);
2246
+ if (model == null) {
2247
+ throw new NoSuchModelError({ modelId: id, modelType: "language model" });
2207
2248
  }
2208
- const model = provider(modelId);
2209
- if (!model) {
2210
- throw new NoSuchModelError({ modelId: id });
2249
+ return model;
2250
+ }
2251
+ textEmbeddingModel(id) {
2252
+ var _a, _b;
2253
+ const [providerId, modelId] = this.splitId(id);
2254
+ const model = (_b = (_a = this.getProvider(providerId)).textEmbedding) == null ? void 0 : _b.call(_a, modelId);
2255
+ if (model == null) {
2256
+ throw new NoSuchModelError({
2257
+ modelId: id,
2258
+ modelType: "text embedding model"
2259
+ });
2211
2260
  }
2212
2261
  return model;
2213
2262
  }
@@ -3331,8 +3380,8 @@ var StreamingTextResponse = class extends Response {
3331
3380
  };
3332
3381
 
3333
3382
  // streams/index.ts
3334
- var generateId2 = import_provider_utils6.generateId;
3335
- var nanoid = import_provider_utils6.generateId;
3383
+ var generateId2 = import_provider_utils7.generateId;
3384
+ var nanoid = import_provider_utils7.generateId;
3336
3385
  // Annotate the CommonJS export names for ESM import in node:
3337
3386
  0 && (module.exports = {
3338
3387
  AIStream,
@@ -3392,6 +3441,7 @@ var nanoid = import_provider_utils6.generateId;
3392
3441
  experimental_AssistantResponse,
3393
3442
  experimental_StreamData,
3394
3443
  experimental_createModelRegistry,
3444
+ experimental_createProviderRegistry,
3395
3445
  experimental_generateObject,
3396
3446
  experimental_generateText,
3397
3447
  experimental_streamObject,