Skip to content

Commit

Permalink
Squashed commit of the following:
Browse files Browse the repository at this point in the history
commit 84eeb69
Author: Jonathan Addington <[email protected]>
Date:   Sat Dec 21 03:54:18 2024 +0000

    fix: removed e2b_symbol.png in wrong place

commit 7ad7f50
Author: Jonathan Addington <[email protected]>
Date:   Sat Dec 21 03:29:47 2024 +0000

    chore: enhance sandbox creation logic with template fallback and detailed response message

commit d4d46e9
Author: Jonathan Addington <[email protected]>
Date:   Sat Dec 21 03:37:41 2024 +0000

    chore: require authentication for E2BCode plugin and add e2b logo

commit ac507bd
Author: Jonathan Addington <[email protected]>
Date:   Fri Dec 20 14:34:18 2024 +0000

    Merge upstream into jm-production

commit 332a947
Author: Jonathan Addington <[email protected]>
Date:   Thu Dec 19 22:02:30 2024 +0000

    feat: implement output truncation for large responses in E2BCode

commit 78caf5c
Author: Jonathan Addington <[email protected]>
Date:   Wed Dec 18 16:40:30 2024 +0000

    feat: add support for e2b sanedbox templates

commit 374822c
Author: Jonathan Addington <[email protected]>
Date:   Tue Dec 17 14:36:23 2024 +0000

    refactor: update help for LLM

