ai 6.0.11 → 6.0.13

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,21 @@
1
1
  # ai
2
2
 
3
+ ## 6.0.13
4
+
5
+ ### Patch Changes
6
+
7
+ - e2c445d: feat(ai): smoothStream reasoning support
8
+
9
+ ## 6.0.12
10
+
11
+ ### Patch Changes
12
+
13
+ - d937c8f: Add Image model middleware support via `wrapImageModel` and `ImageModelV3Middleware`.
14
+ - Updated dependencies [d937c8f]
15
+ - @ai-sdk/provider@3.0.2
16
+ - @ai-sdk/gateway@3.0.9
17
+ - @ai-sdk/provider-utils@4.0.4
18
+
3
19
  ## 6.0.11
4
20
 
5
21
  ### Patch Changes
package/dist/index.d.mts CHANGED
@@ -4,7 +4,7 @@ import * as _ai_sdk_provider_utils from '@ai-sdk/provider-utils';
4
4
  import { Tool, InferToolInput, InferToolOutput, FlexibleSchema, InferSchema, AssistantModelMessage, ToolModelMessage, ReasoningPart, SystemModelMessage, ModelMessage, ProviderOptions, UserModelMessage, IdGenerator, ToolCall, MaybePromiseLike, TextPart, FilePart, Resolvable, FetchFunction, DataContent } from '@ai-sdk/provider-utils';
5
5
  export { AssistantContent, AssistantModelMessage, DataContent, DownloadError, FilePart, FlexibleSchema, IdGenerator, ImagePart, InferSchema, InferToolInput, InferToolOutput, ModelMessage, Schema, SystemModelMessage, TextPart, Tool, ToolApprovalRequest, ToolApprovalResponse, ToolCallOptions, ToolCallPart, ToolContent, ToolExecuteFunction, ToolExecutionOptions, ToolModelMessage, ToolResultPart, UserContent, UserModelMessage, asSchema, createIdGenerator, dynamicTool, generateId, jsonSchema, parseJsonEventStream, tool, zodSchema } from '@ai-sdk/provider-utils';
6
6
  import * as _ai_sdk_provider from '@ai-sdk/provider';
7
- import { EmbeddingModelV3, EmbeddingModelV2, EmbeddingModelV3Embedding, EmbeddingModelV3Middleware, ImageModelV3, ImageModelV2, ImageModelV3ProviderMetadata, ImageModelV2ProviderMetadata, JSONValue as JSONValue$1, LanguageModelV3, LanguageModelV2, SharedV3Warning, LanguageModelV3Source, LanguageModelV3Middleware, RerankingModelV3, SharedV3ProviderMetadata, SpeechModelV3, SpeechModelV2, TranscriptionModelV3, TranscriptionModelV2, JSONObject, ImageModelV3Usage, LanguageModelV3CallOptions, AISDKError, LanguageModelV3ToolCall, JSONSchema7, JSONParseError, TypeValidationError, EmbeddingModelV3CallOptions, ProviderV3, ProviderV2, NoSuchModelError } from '@ai-sdk/provider';
7
+ import { EmbeddingModelV3, EmbeddingModelV2, EmbeddingModelV3Embedding, EmbeddingModelV3Middleware, ImageModelV3, ImageModelV2, ImageModelV3ProviderMetadata, ImageModelV2ProviderMetadata, ImageModelV3Middleware, JSONValue as JSONValue$1, LanguageModelV3, LanguageModelV2, SharedV3Warning, LanguageModelV3Source, LanguageModelV3Middleware, RerankingModelV3, SharedV3ProviderMetadata, SpeechModelV3, SpeechModelV2, TranscriptionModelV3, TranscriptionModelV2, JSONObject, ImageModelV3Usage, LanguageModelV3CallOptions, AISDKError, LanguageModelV3ToolCall, JSONSchema7, JSONParseError, TypeValidationError, EmbeddingModelV3CallOptions, ProviderV3, ProviderV2, NoSuchModelError } from '@ai-sdk/provider';
8
8
  export { AISDKError, APICallError, EmptyResponseBodyError, InvalidPromptError, InvalidResponseDataError, JSONParseError, JSONSchema7, LoadAPIKeyError, LoadSettingError, NoContentGeneratedError, NoSuchModelError, TooManyEmbeddingValuesForCallError, TypeValidationError, UnsupportedFunctionalityError } from '@ai-sdk/provider';
9
9
  import { AttributeValue, Tracer } from '@opentelemetry/api';
10
10
  import { ServerResponse } from 'node:http';
@@ -31,6 +31,8 @@ Metadata from the model provider for this call
31
31
  */
32
32
  type ImageModelProviderMetadata = ImageModelV3ProviderMetadata | ImageModelV2ProviderMetadata;
33
33
 
