ai 7.0.7 → 7.0.9

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,23 @@
1
1
  # ai
2
2
 
3
+ ## 7.0.9
4
+
5
+ ### Patch Changes
6
+
7
+ - Updated dependencies [2edc641]
8
+ - Updated dependencies [c18018c]
9
+ - @ai-sdk/gateway@4.0.7
10
+
11
+ ## 7.0.8
12
+
13
+ ### Patch Changes
14
+
15
+ - 0274f34: feat (video): add first-class `frameImages` and `inputReferences` call options for video generation
16
+ - Updated dependencies [0274f34]
17
+ - @ai-sdk/provider@4.0.1
18
+ - @ai-sdk/gateway@4.0.6
19
+ - @ai-sdk/provider-utils@5.0.2
20
+
3
21
  ## 7.0.7
4
22
 
5
23
  ### Patch Changes
package/dist/index.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import * as _ai_sdk_provider from '@ai-sdk/provider';
2
- import { EmbeddingModelV4, EmbeddingModelV3, EmbeddingModelV2, EmbeddingModelV4Embedding, EmbeddingModelV4Middleware, ImageModelV4, ImageModelV3, ImageModelV2, ImageModelV4ProviderMetadata, ImageModelV2ProviderMetadata, ImageModelV4Middleware, JSONValue as JSONValue$1, LanguageModelV4, LanguageModelV3, LanguageModelV2, SharedV4Warning, LanguageModelV4Source, LanguageModelV4Middleware, RerankingModelV4, RerankingModelV3, SharedV4ProviderMetadata, SharedV4ProviderReference, SpeechModelV4, SpeechModelV3, SpeechModelV2, TranscriptionModelV4, TranscriptionModelV3, TranscriptionModelV2, JSONObject, ImageModelV4Usage, LanguageModelV4CallOptions, LanguageModelV4Prompt, AISDKError, LanguageModelV4ToolCall, JSONSchema7, ProviderV4, ProviderV3, ProviderV2, SharedV4Headers, JSONParseError, TypeValidationError, Experimental_VideoModelV4, Experimental_VideoModelV3, EmbeddingModelV4CallOptions, Experimental_RealtimeFactoryV4, Experimental_RealtimeFactoryV4GetTokenOptions, Experimental_RealtimeFactoryV4GetTokenResult, Experimental_RealtimeModelV4, Experimental_RealtimeModelV4ClientEvent, Experimental_RealtimeModelV4ServerEvent, Experimental_RealtimeModelV4SessionConfig, Experimental_RealtimeModelV4ToolDefinition, FilesV4, SkillsV4, NoSuchModelError, FilesV4UploadFileCallOptions, SkillsV4UploadSkillResult, SkillsV4UploadSkillCallOptions, SkillsV4File } from '@ai-sdk/provider';
2
+ import { EmbeddingModelV4, EmbeddingModelV3, EmbeddingModelV2, EmbeddingModelV4Embedding, EmbeddingModelV4Middleware, ImageModelV4, ImageModelV3, ImageModelV2, ImageModelV4ProviderMetadata, ImageModelV2ProviderMetadata, ImageModelV4Middleware, JSONValue as JSONValue$1, LanguageModelV4, LanguageModelV3, LanguageModelV2, SharedV4Warning, LanguageModelV4Source, LanguageModelV4Middleware, RerankingModelV4, RerankingModelV3, SharedV4ProviderMetadata, SharedV4ProviderReference, SpeechModelV4, SpeechModelV3, SpeechModelV2, TranscriptionModelV4, TranscriptionModelV3, TranscriptionModelV2, JSONObject, ImageModelV4Usage, LanguageModelV4CallOptions, LanguageModelV4Prompt, AISDKError, LanguageModelV4ToolCall, JSONSchema7, ProviderV4, ProviderV3, ProviderV2, SharedV4Headers, JSONParseError, TypeValidationError, Experimental_VideoModelV4, Experimental_VideoModelV3, Experimental_VideoModelV4FrameType, EmbeddingModelV4CallOptions, Experimental_RealtimeFactoryV4, Experimental_RealtimeFactoryV4GetTokenOptions, Experimental_RealtimeFactoryV4GetTokenResult, Experimental_RealtimeModelV4, Experimental_RealtimeModelV4ClientEvent, Experimental_RealtimeModelV4ServerEvent, Experimental_RealtimeModelV4SessionConfig, Experimental_RealtimeModelV4ToolDefinition, FilesV4, SkillsV4, NoSuchModelError, FilesV4UploadFileCallOptions, SkillsV4UploadSkillResult, SkillsV4UploadSkillCallOptions, SkillsV4File } from '@ai-sdk/provider';
3
3
  export { AISDKError, APICallError, EmptyResponseBodyError, InvalidPromptError, InvalidResponseDataError, JSONParseError, JSONSchema7, LoadAPIKeyError, LoadSettingError, NoContentGeneratedError, NoSuchModelError, NoSuchProviderReferenceError, TooManyEmbeddingValuesForCallError, TypeValidationError, UnsupportedFunctionalityError } from '@ai-sdk/provider';
