ai 5.0.26 → 5.0.28

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/CHANGELOG.md CHANGED
@@ -1,5 +1,18 @@
1
1
  # ai
2
2
 
3
+ ## 5.0.28
4
+
5
+ ### Patch Changes
6
+
7
+ - 4b81e7d: fix(ai): remove vitest dependency from test exports
8
+ - d68a4f2: feat(ai): log warnings
9
+
10
+ ## 5.0.27
11
+
12
+ ### Patch Changes
13
+
14
+ - ca40fac: feat(ai): support custom download functions (experimental)
15
+
3
16
  ## 5.0.26
4
17
 
5
18
  ### Patch Changes
package/dist/index.d.mts CHANGED
@@ -372,6 +372,31 @@ type EmbeddingModelUsage = {
372
372
  tokens: number;
373
373
  };
374
374
 
375
+ /**
376
+ * Experimental. Can change in patch versions without warning.
377
+ *
378
+ * Download function. Called with the array of URLs and a boolean indicating
379
+ * whether the URL is supported by the model.
380
+ *
381
+ * The download function can decide for each URL:
382
+ * - to return null (which means that the URL should be passed to the model)
383
+ * - to download the asset and return the data (incl. retries, authentication, etc.)
384
+ *
385
+ * Should throw DownloadError if the download fails.
386
+ *
387
+ * Should return an array of objects sorted by the order of the requested downloads.
388
+ * For each object, the data should be a Uint8Array if the URL was downloaded.
389
+ * For each object, the mediaType should be the media type of the downloaded asset.
390
+ * For each object, the data should be null if the URL should be passed through as is.
391
+ */
392
+ type DownloadFunction = (options: Array<{
393
+ url: URL;
394
+ isUrlSupportedByModel: boolean;
395
+ }>) => PromiseLike<Array<{
396
+ data: Uint8Array;
397
+ mediaType: string | undefined;
398
+ } | null>>;
399
+
375
400
  /**
376
401
  * A generated file.
377
402
  */
@@ -981,7 +1006,7 @@ If set and supported by the model, calls will generate deterministic results.
981
1006
  @returns
982
1007
  A result object that contains the generated text, the results of the tool calls, and additional information.
983
1008
  */
