@oh-my-pi/pi-coding-agent 3.25.0 → 3.31.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (157) hide show
  1. package/CHANGELOG.md +90 -0
  2. package/package.json +5 -5
  3. package/src/cli/args.ts +4 -0
  4. package/src/core/agent-session.ts +29 -2
  5. package/src/core/bash-executor.ts +2 -1
  6. package/src/core/custom-commands/bundled/review/index.ts +369 -14
  7. package/src/core/custom-commands/bundled/wt/index.ts +1 -1
  8. package/src/core/session-manager.ts +158 -246
  9. package/src/core/session-storage.ts +379 -0
  10. package/src/core/settings-manager.ts +155 -4
  11. package/src/core/system-prompt.ts +62 -64
  12. package/src/core/tools/ask.ts +5 -4
  13. package/src/core/tools/bash-interceptor.ts +26 -61
  14. package/src/core/tools/bash.ts +13 -8
  15. package/src/core/tools/complete.ts +2 -4
  16. package/src/core/tools/edit-diff.ts +11 -4
  17. package/src/core/tools/edit.ts +7 -13
  18. package/src/core/tools/find.ts +111 -50
  19. package/src/core/tools/gemini-image.ts +128 -147
  20. package/src/core/tools/grep.ts +397 -415
  21. package/src/core/tools/index.test.ts +5 -1
  22. package/src/core/tools/index.ts +6 -8
  23. package/src/core/tools/jtd-to-json-schema.ts +174 -196
  24. package/src/core/tools/ls.ts +12 -10
  25. package/src/core/tools/lsp/client.ts +58 -9
  26. package/src/core/tools/lsp/config.ts +205 -656
  27. package/src/core/tools/lsp/defaults.json +465 -0
  28. package/src/core/tools/lsp/index.ts +55 -32
  29. package/src/core/tools/lsp/rust-analyzer.ts +49 -10
  30. package/src/core/tools/lsp/types.ts +1 -0
  31. package/src/core/tools/lsp/utils.ts +1 -1
  32. package/src/core/tools/read.ts +152 -76
  33. package/src/core/tools/render-utils.ts +70 -10
  34. package/src/core/tools/review.ts +38 -126
  35. package/src/core/tools/task/artifacts.ts +5 -4
  36. package/src/core/tools/task/executor.ts +204 -67
  37. package/src/core/tools/task/index.ts +129 -92
  38. package/src/core/tools/task/name-generator.ts +1544 -214
  39. package/src/core/tools/task/parallel.ts +30 -3
  40. package/src/core/tools/task/render.ts +85 -39
  41. package/src/core/tools/task/types.ts +34 -11
  42. package/src/core/tools/task/worker.ts +152 -27
  43. package/src/core/tools/web-fetch.ts +220 -1657
  44. package/src/core/tools/web-scrapers/academic.test.ts +239 -0
  45. package/src/core/tools/web-scrapers/artifacthub.ts +215 -0
  46. package/src/core/tools/web-scrapers/arxiv.ts +88 -0
  47. package/src/core/tools/web-scrapers/aur.ts +175 -0
  48. package/src/core/tools/web-scrapers/biorxiv.ts +141 -0
  49. package/src/core/tools/web-scrapers/bluesky.ts +284 -0
  50. package/src/core/tools/web-scrapers/brew.ts +177 -0
  51. package/src/core/tools/web-scrapers/business.test.ts +82 -0
  52. package/src/core/tools/web-scrapers/cheatsh.ts +78 -0
  53. package/src/core/tools/web-scrapers/chocolatey.ts +158 -0
  54. package/src/core/tools/web-scrapers/choosealicense.ts +110 -0
  55. package/src/core/tools/web-scrapers/cisa-kev.ts +100 -0
  56. package/src/core/tools/web-scrapers/clojars.ts +180 -0
  57. package/src/core/tools/web-scrapers/coingecko.ts +184 -0
  58. package/src/core/tools/web-scrapers/crates-io.ts +128 -0
  59. package/src/core/tools/web-scrapers/crossref.ts +149 -0
  60. package/src/core/tools/web-scrapers/dev-platforms.test.ts +254 -0
  61. package/src/core/tools/web-scrapers/devto.ts +177 -0
  62. package/src/core/tools/web-scrapers/discogs.ts +308 -0
  63. package/src/core/tools/web-scrapers/discourse.ts +221 -0
  64. package/src/core/tools/web-scrapers/dockerhub.ts +160 -0
  65. package/src/core/tools/web-scrapers/documentation.test.ts +85 -0
  66. package/src/core/tools/web-scrapers/fdroid.ts +158 -0
  67. package/src/core/tools/web-scrapers/finance-media.test.ts +144 -0
  68. package/src/core/tools/web-scrapers/firefox-addons.ts +214 -0
  69. package/src/core/tools/web-scrapers/flathub.ts +239 -0
  70. package/src/core/tools/web-scrapers/git-hosting.test.ts +272 -0
  71. package/src/core/tools/web-scrapers/github-gist.ts +68 -0
  72. package/src/core/tools/web-scrapers/github.ts +455 -0
  73. package/src/core/tools/web-scrapers/gitlab.ts +456 -0
  74. package/src/core/tools/web-scrapers/go-pkg.ts +275 -0
  75. package/src/core/tools/web-scrapers/hackage.ts +94 -0
  76. package/src/core/tools/web-scrapers/hackernews.ts +208 -0
  77. package/src/core/tools/web-scrapers/hex.ts +121 -0
  78. package/src/core/tools/web-scrapers/huggingface.ts +385 -0
  79. package/src/core/tools/web-scrapers/iacr.ts +86 -0
  80. package/src/core/tools/web-scrapers/index.ts +250 -0
  81. package/src/core/tools/web-scrapers/jetbrains-marketplace.ts +169 -0
  82. package/src/core/tools/web-scrapers/lemmy.ts +220 -0
  83. package/src/core/tools/web-scrapers/lobsters.ts +186 -0
  84. package/src/core/tools/web-scrapers/mastodon.ts +310 -0
  85. package/src/core/tools/web-scrapers/maven.ts +152 -0
  86. package/src/core/tools/web-scrapers/mdn.ts +174 -0
  87. package/src/core/tools/web-scrapers/media.test.ts +138 -0
  88. package/src/core/tools/web-scrapers/metacpan.ts +253 -0
  89. package/src/core/tools/web-scrapers/musicbrainz.ts +273 -0
  90. package/src/core/tools/web-scrapers/npm.ts +114 -0
  91. package/src/core/tools/web-scrapers/nuget.ts +205 -0
  92. package/src/core/tools/web-scrapers/nvd.ts +243 -0
  93. package/src/core/tools/web-scrapers/ollama.ts +267 -0
  94. package/src/core/tools/web-scrapers/open-vsx.ts +119 -0
  95. package/src/core/tools/web-scrapers/opencorporates.ts +275 -0
  96. package/src/core/tools/web-scrapers/openlibrary.ts +319 -0
  97. package/src/core/tools/web-scrapers/orcid.ts +299 -0
  98. package/src/core/tools/web-scrapers/osv.ts +189 -0
  99. package/src/core/tools/web-scrapers/package-managers-2.test.ts +199 -0
  100. package/src/core/tools/web-scrapers/package-managers.test.ts +171 -0
  101. package/src/core/tools/web-scrapers/package-registries.test.ts +259 -0
  102. package/src/core/tools/web-scrapers/packagist.ts +174 -0
  103. package/src/core/tools/web-scrapers/pub-dev.ts +185 -0
  104. package/src/core/tools/web-scrapers/pubmed.ts +178 -0
  105. package/src/core/tools/web-scrapers/pypi.ts +129 -0
  106. package/src/core/tools/web-scrapers/rawg.ts +124 -0
  107. package/src/core/tools/web-scrapers/readthedocs.ts +126 -0
  108. package/src/core/tools/web-scrapers/reddit.ts +104 -0
  109. package/src/core/tools/web-scrapers/repology.ts +262 -0
  110. package/src/core/tools/web-scrapers/research.test.ts +107 -0
  111. package/src/core/tools/web-scrapers/rfc.ts +209 -0
  112. package/src/core/tools/web-scrapers/rubygems.ts +117 -0
  113. package/src/core/tools/web-scrapers/searchcode.ts +217 -0
  114. package/src/core/tools/web-scrapers/sec-edgar.ts +274 -0
  115. package/src/core/tools/web-scrapers/security.test.ts +103 -0
  116. package/src/core/tools/web-scrapers/semantic-scholar.ts +190 -0
  117. package/src/core/tools/web-scrapers/snapcraft.ts +200 -0
  118. package/src/core/tools/web-scrapers/social-extended.test.ts +192 -0
  119. package/src/core/tools/web-scrapers/social.test.ts +259 -0
  120. package/src/core/tools/web-scrapers/sourcegraph.ts +373 -0
  121. package/src/core/tools/web-scrapers/spdx.ts +121 -0
  122. package/src/core/tools/web-scrapers/spotify.ts +218 -0
  123. package/src/core/tools/web-scrapers/stackexchange.test.ts +120 -0
  124. package/src/core/tools/web-scrapers/stackoverflow.ts +124 -0
  125. package/src/core/tools/web-scrapers/standards.test.ts +122 -0
  126. package/src/core/tools/web-scrapers/terraform.ts +304 -0
  127. package/src/core/tools/web-scrapers/tldr.ts +51 -0
  128. package/src/core/tools/web-scrapers/twitter.ts +96 -0
  129. package/src/core/tools/web-scrapers/types.ts +234 -0
  130. package/src/core/tools/web-scrapers/utils.ts +162 -0
  131. package/src/core/tools/web-scrapers/vimeo.ts +152 -0
  132. package/src/core/tools/web-scrapers/vscode-marketplace.ts +195 -0
  133. package/src/core/tools/web-scrapers/w3c.ts +163 -0
  134. package/src/core/tools/web-scrapers/wikidata.ts +357 -0
  135. package/src/core/tools/web-scrapers/wikipedia.test.ts +73 -0
  136. package/src/core/tools/web-scrapers/wikipedia.ts +95 -0
  137. package/src/core/tools/web-scrapers/youtube.test.ts +198 -0
  138. package/src/core/tools/web-scrapers/youtube.ts +371 -0
  139. package/src/core/tools/write.ts +21 -18
  140. package/src/core/voice.ts +3 -2
  141. package/src/lib/worktree/collapse.ts +2 -1
  142. package/src/lib/worktree/git.ts +2 -18
  143. package/src/main.ts +59 -3
  144. package/src/modes/interactive/components/extensions/extension-dashboard.ts +33 -19
  145. package/src/modes/interactive/components/extensions/extension-list.ts +15 -8
  146. package/src/modes/interactive/components/hook-editor.ts +2 -1
  147. package/src/modes/interactive/components/model-selector.ts +19 -4
  148. package/src/modes/interactive/interactive-mode.ts +41 -38
  149. package/src/modes/interactive/theme/theme.ts +58 -58
  150. package/src/modes/rpc/rpc-mode.ts +10 -9
  151. package/src/prompts/review-request.md +27 -0
  152. package/src/prompts/reviewer.md +64 -68
  153. package/src/prompts/tools/output.md +22 -3
  154. package/src/prompts/tools/task.md +32 -33
  155. package/src/utils/clipboard.ts +2 -1
  156. package/src/utils/tools-manager.ts +110 -8
  157. package/examples/extensions/subagent/agents/reviewer.md +0 -35
