# =============================================================================
# AGENT NAME GENERATOR — EXPANDED LISTS FOR ALLITERATION
# Framework: ADJECTIVE + NOUN (same first letter recommended)
# =============================================================================

ADJECTIVES =[

    # ── METALES, MINERALES Y MATERIALES (La Forja) ───────────────────────────
    "obsidian", "silicon", "cobalt", "titanium", "tungsten", "carbon",
    "quartz", "neon", "krypton", "xenon", "iron", "copper", "silver",
    "gold", "platinum", "iridium", "lithium", "basalt", "onyx", "jade",
    "bismuth", "antimony", "graphene", "beryllium", "vanadium", "osmium",
    "rhodium", "palladium", "hafnium", "rhenium", "tellurium", "selenium",
    "arsenic", "gallium", "indium", "thorium", "uranium", "radium",
    "cesium", "rubidium", "niobium", "zirconium", "tantalum", "manganese",
    "chromium", "nickel", "zinc", "pewter", "bronze", "brass", "steel",
    "flint", "slate", "marble", "granite", "alabaster", "malachite",
    "tourmaline", "topaz", "opal", "garnet", "amethyst", "spinel",
    "agate", "jasper", "pyrite", "hematite", "magnetite", "galena", 
    "cinnabar", "azurite", "chrysocolla", "labradorite", "moonstone", 
    "sunstone", "bloodstone", "tigereye", "lapis",
    # [NUEVOS - Materiales y Aleaciones Avanzadas]
    "cupric", "ferric", "plumbic", "stannic", "auric", "argentine", 
    "vitreous", "ceramic", "polymeric", "acrylic", "kevlar", "teflon", 
    "aerogel", "carbide", "yttric", "ytterbic", "zirconic", "glass",
    "crystal", "diamond", "mithril", "adamantium", "orichalcum",

    # ── FÍSICA, ESPACIO Y CYBERPUNK (Ciencia Ficción) ────────────────────────
    "quantum", "astral", "cyber", "neural", "plasma", "stellar",
    "cosmic", "galactic", "nebular", "kinetic", "static", "dynamic",
    "atomic", "subatomic", "holographic", "bionic", "synthetic",
    "optic", "sonic", "magnetic", "electric", "solar", "lunar",
    "photonic", "graviton", "hypersonic", "supersonic", "thermal",
    "radiant", "spectral", "prismatic", "chrono", "temporal", "spatial",
    "dimensional", "orbital", "apogee", "vector", "tensor", "binary",
    "hexadecimal", "fractal", "algorithmic", "recursive", "entropic",
    "syntropic", "tachyon", "lepton", "quasar", "pulsar", "neutron",
    "magnetar", "singularity", "wormhole", "darkmatter", "antimatter", 
    "positronic", "cybernetic", "nanotech", "biotech", "exo", "endo", 
    "nano", "macro", "micro", "omni", "poly", "meta", "para", "ultra", 
    "hyper", "turbo", "servo", "gyro", "crypto", "digital", "analog", 
    "octal", "boolean", "iterative", "autonomous", "adaptive", "emergent",
    "distributed", "parallel", "sequential", "stochastic", "deterministic",
    # [NUEVOS - Propiedades Físicas y Quánticas]
    "baryonic", "fermionic", "bosonic", "hadronic", "gluonic", "muonic",
    "tachyonic", "synaptic", "heuristic", "kinematic", "isobaric", 
    "isothermal", "adiabatic", "haptic", "voltaic", "galvanic", 
    "luminescent", "fluorescent", "phosphorescent", "incandescent", 
    "xray", "zodiacal", "quantized", "metric", "modular", "nodal",

    # ── MISTICISMO, ARQUITECTURA Y GEOMETRÍA (El Lore) ───────────────────────
    "arcane", "cryptic", "mystic", "geometric", "prism",
    "apex", "zenith", "prime", "alpha", "omega", "silent", "shadow",
    "ghost", "phantom", "echo", "void", "abyssal", "celestial",
    "ancient", "ruin", "temple", "monolith", "cipher", "nexus",
    "runic", "totemic", "shamanic", "druidic", "elemental", "infernal",
    "divine", "sacral", "ritual", "primal", "primordial", "eternal",
    "immortal", "sovereign", "regal", "imperial", "archaic", "mythic",
    "legendary", "sylvan", "umbral", "nether", "stygian", "elysian",
    "olympian", "titanic", "cyclopean", "chthonic", "empyrean", "aetherial",
    "liminal", "esoteric", "occult", "hermetic", "alchemical", "oracular",
    "prophetic", "seraphic", "demonic", "eldritch", "necrotic",
    "verdant", "sylph", "auric", "dreamlike", "oneiric",
    "wraith", "revenant", "lich", "undying", "deathless", "hallowed", 
    "sacred", "profane", "blasphemous", "forbidden", "cursed", "blessed", 
    "sanctified", "exalted", "fallen", "forsaken", "chosen", "bound", 
    "unbound", "sealed", "unseen", "nameless", "faceless", "formless", 
    "boundless", "endless", "timeless", "ageless", "undead",
    #[NUEVOS - Arquitectura, Formas y Mitos raros]
    "orthogonal", "diagonal", "scalar", "planar", "convex", "concave",
    "spherical", "toroidal", "polyhedral", "tessellated", "labyrinthine",
    "daedalian", "chimeric", "heretical", "orthodox", "apocryphal", 
    "canonical", "gnostic", "karmic", "yawning", "yester", "yonder", 
    "kellic", "jovian", "jubilant", "judicious", "jural", "zephyric",

    # ── CULTURAS ANCESTRALES Y CIVILIZACIONES ────────────────────────────────
    "vedic", "brahmic", "shinto", "taoist", "celtic", "roman", "spartan",
    "aztec", "mayan", "incan", "olmec", "toltec", "zapotec", "teotihuacan",
    "nordic", "viking", "saxon", "gaelic", "pictish", "bardic",
    "sumerian", "akkadian", "babylonian", "assyrian", "phoenician",
    "egyptian", "nubian", "carthaginian", "kushite", "aksumite",
    "persian", "parthian", "sassanid", "zoroastrian", "mithraic",
    "scythian", "sarmatian", "hunnic", "mongol", "tungusic", "siberian",
    "minoan", "mycenaean", "etruscan", "thracian", "illyrian", "dacian",
    "khmer", "javanese", "majapahit", "srivijayan", "champa", "pagan",
    #[NUEVOS - Civilizaciones con letras raras]
    "kemetic", "canaanite", "elamite", "hittite", "hurrian", "urartian", 
    "yamato", "yayoi", "zulu", "korean", "kyivan", "yoruba",

    # ── NATURALEZA Y ELEMENTOS EXTREMOS ──────────────────────────────────────
    "volcanic", "glacial", "tectonic", "seismic", "typhonic", "cyclonic",
    "boreal", "austral", "arctic", "antarctic", "tropical", "arid",
    "torrential", "tempestuous", "cataclysmic", "primeval",
    "hadal", "pelagic", "littoral", "benthic", "riparian",
    "alpine", "subalpine", "tundral", "taiga", "steppe", "savannah",
    "monsoon", "drought", "blizzard", "avalanche", "tsunami", "deluge",
    "inferno", "hellfire", "frosted", "scorched", "withered", "overgrown",
    # [NUEVOS - Climas y Biomas científicos]
    "xeric", "pluvial", "fluvial", "aeolian", "brumous", "bathypelagic",
    "epipelagic", "mesopelagic", "vernal", "autumnal", "hibernal", "estival",

    # ── COLORES (Cyberpunk y Heráldica) ──────────────────────────────────────
    "crimson", "azure", "violet", "indigo", "cyan", "magenta",
    "viridian", "amber", "chrome", "emerald", "sapphire", "ruby",
    "scarlet", "vermillion", "cerulean", "teal", "chartreuse", "umber",
    "sienna", "ochre", "ivory", "ebony", "sable", "argent", "aureate",
    "lavender", "mauve", "coral", "turquoise", "ultramarine",
    "carmine", "fuchsia", "heliotrope", "puce", "cerise", "nacarat",
    "incarnadine", "minium", "wenge", "ecru", "fulvous",
    "lurid", "livid", "ashen", "osseous", "leaden",
    #[NUEVOS - Colores con letras raras para Aliteración]
    "xanthic", "yellow", "zaffre", "khaki", "jet", "glaucous", 
    "amaranth", "aureolin", "celadon", "cordovan", "gamboge", "keppel", 
    "xanadu", "yale", "zomp",

    # ── ESTADOS Y ATRIBUTOS (Para Agentes Especializados) ────────────────────
    "swift", "lone", "rogue", "first", "last", "final", "supreme", 
    "absolute", "total", "null", "zero", "infinite", "singular", "dual", 
    "twin", "triple", "hex", "octo", "hidden", "veiled", "masked", 
    "cloaked", "shrouded", "revealed", "broken", "forged", "reborn", 
    "ascended", "corrupted", "purified", "tempered", "honed", "shattered", 
    "whole", "hollow", "solid", "dense", "sparse", "vast", "narrow", 
    "deep", "shallow", "high", "low", "bright", "dark", "dim", "blazing",
    #[NUEVOS - Comportamientos de FSM y Agentes]
    "yielding", "yearning", "zealous", "quaking", "quixotic", "quirky", 
    "quiet", "quick", "vagrant", "errant", "nomadic", "peregrine", 
    "vigilant", "dormant", "latent", "resurgent", "insurgent", "defiant", 
    "obedient", "feral", "tame", "lucid", "opaque", "knavish", "kindred"
]