34
+ type ImageModelMiddleware = ImageModelV3Middleware;
35
+
34
36
  type ImageModelResponseMetadata = {
35
37
  /**
36
38
  Timestamp for the start of the generated response.
@@ -54,7 +56,7 @@ declare global {
54
56
  *
55
57
  * You can register model IDs in two ways:
56
58
  *
57
- * 1. Register baesd on Model IDs from a provider package:
59
+ * 1. Register based on Model IDs from a provider package:
58
60
  * @example
59
61
  * ```typescript
60
62
  * import { openai } from '@ai-sdk/openai';
@@ -1446,7 +1448,7 @@ declare function pruneMessages({ messages, reasoning, toolCalls, emptyMessages,
1446
1448
  */
1447
1449
  type ChunkDetector = (buffer: string) => string | undefined | null;
1448
1450
  /**
1449
- * Smooths text streaming output.
1451
+ * Smooths text and reasoning streaming output.
1450
1452
  *
1451
1453
  * @param delayInMs - The delay in milliseconds between each chunk. Defaults to 10ms. Can be set to `null` to skip the delay.
1452
1454
  * @param chunking - Controls how the text is chunked for streaming. Use "word" to stream word by word (default), "line" to stream line by line, or provide a custom RegExp pattern for custom chunking.
@@ -5136,6 +5138,25 @@ declare const wrapEmbeddingModel: ({ model, middleware: middlewareArg, modelId,
5136
5138
  providerId?: string;
5137
5139
  }) => EmbeddingModelV3;
5138
5140
 
5141
+ /**
5142
+ * Wraps an ImageModelV3 instance with middleware functionality.
5143
+ * This function allows you to apply middleware to transform parameters
5144
+ * and wrap generate operations of an image model.
5145
+ *
5146
+ * @param options - Configuration options for wrapping the image model.
5147
+ * @param options.model - The original ImageModelV3 instance to be wrapped.
5148
+ * @param options.middleware - The middleware to be applied to the image model. When multiple middlewares are provided, the first middleware will transform the input first, and the last middleware will be wrapped directly around the model.
5149
+ * @param options.modelId - Optional custom model ID to override the original model's ID.
5150
+ * @param options.providerId - Optional custom provider ID to override the original model's provider ID.
5151
+ * @returns A new ImageModelV3 instance with middleware applied.
5152
+ */
5153
+ declare const wrapImageModel: ({ model, middleware: middlewareArg, modelId, providerId, }: {
5154
+ model: ImageModelV3;
5155
+ middleware: ImageModelMiddleware | ImageModelMiddleware[];
5156
+ modelId?: string;
5157
+ providerId?: string;
5158
+ }) => ImageModelV3;
5159
+
5139
5160
  /**
5140
5161
  * Wraps a ProviderV3 instance with middleware functionality.
5141
5162
  * This function allows you to apply middleware to all language models
@@ -5145,11 +5166,13 @@ declare const wrapEmbeddingModel: ({ model, middleware: middlewareArg, modelId,
5145
5166
  * @param options - Configuration options for wrapping the provider.
5146
5167
  * @param options.provider - The original ProviderV3 instance to be wrapped.
5147
5168
  * @param options.languageModelMiddleware - The middleware to be applied to all language models from the provider. When multiple middlewares are provided, the first middleware will transform the input first, and the last middleware will be wrapped directly around the model.
5169
+ * @param options.imageModelMiddleware - Optional middleware to be applied to all image models from the provider. When multiple middlewares are provided, the first middleware will transform the input first, and the last middleware will be wrapped directly around the model.
5148
5170
  * @returns A new ProviderV3 instance with middleware applied to all language models.
5149
5171
  */
5150
- declare function wrapProvider({ provider, languageModelMiddleware, }: {
5172
+ declare function wrapProvider({ provider, languageModelMiddleware, imageModelMiddleware, }: {
5151
5173
  provider: ProviderV3 | ProviderV2;
5152
5174
  languageModelMiddleware: LanguageModelMiddleware | LanguageModelMiddleware[];
5175
+ imageModelMiddleware?: ImageModelMiddleware | ImageModelMiddleware[];
5153
5176
  }): ProviderV3;
5154
5177
 
5155
5178
  /**
@@ -5229,11 +5252,13 @@ interface ProviderRegistryProvider<PROVIDERS extends Record<string, ProviderV3>
5229
5252
  * @param options - Configuration options for the provider registry.
5230
5253
  * @param options.separator - The separator used between provider ID and model ID in the combined identifier. Defaults to ':'.
5231
5254
  * @param options.languageModelMiddleware - Optional middleware to be applied to all language models from the registry. When multiple middlewares are provided, the first middleware will transform the input first, and the last middleware will be wrapped directly around the model.
5232
- * @returns A new ProviderRegistryProvider instance that provides access to all registered providers with optional middleware applied to language models.
5255
+ * @param options.imageModelMiddleware - Optional middleware to be applied to all image models from the registry. When multiple middlewares are provided, the first middleware will transform the input first, and the last middleware will be wrapped directly around the model.
5256
+ * @returns A new ProviderRegistryProvider instance that provides access to all registered providers with optional middleware applied to language and image models.
5233
5257
  */
5234
- declare function createProviderRegistry<PROVIDERS extends Record<string, ProviderV3>, SEPARATOR extends string = ':'>(providers: PROVIDERS, { separator, languageModelMiddleware, }?: {
5258
+ declare function createProviderRegistry<PROVIDERS extends Record<string, ProviderV3>, SEPARATOR extends string = ':'>(providers: PROVIDERS, { separator, languageModelMiddleware, imageModelMiddleware, }?: {
5235
5259
  separator?: SEPARATOR;
5236
5260
  languageModelMiddleware?: LanguageModelMiddleware | LanguageModelMiddleware[];
5261
+ imageModelMiddleware?: ImageModelMiddleware | ImageModelMiddleware[];
5237
5262
  }): ProviderRegistryProvider<PROVIDERS, SEPARATOR>;
5238
5263
  /**
5239
5264
  * @deprecated Use `createProviderRegistry` instead.
@@ -5493,4 +5518,4 @@ declare global {
5493
5518
  var AI_SDK_LOG_WARNINGS: LogWarningsFunction | undefined | false;
5494
5519
  }
5495
5520
 
5496
- export { AbstractChat, Agent, AgentCallParameters, AgentStreamParameters, AsyncIterableStream, CallSettings, CallWarning, ChatAddToolApproveResponseFunction, ChatInit, ChatOnDataCallback, ChatOnErrorCallback, ChatOnFinishCallback, ChatOnToolCallCallback, ChatRequestOptions, ChatState, ChatStatus, ChatTransport, ChunkDetector, CompletionRequestOptions, ContentPart, CreateUIMessage, DataUIPart, DeepPartial, DefaultChatTransport, DirectChatTransport, DirectChatTransportOptions, DynamicToolCall, DynamicToolError, DynamicToolResult, DynamicToolUIPart, EmbedManyResult, EmbedResult, Embedding, EmbeddingModel, EmbeddingModelMiddleware, EmbeddingModelUsage, ErrorHandler, ToolLoopAgent as Experimental_Agent, ToolLoopAgentSettings as Experimental_AgentSettings, DownloadFunction as Experimental_DownloadFunction, Experimental_GenerateImageResult, GeneratedFile as Experimental_GeneratedImage, InferAgentUIMessage as Experimental_InferAgentUIMessage, LogWarningsFunction as Experimental_LogWarningsFunction, SpeechResult as Experimental_SpeechResult, TranscriptionResult as Experimental_TranscriptionResult, FileUIPart, FinishReason, GenerateImageResult, GenerateObjectResult, GenerateTextOnFinishCallback, GenerateTextOnStepFinishCallback, GenerateTextResult, GeneratedAudioFile, GeneratedFile, HttpChatTransport, HttpChatTransportInitOptions, ImageModel, ImageModelProviderMetadata, ImageModelResponseMetadata, ImageModelUsage, InferAgentUIMessage, InferCompleteOutput as InferGenerateOutput, InferPartialOutput as InferStreamOutput, InferUIDataParts, InferUIMessageChunk, InferUITool, InferUITools, InvalidArgumentError, InvalidDataContentError, InvalidMessageRoleError, InvalidStreamPartError, InvalidToolApprovalError, InvalidToolInputError, JSONValue, JsonToSseTransformStream, LanguageModel, LanguageModelMiddleware, LanguageModelRequestMetadata, LanguageModelResponseMetadata, LanguageModelUsage, LogWarningsFunction, MessageConversionError, NoImageGeneratedError, NoObjectGeneratedError, NoOutputGeneratedError, NoSpeechGeneratedError, NoSuchProviderError, NoSuchToolError, ObjectStreamPart, output as Output, PrepareReconnectToStreamRequest, PrepareSendMessagesRequest, PrepareStepFunction, PrepareStepResult, Prompt, Provider, ProviderMetadata, ProviderRegistryProvider, ReasoningOutput, ReasoningUIPart, RepairTextFunction, RerankResult, RerankingModel, RetryError, SafeValidateUIMessagesResult, SerialJobExecutor, SourceDocumentUIPart, SourceUrlUIPart, SpeechModel, SpeechModelResponseMetadata, StaticToolCall, StaticToolError, StaticToolOutputDenied, StaticToolResult, StepResult, StepStartUIPart, StopCondition, StreamObjectOnFinishCallback, StreamObjectResult, StreamTextOnChunkCallback, StreamTextOnErrorCallback, StreamTextOnFinishCallback, StreamTextOnStepFinishCallback, StreamTextResult, StreamTextTransform, TelemetrySettings, TextStreamChatTransport, TextStreamPart, TextUIPart, ToolApprovalRequestOutput, ToolCallNotFoundForApprovalError, ToolCallRepairError, ToolCallRepairFunction, ToolChoice, ToolLoopAgent, ToolLoopAgentOnFinishCallback, ToolLoopAgentOnStepFinishCallback, ToolLoopAgentSettings, ToolSet, ToolUIPart, TranscriptionModel, TranscriptionModelResponseMetadata, TypedToolCall, TypedToolError, TypedToolOutputDenied, TypedToolResult, UIDataPartSchemas, UIDataTypes, UIMessage, UIMessageChunk, UIMessagePart, UIMessageStreamOnFinishCallback, UIMessageStreamOptions, UIMessageStreamWriter, UITool, UIToolInvocation, UITools, UI_MESSAGE_STREAM_HEADERS, UnsupportedModelVersionError, UseCompletionOptions, Warning, addToolInputExamplesMiddleware, assistantModelMessageSchema, callCompletionApi, consumeStream, convertFileListToFileUIParts, convertToModelMessages, cosineSimilarity, createAgentUIStream, createAgentUIStreamResponse, createProviderRegistry, createTextStreamResponse, createUIMessageStream, createUIMessageStreamResponse, customProvider, defaultEmbeddingSettingsMiddleware, defaultSettingsMiddleware, embed, embedMany, experimental_createProviderRegistry, experimental_customProvider, experimental_generateImage, generateSpeech as experimental_generateSpeech, transcribe as experimental_transcribe, extractReasoningMiddleware, generateImage, generateObject, generateText, getStaticToolName, getTextFromDataUrl, getToolName, getToolOrDynamicToolName, hasToolCall, isDataUIPart, isDeepEqualData, isFileUIPart, isReasoningUIPart, isStaticToolUIPart, isTextUIPart, isToolOrDynamicToolUIPart, isToolUIPart, lastAssistantMessageIsCompleteWithApprovalResponses, lastAssistantMessageIsCompleteWithToolCalls, modelMessageSchema, parsePartialJson, pipeAgentUIStreamToResponse, pipeTextStreamToResponse, pipeUIMessageStreamToResponse, pruneMessages, readUIMessageStream, rerank, safeValidateUIMessages, simulateReadableStream, simulateStreamingMiddleware, smoothStream, stepCountIs, streamObject, streamText, systemModelMessageSchema, toolModelMessageSchema, uiMessageChunkSchema, userModelMessageSchema, validateUIMessages, wrapEmbeddingModel, wrapLanguageModel, wrapProvider };
5521
+ export { AbstractChat, Agent, AgentCallParameters, AgentStreamParameters, AsyncIterableStream, CallSettings, CallWarning, ChatAddToolApproveResponseFunction, ChatInit, ChatOnDataCallback, ChatOnErrorCallback, ChatOnFinishCallback, ChatOnToolCallCallback, ChatRequestOptions, ChatState, ChatStatus, ChatTransport, ChunkDetector, CompletionRequestOptions, ContentPart, CreateUIMessage, DataUIPart, DeepPartial, DefaultChatTransport, DirectChatTransport, DirectChatTransportOptions, DynamicToolCall, DynamicToolError, DynamicToolResult, DynamicToolUIPart, EmbedManyResult, EmbedResult, Embedding, EmbeddingModel, EmbeddingModelMiddleware, EmbeddingModelUsage, ErrorHandler, ToolLoopAgent as Experimental_Agent, ToolLoopAgentSettings as Experimental_AgentSettings, DownloadFunction as Experimental_DownloadFunction, Experimental_GenerateImageResult, GeneratedFile as Experimental_GeneratedImage, InferAgentUIMessage as Experimental_InferAgentUIMessage, LogWarningsFunction as Experimental_LogWarningsFunction, SpeechResult as Experimental_SpeechResult, TranscriptionResult as Experimental_TranscriptionResult, FileUIPart, FinishReason, GenerateImageResult, GenerateObjectResult, GenerateTextOnFinishCallback, GenerateTextOnStepFinishCallback, GenerateTextResult, GeneratedAudioFile, GeneratedFile, HttpChatTransport, HttpChatTransportInitOptions, ImageModel, ImageModelMiddleware, ImageModelProviderMetadata, ImageModelResponseMetadata, ImageModelUsage, InferAgentUIMessage, InferCompleteOutput as InferGenerateOutput, InferPartialOutput as InferStreamOutput, InferUIDataParts, InferUIMessageChunk, InferUITool, InferUITools, InvalidArgumentError, InvalidDataContentError, InvalidMessageRoleError, InvalidStreamPartError, InvalidToolApprovalError, InvalidToolInputError, JSONValue, JsonToSseTransformStream, LanguageModel, LanguageModelMiddleware, LanguageModelRequestMetadata, LanguageModelResponseMetadata, LanguageModelUsage, LogWarningsFunction, MessageConversionError, NoImageGeneratedError, NoObjectGeneratedError, NoOutputGeneratedError, NoSpeechGeneratedError, NoSuchProviderError, NoSuchToolError, ObjectStreamPart, output as Output, PrepareReconnectToStreamRequest, PrepareSendMessagesRequest, PrepareStepFunction, PrepareStepResult, Prompt, Provider, ProviderMetadata, ProviderRegistryProvider, ReasoningOutput, ReasoningUIPart, RepairTextFunction, RerankResult, RerankingModel, RetryError, SafeValidateUIMessagesResult, SerialJobExecutor, SourceDocumentUIPart, SourceUrlUIPart, SpeechModel, SpeechModelResponseMetadata, StaticToolCall, StaticToolError, StaticToolOutputDenied, StaticToolResult, StepResult, StepStartUIPart, StopCondition, StreamObjectOnFinishCallback, StreamObjectResult, StreamTextOnChunkCallback, StreamTextOnErrorCallback, StreamTextOnFinishCallback, StreamTextOnStepFinishCallback, StreamTextResult, StreamTextTransform, TelemetrySettings, TextStreamChatTransport, TextStreamPart, TextUIPart, ToolApprovalRequestOutput, ToolCallNotFoundForApprovalError, ToolCallRepairError, ToolCallRepairFunction, ToolChoice, ToolLoopAgent, ToolLoopAgentOnFinishCallback, ToolLoopAgentOnStepFinishCallback, ToolLoopAgentSettings, ToolSet, ToolUIPart, TranscriptionModel, TranscriptionModelResponseMetadata, TypedToolCall, TypedToolError, TypedToolOutputDenied, TypedToolResult, UIDataPartSchemas, UIDataTypes, UIMessage, UIMessageChunk, UIMessagePart, UIMessageStreamOnFinishCallback, UIMessageStreamOptions, UIMessageStreamWriter, UITool, UIToolInvocation, UITools, UI_MESSAGE_STREAM_HEADERS, UnsupportedModelVersionError, UseCompletionOptions, Warning, addToolInputExamplesMiddleware, assistantModelMessageSchema, callCompletionApi, consumeStream, convertFileListToFileUIParts, convertToModelMessages, cosineSimilarity, createAgentUIStream, createAgentUIStreamResponse, createProviderRegistry, createTextStreamResponse, createUIMessageStream, createUIMessageStreamResponse, customProvider, defaultEmbeddingSettingsMiddleware, defaultSettingsMiddleware, embed, embedMany, experimental_createProviderRegistry, experimental_customProvider, experimental_generateImage, generateSpeech as experimental_generateSpeech, transcribe as experimental_transcribe, extractReasoningMiddleware, generateImage, generateObject, generateText, getStaticToolName, getTextFromDataUrl, getToolName, getToolOrDynamicToolName, hasToolCall, isDataUIPart, isDeepEqualData, isFileUIPart, isReasoningUIPart, isStaticToolUIPart, isTextUIPart, isToolOrDynamicToolUIPart, isToolUIPart, lastAssistantMessageIsCompleteWithApprovalResponses, lastAssistantMessageIsCompleteWithToolCalls, modelMessageSchema, parsePartialJson, pipeAgentUIStreamToResponse, pipeTextStreamToResponse, pipeUIMessageStreamToResponse, pruneMessages, readUIMessageStream, rerank, safeValidateUIMessages, simulateReadableStream, simulateStreamingMiddleware, smoothStream, stepCountIs, streamObject, streamText, systemModelMessageSchema, toolModelMessageSchema, uiMessageChunkSchema, userModelMessageSchema, validateUIMessages, wrapEmbeddingModel, wrapImageModel, wrapLanguageModel, wrapProvider };
package/dist/index.d.ts CHANGED
@@ -4,7 +4,7 @@ import * as _ai_sdk_provider_utils from '@ai-sdk/provider-utils';
4
4
  import { Tool, InferToolInput, InferToolOutput, FlexibleSchema, InferSchema, AssistantModelMessage, ToolModelMessage, ReasoningPart, SystemModelMessage, ModelMessage, ProviderOptions, UserModelMessage, IdGenerator, ToolCall, MaybePromiseLike, TextPart, FilePart, Resolvable, FetchFunction, DataContent } from '@ai-sdk/provider-utils';
5
5
  export { AssistantContent, AssistantModelMessage, DataContent, DownloadError, FilePart, FlexibleSchema, IdGenerator, ImagePart, InferSchema, InferToolInput, InferToolOutput, ModelMessage, Schema, SystemModelMessage, TextPart, Tool, ToolApprovalRequest, ToolApprovalResponse, ToolCallOptions, ToolCallPart, ToolContent, ToolExecuteFunction, ToolExecutionOptions, ToolModelMessage, ToolResultPart, UserContent, UserModelMessage, asSchema, createIdGenerator, dynamicTool, generateId, jsonSchema, parseJsonEventStream, tool, zodSchema } from '@ai-sdk/provider-utils';
6
6
  import * as _ai_sdk_provider from '@ai-sdk/provider';
7
- import { EmbeddingModelV3, EmbeddingModelV2, EmbeddingModelV3Embedding, EmbeddingModelV3Middleware, ImageModelV3, ImageModelV2, ImageModelV3ProviderMetadata, ImageModelV2ProviderMetadata, JSONValue as JSONValue$1, LanguageModelV3, LanguageModelV2, SharedV3Warning, LanguageModelV3Source, LanguageModelV3Middleware, RerankingModelV3, SharedV3ProviderMetadata, SpeechModelV3, SpeechModelV2, TranscriptionModelV3, TranscriptionModelV2, JSONObject, ImageModelV3Usage, LanguageModelV3CallOptions, AISDKError, LanguageModelV3ToolCall, JSONSchema7, JSONParseError, TypeValidationError, EmbeddingModelV3CallOptions, ProviderV3, ProviderV2, NoSuchModelError } from '@ai-sdk/provider';
7
+ import { EmbeddingModelV3, EmbeddingModelV2, EmbeddingModelV3Embedding, EmbeddingModelV3Middleware, ImageModelV3, ImageModelV2, ImageModelV3ProviderMetadata, ImageModelV2ProviderMetadata, ImageModelV3Middleware, JSONValue as JSONValue$1, LanguageModelV3, LanguageModelV2, SharedV3Warning, LanguageModelV3Source, LanguageModelV3Middleware, RerankingModelV3, SharedV3ProviderMetadata, SpeechModelV3, SpeechModelV2, TranscriptionModelV3, TranscriptionModelV2, JSONObject, ImageModelV3Usage, LanguageModelV3CallOptions, AISDKError, LanguageModelV3ToolCall, JSONSchema7, JSONParseError, TypeValidationError, EmbeddingModelV3CallOptions, ProviderV3, ProviderV2, NoSuchModelError } from '@ai-sdk/provider';
8
8
  export { AISDKError, APICallError, EmptyResponseBodyError, InvalidPromptError, InvalidResponseDataError, JSONParseError, JSONSchema7, LoadAPIKeyError, LoadSettingError, NoContentGeneratedError, NoSuchModelError, TooManyEmbeddingValuesForCallError, TypeValidationError, UnsupportedFunctionalityError } from '@ai-sdk/provider';
9
9
  import { AttributeValue, Tracer } from '@opentelemetry/api';
10
10
  import { ServerResponse } from 'node:http';
@@ -31,6 +31,8 @@ Metadata from the model provider for this call
31
31
  */
32
32
  type ImageModelProviderMetadata = ImageModelV3ProviderMetadata | ImageModelV2ProviderMetadata;
33
33
 
34
+ type ImageModelMiddleware = ImageModelV3Middleware;
35
+
34
36
  type ImageModelResponseMetadata = {
35
37
  /**
36
38
  Timestamp for the start of the generated response.
@@ -54,7 +56,7 @@ declare global {
54
56
  *
55
57
  * You can register model IDs in two ways:
56
58
  *
57
- * 1. Register baesd on Model IDs from a provider package:
59
+ * 1. Register based on Model IDs from a provider package:
58
60
  * @example
59
61
  * ```typescript
60
62
  * import { openai } from '@ai-sdk/openai';
@@ -1446,7 +1448,7 @@ declare function pruneMessages({ messages, reasoning, toolCalls, emptyMessages,
1446
1448
  */
1447
1449
  type ChunkDetector = (buffer: string) => string | undefined | null;
1448
1450
  /**
1449
- * Smooths text streaming output.
1451
+ * Smooths text and reasoning streaming output.
1450
1452
  *
1451
1453
  * @param delayInMs - The delay in milliseconds between each chunk. Defaults to 10ms. Can be set to `null` to skip the delay.
1452
1454
  * @param chunking - Controls how the text is chunked for streaming. Use "word" to stream word by word (default), "line" to stream line by line, or provide a custom RegExp pattern for custom chunking.
@@ -5136,6 +5138,25 @@ declare const wrapEmbeddingModel: ({ model, middleware: middlewareArg, modelId,
5136
5138
  providerId?: string;
5137
5139
  }) => EmbeddingModelV3;
5138
5140
 
5141
+ /**
5142
+ * Wraps an ImageModelV3 instance with middleware functionality.
5143
+ * This function allows you to apply middleware to transform parameters
5144
+ * and wrap generate operations of an image model.
5145
+ *
5146
+ * @param options - Configuration options for wrapping the image model.
5147
+ * @param options.model - The original ImageModelV3 instance to be wrapped.
5148
+ * @param options.middleware - The middleware to be applied to the image model. When multiple middlewares are provided, the first middleware will transform the input first, and the last middleware will be wrapped directly around the model.
5149
+ * @param options.modelId - Optional custom model ID to override the original model's ID.
5150
+ * @param options.providerId - Optional custom provider ID to override the original model's provider ID.
5151
+ * @returns A new ImageModelV3 instance with middleware applied.
5152
+ */
5153
+ declare const wrapImageModel: ({ model, middleware: middlewareArg, modelId, providerId, }: {
5154
+ model: ImageModelV3;
5155
+ middleware: ImageModelMiddleware | ImageModelMiddleware[];
5156
+ modelId?: string;
5157
+ providerId?: string;
5158
+ }) => ImageModelV3;
5159
+
5139
5160
  /**
5140
5161
  * Wraps a ProviderV3 instance with middleware functionality.
5141
5162
  * This function allows you to apply middleware to all language models
@@ -5145,11 +5166,13 @@ declare const wrapEmbeddingModel: ({ model, middleware: middlewareArg, modelId,
5145
5166
  * @param options - Configuration options for wrapping the provider.
5146
5167
  * @param options.provider - The original ProviderV3 instance to be wrapped.
5147
5168
  * @param options.languageModelMiddleware - The middleware to be applied to all language models from the provider. When multiple middlewares are provided, the first middleware will transform the input first, and the last middleware will be wrapped directly around the model.
5169
+ * @param options.imageModelMiddleware - Optional middleware to be applied to all image models from the provider. When multiple middlewares are provided, the first middleware will transform the input first, and the last middleware will be wrapped directly around the model.
5148
5170
  * @returns A new ProviderV3 instance with middleware applied to all language models.
5149
5171
  */
5150
- declare function wrapProvider({ provider, languageModelMiddleware, }: {
5172
+ declare function wrapProvider({ provider, languageModelMiddleware, imageModelMiddleware, }: {
5151
5173
  provider: ProviderV3 | ProviderV2;
5152
5174
  languageModelMiddleware: LanguageModelMiddleware | LanguageModelMiddleware[];
5175
+ imageModelMiddleware?: ImageModelMiddleware | ImageModelMiddleware[];
5153
5176
  }): ProviderV3;
5154
5177
 
5155
5178
  /**
@@ -5229,11 +5252,13 @@ interface ProviderRegistryProvider<PROVIDERS extends Record<string, ProviderV3>
5229
5252
  * @param options - Configuration options for the provider registry.
5230
5253
  * @param options.separator - The separator used between provider ID and model ID in the combined identifier. Defaults to ':'.
5231
5254
  * @param options.languageModelMiddleware - Optional middleware to be applied to all language models from the registry. When multiple middlewares are provided, the first middleware will transform the input first, and the last middleware will be wrapped directly around the model.
5232
- * @returns A new ProviderRegistryProvider instance that provides access to all registered providers with optional middleware applied to language models.
5255
+ * @param options.imageModelMiddleware - Optional middleware to be applied to all image models from the registry. When multiple middlewares are provided, the first middleware will transform the input first, and the last middleware will be wrapped directly around the model.
5256
+ * @returns A new ProviderRegistryProvider instance that provides access to all registered providers with optional middleware applied to language and image models.
5233
5257
  */
5234
- declare function createProviderRegistry<PROVIDERS extends Record<string, ProviderV3>, SEPARATOR extends string = ':'>(providers: PROVIDERS, { separator, languageModelMiddleware, }?: {
5258
+ declare function createProviderRegistry<PROVIDERS extends Record<string, ProviderV3>, SEPARATOR extends string = ':'>(providers: PROVIDERS, { separator, languageModelMiddleware, imageModelMiddleware, }?: {
5235
5259
  separator?: SEPARATOR;
5236
5260
  languageModelMiddleware?: LanguageModelMiddleware | LanguageModelMiddleware[];
5261
+ imageModelMiddleware?: ImageModelMiddleware | ImageModelMiddleware[];
5237
5262
  }): ProviderRegistryProvider<PROVIDERS, SEPARATOR>;
5238
5263
  /**
5239
5264
  * @deprecated Use `createProviderRegistry` instead.
@@ -5493,4 +5518,4 @@ declare global {
5493
5518
  var AI_SDK_LOG_WARNINGS: LogWarningsFunction | undefined | false;
5494
5519
  }
5495
5520
 
5496
- export { AbstractChat, Agent, AgentCallParameters, AgentStreamParameters, AsyncIterableStream, CallSettings, CallWarning, ChatAddToolApproveResponseFunction, ChatInit, ChatOnDataCallback, ChatOnErrorCallback, ChatOnFinishCallback, ChatOnToolCallCallback, ChatRequestOptions, ChatState, ChatStatus, ChatTransport, ChunkDetector, CompletionRequestOptions, ContentPart, CreateUIMessage, DataUIPart, DeepPartial, DefaultChatTransport, DirectChatTransport, DirectChatTransportOptions, DynamicToolCall, DynamicToolError, DynamicToolResult, DynamicToolUIPart, EmbedManyResult, EmbedResult, Embedding, EmbeddingModel, EmbeddingModelMiddleware, EmbeddingModelUsage, ErrorHandler, ToolLoopAgent as Experimental_Agent, ToolLoopAgentSettings as Experimental_AgentSettings, DownloadFunction as Experimental_DownloadFunction, Experimental_GenerateImageResult, GeneratedFile as Experimental_GeneratedImage, InferAgentUIMessage as Experimental_InferAgentUIMessage, LogWarningsFunction as Experimental_LogWarningsFunction, SpeechResult as Experimental_SpeechResult, TranscriptionResult as Experimental_TranscriptionResult, FileUIPart, FinishReason, GenerateImageResult, GenerateObjectResult, GenerateTextOnFinishCallback, GenerateTextOnStepFinishCallback, GenerateTextResult, GeneratedAudioFile, GeneratedFile, HttpChatTransport, HttpChatTransportInitOptions, ImageModel, ImageModelProviderMetadata, ImageModelResponseMetadata, ImageModelUsage, InferAgentUIMessage, InferCompleteOutput as InferGenerateOutput, InferPartialOutput as InferStreamOutput, InferUIDataParts, InferUIMessageChunk, InferUITool, InferUITools, InvalidArgumentError, InvalidDataContentError, InvalidMessageRoleError, InvalidStreamPartError, InvalidToolApprovalError, InvalidToolInputError, JSONValue, JsonToSseTransformStream, LanguageModel, LanguageModelMiddleware, LanguageModelRequestMetadata, LanguageModelResponseMetadata, LanguageModelUsage, LogWarningsFunction, MessageConversionError, NoImageGeneratedError, NoObjectGeneratedError, NoOutputGeneratedError, NoSpeechGeneratedError, NoSuchProviderError, NoSuchToolError, ObjectStreamPart, output as Output, PrepareReconnectToStreamRequest, PrepareSendMessagesRequest, PrepareStepFunction, PrepareStepResult, Prompt, Provider, ProviderMetadata, ProviderRegistryProvider, ReasoningOutput, ReasoningUIPart, RepairTextFunction, RerankResult, RerankingModel, RetryError, SafeValidateUIMessagesResult, SerialJobExecutor, SourceDocumentUIPart, SourceUrlUIPart, SpeechModel, SpeechModelResponseMetadata, StaticToolCall, StaticToolError, StaticToolOutputDenied, StaticToolResult, StepResult, StepStartUIPart, StopCondition, StreamObjectOnFinishCallback, StreamObjectResult, StreamTextOnChunkCallback, StreamTextOnErrorCallback, StreamTextOnFinishCallback, StreamTextOnStepFinishCallback, StreamTextResult, StreamTextTransform, TelemetrySettings, TextStreamChatTransport, TextStreamPart, TextUIPart, ToolApprovalRequestOutput, ToolCallNotFoundForApprovalError, ToolCallRepairError, ToolCallRepairFunction, ToolChoice, ToolLoopAgent, ToolLoopAgentOnFinishCallback, ToolLoopAgentOnStepFinishCallback, ToolLoopAgentSettings, ToolSet, ToolUIPart, TranscriptionModel, TranscriptionModelResponseMetadata, TypedToolCall, TypedToolError, TypedToolOutputDenied, TypedToolResult, UIDataPartSchemas, UIDataTypes, UIMessage, UIMessageChunk, UIMessagePart, UIMessageStreamOnFinishCallback, UIMessageStreamOptions, UIMessageStreamWriter, UITool, UIToolInvocation, UITools, UI_MESSAGE_STREAM_HEADERS, UnsupportedModelVersionError, UseCompletionOptions, Warning, addToolInputExamplesMiddleware, assistantModelMessageSchema, callCompletionApi, consumeStream, convertFileListToFileUIParts, convertToModelMessages, cosineSimilarity, createAgentUIStream, createAgentUIStreamResponse, createProviderRegistry, createTextStreamResponse, createUIMessageStream, createUIMessageStreamResponse, customProvider, defaultEmbeddingSettingsMiddleware, defaultSettingsMiddleware, embed, embedMany, experimental_createProviderRegistry, experimental_customProvider, experimental_generateImage, generateSpeech as experimental_generateSpeech, transcribe as experimental_transcribe, extractReasoningMiddleware, generateImage, generateObject, generateText, getStaticToolName, getTextFromDataUrl, getToolName, getToolOrDynamicToolName, hasToolCall, isDataUIPart, isDeepEqualData, isFileUIPart, isReasoningUIPart, isStaticToolUIPart, isTextUIPart, isToolOrDynamicToolUIPart, isToolUIPart, lastAssistantMessageIsCompleteWithApprovalResponses, lastAssistantMessageIsCompleteWithToolCalls, modelMessageSchema, parsePartialJson, pipeAgentUIStreamToResponse, pipeTextStreamToResponse, pipeUIMessageStreamToResponse, pruneMessages, readUIMessageStream, rerank, safeValidateUIMessages, simulateReadableStream, simulateStreamingMiddleware, smoothStream, stepCountIs, streamObject, streamText, systemModelMessageSchema, toolModelMessageSchema, uiMessageChunkSchema, userModelMessageSchema, validateUIMessages, wrapEmbeddingModel, wrapLanguageModel, wrapProvider };
5521
+ export { AbstractChat, Agent, AgentCallParameters, AgentStreamParameters, AsyncIterableStream, CallSettings, CallWarning, ChatAddToolApproveResponseFunction, ChatInit, ChatOnDataCallback, ChatOnErrorCallback, ChatOnFinishCallback, ChatOnToolCallCallback, ChatRequestOptions, ChatState, ChatStatus, ChatTransport, ChunkDetector, CompletionRequestOptions, ContentPart, CreateUIMessage, DataUIPart, DeepPartial, DefaultChatTransport, DirectChatTransport, DirectChatTransportOptions, DynamicToolCall, DynamicToolError, DynamicToolResult, DynamicToolUIPart, EmbedManyResult, EmbedResult, Embedding, EmbeddingModel, EmbeddingModelMiddleware, EmbeddingModelUsage, ErrorHandler, ToolLoopAgent as Experimental_Agent, ToolLoopAgentSettings as Experimental_AgentSettings, DownloadFunction as Experimental_DownloadFunction, Experimental_GenerateImageResult, GeneratedFile as Experimental_GeneratedImage, InferAgentUIMessage as Experimental_InferAgentUIMessage, LogWarningsFunction as Experimental_LogWarningsFunction, SpeechResult as Experimental_SpeechResult, TranscriptionResult as Experimental_TranscriptionResult, FileUIPart, FinishReason, GenerateImageResult, GenerateObjectResult, GenerateTextOnFinishCallback, GenerateTextOnStepFinishCallback, GenerateTextResult, GeneratedAudioFile, GeneratedFile, HttpChatTransport, HttpChatTransportInitOptions, ImageModel, ImageModelMiddleware, ImageModelProviderMetadata, ImageModelResponseMetadata, ImageModelUsage, InferAgentUIMessage, InferCompleteOutput as InferGenerateOutput, InferPartialOutput as InferStreamOutput, InferUIDataParts, InferUIMessageChunk, InferUITool, InferUITools, InvalidArgumentError, InvalidDataContentError, InvalidMessageRoleError, InvalidStreamPartError, InvalidToolApprovalError, InvalidToolInputError, JSONValue, JsonToSseTransformStream, LanguageModel, LanguageModelMiddleware, LanguageModelRequestMetadata, LanguageModelResponseMetadata, LanguageModelUsage, LogWarningsFunction, MessageConversionError, NoImageGeneratedError, NoObjectGeneratedError, NoOutputGeneratedError, NoSpeechGeneratedError, NoSuchProviderError, NoSuchToolError, ObjectStreamPart, output as Output, PrepareReconnectToStreamRequest, PrepareSendMessagesRequest, PrepareStepFunction, PrepareStepResult, Prompt, Provider, ProviderMetadata, ProviderRegistryProvider, ReasoningOutput, ReasoningUIPart, RepairTextFunction, RerankResult, RerankingModel, RetryError, SafeValidateUIMessagesResult, SerialJobExecutor, SourceDocumentUIPart, SourceUrlUIPart, SpeechModel, SpeechModelResponseMetadata, StaticToolCall, StaticToolError, StaticToolOutputDenied, StaticToolResult, StepResult, StepStartUIPart, StopCondition, StreamObjectOnFinishCallback, StreamObjectResult, StreamTextOnChunkCallback, StreamTextOnErrorCallback, StreamTextOnFinishCallback, StreamTextOnStepFinishCallback, StreamTextResult, StreamTextTransform, TelemetrySettings, TextStreamChatTransport, TextStreamPart, TextUIPart, ToolApprovalRequestOutput, ToolCallNotFoundForApprovalError, ToolCallRepairError, ToolCallRepairFunction, ToolChoice, ToolLoopAgent, ToolLoopAgentOnFinishCallback, ToolLoopAgentOnStepFinishCallback, ToolLoopAgentSettings, ToolSet, ToolUIPart, TranscriptionModel, TranscriptionModelResponseMetadata, TypedToolCall, TypedToolError, TypedToolOutputDenied, TypedToolResult, UIDataPartSchemas, UIDataTypes, UIMessage, UIMessageChunk, UIMessagePart, UIMessageStreamOnFinishCallback, UIMessageStreamOptions, UIMessageStreamWriter, UITool, UIToolInvocation, UITools, UI_MESSAGE_STREAM_HEADERS, UnsupportedModelVersionError, UseCompletionOptions, Warning, addToolInputExamplesMiddleware, assistantModelMessageSchema, callCompletionApi, consumeStream, convertFileListToFileUIParts, convertToModelMessages, cosineSimilarity, createAgentUIStream, createAgentUIStreamResponse, createProviderRegistry, createTextStreamResponse, createUIMessageStream, createUIMessageStreamResponse, customProvider, defaultEmbeddingSettingsMiddleware, defaultSettingsMiddleware, embed, embedMany, experimental_createProviderRegistry, experimental_customProvider, experimental_generateImage, generateSpeech as experimental_generateSpeech, transcribe as experimental_transcribe, extractReasoningMiddleware, generateImage, generateObject, generateText, getStaticToolName, getTextFromDataUrl, getToolName, getToolOrDynamicToolName, hasToolCall, isDataUIPart, isDeepEqualData, isFileUIPart, isReasoningUIPart, isStaticToolUIPart, isTextUIPart, isToolOrDynamicToolUIPart, isToolUIPart, lastAssistantMessageIsCompleteWithApprovalResponses, lastAssistantMessageIsCompleteWithToolCalls, modelMessageSchema, parsePartialJson, pipeAgentUIStreamToResponse, pipeTextStreamToResponse, pipeUIMessageStreamToResponse, pruneMessages, readUIMessageStream, rerank, safeValidateUIMessages, simulateReadableStream, simulateStreamingMiddleware, smoothStream, stepCountIs, streamObject, streamText, systemModelMessageSchema, toolModelMessageSchema, uiMessageChunkSchema, userModelMessageSchema, validateUIMessages, wrapEmbeddingModel, wrapImageModel, wrapLanguageModel, wrapProvider };
package/dist/index.js CHANGED
@@ -134,6 +134,7 @@ __export(src_exports, {
134
134
  userModelMessageSchema: () => userModelMessageSchema,
135
135
  validateUIMessages: () => validateUIMessages,
136
136
  wrapEmbeddingModel: () => wrapEmbeddingModel,
137
+ wrapImageModel: () => wrapImageModel,
137
138
  wrapLanguageModel: () => wrapLanguageModel,
138
139
  wrapProvider: () => wrapProvider,
139
140
  zodSchema: () => import_provider_utils38.zodSchema
@@ -1000,7 +1001,7 @@ var import_provider_utils3 = require("@ai-sdk/provider-utils");
1000
1001
  var import_provider_utils4 = require("@ai-sdk/provider-utils");
1001
1002
 
1002
1003
  // src/version.ts
1003
- var VERSION = true ? "6.0.11" : "0.0.0-test";
1004
+ var VERSION = true ? "6.0.13" : "0.0.0-test";
1004
1005
 
1005
1006
  // src/util/download/download.ts
1006
1007
  var download = async ({ url }) => {
@@ -10201,25 +10202,29 @@ function smoothStream({
10201
10202
  return () => {
10202
10203
  let buffer = "";
10203
10204
  let id = "";
10205
+ let type = void 0;
10206
+ function flushBuffer(controller) {
10207
+ if (buffer.length > 0 && type !== void 0) {
10208
+ controller.enqueue({ type, text: buffer, id });
10209
+ buffer = "";
10210
+ }
10211
+ }
10204
10212
  return new TransformStream({
10205
10213
  async transform(chunk, controller) {
10206
- if (chunk.type !== "text-delta") {
10207
- if (buffer.length > 0) {
10208
- controller.enqueue({ type: "text-delta", text: buffer, id });
10209
- buffer = "";
10210
- }
10214
+ if (chunk.type !== "text-delta" && chunk.type !== "reasoning-delta") {
10215
+ flushBuffer(controller);
10211
10216
  controller.enqueue(chunk);
10212
10217
  return;
10213
10218
  }
10214
- if (chunk.id !== id && buffer.length > 0) {
10215
- controller.enqueue({ type: "text-delta", text: buffer, id });
10216
- buffer = "";
10219
+ if ((chunk.type !== type || chunk.id !== id) && buffer.length > 0) {
10220
+ flushBuffer(controller);
10217
10221
  }
10218
10222
  buffer += chunk.text;
10219
10223
  id = chunk.id;
10224
+ type = chunk.type;
10220
10225
  let match;
10221
10226
  while ((match = detectChunk(buffer)) != null) {
10222
- controller.enqueue({ type: "text-delta", text: match, id });
10227
+ controller.enqueue({ type, text: match, id });
10223
10228
  buffer = buffer.slice(match.length);
10224
10229
  await delay2(delayInMs);
10225
10230
  }
@@ -10635,6 +10640,52 @@ var doWrap2 = ({
10635
10640
  };
10636
10641
  };
10637
10642
 
10643
+ // src/middleware/wrap-image-model.ts
10644
+ var wrapImageModel = ({
10645
+ model,
10646
+ middleware: middlewareArg,
10647
+ modelId,
10648
+ providerId
10649
+ }) => {
10650
+ return [...asArray(middlewareArg)].reverse().reduce((wrappedModel, middleware) => {
10651
+ return doWrap3({ model: wrappedModel, middleware, modelId, providerId });
10652
+ }, model);
10653
+ };
10654
+ var doWrap3 = ({
10655
+ model,
10656
+ middleware: {
10657
+ transformParams,
10658
+ wrapGenerate,
10659
+ overrideProvider,
10660
+ overrideModelId,
10661
+ overrideMaxImagesPerCall
10662
+ },
10663
+ modelId,
10664
+ providerId
10665
+ }) => {
10666
+ var _a16, _b, _c;
10667
+ async function doTransform({ params }) {
10668
+ return transformParams ? await transformParams({ params, model }) : params;
10669
+ }
10670
+ const maxImagesPerCallRaw = (_a16 = overrideMaxImagesPerCall == null ? void 0 : overrideMaxImagesPerCall({ model })) != null ? _a16 : model.maxImagesPerCall;
10671
+ const maxImagesPerCall = maxImagesPerCallRaw instanceof Function ? maxImagesPerCallRaw.bind(model) : maxImagesPerCallRaw;
10672
+ return {
10673
+ specificationVersion: "v3",
10674
+ provider: (_b = providerId != null ? providerId : overrideProvider == null ? void 0 : overrideProvider({ model })) != null ? _b : model.provider,
10675
+ modelId: (_c = modelId != null ? modelId : overrideModelId == null ? void 0 : overrideModelId({ model })) != null ? _c : model.modelId,
10676
+ maxImagesPerCall,
10677
+ async doGenerate(params) {
10678
+ const transformedParams = await doTransform({ params });
10679
+ const doGenerate = async () => model.doGenerate(transformedParams);
10680
+ return wrapGenerate ? wrapGenerate({
10681
+ doGenerate,
10682
+ params: transformedParams,
10683
+ model
10684
+ }) : doGenerate();
10685
+ }
10686
+ };
10687
+ };
10688
+
10638
10689
  // src/model/as-provider-v3.ts
10639
10690
  function asProviderV3(provider) {
10640
10691
  if ("specificationVersion" in provider && provider.specificationVersion === "v3") {
@@ -10656,7 +10707,8 @@ function asProviderV3(provider) {
10656
10707
  // src/middleware/wrap-provider.ts
10657
10708
  function wrapProvider({
10658
10709
  provider,
10659
- languageModelMiddleware
10710
+ languageModelMiddleware,
10711
+ imageModelMiddleware
10660
10712
  }) {
10661
10713
  const providerV3 = asProviderV3(provider);
10662
10714
  return {
@@ -10666,7 +10718,13 @@ function wrapProvider({
10666
10718
  middleware: languageModelMiddleware
10667
10719
  }),
10668
10720
  embeddingModel: providerV3.embeddingModel,
10669
- imageModel: providerV3.imageModel,
10721
+ imageModel: (modelId) => {
10722
+ let model = providerV3.imageModel(modelId);
10723
+ if (imageModelMiddleware != null) {
10724
+ model = wrapImageModel({ model, middleware: imageModelMiddleware });
10725
+ }
10726
+ return model;
10727
+ },
10670
10728
  transcriptionModel: providerV3.transcriptionModel,
10671
10729
  speechModel: providerV3.speechModel,
10672
10730
  rerankingModel: providerV3.rerankingModel
@@ -10774,11 +10832,13 @@ _a15 = symbol15;
10774
10832
  var import_provider31 = require("@ai-sdk/provider");
10775
10833
  function createProviderRegistry(providers, {
10776
10834
  separator = ":",
10777
- languageModelMiddleware
10835
+ languageModelMiddleware,
10836
+ imageModelMiddleware
10778
10837
  } = {}) {
10779
10838
  const registry = new DefaultProviderRegistry({
10780
10839
  separator,
10781
- languageModelMiddleware
10840
+ languageModelMiddleware,
10841
+ imageModelMiddleware
10782
10842
  });
10783
10843
  for (const [id, provider] of Object.entries(providers)) {
10784
10844
  registry.registerProvider({ id, provider });
@@ -10789,11 +10849,13 @@ var experimental_createProviderRegistry = createProviderRegistry;
10789
10849
  var DefaultProviderRegistry = class {
10790
10850
  constructor({
10791
10851
  separator,
10792
- languageModelMiddleware
10852
+ languageModelMiddleware,
10853
+ imageModelMiddleware
10793
10854
  }) {
10794
10855
  this.providers = {};
10795
10856
  this.separator = separator;
10796
10857
  this.languageModelMiddleware = languageModelMiddleware;
10858
+ this.imageModelMiddleware = imageModelMiddleware;
10797
10859
  }
10798
10860
  registerProvider({
10799
10861
  id,
@@ -10859,10 +10921,16 @@ var DefaultProviderRegistry = class {
10859
10921
  var _a16;
10860
10922
  const [providerId, modelId] = this.splitId(id, "imageModel");
10861
10923
  const provider = this.getProvider(providerId, "imageModel");
10862
- const model = (_a16 = provider.imageModel) == null ? void 0 : _a16.call(provider, modelId);
10924
+ let model = (_a16 = provider.imageModel) == null ? void 0 : _a16.call(provider, modelId);
10863
10925
  if (model == null) {
10864
10926
  throw new import_provider31.NoSuchModelError({ modelId: id, modelType: "imageModel" });
10865
10927
  }
10928
+ if (this.imageModelMiddleware != null) {
10929
+ model = wrapImageModel({
10930
+ model,
10931
+ middleware: this.imageModelMiddleware
10932
+ });
10933
+ }
10866
10934
  return model;
10867
10935
  }
10868
10936
  transcriptionModel(id) {
@@ -12021,6 +12089,7 @@ var TextStreamChatTransport = class extends HttpChatTransport {
12021
12089
  userModelMessageSchema,
12022
12090
  validateUIMessages,
12023
12091
  wrapEmbeddingModel,
12092
+ wrapImageModel,
12024
12093
  wrapLanguageModel,
12025
12094
  wrapProvider,
12026
12095
  zodSchema