import { useState, type JSX } from "react"; import type { AgentToolCallCardProps } from "./AgentToolCallCard"; import { AgentToolCallHeader } from "./AgentToolCallHeader"; import { CollapsibleReveal } from "./CollapsibleReveal"; import { AgentExpandedToolContent } from "./tool-renderers/AgentExpandedToolContent"; import { hasAgentToolContent } from "./tool-renderers/agentToolContentShared"; export function AgentTaskCallCard({ call, onLinkClick, defaultExpanded, nonCollapsible }: AgentToolCallCardProps): JSX.Element { "use memo"; const running = (call.task?.status ?? call.status ?? "").trim().toLowerCase() === "running"; const hasDetail = hasAgentToolContent(call); const pinned = nonCollapsible ?? running; const [expanded, setExpanded] = useState(defaultExpanded ?? running); const ariaLabel = taskCallAriaLabel(call); return (
{hasDetail && !pinned ? ( ) : (
)} {!hasDetail && call.summary ? (
{call.summary}
) : null} {hasDetail && pinned ? ( ) : null} {hasDetail && !pinned ? ( ) : null}
); } function taskCallAriaLabel(call: AgentToolCallCardProps["call"]): string { return [ call.name, call.status, call.compactSummary?.trim() || call.summary.trim() ] .filter(Boolean) .join(" "); }