# =============================================================================

NOUNS = [

    # ── DEPREDADORES Y ÁGILES (Terrestres) ───────────────────────────────────
    "wolf", "fox", "coyote", "jackal", "jaguar", "panther", "leopard",
    "tiger", "lion", "lynx", "cheetah", "puma", "bear", "grizzly",
    "badger", "wolverine", "mink", "ferret", "weasel", "otter",
    # Nuevos terrestres
    "ocelot", "serval", "caracal", "clouded-leopard", "snow-leopard",
    "black-bear", "polar-bear", "kodiak", "dhole", "maned-wolf",
    "hyena", "aardwolf", "mongoose", "honey-badger", "zorilla",
    "tasmanian-devil", "quoll", "thylacine", "numbat", "bilby",
    "porcupine", "pangolin", "armadillo", "anteater", "aardvark",
    "tapir", "rhino", "bison", "buffalo", "auroch", "elk", "moose",
    "stag", "stallion", "mustang", "ram", "bull", "boar", "warthog",
    "meerkat", "prairie-dog", "groundhog", "capybara", "paca",

    # ── AVES (Visión y Altura) ────────────────────────────────────────────────
    "hawk", "falcon", "eagle", "owl", "raven", "crow", "condor",
    "kite", "osprey", "vulture", "heron", "crane", "swan", "ibis",
    "quetzal", "macaw", "toucan", "hummingbird", "swift",
    # Nuevas aves
    "albatross", "petrel", "frigatebird", "pelican", "kingfisher",
    "hornbill", "cassowary", "roadrunner", "mockingbird", "starling",
    "magpie", "jay", "jackdaw", "chough", "hoopoe", "roller",
    "bee-eater", "secretary-bird", "shoebill", "hamerkop", "adjutant",
    "marabou", "limpkin", "sunbittern", "kagu", "takehe", "kakapo",
    "lyrebird", "bowerbird", "riflebird", "manakin", "cotinga",
    "harpy", "martial-eagle", "bateleur", "lammergeier", "lanner",
    "merlin", "hobby", "peregrine", "gyrfalcon", "saker", "aplomado",
    "sparrowhawk", "goshawk", "harrier", "buzzard", "boobook",
    "screech-owl", "barn-owl", "great-horned", "snowy-owl", "elf-owl",

    # ── REPTILES, ANFIBIOS Y MESOAMERICANOS ──────────────────────────────────
    "serpent", "snake", "viper", "cobra", "python", "mamba", "boa",
    "dragon", "lizard", "iguana", "gecko", "chameleon", "monitor",
    "turtle", "tortoise", "crocodile", "alligator", "caiman",
    "frog", "toad", "salamander", "newt", "axolotl",
    # Nuevos reptiles y anfibios
    "skink", "anole", "basilisk", "frilled", "thorny-devil", "moloch",
    "gila-monster", "komodo", "tegus", "caecilian", "mudpuppy",
    "hellbender", "olm", "sirena", "amphisbaena", "lindworm",

    # ── INSECTOS Y ARÁCNIDOS (Enjambres y Redes) ─────────────────────────────
    "spider", "weaver", "widow", "tarantula", "scorpion", "mantis",
    "beetle", "locust", "wasp", "hornet", "bee", "ant", "moth",
    "butterfly", "dragonfly", "cicada", "cricket", "scarab",
    # Nuevos invertebrados
    "centipede", "millipede", "earwig", "firefly", "glowworm",
    "bombardier", "hercules-beetle", "goliath", "rhino-beetle",
    "atlas-moth", "death-hawk", "lanternfly", "walkingstick",
    "praying-mantis", "assassin-bug", "tiger-beetle", "carabid",
    "trapdoor", "funnel-weaver", "orb-weaver", "jumping-spider",
    "wolf-spider", "water-strider", "diving-beetle", "whirligig",

    # ── MARINOS Y ACUÁTICOS (Profundidad) ────────────────────────────────────
    "shark", "orca", "dolphin", "whale", "manta", "ray", "eel",
    "kraken", "squid", "octopus", "nautilus", "crab", "lobster",
    "jellyfish", "seahorse", "barracuda", "piranha", "koi",
    # Nuevos acuáticos
    "anglerfish", "viperfish", "gulper-eel", "oarfish", "coelacanth",
    "sawfish", "hammerhead", "thresher", "mako", "bull-shark",
    "tiger-shark", "whale-shark", "basking-shark", "goblin-shark",
    "megalodon", "mosasaur", "plesiosaur", "ichthyosaur",
    "swordfish", "marlin", "sailfish", "tuna", "sturgeon", "lamprey",
    "moray", "conger", "garden-eel", "ribbon-eel", "sea-serpent",
    "leviathan", "behemoth", "narwhal", "beluga", "sperm-whale",
    "blue-whale", "humpback", "bowhead", "sei-whale", "fin-whale",
    "dugong", "manatee", "walrus", "seal", "sea-lion",

    # ── MÍTICOS GRECOROMANOS ──────────────────────────────────────────────────
    "griffin", "phoenix", "wyvern", "hydra", "basilisk", "chimera",
    "manticore", "pegasus", "gargoyle", "golem", "titan", "colossus",
    # Nuevos grecoromanos
    "cerberus", "minotaur", "centaur", "cyclops", "harpy", "sphinx",
    "scylla", "charybdis", "medusa", "gorgon", "typhon", "echidna",
    "ladon", "orthrus", "stymphalian", "nemean", "lernaean",
    "empusa", "lamia", "siren", "triton", "nereid", "nymph",
    "satyr", "faun", "cyclops", "giant", "automaton", "talos",
    "hippogryph", "catoblepas", "crocotta", "yale", "leucrota",
    "ammit", "carbuncle", "peryton", "opinicus", "sleipnir",

    # ── MÍTICOS NÓRDICOS ──────────────────────────────────────────────────────
    "fenrir", "jormungandr", "nidhogg", "ratatosk", "huginn", "muninn",
    "jotunn", "aesir", "vanir", "valkyrie", "berserker", "einherjar",
    "draugr", "lindworm", "fafnir", "ratatoskr", "vedrfolnir",
    "hati", "skoll", "garm", "svartalf", "ljosalfar", "dokkalfar",
    "norns", "disir", "fylgja", "hamr", "vardoger", "utburd",

    # ── MÍTICOS JAPONESES ─────────────────────────────────────────────────────
    "kirin", "tengu", "kitsune", "tanuki", "oni", "baku",
    "shisa", "byakko", "seiryu", "suzaku", "genbu", "raijin",
    "fujin", "yamata", "orochi", "tsuchigumo", "jorogumo", "gashadokuro",
    "yatagarasu", "raiju", "basan", "shiryuu", "nue", "yamabiko",
    "kappa", "kirin", "amaterasu", "inari", "ryujin", "izanagi",
    "hakutaku", "baku", "ittan-momen", "karakasa", "kyokotsu",
    "zashiki-warashi", "futakuchi-onna", "yuki-onna", "amabie",

    # ── MÍTICOS CHINOS ────────────────────────────────────────────────────────
    "longma", "pixiu", "bixie", "qilin", "fenghuang", "taotie",
    "jiaolong", "baihu", "zhuque", "xuanwu", "tianlong", "shenlong",
    "fucanglong", "dilong", "yinglong", "zhurong", "gong-gong",
    "hundun", "zhuyin", "lushu", "bixian", "nian", "pixie",
    "hundun", "taotie", "xiezhi", "bixi", "chaofeng", "chiwen",

    # ── MÍTICOS MESOAMERICANOS ────────────────────────────────────────────────
    "quetzalcoatl", "cipactli", "ahuizotl", "nagual", "xiuhcoatl",
    "itzpapalotl", "tlaloc", "huitzilopochtli", "tezcatlipoca",
    "xolotl", "coatlicue", "mictlantecuhtli", "ehecatl", "chalchiuhtlicue",
    "mixcoatl", "tlahuelpuchi", "chaneque", "alux", "bacab",
    "camazotz", "vucub-caquix", "zipacna", "wuqub-kaqix", "hunahpu",
    "ixbalanque", "tepeu", "gukumatz", "cizin", "itzamna", "xulcan",

    # ── MÍTICOS EGIPCIOS ──────────────────────────────────────────────────────
    "anubis", "sekhmet", "sobek", "thoth", "horus", "apep", "ammit",
    "bennu", "sphinx", "khepri", "ra-horakhty", "bastet", "maat",
    "neith", "nut", "geb", "shu", "tefnut", "set", "osiris",
    "babi", "serket", "taweret", "wadjet", "nehebkau", "apophis",
    "medjed", "ha", "hu", "sia", "amduat", "akh", "ba", "ka",

    # ── MÍTICOS HINDÚES Y VÉDICOS ─────────────────────────────────────────────
    "garuda", "naga", "makara", "gandharva", "rakshasa", "apsara",
    "airavata", "vahana", "kalki", "hayagriva", "matsya", "kurma",
    "varaha", "narasimha", "vamana", "parashurama", "ashvin",
    "vidyadhara", "kinnara", "yaksha", "yakshi", "gandharvi",
    "pishacha", "vetala", "brahmarakshasa", "nagas", "serpent-king",
    "ananta", "vasuki", "takshaka", "karkotaka", "shesha",

    # ── MÍTICOS MESOPOTÁMICOS ─────────────────────────────────────────────────
    "lamassu", "anzu", "pazuzu", "mushhushshu", "ugallu", "kusarikku",
    "lahmu", "lahamu", "apkallu", "utukku", "edimmu", "gallu",
    "asakku", "namtaru", "rabisu", "lilitu", "ardat-lili", "imdugud",
    "sirrush", "kur", "abzu", "tiamat", "kingu", "humbaba",
    "enkidu", "bull-of-heaven", "scorpion-man", "fish-man",

    # ── MÍTICOS CELTAS Y EUROPEOS ─────────────────────────────────────────────
    "cu-sith", "barghest", "kelpie", "selkie", "nuckelavee", "pooka",
    "each-uisge", "caoineag", "baobhan-sith", "glaistig", "fuath",
    "cait-sith", "sluagh", "dullahan", "stray-sow", "dullahan",
    "beira", "cailleach", "green-man", "wicker-man", "shuck",
    "wyvern", "tatzelwurm", "wolpertinger", "peryton", "carbuncle",
    "peluda", "girtablilu", "lindworm", "worm", "wyrm", "firedrake",
    "vouivre", "cockatrice", "catoblepas", "amphisbaena", "bonnacon",

    # ── MÍTICOS ESLAVOS ───────────────────────────────────────────────────────
    "zhar-ptitsa", "firebird", "zmey", "domovoi", "leshy", "rusalka",
    "kikimora", "dvorovoi", "dvorovikha", "vodyanoy", "bereginya",
    "poludnitsa", "baba-yaga", "koschei", "viy", "stribog",
    "perun", "veles", "dazbog", "svarog", "mokosh", "lada",
    "alkonost", "sirin", "gamayun", "stratim", "naglfar",

    # ── MÍTICOS ÁRABES Y PERSAS ───────────────────────────────────────────────
    "roc", "simurgh", "buraq", "djinn", "ifrit", "marid", "si'la",
    "hinn", "nasnas", "shiqq", "ghoul", "qareen", "manticore",
    "al-miraj", "hafgufa", "lyngbakr", "zahhak", "ahriman",
    "anqa", "huma", "chamrosh", "saena", "senmurv", "akhvan",

    # ── MÍTICOS AFRICANOS ─────────────────────────────────────────────────────
    "adze", "inkanyamba", "impundulu", "tokoloshe", "grootslang",
    "nandi-bear", "emela-ntouka", "dingonek", "chipekwe", "bultungin",
    "abada", "ngoubou", "lukwata", "mbielu-mbielu", "nguma-monene",
    "ninki-nanka", "ol-umaina", "kerit", "kongamato", "olitiau",
    "sasabonsam", "obayifo", "asanbosam", "mmoatia", "okomfo",

    # ── MÍTICOS AMERICANOS (Nativos) ──────────────────────────────────────────
    "thunderbird", "wendigo", "skinwalker", "piasa", "amarok",
    "tcu-unpi", "uktena", "horned-serpent", "underwater-panther",
    "mishibizhiw", "wiindigo", "baykok", "deer-woman", "coyote",
    "raven", "bear-spirit", "eagle-spirit", "wolf-spirit", "crow",
    "nakaq", "supay", "catequil", "apocatequil", "coniraya",

    # ── CÓSMICOS Y ABSTRACTOS (Para Agentes de Alto Nivel) ───────────────────
    "herald", "arbiter", "sentinel", "warden", "keeper", "seeker",
    "wanderer", "pilgrim", "exile", "sovereign", "regent", "chancellor",
    "archon", "aeon", "demiurge", "pleroma", "kenoma", "monad",
    "dyad", "triad", "tetrad", "ogdoad", "pleiad", "hebdomad",
    "emanation", "manifestation", "avatar", "aspect", "shard",
    "echo", "resonance", "harmonic", "dissonance", "frequency",
    "anomaly", "paradox", "cipher", "enigma", "riddle", "oracle",
    "prophet", "harbinger", "precursor", "vanguard", "rearguard",
    "outrider", "scout", "pathfinder", "trailblazer", "pioneer",
    "architect", "builder", "shaper", "weaver", "binder", "sealer",
    "breaker", "unmaker", "destroyer", "creator", "preserver",

    # ── ENTIDADES CIBERNÉTICAS Y DE SISTEMAS (El OS) ─────────────────────────
    "daemon", "sprite", "crawler", "bot", "kernel", "mutex", "tensor",
    "qubit", "voxel", "node", "packet", "socket", "proxy", "webhook",
    "cron", "thread", "process", "hologram", "glitch", "bug", "virus",
    "malware", "firewall", "router", "switch", "gateway", "hash",
    "pointer", "buffer", "cache", "ledger", "token", "vector",

    # ── PREHISTÓRICOS Y PALEO-BESTIAS ─────────────────────────────────────────
    "raptor", "rex", "smilodon", "mammoth", "mastodon", "megatherium",
    "pterosaur", "quetzalcoatlus", "diplodocus", "ankylosaurus",
    "spinosaurus", "triceratops", "stegosaurus", "velociraptor",
    "dimetrodon", "glyptodon", "megaloceros", "titanoboa", "archelon",
    "dodo", "moa", "megalania", "dunkleosteus", "mosasaurus",

    # ── MICROSCÓPICOS E INVENCIBLES ───────────────────────────────────────────
    "tardigrade", "bacteriophage", "archaea", "nematode", "diatom",
    "xenophyophore", "zooplankton", "amoeba", "paramecium", "rotifer",
    "radiolarian", "cyanobacteria", "extremophile", "macrophage",

    # ── CRIPTOZOOLOGÍA Y LEYENDAS URBANAS ─────────────────────────────────────
    "chupacabra", "mothman", "jackalope", "yeti", "yowie", "sasquatch",
    "bigfoot", "jersey-devil", "flatwoods-monster", "snallygaster",
    "hodag", "squonk", "bunyip", "dropbear", "taniwha", "yeren",
    "mapinguari", "amhuluk", "mokele-mbembe", "kongamato",

    # ── REFUERZOS PARA LETRAS RARAS (X, Y, Z, J, K, Q) ───────────────────────
    # X
    "xenops", "xiphias", "xoloitzcuintle", "xana", "xing-tian", "xiphosuran",
    # Y
    "yak", "yellowjacket", "yokai", "yacumama", "yale", "yarara", 
    "yeti-crab", "yellowthroat",
    # Z
    "zebra", "zebu", "ziz", "zilant", "zombie", "zephyr", "zibeline",
    "zonkey", "zorse", "zorro", "zealot", "zorapteran",
    # J
    "jaguarundi", "jabiru", "jacana", "jinn", "juggernaut", "jelly",
    "jackdaw", "jerboa", "junco",
    # K
    "kaiju", "kinkajou", "krait", "kestrel", "kiwi", "kudu", "kookaburra",
    "kelpie", "kodkod", "krill",
    # Q
    "quokka", "quail", "quimera", "quoll", "quetzal", "quillback", 
    "quagga", "quezal", "quintessence",
]

