Skip to content

Commit eaf7bfa

Browse files
author
Brian Genisio
committed
Merge commit upstream v0.7.8
2 parents e876a4e + f7777a2 commit eaf7bfa

File tree

742 files changed

+55667
-24546
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

742 files changed

+55667
-24546
lines changed

.env.example

Lines changed: 64 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,11 @@ DOMAIN_CLIENT=http://localhost:3080
2020
DOMAIN_SERVER=http://localhost:3080
2121

2222
NO_INDEX=true
23+
# Use the address that is at most n number of hops away from the Express application.
24+
# req.socket.remoteAddress is the first hop, and the rest are looked for in the X-Forwarded-For header from right to left.
25+
# A value of 0 means that the first untrusted address would be req.socket.remoteAddress, i.e. there is no reverse proxy.
26+
# Defaulted to 1.
27+
TRUST_PROXY=1
2328

2429
#===============#
2530
# JSON Logging #
@@ -90,7 +95,7 @@ PROXY=
9095
#============#
9196

9297
# ANTHROPIC_API_KEY=user_provided
93-
# ANTHROPIC_MODELS=claude-3-5-haiku-20241022,claude-3-5-sonnet-20241022,claude-3-5-sonnet-latest,claude-3-5-sonnet-20240620,claude-3-opus-20240229,claude-3-sonnet-20240229,claude-3-haiku-20240307,claude-2.1,claude-2,claude-1.2,claude-1,claude-1-100k,claude-instant-1,claude-instant-1-100k
98+
# ANTHROPIC_MODELS=claude-3-7-sonnet-latest,claude-3-7-sonnet-20250219,claude-3-5-haiku-20241022,claude-3-5-sonnet-20241022,claude-3-5-sonnet-latest,claude-3-5-sonnet-20240620,claude-3-opus-20240229,claude-3-sonnet-20240229,claude-3-haiku-20240307,claude-2.1,claude-2,claude-1.2,claude-1,claude-1-100k,claude-instant-1,claude-instant-1-100k
9499
# ANTHROPIC_REVERSE_PROXY=
95100

96101
#============#
@@ -144,12 +149,12 @@ PROXY=
144149
# GOOGLE_AUTH_HEADER=true
145150

146151
# Gemini API (AI Studio)
147-
# GOOGLE_MODELS=gemini-2.0-flash-exp,gemini-2.0-flash-thinking-exp-1219,gemini-exp-1121,gemini-exp-1114,gemini-1.5-flash-latest,gemini-1.0-pro,gemini-1.0-pro-001,gemini-1.0-pro-latest,gemini-1.0-pro-vision-latest,gemini-1.5-pro-latest,gemini-pro,gemini-pro-vision
152+
# GOOGLE_MODELS=gemini-2.5-pro-preview-05-06,gemini-2.5-flash-preview-04-17,gemini-2.0-flash-001,gemini-2.0-flash-exp,gemini-2.0-flash-lite-001,gemini-1.5-pro-002,gemini-1.5-flash-002
148153

149154
# Vertex AI
150-
# GOOGLE_MODELS=gemini-1.5-flash-preview-0514,gemini-1.5-pro-preview-0514,gemini-1.0-pro-vision-001,gemini-1.0-pro-002,gemini-1.0-pro-001,gemini-pro-vision,gemini-1.0-pro
155+
# GOOGLE_MODELS=gemini-2.5-pro-preview-05-06,gemini-2.5-flash-preview-04-17,gemini-2.0-flash-001,gemini-2.0-flash-exp,gemini-2.0-flash-lite-001,gemini-1.5-pro-002,gemini-1.5-flash-002
151156

152-
# GOOGLE_TITLE_MODEL=gemini-pro
157+
# GOOGLE_TITLE_MODEL=gemini-2.0-flash-lite-001
153158

154159
# GOOGLE_LOC=us-central1
155160

@@ -177,7 +182,7 @@ PROXY=
177182
#============#
178183

179184
# OPENAI_API_KEY=user_provided
180-
# OPENAI_MODELS=gpt-4o
185+
# OPENAI_MODELS=o1,o1-mini,o1-preview,gpt-4o,gpt-4.5-preview,chatgpt-4o-latest,gpt-4o-mini,gpt-3.5-turbo-0125,gpt-3.5-turbo-0301,gpt-3.5-turbo,gpt-4,gpt-4-0613,gpt-4-vision-preview,gpt-3.5-turbo-0613,gpt-3.5-turbo-16k-0613,gpt-4-0125-preview,gpt-4-turbo-preview,gpt-4-1106-preview,gpt-3.5-turbo-1106,gpt-3.5-turbo-instruct,gpt-3.5-turbo-instruct-0914,gpt-3.5-turbo-16k
181186

