ai 3.1.33 → 3.1.35

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
@@ -834,6 +834,21 @@ declare function convertToCoreMessages(messages: Array<{
834
834
  toolInvocations?: Array<ToolResult<string, unknown, unknown>>;
835
835
  }>): CoreMessage[];
836
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
+
837
852
  type ToToolCall<TOOLS extends Record<string, CoreTool>> = ValueOf<{
838
853
  [NAME in keyof TOOLS]: {
839
854
  type: 'tool-call';
@@ -1286,6 +1301,18 @@ declare class InvalidModelIdError extends Error {
1286
1301
  };
1287
1302
  }
1288
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
+
1289
1316
  declare interface AzureChatCompletions {
1290
1317
  id: string;
1291
1318
  created: Date;
@@ -2014,4 +2041,4 @@ declare const generateId: (size?: number | undefined) => string;
2014
2041
  */
2015
2042
  declare const nanoid: (size?: number | undefined) => string;
2016
2043
 
2017
- 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, 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, 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 };
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
@@ -834,6 +834,21 @@ declare function convertToCoreMessages(messages: Array<{
834
834
  toolInvocations?: Array<ToolResult<string, unknown, unknown>>;
835
835
  }>): CoreMessage[];
836
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
+
837
852
  type ToToolCall<TOOLS extends Record<string, CoreTool>> = ValueOf<{
838
853
  [NAME in keyof TOOLS]: {
839
854
  type: 'tool-call';
@@ -1286,6 +1301,18 @@ declare class InvalidModelIdError extends Error {
1286
1301
  };
1287
1302
  }
1288
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
+
1289
1316
  declare interface AzureChatCompletions {
1290
1317
  id: string;
1291
1318
  created: Date;
@@ -2014,4 +2041,4 @@ declare const generateId: (size?: number | undefined) => string;
2014
2041
  */
2015
2042
  declare const nanoid: (size?: number | undefined) => string;
2016
2043
 
2017
- 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, 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, 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 };
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,7 @@ __export(streams_exports, {
50
50
  InkeepStream: () => InkeepStream,
51
51
  InvalidArgumentError: () => import_provider8.InvalidArgumentError,
52
52
  InvalidDataContentError: () => import_provider8.InvalidDataContentError,
53
+ InvalidMessageRoleError: () => InvalidMessageRoleError,
53
54
  InvalidModelIdError: () => InvalidModelIdError,
54
55
  InvalidPromptError: () => import_provider8.InvalidPromptError,
55
56
  InvalidResponseDataError: () => import_provider8.InvalidResponseDataError,
@@ -77,6 +78,7 @@ __export(streams_exports, {
77
78
  convertDataContentToBase64String: () => convertDataContentToBase64String,
78
79
  convertDataContentToUint8Array: () => convertDataContentToUint8Array,
79
80
  convertToCoreMessages: () => convertToCoreMessages,
81
+ cosineSimilarity: () => cosineSimilarity,
80
82
  createCallbacksTransformer: () => createCallbacksTransformer,
81
83
  createEventStreamTransformer: () => createEventStreamTransformer,
82
84
  createStreamDataTransformer: () => createStreamDataTransformer,
@@ -106,7 +108,7 @@ __export(streams_exports, {
106
108
  });
107
109
  module.exports = __toCommonJS(streams_exports);
108
110
  var import_ui_utils5 = require("@ai-sdk/ui-utils");
109
- var import_provider_utils6 = require("@ai-sdk/provider-utils");
111
+ var import_provider_utils7 = require("@ai-sdk/provider-utils");
110
112
 
111
113
  // core/util/retry-with-exponential-backoff.ts
112
114
  var import_provider = require("@ai-sdk/provider");
@@ -247,7 +249,7 @@ var EmbedManyResult = class {
247
249
 
248
250
  // core/generate-object/generate-object.ts
249
251
  var import_provider5 = require("@ai-sdk/provider");
250
- var import_provider_utils3 = require("@ai-sdk/provider-utils");
252
+ var import_provider_utils4 = require("@ai-sdk/provider-utils");
251
253
 
252
254
  // core/generate-text/token-usage.ts
253
255
  function calculateTokenUsage(usage) {
@@ -307,7 +309,31 @@ function convertDataContentToUint8Array(content) {
307
309
  throw new import_provider2.InvalidDataContentError({ content });
308
310
  }
309
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
+
310
335
  // core/prompt/convert-to-language-model-prompt.ts
336
+ var import_provider_utils3 = require("@ai-sdk/provider-utils");
311
337
  function convertToLanguageModelPrompt(prompt) {
312
338
  const languageModelMessages = [];
313
339
  if (prompt.system != null) {
@@ -336,7 +362,8 @@ function convertToLanguageModelPrompt(prompt) {
336
362
  return languageModelMessages;
337
363
  }
338
364
  function convertToLanguageModelMessage(message) {
339
- switch (message.role) {
365
+ const role = message.role;
366
+ switch (role) {
340
367
  case "system": {
341
368
  return { role: "system", content: message.content };
342
369
  }
@@ -364,6 +391,47 @@ function convertToLanguageModelMessage(message) {
364
391
  mimeType: part.mimeType
365
392
  };
366
393
  }
394
+ if (typeof part.image === "string") {
395
+ try {
396
+ const url = new URL(part.image);
397
+ switch (url.protocol) {
398
+ case "http:":
399
+ case "https:": {
400
+ return {
401
+ type: "image",
402
+ image: url,
403
+ mimeType: part.mimeType
404
+ };
405
+ }
406
+ case "data:": {
407
+ try {
408
+ const [header, base64Content] = part.image.split(",");
409
+ const mimeType = header.split(";")[0].split(":")[1];
410
+ if (mimeType == null || base64Content == null) {
411
+ throw new Error("Invalid data URL format");
412
+ }
413
+ return {
414
+ type: "image",
415
+ image: convertDataContentToUint8Array(base64Content),
416
+ mimeType
417
+ };
418
+ } catch (error) {
419
+ throw new Error(
420
+ `Error processing data URL: ${(0, import_provider_utils3.getErrorMessage)(
421
+ message
422
+ )}`
423
+ );
424
+ }
425
+ }
426
+ default: {
427
+ throw new Error(
428
+ `Unsupported URL protocol: ${url.protocol}`
429
+ );
430
+ }
431
+ }
432
+ } catch (_ignored) {
433
+ }
434
+ }
367
435
  const imageUint8 = convertDataContentToUint8Array(part.image);
368
436
  return {
369
437
  type: "image",
@@ -395,8 +463,8 @@ function convertToLanguageModelMessage(message) {
395
463
  return message;
396
464
  }
397
465
  default: {
398
- const _exhaustiveCheck = message;
399
- throw new Error(`Unsupported message role: ${_exhaustiveCheck}`);
466
+ const _exhaustiveCheck = role;
467
+ throw new InvalidMessageRoleError({ role: _exhaustiveCheck });
400
468
  }
401
469
  }
402
470
  }
@@ -674,7 +742,7 @@ async function generateObject({
674
742
  throw new Error(`Unsupported mode: ${_exhaustiveCheck}`);
675
743
  }
676
744
  }
677
- const parseResult = (0, import_provider_utils3.safeParseJSON)({ text: result, schema });
745
+ const parseResult = (0, import_provider_utils4.safeParseJSON)({ text: result, schema });
678
746
  if (!parseResult.success) {
679
747
  throw parseResult.error;
680
748
  }
@@ -1090,7 +1158,7 @@ function parsePartialJson(jsonText) {
1090
1158
  }
1091
1159
 
1092
1160
  // core/generate-object/stream-object.ts
1093
- var import_provider_utils4 = require("@ai-sdk/provider-utils");
1161
+ var import_provider_utils5 = require("@ai-sdk/provider-utils");
1094
1162
  async function streamObject({
1095
1163
  model,
1096
1164
  schema,
@@ -1264,7 +1332,7 @@ var StreamObjectResult = class {
1264
1332
  usage = calculateTokenUsage(chunk.usage);
1265
1333
  controller.enqueue({ ...chunk, usage });
1266
1334
  resolveUsage(usage);
1267
- const validationResult = (0, import_provider_utils4.safeValidateTypes)({
1335
+ const validationResult = (0, import_provider_utils5.safeValidateTypes)({
1268
1336
  value: latestObject,
1269
1337
  schema
1270
1338
  });
@@ -1363,7 +1431,7 @@ function prepareToolsAndToolChoice({
1363
1431
 
1364
1432
  // core/generate-text/tool-call.ts
1365
1433
  var import_provider6 = require("@ai-sdk/provider");
1366
- var import_provider_utils5 = require("@ai-sdk/provider-utils");
1434
+ var import_provider_utils6 = require("@ai-sdk/provider-utils");
1367
1435
  function parseToolCall({
1368
1436
  toolCall,
1369
1437
  tools
@@ -1379,7 +1447,7 @@ function parseToolCall({
1379
1447
  availableTools: Object.keys(tools)
1380
1448
  });
1381
1449
  }
1382
- const parseResult = (0, import_provider_utils5.safeParseJSON)({
1450
+ const parseResult = (0, import_provider_utils6.safeParseJSON)({
1383
1451
  text: toolCall.args,
1384
1452
  schema: tool2.parameters
1385
1453
  });
@@ -2195,6 +2263,25 @@ function tool(tool2) {
2195
2263
  // core/types/errors.ts
2196
2264
  var import_provider8 = require("@ai-sdk/provider");
2197
2265
 
2266
+ // core/util/cosine-similarity.ts
2267
+ function cosineSimilarity(vector1, vector2) {
2268
+ if (vector1.length !== vector2.length) {
2269
+ throw new Error(
2270
+ `Vectors must have the same length (vector1: ${vector1.length} elements, vector2: ${vector2.length} elements)`
2271
+ );
2272
+ }
2273
+ return dotProduct(vector1, vector2) / (magnitude(vector1) * magnitude(vector2));
2274
+ }
2275
+ function dotProduct(vector1, vector2) {
2276
+ return vector1.reduce(
2277
+ (accumulator, value, index) => accumulator + value * vector2[index],
2278
+ 0
2279
+ );
2280
+ }
2281
+ function magnitude(vector) {
2282
+ return Math.sqrt(dotProduct(vector, vector));
2283
+ }
2284
+
2198
2285
  // streams/ai-stream.ts
2199
2286
  var import_eventsource_parser = require("eventsource-parser");
2200
2287
  function createEventStreamTransformer(customParser) {
@@ -3286,8 +3373,8 @@ var StreamingTextResponse = class extends Response {
3286
3373
  };
3287
3374
 
3288
3375
  // streams/index.ts
3289
- var generateId2 = import_provider_utils6.generateId;
3290
- var nanoid = import_provider_utils6.generateId;
3376
+ var generateId2 = import_provider_utils7.generateId;
3377
+ var nanoid = import_provider_utils7.generateId;
3291
3378
  // Annotate the CommonJS export names for ESM import in node:
3292
3379
  0 && (module.exports = {
3293
3380
  AIStream,
@@ -3310,6 +3397,7 @@ var nanoid = import_provider_utils6.generateId;
3310
3397
  InkeepStream,
3311
3398
  InvalidArgumentError,
3312
3399
  InvalidDataContentError,
3400
+ InvalidMessageRoleError,
3313
3401
  InvalidModelIdError,
3314
3402
  InvalidPromptError,
3315
3403
  InvalidResponseDataError,
@@ -3337,6 +3425,7 @@ var nanoid = import_provider_utils6.generateId;
3337
3425
  convertDataContentToBase64String,
3338
3426
  convertDataContentToUint8Array,
3339
3427
  convertToCoreMessages,
3428
+ cosineSimilarity,
3340
3429
  createCallbacksTransformer,
3341
3430
  createEventStreamTransformer,
3342
3431
  createStreamDataTransformer,