import {
  Atom,
  Bot,
  Brain,
  Bug,
  CircuitBoard,
  Code,
  Cog,
  Cpu,
  Crown,
  Database,
  Eye,
  FileCode,
  Fingerprint,
  Flame,
  Gem,
  GitBranch,
  Globe,
  Hammer,
  Heart,
  Hexagon,
  Lightbulb,
  Lock,
  Mail,
  MessageSquare,
  Microscope,
  Package,
  Pentagon,
  Puzzle,
  Radar,
  Rocket,
  Search,
  Shield,
  Sparkles,
  Star,
  Swords,
  Target,
  Telescope,
  Terminal,
  Wand2,
  Wrench,
  Zap,
  type LucideIcon,
} from "lucide-react";
import { AGENT_ICON_NAMES, type AgentIconName } from "@paperclipai/shared";

export const AGENT_ICONS: Record<AgentIconName, LucideIcon> = {
  bot: Bot,
  cpu: Cpu,
  brain: Brain,
  zap: Zap,
  rocket: Rocket,
  code: Code,
  terminal: Terminal,
  shield: Shield,
  eye: Eye,
  search: Search,
  wrench: Wrench,
  hammer: Hammer,
  lightbulb: Lightbulb,
  sparkles: Sparkles,
  star: Star,
  heart: Heart,
  flame: Flame,
  bug: Bug,
  cog: Cog,
  database: Database,
  globe: Globe,
  lock: Lock,
  mail: Mail,
  "message-square": MessageSquare,
  "file-code": FileCode,
  "git-branch": GitBranch,
  package: Package,
  puzzle: Puzzle,
  target: Target,
  wand: Wand2,
  atom: Atom,
  "circuit-board": CircuitBoard,
  radar: Radar,
  swords: Swords,
  telescope: Telescope,
  microscope: Microscope,
  crown: Crown,
  gem: Gem,
  hexagon: Hexagon,
  pentagon: Pentagon,
  fingerprint: Fingerprint,
};

const DEFAULT_ICON: AgentIconName = "bot";

export function getAgentIcon(iconName: string | null | undefined): LucideIcon {
  if (iconName && AGENT_ICON_NAMES.includes(iconName as AgentIconName)) {
    return AGENT_ICONS[iconName as AgentIconName];
  }
  return AGENT_ICONS[DEFAULT_ICON];
}
