ai 4.1.14 → 4.1.16

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,24 @@
1
1
  # ai
2
2
 
3
+ ## 4.1.16
4
+
5
+ ### Patch Changes
6
+
7
+ - 7e299a4: feat (ai/core): wrapLanguageModel can apply multiple middlewares
8
+
9
+ ## 4.1.15
10
+
11
+ ### Patch Changes
12
+
13
+ - d89c3b9: feat (provider): add image model support to provider specification
14
+ - d89c3b9: feat (core): type ahead for model ids with custom provider
15
+ - 08f54fc: chore (ai/core): move custom provider to stable
16
+ - Updated dependencies [d89c3b9]
17
+ - @ai-sdk/provider@1.0.7
18
+ - @ai-sdk/provider-utils@2.1.6
19
+ - @ai-sdk/ui-utils@1.1.8
20
+ - @ai-sdk/react@1.1.8
21
+
3
22
  ## 4.1.14
4
23
 
5
24
  ### Patch Changes
package/dist/index.d.mts CHANGED
@@ -2,7 +2,7 @@ import { IDGenerator } from '@ai-sdk/provider-utils';
2
2
  export { CoreToolCall, CoreToolResult, IDGenerator, ToolCall, ToolResult, createIdGenerator, generateId } from '@ai-sdk/provider-utils';
3
3
  import { DataStreamString, ToolInvocation, Attachment, Schema, DeepPartial, Message, JSONValue as JSONValue$1, AssistantMessage, DataMessage } from '@ai-sdk/ui-utils';
4
4
  export { AssistantMessage, AssistantStatus, Attachment, ChatRequest, ChatRequestOptions, CreateMessage, DataMessage, DataStreamPart, DeepPartial, IdGenerator, JSONValue, Message, RequestOptions, Schema, ToolInvocation, UseAssistantOptions, formatAssistantStreamPart, formatDataStreamPart, jsonSchema, parseAssistantStreamPart, parseDataStreamPart, processDataStream, processTextStream } from '@ai-sdk/ui-utils';
5
- import { JSONValue, EmbeddingModelV1, EmbeddingModelV1Embedding, ImageModelV1, ImageModelV1CallWarning, LanguageModelV1, LanguageModelV1FinishReason, LanguageModelV1LogProbs, LanguageModelV1CallWarning, LanguageModelV1ProviderMetadata, LanguageModelV1CallOptions, AISDKError, LanguageModelV1FunctionToolCall, JSONSchema7, NoSuchModelError } from '@ai-sdk/provider';
5
+ import { JSONValue, EmbeddingModelV1, EmbeddingModelV1Embedding, ImageModelV1, ImageModelV1CallWarning, LanguageModelV1, LanguageModelV1FinishReason, LanguageModelV1LogProbs, LanguageModelV1CallWarning, LanguageModelV1ProviderMetadata, LanguageModelV1CallOptions, AISDKError, LanguageModelV1FunctionToolCall, JSONSchema7, ProviderV1, NoSuchModelError } from '@ai-sdk/provider';
6
6
  export { AISDKError, APICallError, EmptyResponseBodyError, InvalidPromptError, InvalidResponseDataError, JSONParseError, LanguageModelV1, LanguageModelV1CallOptions, LanguageModelV1Prompt, LanguageModelV1StreamPart, LoadAPIKeyError, NoContentGeneratedError, NoSuchModelError, TypeValidationError, UnsupportedFunctionalityError } from '@ai-sdk/provider';
7
7
  import { ServerResponse } from 'node:http';
8
8
  import { AttributeValue, Tracer } from '@opentelemetry/api';
@@ -190,7 +190,7 @@ type LanguageModelResponseMetadata = {
190
190
  };
191
191
 
192
192
  /**
193
- * Provider for language and text embedding models.
193
+ * Provider for language, text embedding, and image models.
194
194
  */
