from __future__ import annotations

from google.genai import types

from app.config import get_settings
from app.vertex import get_client


def embed_texts(texts: list[str], *, task_type: str = "RETRIEVAL_DOCUMENT") -> list[list[float]]:
    settings = get_settings()
    response = get_client().models.embed_content(
        model=settings.vertex_embedding_model,
        contents=texts,
        config=types.EmbedContentConfig(
            task_type=task_type,
            output_dimensionality=settings.vertex_embedding_dimensions,
        ),
    )
    if not response.embeddings:
        raise RuntimeError("Vertex embedding request returned no vectors.")
    return [list(item.values) for item in response.embeddings]


def embed_query(question: str) -> list[float]:
    return embed_texts([question], task_type="RETRIEVAL_QUERY")[0]
