@ai-sdk/replicate 1.0.0-canary.1 → 1.0.0-canary.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 CHANGED
@@ -1,5 +1,112 @@
1
1
  # @ai-sdk/replicate
2
2
 
3
+ ## 1.0.0-canary.11
4
+
5
+ ### Patch Changes
6
+
7
+ - 9301f86: refactor (image-model): rename `ImageModelV1` to `ImageModelV2`
8
+ - Updated dependencies [66962ed]
9
+ - Updated dependencies [9301f86]
10
+ - Updated dependencies [a3f768e]
11
+ - @ai-sdk/provider-utils@3.0.0-canary.11
12
+ - @ai-sdk/provider@2.0.0-canary.10
13
+
14
+ ## 1.0.0-canary.10
15
+
16
+ ### Patch Changes
17
+
18
+ - Updated dependencies [e86be6f]
19
+ - @ai-sdk/provider@2.0.0-canary.9
20
+ - @ai-sdk/provider-utils@3.0.0-canary.10
21
+
22
+ ## 1.0.0-canary.9
23
+
24
+ ### Patch Changes
25
+
26
+ - Updated dependencies [95857aa]
27
+ - Updated dependencies [7ea4132]
28
+ - @ai-sdk/provider@2.0.0-canary.8
29
+ - @ai-sdk/provider-utils@3.0.0-canary.9
30
+
31
+ ## 1.0.0-canary.8
32
+
33
+ ### Patch Changes
34
+
35
+ - Updated dependencies [5d142ab]
36
+ - Updated dependencies [b6b43c7]
37
+ - Updated dependencies [8aa9e20]
38
+ - Updated dependencies [3795467]
39
+ - @ai-sdk/provider-utils@3.0.0-canary.8
40
+ - @ai-sdk/provider@2.0.0-canary.7
41
+
42
+ ## 1.0.0-canary.7
43
+
44
+ ### Patch Changes
45
+
46
+ - Updated dependencies [26735b5]
47
+ - Updated dependencies [443d8ec]
48
+ - Updated dependencies [14c9410]
49
+ - Updated dependencies [d9c98f4]
50
+ - Updated dependencies [c4a2fec]
51
+ - Updated dependencies [0054544]
52
+ - Updated dependencies [9e9c809]
53
+ - Updated dependencies [32831c6]
54
+ - Updated dependencies [d0f9495]
55
+ - Updated dependencies [fd65bc6]
56
+ - Updated dependencies [393138b]
57
+ - Updated dependencies [7182d14]
58
+ - @ai-sdk/provider@2.0.0-canary.6
59
+ - @ai-sdk/provider-utils@3.0.0-canary.7
60
+
61
+ ## 1.0.0-canary.6
62
+
63
+ ### Patch Changes
64
+
65
+ - Updated dependencies [411e483]
66
+ - Updated dependencies [79457bd]
67
+ - Updated dependencies [ad80501]
68
+ - Updated dependencies [1766ede]
69
+ - Updated dependencies [f10304b]
70
+ - @ai-sdk/provider@2.0.0-canary.5
71
+ - @ai-sdk/provider-utils@3.0.0-canary.6
72
+
73
+ ## 1.0.0-canary.5
74
+
75
+ ### Patch Changes
76
+
77
+ - Updated dependencies [6f6bb89]
78
+ - @ai-sdk/provider@2.0.0-canary.4
79
+ - @ai-sdk/provider-utils@3.0.0-canary.5
80
+
81
+ ## 1.0.0-canary.4
82
+
83
+ ### Patch Changes
84
+
85
+ - Updated dependencies [d1a1aa1]
86
+ - @ai-sdk/provider@2.0.0-canary.3
87
+ - @ai-sdk/provider-utils@3.0.0-canary.4
88
+
89
+ ## 1.0.0-canary.3
90
+
91
+ ### Patch Changes
92
+
93
+ - Updated dependencies [a166433]
94
+ - Updated dependencies [abf9a79]
95
+ - Updated dependencies [9f95b35]
96
+ - Updated dependencies [0a87932]
97
+ - Updated dependencies [6dc848c]
98
+ - @ai-sdk/provider-utils@3.0.0-canary.3
99
+ - @ai-sdk/provider@2.0.0-canary.2
100
+
101
+ ## 1.0.0-canary.2
102
+
103
+ ### Patch Changes
104
+
105
+ - Updated dependencies [c57e248]
106
+ - Updated dependencies [33f4a6a]
107
+ - @ai-sdk/provider@2.0.0-canary.1
108
+ - @ai-sdk/provider-utils@3.0.0-canary.2
109
+
3
110
  ## 1.0.0-canary.1
