/** * Suno music backend — wraps the existing generateMusic() from * src/video/assemble/music.ts (Kie.ai Suno provider). * * This backend delegates entirely to the proven assemble-layer * implementation; it does NOT re-implement any transport logic. * Availability: requires KIE_API_KEY in env. */ import { generateMusic } from '../assemble/music.js'; import type { MusicBackend, MusicGenInput, MusicGenResult } from './types.js'; export const sunoBackend: MusicBackend = { id: 'suno', kind: 'music', displayName: 'Suno (Kie.ai)', requiredEnv: ['KIE_API_KEY'], summary: 'Background-music generation via Kie.ai Suno V5 (submit → poll → download). Requires KIE_API_KEY.', async generate(input: MusicGenInput): Promise { const env = input.env ?? process.env; const result = await generateMusic({ prompt: input.prompt, durationSec: input.durationSec, outputPath: input.outputPath, dryRun: input.dryRun, apiKey: env['KIE_API_KEY'], ...(input.fetcher ? { fetcher: input.fetcher } : {}), }); return { path: result.path, durationMs: result.durationMs, backendId: 'suno', }; }, };