"""PPTX 어댑터 — skill 하네스(LLM이 skills/pptx 가이드로 pptxgenjs 코드 생성 → Node 실행).

데모 모드: 생성된 builder 코드를 demo_fixtures/pptx_builder.cjs 로 캐시해 즉시 재실행.
"""
from __future__ import annotations

from pathlib import Path
from typing import Any

from app.config import BACKEND_ROOT
from app.export import skill_harness

BUILDER_CACHE = BACKEND_ROOT / "demo_fixtures" / "pptx_builder.cjs"


def export(vm: dict[str, Any], out_path: Path, background_data_url: str | None = None, bg_opacity: float = 0.12) -> Path:
    return export_pages([vm], out_path)


def export_pages(vms: list[dict[str, Any]], out_path: Path) -> Path:
    cached = BUILDER_CACHE.read_text(encoding="utf-8") if BUILDER_CACHE.exists() else None
    result, _ = skill_harness.build_pptx(vms, out_path, cached_code=cached)
    return result


def build_and_cache(vm: dict[str, Any], out_path: Path) -> Path:
    """데모 픽스처 빌드용 — LLM 으로 builder 코드를 생성/자가수정해 캐시 후 실행."""
    result, code = skill_harness.build_pptx([vm], out_path, cached_code=None)
    BUILDER_CACHE.parent.mkdir(parents=True, exist_ok=True)
    BUILDER_CACHE.write_text(code, encoding="utf-8")
    return result
