--- phase: 03-generate-node-refactor plan: 02 type: execute --- Implement provider-specific image generation in API route. Purpose: Route generation requests to correct provider (Gemini, Replicate, fal.ai) based on selected model. Output: Working generate endpoint that dispatches to provider implementations. ~/.claude/get-shit-done/workflows/execute-phase.md ~/.claude/get-shit-done/templates/summary.md @.planning/PROJECT.md @.planning/STATE.md @.planning/phases/03-generate-node-refactor/03-01-SUMMARY.md @src/app/api/generate/route.ts @src/lib/providers/types.ts @src/lib/providers/replicate.ts @src/lib/providers/fal.ts **Tech available:** ProviderInterface.generate(), provider registry **Constraints:** Preserve existing Gemini logic, image output only Task 1: Implement Replicate provider generate() method src/lib/providers/replicate.ts Implement generate() that currently throws "not implemented": 1. POST to https://api.replicate.com/v1/predictions with { version: modelId, input: { prompt } } 2. Poll GET /predictions/{id} until status is "succeeded" or "failed" 3. Fetch output image URL and convert to base64 data URL 4. Return GenerationOutput with type: "image" 5. Skip image inputs for now (Phase 5 adds URL server) TypeScript compiles Replicate generate() calls prediction API and returns image Task 2: Implement fal.ai provider generate() method src/lib/providers/fal.ts Implement generate(): 1. POST to https://fal.run/{modelId} with { prompt, ...parameters } 2. Use "Key {apiKey}" auth header 3. Extract image URL from response, convert to base64 4. Return GenerationOutput with type: "image" TypeScript compiles fal.ai generate() calls fal.run and returns image Task 3: Update generate API route for multi-provider dispatch src/app/api/generate/route.ts 1. Accept both formats: - Legacy: { model, prompt, images, aspectRatio, resolution } - New: { selectedModel, prompt, images, parameters } 2. If selectedModel provided and provider !== "gemini": - Get provider from registry - Get API key from request headers (X-Replicate-API-Key, X-Fal-API-Key) - Call provider.generate() - Return result 3. Otherwise use existing Gemini logic 4. Extract Gemini code into helper function for clarity npm run build, test Gemini generation still works API route dispatches to correct provider, Gemini unchanged - [ ] `npm run build` succeeds - [ ] Gemini generation works as before - [ ] Replicate provider has generate() implementation - [ ] fal.ai provider has generate() implementation - Generate API routes requests to correct provider - Provider generate() methods implemented - Existing Gemini functionality preserved Create `.planning/phases/03-generate-node-refactor/03-02-SUMMARY.md`