import { useRef } from "react"; import { ArrowRight, Database } from "lucide-react"; import { Handle, Position, type NodeProps } from "@xyflow/react"; import type { CanvasNodeData } from "@/lib/layout"; import { SourceComparisonButton } from "@/components/flow/SourceComparisonButton"; import { useRetrievalHoverPreview } from "@/components/flow/RetrievalHoverPreview"; export function DirectToolGroupCard({ data }: NodeProps) { const node = data as unknown as CanvasNodeData; const item = node.item; if (!item || item.itemType !== "retrieval-direct") return null; return ; } function DirectToolGroupCardContent({ node, item }: { node: CanvasNodeData; item: Extract, { itemType: "retrieval-direct" }> }) { const cardRef = useRef(null); const hoverPreview = useRetrievalHoverPreview({ anchorRef: cardRef, buildId: node.buildId, item, onOpenDetail: () => node.onOpen(item, "business") }); const sourceText = item.group.sources.map((source) => source.businessLabel).join("、") || "相关信息"; return <>
{ if (event.key === "Enter" || event.key === " ") { event.preventDefault(); node.onOpen(item, "business"); } }}>
工具取数实现 Agent 直接读取

{sourceText}

读取
{item.group.callCount} 次
结果
{item.group.failureCount ? `${item.group.failureCount} 次失败` : item.group.interruptedCount ? `${item.group.interruptedCount} 次中断` : item.group.runningCount ? "进行中" : "已完成"}
{hoverPreview.preview}; }