cb5bbbf382
- Eliminated core/ directory (252 files, 23 subdirs → distributed)
- Reduced max nesting from 9 levels to 5 levels
- Promoted tool subdirs to top level: exa/, lsp/, patch/, task/, web/
- Merged web-scrapers/ + web-search/ into web/{scrapers,search}/
- Flattened modes/interactive/ to modes/
- Split execution/ into: ipy/ (python), exec/ (bash), ssh/
- Renamed ipy/python-*.ts to ipy/*.ts (executor, kernel, etc.)
- Flattened cursor/exec-bridge.ts to cursor.ts
- Created logical groupings: config/, session/, extensibility/, export/
- Updated all imports across 500+ files
1578 lines
19 KiB
TypeScript
1578 lines
19 KiB
TypeScript
/**
|
||
* Generate memorable two-word task identifiers.
|
||
* Format: AdjectiveNoun (e.g., "SwiftFalcon", "CalmPanda")
|
||
*
|
||
* Dictionaries sourced from unique-names-generator (MIT license).
|
||
* 1202 adjectives × 355 animals = 426,710 combinations.
|
||
*/
|
||
|
||
const ADJECTIVES = [
|
||
"able",
|
||
"above",
|
||
"absent",
|
||
"absolute",
|
||
"abstract",
|
||
"abundant",
|
||
"academic",
|
||
"acceptable",
|
||
"accepted",
|
||
"accessible",
|
||
"accurate",
|
||
"accused",
|
||
"active",
|
||
"actual",
|
||
"acute",
|
||
"added",
|
||
"additional",
|
||
"adequate",
|
||
"adjacent",
|
||
"administrative",
|
||
"adorable",
|
||
"advanced",
|
||
"adverse",
|
||
"advisory",
|
||
"aesthetic",
|
||
"afraid",
|
||
"aggregate",
|
||
"aggressive",
|
||
"agreeable",
|
||
"agreed",
|
||
"agricultural",
|
||
"alert",
|
||
"alive",
|
||
"alleged",
|
||
"allied",
|
||
"alone",
|
||
"alright",
|
||
"alternative",
|
||
"amateur",
|
||
"amazing",
|
||
"ambitious",
|
||
"amused",
|
||
"ancient",
|
||
"angry",
|
||
"annoyed",
|
||
"annual",
|
||
"anonymous",
|
||
"anxious",
|
||
"appalling",
|
||
"apparent",
|
||
"applicable",
|
||
"appropriate",
|
||
"arbitrary",
|
||
"architectural",
|
||
"armed",
|
||
"arrogant",
|
||
"artificial",
|
||
"artistic",
|
||
"ashamed",
|
||
"asleep",
|
||
"assistant",
|
||
"associated",
|
||
"atomic",
|
||
"attractive",
|
||
"automatic",
|
||
"autonomous",
|
||
"available",
|
||
"average",
|
||
"awake",
|
||
"aware",
|
||
"awful",
|
||
"awkward",
|
||
"back",
|
||
"bad",
|
||
"balanced",
|
||
"bare",
|
||
"basic",
|
||
"beautiful",
|
||
"beneficial",
|
||
"better",
|
||
"bewildered",
|
||
"big",
|
||
"binding",
|
||
"biological",
|
||
"bitter",
|
||
"bizarre",
|
||
"blank",
|
||
"blind",
|
||
"blonde",
|
||
"bloody",
|
||
"blushing",
|
||
"boiling",
|
||
"bold",
|
||
"bored",
|
||
"boring",
|
||
"bottom",
|
||
"brainy",
|
||
"brave",
|
||
"breakable",
|
||
"breezy",
|
||
"brief",
|
||
"bright",
|
||
"brilliant",
|
||
"broad",
|
||
"broken",
|
||
"bumpy",
|
||
"burning",
|
||
"busy",
|
||
"calm",
|
||
"capable",
|
||
"capitalist",
|
||
"careful",
|
||
"casual",
|
||
"causal",
|
||
"cautious",
|
||
"central",
|
||
"certain",
|
||
"changing",
|
||
"characteristic",
|
||
"charming",
|
||
"cheap",
|
||
"cheerful",
|
||
"chemical",
|
||
"chief",
|
||
"chilly",
|
||
"chosen",
|
||
"chronic",
|
||
"chubby",
|
||
"circular",
|
||
"civic",
|
||
"civil",
|
||
"civilian",
|
||
"classic",
|
||
"classical",
|
||
"clean",
|
||
"clear",
|
||
"clever",
|
||
"clinical",
|
||
"close",
|
||
"closed",
|
||
"cloudy",
|
||
"clumsy",
|
||
"coastal",
|
||
"cognitive",
|
||
"coherent",
|
||
"cold",
|
||
"collective",
|
||
"colonial",
|
||
"colorful",
|
||
"colossal",
|
||
"coloured",
|
||
"colourful",
|
||
"combative",
|
||
"combined",
|
||
"comfortable",
|
||
"coming",
|
||
"commercial",
|
||
"common",
|
||
"communist",
|
||
"compact",
|
||
"comparable",
|
||
"comparative",
|
||
"compatible",
|
||
"competent",
|
||
"competitive",
|
||
"complete",
|
||
"complex",
|
||
"complicated",
|
||
"comprehensive",
|
||
"compulsory",
|
||
"conceptual",
|
||
"concerned",
|
||
"concrete",
|
||
"condemned",
|
||
"confident",
|
||
"confidential",
|
||
"confused",
|
||
"conscious",
|
||
"conservation",
|
||
"conservative",
|
||
"considerable",
|
||
"consistent",
|
||
"constant",
|
||
"constitutional",
|
||
"contemporary",
|
||
"content",
|
||
"continental",
|
||
"continued",
|
||
"continuing",
|
||
"continuous",
|
||
"controlled",
|
||
"controversial",
|
||
"convenient",
|
||
"conventional",
|
||
"convinced",
|
||
"convincing",
|
||
"cooing",
|
||
"cool",
|
||
"cooperative",
|
||
"corporate",
|
||
"correct",
|
||
"corresponding",
|
||
"costly",
|
||
"courageous",
|
||
"crazy",
|
||
"creative",
|
||
"creepy",
|
||
"criminal",
|
||
"critical",
|
||
"crooked",
|
||
"crowded",
|
||
"crucial",
|
||
"crude",
|
||
"cruel",
|
||
"cuddly",
|
||
"cultural",
|
||
"curious",
|
||
"curly",
|
||
"current",
|
||
"curved",
|
||
"cute",
|
||
"daily",
|
||
"damaged",
|
||
"damp",
|
||
"dangerous",
|
||
"dark",
|
||
"dead",
|
||
"deaf",
|
||
"deafening",
|
||
"dear",
|
||
"decent",
|
||
"decisive",
|
||
"deep",
|
||
"defeated",
|
||
"defensive",
|
||
"defiant",
|
||
"definite",
|
||
"deliberate",
|
||
"delicate",
|
||
"delicious",
|
||
"delighted",
|
||
"delightful",
|
||
"democratic",
|
||
"dependent",
|
||
"depressed",
|
||
"desirable",
|
||
"desperate",
|
||
"detailed",
|
||
"determined",
|
||
"developed",
|
||
"developing",
|
||
"devoted",
|
||
"different",
|
||
"difficult",
|
||
"digital",
|
||
"diplomatic",
|
||
"direct",
|
||
"dirty",
|
||
"disabled",
|
||
"disappointed",
|
||
"disastrous",
|
||
"disciplinary",
|
||
"disgusted",
|
||
"distant",
|
||
"distinct",
|
||
"distinctive",
|
||
"distinguished",
|
||
"disturbed",
|
||
"disturbing",
|
||
"diverse",
|
||
"divine",
|
||
"dizzy",
|
||
"domestic",
|
||
"dominant",
|
||
"double",
|
||
"doubtful",
|
||
"drab",
|
||
"dramatic",
|
||
"dreadful",
|
||
"driving",
|
||
"drunk",
|
||
"dry",
|
||
"dual",
|
||
"due",
|
||
"dull",
|
||
"dusty",
|
||
"dying",
|
||
"dynamic",
|
||
"eager",
|
||
"early",
|
||
"eastern",
|
||
"easy",
|
||
"economic",
|
||
"educational",
|
||
"eerie",
|
||
"effective",
|
||
"efficient",
|
||
"elaborate",
|
||
"elated",
|
||
"elderly",
|
||
"eldest",
|
||
"electoral",
|
||
"electric",
|
||
"electrical",
|
||
"electronic",
|
||
"elegant",
|
||
"eligible",
|
||
"embarrassed",
|
||
"embarrassing",
|
||
"emotional",
|
||
"empirical",
|
||
"empty",
|
||
"enchanting",
|
||
"encouraging",
|
||
"endless",
|
||
"energetic",
|
||
"enormous",
|
||
"enthusiastic",
|
||
"entire",
|
||
"entitled",
|
||
"envious",
|
||
"environmental",
|
||
"equal",
|
||
"equivalent",
|
||
"essential",
|
||
"established",
|
||
"estimated",
|
||
"ethical",
|
||
"ethnic",
|
||
"eventual",
|
||
"everyday",
|
||
"evident",
|
||
"evil",
|
||
"evolutionary",
|
||
"exact",
|
||
"excellent",
|
||
"exceptional",
|
||
"excess",
|
||
"excessive",
|
||
"excited",
|
||
"exciting",
|
||
"exclusive",
|
||
"existing",
|
||
"exotic",
|
||
"expected",
|
||
"expensive",
|
||
"experienced",
|
||
"experimental",
|
||
"explicit",
|
||
"extended",
|
||
"extensive",
|
||
"external",
|
||
"extra",
|
||
"extraordinary",
|
||
"extreme",
|
||
"exuberant",
|
||
"faint",
|
||
"fair",
|
||
"faithful",
|
||
"familiar",
|
||
"famous",
|
||
"fancy",
|
||
"fantastic",
|
||
"far",
|
||
"fascinating",
|
||
"fashionable",
|
||
"fast",
|
||
"fat",
|
||
"fatal",
|
||
"favourable",
|
||
"favourite",
|
||
"federal",
|
||
"fellow",
|
||
"female",
|
||
"feminist",
|
||
"few",
|
||
"fierce",
|
||
"filthy",
|
||
"final",
|
||
"financial",
|
||
"fine",
|
||
"firm",
|
||
"fiscal",
|
||
"fit",
|
||
"fixed",
|
||
"flaky",
|
||
"flat",
|
||
"flexible",
|
||
"fluffy",
|
||
"fluttering",
|
||
"flying",
|
||
"following",
|
||
"fond",
|
||
"foolish",
|
||
"foreign",
|
||
"formal",
|
||
"formidable",
|
||
"forthcoming",
|
||
"fortunate",
|
||
"forward",
|
||
"fragile",
|
||
"frail",
|
||
"frantic",
|
||
"free",
|
||
"frequent",
|
||
"fresh",
|
||
"friendly",
|
||
"frightened",
|
||
"front",
|
||
"frozen",
|
||
"full",
|
||
"fun",
|
||
"functional",
|
||
"fundamental",
|
||
"funny",
|
||
"furious",
|
||
"future",
|
||
"fuzzy",
|
||
"gastric",
|
||
"gay",
|
||
"general",
|
||
"generous",
|
||
"genetic",
|
||
"gentle",
|
||
"genuine",
|
||
"geographical",
|
||
"giant",
|
||
"gigantic",
|
||
"given",
|
||
"glad",
|
||
"glamorous",
|
||
"gleaming",
|
||
"global",
|
||
"glorious",
|
||
"golden",
|
||
"good",
|
||
"gorgeous",
|
||
"gothic",
|
||
"governing",
|
||
"graceful",
|
||
"gradual",
|
||
"grand",
|
||
"grateful",
|
||
"greasy",
|
||
"great",
|
||
"grieving",
|
||
"grim",
|
||
"gross",
|
||
"grotesque",
|
||
"growing",
|
||
"grubby",
|
||
"grumpy",
|
||
"guilty",
|
||
"handicapped",
|
||
"handsome",
|
||
"happy",
|
||
"hard",
|
||
"harsh",
|
||
"head",
|
||
"healthy",
|
||
"heavy",
|
||
"helpful",
|
||
"helpless",
|
||
"hidden",
|
||
"high",
|
||
"hilarious",
|
||
"hissing",
|
||
"historic",
|
||
"historical",
|
||
"hollow",
|
||
"holy",
|
||
"homeless",
|
||
"homely",
|
||
"honest",
|
||
"horizontal",
|
||
"horrible",
|
||
"hostile",
|
||
"hot",
|
||
"huge",
|
||
"human",
|
||
"hungry",
|
||
"hurt",
|
||
"hushed",
|
||
"husky",
|
||
"icy",
|
||
"ideal",
|
||
"identical",
|
||
"ideological",
|
||
"ill",
|
||
"illegal",
|
||
"imaginative",
|
||
"immediate",
|
||
"immense",
|
||
"imperial",
|
||
"implicit",
|
||
"important",
|
||
"impossible",
|
||
"impressed",
|
||
"impressive",
|
||
"improved",
|
||
"inadequate",
|
||
"inappropriate",
|
||
"inclined",
|
||
"increased",
|
||
"increasing",
|
||
"incredible",
|
||
"independent",
|
||
"indirect",
|
||
"individual",
|
||
"industrial",
|
||
"inevitable",
|
||
"influential",
|
||
"informal",
|
||
"inherent",
|
||
"initial",
|
||
"injured",
|
||
"inland",
|
||
"inner",
|
||
"innocent",
|
||
"innovative",
|
||
"inquisitive",
|
||
"instant",
|
||
"institutional",
|
||
"insufficient",
|
||
"intact",
|
||
"integral",
|
||
"integrated",
|
||
"intellectual",
|
||
"intelligent",
|
||
"intense",
|
||
"intensive",
|
||
"interested",
|
||
"interesting",
|
||
"interim",
|
||
"interior",
|
||
"intermediate",
|
||
"internal",
|
||
"international",
|
||
"intimate",
|
||
"invisible",
|
||
"involved",
|
||
"irrelevant",
|
||
"isolated",
|
||
"itchy",
|
||
"jealous",
|
||
"jittery",
|
||
"joint",
|
||
"jolly",
|
||
"joyous",
|
||
"judicial",
|
||
"juicy",
|
||
"junior",
|
||
"just",
|
||
"keen",
|
||
"key",
|
||
"kind",
|
||
"known",
|
||
"labour",
|
||
"large",
|
||
"late",
|
||
"latin",
|
||
"lazy",
|
||
"leading",
|
||
"left",
|
||
"legal",
|
||
"legislative",
|
||
"legitimate",
|
||
"lengthy",
|
||
"lesser",
|
||
"level",
|
||
"lexical",
|
||
"liable",
|
||
"liberal",
|
||
"light",
|
||
"like",
|
||
"likely",
|
||
"limited",
|
||
"linear",
|
||
"linguistic",
|
||
"liquid",
|
||
"literary",
|
||
"little",
|
||
"live",
|
||
"lively",
|
||
"living",
|
||
"local",
|
||
"logical",
|
||
"lonely",
|
||
"long",
|
||
"loose",
|
||
"lost",
|
||
"loud",
|
||
"lovely",
|
||
"low",
|
||
"loyal",
|
||
"lucky",
|
||
"mad",
|
||
"magic",
|
||
"magnetic",
|
||
"magnificent",
|
||
"main",
|
||
"major",
|
||
"male",
|
||
"mammoth",
|
||
"managerial",
|
||
"managing",
|
||
"manual",
|
||
"many",
|
||
"marginal",
|
||
"marine",
|
||
"marked",
|
||
"married",
|
||
"marvellous",
|
||
"marxist",
|
||
"mass",
|
||
"massive",
|
||
"mathematical",
|
||
"mature",
|
||
"maximum",
|
||
"mean",
|
||
"meaningful",
|
||
"mechanical",
|
||
"medical",
|
||
"medieval",
|
||
"melodic",
|
||
"melted",
|
||
"mental",
|
||
"mere",
|
||
"metropolitan",
|
||
"mid",
|
||
"middle",
|
||
"mighty",
|
||
"mild",
|
||
"military",
|
||
"miniature",
|
||
"minimal",
|
||
"minimum",
|
||
"ministerial",
|
||
"minor",
|
||
"miserable",
|
||
"misleading",
|
||
"missing",
|
||
"misty",
|
||
"mixed",
|
||
"moaning",
|
||
"mobile",
|
||
"moderate",
|
||
"modern",
|
||
"modest",
|
||
"molecular",
|
||
"monetary",
|
||
"monthly",
|
||
"moral",
|
||
"motionless",
|
||
"muddy",
|
||
"multiple",
|
||
"mushy",
|
||
"musical",
|
||
"mute",
|
||
"mutual",
|
||
"mysterious",
|
||
"naked",
|
||
"narrow",
|
||
"nasty",
|
||
"national",
|
||
"native",
|
||
"natural",
|
||
"naughty",
|
||
"naval",
|
||
"near",
|
||
"nearby",
|
||
"neat",
|
||
"necessary",
|
||
"negative",
|
||
"neighbouring",
|
||
"nervous",
|
||
"net",
|
||
"neutral",
|
||
"new",
|
||
"nice",
|
||
"noble",
|
||
"noisy",
|
||
"normal",
|
||
"northern",
|
||
"nosy",
|
||
"notable",
|
||
"novel",
|
||
"nuclear",
|
||
"numerous",
|
||
"nursing",
|
||
"nutritious",
|
||
"nutty",
|
||
"obedient",
|
||
"objective",
|
||
"obliged",
|
||
"obnoxious",
|
||
"obvious",
|
||
"occasional",
|
||
"occupational",
|
||
"odd",
|
||
"official",
|
||
"old",
|
||
"olympic",
|
||
"only",
|
||
"open",
|
||
"operational",
|
||
"opposite",
|
||
"optimistic",
|
||
"oral",
|
||
"ordinary",
|
||
"organic",
|
||
"organisational",
|
||
"original",
|
||
"orthodox",
|
||
"other",
|
||
"outdoor",
|
||
"outer",
|
||
"outrageous",
|
||
"outside",
|
||
"outstanding",
|
||
"overall",
|
||
"overseas",
|
||
"overwhelming",
|
||
"painful",
|
||
"pale",
|
||
"panicky",
|
||
"parallel",
|
||
"parental",
|
||
"parliamentary",
|
||
"partial",
|
||
"particular",
|
||
"passing",
|
||
"passive",
|
||
"past",
|
||
"patient",
|
||
"payable",
|
||
"peaceful",
|
||
"peculiar",
|
||
"perfect",
|
||
"permanent",
|
||
"persistent",
|
||
"personal",
|
||
"petite",
|
||
"philosophical",
|
||
"physical",
|
||
"plain",
|
||
"planned",
|
||
"plastic",
|
||
"pleasant",
|
||
"pleased",
|
||
"poised",
|
||
"polite",
|
||
"political",
|
||
"poor",
|
||
"popular",
|
||
"positive",
|
||
"possible",
|
||
"potential",
|
||
"powerful",
|
||
"practical",
|
||
"precious",
|
||
"precise",
|
||
"preferred",
|
||
"pregnant",
|
||
"preliminary",
|
||
"premier",
|
||
"prepared",
|
||
"present",
|
||
"presidential",
|
||
"pretty",
|
||
"previous",
|
||
"prickly",
|
||
"primary",
|
||
"prime",
|
||
"primitive",
|
||
"principal",
|
||
"printed",
|
||
"prior",
|
||
"private",
|
||
"probable",
|
||
"productive",
|
||
"professional",
|
||
"profitable",
|
||
"profound",
|
||
"progressive",
|
||
"prominent",
|
||
"promising",
|
||
"proper",
|
||
"proposed",
|
||
"prospective",
|
||
"protective",
|
||
"proud",
|
||
"provincial",
|
||
"psychiatric",
|
||
"psychological",
|
||
"public",
|
||
"puny",
|
||
"pure",
|
||
"purring",
|
||
"puzzled",
|
||
"quaint",
|
||
"qualified",
|
||
"quarrelsome",
|
||
"querulous",
|
||
"quick",
|
||
"quickest",
|
||
"quiet",
|
||
"quintessential",
|
||
"quixotic",
|
||
"racial",
|
||
"radical",
|
||
"rainy",
|
||
"random",
|
||
"rapid",
|
||
"rare",
|
||
"raspy",
|
||
"rational",
|
||
"ratty",
|
||
"raw",
|
||
"ready",
|
||
"real",
|
||
"realistic",
|
||
"rear",
|
||
"reasonable",
|
||
"recent",
|
||
"reduced",
|
||
"redundant",
|
||
"regional",
|
||
"registered",
|
||
"regular",
|
||
"regulatory",
|
||
"related",
|
||
"relative",
|
||
"relaxed",
|
||
"relevant",
|
||
"reliable",
|
||
"relieved",
|
||
"religious",
|
||
"reluctant",
|
||
"remaining",
|
||
"remarkable",
|
||
"remote",
|
||
"renewed",
|
||
"representative",
|
||
"repulsive",
|
||
"required",
|
||
"resident",
|
||
"residential",
|
||
"resonant",
|
||
"respectable",
|
||
"respective",
|
||
"responsible",
|
||
"resulting",
|
||
"retail",
|
||
"retired",
|
||
"revolutionary",
|
||
"rich",
|
||
"ridiculous",
|
||
"right",
|
||
"rigid",
|
||
"ripe",
|
||
"rising",
|
||
"rival",
|
||
"roasted",
|
||
"robust",
|
||
"rolling",
|
||
"romantic",
|
||
"rotten",
|
||
"rough",
|
||
"round",
|
||
"royal",
|
||
"rubber",
|
||
"rude",
|
||
"ruling",
|
||
"running",
|
||
"rural",
|
||
"sacred",
|
||
"sad",
|
||
"safe",
|
||
"salty",
|
||
"satisfactory",
|
||
"satisfied",
|
||
"scared",
|
||
"scary",
|
||
"scattered",
|
||
"scientific",
|
||
"scornful",
|
||
"scrawny",
|
||
"screeching",
|
||
"secondary",
|
||
"secret",
|
||
"secure",
|
||
"select",
|
||
"selected",
|
||
"selective",
|
||
"selfish",
|
||
"semantic",
|
||
"senior",
|
||
"sensible",
|
||
"sensitive",
|
||
"separate",
|
||
"serious",
|
||
"severe",
|
||
"sexual",
|
||
"shaggy",
|
||
"shaky",
|
||
"shallow",
|
||
"shared",
|
||
"sharp",
|
||
"sheer",
|
||
"shiny",
|
||
"shivering",
|
||
"shocked",
|
||
"short",
|
||
"shrill",
|
||
"shy",
|
||
"sick",
|
||
"significant",
|
||
"silent",
|
||
"silky",
|
||
"silly",
|
||
"similar",
|
||
"simple",
|
||
"single",
|
||
"skilled",
|
||
"skinny",
|
||
"sleepy",
|
||
"slight",
|
||
"slim",
|
||
"slimy",
|
||
"slippery",
|
||
"slow",
|
||
"small",
|
||
"smart",
|
||
"smiling",
|
||
"smoggy",
|
||
"smooth",
|
||
"social",
|
||
"socialist",
|
||
"soft",
|
||
"solar",
|
||
"sole",
|
||
"solid",
|
||
"sophisticated",
|
||
"sore",
|
||
"sorry",
|
||
"sound",
|
||
"sour",
|
||
"southern",
|
||
"soviet",
|
||
"spare",
|
||
"sparkling",
|
||
"spatial",
|
||
"special",
|
||
"specific",
|
||
"specified",
|
||
"spectacular",
|
||
"spicy",
|
||
"spiritual",
|
||
"splendid",
|
||
"spontaneous",
|
||
"sporting",
|
||
"spotless",
|
||
"spotty",
|
||
"square",
|
||
"squealing",
|
||
"stable",
|
||
"stale",
|
||
"standard",
|
||
"static",
|
||
"statistical",
|
||
"statutory",
|
||
"steady",
|
||
"steep",
|
||
"sticky",
|
||
"stiff",
|
||
"still",
|
||
"stingy",
|
||
"stormy",
|
||
"straight",
|
||
"straightforward",
|
||
"strange",
|
||
"strategic",
|
||
"strict",
|
||
"striking",
|
||
"striped",
|
||
"strong",
|
||
"structural",
|
||
"stuck",
|
||
"stupid",
|
||
"subjective",
|
||
"subsequent",
|
||
"substantial",
|
||
"subtle",
|
||
"successful",
|
||
"successive",
|
||
"sudden",
|
||
"sufficient",
|
||
"suitable",
|
||
"sunny",
|
||
"super",
|
||
"superb",
|
||
"superior",
|
||
"supporting",
|
||
"supposed",
|
||
"supreme",
|
||
"sure",
|
||
"surprised",
|
||
"surprising",
|
||
"surrounding",
|
||
"surviving",
|
||
"suspicious",
|
||
"sweet",
|
||
"swift",
|
||
"symbolic",
|
||
"sympathetic",
|
||
"systematic",
|
||
"tall",
|
||
"tame",
|
||
"tart",
|
||
"tasteless",
|
||
"tasty",
|
||
"technical",
|
||
"technological",
|
||
"teenage",
|
||
"temporary",
|
||
"tender",
|
||
"tense",
|
||
"terrible",
|
||
"territorial",
|
||
"testy",
|
||
"theoretical",
|
||
"thick",
|
||
"thin",
|
||
"thirsty",
|
||
"thorough",
|
||
"thoughtful",
|
||
"thoughtless",
|
||
"thundering",
|
||
"tight",
|
||
"tiny",
|
||
"tired",
|
||
"top",
|
||
"total",
|
||
"tough",
|
||
"toxic",
|
||
"traditional",
|
||
"tragic",
|
||
"tremendous",
|
||
"tricky",
|
||
"tropical",
|
||
"troubled",
|
||
"typical",
|
||
"ugliest",
|
||
"ugly",
|
||
"ultimate",
|
||
"unable",
|
||
"unacceptable",
|
||
"unaware",
|
||
"uncertain",
|
||
"unchanged",
|
||
"uncomfortable",
|
||
"unconscious",
|
||
"underground",
|
||
"underlying",
|
||
"unemployed",
|
||
"uneven",
|
||
"unexpected",
|
||
"unfair",
|
||
"unfortunate",
|
||
"unhappy",
|
||
"uniform",
|
||
"uninterested",
|
||
"unique",
|
||
"united",
|
||
"universal",
|
||
"unknown",
|
||
"unlikely",
|
||
"unnecessary",
|
||
"unpleasant",
|
||
"unsightly",
|
||
"unusual",
|
||
"unwilling",
|
||
"upper",
|
||
"upset",
|
||
"uptight",
|
||
"urban",
|
||
"urgent",
|
||
"used",
|
||
"useful",
|
||
"useless",
|
||
"usual",
|
||
"vague",
|
||
"valid",
|
||
"valuable",
|
||
"variable",
|
||
"varied",
|
||
"various",
|
||
"varying",
|
||
"vast",
|
||
"verbal",
|
||
"vertical",
|
||
"vicarious",
|
||
"vicious",
|
||
"victorious",
|
||
"violent",
|
||
"visible",
|
||
"visiting",
|
||
"visual",
|
||
"vital",
|
||
"vivacious",
|
||
"vivid",
|
||
"vocal",
|
||
"vocational",
|
||
"voiceless",
|
||
"voluminous",
|
||
"voluntary",
|
||
"vulnerable",
|
||
"wandering",
|
||
"warm",
|
||
"wasteful",
|
||
"watery",
|
||
"weak",
|
||
"wealthy",
|
||
"weary",
|
||
"weekly",
|
||
"weird",
|
||
"welcome",
|
||
"well",
|
||
"western",
|
||
"wet",
|
||
"whispering",
|
||
"whole",
|
||
"wicked",
|
||
"wide",
|
||
"widespread",
|
||
"wild",
|
||
"willing",
|
||
"willowy",
|
||
"wily",
|
||
"wise",
|
||
"wispy",
|
||
"witty",
|
||
"wonderful",
|
||
"wooden",
|
||
"working",
|
||
"worldwide",
|
||
"worried",
|
||
"worrying",
|
||
"worthwhile",
|
||
"worthy",
|
||
"written",
|
||
"wrong",
|
||
"xenial",
|
||
"xeric",
|
||
"yawning",
|
||
"yearning",
|
||
"young",
|
||
"youngest",
|
||
"youthful",
|
||
"zany",
|
||
"zealous",
|
||
"zesty",
|
||
"zippy",
|
||
];
|
||
|
||
const NOUNS = [
|
||
"aardvark",
|
||
"aardwolf",
|
||
"albatross",
|
||
"alligator",
|
||
"alpaca",
|
||
"amphibian",
|
||
"anaconda",
|
||
"angelfish",
|
||
"anglerfish",
|
||
"ant",
|
||
"anteater",
|
||
"antelope",
|
||
"antlion",
|
||
"ape",
|
||
"aphid",
|
||
"armadillo",
|
||
"asp",
|
||
"baboon",
|
||
"badger",
|
||
"bandicoot",
|
||
"barnacle",
|
||
"barracuda",
|
||
"basilisk",
|
||
"bass",
|
||
"bat",
|
||
"bear",
|
||
"beaver",
|
||
"bedbug",
|
||
"bee",
|
||
"beetle",
|
||
"bird",
|
||
"bison",
|
||
"blackbird",
|
||
"boa",
|
||
"boar",
|
||
"bobcat",
|
||
"bobolink",
|
||
"bonobo",
|
||
"booby",
|
||
"bovid",
|
||
"bug",
|
||
"butterfly",
|
||
"buzzard",
|
||
"camel",
|
||
"canid",
|
||
"capybara",
|
||
"cardinal",
|
||
"caribou",
|
||
"carp",
|
||
"cat",
|
||
"caterpillar",
|
||
"catfish",
|
||
"catshark",
|
||
"cattle",
|
||
"centipede",
|
||
"cephalopod",
|
||
"chameleon",
|
||
"cheetah",
|
||
"chickadee",
|
||
"chicken",
|
||
"chimpanzee",
|
||
"chinchilla",
|
||
"chipmunk",
|
||
"cicada",
|
||
"clam",
|
||
"clownfish",
|
||
"cobra",
|
||
"cockroach",
|
||
"cod",
|
||
"condor",
|
||
"constrictor",
|
||
"coral",
|
||
"cougar",
|
||
"cow",
|
||
"coyote",
|
||
"crab",
|
||
"crane",
|
||
"crawdad",
|
||
"crayfish",
|
||
"cricket",
|
||
"crocodile",
|
||
"crow",
|
||
"cuckoo",
|
||
"damselfly",
|
||
"deer",
|
||
"dingo",
|
||
"dinosaur",
|
||
"dog",
|
||
"dolphin",
|
||
"donkey",
|
||
"dormouse",
|
||
"dove",
|
||
"dragon",
|
||
"dragonfly",
|
||
"duck",
|
||
"eagle",
|
||
"earthworm",
|
||
"earwig",
|
||
"echidna",
|
||
"eel",
|
||
"egret",
|
||
"elephant",
|
||
"elk",
|
||
"emu",
|
||
"ermine",
|
||
"falcon",
|
||
"ferret",
|
||
"finch",
|
||
"firefly",
|
||
"fish",
|
||
"flamingo",
|
||
"flea",
|
||
"fly",
|
||
"flyingfish",
|
||
"fowl",
|
||
"fox",
|
||
"frog",
|
||
"gamefowl",
|
||
"gazelle",
|
||
"gecko",
|
||
"gerbil",
|
||
"gibbon",
|
||
"giraffe",
|
||
"goat",
|
||
"goldfish",
|
||
"goose",
|
||
"gopher",
|
||
"gorilla",
|
||
"grasshopper",
|
||
"grouse",
|
||
"guan",
|
||
"guanaco",
|
||
"guineafowl",
|
||
"gull",
|
||
"guppy",
|
||
"haddock",
|
||
"halibut",
|
||
"hamster",
|
||
"hare",
|
||
"harrier",
|
||
"hawk",
|
||
"hedgehog",
|
||
"heron",
|
||
"herring",
|
||
"hippopotamus",
|
||
"hookworm",
|
||
"hornet",
|
||
"horse",
|
||
"hoverfly",
|
||
"hummingbird",
|
||
"hyena",
|
||
"iguana",
|
||
"impala",
|
||
"jackal",
|
||
"jaguar",
|
||
"jay",
|
||
"jellyfish",
|
||
"kangaroo",
|
||
"kingfisher",
|
||
"kite",
|
||
"kiwi",
|
||
"koala",
|
||
"koi",
|
||
"krill",
|
||
"ladybug",
|
||
"lamprey",
|
||
"lark",
|
||
"leech",
|
||
"lemming",
|
||
"lemur",
|
||
"leopard",
|
||
"leopon",
|
||
"limpet",
|
||
"lion",
|
||
"lizard",
|
||
"llama",
|
||
"lobster",
|
||
"locust",
|
||
"loon",
|
||
"louse",
|
||
"lungfish",
|
||
"lynx",
|
||
"macaw",
|
||
"mackerel",
|
||
"magpie",
|
||
"mammal",
|
||
"manatee",
|
||
"mandrill",
|
||
"marlin",
|
||
"marmoset",
|
||
"marmot",
|
||
"marsupial",
|
||
"marten",
|
||
"mastodon",
|
||
"meadowlark",
|
||
"meerkat",
|
||
"mink",
|
||
"minnow",
|
||
"mite",
|
||
"mockingbird",
|
||
"mole",
|
||
"mollusk",
|
||
"mongoose",
|
||
"monkey",
|
||
"moose",
|
||
"mosquito",
|
||
"moth",
|
||
"mouse",
|
||
"mule",
|
||
"muskox",
|
||
"narwhal",
|
||
"newt",
|
||
"nightingale",
|
||
"ocelot",
|
||
"octopus",
|
||
"opossum",
|
||
"orangutan",
|
||
"orca",
|
||
"ostrich",
|
||
"otter",
|
||
"owl",
|
||
"ox",
|
||
"panda",
|
||
"panther",
|
||
"parakeet",
|
||
"parrot",
|
||
"parrotfish",
|
||
"partridge",
|
||
"peacock",
|
||
"peafowl",
|
||
"pelican",
|
||
"penguin",
|
||
"perch",
|
||
"pheasant",
|
||
"pig",
|
||
"pigeon",
|
||
"pike",
|
||
"pinniped",
|
||
"piranha",
|
||
"planarian",
|
||
"platypus",
|
||
"pony",
|
||
"porcupine",
|
||
"porpoise",
|
||
"possum",
|
||
"prawn",
|
||
"primate",
|
||
"ptarmigan",
|
||
"puffin",
|
||
"puma",
|
||
"python",
|
||
"quail",
|
||
"quelea",
|
||
"quokka",
|
||
"rabbit",
|
||
"raccoon",
|
||
"rat",
|
||
"rattlesnake",
|
||
"raven",
|
||
"reindeer",
|
||
"reptile",
|
||
"rhinoceros",
|
||
"roadrunner",
|
||
"rodent",
|
||
"rook",
|
||
"rooster",
|
||
"roundworm",
|
||
"sailfish",
|
||
"salamander",
|
||
"salmon",
|
||
"sawfish",
|
||
"scallop",
|
||
"scorpion",
|
||
"seahorse",
|
||
"shark",
|
||
"sheep",
|
||
"shrew",
|
||
"shrimp",
|
||
"silkworm",
|
||
"silverfish",
|
||
"skink",
|
||
"skunk",
|
||
"sloth",
|
||
"slug",
|
||
"smelt",
|
||
"snail",
|
||
"snake",
|
||
"snipe",
|
||
"sole",
|
||
"sparrow",
|
||
"spider",
|
||
"spoonbill",
|
||
"squid",
|
||
"squirrel",
|
||
"starfish",
|
||
"stingray",
|
||
"stoat",
|
||
"stork",
|
||
"sturgeon",
|
||
"swallow",
|
||
"swan",
|
||
"swift",
|
||
"swordfish",
|
||
"swordtail",
|
||
"tahr",
|
||
"takin",
|
||
"tapir",
|
||
"tarantula",
|
||
"tarsier",
|
||
"termite",
|
||
"tern",
|
||
"thrush",
|
||
"tick",
|
||
"tiger",
|
||
"tiglon",
|
||
"toad",
|
||
"tortoise",
|
||
"toucan",
|
||
"trout",
|
||
"tuna",
|
||
"turkey",
|
||
"turtle",
|
||
"tyrannosaurus",
|
||
"unicorn",
|
||
"urial",
|
||
"vicuna",
|
||
"viper",
|
||
"vole",
|
||
"vulture",
|
||
"wallaby",
|
||
"walrus",
|
||
"warbler",
|
||
"wasp",
|
||
"weasel",
|
||
"whale",
|
||
"whippet",
|
||
"whitefish",
|
||
"wildcat",
|
||
"wildebeest",
|
||
"wildfowl",
|
||
"wolf",
|
||
"wolverine",
|
||
"wombat",
|
||
"woodpecker",
|
||
"worm",
|
||
"wren",
|
||
"yak",
|
||
"zebra",
|
||
];
|
||
|
||
function capitalize(s: string): string {
|
||
return s.charAt(0).toUpperCase() + s.slice(1);
|
||
}
|
||
|
||
let usedNames = new Set<string>();
|
||
|
||
/**
|
||
* Generate a unique two-word identifier (e.g., "SwiftFalcon").
|
||
* Falls back to numeric suffix if all combinations exhausted.
|
||
*/
|
||
export function generateTaskName(): string {
|
||
// Try random combinations first (50 attempts)
|
||
for (let attempt = 0; attempt < 50; attempt++) {
|
||
const adj = ADJECTIVES[Math.floor(Math.random() * ADJECTIVES.length)];
|
||
const noun = NOUNS[Math.floor(Math.random() * NOUNS.length)];
|
||
const name = `${capitalize(adj)}${capitalize(noun)}`;
|
||
if (!usedNames.has(name)) {
|
||
usedNames.add(name);
|
||
return name;
|
||
}
|
||
}
|
||
|
||
// Exhaustive search if random fails
|
||
for (const adj of ADJECTIVES) {
|
||
for (const noun of NOUNS) {
|
||
const name = `${capitalize(adj)}${capitalize(noun)}`;
|
||
if (!usedNames.has(name)) {
|
||
usedNames.add(name);
|
||
return name;
|
||
}
|
||
}
|
||
}
|
||
|
||
// All 426k combinations used, add numeric suffix
|
||
let counter = 0;
|
||
while (true) {
|
||
const name = `Task${counter}`;
|
||
if (!usedNames.has(name)) {
|
||
usedNames.add(name);
|
||
return name;
|
||
}
|
||
counter++;
|
||
}
|
||
}
|
||
|
||
/**
|
||
* Reset name generator state (for testing).
|
||
*/
|
||
export function resetTaskNames(): void {
|
||
usedNames = new Set<string>();
|
||
}
|