Skip to content

Commit 0888f3d

Browse files
authored
Merge branch 'danny-avila:main' into new/s3-support-path-style-urls
2 parents e28e996 + da10815 commit 0888f3d

File tree

1,000 files changed

+65616
-27020
lines changed

Some content is hidden

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

1,000 files changed

+65616
-27020
lines changed

.devcontainer/docker-compose.yml

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,7 @@ services:
2020
environment:
2121
- HOST=0.0.0.0
2222
- MONGO_URI=mongodb://mongodb:27017/LibreChat
23-
# - CHATGPT_REVERSE_PROXY=http://host.docker.internal:8080/api/conversation # if you are hosting your own chatgpt reverse proxy with docker
24-
# - OPENAI_REVERSE_PROXY=http://host.docker.internal:8070/v1/chat/completions # if you are hosting your own chatgpt reverse proxy with docker
23+
# - OPENAI_REVERSE_PROXY=http://host.docker.internal:8070/v1
2524
- MEILI_HOST=http://meilisearch:7700
2625

2726
# Runs app on the same network as the service container, allows "forwardPorts" in devcontainer.json function.

.env.example

Lines changed: 4 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -129,7 +129,6 @@ ANTHROPIC_API_KEY=user_provided
129129
# AZURE_OPENAI_API_VERSION= # Deprecated
130130
# AZURE_OPENAI_API_COMPLETIONS_DEPLOYMENT_NAME= # Deprecated
131131
# AZURE_OPENAI_API_EMBEDDINGS_DEPLOYMENT_NAME= # Deprecated
132-
# PLUGINS_USE_AZURE="true" # Deprecated
133132

134133
#=================#
135134
# AWS Bedrock #
@@ -230,14 +229,6 @@ ASSISTANTS_API_KEY=user_provided
230229
# More info, including how to enable use of Assistants with Azure here:
231230
# https://www.librechat.ai/docs/configuration/librechat_yaml/ai_endpoints/azure#using-assistants-with-azure
232231

233-
#============#
234-
# Plugins #
235-
#============#
236-
237-
# PLUGIN_MODELS=gpt-4o,gpt-4o-mini,gpt-4,gpt-4-turbo-preview,gpt-4-0125-preview,gpt-4-1106-preview,gpt-4-0613,gpt-3.5-turbo,gpt-3.5-turbo-0125,gpt-3.5-turbo-1106,gpt-3.5-turbo-0613
238-
239-
DEBUG_PLUGINS=true
240-
241232
CREDS_KEY=f34be427ebb29de8d88c107a71546019685ed8b241d8f2ed00c3df97ad2566f0
242233
CREDS_IV=e2341419ec3dd3d19b13a1a87fafcbfb
243234

@@ -785,3 +776,7 @@ OPENWEATHER_API_KEY=
785776

786777
# Cache connection status checks for this many milliseconds to avoid expensive verification
787778
# MCP_CONNECTION_CHECK_TTL=60000
779+
780+
# Skip code challenge method validation (e.g., for AWS Cognito that supports S256 but doesn't advertise it)
781+
# When set to true, forces S256 code challenge even if not advertised in .well-known/openid-configuration
782+
# MCP_SKIP_CODE_CHALLENGE_CHECK=false

