ai 4.0.28 → 4.0.30

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 CHANGED
@@ -1,5 +1,17 @@
1
1
  # ai
2
2
 
3
+ ## 4.0.30
4
+
5
+ ### Patch Changes
6
+
7
+ - e4ce80c: fix (ai/core): prevent onFinish from masking stream errors
8
+
9
+ ## 4.0.29
10
+
11
+ ### Patch Changes
12
+
13
+ - a92f5f6: feat (ai/core): generate many images with parallel model calls
14
+
3
15
  ## 4.0.28
4
16
 
5
17
  ### Patch Changes
package/dist/index.js CHANGED
@@ -872,7 +872,7 @@ var import_provider_utils2 = require("@ai-sdk/provider-utils");
872
872
  async function generateImage({
873
873
  model,
874
874
  prompt,
875
- n,
875
+ n = 1,
876
876
  size,
877
877
  aspectRatio,
878
878
  seed,
@@ -881,27 +881,46 @@ async function generateImage({
881
881
  abortSignal,
882
882
  headers
883
883
  }) {
884
+ var _a14;
884
885
  const { retry } = prepareRetries({ maxRetries: maxRetriesArg });
885
- return new DefaultGenerateImageResult(
886
- await retry(
887
- () => model.doGenerate({
888
- prompt,
889
- n: n != null ? n : 1,
890
- abortSignal,
891
- headers,
892
- size,
893
- aspectRatio,
894
- seed,
895
- providerOptions: providerOptions != null ? providerOptions : {}
896
- })
886
+ const maxImagesPerCall = (_a14 = model.maxImagesPerCall) != null ? _a14 : 1;
887
+ const callCount = Math.ceil(n / maxImagesPerCall);
888
+ const callImageCounts = Array.from({ length: callCount }, (_, i) => {
889
+ if (i < callCount - 1) {
890
+ return maxImagesPerCall;
891
+ }
892
+ const remainder = n % maxImagesPerCall;
893
+ return remainder === 0 ? maxImagesPerCall : remainder;
894
+ });
895
+ const results = await Promise.all(
896
+ callImageCounts.map(
897
+ async (callImageCount) => retry(
898
+ () => model.doGenerate({
899
+ prompt,
900
+ n: callImageCount,
901
+ abortSignal,
902
+ headers,
903
+ size,
904
+ aspectRatio,
905
+ seed,
906
+ providerOptions: providerOptions != null ? providerOptions : {}
907
+ })
908
+ )
897
909
  )
898
910
  );
911
+ const images = [];
912
+ const warnings = [];
913
+ for (const result of results) {
914
+ images.push(
915
+ ...result.images.map((image) => new DefaultGeneratedImage({ image }))
916
+ );
917
+ warnings.push(...result.warnings);
918
+ }
919
+ return new DefaultGenerateImageResult({ images, warnings });
899
920
  }
900
921
  var DefaultGenerateImageResult = class {
901
922
  constructor(options) {
902
- this.images = options.images.map(
903
- (image) => new DefaultGeneratedImage({ imageData: image })
904
- );
923
+ this.images = options.images;
905
924
  this.warnings = options.warnings;
906
925
  }
907
926
  get image() {
@@ -909,10 +928,10 @@ var DefaultGenerateImageResult = class {
909
928
  }
910
929
  };
911
930
  var DefaultGeneratedImage = class {
912
- constructor({ imageData }) {
913
- const isUint8Array = imageData instanceof Uint8Array;
914
- this.base64Data = isUint8Array ? void 0 : imageData;
915
- this.uint8ArrayData = isUint8Array ? imageData : void 0;
931
+ constructor({ image }) {
932
+ const isUint8Array = image instanceof Uint8Array;
933
+ this.base64Data = isUint8Array ? void 0 : image;
934
+ this.uint8ArrayData = isUint8Array ? image : void 0;
916
935
  }
917
936
  // lazy conversion with caching to avoid unnecessary conversion overhead:
918
937
  get base64() {
@@ -4642,17 +4661,18 @@ var DefaultStreamTextResult = class {
4642
4661
  async flush(controller) {
4643
4662
  var _a15;
4644
4663
  try {
4645
- const lastStep = recordedSteps[recordedSteps.length - 1];
4646
- if (lastStep) {
4647
- self.warningsPromise.resolve(lastStep.warnings);
4648
- self.requestPromise.resolve(lastStep.request);
4649
- self.responsePromise.resolve(lastStep.response);
4650
- self.toolCallsPromise.resolve(lastStep.toolCalls);
4651
- self.toolResultsPromise.resolve(lastStep.toolResults);
4652
- self.providerMetadataPromise.resolve(
4653
- lastStep.experimental_providerMetadata
4654
- );
4664
+ if (recordedSteps.length === 0) {
4665
+ return;
4655
4666
  }
4667
+ const lastStep = recordedSteps[recordedSteps.length - 1];
4668
+ self.warningsPromise.resolve(lastStep.warnings);
4669
+ self.requestPromise.resolve(lastStep.request);
4670
+ self.responsePromise.resolve(lastStep.response);
4671
+ self.toolCallsPromise.resolve(lastStep.toolCalls);
4672
+ self.toolResultsPromise.resolve(lastStep.toolResults);
4673
+ self.providerMetadataPromise.resolve(
4674
+ lastStep.experimental_providerMetadata
4675
+ );
4656
4676
  const finishReason = recordedFinishReason != null ? recordedFinishReason : "unknown";
4657
4677
  const usage = recordedUsage != null ? recordedUsage : {
4658
4678
  completionTokens: NaN,