@ai-sdk/provider 4.0.4 → 4.0.5

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,18 @@
1
1
  # @ai-sdk/provider
2
2
 
3
+ ## 4.0.5
4
+
5
+ ### Patch Changes
6
+
7
+ - 79e133c: async APIs for generateVideo (poll, webhook)
8
+
9
+ Adds an asynchronous start/status flow to the experimental video model
10
+ interface (`VideoModelV4`): models may now implement `doStart`, `doStatus`,
11
+ and `handleWebhookOption` instead of (or in addition to) `doGenerate`, and
12
+ `experimental_generateVideo` accepts `poll` and `webhook` options to
13
+ orchestrate completion via polling or webhooks. Polling configuration can use
14
+ a custom delay implementation for durable workflow compatibility.
15
+
3
16
  ## 4.0.4
4
17
 
5
18
  ### Patch Changes
package/dist/index.d.ts CHANGED
@@ -7354,6 +7354,125 @@ type VideoModelV4Result = {
7354
7354
  };
7355
7355
  };
7356
7356
 
7357
+ /**
7358
+ * Result returned by `doStart` when initiating an asynchronous video generation.
7359
+ */
7360
+ type VideoModelV4OperationStartResult = {
7361
+ /**
7362
+ * JSON-serializable opaque reference passed to `doStatus` to check the
7363
+ * status of the generation (e.g., a task ID or prediction URL).
7364
+ */
7365
+ operation: JSONValue;
7366
+ /**
7367
+ * Warnings for the call, e.g. unsupported features.
7368
+ */
7369
+ warnings: Array<SharedV4Warning>;
7370
+ /**
7371
+ * Additional provider-specific metadata.
7372
+ */
7373
+ providerMetadata?: SharedV4ProviderMetadata;
7374
+ /**
7375
+ * Response information for telemetry and debugging purposes.
7376
+ */
7377
+ response: {
7378
+ /**
7379
+ * Timestamp for the start of the response.
7380
+ */
7381
+ timestamp: Date;
7382
+ /**
7383
+ * The ID of the response model that was used.
7384
+ */
7385
+ modelId: string;
7386
+ /**
7387
+ * Response headers.
7388
+ */
7389
+ headers: Record<string, string> | undefined;
7390
+ };
7391
+ };
7392
+
7393
+ /**
7394
+ * Result returned by `doStatus` when checking the status of an
7395
+ * asynchronous video generation.
7396
+ */
7397
+ type VideoModelV4OperationStatusResult = {
7398
+ /**
7399
+ * The video generation is still in progress.
7400
+ */
7401
+ status: 'pending';
7402
+ /**
7403
+ * Warnings for the call.
7404
+ */
7405
+ warnings?: Array<SharedV4Warning>;
7406
+ /**
7407
+ * Additional provider-specific metadata.
7408
+ */
7409
+ providerMetadata?: SharedV4ProviderMetadata;
7410
+ /**
7411
+ * Response information for telemetry and debugging purposes.
7412
+ */
7413
+ response: {
7414
+ timestamp: Date;
7415
+ modelId: string;
7416
+ headers: Record<string, string> | undefined;
7417
+ };
7418
+ } | {
7419
+ /**
7420
+ * The video generation is complete.
7421
+ */
7422
+ status: 'completed';
7423
+ /**
7424
+ * Generated videos.
7425
+ */
7426
+ videos: Array<VideoModelV4VideoData>;
7427
+ /**
7428
+ * Warnings for the call.
7429
+ */
7430
+ warnings: Array<SharedV4Warning>;
7431
+ /**
7432
+ * Additional provider-specific metadata.
7433
+ */
7434
+ providerMetadata?: SharedV4ProviderMetadata;
7435
+ /**
7436
+ * Response information for telemetry and debugging purposes.
7437
+ */
7438
+ response: {
7439
+ timestamp: Date;
7440
+ modelId: string;
7441
+ headers: Record<string, string> | undefined;
7442
+ };
7443
+ } | {
7444
+ /**
7445
+ * The video generation failed.
7446
+ */
7447
+ status: 'error';
7448
+ /**
7449
+ * A human-readable error message describing why the generation failed.
7450
+ */
7451
+ error: string;
7452
+ /**
7453
+ * Additional provider-specific metadata.
7454
+ */
7455
+ providerMetadata?: SharedV4ProviderMetadata;
7456
+ /**
7457
+ * Response information for telemetry and debugging purposes.
7458
+ */
7459
+ response: {
7460
+ timestamp: Date;
7461
+ modelId: string;
7462
+ headers: Record<string, string> | undefined;
7463
+ };
7464
+ };
7465
+
7466
+ /**
7467
+ * Data received from a webhook notification during asynchronous video
7468
+ * generation. Generic over the body type so providers/consumers can
7469
+ * narrow it to a specific shape.
7470
+ */
7471
+ type VideoModelV4OperationWebhook<TBody = JSONValue> = {
7472
+ headers: Record<string, string>;
7473
+ body: TBody;
7474
+ };
7475
+
7357
7476
  type GetMaxVideosPerCallFunction$1 = (options: {
7358
7477
  modelId: string;
7359
7478
  }) => PromiseLike<number | undefined> | number | undefined;
