ai 5.0.22 → 5.0.24
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 +23 -0
- package/dist/index.d.mts +7 -1
- package/dist/index.d.ts +7 -1
- package/dist/index.js +93 -34
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +91 -34
- package/dist/index.mjs.map +1 -1
- package/package.json +3 -3
package/CHANGELOG.md
CHANGED
@@ -1,5 +1,28 @@
|
|
1
1
|
# ai
|
2
2
|
|
3
|
+
## 5.0.24
|
4
|
+
|
5
|
+
### Patch Changes
|
6
|
+
|
7
|
+
- f8f3682: fix: call onFinish when stream is cancelled in toUIMessageStream
|
8
|
+
|
9
|
+
Previously, onFinish was only called on normal stream completion. Now it's also called when the reader is cancelled (e.g., browser close, navigation), ensuring partial messages are persisted.
|
10
|
+
|
11
|
+
- Updated dependencies [1b5a3d3]
|
12
|
+
- Updated dependencies [c9994f9]
|
13
|
+
- @ai-sdk/provider-utils@3.0.6
|
14
|
+
- @ai-sdk/gateway@1.0.13
|
15
|
+
|
16
|
+
## 5.0.23
|
17
|
+
|
18
|
+
### Patch Changes
|
19
|
+
|
20
|
+
- 5099b3d: fix(ai): make `chat.addToolResult()` compatible with dynamic tool calls
|
21
|
+
- 7a2bf8d: fix(ai): support loop breaking behavior in async iterable stream
|
22
|
+
- Updated dependencies [50e2029]
|
23
|
+
- Updated dependencies [b8478f0]
|
24
|
+
- @ai-sdk/gateway@1.0.12
|
25
|
+
|
3
26
|
## 5.0.22
|
4
27
|
|
5
28
|
### Patch Changes
|
package/dist/index.d.mts
CHANGED
@@ -1518,7 +1518,9 @@ type DynamicToolUIPart = {
|
|
1518
1518
|
callProviderMetadata?: ProviderMetadata;
|
1519
1519
|
});
|
1520
1520
|
declare function isToolUIPart<TOOLS extends UITools>(part: UIMessagePart<UIDataTypes, TOOLS>): part is ToolUIPart<TOOLS>;
|
1521
|
+
declare function isToolOrDynamicToolUIPart<TOOLS extends UITools>(part: UIMessagePart<UIDataTypes, TOOLS>): part is ToolUIPart<TOOLS> | DynamicToolUIPart;
|
1521
1522
|
declare function getToolName<TOOLS extends UITools>(part: ToolUIPart<TOOLS>): keyof TOOLS;
|
1523
|
+
declare function getToolOrDynamicToolName(part: ToolUIPart<UITools> | DynamicToolUIPart): string;
|
1522
1524
|
type InferUIMessageMetadata<T extends UIMessage> = T extends UIMessage<infer METADATA> ? METADATA : unknown;
|
1523
1525
|
type InferUIMessageData<T extends UIMessage> = T extends UIMessage<unknown, infer DATA_TYPES> ? DATA_TYPES : UIDataTypes;
|
1524
1526
|
type InferUIMessageTools<T extends UIMessage> = T extends UIMessage<unknown, UIDataTypes, infer TOOLS> ? TOOLS : UITools;
|
@@ -1651,6 +1653,10 @@ type UIMessageStreamResponseInit = ResponseInit & {
|
|
1651
1653
|
}) => PromiseLike<void> | void;
|
1652
1654
|
};
|
1653
1655
|
|
1656
|
+
/**
|
1657
|
+
* A type that combines AsyncIterable and ReadableStream.
|
1658
|
+
* This allows a ReadableStream to be consumed using for-await-of syntax.
|
1659
|
+
*/
|
1654
1660
|
type AsyncIterableStream<T> = AsyncIterable<T> & ReadableStream<T>;
|
1655
1661
|
|
1656
1662
|
type ErrorHandler = (error: unknown) => void;
|
@@ -4368,4 +4374,4 @@ declare global {
|
|
4368
4374
|
var AI_SDK_DEFAULT_PROVIDER: ProviderV2 | undefined;
|
4369
4375
|
}
|
4370
4376
|
|
4371
|
-
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, 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, hasToolCall, isDeepEqualData, isToolUIPart, lastAssistantMessageIsCompleteWithToolCalls, modelMessageSchema, parsePartialJson, pipeTextStreamToResponse, pipeUIMessageStreamToResponse, readUIMessageStream, simulateReadableStream, simulateStreamingMiddleware, smoothStream, stepCountIs, streamObject, streamText, systemModelMessageSchema, toolModelMessageSchema, userModelMessageSchema, validateUIMessages, wrapLanguageModel, wrapProvider };
|
4377
|
+
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, 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 };
|
package/dist/index.d.ts
CHANGED
@@ -1518,7 +1518,9 @@ type DynamicToolUIPart = {
|
|
1518
1518
|
callProviderMetadata?: ProviderMetadata;
|
1519
1519
|
});
|
1520
1520
|
declare function isToolUIPart<TOOLS extends UITools>(part: UIMessagePart<UIDataTypes, TOOLS>): part is ToolUIPart<TOOLS>;
|
1521
|
+
declare function isToolOrDynamicToolUIPart<TOOLS extends UITools>(part: UIMessagePart<UIDataTypes, TOOLS>): part is ToolUIPart<TOOLS> | DynamicToolUIPart;
|
1521
1522
|
declare function getToolName<TOOLS extends UITools>(part: ToolUIPart<TOOLS>): keyof TOOLS;
|
1523
|
+
declare function getToolOrDynamicToolName(part: ToolUIPart<UITools> | DynamicToolUIPart): string;
|
1522
1524
|
type InferUIMessageMetadata<T extends UIMessage> = T extends UIMessage<infer METADATA> ? METADATA : unknown;
|
1523
1525
|
type InferUIMessageData<T extends UIMessage> = T extends UIMessage<unknown, infer DATA_TYPES> ? DATA_TYPES : UIDataTypes;
|
1524
1526
|
type InferUIMessageTools<T extends UIMessage> = T extends UIMessage<unknown, UIDataTypes, infer TOOLS> ? TOOLS : UITools;
|
@@ -1651,6 +1653,10 @@ type UIMessageStreamResponseInit = ResponseInit & {
|
|
1651
1653
|
}) => PromiseLike<void> | void;
|
1652
1654
|
};
|
1653
1655
|
|
1656
|
+
/**
|
1657
|
+
* A type that combines AsyncIterable and ReadableStream.
|
1658
|
+
* This allows a ReadableStream to be consumed using for-await-of syntax.
|
1659
|
+
*/
|
1654
1660
|
type AsyncIterableStream<T> = AsyncIterable<T> & ReadableStream<T>;
|
1655
1661
|
|
1656
1662
|
type ErrorHandler = (error: unknown) => void;
|
@@ -4368,4 +4374,4 @@ declare global {
|
|
4368
4374
|
var AI_SDK_DEFAULT_PROVIDER: ProviderV2 | undefined;
|
4369
4375
|
}
|
4370
4376
|
|
4371
|
-
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, 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, hasToolCall, isDeepEqualData, isToolUIPart, lastAssistantMessageIsCompleteWithToolCalls, modelMessageSchema, parsePartialJson, pipeTextStreamToResponse, pipeUIMessageStreamToResponse, readUIMessageStream, simulateReadableStream, simulateStreamingMiddleware, smoothStream, stepCountIs, streamObject, streamText, systemModelMessageSchema, toolModelMessageSchema, userModelMessageSchema, validateUIMessages, wrapLanguageModel, wrapProvider };
|
4377
|
+
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, 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 };
|
package/dist/index.js
CHANGED
@@ -92,8 +92,10 @@ __export(src_exports, {
|
|
92
92
|
generateText: () => generateText,
|
93
93
|
getTextFromDataUrl: () => getTextFromDataUrl,
|
94
94
|
getToolName: () => getToolName,
|
95
|
+
getToolOrDynamicToolName: () => getToolOrDynamicToolName,
|
95
96
|
hasToolCall: () => hasToolCall,
|
96
97
|
isDeepEqualData: () => isDeepEqualData,
|
98
|
+
isToolOrDynamicToolUIPart: () => isToolOrDynamicToolUIPart,
|
97
99
|
isToolUIPart: () => isToolUIPart,
|
98
100
|
jsonSchema: () => import_provider_utils29.jsonSchema,
|
99
101
|
lastAssistantMessageIsCompleteWithToolCalls: () => lastAssistantMessageIsCompleteWithToolCalls,
|
@@ -3332,9 +3334,18 @@ async function parsePartialJson(jsonText) {
|
|
3332
3334
|
function isToolUIPart(part) {
|
3333
3335
|
return part.type.startsWith("tool-");
|
3334
3336
|
}
|
3337
|
+
function isDynamicToolUIPart(part) {
|
3338
|
+
return part.type === "dynamic-tool";
|
3339
|
+
}
|
3340
|
+
function isToolOrDynamicToolUIPart(part) {
|
3341
|
+
return isToolUIPart(part) || isDynamicToolUIPart(part);
|
3342
|
+
}
|
3335
3343
|
function getToolName(part) {
|
3336
3344
|
return part.type.split("-").slice(1).join("-");
|
3337
3345
|
}
|
3346
|
+
function getToolOrDynamicToolName(part) {
|
3347
|
+
return isDynamicToolUIPart(part) ? part.toolName : getToolName(part);
|
3348
|
+
}
|
3338
3349
|
|
3339
3350
|
// src/ui/process-ui-message-stream.ts
|
3340
3351
|
function createStreamingUIMessageState({
|
@@ -3827,6 +3838,23 @@ function handleUIMessageStreamFinish({
|
|
3827
3838
|
await job({ state, write: () => {
|
3828
3839
|
} });
|
3829
3840
|
};
|
3841
|
+
let finishCalled = false;
|
3842
|
+
const callOnFinish = async () => {
|
3843
|
+
if (finishCalled || !onFinish) {
|
3844
|
+
return;
|
3845
|
+
}
|
3846
|
+
finishCalled = true;
|
3847
|
+
const isContinuation = state.message.id === (lastMessage == null ? void 0 : lastMessage.id);
|
3848
|
+
await onFinish({
|
3849
|
+
isAborted,
|
3850
|
+
isContinuation,
|
3851
|
+
responseMessage: state.message,
|
3852
|
+
messages: [
|
3853
|
+
...isContinuation ? originalMessages.slice(0, -1) : originalMessages,
|
3854
|
+
state.message
|
3855
|
+
]
|
3856
|
+
});
|
3857
|
+
};
|
3830
3858
|
return processUIMessageStream({
|
3831
3859
|
stream: idInjectedStream,
|
3832
3860
|
runUpdateMessageJob,
|
@@ -3836,17 +3864,12 @@ function handleUIMessageStreamFinish({
|
|
3836
3864
|
transform(chunk, controller) {
|
3837
3865
|
controller.enqueue(chunk);
|
3838
3866
|
},
|
3867
|
+
// @ts-expect-error cancel is still new and missing from types https://developer.mozilla.org/en-US/docs/Web/API/TransformStream#browser_compatibility
|
3868
|
+
async cancel() {
|
3869
|
+
await callOnFinish();
|
3870
|
+
},
|
3839
3871
|
async flush() {
|
3840
|
-
|
3841
|
-
await onFinish({
|
3842
|
-
isAborted,
|
3843
|
-
isContinuation,
|
3844
|
-
responseMessage: state.message,
|
3845
|
-
messages: [
|
3846
|
-
...isContinuation ? originalMessages.slice(0, -1) : originalMessages,
|
3847
|
-
state.message
|
3848
|
-
]
|
3849
|
-
});
|
3872
|
+
await callOnFinish();
|
3850
3873
|
}
|
3851
3874
|
})
|
3852
3875
|
);
|
@@ -3881,12 +3904,57 @@ function pipeUIMessageStreamToResponse({
|
|
3881
3904
|
// src/util/async-iterable-stream.ts
|
3882
3905
|
function createAsyncIterableStream(source) {
|
3883
3906
|
const stream = source.pipeThrough(new TransformStream());
|
3884
|
-
stream[Symbol.asyncIterator] = ()
|
3885
|
-
const reader =
|
3907
|
+
stream[Symbol.asyncIterator] = function() {
|
3908
|
+
const reader = this.getReader();
|
3909
|
+
let finished = false;
|
3910
|
+
async function cleanup(cancelStream) {
|
3911
|
+
var _a17;
|
3912
|
+
finished = true;
|
3913
|
+
try {
|
3914
|
+
if (cancelStream) {
|
3915
|
+
await ((_a17 = reader.cancel) == null ? void 0 : _a17.call(reader));
|
3916
|
+
}
|
3917
|
+
} finally {
|
3918
|
+
try {
|
3919
|
+
reader.releaseLock();
|
3920
|
+
} catch (e) {
|
3921
|
+
}
|
3922
|
+
}
|
3923
|
+
}
|
3886
3924
|
return {
|
3925
|
+
/**
|
3926
|
+
* Reads the next chunk from the stream.
|
3927
|
+
* @returns A promise resolving to the next IteratorResult.
|
3928
|
+
*/
|
3887
3929
|
async next() {
|
3930
|
+
if (finished) {
|
3931
|
+
return { done: true, value: void 0 };
|
3932
|
+
}
|
3888
3933
|
const { done, value } = await reader.read();
|
3889
|
-
|
3934
|
+
if (done) {
|
3935
|
+
await cleanup(true);
|
3936
|
+
return { done: true, value: void 0 };
|
3937
|
+
}
|
3938
|
+
return { done: false, value };
|
3939
|
+
},
|
3940
|
+
/**
|
3941
|
+
* Called on early exit (e.g., break from for-await).
|
3942
|
+
* Ensures the stream is cancelled and resources are released.
|
3943
|
+
* @returns A promise resolving to a completed IteratorResult.
|
3944
|
+
*/
|
3945
|
+
async return() {
|
3946
|
+
await cleanup(true);
|
3947
|
+
return { done: true, value: void 0 };
|
3948
|
+
},
|
3949
|
+
/**
|
3950
|
+
* Called on early exit with error.
|
3951
|
+
* Ensures the stream is cancelled and resources are released, then rethrows the error.
|
3952
|
+
* @param err The error to throw.
|
3953
|
+
* @returns A promise that rejects with the provided error.
|
3954
|
+
*/
|
3955
|
+
async throw(err) {
|
3956
|
+
await cleanup(true);
|
3957
|
+
throw err;
|
3890
3958
|
}
|
3891
3959
|
};
|
3892
3960
|
};
|
@@ -9285,12 +9353,12 @@ var AbstractChat = class {
|
|
9285
9353
|
this.state.replaceMessage(messages.length - 1, {
|
9286
9354
|
...lastMessage,
|
9287
9355
|
parts: lastMessage.parts.map(
|
9288
|
-
(part) =>
|
9356
|
+
(part) => isToolOrDynamicToolUIPart(part) && part.toolCallId === toolCallId ? { ...part, state: "output-available", output } : part
|
9289
9357
|
)
|
9290
9358
|
});
|
9291
9359
|
if (this.activeResponse) {
|
9292
9360
|
this.activeResponse.state.message.parts = this.activeResponse.state.message.parts.map(
|
9293
|
-
(part) =>
|
9361
|
+
(part) => isToolOrDynamicToolUIPart(part) && part.toolCallId === toolCallId ? {
|
9294
9362
|
...part,
|
9295
9363
|
state: "output-available",
|
9296
9364
|
output,
|
@@ -9474,7 +9542,7 @@ function convertToModelMessages(messages, options) {
|
|
9474
9542
|
messages = messages.map((message) => ({
|
9475
9543
|
...message,
|
9476
9544
|
parts: message.parts.filter(
|
9477
|
-
(part) => !
|
9545
|
+
(part) => !isToolOrDynamicToolUIPart(part) || part.state !== "input-streaming" && part.state !== "input-available"
|
9478
9546
|
)
|
9479
9547
|
}));
|
9480
9548
|
}
|
@@ -9553,12 +9621,7 @@ function convertToModelMessages(messages, options) {
|
|
9553
9621
|
});
|
9554
9622
|
} else if (part.type === "dynamic-tool") {
|
9555
9623
|
const toolName = part.toolName;
|
9556
|
-
if (part.state
|
9557
|
-
throw new MessageConversionError({
|
9558
|
-
originalMessage: message,
|
9559
|
-
message: `incomplete tool input is not supported: ${part.toolCallId}`
|
9560
|
-
});
|
9561
|
-
} else {
|
9624
|
+
if (part.state !== "input-streaming") {
|
9562
9625
|
content.push({
|
9563
9626
|
type: "tool-call",
|
9564
9627
|
toolCallId: part.toolCallId,
|
@@ -9569,12 +9632,7 @@ function convertToModelMessages(messages, options) {
|
|
9569
9632
|
}
|
9570
9633
|
} else if (isToolUIPart(part)) {
|
9571
9634
|
const toolName = getToolName(part);
|
9572
|
-
if (part.state
|
9573
|
-
throw new MessageConversionError({
|
9574
|
-
originalMessage: message,
|
9575
|
-
message: `incomplete tool input is not supported: ${part.toolCallId}`
|
9576
|
-
});
|
9577
|
-
} else {
|
9635
|
+
if (part.state !== "input-streaming") {
|
9578
9636
|
content.push({
|
9579
9637
|
type: "tool-call",
|
9580
9638
|
toolCallId: part.toolCallId,
|
@@ -9629,13 +9687,12 @@ function convertToModelMessages(messages, options) {
|
|
9629
9687
|
};
|
9630
9688
|
}
|
9631
9689
|
default: {
|
9632
|
-
|
9633
|
-
originalMessage: message,
|
9634
|
-
message: `Unsupported tool part state: ${toolPart.state}`
|
9635
|
-
});
|
9690
|
+
return null;
|
9636
9691
|
}
|
9637
9692
|
}
|
9638
|
-
})
|
9693
|
+
}).filter(
|
9694
|
+
(output) => output != null
|
9695
|
+
)
|
9639
9696
|
});
|
9640
9697
|
}
|
9641
9698
|
block = [];
|
@@ -9681,7 +9738,7 @@ function lastAssistantMessageIsCompleteWithToolCalls({
|
|
9681
9738
|
const lastStepStartIndex = message.parts.reduce((lastIndex, part, index) => {
|
9682
9739
|
return part.type === "step-start" ? index : lastIndex;
|
9683
9740
|
}, -1);
|
9684
|
-
const lastStepToolInvocations = message.parts.slice(lastStepStartIndex + 1).filter(
|
9741
|
+
const lastStepToolInvocations = message.parts.slice(lastStepStartIndex + 1).filter(isToolOrDynamicToolUIPart);
|
9685
9742
|
return lastStepToolInvocations.length > 0 && lastStepToolInvocations.every((part) => part.state === "output-available");
|
9686
9743
|
}
|
9687
9744
|
|
@@ -10142,8 +10199,10 @@ function readUIMessageStream({
|
|
10142
10199
|
generateText,
|
10143
10200
|
getTextFromDataUrl,
|
10144
10201
|
getToolName,
|
10202
|
+
getToolOrDynamicToolName,
|
10145
10203
|
hasToolCall,
|
10146
10204
|
isDeepEqualData,
|
10205
|
+
isToolOrDynamicToolUIPart,
|
10147
10206
|
isToolUIPart,
|
10148
10207
|
jsonSchema,
|
10149
10208
|
lastAssistantMessageIsCompleteWithToolCalls,
|