"""Composition JSON helpers for feature packs.

``composition.function_slugs`` is either a list of library slugs (legacy seed)
or a list of objects with ``library_slug`` plus install-time trigger config
(contact-capture 1.1.0+). Catalog reads need the slug list; install uses the
full entry.
"""
from __future__ import annotations

from typing import Any


def library_slugs_from_entries(entries: object) -> list[str]:
    if not isinstance(entries, list):
        return []
    slugs: list[str] = []
    for item in entries:
        if isinstance(item, str):
            slug = item.strip()
        elif isinstance(item, dict):
            slug = str(item.get("library_slug") or "").strip()
        else:
            continue
        if slug:
            slugs.append(slug)
    return slugs


def composed_library_slugs(composition: dict[str, Any] | None) -> list[str]:
    return library_slugs_from_entries((composition or {}).get("function_slugs"))