984
- declare function generateText<TOOLS extends ToolSet, OUTPUT = never, OUTPUT_PARTIAL = never>({ model: modelArg, tools, toolChoice, system, prompt, messages, maxRetries: maxRetriesArg, abortSignal, headers, stopWhen, experimental_output: output, experimental_telemetry: telemetry, providerOptions, experimental_activeTools, activeTools, experimental_prepareStep, prepareStep, experimental_repairToolCall: repairToolCall, experimental_context, _internal: { generateId, currentDate, }, onStepFinish, ...settings }: CallSettings & Prompt & {
1009
+ declare function generateText<TOOLS extends ToolSet, OUTPUT = never, OUTPUT_PARTIAL = never>({ model: modelArg, tools, toolChoice, system, prompt, messages, maxRetries: maxRetriesArg, abortSignal, headers, stopWhen, experimental_output: output, experimental_telemetry: telemetry, providerOptions, experimental_activeTools, activeTools, experimental_prepareStep, prepareStep, experimental_repairToolCall: repairToolCall, experimental_download: download, experimental_context, _internal: { generateId, currentDate, }, onStepFinish, ...settings }: CallSettings & Prompt & {
985
1010
  /**
986
1011
  The language model to use.
987
1012
  */
@@ -1025,6 +1050,12 @@ Optional specification for parsing structured outputs from the LLM response.
1025
1050
  */
1026
1051
  experimental_output?: Output<OUTPUT, OUTPUT_PARTIAL>;
1027
1052
  /**
1053
+ Custom download function to use for URLs.
1054
+
1055
+ By default, files are downloaded if the model does not support the URL for the given media type.
1056
+ */
1057
+ experimental_download?: DownloadFunction | undefined;
1058
+ /**
1028
1059
  * @deprecated Use `prepareStep` instead.
1029
1060
  */
1030
1061
  experimental_prepareStep?: PrepareStepFunction<NoInfer<TOOLS>>;
@@ -1194,7 +1225,7 @@ If set and supported by the model, calls will generate deterministic results.
1194
1225
  @return
1195
1226
  A result object for accessing different stream types and additional information.
1196
1227
  */
1197
- declare function streamText<TOOLS extends ToolSet, OUTPUT = never, PARTIAL_OUTPUT = never>({ model, tools, toolChoice, system, prompt, messages, maxRetries, abortSignal, headers, stopWhen, experimental_output: output, experimental_telemetry: telemetry, prepareStep, providerOptions, experimental_activeTools, activeTools, experimental_repairToolCall: repairToolCall, experimental_transform: transform, includeRawChunks, onChunk, onError, onFinish, onAbort, onStepFinish, experimental_context, _internal: { now, generateId, currentDate, }, ...settings }: CallSettings & Prompt & {
1228
+ declare function streamText<TOOLS extends ToolSet, OUTPUT = never, PARTIAL_OUTPUT = never>({ model, tools, toolChoice, system, prompt, messages, maxRetries, abortSignal, headers, stopWhen, experimental_output: output, experimental_telemetry: telemetry, prepareStep, providerOptions, experimental_activeTools, activeTools, experimental_repairToolCall: repairToolCall, experimental_transform: transform, experimental_download: download, includeRawChunks, onChunk, onError, onFinish, onAbort, onStepFinish, experimental_context, _internal: { now, generateId, currentDate, }, ...settings }: CallSettings & Prompt & {
1198
1229
  /**
1199
1230
  The language model to use.
1200
1231
  */
@@ -1260,6 +1291,12 @@ The stream transformations must maintain the stream structure for streamText to
1260
1291
  */
1261
1292
  experimental_transform?: StreamTextTransform<TOOLS> | Array<StreamTextTransform<TOOLS>>;
1262
1293
  /**
1294
+ Custom download function to use for URLs.
1295
+
1296
+ By default, files are downloaded if the model does not support the URL for the given media type.
1297
+ */
1298
+ experimental_download?: DownloadFunction | undefined;
1299
+ /**
1263
1300
  Whether to include raw chunks from the provider in the stream.
1264
1301
  When enabled, you will receive raw chunks with type 'raw' that contain the unprocessed data from the provider.
1265
1302
  This allows access to cutting-edge provider features not yet wrapped by the AI SDK.
@@ -2889,6 +2926,12 @@ Optional telemetry configuration (experimental).
2889
2926
  */
2890
2927
  experimental_telemetry?: TelemetrySettings;
2891
2928
  /**
2929
+ Custom download function to use for URLs.
2930
+
2931
+ By default, files are downloaded if the model does not support the URL for the given media type.
2932
+ */
2933
+ experimental_download?: DownloadFunction | undefined;
2934
+ /**
2892
2935
  Additional provider-specific options. They are passed through
2893
2936
  to the provider from the AI SDK and enable provider-specific
2894
2937
  functionality that can be fully encapsulated in the provider.
@@ -3227,6 +3270,12 @@ Optional telemetry configuration (experimental).
3227
3270
  */
3228
3271
  experimental_telemetry?: TelemetrySettings;
3229
3272
  /**
3273
+ Custom download function to use for URLs.
3274
+
3275
+ By default, files are downloaded if the model does not support the URL for the given media type.
3276
+ */
3277
+ experimental_download?: DownloadFunction | undefined;
3278
+ /**
3230
3279
  Additional provider-specific options. They are passed through
3231
3280
  to the provider from the AI SDK and enable provider-specific
3232
3281
  functionality that can be fully encapsulated in the provider.
@@ -3362,6 +3411,9 @@ declare function generateSpeech({ model, text, voice, outputFormat, instructions
3362
3411
  headers?: Record<string, string>;
3363
3412
  }): Promise<SpeechResult>;
3364
3413
 
3414
+ type Warning = LanguageModelV2CallWarning | ImageModelV2CallWarning | SpeechModelV2CallWarning | TranscriptionModelV2CallWarning;
3415
+ type LogWarningsFunction = (warnings: Warning[]) => void;
3416
+
3365
3417
  /**
3366
3418
  * Applies default settings for a language model.
3367
3419
  */
@@ -4372,7 +4424,23 @@ declare function validateUIMessages<UI_MESSAGE extends UIMessage>({ messages, me
4372
4424
  }): Promise<Array<UI_MESSAGE>>;
4373
4425
 
4374
4426
  declare global {
4427
+ /**
4428
+ * The default provider to use for the AI SDK.
4429
+ * String model ids are resolved to the default provider and model id.
4430
+ *
4431
+ * If not set, the default provider is the Vercel AI gateway provider.
4432
+ *
4433
+ * @see https://ai-sdk.dev/docs/ai-sdk-core/provider-management#global-provider-configuration
4434
+ */
4375
4435
  var AI_SDK_DEFAULT_PROVIDER: ProviderV2 | undefined;
4436
+ /**
4437
+ * The warning logger to use for the AI SDK.
4438
+ *
4439
+ * If not set, the default logger is the console.warn function.
4440
+ *
4441
+ * If set to false, no warnings are logged.
4442
+ */
4443
+ var AI_SDK_LOG_WARNINGS: LogWarningsFunction | undefined | false;
4376
4444
  }
4377
4445
 
4378
- export { AbstractChat, AsyncIterableStream, CallSettings, CallWarning, ChatInit, ChatOnDataCallback, ChatOnErrorCallback, ChatOnFinishCallback, ChatOnToolCallCallback, ChatRequestOptions, ChatState, ChatStatus, ChatTransport, ChunkDetector, CompletionRequestOptions, CoreAssistantMessage, CoreMessage, CoreSystemMessage, CoreToolMessage, CoreUserMessage, CreateUIMessage, DataUIPart, DeepPartial, DefaultChatTransport, DownloadError, DynamicToolCall, DynamicToolError, DynamicToolResult, DynamicToolUIPart, EmbedManyResult, EmbedResult, Embedding, EmbeddingModel, EmbeddingModelUsage, ErrorHandler, Agent as Experimental_Agent, AgentSettings as Experimental_AgentSettings, GenerateImageResult as Experimental_GenerateImageResult, GeneratedFile as Experimental_GeneratedImage, SpeechResult as Experimental_SpeechResult, TranscriptionResult as Experimental_TranscriptionResult, FileUIPart, FinishReason, GenerateObjectResult, GenerateTextOnStepFinishCallback, GenerateTextResult, GeneratedAudioFile, GeneratedFile, HttpChatTransport, HttpChatTransportInitOptions, ImageModel, ImageGenerationWarning as ImageModelCallWarning, ImageModelProviderMetadata, ImageModelResponseMetadata, InferUIDataParts, InferUIMessageChunk, InferUITool, InferUITools, InvalidArgumentError, InvalidDataContentError, InvalidMessageRoleError, InvalidStreamPartError, InvalidToolInputError, JSONRPCError, JSONRPCMessage, JSONRPCNotification, JSONRPCRequest, JSONRPCResponse, JSONValue, JsonToSseTransformStream, LanguageModel, LanguageModelMiddleware, LanguageModelRequestMetadata, LanguageModelResponseMetadata, LanguageModelUsage, MCPClientError, MCPTransport, MessageConversionError, NoImageGeneratedError, NoObjectGeneratedError, NoOutputGeneratedError, NoOutputSpecifiedError, NoSuchProviderError, NoSuchToolError, ObjectStreamPart, output as Output, PrepareReconnectToStreamRequest, PrepareSendMessagesRequest, PrepareStepFunction, PrepareStepResult, Prompt, Provider, ProviderMetadata, ProviderRegistryProvider, ReasoningUIPart, RepairTextFunction, RetryError, SerialJobExecutor, SourceDocumentUIPart, SourceUrlUIPart, SpeechModel, SpeechModelResponseMetadata, SpeechWarning, StaticToolCall, StaticToolError, StaticToolResult, StepResult, StepStartUIPart, StopCondition, StreamObjectOnFinishCallback, StreamObjectResult, StreamTextOnChunkCallback, StreamTextOnErrorCallback, StreamTextOnFinishCallback, StreamTextOnStepFinishCallback, StreamTextResult, StreamTextTransform, TelemetrySettings, TextStreamChatTransport, TextStreamPart, TextUIPart, ToolCallRepairError, ToolCallRepairFunction, ToolChoice, ToolSet, ToolUIPart, TranscriptionModel, TranscriptionModelResponseMetadata, TranscriptionWarning, TypedToolCall, TypedToolError, TypedToolResult, UIDataPartSchemas, UIDataTypes, UIMessage, UIMessageChunk, UIMessagePart, UIMessageStreamOnFinishCallback, UIMessageStreamOptions, UIMessageStreamWriter, UITool, UITools, UI_MESSAGE_STREAM_HEADERS, UnsupportedModelVersionError, UseCompletionOptions, assistantModelMessageSchema, callCompletionApi, consumeStream, convertFileListToFileUIParts, convertToCoreMessages, convertToModelMessages, coreAssistantMessageSchema, coreMessageSchema, coreSystemMessageSchema, coreToolMessageSchema, coreUserMessageSchema, cosineSimilarity, createProviderRegistry, createTextStreamResponse, createUIMessageStream, createUIMessageStreamResponse, customProvider, defaultSettingsMiddleware, embed, embedMany, MCPClient as experimental_MCPClient, MCPClientConfig as experimental_MCPClientConfig, createMCPClient as experimental_createMCPClient, experimental_createProviderRegistry, experimental_customProvider, generateImage as experimental_generateImage, generateSpeech as experimental_generateSpeech, transcribe as experimental_transcribe, extractReasoningMiddleware, generateObject, generateText, getTextFromDataUrl, getToolName, getToolOrDynamicToolName, hasToolCall, isDeepEqualData, isToolOrDynamicToolUIPart, isToolUIPart, lastAssistantMessageIsCompleteWithToolCalls, modelMessageSchema, parsePartialJson, pipeTextStreamToResponse, pipeUIMessageStreamToResponse, readUIMessageStream, simulateReadableStream, simulateStreamingMiddleware, smoothStream, stepCountIs, streamObject, streamText, systemModelMessageSchema, toolModelMessageSchema, userModelMessageSchema, validateUIMessages, wrapLanguageModel, wrapProvider };
4446
+ export { AbstractChat, AsyncIterableStream, CallSettings, CallWarning, ChatInit, ChatOnDataCallback, ChatOnErrorCallback, ChatOnFinishCallback, ChatOnToolCallCallback, ChatRequestOptions, ChatState, ChatStatus, ChatTransport, ChunkDetector, CompletionRequestOptions, CoreAssistantMessage, CoreMessage, CoreSystemMessage, CoreToolMessage, CoreUserMessage, CreateUIMessage, DataUIPart, DeepPartial, DefaultChatTransport, DownloadError, DynamicToolCall, DynamicToolError, DynamicToolResult, DynamicToolUIPart, EmbedManyResult, EmbedResult, Embedding, EmbeddingModel, EmbeddingModelUsage, ErrorHandler, Agent as Experimental_Agent, AgentSettings as Experimental_AgentSettings, DownloadFunction as Experimental_DownloadFunction, GenerateImageResult as Experimental_GenerateImageResult, GeneratedFile as Experimental_GeneratedImage, LogWarningsFunction as Experimental_LogWarningsFunction, SpeechResult as Experimental_SpeechResult, TranscriptionResult as Experimental_TranscriptionResult, Warning as Experimental_Warning, FileUIPart, FinishReason, GenerateObjectResult, GenerateTextOnStepFinishCallback, GenerateTextResult, GeneratedAudioFile, GeneratedFile, HttpChatTransport, HttpChatTransportInitOptions, ImageModel, ImageGenerationWarning as ImageModelCallWarning, ImageModelProviderMetadata, ImageModelResponseMetadata, InferUIDataParts, InferUIMessageChunk, InferUITool, InferUITools, InvalidArgumentError, InvalidDataContentError, InvalidMessageRoleError, InvalidStreamPartError, InvalidToolInputError, JSONRPCError, JSONRPCMessage, JSONRPCNotification, JSONRPCRequest, JSONRPCResponse, JSONValue, JsonToSseTransformStream, LanguageModel, LanguageModelMiddleware, LanguageModelRequestMetadata, LanguageModelResponseMetadata, LanguageModelUsage, MCPClientError, MCPTransport, MessageConversionError, NoImageGeneratedError, NoObjectGeneratedError, NoOutputGeneratedError, NoOutputSpecifiedError, NoSuchProviderError, NoSuchToolError, ObjectStreamPart, output as Output, PrepareReconnectToStreamRequest, PrepareSendMessagesRequest, PrepareStepFunction, PrepareStepResult, Prompt, Provider, ProviderMetadata, ProviderRegistryProvider, ReasoningUIPart, RepairTextFunction, RetryError, SerialJobExecutor, SourceDocumentUIPart, SourceUrlUIPart, SpeechModel, SpeechModelResponseMetadata, SpeechWarning, StaticToolCall, StaticToolError, StaticToolResult, StepResult, StepStartUIPart, StopCondition, StreamObjectOnFinishCallback, StreamObjectResult, StreamTextOnChunkCallback, StreamTextOnErrorCallback, StreamTextOnFinishCallback, StreamTextOnStepFinishCallback, StreamTextResult, StreamTextTransform, TelemetrySettings, TextStreamChatTransport, TextStreamPart, TextUIPart, ToolCallRepairError, ToolCallRepairFunction, ToolChoice, ToolSet, ToolUIPart, TranscriptionModel, TranscriptionModelResponseMetadata, TranscriptionWarning, TypedToolCall, TypedToolError, TypedToolResult, UIDataPartSchemas, UIDataTypes, UIMessage, UIMessageChunk, UIMessagePart, UIMessageStreamOnFinishCallback, UIMessageStreamOptions, UIMessageStreamWriter, UITool, UITools, UI_MESSAGE_STREAM_HEADERS, UnsupportedModelVersionError, UseCompletionOptions, assistantModelMessageSchema, callCompletionApi, consumeStream, convertFileListToFileUIParts, convertToCoreMessages, convertToModelMessages, coreAssistantMessageSchema, coreMessageSchema, coreSystemMessageSchema, coreToolMessageSchema, coreUserMessageSchema, cosineSimilarity, createProviderRegistry, createTextStreamResponse, createUIMessageStream, createUIMessageStreamResponse, customProvider, defaultSettingsMiddleware, embed, embedMany, MCPClient as experimental_MCPClient, MCPClientConfig as experimental_MCPClientConfig, createMCPClient as experimental_createMCPClient, experimental_createProviderRegistry, experimental_customProvider, generateImage as experimental_generateImage, generateSpeech as experimental_generateSpeech, transcribe as experimental_transcribe, extractReasoningMiddleware, generateObject, generateText, getTextFromDataUrl, getToolName, getToolOrDynamicToolName, hasToolCall, isDeepEqualData, isToolOrDynamicToolUIPart, isToolUIPart, lastAssistantMessageIsCompleteWithToolCalls, modelMessageSchema, parsePartialJson, pipeTextStreamToResponse, pipeUIMessageStreamToResponse, readUIMessageStream, simulateReadableStream, simulateStreamingMiddleware, smoothStream, stepCountIs, streamObject, streamText, systemModelMessageSchema, toolModelMessageSchema, userModelMessageSchema, validateUIMessages, wrapLanguageModel, wrapProvider };
package/dist/index.d.ts CHANGED
@@ -372,6 +372,31 @@ type EmbeddingModelUsage = {
372
372
  tokens: number;
373
373
  };
374
374
 
375
+ /**
376
+ * Experimental. Can change in patch versions without warning.
377
+ *
378
+ * Download function. Called with the array of URLs and a boolean indicating
379
+ * whether the URL is supported by the model.
380
+ *
381
+ * The download function can decide for each URL:
382
+ * - to return null (which means that the URL should be passed to the model)
383
+ * - to download the asset and return the data (incl. retries, authentication, etc.)
384
+ *
385
+ * Should throw DownloadError if the download fails.
386
+ *
387
+ * Should return an array of objects sorted by the order of the requested downloads.
388
+ * For each object, the data should be a Uint8Array if the URL was downloaded.
389
+ * For each object, the mediaType should be the media type of the downloaded asset.
390
+ * For each object, the data should be null if the URL should be passed through as is.
391
+ */
392
+ type DownloadFunction = (options: Array<{
393
+ url: URL;
394
+ isUrlSupportedByModel: boolean;
395
+ }>) => PromiseLike<Array<{
396
+ data: Uint8Array;
397
+ mediaType: string | undefined;
398
+ } | null>>;
399
+
375
400
  /**
376
401
  * A generated file.
377
402
  */
@@ -981,7 +1006,7 @@ If set and supported by the model, calls will generate deterministic results.
981
1006
  @returns
982
1007
  A result object that contains the generated text, the results of the tool calls, and additional information.
983
1008
  */
984
- declare function generateText<TOOLS extends ToolSet, OUTPUT = never, OUTPUT_PARTIAL = never>({ model: modelArg, tools, toolChoice, system, prompt, messages, maxRetries: maxRetriesArg, abortSignal, headers, stopWhen, experimental_output: output, experimental_telemetry: telemetry, providerOptions, experimental_activeTools, activeTools, experimental_prepareStep, prepareStep, experimental_repairToolCall: repairToolCall, experimental_context, _internal: { generateId, currentDate, }, onStepFinish, ...settings }: CallSettings & Prompt & {
1009
+ declare function generateText<TOOLS extends ToolSet, OUTPUT = never, OUTPUT_PARTIAL = never>({ model: modelArg, tools, toolChoice, system, prompt, messages, maxRetries: maxRetriesArg, abortSignal, headers, stopWhen, experimental_output: output, experimental_telemetry: telemetry, providerOptions, experimental_activeTools, activeTools, experimental_prepareStep, prepareStep, experimental_repairToolCall: repairToolCall, experimental_download: download, experimental_context, _internal: { generateId, currentDate, }, onStepFinish, ...settings }: CallSettings & Prompt & {
985
1010
  /**
986
1011
  The language model to use.
987
1012
  */
@@ -1025,6 +1050,12 @@ Optional specification for parsing structured outputs from the LLM response.
1025
1050
  */
1026
1051
  experimental_output?: Output<OUTPUT, OUTPUT_PARTIAL>;
1027
1052
  /**
1053
+ Custom download function to use for URLs.
1054
+
1055
+ By default, files are downloaded if the model does not support the URL for the given media type.
1056
+ */
1057
+ experimental_download?: DownloadFunction | undefined;
1058
+ /**
1028
1059
  * @deprecated Use `prepareStep` instead.
1029
1060
  */
1030
1061
  experimental_prepareStep?: PrepareStepFunction<NoInfer<TOOLS>>;
@@ -1194,7 +1225,7 @@ If set and supported by the model, calls will generate deterministic results.
1194
1225
  @return
1195
1226
  A result object for accessing different stream types and additional information.
1196
1227
  */
1197
- declare function streamText<TOOLS extends ToolSet, OUTPUT = never, PARTIAL_OUTPUT = never>({ model, tools, toolChoice, system, prompt, messages, maxRetries, abortSignal, headers, stopWhen, experimental_output: output, experimental_telemetry: telemetry, prepareStep, providerOptions, experimental_activeTools, activeTools, experimental_repairToolCall: repairToolCall, experimental_transform: transform, includeRawChunks, onChunk, onError, onFinish, onAbort, onStepFinish, experimental_context, _internal: { now, generateId, currentDate, }, ...settings }: CallSettings & Prompt & {
1228
+ declare function streamText<TOOLS extends ToolSet, OUTPUT = never, PARTIAL_OUTPUT = never>({ model, tools, toolChoice, system, prompt, messages, maxRetries, abortSignal, headers, stopWhen, experimental_output: output, experimental_telemetry: telemetry, prepareStep, providerOptions, experimental_activeTools, activeTools, experimental_repairToolCall: repairToolCall, experimental_transform: transform, experimental_download: download, includeRawChunks, onChunk, onError, onFinish, onAbort, onStepFinish, experimental_context, _internal: { now, generateId, currentDate, }, ...settings }: CallSettings & Prompt & {
1198
1229
  /**
1199
1230
  The language model to use.
1200
1231
  */
@@ -1260,6 +1291,12 @@ The stream transformations must maintain the stream structure for streamText to
1260
1291
  */
1261
1292
  experimental_transform?: StreamTextTransform<TOOLS> | Array<StreamTextTransform<TOOLS>>;
1262
1293
  /**
1294
+ Custom download function to use for URLs.
1295
+
1296
+ By default, files are downloaded if the model does not support the URL for the given media type.
1297
+ */
1298
+ experimental_download?: DownloadFunction | undefined;
1299
+ /**
1263
1300
  Whether to include raw chunks from the provider in the stream.
1264
1301
  When enabled, you will receive raw chunks with type 'raw' that contain the unprocessed data from the provider.
1265
1302
  This allows access to cutting-edge provider features not yet wrapped by the AI SDK.
@@ -2889,6 +2926,12 @@ Optional telemetry configuration (experimental).
2889
2926
  */
2890
2927
  experimental_telemetry?: TelemetrySettings;
2891
2928
  /**
2929
+ Custom download function to use for URLs.
2930
+
2931
+ By default, files are downloaded if the model does not support the URL for the given media type.
2932
+ */
2933
+ experimental_download?: DownloadFunction | undefined;
2934
+ /**
2892
2935
  Additional provider-specific options. They are passed through
2893
2936
  to the provider from the AI SDK and enable provider-specific
2894
2937
  functionality that can be fully encapsulated in the provider.
@@ -3227,6 +3270,12 @@ Optional telemetry configuration (experimental).
3227
3270
  */
3228
3271
  experimental_telemetry?: TelemetrySettings;
3229
3272
  /**
3273
+ Custom download function to use for URLs.
3274
+
3275
+ By default, files are downloaded if the model does not support the URL for the given media type.
3276
+ */
3277
+ experimental_download?: DownloadFunction | undefined;
3278
+ /**
3230
3279
  Additional provider-specific options. They are passed through
3231
3280
  to the provider from the AI SDK and enable provider-specific
3232
3281
  functionality that can be fully encapsulated in the provider.
@@ -3362,6 +3411,9 @@ declare function generateSpeech({ model, text, voice, outputFormat, instructions
3362
3411
  headers?: Record<string, string>;
3363
3412
  }): Promise<SpeechResult>;
3364
3413
 
3414
+ type Warning = LanguageModelV2CallWarning | ImageModelV2CallWarning | SpeechModelV2CallWarning | TranscriptionModelV2CallWarning;
3415
+ type LogWarningsFunction = (warnings: Warning[]) => void;
3416
+
3365
3417
  /**
3366
3418
  * Applies default settings for a language model.
3367
3419
  */
@@ -4372,7 +4424,23 @@ declare function validateUIMessages<UI_MESSAGE extends UIMessage>({ messages, me
4372
4424
  }): Promise<Array<UI_MESSAGE>>;
4373
4425
 
4374
4426
  declare global {
4427
+ /**
4428
+ * The default provider to use for the AI SDK.
4429
+ * String model ids are resolved to the default provider and model id.
4430
+ *
4431
+ * If not set, the default provider is the Vercel AI gateway provider.
4432
+ *
4433
+ * @see https://ai-sdk.dev/docs/ai-sdk-core/provider-management#global-provider-configuration
4434
+ */
4375
4435
  var AI_SDK_DEFAULT_PROVIDER: ProviderV2 | undefined;
4436
+ /**
4437
+ * The warning logger to use for the AI SDK.
4438
+ *
4439
+ * If not set, the default logger is the console.warn function.
4440
+ *
4441
+ * If set to false, no warnings are logged.
4442
+ */
4443
+ var AI_SDK_LOG_WARNINGS: LogWarningsFunction | undefined | false;
4376
4444
  }
4377
4445
 
4378
- export { AbstractChat, AsyncIterableStream, CallSettings, CallWarning, ChatInit, ChatOnDataCallback, ChatOnErrorCallback, ChatOnFinishCallback, ChatOnToolCallCallback, ChatRequestOptions, ChatState, ChatStatus, ChatTransport, ChunkDetector, CompletionRequestOptions, CoreAssistantMessage, CoreMessage, CoreSystemMessage, CoreToolMessage, CoreUserMessage, CreateUIMessage, DataUIPart, DeepPartial, DefaultChatTransport, DownloadError, DynamicToolCall, DynamicToolError, DynamicToolResult, DynamicToolUIPart, EmbedManyResult, EmbedResult, Embedding, EmbeddingModel, EmbeddingModelUsage, ErrorHandler, Agent as Experimental_Agent, AgentSettings as Experimental_AgentSettings, GenerateImageResult as Experimental_GenerateImageResult, GeneratedFile as Experimental_GeneratedImage, SpeechResult as Experimental_SpeechResult, TranscriptionResult as Experimental_TranscriptionResult, FileUIPart, FinishReason, GenerateObjectResult, GenerateTextOnStepFinishCallback, GenerateTextResult, GeneratedAudioFile, GeneratedFile, HttpChatTransport, HttpChatTransportInitOptions, ImageModel, ImageGenerationWarning as ImageModelCallWarning, ImageModelProviderMetadata, ImageModelResponseMetadata, InferUIDataParts, InferUIMessageChunk, InferUITool, InferUITools, InvalidArgumentError, InvalidDataContentError, InvalidMessageRoleError, InvalidStreamPartError, InvalidToolInputError, JSONRPCError, JSONRPCMessage, JSONRPCNotification, JSONRPCRequest, JSONRPCResponse, JSONValue, JsonToSseTransformStream, LanguageModel, LanguageModelMiddleware, LanguageModelRequestMetadata, LanguageModelResponseMetadata, LanguageModelUsage, MCPClientError, MCPTransport, MessageConversionError, NoImageGeneratedError, NoObjectGeneratedError, NoOutputGeneratedError, NoOutputSpecifiedError, NoSuchProviderError, NoSuchToolError, ObjectStreamPart, output as Output, PrepareReconnectToStreamRequest, PrepareSendMessagesRequest, PrepareStepFunction, PrepareStepResult, Prompt, Provider, ProviderMetadata, ProviderRegistryProvider, ReasoningUIPart, RepairTextFunction, RetryError, SerialJobExecutor, SourceDocumentUIPart, SourceUrlUIPart, SpeechModel, SpeechModelResponseMetadata, SpeechWarning, StaticToolCall, StaticToolError, StaticToolResult, StepResult, StepStartUIPart, StopCondition, StreamObjectOnFinishCallback, StreamObjectResult, StreamTextOnChunkCallback, StreamTextOnErrorCallback, StreamTextOnFinishCallback, StreamTextOnStepFinishCallback, StreamTextResult, StreamTextTransform, TelemetrySettings, TextStreamChatTransport, TextStreamPart, TextUIPart, ToolCallRepairError, ToolCallRepairFunction, ToolChoice, ToolSet, ToolUIPart, TranscriptionModel, TranscriptionModelResponseMetadata, TranscriptionWarning, TypedToolCall, TypedToolError, TypedToolResult, UIDataPartSchemas, UIDataTypes, UIMessage, UIMessageChunk, UIMessagePart, UIMessageStreamOnFinishCallback, UIMessageStreamOptions, UIMessageStreamWriter, UITool, UITools, UI_MESSAGE_STREAM_HEADERS, UnsupportedModelVersionError, UseCompletionOptions, assistantModelMessageSchema, callCompletionApi, consumeStream, convertFileListToFileUIParts, convertToCoreMessages, convertToModelMessages, coreAssistantMessageSchema, coreMessageSchema, coreSystemMessageSchema, coreToolMessageSchema, coreUserMessageSchema, cosineSimilarity, createProviderRegistry, createTextStreamResponse, createUIMessageStream, createUIMessageStreamResponse, customProvider, defaultSettingsMiddleware, embed, embedMany, MCPClient as experimental_MCPClient, MCPClientConfig as experimental_MCPClientConfig, createMCPClient as experimental_createMCPClient, experimental_createProviderRegistry, experimental_customProvider, generateImage as experimental_generateImage, generateSpeech as experimental_generateSpeech, transcribe as experimental_transcribe, extractReasoningMiddleware, generateObject, generateText, getTextFromDataUrl, getToolName, getToolOrDynamicToolName, hasToolCall, isDeepEqualData, isToolOrDynamicToolUIPart, isToolUIPart, lastAssistantMessageIsCompleteWithToolCalls, modelMessageSchema, parsePartialJson, pipeTextStreamToResponse, pipeUIMessageStreamToResponse, readUIMessageStream, simulateReadableStream, simulateStreamingMiddleware, smoothStream, stepCountIs, streamObject, streamText, systemModelMessageSchema, toolModelMessageSchema, userModelMessageSchema, validateUIMessages, wrapLanguageModel, wrapProvider };
4446
+ export { AbstractChat, AsyncIterableStream, CallSettings, CallWarning, ChatInit, ChatOnDataCallback, ChatOnErrorCallback, ChatOnFinishCallback, ChatOnToolCallCallback, ChatRequestOptions, ChatState, ChatStatus, ChatTransport, ChunkDetector, CompletionRequestOptions, CoreAssistantMessage, CoreMessage, CoreSystemMessage, CoreToolMessage, CoreUserMessage, CreateUIMessage, DataUIPart, DeepPartial, DefaultChatTransport, DownloadError, DynamicToolCall, DynamicToolError, DynamicToolResult, DynamicToolUIPart, EmbedManyResult, EmbedResult, Embedding, EmbeddingModel, EmbeddingModelUsage, ErrorHandler, Agent as Experimental_Agent, AgentSettings as Experimental_AgentSettings, DownloadFunction as Experimental_DownloadFunction, GenerateImageResult as Experimental_GenerateImageResult, GeneratedFile as Experimental_GeneratedImage, LogWarningsFunction as Experimental_LogWarningsFunction, SpeechResult as Experimental_SpeechResult, TranscriptionResult as Experimental_TranscriptionResult, Warning as Experimental_Warning, FileUIPart, FinishReason, GenerateObjectResult, GenerateTextOnStepFinishCallback, GenerateTextResult, GeneratedAudioFile, GeneratedFile, HttpChatTransport, HttpChatTransportInitOptions, ImageModel, ImageGenerationWarning as ImageModelCallWarning, ImageModelProviderMetadata, ImageModelResponseMetadata, InferUIDataParts, InferUIMessageChunk, InferUITool, InferUITools, InvalidArgumentError, InvalidDataContentError, InvalidMessageRoleError, InvalidStreamPartError, InvalidToolInputError, JSONRPCError, JSONRPCMessage, JSONRPCNotification, JSONRPCRequest, JSONRPCResponse, JSONValue, JsonToSseTransformStream, LanguageModel, LanguageModelMiddleware, LanguageModelRequestMetadata, LanguageModelResponseMetadata, LanguageModelUsage, MCPClientError, MCPTransport, MessageConversionError, NoImageGeneratedError, NoObjectGeneratedError, NoOutputGeneratedError, NoOutputSpecifiedError, NoSuchProviderError, NoSuchToolError, ObjectStreamPart, output as Output, PrepareReconnectToStreamRequest, PrepareSendMessagesRequest, PrepareStepFunction, PrepareStepResult, Prompt, Provider, ProviderMetadata, ProviderRegistryProvider, ReasoningUIPart, RepairTextFunction, RetryError, SerialJobExecutor, SourceDocumentUIPart, SourceUrlUIPart, SpeechModel, SpeechModelResponseMetadata, SpeechWarning, StaticToolCall, StaticToolError, StaticToolResult, StepResult, StepStartUIPart, StopCondition, StreamObjectOnFinishCallback, StreamObjectResult, StreamTextOnChunkCallback, StreamTextOnErrorCallback, StreamTextOnFinishCallback, StreamTextOnStepFinishCallback, StreamTextResult, StreamTextTransform, TelemetrySettings, TextStreamChatTransport, TextStreamPart, TextUIPart, ToolCallRepairError, ToolCallRepairFunction, ToolChoice, ToolSet, ToolUIPart, TranscriptionModel, TranscriptionModelResponseMetadata, TranscriptionWarning, TypedToolCall, TypedToolError, TypedToolResult, UIDataPartSchemas, UIDataTypes, UIMessage, UIMessageChunk, UIMessagePart, UIMessageStreamOnFinishCallback, UIMessageStreamOptions, UIMessageStreamWriter, UITool, UITools, UI_MESSAGE_STREAM_HEADERS, UnsupportedModelVersionError, UseCompletionOptions, assistantModelMessageSchema, callCompletionApi, consumeStream, convertFileListToFileUIParts, convertToCoreMessages, convertToModelMessages, coreAssistantMessageSchema, coreMessageSchema, coreSystemMessageSchema, coreToolMessageSchema, coreUserMessageSchema, cosineSimilarity, createProviderRegistry, createTextStreamResponse, createUIMessageStream, createUIMessageStreamResponse, customProvider, defaultSettingsMiddleware, embed, embedMany, MCPClient as experimental_MCPClient, MCPClientConfig as experimental_MCPClientConfig, createMCPClient as experimental_createMCPClient, experimental_createProviderRegistry, experimental_customProvider, generateImage as experimental_generateImage, generateSpeech as experimental_generateSpeech, transcribe as experimental_transcribe, extractReasoningMiddleware, generateObject, generateText, getTextFromDataUrl, getToolName, getToolOrDynamicToolName, hasToolCall, isDeepEqualData, isToolOrDynamicToolUIPart, isToolUIPart, lastAssistantMessageIsCompleteWithToolCalls, modelMessageSchema, parsePartialJson, pipeTextStreamToResponse, pipeUIMessageStreamToResponse, readUIMessageStream, simulateReadableStream, simulateStreamingMiddleware, smoothStream, stepCountIs, streamObject, streamText, systemModelMessageSchema, toolModelMessageSchema, userModelMessageSchema, validateUIMessages, wrapLanguageModel, wrapProvider };
package/dist/index.js CHANGED
@@ -143,6 +143,56 @@ var NoOutputSpecifiedError = class extends import_provider.AISDKError {
143
143
  };
144
144
  _a = symbol;
145
145
 
146
+ // src/logger/log-warnings.ts
147
+ function formatWarning(warning) {
148
+ const prefix = "AI SDK Warning:";
149
+ switch (warning.type) {
150
+ case "unsupported-setting": {
151
+ let message = `${prefix} The "${warning.setting}" setting is not supported by this model`;
152
+ if (warning.details) {
153
+ message += ` - ${warning.details}`;
154
+ }
155
+ return message;
156
+ }
157
+ case "unsupported-tool": {
158
+ const toolName = "name" in warning.tool ? warning.tool.name : "unknown tool";
159
+ let message = `${prefix} The tool "${toolName}" is not supported by this model`;
160
+ if (warning.details) {
161
+ message += ` - ${warning.details}`;
162
+ }
163
+ return message;
164
+ }
165
+ case "other": {
166
+ return `${prefix} ${warning.message}`;
167
+ }
168
+ default: {
169
+ return `${prefix} ${JSON.stringify(warning, null, 2)}`;
170
+ }
171
+ }
172
+ }
173
+ var FIRST_WARNING_INFO_MESSAGE = "AI SDK Warning System: To turn off warning logging, set the AI_SDK_LOG_WARNINGS global to false.";
174
+ var hasLoggedBefore = false;
175
+ var logWarnings = (warnings) => {
176
+ if (warnings.length === 0) {
177
+ return;
178
+ }
179
+ const logger = globalThis.AI_SDK_LOG_WARNINGS;
180
+ if (logger === false) {
181
+ return;
182
+ }
183
+ if (typeof logger === "function") {
184
+ logger(warnings);
185
+ return;
186
+ }
187
+ if (!hasLoggedBefore) {
188
+ hasLoggedBefore = true;
189
+ console.info(FIRST_WARNING_INFO_MESSAGE);
190
+ }
191
+ for (const warning of warnings) {
192
+ console.warn(formatWarning(warning));
193
+ }
194
+ };
195
+
146
196
  // src/model/resolve-model.ts
147
197
  var import_gateway = require("@ai-sdk/gateway");
148
198
 
@@ -435,7 +485,7 @@ var MessageConversionError = class extends import_provider14.AISDKError {
435
485
  };
436
486
  _a13 = symbol13;
437
487
 
438
- // src/util/download-error.ts
488
+ // src/util/download/download-error.ts
439
489
  var import_provider15 = require("@ai-sdk/provider");
440
490
  var name14 = "AI_DownloadError";
441
491
  var marker14 = `vercel.ai.error.${name14}`;
@@ -685,8 +735,8 @@ function detectMediaType({
685
735
  return void 0;
686
736
  }
687
737
 
688
- // src/util/download.ts
689
- async function download({ url }) {
738
+ // src/util/download/download.ts
739
+ var download = async ({ url }) => {
690
740
  var _a17;
691
741
  const urlText = url.toString();
692
742
  try {
@@ -708,7 +758,14 @@ async function download({ url }) {
708
758
  }
709
759
  throw new DownloadError({ url: urlText, cause: error });
710
760
  }
711
- }
761
+ };
762
+
763
+ // src/util/download/download-function.ts
764
+ var createDefaultDownloadFunction = (download2 = download) => (requestedDownloads) => Promise.all(
765
+ requestedDownloads.map(
766
+ async (requestedDownload) => requestedDownload.isUrlSupportedByModel ? null : download2(requestedDownload)
767
+ )
768
+ );
712
769
 
713
770
  // src/prompt/data-content.ts
714
771
  var import_provider18 = require("@ai-sdk/provider");
@@ -806,11 +863,11 @@ function convertDataContentToUint8Array(content) {
806
863
  async function convertToLanguageModelPrompt({
807
864
  prompt,
808
865
  supportedUrls,
809
- downloadImplementation = download
866
+ download: download2 = createDefaultDownloadFunction()
810
867
  }) {
811
868
  const downloadedAssets = await downloadAssets(
812
869
  prompt.messages,
813
- downloadImplementation,
870
+ download2,
814
871
  supportedUrls
815
872
  );
816
873
  return [
@@ -932,8 +989,8 @@ function convertToLanguageModelMessage({
932
989
  }
933
990
  }
934
991
  }
935
- async function downloadAssets(messages, downloadImplementation, supportedUrls) {
936
- const urls = messages.filter((message) => message.role === "user").map((message) => message.content).filter(
992
+ async function downloadAssets(messages, download2, supportedUrls) {
993
+ const plannedDownloads = messages.filter((message) => message.role === "user").map((message) => message.content).filter(
937
994
  (content) => Array.isArray(content)
938
995
  ).flat().filter(
939
996
  (part) => part.type === "image" || part.type === "file"
@@ -949,20 +1006,23 @@ async function downloadAssets(messages, downloadImplementation, supportedUrls) {
949
1006
  }
950
1007
  return { mediaType, data };
951
1008
  }).filter(
952
- (part) => part.data instanceof URL && part.mediaType != null && !(0, import_provider_utils3.isUrlSupported)({
1009
+ (part) => part.data instanceof URL
1010
+ ).map((part) => ({
1011
+ url: part.data,
1012
+ isUrlSupportedByModel: part.mediaType != null && (0, import_provider_utils3.isUrlSupported)({
953
1013
  url: part.data.toString(),
954
1014
  mediaType: part.mediaType,
955
1015
  supportedUrls
956
1016
  })
957
- ).map((part) => part.data);
958
- const downloadedImages = await Promise.all(
959
- urls.map(async (url) => ({
960
- url,
961
- data: await downloadImplementation({ url })
962
- }))
963
- );
1017
+ }));
1018
+ const downloadedFiles = await download2(plannedDownloads);
964
1019
  return Object.fromEntries(
965
- downloadedImages.map(({ url, data }) => [url.toString(), data])
1020
+ downloadedFiles.filter(
1021
+ (downloadedFile) => (downloadedFile == null ? void 0 : downloadedFile.data) != null
1022
+ ).map(({ data, mediaType }, index) => [
1023
+ plannedDownloads[index].url.toString(),
1024
+ { data, mediaType }
1025
+ ])
966
1026
  );
967
1027
  }
968
1028
  function convertPartToLanguageModelPart(part, downloadedAssets) {
@@ -2118,6 +2178,7 @@ async function generateText({
2118
2178
  experimental_prepareStep,
2119
2179
  prepareStep = experimental_prepareStep,
2120
2180
  experimental_repairToolCall: repairToolCall,
2181
+ experimental_download: download2,
2121
2182
  experimental_context,
2122
2183
  _internal: {
2123
2184
  generateId: generateId3 = originalGenerateId,
@@ -2167,7 +2228,7 @@ async function generateText({
2167
2228
  }),
2168
2229
  tracer,
2169
2230
  fn: async (span) => {
2170
- var _a17, _b, _c, _d, _e, _f;
2231
+ var _a17, _b, _c, _d, _e, _f, _g;
2171
2232
  const callSettings2 = prepareCallSettings(settings);
2172
2233
  let currentModelResponse;
2173
2234
  let clientToolCalls = [];
@@ -2190,7 +2251,8 @@ async function generateText({
2190
2251
  system: (_a17 = prepareStepResult == null ? void 0 : prepareStepResult.system) != null ? _a17 : initialPrompt.system,
2191
2252
  messages: (_b = prepareStepResult == null ? void 0 : prepareStepResult.messages) != null ? _b : stepInputMessages
2192
2253
  },
2193
- supportedUrls: await model.supportedUrls
2254
+ supportedUrls: await model.supportedUrls,
2255
+ download: download2
2194
2256
  });
2195
2257
  const stepModel = resolveLanguageModel(
2196
2258
  (_c = prepareStepResult == null ? void 0 : prepareStepResult.model) != null ? _c : model
@@ -2241,7 +2303,7 @@ async function generateText({
2241
2303
  }),
2242
2304
  tracer,
2243
2305
  fn: async (span2) => {
2244
- var _a19, _b2, _c2, _d2, _e2, _f2, _g, _h;
2306
+ var _a19, _b2, _c2, _d2, _e2, _f2, _g2, _h;
2245
2307
  const result = await stepModel.doGenerate({
2246
2308
  ...callSettings2,
2247
2309
  tools: stepTools,
@@ -2256,7 +2318,7 @@ async function generateText({
2256
2318
  id: (_b2 = (_a19 = result.response) == null ? void 0 : _a19.id) != null ? _b2 : generateId3(),
2257
2319
  timestamp: (_d2 = (_c2 = result.response) == null ? void 0 : _c2.timestamp) != null ? _d2 : currentDate(),
2258
2320
  modelId: (_f2 = (_e2 = result.response) == null ? void 0 : _e2.modelId) != null ? _f2 : stepModel.modelId,
2259
- headers: (_g = result.response) == null ? void 0 : _g.headers,
2321
+ headers: (_g2 = result.response) == null ? void 0 : _g2.headers,
2260
2322
  body: (_h = result.response) == null ? void 0 : _h.body
2261
2323
  };
2262
2324
  span2.setAttributes(
@@ -2380,6 +2442,7 @@ async function generateText({
2380
2442
  messages: structuredClone(responseMessages)
2381
2443
  }
2382
2444
  });
2445
+ logWarnings((_g = currentModelResponse.warnings) != null ? _g : []);
2383
2446
  steps.push(currentStepResult);
2384
2447
  await (onStepFinish == null ? void 0 : onStepFinish(currentStepResult));
2385
2448
  } while (
@@ -4388,6 +4451,7 @@ function streamText({
4388
4451
  activeTools = experimental_activeTools,
4389
4452
  experimental_repairToolCall: repairToolCall,
4390
4453
  experimental_transform: transform,
4454
+ experimental_download: download2,
4391
4455
  includeRawChunks = false,
4392
4456
  onChunk,
4393
4457
  onError = ({ error }) => {
@@ -4432,7 +4496,8 @@ function streamText({
4432
4496
  now: now2,
4433
4497
  currentDate,
4434
4498
  generateId: generateId3,
4435
- experimental_context
4499
+ experimental_context,
4500
+ download: download2
4436
4501
  });
4437
4502
  }
4438
4503
  function createOutputTransformStream(output) {
@@ -4529,7 +4594,8 @@ var DefaultStreamTextResult = class {
4529
4594
  onFinish,
4530
4595
  onAbort,
4531
4596
  onStepFinish,
4532
- experimental_context
4597
+ experimental_context,
4598
+ download: download2
4533
4599
  }) {
4534
4600
  this._totalUsage = new DelayedPromise();
4535
4601
  this._finishReason = new DelayedPromise();
@@ -4660,6 +4726,7 @@ var DefaultStreamTextResult = class {
4660
4726
  providerMetadata: part.providerMetadata
4661
4727
  });
4662
4728
  await (onStepFinish == null ? void 0 : onStepFinish(currentStepResult));
4729
+ logWarnings(recordedWarnings);
4663
4730
  recordedSteps.push(currentStepResult);
4664
4731
  recordedContent = [];
4665
4732
  activeReasoningContent = {};
@@ -4851,7 +4918,8 @@ var DefaultStreamTextResult = class {
4851
4918
  system: (_a17 = prepareStepResult == null ? void 0 : prepareStepResult.system) != null ? _a17 : initialPrompt.system,
4852
4919
  messages: (_b = prepareStepResult == null ? void 0 : prepareStepResult.messages) != null ? _b : stepInputMessages
4853
4920
  },
4854
- supportedUrls: await model.supportedUrls
4921
+ supportedUrls: await model.supportedUrls,
4922
+ download: download2
4855
4923
  });
4856
4924
  const stepModel = resolveLanguageModel(
4857
4925
  (_c = prepareStepResult == null ? void 0 : prepareStepResult.model) != null ? _c : model
@@ -6126,6 +6194,7 @@ async function generateImage({
6126
6194
  }
6127
6195
  responses.push(result.response);
6128
6196
  }
6197
+ logWarnings(warnings);
6129
6198
  if (!images.length) {
6130
6199
  throw new NoImageGeneratedError({ responses });
6131
6200
  }
@@ -6615,6 +6684,7 @@ async function generateObject(options) {
6615
6684
  headers,
6616
6685
  experimental_repairText: repairText,
6617
6686
  experimental_telemetry: telemetry,
6687
+ experimental_download: download2,
6618
6688
  providerOptions,
6619
6689
  _internal: {
6620
6690
  generateId: generateId3 = originalGenerateId3,
@@ -6692,7 +6762,8 @@ async function generateObject(options) {
6692
6762
  });
6693
6763
  const promptMessages = await convertToLanguageModelPrompt({
6694
6764
  prompt: standardizedPrompt,
6695
- supportedUrls: await model.supportedUrls
6765
+ supportedUrls: await model.supportedUrls,
6766
+ download: download2
6696
6767
  });
6697
6768
  const generateResult = await retry(
6698
6769
  () => recordSpan({
@@ -6793,6 +6864,7 @@ async function generateObject(options) {
6793
6864
  request = (_a17 = generateResult.request) != null ? _a17 : {};
6794
6865
  response = generateResult.responseData;
6795
6866
  reasoning = generateResult.reasoning;
6867
+ logWarnings(warnings);
6796
6868
  const object2 = await parseAndValidateObjectResultWithRepair(
6797
6869
  result,
6798
6870
  outputStrategy,
@@ -7005,6 +7077,7 @@ function streamObject(options) {
7005
7077
  headers,
7006
7078
  experimental_repairText: repairText,
7007
7079
  experimental_telemetry: telemetry,
7080
+ experimental_download: download2,
7008
7081
  providerOptions,
7009
7082
  onError = ({ error }) => {
7010
7083
  console.error(error);
@@ -7052,6 +7125,7 @@ function streamObject(options) {
7052
7125
  repairText,
7053
7126
  onError,
7054
7127
  onFinish,
7128
+ download: download2,
7055
7129
  generateId: generateId3,
7056
7130
  currentDate,
7057
7131
  now: now2
@@ -7075,6 +7149,7 @@ var DefaultStreamObjectResult = class {
7075
7149
  repairText,
7076
7150
  onError,
7077
7151
  onFinish,
7152
+ download: download2,
7078
7153
  generateId: generateId3,
7079
7154
  currentDate,
7080
7155
  now: now2
@@ -7148,7 +7223,8 @@ var DefaultStreamObjectResult = class {
7148
7223
  ...prepareCallSettings(settings),
7149
7224
  prompt: await convertToLanguageModelPrompt({
7150
7225
  prompt: standardizedPrompt,
7151
- supportedUrls: await model.supportedUrls
7226
+ supportedUrls: await model.supportedUrls,
7227
+ download: download2
7152
7228
  }),
7153
7229
  providerOptions,
7154
7230
  abortSignal,
@@ -7301,6 +7377,7 @@ var DefaultStreamObjectResult = class {
7301
7377
  usage,
7302
7378
  response: fullResponse
7303
7379
  });
7380
+ logWarnings(warnings != null ? warnings : []);
7304
7381
  self._usage.resolve(usage);
7305
7382
  self._providerMetadata.resolve(providerMetadata);
7306
7383
  self._warnings.resolve(warnings);
@@ -7586,6 +7663,7 @@ async function generateSpeech({
7586
7663
  if (!result.audio || result.audio.length === 0) {
7587
7664
  throw new NoSpeechGeneratedError({ responses: [result.response] });
7588
7665
  }
7666
+ logWarnings(result.warnings);
7589
7667
  return new DefaultSpeechResult({
7590
7668
  audio: new DefaultGeneratedAudioFile({
7591
7669
  data: result.audio,
@@ -8904,6 +8982,7 @@ async function transcribe({
8904
8982
  });
8905
8983
  }
8906
8984
  );
8985
+ logWarnings(result.warnings);
8907
8986
  if (!result.text) {
8908
8987
  throw new NoTranscriptGeneratedError({ responses: [result.response] });
8909
8988
  }