@@ -7,195 +7,1525 @@
7
7
  */
8
8
 
9
9
  const ADJECTIVES = [
10
- "able", "above", "absent", "absolute", "abstract", "abundant", "academic", "acceptable",
11
- "accepted", "accessible", "accurate", "accused", "active", "actual", "acute", "added",
12
- "additional", "adequate", "adjacent", "administrative", "adorable", "advanced", "adverse",
13
- "advisory", "aesthetic", "afraid", "aggregate", "aggressive", "agreeable", "agreed",
14
- "agricultural", "alert", "alive", "alleged", "allied", "alone", "alright", "alternative",
15
- "amateur", "amazing", "ambitious", "amused", "ancient", "angry", "annoyed", "annual",
16
- "anonymous", "anxious", "appalling", "apparent", "applicable", "appropriate", "arbitrary",
17
- "architectural", "armed", "arrogant", "artificial", "artistic", "ashamed", "asleep",
18
- "assistant", "associated", "atomic", "attractive", "automatic", "autonomous", "available",
19
- "average", "awake", "aware", "awful", "awkward", "back", "bad", "balanced", "bare", "basic",
20
- "beautiful", "beneficial", "better", "bewildered", "big", "binding", "biological", "bitter",
21
- "bizarre", "blank", "blind", "blonde", "bloody", "blushing", "boiling", "bold", "bored",
22
- "boring", "bottom", "brainy", "brave", "breakable", "breezy", "brief", "bright", "brilliant",
23
- "broad", "broken", "bumpy", "burning", "busy", "calm", "capable", "capitalist", "careful",
24
- "casual", "causal", "cautious", "central", "certain", "changing", "characteristic", "charming",
25
- "cheap", "cheerful", "chemical", "chief", "chilly", "chosen", "chronic", "chubby", "circular",
26
- "civic", "civil", "civilian", "classic", "classical", "clean", "clear", "clever", "clinical",
27
- "close", "closed", "cloudy", "clumsy", "coastal", "cognitive", "coherent", "cold", "collective",
28
- "colonial", "colorful", "colossal", "coloured", "colourful", "combative", "combined",
29
- "comfortable", "coming", "commercial", "common", "communist", "compact", "comparable",
30
- "comparative", "compatible", "competent", "competitive", "complete", "complex", "complicated",
31
- "comprehensive", "compulsory", "conceptual", "concerned", "concrete", "condemned", "confident",
32
- "confidential", "confused", "conscious", "conservation", "conservative", "considerable",
33
- "consistent", "constant", "constitutional", "contemporary", "content", "continental",
34
- "continued", "continuing", "continuous", "controlled", "controversial", "convenient",
35
- "conventional", "convinced", "convincing", "cooing", "cool", "cooperative", "corporate",
36
- "correct", "corresponding", "costly", "courageous", "crazy", "creative", "creepy", "criminal",
37
- "critical", "crooked", "crowded", "crucial", "crude", "cruel", "cuddly", "cultural", "curious",
38
- "curly", "current", "curved", "cute", "daily", "damaged", "damp", "dangerous", "dark", "dead",
39
- "deaf", "deafening", "dear", "decent", "decisive", "deep", "defeated", "defensive", "defiant",
40
- "definite", "deliberate", "delicate", "delicious", "delighted", "delightful", "democratic",
41
- "dependent", "depressed", "desirable", "desperate", "detailed", "determined", "developed",
42
- "developing", "devoted", "different", "difficult", "digital", "diplomatic", "direct", "dirty",
43
- "disabled", "disappointed", "disastrous", "disciplinary", "disgusted", "distant", "distinct",
44
- "distinctive", "distinguished", "disturbed", "disturbing", "diverse", "divine", "dizzy",
45
- "domestic", "dominant", "double", "doubtful", "drab", "dramatic", "dreadful", "driving",
46
- "drunk", "dry", "dual", "due", "dull", "dusty", "dying", "dynamic", "eager", "early", "eastern",
47
- "easy", "economic", "educational", "eerie", "effective", "efficient", "elaborate", "elated",
48
- "elderly", "eldest", "electoral", "electric", "electrical", "electronic", "elegant", "eligible",
49
- "embarrassed", "embarrassing", "emotional", "empirical", "empty", "enchanting", "encouraging",
50
- "endless", "energetic", "enormous", "enthusiastic", "entire", "entitled", "envious",
51
- "environmental", "equal", "equivalent", "essential", "established", "estimated", "ethical",
52
- "ethnic", "eventual", "everyday", "evident", "evil", "evolutionary", "exact", "excellent",
53
- "exceptional", "excess", "excessive", "excited", "exciting", "exclusive", "existing", "exotic",
54
- "expected", "expensive", "experienced", "experimental", "explicit", "extended", "extensive",
55
- "external", "extra", "extraordinary", "extreme", "exuberant", "faint", "fair", "faithful",
56
- "familiar", "famous", "fancy", "fantastic", "far", "fascinating", "fashionable", "fast", "fat",
57
- "fatal", "favourable", "favourite", "federal", "fellow", "female", "feminist", "few", "fierce",
58
- "filthy", "final", "financial", "fine", "firm", "fiscal", "fit", "fixed", "flaky", "flat",
59
- "flexible", "fluffy", "fluttering", "flying", "following", "fond", "foolish", "foreign",
60
- "formal", "formidable", "forthcoming", "fortunate", "forward", "fragile", "frail", "frantic",
61
- "free", "frequent", "fresh", "friendly", "frightened", "front", "frozen", "full", "fun",
62
- "functional", "fundamental", "funny", "furious", "future", "fuzzy", "gastric", "gay", "general",
63
- "generous", "genetic", "gentle", "genuine", "geographical", "giant", "gigantic", "given",
64
- "glad", "glamorous", "gleaming", "global", "glorious", "golden", "good", "gorgeous", "gothic",
65
- "governing", "graceful", "gradual", "grand", "grateful", "greasy", "great", "grieving", "grim",
66
- "gross", "grotesque", "growing", "grubby", "grumpy", "guilty", "handicapped", "handsome",
67
- "happy", "hard", "harsh", "head", "healthy", "heavy", "helpful", "helpless", "hidden", "high",
68
- "hilarious", "hissing", "historic", "historical", "hollow", "holy", "homeless", "homely",
69
- "honest", "horizontal", "horrible", "hostile", "hot", "huge", "human", "hungry", "hurt",
70
- "hushed", "husky", "icy", "ideal", "identical", "ideological", "ill", "illegal", "imaginative",
71
- "immediate", "immense", "imperial", "implicit", "important", "impossible", "impressed",
72
- "impressive", "improved", "inadequate", "inappropriate", "inclined", "increased", "increasing",
73
- "incredible", "independent", "indirect", "individual", "industrial", "inevitable", "influential",
74
- "informal", "inherent", "initial", "injured", "inland", "inner", "innocent", "innovative",
75
- "inquisitive", "instant", "institutional", "insufficient", "intact", "integral", "integrated",
76
- "intellectual", "intelligent", "intense", "intensive", "interested", "interesting", "interim",
77
- "interior", "intermediate", "internal", "international", "intimate", "invisible", "involved",
78
- "irrelevant", "isolated", "itchy", "jealous", "jittery", "joint", "jolly", "joyous", "judicial",
79
- "juicy", "junior", "just", "keen", "key", "kind", "known", "labour", "large", "late", "latin",
80
- "lazy", "leading", "left", "legal", "legislative", "legitimate", "lengthy", "lesser", "level",
81
- "lexical", "liable", "liberal", "light", "like", "likely", "limited", "linear", "linguistic",
82
- "liquid", "literary", "little", "live", "lively", "living", "local", "logical", "lonely",
83
- "long", "loose", "lost", "loud", "lovely", "low", "loyal", "lucky", "mad", "magic", "magnetic",
84
- "magnificent", "main", "major", "male", "mammoth", "managerial", "managing", "manual", "many",
85
- "marginal", "marine", "marked", "married", "marvellous", "marxist", "mass", "massive",
86
- "mathematical", "mature", "maximum", "mean", "meaningful", "mechanical", "medical", "medieval",
87
- "melodic", "melted", "mental", "mere", "metropolitan", "mid", "middle", "mighty", "mild",
88
- "military", "miniature", "minimal", "minimum", "ministerial", "minor", "miserable", "misleading",
89
- "missing", "misty", "mixed", "moaning", "mobile", "moderate", "modern", "modest", "molecular",
90
- "monetary", "monthly", "moral", "motionless", "muddy", "multiple", "mushy", "musical", "mute",
91
- "mutual", "mysterious", "naked", "narrow", "nasty", "national", "native", "natural", "naughty",
92
- "naval", "near", "nearby", "neat", "necessary", "negative", "neighbouring", "nervous", "net",
93
- "neutral", "new", "nice", "noble", "noisy", "normal", "northern", "nosy", "notable", "novel",
94
- "nuclear", "numerous", "nursing", "nutritious", "nutty", "obedient", "objective", "obliged",
95
- "obnoxious", "obvious", "occasional", "occupational", "odd", "official", "old", "olympic",
96
- "only", "open", "operational", "opposite", "optimistic", "oral", "ordinary", "organic",
97
- "organisational", "original", "orthodox", "other", "outdoor", "outer", "outrageous", "outside",
98
- "outstanding", "overall", "overseas", "overwhelming", "painful", "pale", "panicky", "parallel",
99
- "parental", "parliamentary", "partial", "particular", "passing", "passive", "past", "patient",
100
- "payable", "peaceful", "peculiar", "perfect", "permanent", "persistent", "personal", "petite",
101
- "philosophical", "physical", "plain", "planned", "plastic", "pleasant", "pleased", "poised",
102
- "polite", "political", "poor", "popular", "positive", "possible", "potential", "powerful",
103
- "practical", "precious", "precise", "preferred", "pregnant", "preliminary", "premier",
104
- "prepared", "present", "presidential", "pretty", "previous", "prickly", "primary", "prime",
105
- "primitive", "principal", "printed", "prior", "private", "probable", "productive", "professional",
106
- "profitable", "profound", "progressive", "prominent", "promising", "proper", "proposed",
107
- "prospective", "protective", "proud", "provincial", "psychiatric", "psychological", "public",
108
- "puny", "pure", "purring", "puzzled", "quaint", "qualified", "quarrelsome", "querulous",
109
- "quick", "quickest", "quiet", "quintessential", "quixotic", "racial", "radical", "rainy",
110
- "random", "rapid", "rare", "raspy", "rational", "ratty", "raw", "ready", "real", "realistic",
111
- "rear", "reasonable", "recent", "reduced", "redundant", "regional", "registered", "regular",
112
- "regulatory", "related", "relative", "relaxed", "relevant", "reliable", "relieved", "religious",
113
- "reluctant", "remaining", "remarkable", "remote", "renewed", "representative", "repulsive",
114
- "required", "resident", "residential", "resonant", "respectable", "respective", "responsible",
115
- "resulting", "retail", "retired", "revolutionary", "rich", "ridiculous", "right", "rigid",
116
- "ripe", "rising", "rival", "roasted", "robust", "rolling", "romantic", "rotten", "rough",
117
- "round", "royal", "rubber", "rude", "ruling", "running", "rural", "sacred", "sad", "safe",
118
- "salty", "satisfactory", "satisfied", "scared", "scary", "scattered", "scientific", "scornful",
119
- "scrawny", "screeching", "secondary", "secret", "secure", "select", "selected", "selective",
120
- "selfish", "semantic", "senior", "sensible", "sensitive", "separate", "serious", "severe",
121
- "sexual", "shaggy", "shaky", "shallow", "shared", "sharp", "sheer", "shiny", "shivering",
122
- "shocked", "short", "shrill", "shy", "sick", "significant", "silent", "silky", "silly",
123
- "similar", "simple", "single", "skilled", "skinny", "sleepy", "slight", "slim", "slimy",
124
- "slippery", "slow", "small", "smart", "smiling", "smoggy", "smooth", "social", "socialist",
125
- "soft", "solar", "sole", "solid", "sophisticated", "sore", "sorry", "sound", "sour", "southern",
126
- "soviet", "spare", "sparkling", "spatial", "special", "specific", "specified", "spectacular",
127
- "spicy", "spiritual", "splendid", "spontaneous", "sporting", "spotless", "spotty", "square",
128
- "squealing", "stable", "stale", "standard", "static", "statistical", "statutory", "steady",
129
- "steep", "sticky", "stiff", "still", "stingy", "stormy", "straight", "straightforward",
130
- "strange", "strategic", "strict", "striking", "striped", "strong", "structural", "stuck",
131
- "stupid", "subjective", "subsequent", "substantial", "subtle", "successful", "successive",
132
- "sudden", "sufficient", "suitable", "sunny", "super", "superb", "superior", "supporting",
133
- "supposed", "supreme", "sure", "surprised", "surprising", "surrounding", "surviving",
134
- "suspicious", "sweet", "swift", "symbolic", "sympathetic", "systematic", "tall", "tame",
135
- "tart", "tasteless", "tasty", "technical", "technological", "teenage", "temporary", "tender",
136
- "tense", "terrible", "territorial", "testy", "theoretical", "thick", "thin", "thirsty",
137
- "thorough", "thoughtful", "thoughtless", "thundering", "tight", "tiny", "tired", "top", "total",
138
- "tough", "toxic", "traditional", "tragic", "tremendous", "tricky", "tropical", "troubled",
139
- "typical", "ugliest", "ugly", "ultimate", "unable", "unacceptable", "unaware", "uncertain",
140
- "unchanged", "uncomfortable", "unconscious", "underground", "underlying", "unemployed",
141
- "uneven", "unexpected", "unfair", "unfortunate", "unhappy", "uniform", "uninterested", "unique",
142
- "united", "universal", "unknown", "unlikely", "unnecessary", "unpleasant", "unsightly",
143
- "unusual", "unwilling", "upper", "upset", "uptight", "urban", "urgent", "used", "useful",
144
- "useless", "usual", "vague", "valid", "valuable", "variable", "varied", "various", "varying",
145
- "vast", "verbal", "vertical", "vicarious", "vicious", "victorious", "violent", "visible",
146
- "visiting", "visual", "vital", "vivacious", "vivid", "vocal", "vocational", "voiceless",
147
- "voluminous", "voluntary", "vulnerable", "wandering", "warm", "wasteful", "watery", "weak",
148
- "wealthy", "weary", "weekly", "weird", "welcome", "well", "western", "wet", "whispering",
149
- "whole", "wicked", "wide", "widespread", "wild", "willing", "willowy", "wily", "wise", "wispy",
150
- "witty", "wonderful", "wooden", "working", "worldwide", "worried", "worrying", "worthwhile",
151
- "worthy", "written", "wrong", "xenial", "xeric", "yawning", "yearning", "young", "youngest",
152
- "youthful", "zany", "zealous", "zesty", "zippy",
10
+ "able",
11
+ "above",
12
+ "absent",
13
+ "absolute",
14
+ "abstract",
15
+ "abundant",
16
+ "academic",
17
+ "acceptable",
18
+ "accepted",
19
+ "accessible",
20
+ "accurate",
21
+ "accused",
22
+ "active",
23
+ "actual",
24
+ "acute",
25
+ "added",
26
+ "additional",
27
+ "adequate",
28
+ "adjacent",
29
+ "administrative",
30
+ "adorable",
31
+ "advanced",
32
+ "adverse",
33
+ "advisory",
34
+ "aesthetic",
35
+ "afraid",
36
+ "aggregate",
37
+ "aggressive",
38
+ "agreeable",
39
+ "agreed",
40
+ "agricultural",
41
+ "alert",
42
+ "alive",
43
+ "alleged",
44
+ "allied",
45
+ "alone",
46
+ "alright",
47
+ "alternative",
48
+ "amateur",
49
+ "amazing",
50
+ "ambitious",
51
+ "amused",
52
+ "ancient",
53
+ "angry",
54
+ "annoyed",
55
+ "annual",
56
+ "anonymous",
57
+ "anxious",
58
+ "appalling",
59
+ "apparent",
60
+ "applicable",
61
+ "appropriate",
62
+ "arbitrary",
63
+ "architectural",
64
+ "armed",
65
+ "arrogant",
66
+ "artificial",
67
+ "artistic",
68
+ "ashamed",
69
+ "asleep",
70
+ "assistant",
71
+ "associated",
72
+ "atomic",
73
+ "attractive",
74
+ "automatic",
75
+ "autonomous",
76
+ "available",
77
+ "average",
78
+ "awake",
79
+ "aware",
80
+ "awful",
81
+ "awkward",
82
+ "back",
83
+ "bad",
84
+ "balanced",
85
+ "bare",
86
+ "basic",
87
+ "beautiful",
88
+ "beneficial",
89
+ "better",
90
+ "bewildered",
91
+ "big",
92
+ "binding",
93
+ "biological",
94
+ "bitter",
95
+ "bizarre",
96
+ "blank",
97
+ "blind",
98
+ "blonde",
99
+ "bloody",
100
+ "blushing",
101
+ "boiling",
102
+ "bold",
103
+ "bored",
104
+ "boring",
105
+ "bottom",
106
+ "brainy",
107
+ "brave",
108
+ "breakable",
109
+ "breezy",
110
+ "brief",
111
+ "bright",
112
+ "brilliant",
113
+ "broad",
114
+ "broken",
115
+ "bumpy",
116
+ "burning",
117
+ "busy",
118
+ "calm",
119
+ "capable",
120
+ "capitalist",
121
+ "careful",
122
+ "casual",
123
+ "causal",
124
+ "cautious",
125
+ "central",
126
+ "certain",
127
+ "changing",
128
+ "characteristic",
129
+ "charming",
130
+ "cheap",
131
+ "cheerful",
132
+ "chemical",
133
+ "chief",
134
+ "chilly",
135
+ "chosen",
136
+ "chronic",
137
+ "chubby",
138
+ "circular",
139
+ "civic",
140
+ "civil",
141
+ "civilian",
142
+ "classic",
143
+ "classical",
144
+ "clean",
145
+ "clear",
146
+ "clever",
147
+ "clinical",
148
+ "close",
149
+ "closed",
150
+ "cloudy",
151
+ "clumsy",
152
+ "coastal",
153
+ "cognitive",
154
+ "coherent",
155
+ "cold",
156
+ "collective",
157
+ "colonial",
158
+ "colorful",
159
+ "colossal",
160
+ "coloured",
161
+ "colourful",
162
+ "combative",
163
+ "combined",
164
+ "comfortable",
165
+ "coming",
166
+ "commercial",
167
+ "common",
168
+ "communist",
169
+ "compact",
170
+ "comparable",
171
+ "comparative",
172
+ "compatible",
173
+ "competent",
174
+ "competitive",
175
+ "complete",
176
+ "complex",
177
+ "complicated",
178
+ "comprehensive",
179
+ "compulsory",
180
+ "conceptual",
181
+ "concerned",
182
+ "concrete",
183
+ "condemned",
184
+ "confident",
185
+ "confidential",
186
+ "confused",
187
+ "conscious",
188
+ "conservation",
189
+ "conservative",
190
+ "considerable",
191
+ "consistent",
192
+ "constant",
193
+ "constitutional",
194
+ "contemporary",
195
+ "content",
196
+ "continental",
197
+ "continued",
198
+ "continuing",
199
+ "continuous",
200
+ "controlled",
201
+ "controversial",
202
+ "convenient",
203
+ "conventional",
204
+ "convinced",
205
+ "convincing",
206
+ "cooing",
207
+ "cool",
208
+ "cooperative",
209
+ "corporate",
210
+ "correct",
211
+ "corresponding",
212
+ "costly",
213
+ "courageous",
214
+ "crazy",
215
+ "creative",
216
+ "creepy",
217
+ "criminal",
218
+ "critical",
219
+ "crooked",
220
+ "crowded",
221
+ "crucial",
222
+ "crude",
223
+ "cruel",
224
+ "cuddly",
225
+ "cultural",
226
+ "curious",
227
+ "curly",
228
+ "current",
229
+ "curved",
230
+ "cute",
231
+ "daily",
232
+ "damaged",
233
+ "damp",
234
+ "dangerous",
235
+ "dark",
236
+ "dead",
237
+ "deaf",
238
+ "deafening",
239
+ "dear",
240
+ "decent",
241
+ "decisive",
242
+ "deep",
243
+ "defeated",
244
+ "defensive",
245
+ "defiant",
246
+ "definite",
247
+ "deliberate",
248
+ "delicate",
249
+ "delicious",
250
+ "delighted",
251
+ "delightful",
252
+ "democratic",
253
+ "dependent",
254
+ "depressed",
255
+ "desirable",
256
+ "desperate",
257
+ "detailed",
258
+ "determined",
259
+ "developed",
260
+ "developing",
261
+ "devoted",
262
+ "different",
263
+ "difficult",
264
+ "digital",
265
+ "diplomatic",
266
+ "direct",
267
+ "dirty",
268
+ "disabled",
269
+ "disappointed",
270
+ "disastrous",
271
+ "disciplinary",
272
+ "disgusted",
273
+ "distant",
274
+ "distinct",
275
+ "distinctive",
276
+ "distinguished",
277
+ "disturbed",
278
+ "disturbing",
279
+ "diverse",
280
+ "divine",
281
+ "dizzy",
282
+ "domestic",
283
+ "dominant",
284
+ "double",
285
+ "doubtful",
286
+ "drab",
287
+ "dramatic",
288
+ "dreadful",
289
+ "driving",
290
+ "drunk",
291
+ "dry",
292
+ "dual",
293
+ "due",
294
+ "dull",
295
+ "dusty",
296
+ "dying",
297
+ "dynamic",
298
+ "eager",
299
+ "early",
300
+ "eastern",
301
+ "easy",
302
+ "economic",
303
+ "educational",
304
+ "eerie",
305
+ "effective",
306
+ "efficient",
307
+ "elaborate",
308
+ "elated",
309
+ "elderly",
310
+ "eldest",
311
+ "electoral",
312
+ "electric",
313
+ "electrical",
314
+ "electronic",
315
+ "elegant",
316
+ "eligible",
317
+ "embarrassed",
318
+ "embarrassing",
319
+ "emotional",
320
+ "empirical",
321
+ "empty",
322
+ "enchanting",
323
+ "encouraging",
324
+ "endless",
325
+ "energetic",
326
+ "enormous",
327
+ "enthusiastic",
328
+ "entire",
329
+ "entitled",
330
+ "envious",
331
+ "environmental",
332
+ "equal",
333
+ "equivalent",
334
+ "essential",
335
+ "established",
336
+ "estimated",
337
+ "ethical",
338
+ "ethnic",
339
+ "eventual",
340
+ "everyday",
341
+ "evident",
342
+ "evil",
343
+ "evolutionary",
344
+ "exact",
345
+ "excellent",
346
+ "exceptional",
347
+ "excess",
348
+ "excessive",
349
+ "excited",
350
+ "exciting",
351
+ "exclusive",
352
+ "existing",
353
+ "exotic",
354
+ "expected",
355
+ "expensive",
356
+ "experienced",
357
+ "experimental",
358
+ "explicit",
359
+ "extended",
360
+ "extensive",
361
+ "external",
362
+ "extra",
363
+ "extraordinary",
364
+ "extreme",
365
+ "exuberant",
366
+ "faint",
367
+ "fair",
368
+ "faithful",
369
+ "familiar",
370
+ "famous",
371
+ "fancy",
372
+ "fantastic",
373
+ "far",
374
+ "fascinating",
375
+ "fashionable",
376
+ "fast",
377
+ "fat",
378
+ "fatal",
379
+ "favourable",
380
+ "favourite",
381
+ "federal",
382
+ "fellow",
383
+ "female",
384
+ "feminist",
385
+ "few",
386
+ "fierce",
387
+ "filthy",
388
+ "final",
389
+ "financial",
390
+ "fine",
391
+ "firm",
392
+ "fiscal",
393
+ "fit",
394
+ "fixed",
395
+ "flaky",
396
+ "flat",
397
+ "flexible",
398
+ "fluffy",
399
+ "fluttering",
400
+ "flying",
401
+ "following",
402
+ "fond",
403
+ "foolish",
404
+ "foreign",
405
+ "formal",
406
+ "formidable",
407
+ "forthcoming",
408
+ "fortunate",
409
+ "forward",
410
+ "fragile",
411
+ "frail",
412
+ "frantic",
413
+ "free",
414
+ "frequent",
415
+ "fresh",
416
+ "friendly",
417
+ "frightened",
418
+ "front",
419
+ "frozen",
420
+ "full",
421
+ "fun",
422
+ "functional",
423
+ "fundamental",
424
+ "funny",
425
+ "furious",
426
+ "future",
427
+ "fuzzy",
428
+ "gastric",
429
+ "gay",
430
+ "general",
431
+ "generous",
432
+ "genetic",
433
+ "gentle",
434
+ "genuine",
435
+ "geographical",
436
+ "giant",
437
+ "gigantic",
438
+ "given",
439
+ "glad",
440
+ "glamorous",
441
+ "gleaming",
442
+ "global",
443
+ "glorious",
444
+ "golden",
445
+ "good",
446
+ "gorgeous",
447
+ "gothic",
448
+ "governing",
449
+ "graceful",
450
+ "gradual",
451
+ "grand",
452
+ "grateful",
453
+ "greasy",
454
+ "great",
455
+ "grieving",
456
+ "grim",
457
+ "gross",
458
+ "grotesque",
459
+ "growing",
460
+ "grubby",
461
+ "grumpy",
462
+ "guilty",
463
+ "handicapped",
464
+ "handsome",
465
+ "happy",
466
+ "hard",
467
+ "harsh",
468
+ "head",
469
+ "healthy",
470
+ "heavy",
471
+ "helpful",
472
+ "helpless",
473
+ "hidden",
474
+ "high",
475
+ "hilarious",
476
+ "hissing",
477
+ "historic",
478
+ "historical",
479
+ "hollow",
480
+ "holy",
481
+ "homeless",
482
+ "homely",
483
+ "honest",
484
+ "horizontal",
485
+ "horrible",
486
+ "hostile",
487
+ "hot",
488
+ "huge",
489
+ "human",
490
+ "hungry",
491
+ "hurt",
492
+ "hushed",
493
+ "husky",
494
+ "icy",
495
+ "ideal",
496
+ "identical",
497
+ "ideological",
498
+ "ill",
499
+ "illegal",
500
+ "imaginative",
501
+ "immediate",
502
+ "immense",
503
+ "imperial",
504
+ "implicit",
505
+ "important",
506
+ "impossible",
507
+ "impressed",
508
+ "impressive",
509
+ "improved",
510
+ "inadequate",
511
+ "inappropriate",
512
+ "inclined",
513
+ "increased",
514
+ "increasing",
515
+ "incredible",
516
+ "independent",
517
+ "indirect",
518
+ "individual",
519
+ "industrial",
520
+ "inevitable",
521
+ "influential",
522
+ "informal",
523
+ "inherent",
524
+ "initial",
525
+ "injured",
526
+ "inland",
527
+ "inner",
528
+ "innocent",
529
+ "innovative",
530
+ "inquisitive",
531
+ "instant",
532
+ "institutional",
533
+ "insufficient",
534
+ "intact",
535
+ "integral",
536
+ "integrated",
537
+ "intellectual",
538
+ "intelligent",
539
+ "intense",
540
+ "intensive",
541
+ "interested",
542
+ "interesting",
543
+ "interim",
544
+ "interior",
545
+ "intermediate",
546
+ "internal",
547
+ "international",
548
+ "intimate",
549
+ "invisible",
550
+ "involved",
551
+ "irrelevant",
552
+ "isolated",
553
+ "itchy",
554
+ "jealous",
555
+ "jittery",
556
+ "joint",
557
+ "jolly",
558
+ "joyous",
559
+ "judicial",
560
+ "juicy",
561
+ "junior",
562
+ "just",
563
+ "keen",
564
+ "key",
565
+ "kind",
566
+ "known",
567
+ "labour",
568
+ "large",
569
+ "late",
570
+ "latin",
571
+ "lazy",
572
+ "leading",
573
+ "left",
574
+ "legal",
575
+ "legislative",
576
+ "legitimate",
577
+ "lengthy",
578
+ "lesser",
579
+ "level",
580
+ "lexical",
581
+ "liable",
582
+ "liberal",
583
+ "light",
584
+ "like",
585
+ "likely",
586
+ "limited",
587
+ "linear",
588
+ "linguistic",
589
+ "liquid",
590
+ "literary",
591
+ "little",
592
+ "live",
593
+ "lively",
594
+ "living",
595
+ "local",
596
+ "logical",
597
+ "lonely",
598
+ "long",
599
+ "loose",
600
+ "lost",
601
+ "loud",
602
+ "lovely",
603
+ "low",
604
+ "loyal",
605
+ "lucky",
606
+ "mad",
607
+ "magic",
608
+ "magnetic",
609
+ "magnificent",
610
+ "main",
611
+ "major",
612
+ "male",
613
+ "mammoth",
614
+ "managerial",
615
+ "managing",
616
+ "manual",
617
+ "many",
618
+ "marginal",
619
+ "marine",
620
+ "marked",
621
+ "married",
622
+ "marvellous",
623
+ "marxist",
624
+ "mass",
625
+ "massive",
626
+ "mathematical",
627
+ "mature",
628
+ "maximum",
629
+ "mean",
630
+ "meaningful",
631
+ "mechanical",
632
+ "medical",
633
+ "medieval",
634
+ "melodic",
635
+ "melted",
636
+ "mental",
637
+ "mere",
638
+ "metropolitan",
639
+ "mid",
640
+ "middle",
641
+ "mighty",
642
+ "mild",
643
+ "military",
644
+ "miniature",
645
+ "minimal",
646
+ "minimum",
647
+ "ministerial",
648
+ "minor",
649
+ "miserable",
650
+ "misleading",
651
+ "missing",
652
+ "misty",
653
+ "mixed",
654
+ "moaning",
655
+ "mobile",
656
+ "moderate",
657
+ "modern",
658
+ "modest",
659
+ "molecular",
660
+ "monetary",
661
+ "monthly",
662
+ "moral",
663
+ "motionless",
664
+ "muddy",
665
+ "multiple",
666
+ "mushy",
667
+ "musical",
668
+ "mute",
669
+ "mutual",
670
+ "mysterious",
671
+ "naked",
672
+ "narrow",
673
+ "nasty",
674
+ "national",
675
+ "native",
676
+ "natural",
677
+ "naughty",
678
+ "naval",
679
+ "near",
680
+ "nearby",
681
+ "neat",
682
+ "necessary",
683
+ "negative",
684
+ "neighbouring",
685
+ "nervous",
686
+ "net",
687
+ "neutral",
688
+ "new",
689
+ "nice",
690
+ "noble",
691
+ "noisy",
692
+ "normal",
693
+ "northern",
694
+ "nosy",
695
+ "notable",
696
+ "novel",
697
+ "nuclear",
698
+ "numerous",
699
+ "nursing",
700
+ "nutritious",
701
+ "nutty",
702
+ "obedient",
703
+ "objective",
704
+ "obliged",
705
+ "obnoxious",
706
+ "obvious",
707
+ "occasional",
708
+ "occupational",
709
+ "odd",
710
+ "official",
711
+ "old",
712
+ "olympic",
713
+ "only",
714
+ "open",
715
+ "operational",
716
+ "opposite",
717
+ "optimistic",
718
+ "oral",
719
+ "ordinary",
720
+ "organic",
721
+ "organisational",
722
+ "original",
723
+ "orthodox",
724
+ "other",
725
+ "outdoor",
726
+ "outer",
727
+ "outrageous",
728
+ "outside",
729
+ "outstanding",
730
+ "overall",
731
+ "overseas",
732
+ "overwhelming",
733
+ "painful",
734
+ "pale",
735
+ "panicky",
736
+ "parallel",
737
+ "parental",
738
+ "parliamentary",
739
+ "partial",
740
+ "particular",
741
+ "passing",
742
+ "passive",
743
+ "past",
744
+ "patient",
745
+ "payable",
746
+ "peaceful",
747
+ "peculiar",
748
+ "perfect",
749
+ "permanent",
750
+ "persistent",
751
+ "personal",
752
+ "petite",
753
+ "philosophical",
754
+ "physical",
755
+ "plain",
756
+ "planned",
757
+ "plastic",
758
+ "pleasant",
759
+ "pleased",
760
+ "poised",
761
+ "polite",
762
+ "political",
763
+ "poor",
764
+ "popular",
765
+ "positive",
766
+ "possible",
767
+ "potential",
768
+ "powerful",
769
+ "practical",
770
+ "precious",
771
+ "precise",
772
+ "preferred",
773
+ "pregnant",
774
+ "preliminary",
775
+ "premier",
776
+ "prepared",
777
+ "present",
778
+ "presidential",
779
+ "pretty",
780
+ "previous",
781
+ "prickly",
782
+ "primary",
783
+ "prime",
784
+ "primitive",
785
+ "principal",
786
+ "printed",
787
+ "prior",
788
+ "private",
789
+ "probable",
790
+ "productive",
791
+ "professional",
792
+ "profitable",
793
+ "profound",
794
+ "progressive",
795
+ "prominent",
796
+ "promising",
797
+ "proper",
798
+ "proposed",
799
+ "prospective",
800
+ "protective",
801
+ "proud",
802
+ "provincial",
803
+ "psychiatric",
804
+ "psychological",
805
+ "public",
806
+ "puny",
807
+ "pure",
808
+ "purring",
809
+ "puzzled",
810
+ "quaint",
811
+ "qualified",
812
+ "quarrelsome",
813
+ "querulous",
814
+ "quick",
815
+ "quickest",
816
+ "quiet",
817
+ "quintessential",
818
+ "quixotic",
819
+ "racial",
820
+ "radical",
821
+ "rainy",
822
+ "random",
823
+ "rapid",
824
+ "rare",
825
+ "raspy",
826
+ "rational",
827
+ "ratty",
828
+ "raw",
829
+ "ready",
830
+ "real",
831
+ "realistic",
832
+ "rear",
833
+ "reasonable",
834
+ "recent",
835
+ "reduced",
836
+ "redundant",
837
+ "regional",
838
+ "registered",
839
+ "regular",
840
+ "regulatory",
841
+ "related",
842
+ "relative",
843
+ "relaxed",
844
+ "relevant",
845
+ "reliable",
846
+ "relieved",
847
+ "religious",
848
+ "reluctant",
849
+ "remaining",
850
+ "remarkable",
851
+ "remote",
852
+ "renewed",
853
+ "representative",
854
+ "repulsive",
855
+ "required",
856
+ "resident",
857
+ "residential",
858
+ "resonant",
859
+ "respectable",
860
+ "respective",
861
+ "responsible",
862
+ "resulting",
863
+ "retail",
864
+ "retired",
865
+ "revolutionary",
866
+ "rich",
867
+ "ridiculous",
868
+ "right",
869
+ "rigid",
870
+ "ripe",
871
+ "rising",
872
+ "rival",
873
+ "roasted",
874
+ "robust",
875
+ "rolling",
876
+ "romantic",
877
+ "rotten",
878
+ "rough",
879
+ "round",
880
+ "royal",
881
+ "rubber",
882
+ "rude",
883
+ "ruling",
884
+ "running",
885
+ "rural",
886
+ "sacred",
887
+ "sad",
888
+ "safe",
889
+ "salty",
890
+ "satisfactory",
891
+ "satisfied",
892
+ "scared",
893
+ "scary",
894
+ "scattered",
895
+ "scientific",
896
+ "scornful",
897
+ "scrawny",
898
+ "screeching",
899
+ "secondary",
900
+ "secret",
901
+ "secure",
902
+ "select",
903
+ "selected",
904
+ "selective",
905
+ "selfish",
906
+ "semantic",
907
+ "senior",
908
+ "sensible",
909
+ "sensitive",
910
+ "separate",
911
+ "serious",
912
+ "severe",
913
+ "sexual",
914
+ "shaggy",
915
+ "shaky",
916
+ "shallow",
917
+ "shared",
918
+ "sharp",
919
+ "sheer",
920
+ "shiny",
921
+ "shivering",
922
+ "shocked",
923
+ "short",
924
+ "shrill",
925
+ "shy",
926
+ "sick",
927
+ "significant",
928
+ "silent",
929
+ "silky",
930
+ "silly",
931
+ "similar",
932
+ "simple",
933
+ "single",
934
+ "skilled",
935
+ "skinny",
936
+ "sleepy",
937
+ "slight",
938
+ "slim",
939
+ "slimy",
940
+ "slippery",
941
+ "slow",
942
+ "small",
943
+ "smart",
944
+ "smiling",
945
+ "smoggy",
946
+ "smooth",
947
+ "social",
948
+ "socialist",
949
+ "soft",
950
+ "solar",
951
+ "sole",
952
+ "solid",
953
+ "sophisticated",
954
+ "sore",
955
+ "sorry",
956
+ "sound",
957
+ "sour",
958
+ "southern",
959
+ "soviet",
960
+ "spare",
961
+ "sparkling",
962
+ "spatial",
963
+ "special",
964
+ "specific",
965
+ "specified",
966
+ "spectacular",
967
+ "spicy",
968
+ "spiritual",
969
+ "splendid",
970
+ "spontaneous",
971
+ "sporting",
972
+ "spotless",
973
+ "spotty",
974
+ "square",
975
+ "squealing",
976
+ "stable",
977
+ "stale",
978
+ "standard",
979
+ "static",
980
+ "statistical",
981
+ "statutory",
982
+ "steady",
983
+ "steep",
984
+ "sticky",
985
+ "stiff",
986
+ "still",
987
+ "stingy",
988
+ "stormy",
989
+ "straight",
990
+ "straightforward",
991
+ "strange",
992
+ "strategic",
993
+ "strict",
994
+ "striking",
995
+ "striped",
996
+ "strong",
997
+ "structural",
998
+ "stuck",
999
+ "stupid",
1000
+ "subjective",
1001
+ "subsequent",
1002
+ "substantial",
1003
+ "subtle",
1004
+ "successful",
1005
+ "successive",
1006
+ "sudden",
1007
+ "sufficient",
1008
+ "suitable",
1009
+ "sunny",
1010
+ "super",
1011
+ "superb",
1012
+ "superior",
1013
+ "supporting",
1014
+ "supposed",
1015
+ "supreme",
1016
+ "sure",
1017
+ "surprised",
1018
+ "surprising",
1019
+ "surrounding",
1020
+ "surviving",
1021
+ "suspicious",
1022
+ "sweet",
1023
+ "swift",
1024
+ "symbolic",
1025
+ "sympathetic",
1026
+ "systematic",
1027
+ "tall",
1028
+ "tame",
1029
+ "tart",
1030
+ "tasteless",
1031
+ "tasty",
1032
+ "technical",
1033
+ "technological",
1034
+ "teenage",
1035
+ "temporary",
1036
+ "tender",
1037
+ "tense",
1038
+ "terrible",
1039
+ "territorial",
1040
+ "testy",
1041
+ "theoretical",
1042
+ "thick",
1043
+ "thin",
1044
+ "thirsty",
1045
+ "thorough",
1046
+ "thoughtful",
1047
+ "thoughtless",
1048
+ "thundering",
1049
+ "tight",
1050
+ "tiny",
1051
+ "tired",
1052
+ "top",
1053
+ "total",
1054
+ "tough",
1055
+ "toxic",
1056
+ "traditional",
1057
+ "tragic",
1058
+ "tremendous",
1059
+ "tricky",
1060
+ "tropical",
1061
+ "troubled",
1062
+ "typical",
1063
+ "ugliest",
1064
+ "ugly",
1065
+ "ultimate",
1066
+ "unable",
1067
+ "unacceptable",
1068
+ "unaware",
1069
+ "uncertain",
1070
+ "unchanged",
1071
+ "uncomfortable",
1072
+ "unconscious",
1073
+ "underground",
1074
+ "underlying",
1075
+ "unemployed",
1076
+ "uneven",
1077
+ "unexpected",
1078
+ "unfair",
1079
+ "unfortunate",
1080
+ "unhappy",
1081
+ "uniform",
1082
+ "uninterested",
1083
+ "unique",
1084
+ "united",
1085
+ "universal",
1086
+ "unknown",
1087
+ "unlikely",
1088
+ "unnecessary",
1089
+ "unpleasant",
1090
+ "unsightly",
1091
+ "unusual",
1092
+ "unwilling",
1093
+ "upper",
1094
+ "upset",
1095
+ "uptight",
1096
+ "urban",
1097
+ "urgent",
1098
+ "used",
1099
+ "useful",
1100
+ "useless",
1101
+ "usual",
1102
+ "vague",
1103
+ "valid",
1104
+ "valuable",
1105
+ "variable",
1106
+ "varied",
1107
+ "various",
1108
+ "varying",
1109
+ "vast",
1110
+ "verbal",
1111
+ "vertical",
1112
+ "vicarious",
1113
+ "vicious",
1114
+ "victorious",
1115
+ "violent",
1116
+ "visible",
1117
+ "visiting",
1118
+ "visual",
1119
+ "vital",
1120
+ "vivacious",
1121
+ "vivid",
1122
+ "vocal",
1123
+ "vocational",
1124
+ "voiceless",
1125
+ "voluminous",
1126
+ "voluntary",
1127
+ "vulnerable",
1128
+ "wandering",
1129
+ "warm",
1130
+ "wasteful",
1131
+ "watery",
1132
+ "weak",
1133
+ "wealthy",
1134
+ "weary",
1135
+ "weekly",
1136
+ "weird",
1137
+ "welcome",
1138
+ "well",
1139
+ "western",
1140
+ "wet",
1141
+ "whispering",
1142
+ "whole",
1143
+ "wicked",
1144
+ "wide",
1145
+ "widespread",
1146
+ "wild",
1147
+ "willing",
1148
+ "willowy",
1149
+ "wily",
1150
+ "wise",
1151
+ "wispy",
1152
+ "witty",
1153
+ "wonderful",
1154
+ "wooden",
1155
+ "working",
1156
+ "worldwide",
1157
+ "worried",
1158
+ "worrying",
1159
+ "worthwhile",
1160
+ "worthy",
1161
+ "written",
1162
+ "wrong",
1163
+ "xenial",
1164
+ "xeric",
1165
+ "yawning",
1166
+ "yearning",
1167
+ "young",
1168
+ "youngest",
1169
+ "youthful",
1170
+ "zany",
1171
+ "zealous",
1172
+ "zesty",
1173
+ "zippy",
153
1174
  ];