182187
# DEBUG_OPENAI=false
183188

@@ -211,12 +216,6 @@ PROXY=
211216
# More info, including how to enable use of Assistants with Azure here:
212217
# https://www.librechat.ai/docs/configuration/librechat_yaml/ai_endpoints/azure#using-assistants-with-azure
213218

214-
#============#
215-
# OpenRouter #
216-
#============#
217-
# !!!Warning: Use the variable above instead of this one. Using this one will override the OpenAI endpoint
218-
# OPENROUTER_API_KEY=
219-
220219
#============#
221220
# Plugins #
222221
#============#
@@ -239,6 +238,14 @@ AZURE_AI_SEARCH_SEARCH_OPTION_QUERY_TYPE=
239238
AZURE_AI_SEARCH_SEARCH_OPTION_TOP=
240239
AZURE_AI_SEARCH_SEARCH_OPTION_SELECT=
241240

241+
# OpenAI Image Tools Customization
242+
#----------------
243+
# IMAGE_GEN_OAI_DESCRIPTION_WITH_FILES=Custom description for image generation tool when files are present
244+
# IMAGE_GEN_OAI_DESCRIPTION_NO_FILES=Custom description for image generation tool when no files are present
245+
# IMAGE_EDIT_OAI_DESCRIPTION=Custom description for image editing tool
246+
# IMAGE_GEN_OAI_PROMPT_DESCRIPTION=Custom prompt description for image generation tool
247+
# IMAGE_EDIT_OAI_PROMPT_DESCRIPTION=Custom prompt description for image editing tool
248+
242249
# DALL·E
243250
#----------------
244251
# DALLE_API_KEY=
@@ -256,6 +263,13 @@ AZURE_AI_SEARCH_SEARCH_OPTION_SELECT=
256263
# DALLE3_AZURE_API_VERSION=
257264
# DALLE2_AZURE_API_VERSION=
258265

266+
# Flux
267+
#-----------------
268+
FLUX_API_BASE_URL=https://api.us1.bfl.ai
269+
# FLUX_API_BASE_URL = 'https://api.bfl.ml';
270+
271+
# Get your API key at https://api.us1.bfl.ai/auth/profile
272+
# FLUX_API_KEY=
259273

260274
# Google
261275
#-----------------
@@ -299,6 +313,10 @@ MEILI_NO_ANALYTICS=true
299313
MEILI_HOST=http://0.0.0.0:7700
300314
MEILI_MASTER_KEY=DrhYf7zENyR6AlUCKmnz0eYASOQdl6zxH7s7MKFSfFCt
301315

316+
# Optional: Disable indexing, useful in a multi-node setup
317+
# where only one instance should perform an index sync.
318+
# MEILI_NO_SYNC=true
319+
302320
#==================================================#
303321
# Speech to Text & Text to Speech #
304322
#==================================================#
@@ -361,7 +379,7 @@ ILLEGAL_MODEL_REQ_SCORE=5
361379
# Balance #
362380
#========================#
363381

364-
CHECK_BALANCE=false
382+
# CHECK_BALANCE=false
365383
# START_BALANCE=20000 # note: the number of tokens that will be credited after registration.
366384

367385
#========================#
@@ -396,7 +414,7 @@ FACEBOOK_CALLBACK_URL=/oauth/facebook/callback
396414
GITHUB_CLIENT_ID=
397415
GITHUB_CLIENT_SECRET=
398416
GITHUB_CALLBACK_URL=/oauth/github/callback
399-
# GitHub Eenterprise
417+
# GitHub Enterprise
400418
# GITHUB_ENTERPRISE_BASE_URL=
401419
# GITHUB_ENTERPRISE_USER_AGENT=
402420

@@ -429,15 +447,19 @@ OPENID_NAME_CLAIM=
429447

430448
OPENID_BUTTON_LABEL=
431449
OPENID_IMAGE_URL=
450+
# Set to true to automatically redirect to the OpenID provider when a user visits the login page
451+
# This will bypass the login form completely for users, only use this if OpenID is your only authentication method
452+
OPENID_AUTO_REDIRECT=false
432453

433454
# LDAP
434455
LDAP_URL=
435456
LDAP_BIND_DN=
436457
LDAP_BIND_CREDENTIALS=
437458
LDAP_USER_SEARCH_BASE=
438-
LDAP_SEARCH_FILTER=mail={{username}}
459+
#LDAP_SEARCH_FILTER="mail="
439460
LDAP_CA_CERT_PATH=
440461
# LDAP_TLS_REJECT_UNAUTHORIZED=
462+
# LDAP_STARTTLS=
441463
# LDAP_LOGIN_USES_USERNAME=true
442464
# LDAP_ID=
443465
# LDAP_USERNAME=
@@ -470,6 +492,24 @@ FIREBASE_STORAGE_BUCKET=
470492
FIREBASE_MESSAGING_SENDER_ID=
471493
FIREBASE_APP_ID=
472494

