import { useEffect, useState } from 'react' import { Link } from 'react-router-dom' import { Loader2 } from 'lucide-react' import { aiSessionsApi } from '@/api' import type { SimilarSession } from '@/types/ai-session' import { cn } from '@/lib/utils' interface SimilarSessionsProps { sessionId: string } export function SimilarSessions({ sessionId }: SimilarSessionsProps) { const [sessions, setSessions] = useState([]) const [loading, setLoading] = useState(true) useEffect(() => { let cancelled = false setLoading(true) aiSessionsApi .getSimilar(sessionId, 5) .then((data) => { if (!cancelled) setSessions(data) }) .catch(() => { // Silently ignore errors — don't clutter the UI }) .finally(() => { if (!cancelled) setLoading(false) }) return () => { cancelled = true } }, [sessionId]) if (loading) { return (
Loading similar sessions…
) } if (sessions.length === 0) { return null } return (

Similar Past Sessions

{sessions.map((session) => (

{session.problem_summary || 'Untitled session'}

{Math.round(session.similarity * 100)}%
{session.resolution_summary && (

✓ {session.resolution_summary}

)}
{session.problem_domain && ( {session.problem_domain} )} {session.status}
))}
) }