Previously we were opening a new database connection for each task we added. Not a problem at small scale but kinda overwhelming for Postgres now that we have more usage.
* Allow user invitations
* Restyle inviting members
* Remove annoying comment
* Add page for accepting an invitation
* Send invitation email with Brevo
* Prevent admins from removing personal project users
* Mark access ceontrol for cancelProjectInvitation
* Make RadioGroup controlled
* Shorten form helper text
* Use nodemailer to send emails
* Update .env.example
* Fix null case for tag comparisons
* Change debounce time to 500ms
* Add NOT_CONTAINS
* Avoid sql injection
* Store filters by id
* Fix chained NOT_CONTAINS
Ok so this is still pretty rough, and notably there's no reporting for streaming. But for non-streaming requests I've verified that this does in fact report requests locally.
Auth logic isn't shared between the clients anyway, so co-locating them is confusing since you can't use the same clients to call both. This also makes the codegen clients less verbose.
This makes it so we're using our own openpipe client for all OpenAI calls from the OpenPipe app.
The client doesn't do anything at the moment beyond proxying to the OpenAI lib. But this infra work should make it easier to quickly iterate on the client and test the changes in our own app.
* Rename prompt and completion tokens to input and output tokens
* Add getUsage function
* Record model and cost when reporting log
* Remove unused imports
* Move UsageGraph to its own component
* Standardize model response fields
* Fix types
We'll probably need a concept of organizations at some point in the future, but in practice the way we're using these in the codebase right now is as a project, so this renames it to that to avoid confusion.