@@ -7389,8 +7508,80 @@ type VideoModelV4 = {
7389
7508
  readonly maxVideosPerCall: number | undefined | GetMaxVideosPerCallFunction$1;
7390
7509
  /**
7391
7510
  * Generates an array of videos.
7511
+ *
7512
+ * Optional when `doStart` and `doStatus` are provided to support
7513
+ * the asynchronous start/status flow.
7514
+ */
7515
+ doGenerate?(options: VideoModelV4CallOptions): PromiseLike<VideoModelV4Result>;
7516
+ /**
7517
+ * Optional method that handles the user's `webhook` option for the
7518
+ * asynchronous start/status flow.
7519
+ *
7520
+ * Its presence on the model signals that the provider's API natively
7521
+ * supports webhooks. The SDK checks for this method before invoking the
7522
+ * user-provided `webhook` factory:
7523
+ *
7524
+ * - **Present**: The SDK calls this method with the user's webhook factory.
7525
+ * The implementation should invoke the factory to obtain a webhook URL
7526
+ * and a `received` promise. The URL is then forwarded to `doStart` via
7527
+ * `webhookUrl`, and the SDK awaits `received` instead of polling.
7528
+ *
7529
+ * - **Absent**: The SDK never calls the user's `webhook` factory and falls
7530
+ * back to polling via `doStatus`. This avoids unnecessary webhook
7531
+ * endpoint creation for providers whose APIs have no native webhook
7532
+ * mechanism.
7533
+ *
7534
+ * This method exists because the SDK must decide whether to invoke the
7535
+ * user's webhook factory — which may create real HTTP endpoints or
7536
+ * external resources — *before* calling `doStart`. Without an explicit
7537
+ * capability signal on the model, the SDK would eagerly create a webhook
7538
+ * endpoint for every provider, even those that silently ignore the URL.
7539
+ */
7540
+ handleWebhookOption?: (options: {
7541
+ webhook: () => PromiseLike<{
7542
+ url: string;
7543
+ received: PromiseLike<VideoModelV4OperationWebhook>;
7544
+ }>;
7545
+ }) => PromiseLike<{
7546
+ webhookUrl: string;
7547
+ received: PromiseLike<VideoModelV4OperationWebhook>;
7548
+ }>;
7549
+ /**
7550
+ * Starts an asynchronous video generation and returns an opaque operation
7551
+ * reference that can be passed to `doStatus` to poll for completion.
7552
+ *
7553
+ * When both `doStart` and `doStatus` are implemented, the SDK core can
7554
+ * orchestrate polling or webhook-based completion instead of requiring
7555
+ * the provider to implement its own polling loop in `doGenerate`.
7392
7556
  */
7393
- doGenerate(options: VideoModelV4CallOptions): PromiseLike<VideoModelV4Result>;
7557
+ doStart?(options: VideoModelV4CallOptions & {
7558
+ /**
7559
+ * When provided, the provider should register this URL to receive
7560
+ * a webhook notification when the video generation completes.
7561
+ */
7562
+ webhookUrl?: string;
7563
+ }): PromiseLike<VideoModelV4OperationStartResult>;
7564
+ /**
7565
+ * Checks the status of an asynchronous video generation that was
7566
+ * started with `doStart`.
7567
+ *
7568
+ * Returns either a `pending` status or a `completed` status with the
7569
+ * generated videos.
7570
+ */
7571
+ doStatus?(options: {
7572
+ /**
7573
+ * The JSON-serializable opaque operation reference returned by `doStart`.
7574
+ */
7575
+ operation: JSONValue;
7576
+ /**
7577
+ * Abort signal for cancelling the operation.
7578
+ */
7579
+ abortSignal?: AbortSignal;
7580
+ /**
7581
+ * Additional HTTP headers.
7582
+ */
7583
+ headers?: Record<string, string | undefined>;
7584
+ }): PromiseLike<VideoModelV4OperationStatusResult>;
7394
7585
  };
7395
7586
 