495+
#========================#
496+
# S3 AWS Bucket #
497+
#========================#
498+
499+
AWS_ENDPOINT_URL=
500+
AWS_ACCESS_KEY_ID=
501+
AWS_SECRET_ACCESS_KEY=
502+
AWS_REGION=
503+
AWS_BUCKET_NAME=
504+
505+
#========================#
506+
# Azure Blob Storage #
507+
#========================#
508+
509+
AZURE_STORAGE_CONNECTION_STRING=
510+
AZURE_STORAGE_PUBLIC_ACCESS=false
511+
AZURE_CONTAINER_NAME=files
512+
473513
#========================#
474514
# Shared Links #
475515
#========================#
@@ -502,16 +542,23 @@ HELP_AND_FAQ_URL=https://librechat.ai
502542
# Google tag manager id
503543
#ANALYTICS_GTM_ID=user provided google tag manager id
504544

545+
#===============#
546+
# REDIS Options #
547+
#===============#
548+
549+
# REDIS_URI=10.10.10.10:6379
550+
# USE_REDIS=true
551+
552+
# USE_REDIS_CLUSTER=true
553+
# REDIS_CA=/path/to/ca.crt
554+
505555
#==================================================#
506556
# Others #
507557
#==================================================#
508558
# You should leave the following commented out #
509559

510560
# NODE_ENV=
511561

512-
# REDIS_URI=
513-
# USE_REDIS=
514-
515562
# E2E_USER_EMAIL=
516563
# E2E_USER_PASSWORD=
517564

.github/CONTRIBUTING.md

Lines changed: 35 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -24,22 +24,40 @@ Project maintainers have the right and responsibility to remove, edit, or reject
2424

2525
## To contribute to this project, please adhere to the following guidelines:
2626

