ai 5.0.27 → 5.0.29

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,18 @@
1
1
  # ai
2
2
 
3
+ ## 5.0.29
4
+
5
+ ### Patch Changes
6
+
7
+ - e0e9449: feat(ui): sent isAbort, isDisconnect, isError in useChat onFinish callback
8
+
9
+ ## 5.0.28
10
+
11
+ ### Patch Changes
12
+
13
+ - 4b81e7d: fix(ai): remove vitest dependency from test exports
14
+ - d68a4f2: feat(ai): log warnings
15
+
3
16
  ## 5.0.27
4
17
 
5
18
  ### Patch Changes
package/README.md CHANGED
@@ -56,11 +56,17 @@ npm install @ai-sdk/react
56
56
  ```tsx
57
57
  'use client';
58
58
 
59
+ import { useState } from 'react';
59
60
  import { useChat } from '@ai-sdk/react';
60
61
 
61
62
  export default function Page() {
62
- const { messages, input, handleSubmit, handleInputChange, status } =
63
- useChat();
63
+ const { messages, status, sendMessage } = useChat();
64
+ const [input, setInput] = useState('');
65
+ const handleSubmit = e => {
66
+ e.preventDefault();
67
+ sendMessage({ text: input });
68
+ setInput('');
69
+ };
64
70
 
65
71
  return (
66
72
  <div>
@@ -82,7 +88,7 @@ export default function Page() {
82
88
  <input
83
89
  value={input}
84
90
  placeholder="Send a message..."
85
- onChange={handleInputChange}
91
+ onChange={e => setInput(e.target.value)}
86
92
  disabled={status !== 'ready'}
87
93
  />
88
94
  </form>
package/dist/index.d.mts CHANGED
@@ -3411,6 +3411,9 @@ declare function generateSpeech({ model, text, voice, outputFormat, instructions
3411
3411
  headers?: Record<string, string>;
3412
3412
  }): Promise<SpeechResult>;
3413
3413
 
3414
+ type Warning = LanguageModelV2CallWarning | ImageModelV2CallWarning | SpeechModelV2CallWarning | TranscriptionModelV2CallWarning;
3415
+ type LogWarningsFunction = (warnings: Warning[]) => void;
3416
+
3414
3417
  /**
3415
3418
  * Applies default settings for a language model.
3416
3419
  */
@@ -4046,9 +4049,22 @@ type ChatOnToolCallCallback<UI_MESSAGE extends UIMessage = UIMessage> = (options
4046
4049
  toolCall: InferUIMessageToolCall<UI_MESSAGE>;
4047
4050
  }) => void | PromiseLike<void>;
4048
4051
  type ChatOnDataCallback<UI_MESSAGE extends UIMessage> = (dataPart: DataUIPart<InferUIMessageData<UI_MESSAGE>>) => void;
4052
+ /**
4053
+ * Function that is called when the assistant response has finished streaming.
4054
+ *
4055
+ * @param message The assistant message that was streamed.
4056
+ * @param messages The full chat history, including the assistant message.
4057
+ *
4058
+ * @param isAbort Indicates whether the request has been aborted.
4059
+ * @param isDisconnect Indicates whether the request has been ended by a network error.
4060
+ * @param isError Indicates whether the request has been ended by an error.
4061
+ */
4049
4062
  type ChatOnFinishCallback<UI_MESSAGE extends UIMessage> = (options: {
4050
4063
  message: UI_MESSAGE;
4051
4064
  messages: UI_MESSAGE[];
4065
+ isAbort: boolean;
4066
+ isDisconnect: boolean;
4067
+ isError: boolean;
4052
4068
  }) => void;
4053
4069
  interface ChatInit<UI_MESSAGE extends UIMessage> {
4054
4070
  /**
@@ -4078,9 +4094,7 @@ interface ChatInit<UI_MESSAGE extends UIMessage> {
4078
4094
  */
4079
4095
  onToolCall?: ChatOnToolCallCallback<UI_MESSAGE>;
4080
4096
  /**
4081
- * Optional callback function that is called when the assistant message is finished streaming.
4082
- *
4083
- * @param message The message that was streamed.
4097
+ * Function that is called when the assistant response has finished streaming.
4084
4098
  */
4085
4099
  onFinish?: ChatOnFinishCallback<UI_MESSAGE>;
4086
4100
  /**
@@ -4421,7 +4435,23 @@ declare function validateUIMessages<UI_MESSAGE extends UIMessage>({ messages, me
4421
4435
  }): Promise<Array<UI_MESSAGE>>;
4422
4436
 
4423
4437
  declare global {
4438
+ /**
4439
+ * The default provider to use for the AI SDK.
4440
+ * String model ids are resolved to the default provider and model id.
4441
+ *
4442
+ * If not set, the default provider is the Vercel AI gateway provider.
4443
+ *
4444
+ * @see https://ai-sdk.dev/docs/ai-sdk-core/provider-management#global-provider-configuration
4445
+ */
4424
4446
  var AI_SDK_DEFAULT_PROVIDER: ProviderV2 | undefined;
4447
+ /**
4448
+ * The warning logger to use for the AI SDK.
4449
+ *
4450
+ * If not set, the default logger is the console.warn function.
4451
+ *
4452
+ * If set to false, no warnings are logged.
4453
+ */
4454
+ var AI_SDK_LOG_WARNINGS: LogWarningsFunction | undefined | false;
4425
4455
  }
4426
4456
 
4427
- export { AbstractChat, AsyncIterableStream, CallSettings, CallWarning, ChatInit, ChatOnDataCallback, ChatOnErrorCallback, ChatOnFinishCallback, ChatOnToolCallCallback, ChatRequestOptions, ChatState, ChatStatus, ChatTransport, ChunkDetector, CompletionRequestOptions, CoreAssistantMessage, CoreMessage, CoreSystemMessage, CoreToolMessage, CoreUserMessage, CreateUIMessage, DataUIPart, DeepPartial, DefaultChatTransport, DownloadError, DynamicToolCall, DynamicToolError, DynamicToolResult, DynamicToolUIPart, EmbedManyResult, EmbedResult, Embedding, EmbeddingModel, EmbeddingModelUsage, ErrorHandler, Agent as Experimental_Agent, AgentSettings as Experimental_AgentSettings, DownloadFunction as Experimental_DownloadFunction, GenerateImageResult as Experimental_GenerateImageResult, GeneratedFile as Experimental_GeneratedImage, SpeechResult as Experimental_SpeechResult, TranscriptionResult as Experimental_TranscriptionResult, FileUIPart, FinishReason, GenerateObjectResult, GenerateTextOnStepFinishCallback, GenerateTextResult, GeneratedAudioFile, GeneratedFile, HttpChatTransport, HttpChatTransportInitOptions, ImageModel, ImageGenerationWarning as ImageModelCallWarning, ImageModelProviderMetadata, ImageModelResponseMetadata, InferUIDataParts, InferUIMessageChunk, InferUITool, InferUITools, InvalidArgumentError, InvalidDataContentError, InvalidMessageRoleError, InvalidStreamPartError, InvalidToolInputError, JSONRPCError, JSONRPCMessage, JSONRPCNotification, JSONRPCRequest, JSONRPCResponse, JSONValue, JsonToSseTransformStream, LanguageModel, LanguageModelMiddleware, LanguageModelRequestMetadata, LanguageModelResponseMetadata, LanguageModelUsage, MCPClientError, MCPTransport, MessageConversionError, NoImageGeneratedError, NoObjectGeneratedError, NoOutputGeneratedError, NoOutputSpecifiedError, NoSuchProviderError, NoSuchToolError, ObjectStreamPart, output as Output, PrepareReconnectToStreamRequest, PrepareSendMessagesRequest, PrepareStepFunction, PrepareStepResult, Prompt, Provider, ProviderMetadata, ProviderRegistryProvider, ReasoningUIPart, RepairTextFunction, RetryError, SerialJobExecutor, SourceDocumentUIPart, SourceUrlUIPart, SpeechModel, SpeechModelResponseMetadata, SpeechWarning, StaticToolCall, StaticToolError, StaticToolResult, StepResult, StepStartUIPart, StopCondition, StreamObjectOnFinishCallback, StreamObjectResult, StreamTextOnChunkCallback, StreamTextOnErrorCallback, StreamTextOnFinishCallback, StreamTextOnStepFinishCallback, StreamTextResult, StreamTextTransform, TelemetrySettings, TextStreamChatTransport, TextStreamPart, TextUIPart, ToolCallRepairError, ToolCallRepairFunction, ToolChoice, ToolSet, ToolUIPart, TranscriptionModel, TranscriptionModelResponseMetadata, TranscriptionWarning, TypedToolCall, TypedToolError, TypedToolResult, UIDataPartSchemas, UIDataTypes, UIMessage, UIMessageChunk, UIMessagePart, UIMessageStreamOnFinishCallback, UIMessageStreamOptions, UIMessageStreamWriter, UITool, UITools, UI_MESSAGE_STREAM_HEADERS, UnsupportedModelVersionError, UseCompletionOptions, assistantModelMessageSchema, callCompletionApi, consumeStream, convertFileListToFileUIParts, convertToCoreMessages, convertToModelMessages, coreAssistantMessageSchema, coreMessageSchema, coreSystemMessageSchema, coreToolMessageSchema, coreUserMessageSchema, cosineSimilarity, createProviderRegistry, createTextStreamResponse, createUIMessageStream, createUIMessageStreamResponse, customProvider, defaultSettingsMiddleware, embed, embedMany, MCPClient as experimental_MCPClient, MCPClientConfig as experimental_MCPClientConfig, createMCPClient as experimental_createMCPClient, experimental_createProviderRegistry, experimental_customProvider, generateImage as experimental_generateImage, generateSpeech as experimental_generateSpeech, transcribe as experimental_transcribe, extractReasoningMiddleware, generateObject, generateText, getTextFromDataUrl, getToolName, getToolOrDynamicToolName, hasToolCall, isDeepEqualData, isToolOrDynamicToolUIPart, isToolUIPart, lastAssistantMessageIsCompleteWithToolCalls, modelMessageSchema, parsePartialJson, pipeTextStreamToResponse, pipeUIMessageStreamToResponse, readUIMessageStream, simulateReadableStream, simulateStreamingMiddleware, smoothStream, stepCountIs, streamObject, streamText, systemModelMessageSchema, toolModelMessageSchema, userModelMessageSchema, validateUIMessages, wrapLanguageModel, wrapProvider };
4457
+ export { AbstractChat, AsyncIterableStream, CallSettings, CallWarning, ChatInit, ChatOnDataCallback, ChatOnErrorCallback, ChatOnFinishCallback, ChatOnToolCallCallback, ChatRequestOptions, ChatState, ChatStatus, ChatTransport, ChunkDetector, CompletionRequestOptions, CoreAssistantMessage, CoreMessage, CoreSystemMessage, CoreToolMessage, CoreUserMessage, CreateUIMessage, DataUIPart, DeepPartial, DefaultChatTransport, DownloadError, DynamicToolCall, DynamicToolError, DynamicToolResult, DynamicToolUIPart, EmbedManyResult, EmbedResult, Embedding, EmbeddingModel, EmbeddingModelUsage, ErrorHandler, Agent as Experimental_Agent, AgentSettings as Experimental_AgentSettings, DownloadFunction as Experimental_DownloadFunction, GenerateImageResult as Experimental_GenerateImageResult, GeneratedFile as Experimental_GeneratedImage, LogWarningsFunction as Experimental_LogWarningsFunction, SpeechResult as Experimental_SpeechResult, TranscriptionResult as Experimental_TranscriptionResult, Warning as Experimental_Warning, FileUIPart, FinishReason, GenerateObjectResult, GenerateTextOnStepFinishCallback, GenerateTextResult, GeneratedAudioFile, GeneratedFile, HttpChatTransport, HttpChatTransportInitOptions, ImageModel, ImageGenerationWarning as ImageModelCallWarning, ImageModelProviderMetadata, ImageModelResponseMetadata, InferUIDataParts, InferUIMessageChunk, InferUITool, InferUITools, InvalidArgumentError, InvalidDataContentError, InvalidMessageRoleError, InvalidStreamPartError, InvalidToolInputError, JSONRPCError, JSONRPCMessage, JSONRPCNotification, JSONRPCRequest, JSONRPCResponse, JSONValue, JsonToSseTransformStream, LanguageModel, LanguageModelMiddleware, LanguageModelRequestMetadata, LanguageModelResponseMetadata, LanguageModelUsage, MCPClientError, MCPTransport, MessageConversionError, NoImageGeneratedError, NoObjectGeneratedError, NoOutputGeneratedError, NoOutputSpecifiedError, NoSuchProviderError, NoSuchToolError, ObjectStreamPart, output as Output, PrepareReconnectToStreamRequest, PrepareSendMessagesRequest, PrepareStepFunction, PrepareStepResult, Prompt, Provider, ProviderMetadata, ProviderRegistryProvider, ReasoningUIPart, RepairTextFunction, RetryError, SerialJobExecutor, SourceDocumentUIPart, SourceUrlUIPart, SpeechModel, SpeechModelResponseMetadata, SpeechWarning, StaticToolCall, StaticToolError, StaticToolResult, StepResult, StepStartUIPart, StopCondition, StreamObjectOnFinishCallback, StreamObjectResult, StreamTextOnChunkCallback, StreamTextOnErrorCallback, StreamTextOnFinishCallback, StreamTextOnStepFinishCallback, StreamTextResult, StreamTextTransform, TelemetrySettings, TextStreamChatTransport, TextStreamPart, TextUIPart, ToolCallRepairError, ToolCallRepairFunction, ToolChoice, ToolSet, ToolUIPart, TranscriptionModel, TranscriptionModelResponseMetadata, TranscriptionWarning, TypedToolCall, TypedToolError, TypedToolResult, UIDataPartSchemas, UIDataTypes, UIMessage, UIMessageChunk, UIMessagePart, UIMessageStreamOnFinishCallback, UIMessageStreamOptions, UIMessageStreamWriter, UITool, UITools, UI_MESSAGE_STREAM_HEADERS, UnsupportedModelVersionError, UseCompletionOptions, assistantModelMessageSchema, callCompletionApi, consumeStream, convertFileListToFileUIParts, convertToCoreMessages, convertToModelMessages, coreAssistantMessageSchema, coreMessageSchema, coreSystemMessageSchema, coreToolMessageSchema, coreUserMessageSchema, cosineSimilarity, createProviderRegistry, createTextStreamResponse, createUIMessageStream, createUIMessageStreamResponse, customProvider, defaultSettingsMiddleware, embed, embedMany, MCPClient as experimental_MCPClient, MCPClientConfig as experimental_MCPClientConfig, createMCPClient as experimental_createMCPClient, experimental_createProviderRegistry, experimental_customProvider, generateImage as experimental_generateImage, generateSpeech as experimental_generateSpeech, transcribe as experimental_transcribe, extractReasoningMiddleware, generateObject, generateText, getTextFromDataUrl, getToolName, getToolOrDynamicToolName, hasToolCall, isDeepEqualData, isToolOrDynamicToolUIPart, isToolUIPart, lastAssistantMessageIsCompleteWithToolCalls, modelMessageSchema, parsePartialJson, pipeTextStreamToResponse, pipeUIMessageStreamToResponse, readUIMessageStream, simulateReadableStream, simulateStreamingMiddleware, smoothStream, stepCountIs, streamObject, streamText, systemModelMessageSchema, toolModelMessageSchema, userModelMessageSchema, validateUIMessages, wrapLanguageModel, wrapProvider };
package/dist/index.d.ts CHANGED
@@ -3411,6 +3411,9 @@ declare function generateSpeech({ model, text, voice, outputFormat, instructions
3411
3411
  headers?: Record<string, string>;
3412
3412
  }): Promise<SpeechResult>;
3413
3413
 
3414
+ type Warning = LanguageModelV2CallWarning | ImageModelV2CallWarning | SpeechModelV2CallWarning | TranscriptionModelV2CallWarning;
3415
+ type LogWarningsFunction = (warnings: Warning[]) => void;
3416
+
3414
3417
  /**
3415
3418
  * Applies default settings for a language model.
3416
3419
  */
@@ -4046,9 +4049,22 @@ type ChatOnToolCallCallback<UI_MESSAGE extends UIMessage = UIMessage> = (options
4046
4049
  toolCall: InferUIMessageToolCall<UI_MESSAGE>;
4047
4050
  }) => void | PromiseLike<void>;
4048
4051
  type ChatOnDataCallback<UI_MESSAGE extends UIMessage> = (dataPart: DataUIPart<InferUIMessageData<UI_MESSAGE>>) => void;
4052
+ /**
4053
+ * Function that is called when the assistant response has finished streaming.
4054
+ *
4055
+ * @param message The assistant message that was streamed.
4056
+ * @param messages The full chat history, including the assistant message.
4057
+ *
4058
+ * @param isAbort Indicates whether the request has been aborted.
4059
+ * @param isDisconnect Indicates whether the request has been ended by a network error.
4060
+ * @param isError Indicates whether the request has been ended by an error.
4061
+ */
4049
4062
  type ChatOnFinishCallback<UI_MESSAGE extends UIMessage> = (options: {
4050
4063
  message: UI_MESSAGE;
4051
4064
  messages: UI_MESSAGE[];
4065
+ isAbort: boolean;
4066
+ isDisconnect: boolean;
4067
+ isError: boolean;
4052
4068
  }) => void;
4053
4069
  interface ChatInit<UI_MESSAGE extends UIMessage> {
4054
4070
  /**
@@ -4078,9 +4094,7 @@ interface ChatInit<UI_MESSAGE extends UIMessage> {
4078
4094
  */
4079
4095
  onToolCall?: ChatOnToolCallCallback<UI_MESSAGE>;
4080
4096
  /**
4081
- * Optional callback function that is called when the assistant message is finished streaming.
4082
- *
4083
- * @param message The message that was streamed.
4097
+ * Function that is called when the assistant response has finished streaming.
4084
4098
  */
4085
4099
  onFinish?: ChatOnFinishCallback<UI_MESSAGE>;
4086
4100
  /**
@@ -4421,7 +4435,23 @@ declare function validateUIMessages<UI_MESSAGE extends UIMessage>({ messages, me
4421
4435
  }): Promise<Array<UI_MESSAGE>>;
4422
4436
 
4423
4437
  declare global {
4438
+ /**
4439
+ * The default provider to use for the AI SDK.
4440
+ * String model ids are resolved to the default provider and model id.
4441
+ *
4442
+ * If not set, the default provider is the Vercel AI gateway provider.
4443
+ *
4444
+ * @see https://ai-sdk.dev/docs/ai-sdk-core/provider-management#global-provider-configuration
4445
+ */
4424
4446
  var AI_SDK_DEFAULT_PROVIDER: ProviderV2 | undefined;
4447
+ /**
4448
+ * The warning logger to use for the AI SDK.
4449
+ *
4450
+ * If not set, the default logger is the console.warn function.
4451
+ *
4452
+ * If set to false, no warnings are logged.
4453
+ */
4454
+ var AI_SDK_LOG_WARNINGS: LogWarningsFunction | undefined | false;
4425
4455
  }
4426
4456
 
4427
- export { AbstractChat, AsyncIterableStream, CallSettings, CallWarning, ChatInit, ChatOnDataCallback, ChatOnErrorCallback, ChatOnFinishCallback, ChatOnToolCallCallback, ChatRequestOptions, ChatState, ChatStatus, ChatTransport, ChunkDetector, CompletionRequestOptions, CoreAssistantMessage, CoreMessage, CoreSystemMessage, CoreToolMessage, CoreUserMessage, CreateUIMessage, DataUIPart, DeepPartial, DefaultChatTransport, DownloadError, DynamicToolCall, DynamicToolError, DynamicToolResult, DynamicToolUIPart, EmbedManyResult, EmbedResult, Embedding, EmbeddingModel, EmbeddingModelUsage, ErrorHandler, Agent as Experimental_Agent, AgentSettings as Experimental_AgentSettings, DownloadFunction as Experimental_DownloadFunction, GenerateImageResult as Experimental_GenerateImageResult, GeneratedFile as Experimental_GeneratedImage, SpeechResult as Experimental_SpeechResult, TranscriptionResult as Experimental_TranscriptionResult, FileUIPart, FinishReason, GenerateObjectResult, GenerateTextOnStepFinishCallback, GenerateTextResult, GeneratedAudioFile, GeneratedFile, HttpChatTransport, HttpChatTransportInitOptions, ImageModel, ImageGenerationWarning as ImageModelCallWarning, ImageModelProviderMetadata, ImageModelResponseMetadata, InferUIDataParts, InferUIMessageChunk, InferUITool, InferUITools, InvalidArgumentError, InvalidDataContentError, InvalidMessageRoleError, InvalidStreamPartError, InvalidToolInputError, JSONRPCError, JSONRPCMessage, JSONRPCNotification, JSONRPCRequest, JSONRPCResponse, JSONValue, JsonToSseTransformStream, LanguageModel, LanguageModelMiddleware, LanguageModelRequestMetadata, LanguageModelResponseMetadata, LanguageModelUsage, MCPClientError, MCPTransport, MessageConversionError, NoImageGeneratedError, NoObjectGeneratedError, NoOutputGeneratedError, NoOutputSpecifiedError, NoSuchProviderError, NoSuchToolError, ObjectStreamPart, output as Output, PrepareReconnectToStreamRequest, PrepareSendMessagesRequest, PrepareStepFunction, PrepareStepResult, Prompt, Provider, ProviderMetadata, ProviderRegistryProvider, ReasoningUIPart, RepairTextFunction, RetryError, SerialJobExecutor, SourceDocumentUIPart, SourceUrlUIPart, SpeechModel, SpeechModelResponseMetadata, SpeechWarning, StaticToolCall, StaticToolError, StaticToolResult, StepResult, StepStartUIPart, StopCondition, StreamObjectOnFinishCallback, StreamObjectResult, StreamTextOnChunkCallback, StreamTextOnErrorCallback, StreamTextOnFinishCallback, StreamTextOnStepFinishCallback, StreamTextResult, StreamTextTransform, TelemetrySettings, TextStreamChatTransport, TextStreamPart, TextUIPart, ToolCallRepairError, ToolCallRepairFunction, ToolChoice, ToolSet, ToolUIPart, TranscriptionModel, TranscriptionModelResponseMetadata, TranscriptionWarning, TypedToolCall, TypedToolError, TypedToolResult, UIDataPartSchemas, UIDataTypes, UIMessage, UIMessageChunk, UIMessagePart, UIMessageStreamOnFinishCallback, UIMessageStreamOptions, UIMessageStreamWriter, UITool, UITools, UI_MESSAGE_STREAM_HEADERS, UnsupportedModelVersionError, UseCompletionOptions, assistantModelMessageSchema, callCompletionApi, consumeStream, convertFileListToFileUIParts, convertToCoreMessages, convertToModelMessages, coreAssistantMessageSchema, coreMessageSchema, coreSystemMessageSchema, coreToolMessageSchema, coreUserMessageSchema, cosineSimilarity, createProviderRegistry, createTextStreamResponse, createUIMessageStream, createUIMessageStreamResponse, customProvider, defaultSettingsMiddleware, embed, embedMany, MCPClient as experimental_MCPClient, MCPClientConfig as experimental_MCPClientConfig, createMCPClient as experimental_createMCPClient, experimental_createProviderRegistry, experimental_customProvider, generateImage as experimental_generateImage, generateSpeech as experimental_generateSpeech, transcribe as experimental_transcribe, extractReasoningMiddleware, generateObject, generateText, getTextFromDataUrl, getToolName, getToolOrDynamicToolName, hasToolCall, isDeepEqualData, isToolOrDynamicToolUIPart, isToolUIPart, lastAssistantMessageIsCompleteWithToolCalls, modelMessageSchema, parsePartialJson, pipeTextStreamToResponse, pipeUIMessageStreamToResponse, readUIMessageStream, simulateReadableStream, simulateStreamingMiddleware, smoothStream, stepCountIs, streamObject, streamText, systemModelMessageSchema, toolModelMessageSchema, userModelMessageSchema, validateUIMessages, wrapLanguageModel, wrapProvider };
4457
+ export { AbstractChat, AsyncIterableStream, CallSettings, CallWarning, ChatInit, ChatOnDataCallback, ChatOnErrorCallback, ChatOnFinishCallback, ChatOnToolCallCallback, ChatRequestOptions, ChatState, ChatStatus, ChatTransport, ChunkDetector, CompletionRequestOptions, CoreAssistantMessage, CoreMessage, CoreSystemMessage, CoreToolMessage, CoreUserMessage, CreateUIMessage, DataUIPart, DeepPartial, DefaultChatTransport, DownloadError, DynamicToolCall, DynamicToolError, DynamicToolResult, DynamicToolUIPart, EmbedManyResult, EmbedResult, Embedding, EmbeddingModel, EmbeddingModelUsage, ErrorHandler, Agent as Experimental_Agent, AgentSettings as Experimental_AgentSettings, DownloadFunction as Experimental_DownloadFunction, GenerateImageResult as Experimental_GenerateImageResult, GeneratedFile as Experimental_GeneratedImage, LogWarningsFunction as Experimental_LogWarningsFunction, SpeechResult as Experimental_SpeechResult, TranscriptionResult as Experimental_TranscriptionResult, Warning as Experimental_Warning, FileUIPart, FinishReason, GenerateObjectResult, GenerateTextOnStepFinishCallback, GenerateTextResult, GeneratedAudioFile, GeneratedFile, HttpChatTransport, HttpChatTransportInitOptions, ImageModel, ImageGenerationWarning as ImageModelCallWarning, ImageModelProviderMetadata, ImageModelResponseMetadata, InferUIDataParts, InferUIMessageChunk, InferUITool, InferUITools, InvalidArgumentError, InvalidDataContentError, InvalidMessageRoleError, InvalidStreamPartError, InvalidToolInputError, JSONRPCError, JSONRPCMessage, JSONRPCNotification, JSONRPCRequest, JSONRPCResponse, JSONValue, JsonToSseTransformStream, LanguageModel, LanguageModelMiddleware, LanguageModelRequestMetadata, LanguageModelResponseMetadata, LanguageModelUsage, MCPClientError, MCPTransport, MessageConversionError, NoImageGeneratedError, NoObjectGeneratedError, NoOutputGeneratedError, NoOutputSpecifiedError, NoSuchProviderError, NoSuchToolError, ObjectStreamPart, output as Output, PrepareReconnectToStreamRequest, PrepareSendMessagesRequest, PrepareStepFunction, PrepareStepResult, Prompt, Provider, ProviderMetadata, ProviderRegistryProvider, ReasoningUIPart, RepairTextFunction, RetryError, SerialJobExecutor, SourceDocumentUIPart, SourceUrlUIPart, SpeechModel, SpeechModelResponseMetadata, SpeechWarning, StaticToolCall, StaticToolError, StaticToolResult, StepResult, StepStartUIPart, StopCondition, StreamObjectOnFinishCallback, StreamObjectResult, StreamTextOnChunkCallback, StreamTextOnErrorCallback, StreamTextOnFinishCallback, StreamTextOnStepFinishCallback, StreamTextResult, StreamTextTransform, TelemetrySettings, TextStreamChatTransport, TextStreamPart, TextUIPart, ToolCallRepairError, ToolCallRepairFunction, ToolChoice, ToolSet, ToolUIPart, TranscriptionModel, TranscriptionModelResponseMetadata, TranscriptionWarning, TypedToolCall, TypedToolError, TypedToolResult, UIDataPartSchemas, UIDataTypes, UIMessage, UIMessageChunk, UIMessagePart, UIMessageStreamOnFinishCallback, UIMessageStreamOptions, UIMessageStreamWriter, UITool, UITools, UI_MESSAGE_STREAM_HEADERS, UnsupportedModelVersionError, UseCompletionOptions, assistantModelMessageSchema, callCompletionApi, consumeStream, convertFileListToFileUIParts, convertToCoreMessages, convertToModelMessages, coreAssistantMessageSchema, coreMessageSchema, coreSystemMessageSchema, coreToolMessageSchema, coreUserMessageSchema, cosineSimilarity, createProviderRegistry, createTextStreamResponse, createUIMessageStream, createUIMessageStreamResponse, customProvider, defaultSettingsMiddleware, embed, embedMany, MCPClient as experimental_MCPClient, MCPClientConfig as experimental_MCPClientConfig, createMCPClient as experimental_createMCPClient, experimental_createProviderRegistry, experimental_customProvider, generateImage as experimental_generateImage, generateSpeech as experimental_generateSpeech, transcribe as experimental_transcribe, extractReasoningMiddleware, generateObject, generateText, getTextFromDataUrl, getToolName, getToolOrDynamicToolName, hasToolCall, isDeepEqualData, isToolOrDynamicToolUIPart, isToolUIPart, lastAssistantMessageIsCompleteWithToolCalls, modelMessageSchema, parsePartialJson, pipeTextStreamToResponse, pipeUIMessageStreamToResponse, readUIMessageStream, simulateReadableStream, simulateStreamingMiddleware, smoothStream, stepCountIs, streamObject, streamText, systemModelMessageSchema, toolModelMessageSchema, userModelMessageSchema, validateUIMessages, wrapLanguageModel, wrapProvider };
package/dist/index.js CHANGED
@@ -143,6 +143,56 @@ var NoOutputSpecifiedError = class extends import_provider.AISDKError {
143
143
  };
144
144
  _a = symbol;
145
145
 
146
+ // src/logger/log-warnings.ts
147
+ function formatWarning(warning) {
148
+ const prefix = "AI SDK Warning:";
149
+ switch (warning.type) {
150
+ case "unsupported-setting": {
151
+ let message = `${prefix} The "${warning.setting}" setting is not supported by this model`;
152
+ if (warning.details) {
153
+ message += ` - ${warning.details}`;
154
+ }
155
+ return message;
156
+ }
157
+ case "unsupported-tool": {
158
+ const toolName = "name" in warning.tool ? warning.tool.name : "unknown tool";
159
+ let message = `${prefix} The tool "${toolName}" is not supported by this model`;
160
+ if (warning.details) {
161
+ message += ` - ${warning.details}`;
162
+ }
163
+ return message;
164
+ }
165
+ case "other": {
166
+ return `${prefix} ${warning.message}`;
167
+ }
168
+ default: {
169
+ return `${prefix} ${JSON.stringify(warning, null, 2)}`;
170
+ }
171
+ }
172
+ }
173
+ var FIRST_WARNING_INFO_MESSAGE = "AI SDK Warning System: To turn off warning logging, set the AI_SDK_LOG_WARNINGS global to false.";
174
+ var hasLoggedBefore = false;
175
+ var logWarnings = (warnings) => {
176
+ if (warnings.length === 0) {
177
+ return;
178
+ }
179
+ const logger = globalThis.AI_SDK_LOG_WARNINGS;
180
+ if (logger === false) {
181
+ return;
182
+ }
183
+ if (typeof logger === "function") {
184
+ logger(warnings);
185
+ return;
186
+ }
187
+ if (!hasLoggedBefore) {
188
+ hasLoggedBefore = true;
189
+ console.info(FIRST_WARNING_INFO_MESSAGE);
190
+ }
191
+ for (const warning of warnings) {
192
+ console.warn(formatWarning(warning));
193
+ }
194
+ };
195
+
146
196
  // src/model/resolve-model.ts
147
197
  var import_gateway = require("@ai-sdk/gateway");
148
198
 
@@ -2178,7 +2228,7 @@ async function generateText({
2178
2228
  }),
2179
2229
  tracer,
2180
2230
  fn: async (span) => {
2181
- var _a17, _b, _c, _d, _e, _f;
2231
+ var _a17, _b, _c, _d, _e, _f, _g;
2182
2232
  const callSettings2 = prepareCallSettings(settings);
2183
2233
  let currentModelResponse;
2184
2234
  let clientToolCalls = [];
@@ -2253,7 +2303,7 @@ async function generateText({
2253
2303
  }),
2254
2304
  tracer,
2255
2305
  fn: async (span2) => {
2256
- var _a19, _b2, _c2, _d2, _e2, _f2, _g, _h;
2306
+ var _a19, _b2, _c2, _d2, _e2, _f2, _g2, _h;
2257
2307
  const result = await stepModel.doGenerate({
2258
2308
  ...callSettings2,
2259
2309
  tools: stepTools,
@@ -2268,7 +2318,7 @@ async function generateText({
2268
2318
  id: (_b2 = (_a19 = result.response) == null ? void 0 : _a19.id) != null ? _b2 : generateId3(),
2269
2319
  timestamp: (_d2 = (_c2 = result.response) == null ? void 0 : _c2.timestamp) != null ? _d2 : currentDate(),
2270
2320
  modelId: (_f2 = (_e2 = result.response) == null ? void 0 : _e2.modelId) != null ? _f2 : stepModel.modelId,
2271
- headers: (_g = result.response) == null ? void 0 : _g.headers,
2321
+ headers: (_g2 = result.response) == null ? void 0 : _g2.headers,
2272
2322
  body: (_h = result.response) == null ? void 0 : _h.body
2273
2323
  };
2274
2324
  span2.setAttributes(
@@ -2392,6 +2442,7 @@ async function generateText({
2392
2442
  messages: structuredClone(responseMessages)
2393
2443
  }
2394
2444
  });
2445
+ logWarnings((_g = currentModelResponse.warnings) != null ? _g : []);
2395
2446
  steps.push(currentStepResult);
2396
2447
  await (onStepFinish == null ? void 0 : onStepFinish(currentStepResult));
2397
2448
  } while (
@@ -4675,6 +4726,7 @@ var DefaultStreamTextResult = class {
4675
4726
  providerMetadata: part.providerMetadata
4676
4727
  });
4677
4728
  await (onStepFinish == null ? void 0 : onStepFinish(currentStepResult));
4729
+ logWarnings(recordedWarnings);
4678
4730
  recordedSteps.push(currentStepResult);
4679
4731
  recordedContent = [];
4680
4732
  activeReasoningContent = {};
@@ -6142,6 +6194,7 @@ async function generateImage({
6142
6194
  }
6143
6195
  responses.push(result.response);
6144
6196
  }
6197
+ logWarnings(warnings);
6145
6198
  if (!images.length) {
6146
6199
  throw new NoImageGeneratedError({ responses });
6147
6200
  }
@@ -6811,6 +6864,7 @@ async function generateObject(options) {
6811
6864
  request = (_a17 = generateResult.request) != null ? _a17 : {};
6812
6865
  response = generateResult.responseData;
6813
6866
  reasoning = generateResult.reasoning;
6867
+ logWarnings(warnings);
6814
6868
  const object2 = await parseAndValidateObjectResultWithRepair(
6815
6869
  result,
6816
6870
  outputStrategy,
@@ -7323,6 +7377,7 @@ var DefaultStreamObjectResult = class {
7323
7377
  usage,
7324
7378
  response: fullResponse
7325
7379
  });
7380
+ logWarnings(warnings != null ? warnings : []);
7326
7381
  self._usage.resolve(usage);
7327
7382
  self._providerMetadata.resolve(providerMetadata);
7328
7383
  self._warnings.resolve(warnings);
@@ -7608,6 +7663,7 @@ async function generateSpeech({
7608
7663
  if (!result.audio || result.audio.length === 0) {
7609
7664
  throw new NoSpeechGeneratedError({ responses: [result.response] });
7610
7665
  }
7666
+ logWarnings(result.warnings);
7611
7667
  return new DefaultSpeechResult({
7612
7668
  audio: new DefaultGeneratedAudioFile({
7613
7669
  data: result.audio,
@@ -8926,6 +8982,7 @@ async function transcribe({
8926
8982
  });
8927
8983
  }
8928
8984
  );
8985
+ logWarnings(result.warnings);
8929
8986
  if (!result.text) {
8930
8987
  throw new NoTranscriptGeneratedError({ responses: [result.response] });
8931
8988
  }
@@ -9460,6 +9517,9 @@ var AbstractChat = class {
9460
9517
  var _a17, _b, _c;
9461
9518
  this.setStatus({ status: "submitted", error: void 0 });
9462
9519
  const lastMessage = this.lastMessage;
9520
+ let isAbort = false;
9521
+ let isDisconnect = false;
9522
+ let isError = false;
9463
9523
  try {
9464
9524
  const activeResponse = {
9465
9525
  state: createStreamingUIMessageState({
@@ -9468,6 +9528,9 @@ var AbstractChat = class {
9468
9528
  }),
9469
9529
  abortController: new AbortController()
9470
9530
  };
9531
+ activeResponse.abortController.signal.addEventListener("abort", () => {
9532
+ isAbort = true;
9533
+ });
9471
9534
  this.activeResponse = activeResponse;
9472
9535
  let stream;
9473
9536
  if (trigger === "resume-stream") {
@@ -9531,21 +9594,33 @@ var AbstractChat = class {
9531
9594
  throw error;
9532
9595
  }
9533
9596
  });
9534
- (_a17 = this.onFinish) == null ? void 0 : _a17.call(this, {
9535
- message: activeResponse.state.message,
9536
- messages: this.state.messages
9537
- });
9538
9597
  this.setStatus({ status: "ready" });
9539
9598
  } catch (err) {
9540
- if (err.name === "AbortError") {
9599
+ if (isAbort || err.name === "AbortError") {
9600
+ isAbort = true;
9541
9601
  this.setStatus({ status: "ready" });
9542
9602
  return null;
9543
9603
  }
9604
+ isError = true;
9605
+ if (err instanceof TypeError && (err.message.toLowerCase().includes("fetch") || err.message.toLowerCase().includes("network"))) {
9606
+ isDisconnect = true;
9607
+ }
9544
9608
  if (this.onError && err instanceof Error) {
9545
9609
  this.onError(err);
9546
9610
  }
9547
9611
  this.setStatus({ status: "error", error: err });
9548
9612
  } finally {
9613
+ try {
9614
+ (_a17 = this.onFinish) == null ? void 0 : _a17.call(this, {
9615
+ message: this.activeResponse.state.message,
9616
+ messages: this.state.messages,
9617
+ isAbort,
9618
+ isDisconnect,
9619
+ isError
9620
+ });
9621
+ } catch (err) {
9622
+ console.error(err);
9623
+ }
9549
9624
  this.activeResponse = void 0;
9550
9625
  }
9551
9626
  if ((_b = this.sendAutomaticallyWhen) == null ? void 0 : _b.call(this, { messages: this.state.messages })) {