diff --git a/Assets/DocsGPT tee-back.jpeg b/Assets/DocsGPT tee-back.jpeg
index b13fe53d..8c0e22aa 100644
Binary files a/Assets/DocsGPT tee-back.jpeg and b/Assets/DocsGPT tee-back.jpeg differ
diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md
index 512b6c23..4f24f158 100644
--- a/CODE_OF_CONDUCT.md
+++ b/CODE_OF_CONDUCT.md
@@ -2,58 +2,58 @@
## Our Pledge
-We as members, contributors, and leaders, pledge to make participation in our
-community a harassment-free experience for everyone, regardless of age, body
+We as members, contributors and leaders pledge to make participation in our
+community, a harassment-free experience for everyone, regardless of age, body
size, visible or invisible disability, ethnicity, sex characteristics, gender
identity and expression, level of experience, education, socio-economic status,
-nationality, personal appearance, race, religion, or sexual identity
+nationality, personal appearance, race, religion or sexual identity
and orientation.
We pledge to act and interact in ways that contribute to an open, welcoming,
-diverse, inclusive, and a healthy community.
+diverse, inclusive and a healthy community.
## Our Standards
Examples of behavior that contribute to a positive environment for our
community include:
-* Demonstrating empathy and kindness towards other people
-* Being respectful and open to differing opinions, viewpoints, and experiences
-* Giving and gracefully accepting constructive feedback
-* Taking accountability and offering apologies to those who have been impacted by our errors,
+## Demonstrating empathy and kindness towards other people
+1. Being respectful and open to differing opinions, viewpoints, and experiences
+2. Giving and gracefully accepting constructive feedback
+3. Taking accountability and offering apologies to those who have been impacted by our errors,
while also gaining insights from the situation
-* Focusing on what is best not just for us as individuals, but for the
+4. Focusing on what is best not just for us as individuals but for the
community as a whole
Examples of unacceptable behavior include:
-* The use of sexualized language or imagery, and sexual attention or
+1. The use of sexualized language or imagery, and sexual attention or
advances of any kind
-* Trolling, insulting or derogatory comments, and personal or political attacks
-* Public or private harassment
-* Publishing other's private information, such as a physical or email
+2. Trolling, insulting or derogatory comments, and personal or political attacks
+3. Public or private harassment
+4. Publishing other's private information, such as a physical or email
address, without their explicit permission
-* Other conduct which could reasonably be considered inappropriate in a
+5. Other conduct which could reasonably be considered inappropriate in a
professional setting
## Enforcement Responsibilities
Community leaders are responsible for clarifying and enforcing our standards of
acceptable behavior and will take appropriate and fair corrective action in
-response to any behavior that they deem inappropriate, threatening, offensive,
+response to any behavior that they deem inappropriate, threatening, offensive
or harmful.
Community leaders have the right and responsibility to remove, edit, or reject
comments, commits, code, wiki edits, issues, and other contributions that are
-not aligned to this Code of Conduct, and will communicate reasons for moderation
+not aligned to this Code of Conduct and will communicate reasons for moderation
decisions when appropriate.
## Scope
-This Code of Conduct applies within all community spaces, and also applies when
+This Code of Conduct applies within all community spaces and also applies when
an individual is officially representing the community in public spaces.
Examples of representing our community include using an official e-mail address,
-posting via an official social media account, or acting as an appointed
+posting via an official social media account or acting as an appointed
representative at an online or offline event.
## Enforcement
@@ -63,29 +63,27 @@ reported to the community leaders responsible for enforcement at
contact@arc53.com.
All complaints will be reviewed and investigated promptly and fairly.
-All community leaders are obligated to respect the privacy and security of the
+All community leaders are obligated to respectful towards the privacy and security of the
reporter of any incident.
## Enforcement Guidelines
Community leaders will follow these Community Impact Guidelines in determining
-the consequences for any action they deem in violation of this Code of Conduct:
+the consequences for any action that they deem in violation of this Code of Conduct:
### 1. Correction
-
-**Community Impact**: Use of inappropriate language or other behavior deemed
+* **Community Impact**: Use of inappropriate language or other behavior deemed
unprofessional or unwelcome in the community space.
-**Consequence**: A private, written warning from community leaders, providing
+* **Consequence**: A private, written warning from community leaders, providing
clarity around the nature of the violation and an explanation of why the
behavior was inappropriate. A public apology may be requested.
### 2. Warning
-
-**Community Impact**: A violation through a single incident or series
+* **Community Impact**: A violation through a single incident or series
of actions.
-**Consequence**: A warning with consequences for continued behavior. No
+* **Consequence**: A warning with consequences for continued behavior. No
interaction with the people involved, including unsolicited interaction with
those enforcing the Code of Conduct, for a specified period of time. This
includes avoiding interactions in community spaces as well as external channels
@@ -93,23 +91,21 @@ like social media. Violating these terms may lead to a temporary or
permanent ban.
### 3. Temporary Ban
-
-**Community Impact**: A serious violation of community standards, including
+* **Community Impact**: A serious violation of community standards, including
sustained inappropriate behavior.
-**Consequence**: A temporary ban from any sort of interaction or public
+* **Consequence**: A temporary ban from any sort of interaction or public
communication with the community for a specified period of time. No public or
private interaction with the people involved, including unsolicited interaction
with those enforcing the Code of Conduct, is allowed during this period.
Violating these terms may lead to a permanent ban.
### 4. Permanent Ban
+* **Community Impact**: Demonstrating a pattern of violation of community
+standards, including sustained inappropriate behavior,harassment of an
+individual or aggression towards or disparagement of classes of individuals.
-**Community Impact**: Demonstrating a pattern of violation of community
-standards, including sustained inappropriate behavior, harassment of an
-individual, or aggression towards or disparagement of classes of individuals.
-
-**Consequence**: A permanent ban from any sort of public interaction within
+* **Consequence**: A permanent ban from any sort of public interaction within
the community.
## Attribution
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index 3407fdc9..2e24b43f 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -17,12 +17,18 @@ Thank you for choosing to contribute to DocsGPT! We are all very grateful!
## ๐ Issues and Pull requests
-We value contributions in the form of discussions or suggestions. We recommend taking a look at existing issues and our [roadmap](https://github.com/orgs/arc53/projects/2).
+- We value contributions in the form of discussions or suggestions. We recommend taking a look at existing issues and our [roadmap](https://github.com/orgs/arc53/projects/2).
+
+- If you're interested in contributing code, here are some important things to know:
+
+- We have a frontend built on React (Vite) and a backend in Python.
+=======
Before creating issues, please check out how the latest version of our app looks and works by launching it via [Quickstart](https://github.com/arc53/DocsGPT#quickstart) the version on our live demo is slightly modified with login. Your issues should relate to the version that you can launch via [Quickstart](https://github.com/arc53/DocsGPT#quickstart).
### ๐จโ๐ป If you're interested in contributing code, here are some important things to know:
+
Tech Stack Overview:
- ๐ Frontend: Built with React (Vite) โ๏ธ,
@@ -57,42 +63,55 @@ Here's a step-by-step guide on how to contribute to DocsGPT:
1. **Fork the Repository:**
- Click the "Fork" button at the top-right of this repository to create your fork.
-2. **Create and Switch to a New Branch:**
+2. **Clone the Forked Repository:**
+ - Clone the repository using:
+ ''' shell
+ git clone https://github.com//DocsGPT.git
+ '''
+
+3. **Keep your Fork in Sync:**
+ - Before you make any changes, make sure that your fork is in sync to avoid merge conflicts using:
+ '''shell
+ git remote add upstream https://github.com/arc53/DocsGPT.git
+ git pull upstream master
+ '''
+
+4. **Create and Switch to a New Branch:**
- Create a new branch for your contribution using:
```shell
git checkout -b your-branch-name
```
-3. **Make Changes:**
+5. **Make Changes:**
- Make the required changes in your branch.
-4. **Add Changes to the Staging Area:**
+6. **Add Changes to the Staging Area:**
- Add your changes to the staging area using:
```shell
git add .
```
-5. **Commit Your Changes:**
+7. **Commit Your Changes:**
- Commit your changes with a descriptive commit message using:
```shell
git commit -m "Your descriptive commit message"
```
-6. **Push Your Changes to the Remote Repository:**
+8. **Push Your Changes to the Remote Repository:**
- Push your branch with changes to your fork on GitHub using:
```shell
git push origin your-branch-name
```
-7. **Submit a Pull Request (PR):**
+9. **Submit a Pull Request (PR):**
- Create a Pull Request from your branch to the main repository. Make sure to include a detailed description of your changes and reference any related issues.
-8. **Collaborate:**
+10. **Collaborate:**
- Be responsive to comments and feedback on your PR.
- Make necessary updates as suggested.
- Once your PR is approved, it will be merged into the main repository.
-9. **Testing:**
+11. **Testing:**
- Before submitting a Pull Request, ensure your code passes all unit tests.
- To run unit tests from the root of the repository, execute:
```shell
@@ -101,7 +120,7 @@ Here's a step-by-step guide on how to contribute to DocsGPT:
*Note: You should run the unit test only after making the changes to the backend code.*
-10. **Questions and Collaboration:**
+12. **Questions and Collaboration:**
- Feel free to join our Discord. We're very friendly and welcoming to new contributors, so don't hesitate to reach out.
Thank you for considering contributing to DocsGPT! ๐
diff --git a/README.md b/README.md
index 8105e67e..061fba78 100644
--- a/README.md
+++ b/README.md
@@ -72,11 +72,11 @@ If you don't have enough resources to run it, you can use bitsnbytes to quantize
- Scripts - Script that creates similarity search index for other libraries.
-- Frontend - Frontend uses Vite and React.
+- Frontend - Frontend uses Vite and React.
## QuickStart
-Note: Make sure you have Docker installed
+Note: Make sure you have [Docker](https://docs.docker.com/engine/install/) installed
On Mac OS or Linux, write:
@@ -176,7 +176,7 @@ We as members, contributors, and leaders, pledge to make participation in our co
## Many Thanks To Our Contributors
-
+
diff --git a/application/parser/file/openapi3_parser.py b/application/parser/file/openapi3_parser.py
new file mode 100644
index 00000000..3c5082fa
--- /dev/null
+++ b/application/parser/file/openapi3_parser.py
@@ -0,0 +1,51 @@
+from urllib.parse import urlparse
+
+from openapi_parser import parse
+
+try:
+ from application.parser.file.base_parser import BaseParser
+except ModuleNotFoundError:
+ from base_parser import BaseParser
+
+
+class OpenAPI3Parser(BaseParser):
+ def init_parser(self) -> None:
+ return super().init_parser()
+
+ def get_base_urls(self, urls):
+ base_urls = []
+ for i in urls:
+ parsed_url = urlparse(i)
+ base_url = parsed_url.scheme + "://" + parsed_url.netloc
+ if base_url not in base_urls:
+ base_urls.append(base_url)
+ return base_urls
+
+ def get_info_from_paths(self, path):
+ info = ""
+ if path.operations:
+ for operation in path.operations:
+ info += (
+ f"\n{operation.method.value}="
+ f"{operation.responses[0].description}"
+ )
+ return info
+
+ def parse_file(self, file_path):
+ data = parse(file_path)
+ results = ""
+ base_urls = self.get_base_urls(link.url for link in data.servers)
+ base_urls = ",".join([base_url for base_url in base_urls])
+ results += f"Base URL:{base_urls}\n"
+ i = 1
+ for path in data.paths:
+ info = self.get_info_from_paths(path)
+ results += (
+ f"Path{i}: {path.url}\n"
+ f"description: {path.description}\n"
+ f"parameters: {path.parameters}\nmethods: {info}\n"
+ )
+ i += 1
+ with open("results.txt", "w") as f:
+ f.write(results)
+ return results
diff --git a/application/requirements.txt b/application/requirements.txt
index 9c60e421..693e6283 100644
--- a/application/requirements.txt
+++ b/application/requirements.txt
@@ -57,6 +57,7 @@ nltk==3.8.1
numcodecs==0.11.0
numpy==1.24.2
openai==0.27.8
+openapi3-parser==1.1.14
packaging==23.0
pathos==0.3.0
Pillow==10.0.1
diff --git a/docs/pages/Deploying/Railway-Deploying.md b/docs/pages/Deploying/Railway-Deploying.md
new file mode 100644
index 00000000..15e2f60a
--- /dev/null
+++ b/docs/pages/Deploying/Railway-Deploying.md
@@ -0,0 +1,254 @@
+
+# Self-hosting DocsGPT on Railway
+
+
+
+Here's a step-by-step guide on how to host DocsGPT on Railway App.
+
+
+
+At first Clone and setup the project locally to run , test and Modify.
+
+
+
+### 1. Clone and GitHub SetUp
+
+a. Open Terminal (Windows Shell or Git bash(recommended)).
+
+
+
+b. Type `git clone https://github.com/arc53/DocsGPT.git`
+
+
+
+#### Download the package information
+
+
+
+Once it has finished cloning the repository, it is time to download the package information from all sources. To do so, simply enter the following command:
+
+
+
+`sudo apt update`
+
+
+
+#### Install Docker and Docker Compose
+
+
+
+DocsGPT backend and worker use Python, Frontend is written on React and the whole application is containerized using Docker. To install Docker and Docker Compose, enter the following commands:
+
+
+
+`sudo apt install docker.io`
+
+
+
+And now install docker-compose:
+
+
+
+`sudo apt install docker-compose`
+
+
+
+#### Access the DocsGPT Folder
+
+
+
+Enter the following command to access the folder in which the DocsGPT docker-compose file is present.
+
+
+
+`cd DocsGPT/`
+
+
+
+#### Prepare the Environment
+
+
+
+Inside the DocsGPT folder create a `.env` file and copy the contents of `.env_sample` into it.
+
+
+
+`nano .env`
+
+
+
+Make sure your `.env` file looks like this:
+
+
+
+```
+
+OPENAI_API_KEY=(Your OpenAI API key)
+
+VITE_API_STREAMING=true
+
+SELF_HOSTED_MODEL=false
+
+```
+
+
+
+To save the file, press CTRL+X, then Y, and then ENTER.
+
+
+
+Next, set the correct IP for the Backend by opening the docker-compose.yml file:
+
+
+
+`nano docker-compose.yml`
+
+
+
+And Change line 7 to: `VITE_API_HOST=http://localhost:7091`
+
+to this `VITE_API_HOST=http://:7091`
+
+
+
+This will allow the frontend to connect to the backend.
+
+
+
+#### Running the Application
+
+
+
+You're almost there! Now that all the necessary bits and pieces have been installed, it is time to run the application. To do so, use the following command:
+
+
+
+`sudo docker-compose up -d`
+
+
+
+Launching it for the first time will take a few minutes to download all the necessary dependencies and build.
+
+
+
+Once this is done you can go ahead and close the terminal window.
+
+
+
+### 2. Pushing it to your own Repository
+
+
+
+a. Create a Repository on your GitHub.
+
+
+
+b. Open Terminal in the same directory of the Cloned project.
+
+
+
+c. Type `git init`
+
+
+
+d. `git add .`
+
+
+
+e. `git commit -m "first-commit"`
+
+
+
+f. `git remote add origin `
+
+
+
+g. `git push git push --set-upstream origin master`
+
+Your local files will now be pushed to your GitHub Account. :)
+
+
+### 3. Create an Railway Account:
+
+
+
+If you haven't already, create or log in to your railway account do it by visiting [Railway](https://railway.app/)
+
+
+
+Signup via **GitHub** [Recommended].
+
+
+
+### 4. Start New Project:
+
+
+
+a. Open Railway app and Click on "Start New Project."
+
+
+
+b. Choose any from the list of options available (Recommended "**Deploy from GitHub Repo**")
+
+
+
+c. Choose the required Repository from your Github.
+
+
+
+d. Configure and allow access to modify your GitHub content from the pop-up window.
+
+
+
+e. Agree to all the terms and conditions.
+
+
+
+PS: It may take a few minutes for the account setup to complete.
+
+
+
+#### You will get A free trail of $5 (use it for trail and then purchase if satisfied and needed)
+
+
+
+### 5. Connecting to Your newly Railway app with GitHub
+
+
+
+a. Choose DocsGPT repo from the list of your GitHub repository that you want to deploy now.
+
+
+
+b. Click on Deploy now .
+
+
+
+
+
+
+
+c. Select Variables Tab.
+
+
+
+d. Upload the env file here that you used for local setup.
+
+
+
+e. Go to Settings Tab now.
+
+
+
+f. Go to "Networking" and click on Generate Domain Name, to get the URL of your hosted project.
+
+
+
+g. You can update the Root directory, build command, installation command as per need.
+
+*[However recommended not the disturb these options and leave them as default if not that needed.]*
+
+
+
+
+Your own DocsGPT is now available at the Generated domain URl. :)
\ No newline at end of file
diff --git a/docs/pages/Deploying/_meta.json b/docs/pages/Deploying/_meta.json
index 27090f4b..bcc9bcde 100644
--- a/docs/pages/Deploying/_meta.json
+++ b/docs/pages/Deploying/_meta.json
@@ -6,5 +6,9 @@
"Quickstart": {
"title": "โก๏ธQuickstart",
"href": "/Deploying/Quickstart"
+ },
+ "Railway-Deploying": {
+ "title": "๐Deploying on Rainway",
+ "href": "/Deploying/Railway-Deploying"
}
}
\ No newline at end of file
diff --git a/docs/pages/Deploying/image.png b/docs/pages/Deploying/image.png
new file mode 100644
index 00000000..2100e5b4
Binary files /dev/null and b/docs/pages/Deploying/image.png differ
diff --git a/docs/pages/Extensions/Chatwoot-extension.md b/docs/pages/Extensions/Chatwoot-extension.md
index f9db022b..d6494bbf 100644
--- a/docs/pages/Extensions/Chatwoot-extension.md
+++ b/docs/pages/Extensions/Chatwoot-extension.md
@@ -1,42 +1,44 @@
-### To Start Chatwoot Extension:
+## Chatwoot Extension Setup Guide
-1. **Prepare and Start DocsGPT:**
- - Launch DocsGPT using the instructions in our [wiki](https://github.com/arc53/DocsGPT/wiki).
- - Make sure to load your documentation.
+### Step 1: Prepare and Start DocsGPT
-2. **Get Access Token from Chatwoot:**
- - Navigate to Chatwoot.
- - Go to your profile (bottom left), click on profile settings.
- - Scroll to the bottom and copy the **Access Token**.
+- **Launch DocsGPT**: Follow the instructions in our [DocsGPT Wiki](https://github.com/arc53/DocsGPT/wiki) to start DocsGPT. Make sure to load your documentation.
-3. **Set Up Chatwoot Extension:**
- - Navigate to `/extensions/chatwoot`.
- - Copy `.env_sample` and create a `.env` file.
- - Fill in the values in the `.env` file:
+### Step 2: Get Access Token from Chatwoot
- ```env
- docsgpt_url=
- chatwoot_url=
- docsgpt_key=
- chatwoot_token=
- ```
+- Go to Chatwoot.
+- In your profile settings (located at the bottom left), scroll down and copy the **Access Token**.
-4. **Start the Extension:**
- - Use the command `flask run` to start the extension.
+### Step 3: Set Up Chatwoot Extension
-5. **Optional: Extra Validation**
- - In `app.py`, uncomment lines 12-13 and 71-75.
- - Add the following lines to your `.env` file:
+- Navigate to `/extensions/chatwoot`.
+- Copy the `.env_sample` file and create a new file named `.env`.
+- Fill in the values in the `.env` file as follows:
- ```env
- account_id=(optional) 1
- assignee_id=(optional) 1
- ```
+```env
+docsgpt_url=
+chatwoot_url=
+docsgpt_key=
+chatwoot_token=
+```
- These Chatwoot values help ensure you respond to the correct widget and handle questions assigned to a specific user.
+### Step 4: Start the Extension
+
+- Use the command `flask run` to start the extension.
+
+### Step 5: Optional - Extra Validation
+
+- In app.py, uncomment lines 12-13 and 71-75.
+- Add the following lines to your .env file:
+```account_id=(optional) 1
+assignee_id=(optional) 1
+```
+These Chatwoot values help ensure you respond to the correct widget and handle questions assigned to a specific user.
+
+### Stopping Bot Responses for Specific User or Session
-### Stopping Bot Responses for Specific User or Session:
- If you want the bot to stop responding to questions for a specific user or session, add a label `human-requested` in your conversation.
-### Additional Notes:
-- For further details on training on other documentation, refer to our [wiki](https://github.com/arc53/DocsGPT/wiki/How-to-train-on-other-documentation).
+### Additional Notes
+
+- For further details on training on other documentation, refer to our [wiki](https://github.com/arc53/DocsGPT/wiki/How-to-train-on-other-documentation).
\ No newline at end of file
diff --git a/docs/pages/Extensions/react-widget.md b/docs/pages/Extensions/react-widget.md
index a31306a2..4bc40854 100644
--- a/docs/pages/Extensions/react-widget.md
+++ b/docs/pages/Extensions/react-widget.md
@@ -1,22 +1,31 @@
-### How to set up react docsGPT widget on your website:
+### Setting up the DocsGPT Widget in Your React Project
+
+### Introduction:
+The DocsGPT Widget is a powerful tool that allows you to integrate AI-powered documentation assistance into your web applications. This guide will walk you through the installation and usage of the DocsGPT Widget in your React project. Whether you're building a web app or a knowledge base, this widget can enhance your user experience.
### Installation
-Got to your project and install a new dependency: `npm install docsgpt`.
+First, make sure you have Node.js and npm installed in your project. Then go to your project and install a new dependency: `npm install docsgpt`.
### Usage
-Go to your project and in the file where you want to use the widget, import it:
+In the file where you want to use the widget, import it and include the CSS file:
```js
import { DocsGPTWidget } from "docsgpt";
import "docsgpt/dist/style.css";
```
-Then you can use it like this: ``
-
-DocsGPTWidget takes 3 props:
-1. `apiHost` โ URL of your DocsGPT API.
-2. `selectDocs` โ documentation that you want to use for your widget (e.g. `default` or `local/docs1.zip`).
-3. `apiKey` โ usually it's empty.
+Now, you can use the widget in your component like this :
+```jsx
+
+```
+DocsGPTWidget takes 3 **props**:
+1. `apiHost` โ The URL of your DocsGPT API.
+2. `selectDocs` โ The documentation source that you want to use for your widget (e.g. `default` or `local/docs1.zip`).
+3. `apiKey` โ Usually, it's empty.
### How to use DocsGPTWidget with [Nextra](https://nextra.site/) (Next.js + MDX)
Install your widget as described above and then go to your `pages/` folder and create a new file `_app.js` with the following content:
@@ -32,6 +41,6 @@ export default function MyApp({ Component, pageProps }) {
>
)
}
-```
+```
diff --git a/docs/pages/Guides/How-to-use-different-LLM.md b/docs/pages/Guides/How-to-use-different-LLM.md
index 8d7cccce..c300bef3 100644
--- a/docs/pages/Guides/How-to-use-different-LLM.md
+++ b/docs/pages/Guides/How-to-use-different-LLM.md
@@ -1,36 +1,42 @@
-Fortunately, there are many providers for LLMs, and some of them can even be run locally.
+# Setting Up Local Language Models for Your App
-There are two models used in the app:
-1. Embeddings.
-2. Text generation.
+Your app relies on two essential models: Embeddings and Text Generation. While OpenAI's default models work seamlessly, you have the flexibility to switch providers or even run the models locally.
-By default, we use OpenAI's models, but if you want to change it or even run it locally, it's very simple!
+## Step 1: Configure Environment Variables
-### Go to .env file or set environment variables:
+Navigate to the `.env` file or set the following environment variables:
-`LLM_NAME=`
+```env
+LLM_NAME=
+API_KEY=
+EMBEDDINGS_NAME=
+EMBEDDINGS_KEY=
+VITE_API_STREAMING=
+```
-`API_KEY=`
+You can omit the keys if users provide their own. Ensure you set `LLM_NAME` and `EMBEDDINGS_NAME`.
-`EMBEDDINGS_NAME=`
+## Step 2: Choose Your Models
-`EMBEDDINGS_KEY=`
+**Options for `LLM_NAME`:**
+- openai
+- manifest
+- cohere
+- Arc53/docsgpt-14b
+- Arc53/docsgpt-7b-falcon
+- llama.cpp
-`VITE_API_STREAMING=`
+**Options for `EMBEDDINGS_NAME`:**
+- openai_text-embedding-ada-002
+- huggingface_sentence-transformers/all-mpnet-base-v2
+- huggingface_hkunlp/instructor-large
+- cohere_medium
-You don't need to provide keys if you are happy with users providing theirs, so make sure you set `LLM_NAME` and `EMBEDDINGS_NAME`.
+If using Llama, set `EMBEDDINGS_NAME` to `huggingface_sentence-transformers/all-mpnet-base-v2`. Download the required model and place it in the `models/` folder.
-Options:
-LLM_NAME (openai, manifest, cohere, Arc53/docsgpt-14b, Arc53/docsgpt-7b-falcon, llama.cpp)
-EMBEDDINGS_NAME (openai_text-embedding-ada-002, huggingface_sentence-transformers/all-mpnet-base-v2, huggingface_hkunlp/instructor-large, cohere_medium)
+Alternatively, for local Llama setup, run `setup.sh` and choose option 1. The script handles the DocsGPT model addition.
-If using Llama, set the `EMBEDDINGS_NAME` to `huggingface_sentence-transformers/all-mpnet-base-v2` and be sure to download [this model](https://d3dg1063dc54p9.cloudfront.net/models/docsgpt-7b-f16.gguf) into the `models/` folder: `https://d3dg1063dc54p9.cloudfront.net/models/docsgpt-7b-f16.gguf`.
+## Step 3: Local Hosting for Privacy
-Alternatively, if you wish to run Llama locally, you can run `setup.sh` and choose option 1 when prompted. You do not need to manually add the DocsGPT model mentioned above to your `models/` folder if you use `setup.sh`, as the script will manage that step for you.
-
-That's it!
-
-### Hosting everything locally and privately (for using our optimised open-source models)
-If you are working with critical data and don't want anything to leave your premises.
-
-Make sure you set `SELF_HOSTED_MODEL` as true in your `.env` variable, and for your `LLM_NAME`, you can use anything that is on Hugging Face.
+If working with sensitive data, host everything locally by setting `SELF_HOSTED_MODEL` to true in your `.env`. For `LLM_NAME`, use any model available on Hugging Face.
+That's it! Your app is now configured for local and private hosting, ensuring optimal security for critical data.
diff --git a/frontend/package-lock.json b/frontend/package-lock.json
index 5fed8451..4a67cc0c 100644
--- a/frontend/package-lock.json
+++ b/frontend/package-lock.json
@@ -43,7 +43,7 @@
"prettier-plugin-tailwindcss": "^0.2.2",
"tailwindcss": "^3.2.4",
"typescript": "^4.9.5",
- "vite": "^4.1.5",
+ "vite": "^4.5.0",
"vite-plugin-svgr": "^2.4.0"
}
},
@@ -416,9 +416,9 @@
}
},
"node_modules/@esbuild/android-arm": {
- "version": "0.16.17",
- "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.16.17.tgz",
- "integrity": "sha512-N9x1CMXVhtWEAMS7pNNONyA14f71VPQN9Cnavj1XQh6T7bskqiLLrSca4O0Vr8Wdcga943eThxnVp3JLnBMYtw==",
+ "version": "0.18.20",
+ "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.18.20.tgz",
+ "integrity": "sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw==",
"cpu": [
"arm"
],
@@ -432,9 +432,9 @@
}
},
"node_modules/@esbuild/android-arm64": {
- "version": "0.16.17",
- "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.16.17.tgz",
- "integrity": "sha512-MIGl6p5sc3RDTLLkYL1MyL8BMRN4tLMRCn+yRJJmEDvYZ2M7tmAf80hx1kbNEUX2KJ50RRtxZ4JHLvCfuB6kBg==",
+ "version": "0.18.20",
+ "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.18.20.tgz",
+ "integrity": "sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ==",
"cpu": [
"arm64"
],
@@ -448,9 +448,9 @@
}
},
"node_modules/@esbuild/android-x64": {
- "version": "0.16.17",
- "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.16.17.tgz",
- "integrity": "sha512-a3kTv3m0Ghh4z1DaFEuEDfz3OLONKuFvI4Xqczqx4BqLyuFaFkuaG4j2MtA6fuWEFeC5x9IvqnX7drmRq/fyAQ==",
+ "version": "0.18.20",
+ "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.18.20.tgz",
+ "integrity": "sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg==",
"cpu": [
"x64"
],
@@ -464,9 +464,9 @@
}
},
"node_modules/@esbuild/darwin-arm64": {
- "version": "0.16.17",
- "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.16.17.tgz",
- "integrity": "sha512-/2agbUEfmxWHi9ARTX6OQ/KgXnOWfsNlTeLcoV7HSuSTv63E4DqtAc+2XqGw1KHxKMHGZgbVCZge7HXWX9Vn+w==",
+ "version": "0.18.20",
+ "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.18.20.tgz",
+ "integrity": "sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA==",
"cpu": [
"arm64"
],
@@ -480,9 +480,9 @@
}
},
"node_modules/@esbuild/darwin-x64": {
- "version": "0.16.17",
- "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.16.17.tgz",
- "integrity": "sha512-2By45OBHulkd9Svy5IOCZt376Aa2oOkiE9QWUK9fe6Tb+WDr8hXL3dpqi+DeLiMed8tVXspzsTAvd0jUl96wmg==",
+ "version": "0.18.20",
+ "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.18.20.tgz",
+ "integrity": "sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ==",
"cpu": [
"x64"
],
@@ -496,9 +496,9 @@
}
},
"node_modules/@esbuild/freebsd-arm64": {
- "version": "0.16.17",
- "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.16.17.tgz",
- "integrity": "sha512-mt+cxZe1tVx489VTb4mBAOo2aKSnJ33L9fr25JXpqQqzbUIw/yzIzi+NHwAXK2qYV1lEFp4OoVeThGjUbmWmdw==",
+ "version": "0.18.20",
+ "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.18.20.tgz",
+ "integrity": "sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw==",
"cpu": [
"arm64"
],
@@ -512,9 +512,9 @@
}
},
"node_modules/@esbuild/freebsd-x64": {
- "version": "0.16.17",
- "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.16.17.tgz",
- "integrity": "sha512-8ScTdNJl5idAKjH8zGAsN7RuWcyHG3BAvMNpKOBaqqR7EbUhhVHOqXRdL7oZvz8WNHL2pr5+eIT5c65kA6NHug==",
+ "version": "0.18.20",
+ "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.18.20.tgz",
+ "integrity": "sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ==",
"cpu": [
"x64"
],
@@ -528,9 +528,9 @@
}
},
"node_modules/@esbuild/linux-arm": {
- "version": "0.16.17",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.16.17.tgz",
- "integrity": "sha512-iihzrWbD4gIT7j3caMzKb/RsFFHCwqqbrbH9SqUSRrdXkXaygSZCZg1FybsZz57Ju7N/SHEgPyaR0LZ8Zbe9gQ==",
+ "version": "0.18.20",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.18.20.tgz",
+ "integrity": "sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg==",
"cpu": [
"arm"
],
@@ -544,9 +544,9 @@
}
},
"node_modules/@esbuild/linux-arm64": {
- "version": "0.16.17",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.16.17.tgz",
- "integrity": "sha512-7S8gJnSlqKGVJunnMCrXHU9Q8Q/tQIxk/xL8BqAP64wchPCTzuM6W3Ra8cIa1HIflAvDnNOt2jaL17vaW+1V0g==",
+ "version": "0.18.20",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.18.20.tgz",
+ "integrity": "sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA==",
"cpu": [
"arm64"
],
@@ -560,9 +560,9 @@
}
},
"node_modules/@esbuild/linux-ia32": {
- "version": "0.16.17",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.16.17.tgz",
- "integrity": "sha512-kiX69+wcPAdgl3Lonh1VI7MBr16nktEvOfViszBSxygRQqSpzv7BffMKRPMFwzeJGPxcio0pdD3kYQGpqQ2SSg==",
+ "version": "0.18.20",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.18.20.tgz",
+ "integrity": "sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA==",
"cpu": [
"ia32"
],
@@ -576,9 +576,9 @@
}
},
"node_modules/@esbuild/linux-loong64": {
- "version": "0.16.17",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.16.17.tgz",
- "integrity": "sha512-dTzNnQwembNDhd654cA4QhbS9uDdXC3TKqMJjgOWsC0yNCbpzfWoXdZvp0mY7HU6nzk5E0zpRGGx3qoQg8T2DQ==",
+ "version": "0.18.20",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.18.20.tgz",
+ "integrity": "sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg==",
"cpu": [
"loong64"
],
@@ -592,9 +592,9 @@
}
},
"node_modules/@esbuild/linux-mips64el": {
- "version": "0.16.17",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.16.17.tgz",
- "integrity": "sha512-ezbDkp2nDl0PfIUn0CsQ30kxfcLTlcx4Foz2kYv8qdC6ia2oX5Q3E/8m6lq84Dj/6b0FrkgD582fJMIfHhJfSw==",
+ "version": "0.18.20",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.18.20.tgz",
+ "integrity": "sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ==",
"cpu": [
"mips64el"
],
@@ -608,9 +608,9 @@
}
},
"node_modules/@esbuild/linux-ppc64": {
- "version": "0.16.17",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.16.17.tgz",
- "integrity": "sha512-dzS678gYD1lJsW73zrFhDApLVdM3cUF2MvAa1D8K8KtcSKdLBPP4zZSLy6LFZ0jYqQdQ29bjAHJDgz0rVbLB3g==",
+ "version": "0.18.20",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.18.20.tgz",
+ "integrity": "sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA==",
"cpu": [
"ppc64"
],
@@ -624,9 +624,9 @@
}
},
"node_modules/@esbuild/linux-riscv64": {
- "version": "0.16.17",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.16.17.tgz",
- "integrity": "sha512-ylNlVsxuFjZK8DQtNUwiMskh6nT0vI7kYl/4fZgV1llP5d6+HIeL/vmmm3jpuoo8+NuXjQVZxmKuhDApK0/cKw==",
+ "version": "0.18.20",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.18.20.tgz",
+ "integrity": "sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A==",
"cpu": [
"riscv64"
],
@@ -640,9 +640,9 @@
}
},
"node_modules/@esbuild/linux-s390x": {
- "version": "0.16.17",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.16.17.tgz",
- "integrity": "sha512-gzy7nUTO4UA4oZ2wAMXPNBGTzZFP7mss3aKR2hH+/4UUkCOyqmjXiKpzGrY2TlEUhbbejzXVKKGazYcQTZWA/w==",
+ "version": "0.18.20",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.18.20.tgz",
+ "integrity": "sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ==",
"cpu": [
"s390x"
],
@@ -656,9 +656,9 @@
}
},
"node_modules/@esbuild/linux-x64": {
- "version": "0.16.17",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.16.17.tgz",
- "integrity": "sha512-mdPjPxfnmoqhgpiEArqi4egmBAMYvaObgn4poorpUaqmvzzbvqbowRllQ+ZgzGVMGKaPkqUmPDOOFQRUFDmeUw==",
+ "version": "0.18.20",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.18.20.tgz",
+ "integrity": "sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w==",
"cpu": [
"x64"
],
@@ -672,9 +672,9 @@
}
},
"node_modules/@esbuild/netbsd-x64": {
- "version": "0.16.17",
- "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.16.17.tgz",
- "integrity": "sha512-/PzmzD/zyAeTUsduZa32bn0ORug+Jd1EGGAUJvqfeixoEISYpGnAezN6lnJoskauoai0Jrs+XSyvDhppCPoKOA==",
+ "version": "0.18.20",
+ "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.18.20.tgz",
+ "integrity": "sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A==",
"cpu": [
"x64"
],
@@ -688,9 +688,9 @@
}
},
"node_modules/@esbuild/openbsd-x64": {
- "version": "0.16.17",
- "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.16.17.tgz",
- "integrity": "sha512-2yaWJhvxGEz2RiftSk0UObqJa/b+rIAjnODJgv2GbGGpRwAfpgzyrg1WLK8rqA24mfZa9GvpjLcBBg8JHkoodg==",
+ "version": "0.18.20",
+ "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.18.20.tgz",
+ "integrity": "sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg==",
"cpu": [
"x64"
],
@@ -704,9 +704,9 @@
}
},
"node_modules/@esbuild/sunos-x64": {
- "version": "0.16.17",
- "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.16.17.tgz",
- "integrity": "sha512-xtVUiev38tN0R3g8VhRfN7Zl42YCJvyBhRKw1RJjwE1d2emWTVToPLNEQj/5Qxc6lVFATDiy6LjVHYhIPrLxzw==",
+ "version": "0.18.20",
+ "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.18.20.tgz",
+ "integrity": "sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ==",
"cpu": [
"x64"
],
@@ -720,9 +720,9 @@
}
},
"node_modules/@esbuild/win32-arm64": {
- "version": "0.16.17",
- "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.16.17.tgz",
- "integrity": "sha512-ga8+JqBDHY4b6fQAmOgtJJue36scANy4l/rL97W+0wYmijhxKetzZdKOJI7olaBaMhWt8Pac2McJdZLxXWUEQw==",
+ "version": "0.18.20",
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.18.20.tgz",
+ "integrity": "sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg==",
"cpu": [
"arm64"
],
@@ -736,9 +736,9 @@
}
},
"node_modules/@esbuild/win32-ia32": {
- "version": "0.16.17",
- "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.16.17.tgz",
- "integrity": "sha512-WnsKaf46uSSF/sZhwnqE4L/F89AYNMiD4YtEcYekBt9Q7nj0DiId2XH2Ng2PHM54qi5oPrQ8luuzGszqi/veig==",
+ "version": "0.18.20",
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.18.20.tgz",
+ "integrity": "sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g==",
"cpu": [
"ia32"
],
@@ -752,9 +752,9 @@
}
},
"node_modules/@esbuild/win32-x64": {
- "version": "0.16.17",
- "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.16.17.tgz",
- "integrity": "sha512-y+EHuSchhL7FjHgvQL/0fnnFmO4T1bhvWANX6gcnqTjtnKWbTvUMCpGnv2+t+31d7RzyEAYAd4u2fnIhHL6N/Q==",
+ "version": "0.18.20",
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.18.20.tgz",
+ "integrity": "sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ==",
"cpu": [
"x64"
],
@@ -2561,9 +2561,9 @@
}
},
"node_modules/esbuild": {
- "version": "0.16.17",
- "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.16.17.tgz",
- "integrity": "sha512-G8LEkV0XzDMNwXKgM0Jwu3nY3lSTwSGY6XbxM9cr9+s0T/qSV1q1JVPBGzm3dcjhCic9+emZDmMffkwgPeOeLg==",
+ "version": "0.18.20",
+ "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.18.20.tgz",
+ "integrity": "sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA==",
"dev": true,
"hasInstallScript": true,
"bin": {
@@ -2573,28 +2573,28 @@
"node": ">=12"
},
"optionalDependencies": {
- "@esbuild/android-arm": "0.16.17",
- "@esbuild/android-arm64": "0.16.17",
- "@esbuild/android-x64": "0.16.17",
- "@esbuild/darwin-arm64": "0.16.17",
- "@esbuild/darwin-x64": "0.16.17",
- "@esbuild/freebsd-arm64": "0.16.17",
- "@esbuild/freebsd-x64": "0.16.17",
- "@esbuild/linux-arm": "0.16.17",
- "@esbuild/linux-arm64": "0.16.17",
- "@esbuild/linux-ia32": "0.16.17",
- "@esbuild/linux-loong64": "0.16.17",
- "@esbuild/linux-mips64el": "0.16.17",
- "@esbuild/linux-ppc64": "0.16.17",
- "@esbuild/linux-riscv64": "0.16.17",
- "@esbuild/linux-s390x": "0.16.17",
- "@esbuild/linux-x64": "0.16.17",
- "@esbuild/netbsd-x64": "0.16.17",
- "@esbuild/openbsd-x64": "0.16.17",
- "@esbuild/sunos-x64": "0.16.17",
- "@esbuild/win32-arm64": "0.16.17",
- "@esbuild/win32-ia32": "0.16.17",
- "@esbuild/win32-x64": "0.16.17"
+ "@esbuild/android-arm": "0.18.20",
+ "@esbuild/android-arm64": "0.18.20",
+ "@esbuild/android-x64": "0.18.20",
+ "@esbuild/darwin-arm64": "0.18.20",
+ "@esbuild/darwin-x64": "0.18.20",
+ "@esbuild/freebsd-arm64": "0.18.20",
+ "@esbuild/freebsd-x64": "0.18.20",
+ "@esbuild/linux-arm": "0.18.20",
+ "@esbuild/linux-arm64": "0.18.20",
+ "@esbuild/linux-ia32": "0.18.20",
+ "@esbuild/linux-loong64": "0.18.20",
+ "@esbuild/linux-mips64el": "0.18.20",
+ "@esbuild/linux-ppc64": "0.18.20",
+ "@esbuild/linux-riscv64": "0.18.20",
+ "@esbuild/linux-s390x": "0.18.20",
+ "@esbuild/linux-x64": "0.18.20",
+ "@esbuild/netbsd-x64": "0.18.20",
+ "@esbuild/openbsd-x64": "0.18.20",
+ "@esbuild/sunos-x64": "0.18.20",
+ "@esbuild/win32-arm64": "0.18.20",
+ "@esbuild/win32-ia32": "0.18.20",
+ "@esbuild/win32-x64": "0.18.20"
}
},
"node_modules/escalade": {
@@ -6482,9 +6482,9 @@
}
},
"node_modules/rollup": {
- "version": "3.14.0",
- "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.14.0.tgz",
- "integrity": "sha512-o23sdgCLcLSe3zIplT9nQ1+r97okuaiR+vmAPZPTDYB7/f3tgWIYNyiQveMsZwshBT0is4eGax/HH83Q7CG+/Q==",
+ "version": "3.29.4",
+ "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.29.4.tgz",
+ "integrity": "sha512-oWzmBZwvYrU0iJHtDmhsm662rC15FRXmcjCk1xD771dFDx5jJ02ufAQQTn0etB2emNk4J9EZg/yWKpsn9BWGRw==",
"dev": true,
"bin": {
"rollup": "dist/bin/rollup"
@@ -7249,15 +7249,14 @@
}
},
"node_modules/vite": {
- "version": "4.1.5",
- "resolved": "https://registry.npmjs.org/vite/-/vite-4.1.5.tgz",
- "integrity": "sha512-zJ0RiVkf61kpd7O+VtU6r766xgnTaIknP/lR6sJTZq3HtVJ3HGnTo5DaJhTUtYoTyS/CQwZ6yEVdc/lrmQT7dQ==",
+ "version": "4.5.0",
+ "resolved": "https://registry.npmjs.org/vite/-/vite-4.5.0.tgz",
+ "integrity": "sha512-ulr8rNLA6rkyFAlVWw2q5YJ91v098AFQ2R0PRFwPzREXOUJQPtFUG0t+/ZikhaOCDqFoDhN6/v8Sq0o4araFAw==",
"dev": true,
"dependencies": {
- "esbuild": "^0.16.14",
- "postcss": "^8.4.21",
- "resolve": "^1.22.1",
- "rollup": "^3.10.0"
+ "esbuild": "^0.18.10",
+ "postcss": "^8.4.27",
+ "rollup": "^3.27.1"
},
"bin": {
"vite": "bin/vite.js"
@@ -7265,12 +7264,16 @@
"engines": {
"node": "^14.18.0 || >=16.0.0"
},
+ "funding": {
+ "url": "https://github.com/vitejs/vite?sponsor=1"
+ },
"optionalDependencies": {
"fsevents": "~2.3.2"
},
"peerDependencies": {
"@types/node": ">= 14",
"less": "*",
+ "lightningcss": "^1.21.0",
"sass": "*",
"stylus": "*",
"sugarss": "*",
@@ -7283,6 +7286,9 @@
"less": {
"optional": true
},
+ "lightningcss": {
+ "optional": true
+ },
"sass": {
"optional": true
},
diff --git a/frontend/package.json b/frontend/package.json
index 9dcbf4ae..0d9c3fd4 100644
--- a/frontend/package.json
+++ b/frontend/package.json
@@ -54,7 +54,7 @@
"prettier-plugin-tailwindcss": "^0.2.2",
"tailwindcss": "^3.2.4",
"typescript": "^4.9.5",
- "vite": "^4.1.5",
+ "vite": "^4.5.0",
"vite-plugin-svgr": "^2.4.0"
}
}
diff --git a/frontend/src/App.tsx b/frontend/src/App.tsx
index 44540943..878a98f9 100644
--- a/frontend/src/App.tsx
+++ b/frontend/src/App.tsx
@@ -2,6 +2,7 @@ import { Routes, Route } from 'react-router-dom';
import Navigation from './Navigation';
import Conversation from './conversation/Conversation';
import About from './About';
+import PageNotFound from './PageNotFound';
import { inject } from '@vercel/analytics';
import { useMediaQuery } from './hooks';
import { useState } from 'react';
@@ -25,6 +26,7 @@ export default function App() {
} />
} />
+ } />
diff --git a/frontend/src/Hero.tsx b/frontend/src/Hero.tsx
index 0644da67..34347c09 100644
--- a/frontend/src/Hero.tsx
+++ b/frontend/src/Hero.tsx
@@ -17,9 +17,9 @@ export default function Hero({ className = '' }: { className?: string }) {
Start by entering your query in the input field below and we will do the
rest!