{"version":3,"sources":["../src/replicate-provider.ts","../src/replicate-image-model.ts","../src/replicate-error.ts","../src/replicate-video-model.ts","../src/version.ts"],"sourcesContent":["import {\n  NoSuchModelError,\n  type Experimental_VideoModelV3,\n  type ProviderV3,\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 ProviderV3 {\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_VideoModelV3;\n\n  /**\n   * Creates a Replicate video generation model.\n   */\n  videoModel(modelId: ReplicateVideoModelId): Experimental_VideoModelV3;\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: 'v3' 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 { ImageModelV3, SharedV3Warning } from '@ai-sdk/provider';\nimport {\n  combineHeaders,\n  convertImageModelFileToDataUri,\n  createBinaryResponseHandler,\n  createJsonResponseHandler,\n  getFromApi,\n  lazySchema,\n  parseProviderOptions,\n  postJsonToApi,\n  resolve,\n  zodSchema,\n  type Resolvable,\n  type FetchFunction,\n  type InferSchema,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\nimport { replicateFailedResponseHandler } from './replicate-error';\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 ImageModelV3 {\n  readonly specificationVersion = 'v3';\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  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<ImageModelV3['doGenerate']>[0]): Promise<\n    Awaited<ReturnType<ImageModelV3['doGenerate']>>\n  > {\n    const warnings: Array<SharedV3Warning> = [];\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        await resolve(this.config.headers),\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\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 { 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  AISDKError,\n  type Experimental_VideoModelV3,\n  type SharedV3Warning,\n} from '@ai-sdk/provider';\nimport {\n  combineHeaders,\n  convertImageModelFileToDataUri,\n  createJsonResponseHandler,\n  delay,\n  type FetchFunction,\n  getFromApi,\n  isSameOrigin,\n  lazySchema,\n  parseProviderOptions,\n  postJsonToApi,\n  type Resolvable,\n  resolve,\n  zodSchema,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\nimport { replicateFailedResponseHandler } from './replicate-error';\nimport type { ReplicateVideoModelId } from './replicate-video-settings';\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\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_VideoModelV3 {\n  readonly specificationVersion = 'v3';\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_VideoModelV3['doGenerate']>[0],\n  ): Promise<Awaited<ReturnType<Experimental_VideoModelV3['doGenerate']>>> {\n    const currentDate = this.config._internal?.currentDate?.() ?? new Date();\n    const warnings: SharedV3Warning[] = [];\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\nconst 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","combineHeaders","convertImageModelFileToDataUri","createJsonResponseHandler","getFromApi","lazySchema","parseProviderOptions","postJsonToApi","resolve","zodSchema","z","parseProviderOptions","convertImageModelFileToDataUri","postJsonToApi","combineHeaders","resolve","createJsonResponseHandler","getFromApi","z","lazySchema","zodSchema"]}