154
1175
 
155
1176
  const NOUNS = [
156
- "aardvark", "aardwolf", "albatross", "alligator", "alpaca", "amphibian", "anaconda",
157
- "angelfish", "anglerfish", "ant", "anteater", "antelope", "antlion", "ape", "aphid",
158
- "armadillo", "asp", "baboon", "badger", "bandicoot", "barnacle", "barracuda", "basilisk",
159
- "bass", "bat", "bear", "beaver", "bedbug", "bee", "beetle", "bird", "bison", "blackbird",
160
- "boa", "boar", "bobcat", "bobolink", "bonobo", "booby", "bovid", "bug", "butterfly", "buzzard",
161
- "camel", "canid", "capybara", "cardinal", "caribou", "carp", "cat", "caterpillar", "catfish",
162
- "catshark", "cattle", "centipede", "cephalopod", "chameleon", "cheetah", "chickadee", "chicken",
163
- "chimpanzee", "chinchilla", "chipmunk", "cicada", "clam", "clownfish", "cobra", "cockroach",
164
- "cod", "condor", "constrictor", "coral", "cougar", "cow", "coyote", "crab", "crane", "crawdad",
165
- "crayfish", "cricket", "crocodile", "crow", "cuckoo", "damselfly", "deer", "dingo", "dinosaur",
166
- "dog", "dolphin", "donkey", "dormouse", "dove", "dragon", "dragonfly", "duck", "eagle",
167
- "earthworm", "earwig", "echidna", "eel", "egret", "elephant", "elk", "emu", "ermine", "falcon",
168
- "ferret", "finch", "firefly", "fish", "flamingo", "flea", "fly", "flyingfish", "fowl", "fox",
169
- "frog", "gamefowl", "gazelle", "gecko", "gerbil", "gibbon", "giraffe", "goat", "goldfish",
170
- "goose", "gopher", "gorilla", "grasshopper", "grouse", "guan", "guanaco", "guineafowl", "gull",
171
- "guppy", "haddock", "halibut", "hamster", "hare", "harrier", "hawk", "hedgehog", "heron",
172
- "herring", "hippopotamus", "hookworm", "hornet", "horse", "hoverfly", "hummingbird", "hyena",
173
- "iguana", "impala", "jackal", "jaguar", "jay", "jellyfish", "kangaroo", "kingfisher", "kite",
174
- "kiwi", "koala", "koi", "krill", "ladybug", "lamprey", "lark", "leech", "lemming", "lemur",
175
- "leopard", "leopon", "limpet", "lion", "lizard", "llama", "lobster", "locust", "loon", "louse",
176
- "lungfish", "lynx", "macaw", "mackerel", "magpie", "mammal", "manatee", "mandrill", "marlin",
177
- "marmoset", "marmot", "marsupial", "marten", "mastodon", "meadowlark", "meerkat", "mink",
178
- "minnow", "mite", "mockingbird", "mole", "mollusk", "mongoose", "monkey", "moose", "mosquito",
179
- "moth", "mouse", "mule", "muskox", "narwhal", "newt", "nightingale", "ocelot", "octopus",
180
- "opossum", "orangutan", "orca", "ostrich", "otter", "owl", "ox", "panda", "panther", "parakeet",
181
- "parrot", "parrotfish", "partridge", "peacock", "peafowl", "pelican", "penguin", "perch",
182
- "pheasant", "pig", "pigeon", "pike", "pinniped", "piranha", "planarian", "platypus", "pony",
183
- "porcupine", "porpoise", "possum", "prawn", "primate", "ptarmigan", "puffin", "puma", "python",
184
- "quail", "quelea", "quokka", "rabbit", "raccoon", "rat", "rattlesnake", "raven", "reindeer",
185
- "reptile", "rhinoceros", "roadrunner", "rodent", "rook", "rooster", "roundworm", "sailfish",
186
- "salamander", "salmon", "sawfish", "scallop", "scorpion", "seahorse", "shark", "sheep", "shrew",
187
- "shrimp", "silkworm", "silverfish", "skink", "skunk", "sloth", "slug", "smelt", "snail",
188
- "snake", "snipe", "sole", "sparrow", "spider", "spoonbill", "squid", "squirrel", "starfish",
189
- "stingray", "stoat", "stork", "sturgeon", "swallow", "swan", "swift", "swordfish", "swordtail",
190
- "tahr", "takin", "tapir", "tarantula", "tarsier", "termite", "tern", "thrush", "tick", "tiger",
191
- "tiglon", "toad", "tortoise", "toucan", "trout", "tuna", "turkey", "turtle", "tyrannosaurus",
192
- "unicorn", "urial", "vicuna", "viper", "vole", "vulture", "wallaby", "walrus", "warbler",
193
- "wasp", "weasel", "whale", "whippet", "whitefish", "wildcat", "wildebeest", "wildfowl", "wolf",
194
- "wolverine", "wombat", "woodpecker", "worm", "wren", "yak", "zebra",
1177
+ "aardvark",
1178
+ "aardwolf",
1179
+ "albatross",
1180
+ "alligator",
1181
+ "alpaca",
1182
+ "amphibian",
1183
+ "anaconda",
1184
+ "angelfish",
1185
+ "anglerfish",
1186
+ "ant",
1187
+ "anteater",
1188
+ "antelope",
1189
+ "antlion",
1190
+ "ape",
1191
+ "aphid",
1192
+ "armadillo",
1193
+ "asp",
1194
+ "baboon",
1195
+ "badger",
1196
+ "bandicoot",
1197
+ "barnacle",
1198
+ "barracuda",
1199
+ "basilisk",
1200
+ "bass",
1201
+ "bat",
1202
+ "bear",
1203
+ "beaver",
1204
+ "bedbug",
1205
+ "bee",
1206
+ "beetle",
1207
+ "bird",
1208
+ "bison",
1209
+ "blackbird",
1210
+ "boa",
1211
+ "boar",
1212
+ "bobcat",
1213
+ "bobolink",
1214
+ "bonobo",
1215
+ "booby",
1216
+ "bovid",
1217
+ "bug",
1218
+ "butterfly",
1219
+ "buzzard",
1220
+ "camel",
1221
+ "canid",
1222
+ "capybara",
1223
+ "cardinal",
1224
+ "caribou",
1225
+ "carp",
1226
+ "cat",
1227
+ "caterpillar",
1228
+ "catfish",
1229
+ "catshark",
1230
+ "cattle",
1231
+ "centipede",
1232
+ "cephalopod",
1233
+ "chameleon",
1234
+ "cheetah",
1235
+ "chickadee",
1236
+ "chicken",
1237
+ "chimpanzee",
1238
+ "chinchilla",
1239
+ "chipmunk",
1240
+ "cicada",
1241
+ "clam",
1242
+ "clownfish",
1243
+ "cobra",
1244
+ "cockroach",
1245
+ "cod",
1246
+ "condor",
1247
+ "constrictor",
1248
+ "coral",
1249
+ "cougar",
1250
+ "cow",
1251
+ "coyote",
1252
+ "crab",
1253
+ "crane",
1254
+ "crawdad",
1255
+ "crayfish",
1256
+ "cricket",
1257
+ "crocodile",
1258
+ "crow",
1259
+ "cuckoo",
1260
+ "damselfly",
1261
+ "deer",
1262
+ "dingo",
1263
+ "dinosaur",
1264
+ "dog",
1265
+ "dolphin",
1266
+ "donkey",
1267
+ "dormouse",
1268
+ "dove",
1269
+ "dragon",
1270
+ "dragonfly",
1271
+ "duck",
1272
+ "eagle",
1273
+ "earthworm",
1274
+ "earwig",
1275
+ "echidna",
1276
+ "eel",
1277
+ "egret",
1278
+ "elephant",
1279
+ "elk",
1280
+ "emu",
1281
+ "ermine",
1282
+ "falcon",
1283
+ "ferret",
1284
+ "finch",
1285
+ "firefly",
1286
+ "fish",
1287
+ "flamingo",
1288
+ "flea",
1289
+ "fly",
1290
+ "flyingfish",
1291
+ "fowl",
1292
+ "fox",
1293
+ "frog",
1294
+ "gamefowl",
1295
+ "gazelle",
1296
+ "gecko",
1297
+ "gerbil",
1298
+ "gibbon",
1299
+ "giraffe",
1300
+ "goat",
1301
+ "goldfish",
1302
+ "goose",
1303
+ "gopher",
1304
+ "gorilla",
1305
+ "grasshopper",
1306
+ "grouse",
1307
+ "guan",
1308
+ "guanaco",
1309
+ "guineafowl",
1310
+ "gull",
1311
+ "guppy",
1312
+ "haddock",
1313
+ "halibut",
1314
+ "hamster",
1315
+ "hare",
1316
+ "harrier",
1317
+ "hawk",
1318
+ "hedgehog",
1319
+ "heron",
1320
+ "herring",
1321
+ "hippopotamus",
1322
+ "hookworm",
1323
+ "hornet",
1324
+ "horse",
1325
+ "hoverfly",
1326
+ "hummingbird",
1327
+ "hyena",
1328
+ "iguana",
1329
+ "impala",
1330
+ "jackal",
1331
+ "jaguar",
1332
+ "jay",
1333
+ "jellyfish",
1334
+ "kangaroo",
1335
+ "kingfisher",
1336
+ "kite",
1337
+ "kiwi",
1338
+ "koala",
1339
+ "koi",
1340
+ "krill",
1341
+ "ladybug",
1342
+ "lamprey",
1343
+ "lark",
1344
+ "leech",
1345
+ "lemming",
1346
+ "lemur",
1347
+ "leopard",
1348
+ "leopon",
1349
+ "limpet",
1350
+ "lion",
1351
+ "lizard",
1352
+ "llama",
1353
+ "lobster",
1354
+ "locust",
1355
+ "loon",
1356
+ "louse",
1357
+ "lungfish",
1358
+ "lynx",
1359
+ "macaw",
1360
+ "mackerel",
1361
+ "magpie",
1362
+ "mammal",
1363
+ "manatee",
1364
+ "mandrill",
1365
+ "marlin",
1366
+ "marmoset",
1367
+ "marmot",
1368
+ "marsupial",
1369
+ "marten",
1370
+ "mastodon",
1371
+ "meadowlark",
1372
+ "meerkat",
1373
+ "mink",
1374
+ "minnow",
1375
+ "mite",
1376
+ "mockingbird",
1377
+ "mole",
1378
+ "mollusk",
1379
+ "mongoose",
1380
+ "monkey",
1381
+ "moose",
1382
+ "mosquito",
1383
+ "moth",
1384
+ "mouse",
1385
+ "mule",
1386
+ "muskox",
1387
+ "narwhal",
1388
+ "newt",
1389
+ "nightingale",
1390
+ "ocelot",
1391
+ "octopus",
1392
+ "opossum",
1393
+ "orangutan",
1394
+ "orca",
1395
+ "ostrich",
1396
+ "otter",
1397
+ "owl",
1398
+ "ox",
1399
+ "panda",
1400
+ "panther",
1401
+ "parakeet",
1402
+ "parrot",
1403
+ "parrotfish",
1404
+ "partridge",
1405
+ "peacock",
1406
+ "peafowl",
1407
+ "pelican",
1408
+ "penguin",
1409
+ "perch",
1410
+ "pheasant",
1411
+ "pig",
1412
+ "pigeon",
1413
+ "pike",
1414
+ "pinniped",
1415
+ "piranha",
1416
+ "planarian",
1417
+ "platypus",
1418
+ "pony",
1419
+ "porcupine",
1420
+ "porpoise",
1421
+ "possum",
1422
+ "prawn",
1423
+ "primate",
1424
+ "ptarmigan",
1425
+ "puffin",
1426
+ "puma",
1427
+ "python",
1428
+ "quail",
1429
+ "quelea",
1430
+ "quokka",
1431
+ "rabbit",
1432
+ "raccoon",
1433
+ "rat",
1434
+ "rattlesnake",
1435
+ "raven",
1436
+ "reindeer",
1437
+ "reptile",
1438
+ "rhinoceros",
1439
+ "roadrunner",
1440
+ "rodent",
1441
+ "rook",
1442
+ "rooster",
1443
+ "roundworm",
1444
+ "sailfish",
1445
+ "salamander",
1446
+ "salmon",
1447
+ "sawfish",
1448
+ "scallop",
1449
+ "scorpion",
1450
+ "seahorse",
1451
+ "shark",
1452
+ "sheep",
1453
+ "shrew",
1454
+ "shrimp",
1455
+ "silkworm",
1456
+ "silverfish",
1457
+ "skink",
1458
+ "skunk",
1459
+ "sloth",
1460
+ "slug",
1461
+ "smelt",
1462
+ "snail",
1463
+ "snake",
1464
+ "snipe",
1465
+ "sole",
1466
+ "sparrow",
1467
+ "spider",
1468
+ "spoonbill",
1469
+ "squid",
1470
+ "squirrel",
1471
+ "starfish",
1472
+ "stingray",
1473
+ "stoat",
1474
+ "stork",
1475
+ "sturgeon",
1476
+ "swallow",
1477
+ "swan",
1478
+ "swift",
1479
+ "swordfish",
1480
+ "swordtail",
1481
+ "tahr",
1482
+ "takin",
1483
+ "tapir",
1484
+ "tarantula",
1485
+ "tarsier",
1486
+ "termite",
1487
+ "tern",
1488
+ "thrush",
1489
+ "tick",
1490
+ "tiger",
1491
+ "tiglon",
1492
+ "toad",
1493
+ "tortoise",
1494
+ "toucan",
1495
+ "trout",
1496
+ "tuna",
1497
+ "turkey",
1498
+ "turtle",
1499
+ "tyrannosaurus",
1500
+ "unicorn",
1501
+ "urial",
1502
+ "vicuna",
1503
+ "viper",
1504
+ "vole",
1505
+ "vulture",
1506
+ "wallaby",
1507
+ "walrus",
1508
+ "warbler",
1509
+ "wasp",
1510
+ "weasel",
1511
+ "whale",
1512
+ "whippet",
1513
+ "whitefish",
1514
+ "wildcat",
1515
+ "wildebeest",
1516
+ "wildfowl",
1517
+ "wolf",
1518
+ "wolverine",
1519
+ "wombat",
1520
+ "woodpecker",
1521
+ "worm",
1522
+ "wren",
1523
+ "yak",
1524
+ "zebra",
195
1525
  ];
