ai 4.0.14 → 4.0.16
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 +13 -0
- package/dist/index.d.mts +22 -2
- package/dist/index.d.ts +22 -2
- package/dist/index.js +49 -7
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +48 -7
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
@@ -1,5 +1,18 @@
|
|
1
1
|
# ai
|
2
2
|
|
3
|
+
## 4.0.16
|
4
|
+
|
5
|
+
### Patch Changes
|
6
|
+
|
7
|
+
- e3fac3f: fix (ai/core): change smoothStream default delay to 10ms
|
8
|
+
|
9
|
+
## 4.0.15
|
10
|
+
|
11
|
+
### Patch Changes
|
12
|
+
|
13
|
+
- cc16a83: feat (ai/core): add smoothStream helper
|
14
|
+
- cc16a83: feat (ai/core): add experimental transform option to streamText
|
15
|
+
|
3
16
|
## 4.0.14
|
4
17
|
|
5
18
|
### Patch Changes
|
package/dist/index.d.mts
CHANGED
@@ -2037,7 +2037,7 @@ If set and supported by the model, calls will generate deterministic results.
|
|
2037
2037
|
@return
|
2038
2038
|
A result object for accessing different stream types and additional information.
|
2039
2039
|
*/
|
2040
|
-
declare function streamText<TOOLS extends Record<string, CoreTool>>({ model, tools, toolChoice, system, prompt, messages, maxRetries, abortSignal, headers, maxSteps, experimental_continueSteps: continueSteps, experimental_telemetry: telemetry, experimental_providerMetadata: providerMetadata, experimental_toolCallStreaming: toolCallStreaming, experimental_activeTools: activeTools, experimental_repairToolCall: repairToolCall, onChunk, onFinish, onStepFinish, _internal: { now, generateId, currentDate, }, ...settings }: CallSettings & Prompt & {
|
2040
|
+
declare function streamText<TOOLS extends Record<string, CoreTool>>({ model, tools, toolChoice, system, prompt, messages, maxRetries, abortSignal, headers, maxSteps, experimental_continueSteps: continueSteps, experimental_telemetry: telemetry, experimental_providerMetadata: providerMetadata, experimental_toolCallStreaming: toolCallStreaming, experimental_activeTools: activeTools, experimental_repairToolCall: repairToolCall, experimental_transform: transform, onChunk, onFinish, onStepFinish, _internal: { now, generateId, currentDate, }, ...settings }: CallSettings & Prompt & {
|
2041
2041
|
/**
|
2042
2042
|
The language model to use.
|
2043
2043
|
*/
|
@@ -2088,6 +2088,10 @@ Enable streaming of tool call deltas as they are generated. Disabled by default.
|
|
2088
2088
|
*/
|
2089
2089
|
experimental_toolCallStreaming?: boolean;
|
2090
2090
|
/**
|
2091
|
+
Optional transformation that is applied to the stream.
|
2092
|
+
*/
|
2093
|
+
experimental_transform?: TransformStream<TextStreamPart<TOOLS>, TextStreamPart<TOOLS>>;
|
2094
|
+
/**
|
2091
2095
|
Callback that is called for each chunk of the stream. The stream processing will pause until the callback promise is resolved.
|
2092
2096
|
*/
|
2093
2097
|
onChunk?: (event: {
|
@@ -2121,6 +2125,22 @@ Details for all steps.
|
|
2121
2125
|
};
|
2122
2126
|
}): StreamTextResult<TOOLS>;
|
2123
2127
|
|
2128
|
+
/**
|
2129
|
+
* Smooths text streaming output.
|
2130
|
+
*
|
2131
|
+
* @param delayInMs - The delay in milliseconds between each chunk. Defaults to 10ms.
|
2132
|
+
* @returns A transform stream that smooths text streaming output.
|
2133
|
+
*/
|
2134
|
+
declare function smoothStream<TOOLS extends Record<string, CoreTool>>({ delayInMs, _internal: { delay }, }?: {
|
2135
|
+
delayInMs?: number;
|
2136
|
+
/**
|
2137
|
+
* Internal. For test use only. May change without notice.
|
2138
|
+
*/
|
2139
|
+
_internal?: {
|
2140
|
+
delay?: (delayInMs: number) => Promise<void>;
|
2141
|
+
};
|
2142
|
+
}): TransformStream<TextStreamPart<TOOLS>, TextStreamPart<TOOLS>>;
|
2143
|
+
|
2124
2144
|
/**
|
2125
2145
|
* Experimental middleware for LanguageModelV1.
|
2126
2146
|
* This type defines the structure for middleware that can be used to modify
|
@@ -2485,4 +2505,4 @@ declare namespace llamaindexAdapter {
|
|
2485
2505
|
};
|
2486
2506
|
}
|
2487
2507
|
|
2488
|
-
export { AssistantContent, AssistantResponse, CallWarning, CoreAssistantMessage, CoreMessage, CoreSystemMessage, CoreTool, ToolCallUnion as CoreToolCallUnion, CoreToolChoice, CoreToolMessage, ToolResultUnion as CoreToolResultUnion, CoreUserMessage, DataContent, DataStreamWriter, DownloadError, EmbedManyResult, EmbedResult, Embedding, EmbeddingModel, EmbeddingModelUsage, GenerateImageResult as Experimental_GenerateImageResult, GeneratedImage as Experimental_GeneratedImage, Experimental_LanguageModelV1Middleware, FilePart, FinishReason, GenerateObjectResult, GenerateTextResult, ImagePart, InvalidArgumentError, InvalidDataContentError, InvalidMessageRoleError, InvalidToolArgumentsError, langchainAdapter as LangChainAdapter, LanguageModel, LanguageModelRequestMetadata, LanguageModelResponseMetadata, LanguageModelUsage, llamaindexAdapter as LlamaIndexAdapter, LogProbs, MessageConversionError, NoObjectGeneratedError, NoSuchProviderError, NoSuchToolError, ObjectStreamPart, output as Output, Provider, ProviderMetadata, RetryError, StepResult, StreamData, StreamObjectResult, StreamTextResult, TextPart, TextStreamPart, ToolCallPart, ToolCallRepairError, ToolCallRepairFunction, ToolContent, ToolExecutionError, ToolExecutionOptions, ToolResultPart, UserContent, convertToCoreMessages, cosineSimilarity, createDataStream, createDataStreamResponse, embed, embedMany, experimental_createProviderRegistry, experimental_customProvider, generateImage as experimental_generateImage, experimental_wrapLanguageModel, generateObject, generateText, pipeDataStreamToResponse, streamObject, streamText, tool };
|
2508
|
+
export { AssistantContent, AssistantResponse, CallWarning, CoreAssistantMessage, CoreMessage, CoreSystemMessage, CoreTool, ToolCallUnion as CoreToolCallUnion, CoreToolChoice, CoreToolMessage, ToolResultUnion as CoreToolResultUnion, CoreUserMessage, DataContent, DataStreamWriter, DownloadError, EmbedManyResult, EmbedResult, Embedding, EmbeddingModel, EmbeddingModelUsage, GenerateImageResult as Experimental_GenerateImageResult, GeneratedImage as Experimental_GeneratedImage, Experimental_LanguageModelV1Middleware, FilePart, FinishReason, GenerateObjectResult, GenerateTextResult, ImagePart, InvalidArgumentError, InvalidDataContentError, InvalidMessageRoleError, InvalidToolArgumentsError, langchainAdapter as LangChainAdapter, LanguageModel, LanguageModelRequestMetadata, LanguageModelResponseMetadata, LanguageModelUsage, llamaindexAdapter as LlamaIndexAdapter, LogProbs, MessageConversionError, NoObjectGeneratedError, NoSuchProviderError, NoSuchToolError, ObjectStreamPart, output as Output, Provider, ProviderMetadata, RetryError, StepResult, StreamData, StreamObjectResult, StreamTextResult, TextPart, TextStreamPart, ToolCallPart, ToolCallRepairError, ToolCallRepairFunction, ToolContent, ToolExecutionError, ToolExecutionOptions, ToolResultPart, UserContent, convertToCoreMessages, cosineSimilarity, createDataStream, createDataStreamResponse, embed, embedMany, experimental_createProviderRegistry, experimental_customProvider, generateImage as experimental_generateImage, experimental_wrapLanguageModel, generateObject, generateText, pipeDataStreamToResponse, smoothStream, streamObject, streamText, tool };
|
package/dist/index.d.ts
CHANGED
@@ -2037,7 +2037,7 @@ If set and supported by the model, calls will generate deterministic results.
|
|
2037
2037
|
@return
|
2038
2038
|
A result object for accessing different stream types and additional information.
|
2039
2039
|
*/
|
2040
|
-
declare function streamText<TOOLS extends Record<string, CoreTool>>({ model, tools, toolChoice, system, prompt, messages, maxRetries, abortSignal, headers, maxSteps, experimental_continueSteps: continueSteps, experimental_telemetry: telemetry, experimental_providerMetadata: providerMetadata, experimental_toolCallStreaming: toolCallStreaming, experimental_activeTools: activeTools, experimental_repairToolCall: repairToolCall, onChunk, onFinish, onStepFinish, _internal: { now, generateId, currentDate, }, ...settings }: CallSettings & Prompt & {
|
2040
|
+
declare function streamText<TOOLS extends Record<string, CoreTool>>({ model, tools, toolChoice, system, prompt, messages, maxRetries, abortSignal, headers, maxSteps, experimental_continueSteps: continueSteps, experimental_telemetry: telemetry, experimental_providerMetadata: providerMetadata, experimental_toolCallStreaming: toolCallStreaming, experimental_activeTools: activeTools, experimental_repairToolCall: repairToolCall, experimental_transform: transform, onChunk, onFinish, onStepFinish, _internal: { now, generateId, currentDate, }, ...settings }: CallSettings & Prompt & {
|
2041
2041
|
/**
|
2042
2042
|
The language model to use.
|
2043
2043
|
*/
|
@@ -2088,6 +2088,10 @@ Enable streaming of tool call deltas as they are generated. Disabled by default.
|
|
2088
2088
|
*/
|
2089
2089
|
experimental_toolCallStreaming?: boolean;
|
2090
2090
|
/**
|
2091
|
+
Optional transformation that is applied to the stream.
|
2092
|
+
*/
|
2093
|
+
experimental_transform?: TransformStream<TextStreamPart<TOOLS>, TextStreamPart<TOOLS>>;
|
2094
|
+
/**
|
2091
2095
|
Callback that is called for each chunk of the stream. The stream processing will pause until the callback promise is resolved.
|
2092
2096
|
*/
|
2093
2097
|
onChunk?: (event: {
|
@@ -2121,6 +2125,22 @@ Details for all steps.
|
|
2121
2125
|
};
|
2122
2126
|
}): StreamTextResult<TOOLS>;
|
2123
2127
|
|
2128
|
+
/**
|
2129
|
+
* Smooths text streaming output.
|
2130
|
+
*
|
2131
|
+
* @param delayInMs - The delay in milliseconds between each chunk. Defaults to 10ms.
|
2132
|
+
* @returns A transform stream that smooths text streaming output.
|
2133
|
+
*/
|
2134
|
+
declare function smoothStream<TOOLS extends Record<string, CoreTool>>({ delayInMs, _internal: { delay }, }?: {
|
2135
|
+
delayInMs?: number;
|
2136
|
+
/**
|
2137
|
+
* Internal. For test use only. May change without notice.
|
2138
|
+
*/
|
2139
|
+
_internal?: {
|
2140
|
+
delay?: (delayInMs: number) => Promise<void>;
|
2141
|
+
};
|
2142
|
+
}): TransformStream<TextStreamPart<TOOLS>, TextStreamPart<TOOLS>>;
|
2143
|
+
|
2124
2144
|
/**
|
2125
2145
|
* Experimental middleware for LanguageModelV1.
|
2126
2146
|
* This type defines the structure for middleware that can be used to modify
|
@@ -2485,4 +2505,4 @@ declare namespace llamaindexAdapter {
|
|
2485
2505
|
};
|
2486
2506
|
}
|
2487
2507
|
|
2488
|
-
export { AssistantContent, AssistantResponse, CallWarning, CoreAssistantMessage, CoreMessage, CoreSystemMessage, CoreTool, ToolCallUnion as CoreToolCallUnion, CoreToolChoice, CoreToolMessage, ToolResultUnion as CoreToolResultUnion, CoreUserMessage, DataContent, DataStreamWriter, DownloadError, EmbedManyResult, EmbedResult, Embedding, EmbeddingModel, EmbeddingModelUsage, GenerateImageResult as Experimental_GenerateImageResult, GeneratedImage as Experimental_GeneratedImage, Experimental_LanguageModelV1Middleware, FilePart, FinishReason, GenerateObjectResult, GenerateTextResult, ImagePart, InvalidArgumentError, InvalidDataContentError, InvalidMessageRoleError, InvalidToolArgumentsError, langchainAdapter as LangChainAdapter, LanguageModel, LanguageModelRequestMetadata, LanguageModelResponseMetadata, LanguageModelUsage, llamaindexAdapter as LlamaIndexAdapter, LogProbs, MessageConversionError, NoObjectGeneratedError, NoSuchProviderError, NoSuchToolError, ObjectStreamPart, output as Output, Provider, ProviderMetadata, RetryError, StepResult, StreamData, StreamObjectResult, StreamTextResult, TextPart, TextStreamPart, ToolCallPart, ToolCallRepairError, ToolCallRepairFunction, ToolContent, ToolExecutionError, ToolExecutionOptions, ToolResultPart, UserContent, convertToCoreMessages, cosineSimilarity, createDataStream, createDataStreamResponse, embed, embedMany, experimental_createProviderRegistry, experimental_customProvider, generateImage as experimental_generateImage, experimental_wrapLanguageModel, generateObject, generateText, pipeDataStreamToResponse, streamObject, streamText, tool };
|
2508
|
+
export { AssistantContent, AssistantResponse, CallWarning, CoreAssistantMessage, CoreMessage, CoreSystemMessage, CoreTool, ToolCallUnion as CoreToolCallUnion, CoreToolChoice, CoreToolMessage, ToolResultUnion as CoreToolResultUnion, CoreUserMessage, DataContent, DataStreamWriter, DownloadError, EmbedManyResult, EmbedResult, Embedding, EmbeddingModel, EmbeddingModelUsage, GenerateImageResult as Experimental_GenerateImageResult, GeneratedImage as Experimental_GeneratedImage, Experimental_LanguageModelV1Middleware, FilePart, FinishReason, GenerateObjectResult, GenerateTextResult, ImagePart, InvalidArgumentError, InvalidDataContentError, InvalidMessageRoleError, InvalidToolArgumentsError, langchainAdapter as LangChainAdapter, LanguageModel, LanguageModelRequestMetadata, LanguageModelResponseMetadata, LanguageModelUsage, llamaindexAdapter as LlamaIndexAdapter, LogProbs, MessageConversionError, NoObjectGeneratedError, NoSuchProviderError, NoSuchToolError, ObjectStreamPart, output as Output, Provider, ProviderMetadata, RetryError, StepResult, StreamData, StreamObjectResult, StreamTextResult, TextPart, TextStreamPart, ToolCallPart, ToolCallRepairError, ToolCallRepairFunction, ToolContent, ToolExecutionError, ToolExecutionOptions, ToolResultPart, UserContent, convertToCoreMessages, cosineSimilarity, createDataStream, createDataStreamResponse, embed, embedMany, experimental_createProviderRegistry, experimental_customProvider, generateImage as experimental_generateImage, experimental_wrapLanguageModel, generateObject, generateText, pipeDataStreamToResponse, smoothStream, streamObject, streamText, tool };
|
package/dist/index.js
CHANGED
@@ -69,6 +69,7 @@ __export(streams_exports, {
|
|
69
69
|
pipeDataStreamToResponse: () => pipeDataStreamToResponse,
|
70
70
|
processDataStream: () => import_ui_utils14.processDataStream,
|
71
71
|
processTextStream: () => import_ui_utils14.processTextStream,
|
72
|
+
smoothStream: () => smoothStream,
|
72
73
|
streamObject: () => streamObject,
|
73
74
|
streamText: () => streamText,
|
74
75
|
tool: () => tool
|
@@ -4243,6 +4244,7 @@ function streamText({
|
|
4243
4244
|
experimental_toolCallStreaming: toolCallStreaming = false,
|
4244
4245
|
experimental_activeTools: activeTools,
|
4245
4246
|
experimental_repairToolCall: repairToolCall,
|
4247
|
+
experimental_transform: transform,
|
4246
4248
|
onChunk,
|
4247
4249
|
onFinish,
|
4248
4250
|
onStepFinish,
|
@@ -4266,6 +4268,7 @@ function streamText({
|
|
4266
4268
|
tools,
|
4267
4269
|
toolChoice,
|
4268
4270
|
toolCallStreaming,
|
4271
|
+
transform,
|
4269
4272
|
activeTools,
|
4270
4273
|
repairToolCall,
|
4271
4274
|
maxSteps,
|
@@ -4293,6 +4296,7 @@ var DefaultStreamTextResult = class {
|
|
4293
4296
|
tools,
|
4294
4297
|
toolChoice,
|
4295
4298
|
toolCallStreaming,
|
4299
|
+
transform,
|
4296
4300
|
activeTools,
|
4297
4301
|
repairToolCall,
|
4298
4302
|
maxSteps,
|
@@ -4315,7 +4319,6 @@ var DefaultStreamTextResult = class {
|
|
4315
4319
|
this.requestPromise = new DelayedPromise();
|
4316
4320
|
this.responsePromise = new DelayedPromise();
|
4317
4321
|
this.stepsPromise = new DelayedPromise();
|
4318
|
-
this.stitchableStream = createStitchableStream();
|
4319
4322
|
if (maxSteps < 1) {
|
4320
4323
|
throw new InvalidArgumentError({
|
4321
4324
|
parameter: "maxSteps",
|
@@ -4323,6 +4326,10 @@ var DefaultStreamTextResult = class {
|
|
4323
4326
|
message: "maxSteps must be at least 1"
|
4324
4327
|
});
|
4325
4328
|
}
|
4329
|
+
const stitchableStream = createStitchableStream();
|
4330
|
+
this.addStream = stitchableStream.addStream;
|
4331
|
+
this.closeStream = stitchableStream.close;
|
4332
|
+
this.baseStream = transform ? stitchableStream.stream.pipeThrough(transform) : stitchableStream.stream;
|
4326
4333
|
const { maxRetries, retry } = prepareRetries({
|
4327
4334
|
maxRetries: maxRetriesArg
|
4328
4335
|
});
|
@@ -4488,7 +4495,7 @@ var DefaultStreamTextResult = class {
|
|
4488
4495
|
hasWhitespaceSuffix = chunk.textDelta.trimEnd() !== chunk.textDelta;
|
4489
4496
|
await (onChunk == null ? void 0 : onChunk({ chunk }));
|
4490
4497
|
}
|
4491
|
-
self.
|
4498
|
+
self.addStream(
|
4492
4499
|
transformedStream.pipeThrough(
|
4493
4500
|
new TransformStream({
|
4494
4501
|
async transform(chunk, controller) {
|
@@ -4716,7 +4723,7 @@ var DefaultStreamTextResult = class {
|
|
4716
4723
|
...stepResponse
|
4717
4724
|
}
|
4718
4725
|
});
|
4719
|
-
self.
|
4726
|
+
self.closeStream();
|
4720
4727
|
rootSpan.setAttributes(
|
4721
4728
|
selectTelemetryAttributes({
|
4722
4729
|
telemetry,
|
@@ -4790,7 +4797,7 @@ var DefaultStreamTextResult = class {
|
|
4790
4797
|
});
|
4791
4798
|
}
|
4792
4799
|
}).catch((error) => {
|
4793
|
-
self.
|
4800
|
+
self.addStream(
|
4794
4801
|
new ReadableStream({
|
4795
4802
|
start(controller) {
|
4796
4803
|
controller.enqueue({ type: "error", error });
|
@@ -4798,7 +4805,7 @@ var DefaultStreamTextResult = class {
|
|
4798
4805
|
}
|
4799
4806
|
})
|
4800
4807
|
);
|
4801
|
-
self.
|
4808
|
+
self.closeStream();
|
4802
4809
|
});
|
4803
4810
|
}
|
4804
4811
|
get warnings() {
|
@@ -4840,8 +4847,8 @@ var DefaultStreamTextResult = class {
|
|
4840
4847
|
However, the LLM results are expected to be small enough to not cause issues.
|
4841
4848
|
*/
|
4842
4849
|
teeStream() {
|
4843
|
-
const [stream1, stream2] = this.
|
4844
|
-
this.
|
4850
|
+
const [stream1, stream2] = this.baseStream.tee();
|
4851
|
+
this.baseStream = stream2;
|
4845
4852
|
return stream1;
|
4846
4853
|
}
|
4847
4854
|
get textStream() {
|
@@ -5037,6 +5044,40 @@ var DefaultStreamTextResult = class {
|
|
5037
5044
|
}
|
5038
5045
|
};
|
5039
5046
|
|
5047
|
+
// core/generate-text/smooth-stream.ts
|
5048
|
+
function smoothStream({
|
5049
|
+
delayInMs = 10,
|
5050
|
+
_internal: { delay: delay2 = delay } = {}
|
5051
|
+
} = {}) {
|
5052
|
+
let buffer = "";
|
5053
|
+
return new TransformStream({
|
5054
|
+
async transform(chunk, controller) {
|
5055
|
+
if (chunk.type === "step-finish") {
|
5056
|
+
if (buffer.length > 0) {
|
5057
|
+
controller.enqueue({ type: "text-delta", textDelta: buffer });
|
5058
|
+
buffer = "";
|
5059
|
+
}
|
5060
|
+
controller.enqueue(chunk);
|
5061
|
+
return;
|
5062
|
+
}
|
5063
|
+
if (chunk.type !== "text-delta") {
|
5064
|
+
controller.enqueue(chunk);
|
5065
|
+
return;
|
5066
|
+
}
|
5067
|
+
buffer += chunk.textDelta;
|
5068
|
+
while (buffer.match(/\s/)) {
|
5069
|
+
const whitespaceIndex = buffer.search(/\s/);
|
5070
|
+
const word = buffer.slice(0, whitespaceIndex + 1);
|
5071
|
+
controller.enqueue({ type: "text-delta", textDelta: word });
|
5072
|
+
buffer = buffer.slice(whitespaceIndex + 1);
|
5073
|
+
if (delayInMs > 0) {
|
5074
|
+
await delay2(delayInMs);
|
5075
|
+
}
|
5076
|
+
}
|
5077
|
+
}
|
5078
|
+
});
|
5079
|
+
}
|
5080
|
+
|
5040
5081
|
// core/middleware/wrap-language-model.ts
|
5041
5082
|
var experimental_wrapLanguageModel = ({
|
5042
5083
|
model,
|
@@ -5601,6 +5642,7 @@ var StreamData = class {
|
|
5601
5642
|
pipeDataStreamToResponse,
|
5602
5643
|
processDataStream,
|
5603
5644
|
processTextStream,
|
5645
|
+
smoothStream,
|
5604
5646
|
streamObject,
|
5605
5647
|
streamText,
|
5606
5648
|
tool
|