"""MatchedContext — contexto encontrado por el retriever con score y relaciones."""

from __future__ import annotations

from dataclasses import dataclass, field

from context_type import ContextType
from related_context import RelatedContext


@dataclass
class MatchedContext:
    """Contexto encontrado por el retriever con score de relevancia y relaciones.

    Modela un resultado de busqueda con niveles de detalle progresivos:
    abstract (minimo), overview (resumen), y detail (contenido completo).

    Attributes:
        uri:          Identificador unico del contexto.
        context_type: Categoria del contexto (MEMORY, RESOURCE, SKILL).
        level:        Nivel de detalle cargado: 0=abstract, 1=overview, 2=detail.
        abstract:     Resumen breve siempre disponible.
        overview:     Resumen extendido, disponible en level >= 1.
        category:     Subcategoria libre dentro del context_type.
        score:        Score de relevancia 0.0-1.0.
        match_reason: Explicacion textual del por que este contexto fue seleccionado.
        relations:    Contextos relacionados (referencias cruzadas).
    """

    uri: str
    context_type: ContextType
    level: int = 2
    abstract: str = ""
    overview: str | None = None
    category: str = ""
    score: float = 0.0
    match_reason: str = ""
    relations: list[RelatedContext] = field(default_factory=list)
