ai 3.1.32 → 3.1.34

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
@@ -1,6 +1,5 @@
1
1
  import { JSONValue, CreateMessage, FunctionCall as FunctionCall$1, AssistantMessage, DataMessage } from '@ai-sdk/ui-utils';
2
2
  export { AssistantMessage, AssistantStatus, ChatRequest, ChatRequestOptions, CreateMessage, DataMessage, Function, FunctionCall, FunctionCallHandler, IdGenerator, JSONValue, Message, RequestOptions, StreamPart, Tool, ToolCall, ToolCallHandler, ToolChoice, ToolInvocation, UseAssistantOptions, formatStreamPart, parseComplexResponse, parseStreamPart, readDataStream } from '@ai-sdk/ui-utils';
3
- export { generateId, generateId as nanoid } from '@ai-sdk/provider-utils';
4
3
  import { EmbeddingModelV1, EmbeddingModelV1Embedding, LanguageModelV1, LanguageModelV1FinishReason, LanguageModelV1LogProbs, LanguageModelV1CallWarning } from '@ai-sdk/provider';
5
4
  export { APICallError, EmptyResponseBodyError, InvalidArgumentError, InvalidDataContentError, InvalidPromptError, InvalidResponseDataError, InvalidToolArgumentsError, JSONParseError, LoadAPIKeyError, NoObjectGeneratedError, NoSuchToolError, RetryError, ToolCallParseError, TypeValidationError, UnsupportedFunctionalityError, UnsupportedJSONSchemaError } from '@ai-sdk/provider';
6
5
  import { z } from 'zod';
@@ -835,6 +834,21 @@ declare function convertToCoreMessages(messages: Array<{
835
834
  toolInvocations?: Array<ToolResult<string, unknown, unknown>>;
836
835
  }>): CoreMessage[];
837
836
 
837
+ declare class InvalidMessageRoleError extends Error {
838
+ readonly role: string;
839
+ constructor({ role, message, }: {
840
+ role: string;
841
+ message?: string;
842
+ });
843
+ static isInvalidMessageRoleError(error: unknown): error is InvalidMessageRoleError;
844
+ toJSON(): {
845
+ name: string;
846
+ message: string;
847
+ stack: string | undefined;
848
+ role: string;
849
+ };
850
+ }
851
+
838
852
  type ToToolCall<TOOLS extends Record<string, CoreTool>> = ValueOf<{
839
853
  [NAME in keyof TOOLS]: {
840
854
  type: 'tool-call';
@@ -1220,6 +1234,85 @@ declare class StreamTextResult<TOOLS extends Record<string, CoreTool>> {
1220
1234
  */
1221
1235
  declare const experimental_streamText: typeof streamText;
1222
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;
1258
+
1259
+ declare class NoSuchModelError extends Error {
1260
+ readonly modelId: string;
1261
+ constructor({ modelId, message, }: {
1262
+ modelId: string;
1263
+ message?: string;
1264
+ });
1265
+ static isNoSuchModelError(error: unknown): error is NoSuchModelError;
1266
+ toJSON(): {
1267
+ name: string;
1268
+ message: string;
1269
+ stack: string | undefined;
1270
+ modelId: string;
1271
+ };
1272
+ }
1273
+
1274
+ declare class NoSuchProviderError extends Error {
1275
+ readonly providerId: string;
1276
+ constructor({ providerId, message, }: {
1277
+ providerId: string;
1278
+ message?: string;
1279
+ });
1280
+ static isNoSuchProviderError(error: unknown): error is NoSuchProviderError;
1281
+ toJSON(): {
1282
+ name: string;
1283
+ message: string;
1284
+ stack: string | undefined;
1285
+ providerId: string;
1286
+ };
1287
+ }
1288
+
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
+ };
1302
+ }
1303
+
1304
+ /**
1305
+ * Calculates the cosine similarity between two vectors. This is a useful metric for
1306
+ * comparing the similarity of two vectors such as embeddings.
1307
+ *
1308
+ * @param vector1 - The first vector.
1309
+ * @param vector2 - The second vector.
1310
+ *
1311
+ * @returns The cosine similarity between vector1 and vector2.
1312
+ * @throws {Error} If the vectors do not have the same length.
1313
+ */
1314
+ declare function cosineSimilarity(vector1: number[], vector2: number[]): number;
1315
+
1223
1316
  declare interface AzureChatCompletions {
1224
1317
  id: string;
1225
1318
  created: Date;
@@ -1942,4 +2035,10 @@ declare class StreamingTextResponse extends Response {
1942
2035
  constructor(res: ReadableStream, init?: ResponseInit, data?: StreamData);
1943
2036
  }
1944
2037
 
1945
- 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, langchainAdapter as LangChainAdapter, LangChainStream, LanguageModel, LogProbs, MistralStream, ObjectStreamInputPart, ObjectStreamPart, OpenAIStream, OpenAIStreamCallbacks, ReplicateStream, StreamData, StreamObjectResult, StreamTextResult, StreamingTextResponse, TextPart$1 as TextPart, TextStreamPart, TokenUsage, ToolCallPart, ToolCallPayload, ToolContent, ToolResultPart, UserContent, convertDataContentToBase64String, convertDataContentToUint8Array, convertToCoreMessages, createCallbacksTransformer, createEventStreamTransformer, createStreamDataTransformer, embed, embedMany, experimental_AssistantResponse, experimental_StreamData, experimental_generateObject, experimental_generateText, experimental_streamObject, experimental_streamText, generateObject, generateText, readableFromAsyncIterable, streamObject, streamText, streamToResponse, tool, trimStartOfStreamHelper };
2038
+ declare const generateId: (size?: number | undefined) => string;
2039
+ /**
2040
+ @deprecated Use `generateId` instead.
2041
+ */
2042
+ declare const nanoid: (size?: number | undefined) => string;
2043
+
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 };
package/dist/index.d.ts CHANGED
@@ -1,6 +1,5 @@
1
1
  import { JSONValue, CreateMessage, FunctionCall as FunctionCall$1, AssistantMessage, DataMessage } from '@ai-sdk/ui-utils';
