From ee8778f8df6e6d9c8b3fbca3648f999dd8ef10e2 Mon Sep 17 00:00:00 2001 From: 404oops Date: Wed, 14 Oct 2026 17:16:27 +0200 Subject: [PATCH] Keep explicit Gemini video model selection within provider --- .../drivers/ai-video/VideoGenerationDriver.ts | 3 +- .../gemini/GeminiVideoProvider.test.ts | 31 +++++++++++++++++++ 2 files changed, 33 insertions(+), 1 deletion(-) diff --git a/src/backend/drivers/ai-video/VideoGenerationDriver.ts b/src/backend/drivers/ai-video/VideoGenerationDriver.ts index 73b4f29d7..2df3179bc 100644 --- a/src/backend/drivers/ai-video/VideoGenerationDriver.ts +++ b/src/backend/drivers/ai-video/VideoGenerationDriver.ts @@ -477,6 +477,7 @@ export class VideoGenerationDriver extends PuterDriver { ); if (exactPuterIdMatch) return exactPuterIdMatch; - return models.find((m) => m.provider === provider) ?? models[0]; + return models.find((m) => m.provider === provider) ?? + (provider === 'gemini-video-generation' ? null : models[0]); } } diff --git a/src/backend/drivers/ai-video/providers/gemini/GeminiVideoProvider.test.ts b/src/backend/drivers/ai-video/providers/gemini/GeminiVideoProvider.test.ts index 52882607a..17878e449 100644 --- a/src/backend/drivers/ai-video/providers/gemini/GeminiVideoProvider.test.ts +++ b/src/backend/drivers/ai-video/providers/gemini/GeminiVideoProvider.test.ts @@ -368,6 +368,37 @@ describe('GeminiVideoProvider routing', () => { await reachesGemini(testMode({ model, seconds: 5 })); }); + it.each(['provider', 'driver'] as const)( + 'rejects a Together model when Gemini is pinned by %s', + async (selection) => { + const model = (await videoDriver.models()).find( + (entry) => entry.provider === 'together-video-generation', + )!.id; + await expect(Promise.resolve(runWithContext({ + actor: TEST_MODE_ACTOR, + ...(selection === 'driver' ? { driverName: PROVIDER } : {}), + }, () => videoDriver.generate({ + prompt: PROMPT, + model, + test_mode: true, + ...(selection === 'provider' ? { provider: PROVIDER } : {}), + })))).rejects.toMatchObject({ + statusCode: 400, + message: `Model not found: ${model}`, + }); + expect(fetchSpy).not.toHaveBeenCalled(); + }, + ); + + it('allows an unpinned Together model when Gemini is configured', async () => { + const model = (await videoDriver.models()).find( + (entry) => entry.provider === 'together-video-generation', + )!.id; + await expect(withActor(TEST_MODE_ACTOR, () => videoDriver.generate({ + prompt: PROMPT, model, test_mode: true, + }))).resolves.toBe(SAMPLE_URL); + }); + it('keeps Together as the default when both are configured', async () => { await expect( Promise.resolve(