22,056 is not about 30,000. Per scc:
Language Files Lines Blanks Comments Code
─────────────────────────────────────────────────────────
TypeScript 760 109110 14500 7397 87213
JSON 41 22056 6 0 22050
Markdown 56 7150 2086 0 5064
YAML 33 3965 406 208 3351
... and many more with fewer than 1k lines
Regarding "loads of assumptions," it's hard to tell how much of this is vibecoded slop (definitely non-zero looking at the commit log), but I don't think it's that outrageous to claim 87k sloc is too much for a textbox and an API wrapper.