MODULE_VERSIONS = {
    "auth_service": "1.0.0",
    "user_service": "1.0.0",
    "project_service": "1.0.0",
    "activity_logger": "1.0.0",
    "pdf_parser": "1.0.0",
    "entity_extractor": "1.2.0",             # 2026-03-16 — stricter extraction (v7 prompts), fewer minor entities/relations
    "scene_still_extractor": "1.0.0",
    "analysis_service": "1.0.0",
    "gemini_image_client": "1.1.0",       # 2026-03-15T14:00:00 — ModerationError, moderation block detection, response timing
    "world_guide_generator": "1.0.0",
    "entity_dependency": "1.0.0",         # 2026-03-16 — visual dependency graph for entity image generation ordering
    "reference_image_generator": "1.2.0",  # 2026-03-16 — photorealistic style enforcement, v2 reference prompts
    "scene_image_generator": "1.3.0",     # 2026-03-16 — exclude location refs from scene gen, same-background scene linking
    "t2i_prompt_composer": "1.0.0",        # 2026-03-16 — T2I prompt composer: scene description -> cinematic + closeup prompts
    "image_service": "1.7.0",             # 2026-03-16 — location ref exclusion, same-background scene linking
    "image_validator": "1.0.0",           # 2026-03-15T14:00:00 — GPT-5.4 vision quality validator, prompt_dep: image_validation/v1
    "entities_api": "1.0.1",              # 2026-03-15T11:00:00 — episode list in detail response
    "webbook_generator": "1.1.0",         # 2026-03-15 — section-level opening/closing paragraphs, still coverage validation
    "pdf_renderer": "1.1.0",              # 2026-03-15 — section titles, image captions, dividers, named layout constants
    "pdf_validator": "1.0.0",             # 2026-03-15 — GPT vision-based PDF quality validation
    "prompt_sanitizer": "1.1.0",          # 2026-03-15T22:30:00 — 3 photorealistic strategies (film_previs, movie_poster, aftermath)
    "generation_tracker": "1.0.0",        # 2026-03-15T14:00:00 — Opik-style T2I generation trace logging
    "provenance": "1.0.0",               # 2026-03-15T15:00:00 — Pipeline operation provenance recorder, Opik-compatible
    "progress_tracker": "1.0.0",          # 2026-03-15 — Pipeline progress tracking for UI polling
    "variation_recommender": "1.0.0",     # 2026-03-16 — A/B variation recommender (angle/color)
    "gemini_i2i_editor": "1.0.0",         # 2026-03-16 — Gemini i2i angle/color editor
}

# Module metadata: prompt dependencies and update timestamps.
_MODULE_INFO = {
    "entity_extractor": {
        "prompt_dependency": "entity_extraction/v7",
        "updated_at": "2026-03-16",
    },
    "scene_still_extractor": {
        "prompt_dependency": "scene_stills/v2",
        "updated_at": "2026-03-15T15:00:00",
    },
    "world_guide_generator": {
        "prompt_dependency": "prototype_prompts/v5",
        "updated_at": "2026-03-15T15:00:00",
    },
    "entity_dependency": {
        "prompt_dependency": None,
        "updated_at": "2026-03-16",
    },
    "reference_image_generator": {
        "prompt_dependency": "prototype_prompts/v5 + reference_image/v2",
        "updated_at": "2026-03-16",
    },
    "t2i_prompt_composer": {
        "prompt_dependency": "t2i_composer/v1",
        "updated_at": "2026-03-16",
    },
    "scene_image_generator": {
        "prompt_dependency": "prototype_prompts/v5",
        "updated_at": "2026-03-16",
    },
    "webbook_generator": {
        "prompt_dependency": "prototype_prompts/v5",
        "updated_at": "2026-03-15T15:00:00",
    },
    "image_validator": {
        "prompt_dependency": "image_validation/v1",
        "updated_at": "2026-03-15T14:00:00",
    },
    "pdf_validator": {
        "prompt_dependency": "pdf_validation/v1",
        "updated_at": "2026-03-15T15:00:00",
    },
    "prompt_sanitizer": {
        "prompt_dependency": "prompt_sanitizer/v1",
        "updated_at": "2026-03-15T22:30:00",
    },
    "provenance": {
        "prompt_dependency": None,
        "updated_at": "2026-03-15T15:00:00",
    },
    "progress_tracker": {
        "prompt_dependency": None,
        "updated_at": "2026-03-15",
    },
    "variation_recommender": {
        "prompt_dependency": "variation_recommender/v1",
        "updated_at": "2026-03-16",
    },
    "gemini_i2i_editor": {
        "prompt_dependency": None,
        "updated_at": "2026-03-16",
    },
}


def get_module_info(module_name: str) -> dict:
    """Returns {"version": ..., "prompt_dependency": ..., "updated_at": ...}."""
    version = MODULE_VERSIONS.get(module_name, "0.0.0")
    info = _MODULE_INFO.get(module_name, {})
    return {
        "version": version,
        "prompt_dependency": info.get("prompt_dependency"),
        "updated_at": info.get("updated_at"),
    }