27-
## 1. Development notes
28-
29-
1. Before starting work, make sure your main branch has the latest commits with `npm run update`
30-
2. Run linting command to find errors: `npm run lint`. Alternatively, ensure husky pre-commit checks are functioning.
27+
## 1. Development Setup
28+
29+
1. Use Node.JS 20.x.
30+
2. Install typescript globally: `npm i -g typescript`.
31+
3. Run `npm ci` to install dependencies.
32+
4. Build the data provider: `npm run build:data-provider`.
33+
5. Build MCP: `npm run build:mcp`.
34+
6. Build data schemas: `npm run build:data-schemas`.
35+
7. Setup and run unit tests:
36+
- Copy `.env.test`: `cp api/test/.env.test.example api/test/.env.test`.
37+
- Run backend unit tests: `npm run test:api`.
38+
- Run frontend unit tests: `npm run test:client`.
39+
8. Setup and run integration tests:
40+
- Build client: `cd client && npm run build`.
41+
- Create `.env`: `cp .env.example .env`.
42+
- Install [MongoDB Community Edition](https://www.mongodb.com/docs/manual/administration/install-community/), ensure that `mongosh` connects to your local instance.
43+
- Run: `npx install playwright`, then `npx playwright install`.
44+
- Copy `config.local`: `cp e2e/config.local.example.ts e2e/config.local.ts`.
45+
- Copy `librechat.yaml`: `cp librechat.example.yaml librechat.yaml`.
46+
- Run: `npm run e2e`.
47+
48+
## 2. Development Notes
49+
50+
1. Before starting work, make sure your main branch has the latest commits with `npm run update`.
51+
3. Run linting command to find errors: `npm run lint`. Alternatively, ensure husky pre-commit checks are functioning.
3152
3. After your changes, reinstall packages in your current branch using `npm run reinstall` and ensure everything still works.
3253
- Restart the ESLint server ("ESLint: Restart ESLint Server" in VS Code command bar) and your IDE after reinstalling or updating.
3354
4. Clear web app localStorage and cookies before and after changes.
34-
5. For frontend changes:
35-
- Install typescript globally: `npm i -g typescript`.
36-
- Compile typescript before and after changes to check for introduced errors: `cd client && tsc --noEmit`.
37-
6. Run tests locally:
38-
- Backend unit tests: `npm run test:api`
39-
- Frontend unit tests: `npm run test:client`
40-
- Integration tests: `npm run e2e` (requires playwright installed, `npx install playwright`)
55+
5. For frontend changes, compile typescript before and after changes to check for introduced errors: `cd client && npm run build`.
56+
6. Run backend unit tests: `npm run test:api`.
57+
7. Run frontend unit tests: `npm run test:client`.
58+
8. Run integration tests: `npm run e2e`.
4159

42-
## 2. Git Workflow
60+
## 3. Git Workflow
4361

4462
We utilize a GitFlow workflow to manage changes to this project's codebase. Follow these general steps when contributing code:
4563

@@ -49,7 +67,7 @@ We utilize a GitFlow workflow to manage changes to this project's codebase. Foll
4967
4. Submit a pull request with a clear and concise description of your changes and the reasons behind them.
5068
5. We will review your pull request, provide feedback as needed, and eventually merge the approved changes into the main branch.
5169

52-
## 3. Commit Message Format
70+
## 4. Commit Message Format
5371

5472
We follow the [semantic format](https://gist.github.com/joshbuchea/6f47e86d2510bce28f8e7f42ae84c716) for commit messages.
5573

@@ -76,7 +94,7 @@ feat: add hat wobble
7694
```
7795

7896

79-
## 4. Pull Request Process
97+
## 5. Pull Request Process
8098

8199
When submitting a pull request, please follow these guidelines:
82100

@@ -91,7 +109,7 @@ Ensure that your changes meet the following criteria:
91109
- The commit history is clean and easy to follow. You can use `git rebase` or `git merge --squash` to clean your commit history before submitting the pull request.
92110
- The pull request description clearly outlines the changes and the reasons behind them. Be sure to include the steps to test the pull request.
93111

94-
## 5. Naming Conventions
112+
## 6. Naming Conventions
95113

96114
Apply the following naming conventions to branches, labels, and other Git-related entities:
97115

@@ -100,7 +118,7 @@ Apply the following naming conventions to branches, labels, and other Git-relate
100118
- **JS/TS:** Directories and file names: Descriptive and camelCase. First letter uppercased for React files (e.g., `helperFunction.ts, ReactComponent.tsx`).
101119
- **Docs:** Directories and file names: Descriptive and snake_case (e.g., `config_files.md`).
102120

103-
## 6. TypeScript Conversion
121+
## 7. TypeScript Conversion
104122

105123
1. **Original State**: The project was initially developed entirely in JavaScript (JS).
106124

@@ -126,7 +144,7 @@ Apply the following naming conventions to branches, labels, and other Git-relate
126144

127145
- **Current Stance**: At present, this backend transition is of lower priority and might not be pursued.
128146

129-
## 7. Module Import Conventions
147+
## 8. Module Import Conventions
130148

131149
- `npm` packages first,
132150
- from shortest line (top) to longest (bottom)

.github/ISSUE_TEMPLATE/BUG-REPORT.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,8 @@ body:
7979
8080
For UI-related issues, browser console logs can be very helpful. You can provide these as screenshots or paste the text here.
8181
render: shell
82+
validations:
83+
required: true
8284
- type: textarea
8385
id: screenshots
8486
attributes:
Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
name: Locize Translation Access Request
2+
description: Request access to an additional language in Locize for LibreChat translations.
3+
title: "Locize Access Request: "
4+
labels: ["🌍 i18n", "🔑 access request"]
5+
body:
6+
- type: markdown
7+
attributes:
8+
value: |
9+
Thank you for your interest in contributing to LibreChat translations!
10+
Please fill out the form below to request access to an additional language in **Locize**.
11+
12+
**🔗 Available Languages:** [View the list here](https://www.librechat.ai/docs/translation)
13+
14+
**📌 Note:** Ensure that the requested language is supported before submitting your request.
15+
- type: input
16+
id: account_name
17+
attributes:
18+
label: Locize Account Name
19+
description: Please provide your Locize account name (e.g., John Doe).
20+
placeholder: e.g., John Doe
21+
validations:
22+
required: true
23+
- type: input
24+
id: language_requested
25+
attributes:
26+
label: Language Code (ISO 639-1)
27+
description: |
28+
Enter the **ISO 639-1** language code for the language you want to translate into.
29+
Example: `es` for Spanish, `zh-Hant` for Traditional Chinese.
30+
31+
**🔗 Reference:** [Available Languages](https://www.librechat.ai/docs/translation)
32+
placeholder: e.g., es
33+
validations:
34+
required: true
35+
- type: checkboxes
36+
id: agreement
37+
attributes:
38+
label: Agreement
39+
description: By submitting this request, you confirm that you will contribute responsibly and adhere to the project guidelines.
40+
options:
41+
- label: I agree to use my access solely for contributing to LibreChat translations.
42+
required: true

.github/ISSUE_TEMPLATE/QUESTION.yml

Lines changed: 0 additions & 50 deletions
This file was deleted.

0 commit comments

Comments
 (0)