* 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.
If an cell was attempted several hours ago and never resolved, it crashes the UI because we try to render thousands of log messages once a second (eg. https://app.openpipe.ai/experiments/372d0827-186e-4a7d-a8a6-1bf7050eb5fd) We should probably have a different UI for cells that have hung for a long time to let you know you should just retry, but this quick fix should work for now.
This probably fixes the build that I broke in https://github.com/OpenPipe/OpenPipe/pull/149. However, there's a small chance that it fixes it enough to deploy, but not enough to actually work. That would be bad, so not merging until I have time to monitor the deploy.
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.