4
111
 
5
112
  ### Patch Changes
package/dist/index.d.mts CHANGED
@@ -1,4 +1,4 @@
1
- import { ImageModelV1, ProviderV2 } from '@ai-sdk/provider';
1
+ import { ImageModelV2, ProviderV2 } from '@ai-sdk/provider';
2
2
  import { Resolvable, FetchFunction } from '@ai-sdk/provider-utils';
3
3
 
4
4
  type ReplicateImageModelId = 'black-forest-labs/flux-1.1-pro' | 'black-forest-labs/flux-1.1-pro-ultra' | 'black-forest-labs/flux-dev' | 'black-forest-labs/flux-pro' | 'black-forest-labs/flux-schnell' | 'bytedance/sdxl-lightning-4step' | 'fofr/aura-flow' | 'fofr/latent-consistency-model' | 'fofr/realvisxl-v3-multi-controlnet-lora' | 'fofr/sdxl-emoji' | 'fofr/sdxl-multi-controlnet-lora' | 'ideogram-ai/ideogram-v2' | 'ideogram-ai/ideogram-v2-turbo' | 'lucataco/dreamshaper-xl-turbo' | 'lucataco/open-dalle-v1.1' | 'lucataco/realvisxl-v2.0' | 'lucataco/realvisxl2-lcm' | 'luma/photon' | 'luma/photon-flash' | 'nvidia/sana' | 'playgroundai/playground-v2.5-1024px-aesthetic' | 'recraft-ai/recraft-v3' | 'recraft-ai/recraft-v3-svg' | 'stability-ai/stable-diffusion-3.5-large' | 'stability-ai/stable-diffusion-3.5-large-turbo' | 'stability-ai/stable-diffusion-3.5-medium' | 'tstramer/material-diffusion' | (string & {});
@@ -18,7 +18,7 @@ interface ReplicateImageModelConfig {
18
18
  currentDate?: () => Date;
19
19
  };
20
20
  }
