@ai-sdk/replicate 3.0.0-canary.49 → 3.0.0-canary.50
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 +15 -0
- package/dist/index.js +7 -3
- package/dist/index.js.map +1 -1
- package/package.json +2 -2
- package/src/replicate-video-model.ts +8 -2
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,20 @@
|
|
|
1
1
|
# @ai-sdk/replicate
|
|
2
2
|
|
|
3
|
+
## 3.0.0-canary.50
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- aeda373: fix: only send provider credentials to same-origin response-supplied URLs
|
|
8
|
+
|
|
9
|
+
Several provider clients followed a URL taken from the provider's API response (a polling/status URL or a final media URL such as `polling_url`, `urls.get`, `result_url`, `result.sample`, or `video.uri`) and reused the authenticated headers — or appended `?key=<API_KEY>` — on that request. Because the host of the response-supplied URL was never validated, the long-lived API key was sent to whatever host the response named (a CDN in the benign case, or an attacker-chosen host if the provider response was tampered with), allowing credential exfiltration.
|
|
10
|
+
|
|
11
|
+
A new `isSameOrigin` helper is added to `@ai-sdk/provider-utils`, and the affected fetches in `@ai-sdk/black-forest-labs`, `@ai-sdk/fireworks`, `@ai-sdk/replicate`, `@ai-sdk/gladia`, `@ai-sdk/fal`, and `@ai-sdk/google` now attach credentials only when the followed URL is same-origin with the provider's configured API origin. Requests to a foreign origin are made without the credential.
|
|
12
|
+
|
|
13
|
+
- Updated dependencies [aeda373]
|
|
14
|
+
- Updated dependencies [375fdd7]
|
|
15
|
+
- Updated dependencies [b4507d5]
|
|
16
|
+
- @ai-sdk/provider-utils@5.0.0-canary.48
|
|
17
|
+
|
|
3
18
|
## 3.0.0-canary.49
|
|
4
19
|
|
|
5
20
|
### Patch Changes
|
package/dist/index.js
CHANGED
|
@@ -241,6 +241,7 @@ import {
|
|
|
241
241
|
createJsonResponseHandler as createJsonResponseHandler2,
|
|
242
242
|
delay,
|
|
243
243
|
getFromApi as getFromApi2,
|
|
244
|
+
isSameOrigin,
|
|
244
245
|
parseProviderOptions as parseProviderOptions2,
|
|
245
246
|
postJsonToApi as postJsonToApi2,
|
|
246
247
|
resolve as resolve2
|
|
@@ -405,9 +406,12 @@ var ReplicateVideoModel = class {
|
|
|
405
406
|
message: "Video generation request was aborted"
|
|
406
407
|
});
|
|
407
408
|
}
|
|
409
|
+
const pollUrl = finalPrediction.urls.get;
|
|
408
410
|
const { value: statusPrediction } = await getFromApi2({
|
|
409
|
-
url:
|
|
410
|
-
|
|
411
|
+
url: pollUrl,
|
|
412
|
+
// The polling URL comes from the provider response; only send
|
|
413
|
+
// credentials when it stays on the provider's own origin.
|
|
414
|
+
headers: isSameOrigin(pollUrl, this.config.baseURL) ? await resolve2(this.config.headers) : void 0,
|
|
411
415
|
successfulResponseHandler: createJsonResponseHandler2(
|
|
412
416
|
replicatePredictionSchema
|
|
413
417
|
),
|
|
@@ -479,7 +483,7 @@ var replicatePredictionSchema = z5.object({
|
|
|
479
483
|
});
|
|
480
484
|
|
|
481
485
|
// src/version.ts
|
|
482
|
-
var VERSION = true ? "3.0.0-canary.
|
|
486
|
+
var VERSION = true ? "3.0.0-canary.50" : "0.0.0-test";
|
|
483
487
|
|
|
484
488
|
// src/replicate-provider.ts
|
|
485
489
|
function createReplicate(options = {}) {
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/replicate-provider.ts","../src/replicate-image-model.ts","../src/replicate-error.ts","../src/replicate-image-model-options.ts","../src/replicate-video-model.ts","../src/replicate-video-model-options.ts","../src/version.ts"],"sourcesContent":["import {\n NoSuchModelError,\n type Experimental_VideoModelV4,\n type ProviderV4,\n} from '@ai-sdk/provider';\nimport {\n loadApiKey,\n withUserAgentSuffix,\n type FetchFunction,\n} from '@ai-sdk/provider-utils';\nimport { ReplicateImageModel } from './replicate-image-model';\nimport type { ReplicateImageModelId } from './replicate-image-settings';\nimport { ReplicateVideoModel } from './replicate-video-model';\nimport type { ReplicateVideoModelId } from './replicate-video-settings';\nimport { VERSION } from './version';\n\nexport interface ReplicateProviderSettings {\n /**\n * API token that is being send using the `Authorization` header.\n * It defaults to the `REPLICATE_API_TOKEN` environment variable.\n */\n apiToken?: string;\n\n /**\n * Use a different URL prefix for API calls, e.g. to use proxy servers.\n * The default prefix is `https://api.replicate.com/v1`.\n */\n baseURL?: string;\n\n /**\n * Custom headers to include in the requests.\n */\n headers?: Record<string, string>;\n\n /**\n * Custom fetch implementation. You can use it as a middleware to intercept requests,\n * or to provide a custom fetch implementation for e.g. testing.\n */\n fetch?: FetchFunction;\n}\n\nexport interface ReplicateProvider extends ProviderV4 {\n /**\n * Creates a Replicate image generation model.\n */\n image(modelId: ReplicateImageModelId): ReplicateImageModel;\n\n /**\n * Creates a Replicate image generation model.\n */\n imageModel(modelId: ReplicateImageModelId): ReplicateImageModel;\n\n /**\n * @deprecated Use `embeddingModel` instead.\n */\n textEmbeddingModel(modelId: string): never;\n\n /**\n * Creates a Replicate video generation model.\n */\n video(modelId: ReplicateVideoModelId): Experimental_VideoModelV4;\n\n /**\n * Creates a Replicate video generation model.\n */\n videoModel(modelId: ReplicateVideoModelId): Experimental_VideoModelV4;\n}\n\n/**\n * Create a Replicate provider instance.\n */\nexport function createReplicate(\n options: ReplicateProviderSettings = {},\n): ReplicateProvider {\n const getHeaders = () =>\n withUserAgentSuffix(\n {\n Authorization: `Bearer ${loadApiKey({\n apiKey: options.apiToken,\n environmentVariableName: 'REPLICATE_API_TOKEN',\n description: 'Replicate',\n })}`,\n ...options.headers,\n },\n `ai-sdk/replicate/${VERSION}`,\n );\n\n const createImageModel = (modelId: ReplicateImageModelId) =>\n new ReplicateImageModel(modelId, {\n provider: 'replicate',\n baseURL: options.baseURL ?? 'https://api.replicate.com/v1',\n headers: getHeaders(),\n fetch: options.fetch,\n });\n\n const createVideoModel = (modelId: ReplicateVideoModelId) =>\n new ReplicateVideoModel(modelId, {\n provider: 'replicate.video',\n baseURL: options.baseURL ?? 'https://api.replicate.com/v1',\n headers: getHeaders,\n fetch: options.fetch,\n });\n\n const embeddingModel = (modelId: string) => {\n throw new NoSuchModelError({\n modelId,\n modelType: 'embeddingModel',\n });\n };\n\n return {\n specificationVersion: 'v4' as const,\n image: createImageModel,\n imageModel: createImageModel,\n languageModel: (modelId: string) => {\n throw new NoSuchModelError({\n modelId,\n modelType: 'languageModel',\n });\n },\n embeddingModel,\n textEmbeddingModel: embeddingModel,\n video: createVideoModel,\n videoModel: createVideoModel,\n };\n}\n\n/**\n * Default Replicate provider instance.\n */\nexport const replicate = createReplicate();\n","import type { ImageModelV4, SharedV4Warning } from '@ai-sdk/provider';\nimport {\n combineHeaders,\n convertImageModelFileToDataUri,\n createBinaryResponseHandler,\n createJsonResponseHandler,\n getFromApi,\n parseProviderOptions,\n postJsonToApi,\n resolve,\n serializeModelOptions,\n WORKFLOW_SERIALIZE,\n WORKFLOW_DESERIALIZE,\n type Resolvable,\n type FetchFunction,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\nimport { replicateFailedResponseHandler } from './replicate-error';\nimport { replicateImageModelOptionsSchema } from './replicate-image-model-options';\nimport type { ReplicateImageModelId } from './replicate-image-settings';\n\ninterface ReplicateImageModelConfig {\n provider: string;\n baseURL: string;\n headers?: Resolvable<Record<string, string | undefined>>;\n fetch?: FetchFunction;\n _internal?: {\n currentDate?: () => Date;\n };\n}\n\n// Flux-2 models support up to 8 input images with input_image, input_image_2, etc.\nconst FLUX_2_MODEL_PATTERN = /^black-forest-labs\\/flux-2-/;\nconst MAX_FLUX_2_INPUT_IMAGES = 8;\n\nexport class ReplicateImageModel implements ImageModelV4 {\n readonly specificationVersion = 'v4';\n\n get maxImagesPerCall(): number {\n // Flux-2 models support up to 8 input images\n return this.isFlux2Model ? MAX_FLUX_2_INPUT_IMAGES : 1;\n }\n\n get provider(): string {\n return this.config.provider;\n }\n\n private get isFlux2Model(): boolean {\n return FLUX_2_MODEL_PATTERN.test(this.modelId);\n }\n\n static [WORKFLOW_SERIALIZE](model: ReplicateImageModel) {\n return serializeModelOptions({\n modelId: model.modelId,\n config: model.config,\n });\n }\n\n static [WORKFLOW_DESERIALIZE](options: {\n modelId: ReplicateImageModelId;\n config: ReplicateImageModelConfig;\n }) {\n return new ReplicateImageModel(options.modelId, options.config);\n }\n\n constructor(\n readonly modelId: ReplicateImageModelId,\n private readonly config: ReplicateImageModelConfig,\n ) {}\n\n async doGenerate({\n prompt,\n n,\n aspectRatio,\n size,\n seed,\n providerOptions,\n headers,\n abortSignal,\n files,\n mask,\n }: Parameters<ImageModelV4['doGenerate']>[0]): Promise<\n Awaited<ReturnType<ImageModelV4['doGenerate']>>\n > {\n const warnings: Array<SharedV4Warning> = [];\n\n const [modelId, version] = this.modelId.split(':');\n\n const currentDate = this.config._internal?.currentDate?.() ?? new Date();\n\n // Parse provider options\n const replicateOptions = await parseProviderOptions({\n provider: 'replicate',\n providerOptions,\n schema: replicateImageModelOptionsSchema,\n });\n\n // Handle image input from files\n let imageInputs: Record<string, string> = {};\n if (files != null && files.length > 0) {\n if (this.isFlux2Model) {\n // Flux-2 models use input_image, input_image_2, input_image_3, etc.\n for (\n let i = 0;\n i < Math.min(files.length, MAX_FLUX_2_INPUT_IMAGES);\n i++\n ) {\n const key = i === 0 ? 'input_image' : `input_image_${i + 1}`;\n imageInputs[key] = convertImageModelFileToDataUri(files[i]);\n }\n if (files.length > MAX_FLUX_2_INPUT_IMAGES) {\n warnings.push({\n type: 'other',\n message: `Flux-2 models support up to ${MAX_FLUX_2_INPUT_IMAGES} input images. Additional images are ignored.`,\n });\n }\n } else {\n // Other models use single 'image' parameter\n imageInputs = { image: convertImageModelFileToDataUri(files[0]) };\n if (files.length > 1) {\n warnings.push({\n type: 'other',\n message:\n 'This Replicate model only supports a single input image. Additional images are ignored.',\n });\n }\n }\n }\n\n // Handle mask input (not supported by Flux-2 models)\n let maskInput: string | undefined;\n if (mask != null) {\n if (this.isFlux2Model) {\n warnings.push({\n type: 'other',\n message:\n 'Flux-2 models do not support mask input. The mask will be ignored.',\n });\n } else {\n maskInput = convertImageModelFileToDataUri(mask);\n }\n }\n\n // Extract maxWaitTimeInSeconds from provider options and prepare the rest for the request body\n const { maxWaitTimeInSeconds, ...inputOptions } = replicateOptions ?? {};\n\n // Build the prefer header based on maxWaitTimeInSeconds:\n // - undefined/null: use default sync wait (prefer: wait)\n // - positive number: use custom wait duration (prefer: wait=N)\n const preferHeader: Record<string, string> =\n maxWaitTimeInSeconds != null\n ? { prefer: `wait=${maxWaitTimeInSeconds}` }\n : { prefer: 'wait' };\n\n const {\n value: { output },\n responseHeaders,\n } = await postJsonToApi({\n url:\n // different endpoints for versioned vs unversioned models:\n version != null\n ? `${this.config.baseURL}/predictions`\n : `${this.config.baseURL}/models/${modelId}/predictions`,\n\n headers: combineHeaders(\n this.config.headers ? await resolve(this.config.headers) : undefined,\n headers,\n preferHeader,\n ),\n\n body: {\n input: {\n prompt,\n aspect_ratio: aspectRatio,\n size,\n seed,\n num_outputs: n,\n ...imageInputs,\n ...(maskInput != null ? { mask: maskInput } : {}),\n ...inputOptions,\n },\n // for versioned models, include the version in the body:\n ...(version != null ? { version } : {}),\n },\n\n successfulResponseHandler: createJsonResponseHandler(\n replicateImageResponseSchema,\n ),\n failedResponseHandler: replicateFailedResponseHandler,\n abortSignal,\n fetch: this.config.fetch,\n });\n\n // download the images:\n const outputArray = Array.isArray(output) ? output : [output];\n const images = await Promise.all(\n outputArray.map(async url => {\n const { value: image } = await getFromApi({\n url,\n successfulResponseHandler: createBinaryResponseHandler(),\n failedResponseHandler: replicateFailedResponseHandler,\n abortSignal,\n fetch: this.config.fetch,\n });\n return image;\n }),\n );\n\n return {\n images,\n warnings,\n response: {\n timestamp: currentDate,\n modelId: this.modelId,\n headers: responseHeaders,\n },\n };\n }\n}\n\nconst replicateImageResponseSchema = z.object({\n output: z.union([z.array(z.string()), z.string()]),\n});\n","import { createJsonErrorResponseHandler } from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\nconst replicateErrorSchema = z.object({\n detail: z.string().optional(),\n error: z.string().optional(),\n});\n\nexport const replicateFailedResponseHandler = createJsonErrorResponseHandler({\n errorSchema: replicateErrorSchema,\n errorToMessage: error =>\n error.detail ?? error.error ?? 'Unknown Replicate error',\n});\n","import {\n lazySchema,\n zodSchema,\n type InferSchema,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\n/**\n * Provider options schema for Replicate image generation.\n *\n * Note: Different Replicate models support different parameters.\n * This schema includes common parameters, but you can pass any\n * model-specific parameters through the passthrough.\n */\nexport const replicateImageModelOptionsSchema = lazySchema(() =>\n zodSchema(\n z\n .object({\n /**\n * Maximum time in seconds to wait for the prediction to complete in sync mode.\n * By default, Replicate uses sync mode with a 60-second timeout.\n *\n * - When not specified: Uses default 60-second sync wait (`prefer: wait`)\n * - When set to a positive number: Uses that duration (`prefer: wait=N`)\n */\n maxWaitTimeInSeconds: z.number().positive().nullish(),\n\n /**\n * Guidance scale for classifier-free guidance.\n * Higher values make the output more closely match the prompt.\n */\n guidance_scale: z.number().nullish(),\n\n /**\n * Number of denoising steps. More steps = higher quality but slower.\n */\n num_inference_steps: z.number().nullish(),\n\n /**\n * Negative prompt to guide what to avoid in the generation.\n */\n negative_prompt: z.string().nullish(),\n\n /**\n * Output image format.\n */\n output_format: z.enum(['png', 'jpg', 'webp']).nullish(),\n\n /**\n * Output image quality (1-100). Only applies to jpg and webp.\n */\n output_quality: z.number().min(1).max(100).nullish(),\n\n /**\n * Strength of the transformation for img2img (0-1).\n * Lower values keep more of the original image.\n */\n strength: z.number().min(0).max(1).nullish(),\n })\n .passthrough(),\n ),\n);\n\nexport type ReplicateImageModelOptions = InferSchema<\n typeof replicateImageModelOptionsSchema\n>;\n","import {\n AISDKError,\n type Experimental_VideoModelV4,\n type SharedV4Warning,\n} from '@ai-sdk/provider';\nimport {\n combineHeaders,\n convertImageModelFileToDataUri,\n createJsonResponseHandler,\n delay,\n getFromApi,\n parseProviderOptions,\n postJsonToApi,\n resolve,\n type FetchFunction,\n type Resolvable,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\nimport { replicateFailedResponseHandler } from './replicate-error';\nimport {\n replicateVideoModelOptionsSchema,\n type ReplicateVideoModelOptions,\n} from './replicate-video-model-options';\nimport type { ReplicateVideoModelId } from './replicate-video-settings';\n\ninterface ReplicateVideoModelConfig {\n provider: string;\n baseURL: string;\n headers?: Resolvable<Record<string, string | undefined>>;\n fetch?: FetchFunction;\n _internal?: {\n currentDate?: () => Date;\n };\n}\n\nexport class ReplicateVideoModel implements Experimental_VideoModelV4 {\n readonly specificationVersion = 'v4';\n readonly maxVideosPerCall = 1; // Replicate video models support 1 video at a time\n\n get provider(): string {\n return this.config.provider;\n }\n\n constructor(\n readonly modelId: ReplicateVideoModelId,\n private readonly config: ReplicateVideoModelConfig,\n ) {}\n\n async doGenerate(\n options: Parameters<Experimental_VideoModelV4['doGenerate']>[0],\n ): Promise<Awaited<ReturnType<Experimental_VideoModelV4['doGenerate']>>> {\n const currentDate = this.config._internal?.currentDate?.() ?? new Date();\n const warnings: SharedV4Warning[] = [];\n\n const replicateOptions = (await parseProviderOptions({\n provider: 'replicate',\n providerOptions: options.providerOptions,\n schema: replicateVideoModelOptionsSchema,\n })) as ReplicateVideoModelOptions | undefined;\n\n const [modelId, version] = this.modelId.split(':');\n const input: Record<string, unknown> = {};\n\n if (options.prompt != null) {\n input.prompt = options.prompt;\n }\n\n if (options.image != null) {\n if (options.image.type === 'url') {\n input.image = options.image.url;\n } else {\n input.image = convertImageModelFileToDataUri(options.image);\n }\n }\n\n if (options.aspectRatio) {\n input.aspect_ratio = options.aspectRatio;\n }\n\n if (options.resolution) {\n input.size = options.resolution;\n }\n\n if (options.duration) {\n input.duration = options.duration;\n }\n\n if (options.fps) {\n input.fps = options.fps;\n }\n\n if (options.seed) {\n input.seed = options.seed;\n }\n\n if (replicateOptions != null) {\n const opts = replicateOptions;\n if (opts.guidance_scale !== undefined && opts.guidance_scale !== null) {\n input.guidance_scale = opts.guidance_scale;\n }\n if (\n opts.num_inference_steps !== undefined &&\n opts.num_inference_steps !== null\n ) {\n input.num_inference_steps = opts.num_inference_steps;\n }\n if (\n opts.motion_bucket_id !== undefined &&\n opts.motion_bucket_id !== null\n ) {\n input.motion_bucket_id = opts.motion_bucket_id;\n }\n if (opts.cond_aug !== undefined && opts.cond_aug !== null) {\n input.cond_aug = opts.cond_aug;\n }\n if (opts.decoding_t !== undefined && opts.decoding_t !== null) {\n input.decoding_t = opts.decoding_t;\n }\n if (opts.video_length !== undefined && opts.video_length !== null) {\n input.video_length = opts.video_length;\n }\n if (opts.sizing_strategy !== undefined && opts.sizing_strategy !== null) {\n input.sizing_strategy = opts.sizing_strategy;\n }\n if (\n opts.frames_per_second !== undefined &&\n opts.frames_per_second !== null\n ) {\n input.frames_per_second = opts.frames_per_second;\n }\n if (\n opts.prompt_optimizer !== undefined &&\n opts.prompt_optimizer !== null\n ) {\n input.prompt_optimizer = opts.prompt_optimizer;\n }\n\n for (const [key, value] of Object.entries(opts)) {\n if (\n ![\n 'pollIntervalMs',\n 'pollTimeoutMs',\n 'maxWaitTimeInSeconds',\n 'guidance_scale',\n 'num_inference_steps',\n 'motion_bucket_id',\n 'cond_aug',\n 'decoding_t',\n 'video_length',\n 'sizing_strategy',\n 'frames_per_second',\n 'prompt_optimizer',\n ].includes(key)\n ) {\n input[key] = value;\n }\n }\n }\n\n const maxWaitTimeInSeconds = replicateOptions?.maxWaitTimeInSeconds;\n const preferHeader: Record<string, string> =\n maxWaitTimeInSeconds != null\n ? { prefer: `wait=${maxWaitTimeInSeconds}` }\n : { prefer: 'wait' };\n\n const predictionUrl =\n version != null\n ? `${this.config.baseURL}/predictions`\n : `${this.config.baseURL}/models/${modelId}/predictions`;\n\n const { value: prediction, responseHeaders } = await postJsonToApi({\n url: predictionUrl,\n headers: combineHeaders(\n await resolve(this.config.headers),\n options.headers,\n preferHeader,\n ),\n body: {\n input,\n ...(version != null ? { version } : {}),\n },\n successfulResponseHandler: createJsonResponseHandler(\n replicatePredictionSchema,\n ),\n failedResponseHandler: replicateFailedResponseHandler,\n abortSignal: options.abortSignal,\n fetch: this.config.fetch,\n });\n\n let finalPrediction = prediction;\n if (\n prediction.status === 'starting' ||\n prediction.status === 'processing'\n ) {\n const pollIntervalMs = replicateOptions?.pollIntervalMs ?? 2000; // 2 seconds\n const pollTimeoutMs = replicateOptions?.pollTimeoutMs ?? 300000; // 5 minutes\n\n const startTime = Date.now();\n\n while (\n finalPrediction.status === 'starting' ||\n finalPrediction.status === 'processing'\n ) {\n if (Date.now() - startTime > pollTimeoutMs) {\n throw new AISDKError({\n name: 'REPLICATE_VIDEO_GENERATION_TIMEOUT',\n message: `Video generation timed out after ${pollTimeoutMs}ms`,\n });\n }\n\n await delay(pollIntervalMs);\n\n if (options.abortSignal?.aborted) {\n throw new AISDKError({\n name: 'REPLICATE_VIDEO_GENERATION_ABORTED',\n message: 'Video generation request was aborted',\n });\n }\n\n const { value: statusPrediction } = await getFromApi({\n url: finalPrediction.urls.get,\n headers: await resolve(this.config.headers),\n successfulResponseHandler: createJsonResponseHandler(\n replicatePredictionSchema,\n ),\n failedResponseHandler: replicateFailedResponseHandler,\n abortSignal: options.abortSignal,\n fetch: this.config.fetch,\n });\n\n finalPrediction = statusPrediction;\n }\n }\n\n if (finalPrediction.status === 'failed') {\n throw new AISDKError({\n name: 'REPLICATE_VIDEO_GENERATION_FAILED',\n message: `Video generation failed: ${finalPrediction.error ?? 'Unknown error'}`,\n });\n }\n\n if (finalPrediction.status === 'canceled') {\n throw new AISDKError({\n name: 'REPLICATE_VIDEO_GENERATION_CANCELED',\n message: 'Video generation was canceled',\n });\n }\n\n const videoUrl = finalPrediction.output;\n if (!videoUrl) {\n throw new AISDKError({\n name: 'REPLICATE_VIDEO_GENERATION_ERROR',\n message: 'No video URL in response',\n });\n }\n\n return {\n videos: [\n {\n type: 'url',\n url: videoUrl,\n mediaType: 'video/mp4',\n },\n ],\n warnings,\n response: {\n timestamp: currentDate,\n modelId: this.modelId,\n headers: responseHeaders,\n },\n providerMetadata: {\n replicate: {\n videos: [\n {\n url: videoUrl,\n },\n ],\n predictionId: finalPrediction.id,\n metrics: finalPrediction.metrics,\n },\n },\n };\n }\n}\n\nconst replicatePredictionSchema = z.object({\n id: z.string(),\n status: z.enum(['starting', 'processing', 'succeeded', 'failed', 'canceled']),\n output: z.string().nullish(),\n error: z.string().nullish(),\n urls: z.object({\n get: z.string(),\n }),\n metrics: z\n .object({\n predict_time: z.number().nullish(),\n })\n .nullish(),\n});\n","import { lazySchema, zodSchema } from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\nexport type ReplicateVideoModelOptions = {\n // Polling configuration\n pollIntervalMs?: number | null;\n pollTimeoutMs?: number | null;\n maxWaitTimeInSeconds?: number | null;\n\n // Common video generation options\n guidance_scale?: number | null;\n num_inference_steps?: number | null;\n\n // Stable Video Diffusion specific\n motion_bucket_id?: number | null;\n cond_aug?: number | null;\n decoding_t?: number | null;\n video_length?: string | null;\n sizing_strategy?: string | null;\n frames_per_second?: number | null;\n\n // MiniMax specific\n prompt_optimizer?: boolean | null;\n\n [key: string]: unknown; // For passthrough\n};\n\nexport const replicateVideoModelOptionsSchema = lazySchema(() =>\n zodSchema(\n z\n .object({\n pollIntervalMs: z.number().positive().nullish(),\n pollTimeoutMs: z.number().positive().nullish(),\n maxWaitTimeInSeconds: z.number().positive().nullish(),\n guidance_scale: z.number().nullish(),\n num_inference_steps: z.number().nullish(),\n motion_bucket_id: z.number().nullish(),\n cond_aug: z.number().nullish(),\n decoding_t: z.number().nullish(),\n video_length: z.string().nullish(),\n sizing_strategy: z.string().nullish(),\n frames_per_second: z.number().nullish(),\n prompt_optimizer: z.boolean().nullish(),\n })\n .loose(),\n ),\n);\n","// Version string of this package injected at build time.\ndeclare const __PACKAGE_VERSION__: string | undefined;\nexport const VERSION: string =\n typeof __PACKAGE_VERSION__ !== 'undefined'\n ? __PACKAGE_VERSION__\n : '0.0.0-test';\n"],"mappings":"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","names":["z","z","z","combineHeaders","convertImageModelFileToDataUri","createJsonResponseHandler","getFromApi","parseProviderOptions","postJsonToApi","resolve","z","lazySchema","zodSchema","z","parseProviderOptions","convertImageModelFileToDataUri","postJsonToApi","combineHeaders","resolve","createJsonResponseHandler","getFromApi","z"]}
|
|
1
|
+
{"version":3,"sources":["../src/replicate-provider.ts","../src/replicate-image-model.ts","../src/replicate-error.ts","../src/replicate-image-model-options.ts","../src/replicate-video-model.ts","../src/replicate-video-model-options.ts","../src/version.ts"],"sourcesContent":["import {\n NoSuchModelError,\n type Experimental_VideoModelV4,\n type ProviderV4,\n} from '@ai-sdk/provider';\nimport {\n loadApiKey,\n withUserAgentSuffix,\n type FetchFunction,\n} from '@ai-sdk/provider-utils';\nimport { ReplicateImageModel } from './replicate-image-model';\nimport type { ReplicateImageModelId } from './replicate-image-settings';\nimport { ReplicateVideoModel } from './replicate-video-model';\nimport type { ReplicateVideoModelId } from './replicate-video-settings';\nimport { VERSION } from './version';\n\nexport interface ReplicateProviderSettings {\n /**\n * API token that is being send using the `Authorization` header.\n * It defaults to the `REPLICATE_API_TOKEN` environment variable.\n */\n apiToken?: string;\n\n /**\n * Use a different URL prefix for API calls, e.g. to use proxy servers.\n * The default prefix is `https://api.replicate.com/v1`.\n */\n baseURL?: string;\n\n /**\n * Custom headers to include in the requests.\n */\n headers?: Record<string, string>;\n\n /**\n * Custom fetch implementation. You can use it as a middleware to intercept requests,\n * or to provide a custom fetch implementation for e.g. testing.\n */\n fetch?: FetchFunction;\n}\n\nexport interface ReplicateProvider extends ProviderV4 {\n /**\n * Creates a Replicate image generation model.\n */\n image(modelId: ReplicateImageModelId): ReplicateImageModel;\n\n /**\n * Creates a Replicate image generation model.\n */\n imageModel(modelId: ReplicateImageModelId): ReplicateImageModel;\n\n /**\n * @deprecated Use `embeddingModel` instead.\n */\n textEmbeddingModel(modelId: string): never;\n\n /**\n * Creates a Replicate video generation model.\n */\n video(modelId: ReplicateVideoModelId): Experimental_VideoModelV4;\n\n /**\n * Creates a Replicate video generation model.\n */\n videoModel(modelId: ReplicateVideoModelId): Experimental_VideoModelV4;\n}\n\n/**\n * Create a Replicate provider instance.\n */\nexport function createReplicate(\n options: ReplicateProviderSettings = {},\n): ReplicateProvider {\n const getHeaders = () =>\n withUserAgentSuffix(\n {\n Authorization: `Bearer ${loadApiKey({\n apiKey: options.apiToken,\n environmentVariableName: 'REPLICATE_API_TOKEN',\n description: 'Replicate',\n })}`,\n ...options.headers,\n },\n `ai-sdk/replicate/${VERSION}`,\n );\n\n const createImageModel = (modelId: ReplicateImageModelId) =>\n new ReplicateImageModel(modelId, {\n provider: 'replicate',\n baseURL: options.baseURL ?? 'https://api.replicate.com/v1',\n headers: getHeaders(),\n fetch: options.fetch,\n });\n\n const createVideoModel = (modelId: ReplicateVideoModelId) =>\n new ReplicateVideoModel(modelId, {\n provider: 'replicate.video',\n baseURL: options.baseURL ?? 'https://api.replicate.com/v1',\n headers: getHeaders,\n fetch: options.fetch,\n });\n\n const embeddingModel = (modelId: string) => {\n throw new NoSuchModelError({\n modelId,\n modelType: 'embeddingModel',\n });\n };\n\n return {\n specificationVersion: 'v4' as const,\n image: createImageModel,\n imageModel: createImageModel,\n languageModel: (modelId: string) => {\n throw new NoSuchModelError({\n modelId,\n modelType: 'languageModel',\n });\n },\n embeddingModel,\n textEmbeddingModel: embeddingModel,\n video: createVideoModel,\n videoModel: createVideoModel,\n };\n}\n\n/**\n * Default Replicate provider instance.\n */\nexport const replicate = createReplicate();\n","import type { ImageModelV4, SharedV4Warning } from '@ai-sdk/provider';\nimport {\n combineHeaders,\n convertImageModelFileToDataUri,\n createBinaryResponseHandler,\n createJsonResponseHandler,\n getFromApi,\n parseProviderOptions,\n postJsonToApi,\n resolve,\n serializeModelOptions,\n WORKFLOW_SERIALIZE,\n WORKFLOW_DESERIALIZE,\n type Resolvable,\n type FetchFunction,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\nimport { replicateFailedResponseHandler } from './replicate-error';\nimport { replicateImageModelOptionsSchema } from './replicate-image-model-options';\nimport type { ReplicateImageModelId } from './replicate-image-settings';\n\ninterface ReplicateImageModelConfig {\n provider: string;\n baseURL: string;\n headers?: Resolvable<Record<string, string | undefined>>;\n fetch?: FetchFunction;\n _internal?: {\n currentDate?: () => Date;\n };\n}\n\n// Flux-2 models support up to 8 input images with input_image, input_image_2, etc.\nconst FLUX_2_MODEL_PATTERN = /^black-forest-labs\\/flux-2-/;\nconst MAX_FLUX_2_INPUT_IMAGES = 8;\n\nexport class ReplicateImageModel implements ImageModelV4 {\n readonly specificationVersion = 'v4';\n\n get maxImagesPerCall(): number {\n // Flux-2 models support up to 8 input images\n return this.isFlux2Model ? MAX_FLUX_2_INPUT_IMAGES : 1;\n }\n\n get provider(): string {\n return this.config.provider;\n }\n\n private get isFlux2Model(): boolean {\n return FLUX_2_MODEL_PATTERN.test(this.modelId);\n }\n\n static [WORKFLOW_SERIALIZE](model: ReplicateImageModel) {\n return serializeModelOptions({\n modelId: model.modelId,\n config: model.config,\n });\n }\n\n static [WORKFLOW_DESERIALIZE](options: {\n modelId: ReplicateImageModelId;\n config: ReplicateImageModelConfig;\n }) {\n return new ReplicateImageModel(options.modelId, options.config);\n }\n\n constructor(\n readonly modelId: ReplicateImageModelId,\n private readonly config: ReplicateImageModelConfig,\n ) {}\n\n async doGenerate({\n prompt,\n n,\n aspectRatio,\n size,\n seed,\n providerOptions,\n headers,\n abortSignal,\n files,\n mask,\n }: Parameters<ImageModelV4['doGenerate']>[0]): Promise<\n Awaited<ReturnType<ImageModelV4['doGenerate']>>\n > {\n const warnings: Array<SharedV4Warning> = [];\n\n const [modelId, version] = this.modelId.split(':');\n\n const currentDate = this.config._internal?.currentDate?.() ?? new Date();\n\n // Parse provider options\n const replicateOptions = await parseProviderOptions({\n provider: 'replicate',\n providerOptions,\n schema: replicateImageModelOptionsSchema,\n });\n\n // Handle image input from files\n let imageInputs: Record<string, string> = {};\n if (files != null && files.length > 0) {\n if (this.isFlux2Model) {\n // Flux-2 models use input_image, input_image_2, input_image_3, etc.\n for (\n let i = 0;\n i < Math.min(files.length, MAX_FLUX_2_INPUT_IMAGES);\n i++\n ) {\n const key = i === 0 ? 'input_image' : `input_image_${i + 1}`;\n imageInputs[key] = convertImageModelFileToDataUri(files[i]);\n }\n if (files.length > MAX_FLUX_2_INPUT_IMAGES) {\n warnings.push({\n type: 'other',\n message: `Flux-2 models support up to ${MAX_FLUX_2_INPUT_IMAGES} input images. Additional images are ignored.`,\n });\n }\n } else {\n // Other models use single 'image' parameter\n imageInputs = { image: convertImageModelFileToDataUri(files[0]) };\n if (files.length > 1) {\n warnings.push({\n type: 'other',\n message:\n 'This Replicate model only supports a single input image. Additional images are ignored.',\n });\n }\n }\n }\n\n // Handle mask input (not supported by Flux-2 models)\n let maskInput: string | undefined;\n if (mask != null) {\n if (this.isFlux2Model) {\n warnings.push({\n type: 'other',\n message:\n 'Flux-2 models do not support mask input. The mask will be ignored.',\n });\n } else {\n maskInput = convertImageModelFileToDataUri(mask);\n }\n }\n\n // Extract maxWaitTimeInSeconds from provider options and prepare the rest for the request body\n const { maxWaitTimeInSeconds, ...inputOptions } = replicateOptions ?? {};\n\n // Build the prefer header based on maxWaitTimeInSeconds:\n // - undefined/null: use default sync wait (prefer: wait)\n // - positive number: use custom wait duration (prefer: wait=N)\n const preferHeader: Record<string, string> =\n maxWaitTimeInSeconds != null\n ? { prefer: `wait=${maxWaitTimeInSeconds}` }\n : { prefer: 'wait' };\n\n const {\n value: { output },\n responseHeaders,\n } = await postJsonToApi({\n url:\n // different endpoints for versioned vs unversioned models:\n version != null\n ? `${this.config.baseURL}/predictions`\n : `${this.config.baseURL}/models/${modelId}/predictions`,\n\n headers: combineHeaders(\n this.config.headers ? await resolve(this.config.headers) : undefined,\n headers,\n preferHeader,\n ),\n\n body: {\n input: {\n prompt,\n aspect_ratio: aspectRatio,\n size,\n seed,\n num_outputs: n,\n ...imageInputs,\n ...(maskInput != null ? { mask: maskInput } : {}),\n ...inputOptions,\n },\n // for versioned models, include the version in the body:\n ...(version != null ? { version } : {}),\n },\n\n successfulResponseHandler: createJsonResponseHandler(\n replicateImageResponseSchema,\n ),\n failedResponseHandler: replicateFailedResponseHandler,\n abortSignal,\n fetch: this.config.fetch,\n });\n\n // download the images:\n const outputArray = Array.isArray(output) ? output : [output];\n const images = await Promise.all(\n outputArray.map(async url => {\n const { value: image } = await getFromApi({\n url,\n successfulResponseHandler: createBinaryResponseHandler(),\n failedResponseHandler: replicateFailedResponseHandler,\n abortSignal,\n fetch: this.config.fetch,\n });\n return image;\n }),\n );\n\n return {\n images,\n warnings,\n response: {\n timestamp: currentDate,\n modelId: this.modelId,\n headers: responseHeaders,\n },\n };\n }\n}\n\nconst replicateImageResponseSchema = z.object({\n output: z.union([z.array(z.string()), z.string()]),\n});\n","import { createJsonErrorResponseHandler } from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\nconst replicateErrorSchema = z.object({\n detail: z.string().optional(),\n error: z.string().optional(),\n});\n\nexport const replicateFailedResponseHandler = createJsonErrorResponseHandler({\n errorSchema: replicateErrorSchema,\n errorToMessage: error =>\n error.detail ?? error.error ?? 'Unknown Replicate error',\n});\n","import {\n lazySchema,\n zodSchema,\n type InferSchema,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\n/**\n * Provider options schema for Replicate image generation.\n *\n * Note: Different Replicate models support different parameters.\n * This schema includes common parameters, but you can pass any\n * model-specific parameters through the passthrough.\n */\nexport const replicateImageModelOptionsSchema = lazySchema(() =>\n zodSchema(\n z\n .object({\n /**\n * Maximum time in seconds to wait for the prediction to complete in sync mode.\n * By default, Replicate uses sync mode with a 60-second timeout.\n *\n * - When not specified: Uses default 60-second sync wait (`prefer: wait`)\n * - When set to a positive number: Uses that duration (`prefer: wait=N`)\n */\n maxWaitTimeInSeconds: z.number().positive().nullish(),\n\n /**\n * Guidance scale for classifier-free guidance.\n * Higher values make the output more closely match the prompt.\n */\n guidance_scale: z.number().nullish(),\n\n /**\n * Number of denoising steps. More steps = higher quality but slower.\n */\n num_inference_steps: z.number().nullish(),\n\n /**\n * Negative prompt to guide what to avoid in the generation.\n */\n negative_prompt: z.string().nullish(),\n\n /**\n * Output image format.\n */\n output_format: z.enum(['png', 'jpg', 'webp']).nullish(),\n\n /**\n * Output image quality (1-100). Only applies to jpg and webp.\n */\n output_quality: z.number().min(1).max(100).nullish(),\n\n /**\n * Strength of the transformation for img2img (0-1).\n * Lower values keep more of the original image.\n */\n strength: z.number().min(0).max(1).nullish(),\n })\n .passthrough(),\n ),\n);\n\nexport type ReplicateImageModelOptions = InferSchema<\n typeof replicateImageModelOptionsSchema\n>;\n","import {\n AISDKError,\n type Experimental_VideoModelV4,\n type SharedV4Warning,\n} from '@ai-sdk/provider';\nimport {\n combineHeaders,\n convertImageModelFileToDataUri,\n createJsonResponseHandler,\n delay,\n getFromApi,\n isSameOrigin,\n parseProviderOptions,\n postJsonToApi,\n resolve,\n type FetchFunction,\n type Resolvable,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\nimport { replicateFailedResponseHandler } from './replicate-error';\nimport {\n replicateVideoModelOptionsSchema,\n type ReplicateVideoModelOptions,\n} from './replicate-video-model-options';\nimport type { ReplicateVideoModelId } from './replicate-video-settings';\n\ninterface ReplicateVideoModelConfig {\n provider: string;\n baseURL: string;\n headers?: Resolvable<Record<string, string | undefined>>;\n fetch?: FetchFunction;\n _internal?: {\n currentDate?: () => Date;\n };\n}\n\nexport class ReplicateVideoModel implements Experimental_VideoModelV4 {\n readonly specificationVersion = 'v4';\n readonly maxVideosPerCall = 1; // Replicate video models support 1 video at a time\n\n get provider(): string {\n return this.config.provider;\n }\n\n constructor(\n readonly modelId: ReplicateVideoModelId,\n private readonly config: ReplicateVideoModelConfig,\n ) {}\n\n async doGenerate(\n options: Parameters<Experimental_VideoModelV4['doGenerate']>[0],\n ): Promise<Awaited<ReturnType<Experimental_VideoModelV4['doGenerate']>>> {\n const currentDate = this.config._internal?.currentDate?.() ?? new Date();\n const warnings: SharedV4Warning[] = [];\n\n const replicateOptions = (await parseProviderOptions({\n provider: 'replicate',\n providerOptions: options.providerOptions,\n schema: replicateVideoModelOptionsSchema,\n })) as ReplicateVideoModelOptions | undefined;\n\n const [modelId, version] = this.modelId.split(':');\n const input: Record<string, unknown> = {};\n\n if (options.prompt != null) {\n input.prompt = options.prompt;\n }\n\n if (options.image != null) {\n if (options.image.type === 'url') {\n input.image = options.image.url;\n } else {\n input.image = convertImageModelFileToDataUri(options.image);\n }\n }\n\n if (options.aspectRatio) {\n input.aspect_ratio = options.aspectRatio;\n }\n\n if (options.resolution) {\n input.size = options.resolution;\n }\n\n if (options.duration) {\n input.duration = options.duration;\n }\n\n if (options.fps) {\n input.fps = options.fps;\n }\n\n if (options.seed) {\n input.seed = options.seed;\n }\n\n if (replicateOptions != null) {\n const opts = replicateOptions;\n if (opts.guidance_scale !== undefined && opts.guidance_scale !== null) {\n input.guidance_scale = opts.guidance_scale;\n }\n if (\n opts.num_inference_steps !== undefined &&\n opts.num_inference_steps !== null\n ) {\n input.num_inference_steps = opts.num_inference_steps;\n }\n if (\n opts.motion_bucket_id !== undefined &&\n opts.motion_bucket_id !== null\n ) {\n input.motion_bucket_id = opts.motion_bucket_id;\n }\n if (opts.cond_aug !== undefined && opts.cond_aug !== null) {\n input.cond_aug = opts.cond_aug;\n }\n if (opts.decoding_t !== undefined && opts.decoding_t !== null) {\n input.decoding_t = opts.decoding_t;\n }\n if (opts.video_length !== undefined && opts.video_length !== null) {\n input.video_length = opts.video_length;\n }\n if (opts.sizing_strategy !== undefined && opts.sizing_strategy !== null) {\n input.sizing_strategy = opts.sizing_strategy;\n }\n if (\n opts.frames_per_second !== undefined &&\n opts.frames_per_second !== null\n ) {\n input.frames_per_second = opts.frames_per_second;\n }\n if (\n opts.prompt_optimizer !== undefined &&\n opts.prompt_optimizer !== null\n ) {\n input.prompt_optimizer = opts.prompt_optimizer;\n }\n\n for (const [key, value] of Object.entries(opts)) {\n if (\n ![\n 'pollIntervalMs',\n 'pollTimeoutMs',\n 'maxWaitTimeInSeconds',\n 'guidance_scale',\n 'num_inference_steps',\n 'motion_bucket_id',\n 'cond_aug',\n 'decoding_t',\n 'video_length',\n 'sizing_strategy',\n 'frames_per_second',\n 'prompt_optimizer',\n ].includes(key)\n ) {\n input[key] = value;\n }\n }\n }\n\n const maxWaitTimeInSeconds = replicateOptions?.maxWaitTimeInSeconds;\n const preferHeader: Record<string, string> =\n maxWaitTimeInSeconds != null\n ? { prefer: `wait=${maxWaitTimeInSeconds}` }\n : { prefer: 'wait' };\n\n const predictionUrl =\n version != null\n ? `${this.config.baseURL}/predictions`\n : `${this.config.baseURL}/models/${modelId}/predictions`;\n\n const { value: prediction, responseHeaders } = await postJsonToApi({\n url: predictionUrl,\n headers: combineHeaders(\n await resolve(this.config.headers),\n options.headers,\n preferHeader,\n ),\n body: {\n input,\n ...(version != null ? { version } : {}),\n },\n successfulResponseHandler: createJsonResponseHandler(\n replicatePredictionSchema,\n ),\n failedResponseHandler: replicateFailedResponseHandler,\n abortSignal: options.abortSignal,\n fetch: this.config.fetch,\n });\n\n let finalPrediction = prediction;\n if (\n prediction.status === 'starting' ||\n prediction.status === 'processing'\n ) {\n const pollIntervalMs = replicateOptions?.pollIntervalMs ?? 2000; // 2 seconds\n const pollTimeoutMs = replicateOptions?.pollTimeoutMs ?? 300000; // 5 minutes\n\n const startTime = Date.now();\n\n while (\n finalPrediction.status === 'starting' ||\n finalPrediction.status === 'processing'\n ) {\n if (Date.now() - startTime > pollTimeoutMs) {\n throw new AISDKError({\n name: 'REPLICATE_VIDEO_GENERATION_TIMEOUT',\n message: `Video generation timed out after ${pollTimeoutMs}ms`,\n });\n }\n\n await delay(pollIntervalMs);\n\n if (options.abortSignal?.aborted) {\n throw new AISDKError({\n name: 'REPLICATE_VIDEO_GENERATION_ABORTED',\n message: 'Video generation request was aborted',\n });\n }\n\n const pollUrl = finalPrediction.urls.get;\n const { value: statusPrediction } = await getFromApi({\n url: pollUrl,\n // The polling URL comes from the provider response; only send\n // credentials when it stays on the provider's own origin.\n headers: isSameOrigin(pollUrl, this.config.baseURL)\n ? await resolve(this.config.headers)\n : undefined,\n successfulResponseHandler: createJsonResponseHandler(\n replicatePredictionSchema,\n ),\n failedResponseHandler: replicateFailedResponseHandler,\n abortSignal: options.abortSignal,\n fetch: this.config.fetch,\n });\n\n finalPrediction = statusPrediction;\n }\n }\n\n if (finalPrediction.status === 'failed') {\n throw new AISDKError({\n name: 'REPLICATE_VIDEO_GENERATION_FAILED',\n message: `Video generation failed: ${finalPrediction.error ?? 'Unknown error'}`,\n });\n }\n\n if (finalPrediction.status === 'canceled') {\n throw new AISDKError({\n name: 'REPLICATE_VIDEO_GENERATION_CANCELED',\n message: 'Video generation was canceled',\n });\n }\n\n const videoUrl = finalPrediction.output;\n if (!videoUrl) {\n throw new AISDKError({\n name: 'REPLICATE_VIDEO_GENERATION_ERROR',\n message: 'No video URL in response',\n });\n }\n\n return {\n videos: [\n {\n type: 'url',\n url: videoUrl,\n mediaType: 'video/mp4',\n },\n ],\n warnings,\n response: {\n timestamp: currentDate,\n modelId: this.modelId,\n headers: responseHeaders,\n },\n providerMetadata: {\n replicate: {\n videos: [\n {\n url: videoUrl,\n },\n ],\n predictionId: finalPrediction.id,\n metrics: finalPrediction.metrics,\n },\n },\n };\n }\n}\n\nconst replicatePredictionSchema = z.object({\n id: z.string(),\n status: z.enum(['starting', 'processing', 'succeeded', 'failed', 'canceled']),\n output: z.string().nullish(),\n error: z.string().nullish(),\n urls: z.object({\n get: z.string(),\n }),\n metrics: z\n .object({\n predict_time: z.number().nullish(),\n })\n .nullish(),\n});\n","import { lazySchema, zodSchema } from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\nexport type ReplicateVideoModelOptions = {\n // Polling configuration\n pollIntervalMs?: number | null;\n pollTimeoutMs?: number | null;\n maxWaitTimeInSeconds?: number | null;\n\n // Common video generation options\n guidance_scale?: number | null;\n num_inference_steps?: number | null;\n\n // Stable Video Diffusion specific\n motion_bucket_id?: number | null;\n cond_aug?: number | null;\n decoding_t?: number | null;\n video_length?: string | null;\n sizing_strategy?: string | null;\n frames_per_second?: number | null;\n\n // MiniMax specific\n prompt_optimizer?: boolean | null;\n\n [key: string]: unknown; // For passthrough\n};\n\nexport const replicateVideoModelOptionsSchema = lazySchema(() =>\n zodSchema(\n z\n .object({\n pollIntervalMs: z.number().positive().nullish(),\n pollTimeoutMs: z.number().positive().nullish(),\n maxWaitTimeInSeconds: z.number().positive().nullish(),\n guidance_scale: z.number().nullish(),\n num_inference_steps: z.number().nullish(),\n motion_bucket_id: z.number().nullish(),\n cond_aug: z.number().nullish(),\n decoding_t: z.number().nullish(),\n video_length: z.string().nullish(),\n sizing_strategy: z.string().nullish(),\n frames_per_second: z.number().nullish(),\n prompt_optimizer: z.boolean().nullish(),\n })\n .loose(),\n ),\n);\n","// Version string of this package injected at build time.\ndeclare const __PACKAGE_VERSION__: string | undefined;\nexport const VERSION: string =\n typeof __PACKAGE_VERSION__ !== 'undefined'\n ? __PACKAGE_VERSION__\n : '0.0.0-test';\n"],"mappings":"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","names":["z","z","z","combineHeaders","convertImageModelFileToDataUri","createJsonResponseHandler","getFromApi","parseProviderOptions","postJsonToApi","resolve","z","lazySchema","zodSchema","z","parseProviderOptions","convertImageModelFileToDataUri","postJsonToApi","combineHeaders","resolve","createJsonResponseHandler","getFromApi","z"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ai-sdk/replicate",
|
|
3
|
-
"version": "3.0.0-canary.
|
|
3
|
+
"version": "3.0.0-canary.50",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"sideEffects": false,
|
|
@@ -30,7 +30,7 @@
|
|
|
30
30
|
},
|
|
31
31
|
"dependencies": {
|
|
32
32
|
"@ai-sdk/provider": "4.0.0-canary.18",
|
|
33
|
-
"@ai-sdk/provider-utils": "5.0.0-canary.
|
|
33
|
+
"@ai-sdk/provider-utils": "5.0.0-canary.48"
|
|
34
34
|
},
|
|
35
35
|
"devDependencies": {
|
|
36
36
|
"@types/node": "22.19.19",
|
|
@@ -9,6 +9,7 @@ import {
|
|
|
9
9
|
createJsonResponseHandler,
|
|
10
10
|
delay,
|
|
11
11
|
getFromApi,
|
|
12
|
+
isSameOrigin,
|
|
12
13
|
parseProviderOptions,
|
|
13
14
|
postJsonToApi,
|
|
14
15
|
resolve,
|
|
@@ -217,9 +218,14 @@ export class ReplicateVideoModel implements Experimental_VideoModelV4 {
|
|
|
217
218
|
});
|
|
218
219
|
}
|
|
219
220
|
|
|
221
|
+
const pollUrl = finalPrediction.urls.get;
|
|
220
222
|
const { value: statusPrediction } = await getFromApi({
|
|
221
|
-
url:
|
|
222
|
-
|
|
223
|
+
url: pollUrl,
|
|
224
|
+
// The polling URL comes from the provider response; only send
|
|
225
|
+
// credentials when it stays on the provider's own origin.
|
|
226
|
+
headers: isSameOrigin(pollUrl, this.config.baseURL)
|
|
227
|
+
? await resolve(this.config.headers)
|
|
228
|
+
: undefined,
|
|
223
229
|
successfulResponseHandler: createJsonResponseHandler(
|
|
224
230
|
replicatePredictionSchema,
|
|
225
231
|
),
|