7396
7587
  /**
@@ -7648,4 +7839,4 @@ type VideoModelV3 = {
7648
7839
  }>;
7649
7840
  };
7650
7841
 
7651
- export { AISDKError, APICallError, type EmbeddingModelV2, type EmbeddingModelV2Embedding, type EmbeddingModelV3, type EmbeddingModelV3CallOptions, type EmbeddingModelV3Embedding, type EmbeddingModelV3Middleware, type EmbeddingModelV3Result, type EmbeddingModelV4, type EmbeddingModelV4CallOptions, type EmbeddingModelV4Embedding, type EmbeddingModelV4Middleware, type EmbeddingModelV4Result, EmptyResponseBodyError, type RealtimeFactoryV4 as Experimental_RealtimeFactoryV4, type RealtimeFactoryV4GetTokenOptions as Experimental_RealtimeFactoryV4GetTokenOptions, type RealtimeFactoryV4GetTokenResult as Experimental_RealtimeFactoryV4GetTokenResult, type RealtimeModelV4 as Experimental_RealtimeModelV4, type RealtimeModelV4AudioMessage as Experimental_RealtimeModelV4AudioMessage, type RealtimeModelV4ClientEvent as Experimental_RealtimeModelV4ClientEvent, type RealtimeModelV4ClientSecretOptions as Experimental_RealtimeModelV4ClientSecretOptions, type RealtimeModelV4ClientSecretResult as Experimental_RealtimeModelV4ClientSecretResult, type RealtimeModelV4ConversationItem as Experimental_RealtimeModelV4ConversationItem, type RealtimeModelV4FunctionCallOutput as Experimental_RealtimeModelV4FunctionCallOutput, type RealtimeModelV4ServerEvent as Experimental_RealtimeModelV4ServerEvent, type RealtimeModelV4SessionConfig as Experimental_RealtimeModelV4SessionConfig, type RealtimeModelV4TextMessage as Experimental_RealtimeModelV4TextMessage, type RealtimeModelV4ToolDefinition as Experimental_RealtimeModelV4ToolDefinition, type SpeechTranslationModelV4 as Experimental_SpeechTranslationModelV4, type SpeechTranslationModelV4StreamOptions as Experimental_SpeechTranslationModelV4StreamOptions, type SpeechTranslationModelV4StreamPart as Experimental_SpeechTranslationModelV4StreamPart, type SpeechTranslationModelV4StreamResult as Experimental_SpeechTranslationModelV4StreamResult, type SpeechTranslationModelV4Usage as Experimental_SpeechTranslationModelV4Usage, type TranscriptionModelV4StreamOptions as Experimental_TranscriptionModelV4StreamOptions, type TranscriptionModelV4StreamPart as Experimental_TranscriptionModelV4StreamPart, type TranscriptionModelV4StreamResult as Experimental_TranscriptionModelV4StreamResult, type VideoModelV3 as Experimental_VideoModelV3, type VideoModelV3CallOptions as Experimental_VideoModelV3CallOptions, type VideoModelV3File as Experimental_VideoModelV3File, type VideoModelV3FrameImage as Experimental_VideoModelV3FrameImage, type VideoModelV3FrameType as Experimental_VideoModelV3FrameType, type VideoModelV3VideoData as Experimental_VideoModelV3VideoData, type VideoModelV4 as Experimental_VideoModelV4, type VideoModelV4CallOptions as Experimental_VideoModelV4CallOptions, type VideoModelV4File as Experimental_VideoModelV4File, type VideoModelV4FrameImage as Experimental_VideoModelV4FrameImage, type VideoModelV4FrameType as Experimental_VideoModelV4FrameType, type VideoModelV4Result as Experimental_VideoModelV4Result, type VideoModelV4VideoData as Experimental_VideoModelV4VideoData, type FilesV4, type FilesV4UploadFileCallOptions, type FilesV4UploadFileResult, type ImageModelV2, type ImageModelV2CallOptions, type ImageModelV2CallWarning, type ImageModelV2ProviderMetadata, type ImageModelV3, type ImageModelV3CallOptions, type ImageModelV3File, type ImageModelV3Middleware, type ImageModelV3ProviderMetadata, type ImageModelV3Usage, type ImageModelV4, type ImageModelV4CallOptions, type ImageModelV4File, type ImageModelV4Middleware, type ImageModelV4ProviderMetadata, type ImageModelV4Result, type ImageModelV4Usage, InvalidArgumentError, InvalidPromptError, InvalidResponseDataError, type JSONArray, type JSONObject, JSONParseError, type JSONValue, type LanguageModelV2, type LanguageModelV2CallOptions, type LanguageModelV2CallWarning, type LanguageModelV2Content, type LanguageModelV2DataContent, type LanguageModelV2File, type LanguageModelV2FilePart, type LanguageModelV2FinishReason, type LanguageModelV2FunctionTool, type LanguageModelV2Message, type LanguageModelV2Middleware, type LanguageModelV2Prompt, type LanguageModelV2ProviderDefinedTool, type LanguageModelV2Reasoning, type LanguageModelV2ReasoningPart, type LanguageModelV2ResponseMetadata, type LanguageModelV2Source, type LanguageModelV2StreamPart, type LanguageModelV2Text, type LanguageModelV2TextPart, type LanguageModelV2ToolCall, type LanguageModelV2ToolCallPart, type LanguageModelV2ToolChoice, type LanguageModelV2ToolResultOutput, type LanguageModelV2ToolResultPart, type LanguageModelV2Usage, type LanguageModelV3, type LanguageModelV3CallOptions, type LanguageModelV3Content, type LanguageModelV3DataContent, type LanguageModelV3File, type LanguageModelV3FilePart, type LanguageModelV3FinishReason, type LanguageModelV3FunctionTool, type LanguageModelV3GenerateResult, type LanguageModelV3Message, type LanguageModelV3Middleware, type LanguageModelV3Prompt, type LanguageModelV3ProviderTool, type LanguageModelV3Reasoning, type LanguageModelV3ReasoningPart, type LanguageModelV3ResponseMetadata, type LanguageModelV3Source, type LanguageModelV3StreamPart, type LanguageModelV3StreamResult, type LanguageModelV3Text, type LanguageModelV3TextPart, type LanguageModelV3ToolApprovalRequest, type LanguageModelV3ToolApprovalResponsePart, type LanguageModelV3ToolCall, type LanguageModelV3ToolCallPart, type LanguageModelV3ToolChoice, type LanguageModelV3ToolResult, type LanguageModelV3ToolResultOutput, type LanguageModelV3ToolResultPart, type LanguageModelV3Usage, type LanguageModelV4, type LanguageModelV4CallOptions, type LanguageModelV4Content, type LanguageModelV4CustomContent, type LanguageModelV4CustomPart, type LanguageModelV4File, type LanguageModelV4FilePart, type LanguageModelV4FinishReason, type LanguageModelV4FunctionTool, type LanguageModelV4GenerateResult, type LanguageModelV4Message, type LanguageModelV4Middleware, type LanguageModelV4Prompt, type LanguageModelV4ProviderTool, type LanguageModelV4Reasoning, type LanguageModelV4ReasoningFile, type LanguageModelV4ReasoningFilePart, type LanguageModelV4ReasoningPart, type LanguageModelV4ResponseMetadata, type LanguageModelV4Source, type LanguageModelV4StreamPart, type LanguageModelV4StreamResult, type LanguageModelV4Text, type LanguageModelV4TextPart, type LanguageModelV4ToolApprovalRequest, type LanguageModelV4ToolApprovalResponsePart, type LanguageModelV4ToolCall, type LanguageModelV4ToolCallPart, type LanguageModelV4ToolChoice, type LanguageModelV4ToolResult, type LanguageModelV4ToolResultOutput, type LanguageModelV4ToolResultPart, type LanguageModelV4Usage, LoadAPIKeyError, LoadSettingError, NoContentGeneratedError, NoSuchModelError, NoSuchProviderReferenceError, type ProviderV2, type ProviderV3, type ProviderV4, type RerankingModelV3, type RerankingModelV3CallOptions, type RerankingModelV4, type RerankingModelV4CallOptions, type RerankingModelV4Result, type SharedV2Headers, type SharedV2ProviderMetadata, type SharedV2ProviderOptions, type SharedV3Headers, type SharedV3ProviderMetadata, type SharedV3ProviderOptions, type SharedV3Warning, type SharedV4AudioFormat, type SharedV4FileData, type SharedV4FileDataData, type SharedV4FileDataReference, type SharedV4FileDataText, type SharedV4FileDataUrl, type SharedV4Headers, type SharedV4ProviderMetadata, type SharedV4ProviderOptions, type SharedV4ProviderReference, type SharedV4Warning, type SkillsV4, type SkillsV4File, type SkillsV4UploadSkillCallOptions, type SkillsV4UploadSkillResult, type SpeechModelV2, type SpeechModelV2CallOptions, type SpeechModelV2CallWarning, type SpeechModelV3, type SpeechModelV3CallOptions, type SpeechModelV4, type SpeechModelV4CallOptions, type SpeechModelV4Result, TooManyEmbeddingValuesForCallError, type TranscriptionModelV2, type TranscriptionModelV2CallOptions, type TranscriptionModelV2CallWarning, type TranscriptionModelV3, type TranscriptionModelV3CallOptions, type TranscriptionModelV4, type TranscriptionModelV4CallOptions, type TranscriptionModelV4Result, type TypeValidationContext, TypeValidationError, UnsupportedFunctionalityError, getErrorMessage, isJSONArray, isJSONObject, isJSONValue };
7842
+ export { AISDKError, APICallError, type EmbeddingModelV2, type EmbeddingModelV2Embedding, type EmbeddingModelV3, type EmbeddingModelV3CallOptions, type EmbeddingModelV3Embedding, type EmbeddingModelV3Middleware, type EmbeddingModelV3Result, type EmbeddingModelV4, type EmbeddingModelV4CallOptions, type EmbeddingModelV4Embedding, type EmbeddingModelV4Middleware, type EmbeddingModelV4Result, EmptyResponseBodyError, type RealtimeFactoryV4 as Experimental_RealtimeFactoryV4, type RealtimeFactoryV4GetTokenOptions as Experimental_RealtimeFactoryV4GetTokenOptions, type RealtimeFactoryV4GetTokenResult as Experimental_RealtimeFactoryV4GetTokenResult, type RealtimeModelV4 as Experimental_RealtimeModelV4, type RealtimeModelV4AudioMessage as Experimental_RealtimeModelV4AudioMessage, type RealtimeModelV4ClientEvent as Experimental_RealtimeModelV4ClientEvent, type RealtimeModelV4ClientSecretOptions as Experimental_RealtimeModelV4ClientSecretOptions, type RealtimeModelV4ClientSecretResult as Experimental_RealtimeModelV4ClientSecretResult, type RealtimeModelV4ConversationItem as Experimental_RealtimeModelV4ConversationItem, type RealtimeModelV4FunctionCallOutput as Experimental_RealtimeModelV4FunctionCallOutput, type RealtimeModelV4ServerEvent as Experimental_RealtimeModelV4ServerEvent, type RealtimeModelV4SessionConfig as Experimental_RealtimeModelV4SessionConfig, type RealtimeModelV4TextMessage as Experimental_RealtimeModelV4TextMessage, type RealtimeModelV4ToolDefinition as Experimental_RealtimeModelV4ToolDefinition, type SpeechTranslationModelV4 as Experimental_SpeechTranslationModelV4, type SpeechTranslationModelV4StreamOptions as Experimental_SpeechTranslationModelV4StreamOptions, type SpeechTranslationModelV4StreamPart as Experimental_SpeechTranslationModelV4StreamPart, type SpeechTranslationModelV4StreamResult as Experimental_SpeechTranslationModelV4StreamResult, type SpeechTranslationModelV4Usage as Experimental_SpeechTranslationModelV4Usage, type TranscriptionModelV4StreamOptions as Experimental_TranscriptionModelV4StreamOptions, type TranscriptionModelV4StreamPart as Experimental_TranscriptionModelV4StreamPart, type TranscriptionModelV4StreamResult as Experimental_TranscriptionModelV4StreamResult, type VideoModelV3 as Experimental_VideoModelV3, type VideoModelV3CallOptions as Experimental_VideoModelV3CallOptions, type VideoModelV3File as Experimental_VideoModelV3File, type VideoModelV3FrameImage as Experimental_VideoModelV3FrameImage, type VideoModelV3FrameType as Experimental_VideoModelV3FrameType, type VideoModelV3VideoData as Experimental_VideoModelV3VideoData, type VideoModelV4 as Experimental_VideoModelV4, type VideoModelV4CallOptions as Experimental_VideoModelV4CallOptions, type VideoModelV4File as Experimental_VideoModelV4File, type VideoModelV4FrameImage as Experimental_VideoModelV4FrameImage, type VideoModelV4FrameType as Experimental_VideoModelV4FrameType, type VideoModelV4OperationStartResult as Experimental_VideoModelV4OperationStartResult, type VideoModelV4OperationStatusResult as Experimental_VideoModelV4OperationStatusResult, type VideoModelV4OperationWebhook as Experimental_VideoModelV4OperationWebhook, type VideoModelV4Result as Experimental_VideoModelV4Result, type VideoModelV4VideoData as Experimental_VideoModelV4VideoData, type FilesV4, type FilesV4UploadFileCallOptions, type FilesV4UploadFileResult, type ImageModelV2, type ImageModelV2CallOptions, type ImageModelV2CallWarning, type ImageModelV2ProviderMetadata, type ImageModelV3, type ImageModelV3CallOptions, type ImageModelV3File, type ImageModelV3Middleware, type ImageModelV3ProviderMetadata, type ImageModelV3Usage, type ImageModelV4, type ImageModelV4CallOptions, type ImageModelV4File, type ImageModelV4Middleware, type ImageModelV4ProviderMetadata, type ImageModelV4Result, type ImageModelV4Usage, InvalidArgumentError, InvalidPromptError, InvalidResponseDataError, type JSONArray, type JSONObject, JSONParseError, type JSONValue, type LanguageModelV2, type LanguageModelV2CallOptions, type LanguageModelV2CallWarning, type LanguageModelV2Content, type LanguageModelV2DataContent, type LanguageModelV2File, type LanguageModelV2FilePart, type LanguageModelV2FinishReason, type LanguageModelV2FunctionTool, type LanguageModelV2Message, type LanguageModelV2Middleware, type LanguageModelV2Prompt, type LanguageModelV2ProviderDefinedTool, type LanguageModelV2Reasoning, type LanguageModelV2ReasoningPart, type LanguageModelV2ResponseMetadata, type LanguageModelV2Source, type LanguageModelV2StreamPart, type LanguageModelV2Text, type LanguageModelV2TextPart, type LanguageModelV2ToolCall, type LanguageModelV2ToolCallPart, type LanguageModelV2ToolChoice, type LanguageModelV2ToolResultOutput, type LanguageModelV2ToolResultPart, type LanguageModelV2Usage, type LanguageModelV3, type LanguageModelV3CallOptions, type LanguageModelV3Content, type LanguageModelV3DataContent, type LanguageModelV3File, type LanguageModelV3FilePart, type LanguageModelV3FinishReason, type LanguageModelV3FunctionTool, type LanguageModelV3GenerateResult, type LanguageModelV3Message, type LanguageModelV3Middleware, type LanguageModelV3Prompt, type LanguageModelV3ProviderTool, type LanguageModelV3Reasoning, type LanguageModelV3ReasoningPart, type LanguageModelV3ResponseMetadata, type LanguageModelV3Source, type LanguageModelV3StreamPart, type LanguageModelV3StreamResult, type LanguageModelV3Text, type LanguageModelV3TextPart, type LanguageModelV3ToolApprovalRequest, type LanguageModelV3ToolApprovalResponsePart, type LanguageModelV3ToolCall, type LanguageModelV3ToolCallPart, type LanguageModelV3ToolChoice, type LanguageModelV3ToolResult, type LanguageModelV3ToolResultOutput, type LanguageModelV3ToolResultPart, type LanguageModelV3Usage, type LanguageModelV4, type LanguageModelV4CallOptions, type LanguageModelV4Content, type LanguageModelV4CustomContent, type LanguageModelV4CustomPart, type LanguageModelV4File, type LanguageModelV4FilePart, type LanguageModelV4FinishReason, type LanguageModelV4FunctionTool, type LanguageModelV4GenerateResult, type LanguageModelV4Message, type LanguageModelV4Middleware, type LanguageModelV4Prompt, type LanguageModelV4ProviderTool, type LanguageModelV4Reasoning, type LanguageModelV4ReasoningFile, type LanguageModelV4ReasoningFilePart, type LanguageModelV4ReasoningPart, type LanguageModelV4ResponseMetadata, type LanguageModelV4Source, type LanguageModelV4StreamPart, type LanguageModelV4StreamResult, type LanguageModelV4Text, type LanguageModelV4TextPart, type LanguageModelV4ToolApprovalRequest, type LanguageModelV4ToolApprovalResponsePart, type LanguageModelV4ToolCall, type LanguageModelV4ToolCallPart, type LanguageModelV4ToolChoice, type LanguageModelV4ToolResult, type LanguageModelV4ToolResultOutput, type LanguageModelV4ToolResultPart, type LanguageModelV4Usage, LoadAPIKeyError, LoadSettingError, NoContentGeneratedError, NoSuchModelError, NoSuchProviderReferenceError, type ProviderV2, type ProviderV3, type ProviderV4, type RerankingModelV3, type RerankingModelV3CallOptions, type RerankingModelV4, type RerankingModelV4CallOptions, type RerankingModelV4Result, type SharedV2Headers, type SharedV2ProviderMetadata, type SharedV2ProviderOptions, type SharedV3Headers, type SharedV3ProviderMetadata, type SharedV3ProviderOptions, type SharedV3Warning, type SharedV4AudioFormat, type SharedV4FileData, type SharedV4FileDataData, type SharedV4FileDataReference, type SharedV4FileDataText, type SharedV4FileDataUrl, type SharedV4Headers, type SharedV4ProviderMetadata, type SharedV4ProviderOptions, type SharedV4ProviderReference, type SharedV4Warning, type SkillsV4, type SkillsV4File, type SkillsV4UploadSkillCallOptions, type SkillsV4UploadSkillResult, type SpeechModelV2, type SpeechModelV2CallOptions, type SpeechModelV2CallWarning, type SpeechModelV3, type SpeechModelV3CallOptions, type SpeechModelV4, type SpeechModelV4CallOptions, type SpeechModelV4Result, TooManyEmbeddingValuesForCallError, type TranscriptionModelV2, type TranscriptionModelV2CallOptions, type TranscriptionModelV2CallWarning, type TranscriptionModelV3, type TranscriptionModelV3CallOptions, type TranscriptionModelV4, type TranscriptionModelV4CallOptions, type TranscriptionModelV4Result, type TypeValidationContext, TypeValidationError, UnsupportedFunctionalityError, getErrorMessage, isJSONArray, isJSONObject, isJSONValue };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ai-sdk/provider",
3
- "version": "4.0.4",
3
+ "version": "4.0.5",
4
4
  "type": "module",
5
5
  "license": "Apache-2.0",
6
6
  "sideEffects": false,
@@ -5,6 +5,9 @@ export type {
5
5
  VideoModelV4VideoData as Experimental_VideoModelV4VideoData,
6
6
  } from './video-model-v4-result';
7
7
  export type { VideoModelV4File as Experimental_VideoModelV4File } from './video-model-v4-file';
8
+ export type { VideoModelV4OperationStartResult as Experimental_VideoModelV4OperationStartResult } from './video-model-v4-operation-start-result';
9
+ export type { VideoModelV4OperationStatusResult as Experimental_VideoModelV4OperationStatusResult } from './video-model-v4-operation-status-result';
10
+ export type { VideoModelV4OperationWebhook as Experimental_VideoModelV4OperationWebhook } from './video-model-v4-operation-webhook';
8
11
  export type {
9
12
  VideoModelV4FrameImage as Experimental_VideoModelV4FrameImage,
10
13
  VideoModelV4FrameType as Experimental_VideoModelV4FrameType,
@@ -0,0 +1,44 @@
1
+ import type { JSONValue } from '../../json-value/json-value';
2
+ import type { SharedV4ProviderMetadata } from '../../shared/v4/shared-v4-provider-metadata';
3
+ import type { SharedV4Warning } from '../../shared/v4/shared-v4-warning';
4
+
5
+ /**
6
+ * Result returned by `doStart` when initiating an asynchronous video generation.
7
+ */
8
+ export type VideoModelV4OperationStartResult = {
9
+ /**
10
+ * JSON-serializable opaque reference passed to `doStatus` to check the
11
+ * status of the generation (e.g., a task ID or prediction URL).
12
+ */
13
+ operation: JSONValue;
14
+
15
+ /**
16
+ * Warnings for the call, e.g. unsupported features.
17
+ */
18
+ warnings: Array<SharedV4Warning>;
19
+
20
+ /**
21
+ * Additional provider-specific metadata.
22
+ */
23
+ providerMetadata?: SharedV4ProviderMetadata;
24
+
25
+ /**
26
+ * Response information for telemetry and debugging purposes.
27
+ */
28
+ response: {
29
+ /**
30
+ * Timestamp for the start of the response.
31
+ */
32
+ timestamp: Date;
33
+
34
+ /**
35
+ * The ID of the response model that was used.
36
+ */
37
+ modelId: string;
38
+
39
+ /**
40
+ * Response headers.
41
+ */
42
+ headers: Record<string, string> | undefined;
43
+ };
44
+ };
@@ -0,0 +1,89 @@
1
+ import type { SharedV4ProviderMetadata } from '../../shared/v4/shared-v4-provider-metadata';
2
+ import type { SharedV4Warning } from '../../shared/v4/shared-v4-warning';
3
+ import type { VideoModelV4VideoData } from './video-model-v4-result';
4
+
5
+ /**
6
+ * Result returned by `doStatus` when checking the status of an
7
+ * asynchronous video generation.
8
+ */
9
+ export type VideoModelV4OperationStatusResult =
10
+ | {
11
+ /**
12
+ * The video generation is still in progress.
13
+ */
14
+ status: 'pending';
15
+
16
+ /**
17
+ * Warnings for the call.
18
+ */
19
+ warnings?: Array<SharedV4Warning>;
20
+
21
+ /**
22
+ * Additional provider-specific metadata.
23
+ */
24
+ providerMetadata?: SharedV4ProviderMetadata;
25
+
26
+ /**
27
+ * Response information for telemetry and debugging purposes.
28
+ */
29
+ response: {
30
+ timestamp: Date;
31
+ modelId: string;
32
+ headers: Record<string, string> | undefined;
33
+ };
34
+ }
35
+ | {
36
+ /**
37
+ * The video generation is complete.
38
+ */
39
+ status: 'completed';
40
+
41
+ /**
42
+ * Generated videos.
43
+ */
44
+ videos: Array<VideoModelV4VideoData>;
45
+
46
+ /**
47
+ * Warnings for the call.
48
+ */
49
+ warnings: Array<SharedV4Warning>;
50
+
51
+ /**
52
+ * Additional provider-specific metadata.
53
+ */
54
+ providerMetadata?: SharedV4ProviderMetadata;
55
+
56
+ /**
57
+ * Response information for telemetry and debugging purposes.
58
+ */
59
+ response: {
60
+ timestamp: Date;
61
+ modelId: string;
62
+ headers: Record<string, string> | undefined;
63
+ };
64
+ }
65
+ | {
66
+ /**
67
+ * The video generation failed.
68
+ */
69
+ status: 'error';
70
+
71
+ /**
72
+ * A human-readable error message describing why the generation failed.
73
+ */
74
+ error: string;
75
+
76
+ /**
77
+ * Additional provider-specific metadata.
78
+ */
79
+ providerMetadata?: SharedV4ProviderMetadata;
80
+
81
+ /**
82
+ * Response information for telemetry and debugging purposes.
83
+ */
84
+ response: {
85
+ timestamp: Date;
86
+ modelId: string;
87
+ headers: Record<string, string> | undefined;
88
+ };
89
+ };
@@ -0,0 +1,11 @@
1
+ import type { JSONValue } from '../../json-value/json-value';
2
+
3
+ /**
4
+ * Data received from a webhook notification during asynchronous video
5
+ * generation. Generic over the body type so providers/consumers can
6
+ * narrow it to a specific shape.
7
+ */
8
+ export type VideoModelV4OperationWebhook<TBody = JSONValue> = {
9
+ headers: Record<string, string>;
10
+ body: TBody;
11
+ };
@@ -1,5 +1,9 @@
1
+ import type { JSONValue } from '../../json-value/json-value';
1
2
  import type { VideoModelV4CallOptions } from './video-model-v4-call-options';
