ai 5.0.0-beta.26 → 5.0.0-beta.27

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,
@@ -8670,7 +8671,8 @@ var AbstractChat = class {
8670
8671
  onError,
8671
8672
  onToolCall,
8672
8673
  onFinish,
8673
- onData
8674
+ onData,
8675
+ sendAutomaticallyWhen
8674
8676
  }) {
8675
8677
  this.activeResponse = void 0;
8676
8678
  this.jobExecutor = new SerialJobExecutor();
@@ -8768,35 +8770,33 @@ var AbstractChat = class {
8768
8770
  tool: tool3,
8769
8771
  toolCallId,
8770
8772
  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
- }
8773
+ }) => this.jobExecutor.run(async () => {
8774
+ var _a16, _b;
8775
+ const messages = this.state.messages;
8776
+ const lastMessage = messages[messages.length - 1];
8777
+ this.state.replaceMessage(messages.length - 1, {
8778
+ ...lastMessage,
8779
+ parts: lastMessage.parts.map(
8780
+ (part) => isToolUIPart(part) && part.toolCallId === toolCallId ? { ...part, state: "output-available", output } : part
8781
+ )
8791
8782
  });
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);
8783
+ if (this.activeResponse) {
8784
+ this.activeResponse.state.message.parts = this.activeResponse.state.message.parts.map(
8785
+ (part) => isToolUIPart(part) && part.toolCallId === toolCallId ? {
8786
+ ...part,
8787
+ state: "output-available",
8788
+ output,
8789
+ errorText: void 0
8790
+ } : part
8791
+ );
8792
+ }
8793
+ if (this.status !== "streaming" && this.status !== "submitted" && ((_a16 = this.sendAutomaticallyWhen) == null ? void 0 : _a16.call(this, { messages }))) {
8794
+ await this.makeRequest({
8795
+ trigger: "submit-message",
8796
+ messageId: (_b = this.lastMessage) == null ? void 0 : _b.id
8797
+ });
8798
+ }
8799
+ });
8800
8800
  /**
8801
8801
  * Abort the current request immediately, keep the generated tokens if any.
8802
8802
  */
@@ -8818,6 +8818,7 @@ var AbstractChat = class {
8818
8818
  this.onToolCall = onToolCall;
8819
8819
  this.onFinish = onFinish;
8820
8820
  this.onData = onData;
8821
+ this.sendAutomaticallyWhen = sendAutomaticallyWhen;
8821
8822
  }
8822
8823
  /**
8823
8824
  * Hook status:
@@ -8858,7 +8859,7 @@ var AbstractChat = class {
8858
8859
  body,
8859
8860
  messageId
8860
8861
  }) {
8861
- var _a16;
8862
+ var _a16, _b, _c;
8862
8863
  this.setStatus({ status: "submitted", error: void 0 });
8863
8864
  const lastMessage = this.lastMessage;
8864
8865
  try {
@@ -8945,21 +8946,17 @@ var AbstractChat = class {
8945
8946
  } finally {
8946
8947
  this.activeResponse = void 0;
8947
8948
  }
8949
+ if ((_b = this.sendAutomaticallyWhen) == null ? void 0 : _b.call(this, { messages: this.state.messages })) {
8950
+ await this.makeRequest({
8951
+ trigger: "submit-message",
8952
+ messageId: (_c = this.lastMessage) == null ? void 0 : _c.id,
8953
+ metadata,
8954
+ headers,
8955
+ body
8956
+ });
8957
+ }
8948
8958
  }
8949
8959
  };
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
8960
 
8964
8961
  // src/ui/convert-to-model-messages.ts
8965
8962
  function convertToModelMessages(messages, options) {
@@ -9132,6 +9129,24 @@ function convertToModelMessages(messages, options) {
9132
9129
  }
9133
9130
  var convertToCoreMessages = convertToModelMessages;
9134
9131
 
9132
+ // src/ui/last-assistant-message-is-complete-with-tool-calls.ts
9133
+ function lastAssistantMessageIsCompleteWithToolCalls({
9134
+ messages
9135
+ }) {
9136
+ const message = messages[messages.length - 1];
9137
+ if (!message) {
9138
+ return false;
9139
+ }
9140
+ if (message.role !== "assistant") {
9141
+ return false;
9142
+ }
9143
+ const lastStepStartIndex = message.parts.reduce((lastIndex, part, index) => {
9144
+ return part.type === "step-start" ? index : lastIndex;
9145
+ }, -1);
9146
+ const lastStepToolInvocations = message.parts.slice(lastStepStartIndex + 1).filter(isToolUIPart);
9147
+ return lastStepToolInvocations.length > 0 && lastStepToolInvocations.every((part) => part.state === "output-available");
9148
+ }
9149
+
9135
9150
  // src/ui/transform-text-to-ui-message-stream.ts
9136
9151
  function transformTextToUiMessageStream({
9137
9152
  stream
@@ -9376,6 +9391,7 @@ function readUIMessageStream({
9376
9391
  isDeepEqualData,
9377
9392
  isToolUIPart,
9378
9393
  jsonSchema,
9394
+ lastAssistantMessageIsCompleteWithToolCalls,
9379
9395
  modelMessageSchema,
9380
9396
  parsePartialJson,
9381
9397
  pipeTextStreamToResponse,