import type { TaskVerificationRequest } from "@fusion/core"; import { AlertCircle, CheckCircle2, Loader2 } from "lucide-react"; import "./TaskVerificationStatus.css"; function formatDuration(durationMs: number | undefined): string | null { if (typeof durationMs !== "number") return null; return `${(durationMs / 1000).toFixed(1)}s`; } /** * FNXC:TaskVerificationStatus 2026-07-30-00:00: * FN-8296 exposes executor-owned verification as persisted state in every human * surface. This component deliberately renders a record only; it never offers a * command control or reimplements the chat/executor permission boundary. */ export function TaskVerificationStatus({ request, compact = false }: { request: TaskVerificationRequest | null; compact?: boolean }) { if (!request) return null; const running = request.status === "requested" || request.status === "running"; const failed = request.status === "failed" || request.status === "rejected"; const Icon = running ? Loader2 : failed ? AlertCircle : CheckCircle2; const summary = request.status === "rejected" ? request.rejectionReason ?? "Request rejected" : request.result ? `${request.result.success ? "Passed" : "Failed"}${formatDuration(request.result.durationMs) ? ` · ${formatDuration(request.result.durationMs)}` : ""}` : request.status === "requested" ? "Queued for the task executor" : "Running in the task worktree"; return (

{summary}

{!compact && request.result?.stderrTail ?
{request.result.stderrTail}
: null}
); }