2
3
  import type { VideoModelV4Result } from './video-model-v4-result';
4
+ import type { VideoModelV4OperationStartResult } from './video-model-v4-operation-start-result';
5
+ import type { VideoModelV4OperationStatusResult } from './video-model-v4-operation-status-result';
6
+ import type { VideoModelV4OperationWebhook } from './video-model-v4-operation-webhook';
3
7
 
4
8
  type GetMaxVideosPerCallFunction = (options: {
5
9
  modelId: string;
@@ -41,6 +45,87 @@ export type VideoModelV4 = {
41
45
 
42
46
  /**
43
47
  * Generates an array of videos.
48
+ *
49
+ * Optional when `doStart` and `doStatus` are provided to support
50
+ * the asynchronous start/status flow.
51
+ */
52
+ doGenerate?(
53
+ options: VideoModelV4CallOptions,
54
+ ): PromiseLike<VideoModelV4Result>;
55
+
56
+ /**
57
+ * Optional method that handles the user's `webhook` option for the
58
+ * asynchronous start/status flow.
59
+ *
60
+ * Its presence on the model signals that the provider's API natively
61
+ * supports webhooks. The SDK checks for this method before invoking the
62
+ * user-provided `webhook` factory:
63
+ *
64
+ * - **Present**: The SDK calls this method with the user's webhook factory.
65
+ * The implementation should invoke the factory to obtain a webhook URL
66
+ * and a `received` promise. The URL is then forwarded to `doStart` via
67
+ * `webhookUrl`, and the SDK awaits `received` instead of polling.
68
+ *
69
+ * - **Absent**: The SDK never calls the user's `webhook` factory and falls
70
+ * back to polling via `doStatus`. This avoids unnecessary webhook
71
+ * endpoint creation for providers whose APIs have no native webhook
72
+ * mechanism.
73
+ *
74
+ * This method exists because the SDK must decide whether to invoke the
75
+ * user's webhook factory — which may create real HTTP endpoints or
76
+ * external resources — *before* calling `doStart`. Without an explicit
77
+ * capability signal on the model, the SDK would eagerly create a webhook
78
+ * endpoint for every provider, even those that silently ignore the URL.
79
+ */
80
+ handleWebhookOption?: (options: {
81
+ webhook: () => PromiseLike<{
82
+ url: string;
83
+ received: PromiseLike<VideoModelV4OperationWebhook>;
84
+ }>;
85
+ }) => PromiseLike<{
86
+ webhookUrl: string;
87
+ received: PromiseLike<VideoModelV4OperationWebhook>;
88
+ }>;
89
+
90
+ /**
91
+ * Starts an asynchronous video generation and returns an opaque operation
92
+ * reference that can be passed to `doStatus` to poll for completion.
93
+ *
94
+ * When both `doStart` and `doStatus` are implemented, the SDK core can
95
+ * orchestrate polling or webhook-based completion instead of requiring
96
+ * the provider to implement its own polling loop in `doGenerate`.
44
97
  */
45
- doGenerate(options: VideoModelV4CallOptions): PromiseLike<VideoModelV4Result>;
98
+ doStart?(
99
+ options: VideoModelV4CallOptions & {
100
+ /**
101
+ * When provided, the provider should register this URL to receive
102
+ * a webhook notification when the video generation completes.
103
+ */
104
+ webhookUrl?: string;
105
+ },
106
+ ): PromiseLike<VideoModelV4OperationStartResult>;
107
+
108
+ /**
109
+ * Checks the status of an asynchronous video generation that was
110
+ * started with `doStart`.
111
+ *
112
+ * Returns either a `pending` status or a `completed` status with the
113
+ * generated videos.
114
+ */
115
+ doStatus?(options: {
116
+ /**
117
+ * The JSON-serializable opaque operation reference returned by `doStart`.
118
+ */
119
+ operation: JSONValue;
120
+
121
+ /**
122
+ * Abort signal for cancelling the operation.
123
+ */
124
+ abortSignal?: AbortSignal;
125
+
126
+ /**
127
+ * Additional HTTP headers.
128
+ */
129
+ headers?: Record<string, string | undefined>;
130
+ }): PromiseLike<VideoModelV4OperationStatusResult>;
46
131
  };