# =============================================================================
# QUICK ALLITERATION HELPER
# =============================================================================

def get_pairs_by_letter(letter: str) -> dict:
    """Returns all adjectives and nouns starting with a given letter."""
    letter = letter.lower()
    return {
        "adjectives": [a for a in ADJECTIVES if a.lower().startswith(letter)],
        "nouns":      [n for n in NOUNS      if n.lower().startswith(letter)],
    }

def generate_all_pairs() -> list[tuple[str, str]]:
    """Generates all valid alliterative adjective-noun pairs."""
    import random
    pairs = []
    for adj in ADJECTIVES:
        letter = adj[0].lower()
        matches = [n for n in NOUNS if n.lower().startswith(letter)]
        for noun in matches:
            pairs.append((adj, noun))
    return pairs

def random_agent_name(letter: str = None) -> str:
    """Generates a random alliterative agent name, optionally filtered by letter."""
    import random
    if letter:
        pool = get_pairs_by_letter(letter)
        adj  = random.choice(pool["adjectives"]) if pool["adjectives"] else ""
        noun = random.choice(pool["nouns"])      if pool["nouns"]      else ""
    else:
        all_pairs = generate_all_pairs()
        adj, noun = random.choice(all_pairs)
    return f"{adj.capitalize()}{noun.capitalize()}"


if __name__ == "__main__":
    print("=== Sample Agent Name ===")
    print(f"  → {random_agent_name()}")

    print("\n=== Coverage by Letter ===")
    for letter in "abcdefghijklmnopqrstuvwxyz":
        pool = get_pairs_by_letter(letter)
        if pool["adjectives"] or pool["nouns"]:
            print(f"  [{letter.upper()}]  adj: {len(pool['adjectives']):3d}  |  nouns: {len(pool['nouns']):3d}")

    print(f"\n=== Totals ===")
    print(f"  Adjectives : {len(ADJECTIVES)}")
    print(f"  Nouns      : {len(NOUNS)}")
    print(f"  Total pairs: {len(generate_all_pairs())}")