import { useMemo } from 'react' import { useAppStore } from '@/store/appStore' import type { Evidence } from '@/lib/types' export function EvidenceDrawer() { const run = useAppStore((s) => s.runs.find((r) => r.id === s.currentRunId)) const isOpen = useAppStore((s) => s.ui.evidenceOpen) const claimId = useAppStore((s) => s.ui.selectedClaimId) const close = useAppStore((s) => s.closeEvidence) const claim = useMemo(() => run?.report?.claims.find((c) => c.id === claimId), [run, claimId]) const verdict = useMemo(() => run?.report?.verdicts.find((v) => v.claim_id === claimId), [run, claimId]) const evidences = useMemo(() => { if (!run?.report) return [] as Evidence[] const report = run.report // 1) Prefer cited evidence for this claim const citedIds = verdict?.citation_ids || [] if (citedIds.length > 0) { const cited = report.evidence.filter((e) => citedIds.includes(e.doc_id)) if (cited.length > 0) return cited } // 2) Fallback to per-claim retrieved evidence const byClaim = report.evidence_by_claim?.[claimId ?? ''] || [] if (byClaim.length > 0) return byClaim // 3) Final fallback: top-scored global evidence const sorted = [...report.evidence].sort((a, b) => (b.score ?? 0) - (a.score ?? 0)) return sorted.slice(0, 5) }, [run, verdict, claimId]) if (!isOpen) return null return (
{JSON.stringify(e.metadata, null, 2)}
)}