.github/workflows/backend-review.yml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ on:
44
branches:
55
- main
66
- dev
7+
- dev-staging
78
- release/*
89
paths:
910
- 'api/**'
@@ -71,4 +72,4 @@ jobs:
7172
run: cd packages/data-schemas && npm run test:ci
7273

7374
- name: Run @librechat/api unit tests
74-
run: cd packages/api && npm run test:ci
75+
run: cd packages/api && npm run test:ci

.github/workflows/cache-integration-tests.yml

Lines changed: 9 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ on:
55
branches:
66
- main
77
- dev
8+
- dev-staging
89
- release/*
910
paths:
1011
- 'packages/api/src/cache/**'
@@ -61,30 +62,23 @@ jobs:
6162
npm run build:data-schemas
6263
npm run build:api
6364
64-
- name: Run cache integration tests
65+
- name: Run all cache integration tests (Single Redis Node)
6566
working-directory: packages/api
6667
env:
6768
NODE_ENV: test
6869
USE_REDIS: true
70+
USE_REDIS_CLUSTER: false
6971
REDIS_URI: redis://127.0.0.1:6379
70-
REDIS_CLUSTER_URI: redis://127.0.0.1:7001,redis://127.0.0.1:7002,redis://127.0.0.1:7003
71-
run: npm run test:cache-integration:core
72+
run: npm run test:cache-integration
7273

73-
- name: Run cluster integration tests
74+
- name: Run all cache integration tests (Redis Cluster)
7475
working-directory: packages/api
7576
env:
7677
NODE_ENV: test
7778
USE_REDIS: true
78-
REDIS_URI: redis://127.0.0.1:6379
79-
run: npm run test:cache-integration:cluster
80-
81-
- name: Run mcp integration tests
82-
working-directory: packages/api
83-
env:
84-
NODE_ENV: test
85-
USE_REDIS: true
86-
REDIS_URI: redis://127.0.0.1:6379
87-
run: npm run test:cache-integration:mcp
79+
USE_REDIS_CLUSTER: true
80+
REDIS_URI: redis://127.0.0.1:7001,redis://127.0.0.1:7002,redis://127.0.0.1:7003
81+
run: npm run test:cache-integration
8882

8983
- name: Stop Redis Cluster
9084
if: always()
@@ -93,4 +87,4 @@ jobs:
9387

9488
- name: Stop Single Redis Instance
9589
if: always()
96-
run: redis-cli -p 6379 shutdown || true
90+
run: redis-cli -p 6379 shutdown || true

.github/workflows/client.yml

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -13,26 +13,32 @@ on:
1313
required: false
1414
default: 'Manual publish requested'
1515

16+
permissions:
17+
id-token: write # Required for OIDC trusted publishing
18+
contents: read
19+
1620
jobs:
1721
build-and-publish:
1822
runs-on: ubuntu-latest
23+
environment: publish # Must match npm trusted publisher config
1924
steps:
2025
- uses: actions/checkout@v4
2126

2227
- name: Use Node.js
2328
uses: actions/setup-node@v4
2429
with:
2530
node-version: '20.x'
31+
registry-url: 'https://registry.npmjs.org'
32+
33+
- name: Update npm for OIDC support
34+
run: npm install -g npm@latest # Must be 11.5.1+ for provenance
2635

2736
- name: Install client dependencies
2837
run: cd packages/client && npm ci
2938

3039
- name: Build client
3140
run: cd packages/client && npm run build
3241

33-
- name: Set up npm authentication
34-
run: echo "//registry.npmjs.org/:_authToken=${{ secrets.PUBLISH_NPM_TOKEN }}" > ~/.npmrc
35-
3642
- name: Check version change
3743
id: check
3844
working-directory: packages/client
@@ -55,4 +61,4 @@ jobs:
5561
- name: Publish
5662
if: steps.check.outputs.skip != 'true'
5763
working-directory: packages/client
58-
run: npm publish *.tgz --access public
64+
run: npm publish *.tgz --access public --provenance

.github/workflows/data-provider.yml

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,10 @@ on:
1313
required: false
1414
default: 'Manual publish requested'
1515

16+
permissions:
17+
id-token: write # Required for OIDC trusted publishing
18+
contents: read
19+
1620
jobs:
1721
build:
1822
runs-on: ubuntu-latest
@@ -27,14 +31,17 @@ jobs:
2731
publish-npm:
2832
needs: build
2933
runs-on: ubuntu-latest
34+
environment: publish # Must match npm trusted publisher config
3035
steps:
3136
- uses: actions/checkout@v4
3237
- uses: actions/setup-node@v4
3338
with:
3439
node-version: 20
3540
registry-url: 'https://registry.npmjs.org'
41+
42+
- name: Update npm for OIDC support
43+
run: npm install -g npm@latest # Must be 11.5.1+ for provenance
44+
3645
- run: cd packages/data-provider && npm ci
3746
- run: cd packages/data-provider && npm run build
38-
- run: cd packages/data-provider && npm publish
39-
env:
40-
NODE_AUTH_TOKEN: ${{secrets.NPM_TOKEN}}
47+
- run: cd packages/data-provider && npm publish --provenance

.github/workflows/data-schemas.yml

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -13,26 +13,32 @@ on:
1313
required: false
1414
default: 'Manual publish requested'
1515

16+
permissions:
17+
id-token: write # Required for OIDC trusted publishing
18+
contents: read
19+
1620
jobs:
1721
build-and-publish:
1822
runs-on: ubuntu-latest
23+
environment: publish # Must match npm trusted publisher config
1924
steps:
2025
- uses: actions/checkout@v4
2126

2227
- name: Use Node.js
2328
uses: actions/setup-node@v4
2429
with:
2530
node-version: '20.x'
31+
registry-url: 'https://registry.npmjs.org'
32+
33+
- name: Update npm for OIDC support
34+
run: npm install -g npm@latest # Must be 11.5.1+ for provenance
2635

2736
- name: Install dependencies
2837
run: cd packages/data-schemas && npm ci
2938

3039
- name: Build
3140
run: cd packages/data-schemas && npm run build
3241

33-
- name: Set up npm authentication
34-
run: echo "//registry.npmjs.org/:_authToken=${{ secrets.PUBLISH_NPM_TOKEN }}" > ~/.npmrc
35-
3642
- name: Check version change
3743
id: check
3844
working-directory: packages/data-schemas
@@ -55,4 +61,4 @@ jobs:
5561
- name: Publish
5662
if: steps.check.outputs.skip != 'true'
5763
working-directory: packages/data-schemas
58-
run: npm publish *.tgz --access public
64+
run: npm publish *.tgz --access public --provenance
Lines changed: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,66 @@
1+
name: Docker Dev Staging Images Build
2+
3+
on:
4+
workflow_dispatch:
5+
6+
jobs:
7+
build:
8+
runs-on: ubuntu-latest
9+
strategy:
10+
matrix:
11+
include:
12+
- target: api-build
13+
file: Dockerfile.multi
14+
image_name: lc-dev-staging-api
15+
- target: node
16+
file: Dockerfile
17+
image_name: lc-dev-staging
18+
19+
steps:
20+
# Check out the repository
21+
- name: Checkout
22+
uses: actions/checkout@v4
23+
24+
# Set up QEMU
25+
- name: Set up QEMU
26+
uses: docker/setup-qemu-action@v3
27+
28+
# Set up Docker Buildx
29+
- name: Set up Docker Buildx
30+
uses: docker/setup-buildx-action@v3
31+
32+
# Log in to GitHub Container Registry
33+
- name: Log in to GitHub Container Registry
34+
uses: docker/login-action@v2
35+
with:
36+
registry: ghcr.io
37+
username: ${{ github.actor }}
38+
password: ${{ secrets.GITHUB_TOKEN }}
39+
40+
# Login to Docker Hub
41+
- name: Login to Docker Hub
42+
uses: docker/login-action@v3
43+
with:
44+
username: ${{ secrets.DOCKERHUB_USERNAME }}
45+
password: ${{ secrets.DOCKERHUB_TOKEN }}
46+
47+
# Prepare the environment
48+
- name: Prepare environment
49+
run: |
50+
cp .env.example .env
51+
52+
# Build and push Docker images for each target
53+
- name: Build and push Docker images
54+
uses: docker/build-push-action@v5
55+
with:
56+
context: .
57+
file: ${{ matrix.file }}
58+
push: true
59+
tags: |
60+
ghcr.io/${{ github.repository_owner }}/${{ matrix.image_name }}:${{ github.sha }}
61+
ghcr.io/${{ github.repository_owner }}/${{ matrix.image_name }}:latest
62+
${{ secrets.DOCKERHUB_USERNAME }}/${{ matrix.image_name }}:${{ github.sha }}
63+
${{ secrets.DOCKERHUB_USERNAME }}/${{ matrix.image_name }}:latest
64+
platforms: linux/amd64,linux/arm64
65+
target: ${{ matrix.target }}
66+

.github/workflows/eslint-ci.yml

Lines changed: 2 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ on:
55
branches:
66
- main
77
- dev
8+
- dev-staging
89
- release/*
910
paths:
1011
- 'api/**'
@@ -35,8 +36,6 @@ jobs:
3536

3637
# Run ESLint on changed files within the api/ and client/ directories.
3738
- name: Run ESLint on changed files
38-
env:
39-
SARIF_ESLINT_IGNORE_SUPPRESSED: "true"
4039
run: |
4140
# Extract the base commit SHA from the pull_request event payload.
4241
BASE_SHA=$(jq --raw-output .pull_request.base.sha "$GITHUB_EVENT_PATH")
@@ -52,22 +51,10 @@ jobs:
5251
# Ensure there are files to lint before running ESLint
5352
if [[ -z "$CHANGED_FILES" ]]; then
5453
echo "No matching files changed. Skipping ESLint."
55-
echo "UPLOAD_SARIF=false" >> $GITHUB_ENV
5654
exit 0
5755
fi
5856
59-
# Set variable to allow SARIF upload
60-
echo "UPLOAD_SARIF=true" >> $GITHUB_ENV
61-
6257
# Run ESLint
6358
npx eslint --no-error-on-unmatched-pattern \
6459
--config eslint.config.mjs \
65-
--format @microsoft/eslint-formatter-sarif \
66-
--output-file eslint-results.sarif $CHANGED_FILES || true
67-
68-
- name: Upload analysis results to GitHub
69-
if: env.UPLOAD_SARIF == 'true'
70-
uses: github/codeql-action/upload-sarif@v3
71-
with:
72-
sarif_file: eslint-results.sarif
73-
wait-for-processing: true
60+
$CHANGED_FILES

.github/workflows/frontend-review.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ on:
55
branches:
66
- main
77
- dev
8+
- dev-staging
89
- release/*
910
paths:
1011
- 'client/**'

0 commit comments

Comments
 (0)