21
- declare class ReplicateImageModel implements ImageModelV1 {
21
+ declare class ReplicateImageModel implements ImageModelV2 {
22
22
  readonly modelId: ReplicateImageModelId;
23
23
  private readonly settings;
24
24
  private readonly config;
@@ -26,7 +26,7 @@ declare class ReplicateImageModel implements ImageModelV1 {
26
26
  get provider(): string;
27
27
  get maxImagesPerCall(): number;
28
28
  constructor(modelId: ReplicateImageModelId, settings: ReplicateImageSettings, config: ReplicateImageModelConfig);
29
- doGenerate({ prompt, n, aspectRatio, size, seed, providerOptions, headers, abortSignal, }: Parameters<ImageModelV1['doGenerate']>[0]): Promise<Awaited<ReturnType<ImageModelV1['doGenerate']>>>;
29
+ doGenerate({ prompt, n, aspectRatio, size, seed, providerOptions, headers, abortSignal, }: Parameters<ImageModelV2['doGenerate']>[0]): Promise<Awaited<ReturnType<ImageModelV2['doGenerate']>>>;
30
30
  }
31
31
 
32
32
  interface ReplicateProviderSettings {
package/dist/index.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { ImageModelV1, ProviderV2 } from '@ai-sdk/provider';
1
+ import { ImageModelV2, ProviderV2 } from '@ai-sdk/provider';
2
2
  import { Resolvable, FetchFunction } from '@ai-sdk/provider-utils';
3
3
 
4
4
  type ReplicateImageModelId = 'black-forest-labs/flux-1.1-pro' | 'black-forest-labs/flux-1.1-pro-ultra' | 'black-forest-labs/flux-dev' | 'black-forest-labs/flux-pro' | 'black-forest-labs/flux-schnell' | 'bytedance/sdxl-lightning-4step' | 'fofr/aura-flow' | 'fofr/latent-consistency-model' | 'fofr/realvisxl-v3-multi-controlnet-lora' | 'fofr/sdxl-emoji' | 'fofr/sdxl-multi-controlnet-lora' | 'ideogram-ai/ideogram-v2' | 'ideogram-ai/ideogram-v2-turbo' | 'lucataco/dreamshaper-xl-turbo' | 'lucataco/open-dalle-v1.1' | 'lucataco/realvisxl-v2.0' | 'lucataco/realvisxl2-lcm' | 'luma/photon' | 'luma/photon-flash' | 'nvidia/sana' | 'playgroundai/playground-v2.5-1024px-aesthetic' | 'recraft-ai/recraft-v3' | 'recraft-ai/recraft-v3-svg' | 'stability-ai/stable-diffusion-3.5-large' | 'stability-ai/stable-diffusion-3.5-large-turbo' | 'stability-ai/stable-diffusion-3.5-medium' | 'tstramer/material-diffusion' | (string & {});
@@ -18,7 +18,7 @@ interface ReplicateImageModelConfig {
18
18
  currentDate?: () => Date;
19
19
  };
20
20
  }
21
- declare class ReplicateImageModel implements ImageModelV1 {
21
+ declare class ReplicateImageModel implements ImageModelV2 {
22
22
  readonly modelId: ReplicateImageModelId;
23
23
  private readonly settings;
24
24
  private readonly config;
@@ -26,7 +26,7 @@ declare class ReplicateImageModel implements ImageModelV1 {
26
26
  get provider(): string;
27
27
  get maxImagesPerCall(): number;
28
28
  constructor(modelId: ReplicateImageModelId, settings: ReplicateImageSettings, config: ReplicateImageModelConfig);
29
- doGenerate({ prompt, n, aspectRatio, size, seed, providerOptions, headers, abortSignal, }: Parameters<ImageModelV1['doGenerate']>[0]): Promise<Awaited<ReturnType<ImageModelV1['doGenerate']>>>;
29
+ doGenerate({ prompt, n, aspectRatio, size, seed, providerOptions, headers, abortSignal, }: Parameters<ImageModelV2['doGenerate']>[0]): Promise<Awaited<ReturnType<ImageModelV2['doGenerate']>>>;
30
30
  }
31
31
 
32
32
  interface ReplicateProviderSettings {
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"],"sourcesContent":["export { createReplicate, replicate } from './replicate-provider';\nexport type {\n ReplicateProvider,\n ReplicateProviderSettings,\n} from './replicate-provider';\n","import { NoSuchModelError, ProviderV2 } from '@ai-sdk/provider';\nimport type { FetchFunction } from '@ai-sdk/provider-utils';\nimport { loadApiKey } from '@ai-sdk/provider-utils';\nimport { ReplicateImageModel } from './replicate-image-model';\nimport {\n ReplicateImageModelId,\n ReplicateImageSettings,\n} from './replicate-image-settings';\n\nexport interface ReplicateProviderSettings {\n /**\nAPI token that is being send using the `Authorization` header.\nIt defaults to the `REPLICATE_API_TOKEN` environment variable.\n */\n apiToken?: string;\n\n /**\nUse a different URL prefix for API calls, e.g. to use proxy servers.\nThe default prefix is `https://api.replicate.com/v1`.\n */\n baseURL?: string;\n\n /**\nCustom headers to include in the requests.\n */\n headers?: Record<string, string>;\n\n /**\nCustom fetch implementation. You can use it as a middleware to intercept requests,\nor to provide a custom fetch implementation for e.g. testing.\n */\n fetch?: FetchFunction;\n}\n\nexport interface ReplicateProvider extends ProviderV2 {\n /**\n * Creates a Replicate image generation model.\n */\n image(\n modelId: ReplicateImageModelId,\n settings?: ReplicateImageSettings,\n ): ReplicateImageModel;\n\n /**\n * Creates a Replicate image generation model.\n */\n imageModel(\n modelId: ReplicateImageModelId,\n settings?: ReplicateImageSettings,\n ): ReplicateImageModel;\n}\n\n/**\n * Create a Replicate provider instance.\n */\nexport function createReplicate(\n options: ReplicateProviderSettings = {},\n): ReplicateProvider {\n const createImageModel = (\n modelId: ReplicateImageModelId,\n settings?: ReplicateImageSettings,\n ) =>\n new ReplicateImageModel(modelId, settings ?? {}, {\n provider: 'replicate',\n baseURL: options.baseURL ?? 'https://api.replicate.com/v1',\n headers: {\n Authorization: `Bearer ${loadApiKey({\n apiKey: options.apiToken,\n environmentVariableName: 'REPLICATE_API_TOKEN',\n description: 'Replicate',\n })}`,\n ...options.headers,\n },\n fetch: options.fetch,\n });\n\n return {\n image: createImageModel,\n imageModel: createImageModel,\n languageModel: () => {\n throw new NoSuchModelError({\n modelId: 'languageModel',\n modelType: 'languageModel',\n });\n },\n textEmbeddingModel: () => {\n throw new NoSuchModelError({\n modelId: 'textEmbeddingModel',\n modelType: 'textEmbeddingModel',\n });\n },\n };\n}\n\n/**\n * Default Replicate provider instance.\n */\nexport const replicate = createReplicate();\n","import type { ImageModelV1, ImageModelV1CallWarning } from '@ai-sdk/provider';\nimport type { Resolvable } from '@ai-sdk/provider-utils';\nimport {\n FetchFunction,\n combineHeaders,\n createBinaryResponseHandler,\n createJsonResponseHandler,\n getFromApi,\n postJsonToApi,\n resolve,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod';\nimport { replicateFailedResponseHandler } from './replicate-error';\nimport {\n ReplicateImageModelId,\n ReplicateImageSettings,\n} 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\nexport class ReplicateImageModel implements ImageModelV1 {\n readonly specificationVersion = 'v1';\n\n get provider(): string {\n return this.config.provider;\n }\n\n get maxImagesPerCall(): number {\n return this.settings.maxImagesPerCall ?? 1;\n }\n\n constructor(\n readonly modelId: ReplicateImageModelId,\n private readonly settings: ReplicateImageSettings,\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 }: Parameters<ImageModelV1['doGenerate']>[0]): Promise<\n Awaited<ReturnType<ImageModelV1['doGenerate']>>\n > {\n const warnings: Array<ImageModelV1CallWarning> = [];\n\n const [modelId, version] = this.modelId.split(':');\n\n const currentDate = this.config._internal?.currentDate?.() ?? new Date();\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(await resolve(this.config.headers), headers, {\n prefer: 'wait',\n }),\n\n body: {\n input: {\n prompt,\n aspect_ratio: aspectRatio,\n size,\n seed,\n num_outputs: n,\n ...(providerOptions.replicate ?? {}),\n },\n // for versioned models, include the version in the body:\n ...(version != null ? { version } : {}),\n },\n\n successfulResponseHandler: createJsonResponseHandler(\n replicateImageResponseSchema,\n ),\n failedResponseHandler: replicateFailedResponseHandler,\n abortSignal,\n fetch: this.config.fetch,\n });\n\n // download the images:\n const outputArray = Array.isArray(output) ? output : [output];\n const images = await Promise.all(\n outputArray.map(async url => {\n const { value: image } = await getFromApi({\n url,\n successfulResponseHandler: createBinaryResponseHandler(),\n failedResponseHandler: replicateFailedResponseHandler,\n abortSignal,\n fetch: this.config.fetch,\n });\n return image;\n }),\n );\n\n return {\n images,\n warnings,\n response: {\n timestamp: currentDate,\n modelId: this.modelId,\n headers: responseHeaders,\n },\n };\n }\n}\n\nconst replicateImageResponseSchema = z.object({\n output: z.union([z.array(z.string()), z.string()]),\n});\n","import { createJsonErrorResponseHandler } from '@ai-sdk/provider-utils';\nimport { z } from 'zod';\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"],"mappings":"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","names":["import_provider_utils","import_provider_utils","import_zod"]}
1
+ {"version":3,"sources":["../src/index.ts","../src/replicate-provider.ts","../src/replicate-image-model.ts","../src/replicate-error.ts"],"sourcesContent":["export { createReplicate, replicate } from './replicate-provider';\nexport type {\n ReplicateProvider,\n ReplicateProviderSettings,\n} from './replicate-provider';\n","import { NoSuchModelError, ProviderV2 } from '@ai-sdk/provider';\nimport type { FetchFunction } from '@ai-sdk/provider-utils';\nimport { loadApiKey } from '@ai-sdk/provider-utils';\nimport { ReplicateImageModel } from './replicate-image-model';\nimport {\n ReplicateImageModelId,\n ReplicateImageSettings,\n} from './replicate-image-settings';\n\nexport interface ReplicateProviderSettings {\n /**\nAPI token that is being send using the `Authorization` header.\nIt defaults to the `REPLICATE_API_TOKEN` environment variable.\n */\n apiToken?: string;\n\n /**\nUse a different URL prefix for API calls, e.g. to use proxy servers.\nThe default prefix is `https://api.replicate.com/v1`.\n */\n baseURL?: string;\n\n /**\nCustom headers to include in the requests.\n */\n headers?: Record<string, string>;\n\n /**\nCustom fetch implementation. You can use it as a middleware to intercept requests,\nor to provide a custom fetch implementation for e.g. testing.\n */\n fetch?: FetchFunction;\n}\n\nexport interface ReplicateProvider extends ProviderV2 {\n /**\n * Creates a Replicate image generation model.\n */\n image(\n modelId: ReplicateImageModelId,\n settings?: ReplicateImageSettings,\n ): ReplicateImageModel;\n\n /**\n * Creates a Replicate image generation model.\n */\n imageModel(\n modelId: ReplicateImageModelId,\n settings?: ReplicateImageSettings,\n ): ReplicateImageModel;\n}\n\n/**\n * Create a Replicate provider instance.\n */\nexport function createReplicate(\n options: ReplicateProviderSettings = {},\n): ReplicateProvider {\n const createImageModel = (\n modelId: ReplicateImageModelId,\n settings?: ReplicateImageSettings,\n ) =>\n new ReplicateImageModel(modelId, settings ?? {}, {\n provider: 'replicate',\n baseURL: options.baseURL ?? 'https://api.replicate.com/v1',\n headers: {\n Authorization: `Bearer ${loadApiKey({\n apiKey: options.apiToken,\n environmentVariableName: 'REPLICATE_API_TOKEN',\n description: 'Replicate',\n })}`,\n ...options.headers,\n },\n fetch: options.fetch,\n });\n\n return {\n image: createImageModel,\n imageModel: createImageModel,\n languageModel: () => {\n throw new NoSuchModelError({\n modelId: 'languageModel',\n modelType: 'languageModel',\n });\n },\n textEmbeddingModel: () => {\n throw new NoSuchModelError({\n modelId: 'textEmbeddingModel',\n modelType: 'textEmbeddingModel',\n });\n },\n };\n}\n\n/**\n * Default Replicate provider instance.\n */\nexport const replicate = createReplicate();\n","import type { ImageModelV2, ImageModelV2CallWarning } from '@ai-sdk/provider';\nimport type { Resolvable } from '@ai-sdk/provider-utils';\nimport {\n FetchFunction,\n combineHeaders,\n createBinaryResponseHandler,\n createJsonResponseHandler,\n getFromApi,\n postJsonToApi,\n resolve,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod';\nimport { replicateFailedResponseHandler } from './replicate-error';\nimport {\n ReplicateImageModelId,\n ReplicateImageSettings,\n} 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\nexport class ReplicateImageModel implements ImageModelV2 {\n readonly specificationVersion = 'v1';\n\n get provider(): string {\n return this.config.provider;\n }\n\n get maxImagesPerCall(): number {\n return this.settings.maxImagesPerCall ?? 1;\n }\n\n constructor(\n readonly modelId: ReplicateImageModelId,\n private readonly settings: ReplicateImageSettings,\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 }: Parameters<ImageModelV2['doGenerate']>[0]): Promise<\n Awaited<ReturnType<ImageModelV2['doGenerate']>>\n > {\n const warnings: Array<ImageModelV2CallWarning> = [];\n\n const [modelId, version] = this.modelId.split(':');\n\n const currentDate = this.config._internal?.currentDate?.() ?? new Date();\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(await resolve(this.config.headers), headers, {\n prefer: 'wait',\n }),\n\n body: {\n input: {\n prompt,\n aspect_ratio: aspectRatio,\n size,\n seed,\n num_outputs: n,\n ...(providerOptions.replicate ?? {}),\n },\n // for versioned models, include the version in the body:\n ...(version != null ? { version } : {}),\n },\n\n successfulResponseHandler: createJsonResponseHandler(\n replicateImageResponseSchema,\n ),\n failedResponseHandler: replicateFailedResponseHandler,\n abortSignal,\n fetch: this.config.fetch,\n });\n\n // download the images:\n const outputArray = Array.isArray(output) ? output : [output];\n const images = await Promise.all(\n outputArray.map(async url => {\n const { value: image } = await getFromApi({\n url,\n successfulResponseHandler: createBinaryResponseHandler(),\n failedResponseHandler: replicateFailedResponseHandler,\n abortSignal,\n fetch: this.config.fetch,\n });\n return image;\n }),\n );\n\n return {\n images,\n warnings,\n response: {\n timestamp: currentDate,\n modelId: this.modelId,\n headers: responseHeaders,\n },\n };\n }\n}\n\nconst replicateImageResponseSchema = z.object({\n output: z.union([z.array(z.string()), z.string()]),\n});\n","import { createJsonErrorResponseHandler } from '@ai-sdk/provider-utils';\nimport { z } from 'zod';\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"],"mappings":"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","names":["import_provider_utils","import_provider_utils","import_zod"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/replicate-provider.ts","../src/replicate-image-model.ts","../src/replicate-error.ts"],"sourcesContent":["import { NoSuchModelError, ProviderV2 } from '@ai-sdk/provider';\nimport type { FetchFunction } from '@ai-sdk/provider-utils';\nimport { loadApiKey } from '@ai-sdk/provider-utils';\nimport { ReplicateImageModel } from './replicate-image-model';\nimport {\n ReplicateImageModelId,\n ReplicateImageSettings,\n} from './replicate-image-settings';\n\nexport interface ReplicateProviderSettings {\n /**\nAPI token that is being send using the `Authorization` header.\nIt defaults to the `REPLICATE_API_TOKEN` environment variable.\n */\n apiToken?: string;\n\n /**\nUse a different URL prefix for API calls, e.g. to use proxy servers.\nThe default prefix is `https://api.replicate.com/v1`.\n */\n baseURL?: string;\n\n /**\nCustom headers to include in the requests.\n */\n headers?: Record<string, string>;\n\n /**\nCustom fetch implementation. You can use it as a middleware to intercept requests,\nor to provide a custom fetch implementation for e.g. testing.\n */\n fetch?: FetchFunction;\n}\n\nexport interface ReplicateProvider extends ProviderV2 {\n /**\n * Creates a Replicate image generation model.\n */\n image(\n modelId: ReplicateImageModelId,\n settings?: ReplicateImageSettings,\n ): ReplicateImageModel;\n\n /**\n * Creates a Replicate image generation model.\n */\n imageModel(\n modelId: ReplicateImageModelId,\n settings?: ReplicateImageSettings,\n ): ReplicateImageModel;\n}\n\n/**\n * Create a Replicate provider instance.\n */\nexport function createReplicate(\n options: ReplicateProviderSettings = {},\n): ReplicateProvider {\n const createImageModel = (\n modelId: ReplicateImageModelId,\n settings?: ReplicateImageSettings,\n ) =>\n new ReplicateImageModel(modelId, settings ?? {}, {\n provider: 'replicate',\n baseURL: options.baseURL ?? 'https://api.replicate.com/v1',\n headers: {\n Authorization: `Bearer ${loadApiKey({\n apiKey: options.apiToken,\n environmentVariableName: 'REPLICATE_API_TOKEN',\n description: 'Replicate',\n })}`,\n ...options.headers,\n },\n fetch: options.fetch,\n });\n\n return {\n image: createImageModel,\n imageModel: createImageModel,\n languageModel: () => {\n throw new NoSuchModelError({\n modelId: 'languageModel',\n modelType: 'languageModel',\n });\n },\n textEmbeddingModel: () => {\n throw new NoSuchModelError({\n modelId: 'textEmbeddingModel',\n modelType: 'textEmbeddingModel',\n });\n },\n };\n}\n\n/**\n * Default Replicate provider instance.\n */\nexport const replicate = createReplicate();\n","import type { ImageModelV1, ImageModelV1CallWarning } from '@ai-sdk/provider';\nimport type { Resolvable } from '@ai-sdk/provider-utils';\nimport {\n FetchFunction,\n combineHeaders,\n createBinaryResponseHandler,\n createJsonResponseHandler,\n getFromApi,\n postJsonToApi,\n resolve,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod';\nimport { replicateFailedResponseHandler } from './replicate-error';\nimport {\n ReplicateImageModelId,\n ReplicateImageSettings,\n} 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\nexport class ReplicateImageModel implements ImageModelV1 {\n readonly specificationVersion = 'v1';\n\n get provider(): string {\n return this.config.provider;\n }\n\n get maxImagesPerCall(): number {\n return this.settings.maxImagesPerCall ?? 1;\n }\n\n constructor(\n readonly modelId: ReplicateImageModelId,\n private readonly settings: ReplicateImageSettings,\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 }: Parameters<ImageModelV1['doGenerate']>[0]): Promise<\n Awaited<ReturnType<ImageModelV1['doGenerate']>>\n > {\n const warnings: Array<ImageModelV1CallWarning> = [];\n\n const [modelId, version] = this.modelId.split(':');\n\n const currentDate = this.config._internal?.currentDate?.() ?? new Date();\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(await resolve(this.config.headers), headers, {\n prefer: 'wait',\n }),\n\n body: {\n input: {\n prompt,\n aspect_ratio: aspectRatio,\n size,\n seed,\n num_outputs: n,\n ...(providerOptions.replicate ?? {}),\n },\n // for versioned models, include the version in the body:\n ...(version != null ? { version } : {}),\n },\n\n successfulResponseHandler: createJsonResponseHandler(\n replicateImageResponseSchema,\n ),\n failedResponseHandler: replicateFailedResponseHandler,\n abortSignal,\n fetch: this.config.fetch,\n });\n\n // download the images:\n const outputArray = Array.isArray(output) ? output : [output];\n const images = await Promise.all(\n outputArray.map(async url => {\n const { value: image } = await getFromApi({\n url,\n successfulResponseHandler: createBinaryResponseHandler(),\n failedResponseHandler: replicateFailedResponseHandler,\n abortSignal,\n fetch: this.config.fetch,\n });\n return image;\n }),\n );\n\n return {\n images,\n warnings,\n response: {\n timestamp: currentDate,\n modelId: this.modelId,\n headers: responseHeaders,\n },\n };\n }\n}\n\nconst replicateImageResponseSchema = z.object({\n output: z.union([z.array(z.string()), z.string()]),\n});\n","import { createJsonErrorResponseHandler } from '@ai-sdk/provider-utils';\nimport { z } from 'zod';\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"],"mappings":"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","names":["z","z"]}
1
+ {"version":3,"sources":["../src/replicate-provider.ts","../src/replicate-image-model.ts","../src/replicate-error.ts"],"sourcesContent":["import { NoSuchModelError, ProviderV2 } from '@ai-sdk/provider';\nimport type { FetchFunction } from '@ai-sdk/provider-utils';\nimport { loadApiKey } from '@ai-sdk/provider-utils';\nimport { ReplicateImageModel } from './replicate-image-model';\nimport {\n ReplicateImageModelId,\n ReplicateImageSettings,\n} from './replicate-image-settings';\n\nexport interface ReplicateProviderSettings {\n /**\nAPI token that is being send using the `Authorization` header.\nIt defaults to the `REPLICATE_API_TOKEN` environment variable.\n */\n apiToken?: string;\n\n /**\nUse a different URL prefix for API calls, e.g. to use proxy servers.\nThe default prefix is `https://api.replicate.com/v1`.\n */\n baseURL?: string;\n\n /**\nCustom headers to include in the requests.\n */\n headers?: Record<string, string>;\n\n /**\nCustom fetch implementation. You can use it as a middleware to intercept requests,\nor to provide a custom fetch implementation for e.g. testing.\n */\n fetch?: FetchFunction;\n}\n\nexport interface ReplicateProvider extends ProviderV2 {\n /**\n * Creates a Replicate image generation model.\n */\n image(\n modelId: ReplicateImageModelId,\n settings?: ReplicateImageSettings,\n ): ReplicateImageModel;\n\n /**\n * Creates a Replicate image generation model.\n */\n imageModel(\n modelId: ReplicateImageModelId,\n settings?: ReplicateImageSettings,\n ): ReplicateImageModel;\n}\n\n/**\n * Create a Replicate provider instance.\n */\nexport function createReplicate(\n options: ReplicateProviderSettings = {},\n): ReplicateProvider {\n const createImageModel = (\n modelId: ReplicateImageModelId,\n settings?: ReplicateImageSettings,\n ) =>\n new ReplicateImageModel(modelId, settings ?? {}, {\n provider: 'replicate',\n baseURL: options.baseURL ?? 'https://api.replicate.com/v1',\n headers: {\n Authorization: `Bearer ${loadApiKey({\n apiKey: options.apiToken,\n environmentVariableName: 'REPLICATE_API_TOKEN',\n description: 'Replicate',\n })}`,\n ...options.headers,\n },\n fetch: options.fetch,\n });\n\n return {\n image: createImageModel,\n imageModel: createImageModel,\n languageModel: () => {\n throw new NoSuchModelError({\n modelId: 'languageModel',\n modelType: 'languageModel',\n });\n },\n textEmbeddingModel: () => {\n throw new NoSuchModelError({\n modelId: 'textEmbeddingModel',\n modelType: 'textEmbeddingModel',\n });\n },\n };\n}\n\n/**\n * Default Replicate provider instance.\n */\nexport const replicate = createReplicate();\n","import type { ImageModelV2, ImageModelV2CallWarning } from '@ai-sdk/provider';\nimport type { Resolvable } from '@ai-sdk/provider-utils';\nimport {\n FetchFunction,\n combineHeaders,\n createBinaryResponseHandler,\n createJsonResponseHandler,\n getFromApi,\n postJsonToApi,\n resolve,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod';\nimport { replicateFailedResponseHandler } from './replicate-error';\nimport {\n ReplicateImageModelId,\n ReplicateImageSettings,\n} 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\nexport class ReplicateImageModel implements ImageModelV2 {\n readonly specificationVersion = 'v1';\n\n get provider(): string {\n return this.config.provider;\n }\n\n get maxImagesPerCall(): number {\n return this.settings.maxImagesPerCall ?? 1;\n }\n\n constructor(\n readonly modelId: ReplicateImageModelId,\n private readonly settings: ReplicateImageSettings,\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 }: Parameters<ImageModelV2['doGenerate']>[0]): Promise<\n Awaited<ReturnType<ImageModelV2['doGenerate']>>\n > {\n const warnings: Array<ImageModelV2CallWarning> = [];\n\n const [modelId, version] = this.modelId.split(':');\n\n const currentDate = this.config._internal?.currentDate?.() ?? new Date();\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(await resolve(this.config.headers), headers, {\n prefer: 'wait',\n }),\n\n body: {\n input: {\n prompt,\n aspect_ratio: aspectRatio,\n size,\n seed,\n num_outputs: n,\n ...(providerOptions.replicate ?? {}),\n },\n // for versioned models, include the version in the body:\n ...(version != null ? { version } : {}),\n },\n\n successfulResponseHandler: createJsonResponseHandler(\n replicateImageResponseSchema,\n ),\n failedResponseHandler: replicateFailedResponseHandler,\n abortSignal,\n fetch: this.config.fetch,\n });\n\n // download the images:\n const outputArray = Array.isArray(output) ? output : [output];\n const images = await Promise.all(\n outputArray.map(async url => {\n const { value: image } = await getFromApi({\n url,\n successfulResponseHandler: createBinaryResponseHandler(),\n failedResponseHandler: replicateFailedResponseHandler,\n abortSignal,\n fetch: this.config.fetch,\n });\n return image;\n }),\n );\n\n return {\n images,\n warnings,\n response: {\n timestamp: currentDate,\n modelId: this.modelId,\n headers: responseHeaders,\n },\n };\n }\n}\n\nconst replicateImageResponseSchema = z.object({\n output: z.union([z.array(z.string()), z.string()]),\n});\n","import { createJsonErrorResponseHandler } from '@ai-sdk/provider-utils';\nimport { z } from 'zod';\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"],"mappings":"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","names":["z","z"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ai-sdk/replicate",
3
- "version": "1.0.0-canary.1",
3
+ "version": "1.0.0-canary.11",
4
4
  "license": "Apache-2.0",
5
5
  "sideEffects": false,
6
6
  "main": "./dist/index.js",
@@ -19,13 +19,13 @@
19
19
  }
20
20
  },
21
21
  "dependencies": {
22
- "@ai-sdk/provider": "2.0.0-canary.0",
23
- "@ai-sdk/provider-utils": "3.0.0-canary.1"
22
+ "@ai-sdk/provider": "2.0.0-canary.10",
23
+ "@ai-sdk/provider-utils": "3.0.0-canary.11"
24
24
  },
25
25
  "devDependencies": {
26
26
  "@types/node": "20.17.24",
27
27
  "tsup": "^8",
28
- "typescript": "5.6.3",
28
+ "typescript": "5.8.3",
29
29
  "zod": "3.23.8",
30
30
  "@vercel/ai-tsconfig": "0.0.0"
31
31
  },
@@ -50,13 +50,15 @@
50
50
  "ai"
51
51
  ],
52
52
  "scripts": {
53
- "build": "tsup",
54
- "build:watch": "tsup --watch",
55
- "clean": "rm -rf dist",
53
+ "build": "pnpm clean && tsup --tsconfig tsconfig.build.json",
54
+ "build:watch": "pnpm clean && tsup --watch",
55
+ "clean": "rm -rf dist *.tsbuildinfo",
56
56
  "lint": "eslint \"./**/*.ts*\"",
57
- "type-check": "tsc --noEmit",
57
+ "type-check": "tsc --build",
58
58
  "prettier-check": "prettier --check \"./**/*.ts*\"",
59
59
  "test": "pnpm test:node && pnpm test:edge",
60
+ "test:update": "pnpm test:node -u",
61
+ "test:watch": "vitest --config vitest.node.config.js",
60
62
  "test:edge": "vitest --config vitest.edge.config.js --run",
61
63
  "test:node": "vitest --config vitest.node.config.js --run"
62
64
  }