"use client" import { useMemo, useState } from "react" import { AlertTriangleIcon, CheckCircle2Icon, TimerIcon } from "lucide-react" import { JsonTreeViewer } from "@/components/json-tree-viewer" import { Badge } from "@/components/ui/badge" import { ScrollArea } from "@/components/ui/scroll-area" import type { AIWorkflowNodeRun, AIWorkflowRun } from "@/lib/api/admin" import { cn } from "@/lib/utils" import { OfficialWorkflowEditor } from "../../ai-workflows/_components/official-workflow-editor" export function WorkflowRunAuditGraph({ run }: { run: AIWorkflowRun }) { const nodeRuns = useMemo(() => run.nodes ?? [], [run.nodes]) const firstNodeId = nodeRuns[0]?.nodeId ?? run.definition?.nodes?.[0]?.id ?? "" const [selectedNodeId, setSelectedNodeId] = useState(firstNodeId) const selectedNodeRun = nodeRuns.find((item) => item.nodeId === selectedNodeId) ?? nodeRuns[0] const executedNodeIds = useMemo(() => new Set(nodeRuns.map((item) => item.nodeId)), [nodeRuns]) return (