2
2
  export { AssistantMessage, AssistantStatus, ChatRequest, ChatRequestOptions, CreateMessage, DataMessage, Function, FunctionCall, FunctionCallHandler, IdGenerator, JSONValue, Message, RequestOptions, StreamPart, Tool, ToolCall, ToolCallHandler, ToolChoice, ToolInvocation, UseAssistantOptions, formatStreamPart, parseComplexResponse, parseStreamPart, readDataStream } from '@ai-sdk/ui-utils';
3
- export { generateId, generateId as nanoid } from '@ai-sdk/provider-utils';
4
3
  import { EmbeddingModelV1, EmbeddingModelV1Embedding, LanguageModelV1, LanguageModelV1FinishReason, LanguageModelV1LogProbs, LanguageModelV1CallWarning } from '@ai-sdk/provider';
5
4
  export { APICallError, EmptyResponseBodyError, InvalidArgumentError, InvalidDataContentError, InvalidPromptError, InvalidResponseDataError, InvalidToolArgumentsError, JSONParseError, LoadAPIKeyError, NoObjectGeneratedError, NoSuchToolError, RetryError, ToolCallParseError, TypeValidationError, UnsupportedFunctionalityError, UnsupportedJSONSchemaError } from '@ai-sdk/provider';
6
5
  import { z } from 'zod';
@@ -835,6 +834,21 @@ declare function convertToCoreMessages(messages: Array<{
835
834
  toolInvocations?: Array<ToolResult<string, unknown, unknown>>;
836
835
  }>): CoreMessage[];
837
836
 