195
195
  type Provider = {
196
196
  /**
@@ -215,6 +215,15 @@ type Provider = {
215
215
  @throws {NoSuchModelError} If no such model exists.
216
216
  */
217
217
  textEmbeddingModel(modelId: string): EmbeddingModel<string>;
218
+ /**
219
+ Returns the image model with the given id.
220
+ The model id is then passed to the provider function to get the model.
221
+
222
+ @param {string} id - The id of the model to return.
223
+
224
+ @returns {ImageModel} The image model associated with the id
225
+ */
226
+ imageModel(modelId: string): ImageModel;
218
227
  };
219
228
 
220
229
  /**
@@ -2459,23 +2468,23 @@ declare function extractReasoningMiddleware({ tagName, separator, }: {
2459
2468
  *
2460
2469
  * @param options - Configuration options for wrapping the language model.
2461
2470
  * @param options.model - The original LanguageModelV1 instance to be wrapped.
2462
- * @param options.middleware - The middleware to be applied to the language model.
2471
+ * @param options.middleware - The middleware to be applied to the language 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.
2463
2472
  * @param options.modelId - Optional custom model ID to override the original model's ID.
2464
2473
  * @param options.providerId - Optional custom provider ID to override the original model's provider.
2465
2474
  * @returns A new LanguageModelV1 instance with middleware applied.
2466
2475
  */
