from __future__ import annotations from pathlib import Path from typing import Any from engine.comfy_client import generate_image as comfy_generate_image from engine.config import AppConfig from .base import BaseImageGen from .mock_adapter import MockImageGen class ComfyAdapter(BaseImageGen): def __init__(self, cfg: AppConfig): self.cfg = cfg self.fallback = MockImageGen() def generate(self, prompt: dict[str, str], output_dir: str | Path) -> str: positive = str(prompt.get("positive", "") or "") negative = str(prompt.get("negative", "") or "") try: return str( comfy_generate_image( positive, output_dir, negative_text=negative or None, cfg=self.cfg, timeout_s=60, retry=2, filename_prefix="shot", ) ) except Exception as e: # Let render_pipeline do configured fallback. raise