import { CheckCircleIcon, ChevronUp, ClipboardListIcon, Loader2Icon, XCircleIcon, } from "lucide-react"; import { useMemo, useState } from "react"; import { Streamdown } from "streamdown"; import { ChainOfThought, ChainOfThoughtContent, ChainOfThoughtStep, } from "@/components/ai-elements/chain-of-thought"; import { Shimmer } from "@/components/ai-elements/shimmer"; import { Button } from "@/components/ui/button"; import { ShineBorder } from "@/components/ui/shine-border"; import { useI18n } from "@/core/i18n/hooks"; import { streamdownPlugins, streamdownPluginsWithWordAnimation, } from "@/core/streamdown"; import { useSubtask } from "@/core/tasks/context"; import { cn } from "@/lib/utils"; export function SubtaskCard({ className, taskId, }: { className?: string; taskId: string; isLoading: boolean; }) { const { t } = useI18n(); const [collapsed, setCollapsed] = useState(true); const task = useSubtask(taskId)!; const icon = useMemo(() => { if (task.status === "completed") { return ; } else if (task.status === "failed") { return ; } else if (task.status === "in_progress") { return ; } }, [task.status]); return ( {task.status === "in_progress" && ( )}
{task.prompt && ( {task.prompt} } > )} {task.status === "completed" && ( <> } > {task.result} } > )} {task.status === "failed" && ( {task.error}} icon={} > )}
); }