4
4
  import { GatewayModelId } from '@ai-sdk/gateway';
5
5
  export { GatewayModelId, createGateway, gateway } from '@ai-sdk/gateway';
@@ -7879,7 +7879,7 @@ type GenerateVideoPrompt = string | {
7879
7879
  image: DataContent;
7880
7880
  text?: string;
7881
7881
  };
7882
- declare function experimental_generateVideo({ model: modelArg, prompt: promptArg, n, maxVideosPerCall, aspectRatio, resolution, duration, fps, seed, generateAudio, providerOptions, maxRetries: maxRetriesArg, abortSignal, headers, download: downloadFn, }: {
7882
+ declare function experimental_generateVideo({ model: modelArg, prompt: promptArg, n, maxVideosPerCall, aspectRatio, resolution, duration, fps, seed, frameImages, inputReferences, generateAudio, providerOptions, maxRetries: maxRetriesArg, abortSignal, headers, download: downloadFn, }: {
7883
7883
  /**
7884
7884
  * The video model to use.
7885
7885
  */
@@ -7916,6 +7916,23 @@ declare function experimental_generateVideo({ model: modelArg, prompt: promptArg
7916
7916
  * Seed for the video generation.
7917
7917
  */
7918
7918
  seed?: number;
7919
+ /**
7920
+ * Role-tagged image inputs for image-to-video and first-last-frame generation.
7921
+ */
7922
+ frameImages?: Array<{
7923
+ /**
7924
+ * The image for this frame.
7925
+ */
7926
+ image: DataContent;
7927
+ /**
7928
+ * Which frame this image represents.
7929
+ */
7930
+ frameType: Experimental_VideoModelV4FrameType;
7931
+ }>;
7932
+ /**
7933
+ * Reference image inputs for reference-to-video generation.
7934
+ */
7935
+ inputReferences?: Array<DataContent>;
7919
7936
  /**
7920
7937
  * Whether the model should generate audio alongside the video.
7921
7938
  */
package/dist/index.js CHANGED
@@ -1089,7 +1089,7 @@ import {
1089
1089
  } from "@ai-sdk/provider-utils";
1090
1090
 
1091
1091
  // src/version.ts
1092
- var VERSION = true ? "7.0.7" : "0.0.0-test";
1092
+ var VERSION = true ? "7.0.9" : "0.0.0-test";
1093
1093
 
1094
1094
  // src/util/download/download.ts
1095
1095
  var download = async ({
@@ -13429,6 +13429,8 @@ async function experimental_generateVideo({
13429
13429
  duration,
13430
13430
  fps,
13431
13431
  seed,
13432
+ frameImages,
13433
+ inputReferences,
13432
13434
  generateAudio,
13433
13435
  providerOptions,
13434
13436
  maxRetries: maxRetriesArg,
@@ -13436,7 +13438,7 @@ async function experimental_generateVideo({
13436
13438
  headers,
13437
13439
  download: downloadFn = defaultDownload
13438
13440
  }) {
13439
- var _a22;
13441
+ var _a22, _b;
13440
13442
  const model = resolveVideoModel(modelArg);
13441
13443
  const headersWithUserAgent = withUserAgentSuffix9(
13442
13444
  headers != null ? headers : {},
@@ -13447,7 +13449,32 @@ async function experimental_generateVideo({
13447
13449
  abortSignal
13448
13450
  });
13449
13451
  const { prompt, image } = normalizePrompt2(promptArg);
13450
- const maxVideosPerCallWithDefault = (_a22 = maxVideosPerCall != null ? maxVideosPerCall : await invokeModelMaxVideosPerCall(model)) != null ? _a22 : 1;
13452
+ const normalizedFrameImages = frameImages == null ? void 0 : frameImages.map((frame) => ({
13453
+ image: normalizeImageData(frame.image),
13454
+ frameType: frame.frameType
13455
+ }));
13456
+ const normalizedInputReferences = inputReferences == null ? void 0 : inputReferences.map(
13457
+ (reference) => normalizeImageData(reference)
13458
+ );
13459
+ const effectiveInputReferences = normalizedFrameImages != null && normalizedFrameImages.length > 0 ? void 0 : normalizedInputReferences;
13460
+ const warnings = [];
13461
+ if (normalizedFrameImages != null && normalizedFrameImages.length > 0 && normalizedInputReferences != null && normalizedInputReferences.length > 0) {
13462
+ warnings.push({
13463
+ type: "other",
13464
+ message: "inputReferences were ignored because frameImages were provided; frameImages and inputReferences cannot be combined."
13465
+ });
13466
+ }
13467
+ const firstFrameImage = (_a22 = normalizedFrameImages == null ? void 0 : normalizedFrameImages.find(
13468
+ (frame) => frame.frameType === "first_frame"
13469
+ )) == null ? void 0 : _a22.image;
13470
+ if (image != null && firstFrameImage != null) {
13471
+ warnings.push({
13472
+ type: "other",
13473
+ message: "prompt.image was ignored because a first_frame frameImage was provided; the first_frame frameImage takes precedence as the start image."
13474
+ });
13475
+ }
13476
+ const resolvedImage = firstFrameImage != null ? firstFrameImage : image;
13477
+ const maxVideosPerCallWithDefault = (_b = maxVideosPerCall != null ? maxVideosPerCall : await invokeModelMaxVideosPerCall(model)) != null ? _b : 1;
13451
13478
  const callCount = Math.ceil(n / maxVideosPerCallWithDefault);
13452
13479
  const callVideoCounts = Array.from({ length: callCount }, (_, index) => {
13453
13480
  const remaining = n - index * maxVideosPerCallWithDefault;
@@ -13464,8 +13491,10 @@ async function experimental_generateVideo({
13464
13491
  duration,
13465
13492
  fps,
13466
13493
  seed,
13494
+ image: resolvedImage,
13495
+ frameImages: normalizedFrameImages,
13496
+ inputReferences: effectiveInputReferences,
13467
13497
  generateAudio,
13468
- image,
13469
13498
  providerOptions: providerOptions != null ? providerOptions : {},
13470
13499
  headers: headersWithUserAgent,
13471
13500
  abortSignal
@@ -13474,7 +13503,6 @@ async function experimental_generateVideo({
13474
13503
  )
13475
13504
  );
13476
13505
  const videos = [];
13477
- const warnings = [];
13478
13506
  const responses = [];
13479
13507
  const providerMetadata = {};
13480
13508
  for (const result of results) {
@@ -13570,56 +13598,46 @@ async function experimental_generateVideo({
13570
13598
  };
13571
13599
  }
13572
13600
  function normalizePrompt2(promptArg) {
13573
- var _a22, _b;
13574
13601
  if (typeof promptArg === "string") {
13575
13602
  return {
13576
13603
  prompt: promptArg,
13577
13604
  image: void 0
13578
13605
  };
13579
13606
  }
13580
- let image;
13581
- if (promptArg.image != null) {
13582
- const dataContent = promptArg.image;
13583
- if (typeof dataContent === "string") {
13584
- if (dataContent.startsWith("http://") || dataContent.startsWith("https://")) {
13585
- image = {
13586
- type: "url",
13587
- url: dataContent
13588
- };
13589
- } else if (dataContent.startsWith("data:")) {
13590
- const { mediaType, base64Content } = splitDataUrl(dataContent);
13591
- image = {
13592
- type: "file",
13593
- mediaType: mediaType != null ? mediaType : "image/png",
13594
- data: convertBase64ToUint8Array5(base64Content != null ? base64Content : "")
13595
- };
13596
- } else {
13597
- const bytes = convertBase64ToUint8Array5(dataContent);
13598
- const mediaType = (_a22 = detectMediaType4({
13599
- data: bytes,
13600
- topLevelType: "image"
13601
- })) != null ? _a22 : "image/png";
13602
- image = {
13603
- type: "file",
13604
- mediaType,
13605
- data: bytes
13606
- };
13607
- }
13608
- } else if (dataContent instanceof Uint8Array) {
13609
- const mediaType = (_b = detectMediaType4({
13610
- data: dataContent,
13611
- topLevelType: "image"
13612
- })) != null ? _b : "image/png";
13613
- image = {
13607
+ return {
13608
+ prompt: promptArg.text,
13609
+ image: promptArg.image != null ? normalizeImageData(promptArg.image) : void 0
13610
+ };
13611
+ }
13612
+ function normalizeImageData(dataContent) {
13613
+ var _a22, _b;
13614
+ if (typeof dataContent === "string") {
13615
+ if (dataContent.startsWith("http://") || dataContent.startsWith("https://")) {
13616
+ return {
13617
+ type: "url",
13618
+ url: dataContent
13619
+ };
13620
+ }
13621
+ if (dataContent.startsWith("data:")) {
13622
+ const { mediaType, base64Content } = splitDataUrl(dataContent);
13623
+ return {
13614
13624
  type: "file",
13615
- mediaType,
13616
- data: dataContent
13625
+ mediaType: mediaType != null ? mediaType : "image/png",
13626
+ data: convertBase64ToUint8Array5(base64Content != null ? base64Content : "")
13617
13627
  };
13618
13628
  }
13629
+ const bytes2 = convertBase64ToUint8Array5(dataContent);
13630
+ return {
13631
+ type: "file",
13632
+ mediaType: (_a22 = detectMediaType4({ data: bytes2, topLevelType: "image" })) != null ? _a22 : "image/png",
13633
+ data: bytes2
13634
+ };
13619
13635
  }
13636
+ const bytes = convertDataContentToUint8Array(dataContent);
13620
13637
  return {
13621
- prompt: promptArg.text,
13622
- image
13638
+ type: "file",
13639
+ mediaType: (_b = detectMediaType4({ data: bytes, topLevelType: "image" })) != null ? _b : "image/png",
13640
+ data: bytes
13623
13641
  };
13624
13642
  }
13625
13643
  async function invokeModelMaxVideosPerCall(model) {