"use client"; import { useState } from "react"; import { useSessionStore } from "@/store/session.store"; import { api } from "@/lib/api"; import { formatScore } from "@/lib/utils"; export function DoneModal() { const { finalScore, sessionId, task, clearSession, resetSession, isLoading } = useSessionStore(); const [agentName, setAgentName] = useState(""); const [submitted, setSubmitted] = useState(false); const [submitError, setSubmitError] = useState(null); const [submitting, setSubmitting] = useState(false); const handleSubmit = async () => { if (!sessionId || !agentName.trim()) return; setSubmitting(true); setSubmitError(null); try { await api.submitLeaderboard(sessionId, agentName.trim()); setSubmitted(true); } catch (e) { setSubmitError((e as Error).message); } finally { setSubmitting(false); } }; const scoreColor = finalScore !== null ? finalScore >= 0.8 ? "text-emerald-600" : finalScore >= 0.5 ? "text-indigo-600" : "text-orange-600" : "text-gray-400"; return (

Episode Complete

{finalScore !== null ? formatScore(finalScore) : "—"}

Final Score · {task}

{!submitted ? ( <>

Submit to leaderboard (optional)

setAgentName(e.target.value)} maxLength={32} className="w-full bg-gray-50 border border-gray-200 rounded-lg px-3 py-2 text-sm text-gray-900 placeholder:text-gray-400 focus:outline-none focus:ring-2 focus:ring-indigo-500/20 focus:border-indigo-300" onKeyDown={(e) => { if (e.key === "Enter" && agentName.trim()) handleSubmit(); }} /> {submitError &&

{submitError}

} ) : (

Score submitted to leaderboard!

)}
); }