ai 4.2.5 → 4.2.6

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,13 @@
1
1
  # ai
2
2
 
3
+ ## 4.2.6
4
+
5
+ ### Patch Changes
6
+
7
+ - 625591b: feat (ai/core): auto-complete for provider registry
8
+ - 6a1506f: feat (ai/core): custom separator support for provider registry
9
+ - ea3d998: chore (ai/core): move provider registry to stable
10
+
3
11
  ## 4.2.5
4
12
 
5
13
  ### Patch Changes
package/README.md CHANGED
@@ -43,14 +43,20 @@ console.log(text);
43
43
 
44
44
  ### AI SDK UI
45
45
 
46
- The [AI SDK UI](https://sdk.vercel.ai/docs/ai-sdk-ui/overview) module provides a set of hooks that help you build chatbots and generative user interfaces. These hooks are framework agnostic, so they can be used in Next.js, React, Svelte, Vue, and SolidJS.
46
+ The [AI SDK UI](https://sdk.vercel.ai/docs/ai-sdk-ui/overview) module provides a set of hooks that help you build chatbots and generative user interfaces. These hooks are framework agnostic, so they can be used in Next.js, React, Svelte, and Vue.
47
+
48
+ You need to install the package for your framework:
49
+
50
+ ```shell
51
+ npm install @ai-sdk/react
52
+ ```
47
53
 
48
54
  ###### @/app/page.tsx (Next.js App Router)
49
55
 
50
56
  ```tsx
51
57
  'use client';
52
58
 
53
- import { useChat } from 'ai/react';
59
+ import { useChat } from '@ai-sdk/react';
54
60
 
55
61
  export default function Page() {
56
62
  const { messages, input, handleSubmit, handleInputChange, status } =
@@ -60,8 +66,15 @@ export default function Page() {
60
66
  <div>
61
67
  {messages.map(message => (
62
68
  <div key={message.id}>
63
- <div>{message.role}</div>
64
- <div>{message.content}</div>
69
+ <strong>{`${message.role}: `}</strong>
70
+ {message.parts.map((part, index) => {
71
+ switch (part.type) {
72
+ case 'text':
73
+ return <span key={index}>{part.text}</span>;
74
+
75
+ // other cases can handle images, tool calls, etc
76
+ }
77
+ })}
65
78
  </div>
66
79
  ))}
67
80
 
package/dist/index.d.mts CHANGED
@@ -3937,10 +3937,25 @@ declare class NoSuchProviderError extends NoSuchModelError {
3937
3937
  static isInstance(error: unknown): error is NoSuchProviderError;
3938
3938
  }
3939
3939
 
3940
+ type ExtractLiteralUnion<T> = T extends string ? string extends T ? never : T : never;
3941
+ interface ProviderRegistryProvider<PROVIDERS extends Record<string, ProviderV1> = Record<string, ProviderV1>, SEPARATOR extends string = ':'> {
3942
+ languageModel<KEY extends keyof PROVIDERS>(id: KEY extends string ? `${KEY & string}${SEPARATOR}${ExtractLiteralUnion<Parameters<NonNullable<PROVIDERS[KEY]['languageModel']>>[0]>}` : never): LanguageModel;
3943
+ languageModel<KEY extends keyof PROVIDERS>(id: KEY extends string ? `${KEY & string}${SEPARATOR}${string}` : never): LanguageModel;
3944
+ textEmbeddingModel<KEY extends keyof PROVIDERS>(id: KEY extends string ? `${KEY & string}${SEPARATOR}${ExtractLiteralUnion<Parameters<NonNullable<PROVIDERS[KEY]['textEmbeddingModel']>>[0]>}` : never): EmbeddingModel<string>;
3945
+ textEmbeddingModel<KEY extends keyof PROVIDERS>(id: KEY extends string ? `${KEY & string}${SEPARATOR}${string}` : never): EmbeddingModel<string>;
3946
+ imageModel<KEY extends keyof PROVIDERS>(id: KEY extends string ? `${KEY & string}${SEPARATOR}${ExtractLiteralUnion<Parameters<NonNullable<PROVIDERS[KEY]['imageModel']>>[0]>}` : never): ImageModel;
3947
+ imageModel<KEY extends keyof PROVIDERS>(id: KEY extends string ? `${KEY & string}${SEPARATOR}${string}` : never): ImageModel;
3948
+ }
3940
3949
  /**
3941
3950
  * Creates a registry for the given providers.
3942
3951
  */
3943
- declare function experimental_createProviderRegistry(providers: Record<string, ProviderV1>): Provider;
3952
+ declare function createProviderRegistry<PROVIDERS extends Record<string, ProviderV1>, SEPARATOR extends string = ':'>(providers: PROVIDERS, { separator, }?: {
3953
+ separator?: SEPARATOR;
3954
+ }): ProviderRegistryProvider<PROVIDERS, SEPARATOR>;
3955
+ /**
3956
+ * @deprecated Use `createProviderRegistry` instead.
3957
+ */
3958
+ declare const experimental_createProviderRegistry: typeof createProviderRegistry;
3944
3959
 
3945
3960
  /**
3946
3961
  * Calculates the cosine similarity between two vectors. This is a useful metric for
@@ -4361,4 +4376,4 @@ declare namespace llamaindexAdapter {
4361
4376
  };
4362
4377
  }
4363
4378
 
4364
- export { AssistantContent, AssistantResponse, CallWarning, CoreAssistantMessage, CoreMessage, CoreSystemMessage, CoreTool, CoreToolCallUnion, CoreToolChoice, CoreToolMessage, CoreToolResultUnion, CoreUserMessage, DataContent, DataStreamOptions, DataStreamWriter, DownloadError, EmbedManyResult, EmbedResult, Embedding, EmbeddingModel, EmbeddingModelUsage, GenerateImageResult as Experimental_GenerateImageResult, GeneratedFile as Experimental_GeneratedImage, Experimental_LanguageModelV1Middleware, FilePart, FinishReason, GenerateObjectResult, GenerateTextOnStepFinishCallback, GenerateTextResult, GeneratedFile, ImageModel, ImageGenerationWarning as ImageModelCallWarning, ImageModelResponseMetadata, ImagePart, InvalidArgumentError, InvalidDataContentError, InvalidMessageRoleError, InvalidStreamPartError, InvalidToolArgumentsError, JSONRPCError, JSONRPCMessage, JSONRPCNotification, JSONRPCRequest, JSONRPCResponse, langchainAdapter as LangChainAdapter, LanguageModel, LanguageModelRequestMetadata, LanguageModelResponseMetadata, LanguageModelUsage, LanguageModelV1Middleware, llamaindexAdapter as LlamaIndexAdapter, LogProbs, MCPClientError, MCPTransport, MessageConversionError, NoImageGeneratedError, NoObjectGeneratedError, NoOutputSpecifiedError, NoSuchProviderError, NoSuchToolError, ObjectStreamPart, output as Output, Provider, ProviderMetadata, RepairTextFunction, RetryError, StepResult, StreamData, StreamObjectOnFinishCallback, StreamObjectResult, StreamTextOnChunkCallback, StreamTextOnErrorCallback, StreamTextOnFinishCallback, StreamTextOnStepFinishCallback, 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, defaultSettingsMiddleware, embed, embedMany, createMCPClient as experimental_createMCPClient, experimental_createProviderRegistry, experimental_customProvider, generateImage as experimental_generateImage, experimental_wrapLanguageModel, extractReasoningMiddleware, generateObject, generateText, pipeDataStreamToResponse, simulateReadableStream, simulateStreamingMiddleware, smoothStream, streamObject, streamText, tool, wrapLanguageModel };
4379
+ export { AssistantContent, AssistantResponse, CallWarning, CoreAssistantMessage, CoreMessage, CoreSystemMessage, CoreTool, CoreToolCallUnion, CoreToolChoice, CoreToolMessage, CoreToolResultUnion, CoreUserMessage, DataContent, DataStreamOptions, DataStreamWriter, DownloadError, EmbedManyResult, EmbedResult, Embedding, EmbeddingModel, EmbeddingModelUsage, GenerateImageResult as Experimental_GenerateImageResult, GeneratedFile as Experimental_GeneratedImage, Experimental_LanguageModelV1Middleware, FilePart, FinishReason, GenerateObjectResult, GenerateTextOnStepFinishCallback, GenerateTextResult, GeneratedFile, ImageModel, ImageGenerationWarning as ImageModelCallWarning, ImageModelResponseMetadata, ImagePart, InvalidArgumentError, InvalidDataContentError, InvalidMessageRoleError, InvalidStreamPartError, InvalidToolArgumentsError, JSONRPCError, JSONRPCMessage, JSONRPCNotification, JSONRPCRequest, JSONRPCResponse, langchainAdapter as LangChainAdapter, LanguageModel, LanguageModelRequestMetadata, LanguageModelResponseMetadata, LanguageModelUsage, LanguageModelV1Middleware, llamaindexAdapter as LlamaIndexAdapter, LogProbs, MCPClientError, MCPTransport, MessageConversionError, NoImageGeneratedError, NoObjectGeneratedError, NoOutputSpecifiedError, NoSuchProviderError, NoSuchToolError, ObjectStreamPart, output as Output, Provider, ProviderMetadata, ProviderRegistryProvider, RepairTextFunction, RetryError, StepResult, StreamData, StreamObjectOnFinishCallback, StreamObjectResult, StreamTextOnChunkCallback, StreamTextOnErrorCallback, StreamTextOnFinishCallback, StreamTextOnStepFinishCallback, 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, createProviderRegistry, customProvider, defaultSettingsMiddleware, embed, embedMany, createMCPClient as experimental_createMCPClient, experimental_createProviderRegistry, experimental_customProvider, generateImage as experimental_generateImage, experimental_wrapLanguageModel, extractReasoningMiddleware, generateObject, generateText, pipeDataStreamToResponse, simulateReadableStream, simulateStreamingMiddleware, smoothStream, streamObject, streamText, tool, wrapLanguageModel };
package/dist/index.d.ts CHANGED
@@ -3937,10 +3937,25 @@ declare class NoSuchProviderError extends NoSuchModelError {
3937
3937
  static isInstance(error: unknown): error is NoSuchProviderError;
3938
3938
  }
3939
3939
 
3940
+ type ExtractLiteralUnion<T> = T extends string ? string extends T ? never : T : never;
3941
+ interface ProviderRegistryProvider<PROVIDERS extends Record<string, ProviderV1> = Record<string, ProviderV1>, SEPARATOR extends string = ':'> {
3942
+ languageModel<KEY extends keyof PROVIDERS>(id: KEY extends string ? `${KEY & string}${SEPARATOR}${ExtractLiteralUnion<Parameters<NonNullable<PROVIDERS[KEY]['languageModel']>>[0]>}` : never): LanguageModel;
3943
+ languageModel<KEY extends keyof PROVIDERS>(id: KEY extends string ? `${KEY & string}${SEPARATOR}${string}` : never): LanguageModel;
3944
+ textEmbeddingModel<KEY extends keyof PROVIDERS>(id: KEY extends string ? `${KEY & string}${SEPARATOR}${ExtractLiteralUnion<Parameters<NonNullable<PROVIDERS[KEY]['textEmbeddingModel']>>[0]>}` : never): EmbeddingModel<string>;
3945
+ textEmbeddingModel<KEY extends keyof PROVIDERS>(id: KEY extends string ? `${KEY & string}${SEPARATOR}${string}` : never): EmbeddingModel<string>;
3946
+ imageModel<KEY extends keyof PROVIDERS>(id: KEY extends string ? `${KEY & string}${SEPARATOR}${ExtractLiteralUnion<Parameters<NonNullable<PROVIDERS[KEY]['imageModel']>>[0]>}` : never): ImageModel;
3947
+ imageModel<KEY extends keyof PROVIDERS>(id: KEY extends string ? `${KEY & string}${SEPARATOR}${string}` : never): ImageModel;
3948
+ }
3940
3949
  /**
3941
3950
  * Creates a registry for the given providers.
3942
3951
  */
3943
- declare function experimental_createProviderRegistry(providers: Record<string, ProviderV1>): Provider;
3952
+ declare function createProviderRegistry<PROVIDERS extends Record<string, ProviderV1>, SEPARATOR extends string = ':'>(providers: PROVIDERS, { separator, }?: {
3953
+ separator?: SEPARATOR;
3954
+ }): ProviderRegistryProvider<PROVIDERS, SEPARATOR>;
3955
+ /**
3956
+ * @deprecated Use `createProviderRegistry` instead.
3957
+ */
3958
+ declare const experimental_createProviderRegistry: typeof createProviderRegistry;
3944
3959
 
3945
3960
  /**
3946
3961
  * Calculates the cosine similarity between two vectors. This is a useful metric for
@@ -4361,4 +4376,4 @@ declare namespace llamaindexAdapter {
4361
4376
  };
4362
4377
  }
4363
4378
 
4364
- export { AssistantContent, AssistantResponse, CallWarning, CoreAssistantMessage, CoreMessage, CoreSystemMessage, CoreTool, CoreToolCallUnion, CoreToolChoice, CoreToolMessage, CoreToolResultUnion, CoreUserMessage, DataContent, DataStreamOptions, DataStreamWriter, DownloadError, EmbedManyResult, EmbedResult, Embedding, EmbeddingModel, EmbeddingModelUsage, GenerateImageResult as Experimental_GenerateImageResult, GeneratedFile as Experimental_GeneratedImage, Experimental_LanguageModelV1Middleware, FilePart, FinishReason, GenerateObjectResult, GenerateTextOnStepFinishCallback, GenerateTextResult, GeneratedFile, ImageModel, ImageGenerationWarning as ImageModelCallWarning, ImageModelResponseMetadata, ImagePart, InvalidArgumentError, InvalidDataContentError, InvalidMessageRoleError, InvalidStreamPartError, InvalidToolArgumentsError, JSONRPCError, JSONRPCMessage, JSONRPCNotification, JSONRPCRequest, JSONRPCResponse, langchainAdapter as LangChainAdapter, LanguageModel, LanguageModelRequestMetadata, LanguageModelResponseMetadata, LanguageModelUsage, LanguageModelV1Middleware, llamaindexAdapter as LlamaIndexAdapter, LogProbs, MCPClientError, MCPTransport, MessageConversionError, NoImageGeneratedError, NoObjectGeneratedError, NoOutputSpecifiedError, NoSuchProviderError, NoSuchToolError, ObjectStreamPart, output as Output, Provider, ProviderMetadata, RepairTextFunction, RetryError, StepResult, StreamData, StreamObjectOnFinishCallback, StreamObjectResult, StreamTextOnChunkCallback, StreamTextOnErrorCallback, StreamTextOnFinishCallback, StreamTextOnStepFinishCallback, 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, defaultSettingsMiddleware, embed, embedMany, createMCPClient as experimental_createMCPClient, experimental_createProviderRegistry, experimental_customProvider, generateImage as experimental_generateImage, experimental_wrapLanguageModel, extractReasoningMiddleware, generateObject, generateText, pipeDataStreamToResponse, simulateReadableStream, simulateStreamingMiddleware, smoothStream, streamObject, streamText, tool, wrapLanguageModel };
4379
+ export { AssistantContent, AssistantResponse, CallWarning, CoreAssistantMessage, CoreMessage, CoreSystemMessage, CoreTool, CoreToolCallUnion, CoreToolChoice, CoreToolMessage, CoreToolResultUnion, CoreUserMessage, DataContent, DataStreamOptions, DataStreamWriter, DownloadError, EmbedManyResult, EmbedResult, Embedding, EmbeddingModel, EmbeddingModelUsage, GenerateImageResult as Experimental_GenerateImageResult, GeneratedFile as Experimental_GeneratedImage, Experimental_LanguageModelV1Middleware, FilePart, FinishReason, GenerateObjectResult, GenerateTextOnStepFinishCallback, GenerateTextResult, GeneratedFile, ImageModel, ImageGenerationWarning as ImageModelCallWarning, ImageModelResponseMetadata, ImagePart, InvalidArgumentError, InvalidDataContentError, InvalidMessageRoleError, InvalidStreamPartError, InvalidToolArgumentsError, JSONRPCError, JSONRPCMessage, JSONRPCNotification, JSONRPCRequest, JSONRPCResponse, langchainAdapter as LangChainAdapter, LanguageModel, LanguageModelRequestMetadata, LanguageModelResponseMetadata, LanguageModelUsage, LanguageModelV1Middleware, llamaindexAdapter as LlamaIndexAdapter, LogProbs, MCPClientError, MCPTransport, MessageConversionError, NoImageGeneratedError, NoObjectGeneratedError, NoOutputSpecifiedError, NoSuchProviderError, NoSuchToolError, ObjectStreamPart, output as Output, Provider, ProviderMetadata, ProviderRegistryProvider, RepairTextFunction, RetryError, StepResult, StreamData, StreamObjectOnFinishCallback, StreamObjectResult, StreamTextOnChunkCallback, StreamTextOnErrorCallback, StreamTextOnFinishCallback, StreamTextOnStepFinishCallback, 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, createProviderRegistry, customProvider, defaultSettingsMiddleware, embed, embedMany, createMCPClient as experimental_createMCPClient, experimental_createProviderRegistry, experimental_customProvider, generateImage as experimental_generateImage, experimental_wrapLanguageModel, extractReasoningMiddleware, generateObject, generateText, pipeDataStreamToResponse, simulateReadableStream, simulateStreamingMiddleware, smoothStream, streamObject, streamText, tool, wrapLanguageModel };
package/dist/index.js CHANGED
@@ -64,6 +64,7 @@ __export(streams_exports, {
64
64
  createDataStream: () => createDataStream,
65
65
  createDataStreamResponse: () => createDataStreamResponse,
66
66
  createIdGenerator: () => import_provider_utils15.createIdGenerator,
67
+ createProviderRegistry: () => createProviderRegistry,
67
68
  customProvider: () => customProvider,
68
69
  defaultSettingsMiddleware: () => defaultSettingsMiddleware,
69
70
  embed: () => embed,
@@ -6782,16 +6783,22 @@ _a16 = symbol16;
6782
6783
 
6783
6784
  // core/registry/provider-registry.ts
6784
6785
  var import_provider26 = require("@ai-sdk/provider");
6785
- function experimental_createProviderRegistry(providers) {
6786
- const registry = new DefaultProviderRegistry();
6786
+ function createProviderRegistry(providers, {
6787
+ separator = ":"
6788
+ } = {}) {
6789
+ const registry = new DefaultProviderRegistry({
6790
+ separator
6791
+ });
6787
6792
  for (const [id, provider] of Object.entries(providers)) {
6788
6793
  registry.registerProvider({ id, provider });
6789
6794
  }
6790
6795
  return registry;
6791
6796
  }
6797
+ var experimental_createProviderRegistry = createProviderRegistry;
6792
6798
  var DefaultProviderRegistry = class {
6793
- constructor() {
6799
+ constructor({ separator }) {
6794
6800
  this.providers = {};
6801
+ this.separator = separator;
6795
6802
  }
6796
6803
  registerProvider({
6797
6804
  id,
@@ -6812,12 +6819,12 @@ var DefaultProviderRegistry = class {
6812
6819
  return provider;
6813
6820
  }
6814
6821
  splitId(id, modelType) {
6815
- const index = id.indexOf(":");
6822
+ const index = id.indexOf(this.separator);
6816
6823
  if (index === -1) {
6817
6824
  throw new import_provider26.NoSuchModelError({
6818
6825
  modelId: id,
6819
6826
  modelType,
6820
- message: `Invalid ${modelType} id for registry: ${id} (must be in the format "providerId:modelId")`
6827
+ message: `Invalid ${modelType} id for registry: ${id} (must be in the format "providerId${this.separator}modelId")`
6821
6828
  });
6822
6829
  }
6823
6830
  return [id.slice(0, index), id.slice(index + 1)];
@@ -6854,12 +6861,6 @@ var DefaultProviderRegistry = class {
6854
6861
  }
6855
6862
  return model;
6856
6863
  }
6857
- /**
6858
- * @deprecated Use `textEmbeddingModel` instead.
6859
- */
6860
- textEmbedding(id) {
6861
- return this.textEmbeddingModel(id);
6862
- }
6863
6864
  };
6864
6865
 
6865
6866
  // core/tool/mcp/mcp-client.ts
@@ -7849,6 +7850,7 @@ var StreamData = class {
7849
7850
  createDataStream,
7850
7851
  createDataStreamResponse,
7851
7852
  createIdGenerator,
7853
+ createProviderRegistry,
7852
7854
  customProvider,
7853
7855
  defaultSettingsMiddleware,
7854
7856
  embed,