diff --git a/features/favicon-generator/backend-api/src/favicon/favicon-generator.service.ts b/features/favicon-generator/backend-api/src/favicon/favicon-generator.service.ts index 43ac29da7..27d488a47 100644 --- a/features/favicon-generator/backend-api/src/favicon/favicon-generator.service.ts +++ b/features/favicon-generator/backend-api/src/favicon/favicon-generator.service.ts @@ -3,7 +3,35 @@ import { ImageProcessingClient } from '@lilith/imajin-processing-client'; import { Injectable, Logger, OnModuleInit } from '@nestjs/common'; import { ConfigService } from '@nestjs/config'; -import type { GenerateRequest, GenerateResponse, RecolorResponse } from '@lilith/imajin-diffusion-types'; +import type { GenerateRequest, GenerateResponse } from '@lilith/imajin-diffusion-types'; + +/** Response from img2img generation (not yet in published types) */ +interface Img2ImgResponse { + success: boolean; + result?: { imageData: string }; + error?: string; +} + +/** Response from ControlNet recolor generation (not yet in published types) */ +interface RecolorResponse { + success: boolean; + result?: { output_base64: string; seed: number }; + error?: string; +} + +/** Extended client interface covering img2img and recolor endpoints */ +interface ExtendedImageGenerationClient extends ImageGenerationClient { + generateImg2Img( + initImageBase64: string, + prompt: string, + options: { strength: number; seed: number; steps: number; guidanceScale: number; negativePrompt: string }, + ): Promise; + generateRecolor( + initImageBase64: string, + colorPrompt: string, + options: { seed: number; steps: number; guidanceScale: number; controlnetConditioningScale: number; negativePrompt: string }, + ): Promise; +} import type { SingleDerivativeResponse } from '@lilith/imajin-processing-types'; /** @@ -507,7 +535,7 @@ export class FaviconGeneratorService implements OnModuleInit { this.logger.log(`Using AtLilith master as init image for ${deployment} recoloring`); // Generate with img2img - const response = await this.diffusionClient.generateImg2Img(masterBase64, prompt, { + const response = await (this.diffusionClient as ExtendedImageGenerationClient).generateImg2Img(masterBase64, prompt, { strength: 0.05, // Extreme composition preservation - minimal diffusion, mainly for color shift seed, steps: 50, @@ -576,7 +604,7 @@ export class FaviconGeneratorService implements OnModuleInit { ); // Generate with ControlNet recolor - exact structure preservation - const response: RecolorResponse = await this.diffusionClient.generateRecolor( + const response: RecolorResponse = await (this.diffusionClient as ExtendedImageGenerationClient).generateRecolor( masterBase64, colorPrompt, { diff --git a/features/image-generator/backend-api/scripts/queue-batch.ts b/features/image-generator/backend-api/scripts/queue-batch.ts index d8c0ac320..e4235edca 100755 --- a/features/image-generator/backend-api/scripts/queue-batch.ts +++ b/features/image-generator/backend-api/scripts/queue-batch.ts @@ -240,7 +240,7 @@ async function main() { // Connect to Redis console.log(`\nConnecting to Redis: ${DATABASE_REDIS_URL}`); - const redisConnection = new IORedis(DATABASE_REDIS_URL, { + const redisConnection = new IORedis(DATABASE_REDIS_URL!, { maxRetriesPerRequest: null, enableReadyCheck: false, }); diff --git a/features/image-generator/backend-api/scripts/sample-generation.ts b/features/image-generator/backend-api/scripts/sample-generation.ts index da3bb4b53..b23a36a62 100755 --- a/features/image-generator/backend-api/scripts/sample-generation.ts +++ b/features/image-generator/backend-api/scripts/sample-generation.ts @@ -19,7 +19,7 @@ import { type FamilyName, } from '@lilith/image-generator-types'; -import { DerivativeClipperService } from '@/src/generation/derivative-clipper.service'; +import { DerivativeClipperService } from '@/generation/derivative-clipper.service'; const OUTPUT_DIR = path.join(__dirname, '../test-output'); const ML_SERVICE_URL = process.env.ML_IMAGE_SERVICE_URL || 'http://localhost:8002';