ai 4.3.0 → 4.3.2
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 +12 -0
- package/dist/index.d.mts +16 -3
- package/dist/index.d.ts +16 -3
- package/dist/index.js +66 -16
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +66 -16
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
@@ -1,5 +1,17 @@
|
|
1
1
|
# ai
|
2
2
|
|
3
|
+
## 4.3.2
|
4
|
+
|
5
|
+
### Patch Changes
|
6
|
+
|
7
|
+
- 665a567: fix (core): improve error handling in streamText's consumeStream method
|
8
|
+
|
9
|
+
## 4.3.1
|
10
|
+
|
11
|
+
### Patch Changes
|
12
|
+
|
13
|
+
- 3d1bd38: feat(smooth-stream): chunking callbacks
|
14
|
+
|
3
15
|
## 4.3.0
|
4
16
|
|
5
17
|
### Minor Changes
|
package/dist/index.d.mts
CHANGED
@@ -2539,6 +2539,9 @@ type DataStreamOptions = {
|
|
2539
2539
|
*/
|
2540
2540
|
experimental_sendStart?: boolean;
|
2541
2541
|
};
|
2542
|
+
type ConsumeStreamOptions = {
|
2543
|
+
onError?: (error: unknown) => void;
|
2544
|
+
};
|
2542
2545
|
/**
|
2543
2546
|
A result object for accessing different stream types and additional information.
|
2544
2547
|
*/
|
@@ -2659,8 +2662,10 @@ interface StreamTextResult<TOOLS extends ToolSet, PARTIAL_OUTPUT> {
|
|
2659
2662
|
This is useful to force the stream to finish.
|
2660
2663
|
It effectively removes the backpressure and allows the stream to finish,
|
2661
2664
|
triggering the `onFinish` callback and the promise resolution.
|
2665
|
+
|
2666
|
+
If an error occurs, it is passed to the optional `onError` callback.
|
2662
2667
|
*/
|
2663
|
-
consumeStream(): Promise<void>;
|
2668
|
+
consumeStream(options?: ConsumeStreamOptions): Promise<void>;
|
2664
2669
|
/**
|
2665
2670
|
Converts the result to a data stream.
|
2666
2671
|
|
@@ -2806,6 +2811,14 @@ type TextStreamPart<TOOLS extends ToolSet> = {
|
|
2806
2811
|
error: unknown;
|
2807
2812
|
};
|
2808
2813
|
|
2814
|
+
/**
|
2815
|
+
* Detects the first chunk in a buffer.
|
2816
|
+
*
|
2817
|
+
* @param buffer - The buffer to detect the first chunk in.
|
2818
|
+
*
|
2819
|
+
* @returns The first detected chunk, or `undefined` if no chunk was detected.
|
2820
|
+
*/
|
2821
|
+
type ChunkDetector = (buffer: string) => string | undefined | null;
|
2809
2822
|
/**
|
2810
2823
|
* Smooths text streaming output.
|
2811
2824
|
*
|
@@ -2816,7 +2829,7 @@ type TextStreamPart<TOOLS extends ToolSet> = {
|
|
2816
2829
|
*/
|
2817
2830
|
declare function smoothStream<TOOLS extends ToolSet>({ delayInMs, chunking, _internal: { delay }, }?: {
|
2818
2831
|
delayInMs?: number | null;
|
2819
|
-
chunking?: 'word' | 'line' | RegExp;
|
2832
|
+
chunking?: 'word' | 'line' | RegExp | ChunkDetector;
|
2820
2833
|
/**
|
2821
2834
|
* Internal. For test use only. May change without notice.
|
2822
2835
|
*/
|
@@ -4382,4 +4395,4 @@ declare namespace llamaindexAdapter {
|
|
4382
4395
|
};
|
4383
4396
|
}
|
4384
4397
|
|
4385
|
-
export { AssistantContent, AssistantResponse, CallWarning, CoreAssistantMessage, CoreMessage, CoreSystemMessage, CoreTool, CoreToolCallUnion, CoreToolChoice, CoreToolMessage, CoreToolResultUnion, CoreUserMessage, DataContent, DataStreamOptions, DataStreamWriter, DownloadError, EmbedManyResult, EmbedResult, Embedding, EmbeddingModel, EmbeddingModelUsage, GenerateImageResult as Experimental_GenerateImageResult, GeneratedFile as Experimental_GeneratedImage, Experimental_LanguageModelV1Middleware, FilePart, FinishReason, GenerateObjectResult, GenerateTextOnStepFinishCallback, GenerateTextResult, GeneratedFile, ImageModel, ImageGenerationWarning as ImageModelCallWarning, ImageModelResponseMetadata, ImagePart, InvalidArgumentError, InvalidDataContentError, InvalidMessageRoleError, InvalidStreamPartError, InvalidToolArgumentsError, JSONRPCError, JSONRPCMessage, JSONRPCNotification, JSONRPCRequest, JSONRPCResponse, langchainAdapter as LangChainAdapter, LanguageModel, LanguageModelRequestMetadata, LanguageModelResponseMetadata, LanguageModelUsage, LanguageModelV1Middleware, llamaindexAdapter as LlamaIndexAdapter, LogProbs, MCPClientError, MCPTransport, MessageConversionError, NoImageGeneratedError, NoObjectGeneratedError, NoOutputSpecifiedError, NoSuchProviderError, NoSuchToolError, ObjectStreamPart, output as Output, Provider, ProviderMetadata, ProviderRegistryProvider, RepairTextFunction, RetryError, StepResult, StreamData, StreamObjectOnFinishCallback, StreamObjectResult, StreamTextOnChunkCallback, StreamTextOnErrorCallback, StreamTextOnFinishCallback, StreamTextOnStepFinishCallback, StreamTextResult, StreamTextTransform, TelemetrySettings, TextPart, TextStreamPart, Tool, ToolCallPart, ToolCallRepairError, ToolCallRepairFunction, ToolCallUnion, ToolChoice, ToolContent, ToolExecutionError, ToolExecutionOptions, ToolResultPart, ToolResultUnion, ToolSet, UserContent, appendClientMessage, appendResponseMessages, convertToCoreMessages, coreAssistantMessageSchema, coreMessageSchema, coreSystemMessageSchema, coreToolMessageSchema, coreUserMessageSchema, cosineSimilarity, createDataStream, createDataStreamResponse, createProviderRegistry, customProvider, defaultSettingsMiddleware, embed, embedMany, createMCPClient as experimental_createMCPClient, experimental_createProviderRegistry, experimental_customProvider, generateImage as experimental_generateImage, experimental_wrapLanguageModel, extractReasoningMiddleware, generateObject, generateText, pipeDataStreamToResponse, simulateReadableStream, simulateStreamingMiddleware, smoothStream, streamObject, streamText, tool, wrapLanguageModel };
|
4398
|
+
export { AssistantContent, AssistantResponse, CallWarning, ChunkDetector, CoreAssistantMessage, CoreMessage, CoreSystemMessage, CoreTool, CoreToolCallUnion, CoreToolChoice, CoreToolMessage, CoreToolResultUnion, CoreUserMessage, DataContent, DataStreamOptions, DataStreamWriter, DownloadError, EmbedManyResult, EmbedResult, Embedding, EmbeddingModel, EmbeddingModelUsage, GenerateImageResult as Experimental_GenerateImageResult, GeneratedFile as Experimental_GeneratedImage, Experimental_LanguageModelV1Middleware, FilePart, FinishReason, GenerateObjectResult, GenerateTextOnStepFinishCallback, GenerateTextResult, GeneratedFile, ImageModel, ImageGenerationWarning as ImageModelCallWarning, ImageModelResponseMetadata, ImagePart, InvalidArgumentError, InvalidDataContentError, InvalidMessageRoleError, InvalidStreamPartError, InvalidToolArgumentsError, JSONRPCError, JSONRPCMessage, JSONRPCNotification, JSONRPCRequest, JSONRPCResponse, langchainAdapter as LangChainAdapter, LanguageModel, LanguageModelRequestMetadata, LanguageModelResponseMetadata, LanguageModelUsage, LanguageModelV1Middleware, llamaindexAdapter as LlamaIndexAdapter, LogProbs, MCPClientError, MCPTransport, MessageConversionError, NoImageGeneratedError, NoObjectGeneratedError, NoOutputSpecifiedError, NoSuchProviderError, NoSuchToolError, ObjectStreamPart, output as Output, Provider, ProviderMetadata, ProviderRegistryProvider, RepairTextFunction, RetryError, StepResult, StreamData, StreamObjectOnFinishCallback, StreamObjectResult, StreamTextOnChunkCallback, StreamTextOnErrorCallback, StreamTextOnFinishCallback, StreamTextOnStepFinishCallback, StreamTextResult, StreamTextTransform, TelemetrySettings, TextPart, TextStreamPart, Tool, ToolCallPart, ToolCallRepairError, ToolCallRepairFunction, ToolCallUnion, ToolChoice, ToolContent, ToolExecutionError, ToolExecutionOptions, ToolResultPart, ToolResultUnion, ToolSet, UserContent, appendClientMessage, appendResponseMessages, convertToCoreMessages, coreAssistantMessageSchema, coreMessageSchema, coreSystemMessageSchema, coreToolMessageSchema, coreUserMessageSchema, cosineSimilarity, createDataStream, createDataStreamResponse, createProviderRegistry, customProvider, defaultSettingsMiddleware, embed, embedMany, createMCPClient as experimental_createMCPClient, experimental_createProviderRegistry, experimental_customProvider, generateImage as experimental_generateImage, experimental_wrapLanguageModel, extractReasoningMiddleware, generateObject, generateText, pipeDataStreamToResponse, simulateReadableStream, simulateStreamingMiddleware, smoothStream, streamObject, streamText, tool, wrapLanguageModel };
|
package/dist/index.d.ts
CHANGED
@@ -2539,6 +2539,9 @@ type DataStreamOptions = {
|
|
2539
2539
|
*/
|
2540
2540
|
experimental_sendStart?: boolean;
|
2541
2541
|
};
|
2542
|
+
type ConsumeStreamOptions = {
|
2543
|
+
onError?: (error: unknown) => void;
|
2544
|
+
};
|
2542
2545
|
/**
|
2543
2546
|
A result object for accessing different stream types and additional information.
|
2544
2547
|
*/
|
@@ -2659,8 +2662,10 @@ interface StreamTextResult<TOOLS extends ToolSet, PARTIAL_OUTPUT> {
|
|
2659
2662
|
This is useful to force the stream to finish.
|
2660
2663
|
It effectively removes the backpressure and allows the stream to finish,
|
2661
2664
|
triggering the `onFinish` callback and the promise resolution.
|
2665
|
+
|
2666
|
+
If an error occurs, it is passed to the optional `onError` callback.
|
2662
2667
|
*/
|
2663
|
-
consumeStream(): Promise<void>;
|
2668
|
+
consumeStream(options?: ConsumeStreamOptions): Promise<void>;
|
2664
2669
|
/**
|
2665
2670
|
Converts the result to a data stream.
|
2666
2671
|
|
@@ -2806,6 +2811,14 @@ type TextStreamPart<TOOLS extends ToolSet> = {
|
|
2806
2811
|
error: unknown;
|
2807
2812
|
};
|
2808
2813
|
|
2814
|
+
/**
|
2815
|
+
* Detects the first chunk in a buffer.
|
2816
|
+
*
|
2817
|
+
* @param buffer - The buffer to detect the first chunk in.
|
2818
|
+
*
|
2819
|
+
* @returns The first detected chunk, or `undefined` if no chunk was detected.
|
2820
|
+
*/
|
2821
|
+
type ChunkDetector = (buffer: string) => string | undefined | null;
|
2809
2822
|
/**
|
2810
2823
|
* Smooths text streaming output.
|
2811
2824
|
*
|
@@ -2816,7 +2829,7 @@ type TextStreamPart<TOOLS extends ToolSet> = {
|
|
2816
2829
|
*/
|
2817
2830
|
declare function smoothStream<TOOLS extends ToolSet>({ delayInMs, chunking, _internal: { delay }, }?: {
|
2818
2831
|
delayInMs?: number | null;
|
2819
|
-
chunking?: 'word' | 'line' | RegExp;
|
2832
|
+
chunking?: 'word' | 'line' | RegExp | ChunkDetector;
|
2820
2833
|
/**
|
2821
2834
|
* Internal. For test use only. May change without notice.
|
2822
2835
|
*/
|
@@ -4382,4 +4395,4 @@ declare namespace llamaindexAdapter {
|
|
4382
4395
|
};
|
4383
4396
|
}
|
4384
4397
|
|
4385
|
-
export { AssistantContent, AssistantResponse, CallWarning, CoreAssistantMessage, CoreMessage, CoreSystemMessage, CoreTool, CoreToolCallUnion, CoreToolChoice, CoreToolMessage, CoreToolResultUnion, CoreUserMessage, DataContent, DataStreamOptions, DataStreamWriter, DownloadError, EmbedManyResult, EmbedResult, Embedding, EmbeddingModel, EmbeddingModelUsage, GenerateImageResult as Experimental_GenerateImageResult, GeneratedFile as Experimental_GeneratedImage, Experimental_LanguageModelV1Middleware, FilePart, FinishReason, GenerateObjectResult, GenerateTextOnStepFinishCallback, GenerateTextResult, GeneratedFile, ImageModel, ImageGenerationWarning as ImageModelCallWarning, ImageModelResponseMetadata, ImagePart, InvalidArgumentError, InvalidDataContentError, InvalidMessageRoleError, InvalidStreamPartError, InvalidToolArgumentsError, JSONRPCError, JSONRPCMessage, JSONRPCNotification, JSONRPCRequest, JSONRPCResponse, langchainAdapter as LangChainAdapter, LanguageModel, LanguageModelRequestMetadata, LanguageModelResponseMetadata, LanguageModelUsage, LanguageModelV1Middleware, llamaindexAdapter as LlamaIndexAdapter, LogProbs, MCPClientError, MCPTransport, MessageConversionError, NoImageGeneratedError, NoObjectGeneratedError, NoOutputSpecifiedError, NoSuchProviderError, NoSuchToolError, ObjectStreamPart, output as Output, Provider, ProviderMetadata, ProviderRegistryProvider, RepairTextFunction, RetryError, StepResult, StreamData, StreamObjectOnFinishCallback, StreamObjectResult, StreamTextOnChunkCallback, StreamTextOnErrorCallback, StreamTextOnFinishCallback, StreamTextOnStepFinishCallback, StreamTextResult, StreamTextTransform, TelemetrySettings, TextPart, TextStreamPart, Tool, ToolCallPart, ToolCallRepairError, ToolCallRepairFunction, ToolCallUnion, ToolChoice, ToolContent, ToolExecutionError, ToolExecutionOptions, ToolResultPart, ToolResultUnion, ToolSet, UserContent, appendClientMessage, appendResponseMessages, convertToCoreMessages, coreAssistantMessageSchema, coreMessageSchema, coreSystemMessageSchema, coreToolMessageSchema, coreUserMessageSchema, cosineSimilarity, createDataStream, createDataStreamResponse, createProviderRegistry, customProvider, defaultSettingsMiddleware, embed, embedMany, createMCPClient as experimental_createMCPClient, experimental_createProviderRegistry, experimental_customProvider, generateImage as experimental_generateImage, experimental_wrapLanguageModel, extractReasoningMiddleware, generateObject, generateText, pipeDataStreamToResponse, simulateReadableStream, simulateStreamingMiddleware, smoothStream, streamObject, streamText, tool, wrapLanguageModel };
|
4398
|
+
export { AssistantContent, AssistantResponse, CallWarning, ChunkDetector, CoreAssistantMessage, CoreMessage, CoreSystemMessage, CoreTool, CoreToolCallUnion, CoreToolChoice, CoreToolMessage, CoreToolResultUnion, CoreUserMessage, DataContent, DataStreamOptions, DataStreamWriter, DownloadError, EmbedManyResult, EmbedResult, Embedding, EmbeddingModel, EmbeddingModelUsage, GenerateImageResult as Experimental_GenerateImageResult, GeneratedFile as Experimental_GeneratedImage, Experimental_LanguageModelV1Middleware, FilePart, FinishReason, GenerateObjectResult, GenerateTextOnStepFinishCallback, GenerateTextResult, GeneratedFile, ImageModel, ImageGenerationWarning as ImageModelCallWarning, ImageModelResponseMetadata, ImagePart, InvalidArgumentError, InvalidDataContentError, InvalidMessageRoleError, InvalidStreamPartError, InvalidToolArgumentsError, JSONRPCError, JSONRPCMessage, JSONRPCNotification, JSONRPCRequest, JSONRPCResponse, langchainAdapter as LangChainAdapter, LanguageModel, LanguageModelRequestMetadata, LanguageModelResponseMetadata, LanguageModelUsage, LanguageModelV1Middleware, llamaindexAdapter as LlamaIndexAdapter, LogProbs, MCPClientError, MCPTransport, MessageConversionError, NoImageGeneratedError, NoObjectGeneratedError, NoOutputSpecifiedError, NoSuchProviderError, NoSuchToolError, ObjectStreamPart, output as Output, Provider, ProviderMetadata, ProviderRegistryProvider, RepairTextFunction, RetryError, StepResult, StreamData, StreamObjectOnFinishCallback, StreamObjectResult, StreamTextOnChunkCallback, StreamTextOnErrorCallback, StreamTextOnFinishCallback, StreamTextOnStepFinishCallback, StreamTextResult, StreamTextTransform, TelemetrySettings, TextPart, TextStreamPart, Tool, ToolCallPart, ToolCallRepairError, ToolCallRepairFunction, ToolCallUnion, ToolChoice, ToolContent, ToolExecutionError, ToolExecutionOptions, ToolResultPart, ToolResultUnion, ToolSet, UserContent, appendClientMessage, appendResponseMessages, convertToCoreMessages, coreAssistantMessageSchema, coreMessageSchema, coreSystemMessageSchema, coreToolMessageSchema, coreUserMessageSchema, cosineSimilarity, createDataStream, createDataStreamResponse, createProviderRegistry, customProvider, defaultSettingsMiddleware, embed, embedMany, createMCPClient as experimental_createMCPClient, experimental_createProviderRegistry, experimental_customProvider, generateImage as experimental_generateImage, experimental_wrapLanguageModel, extractReasoningMiddleware, generateObject, generateText, pipeDataStreamToResponse, simulateReadableStream, simulateStreamingMiddleware, smoothStream, streamObject, streamText, tool, wrapLanguageModel };
|
package/dist/index.js
CHANGED
@@ -4676,23 +4676,49 @@ var object = ({
|
|
4676
4676
|
};
|
4677
4677
|
|
4678
4678
|
// core/generate-text/smooth-stream.ts
|
4679
|
-
var import_provider21 = require("@ai-sdk/provider");
|
4680
4679
|
var import_provider_utils11 = require("@ai-sdk/provider-utils");
|
4680
|
+
var import_provider21 = require("@ai-sdk/provider");
|
4681
4681
|
var CHUNKING_REGEXPS = {
|
4682
|
-
word: /\
|
4683
|
-
line:
|
4682
|
+
word: /\S+\s+/m,
|
4683
|
+
line: /\n+/m
|
4684
4684
|
};
|
4685
4685
|
function smoothStream({
|
4686
4686
|
delayInMs = 10,
|
4687
4687
|
chunking = "word",
|
4688
4688
|
_internal: { delay: delay2 = import_provider_utils11.delay } = {}
|
4689
4689
|
} = {}) {
|
4690
|
-
|
4691
|
-
if (
|
4692
|
-
|
4693
|
-
|
4694
|
-
|
4695
|
-
|
4690
|
+
let detectChunk;
|
4691
|
+
if (typeof chunking === "function") {
|
4692
|
+
detectChunk = (buffer) => {
|
4693
|
+
const match = chunking(buffer);
|
4694
|
+
if (match == null) {
|
4695
|
+
return null;
|
4696
|
+
}
|
4697
|
+
if (!match.length) {
|
4698
|
+
throw new Error(`Chunking function must return a non-empty string.`);
|
4699
|
+
}
|
4700
|
+
if (!buffer.startsWith(match)) {
|
4701
|
+
throw new Error(
|
4702
|
+
`Chunking function must return a match that is a prefix of the buffer. Received: "${match}" expected to start with "${buffer}"`
|
4703
|
+
);
|
4704
|
+
}
|
4705
|
+
return match;
|
4706
|
+
};
|
4707
|
+
} else {
|
4708
|
+
const chunkingRegex = typeof chunking === "string" ? CHUNKING_REGEXPS[chunking] : chunking;
|
4709
|
+
if (chunkingRegex == null) {
|
4710
|
+
throw new import_provider21.InvalidArgumentError({
|
4711
|
+
argument: "chunking",
|
4712
|
+
message: `Chunking must be "word" or "line" or a RegExp. Received: ${chunking}`
|
4713
|
+
});
|
4714
|
+
}
|
4715
|
+
detectChunk = (buffer) => {
|
4716
|
+
const match = chunkingRegex.exec(buffer);
|
4717
|
+
if (!match) {
|
4718
|
+
return null;
|
4719
|
+
}
|
4720
|
+
return buffer.slice(0, match.index) + (match == null ? void 0 : match[0]);
|
4721
|
+
};
|
4696
4722
|
}
|
4697
4723
|
return () => {
|
4698
4724
|
let buffer = "";
|
@@ -4708,10 +4734,9 @@ function smoothStream({
|
|
4708
4734
|
}
|
4709
4735
|
buffer += chunk.textDelta;
|
4710
4736
|
let match;
|
4711
|
-
while ((match =
|
4712
|
-
|
4713
|
-
|
4714
|
-
buffer = buffer.slice(chunk2.length);
|
4737
|
+
while ((match = detectChunk(buffer)) != null) {
|
4738
|
+
controller.enqueue({ type: "text-delta", textDelta: match });
|
4739
|
+
buffer = buffer.slice(match.length);
|
4715
4740
|
await delay2(delayInMs);
|
4716
4741
|
}
|
4717
4742
|
}
|
@@ -4729,6 +4754,25 @@ function asArray(value) {
|
|
4729
4754
|
return value === void 0 ? [] : Array.isArray(value) ? value : [value];
|
4730
4755
|
}
|
4731
4756
|
|
4757
|
+
// util/consume-stream.ts
|
4758
|
+
async function consumeStream({
|
4759
|
+
stream,
|
4760
|
+
onError
|
4761
|
+
}) {
|
4762
|
+
const reader = stream.getReader();
|
4763
|
+
try {
|
4764
|
+
while (true) {
|
4765
|
+
const { done } = await reader.read();
|
4766
|
+
if (done)
|
4767
|
+
break;
|
4768
|
+
}
|
4769
|
+
} catch (error) {
|
4770
|
+
onError == null ? void 0 : onError(error);
|
4771
|
+
} finally {
|
4772
|
+
reader.releaseLock();
|
4773
|
+
}
|
4774
|
+
}
|
4775
|
+
|
4732
4776
|
// core/util/merge-streams.ts
|
4733
4777
|
function mergeStreams(stream1, stream2) {
|
4734
4778
|
const reader1 = stream1.getReader();
|
@@ -5970,9 +6014,15 @@ var DefaultStreamTextResult = class {
|
|
5970
6014
|
)
|
5971
6015
|
);
|
5972
6016
|
}
|
5973
|
-
async consumeStream() {
|
5974
|
-
|
5975
|
-
|
6017
|
+
async consumeStream(options) {
|
6018
|
+
var _a17;
|
6019
|
+
try {
|
6020
|
+
await consumeStream({
|
6021
|
+
stream: this.fullStream,
|
6022
|
+
onError: options == null ? void 0 : options.onError
|
6023
|
+
});
|
6024
|
+
} catch (error) {
|
6025
|
+
(_a17 = options == null ? void 0 : options.onError) == null ? void 0 : _a17.call(options, error);
|
5976
6026
|
}
|
5977
6027
|
}
|
5978
6028
|
get experimental_partialOutputStream() {
|