837
+ declare class InvalidMessageRoleError extends Error {
838
+ readonly role: string;
839
+ constructor({ role, message, }: {
840
+ role: string;
841
+ message?: string;
842
+ });
843
+ static isInvalidMessageRoleError(error: unknown): error is InvalidMessageRoleError;
844
+ toJSON(): {
845
+ name: string;
846
+ message: string;
847
+ stack: string | undefined;
848
+ role: string;
849
+ };
850
+ }
851
+
838
852
  type ToToolCall<TOOLS extends Record<string, CoreTool>> = ValueOf<{
839
853
  [NAME in keyof TOOLS]: {
840
854
  type: 'tool-call';
@@ -1220,6 +1234,85 @@ declare class StreamTextResult<TOOLS extends Record<string, CoreTool>> {
1220
1234
  */
1221
1235
  declare const experimental_streamText: typeof streamText;
1222
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;
1258
+
1259
+ declare class NoSuchModelError extends Error {
1260
+ readonly modelId: string;
1261
+ constructor({ modelId, message, }: {
1262
+ modelId: string;
1263
+ message?: string;
1264
+ });
1265
+ static isNoSuchModelError(error: unknown): error is NoSuchModelError;
1266
+ toJSON(): {
1267
+ name: string;
1268
+ message: string;
1269
+ stack: string | undefined;
1270
+ modelId: string;
1271
+ };
1272
+ }
1273
+
1274
+ declare class NoSuchProviderError extends Error {
1275
+ readonly providerId: string;
1276
+ constructor({ providerId, message, }: {
1277
+ providerId: string;
1278
+ message?: string;
1279
+ });
1280
+ static isNoSuchProviderError(error: unknown): error is NoSuchProviderError;
1281
+ toJSON(): {
1282
+ name: string;
1283
+ message: string;
1284
+ stack: string | undefined;
1285
+ providerId: string;
1286
+ };
1287
+ }
1288
+
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
+ };
1302
+ }
1303
+
1304
+ /**
1305
+ * Calculates the cosine similarity between two vectors. This is a useful metric for
1306
+ * comparing the similarity of two vectors such as embeddings.
1307
+ *
1308
+ * @param vector1 - The first vector.
1309
+ * @param vector2 - The second vector.
1310
+ *
1311
+ * @returns The cosine similarity between vector1 and vector2.
1312
+ * @throws {Error} If the vectors do not have the same length.
1313
+ */
1314
+ declare function cosineSimilarity(vector1: number[], vector2: number[]): number;
1315
+
1223
1316
  declare interface AzureChatCompletions {
1224
1317
  id: string;
1225
1318
  created: Date;
@@ -1942,4 +2035,10 @@ declare class StreamingTextResponse extends Response {
1942
2035
  constructor(res: ReadableStream, init?: ResponseInit, data?: StreamData);
1943
2036
  }
1944
2037
 
1945
- 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, langchainAdapter as LangChainAdapter, LangChainStream, LanguageModel, LogProbs, MistralStream, ObjectStreamInputPart, ObjectStreamPart, OpenAIStream, OpenAIStreamCallbacks, ReplicateStream, StreamData, StreamObjectResult, StreamTextResult, StreamingTextResponse, TextPart$1 as TextPart, TextStreamPart, TokenUsage, ToolCallPart, ToolCallPayload, ToolContent, ToolResultPart, UserContent, convertDataContentToBase64String, convertDataContentToUint8Array, convertToCoreMessages, createCallbacksTransformer, createEventStreamTransformer, createStreamDataTransformer, embed, embedMany, experimental_AssistantResponse, experimental_StreamData, experimental_generateObject, experimental_generateText, experimental_streamObject, experimental_streamText, generateObject, generateText, readableFromAsyncIterable, streamObject, streamText, streamToResponse, tool, trimStartOfStreamHelper };
2038
+ declare const generateId: (size?: number | undefined) => string;
2039
+ /**
2040
+ @deprecated Use `generateId` instead.
2041
+ */
2042
+ declare const nanoid: (size?: number | undefined) => string;
2043
+
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 };
package/dist/index.js CHANGED
@@ -50,6 +50,8 @@ __export(streams_exports, {
50
50
  InkeepStream: () => InkeepStream,
51
51
  InvalidArgumentError: () => import_provider8.InvalidArgumentError,
52
52
  InvalidDataContentError: () => import_provider8.InvalidDataContentError,
53
+ InvalidMessageRoleError: () => InvalidMessageRoleError,
54
+ InvalidModelIdError: () => InvalidModelIdError,
53
55
  InvalidPromptError: () => import_provider8.InvalidPromptError,
54
56
  InvalidResponseDataError: () => import_provider8.InvalidResponseDataError,
55
57
  InvalidToolArgumentsError: () => import_provider8.InvalidToolArgumentsError,
@@ -59,6 +61,8 @@ __export(streams_exports, {
59
61
  LoadAPIKeyError: () => import_provider8.LoadAPIKeyError,
60
62
  MistralStream: () => MistralStream,
61
63
  NoObjectGeneratedError: () => import_provider8.NoObjectGeneratedError,
64
+ NoSuchModelError: () => NoSuchModelError,
65
+ NoSuchProviderError: () => NoSuchProviderError,
62
66
  NoSuchToolError: () => import_provider8.NoSuchToolError,
63
67
  OpenAIStream: () => OpenAIStream,
64
68
  ReplicateStream: () => ReplicateStream,
@@ -74,6 +78,7 @@ __export(streams_exports, {
74
78
  convertDataContentToBase64String: () => convertDataContentToBase64String,
75
79
  convertDataContentToUint8Array: () => convertDataContentToUint8Array,
76
80
  convertToCoreMessages: () => convertToCoreMessages,
81
+ cosineSimilarity: () => cosineSimilarity,
77
82
  createCallbacksTransformer: () => createCallbacksTransformer,
78
83
  createEventStreamTransformer: () => createEventStreamTransformer,
79
84
  createStreamDataTransformer: () => createStreamDataTransformer,
@@ -81,15 +86,16 @@ __export(streams_exports, {
81
86
  embedMany: () => embedMany,
82
87
  experimental_AssistantResponse: () => experimental_AssistantResponse,
83
88
  experimental_StreamData: () => experimental_StreamData,
89
+ experimental_createModelRegistry: () => experimental_createModelRegistry,
84
90
  experimental_generateObject: () => experimental_generateObject,
85
91
  experimental_generateText: () => experimental_generateText,
86
92
  experimental_streamObject: () => experimental_streamObject,
87
93
  experimental_streamText: () => experimental_streamText,
88
94
  formatStreamPart: () => import_ui_utils5.formatStreamPart,
89
- generateId: () => import_provider_utils6.generateId,
95
+ generateId: () => generateId2,
90
96
  generateObject: () => generateObject,
91
97
  generateText: () => generateText,
92
- nanoid: () => import_provider_utils6.generateId,
98
+ nanoid: () => nanoid,
93
99
  parseComplexResponse: () => import_ui_utils5.parseComplexResponse,
94
100
  parseStreamPart: () => import_ui_utils5.parseStreamPart,
95
101
  readDataStream: () => import_ui_utils5.readDataStream,
@@ -303,6 +309,29 @@ function convertDataContentToUint8Array(content) {
303
309
  throw new import_provider2.InvalidDataContentError({ content });
304
310
  }
305
311
 
312
+ // core/prompt/invalid-message-role-error.ts
313
+ var InvalidMessageRoleError = class extends Error {
314
+ constructor({
315
+ role,
316
+ message = `Invalid message role: '${role}'. Must be one of: "system", "user", "assistant", "tool".`
317
+ }) {
318
+ super(message);
319
+ this.name = "AI_InvalidMessageRoleError";
320
+ this.role = role;
321
+ }
322
+ static isInvalidMessageRoleError(error) {
323
+ return error instanceof Error && error.name === "AI_InvalidMessageRoleError" && typeof error.role === "string";
324
+ }
325
+ toJSON() {
326
+ return {
327
+ name: this.name,
328
+ message: this.message,
329
+ stack: this.stack,
330
+ role: this.role
331
+ };
332
+ }
333
+ };
334
+
306
335
  // core/prompt/convert-to-language-model-prompt.ts
307
336
  function convertToLanguageModelPrompt(prompt) {
308
337
  const languageModelMessages = [];
@@ -332,7 +361,8 @@ function convertToLanguageModelPrompt(prompt) {
332
361
  return languageModelMessages;
333
362
  }
334
363
  function convertToLanguageModelMessage(message) {
335
- switch (message.role) {
364
+ const role = message.role;
365
+ switch (role) {
336
366
  case "system": {
337
367
  return { role: "system", content: message.content };
338
368
  }
@@ -391,8 +421,8 @@ function convertToLanguageModelMessage(message) {
391
421
  return message;
392
422
  }
393
423
  default: {
394
- const _exhaustiveCheck = message;
395
- throw new Error(`Unsupported message role: ${_exhaustiveCheck}`);
424
+ const _exhaustiveCheck = role;
425
+ throw new InvalidMessageRoleError({ role: _exhaustiveCheck });
396
426
  }
397
427
  }
398
428
  }
@@ -2059,6 +2089,130 @@ function convertToCoreMessages(messages) {
2059
2089
  return coreMessages;
2060
2090
  }
2061
2091
 
2092
+ // core/registry/invalid-model-id-error.ts
2093
+ var InvalidModelIdError = class extends Error {
2094
+ constructor({
2095
+ id,
2096
+ message = `Invalid model id: ${id}`
2097
+ }) {
2098
+ super(message);
2099
+ this.name = "AI_InvalidModelIdError";
2100
+ this.id = id;
2101
+ }
2102
+ static isInvalidModelIdError(error) {
2103
+ return error instanceof Error && error.name === "AI_InvalidModelIdError" && typeof error.id === "string";
2104
+ }
2105
+ toJSON() {
2106
+ return {
2107
+ name: this.name,
2108
+ message: this.message,
2109
+ stack: this.stack,
2110
+ id: this.id
2111
+ };
2112
+ }
2113
+ };
2114
+
2115
+ // core/registry/no-such-model-error.ts
2116
+ var NoSuchModelError = class extends Error {
2117
+ constructor({
2118
+ modelId,
2119
+ message = `No such model: ${modelId}`
2120
+ }) {
2121
+ super(message);
2122
+ this.name = "AI_NoSuchModelError";
2123
+ this.modelId = modelId;
2124
+ }
2125
+ static isNoSuchModelError(error) {
2126
+ return error instanceof Error && error.name === "AI_NoSuchModelError" && typeof error.modelId === "string";
2127
+ }
2128
+ toJSON() {
2129
+ return {
2130
+ name: this.name,
2131
+ message: this.message,
2132
+ stack: this.stack,
2133
+ modelId: this.modelId
2134
+ };
2135
+ }
2136
+ };
2137
+
2138
+ // core/registry/no-such-provider-error.ts
2139
+ var NoSuchProviderError = class extends Error {
2140
+ constructor({
2141
+ providerId,
2142
+ message = `No such provider: ${providerId}`
2143
+ }) {
2144
+ super(message);
2145
+ this.name = "AI_NoSuchProviderError";
2146
+ this.providerId = providerId;
2147
+ }
2148
+ static isNoSuchProviderError(error) {
2149
+ return error instanceof Error && error.name === "AI_NoSuchProviderError" && typeof error.providerId === "string";
2150
+ }
2151
+ toJSON() {
2152
+ return {
2153
+ name: this.name,
2154
+ message: this.message,
2155
+ stack: this.stack,
2156
+ providerId: this.providerId
2157
+ };
2158
+ }
2159
+ };
2160
+
2161
+ // core/registry/model-registry.ts
2162
+ function experimental_createModelRegistry(providers) {
2163
+ const registry = new DefaultModelRegistry();
2164
+ for (const [id, provider] of Object.entries(providers)) {
2165
+ registry.registerLanguageModelProvider({ id, provider });
2166
+ }
2167
+ return registry;
2168
+ }
2169
+ var DefaultModelRegistry = class {
2170
+ constructor() {
2171
+ // Mapping of provider id to provider
2172
+ this.providers = {};
2173
+ }
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
+ }) {
2184
+ this.providers[id] = provider;
2185
+ }
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) {
2200
+ if (!id.includes(":")) {
2201
+ throw new InvalidModelIdError({ id });
2202
+ }
2203
+ const [providerId, modelId] = id.split(":");
2204
+ const provider = this.providers[providerId];
2205
+ if (!provider) {
2206
+ throw new NoSuchProviderError({ providerId });
2207
+ }
2208
+ const model = provider(modelId);
2209
+ if (!model) {
2210
+ throw new NoSuchModelError({ modelId: id });
2211
+ }
2212
+ return model;
2213
+ }
2214
+ };
2215
+
2062
2216
  // core/tool/tool.ts
2063
2217
  function tool(tool2) {
2064
2218
  return tool2;
@@ -2067,6 +2221,25 @@ function tool(tool2) {
2067
2221
  // core/types/errors.ts
2068
2222
  var import_provider8 = require("@ai-sdk/provider");
2069
2223
 
2224
+ // core/util/cosine-similarity.ts
2225
+ function cosineSimilarity(vector1, vector2) {
2226
+ if (vector1.length !== vector2.length) {
2227
+ throw new Error(
2228
+ `Vectors must have the same length (vector1: ${vector1.length} elements, vector2: ${vector2.length} elements)`
2229
+ );
2230
+ }
2231
+ return dotProduct(vector1, vector2) / (magnitude(vector1) * magnitude(vector2));
2232
+ }
2233
+ function dotProduct(vector1, vector2) {
2234
+ return vector1.reduce(
2235
+ (accumulator, value, index) => accumulator + value * vector2[index],
2236
+ 0
2237
+ );
2238
+ }
2239
+ function magnitude(vector) {
2240
+ return Math.sqrt(dotProduct(vector, vector));
2241
+ }
2242
+
2070
2243
  // streams/ai-stream.ts
2071
2244
  var import_eventsource_parser = require("eventsource-parser");
2072
2245
  function createEventStreamTransformer(customParser) {
@@ -3156,6 +3329,10 @@ var StreamingTextResponse = class extends Response {
3156
3329
  });
3157
3330
  }
3158
3331
  };
3332
+
3333
+ // streams/index.ts
3334
+ var generateId2 = import_provider_utils6.generateId;
3335
+ var nanoid = import_provider_utils6.generateId;
3159
3336
  // Annotate the CommonJS export names for ESM import in node:
3160
3337
  0 && (module.exports = {
3161
3338
  AIStream,
@@ -3178,6 +3355,8 @@ var StreamingTextResponse = class extends Response {
3178
3355
  InkeepStream,
3179
3356
  InvalidArgumentError,
3180
3357
  InvalidDataContentError,
3358
+ InvalidMessageRoleError,
3359
+ InvalidModelIdError,
3181
3360
  InvalidPromptError,
3182
3361
  InvalidResponseDataError,
3183
3362
  InvalidToolArgumentsError,
@@ -3187,6 +3366,8 @@ var StreamingTextResponse = class extends Response {
3187
3366
  LoadAPIKeyError,
3188
3367
  MistralStream,
3189
3368
  NoObjectGeneratedError,
3369
+ NoSuchModelError,
3370
+ NoSuchProviderError,
3190
3371
  NoSuchToolError,
3191
3372
  OpenAIStream,
3192
3373
  ReplicateStream,
@@ -3202,6 +3383,7 @@ var StreamingTextResponse = class extends Response {
3202
3383
  convertDataContentToBase64String,
3203
3384
  convertDataContentToUint8Array,
3204
3385
  convertToCoreMessages,
3386
+ cosineSimilarity,
3205
3387
  createCallbacksTransformer,
3206
3388
  createEventStreamTransformer,
3207
3389
  createStreamDataTransformer,
@@ -3209,6 +3391,7 @@ var StreamingTextResponse = class extends Response {
3209
3391
  embedMany,
3210
3392
  experimental_AssistantResponse,
3211
3393
  experimental_StreamData,
3394
+ experimental_createModelRegistry,
3212
3395
  experimental_generateObject,
3213
3396
  experimental_generateText,
3214
3397
  experimental_streamObject,