ai 5.0.0-beta.26 → 5.0.0-beta.28

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.mts CHANGED
@@ -3767,6 +3767,13 @@ interface ChatInit<UI_MESSAGE extends UIMessage> {
3767
3767
  * @param data The data part that was received.
3768
3768
  */
3769
3769
  onData?: ChatOnDataCallback<UI_MESSAGE>;
3770
+ /**
3771
+ * When provided, this function will be called when the stream is finished or a tool call is added
3772
+ * to determine if the current messages should be resubmitted.
3773
+ */
3774
+ sendAutomaticallyWhen?: (options: {
3775
+ messages: UI_MESSAGE[];
3776
+ }) => boolean | PromiseLike<boolean>;
3770
3777
  }
3771
3778
  declare abstract class AbstractChat<UI_MESSAGE extends UIMessage> {
3772
3779
  readonly id: string;
@@ -3779,9 +3786,10 @@ declare abstract class AbstractChat<UI_MESSAGE extends UIMessage> {
3779
3786
  private onToolCall?;
3780
3787
  private onFinish?;
3781
3788
  private onData?;
3789
+ private sendAutomaticallyWhen?;
3782
3790
  private activeResponse;
3783
3791
  private jobExecutor;
3784
- constructor({ generateId, id, transport, messageMetadataSchema, dataPartSchemas, state, onError, onToolCall, onFinish, onData, }: Omit<ChatInit<UI_MESSAGE>, 'messages'> & {
3792
+ constructor({ generateId, id, transport, messageMetadataSchema, dataPartSchemas, state, onError, onToolCall, onFinish, onData, sendAutomaticallyWhen, }: Omit<ChatInit<UI_MESSAGE>, 'messages'> & {
3785
3793
  state: ChatState<UI_MESSAGE>;
3786
3794
  });
3787
3795
  /**
@@ -3839,13 +3847,6 @@ declare abstract class AbstractChat<UI_MESSAGE extends UIMessage> {
3839
3847
  toolCallId: string;
3840
3848
  output: InferUIMessageTools<UI_MESSAGE>[TOOL]["output"];
3841
3849
  }) => Promise<void>;
3842
- /**
3843
- * Checks if the assistant message can be submitted, i.e. if it
3844
- * has tool calls and all tool calls have results.
3845
- *
3846
- * @returns {boolean} True if the assistant message can be submitted, false otherwise.
3847
- */
3848
- canAssistantMessageBeSubmitted: () => boolean;
3849
3850
  /**
3850
3851
  * Abort the current request immediately, keep the generated tokens if any.
3851
3852
  */
@@ -3989,6 +3990,15 @@ declare class DefaultChatTransport<UI_MESSAGE extends UIMessage> extends HttpCha
3989
3990
  protected processResponseStream(stream: ReadableStream<Uint8Array<ArrayBufferLike>>): ReadableStream<UIMessageChunk>;
3990
3991
  }
3991
3992
 
3993
+ /**
3994
+ Check if the message is an assistant message with completed tool calls.
3995
+ The last step of the message must have at least one tool invocation and
3996
+ all tool invocations must have a result.
3997
+ */
3998
+ declare function lastAssistantMessageIsCompleteWithToolCalls({ messages, }: {
3999
+ messages: UIMessage[];
4000
+ }): boolean;
4001
+
3992
4002
  declare class TextStreamChatTransport<UI_MESSAGE extends UIMessage> extends HttpChatTransport<UI_MESSAGE> {
3993
4003
  constructor(options?: HttpChatTransportInitOptions<UI_MESSAGE>);
3994
4004
  protected processResponseStream(stream: ReadableStream<Uint8Array<ArrayBufferLike>>): ReadableStream<UIMessageChunk>;
@@ -4070,4 +4080,4 @@ declare global {
4070
4080
  var AI_SDK_DEFAULT_PROVIDER: ProviderV2 | undefined;
4071
4081
  }
4072
4082
 
4073
- 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, EmbedManyResult, EmbedResult, Embedding, EmbeddingModel, EmbeddingModelUsage, ErrorHandler, Agent as Experimental_Agent, AgentSettings as Experimental_AgentSettings, GenerateImageResult as Experimental_GenerateImageResult, GeneratedFile as Experimental_GeneratedImage, SpeechResult as Experimental_SpeechResult, TranscriptionResult as Experimental_TranscriptionResult, FileUIPart, FinishReason, GenerateObjectResult, GenerateTextOnStepFinishCallback, GenerateTextResult, GeneratedAudioFile, GeneratedFile, HttpChatTransport, HttpChatTransportInitOptions, ImageModel, ImageGenerationWarning as ImageModelCallWarning, ImageModelProviderMetadata, ImageModelResponseMetadata, InferUIDataParts, InferUIMessageChunk, InferUITool, InferUITools, InvalidArgumentError, InvalidDataContentError, InvalidMessageRoleError, InvalidStreamPartError, InvalidToolInputError, JSONRPCError, JSONRPCMessage, JSONRPCNotification, JSONRPCRequest, JSONRPCResponse, JSONValue, JsonToSseTransformStream, LanguageModel, LanguageModelRequestMetadata, LanguageModelResponseMetadata, LanguageModelUsage, MCPClientError, MCPTransport, MessageConversionError, NoImageGeneratedError, NoObjectGeneratedError, NoOutputSpecifiedError, NoSuchProviderError, NoSuchToolError, ObjectStreamPart, output as Output, PrepareReconnectToStreamRequest, PrepareSendMessagesRequest, PrepareStepFunction, PrepareStepResult, Prompt, Provider, ProviderMetadata, ProviderRegistryProvider, ReasoningUIPart, RepairTextFunction, RetryError, SerialJobExecutor, SourceDocumentUIPart, SourceUrlUIPart, SpeechModel, SpeechModelResponseMetadata, SpeechWarning, StepResult, StepStartUIPart, StopCondition, StreamObjectOnFinishCallback, StreamObjectResult, StreamTextOnChunkCallback, StreamTextOnErrorCallback, StreamTextOnFinishCallback, StreamTextOnStepFinishCallback, StreamTextResult, StreamTextTransform, TelemetrySettings, TextStreamChatTransport, TextStreamPart, TextUIPart, ToolCallRepairError, ToolCallRepairFunction, ToolCallUnion, ToolChoice, ToolErrorUnion, ToolResultUnion, ToolSet, ToolUIPart, TranscriptionModel, TranscriptionModelResponseMetadata, TranscriptionWarning, 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, 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, hasToolCall, isDeepEqualData, isToolUIPart, modelMessageSchema, parsePartialJson, pipeTextStreamToResponse, pipeUIMessageStreamToResponse, readUIMessageStream, simulateReadableStream, simulateStreamingMiddleware, smoothStream, stepCountIs, streamObject, streamText, systemModelMessageSchema, toolModelMessageSchema, userModelMessageSchema, wrapLanguageModel, wrapProvider };
4083
+ 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, EmbedManyResult, EmbedResult, Embedding, EmbeddingModel, EmbeddingModelUsage, ErrorHandler, Agent as Experimental_Agent, AgentSettings as Experimental_AgentSettings, GenerateImageResult as Experimental_GenerateImageResult, GeneratedFile as Experimental_GeneratedImage, SpeechResult as Experimental_SpeechResult, TranscriptionResult as Experimental_TranscriptionResult, FileUIPart, FinishReason, GenerateObjectResult, GenerateTextOnStepFinishCallback, GenerateTextResult, GeneratedAudioFile, GeneratedFile, HttpChatTransport, HttpChatTransportInitOptions, ImageModel, ImageGenerationWarning as ImageModelCallWarning, ImageModelProviderMetadata, ImageModelResponseMetadata, InferUIDataParts, InferUIMessageChunk, InferUITool, InferUITools, InvalidArgumentError, InvalidDataContentError, InvalidMessageRoleError, InvalidStreamPartError, InvalidToolInputError, JSONRPCError, JSONRPCMessage, JSONRPCNotification, JSONRPCRequest, JSONRPCResponse, JSONValue, JsonToSseTransformStream, LanguageModel, LanguageModelRequestMetadata, LanguageModelResponseMetadata, LanguageModelUsage, MCPClientError, MCPTransport, MessageConversionError, NoImageGeneratedError, NoObjectGeneratedError, NoOutputSpecifiedError, NoSuchProviderError, NoSuchToolError, ObjectStreamPart, output as Output, PrepareReconnectToStreamRequest, PrepareSendMessagesRequest, PrepareStepFunction, PrepareStepResult, Prompt, Provider, ProviderMetadata, ProviderRegistryProvider, ReasoningUIPart, RepairTextFunction, RetryError, SerialJobExecutor, SourceDocumentUIPart, SourceUrlUIPart, SpeechModel, SpeechModelResponseMetadata, SpeechWarning, StepResult, StepStartUIPart, StopCondition, StreamObjectOnFinishCallback, StreamObjectResult, StreamTextOnChunkCallback, StreamTextOnErrorCallback, StreamTextOnFinishCallback, StreamTextOnStepFinishCallback, StreamTextResult, StreamTextTransform, TelemetrySettings, TextStreamChatTransport, TextStreamPart, TextUIPart, ToolCallRepairError, ToolCallRepairFunction, ToolCallUnion, ToolChoice, ToolErrorUnion, ToolResultUnion, ToolSet, ToolUIPart, TranscriptionModel, TranscriptionModelResponseMetadata, TranscriptionWarning, 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, 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, hasToolCall, isDeepEqualData, isToolUIPart, lastAssistantMessageIsCompleteWithToolCalls, modelMessageSchema, parsePartialJson, pipeTextStreamToResponse, pipeUIMessageStreamToResponse, readUIMessageStream, simulateReadableStream, simulateStreamingMiddleware, smoothStream, stepCountIs, streamObject, streamText, systemModelMessageSchema, toolModelMessageSchema, userModelMessageSchema, wrapLanguageModel, wrapProvider };
package/dist/index.d.ts CHANGED
@@ -3767,6 +3767,13 @@ interface ChatInit<UI_MESSAGE extends UIMessage> {
3767
3767
  * @param data The data part that was received.
3768
3768
  */
3769
3769
  onData?: ChatOnDataCallback<UI_MESSAGE>;
3770
+ /**
3771
+ * When provided, this function will be called when the stream is finished or a tool call is added
3772
+ * to determine if the current messages should be resubmitted.
3773
+ */
3774
+ sendAutomaticallyWhen?: (options: {
3775
+ messages: UI_MESSAGE[];
3776
+ }) => boolean | PromiseLike<boolean>;
3770
3777
  }
3771
3778
  declare abstract class AbstractChat<UI_MESSAGE extends UIMessage> {
3772
3779
  readonly id: string;
@@ -3779,9 +3786,10 @@ declare abstract class AbstractChat<UI_MESSAGE extends UIMessage> {
3779
3786
  private onToolCall?;
3780
3787
  private onFinish?;
3781
3788
  private onData?;
3789
+ private sendAutomaticallyWhen?;
3782
3790
  private activeResponse;
3783
3791
  private jobExecutor;
3784
- constructor({ generateId, id, transport, messageMetadataSchema, dataPartSchemas, state, onError, onToolCall, onFinish, onData, }: Omit<ChatInit<UI_MESSAGE>, 'messages'> & {
3792
+ constructor({ generateId, id, transport, messageMetadataSchema, dataPartSchemas, state, onError, onToolCall, onFinish, onData, sendAutomaticallyWhen, }: Omit<ChatInit<UI_MESSAGE>, 'messages'> & {
3785
3793
  state: ChatState<UI_MESSAGE>;
3786
3794
  });
3787
3795
  /**
@@ -3839,13 +3847,6 @@ declare abstract class AbstractChat<UI_MESSAGE extends UIMessage> {
3839
3847
  toolCallId: string;
3840
3848
  output: InferUIMessageTools<UI_MESSAGE>[TOOL]["output"];
3841
3849
  }) => Promise<void>;
3842
- /**
3843
- * Checks if the assistant message can be submitted, i.e. if it
3844
- * has tool calls and all tool calls have results.
3845
- *
3846
- * @returns {boolean} True if the assistant message can be submitted, false otherwise.
3847
- */
3848
- canAssistantMessageBeSubmitted: () => boolean;
3849
3850
  /**
3850
3851
  * Abort the current request immediately, keep the generated tokens if any.
3851
3852
  */
@@ -3989,6 +3990,15 @@ declare class DefaultChatTransport<UI_MESSAGE extends UIMessage> extends HttpCha
3989
3990
  protected processResponseStream(stream: ReadableStream<Uint8Array<ArrayBufferLike>>): ReadableStream<UIMessageChunk>;
3990
3991
  }
3991
3992
 
3993
+ /**
3994
+ Check if the message is an assistant message with completed tool calls.
3995
+ The last step of the message must have at least one tool invocation and
3996
+ all tool invocations must have a result.
3997
+ */
3998
+ declare function lastAssistantMessageIsCompleteWithToolCalls({ messages, }: {
3999
+ messages: UIMessage[];
4000
+ }): boolean;
4001
+
3992
4002
  declare class TextStreamChatTransport<UI_MESSAGE extends UIMessage> extends HttpChatTransport<UI_MESSAGE> {
3993
4003
  constructor(options?: HttpChatTransportInitOptions<UI_MESSAGE>);
3994
4004
  protected processResponseStream(stream: ReadableStream<Uint8Array<ArrayBufferLike>>): ReadableStream<UIMessageChunk>;
@@ -4070,4 +4080,4 @@ declare global {
4070
4080
  var AI_SDK_DEFAULT_PROVIDER: ProviderV2 | undefined;
4071
4081
  }
4072
4082
 
4073
- 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, EmbedManyResult, EmbedResult, Embedding, EmbeddingModel, EmbeddingModelUsage, ErrorHandler, Agent as Experimental_Agent, AgentSettings as Experimental_AgentSettings, GenerateImageResult as Experimental_GenerateImageResult, GeneratedFile as Experimental_GeneratedImage, SpeechResult as Experimental_SpeechResult, TranscriptionResult as Experimental_TranscriptionResult, FileUIPart, FinishReason, GenerateObjectResult, GenerateTextOnStepFinishCallback, GenerateTextResult, GeneratedAudioFile, GeneratedFile, HttpChatTransport, HttpChatTransportInitOptions, ImageModel, ImageGenerationWarning as ImageModelCallWarning, ImageModelProviderMetadata, ImageModelResponseMetadata, InferUIDataParts, InferUIMessageChunk, InferUITool, InferUITools, InvalidArgumentError, InvalidDataContentError, InvalidMessageRoleError, InvalidStreamPartError, InvalidToolInputError, JSONRPCError, JSONRPCMessage, JSONRPCNotification, JSONRPCRequest, JSONRPCResponse, JSONValue, JsonToSseTransformStream, LanguageModel, LanguageModelRequestMetadata, LanguageModelResponseMetadata, LanguageModelUsage, MCPClientError, MCPTransport, MessageConversionError, NoImageGeneratedError, NoObjectGeneratedError, NoOutputSpecifiedError, NoSuchProviderError, NoSuchToolError, ObjectStreamPart, output as Output, PrepareReconnectToStreamRequest, PrepareSendMessagesRequest, PrepareStepFunction, PrepareStepResult, Prompt, Provider, ProviderMetadata, ProviderRegistryProvider, ReasoningUIPart, RepairTextFunction, RetryError, SerialJobExecutor, SourceDocumentUIPart, SourceUrlUIPart, SpeechModel, SpeechModelResponseMetadata, SpeechWarning, StepResult, StepStartUIPart, StopCondition, StreamObjectOnFinishCallback, StreamObjectResult, StreamTextOnChunkCallback, StreamTextOnErrorCallback, StreamTextOnFinishCallback, StreamTextOnStepFinishCallback, StreamTextResult, StreamTextTransform, TelemetrySettings, TextStreamChatTransport, TextStreamPart, TextUIPart, ToolCallRepairError, ToolCallRepairFunction, ToolCallUnion, ToolChoice, ToolErrorUnion, ToolResultUnion, ToolSet, ToolUIPart, TranscriptionModel, TranscriptionModelResponseMetadata, TranscriptionWarning, 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, 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, hasToolCall, isDeepEqualData, isToolUIPart, modelMessageSchema, parsePartialJson, pipeTextStreamToResponse, pipeUIMessageStreamToResponse, readUIMessageStream, simulateReadableStream, simulateStreamingMiddleware, smoothStream, stepCountIs, streamObject, streamText, systemModelMessageSchema, toolModelMessageSchema, userModelMessageSchema, wrapLanguageModel, wrapProvider };
4083
+ 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, EmbedManyResult, EmbedResult, Embedding, EmbeddingModel, EmbeddingModelUsage, ErrorHandler, Agent as Experimental_Agent, AgentSettings as Experimental_AgentSettings, GenerateImageResult as Experimental_GenerateImageResult, GeneratedFile as Experimental_GeneratedImage, SpeechResult as Experimental_SpeechResult, TranscriptionResult as Experimental_TranscriptionResult, FileUIPart, FinishReason, GenerateObjectResult, GenerateTextOnStepFinishCallback, GenerateTextResult, GeneratedAudioFile, GeneratedFile, HttpChatTransport, HttpChatTransportInitOptions, ImageModel, ImageGenerationWarning as ImageModelCallWarning, ImageModelProviderMetadata, ImageModelResponseMetadata, InferUIDataParts, InferUIMessageChunk, InferUITool, InferUITools, InvalidArgumentError, InvalidDataContentError, InvalidMessageRoleError, InvalidStreamPartError, InvalidToolInputError, JSONRPCError, JSONRPCMessage, JSONRPCNotification, JSONRPCRequest, JSONRPCResponse, JSONValue, JsonToSseTransformStream, LanguageModel, LanguageModelRequestMetadata, LanguageModelResponseMetadata, LanguageModelUsage, MCPClientError, MCPTransport, MessageConversionError, NoImageGeneratedError, NoObjectGeneratedError, NoOutputSpecifiedError, NoSuchProviderError, NoSuchToolError, ObjectStreamPart, output as Output, PrepareReconnectToStreamRequest, PrepareSendMessagesRequest, PrepareStepFunction, PrepareStepResult, Prompt, Provider, ProviderMetadata, ProviderRegistryProvider, ReasoningUIPart, RepairTextFunction, RetryError, SerialJobExecutor, SourceDocumentUIPart, SourceUrlUIPart, SpeechModel, SpeechModelResponseMetadata, SpeechWarning, StepResult, StepStartUIPart, StopCondition, StreamObjectOnFinishCallback, StreamObjectResult, StreamTextOnChunkCallback, StreamTextOnErrorCallback, StreamTextOnFinishCallback, StreamTextOnStepFinishCallback, StreamTextResult, StreamTextTransform, TelemetrySettings, TextStreamChatTransport, TextStreamPart, TextUIPart, ToolCallRepairError, ToolCallRepairFunction, ToolCallUnion, ToolChoice, ToolErrorUnion, ToolResultUnion, ToolSet, ToolUIPart, TranscriptionModel, TranscriptionModelResponseMetadata, TranscriptionWarning, 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, 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, hasToolCall, isDeepEqualData, isToolUIPart, lastAssistantMessageIsCompleteWithToolCalls, modelMessageSchema, parsePartialJson, pipeTextStreamToResponse, pipeUIMessageStreamToResponse, readUIMessageStream, simulateReadableStream, simulateStreamingMiddleware, smoothStream, stepCountIs, streamObject, streamText, systemModelMessageSchema, toolModelMessageSchema, userModelMessageSchema, wrapLanguageModel, wrapProvider };
package/dist/index.js CHANGED
@@ -94,6 +94,7 @@ __export(src_exports, {
94
94
  isDeepEqualData: () => isDeepEqualData,
95
95
  isToolUIPart: () => isToolUIPart,
96
96
  jsonSchema: () => import_provider_utils29.jsonSchema,
97
+ lastAssistantMessageIsCompleteWithToolCalls: () => lastAssistantMessageIsCompleteWithToolCalls,
97
98
  modelMessageSchema: () => modelMessageSchema,
98
99
  parsePartialJson: () => parsePartialJson,
99
100
  pipeTextStreamToResponse: () => pipeTextStreamToResponse,
@@ -975,7 +976,8 @@ function prepareToolsAndToolChoice({
975
976
  type: "function",
976
977
  name: name16,
977
978
  description: tool3.description,
978
- inputSchema: (0, import_provider_utils5.asSchema)(tool3.inputSchema).jsonSchema
979
+ inputSchema: (0, import_provider_utils5.asSchema)(tool3.inputSchema).jsonSchema,
980
+ providerOptions: tool3.providerOptions
979
981
  };
980
982
  case "provider-defined":
981
983
  return {
@@ -8670,7 +8672,8 @@ var AbstractChat = class {
8670
8672
  onError,
8671
8673
  onToolCall,
8672
8674
  onFinish,
8673
- onData
8675
+ onData,
8676
+ sendAutomaticallyWhen
8674
8677
  }) {
8675
8678
  this.activeResponse = void 0;
8676
8679
  this.jobExecutor = new SerialJobExecutor();
@@ -8768,35 +8771,33 @@ var AbstractChat = class {
8768
8771
  tool: tool3,
8769
8772
  toolCallId,
8770
8773
  output
8771
- }) => {
8772
- this.jobExecutor.run(async () => {
8773
- const messages = this.state.messages;
8774
- const lastMessage = messages[messages.length - 1];
8775
- this.state.replaceMessage(messages.length - 1, {
8776
- ...lastMessage,
8777
- parts: lastMessage.parts.map(
8778
- (part) => isToolUIPart(part) && part.toolCallId === toolCallId ? { ...part, state: "output-available", output } : part
8779
- )
8780
- });
8781
- if (this.activeResponse) {
8782
- this.activeResponse.state.message.parts = this.activeResponse.state.message.parts.map(
8783
- (part) => isToolUIPart(part) && part.toolCallId === toolCallId ? {
8784
- ...part,
8785
- state: "output-available",
8786
- output,
8787
- errorText: void 0
8788
- } : part
8789
- );
8790
- }
8774
+ }) => this.jobExecutor.run(async () => {
8775
+ var _a16, _b;
8776
+ const messages = this.state.messages;
8777
+ const lastMessage = messages[messages.length - 1];
8778
+ this.state.replaceMessage(messages.length - 1, {
8779
+ ...lastMessage,
8780
+ parts: lastMessage.parts.map(
8781
+ (part) => isToolUIPart(part) && part.toolCallId === toolCallId ? { ...part, state: "output-available", output } : part
8782
+ )
8791
8783
  });
8792
- };
8793
- /**
8794
- * Checks if the assistant message can be submitted, i.e. if it
8795
- * has tool calls and all tool calls have results.
8796
- *
8797
- * @returns {boolean} True if the assistant message can be submitted, false otherwise.
8798
- */
8799
- this.canAssistantMessageBeSubmitted = () => isAssistantMessageWithCompletedToolCalls(this.lastMessage);
8784
+ if (this.activeResponse) {
8785
+ this.activeResponse.state.message.parts = this.activeResponse.state.message.parts.map(
8786
+ (part) => isToolUIPart(part) && part.toolCallId === toolCallId ? {
8787
+ ...part,
8788
+ state: "output-available",
8789
+ output,
8790
+ errorText: void 0
8791
+ } : part
8792
+ );
8793
+ }
8794
+ if (this.status !== "streaming" && this.status !== "submitted" && ((_a16 = this.sendAutomaticallyWhen) == null ? void 0 : _a16.call(this, { messages: this.state.messages }))) {
8795
+ this.makeRequest({
8796
+ trigger: "submit-message",
8797
+ messageId: (_b = this.lastMessage) == null ? void 0 : _b.id
8798
+ });
8799
+ }
8800
+ });
8800
8801
  /**
8801
8802
  * Abort the current request immediately, keep the generated tokens if any.
8802
8803
  */
@@ -8818,6 +8819,7 @@ var AbstractChat = class {
8818
8819
  this.onToolCall = onToolCall;
8819
8820
  this.onFinish = onFinish;
8820
8821
  this.onData = onData;
8822
+ this.sendAutomaticallyWhen = sendAutomaticallyWhen;
8821
8823
  }
8822
8824
  /**
8823
8825
  * Hook status:
@@ -8858,7 +8860,7 @@ var AbstractChat = class {
8858
8860
  body,
8859
8861
  messageId
8860
8862
  }) {
8861
- var _a16;
8863
+ var _a16, _b, _c;
8862
8864
  this.setStatus({ status: "submitted", error: void 0 });
8863
8865
  const lastMessage = this.lastMessage;
8864
8866
  try {
@@ -8945,21 +8947,17 @@ var AbstractChat = class {
8945
8947
  } finally {
8946
8948
  this.activeResponse = void 0;
8947
8949
  }
8950
+ if ((_b = this.sendAutomaticallyWhen) == null ? void 0 : _b.call(this, { messages: this.state.messages })) {
8951
+ await this.makeRequest({
8952
+ trigger: "submit-message",
8953
+ messageId: (_c = this.lastMessage) == null ? void 0 : _c.id,
8954
+ metadata,
8955
+ headers,
8956
+ body
8957
+ });
8958
+ }
8948
8959
  }
8949
8960
  };
8950
- function isAssistantMessageWithCompletedToolCalls(message) {
8951
- if (!message) {
8952
- return false;
8953
- }
8954
- if (message.role !== "assistant") {
8955
- return false;
8956
- }
8957
- const lastStepStartIndex = message.parts.reduce((lastIndex, part, index) => {
8958
- return part.type === "step-start" ? index : lastIndex;
8959
- }, -1);
8960
- const lastStepToolInvocations = message.parts.slice(lastStepStartIndex + 1).filter(isToolUIPart);
8961
- return lastStepToolInvocations.length > 0 && lastStepToolInvocations.every((part) => part.state === "output-available");
8962
- }
8963
8961
 
8964
8962
  // src/ui/convert-to-model-messages.ts
8965
8963
  function convertToModelMessages(messages, options) {
@@ -9132,6 +9130,24 @@ function convertToModelMessages(messages, options) {
9132
9130
  }
9133
9131
  var convertToCoreMessages = convertToModelMessages;
9134
9132
 
9133
+ // src/ui/last-assistant-message-is-complete-with-tool-calls.ts
9134
+ function lastAssistantMessageIsCompleteWithToolCalls({
9135
+ messages
9136
+ }) {
9137
+ const message = messages[messages.length - 1];
9138
+ if (!message) {
9139
+ return false;
9140
+ }
9141
+ if (message.role !== "assistant") {
9142
+ return false;
9143
+ }
9144
+ const lastStepStartIndex = message.parts.reduce((lastIndex, part, index) => {
9145
+ return part.type === "step-start" ? index : lastIndex;
9146
+ }, -1);
9147
+ const lastStepToolInvocations = message.parts.slice(lastStepStartIndex + 1).filter(isToolUIPart);
9148
+ return lastStepToolInvocations.length > 0 && lastStepToolInvocations.every((part) => part.state === "output-available");
9149
+ }
9150
+
9135
9151
  // src/ui/transform-text-to-ui-message-stream.ts
9136
9152
  function transformTextToUiMessageStream({
9137
9153
  stream
@@ -9376,6 +9392,7 @@ function readUIMessageStream({
9376
9392
  isDeepEqualData,
9377
9393
  isToolUIPart,
9378
9394
  jsonSchema,
9395
+ lastAssistantMessageIsCompleteWithToolCalls,
9379
9396
  modelMessageSchema,
9380
9397
  parsePartialJson,
9381
9398
  pipeTextStreamToResponse,