@ai-sdk/replicate 3.0.0-beta.1 → 3.0.0-beta.11
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 +82 -8
- package/README.md +2 -0
- package/dist/index.d.mts +7 -7
- package/dist/index.d.ts +7 -7
- package/dist/index.js +7 -7
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +4 -4
- package/dist/index.mjs.map +1 -1
- package/package.json +3 -5
- package/src/replicate-image-model.ts +6 -6
- package/src/replicate-provider.ts +6 -6
- package/src/replicate-video-model.ts +7 -7
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,79 @@
|
|
|
1
1
|
# @ai-sdk/replicate
|
|
2
2
|
|
|
3
|
+
## 3.0.0-beta.11
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- 38fc777: Add AI Gateway hint to provider READMEs
|
|
8
|
+
|
|
9
|
+
## 3.0.0-beta.10
|
|
10
|
+
|
|
11
|
+
### Patch Changes
|
|
12
|
+
|
|
13
|
+
- Updated dependencies [2e17091]
|
|
14
|
+
- @ai-sdk/provider-utils@5.0.0-beta.9
|
|
15
|
+
|
|
16
|
+
## 3.0.0-beta.9
|
|
17
|
+
|
|
18
|
+
### Patch Changes
|
|
19
|
+
|
|
20
|
+
- Updated dependencies [986c6fd]
|
|
21
|
+
- Updated dependencies [493295c]
|
|
22
|
+
- @ai-sdk/provider-utils@5.0.0-beta.8
|
|
23
|
+
|
|
24
|
+
## 3.0.0-beta.8
|
|
25
|
+
|
|
26
|
+
### Patch Changes
|
|
27
|
+
|
|
28
|
+
- Updated dependencies [1f509d4]
|
|
29
|
+
- @ai-sdk/provider-utils@5.0.0-beta.7
|
|
30
|
+
- @ai-sdk/provider@4.0.0-beta.5
|
|
31
|
+
|
|
32
|
+
## 3.0.0-beta.7
|
|
33
|
+
|
|
34
|
+
### Patch Changes
|
|
35
|
+
|
|
36
|
+
- Updated dependencies [3887c70]
|
|
37
|
+
- @ai-sdk/provider-utils@5.0.0-beta.6
|
|
38
|
+
- @ai-sdk/provider@4.0.0-beta.4
|
|
39
|
+
|
|
40
|
+
## 3.0.0-beta.6
|
|
41
|
+
|
|
42
|
+
### Patch Changes
|
|
43
|
+
|
|
44
|
+
- Updated dependencies [776b617]
|
|
45
|
+
- @ai-sdk/provider-utils@5.0.0-beta.5
|
|
46
|
+
- @ai-sdk/provider@4.0.0-beta.3
|
|
47
|
+
|
|
48
|
+
## 3.0.0-beta.5
|
|
49
|
+
|
|
50
|
+
### Patch Changes
|
|
51
|
+
|
|
52
|
+
- Updated dependencies [61753c3]
|
|
53
|
+
- @ai-sdk/provider-utils@5.0.0-beta.4
|
|
54
|
+
|
|
55
|
+
## 3.0.0-beta.4
|
|
56
|
+
|
|
57
|
+
### Patch Changes
|
|
58
|
+
|
|
59
|
+
- Updated dependencies [f7d4f01]
|
|
60
|
+
- @ai-sdk/provider-utils@5.0.0-beta.3
|
|
61
|
+
- @ai-sdk/provider@4.0.0-beta.2
|
|
62
|
+
|
|
63
|
+
## 3.0.0-beta.3
|
|
64
|
+
|
|
65
|
+
### Patch Changes
|
|
66
|
+
|
|
67
|
+
- Updated dependencies [5c2a5a2]
|
|
68
|
+
- @ai-sdk/provider@4.0.0-beta.1
|
|
69
|
+
- @ai-sdk/provider-utils@5.0.0-beta.2
|
|
70
|
+
|
|
71
|
+
## 3.0.0-beta.2
|
|
72
|
+
|
|
73
|
+
### Patch Changes
|
|
74
|
+
|
|
75
|
+
- c434fd2: chore(provider/replicate): update provider to use v4 types
|
|
76
|
+
|
|
3
77
|
## 3.0.0-beta.1
|
|
4
78
|
|
|
5
79
|
### Patch Changes
|
|
@@ -212,13 +286,13 @@
|
|
|
212
286
|
Before
|
|
213
287
|
|
|
214
288
|
```ts
|
|
215
|
-
model.textEmbeddingModel(
|
|
289
|
+
model.textEmbeddingModel("my-model-id");
|
|
216
290
|
```
|
|
217
291
|
|
|
218
292
|
After
|
|
219
293
|
|
|
220
294
|
```ts
|
|
221
|
-
model.embeddingModel(
|
|
295
|
+
model.embeddingModel("my-model-id");
|
|
222
296
|
```
|
|
223
297
|
|
|
224
298
|
- 95f65c2: chore: use import \* from zod/v4
|
|
@@ -442,13 +516,13 @@
|
|
|
442
516
|
Before
|
|
443
517
|
|
|
444
518
|
```ts
|
|
445
|
-
model.textEmbeddingModel(
|
|
519
|
+
model.textEmbeddingModel("my-model-id");
|
|
446
520
|
```
|
|
447
521
|
|
|
448
522
|
After
|
|
449
523
|
|
|
450
524
|
```ts
|
|
451
|
-
model.embeddingModel(
|
|
525
|
+
model.embeddingModel("my-model-id");
|
|
452
526
|
```
|
|
453
527
|
|
|
454
528
|
- Updated dependencies [8d9e8ad]
|
|
@@ -818,7 +892,7 @@
|
|
|
818
892
|
|
|
819
893
|
```js
|
|
820
894
|
await generateImage({
|
|
821
|
-
model: luma.image(
|
|
895
|
+
model: luma.image("photon-flash-1", {
|
|
822
896
|
maxImagesPerCall: 5,
|
|
823
897
|
pollIntervalMillis: 500,
|
|
824
898
|
}),
|
|
@@ -831,7 +905,7 @@
|
|
|
831
905
|
|
|
832
906
|
```js
|
|
833
907
|
await generateImage({
|
|
834
|
-
model: luma.image(
|
|
908
|
+
model: luma.image("photon-flash-1"),
|
|
835
909
|
prompt,
|
|
836
910
|
n: 10,
|
|
837
911
|
maxImagesPerCall: 5,
|
|
@@ -1067,7 +1141,7 @@
|
|
|
1067
1141
|
|
|
1068
1142
|
```js
|
|
1069
1143
|
await generateImage({
|
|
1070
|
-
model: luma.image(
|
|
1144
|
+
model: luma.image("photon-flash-1", {
|
|
1071
1145
|
maxImagesPerCall: 5,
|
|
1072
1146
|
pollIntervalMillis: 500,
|
|
1073
1147
|
}),
|
|
@@ -1080,7 +1154,7 @@
|
|
|
1080
1154
|
|
|
1081
1155
|
```js
|
|
1082
1156
|
await generateImage({
|
|
1083
|
-
model: luma.image(
|
|
1157
|
+
model: luma.image("photon-flash-1"),
|
|
1084
1158
|
prompt,
|
|
1085
1159
|
n: 10,
|
|
1086
1160
|
maxImagesPerCall: 5,
|
package/README.md
CHANGED
|
@@ -2,6 +2,8 @@
|
|
|
2
2
|
|
|
3
3
|
The **[Replicate provider](https://ai-sdk.dev/providers/ai-sdk-providers/replicate)** for the [AI SDK](https://ai-sdk.dev/docs) contains image model support for the Replicate API.
|
|
4
4
|
|
|
5
|
+
> **Deploying to Vercel?** With Vercel's AI Gateway you can access Replicate (and hundreds of models from other providers) — no additional packages, API keys, or extra cost. [Get started with AI Gateway](https://vercel.com/ai-gateway).
|
|
6
|
+
|
|
5
7
|
## Setup
|
|
6
8
|
|
|
7
9
|
The Replicate provider is available in the `@ai-sdk/replicate` module. You can install it with
|
package/dist/index.d.mts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { ImageModelV4, ProviderV4, Experimental_VideoModelV4 } from '@ai-sdk/provider';
|
|
2
2
|
import * as _ai_sdk_provider_utils from '@ai-sdk/provider-utils';
|
|
3
3
|
import { Resolvable, FetchFunction, InferSchema } from '@ai-sdk/provider-utils';
|
|
4
4
|
|
|
@@ -13,15 +13,15 @@ interface ReplicateImageModelConfig {
|
|
|
13
13
|
currentDate?: () => Date;
|
|
14
14
|
};
|
|
15
15
|
}
|
|
16
|
-
declare class ReplicateImageModel implements
|
|
16
|
+
declare class ReplicateImageModel implements ImageModelV4 {
|
|
17
17
|
readonly modelId: ReplicateImageModelId;
|
|
18
18
|
private readonly config;
|
|
19
|
-
readonly specificationVersion = "
|
|
19
|
+
readonly specificationVersion = "v4";
|
|
20
20
|
get maxImagesPerCall(): number;
|
|
21
21
|
get provider(): string;
|
|
22
22
|
private get isFlux2Model();
|
|
23
23
|
constructor(modelId: ReplicateImageModelId, config: ReplicateImageModelConfig);
|
|
24
|
-
doGenerate({ prompt, n, aspectRatio, size, seed, providerOptions, headers, abortSignal, files, mask, }: Parameters<
|
|
24
|
+
doGenerate({ prompt, n, aspectRatio, size, seed, providerOptions, headers, abortSignal, files, mask, }: Parameters<ImageModelV4['doGenerate']>[0]): Promise<Awaited<ReturnType<ImageModelV4['doGenerate']>>>;
|
|
25
25
|
}
|
|
26
26
|
/**
|
|
27
27
|
* Provider options schema for Replicate image generation.
|
|
@@ -65,7 +65,7 @@ interface ReplicateProviderSettings {
|
|
|
65
65
|
*/
|
|
66
66
|
fetch?: FetchFunction;
|
|
67
67
|
}
|
|
68
|
-
interface ReplicateProvider extends
|
|
68
|
+
interface ReplicateProvider extends ProviderV4 {
|
|
69
69
|
/**
|
|
70
70
|
* Creates a Replicate image generation model.
|
|
71
71
|
*/
|
|
@@ -81,11 +81,11 @@ interface ReplicateProvider extends ProviderV3 {
|
|
|
81
81
|
/**
|
|
82
82
|
* Creates a Replicate video generation model.
|
|
83
83
|
*/
|
|
84
|
-
video(modelId: ReplicateVideoModelId):
|
|
84
|
+
video(modelId: ReplicateVideoModelId): Experimental_VideoModelV4;
|
|
85
85
|
/**
|
|
86
86
|
* Creates a Replicate video generation model.
|
|
87
87
|
*/
|
|
88
|
-
videoModel(modelId: ReplicateVideoModelId):
|
|
88
|
+
videoModel(modelId: ReplicateVideoModelId): Experimental_VideoModelV4;
|
|
89
89
|
}
|
|
90
90
|
/**
|
|
91
91
|
* Create a Replicate provider instance.
|
package/dist/index.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { ImageModelV4, ProviderV4, Experimental_VideoModelV4 } from '@ai-sdk/provider';
|
|
2
2
|
import * as _ai_sdk_provider_utils from '@ai-sdk/provider-utils';
|
|
3
3
|
import { Resolvable, FetchFunction, InferSchema } from '@ai-sdk/provider-utils';
|
|
4
4
|
|
|
@@ -13,15 +13,15 @@ interface ReplicateImageModelConfig {
|
|
|
13
13
|
currentDate?: () => Date;
|
|
14
14
|
};
|
|
15
15
|
}
|
|
16
|
-
declare class ReplicateImageModel implements
|
|
16
|
+
declare class ReplicateImageModel implements ImageModelV4 {
|
|
17
17
|
readonly modelId: ReplicateImageModelId;
|
|
18
18
|
private readonly config;
|
|
19
|
-
readonly specificationVersion = "
|
|
19
|
+
readonly specificationVersion = "v4";
|
|
20
20
|
get maxImagesPerCall(): number;
|
|
21
21
|
get provider(): string;
|
|
22
22
|
private get isFlux2Model();
|
|
23
23
|
constructor(modelId: ReplicateImageModelId, config: ReplicateImageModelConfig);
|
|
24
|
-
doGenerate({ prompt, n, aspectRatio, size, seed, providerOptions, headers, abortSignal, files, mask, }: Parameters<
|
|
24
|
+
doGenerate({ prompt, n, aspectRatio, size, seed, providerOptions, headers, abortSignal, files, mask, }: Parameters<ImageModelV4['doGenerate']>[0]): Promise<Awaited<ReturnType<ImageModelV4['doGenerate']>>>;
|
|
25
25
|
}
|
|
26
26
|
/**
|
|
27
27
|
* Provider options schema for Replicate image generation.
|
|
@@ -65,7 +65,7 @@ interface ReplicateProviderSettings {
|
|
|
65
65
|
*/
|
|
66
66
|
fetch?: FetchFunction;
|
|
67
67
|
}
|
|
68
|
-
interface ReplicateProvider extends
|
|
68
|
+
interface ReplicateProvider extends ProviderV4 {
|
|
69
69
|
/**
|
|
70
70
|
* Creates a Replicate image generation model.
|
|
71
71
|
*/
|
|
@@ -81,11 +81,11 @@ interface ReplicateProvider extends ProviderV3 {
|
|
|
81
81
|
/**
|
|
82
82
|
* Creates a Replicate video generation model.
|
|
83
83
|
*/
|
|
84
|
-
video(modelId: ReplicateVideoModelId):
|
|
84
|
+
video(modelId: ReplicateVideoModelId): Experimental_VideoModelV4;
|
|
85
85
|
/**
|
|
86
86
|
* Creates a Replicate video generation model.
|
|
87
87
|
*/
|
|
88
|
-
videoModel(modelId: ReplicateVideoModelId):
|
|
88
|
+
videoModel(modelId: ReplicateVideoModelId): Experimental_VideoModelV4;
|
|
89
89
|
}
|
|
90
90
|
/**
|
|
91
91
|
* Create a Replicate provider instance.
|
package/dist/index.js
CHANGED
|
@@ -18,13 +18,13 @@ var __copyProps = (to, from, except, desc) => {
|
|
|
18
18
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
19
|
|
|
20
20
|
// src/index.ts
|
|
21
|
-
var
|
|
22
|
-
__export(
|
|
21
|
+
var index_exports = {};
|
|
22
|
+
__export(index_exports, {
|
|
23
23
|
VERSION: () => VERSION,
|
|
24
24
|
createReplicate: () => createReplicate,
|
|
25
25
|
replicate: () => replicate
|
|
26
26
|
});
|
|
27
|
-
module.exports = __toCommonJS(
|
|
27
|
+
module.exports = __toCommonJS(index_exports);
|
|
28
28
|
|
|
29
29
|
// src/replicate-provider.ts
|
|
30
30
|
var import_provider2 = require("@ai-sdk/provider");
|
|
@@ -56,7 +56,7 @@ var ReplicateImageModel = class {
|
|
|
56
56
|
constructor(modelId, config) {
|
|
57
57
|
this.modelId = modelId;
|
|
58
58
|
this.config = config;
|
|
59
|
-
this.specificationVersion = "
|
|
59
|
+
this.specificationVersion = "v4";
|
|
60
60
|
}
|
|
61
61
|
get maxImagesPerCall() {
|
|
62
62
|
return this.isFlux2Model ? MAX_FLUX_2_INPUT_IMAGES : 1;
|
|
@@ -234,7 +234,7 @@ var ReplicateVideoModel = class {
|
|
|
234
234
|
constructor(modelId, config) {
|
|
235
235
|
this.modelId = modelId;
|
|
236
236
|
this.config = config;
|
|
237
|
-
this.specificationVersion = "
|
|
237
|
+
this.specificationVersion = "v4";
|
|
238
238
|
this.maxVideosPerCall = 1;
|
|
239
239
|
}
|
|
240
240
|
// Replicate video models support 1 video at a time
|
|
@@ -457,7 +457,7 @@ var replicateVideoModelOptionsSchema = (0, import_provider_utils3.lazySchema)(
|
|
|
457
457
|
);
|
|
458
458
|
|
|
459
459
|
// src/version.ts
|
|
460
|
-
var VERSION = true ? "3.0.0-beta.
|
|
460
|
+
var VERSION = true ? "3.0.0-beta.11" : "0.0.0-test";
|
|
461
461
|
|
|
462
462
|
// src/replicate-provider.ts
|
|
463
463
|
function createReplicate(options = {}) {
|
|
@@ -497,7 +497,7 @@ function createReplicate(options = {}) {
|
|
|
497
497
|
});
|
|
498
498
|
};
|
|
499
499
|
return {
|
|
500
|
-
specificationVersion: "
|
|
500
|
+
specificationVersion: "v4",
|
|
501
501
|
image: createImageModel,
|
|
502
502
|
imageModel: createImageModel,
|
|
503
503
|
languageModel: (modelId) => {
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.ts","../src/replicate-provider.ts","../src/replicate-image-model.ts","../src/replicate-error.ts","../src/replicate-video-model.ts","../src/version.ts"],"sourcesContent":["export { createReplicate, replicate } from './replicate-provider';\nexport type {\n ReplicateProvider,\n ReplicateProviderSettings,\n} from './replicate-provider';\nexport type {\n ReplicateImageModelOptions,\n /** @deprecated Use `ReplicateImageModelOptions` instead. */\n ReplicateImageModelOptions as ReplicateImageProviderOptions,\n} from './replicate-image-model';\nexport type {\n ReplicateVideoModelOptions,\n /** @deprecated Use `ReplicateVideoModelOptions` instead. */\n ReplicateVideoModelOptions as ReplicateVideoProviderOptions,\n} from './replicate-video-model';\nexport type { ReplicateVideoModelId } from './replicate-video-settings';\nexport { VERSION } from './version';\n","import {\n Experimental_VideoModelV3,\n NoSuchModelError,\n ProviderV3,\n} from '@ai-sdk/provider';\nimport type { FetchFunction } from '@ai-sdk/provider-utils';\nimport { loadApiKey, withUserAgentSuffix } from '@ai-sdk/provider-utils';\nimport { ReplicateImageModel } from './replicate-image-model';\nimport { ReplicateImageModelId } from './replicate-image-settings';\nimport { ReplicateVideoModel } from './replicate-video-model';\nimport { 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 type { Resolvable } from '@ai-sdk/provider-utils';\nimport {\n combineHeaders,\n convertImageModelFileToDataUri,\n createBinaryResponseHandler,\n createJsonResponseHandler,\n FetchFunction,\n getFromApi,\n InferSchema,\n lazySchema,\n parseProviderOptions,\n postJsonToApi,\n resolve,\n zodSchema,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\nimport { replicateFailedResponseHandler } from './replicate-error';\nimport { 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 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 { 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\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":["import_provider","import_provider_utils","import_provider_utils","import_v4","import_provider_utils","import_v4"]}
|
|
1
|
+
{"version":3,"sources":["../src/index.ts","../src/replicate-provider.ts","../src/replicate-image-model.ts","../src/replicate-error.ts","../src/replicate-video-model.ts","../src/version.ts"],"sourcesContent":["export { createReplicate, replicate } from './replicate-provider';\nexport type {\n ReplicateProvider,\n ReplicateProviderSettings,\n} from './replicate-provider';\nexport type {\n ReplicateImageModelOptions,\n /** @deprecated Use `ReplicateImageModelOptions` instead. */\n ReplicateImageModelOptions as ReplicateImageProviderOptions,\n} from './replicate-image-model';\nexport type {\n ReplicateVideoModelOptions,\n /** @deprecated Use `ReplicateVideoModelOptions` instead. */\n ReplicateVideoModelOptions as ReplicateVideoProviderOptions,\n} from './replicate-video-model';\nexport type { ReplicateVideoModelId } from './replicate-video-settings';\nexport { VERSION } from './version';\n","import {\n Experimental_VideoModelV4,\n NoSuchModelError,\n ProviderV4,\n} from '@ai-sdk/provider';\nimport type { FetchFunction } from '@ai-sdk/provider-utils';\nimport { loadApiKey, withUserAgentSuffix } from '@ai-sdk/provider-utils';\nimport { ReplicateImageModel } from './replicate-image-model';\nimport { ReplicateImageModelId } from './replicate-image-settings';\nimport { ReplicateVideoModel } from './replicate-video-model';\nimport { 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 type { Resolvable } from '@ai-sdk/provider-utils';\nimport {\n combineHeaders,\n convertImageModelFileToDataUri,\n createBinaryResponseHandler,\n createJsonResponseHandler,\n FetchFunction,\n getFromApi,\n InferSchema,\n lazySchema,\n parseProviderOptions,\n postJsonToApi,\n resolve,\n zodSchema,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\nimport { replicateFailedResponseHandler } from './replicate-error';\nimport { 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 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 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_VideoModelV4,\n type SharedV4Warning,\n} from '@ai-sdk/provider';\nimport {\n combineHeaders,\n convertImageModelFileToDataUri,\n createJsonResponseHandler,\n delay,\n type FetchFunction,\n getFromApi,\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_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\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":["import_provider","import_provider_utils","import_provider_utils","import_v4","import_provider_utils","import_v4"]}
|
package/dist/index.mjs
CHANGED
|
@@ -41,7 +41,7 @@ var ReplicateImageModel = class {
|
|
|
41
41
|
constructor(modelId, config) {
|
|
42
42
|
this.modelId = modelId;
|
|
43
43
|
this.config = config;
|
|
44
|
-
this.specificationVersion = "
|
|
44
|
+
this.specificationVersion = "v4";
|
|
45
45
|
}
|
|
46
46
|
get maxImagesPerCall() {
|
|
47
47
|
return this.isFlux2Model ? MAX_FLUX_2_INPUT_IMAGES : 1;
|
|
@@ -232,7 +232,7 @@ var ReplicateVideoModel = class {
|
|
|
232
232
|
constructor(modelId, config) {
|
|
233
233
|
this.modelId = modelId;
|
|
234
234
|
this.config = config;
|
|
235
|
-
this.specificationVersion = "
|
|
235
|
+
this.specificationVersion = "v4";
|
|
236
236
|
this.maxVideosPerCall = 1;
|
|
237
237
|
}
|
|
238
238
|
// Replicate video models support 1 video at a time
|
|
@@ -455,7 +455,7 @@ var replicateVideoModelOptionsSchema = lazySchema2(
|
|
|
455
455
|
);
|
|
456
456
|
|
|
457
457
|
// src/version.ts
|
|
458
|
-
var VERSION = true ? "3.0.0-beta.
|
|
458
|
+
var VERSION = true ? "3.0.0-beta.11" : "0.0.0-test";
|
|
459
459
|
|
|
460
460
|
// src/replicate-provider.ts
|
|
461
461
|
function createReplicate(options = {}) {
|
|
@@ -495,7 +495,7 @@ function createReplicate(options = {}) {
|
|
|
495
495
|
});
|
|
496
496
|
};
|
|
497
497
|
return {
|
|
498
|
-
specificationVersion: "
|
|
498
|
+
specificationVersion: "v4",
|
|
499
499
|
image: createImageModel,
|
|
500
500
|
imageModel: createImageModel,
|
|
501
501
|
languageModel: (modelId) => {
|
package/dist/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"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 Experimental_VideoModelV3,\n NoSuchModelError,\n ProviderV3,\n} from '@ai-sdk/provider';\nimport type { FetchFunction } from '@ai-sdk/provider-utils';\nimport { loadApiKey, withUserAgentSuffix } from '@ai-sdk/provider-utils';\nimport { ReplicateImageModel } from './replicate-image-model';\nimport { ReplicateImageModelId } from './replicate-image-settings';\nimport { ReplicateVideoModel } from './replicate-video-model';\nimport { 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 type { Resolvable } from '@ai-sdk/provider-utils';\nimport {\n combineHeaders,\n convertImageModelFileToDataUri,\n createBinaryResponseHandler,\n createJsonResponseHandler,\n FetchFunction,\n getFromApi,\n InferSchema,\n lazySchema,\n parseProviderOptions,\n postJsonToApi,\n resolve,\n zodSchema,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\nimport { replicateFailedResponseHandler } from './replicate-error';\nimport { 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 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 { 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\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"]}
|
|
1
|
+
{"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 Experimental_VideoModelV4,\n NoSuchModelError,\n ProviderV4,\n} from '@ai-sdk/provider';\nimport type { FetchFunction } from '@ai-sdk/provider-utils';\nimport { loadApiKey, withUserAgentSuffix } from '@ai-sdk/provider-utils';\nimport { ReplicateImageModel } from './replicate-image-model';\nimport { ReplicateImageModelId } from './replicate-image-settings';\nimport { ReplicateVideoModel } from './replicate-video-model';\nimport { 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 type { Resolvable } from '@ai-sdk/provider-utils';\nimport {\n combineHeaders,\n convertImageModelFileToDataUri,\n createBinaryResponseHandler,\n createJsonResponseHandler,\n FetchFunction,\n getFromApi,\n InferSchema,\n lazySchema,\n parseProviderOptions,\n postJsonToApi,\n resolve,\n zodSchema,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\nimport { replicateFailedResponseHandler } from './replicate-error';\nimport { 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 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 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_VideoModelV4,\n type SharedV4Warning,\n} from '@ai-sdk/provider';\nimport {\n combineHeaders,\n convertImageModelFileToDataUri,\n createJsonResponseHandler,\n delay,\n type FetchFunction,\n getFromApi,\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_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\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"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ai-sdk/replicate",
|
|
3
|
-
"version": "3.0.0-beta.
|
|
3
|
+
"version": "3.0.0-beta.11",
|
|
4
4
|
"license": "Apache-2.0",
|
|
5
5
|
"sideEffects": false,
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -29,8 +29,8 @@
|
|
|
29
29
|
}
|
|
30
30
|
},
|
|
31
31
|
"dependencies": {
|
|
32
|
-
"@ai-sdk/provider": "4.0.0-beta.
|
|
33
|
-
"@ai-sdk/provider-utils": "5.0.0-beta.
|
|
32
|
+
"@ai-sdk/provider": "4.0.0-beta.5",
|
|
33
|
+
"@ai-sdk/provider-utils": "5.0.0-beta.9"
|
|
34
34
|
},
|
|
35
35
|
"devDependencies": {
|
|
36
36
|
"@types/node": "20.17.24",
|
|
@@ -64,9 +64,7 @@
|
|
|
64
64
|
"build": "pnpm clean && tsup --tsconfig tsconfig.build.json",
|
|
65
65
|
"build:watch": "pnpm clean && tsup --watch",
|
|
66
66
|
"clean": "del-cli dist docs *.tsbuildinfo",
|
|
67
|
-
"lint": "eslint \"./**/*.ts*\"",
|
|
68
67
|
"type-check": "tsc --build",
|
|
69
|
-
"prettier-check": "prettier --check \"./**/*.ts*\"",
|
|
70
68
|
"test": "pnpm test:node && pnpm test:edge",
|
|
71
69
|
"test:update": "pnpm test:node -u",
|
|
72
70
|
"test:watch": "vitest --config vitest.node.config.js",
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { ImageModelV4, SharedV4Warning } from '@ai-sdk/provider';
|
|
2
2
|
import type { Resolvable } from '@ai-sdk/provider-utils';
|
|
3
3
|
import {
|
|
4
4
|
combineHeaders,
|
|
@@ -32,8 +32,8 @@ interface ReplicateImageModelConfig {
|
|
|
32
32
|
const FLUX_2_MODEL_PATTERN = /^black-forest-labs\/flux-2-/;
|
|
33
33
|
const MAX_FLUX_2_INPUT_IMAGES = 8;
|
|
34
34
|
|
|
35
|
-
export class ReplicateImageModel implements
|
|
36
|
-
readonly specificationVersion = '
|
|
35
|
+
export class ReplicateImageModel implements ImageModelV4 {
|
|
36
|
+
readonly specificationVersion = 'v4';
|
|
37
37
|
|
|
38
38
|
get maxImagesPerCall(): number {
|
|
39
39
|
// Flux-2 models support up to 8 input images
|
|
@@ -64,10 +64,10 @@ export class ReplicateImageModel implements ImageModelV3 {
|
|
|
64
64
|
abortSignal,
|
|
65
65
|
files,
|
|
66
66
|
mask,
|
|
67
|
-
}: Parameters<
|
|
68
|
-
Awaited<ReturnType<
|
|
67
|
+
}: Parameters<ImageModelV4['doGenerate']>[0]): Promise<
|
|
68
|
+
Awaited<ReturnType<ImageModelV4['doGenerate']>>
|
|
69
69
|
> {
|
|
70
|
-
const warnings: Array<
|
|
70
|
+
const warnings: Array<SharedV4Warning> = [];
|
|
71
71
|
|
|
72
72
|
const [modelId, version] = this.modelId.split(':');
|
|
73
73
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import {
|
|
2
|
-
|
|
2
|
+
Experimental_VideoModelV4,
|
|
3
3
|
NoSuchModelError,
|
|
4
|
-
|
|
4
|
+
ProviderV4,
|
|
5
5
|
} from '@ai-sdk/provider';
|
|
6
6
|
import type { FetchFunction } from '@ai-sdk/provider-utils';
|
|
7
7
|
import { loadApiKey, withUserAgentSuffix } from '@ai-sdk/provider-utils';
|
|
@@ -36,7 +36,7 @@ export interface ReplicateProviderSettings {
|
|
|
36
36
|
fetch?: FetchFunction;
|
|
37
37
|
}
|
|
38
38
|
|
|
39
|
-
export interface ReplicateProvider extends
|
|
39
|
+
export interface ReplicateProvider extends ProviderV4 {
|
|
40
40
|
/**
|
|
41
41
|
* Creates a Replicate image generation model.
|
|
42
42
|
*/
|
|
@@ -55,12 +55,12 @@ export interface ReplicateProvider extends ProviderV3 {
|
|
|
55
55
|
/**
|
|
56
56
|
* Creates a Replicate video generation model.
|
|
57
57
|
*/
|
|
58
|
-
video(modelId: ReplicateVideoModelId):
|
|
58
|
+
video(modelId: ReplicateVideoModelId): Experimental_VideoModelV4;
|
|
59
59
|
|
|
60
60
|
/**
|
|
61
61
|
* Creates a Replicate video generation model.
|
|
62
62
|
*/
|
|
63
|
-
videoModel(modelId: ReplicateVideoModelId):
|
|
63
|
+
videoModel(modelId: ReplicateVideoModelId): Experimental_VideoModelV4;
|
|
64
64
|
}
|
|
65
65
|
|
|
66
66
|
/**
|
|
@@ -106,7 +106,7 @@ export function createReplicate(
|
|
|
106
106
|
};
|
|
107
107
|
|
|
108
108
|
return {
|
|
109
|
-
specificationVersion: '
|
|
109
|
+
specificationVersion: 'v4' as const,
|
|
110
110
|
image: createImageModel,
|
|
111
111
|
imageModel: createImageModel,
|
|
112
112
|
languageModel: (modelId: string) => {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import {
|
|
2
2
|
AISDKError,
|
|
3
|
-
type
|
|
4
|
-
type
|
|
3
|
+
type Experimental_VideoModelV4,
|
|
4
|
+
type SharedV4Warning,
|
|
5
5
|
} from '@ai-sdk/provider';
|
|
6
6
|
import {
|
|
7
7
|
combineHeaders,
|
|
@@ -55,8 +55,8 @@ interface ReplicateVideoModelConfig {
|
|
|
55
55
|
};
|
|
56
56
|
}
|
|
57
57
|
|
|
58
|
-
export class ReplicateVideoModel implements
|
|
59
|
-
readonly specificationVersion = '
|
|
58
|
+
export class ReplicateVideoModel implements Experimental_VideoModelV4 {
|
|
59
|
+
readonly specificationVersion = 'v4';
|
|
60
60
|
readonly maxVideosPerCall = 1; // Replicate video models support 1 video at a time
|
|
61
61
|
|
|
62
62
|
get provider(): string {
|
|
@@ -69,10 +69,10 @@ export class ReplicateVideoModel implements Experimental_VideoModelV3 {
|
|
|
69
69
|
) {}
|
|
70
70
|
|
|
71
71
|
async doGenerate(
|
|
72
|
-
options: Parameters<
|
|
73
|
-
): Promise<Awaited<ReturnType<
|
|
72
|
+
options: Parameters<Experimental_VideoModelV4['doGenerate']>[0],
|
|
73
|
+
): Promise<Awaited<ReturnType<Experimental_VideoModelV4['doGenerate']>>> {
|
|
74
74
|
const currentDate = this.config._internal?.currentDate?.() ?? new Date();
|
|
75
|
-
const warnings:
|
|
75
|
+
const warnings: SharedV4Warning[] = [];
|
|
76
76
|
|
|
77
77
|
const replicateOptions = (await parseProviderOptions({
|
|
78
78
|
provider: 'replicate',
|