"use client"; import { BadgeCheck, Bot, Braces, Database, FileCheck2, FileLock2, Flag, GitCommitHorizontal, PackageCheck, RadioTower, RefreshCcw, Rocket, Send, ShieldCheck, Workflow, } from "lucide-react"; import { Handle, Position, type Node, type NodeProps } from "@xyflow/react"; import type { CardData } from "@/lib/flow"; import type { NodeType } from "@/lib/types"; const ICONS: Record = { input: Database, contract: FileLock2, operation: RadioTower, worker: Bot, attempt: Send, artifact: PackageCheck, validator: ShieldCheck, validation: FileCheck2, decision: BadgeCheck, checkpoint: Flag, publication: Rocket, transaction: GitCommitHorizontal, readback: RefreshCcw, }; export function FlowCard({ data, selected }: NodeProps>) { const item = data.item; const Icon = ICONS[item.node_type] ?? Braces; return
{item.node_type} {String(item.sequence).padStart(2, "0")}

{item.title}

{item.subtitle}

{item.record.model_name}
{item.metrics.length ?
{item.metrics.slice(0, 3).map((metric) =>
{metric.label}
{metric.value}
)}
: null}
{item.status} {item.agent_role ? {item.agent_role} : null} {item.task_kind ? {item.task_kind} : null}
; }