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/dist/index.mjs CHANGED
@@ -4204,6 +4204,7 @@ function streamText({
4204
4204
  experimental_toolCallStreaming: toolCallStreaming = false,
4205
4205
  experimental_activeTools: activeTools,
4206
4206
  experimental_repairToolCall: repairToolCall,
4207
+ experimental_transform: transform,
4207
4208
  onChunk,
4208
4209
  onFinish,
4209
4210
  onStepFinish,
@@ -4227,6 +4228,7 @@ function streamText({
4227
4228
  tools,
4228
4229
  toolChoice,
4229
4230
  toolCallStreaming,
4231
+ transform,
4230
4232
  activeTools,
4231
4233
  repairToolCall,
4232
4234
  maxSteps,
@@ -4254,6 +4256,7 @@ var DefaultStreamTextResult = class {
4254
4256
  tools,
4255
4257
  toolChoice,
4256
4258
  toolCallStreaming,
4259
+ transform,
4257
4260
  activeTools,
4258
4261
  repairToolCall,
4259
4262
  maxSteps,
@@ -4276,7 +4279,6 @@ var DefaultStreamTextResult = class {
4276
4279
  this.requestPromise = new DelayedPromise();
4277
4280
  this.responsePromise = new DelayedPromise();
4278
4281
  this.stepsPromise = new DelayedPromise();
4279
- this.stitchableStream = createStitchableStream();
4280
4282
  if (maxSteps < 1) {
4281
4283
  throw new InvalidArgumentError({
4282
4284
  parameter: "maxSteps",
@@ -4284,6 +4286,10 @@ var DefaultStreamTextResult = class {
4284
4286
  message: "maxSteps must be at least 1"
4285
4287
  });
4286
4288
  }
4289
+ const stitchableStream = createStitchableStream();
4290
+ this.addStream = stitchableStream.addStream;
4291
+ this.closeStream = stitchableStream.close;
4292
+ this.baseStream = transform ? stitchableStream.stream.pipeThrough(transform) : stitchableStream.stream;
4287
4293
  const { maxRetries, retry } = prepareRetries({
4288
4294
  maxRetries: maxRetriesArg
4289
4295
  });
@@ -4449,7 +4455,7 @@ var DefaultStreamTextResult = class {
4449
4455
  hasWhitespaceSuffix = chunk.textDelta.trimEnd() !== chunk.textDelta;
4450
4456
  await (onChunk == null ? void 0 : onChunk({ chunk }));
4451
4457
  }
4452
- self.stitchableStream.addStream(
4458
+ self.addStream(
4453
4459
  transformedStream.pipeThrough(
4454
4460
  new TransformStream({
4455
4461
  async transform(chunk, controller) {
@@ -4677,7 +4683,7 @@ var DefaultStreamTextResult = class {
4677
4683
  ...stepResponse
4678
4684
  }
4679
4685
  });
4680
- self.stitchableStream.close();
4686
+ self.closeStream();
4681
4687
  rootSpan.setAttributes(
4682
4688
  selectTelemetryAttributes({
4683
4689
  telemetry,
@@ -4751,7 +4757,7 @@ var DefaultStreamTextResult = class {
4751
4757
  });
4752
4758
  }
4753
4759
  }).catch((error) => {
4754
- self.stitchableStream.addStream(
4760
+ self.addStream(
4755
4761
  new ReadableStream({
4756
4762
  start(controller) {
4757
4763
  controller.enqueue({ type: "error", error });
@@ -4759,7 +4765,7 @@ var DefaultStreamTextResult = class {
4759
4765
  }
4760
4766
  })
4761
4767
  );
4762
- self.stitchableStream.close();
4768
+ self.closeStream();
4763
4769
  });
4764
4770
  }
4765
4771
  get warnings() {
@@ -4801,8 +4807,8 @@ var DefaultStreamTextResult = class {
4801
4807
  However, the LLM results are expected to be small enough to not cause issues.
4802
4808
  */
4803
4809
  teeStream() {
4804
- const [stream1, stream2] = this.stitchableStream.stream.tee();
4805
- this.stitchableStream.stream = stream2;
4810
+ const [stream1, stream2] = this.baseStream.tee();
4811
+ this.baseStream = stream2;
4806
4812
  return stream1;
4807
4813
  }
4808
4814
  get textStream() {
@@ -4998,6 +5004,40 @@ var DefaultStreamTextResult = class {
4998
5004
  }
4999
5005
  };
5000
5006
 
5007
+ // core/generate-text/smooth-stream.ts
5008
+ function smoothStream({
5009
+ delayInMs = 10,
5010
+ _internal: { delay: delay2 = delay } = {}
5011
+ } = {}) {
5012
+ let buffer = "";
5013
+ return new TransformStream({
5014
+ async transform(chunk, controller) {
5015
+ if (chunk.type === "step-finish") {
5016
+ if (buffer.length > 0) {
5017
+ controller.enqueue({ type: "text-delta", textDelta: buffer });
5018
+ buffer = "";
5019
+ }
5020
+ controller.enqueue(chunk);
5021
+ return;
5022
+ }
5023
+ if (chunk.type !== "text-delta") {
5024
+ controller.enqueue(chunk);
5025
+ return;
5026
+ }
5027
+ buffer += chunk.textDelta;
5028
+ while (buffer.match(/\s/)) {
5029
+ const whitespaceIndex = buffer.search(/\s/);
5030
+ const word = buffer.slice(0, whitespaceIndex + 1);
5031
+ controller.enqueue({ type: "text-delta", textDelta: word });
5032
+ buffer = buffer.slice(whitespaceIndex + 1);
5033
+ if (delayInMs > 0) {
5034
+ await delay2(delayInMs);
5035
+ }
5036
+ }
5037
+ }
5038
+ });
5039
+ }
5040
+
5001
5041
  // core/middleware/wrap-language-model.ts
5002
5042
  var experimental_wrapLanguageModel = ({
5003
5043
  model,
@@ -5563,6 +5603,7 @@ export {
5563
5603
  pipeDataStreamToResponse,
5564
5604
  processDataStream,
5565
5605
  processTextStream,
5606
+ smoothStream,
5566
5607
  streamObject,
5567
5608
  streamText,
5568
5609
  tool