196
1526
 
197
1527
  function capitalize(s: string): string {
198
- return s.charAt(0).toUpperCase() + s.slice(1);
1528
+ return s.charAt(0).toUpperCase() + s.slice(1);
199
1529
  }
200
1530
 
201
1531
  let usedNames = new Set<string>();
@@ -205,43 +1535,43 @@ let usedNames = new Set<string>();
205
1535
  * Falls back to numeric suffix if all combinations exhausted.
206
1536
  */
207
1537
  export function generateTaskName(): string {
208
- // Try random combinations first (50 attempts)
209
- for (let attempt = 0; attempt < 50; attempt++) {
210
- const adj = ADJECTIVES[Math.floor(Math.random() * ADJECTIVES.length)];
211
- const noun = NOUNS[Math.floor(Math.random() * NOUNS.length)];
212
- const name = `${capitalize(adj)}${capitalize(noun)}`;
213
- if (!usedNames.has(name)) {
214
- usedNames.add(name);
215
- return name;
216
- }
217
- }
1538
+ // Try random combinations first (50 attempts)
1539
+ for (let attempt = 0; attempt < 50; attempt++) {
1540
+ const adj = ADJECTIVES[Math.floor(Math.random() * ADJECTIVES.length)];
1541
+ const noun = NOUNS[Math.floor(Math.random() * NOUNS.length)];
1542
+ const name = `${capitalize(adj)}${capitalize(noun)}`;
1543
+ if (!usedNames.has(name)) {
1544
+ usedNames.add(name);
1545
+ return name;
1546
+ }
1547
+ }
218
1548
 
219
- // Exhaustive search if random fails
220
- for (const adj of ADJECTIVES) {
221
- for (const noun of NOUNS) {
222
- const name = `${capitalize(adj)}${capitalize(noun)}`;
223
- if (!usedNames.has(name)) {
224
- usedNames.add(name);
225
- return name;
226
- }
227
- }
228
- }
1549
+ // Exhaustive search if random fails
1550
+ for (const adj of ADJECTIVES) {
1551
+ for (const noun of NOUNS) {
1552
+ const name = `${capitalize(adj)}${capitalize(noun)}`;
1553
+ if (!usedNames.has(name)) {
1554
+ usedNames.add(name);
1555
+ return name;
1556
+ }
1557
+ }
1558
+ }
229
1559
 
230
- // All 426k combinations used, add numeric suffix
231
- let counter = 0;
232
- while (true) {
233
- const name = `Task${counter}`;
234
- if (!usedNames.has(name)) {
235
- usedNames.add(name);
236
- return name;
237
- }
238
- counter++;
239
- }
1560
+ // All 426k combinations used, add numeric suffix
1561
+ let counter = 0;
1562
+ while (true) {
1563
+ const name = `Task${counter}`;
1564
+ if (!usedNames.has(name)) {
1565
+ usedNames.add(name);
1566
+ return name;
1567
+ }
1568
+ counter++;
1569
+ }
240
1570
  }
241
1571
 
242
1572
  /**
243
1573
  * Reset name generator state (for testing).
244
1574
  */
245
1575
  export function resetTaskNames(): void {
246
- usedNames = new Set<string>();
1576
+ usedNames = new Set<string>();
247
1577
  }