import { useState, useEffect } from 'react' import { useNavigate } from 'react-router-dom' import { AlertTriangle, Clock, Hash, Ticket, Loader2, RefreshCw } from 'lucide-react' import { aiSessionsApi } from '@/api' import type { AISessionSummary } from '@/types/ai-session' interface EscalationQueueProps { onPickup?: (sessionId: string) => void } export function EscalationQueue({ onPickup }: EscalationQueueProps) { const navigate = useNavigate() const [sessions, setSessions] = useState([]) const [isLoading, setIsLoading] = useState(true) const [error, setError] = useState(null) const loadQueue = async () => { setIsLoading(true) setError(null) try { const data = await aiSessionsApi.getEscalationQueue() setSessions(data) } catch { setError('Failed to load escalation queue') } finally { setIsLoading(false) } } useEffect(() => { loadQueue() }, []) const handlePickup = (sessionId: string) => { if (onPickup) { onPickup(sessionId) } else { navigate(`/pilot/${sessionId}?pickup=true`) } } if (isLoading) { return (
) } if (error) { return (

{error}

) } if (sessions.length === 0) { return (

No sessions awaiting escalation

) } return (

Awaiting pickup ({sessions.length})

{sessions.map((session) => (

{session.problem_summary || 'Untitled session'}

{session.escalation_reason && (

Reason: {session.escalation_reason}

)}
{session.problem_domain && ( {session.problem_domain} )} {session.step_count} steps {new Date(session.created_at).toLocaleTimeString([], { hour: '2-digit', minute: '2-digit' })} {session.psa_ticket_id && ( #{session.psa_ticket_id} )}
))}
) }