from __future__ import annotations from dataclasses import dataclass, replace @dataclass(frozen=True) class KnowledgeEvidence: chunk_id: str content: str score: float retriever: str object_uid: str object_type: str object_version: int business_domain_uid: str | None point_keys: tuple[str, ...] point_revisions: tuple[int, ...] generation: int source_updated_at: str | None freshness_status: str = "fresh" section_path: str | None = None def with_score_and_retriever( self, score: float, retriever: str ) -> KnowledgeEvidence: return replace(self, score=score, retriever=retriever) @dataclass(frozen=True) class SearchResult: evidence: tuple[KnowledgeEvidence, ...] mode: str degraded_components: tuple[str, ...] = ()