@ai-sdk/black-forest-labs 2.0.0-beta.30 → 2.0.0-beta.31
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 +13 -0
- package/dist/index.js +73 -66
- package/dist/index.js.map +1 -1
- package/package.json +2 -2
- package/src/black-forest-labs-image-model-options.ts +51 -0
- package/src/black-forest-labs-image-model.ts +1 -48
- package/src/index.ts +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,18 @@
|
|
|
1
1
|
# @ai-sdk/black-forest-labs
|
|
2
2
|
|
|
3
|
+
## 2.0.0-beta.31
|
|
4
|
+
|
|
5
|
+
### Major Changes
|
|
6
|
+
|
|
7
|
+
- 04e9009: chore: make provider implementations code patterns more consistent, including renaming certain exported symbols
|
|
8
|
+
|
|
9
|
+
For all externally exported symbols that were renamed, the old names continue to work via deprecated aliases.
|
|
10
|
+
|
|
11
|
+
### Patch Changes
|
|
12
|
+
|
|
13
|
+
- Updated dependencies [08d2129]
|
|
14
|
+
- @ai-sdk/provider-utils@5.0.0-beta.30
|
|
15
|
+
|
|
3
16
|
## 2.0.0-beta.30
|
|
4
17
|
|
|
5
18
|
### Patch Changes
|
package/dist/index.js
CHANGED
|
@@ -17,16 +17,63 @@ import {
|
|
|
17
17
|
createStatusCodeErrorResponseHandler,
|
|
18
18
|
delay,
|
|
19
19
|
getFromApi,
|
|
20
|
-
lazySchema,
|
|
21
20
|
parseProviderOptions,
|
|
22
21
|
postJsonToApi,
|
|
23
22
|
resolve,
|
|
24
23
|
serializeModelOptions,
|
|
25
24
|
WORKFLOW_SERIALIZE,
|
|
26
|
-
WORKFLOW_DESERIALIZE
|
|
25
|
+
WORKFLOW_DESERIALIZE
|
|
26
|
+
} from "@ai-sdk/provider-utils";
|
|
27
|
+
import { z as z2 } from "zod/v4";
|
|
28
|
+
|
|
29
|
+
// src/black-forest-labs-image-model-options.ts
|
|
30
|
+
import {
|
|
31
|
+
lazySchema,
|
|
27
32
|
zodSchema
|
|
28
33
|
} from "@ai-sdk/provider-utils";
|
|
29
34
|
import { z } from "zod/v4";
|
|
35
|
+
var blackForestLabsImageModelOptionsSchema = lazySchema(
|
|
36
|
+
() => zodSchema(
|
|
37
|
+
z.object({
|
|
38
|
+
imagePrompt: z.string().optional(),
|
|
39
|
+
imagePromptStrength: z.number().min(0).max(1).optional(),
|
|
40
|
+
/** @deprecated use prompt.images instead */
|
|
41
|
+
inputImage: z.string().optional(),
|
|
42
|
+
/** @deprecated use prompt.images instead */
|
|
43
|
+
inputImage2: z.string().optional(),
|
|
44
|
+
/** @deprecated use prompt.images instead */
|
|
45
|
+
inputImage3: z.string().optional(),
|
|
46
|
+
/** @deprecated use prompt.images instead */
|
|
47
|
+
inputImage4: z.string().optional(),
|
|
48
|
+
/** @deprecated use prompt.images instead */
|
|
49
|
+
inputImage5: z.string().optional(),
|
|
50
|
+
/** @deprecated use prompt.images instead */
|
|
51
|
+
inputImage6: z.string().optional(),
|
|
52
|
+
/** @deprecated use prompt.images instead */
|
|
53
|
+
inputImage7: z.string().optional(),
|
|
54
|
+
/** @deprecated use prompt.images instead */
|
|
55
|
+
inputImage8: z.string().optional(),
|
|
56
|
+
/** @deprecated use prompt.images instead */
|
|
57
|
+
inputImage9: z.string().optional(),
|
|
58
|
+
/** @deprecated use prompt.images instead */
|
|
59
|
+
inputImage10: z.string().optional(),
|
|
60
|
+
steps: z.number().int().positive().optional(),
|
|
61
|
+
guidance: z.number().min(0).optional(),
|
|
62
|
+
width: z.number().int().min(256).max(1920).optional(),
|
|
63
|
+
height: z.number().int().min(256).max(1920).optional(),
|
|
64
|
+
outputFormat: z.enum(["jpeg", "png"]).optional(),
|
|
65
|
+
promptUpsampling: z.boolean().optional(),
|
|
66
|
+
raw: z.boolean().optional(),
|
|
67
|
+
safetyTolerance: z.number().int().min(0).max(6).optional(),
|
|
68
|
+
webhookSecret: z.string().optional(),
|
|
69
|
+
webhookUrl: z.url().optional(),
|
|
70
|
+
pollIntervalMillis: z.number().int().positive().optional(),
|
|
71
|
+
pollTimeoutMillis: z.number().int().positive().optional()
|
|
72
|
+
})
|
|
73
|
+
)
|
|
74
|
+
);
|
|
75
|
+
|
|
76
|
+
// src/black-forest-labs-image-model.ts
|
|
30
77
|
var DEFAULT_POLL_INTERVAL_MILLIS = 500;
|
|
31
78
|
var DEFAULT_POLL_TIMEOUT_MILLIS = 6e4;
|
|
32
79
|
var BlackForestLabsImageModel = class _BlackForestLabsImageModel {
|
|
@@ -275,46 +322,6 @@ var BlackForestLabsImageModel = class _BlackForestLabsImageModel {
|
|
|
275
322
|
throw new Error("Black Forest Labs generation timed out.");
|
|
276
323
|
}
|
|
277
324
|
};
|
|
278
|
-
var blackForestLabsImageModelOptionsSchema = lazySchema(
|
|
279
|
-
() => zodSchema(
|
|
280
|
-
z.object({
|
|
281
|
-
imagePrompt: z.string().optional(),
|
|
282
|
-
imagePromptStrength: z.number().min(0).max(1).optional(),
|
|
283
|
-
/** @deprecated use prompt.images instead */
|
|
284
|
-
inputImage: z.string().optional(),
|
|
285
|
-
/** @deprecated use prompt.images instead */
|
|
286
|
-
inputImage2: z.string().optional(),
|
|
287
|
-
/** @deprecated use prompt.images instead */
|
|
288
|
-
inputImage3: z.string().optional(),
|
|
289
|
-
/** @deprecated use prompt.images instead */
|
|
290
|
-
inputImage4: z.string().optional(),
|
|
291
|
-
/** @deprecated use prompt.images instead */
|
|
292
|
-
inputImage5: z.string().optional(),
|
|
293
|
-
/** @deprecated use prompt.images instead */
|
|
294
|
-
inputImage6: z.string().optional(),
|
|
295
|
-
/** @deprecated use prompt.images instead */
|
|
296
|
-
inputImage7: z.string().optional(),
|
|
297
|
-
/** @deprecated use prompt.images instead */
|
|
298
|
-
inputImage8: z.string().optional(),
|
|
299
|
-
/** @deprecated use prompt.images instead */
|
|
300
|
-
inputImage9: z.string().optional(),
|
|
301
|
-
/** @deprecated use prompt.images instead */
|
|
302
|
-
inputImage10: z.string().optional(),
|
|
303
|
-
steps: z.number().int().positive().optional(),
|
|
304
|
-
guidance: z.number().min(0).optional(),
|
|
305
|
-
width: z.number().int().min(256).max(1920).optional(),
|
|
306
|
-
height: z.number().int().min(256).max(1920).optional(),
|
|
307
|
-
outputFormat: z.enum(["jpeg", "png"]).optional(),
|
|
308
|
-
promptUpsampling: z.boolean().optional(),
|
|
309
|
-
raw: z.boolean().optional(),
|
|
310
|
-
safetyTolerance: z.number().int().min(0).max(6).optional(),
|
|
311
|
-
webhookSecret: z.string().optional(),
|
|
312
|
-
webhookUrl: z.url().optional(),
|
|
313
|
-
pollIntervalMillis: z.number().int().positive().optional(),
|
|
314
|
-
pollTimeoutMillis: z.number().int().positive().optional()
|
|
315
|
-
})
|
|
316
|
-
)
|
|
317
|
-
);
|
|
318
325
|
function convertSizeToAspectRatio(size) {
|
|
319
326
|
const [wStr, hStr] = size.split("x");
|
|
320
327
|
const width = Number(wStr);
|
|
@@ -335,30 +342,30 @@ function gcd(a, b) {
|
|
|
335
342
|
}
|
|
336
343
|
return x;
|
|
337
344
|
}
|
|
338
|
-
var bflSubmitSchema =
|
|
339
|
-
id:
|
|
340
|
-
polling_url:
|
|
341
|
-
cost:
|
|
342
|
-
input_mp:
|
|
343
|
-
output_mp:
|
|
345
|
+
var bflSubmitSchema = z2.object({
|
|
346
|
+
id: z2.string(),
|
|
347
|
+
polling_url: z2.url(),
|
|
348
|
+
cost: z2.number().nullish(),
|
|
349
|
+
input_mp: z2.number().nullish(),
|
|
350
|
+
output_mp: z2.number().nullish()
|
|
344
351
|
});
|
|
345
|
-
var bflStatus =
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
352
|
+
var bflStatus = z2.union([
|
|
353
|
+
z2.literal("Pending"),
|
|
354
|
+
z2.literal("Ready"),
|
|
355
|
+
z2.literal("Error"),
|
|
356
|
+
z2.literal("Failed"),
|
|
357
|
+
z2.literal("Request Moderated")
|
|
351
358
|
]);
|
|
352
|
-
var bflPollSchema =
|
|
359
|
+
var bflPollSchema = z2.object({
|
|
353
360
|
status: bflStatus.optional(),
|
|
354
361
|
state: bflStatus.optional(),
|
|
355
|
-
details:
|
|
356
|
-
result:
|
|
357
|
-
sample:
|
|
358
|
-
seed:
|
|
359
|
-
start_time:
|
|
360
|
-
end_time:
|
|
361
|
-
duration:
|
|
362
|
+
details: z2.unknown().optional(),
|
|
363
|
+
result: z2.object({
|
|
364
|
+
sample: z2.url(),
|
|
365
|
+
seed: z2.number().optional(),
|
|
366
|
+
start_time: z2.number().optional(),
|
|
367
|
+
end_time: z2.number().optional(),
|
|
368
|
+
duration: z2.number().optional()
|
|
362
369
|
}).nullish()
|
|
363
370
|
}).refine((v) => v.status != null || v.state != null, {
|
|
364
371
|
message: "Missing status in Black Forest Labs poll response"
|
|
@@ -369,9 +376,9 @@ var bflPollSchema = z.object({
|
|
|
369
376
|
result: v.result
|
|
370
377
|
};
|
|
371
378
|
});
|
|
372
|
-
var bflErrorSchema =
|
|
373
|
-
message:
|
|
374
|
-
detail:
|
|
379
|
+
var bflErrorSchema = z2.object({
|
|
380
|
+
message: z2.string().optional(),
|
|
381
|
+
detail: z2.any().optional()
|
|
375
382
|
});
|
|
376
383
|
var bflFailedResponseHandler = createJsonErrorResponseHandler({
|
|
377
384
|
errorSchema: bflErrorSchema,
|
|
@@ -395,7 +402,7 @@ function bflErrorToMessage(error) {
|
|
|
395
402
|
}
|
|
396
403
|
|
|
397
404
|
// src/version.ts
|
|
398
|
-
var VERSION = true ? "2.0.0-beta.
|
|
405
|
+
var VERSION = true ? "2.0.0-beta.31" : "0.0.0-test";
|
|
399
406
|
|
|
400
407
|
// src/black-forest-labs-provider.ts
|
|
401
408
|
var defaultBaseURL = "https://api.bfl.ai/v1";
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/black-forest-labs-provider.ts","../src/black-forest-labs-image-model.ts","../src/version.ts"],"sourcesContent":["import {\n NoSuchModelError,\n type ImageModelV4,\n type ProviderV4,\n} from '@ai-sdk/provider';\nimport {\n loadApiKey,\n withoutTrailingSlash,\n withUserAgentSuffix,\n type FetchFunction,\n} from '@ai-sdk/provider-utils';\nimport { BlackForestLabsImageModel } from './black-forest-labs-image-model';\nimport type { BlackForestLabsImageModelId } from './black-forest-labs-image-settings';\nimport { VERSION } from './version';\n\nexport interface BlackForestLabsProviderSettings {\n /**\n * Black Forest Labs API key. Default value is taken from the `BFL_API_KEY` environment variable.\n */\n apiKey?: string;\n\n /**\n * Base URL for the API calls. Defaults to `https://api.bfl.ai/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\n * requests, or to provide a custom fetch implementation for e.g. testing.\n */\n fetch?: FetchFunction;\n\n /**\n * Poll interval in milliseconds between status checks. Defaults to 500ms.\n */\n pollIntervalMillis?: number;\n\n /**\n * Overall timeout in milliseconds for polling before giving up. Defaults to 60s.\n */\n pollTimeoutMillis?: number;\n}\n\nexport interface BlackForestLabsProvider extends ProviderV4 {\n /**\n * Creates a model for image generation.\n */\n image(modelId: BlackForestLabsImageModelId): ImageModelV4;\n\n /**\n * Creates a model for image generation.\n */\n imageModel(modelId: BlackForestLabsImageModelId): ImageModelV4;\n\n /**\n * @deprecated Use `embeddingModel` instead.\n */\n textEmbeddingModel(modelId: string): never;\n}\n\nconst defaultBaseURL = 'https://api.bfl.ai/v1';\n\nexport function createBlackForestLabs(\n options: BlackForestLabsProviderSettings = {},\n): BlackForestLabsProvider {\n const baseURL = withoutTrailingSlash(options.baseURL ?? defaultBaseURL);\n const getHeaders = () =>\n withUserAgentSuffix(\n {\n 'x-key': loadApiKey({\n apiKey: options.apiKey,\n environmentVariableName: 'BFL_API_KEY',\n description: 'Black Forest Labs',\n }),\n ...options.headers,\n },\n `ai-sdk/black-forest-labs/${VERSION}`,\n );\n\n const createImageModel = (modelId: BlackForestLabsImageModelId) =>\n new BlackForestLabsImageModel(modelId, {\n provider: 'black-forest-labs.image',\n baseURL: baseURL ?? defaultBaseURL,\n headers: getHeaders,\n fetch: options.fetch,\n pollIntervalMillis: options.pollIntervalMillis,\n pollTimeoutMillis: options.pollTimeoutMillis,\n });\n\n const embeddingModel = (modelId: string) => {\n throw new NoSuchModelError({\n modelId,\n modelType: 'embeddingModel',\n });\n };\n\n return {\n specificationVersion: 'v4',\n imageModel: createImageModel,\n image: createImageModel,\n languageModel: (modelId: string) => {\n throw new NoSuchModelError({\n modelId,\n modelType: 'languageModel',\n });\n },\n embeddingModel,\n textEmbeddingModel: embeddingModel,\n };\n}\n\nexport const blackForestLabs = createBlackForestLabs();\n","import type { ImageModelV4, SharedV4Warning } from '@ai-sdk/provider';\nimport {\n combineHeaders,\n createBinaryResponseHandler,\n createJsonErrorResponseHandler,\n createJsonResponseHandler,\n createStatusCodeErrorResponseHandler,\n delay,\n getFromApi,\n lazySchema,\n parseProviderOptions,\n postJsonToApi,\n resolve,\n serializeModelOptions,\n WORKFLOW_SERIALIZE,\n WORKFLOW_DESERIALIZE,\n zodSchema,\n type InferSchema,\n type Resolvable,\n type FetchFunction,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\nimport type {\n BlackForestLabsAspectRatio,\n BlackForestLabsImageModelId,\n} from './black-forest-labs-image-settings';\n\nconst DEFAULT_POLL_INTERVAL_MILLIS = 500;\nconst DEFAULT_POLL_TIMEOUT_MILLIS = 60000;\n\ninterface BlackForestLabsImageModelConfig {\n provider: string;\n baseURL: string;\n headers?: Resolvable<Record<string, string | undefined>>;\n fetch?: FetchFunction;\n /**\n * Poll interval in milliseconds between status checks. Defaults to 500ms.\n */\n pollIntervalMillis?: number;\n /**\n * Overall timeout in milliseconds for polling before giving up. Defaults to 60s.\n */\n pollTimeoutMillis?: number;\n _internal?: {\n currentDate?: () => Date;\n };\n}\n\nexport class BlackForestLabsImageModel implements ImageModelV4 {\n readonly specificationVersion = 'v4';\n readonly maxImagesPerCall = 1;\n\n get provider(): string {\n return this.config.provider;\n }\n\n static [WORKFLOW_SERIALIZE](model: BlackForestLabsImageModel) {\n return serializeModelOptions({\n modelId: model.modelId,\n config: model.config,\n });\n }\n\n static [WORKFLOW_DESERIALIZE](options: {\n modelId: BlackForestLabsImageModelId;\n config: BlackForestLabsImageModelConfig;\n }) {\n return new BlackForestLabsImageModel(options.modelId, options.config);\n }\n\n constructor(\n readonly modelId: BlackForestLabsImageModelId,\n private readonly config: BlackForestLabsImageModelConfig,\n ) {}\n\n private async getArgs({\n prompt,\n files,\n mask,\n size,\n aspectRatio,\n seed,\n providerOptions,\n }: Parameters<ImageModelV4['doGenerate']>[0]) {\n const warnings: Array<SharedV4Warning> = [];\n\n const finalAspectRatio =\n aspectRatio ?? (size ? convertSizeToAspectRatio(size) : undefined);\n\n if (size && !aspectRatio) {\n warnings.push({\n type: 'unsupported',\n feature: 'size',\n details:\n 'Deriving aspect_ratio from size. Use the width and height provider options to specify dimensions for models that support them.',\n });\n } else if (size && aspectRatio) {\n warnings.push({\n type: 'unsupported',\n feature: 'size',\n details:\n 'Black Forest Labs ignores size when aspectRatio is provided. Use the width and height provider options to specify dimensions for models that support them',\n });\n }\n\n const bflOptions = await parseProviderOptions({\n provider: 'blackForestLabs',\n providerOptions,\n schema: blackForestLabsImageModelOptionsSchema,\n });\n\n const [widthStr, heightStr] = size?.split('x') ?? [];\n\n const inputImages: string[] =\n files?.map(file => {\n if (file.type === 'url') {\n return file.url;\n }\n\n if (typeof file.data === 'string') {\n return file.data;\n }\n\n return Buffer.from(file.data).toString('base64');\n }) || [];\n\n if (inputImages.length > 10) {\n throw new Error('Black Forest Labs supports up to 10 input images.');\n }\n\n const inputImagesObj: Record<string, string> = inputImages.reduce<\n Record<string, string>\n >((acc, img, index) => {\n acc[`input_image${index === 0 ? '' : `_${index + 1}`}`] = img;\n return acc;\n }, {});\n\n let maskValue: string | undefined;\n if (mask) {\n if (mask.type === 'url') {\n maskValue = mask.url;\n } else {\n if (typeof mask.data === 'string') {\n maskValue = mask.data;\n } else {\n maskValue = Buffer.from(mask.data).toString('base64');\n }\n }\n }\n\n const body: Record<string, unknown> = {\n prompt,\n seed,\n aspect_ratio: finalAspectRatio,\n width: bflOptions?.width ?? (size ? Number(widthStr) : undefined),\n height: bflOptions?.height ?? (size ? Number(heightStr) : undefined),\n steps: bflOptions?.steps,\n guidance: bflOptions?.guidance,\n image_prompt_strength: bflOptions?.imagePromptStrength,\n image_prompt: bflOptions?.imagePrompt,\n ...inputImagesObj,\n mask: maskValue,\n output_format: bflOptions?.outputFormat,\n prompt_upsampling: bflOptions?.promptUpsampling,\n raw: bflOptions?.raw,\n safety_tolerance: bflOptions?.safetyTolerance,\n webhook_secret: bflOptions?.webhookSecret,\n webhook_url: bflOptions?.webhookUrl,\n };\n\n return { body, warnings };\n }\n\n async doGenerate({\n prompt,\n files,\n mask,\n size,\n aspectRatio,\n seed,\n providerOptions,\n headers,\n abortSignal,\n }: Parameters<ImageModelV4['doGenerate']>[0]): Promise<\n Awaited<ReturnType<ImageModelV4['doGenerate']>>\n > {\n const { body, warnings } = await this.getArgs({\n prompt,\n files,\n mask,\n size,\n aspectRatio,\n seed,\n providerOptions,\n n: 1,\n headers,\n abortSignal,\n } as Parameters<ImageModelV4['doGenerate']>[0]);\n\n const bflOptions = await parseProviderOptions({\n provider: 'blackForestLabs',\n providerOptions,\n schema: blackForestLabsImageModelOptionsSchema,\n });\n\n const currentDate = this.config._internal?.currentDate?.() ?? new Date();\n const combinedHeaders = combineHeaders(\n await resolve(this.config.headers),\n headers,\n );\n\n const submit = await postJsonToApi({\n url: `${this.config.baseURL}/${this.modelId}`,\n headers: combinedHeaders,\n body,\n failedResponseHandler: bflFailedResponseHandler,\n successfulResponseHandler: createJsonResponseHandler(bflSubmitSchema),\n abortSignal,\n fetch: this.config.fetch,\n });\n\n const pollUrl = submit.value.polling_url;\n const requestId = submit.value.id;\n\n const {\n imageUrl,\n seed: resultSeed,\n start_time: resultStartTime,\n end_time: resultEndTime,\n duration: resultDuration,\n } = await this.pollForImageUrl({\n pollUrl,\n requestId,\n headers: combinedHeaders,\n abortSignal,\n pollOverrides: {\n pollIntervalMillis: bflOptions?.pollIntervalMillis,\n pollTimeoutMillis: bflOptions?.pollTimeoutMillis,\n },\n });\n\n const { value: imageBytes, responseHeaders } = await getFromApi({\n url: imageUrl,\n headers: combinedHeaders,\n abortSignal,\n failedResponseHandler: createStatusCodeErrorResponseHandler(),\n successfulResponseHandler: createBinaryResponseHandler(),\n fetch: this.config.fetch,\n });\n\n return {\n images: [imageBytes],\n warnings,\n providerMetadata: {\n blackForestLabs: {\n images: [\n {\n ...(resultSeed != null && { seed: resultSeed }),\n ...(resultStartTime != null && { start_time: resultStartTime }),\n ...(resultEndTime != null && { end_time: resultEndTime }),\n ...(resultDuration != null && { duration: resultDuration }),\n ...(submit.value.cost != null && { cost: submit.value.cost }),\n ...(submit.value.input_mp != null && {\n inputMegapixels: submit.value.input_mp,\n }),\n ...(submit.value.output_mp != null && {\n outputMegapixels: submit.value.output_mp,\n }),\n },\n ],\n },\n },\n response: {\n modelId: this.modelId,\n timestamp: currentDate,\n headers: responseHeaders,\n },\n };\n }\n\n private async pollForImageUrl({\n pollUrl,\n requestId,\n headers,\n abortSignal,\n pollOverrides,\n }: {\n pollUrl: string;\n requestId: string;\n headers: Record<string, string | undefined>;\n abortSignal: AbortSignal | undefined;\n pollOverrides?: {\n pollIntervalMillis?: number;\n pollTimeoutMillis?: number;\n };\n }): Promise<{\n imageUrl: string;\n seed?: number;\n start_time?: number;\n end_time?: number;\n duration?: number;\n }> {\n const pollIntervalMillis =\n pollOverrides?.pollIntervalMillis ??\n this.config.pollIntervalMillis ??\n DEFAULT_POLL_INTERVAL_MILLIS;\n const pollTimeoutMillis =\n pollOverrides?.pollTimeoutMillis ??\n this.config.pollTimeoutMillis ??\n DEFAULT_POLL_TIMEOUT_MILLIS;\n const maxPollAttempts = Math.ceil(\n pollTimeoutMillis / Math.max(1, pollIntervalMillis),\n );\n\n const url = new URL(pollUrl);\n if (!url.searchParams.has('id')) {\n url.searchParams.set('id', requestId);\n }\n\n for (let i = 0; i < maxPollAttempts; i++) {\n const { value } = await getFromApi({\n url: url.toString(),\n headers,\n failedResponseHandler: bflFailedResponseHandler,\n successfulResponseHandler: createJsonResponseHandler(bflPollSchema),\n abortSignal,\n fetch: this.config.fetch,\n });\n\n const status = value.status;\n if (status === 'Ready') {\n if (typeof value.result?.sample === 'string') {\n return {\n imageUrl: value.result.sample,\n seed: value.result.seed ?? undefined,\n start_time: value.result.start_time ?? undefined,\n end_time: value.result.end_time ?? undefined,\n duration: value.result.duration ?? undefined,\n };\n }\n throw new Error(\n 'Black Forest Labs poll response is Ready but missing result.sample',\n );\n }\n if (status === 'Error' || status === 'Failed') {\n throw new Error('Black Forest Labs generation failed.');\n }\n\n await delay(pollIntervalMillis);\n }\n\n throw new Error('Black Forest Labs generation timed out.');\n }\n}\n\nexport const blackForestLabsImageModelOptionsSchema = lazySchema(() =>\n zodSchema(\n z.object({\n imagePrompt: z.string().optional(),\n imagePromptStrength: z.number().min(0).max(1).optional(),\n /** @deprecated use prompt.images instead */\n inputImage: z.string().optional(),\n /** @deprecated use prompt.images instead */\n inputImage2: z.string().optional(),\n /** @deprecated use prompt.images instead */\n inputImage3: z.string().optional(),\n /** @deprecated use prompt.images instead */\n inputImage4: z.string().optional(),\n /** @deprecated use prompt.images instead */\n inputImage5: z.string().optional(),\n /** @deprecated use prompt.images instead */\n inputImage6: z.string().optional(),\n /** @deprecated use prompt.images instead */\n inputImage7: z.string().optional(),\n /** @deprecated use prompt.images instead */\n inputImage8: z.string().optional(),\n /** @deprecated use prompt.images instead */\n inputImage9: z.string().optional(),\n /** @deprecated use prompt.images instead */\n inputImage10: z.string().optional(),\n steps: z.number().int().positive().optional(),\n guidance: z.number().min(0).optional(),\n width: z.number().int().min(256).max(1920).optional(),\n height: z.number().int().min(256).max(1920).optional(),\n outputFormat: z.enum(['jpeg', 'png']).optional(),\n promptUpsampling: z.boolean().optional(),\n raw: z.boolean().optional(),\n safetyTolerance: z.number().int().min(0).max(6).optional(),\n webhookSecret: z.string().optional(),\n webhookUrl: z.url().optional(),\n pollIntervalMillis: z.number().int().positive().optional(),\n pollTimeoutMillis: z.number().int().positive().optional(),\n }),\n ),\n);\n\nexport type BlackForestLabsImageModelOptions = InferSchema<\n typeof blackForestLabsImageModelOptionsSchema\n>;\n\nfunction convertSizeToAspectRatio(\n size: string,\n): BlackForestLabsAspectRatio | undefined {\n const [wStr, hStr] = size.split('x');\n const width = Number(wStr);\n const height = Number(hStr);\n if (\n !Number.isFinite(width) ||\n !Number.isFinite(height) ||\n width <= 0 ||\n height <= 0\n ) {\n return undefined;\n }\n const g = gcd(width, height);\n return `${Math.round(width / g)}:${Math.round(height / g)}`;\n}\n\nfunction gcd(a: number, b: number): number {\n let x = Math.abs(a);\n let y = Math.abs(b);\n while (y !== 0) {\n const t = y;\n y = x % y;\n x = t;\n }\n return x;\n}\n\nconst bflSubmitSchema = z.object({\n id: z.string(),\n polling_url: z.url(),\n cost: z.number().nullish(),\n input_mp: z.number().nullish(),\n output_mp: z.number().nullish(),\n});\n\nconst bflStatus = z.union([\n z.literal('Pending'),\n z.literal('Ready'),\n z.literal('Error'),\n z.literal('Failed'),\n z.literal('Request Moderated'),\n]);\n\nconst bflPollSchema = z\n .object({\n status: bflStatus.optional(),\n state: bflStatus.optional(),\n details: z.unknown().optional(),\n result: z\n .object({\n sample: z.url(),\n seed: z.number().optional(),\n start_time: z.number().optional(),\n end_time: z.number().optional(),\n duration: z.number().optional(),\n })\n .nullish(),\n })\n .refine(v => v.status != null || v.state != null, {\n message: 'Missing status in Black Forest Labs poll response',\n })\n .transform(v => ({\n status: (v.status ?? v.state)!,\n result: v.result,\n }));\n\nconst bflErrorSchema = z.object({\n message: z.string().optional(),\n detail: z.any().optional(),\n});\n\nconst bflFailedResponseHandler = createJsonErrorResponseHandler({\n errorSchema: bflErrorSchema,\n errorToMessage: error =>\n bflErrorToMessage(error) ?? 'Unknown Black Forest Labs error',\n});\n\nfunction bflErrorToMessage(error: unknown): string | undefined {\n const parsed = bflErrorSchema.safeParse(error);\n if (!parsed.success) return undefined;\n const { message, detail } = parsed.data;\n if (typeof detail === 'string') return detail;\n if (detail != null) {\n try {\n return JSON.stringify(detail);\n } catch {\n // ignore\n }\n }\n return message;\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":[]}
|
|
1
|
+
{"version":3,"sources":["../src/black-forest-labs-provider.ts","../src/black-forest-labs-image-model.ts","../src/black-forest-labs-image-model-options.ts","../src/version.ts"],"sourcesContent":["import {\n NoSuchModelError,\n type ImageModelV4,\n type ProviderV4,\n} from '@ai-sdk/provider';\nimport {\n loadApiKey,\n withoutTrailingSlash,\n withUserAgentSuffix,\n type FetchFunction,\n} from '@ai-sdk/provider-utils';\nimport { BlackForestLabsImageModel } from './black-forest-labs-image-model';\nimport type { BlackForestLabsImageModelId } from './black-forest-labs-image-settings';\nimport { VERSION } from './version';\n\nexport interface BlackForestLabsProviderSettings {\n /**\n * Black Forest Labs API key. Default value is taken from the `BFL_API_KEY` environment variable.\n */\n apiKey?: string;\n\n /**\n * Base URL for the API calls. Defaults to `https://api.bfl.ai/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\n * requests, or to provide a custom fetch implementation for e.g. testing.\n */\n fetch?: FetchFunction;\n\n /**\n * Poll interval in milliseconds between status checks. Defaults to 500ms.\n */\n pollIntervalMillis?: number;\n\n /**\n * Overall timeout in milliseconds for polling before giving up. Defaults to 60s.\n */\n pollTimeoutMillis?: number;\n}\n\nexport interface BlackForestLabsProvider extends ProviderV4 {\n /**\n * Creates a model for image generation.\n */\n image(modelId: BlackForestLabsImageModelId): ImageModelV4;\n\n /**\n * Creates a model for image generation.\n */\n imageModel(modelId: BlackForestLabsImageModelId): ImageModelV4;\n\n /**\n * @deprecated Use `embeddingModel` instead.\n */\n textEmbeddingModel(modelId: string): never;\n}\n\nconst defaultBaseURL = 'https://api.bfl.ai/v1';\n\nexport function createBlackForestLabs(\n options: BlackForestLabsProviderSettings = {},\n): BlackForestLabsProvider {\n const baseURL = withoutTrailingSlash(options.baseURL ?? defaultBaseURL);\n const getHeaders = () =>\n withUserAgentSuffix(\n {\n 'x-key': loadApiKey({\n apiKey: options.apiKey,\n environmentVariableName: 'BFL_API_KEY',\n description: 'Black Forest Labs',\n }),\n ...options.headers,\n },\n `ai-sdk/black-forest-labs/${VERSION}`,\n );\n\n const createImageModel = (modelId: BlackForestLabsImageModelId) =>\n new BlackForestLabsImageModel(modelId, {\n provider: 'black-forest-labs.image',\n baseURL: baseURL ?? defaultBaseURL,\n headers: getHeaders,\n fetch: options.fetch,\n pollIntervalMillis: options.pollIntervalMillis,\n pollTimeoutMillis: options.pollTimeoutMillis,\n });\n\n const embeddingModel = (modelId: string) => {\n throw new NoSuchModelError({\n modelId,\n modelType: 'embeddingModel',\n });\n };\n\n return {\n specificationVersion: 'v4',\n imageModel: createImageModel,\n image: createImageModel,\n languageModel: (modelId: string) => {\n throw new NoSuchModelError({\n modelId,\n modelType: 'languageModel',\n });\n },\n embeddingModel,\n textEmbeddingModel: embeddingModel,\n };\n}\n\nexport const blackForestLabs = createBlackForestLabs();\n","import type { ImageModelV4, SharedV4Warning } from '@ai-sdk/provider';\nimport {\n combineHeaders,\n createBinaryResponseHandler,\n createJsonErrorResponseHandler,\n createJsonResponseHandler,\n createStatusCodeErrorResponseHandler,\n delay,\n getFromApi,\n parseProviderOptions,\n postJsonToApi,\n resolve,\n serializeModelOptions,\n WORKFLOW_SERIALIZE,\n WORKFLOW_DESERIALIZE,\n type Resolvable,\n type FetchFunction,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\nimport { blackForestLabsImageModelOptionsSchema } from './black-forest-labs-image-model-options';\nimport type {\n BlackForestLabsAspectRatio,\n BlackForestLabsImageModelId,\n} from './black-forest-labs-image-settings';\n\nconst DEFAULT_POLL_INTERVAL_MILLIS = 500;\nconst DEFAULT_POLL_TIMEOUT_MILLIS = 60000;\n\ninterface BlackForestLabsImageModelConfig {\n provider: string;\n baseURL: string;\n headers?: Resolvable<Record<string, string | undefined>>;\n fetch?: FetchFunction;\n /**\n * Poll interval in milliseconds between status checks. Defaults to 500ms.\n */\n pollIntervalMillis?: number;\n /**\n * Overall timeout in milliseconds for polling before giving up. Defaults to 60s.\n */\n pollTimeoutMillis?: number;\n _internal?: {\n currentDate?: () => Date;\n };\n}\n\nexport class BlackForestLabsImageModel implements ImageModelV4 {\n readonly specificationVersion = 'v4';\n readonly maxImagesPerCall = 1;\n\n get provider(): string {\n return this.config.provider;\n }\n\n static [WORKFLOW_SERIALIZE](model: BlackForestLabsImageModel) {\n return serializeModelOptions({\n modelId: model.modelId,\n config: model.config,\n });\n }\n\n static [WORKFLOW_DESERIALIZE](options: {\n modelId: BlackForestLabsImageModelId;\n config: BlackForestLabsImageModelConfig;\n }) {\n return new BlackForestLabsImageModel(options.modelId, options.config);\n }\n\n constructor(\n readonly modelId: BlackForestLabsImageModelId,\n private readonly config: BlackForestLabsImageModelConfig,\n ) {}\n\n private async getArgs({\n prompt,\n files,\n mask,\n size,\n aspectRatio,\n seed,\n providerOptions,\n }: Parameters<ImageModelV4['doGenerate']>[0]) {\n const warnings: Array<SharedV4Warning> = [];\n\n const finalAspectRatio =\n aspectRatio ?? (size ? convertSizeToAspectRatio(size) : undefined);\n\n if (size && !aspectRatio) {\n warnings.push({\n type: 'unsupported',\n feature: 'size',\n details:\n 'Deriving aspect_ratio from size. Use the width and height provider options to specify dimensions for models that support them.',\n });\n } else if (size && aspectRatio) {\n warnings.push({\n type: 'unsupported',\n feature: 'size',\n details:\n 'Black Forest Labs ignores size when aspectRatio is provided. Use the width and height provider options to specify dimensions for models that support them',\n });\n }\n\n const bflOptions = await parseProviderOptions({\n provider: 'blackForestLabs',\n providerOptions,\n schema: blackForestLabsImageModelOptionsSchema,\n });\n\n const [widthStr, heightStr] = size?.split('x') ?? [];\n\n const inputImages: string[] =\n files?.map(file => {\n if (file.type === 'url') {\n return file.url;\n }\n\n if (typeof file.data === 'string') {\n return file.data;\n }\n\n return Buffer.from(file.data).toString('base64');\n }) || [];\n\n if (inputImages.length > 10) {\n throw new Error('Black Forest Labs supports up to 10 input images.');\n }\n\n const inputImagesObj: Record<string, string> = inputImages.reduce<\n Record<string, string>\n >((acc, img, index) => {\n acc[`input_image${index === 0 ? '' : `_${index + 1}`}`] = img;\n return acc;\n }, {});\n\n let maskValue: string | undefined;\n if (mask) {\n if (mask.type === 'url') {\n maskValue = mask.url;\n } else {\n if (typeof mask.data === 'string') {\n maskValue = mask.data;\n } else {\n maskValue = Buffer.from(mask.data).toString('base64');\n }\n }\n }\n\n const body: Record<string, unknown> = {\n prompt,\n seed,\n aspect_ratio: finalAspectRatio,\n width: bflOptions?.width ?? (size ? Number(widthStr) : undefined),\n height: bflOptions?.height ?? (size ? Number(heightStr) : undefined),\n steps: bflOptions?.steps,\n guidance: bflOptions?.guidance,\n image_prompt_strength: bflOptions?.imagePromptStrength,\n image_prompt: bflOptions?.imagePrompt,\n ...inputImagesObj,\n mask: maskValue,\n output_format: bflOptions?.outputFormat,\n prompt_upsampling: bflOptions?.promptUpsampling,\n raw: bflOptions?.raw,\n safety_tolerance: bflOptions?.safetyTolerance,\n webhook_secret: bflOptions?.webhookSecret,\n webhook_url: bflOptions?.webhookUrl,\n };\n\n return { body, warnings };\n }\n\n async doGenerate({\n prompt,\n files,\n mask,\n size,\n aspectRatio,\n seed,\n providerOptions,\n headers,\n abortSignal,\n }: Parameters<ImageModelV4['doGenerate']>[0]): Promise<\n Awaited<ReturnType<ImageModelV4['doGenerate']>>\n > {\n const { body, warnings } = await this.getArgs({\n prompt,\n files,\n mask,\n size,\n aspectRatio,\n seed,\n providerOptions,\n n: 1,\n headers,\n abortSignal,\n } as Parameters<ImageModelV4['doGenerate']>[0]);\n\n const bflOptions = await parseProviderOptions({\n provider: 'blackForestLabs',\n providerOptions,\n schema: blackForestLabsImageModelOptionsSchema,\n });\n\n const currentDate = this.config._internal?.currentDate?.() ?? new Date();\n const combinedHeaders = combineHeaders(\n await resolve(this.config.headers),\n headers,\n );\n\n const submit = await postJsonToApi({\n url: `${this.config.baseURL}/${this.modelId}`,\n headers: combinedHeaders,\n body,\n failedResponseHandler: bflFailedResponseHandler,\n successfulResponseHandler: createJsonResponseHandler(bflSubmitSchema),\n abortSignal,\n fetch: this.config.fetch,\n });\n\n const pollUrl = submit.value.polling_url;\n const requestId = submit.value.id;\n\n const {\n imageUrl,\n seed: resultSeed,\n start_time: resultStartTime,\n end_time: resultEndTime,\n duration: resultDuration,\n } = await this.pollForImageUrl({\n pollUrl,\n requestId,\n headers: combinedHeaders,\n abortSignal,\n pollOverrides: {\n pollIntervalMillis: bflOptions?.pollIntervalMillis,\n pollTimeoutMillis: bflOptions?.pollTimeoutMillis,\n },\n });\n\n const { value: imageBytes, responseHeaders } = await getFromApi({\n url: imageUrl,\n headers: combinedHeaders,\n abortSignal,\n failedResponseHandler: createStatusCodeErrorResponseHandler(),\n successfulResponseHandler: createBinaryResponseHandler(),\n fetch: this.config.fetch,\n });\n\n return {\n images: [imageBytes],\n warnings,\n providerMetadata: {\n blackForestLabs: {\n images: [\n {\n ...(resultSeed != null && { seed: resultSeed }),\n ...(resultStartTime != null && { start_time: resultStartTime }),\n ...(resultEndTime != null && { end_time: resultEndTime }),\n ...(resultDuration != null && { duration: resultDuration }),\n ...(submit.value.cost != null && { cost: submit.value.cost }),\n ...(submit.value.input_mp != null && {\n inputMegapixels: submit.value.input_mp,\n }),\n ...(submit.value.output_mp != null && {\n outputMegapixels: submit.value.output_mp,\n }),\n },\n ],\n },\n },\n response: {\n modelId: this.modelId,\n timestamp: currentDate,\n headers: responseHeaders,\n },\n };\n }\n\n private async pollForImageUrl({\n pollUrl,\n requestId,\n headers,\n abortSignal,\n pollOverrides,\n }: {\n pollUrl: string;\n requestId: string;\n headers: Record<string, string | undefined>;\n abortSignal: AbortSignal | undefined;\n pollOverrides?: {\n pollIntervalMillis?: number;\n pollTimeoutMillis?: number;\n };\n }): Promise<{\n imageUrl: string;\n seed?: number;\n start_time?: number;\n end_time?: number;\n duration?: number;\n }> {\n const pollIntervalMillis =\n pollOverrides?.pollIntervalMillis ??\n this.config.pollIntervalMillis ??\n DEFAULT_POLL_INTERVAL_MILLIS;\n const pollTimeoutMillis =\n pollOverrides?.pollTimeoutMillis ??\n this.config.pollTimeoutMillis ??\n DEFAULT_POLL_TIMEOUT_MILLIS;\n const maxPollAttempts = Math.ceil(\n pollTimeoutMillis / Math.max(1, pollIntervalMillis),\n );\n\n const url = new URL(pollUrl);\n if (!url.searchParams.has('id')) {\n url.searchParams.set('id', requestId);\n }\n\n for (let i = 0; i < maxPollAttempts; i++) {\n const { value } = await getFromApi({\n url: url.toString(),\n headers,\n failedResponseHandler: bflFailedResponseHandler,\n successfulResponseHandler: createJsonResponseHandler(bflPollSchema),\n abortSignal,\n fetch: this.config.fetch,\n });\n\n const status = value.status;\n if (status === 'Ready') {\n if (typeof value.result?.sample === 'string') {\n return {\n imageUrl: value.result.sample,\n seed: value.result.seed ?? undefined,\n start_time: value.result.start_time ?? undefined,\n end_time: value.result.end_time ?? undefined,\n duration: value.result.duration ?? undefined,\n };\n }\n throw new Error(\n 'Black Forest Labs poll response is Ready but missing result.sample',\n );\n }\n if (status === 'Error' || status === 'Failed') {\n throw new Error('Black Forest Labs generation failed.');\n }\n\n await delay(pollIntervalMillis);\n }\n\n throw new Error('Black Forest Labs generation timed out.');\n }\n}\n\nfunction convertSizeToAspectRatio(\n size: string,\n): BlackForestLabsAspectRatio | undefined {\n const [wStr, hStr] = size.split('x');\n const width = Number(wStr);\n const height = Number(hStr);\n if (\n !Number.isFinite(width) ||\n !Number.isFinite(height) ||\n width <= 0 ||\n height <= 0\n ) {\n return undefined;\n }\n const g = gcd(width, height);\n return `${Math.round(width / g)}:${Math.round(height / g)}`;\n}\n\nfunction gcd(a: number, b: number): number {\n let x = Math.abs(a);\n let y = Math.abs(b);\n while (y !== 0) {\n const t = y;\n y = x % y;\n x = t;\n }\n return x;\n}\n\nconst bflSubmitSchema = z.object({\n id: z.string(),\n polling_url: z.url(),\n cost: z.number().nullish(),\n input_mp: z.number().nullish(),\n output_mp: z.number().nullish(),\n});\n\nconst bflStatus = z.union([\n z.literal('Pending'),\n z.literal('Ready'),\n z.literal('Error'),\n z.literal('Failed'),\n z.literal('Request Moderated'),\n]);\n\nconst bflPollSchema = z\n .object({\n status: bflStatus.optional(),\n state: bflStatus.optional(),\n details: z.unknown().optional(),\n result: z\n .object({\n sample: z.url(),\n seed: z.number().optional(),\n start_time: z.number().optional(),\n end_time: z.number().optional(),\n duration: z.number().optional(),\n })\n .nullish(),\n })\n .refine(v => v.status != null || v.state != null, {\n message: 'Missing status in Black Forest Labs poll response',\n })\n .transform(v => ({\n status: (v.status ?? v.state)!,\n result: v.result,\n }));\n\nconst bflErrorSchema = z.object({\n message: z.string().optional(),\n detail: z.any().optional(),\n});\n\nconst bflFailedResponseHandler = createJsonErrorResponseHandler({\n errorSchema: bflErrorSchema,\n errorToMessage: error =>\n bflErrorToMessage(error) ?? 'Unknown Black Forest Labs error',\n});\n\nfunction bflErrorToMessage(error: unknown): string | undefined {\n const parsed = bflErrorSchema.safeParse(error);\n if (!parsed.success) return undefined;\n const { message, detail } = parsed.data;\n if (typeof detail === 'string') return detail;\n if (detail != null) {\n try {\n return JSON.stringify(detail);\n } catch {\n // ignore\n }\n }\n return message;\n}\n","import {\n lazySchema,\n zodSchema,\n type InferSchema,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\nexport const blackForestLabsImageModelOptionsSchema = lazySchema(() =>\n zodSchema(\n z.object({\n imagePrompt: z.string().optional(),\n imagePromptStrength: z.number().min(0).max(1).optional(),\n /** @deprecated use prompt.images instead */\n inputImage: z.string().optional(),\n /** @deprecated use prompt.images instead */\n inputImage2: z.string().optional(),\n /** @deprecated use prompt.images instead */\n inputImage3: z.string().optional(),\n /** @deprecated use prompt.images instead */\n inputImage4: z.string().optional(),\n /** @deprecated use prompt.images instead */\n inputImage5: z.string().optional(),\n /** @deprecated use prompt.images instead */\n inputImage6: z.string().optional(),\n /** @deprecated use prompt.images instead */\n inputImage7: z.string().optional(),\n /** @deprecated use prompt.images instead */\n inputImage8: z.string().optional(),\n /** @deprecated use prompt.images instead */\n inputImage9: z.string().optional(),\n /** @deprecated use prompt.images instead */\n inputImage10: z.string().optional(),\n steps: z.number().int().positive().optional(),\n guidance: z.number().min(0).optional(),\n width: z.number().int().min(256).max(1920).optional(),\n height: z.number().int().min(256).max(1920).optional(),\n outputFormat: z.enum(['jpeg', 'png']).optional(),\n promptUpsampling: z.boolean().optional(),\n raw: z.boolean().optional(),\n safetyTolerance: z.number().int().min(0).max(6).optional(),\n webhookSecret: z.string().optional(),\n webhookUrl: z.url().optional(),\n pollIntervalMillis: z.number().int().positive().optional(),\n pollTimeoutMillis: z.number().int().positive().optional(),\n }),\n ),\n);\n\nexport type BlackForestLabsImageModelOptions = InferSchema<\n typeof blackForestLabsImageModelOptionsSchema\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"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ai-sdk/black-forest-labs",
|
|
3
|
-
"version": "2.0.0-beta.
|
|
3
|
+
"version": "2.0.0-beta.31",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"sideEffects": false,
|
|
@@ -29,7 +29,7 @@
|
|
|
29
29
|
},
|
|
30
30
|
"dependencies": {
|
|
31
31
|
"@ai-sdk/provider": "4.0.0-beta.14",
|
|
32
|
-
"@ai-sdk/provider-utils": "5.0.0-beta.
|
|
32
|
+
"@ai-sdk/provider-utils": "5.0.0-beta.30"
|
|
33
33
|
},
|
|
34
34
|
"devDependencies": {
|
|
35
35
|
"@types/node": "20.17.24",
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import {
|
|
2
|
+
lazySchema,
|
|
3
|
+
zodSchema,
|
|
4
|
+
type InferSchema,
|
|
5
|
+
} from '@ai-sdk/provider-utils';
|
|
6
|
+
import { z } from 'zod/v4';
|
|
7
|
+
|
|
8
|
+
export const blackForestLabsImageModelOptionsSchema = lazySchema(() =>
|
|
9
|
+
zodSchema(
|
|
10
|
+
z.object({
|
|
11
|
+
imagePrompt: z.string().optional(),
|
|
12
|
+
imagePromptStrength: z.number().min(0).max(1).optional(),
|
|
13
|
+
/** @deprecated use prompt.images instead */
|
|
14
|
+
inputImage: z.string().optional(),
|
|
15
|
+
/** @deprecated use prompt.images instead */
|
|
16
|
+
inputImage2: z.string().optional(),
|
|
17
|
+
/** @deprecated use prompt.images instead */
|
|
18
|
+
inputImage3: z.string().optional(),
|
|
19
|
+
/** @deprecated use prompt.images instead */
|
|
20
|
+
inputImage4: z.string().optional(),
|
|
21
|
+
/** @deprecated use prompt.images instead */
|
|
22
|
+
inputImage5: z.string().optional(),
|
|
23
|
+
/** @deprecated use prompt.images instead */
|
|
24
|
+
inputImage6: z.string().optional(),
|
|
25
|
+
/** @deprecated use prompt.images instead */
|
|
26
|
+
inputImage7: z.string().optional(),
|
|
27
|
+
/** @deprecated use prompt.images instead */
|
|
28
|
+
inputImage8: z.string().optional(),
|
|
29
|
+
/** @deprecated use prompt.images instead */
|
|
30
|
+
inputImage9: z.string().optional(),
|
|
31
|
+
/** @deprecated use prompt.images instead */
|
|
32
|
+
inputImage10: z.string().optional(),
|
|
33
|
+
steps: z.number().int().positive().optional(),
|
|
34
|
+
guidance: z.number().min(0).optional(),
|
|
35
|
+
width: z.number().int().min(256).max(1920).optional(),
|
|
36
|
+
height: z.number().int().min(256).max(1920).optional(),
|
|
37
|
+
outputFormat: z.enum(['jpeg', 'png']).optional(),
|
|
38
|
+
promptUpsampling: z.boolean().optional(),
|
|
39
|
+
raw: z.boolean().optional(),
|
|
40
|
+
safetyTolerance: z.number().int().min(0).max(6).optional(),
|
|
41
|
+
webhookSecret: z.string().optional(),
|
|
42
|
+
webhookUrl: z.url().optional(),
|
|
43
|
+
pollIntervalMillis: z.number().int().positive().optional(),
|
|
44
|
+
pollTimeoutMillis: z.number().int().positive().optional(),
|
|
45
|
+
}),
|
|
46
|
+
),
|
|
47
|
+
);
|
|
48
|
+
|
|
49
|
+
export type BlackForestLabsImageModelOptions = InferSchema<
|
|
50
|
+
typeof blackForestLabsImageModelOptionsSchema
|
|
51
|
+
>;
|
|
@@ -7,19 +7,17 @@ import {
|
|
|
7
7
|
createStatusCodeErrorResponseHandler,
|
|
8
8
|
delay,
|
|
9
9
|
getFromApi,
|
|
10
|
-
lazySchema,
|
|
11
10
|
parseProviderOptions,
|
|
12
11
|
postJsonToApi,
|
|
13
12
|
resolve,
|
|
14
13
|
serializeModelOptions,
|
|
15
14
|
WORKFLOW_SERIALIZE,
|
|
16
15
|
WORKFLOW_DESERIALIZE,
|
|
17
|
-
zodSchema,
|
|
18
|
-
type InferSchema,
|
|
19
16
|
type Resolvable,
|
|
20
17
|
type FetchFunction,
|
|
21
18
|
} from '@ai-sdk/provider-utils';
|
|
22
19
|
import { z } from 'zod/v4';
|
|
20
|
+
import { blackForestLabsImageModelOptionsSchema } from './black-forest-labs-image-model-options';
|
|
23
21
|
import type {
|
|
24
22
|
BlackForestLabsAspectRatio,
|
|
25
23
|
BlackForestLabsImageModelId,
|
|
@@ -353,51 +351,6 @@ export class BlackForestLabsImageModel implements ImageModelV4 {
|
|
|
353
351
|
}
|
|
354
352
|
}
|
|
355
353
|
|
|
356
|
-
export const blackForestLabsImageModelOptionsSchema = lazySchema(() =>
|
|
357
|
-
zodSchema(
|
|
358
|
-
z.object({
|
|
359
|
-
imagePrompt: z.string().optional(),
|
|
360
|
-
imagePromptStrength: z.number().min(0).max(1).optional(),
|
|
361
|
-
/** @deprecated use prompt.images instead */
|
|
362
|
-
inputImage: z.string().optional(),
|
|
363
|
-
/** @deprecated use prompt.images instead */
|
|
364
|
-
inputImage2: z.string().optional(),
|
|
365
|
-
/** @deprecated use prompt.images instead */
|
|
366
|
-
inputImage3: z.string().optional(),
|
|
367
|
-
/** @deprecated use prompt.images instead */
|
|
368
|
-
inputImage4: z.string().optional(),
|
|
369
|
-
/** @deprecated use prompt.images instead */
|
|
370
|
-
inputImage5: z.string().optional(),
|
|
371
|
-
/** @deprecated use prompt.images instead */
|
|
372
|
-
inputImage6: z.string().optional(),
|
|
373
|
-
/** @deprecated use prompt.images instead */
|
|
374
|
-
inputImage7: z.string().optional(),
|
|
375
|
-
/** @deprecated use prompt.images instead */
|
|
376
|
-
inputImage8: z.string().optional(),
|
|
377
|
-
/** @deprecated use prompt.images instead */
|
|
378
|
-
inputImage9: z.string().optional(),
|
|
379
|
-
/** @deprecated use prompt.images instead */
|
|
380
|
-
inputImage10: z.string().optional(),
|
|
381
|
-
steps: z.number().int().positive().optional(),
|
|
382
|
-
guidance: z.number().min(0).optional(),
|
|
383
|
-
width: z.number().int().min(256).max(1920).optional(),
|
|
384
|
-
height: z.number().int().min(256).max(1920).optional(),
|
|
385
|
-
outputFormat: z.enum(['jpeg', 'png']).optional(),
|
|
386
|
-
promptUpsampling: z.boolean().optional(),
|
|
387
|
-
raw: z.boolean().optional(),
|
|
388
|
-
safetyTolerance: z.number().int().min(0).max(6).optional(),
|
|
389
|
-
webhookSecret: z.string().optional(),
|
|
390
|
-
webhookUrl: z.url().optional(),
|
|
391
|
-
pollIntervalMillis: z.number().int().positive().optional(),
|
|
392
|
-
pollTimeoutMillis: z.number().int().positive().optional(),
|
|
393
|
-
}),
|
|
394
|
-
),
|
|
395
|
-
);
|
|
396
|
-
|
|
397
|
-
export type BlackForestLabsImageModelOptions = InferSchema<
|
|
398
|
-
typeof blackForestLabsImageModelOptionsSchema
|
|
399
|
-
>;
|
|
400
|
-
|
|
401
354
|
function convertSizeToAspectRatio(
|
|
402
355
|
size: string,
|
|
403
356
|
): BlackForestLabsAspectRatio | undefined {
|
package/src/index.ts
CHANGED
|
@@ -14,5 +14,5 @@ export type {
|
|
|
14
14
|
BlackForestLabsImageModelOptions,
|
|
15
15
|
/** @deprecated Use `BlackForestLabsImageModelOptions` instead. */
|
|
16
16
|
BlackForestLabsImageModelOptions as BlackForestLabsImageProviderOptions,
|
|
17
|
-
} from './black-forest-labs-image-model';
|
|
17
|
+
} from './black-forest-labs-image-model-options';
|
|
18
18
|
export { VERSION } from './version';
|