2467
- declare const wrapLanguageModel: ({ model, middleware: { transformParams, wrapGenerate, wrapStream }, modelId, providerId, }: {
2476
+ declare const wrapLanguageModel: ({ model, middleware: middlewareArg, modelId, providerId, }: {
2468
2477
  model: LanguageModelV1;
2469
- middleware: LanguageModelV1Middleware;
2478
+ middleware: LanguageModelV1Middleware | LanguageModelV1Middleware[];
2470
2479
  modelId?: string;
2471
2480
  providerId?: string;
2472
2481
  }) => LanguageModelV1;
2473
2482
  /**
2474
2483
  * @deprecated Use `wrapLanguageModel` instead.
2475
2484
  */
2476
- declare const experimental_wrapLanguageModel: ({ model, middleware: { transformParams, wrapGenerate, wrapStream }, modelId, providerId, }: {
2485
+ declare const experimental_wrapLanguageModel: ({ model, middleware: middlewareArg, modelId, providerId, }: {
2477
2486
  model: LanguageModelV1;
2478
- middleware: LanguageModelV1Middleware;
2487
+ middleware: LanguageModelV1Middleware | LanguageModelV1Middleware[];
2479
2488
  modelId?: string;
2480
2489
  providerId?: string;
2481
2490
  }) => LanguageModelV1;
@@ -2491,11 +2500,21 @@ declare const experimental_wrapLanguageModel: ({ model, middleware: { transformP
2491
2500
  *
2492
2501
  * @throws {NoSuchModelError} Throws when a requested model is not found and no fallback provider is available.
2493
2502
  */
2494
- declare function experimental_customProvider({ languageModels, textEmbeddingModels, fallbackProvider, }: {
2495
- languageModels?: Record<string, LanguageModelV1>;
2496
- textEmbeddingModels?: Record<string, EmbeddingModelV1<string>>;
2497
- fallbackProvider?: Provider;
2498
- }): Provider;
2503
+ declare function customProvider<LANGUAGE_MODELS extends Record<string, LanguageModelV1>, EMBEDDING_MODELS extends Record<string, EmbeddingModelV1<string>>, IMAGE_MODELS extends Record<string, ImageModelV1>>({ languageModels, textEmbeddingModels, imageModels, fallbackProvider, }: {
2504
+ languageModels?: LANGUAGE_MODELS;
2505
+ textEmbeddingModels?: EMBEDDING_MODELS;
2506
+ imageModels?: IMAGE_MODELS;
2507
+ fallbackProvider?: ProviderV1;
2508
+ }): Provider & {
2509
+ languageModel(modelId: ExtractModelId<LANGUAGE_MODELS>): LanguageModelV1;
2510
+ textEmbeddingModel(modelId: ExtractModelId<EMBEDDING_MODELS>): EmbeddingModelV1<string>;
2511
+ imageModel(modelId: ExtractModelId<IMAGE_MODELS>): ImageModelV1;
2512
+ };
2513
+ /**
2514
+ * @deprecated Use `customProvider` instead.
2515
+ */
2516
+ declare const experimental_customProvider: typeof customProvider;
2517
+ type ExtractModelId<MODELS extends Record<string, unknown>> = Extract<keyof MODELS, string>;
2499
2518
 
2500
2519
  declare const symbol$b: unique symbol;
2501
2520
  declare class NoSuchProviderError extends NoSuchModelError {
@@ -2515,7 +2534,7 @@ declare class NoSuchProviderError extends NoSuchModelError {
2515
2534
  /**
2516
2535
  * Creates a registry for the given providers.
2517
2536
  */
2518
- declare function experimental_createProviderRegistry(providers: Record<string, Provider>): Provider;
2537
+ declare function experimental_createProviderRegistry(providers: Record<string, ProviderV1>): Provider;
2519
2538
 
2520
2539
  /**
2521
2540
  * Calculates the cosine similarity between two vectors. This is a useful metric for
@@ -2858,4 +2877,4 @@ declare namespace llamaindexAdapter {
2858
2877
  };
2859
2878
  }
2860
2879
 
2861
- export { AssistantContent, AssistantResponse, CallWarning, CoreAssistantMessage, CoreMessage, CoreSystemMessage, CoreTool, CoreToolCallUnion, CoreToolChoice, CoreToolMessage, CoreToolResultUnion, CoreUserMessage, DataContent, DataStreamWriter, DownloadError, EmbedManyResult, EmbedResult, Embedding, EmbeddingModel, EmbeddingModelUsage, GenerateImageResult as Experimental_GenerateImageResult, GeneratedImage as Experimental_GeneratedImage, Experimental_LanguageModelV1Middleware, FilePart, FinishReason, GenerateObjectResult, GenerateTextResult, ImageModel, ImageGenerationWarning as ImageModelCallWarning, ImageModelResponseMetadata, ImagePart, InvalidArgumentError, InvalidDataContentError, InvalidMessageRoleError, InvalidToolArgumentsError, langchainAdapter as LangChainAdapter, LanguageModel, LanguageModelRequestMetadata, LanguageModelResponseMetadata, LanguageModelUsage, LanguageModelV1Middleware, llamaindexAdapter as LlamaIndexAdapter, LogProbs, MessageConversionError, NoImageGeneratedError, NoObjectGeneratedError, NoOutputSpecifiedError, NoSuchProviderError, NoSuchToolError, ObjectStreamPart, output as Output, Provider, ProviderMetadata, RetryError, StepResult, StreamData, StreamObjectResult, StreamTextResult, StreamTextTransform, TelemetrySettings, TextPart, TextStreamPart, Tool, ToolCallPart, ToolCallRepairError, ToolCallRepairFunction, ToolCallUnion, ToolChoice, ToolContent, ToolExecutionError, ToolExecutionOptions, ToolResultPart, ToolResultUnion, ToolSet, UserContent, appendClientMessage, appendResponseMessages, convertToCoreMessages, coreAssistantMessageSchema, coreMessageSchema, coreSystemMessageSchema, coreToolMessageSchema, coreUserMessageSchema, cosineSimilarity, createDataStream, createDataStreamResponse, embed, embedMany, experimental_createProviderRegistry, experimental_customProvider, generateImage as experimental_generateImage, experimental_wrapLanguageModel, extractReasoningMiddleware, generateObject, generateText, pipeDataStreamToResponse, simulateReadableStream, smoothStream, streamObject, streamText, tool, wrapLanguageModel };
2880
+ export { AssistantContent, AssistantResponse, CallWarning, CoreAssistantMessage, CoreMessage, CoreSystemMessage, CoreTool, CoreToolCallUnion, CoreToolChoice, CoreToolMessage, CoreToolResultUnion, CoreUserMessage, DataContent, DataStreamWriter, DownloadError, EmbedManyResult, EmbedResult, Embedding, EmbeddingModel, EmbeddingModelUsage, GenerateImageResult as Experimental_GenerateImageResult, GeneratedImage as Experimental_GeneratedImage, Experimental_LanguageModelV1Middleware, FilePart, FinishReason, GenerateObjectResult, GenerateTextResult, ImageModel, ImageGenerationWarning as ImageModelCallWarning, ImageModelResponseMetadata, ImagePart, InvalidArgumentError, InvalidDataContentError, InvalidMessageRoleError, InvalidToolArgumentsError, langchainAdapter as LangChainAdapter, LanguageModel, LanguageModelRequestMetadata, LanguageModelResponseMetadata, LanguageModelUsage, LanguageModelV1Middleware, llamaindexAdapter as LlamaIndexAdapter, LogProbs, MessageConversionError, NoImageGeneratedError, NoObjectGeneratedError, NoOutputSpecifiedError, NoSuchProviderError, NoSuchToolError, ObjectStreamPart, output as Output, Provider, ProviderMetadata, RetryError, StepResult, StreamData, StreamObjectResult, StreamTextResult, StreamTextTransform, TelemetrySettings, TextPart, TextStreamPart, Tool, ToolCallPart, ToolCallRepairError, ToolCallRepairFunction, ToolCallUnion, ToolChoice, ToolContent, ToolExecutionError, ToolExecutionOptions, ToolResultPart, ToolResultUnion, ToolSet, UserContent, appendClientMessage, appendResponseMessages, convertToCoreMessages, coreAssistantMessageSchema, coreMessageSchema, coreSystemMessageSchema, coreToolMessageSchema, coreUserMessageSchema, cosineSimilarity, createDataStream, createDataStreamResponse, customProvider, embed, embedMany, experimental_createProviderRegistry, experimental_customProvider, generateImage as experimental_generateImage, experimental_wrapLanguageModel, extractReasoningMiddleware, generateObject, generateText, pipeDataStreamToResponse, simulateReadableStream, smoothStream, streamObject, streamText, tool, wrapLanguageModel };
package/dist/index.d.ts CHANGED
@@ -2,7 +2,7 @@ import { IDGenerator } from '@ai-sdk/provider-utils';
2
2
  export { CoreToolCall, CoreToolResult, IDGenerator, ToolCall, ToolResult, createIdGenerator, generateId } from '@ai-sdk/provider-utils';
3
3
  import { DataStreamString, ToolInvocation, Attachment, Schema, DeepPartial, Message, JSONValue as JSONValue$1, AssistantMessage, DataMessage } from '@ai-sdk/ui-utils';
4
4
  export { AssistantMessage, AssistantStatus, Attachment, ChatRequest, ChatRequestOptions, CreateMessage, DataMessage, DataStreamPart, DeepPartial, IdGenerator, JSONValue, Message, RequestOptions, Schema, ToolInvocation, UseAssistantOptions, formatAssistantStreamPart, formatDataStreamPart, jsonSchema, parseAssistantStreamPart, parseDataStreamPart, processDataStream, processTextStream } from '@ai-sdk/ui-utils';
5
- import { JSONValue, EmbeddingModelV1, EmbeddingModelV1Embedding, ImageModelV1, ImageModelV1CallWarning, LanguageModelV1, LanguageModelV1FinishReason, LanguageModelV1LogProbs, LanguageModelV1CallWarning, LanguageModelV1ProviderMetadata, LanguageModelV1CallOptions, AISDKError, LanguageModelV1FunctionToolCall, JSONSchema7, NoSuchModelError } from '@ai-sdk/provider';
5
+ import { JSONValue, EmbeddingModelV1, EmbeddingModelV1Embedding, ImageModelV1, ImageModelV1CallWarning, LanguageModelV1, LanguageModelV1FinishReason, LanguageModelV1LogProbs, LanguageModelV1CallWarning, LanguageModelV1ProviderMetadata, LanguageModelV1CallOptions, AISDKError, LanguageModelV1FunctionToolCall, JSONSchema7, ProviderV1, NoSuchModelError } from '@ai-sdk/provider';
6
6
  export { AISDKError, APICallError, EmptyResponseBodyError, InvalidPromptError, InvalidResponseDataError, JSONParseError, LanguageModelV1, LanguageModelV1CallOptions, LanguageModelV1Prompt, LanguageModelV1StreamPart, LoadAPIKeyError, NoContentGeneratedError, NoSuchModelError, TypeValidationError, UnsupportedFunctionalityError } from '@ai-sdk/provider';
7
7
  import { ServerResponse } from 'node:http';
8
8
  import { AttributeValue, Tracer } from '@opentelemetry/api';
@@ -190,7 +190,7 @@ type LanguageModelResponseMetadata = {
190
190
  };
191
191
 
192
192
  /**
193
- * Provider for language and text embedding models.
193
+ * Provider for language, text embedding, and image models.
194
194
  */
195
195
  type Provider = {
196
196
  /**
@@ -215,6 +215,15 @@ type Provider = {
215
215
  @throws {NoSuchModelError} If no such model exists.
216
216
  */
217
217
  textEmbeddingModel(modelId: string): EmbeddingModel<string>;
218
+ /**
219
+ Returns the image model with the given id.
220
+ The model id is then passed to the provider function to get the model.
221
+
222
+ @param {string} id - The id of the model to return.
223
+
224
+ @returns {ImageModel} The image model associated with the id
225
+ */
226
+ imageModel(modelId: string): ImageModel;
218
227
  };
219
228
 
220
229
  /**
@@ -2459,23 +2468,23 @@ declare function extractReasoningMiddleware({ tagName, separator, }: {
2459
2468
  *
2460
2469
  * @param options - Configuration options for wrapping the language model.
2461
2470
  * @param options.model - The original LanguageModelV1 instance to be wrapped.
2462
- * @param options.middleware - The middleware to be applied to the language model.
2471
+ * @param options.middleware - The middleware to be applied to the language 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.
2463
2472
  * @param options.modelId - Optional custom model ID to override the original model's ID.
2464
2473
  * @param options.providerId - Optional custom provider ID to override the original model's provider.
2465
2474
  * @returns A new LanguageModelV1 instance with middleware applied.
2466
2475
  */
2467
- declare const wrapLanguageModel: ({ model, middleware: { transformParams, wrapGenerate, wrapStream }, modelId, providerId, }: {
2476
+ declare const wrapLanguageModel: ({ model, middleware: middlewareArg, modelId, providerId, }: {
2468
2477
  model: LanguageModelV1;
2469
- middleware: LanguageModelV1Middleware;
2478
+ middleware: LanguageModelV1Middleware | LanguageModelV1Middleware[];
2470
2479
  modelId?: string;
2471
2480
  providerId?: string;
2472
2481
  }) => LanguageModelV1;
2473
2482
  /**
2474
2483
  * @deprecated Use `wrapLanguageModel` instead.
2475
2484
  */
2476
- declare const experimental_wrapLanguageModel: ({ model, middleware: { transformParams, wrapGenerate, wrapStream }, modelId, providerId, }: {
2485
+ declare const experimental_wrapLanguageModel: ({ model, middleware: middlewareArg, modelId, providerId, }: {
2477
2486
  model: LanguageModelV1;
2478
- middleware: LanguageModelV1Middleware;
2487
+ middleware: LanguageModelV1Middleware | LanguageModelV1Middleware[];
2479
2488
  modelId?: string;
2480
2489
  providerId?: string;
2481
2490
  }) => LanguageModelV1;
@@ -2491,11 +2500,21 @@ declare const experimental_wrapLanguageModel: ({ model, middleware: { transformP
2491
2500
  *
2492
2501
  * @throws {NoSuchModelError} Throws when a requested model is not found and no fallback provider is available.
2493
2502
  */
2494
- declare function experimental_customProvider({ languageModels, textEmbeddingModels, fallbackProvider, }: {
2495
- languageModels?: Record<string, LanguageModelV1>;
2496
- textEmbeddingModels?: Record<string, EmbeddingModelV1<string>>;
2497
- fallbackProvider?: Provider;
2498
- }): Provider;
2503
+ declare function customProvider<LANGUAGE_MODELS extends Record<string, LanguageModelV1>, EMBEDDING_MODELS extends Record<string, EmbeddingModelV1<string>>, IMAGE_MODELS extends Record<string, ImageModelV1>>({ languageModels, textEmbeddingModels, imageModels, fallbackProvider, }: {
2504
+ languageModels?: LANGUAGE_MODELS;
2505
+ textEmbeddingModels?: EMBEDDING_MODELS;
2506
+ imageModels?: IMAGE_MODELS;
2507
+ fallbackProvider?: ProviderV1;
2508
+ }): Provider & {
2509
+ languageModel(modelId: ExtractModelId<LANGUAGE_MODELS>): LanguageModelV1;
2510
+ textEmbeddingModel(modelId: ExtractModelId<EMBEDDING_MODELS>): EmbeddingModelV1<string>;
2511
+ imageModel(modelId: ExtractModelId<IMAGE_MODELS>): ImageModelV1;
2512
+ };
2513
+ /**
2514
+ * @deprecated Use `customProvider` instead.
2515
+ */
2516
+ declare const experimental_customProvider: typeof customProvider;
2517
+ type ExtractModelId<MODELS extends Record<string, unknown>> = Extract<keyof MODELS, string>;
2499
2518
 
2500
2519
  declare const symbol$b: unique symbol;
2501
2520
  declare class NoSuchProviderError extends NoSuchModelError {
@@ -2515,7 +2534,7 @@ declare class NoSuchProviderError extends NoSuchModelError {
2515
2534
  /**
2516
2535
  * Creates a registry for the given providers.
2517
2536
  */
2518
- declare function experimental_createProviderRegistry(providers: Record<string, Provider>): Provider;
2537
+ declare function experimental_createProviderRegistry(providers: Record<string, ProviderV1>): Provider;
2519
2538
 
2520
2539
  /**
2521
2540
  * Calculates the cosine similarity between two vectors. This is a useful metric for
@@ -2858,4 +2877,4 @@ declare namespace llamaindexAdapter {
2858
2877
  };
2859
2878
  }
2860
2879
 
2861
- export { AssistantContent, AssistantResponse, CallWarning, CoreAssistantMessage, CoreMessage, CoreSystemMessage, CoreTool, CoreToolCallUnion, CoreToolChoice, CoreToolMessage, CoreToolResultUnion, CoreUserMessage, DataContent, DataStreamWriter, DownloadError, EmbedManyResult, EmbedResult, Embedding, EmbeddingModel, EmbeddingModelUsage, GenerateImageResult as Experimental_GenerateImageResult, GeneratedImage as Experimental_GeneratedImage, Experimental_LanguageModelV1Middleware, FilePart, FinishReason, GenerateObjectResult, GenerateTextResult, ImageModel, ImageGenerationWarning as ImageModelCallWarning, ImageModelResponseMetadata, ImagePart, InvalidArgumentError, InvalidDataContentError, InvalidMessageRoleError, InvalidToolArgumentsError, langchainAdapter as LangChainAdapter, LanguageModel, LanguageModelRequestMetadata, LanguageModelResponseMetadata, LanguageModelUsage, LanguageModelV1Middleware, llamaindexAdapter as LlamaIndexAdapter, LogProbs, MessageConversionError, NoImageGeneratedError, NoObjectGeneratedError, NoOutputSpecifiedError, NoSuchProviderError, NoSuchToolError, ObjectStreamPart, output as Output, Provider, ProviderMetadata, RetryError, StepResult, StreamData, StreamObjectResult, StreamTextResult, StreamTextTransform, TelemetrySettings, TextPart, TextStreamPart, Tool, ToolCallPart, ToolCallRepairError, ToolCallRepairFunction, ToolCallUnion, ToolChoice, ToolContent, ToolExecutionError, ToolExecutionOptions, ToolResultPart, ToolResultUnion, ToolSet, UserContent, appendClientMessage, appendResponseMessages, convertToCoreMessages, coreAssistantMessageSchema, coreMessageSchema, coreSystemMessageSchema, coreToolMessageSchema, coreUserMessageSchema, cosineSimilarity, createDataStream, createDataStreamResponse, embed, embedMany, experimental_createProviderRegistry, experimental_customProvider, generateImage as experimental_generateImage, experimental_wrapLanguageModel, extractReasoningMiddleware, generateObject, generateText, pipeDataStreamToResponse, simulateReadableStream, smoothStream, streamObject, streamText, tool, wrapLanguageModel };
2880
+ export { AssistantContent, AssistantResponse, CallWarning, CoreAssistantMessage, CoreMessage, CoreSystemMessage, CoreTool, CoreToolCallUnion, CoreToolChoice, CoreToolMessage, CoreToolResultUnion, CoreUserMessage, DataContent, DataStreamWriter, DownloadError, EmbedManyResult, EmbedResult, Embedding, EmbeddingModel, EmbeddingModelUsage, GenerateImageResult as Experimental_GenerateImageResult, GeneratedImage as Experimental_GeneratedImage, Experimental_LanguageModelV1Middleware, FilePart, FinishReason, GenerateObjectResult, GenerateTextResult, ImageModel, ImageGenerationWarning as ImageModelCallWarning, ImageModelResponseMetadata, ImagePart, InvalidArgumentError, InvalidDataContentError, InvalidMessageRoleError, InvalidToolArgumentsError, langchainAdapter as LangChainAdapter, LanguageModel, LanguageModelRequestMetadata, LanguageModelResponseMetadata, LanguageModelUsage, LanguageModelV1Middleware, llamaindexAdapter as LlamaIndexAdapter, LogProbs, MessageConversionError, NoImageGeneratedError, NoObjectGeneratedError, NoOutputSpecifiedError, NoSuchProviderError, NoSuchToolError, ObjectStreamPart, output as Output, Provider, ProviderMetadata, RetryError, StepResult, StreamData, StreamObjectResult, StreamTextResult, StreamTextTransform, TelemetrySettings, TextPart, TextStreamPart, Tool, ToolCallPart, ToolCallRepairError, ToolCallRepairFunction, ToolCallUnion, ToolChoice, ToolContent, ToolExecutionError, ToolExecutionOptions, ToolResultPart, ToolResultUnion, ToolSet, UserContent, appendClientMessage, appendResponseMessages, convertToCoreMessages, coreAssistantMessageSchema, coreMessageSchema, coreSystemMessageSchema, coreToolMessageSchema, coreUserMessageSchema, cosineSimilarity, createDataStream, createDataStreamResponse, customProvider, embed, embedMany, experimental_createProviderRegistry, experimental_customProvider, generateImage as experimental_generateImage, experimental_wrapLanguageModel, extractReasoningMiddleware, generateObject, generateText, pipeDataStreamToResponse, simulateReadableStream, smoothStream, streamObject, streamText, tool, wrapLanguageModel };
package/dist/index.js CHANGED
@@ -62,6 +62,7 @@ __export(streams_exports, {
62
62
  createDataStream: () => createDataStream,
63
63
  createDataStreamResponse: () => createDataStreamResponse,
64
64
  createIdGenerator: () => import_provider_utils14.createIdGenerator,
65
+ customProvider: () => customProvider,
65
66
  embed: () => embed,
66
67
  embedMany: () => embedMany,
67
68
  experimental_createProviderRegistry: () => experimental_createProviderRegistry,
@@ -5749,6 +5750,16 @@ function extractReasoningMiddleware({
5749
5750
 
5750
5751
  // core/middleware/wrap-language-model.ts
5751
5752
  var wrapLanguageModel = ({
5753
+ model,
5754
+ middleware: middlewareArg,
5755
+ modelId,
5756
+ providerId
5757
+ }) => {
5758
+ return asArray(middlewareArg).reverse().reduce((wrappedModel, middleware) => {
5759
+ return doWrap({ model: wrappedModel, middleware, modelId, providerId });
5760
+ }, model);
5761
+ };
5762
+ var doWrap = ({
5752
5763
  model,
5753
5764
  middleware: { transformParams, wrapGenerate, wrapStream },
5754
5765
  modelId,
@@ -5870,9 +5881,10 @@ function appendResponseMessages({
5870
5881
 
5871
5882
  // core/registry/custom-provider.ts
5872
5883
  var import_provider19 = require("@ai-sdk/provider");
5873
- function experimental_customProvider({
5884
+ function customProvider({
5874
5885
  languageModels,
5875
5886
  textEmbeddingModels,
5887
+ imageModels,
5876
5888
  fallbackProvider
5877
5889
  }) {
5878
5890
  return {
@@ -5893,9 +5905,19 @@ function experimental_customProvider({
5893
5905
  return fallbackProvider.textEmbeddingModel(modelId);
5894
5906
  }
5895
5907
  throw new import_provider19.NoSuchModelError({ modelId, modelType: "textEmbeddingModel" });
5908
+ },
5909
+ imageModel(modelId) {
5910
+ if (imageModels != null && modelId in imageModels) {
5911
+ return imageModels[modelId];
5912
+ }
5913
+ if (fallbackProvider == null ? void 0 : fallbackProvider.imageModel) {
5914
+ return fallbackProvider.imageModel(modelId);
5915
+ }
5916
+ throw new import_provider19.NoSuchModelError({ modelId, modelType: "imageModel" });
5896
5917
  }
5897
5918
  };
5898
5919
  }
5920
+ var experimental_customProvider = customProvider;
5899
5921
 
5900
5922
  // core/registry/no-such-provider-error.ts
5901
5923
  var import_provider20 = require("@ai-sdk/provider");
@@ -5935,7 +5957,10 @@ var DefaultProviderRegistry = class {
5935
5957
  constructor() {
5936
5958
  this.providers = {};
5937
5959
  }
5938
- registerProvider({ id, provider }) {
5960
+ registerProvider({
5961
+ id,
5962
+ provider
5963
+ }) {
5939
5964
  this.providers[id] = provider;
5940
5965
  }
5941
5966
  getProvider(id) {
@@ -5983,6 +6008,16 @@ var DefaultProviderRegistry = class {
5983
6008
  }
5984
6009
  return model;
5985
6010
  }
6011
+ imageModel(id) {
6012
+ var _a15;
6013
+ const [providerId, modelId] = this.splitId(id, "imageModel");
6014
+ const provider = this.getProvider(providerId);
6015
+ const model = (_a15 = provider.imageModel) == null ? void 0 : _a15.call(provider, modelId);
6016
+ if (model == null) {
6017
+ throw new import_provider21.NoSuchModelError({ modelId: id, modelType: "imageModel" });
6018
+ }
6019
+ return model;
6020
+ }
5986
6021
  /**
5987
6022
  * @deprecated Use `textEmbeddingModel` instead.
5988
6023
  */
@@ -6429,6 +6464,7 @@ var StreamData = class {
6429
6464
  createDataStream,
6430
6465
  createDataStreamResponse,
6431
6466
  createIdGenerator,
6467
+ customProvider,
6432
6468
  embed,
6433
6469
  embedMany,
6434
6470
  experimental_createProviderRegistry,