|
1 | 1 | import type { TextToImageArgs } from "../tasks/cv/textToImage.js"; |
2 | 2 | import type { ImageToImageArgs } from "../tasks/cv/imageToImage.js"; |
3 | 3 | import type { TextToVideoArgs } from "../tasks/cv/textToVideo.js"; |
| 4 | +import type { ImageToVideoArgs } from "../tasks/cv/imageToVideo.js"; |
4 | 5 | import type { BodyParams, RequestArgs, UrlParams } from "../types.js"; |
5 | 6 | import { delay } from "../utils/delay.js"; |
6 | 7 | import { omit } from "../utils/omit.js"; |
7 | 8 | import { base64FromBytes } from "../utils/base64FromBytes.js"; |
8 | | -import type { TextToImageTaskHelper, TextToVideoTaskHelper, ImageToImageTaskHelper } from "./providerHelper.js"; |
| 9 | +import type { |
| 10 | + TextToImageTaskHelper, |
| 11 | + TextToVideoTaskHelper, |
| 12 | + ImageToImageTaskHelper, |
| 13 | + ImageToVideoTaskHelper, |
| 14 | +} from "./providerHelper.js"; |
9 | 15 | import { TaskProviderHelper } from "./providerHelper.js"; |
10 | 16 | import { |
11 | 17 | InferenceClientInputError, |
@@ -72,7 +78,9 @@ abstract class WavespeedAITask extends TaskProviderHelper { |
72 | 78 | return `/api/v3/${params.model}`; |
73 | 79 | } |
74 | 80 |
|
75 | | - preparePayload(params: BodyParams<ImageToImageArgs | TextToImageArgs | TextToVideoArgs>): Record<string, unknown> { |
| 81 | + preparePayload( |
| 82 | + params: BodyParams<ImageToImageArgs | TextToImageArgs | TextToVideoArgs | ImageToVideoArgs> |
| 83 | + ): Record<string, unknown> { |
76 | 84 | const payload: Record<string, unknown> = { |
77 | 85 | ...omit(params.args, ["inputs", "parameters"]), |
78 | 86 | ...params.args.parameters, |
@@ -189,3 +197,19 @@ export class WavespeedAIImageToImageTask extends WavespeedAITask implements Imag |
189 | 197 | }; |
190 | 198 | } |
191 | 199 | } |
| 200 | + |
| 201 | +export class WavespeedAIImageToVideoTask extends WavespeedAITask implements ImageToVideoTaskHelper { |
| 202 | + constructor() { |
| 203 | + super(WAVESPEEDAI_API_BASE_URL); |
| 204 | + } |
| 205 | + |
| 206 | + async preparePayloadAsync(args: ImageToVideoArgs): Promise<RequestArgs> { |
| 207 | + return { |
| 208 | + ...args, |
| 209 | + inputs: args.parameters?.prompt, |
| 210 | + image: base64FromBytes( |
| 211 | + new Uint8Array(args.inputs instanceof ArrayBuffer ? args.inputs : await (args.inputs as Blob).arrayBuffer()) |
| 212 | + ), |
| 213 | + }; |
| 214 | + } |
| 215 | +} |
0 commit comments