feat(fal): support Seedance reference video

Adds fal Seedance 2.0 reference-to-video support with model-aware reference input limits.
This commit is contained in:
Shivanker Goel
2026-04-26 02:30:23 +01:00
committed by GitHub
parent 566d2d73a3
commit a932a58e87
18 changed files with 675 additions and 70 deletions

View File

@@ -6,6 +6,18 @@ import type {
} from "../../../src/plugins/types.js";
import { listSupportedVideoGenerationModes } from "../../../src/video-generation/capabilities.js";
function hasPositiveModeLimit(
value: number | undefined,
valuesByModel: Readonly<Record<string, number>> | undefined,
): boolean {
return (
(value ?? 0) > 0 ||
Object.values(valuesByModel ?? {}).some(
(modelValue) => Number.isFinite(modelValue) && modelValue > 0,
)
);
}
export function expectExplicitVideoGenerationCapabilities(
provider: VideoGenerationProviderPlugin,
): void {
@@ -28,16 +40,16 @@ export function expectExplicitVideoGenerationCapabilities(
if (imageToVideo?.enabled) {
expect(
imageToVideo.maxInputImages ?? 0,
`${provider.id} imageToVideo.enabled requires maxInputImages`,
).toBeGreaterThan(0);
hasPositiveModeLimit(imageToVideo.maxInputImages, imageToVideo.maxInputImagesByModel),
`${provider.id} imageToVideo.enabled requires maxInputImages or maxInputImagesByModel`,
).toBe(true);
expect(supportedModes).toContain("imageToVideo");
}
if (videoToVideo?.enabled) {
expect(
videoToVideo.maxInputVideos ?? 0,
`${provider.id} videoToVideo.enabled requires maxInputVideos`,
).toBeGreaterThan(0);
hasPositiveModeLimit(videoToVideo.maxInputVideos, videoToVideo.maxInputVideosByModel),
`${provider.id} videoToVideo.enabled requires maxInputVideos or maxInputVideosByModel`,
).toBe(true);
expect(supportedModes).toContain("videoToVideo");
}
}