# pass_list
# ---------
# Lista entradas del password store como JSON array.
# Opcionalmente filtra por prefijo.
# Sale con exit code 1 si pass falla.
#
# USO (sourced):
#   source pass_list.sh
#   pass_list                  # todas las entradas
#   pass_list agentes          # solo bajo agentes/

pass_list() {
    local prefix="${1:-}"

    local raw
    raw=$(pass ls "$prefix" 2>/dev/null)
    if [ $? -ne 0 ]; then
        echo "pass_list: fallo al listar entradas" >&2
        return 1
    fi

    # Parsear output de pass: extraer nombres limpios (sin tree chars)
    local entries
    entries=$(echo "$raw" | sed 's/[│├└──── ]//g' | sed '/^$/d' | grep -v '^Password' | grep -v '^[[:space:]]*$')

    # Construir JSON array
    printf '['
    local first=true
    while IFS= read -r line; do
        line=$(echo "$line" | sed 's/^[[:space:]]*//' | sed 's/[[:space:]]*$//')
        [ -z "$line" ] && continue
        if [ "$first" = true ]; then
            first=false
        else
            printf ','
        fi
        printf '"%s"' "$line"
    done <<< "$entries"
    printf ']'
}
