ai-chatbot/lib/video-canvas/generation-contract.ts

30 lines
1005 B
TypeScript

export function canvasGenerationCount(value: unknown) {
const count = Number.parseInt(String(value), 10);
return [1, 2, 4].includes(count) ? count : 1;
}
export function canvasImageRequest(
settings: { model?: string; ratio: string; resolution: string; count: string },
references: string[],
wide = false,
) {
const images = [...new Set(references.map((url) => url.trim()).filter(Boolean))].slice(0, 12);
return {
model: settings.model,
aspectRatio: wide ? "16:9" : settings.ratio,
imageSize: settings.resolution,
imageCount: wide ? 1 : canvasGenerationCount(settings.count),
referenceImage: images[0],
referenceImages: images.slice(1),
};
}
export function canvasImageResultUrls(response: {
success: boolean;
data?: { images?: Array<{ originalUrl?: string; thumbnailUrl?: string }> };
}) {
return response.success
? (response.data?.images || [])
.map((image) => image.originalUrl || image.thumbnailUrl || "")
.filter(Boolean)
: [];
}