commit 55350ae
Author: JM Addington <[email protected]>
Date:   Mon Dec 16 13:41:28 2024 -0500

    Merge latest New/feature/e2bcode (#20)

    * 🙌 a11y: Accessibility Improvements (danny-avila#4978)

    * 🔃 fix: Safeguard against null token in SSE refresh token handling

    * 🔃 fix: Update import path for AnnounceOptions in LiveAnnouncer component

    * 🔃 a11y: Add aria-live attribute for accessibility in error messages

    * fix: prevent double screen reader notification for toast

    * 🔃 a11y: Enhance accessibility for main menus and buttons with ARIA roles and labels

    * refactor: better alt text for logo on login page danny-avila#4095

    * refactor: remove unused import for DropdownNoState in Voices component

    * fix: Focus management issue in the Export Options Modal danny-avila#4100

    * 🐛 fix: Enforced Model Spec Icons/Labels and Agent Descriptions (danny-avila#4979)

    * fix: Previous convos missing model spec info when enforce is set to `true` danny-avila#4749

    * refactor: Include description field in agent list response

    * docs: enhance E2BCode documentation with subprocess usage and file transfer instructions

    * 🔧 fix: Add modelLabel to OpenAIClient and PluginsClient options (danny-avila#4995)

    * fix: change description too-long for tools and move to new help action

    * refactor: move some if stmts into the switfh block

    * feat: Add command_run

    * feat: add start_server command

    * refactor: refactor how we list and kill sandboxes to work better

    * refactor: add clearer instructions on max commands limit to avoid recursion errors with langchain

    * refactor: change how we handle sandbox kills

    * refactor: add processinfo(), system_install and comment out shell, read more...

    The LLMs are consistently using the shell function instead of the command_run and end up timing out on the api as a result. Taking away the shell functionality is a test at this point to see if we get better performance.

    * refactor: add user, cwd to create; set default timeout to 60mins

    ---------

    Co-authored-by: Danny Avila <[email protected]>

commit 62facd1
Author: Jonathan Addington <[email protected]>
Date:   Wed Dec 18 16:00:56 2024 +0000

    fix: 🐛Add missing comma for FluxAPI in tools index

commit dd51d15
Author: JM Addington <[email protected]>
Date:   Wed Dec 18 10:45:38 2024 -0500

    Update index.js

    fix: remove merge conflict artifact

commit 531a412
Merge: ea38c28 4a73418
Author: Jonathan Addington <[email protected]>
Date:   Tue Dec 17 22:33:26 2024 +0000

    Merge branch 'jm-production' of https://github.com/jmaddington/LibreChat into jm-production

commit ea38c28
Author: Jonathan Addington <[email protected]>
Date:   Tue Dec 17 20:23:11 2024 +0000

    test: 🌧️Add integration tests for OpenWeather tool

commit d86568b
Author: Jonathan Addington <[email protected]>
Date:   Tue Dec 17 20:07:32 2024 +0000

    feat: 🌤️Add OpenWeather tool and corresponding tests

commit 4a73418
Author: JM Addington <[email protected]>
Date:   Tue Dec 17 11:07:40 2024 -0500

    Sybc Flux ai with tracking (#25)

    * fix: Correct syntax by adding missing semicolon for FluxAPI import

    * fix: Remove unnecessary comment from toolAuthFields in handleTools.js

commit b526d2b
Merge: a50c2ea 609542b
Author: Jonathan Addington <[email protected]>
Date:   Tue Dec 17 15:18:03 2024 +0000

    Merge branch 'jm-production' of https://github.com/jmaddington/LibreChat into jm-production

commit 609542b
Author: JM Addington <[email protected]>
Date:   Tue Dec 17 09:06:54 2024 -0500

    Merge latest changes from New/feature/e2bcode into jm-production (#21)

    * 🙌 a11y: Accessibility Improvements (danny-avila#4978)

    * 🔃 fix: Safeguard against null token in SSE refresh token handling

    * 🔃 fix: Update import path for AnnounceOptions in LiveAnnouncer component

    * 🔃 a11y: Add aria-live attribute for accessibility in error messages

    * fix: prevent double screen reader notification for toast

    * 🔃 a11y: Enhance accessibility for main menus and buttons with ARIA roles and labels

    * refactor: better alt text for logo on login page danny-avila#4095

    * refactor: remove unused import for DropdownNoState in Voices component

    * fix: Focus management issue in the Export Options Modal danny-avila#4100

    * 🐛 fix: Enforced Model Spec Icons/Labels and Agent Descriptions (danny-avila#4979)

    * fix: Previous convos missing model spec info when enforce is set to `true` danny-avila#4749

    * refactor: Include description field in agent list response

    * docs: enhance E2BCode documentation with subprocess usage and file transfer instructions

    * 🔧 fix: Add modelLabel to OpenAIClient and PluginsClient options (danny-avila#4995)

    * fix: change description too-long for tools and move to new help action

    * refactor: move some if stmts into the switch block

    * feat: Add command_run

    * feat: add start_server command

    * refactor: refactor how we list and kill sandboxes to work better

    * refactor: add clearer instructions on max commands limit to avoid recursion errors with langchain

    * refactor: change how we handle sandbox kills

    * refactor: add processinfo(), system_install and comment out shell, read more...

    The LLMs are consistently using the shell function instead of the command_run and end up timing out on the api as a result. Taking away the shell functionality is a test at this point to see if we get better performance.

    * refactor: add user, cwd to create; set default timeout to 60mins

    * TESTING to see if this increases the langchain recursion limit

    I'm not at all sure I have the correct line

    * refactor: add shell back, remove execute

    Execute looks geared towards Jupyter notebooks, which is not what I am aiming for here.

    ---------

    Co-authored-by: Danny Avila <[email protected]>

commit 5002691
Author: JM Addington <[email protected]>
Date:   Mon Dec 16 13:41:28 2024 -0500

    Merge latest New/feature/e2bcode (#20)

    * 🙌 a11y: Accessibility Improvements (danny-avila#4978)

    * 🔃 fix: Safeguard against null token in SSE refresh token handling

    * 🔃 fix: Update import path for AnnounceOptions in LiveAnnouncer component

    * 🔃 a11y: Add aria-live attribute for accessibility in error messages

    * fix: prevent double screen reader notification for toast

    * 🔃 a11y: Enhance accessibility for main menus and buttons with ARIA roles and labels

    * refactor: better alt text for logo on login page danny-avila#4095

    * refactor: remove unused import for DropdownNoState in Voices component

    * fix: Focus management issue in the Export Options Modal danny-avila#4100

    * 🐛 fix: Enforced Model Spec Icons/Labels and Agent Descriptions (danny-avila#4979)

    * fix: Previous convos missing model spec info when enforce is set to `true` danny-avila#4749

    * refactor: Include description field in agent list response

    * docs: enhance E2BCode documentation with subprocess usage and file transfer instructions

    * 🔧 fix: Add modelLabel to OpenAIClient and PluginsClient options (danny-avila#4995)

    * fix: change description too-long for tools and move to new help action

    * refactor: move some if stmts into the switfh block

    * feat: Add command_run

    * feat: add start_server command

    * refactor: refactor how we list and kill sandboxes to work better

    * refactor: add clearer instructions on max commands limit to avoid recursion errors with langchain

    * refactor: change how we handle sandbox kills

    * refactor: add processinfo(), system_install and comment out shell, read more...

    The LLMs are consistently using the shell function instead of the command_run and end up timing out on the api as a result. Taking away the shell functionality is a test at this point to see if we get better performance.

    * refactor: add user, cwd to create; set default timeout to 60mins

    ---------

    Co-authored-by: Danny Avila <[email protected]>

commit dd379a2
Author: JM Addington <[email protected]>
Date:   Sat Dec 14 21:42:20 2024 -0500

    Merge upstream into jm-production (#19)

    * 🙌 a11y: Accessibility Improvements (danny-avila#4978)

    * 🔃 fix: Safeguard against null token in SSE refresh token handling

    * 🔃 fix: Update import path for AnnounceOptions in LiveAnnouncer component

    * 🔃 a11y: Add aria-live attribute for accessibility in error messages

    * fix: prevent double screen reader notification for toast

    * 🔃 a11y: Enhance accessibility for main menus and buttons with ARIA roles and labels

    * refactor: better alt text for logo on login page danny-avila#4095

    * refactor: remove unused import for DropdownNoState in Voices component

    * fix: Focus management issue in the Export Options Modal danny-avila#4100

    * 🐛 fix: Enforced Model Spec Icons/Labels and Agent Descriptions (danny-avila#4979)

    * fix: Previous convos missing model spec info when enforce is set to `true` danny-avila#4749

    * refactor: Include description field in agent list response

    * 🔧 fix: Add modelLabel to OpenAIClient and PluginsClient options (danny-avila#4995)

    ---------

    Co-authored-by: Danny Avila <[email protected]>

commit ec27ff7
Author: JM Addington <[email protected]>
Date:   Sat Dec 14 21:40:25 2024 -0500

    e2bcode bugfix (#18)

    * docs: enhance E2BCode documentation with subprocess usage and file transfer instructions

    * fix: change description too-long for tools and move to new help action

commit a50c2ea
Author: Jonathan Addington <[email protected]>
Date:   Sat Dec 14 00:19:06 2024 +0000

    docs: enhance E2BCode documentation with subprocess usage and file transfer instructions

commit 182b96a
Author: Jonathan Addington <[email protected]>
Date:   Fri Dec 13 20:31:15 2024 +0000

    docs: update README with E2B.dev rationale and additional plugins; enhance E2BCode usage notes

commit 8ef3866
Author: Jonathan Addington <[email protected]>
Date:   Fri Dec 13 20:26:40 2024 +0000

    docs: update README to include E2B.dev code interpreter and plugins list

commit debe367
Merge: 6b3548f b6eebf2
Author: Jonathan Addington <[email protected]>
Date:   Fri Dec 13 20:14:43 2024 +0000

    Merge branch 'main' into jm-production

commit b6eebf2
Merge: 0ce422a 763693c
Author: Jonathan Addington <[email protected]>
Date:   Fri Dec 13 15:14:29 2024 -0500

    Merge branch 'main' of https://github.com/jmaddington/LibreChat

commit 6b3548f
Merge: 943bac3 0ce422a
Author: Jonathan Addington <[email protected]>
Date:   Fri Dec 13 20:13:45 2024 +0000

    Merge branch 'main' into jm-production

commit 943bac3
Author: Jonathan Addington <[email protected]>
Date:   Fri Dec 13 20:09:10 2024 +0000

    fix: enhance E2BCode prompt with detailed action descriptions and usage notes

commit 9e998d6
Merge: f18cdc0 8510262
Author: Jonathan Addington <[email protected]>
Date:   Fri Dec 13 20:03:20 2024 +0000

    Merge branch 'feat/new/e2bcode' into jm-production

commit f18cdc0
Author: JM Addington <[email protected]>
Date:   Fri Dec 13 14:23:50 2024 -0500

    Feat/new/e2bcode (#17)

    Add support for e2b.dev code interpreter (Sandbox environment).

commit d7551cf
Merge: 2db7006 20b91ad
Author: Jonathan Addington <[email protected]>
Date:   Fri Dec 13 19:05:28 2024 +0000

    Merge branch 'jm-production' of https://github.com/jmaddington/LibreChat into jm-production

commit 2db7006
Author: Jonathan Addington <[email protected]>
Date:   Fri Dec 13 19:04:36 2024 +0000

    fix: update checkout action to use 'with' syntax for ref

commit 20b91ad
Author: Jonathan Addington <[email protected]>
Date:   Fri Dec 13 19:04:36 2024 +0000

    fix: update checkout action to use 'with' syntax for ref

commit d1ccebc
Merge: b5062a4 b9764a8
Author: Jonathan Addington <[email protected]>
Date:   Fri Dec 13 14:03:55 2024 -0500

    Merge branch 'jm-production' of https://github.com/jmaddington/LibreChat into jm-production

commit b9764a8
Author: JM Addington <[email protected]>
Date:   Fri Dec 13 14:03:09 2024 -0500

    fix indent in deploy workflow

commit b5062a4
Author: Jonathan Addington <[email protected]>
Date:   Fri Dec 13 18:41:19 2024 +0000

    feat: add GitHub Actions workflow for Docker build and push to GHCR

commit 697bb45
Author: Jonathan Addington <[email protected]>
Date:   Fri Dec 13 18:41:19 2024 +0000

    feat: add GitHub Actions workflow for Docker build and push to GHCR

commit 8510262
Author: Jonathan Addington <[email protected]>
Date:   Fri Dec 13 18:09:25 2024 +0000

    docs: add documentation for E2BCode plugin integration with LibreChat

commit f58a5c0
Author: Jonathan Addington <[email protected]>
Date:   Fri Dec 13 18:02:19 2024 +0000

    feat: enhance E2BCode tool with hidden environment variable support and improve documentation

commit 66a4820
Author: Jonathan Addington <[email protected]>
Date:   Fri Dec 13 17:53:19 2024 +0000

    feat: add 'set_timeout' action to E2BCode tool for managing sandbox timeout

commit fef7a06
Author: Jonathan Addington <[email protected]>
Date:   Fri Dec 13 17:43:11 2024 +0000

    feat: add background task support and command management to E2BCode tool

commit 14058b2
Author: Jonathan Addington <[email protected]>
Date:   Fri Dec 13 17:31:10 2024 +0000

    feat: enhance E2BCode tool with environment variable support for sandbox creation and execution

commit aa5e78f
Author: Jonathan Addington <[email protected]>
Date:   Fri Dec 13 17:24:26 2024 +0000

    feat: add 'kill' action to E2BCode tool for managing sandboxes

commit c213690
Author: Jonathan Addington <[email protected]>
Date:   Fri Dec 13 16:58:43 2024 +0000

    feat: misc fixes

commit a929878
Author: Jonathan Addington <[email protected]>
Date:   Fri Dec 13 14:50:21 2024 +0000

    fix: reverting back to init commit

commit e9ff7e6
Author: Jonathan Addington <[email protected]>
Date:   Thu Dec 12 16:42:59 2024 +0000

    feat: add multiple e2b SDK commands

commit 216c47a
Author: Jonathan Addington <[email protected]>
Date:   Thu Dec 12 16:17:31 2024 +0000

    feat: init commit of e2b code interpreter plugin

commit 0ce422a
Author: Jonathan Addington <[email protected]>
Date:   Wed Dec 11 17:13:49 2024 +0000

    fix: change vite bind to work in docker, update devcontainer exposted ports

commit 9df7c10
Author: Jonathan Addington <[email protected]>
Date:   Mon Dec 9 13:41:05 2024 +0000

    Fix: fix mistaken lines in merge

commit 0e8e274
Merge: dd32f4a cd1184a
Author: JM Addington <[email protected]>
Date:   Mon Dec 9 07:52:45 2024 -0500

    Merge branch 'tracking/13-tracking-branch-merge' into jm-production

commit dd32f4a
Author: Jonathan Addington <[email protected]>
Date:   Mon Dec 9 12:47:44 2024 +0000

    docs: update readme with info on this fork

commit 4bb349b
Merge: 229aa2c 69d621d
Author: Jonathan Addington <[email protected]>
Date:   Sat Dec 7 17:41:53 2024 +0000

    Merge remote-tracking branch 'origin/new/feature/flux-ai' into jm-production

commit 229aa2c
Merge: 1a815f5 863eb5f
Author: Jonathan Addington <[email protected]>
Date:   Sat Dec 7 17:40:36 2024 +0000

    Merge remote-tracking branch 'origin/new/feature/curl' into jm-production

commit 863eb5f
Author: Jonathan Addington <[email protected]>
Date:   Mon Nov 18 18:34:21 2024 -0500

    fix: Remove redundant comment in handleTools.js

commit fa33ab4
Merge: 2140c97 d8dd93f
Author: JM Addington <[email protected]>
Date:   Mon Nov 18 18:29:48 2024 -0500

    Merge branch 'jm-publish' into new/feature/curl

commit d8dd93f
Author: JM Addington <[email protected]>
Date:   Mon Nov 18 18:26:22 2024 -0500

    Flux ai - bug fixes (#4)

    * 📸 feat: Add support for Black Labs Flux AI

    This commit code was mostly generated by ChatGPT o1-preview, using the DALLE3 plugin as a guide.

    * 📸 feat: Add support for Black Labs Flux AI

    This commit code was mostly generated by ChatGPT o1-preview, using the DALLE3 plugin as a guide.

    * 📸 feat: Update .env.example and manifest.json for Flux API integration

    * 📸 fix: Add missing FluxAPI to available tools in the client module

    * fix: Correct syntax by adding missing semicolon for FluxAPI import

    * fix: Remove unnecessary comment from toolAuthFields in handleTools.js

commit 2140c97
Author: Jonathan Addington <[email protected]>
Date:   Mon Nov 18 18:21:46 2024 -0500

    fix: Add new WebNavigator icon path in manifest.json

commit aacd4ef
Author: Jonathan Addington <[email protected]>
Date:   Mon Nov 18 17:32:29 2024 -0500

    refactor: Rename CurlPlugin to WebNavigator and update references throughout the codebase

commit 3aef7db
Author: Jonathan Addington <[email protected]>
Date:   Mon Nov 18 17:31:09 2024 -0500

    feat: Update CurlPlugin guidelines to exclude additional HTML tags and attributes

commit 430ae65
Author: Jonathan Addington <[email protected]>
Date:   Mon Nov 18 17:09:03 2024 -0500

    📸 feat: Enhance CurlPlugin guidelines and add support for including specific HTML attributes in responses

    It's pretty easy to return too many tokens to the LLM, we're trying to cut down on that as much as possible

commit c5e82b9
Author: Jonathan Addington <[email protected]>
Date:   Mon Nov 18 17:02:05 2024 -0500

    📸 refactor: Enhance CurlPlugin with improved guidelines and additional parameters for better HTTP request handling

commit a0c8df1
Author: Jonathan Addington <[email protected]>
Date:   Mon Nov 18 16:54:43 2024 -0500

    🌐 feat: Add CurlPlugin to tools and update manifest for integration

commit 98c0dd6
Author: Jonathan Addington <[email protected]>
Date:   Mon Nov 18 10:56:45 2024 -0500

    📸 fix: Add missing FluxAPI to available tools in the client module

commit 78ca8ed
Author: JM Addington <[email protected]>
Date:   Mon Nov 18 10:09:24 2024 -0500

    Flux ai (#1) (#3)

    * 📸 feat: Add support for Black Labs Flux AI

    This commit code was mostly generated by ChatGPT o1-preview, using the DALLE3 plugin as a guide.

commit 69d621d
Author: JM Addington <[email protected]>
Date:   Mon Nov 18 09:22:58 2024 -0500

    Flux ai (#1)

    * 📸 feat: Add support for Black Labs Flux AI

    This commit code was mostly generated by ChatGPT o1-preview, using the DALLE3 plugin as a guide.

commit 53d0280
Author: Jonathan Addington <[email protected]>
Date:   Mon Nov 18 09:13:20 2024 -0500

    📸 feat: Update .env.example and manifest.json for Flux API integration

commit 6582880
Merge: e58d66a 655b284
Author: Jonathan Addington <[email protected]>
Date:   Mon Nov 18 08:53:32 2024 -0500

    Merge branch 'flux-ai' of https://github.com/jmaddington/LibreChat into flux-ai

commit e58d66a
Merge: 8f05031 ef83e4c
Author: Jonathan Addington <[email protected]>
Date:   Mon Nov 18 08:07:57 2024 -0500

    Merge branch 'flux-ai' of https://github.com/jmaddington/LibreChat into flux-ai

commit 655b284
Merge: 8f05031 ef83e4c
Author: Jonathan Addington <[email protected]>
Date:   Mon Nov 18 08:07:57 2024 -0500

    Merge branch 'flux-ai' of https://github.com/jmaddington/LibreChat into flux-ai

commit 8f05031
Author: Jonathan Addington <[email protected]>
Date:   Sun Nov 17 15:33:12 2024 -0500

    📸 feat: Add support for Black Labs Flux AI

    This commit code was mostly generated by ChatGPT o1-preview, using the DALLE3 plugin as a guide.

commit ef83e4c
Author: Jonathan Addington <[email protected]>
Date:   Sun Nov 17 15:33:12 2024 -0500

    📸 feat: Add support for Black Labs Flux AI

    This commit code was mostly generated by ChatGPT o1-preview, using the DALLE3 plugin as a guide.
  • Loading branch information
jmaddington committed Dec 21, 2024
1 parent 9b118d4 commit a7374e6
Show file tree
Hide file tree
Showing 24 changed files with 3,028 additions and 179 deletions.
18 changes: 10 additions & 8 deletions .devcontainer/docker-compose.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,18 +7,20 @@ services:
links:
- mongodb
- meilisearch
# ports:
# - 3080:3080 # Change it to 9000:3080 to use nginx
extra_hosts: # if you are running APIs on docker you need access to, you will need to uncomment this line and next
- "host.docker.internal:host-gateway"
ports:
- 80:80
- 3080:3090 # Change it to 9000:3080 to use nginx
- 3090:3090
# extra_hosts: # if you are running APIs on docker you need access to, you will need to uncomment this line and next
# - "host.docker.internal:host-gateway"

volumes:
# This is where VS Code should expect to find your project's source code and the value of "workspaceFolder" in .devcontainer/devcontainer.json
- ..:/workspaces:cached
# Uncomment the next line to use Docker from inside the container. See https://aka.ms/vscode-remote/samples/docker-from-docker-compose for details.
# - /var/run/docker.sock:/var/run/docker.sock
environment:
- HOST=0.0.0.0
# - HOST=0.0.0.0
- MONGO_URI=mongodb://mongodb:27017/LibreChat
# - CHATGPT_REVERSE_PROXY=http://host.docker.internal:8080/api/conversation # if you are hosting your own chatgpt reverse proxy with docker
# - OPENAI_REVERSE_PROXY=http://host.docker.internal:8070/v1/chat/completions # if you are hosting your own chatgpt reverse proxy with docker
Expand All @@ -41,7 +43,7 @@ services:
expose:
- 27017
# ports:
# - 27018:27017
- 27017:27017
image: mongo
# restart: always
volumes:
Expand All @@ -54,8 +56,8 @@ services:
expose:
- 7700
# Uncomment this to access meilisearch from outside docker
# ports:
# - 7700:7700 # if exposing these ports, make sure your master key is not the default value
ports:
- 7700:7700 # if exposing these ports, make sure your master key is not the default value
environment:
- MEILI_NO_ANALYTICS=true
- MEILI_MASTER_KEY=5c71cf56d672d009e36070b5bc5e47b743535ae55c818ae3b735bb6ebfb4ba63
Expand Down
4 changes: 4 additions & 0 deletions .env.example
Original file line number Diff line number Diff line change
Expand Up @@ -256,6 +256,10 @@ AZURE_AI_SEARCH_SEARCH_OPTION_SELECT=
# DALLE3_AZURE_API_VERSION=
# DALLE2_AZURE_API_VERSION=

# Flux
#-----------------
# FLUX_API_KEY

# Google
#-----------------
GOOGLE_SEARCH_API_KEY=
Expand Down
38 changes: 38 additions & 0 deletions .github/workflows/deploy-jm.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
name: Docker Build and Push to GHCR

on:
workflow_dispatch:

push:
branches:
- jm-production

jobs:
deploy-gh-runner-aci:
runs-on: ubuntu-latest
steps:
# checkout the repo
- name: 'Checkout GitHub Action'
uses: actions/checkout@v4
with:
ref: jm-production

- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v2

- name: Log in to GitHub Docker Registry
uses: docker/login-action@v2
with:
registry: ghcr.io
username: ${{ github.repository_owner }}
password: ${{ secrets.GITHUB_TOKEN }}

- name: Build and push Docker image
uses: docker/build-push-action@v4
with:
context: .
push: true
tags: ghcr.io/jmaddington/librechat:latest

- name: Log out from Docker Hub
run: docker logout ghcr.io
183 changes: 14 additions & 169 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,175 +1,20 @@
<p align="center">
<a href="https://librechat.ai">
<img src="client/public/assets/logo.svg" height="256">
</a>
<h1 align="center">
<a href="https://librechat.ai">LibreChat</a>
</h1>
</p>
# About this Fork

<p align="center">
<a href="https://discord.librechat.ai">
<img
src="https://img.shields.io/discord/1086345563026489514?label=&logo=discord&style=for-the-badge&logoWidth=20&logoColor=white&labelColor=000000&color=blueviolet">
</a>
<a href="https://www.youtube.com/@LibreChat">
<img
src="https://img.shields.io/badge/YOUTUBE-red.svg?style=for-the-badge&logo=youtube&logoColor=white&labelColor=000000&logoWidth=20">
</a>
<a href="https://docs.librechat.ai">
<img
src="https://img.shields.io/badge/DOCS-blue.svg?style=for-the-badge&logo=read-the-docs&logoColor=white&labelColor=000000&logoWidth=20">
</a>
<a aria-label="Sponsors" href="https://github.com/sponsors/danny-avila">
<img
src="https://img.shields.io/badge/SPONSORS-brightgreen.svg?style=for-the-badge&logo=github-sponsors&logoColor=white&labelColor=000000&logoWidth=20">
</a>
</p>
This fork is a personal project to add a few features to LibreChat and integrate features from other forks.

<p align="center">
<a href="https://railway.app/template/b5k2mn?referralCode=HI9hWz">
<img src="https://railway.app/button.svg" alt="Deploy on Railway" height="30">
</a>
<a href="https://zeabur.com/templates/0X2ZY8">
<img src="https://zeabur.com/button.svg" alt="Deploy on Zeabur" height="30"/>
</a>
<a href="https://template.cloud.sealos.io/deploy?templateName=librechat">
<img src="https://raw.githubusercontent.com/labring-actions/templates/main/Deploy-on-Sealos.svg" alt="Deploy on Sealos" height="30">
</a>
</p>
## Branches
`jm-productuion` - The main branch for this fork for production use. Stable-ish, but has been at least minimally tested.
`main` - A clone of the upstream main branch.
`new/feature/X` - Branches for new features, kept open until they are feature complete and merged.

# ✨ Features
## Known Changes from danny-avila/LibreChat
- E2B.dev code interpreter added to the tools list
- Web Navigator plugin added to the tools list.
- Flux AI plugin added to the tools list.

- 🖥️ **UI & Experience** inspired by ChatGPT with enhanced design and features
### Why E2B?
LibreChat recently introduced their own code interpreter service. It's affordable, integrates seamlessly with their platform, and provides a viable revenue stream. So why not use it?

- 🤖 **AI Model Selection**:
- Anthropic (Claude), AWS Bedrock, OpenAI, Azure OpenAI, Google, Vertex AI, OpenAI Assistants API (incl. Azure)
- [Custom Endpoints](https://www.librechat.ai/docs/quick_start/custom_endpoints): Use any OpenAI-compatible API with LibreChat, no proxy required
- Compatible with [Local & Remote AI Providers](https://www.librechat.ai/docs/configuration/librechat_yaml/ai_endpoints):
- Ollama, groq, Cohere, Mistral AI, Apple MLX, koboldcpp, together.ai,
- OpenRouter, Perplexity, ShuttleAI, Deepseek, Qwen, and more
For our internal needs, however, we require a code interpreter with network access—a feature not offered by LibreChat's interpreter for safety reasons. E2B.dev provides an excellent alternative that meets our specific requirements.

- 🔧 **[Code Interpreter API](https://www.librechat.ai/docs/features/code_interpreter)**:
- Secure, Sandboxed Execution in Python, Node.js (JS/TS), Go, C/C++, Java, PHP, Rust, and Fortran
- Seamless File Handling: Upload, process, and download files directly
- No Privacy Concerns: Fully isolated and secure execution

- 🔦 **Agents & Tools Integration**:
- **[LibreChat Agents](https://www.librechat.ai/docs/features/agents)**:
- No-Code Custom Assistants: Build specialized, AI-driven helpers without coding
- Flexible & Extensible: Attach tools like DALL-E-3, file search, code execution, and more
- Compatible with Custom Endpoints, OpenAI, Azure, Anthropic, AWS Bedrock, and more
- [Model Context Protocol (MCP) Support](https://modelcontextprotocol.io/clients#librechat) for Tools
- Use LibreChat Agents and OpenAI Assistants with Files, Code Interpreter, Tools, and API Actions

- 🪄 **Generative UI with Code Artifacts**:
- [Code Artifacts](https://youtu.be/GfTj7O4gmd0?si=WJbdnemZpJzBrJo3) allow creation of React, HTML, and Mermaid diagrams directly in chat

- 💾 **Presets & Context Management**:
- Create, Save, & Share Custom Presets
- Switch between AI Endpoints and Presets mid-chat
- Edit, Resubmit, and Continue Messages with Conversation branching
- [Fork Messages & Conversations](https://www.librechat.ai/docs/features/fork) for Advanced Context control

- 💬 **Multimodal & File Interactions**:
- Upload and analyze images with Claude 3, GPT-4o, o1, Llama-Vision, and Gemini 📸
- Chat with Files using Custom Endpoints, OpenAI, Azure, Anthropic, AWS Bedrock, & Google 🗃️

- 🌎 **Multilingual UI**:
- English, 中文, Deutsch, Español, Français, Italiano, Polski, Português Brasileiro
- Русский, 日本語, Svenska, 한국어, Tiếng Việt, 繁體中文, العربية, Türkçe, Nederlands, עברית

- 🎨 **Customizable Interface**:
- Customizable Dropdown & Interface that adapts to both power users and newcomers

- 🗣️ **Speech & Audio**:
- Chat hands-free with Speech-to-Text and Text-to-Speech
- Automatically send and play Audio
- Supports OpenAI, Azure OpenAI, and Elevenlabs

- 📥 **Import & Export Conversations**:
- Import Conversations from LibreChat, ChatGPT, Chatbot UI
- Export conversations as screenshots, markdown, text, json

- 🔍 **Search & Discovery**:
- Search all messages/conversations

- 👥 **Multi-User & Secure Access**:
- Multi-User, Secure Authentication with OAuth2, LDAP, & Email Login Support
- Built-in Moderation, and Token spend tools

- ⚙️ **Configuration & Deployment**:
- Configure Proxy, Reverse Proxy, Docker, & many Deployment options
- Use completely local or deploy on the cloud

- 📖 **Open-Source & Community**:
- Completely Open-Source & Built in Public
- Community-driven development, support, and feedback

[For a thorough review of our features, see our docs here](https://docs.librechat.ai/) 📚

## 🪶 All-In-One AI Conversations with LibreChat

LibreChat brings together the future of assistant AIs with the revolutionary technology of OpenAI's ChatGPT. Celebrating the original styling, LibreChat gives you the ability to integrate multiple AI models. It also integrates and enhances original client features such as conversation and message search, prompt templates and plugins.

With LibreChat, you no longer need to opt for ChatGPT Plus and can instead use free or pay-per-call APIs. We welcome contributions, cloning, and forking to enhance the capabilities of this advanced chatbot platform.

[![Watch the video](https://raw.githubusercontent.com/LibreChat-AI/librechat.ai/main/public/images/changelog/v0.7.5.png)](https://www.youtube.com/watch?v=IDukQ7a2f3U)
Click on the thumbnail to open the video☝️

---

## 🌐 Resources

**GitHub Repo:**
- **RAG API:** [github.com/danny-avila/rag_api](https://github.com/danny-avila/rag_api)
- **Website:** [github.com/LibreChat-AI/librechat.ai](https://github.com/LibreChat-AI/librechat.ai)

**Other:**
- **Website:** [librechat.ai](https://librechat.ai)
- **Documentation:** [docs.librechat.ai](https://docs.librechat.ai)
- **Blog:** [blog.librechat.ai](https://blog.librechat.ai)

---

## 📝 Changelog

Keep up with the latest updates by visiting the releases page and notes:
- [Releases](https://github.com/danny-avila/LibreChat/releases)
- [Changelog](https://www.librechat.ai/changelog)

**⚠️ Please consult the [changelog](https://www.librechat.ai/changelog) for breaking changes before updating.**

---

## ⭐ Star History

<p align="center">
<a href="https://star-history.com/#danny-avila/LibreChat&Date">
<img alt="Star History Chart" src="https://api.star-history.com/svg?repos=danny-avila/LibreChat&type=Date&theme=dark" onerror="this.src='https://api.star-history.com/svg?repos=danny-avila/LibreChat&type=Date'" />
</a>
</p>
<p align="center">
<a href="https://trendshift.io/repositories/4685" target="_blank" style="padding: 10px;">
<img src="https://trendshift.io/api/badge/repositories/4685" alt="danny-avila%2FLibreChat | Trendshift" style="width: 250px; height: 55px;" width="250" height="55"/>
</a>
<a href="https://runacap.com/ross-index/q1-24/" target="_blank" rel="noopener" style="margin-left: 20px;">
<img style="width: 260px; height: 56px" src="https://runacap.com/wp-content/uploads/2024/04/ROSS_badge_white_Q1_2024.svg" alt="ROSS Index - Fastest Growing Open-Source Startups in Q1 2024 | Runa Capital" width="260" height="56"/>
</a>
</p>

---

## ✨ Contributions

Contributions, suggestions, bug reports and fixes are welcome!

For new features, components, or extensions, please open an issue and discuss before sending a PR.

---

## 💖 This project exists in its current state thanks to all the people who contribute

<a href="https://github.com/danny-avila/LibreChat/graphs/contributors">
<img src="https://contrib.rocks/image?repo=danny-avila/LibreChat" />
</a>
***WE STILL LOVE LIBRECHAT!*** In fact, we're proud to be monthly sponsors. Our choice to use E2B.dev is not about detracting from LibreChat's service; we simply need additional functionality to fulfill our unique needs.
2 changes: 1 addition & 1 deletion api/app/clients/GoogleClient.js
Original file line number Diff line number Diff line change
Expand Up @@ -946,4 +946,4 @@ class GoogleClient extends BaseClient {
}
}

module.exports = GoogleClient;
module.exports = GoogleClient;
1 change: 1 addition & 0 deletions api/app/clients/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ const TextStream = require('./TextStream');
const AnthropicClient = require('./AnthropicClient');
const toolUtils = require('./tools/util');


module.exports = {
ChatGPTClient,
OpenAIClient,
Expand Down
43 changes: 43 additions & 0 deletions api/app/clients/tools/__tests__/openWeather.integration.test.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
// __tests__/openWeather.integration.test.js
const OpenWeather = require('../structured/OpenWeather');
const fetch = require('node-fetch');

// If you haven’t mocked fetch globally for other tests, you may remove the mocking.
// If fetch is mocked globally, you will need to unmock it here.
// For example:
// jest.unmock('node-fetch');

describe('OpenWeather Tool (Integration Test)', () => {
let tool;

beforeAll(() => {
tool = new OpenWeather();
});

test('current_forecast with a real API key, if available', async () => {
// Check if API key is available
if (!process.env.OPENWEATHER_API_KEY) {
console.warn("Skipping real API test, no OPENWEATHER_API_KEY found.");
return; // Test passes but does nothing
}

// Provide a real city and action
const result = await tool.call({
action: 'current_forecast',
city: 'London',
units: 'Celsius'
});

// Try to parse the JSON result
let parsed;
try {
parsed = JSON.parse(result);
} catch (e) {
throw new Error(`Could not parse JSON from response: ${result}`);
}

// Check that the response contains expected fields
expect(parsed).toHaveProperty('current');
expect(typeof parsed.current.temp).toBe('number');
});
});
Loading

0 comments on commit a7374e6

Please sign in to comment.