import "@flowgram.ai/free-layout-editor/index.css" import { useNodeRender, WorkflowNodeRenderer, type WorkflowNodeProps, } from "@flowgram.ai/free-layout-editor" import { BotIcon, CircleStopIcon, DatabaseIcon, GitBranchIcon, MessageSquareTextIcon, SendIcon, UserRoundIcon, } from "lucide-react" import type { ComponentType } from "react" import { cn } from "@/lib/utils" const iconByType: Record> = { start: UserRoundIcon, conversation_understanding: BotIcon, reply_policy: MessageSquareTextIcon, condition: GitBranchIcon, knowledge_retrieve: DatabaseIcon, answerability_gate: GitBranchIcon, llm_reply: BotIcon, human_confirm: UserRoundIcon, create_ticket: MessageSquareTextIcon, handoff_to_human: UserRoundIcon, send_reply: SendIcon, end: CircleStopIcon, } export function FlowgramNodeRenderer(props: WorkflowNodeProps) { const { selected, node } = useNodeRender() const nodeType = String(node.flowNodeType ?? "") const Icon = iconByType[nodeType] ?? BotIcon const nodeJSON = node.toJSON?.() as { data?: { title?: string }; title?: string } | undefined const title = nodeJSON?.data?.title || nodeJSON?.title || nodeType || "节点" return (
{title}
{nodeType}
) }