Like, I don't see any reason why the generated API should mention userHelpers
Current behavior for Convex generated code is to import any TS file in the convex/ directory in _generated/api, regardless of whether that file contains convex functions itself or not. This is mostly to make the code generation simpler (i.e., only require listing files in the directory vs. actually evaluating all of them to check for convex functions), and could potentially change someday.
But if you have code that you want to share between client and server, I generally put that in its own directory (e.g. common or shared) and import that from both the convex/ code and my frontend code (and it'll probably require you to add common to your tsconfig.app.json) .
I'm not super familiar with the tsconfig setup here, but I think it's generally easier to manage things if the only imports from convex from the frontend code is the _generated/api file