@huggingface/inference 4.13.8 → 4.13.9
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/dist/commonjs/package.d.ts +1 -1
- package/dist/commonjs/package.js +1 -1
- package/dist/commonjs/providers/fal-ai.d.ts +5 -12
- package/dist/commonjs/providers/fal-ai.d.ts.map +1 -1
- package/dist/commonjs/providers/fal-ai.js +24 -34
- package/dist/commonjs/providers/wavespeed.d.ts +4 -1
- package/dist/commonjs/providers/wavespeed.d.ts.map +1 -1
- package/dist/commonjs/providers/wavespeed.js +20 -3
- package/dist/esm/package.d.ts +1 -1
- package/dist/esm/package.js +1 -1
- package/dist/esm/providers/fal-ai.d.ts +5 -12
- package/dist/esm/providers/fal-ai.d.ts.map +1 -1
- package/dist/esm/providers/fal-ai.js +24 -34
- package/dist/esm/providers/wavespeed.d.ts +4 -1
- package/dist/esm/providers/wavespeed.d.ts.map +1 -1
- package/dist/esm/providers/wavespeed.js +20 -3
- package/package.json +1 -1
- package/src/package.ts +1 -1
- package/src/providers/fal-ai.ts +33 -39
- package/src/providers/wavespeed.ts +39 -4
package/dist/commonjs/package.js
CHANGED
|
@@ -2,5 +2,5 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.PACKAGE_NAME = exports.PACKAGE_VERSION = void 0;
|
|
4
4
|
// Generated file from package.json. Issues importing JSON directly when publishing on commonjs/ESM - see https://github.com/microsoft/TypeScript/issues/51783
|
|
5
|
-
exports.PACKAGE_VERSION = "4.13.
|
|
5
|
+
exports.PACKAGE_VERSION = "4.13.9";
|
|
6
6
|
exports.PACKAGE_NAME = "@huggingface/inference";
|
|
@@ -10,11 +10,6 @@ export interface FalAiQueueOutput {
|
|
|
10
10
|
status: string;
|
|
11
11
|
response_url: string;
|
|
12
12
|
}
|
|
13
|
-
interface FalAITextToImageOutput {
|
|
14
|
-
images: Array<{
|
|
15
|
-
url: string;
|
|
16
|
-
}>;
|
|
17
|
-
}
|
|
18
13
|
export declare const FAL_AI_SUPPORTED_BLOB_TYPES: string[];
|
|
19
14
|
declare abstract class FalAITask extends TaskProviderHelper {
|
|
20
15
|
constructor(url?: string);
|
|
@@ -24,16 +19,18 @@ declare abstract class FalAITask extends TaskProviderHelper {
|
|
|
24
19
|
}
|
|
25
20
|
declare abstract class FalAiQueueTask extends FalAITask {
|
|
26
21
|
abstract task: InferenceTask;
|
|
22
|
+
makeRoute(params: UrlParams): string;
|
|
27
23
|
getResponseFromQueueApi(response: FalAiQueueOutput, url?: string, headers?: Record<string, string>): Promise<unknown>;
|
|
28
24
|
}
|
|
29
|
-
export declare class FalAITextToImageTask extends
|
|
25
|
+
export declare class FalAITextToImageTask extends FalAiQueueTask implements TextToImageTaskHelper {
|
|
26
|
+
task: InferenceTask;
|
|
27
|
+
constructor();
|
|
30
28
|
preparePayload(params: BodyParams): Record<string, unknown>;
|
|
31
|
-
getResponse(response:
|
|
29
|
+
getResponse(response: FalAiQueueOutput, url?: string, headers?: Record<string, string>, outputType?: "url" | "blob" | "json"): Promise<string | Blob | Record<string, unknown>>;
|
|
32
30
|
}
|
|
33
31
|
export declare class FalAIImageToImageTask extends FalAiQueueTask implements ImageToImageTaskHelper {
|
|
34
32
|
task: InferenceTask;
|
|
35
33
|
constructor();
|
|
36
|
-
makeRoute(params: UrlParams): string;
|
|
37
34
|
preparePayload(params: BodyParams): Record<string, unknown>;
|
|
38
35
|
preparePayloadAsync(args: ImageToImageArgs): Promise<RequestArgs>;
|
|
39
36
|
getResponse(response: FalAiQueueOutput, url?: string, headers?: Record<string, string>): Promise<Blob>;
|
|
@@ -41,15 +38,12 @@ export declare class FalAIImageToImageTask extends FalAiQueueTask implements Ima
|
|
|
41
38
|
export declare class FalAITextToVideoTask extends FalAiQueueTask implements TextToVideoTaskHelper {
|
|
42
39
|
task: InferenceTask;
|
|
43
40
|
constructor();
|
|
44
|
-
makeRoute(params: UrlParams): string;
|
|
45
41
|
preparePayload(params: BodyParams): Record<string, unknown>;
|
|
46
42
|
getResponse(response: FalAiQueueOutput, url?: string, headers?: Record<string, string>): Promise<Blob>;
|
|
47
43
|
}
|
|
48
44
|
export declare class FalAIImageToVideoTask extends FalAiQueueTask implements ImageToVideoTaskHelper {
|
|
49
45
|
task: InferenceTask;
|
|
50
46
|
constructor();
|
|
51
|
-
/** Same queue routing rule as the other Fal queue tasks */
|
|
52
|
-
makeRoute(params: UrlParams): string;
|
|
53
47
|
/** Synchronous case – caller already gave us base64 or a URL */
|
|
54
48
|
preparePayload(params: BodyParams): Record<string, unknown>;
|
|
55
49
|
/** Asynchronous helper – caller gave us a Blob */
|
|
@@ -69,7 +63,6 @@ export declare class FalAITextToSpeechTask extends FalAITask {
|
|
|
69
63
|
export declare class FalAIImageSegmentationTask extends FalAiQueueTask implements ImageSegmentationTaskHelper {
|
|
70
64
|
task: InferenceTask;
|
|
71
65
|
constructor();
|
|
72
|
-
makeRoute(params: UrlParams): string;
|
|
73
66
|
preparePayload(params: BodyParams): Record<string, unknown>;
|
|
74
67
|
preparePayloadAsync(args: ImageSegmentationArgs): Promise<RequestArgs>;
|
|
75
68
|
getResponse(response: FalAiQueueOutput, url?: string, headers?: Record<string, string>): Promise<ImageSegmentationOutput>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fal-ai.d.ts","sourceRoot":"","sources":["../../../src/providers/fal-ai.ts"],"names":[],"mappings":"AAkBA,OAAO,KAAK,EAAE,gCAAgC,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAC;AAEpG,OAAO,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE,aAAa,EAAW,WAAW,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAG5G,OAAO,KAAK,EAAE,2BAA2B,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAC/F,OAAO,EACN,KAAK,oCAAoC,EACzC,kBAAkB,EAClB,KAAK,qBAAqB,EAC1B,KAAK,qBAAqB,EAC1B,KAAK,sBAAsB,EAC3B,MAAM,qBAAqB,CAAC;AAE7B,OAAO,KAAK,EAAE,8BAA8B,EAAE,MAAM,8CAA8C,CAAC;AAMnG,OAAO,KAAK,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAC5E,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,kCAAkC,CAAC;AAE9E,MAAM,WAAW,gBAAgB;IAChC,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,MAAM,CAAC;CACrB;
|
|
1
|
+
{"version":3,"file":"fal-ai.d.ts","sourceRoot":"","sources":["../../../src/providers/fal-ai.ts"],"names":[],"mappings":"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"}
|
|
@@ -46,6 +46,12 @@ class FalAITask extends providerHelper_js_1.TaskProviderHelper {
|
|
|
46
46
|
}
|
|
47
47
|
}
|
|
48
48
|
class FalAiQueueTask extends FalAITask {
|
|
49
|
+
makeRoute(params) {
|
|
50
|
+
if (params.authMethod !== "provider-key") {
|
|
51
|
+
return `/${params.model}?_subdomain=queue`;
|
|
52
|
+
}
|
|
53
|
+
return `/${params.model}`;
|
|
54
|
+
}
|
|
49
55
|
async getResponseFromQueueApi(response, url, headers) {
|
|
50
56
|
if (!url || !headers) {
|
|
51
57
|
throw new errors_js_1.InferenceClientInputError(`URL and headers are required for ${this.task} task`);
|
|
@@ -94,12 +100,16 @@ class FalAiQueueTask extends FalAITask {
|
|
|
94
100
|
function buildLoraPath(modelId, adapterWeightsPath) {
|
|
95
101
|
return `${config_js_1.HF_HUB_URL}/${modelId}/resolve/main/${adapterWeightsPath}`;
|
|
96
102
|
}
|
|
97
|
-
class FalAITextToImageTask extends
|
|
103
|
+
class FalAITextToImageTask extends FalAiQueueTask {
|
|
104
|
+
task;
|
|
105
|
+
constructor() {
|
|
106
|
+
super("https://queue.fal.run");
|
|
107
|
+
this.task = "text-to-image";
|
|
108
|
+
}
|
|
98
109
|
preparePayload(params) {
|
|
99
110
|
const payload = {
|
|
100
111
|
...(0, omit_js_1.omit)(params.args, ["inputs", "parameters"]),
|
|
101
112
|
...params.args.parameters,
|
|
102
|
-
sync_mode: true,
|
|
103
113
|
prompt: params.args.inputs,
|
|
104
114
|
};
|
|
105
115
|
if (params.mapping?.adapter === "lora" && params.mapping.adapterWeightsPath) {
|
|
@@ -116,22 +126,24 @@ class FalAITextToImageTask extends FalAITask {
|
|
|
116
126
|
return payload;
|
|
117
127
|
}
|
|
118
128
|
async getResponse(response, url, headers, outputType) {
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
129
|
+
const result = (await this.getResponseFromQueueApi(response, url, headers));
|
|
130
|
+
if (typeof result === "object" &&
|
|
131
|
+
"images" in result &&
|
|
132
|
+
Array.isArray(result.images) &&
|
|
133
|
+
result.images.length > 0 &&
|
|
134
|
+
"url" in result.images[0] &&
|
|
135
|
+
typeof result.images[0].url === "string" &&
|
|
136
|
+
(0, isUrl_js_1.isUrl)(result.images[0].url)) {
|
|
125
137
|
if (outputType === "json") {
|
|
126
|
-
return { ...
|
|
138
|
+
return { ...result };
|
|
127
139
|
}
|
|
128
140
|
if (outputType === "url") {
|
|
129
|
-
return
|
|
141
|
+
return result.images[0].url;
|
|
130
142
|
}
|
|
131
|
-
const urlResponse = await fetch(
|
|
143
|
+
const urlResponse = await fetch(result.images[0].url);
|
|
132
144
|
return await urlResponse.blob();
|
|
133
145
|
}
|
|
134
|
-
throw new errors_js_1.InferenceClientProviderOutputError(
|
|
146
|
+
throw new errors_js_1.InferenceClientProviderOutputError(`Received malformed response from Fal.ai text-to-image API: expected { images: Array<{ url: string }> } result format, got instead: ${JSON.stringify(result)}`);
|
|
135
147
|
}
|
|
136
148
|
}
|
|
137
149
|
exports.FalAITextToImageTask = FalAITextToImageTask;
|
|
@@ -141,12 +153,6 @@ class FalAIImageToImageTask extends FalAiQueueTask {
|
|
|
141
153
|
super("https://queue.fal.run");
|
|
142
154
|
this.task = "image-to-image";
|
|
143
155
|
}
|
|
144
|
-
makeRoute(params) {
|
|
145
|
-
if (params.authMethod !== "provider-key") {
|
|
146
|
-
return `/${params.model}?_subdomain=queue`;
|
|
147
|
-
}
|
|
148
|
-
return `/${params.model}`;
|
|
149
|
-
}
|
|
150
156
|
preparePayload(params) {
|
|
151
157
|
const payload = params.args;
|
|
152
158
|
if (params.mapping?.adapter === "lora" && params.mapping.adapterWeightsPath) {
|
|
@@ -198,12 +204,6 @@ class FalAITextToVideoTask extends FalAiQueueTask {
|
|
|
198
204
|
super("https://queue.fal.run");
|
|
199
205
|
this.task = "text-to-video";
|
|
200
206
|
}
|
|
201
|
-
makeRoute(params) {
|
|
202
|
-
if (params.authMethod !== "provider-key") {
|
|
203
|
-
return `/${params.model}?_subdomain=queue`;
|
|
204
|
-
}
|
|
205
|
-
return `/${params.model}`;
|
|
206
|
-
}
|
|
207
207
|
preparePayload(params) {
|
|
208
208
|
return {
|
|
209
209
|
...(0, omit_js_1.omit)(params.args, ["inputs", "parameters"]),
|
|
@@ -236,10 +236,6 @@ class FalAIImageToVideoTask extends FalAiQueueTask {
|
|
|
236
236
|
super("https://queue.fal.run");
|
|
237
237
|
this.task = "image-to-video";
|
|
238
238
|
}
|
|
239
|
-
/** Same queue routing rule as the other Fal queue tasks */
|
|
240
|
-
makeRoute(params) {
|
|
241
|
-
return params.authMethod !== "provider-key" ? `/${params.model}?_subdomain=queue` : `/${params.model}`;
|
|
242
|
-
}
|
|
243
239
|
/** Synchronous case – caller already gave us base64 or a URL */
|
|
244
240
|
preparePayload(params) {
|
|
245
241
|
return {
|
|
@@ -348,12 +344,6 @@ class FalAIImageSegmentationTask extends FalAiQueueTask {
|
|
|
348
344
|
super("https://queue.fal.run");
|
|
349
345
|
this.task = "image-segmentation";
|
|
350
346
|
}
|
|
351
|
-
makeRoute(params) {
|
|
352
|
-
if (params.authMethod !== "provider-key") {
|
|
353
|
-
return `/${params.model}?_subdomain=queue`;
|
|
354
|
-
}
|
|
355
|
-
return `/${params.model}`;
|
|
356
|
-
}
|
|
357
347
|
preparePayload(params) {
|
|
358
348
|
return {
|
|
359
349
|
...(0, omit_js_1.omit)(params.args, ["inputs", "parameters"]),
|
|
@@ -26,21 +26,24 @@ declare abstract class WavespeedAITask extends TaskProviderHelper {
|
|
|
26
26
|
constructor(url?: string);
|
|
27
27
|
makeRoute(params: UrlParams): string;
|
|
28
28
|
preparePayload(params: BodyParams<ImageToImageArgs | TextToImageArgs | TextToVideoArgs | ImageToVideoArgs>): Record<string, unknown>;
|
|
29
|
-
getResponse(response: WaveSpeedAISubmitTaskResponse, url?: string, headers?: Record<string, string
|
|
29
|
+
getResponse(response: WaveSpeedAISubmitTaskResponse, url?: string, headers?: Record<string, string>, outputType?: "url" | "blob" | "json"): Promise<string | Blob | Record<string, unknown>>;
|
|
30
30
|
}
|
|
31
31
|
export declare class WavespeedAITextToImageTask extends WavespeedAITask implements TextToImageTaskHelper {
|
|
32
32
|
constructor();
|
|
33
33
|
}
|
|
34
34
|
export declare class WavespeedAITextToVideoTask extends WavespeedAITask implements TextToVideoTaskHelper {
|
|
35
35
|
constructor();
|
|
36
|
+
getResponse(response: WaveSpeedAISubmitTaskResponse, url?: string, headers?: Record<string, string>): Promise<Blob>;
|
|
36
37
|
}
|
|
37
38
|
export declare class WavespeedAIImageToImageTask extends WavespeedAITask implements ImageToImageTaskHelper {
|
|
38
39
|
constructor();
|
|
39
40
|
preparePayloadAsync(args: ImageToImageArgs): Promise<RequestArgs>;
|
|
41
|
+
getResponse(response: WaveSpeedAISubmitTaskResponse, url?: string, headers?: Record<string, string>): Promise<Blob>;
|
|
40
42
|
}
|
|
41
43
|
export declare class WavespeedAIImageToVideoTask extends WavespeedAITask implements ImageToVideoTaskHelper {
|
|
42
44
|
constructor();
|
|
43
45
|
preparePayloadAsync(args: ImageToVideoArgs): Promise<RequestArgs>;
|
|
46
|
+
getResponse(response: WaveSpeedAISubmitTaskResponse, url?: string, headers?: Record<string, string>): Promise<Blob>;
|
|
44
47
|
}
|
|
45
48
|
export {};
|
|
46
49
|
//# sourceMappingURL=wavespeed.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wavespeed.d.ts","sourceRoot":"","sources":["../../../src/providers/wavespeed.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAClE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AACpE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAClE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AACpE,OAAO,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAItE,OAAO,KAAK,EACX,qBAAqB,EACrB,qBAAqB,EACrB,sBAAsB,EACtB,sBAAsB,EACtB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AA6BzD;;GAEG;AACH,UAAU,yBAAyB;IAClC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE;QACL,GAAG,EAAE,MAAM,CAAC;KACZ,CAAC;CACF;AAWD;;GAEG;AACH,UAAU,6BAA6B;IACtC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,yBAAyB,CAAC;CAChC;AAgBD,uBAAe,eAAgB,SAAQ,kBAAkB;gBAC5C,GAAG,CAAC,EAAE,MAAM;IAIxB,SAAS,CAAC,MAAM,EAAE,SAAS,GAAG,MAAM;IAIpC,cAAc,CACb,MAAM,EAAE,UAAU,CAAC,gBAAgB,GAAG,eAAe,GAAG,eAAe,GAAG,gBAAgB,CAAC,GACzF,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAkBX,WAAW,CACzB,QAAQ,EAAE,6BAA6B,EACvC,GAAG,CAAC,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,
|
|
1
|
+
{"version":3,"file":"wavespeed.d.ts","sourceRoot":"","sources":["../../../src/providers/wavespeed.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAClE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AACpE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAClE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AACpE,OAAO,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAItE,OAAO,KAAK,EACX,qBAAqB,EACrB,qBAAqB,EACrB,sBAAsB,EACtB,sBAAsB,EACtB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AA6BzD;;GAEG;AACH,UAAU,yBAAyB;IAClC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE;QACL,GAAG,EAAE,MAAM,CAAC;KACZ,CAAC;CACF;AAWD;;GAEG;AACH,UAAU,6BAA6B;IACtC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,yBAAyB,CAAC;CAChC;AAgBD,uBAAe,eAAgB,SAAQ,kBAAkB;gBAC5C,GAAG,CAAC,EAAE,MAAM;IAIxB,SAAS,CAAC,MAAM,EAAE,SAAS,GAAG,MAAM;IAIpC,cAAc,CACb,MAAM,EAAE,UAAU,CAAC,gBAAgB,GAAG,eAAe,GAAG,eAAe,GAAG,gBAAgB,CAAC,GACzF,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAkBX,WAAW,CACzB,QAAQ,EAAE,6BAA6B,EACvC,GAAG,CAAC,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAChC,UAAU,CAAC,EAAE,KAAK,GAAG,MAAM,GAAG,MAAM,GAClC,OAAO,CAAC,MAAM,GAAG,IAAI,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CA4EnD;AAED,qBAAa,0BAA2B,SAAQ,eAAgB,YAAW,qBAAqB;;CAI/F;AAED,qBAAa,0BAA2B,SAAQ,eAAgB,YAAW,qBAAqB;;IAKhF,WAAW,CACzB,QAAQ,EAAE,6BAA6B,EACvC,GAAG,CAAC,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAC9B,OAAO,CAAC,IAAI,CAAC;CAGhB;AAED,qBAAa,2BAA4B,SAAQ,eAAgB,YAAW,sBAAsB;;IAK3F,mBAAmB,CAAC,IAAI,EAAE,gBAAgB,GAAG,OAAO,CAAC,WAAW,CAAC;IAOxD,WAAW,CACzB,QAAQ,EAAE,6BAA6B,EACvC,GAAG,CAAC,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAC9B,OAAO,CAAC,IAAI,CAAC;CAGhB;AAED,qBAAa,2BAA4B,SAAQ,eAAgB,YAAW,sBAAsB;;IAK3F,mBAAmB,CAAC,IAAI,EAAE,gBAAgB,GAAG,OAAO,CAAC,WAAW,CAAC;IAOxD,WAAW,CACzB,QAAQ,EAAE,6BAA6B,EACvC,GAAG,CAAC,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAC9B,OAAO,CAAC,IAAI,CAAC;CAGhB"}
|
|
@@ -38,7 +38,7 @@ class WavespeedAITask extends providerHelper_js_1.TaskProviderHelper {
|
|
|
38
38
|
}
|
|
39
39
|
return payload;
|
|
40
40
|
}
|
|
41
|
-
async getResponse(response, url, headers) {
|
|
41
|
+
async getResponse(response, url, headers, outputType) {
|
|
42
42
|
if (!url || !headers) {
|
|
43
43
|
throw new errors_js_1.InferenceClientInputError("Headers are required for WaveSpeed AI API calls");
|
|
44
44
|
}
|
|
@@ -65,9 +65,17 @@ class WavespeedAITask extends providerHelper_js_1.TaskProviderHelper {
|
|
|
65
65
|
if (!taskResult.outputs?.[0]) {
|
|
66
66
|
throw new errors_js_1.InferenceClientProviderOutputError("Received malformed response from WaveSpeed AI API: No output URL in completed response");
|
|
67
67
|
}
|
|
68
|
-
const
|
|
68
|
+
const mediaUrl = taskResult.outputs[0];
|
|
69
|
+
if (outputType === "url") {
|
|
70
|
+
return mediaUrl;
|
|
71
|
+
}
|
|
72
|
+
if (outputType === "json") {
|
|
73
|
+
return result;
|
|
74
|
+
}
|
|
75
|
+
// Default: fetch and return blob
|
|
76
|
+
const mediaResponse = await fetch(mediaUrl);
|
|
69
77
|
if (!mediaResponse.ok) {
|
|
70
|
-
throw new errors_js_1.InferenceClientProviderApiError("Failed to fetch generation output from WaveSpeed AI API", { url:
|
|
78
|
+
throw new errors_js_1.InferenceClientProviderApiError("Failed to fetch generation output from WaveSpeed AI API", { url: mediaUrl, method: "GET" }, {
|
|
71
79
|
requestId: mediaResponse.headers.get("x-request-id") ?? "",
|
|
72
80
|
status: mediaResponse.status,
|
|
73
81
|
body: await mediaResponse.text(),
|
|
@@ -97,6 +105,9 @@ class WavespeedAITextToVideoTask extends WavespeedAITask {
|
|
|
97
105
|
constructor() {
|
|
98
106
|
super(WAVESPEEDAI_API_BASE_URL);
|
|
99
107
|
}
|
|
108
|
+
async getResponse(response, url, headers) {
|
|
109
|
+
return super.getResponse(response, url, headers);
|
|
110
|
+
}
|
|
100
111
|
}
|
|
101
112
|
exports.WavespeedAITextToVideoTask = WavespeedAITextToVideoTask;
|
|
102
113
|
class WavespeedAIImageToImageTask extends WavespeedAITask {
|
|
@@ -108,6 +119,9 @@ class WavespeedAIImageToImageTask extends WavespeedAITask {
|
|
|
108
119
|
const { base, images } = await buildImagesField(args.inputs, hasImages);
|
|
109
120
|
return { ...args, inputs: args.parameters?.prompt, image: base, images };
|
|
110
121
|
}
|
|
122
|
+
async getResponse(response, url, headers) {
|
|
123
|
+
return super.getResponse(response, url, headers);
|
|
124
|
+
}
|
|
111
125
|
}
|
|
112
126
|
exports.WavespeedAIImageToImageTask = WavespeedAIImageToImageTask;
|
|
113
127
|
class WavespeedAIImageToVideoTask extends WavespeedAITask {
|
|
@@ -119,5 +133,8 @@ class WavespeedAIImageToVideoTask extends WavespeedAITask {
|
|
|
119
133
|
const { base, images } = await buildImagesField(args.inputs, hasImages);
|
|
120
134
|
return { ...args, inputs: args.parameters?.prompt, image: base, images };
|
|
121
135
|
}
|
|
136
|
+
async getResponse(response, url, headers) {
|
|
137
|
+
return super.getResponse(response, url, headers);
|
|
138
|
+
}
|
|
122
139
|
}
|
|
123
140
|
exports.WavespeedAIImageToVideoTask = WavespeedAIImageToVideoTask;
|
package/dist/esm/package.d.ts
CHANGED
package/dist/esm/package.js
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
// Generated file from package.json. Issues importing JSON directly when publishing on commonjs/ESM - see https://github.com/microsoft/TypeScript/issues/51783
|
|
2
|
-
export const PACKAGE_VERSION = "4.13.
|
|
2
|
+
export const PACKAGE_VERSION = "4.13.9";
|
|
3
3
|
export const PACKAGE_NAME = "@huggingface/inference";
|
|
@@ -10,11 +10,6 @@ export interface FalAiQueueOutput {
|
|
|
10
10
|
status: string;
|
|
11
11
|
response_url: string;
|
|
12
12
|
}
|
|
13
|
-
interface FalAITextToImageOutput {
|
|
14
|
-
images: Array<{
|
|
15
|
-
url: string;
|
|
16
|
-
}>;
|
|
17
|
-
}
|
|
18
13
|
export declare const FAL_AI_SUPPORTED_BLOB_TYPES: string[];
|
|
19
14
|
declare abstract class FalAITask extends TaskProviderHelper {
|
|
20
15
|
constructor(url?: string);
|
|
@@ -24,16 +19,18 @@ declare abstract class FalAITask extends TaskProviderHelper {
|
|
|
24
19
|
}
|
|
25
20
|
declare abstract class FalAiQueueTask extends FalAITask {
|
|
26
21
|
abstract task: InferenceTask;
|
|
22
|
+
makeRoute(params: UrlParams): string;
|
|
27
23
|
getResponseFromQueueApi(response: FalAiQueueOutput, url?: string, headers?: Record<string, string>): Promise<unknown>;
|
|
28
24
|
}
|
|
29
|
-
export declare class FalAITextToImageTask extends
|
|
25
|
+
export declare class FalAITextToImageTask extends FalAiQueueTask implements TextToImageTaskHelper {
|
|
26
|
+
task: InferenceTask;
|
|
27
|
+
constructor();
|
|
30
28
|
preparePayload(params: BodyParams): Record<string, unknown>;
|
|
31
|
-
getResponse(response:
|
|
29
|
+
getResponse(response: FalAiQueueOutput, url?: string, headers?: Record<string, string>, outputType?: "url" | "blob" | "json"): Promise<string | Blob | Record<string, unknown>>;
|
|
32
30
|
}
|
|
33
31
|
export declare class FalAIImageToImageTask extends FalAiQueueTask implements ImageToImageTaskHelper {
|
|
34
32
|
task: InferenceTask;
|
|
35
33
|
constructor();
|
|
36
|
-
makeRoute(params: UrlParams): string;
|
|
37
34
|
preparePayload(params: BodyParams): Record<string, unknown>;
|
|
38
35
|
preparePayloadAsync(args: ImageToImageArgs): Promise<RequestArgs>;
|
|
39
36
|
getResponse(response: FalAiQueueOutput, url?: string, headers?: Record<string, string>): Promise<Blob>;
|
|
@@ -41,15 +38,12 @@ export declare class FalAIImageToImageTask extends FalAiQueueTask implements Ima
|
|
|
41
38
|
export declare class FalAITextToVideoTask extends FalAiQueueTask implements TextToVideoTaskHelper {
|
|
42
39
|
task: InferenceTask;
|
|
43
40
|
constructor();
|
|
44
|
-
makeRoute(params: UrlParams): string;
|
|
45
41
|
preparePayload(params: BodyParams): Record<string, unknown>;
|
|
46
42
|
getResponse(response: FalAiQueueOutput, url?: string, headers?: Record<string, string>): Promise<Blob>;
|
|
47
43
|
}
|
|
48
44
|
export declare class FalAIImageToVideoTask extends FalAiQueueTask implements ImageToVideoTaskHelper {
|
|
49
45
|
task: InferenceTask;
|
|
50
46
|
constructor();
|
|
51
|
-
/** Same queue routing rule as the other Fal queue tasks */
|
|
52
|
-
makeRoute(params: UrlParams): string;
|
|
53
47
|
/** Synchronous case – caller already gave us base64 or a URL */
|
|
54
48
|
preparePayload(params: BodyParams): Record<string, unknown>;
|
|
55
49
|
/** Asynchronous helper – caller gave us a Blob */
|
|
@@ -69,7 +63,6 @@ export declare class FalAITextToSpeechTask extends FalAITask {
|
|
|
69
63
|
export declare class FalAIImageSegmentationTask extends FalAiQueueTask implements ImageSegmentationTaskHelper {
|
|
70
64
|
task: InferenceTask;
|
|
71
65
|
constructor();
|
|
72
|
-
makeRoute(params: UrlParams): string;
|
|
73
66
|
preparePayload(params: BodyParams): Record<string, unknown>;
|
|
74
67
|
preparePayloadAsync(args: ImageSegmentationArgs): Promise<RequestArgs>;
|
|
75
68
|
getResponse(response: FalAiQueueOutput, url?: string, headers?: Record<string, string>): Promise<ImageSegmentationOutput>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fal-ai.d.ts","sourceRoot":"","sources":["../../../src/providers/fal-ai.ts"],"names":[],"mappings":"AAkBA,OAAO,KAAK,EAAE,gCAAgC,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAC;AAEpG,OAAO,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE,aAAa,EAAW,WAAW,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAG5G,OAAO,KAAK,EAAE,2BAA2B,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAC/F,OAAO,EACN,KAAK,oCAAoC,EACzC,kBAAkB,EAClB,KAAK,qBAAqB,EAC1B,KAAK,qBAAqB,EAC1B,KAAK,sBAAsB,EAC3B,MAAM,qBAAqB,CAAC;AAE7B,OAAO,KAAK,EAAE,8BAA8B,EAAE,MAAM,8CAA8C,CAAC;AAMnG,OAAO,KAAK,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAC5E,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,kCAAkC,CAAC;AAE9E,MAAM,WAAW,gBAAgB;IAChC,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,MAAM,CAAC;CACrB;
|
|
1
|
+
{"version":3,"file":"fal-ai.d.ts","sourceRoot":"","sources":["../../../src/providers/fal-ai.ts"],"names":[],"mappings":"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"}
|
|
@@ -43,6 +43,12 @@ class FalAITask extends TaskProviderHelper {
|
|
|
43
43
|
}
|
|
44
44
|
}
|
|
45
45
|
class FalAiQueueTask extends FalAITask {
|
|
46
|
+
makeRoute(params) {
|
|
47
|
+
if (params.authMethod !== "provider-key") {
|
|
48
|
+
return `/${params.model}?_subdomain=queue`;
|
|
49
|
+
}
|
|
50
|
+
return `/${params.model}`;
|
|
51
|
+
}
|
|
46
52
|
async getResponseFromQueueApi(response, url, headers) {
|
|
47
53
|
if (!url || !headers) {
|
|
48
54
|
throw new InferenceClientInputError(`URL and headers are required for ${this.task} task`);
|
|
@@ -91,12 +97,16 @@ class FalAiQueueTask extends FalAITask {
|
|
|
91
97
|
function buildLoraPath(modelId, adapterWeightsPath) {
|
|
92
98
|
return `${HF_HUB_URL}/${modelId}/resolve/main/${adapterWeightsPath}`;
|
|
93
99
|
}
|
|
94
|
-
export class FalAITextToImageTask extends
|
|
100
|
+
export class FalAITextToImageTask extends FalAiQueueTask {
|
|
101
|
+
task;
|
|
102
|
+
constructor() {
|
|
103
|
+
super("https://queue.fal.run");
|
|
104
|
+
this.task = "text-to-image";
|
|
105
|
+
}
|
|
95
106
|
preparePayload(params) {
|
|
96
107
|
const payload = {
|
|
97
108
|
...omit(params.args, ["inputs", "parameters"]),
|
|
98
109
|
...params.args.parameters,
|
|
99
|
-
sync_mode: true,
|
|
100
110
|
prompt: params.args.inputs,
|
|
101
111
|
};
|
|
102
112
|
if (params.mapping?.adapter === "lora" && params.mapping.adapterWeightsPath) {
|
|
@@ -113,22 +123,24 @@ export class FalAITextToImageTask extends FalAITask {
|
|
|
113
123
|
return payload;
|
|
114
124
|
}
|
|
115
125
|
async getResponse(response, url, headers, outputType) {
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
126
|
+
const result = (await this.getResponseFromQueueApi(response, url, headers));
|
|
127
|
+
if (typeof result === "object" &&
|
|
128
|
+
"images" in result &&
|
|
129
|
+
Array.isArray(result.images) &&
|
|
130
|
+
result.images.length > 0 &&
|
|
131
|
+
"url" in result.images[0] &&
|
|
132
|
+
typeof result.images[0].url === "string" &&
|
|
133
|
+
isUrl(result.images[0].url)) {
|
|
122
134
|
if (outputType === "json") {
|
|
123
|
-
return { ...
|
|
135
|
+
return { ...result };
|
|
124
136
|
}
|
|
125
137
|
if (outputType === "url") {
|
|
126
|
-
return
|
|
138
|
+
return result.images[0].url;
|
|
127
139
|
}
|
|
128
|
-
const urlResponse = await fetch(
|
|
140
|
+
const urlResponse = await fetch(result.images[0].url);
|
|
129
141
|
return await urlResponse.blob();
|
|
130
142
|
}
|
|
131
|
-
throw new InferenceClientProviderOutputError(
|
|
143
|
+
throw new InferenceClientProviderOutputError(`Received malformed response from Fal.ai text-to-image API: expected { images: Array<{ url: string }> } result format, got instead: ${JSON.stringify(result)}`);
|
|
132
144
|
}
|
|
133
145
|
}
|
|
134
146
|
export class FalAIImageToImageTask extends FalAiQueueTask {
|
|
@@ -137,12 +149,6 @@ export class FalAIImageToImageTask extends FalAiQueueTask {
|
|
|
137
149
|
super("https://queue.fal.run");
|
|
138
150
|
this.task = "image-to-image";
|
|
139
151
|
}
|
|
140
|
-
makeRoute(params) {
|
|
141
|
-
if (params.authMethod !== "provider-key") {
|
|
142
|
-
return `/${params.model}?_subdomain=queue`;
|
|
143
|
-
}
|
|
144
|
-
return `/${params.model}`;
|
|
145
|
-
}
|
|
146
152
|
preparePayload(params) {
|
|
147
153
|
const payload = params.args;
|
|
148
154
|
if (params.mapping?.adapter === "lora" && params.mapping.adapterWeightsPath) {
|
|
@@ -193,12 +199,6 @@ export class FalAITextToVideoTask extends FalAiQueueTask {
|
|
|
193
199
|
super("https://queue.fal.run");
|
|
194
200
|
this.task = "text-to-video";
|
|
195
201
|
}
|
|
196
|
-
makeRoute(params) {
|
|
197
|
-
if (params.authMethod !== "provider-key") {
|
|
198
|
-
return `/${params.model}?_subdomain=queue`;
|
|
199
|
-
}
|
|
200
|
-
return `/${params.model}`;
|
|
201
|
-
}
|
|
202
202
|
preparePayload(params) {
|
|
203
203
|
return {
|
|
204
204
|
...omit(params.args, ["inputs", "parameters"]),
|
|
@@ -230,10 +230,6 @@ export class FalAIImageToVideoTask extends FalAiQueueTask {
|
|
|
230
230
|
super("https://queue.fal.run");
|
|
231
231
|
this.task = "image-to-video";
|
|
232
232
|
}
|
|
233
|
-
/** Same queue routing rule as the other Fal queue tasks */
|
|
234
|
-
makeRoute(params) {
|
|
235
|
-
return params.authMethod !== "provider-key" ? `/${params.model}?_subdomain=queue` : `/${params.model}`;
|
|
236
|
-
}
|
|
237
233
|
/** Synchronous case – caller already gave us base64 or a URL */
|
|
238
234
|
preparePayload(params) {
|
|
239
235
|
return {
|
|
@@ -339,12 +335,6 @@ export class FalAIImageSegmentationTask extends FalAiQueueTask {
|
|
|
339
335
|
super("https://queue.fal.run");
|
|
340
336
|
this.task = "image-segmentation";
|
|
341
337
|
}
|
|
342
|
-
makeRoute(params) {
|
|
343
|
-
if (params.authMethod !== "provider-key") {
|
|
344
|
-
return `/${params.model}?_subdomain=queue`;
|
|
345
|
-
}
|
|
346
|
-
return `/${params.model}`;
|
|
347
|
-
}
|
|
348
338
|
preparePayload(params) {
|
|
349
339
|
return {
|
|
350
340
|
...omit(params.args, ["inputs", "parameters"]),
|
|
@@ -26,21 +26,24 @@ declare abstract class WavespeedAITask extends TaskProviderHelper {
|
|
|
26
26
|
constructor(url?: string);
|
|
27
27
|
makeRoute(params: UrlParams): string;
|
|
28
28
|
preparePayload(params: BodyParams<ImageToImageArgs | TextToImageArgs | TextToVideoArgs | ImageToVideoArgs>): Record<string, unknown>;
|
|
29
|
-
getResponse(response: WaveSpeedAISubmitTaskResponse, url?: string, headers?: Record<string, string
|
|
29
|
+
getResponse(response: WaveSpeedAISubmitTaskResponse, url?: string, headers?: Record<string, string>, outputType?: "url" | "blob" | "json"): Promise<string | Blob | Record<string, unknown>>;
|
|
30
30
|
}
|
|
31
31
|
export declare class WavespeedAITextToImageTask extends WavespeedAITask implements TextToImageTaskHelper {
|
|
32
32
|
constructor();
|
|
33
33
|
}
|
|
34
34
|
export declare class WavespeedAITextToVideoTask extends WavespeedAITask implements TextToVideoTaskHelper {
|
|
35
35
|
constructor();
|
|
36
|
+
getResponse(response: WaveSpeedAISubmitTaskResponse, url?: string, headers?: Record<string, string>): Promise<Blob>;
|
|
36
37
|
}
|
|
37
38
|
export declare class WavespeedAIImageToImageTask extends WavespeedAITask implements ImageToImageTaskHelper {
|
|
38
39
|
constructor();
|
|
39
40
|
preparePayloadAsync(args: ImageToImageArgs): Promise<RequestArgs>;
|
|
41
|
+
getResponse(response: WaveSpeedAISubmitTaskResponse, url?: string, headers?: Record<string, string>): Promise<Blob>;
|
|
40
42
|
}
|
|
41
43
|
export declare class WavespeedAIImageToVideoTask extends WavespeedAITask implements ImageToVideoTaskHelper {
|
|
42
44
|
constructor();
|
|
43
45
|
preparePayloadAsync(args: ImageToVideoArgs): Promise<RequestArgs>;
|
|
46
|
+
getResponse(response: WaveSpeedAISubmitTaskResponse, url?: string, headers?: Record<string, string>): Promise<Blob>;
|
|
44
47
|
}
|
|
45
48
|
export {};
|
|
46
49
|
//# sourceMappingURL=wavespeed.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wavespeed.d.ts","sourceRoot":"","sources":["../../../src/providers/wavespeed.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAClE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AACpE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAClE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AACpE,OAAO,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAItE,OAAO,KAAK,EACX,qBAAqB,EACrB,qBAAqB,EACrB,sBAAsB,EACtB,sBAAsB,EACtB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AA6BzD;;GAEG;AACH,UAAU,yBAAyB;IAClC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE;QACL,GAAG,EAAE,MAAM,CAAC;KACZ,CAAC;CACF;AAWD;;GAEG;AACH,UAAU,6BAA6B;IACtC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,yBAAyB,CAAC;CAChC;AAgBD,uBAAe,eAAgB,SAAQ,kBAAkB;gBAC5C,GAAG,CAAC,EAAE,MAAM;IAIxB,SAAS,CAAC,MAAM,EAAE,SAAS,GAAG,MAAM;IAIpC,cAAc,CACb,MAAM,EAAE,UAAU,CAAC,gBAAgB,GAAG,eAAe,GAAG,eAAe,GAAG,gBAAgB,CAAC,GACzF,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAkBX,WAAW,CACzB,QAAQ,EAAE,6BAA6B,EACvC,GAAG,CAAC,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,
|
|
1
|
+
{"version":3,"file":"wavespeed.d.ts","sourceRoot":"","sources":["../../../src/providers/wavespeed.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAClE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AACpE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAClE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AACpE,OAAO,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAItE,OAAO,KAAK,EACX,qBAAqB,EACrB,qBAAqB,EACrB,sBAAsB,EACtB,sBAAsB,EACtB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AA6BzD;;GAEG;AACH,UAAU,yBAAyB;IAClC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE;QACL,GAAG,EAAE,MAAM,CAAC;KACZ,CAAC;CACF;AAWD;;GAEG;AACH,UAAU,6BAA6B;IACtC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,yBAAyB,CAAC;CAChC;AAgBD,uBAAe,eAAgB,SAAQ,kBAAkB;gBAC5C,GAAG,CAAC,EAAE,MAAM;IAIxB,SAAS,CAAC,MAAM,EAAE,SAAS,GAAG,MAAM;IAIpC,cAAc,CACb,MAAM,EAAE,UAAU,CAAC,gBAAgB,GAAG,eAAe,GAAG,eAAe,GAAG,gBAAgB,CAAC,GACzF,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAkBX,WAAW,CACzB,QAAQ,EAAE,6BAA6B,EACvC,GAAG,CAAC,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAChC,UAAU,CAAC,EAAE,KAAK,GAAG,MAAM,GAAG,MAAM,GAClC,OAAO,CAAC,MAAM,GAAG,IAAI,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CA4EnD;AAED,qBAAa,0BAA2B,SAAQ,eAAgB,YAAW,qBAAqB;;CAI/F;AAED,qBAAa,0BAA2B,SAAQ,eAAgB,YAAW,qBAAqB;;IAKhF,WAAW,CACzB,QAAQ,EAAE,6BAA6B,EACvC,GAAG,CAAC,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAC9B,OAAO,CAAC,IAAI,CAAC;CAGhB;AAED,qBAAa,2BAA4B,SAAQ,eAAgB,YAAW,sBAAsB;;IAK3F,mBAAmB,CAAC,IAAI,EAAE,gBAAgB,GAAG,OAAO,CAAC,WAAW,CAAC;IAOxD,WAAW,CACzB,QAAQ,EAAE,6BAA6B,EACvC,GAAG,CAAC,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAC9B,OAAO,CAAC,IAAI,CAAC;CAGhB;AAED,qBAAa,2BAA4B,SAAQ,eAAgB,YAAW,sBAAsB;;IAK3F,mBAAmB,CAAC,IAAI,EAAE,gBAAgB,GAAG,OAAO,CAAC,WAAW,CAAC;IAOxD,WAAW,CACzB,QAAQ,EAAE,6BAA6B,EACvC,GAAG,CAAC,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAC9B,OAAO,CAAC,IAAI,CAAC;CAGhB"}
|
|
@@ -35,7 +35,7 @@ class WavespeedAITask extends TaskProviderHelper {
|
|
|
35
35
|
}
|
|
36
36
|
return payload;
|
|
37
37
|
}
|
|
38
|
-
async getResponse(response, url, headers) {
|
|
38
|
+
async getResponse(response, url, headers, outputType) {
|
|
39
39
|
if (!url || !headers) {
|
|
40
40
|
throw new InferenceClientInputError("Headers are required for WaveSpeed AI API calls");
|
|
41
41
|
}
|
|
@@ -62,9 +62,17 @@ class WavespeedAITask extends TaskProviderHelper {
|
|
|
62
62
|
if (!taskResult.outputs?.[0]) {
|
|
63
63
|
throw new InferenceClientProviderOutputError("Received malformed response from WaveSpeed AI API: No output URL in completed response");
|
|
64
64
|
}
|
|
65
|
-
const
|
|
65
|
+
const mediaUrl = taskResult.outputs[0];
|
|
66
|
+
if (outputType === "url") {
|
|
67
|
+
return mediaUrl;
|
|
68
|
+
}
|
|
69
|
+
if (outputType === "json") {
|
|
70
|
+
return result;
|
|
71
|
+
}
|
|
72
|
+
// Default: fetch and return blob
|
|
73
|
+
const mediaResponse = await fetch(mediaUrl);
|
|
66
74
|
if (!mediaResponse.ok) {
|
|
67
|
-
throw new InferenceClientProviderApiError("Failed to fetch generation output from WaveSpeed AI API", { url:
|
|
75
|
+
throw new InferenceClientProviderApiError("Failed to fetch generation output from WaveSpeed AI API", { url: mediaUrl, method: "GET" }, {
|
|
68
76
|
requestId: mediaResponse.headers.get("x-request-id") ?? "",
|
|
69
77
|
status: mediaResponse.status,
|
|
70
78
|
body: await mediaResponse.text(),
|
|
@@ -93,6 +101,9 @@ export class WavespeedAITextToVideoTask extends WavespeedAITask {
|
|
|
93
101
|
constructor() {
|
|
94
102
|
super(WAVESPEEDAI_API_BASE_URL);
|
|
95
103
|
}
|
|
104
|
+
async getResponse(response, url, headers) {
|
|
105
|
+
return super.getResponse(response, url, headers);
|
|
106
|
+
}
|
|
96
107
|
}
|
|
97
108
|
export class WavespeedAIImageToImageTask extends WavespeedAITask {
|
|
98
109
|
constructor() {
|
|
@@ -103,6 +114,9 @@ export class WavespeedAIImageToImageTask extends WavespeedAITask {
|
|
|
103
114
|
const { base, images } = await buildImagesField(args.inputs, hasImages);
|
|
104
115
|
return { ...args, inputs: args.parameters?.prompt, image: base, images };
|
|
105
116
|
}
|
|
117
|
+
async getResponse(response, url, headers) {
|
|
118
|
+
return super.getResponse(response, url, headers);
|
|
119
|
+
}
|
|
106
120
|
}
|
|
107
121
|
export class WavespeedAIImageToVideoTask extends WavespeedAITask {
|
|
108
122
|
constructor() {
|
|
@@ -113,4 +127,7 @@ export class WavespeedAIImageToVideoTask extends WavespeedAITask {
|
|
|
113
127
|
const { base, images } = await buildImagesField(args.inputs, hasImages);
|
|
114
128
|
return { ...args, inputs: args.parameters?.prompt, image: base, images };
|
|
115
129
|
}
|
|
130
|
+
async getResponse(response, url, headers) {
|
|
131
|
+
return super.getResponse(response, url, headers);
|
|
132
|
+
}
|
|
116
133
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@huggingface/inference",
|
|
3
|
-
"version": "4.13.
|
|
3
|
+
"version": "4.13.9",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"author": "Hugging Face and Tim Mikeladze <tim.mikeladze@gmail.com>",
|
|
6
6
|
"description": "Typescript client for the Hugging Face Inference Providers and Inference Endpoints",
|
package/src/package.ts
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
// Generated file from package.json. Issues importing JSON directly when publishing on commonjs/ESM - see https://github.com/microsoft/TypeScript/issues/51783
|
|
2
|
-
export const PACKAGE_VERSION = "4.13.
|
|
2
|
+
export const PACKAGE_VERSION = "4.13.9";
|
|
3
3
|
export const PACKAGE_NAME = "@huggingface/inference";
|
package/src/providers/fal-ai.ts
CHANGED
|
@@ -89,6 +89,12 @@ abstract class FalAITask extends TaskProviderHelper {
|
|
|
89
89
|
abstract class FalAiQueueTask extends FalAITask {
|
|
90
90
|
abstract task: InferenceTask;
|
|
91
91
|
|
|
92
|
+
override makeRoute(params: UrlParams): string {
|
|
93
|
+
if (params.authMethod !== "provider-key") {
|
|
94
|
+
return `/${params.model}?_subdomain=queue`;
|
|
95
|
+
}
|
|
96
|
+
return `/${params.model}`;
|
|
97
|
+
}
|
|
92
98
|
async getResponseFromQueueApi(
|
|
93
99
|
response: FalAiQueueOutput,
|
|
94
100
|
url?: string,
|
|
@@ -159,12 +165,18 @@ function buildLoraPath(modelId: ModelId, adapterWeightsPath: string): string {
|
|
|
159
165
|
return `${HF_HUB_URL}/${modelId}/resolve/main/${adapterWeightsPath}`;
|
|
160
166
|
}
|
|
161
167
|
|
|
162
|
-
export class FalAITextToImageTask extends
|
|
168
|
+
export class FalAITextToImageTask extends FalAiQueueTask implements TextToImageTaskHelper {
|
|
169
|
+
task: InferenceTask;
|
|
170
|
+
|
|
171
|
+
constructor() {
|
|
172
|
+
super("https://queue.fal.run");
|
|
173
|
+
this.task = "text-to-image";
|
|
174
|
+
}
|
|
175
|
+
|
|
163
176
|
override preparePayload(params: BodyParams): Record<string, unknown> {
|
|
164
177
|
const payload: Record<string, unknown> = {
|
|
165
178
|
...omit(params.args, ["inputs", "parameters"]),
|
|
166
179
|
...(params.args.parameters as Record<string, unknown>),
|
|
167
|
-
sync_mode: true,
|
|
168
180
|
prompt: params.args.inputs,
|
|
169
181
|
};
|
|
170
182
|
|
|
@@ -184,30 +196,36 @@ export class FalAITextToImageTask extends FalAITask implements TextToImageTaskHe
|
|
|
184
196
|
}
|
|
185
197
|
|
|
186
198
|
override async getResponse(
|
|
187
|
-
response:
|
|
199
|
+
response: FalAiQueueOutput,
|
|
188
200
|
url?: string,
|
|
189
|
-
headers?:
|
|
201
|
+
headers?: Record<string, string>,
|
|
190
202
|
outputType?: "url" | "blob" | "json"
|
|
191
203
|
): Promise<string | Blob | Record<string, unknown>> {
|
|
204
|
+
const result = (await this.getResponseFromQueueApi(response, url, headers)) as FalAITextToImageOutput;
|
|
192
205
|
if (
|
|
193
|
-
typeof
|
|
194
|
-
"images" in
|
|
195
|
-
Array.isArray(
|
|
196
|
-
|
|
197
|
-
"url" in
|
|
198
|
-
typeof
|
|
206
|
+
typeof result === "object" &&
|
|
207
|
+
"images" in result &&
|
|
208
|
+
Array.isArray(result.images) &&
|
|
209
|
+
result.images.length > 0 &&
|
|
210
|
+
"url" in result.images[0] &&
|
|
211
|
+
typeof result.images[0].url === "string" &&
|
|
212
|
+
isUrl(result.images[0].url)
|
|
199
213
|
) {
|
|
200
214
|
if (outputType === "json") {
|
|
201
|
-
return { ...
|
|
215
|
+
return { ...result };
|
|
202
216
|
}
|
|
203
217
|
if (outputType === "url") {
|
|
204
|
-
return
|
|
218
|
+
return result.images[0].url;
|
|
205
219
|
}
|
|
206
|
-
const urlResponse = await fetch(
|
|
220
|
+
const urlResponse = await fetch(result.images[0].url);
|
|
207
221
|
return await urlResponse.blob();
|
|
208
222
|
}
|
|
209
223
|
|
|
210
|
-
throw new InferenceClientProviderOutputError(
|
|
224
|
+
throw new InferenceClientProviderOutputError(
|
|
225
|
+
`Received malformed response from Fal.ai text-to-image API: expected { images: Array<{ url: string }> } result format, got instead: ${JSON.stringify(
|
|
226
|
+
result
|
|
227
|
+
)}`
|
|
228
|
+
);
|
|
211
229
|
}
|
|
212
230
|
}
|
|
213
231
|
|
|
@@ -218,13 +236,6 @@ export class FalAIImageToImageTask extends FalAiQueueTask implements ImageToImag
|
|
|
218
236
|
this.task = "image-to-image";
|
|
219
237
|
}
|
|
220
238
|
|
|
221
|
-
override makeRoute(params: UrlParams): string {
|
|
222
|
-
if (params.authMethod !== "provider-key") {
|
|
223
|
-
return `/${params.model}?_subdomain=queue`;
|
|
224
|
-
}
|
|
225
|
-
return `/${params.model}`;
|
|
226
|
-
}
|
|
227
|
-
|
|
228
239
|
override preparePayload(params: BodyParams): Record<string, unknown> {
|
|
229
240
|
const payload = params.args;
|
|
230
241
|
if (params.mapping?.adapter === "lora" && params.mapping.adapterWeightsPath) {
|
|
@@ -290,12 +301,7 @@ export class FalAITextToVideoTask extends FalAiQueueTask implements TextToVideoT
|
|
|
290
301
|
super("https://queue.fal.run");
|
|
291
302
|
this.task = "text-to-video";
|
|
292
303
|
}
|
|
293
|
-
|
|
294
|
-
if (params.authMethod !== "provider-key") {
|
|
295
|
-
return `/${params.model}?_subdomain=queue`;
|
|
296
|
-
}
|
|
297
|
-
return `/${params.model}`;
|
|
298
|
-
}
|
|
304
|
+
|
|
299
305
|
override preparePayload(params: BodyParams): Record<string, unknown> {
|
|
300
306
|
return {
|
|
301
307
|
...omit(params.args, ["inputs", "parameters"]),
|
|
@@ -341,11 +347,6 @@ export class FalAIImageToVideoTask extends FalAiQueueTask implements ImageToVide
|
|
|
341
347
|
this.task = "image-to-video";
|
|
342
348
|
}
|
|
343
349
|
|
|
344
|
-
/** Same queue routing rule as the other Fal queue tasks */
|
|
345
|
-
override makeRoute(params: UrlParams): string {
|
|
346
|
-
return params.authMethod !== "provider-key" ? `/${params.model}?_subdomain=queue` : `/${params.model}`;
|
|
347
|
-
}
|
|
348
|
-
|
|
349
350
|
/** Synchronous case – caller already gave us base64 or a URL */
|
|
350
351
|
override preparePayload(params: BodyParams): Record<string, unknown> {
|
|
351
352
|
return {
|
|
@@ -493,13 +494,6 @@ export class FalAIImageSegmentationTask extends FalAiQueueTask implements ImageS
|
|
|
493
494
|
this.task = "image-segmentation";
|
|
494
495
|
}
|
|
495
496
|
|
|
496
|
-
override makeRoute(params: UrlParams): string {
|
|
497
|
-
if (params.authMethod !== "provider-key") {
|
|
498
|
-
return `/${params.model}?_subdomain=queue`;
|
|
499
|
-
}
|
|
500
|
-
return `/${params.model}`;
|
|
501
|
-
}
|
|
502
|
-
|
|
503
497
|
override preparePayload(params: BodyParams): Record<string, unknown> {
|
|
504
498
|
return {
|
|
505
499
|
...omit(params.args, ["inputs", "parameters"]),
|
|
@@ -115,8 +115,9 @@ abstract class WavespeedAITask extends TaskProviderHelper {
|
|
|
115
115
|
override async getResponse(
|
|
116
116
|
response: WaveSpeedAISubmitTaskResponse,
|
|
117
117
|
url?: string,
|
|
118
|
-
headers?: Record<string, string
|
|
119
|
-
|
|
118
|
+
headers?: Record<string, string>,
|
|
119
|
+
outputType?: "url" | "blob" | "json"
|
|
120
|
+
): Promise<string | Blob | Record<string, unknown>> {
|
|
120
121
|
if (!url || !headers) {
|
|
121
122
|
throw new InferenceClientInputError("Headers are required for WaveSpeed AI API calls");
|
|
122
123
|
}
|
|
@@ -156,11 +157,21 @@ abstract class WavespeedAITask extends TaskProviderHelper {
|
|
|
156
157
|
"Received malformed response from WaveSpeed AI API: No output URL in completed response"
|
|
157
158
|
);
|
|
158
159
|
}
|
|
159
|
-
const
|
|
160
|
+
const mediaUrl = taskResult.outputs[0];
|
|
161
|
+
|
|
162
|
+
if (outputType === "url") {
|
|
163
|
+
return mediaUrl;
|
|
164
|
+
}
|
|
165
|
+
if (outputType === "json") {
|
|
166
|
+
return result as unknown as Record<string, unknown>;
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
// Default: fetch and return blob
|
|
170
|
+
const mediaResponse = await fetch(mediaUrl);
|
|
160
171
|
if (!mediaResponse.ok) {
|
|
161
172
|
throw new InferenceClientProviderApiError(
|
|
162
173
|
"Failed to fetch generation output from WaveSpeed AI API",
|
|
163
|
-
{ url:
|
|
174
|
+
{ url: mediaUrl, method: "GET" },
|
|
164
175
|
{
|
|
165
176
|
requestId: mediaResponse.headers.get("x-request-id") ?? "",
|
|
166
177
|
status: mediaResponse.status,
|
|
@@ -194,6 +205,14 @@ export class WavespeedAITextToVideoTask extends WavespeedAITask implements TextT
|
|
|
194
205
|
constructor() {
|
|
195
206
|
super(WAVESPEEDAI_API_BASE_URL);
|
|
196
207
|
}
|
|
208
|
+
|
|
209
|
+
override async getResponse(
|
|
210
|
+
response: WaveSpeedAISubmitTaskResponse,
|
|
211
|
+
url?: string,
|
|
212
|
+
headers?: Record<string, string>
|
|
213
|
+
): Promise<Blob> {
|
|
214
|
+
return super.getResponse(response, url, headers) as Promise<Blob>;
|
|
215
|
+
}
|
|
197
216
|
}
|
|
198
217
|
|
|
199
218
|
export class WavespeedAIImageToImageTask extends WavespeedAITask implements ImageToImageTaskHelper {
|
|
@@ -207,6 +226,14 @@ export class WavespeedAIImageToImageTask extends WavespeedAITask implements Imag
|
|
|
207
226
|
const { base, images } = await buildImagesField(args.inputs as Blob | ArrayBuffer, hasImages);
|
|
208
227
|
return { ...args, inputs: args.parameters?.prompt, image: base, images };
|
|
209
228
|
}
|
|
229
|
+
|
|
230
|
+
override async getResponse(
|
|
231
|
+
response: WaveSpeedAISubmitTaskResponse,
|
|
232
|
+
url?: string,
|
|
233
|
+
headers?: Record<string, string>
|
|
234
|
+
): Promise<Blob> {
|
|
235
|
+
return super.getResponse(response, url, headers) as Promise<Blob>;
|
|
236
|
+
}
|
|
210
237
|
}
|
|
211
238
|
|
|
212
239
|
export class WavespeedAIImageToVideoTask extends WavespeedAITask implements ImageToVideoTaskHelper {
|
|
@@ -220,4 +247,12 @@ export class WavespeedAIImageToVideoTask extends WavespeedAITask implements Imag
|
|
|
220
247
|
const { base, images } = await buildImagesField(args.inputs as Blob | ArrayBuffer, hasImages);
|
|
221
248
|
return { ...args, inputs: args.parameters?.prompt, image: base, images };
|
|
222
249
|
}
|
|
250
|
+
|
|
251
|
+
override async getResponse(
|
|
252
|
+
response: WaveSpeedAISubmitTaskResponse,
|
|
253
|
+
url?: string,
|
|
254
|
+
headers?: Record<string, string>
|
|
255
|
+
): Promise<Blob> {
|
|
256
|
+
return super.getResponse(response, url, headers) as Promise<Blob>;
|
|
257
|
+
}
|
|
223
258
|
}
|