You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

3.2 KiB

phase plan type
03-generate-node-refactor 2 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.

<execution_context> ~/.claude/get-shit-done/workflows/execute-phase.md ~/.claude/get-shit-done/templates/summary.md </execution_context>

@.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

<success_criteria>

  • Generate API routes requests to correct provider
  • Provider generate() methods implemented
  • Existing Gemini functionality preserved </success_criteria>
Create `.planning/phases/03-generate-node-refactor/03-02-SUMMARY.md`