"use client"; import { motion } from "framer-motion"; import { cn } from "@/lib/utils"; import type { SimStep } from "@/types/agent-data"; import { User, Bot, Terminal, ArrowRight, AlertCircle } from "lucide-react"; interface SimulatorMessageProps { step: SimStep; index: number; } const TYPE_CONFIG: Record< string, { icon: typeof User; label: string; bgClass: string; borderClass: string } > = { user_message: { icon: User, label: "User", bgClass: "bg-blue-50 dark:bg-blue-950/30", borderClass: "border-blue-200 dark:border-blue-800", }, assistant_text: { icon: Bot, label: "Assistant", bgClass: "bg-zinc-50 dark:bg-zinc-900", borderClass: "border-zinc-200 dark:border-zinc-700", }, tool_call: { icon: Terminal, label: "Tool Call", bgClass: "bg-amber-50 dark:bg-amber-950/30", borderClass: "border-amber-200 dark:border-amber-800", }, tool_result: { icon: ArrowRight, label: "Tool Result", bgClass: "bg-emerald-50 dark:bg-emerald-950/30", borderClass: "border-emerald-200 dark:border-emerald-800", }, system_event: { icon: AlertCircle, label: "System", bgClass: "bg-purple-50 dark:bg-purple-950/30", borderClass: "border-purple-200 dark:border-purple-800", }, }; export function SimulatorMessage({ step, index }: SimulatorMessageProps) { const config = TYPE_CONFIG[step.type] || TYPE_CONFIG.assistant_text; const Icon = config.icon; return (
{config.label} {step.toolName && ( {step.toolName} )}
{step.type === "tool_call" || step.type === "tool_result" ? (
          {step.content || "(empty)"}
        
) : step.type === "system_event" ? (
          {step.content}
        
) : (

{step.content}

)}

{step.annotation}

); }