"use client"; import { useState } from "react"; import { CheckCircle, XCircle, Loader2, ChevronDown, ChevronUp, MessageSquare, FileText, } from "lucide-react"; import { BasicMarkdownText } from "../thread/markdown-text"; import { cn } from "@/lib/utils"; type MarkTaskCompletedProps = { status: "loading" | "generating" | "done"; review?: string; reasoningText?: string; summaryText?: string; }; export function MarkTaskCompleted({ status, review, reasoningText, summaryText, }: MarkTaskCompletedProps) { const [expanded, setExpanded] = useState(!!(status === "done" && review)); const [showReasoning, setShowReasoning] = useState(true); const [showSummary, setShowSummary] = useState(true); const getStatusIcon = () => { switch (status) { case "loading": return (
); case "generating": return ( ); case "done": return ( ); } }; const getStatusText = () => { switch (status) { case "loading": return "Preparing task review..."; case "generating": return "Reviewing task completion..."; case "done": return "Task marked as completed"; } }; return (
{reasoningText && (
{showReasoning && ( {reasoningText} )}
)}
setExpanded((prev) => !prev) : undefined } > {getStatusText()}
{getStatusIcon()} {status === "done" && review && ( )}
{expanded && review && status === "done" && (

Final Review

{review}
)} {summaryText && status === "done" && (
{showSummary && ( {summaryText} )}
)}
); } type MarkTaskIncompleteProps = { status: "loading" | "generating" | "done"; review?: string; additionalActions?: string[]; reasoningText?: string; summaryText?: string; }; export function MarkTaskIncomplete({ status, review, additionalActions, reasoningText, summaryText, }: MarkTaskIncompleteProps) { const [expanded, setExpanded] = useState( !!(status === "done" && (review || additionalActions)), ); const [showReasoning, setShowReasoning] = useState(true); const [showSummary, setShowSummary] = useState(true); const getStatusIcon = () => { switch (status) { case "loading": return (
); case "generating": return ; case "done": return ; } }; const getStatusText = () => { switch (status) { case "loading": return "Preparing task review..."; case "generating": return "Reviewing task completion..."; case "done": return "Task marked as incomplete"; } }; return (
{reasoningText && (
{showReasoning && ( {reasoningText} )}
)}
setExpanded((prev) => !prev) : undefined } > {getStatusText()}
{getStatusIcon()} {status === "done" && (review || additionalActions) && ( )}
{expanded && status === "done" && (review || additionalActions) && (
{review && (

Final Review

{review}
)} {additionalActions && additionalActions.length > 0 && (

Additional Actions Required ({additionalActions.length})

    {additionalActions.map((action, index) => (
  1. {index + 1}
    {action}
  2. ))}
)}
)} {summaryText && status === "done" && (
{showSummary && ( {summaryText} )}
)}
); }