"""
brain/search.py — Semantic search over the thought database.

Generates an embedding for the query text, then runs pgvector similarity
search. All logic is thin wrappers over database.py primitives.
"""
from __future__ import annotations

import logging

logger = logging.getLogger(__name__)


async def semantic_search(
    query: str,
    threshold: float = 0.7,
    limit: int = 10,
    user_id: str | None = None,
) -> list[dict]:
    """
    Embed the query and return matching thoughts ranked by similarity.
    Returns an empty list if Brain DB is unavailable.
    """
    from .embeddings import get_embedding
    from .database import search_thoughts

    embedding = await get_embedding(query)
    return await search_thoughts(embedding, threshold=threshold, limit=limit, user_id=user_id)
