"""Union agent pack declarations with App Block plan requirements."""

from src.domain.app_blocks.catalogs import canonical_feature_pack


def merge_pack_install_entries(
    agent_entries: list[dict] | None,
    *,
    install_slugs: list[str],
) -> list[dict]:
    """Keep agent config; add plan-required slugs the agent omitted."""
    merged: dict[str, dict] = {}
    for entry in agent_entries or []:
        if not isinstance(entry, dict):
            continue
        slug = canonical_feature_pack(str(entry.get("pack_slug") or ""))
        if not slug:
            continue
        config = entry.get("config")
        merged[slug] = {
            "pack_slug": slug,
            "config": config if isinstance(config, dict) else {},
        }
    for slug in install_slugs:
        canonical = canonical_feature_pack(slug)
        merged.setdefault(canonical, {"pack_slug": canonical, "config": {}})
    return list(merged.values())
