2
0

Introduce a new high-performing standalone chat API (#1200)

Closes #1154

<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit

- **New Features**
	- Added authentication functionality for user sessions in chat API.
- Introduced chat-related API endpoints for starting, previewing, and
continuing chat sessions, and streaming messages.
- Implemented WhatsApp API webhook handling for receiving and processing
messages.
- Added environment variable `NEXT_PUBLIC_CHAT_API_URL` for chat API URL
configuration.

- **Bug Fixes**
	- Adjusted file upload logic to correctly determine the API host.
	- Fixed message streaming URL in chat integration with OpenAI.

- **Documentation**
- Updated guides for creating blocks, local installation, self-hosting,
and deployment to use `bun` instead of `pnpm`.

- **Refactor**
	- Refactored chat API functionalities to use modular architecture.
- Simplified client log saving and session update functionalities by
using external functions.
	- Transitioned package management and workflow commands to use `bun`.

- **Chores**
- Switched to `bun` for package management in Dockerfiles and GitHub
workflows.
	- Added new Dockerfile for chat API service setup with Bun framework.
	- Updated `.prettierignore` and documentation with new commands.

- **Style**
	- No visible changes to end-users.

- **Tests**
	- No visible changes to end-users.

- **Revert**
	- No reverts in this release.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
This commit is contained in:
Baptiste Arnaud
2024-03-21 10:23:23 +01:00
committed by GitHub
parent 5b9176708c
commit 2fcf83c529
51 changed files with 1446 additions and 494 deletions

17
packages/env/env.ts vendored
View File

@ -46,7 +46,9 @@ const boolean = z.enum(['true', 'false']).transform((value) => value === 'true')
const baseEnv = {
server: {
NODE_ENV: z.enum(['development', 'production', 'test']).optional(),
NODE_ENV: z
.enum(['development', 'staging', 'production', 'test'])
.optional(),
DATABASE_URL: z
.string()
.url()
@ -99,6 +101,15 @@ const baseEnv = {
),
NEXT_PUBLIC_ONBOARDING_TYPEBOT_ID: z.string().min(1).optional(),
NEXT_PUBLIC_BOT_FILE_UPLOAD_MAX_SIZE: z.coerce.number().optional(),
NEXT_PUBLIC_CHAT_API_URL: z.string().url().optional(),
// To remove to deploy chat API for all typebots
NEXT_PUBLIC_USE_EXPERIMENTAL_CHAT_API_ON: z
.string()
.min(1)
.transform((val) =>
val.split('/').map((s) => s.split(',').map((s) => s.split('|')))
)
.optional(),
NEXT_PUBLIC_VIEWER_404_TITLE: z.string().optional().default('404'),
NEXT_PUBLIC_VIEWER_404_SUBTITLE: z
.string()
@ -114,6 +125,10 @@ const baseEnv = {
NEXT_PUBLIC_BOT_FILE_UPLOAD_MAX_SIZE: getRuntimeVariable(
'NEXT_PUBLIC_BOT_FILE_UPLOAD_MAX_SIZE'
),
NEXT_PUBLIC_CHAT_API_URL: getRuntimeVariable('NEXT_PUBLIC_CHAT_API_URL'),
NEXT_PUBLIC_USE_EXPERIMENTAL_CHAT_API_ON: getRuntimeVariable(
'NEXT_PUBLIC_USE_EXPERIMENTAL_CHAT_API_ON'
),
NEXT_PUBLIC_VIEWER_404_TITLE: getRuntimeVariable(
'NEXT_PUBLIC_VIEWER_404_TITLE'
),