diff --git a/.env.example b/.env.example index 0f7cdcc..9ba9e27 100644 --- a/.env.example +++ b/.env.example @@ -56,7 +56,7 @@ POSTGRES_CONNECTION_URL=postgres://${POSTGRES_USER}:${POSTGRES_PASSWORD}@postgre # MongoDB MONGO_PORT=27017 -MONGO_URI=mongodb://mongo:${MONGO_PORT}/merlinn-db +MONGO_URI=mongodb://mongo:${MONGO_PORT}/vespper-db # ChromaDB CHROMA_PORT=8000 @@ -130,4 +130,4 @@ PAGERDUTY_SECRET="put your secret" # Log parser LOG_PARSER_PORT=3004 -LOG_PARSER_URL=${ENVOY_URL}/log-parser \ No newline at end of file +LOG_PARSER_URL=${ENVOY_URL}/log-parser diff --git a/.gitignore b/.gitignore index 7cb9003..b666e43 100644 --- a/.gitignore +++ b/.gitignore @@ -17,7 +17,7 @@ data *.launch .settings/ *.sublime-workspace -merlinn.iml +vespper.iml # IDE - VSCode .vscode/* @@ -55,5 +55,5 @@ config/litellm/.env .terraform.tfstate.lock.info terraform.tfstate terraform.tfstate.backup -merlinn-aws -merlinn-aws.pub \ No newline at end of file +vespper-aws +vespper-aws.pub diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 32518ca..6850395 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -10,7 +10,7 @@ Here’s how you can help out: This guide will walk you through our development process, where to get help and other handy resources. We want to make it easy for you to get involved, whether it’s updating our docs, improving the app, or fixing some bugs. -Got questions? We are hanging out on [Slack](https://join.slack.com/t/merlinncommunity/signup), ready to help. +Got questions? We are hanging out on [Slack](https://join.slack.com/t/vesppercommunity/signup), ready to help. If you’re short on time for coding, no worries! You can still support Merlinn in other ways: @@ -123,7 +123,7 @@ Additionally, if you want to work on our Python services (currently only the `da ```bash yarn install ``` -2. Create a `.env` file as described in the [quickstart guide](https://github.com/merlinn-co/merlinn?tab=readme-ov-file#quick-installation-%EF%B8%8F). +2. Create a `.env` file as described in the [quickstart guide](https://github.com/vespper/vespper?tab=readme-ov-file#quick-installation-%EF%B8%8F). 3. Run the infrastructure services using docker: ```bash docker compose --profile infra up diff --git a/README.md b/README.md index c5b62cc..194b2f4 100644 --- a/README.md +++ b/README.md @@ -1,34 +1,34 @@ # Merlinn - open-source AI on-call developer
- + Merlinn-logo

- Docs · + Docs · Demo · - Report Bug · - Feature Request · - Blog · - Slack + Report Bug · + Feature Request · + Blog · + Slack

- - -Apache 2.0 License - -main-workflow + + +Apache 2.0 License + +main-workflow code style: prettier - -slack-logo + +slack-logo
@@ -49,11 +49,11 @@ Most people don't like to do on-call shifts. It requires engineers to be swift a - [Getting started](#getting-started-) - [Prerequisites](#prerequisites-) - [Quick Installation](#quick-installation-) - - [Updating Merlinn](#updating-merlinn-️-) + - [Updating Merlinn](#updating-vespper-️-) - [Deployment](#deployment-) - [Visualize Knowledge Base](#visualize-knowledge-base-) - [Support and feedback](#support-and-feedback-️) -- [Contributing to Merlinn](#contributing-to-merlinn-️) +- [Contributing to Merlinn](#contributing-to-vespper-️) - [Troubleshooting](#troubleshooting-️) - [Telemetry](#telemetry-) - [License](#license-) @@ -91,7 +91,7 @@ You can find the installation video [here](https://www.loom.com/share/1f562cb067 1. Clone the repository: ```bash - git clone git@github.com:merlinn-co/merlinn.git && cd merlinn + git clone git@github.com:vespper/vespper.git && cd vespper ``` 2. Configure LiteLLM Proxy Server: @@ -121,7 +121,7 @@ You can find the installation video [here](https://www.loom.com/share/1f562cb067 5. Update these variables: - - `SLACK_BOT_TOKEN`, `SLACK_APP_TOKEN` and `SLACK_SIGNING_SECRET` - These variables are needed in order to talk to Merlinn on Slack. Please follow [this guide](https://github.com/merlinn-co/merlinn/tree/main/config/slack/README.md) to create a new Slack app in your organization. + - `SLACK_BOT_TOKEN`, `SLACK_APP_TOKEN` and `SLACK_SIGNING_SECRET` - These variables are needed in order to talk to Merlinn on Slack. Please follow [this guide](https://github.com/vespper/vespper/tree/main/config/slack/README.md) to create a new Slack app in your organization. - (Optional) `SMTP_CONNECTION_URL` - This variable is needed in order to invite new members to your Merlinn organization via email and allow them to use the bot. It's not mandatory if you just want to test Merlinn and play with it. If you do want to send invites to your team members, you can use a service like SendGrid/Mailgun. Should follow this pattern: `smtp://username:password@domain:port`. @@ -133,25 +133,25 @@ You can find the installation video [here](https://www.loom.com/share/1f562cb067 That's it. You should be able to visit Merlinn's dashboard in http://localhost:5173. Simply create a user **(with the same e-mail as the one in your Slack user)** and start to configure your organization. If something does not work for you, please checkout our [troubleshooting](#troubleshooting-️) or reach out to us via our [support channels](#support-and-feedback-️). -The next steps are to configure your organization a bit more (connect incident management tools, build a knowledge base, etc). Head over to the [connect & configure](https://docs.merlinn.co/Getting%20started/Configure%20&%20connect) section in our docs for more information 💫 +The next steps are to configure your organization a bit more (connect incident management tools, build a knowledge base, etc). Head over to the [connect & configure](https://docs.vespper.com/Getting%20started/Configure%20&%20connect) section in our docs for more information 💫 #### Using DockerHub images -If you want, you can pull our [Docker images](https://hub.docker.com/u/merlinnco) from DockerHub instead of cloning the repo & building from scratch. +If you want, you can pull our [Docker images](https://hub.docker.com/u/vespper) from DockerHub instead of cloning the repo & building from scratch. In order to do that, follow these steps: 1. Download configuration files: ```bash - curl https://raw.githubusercontent.com/merlinn-co/merlinn/main/tools/scripts/download_env_files.sh | sh + curl https://raw.githubusercontent.com/vespper/vespper/main/tools/scripts/download_env_files.sh | sh ``` 2. Follow steps 2 and 5 above to configure LiteLLM Proxy and your `.env` file respectively. Namely, you'd need to configure your OpenAI key at `config/litellm/.env` and configure your Slack credentials in the root `.env`. 3. Spin up the environment using docker compose: ```bash - curl https://raw.githubusercontent.com/merlinn-co/merlinn/main/tools/scripts/start.sh | sh + curl https://raw.githubusercontent.com/vespper/vespper/main/tools/scripts/start.sh | sh ``` That's it 💫 You should be able to visit Merlinn's dashboard in http://localhost:5173. @@ -172,7 +172,7 @@ That's it 💫 You should be able to visit Merlinn's dashboard in http://localho ### Deployment ☁️ -Visit our [example guides](https://github.com/merlinn-co/merlinn/tree/main/examples) in order to deploy Merlinn to your cloud. +Visit our [example guides](https://github.com/vespper/vespper/tree/main/examples) in order to deploy Merlinn to your cloud. ### Visualize Knowledge Base 🗺️ @@ -193,16 +193,16 @@ To learn how to use VectorAdmin, visit the [docs](https://github.com/Mintplex-La In order of preference the best way to communicate with us: - **GitHub Discussions**: Contribute ideas, support requests and report bugs (preferred as there is a static & permanent for other community members). -- **Slack**: community support. Click [here](https://merlinn.co/#community) to join. -- **Privately**: contact at support@merlinn.co +- **Slack**: community support. Click [here](https://vespper.com/#community) to join. +- **Privately**: contact at support@vespper.com ## Contributing to Merlinn ⛑️ -If you're interested in contributing to Merlinn, checkout our [`CONTRIBUTING.md`](https://github.com/merlinn-co/merlinn/blob/main/CONTRIBUTING.md) file 💫 🧙‍♂️ +If you're interested in contributing to Merlinn, checkout our [`CONTRIBUTING.md`](https://github.com/vespper/vespper/blob/main/CONTRIBUTING.md) file 💫 🧙‍♂️ ## Troubleshooting ⚒️ -If you encounter any problems/errors/issues with Merlinn, checkout our [troubleshooting guide](https://github.com/merlinn-co/merlinn/tree/main/TROUBLESHOOTING.md). We try to update it regularly, and fix some of the urgent problems there as soon as possible. +If you encounter any problems/errors/issues with Merlinn, checkout our [troubleshooting guide](https://github.com/vespper/vespper/tree/main/TROUBLESHOOTING.md). We try to update it regularly, and fix some of the urgent problems there as soon as possible. Moreover, feel free to reach out to us at our [support channels](#support-and-feedback-️). @@ -215,17 +215,17 @@ This allows us to: - Understand how Merlinn is used so we can improve it. - Track overall usage for internal purposes and external reporting, such as for fundraising. -Rest assured, the data collected is not shared with third parties and does not include any sensitive information. We aim to be transparent, and you can review the specific data we collect [here](https://github.com/merlinn-co/merlinn/blob/main/services/api/src/telemetry/listener.ts). +Rest assured, the data collected is not shared with third parties and does not include any sensitive information. We aim to be transparent, and you can review the specific data we collect [here](https://github.com/vespper/vespper/blob/main/services/api/src/telemetry/listener.ts). If you prefer not to participate, you can easily opt-out by setting `TELEMETRY_ENABLED=false` inside your `.env`. ## License 📃 -This project is licensed under the Apache 2.0 license - see the [LICENSE](https://github.com/merlinn-co/merlinn/tree/main/LICENSE.md) file for details +This project is licensed under the Apache 2.0 license - see the [LICENSE](https://github.com/vespper/vespper/tree/main/LICENSE.md) file for details ## Learn more 🔍 -Check out the official website at https://merlinn.co for more information. +Check out the official website at https://vespper.com for more information. ## Contributors ✨ diff --git a/SECURITY.md b/SECURITY.md index 009c1f8..05a5f05 100644 --- a/SECURITY.md +++ b/SECURITY.md @@ -1,3 +1,3 @@ We strongly recommend using the latest version of Merlinn to receive all security updates. -For more information, please refer to our [Data Security & Privacy](https://docs.merlinn.co/Data%20Privacy%20&%20Security) page in the documentation or contact security@merlinn.com. +For more information, please refer to our [Data Security & Privacy](https://docs.vespper.com/Data%20Privacy%20&%20Security) page in the documentation or contact security@vespper.comm. diff --git a/TROUBLESHOOTING.md b/TROUBLESHOOTING.md index a22e832..9ccd7dd 100644 --- a/TROUBLESHOOTING.md +++ b/TROUBLESHOOTING.md @@ -1,7 +1,7 @@ # Troubleshooting Merlinn In this document, you can find common scenarios where we're currently have problems. If you're interested in some of these -issues and want to help, feel free to create an [issue](https://github.com/merlinn-co/merlinn/issues). +issues and want to help, feel free to create an [issue](https://github.com/vespper/vespper/issues). ### `service "X" can't be used with extends as it declare depends_on` @@ -18,7 +18,7 @@ Once your `.env` is updated, restart your containers using `docker compose up -d This is not an error, but a scenario where you cannot send messages to Merlinn. It usually means you didn't enable the messages capability. Go to "App Home" and enable "Messages Tab" and "Allow users to send Slash commands and messages from the messages tab". -More information can be found in the [Slack guide](https://github.com/merlinn-co/merlinn/tree/main/config/slack). +More information can be found in the [Slack guide](https://github.com/vespper/vespper/tree/main/config/slack). ### `An API error occured: invalid_auth` diff --git a/config/litellm/config.example.yaml b/config/litellm/config.example.yaml index 3131ba5..0db1b09 100644 --- a/config/litellm/config.example.yaml +++ b/config/litellm/config.example.yaml @@ -2,7 +2,7 @@ ### LLM Setup file #### ######################### -# In order to use merlinn, you need to provide 2 models: chat model and an embedding model. Our Opensource version supports OpenAI's models. +# In order to use vespper, you need to provide 2 models: chat model and an embedding model. Our Opensource version supports OpenAI's models. # You must keep the naming convention of the model_list as it is. Namely, model_name: chat-model and model_name: embedding-model model_list: diff --git a/config/slack/README.md b/config/slack/README.md index 43070ec..127a81d 100644 --- a/config/slack/README.md +++ b/config/slack/README.md @@ -33,29 +33,29 @@ Once the app is installed, continue to the next section where you'll extract som In this section, you will configure some more things and extract these 3 variables: `SLACK_SIGNING_SECRET`, `SLACK_APP_TOKEN` and `SLACK_BOT_TOKEN`. They are needed in order for Merlinn's services to interact with your workspace. 1. In the "Basic Information" page, copy the “Signing Secret” from the Slack app settings and paste it into the .env file as `SLACK_SIGNING_SECRET`. -2. In the same page "Basic Information", go to "App-Level Tokens" and click "Generate Token and Scopes". Give it a meaningful name (e.g merlinn-token) and grant it 2 scopes: `connections:write` and `authorizations:read`. Copy the token and put it in the main `.env` as `SLACK_APP_TOKEN`. +2. In the same page "Basic Information", go to "App-Level Tokens" and click "Generate Token and Scopes". Give it a meaningful name (e.g vespper-token) and grant it 2 scopes: `connections:write` and `authorizations:read`. Copy the token and put it in the main `.env` as `SLACK_APP_TOKEN`. 3. In the "OAuth & Permissions", copy the “Bot User OAuth Token” and put it in the main `.env` as `SLACK_BOT_TOKEN`. 4. Go to "App Home" and enable "Messages Tab" and "Allow users to send Slash commands and messages from the messages tab". ### **(Optional)** Customize the Slack app 1. You can change the name and background color of the Slackbot in the Slack app settings. -2. You can use Merlinn's logo as your app's logo. View the logo [here](https://storage.googleapis.com/merlinn-assets/brand/logo-wizard-full.jpg). +2. You can use Merlinn's logo as your app's logo. View the logo [here](https://storage.googleapis.com/vespper-assets/brand/vespper-cat.png). ### Test the Slack app -To test the app, you should launch the slackbot & project. Go back to the [readme](https://github.com/merlinn-co/merlinn?tab=readme-ov-file#quick-installation-%EF%B8%8F) and go to step 6 ("launch the project"). +To test the app, you should launch the slackbot & project. Go back to the [readme](https://github.com/vespper/vespper?tab=readme-ov-file#quick-installation-%EF%B8%8F) and go to step 6 ("launch the project"). After you launch it, follow these steps to test the Slack app: 1. Go to your Slack workspace and go to Merlinn's direct messages. -2. Write `/merlinn help` in the message bar. +2. Write `/vespper help` in the message bar. Now you should see the help message of the bot! 🥳 This means the basic functionality works. ## Next Steps -If you were redirected to this guide from the main README.md, please continue to setup your environment [there](https://github.com/merlinn-co/merlinn?tab=readme-ov-file#quick-installation-%EF%B8%8F). +If you were redirected to this guide from the main README.md, please continue to setup your environment [there](https://github.com/vespper/vespper?tab=readme-ov-file#quick-installation-%EF%B8%8F). -Also, you can visit our [docs](https://docs.merlinn.co/) for more information. +Also, you can visit our [docs](https://docs.vespper.com/) for more information. diff --git a/config/slack/manifest.self-hosted.yaml b/config/slack/manifest.self-hosted.yaml index 36eba9d..90b1943 100644 --- a/config/slack/manifest.self-hosted.yaml +++ b/config/slack/manifest.self-hosted.yaml @@ -7,7 +7,7 @@ features: display_name: Merlinn always_online: false slash_commands: - - command: /merlinn + - command: /vespper description: Manage Merlinn should_escape: false oauth_config: diff --git a/docker-compose.images.yml b/docker-compose.images.yml index 04cf256..9b7dadf 100644 --- a/docker-compose.images.yml +++ b/docker-compose.images.yml @@ -49,24 +49,24 @@ services: extends: file: docker-compose.common.yml service: api-common - image: merlinnco/api:latest + image: vespper/api:latest slackbot: extends: file: docker-compose.common.yml service: slackbot-common - image: merlinnco/slackbot:latest + image: vespper/slackbot:latest data-processor: extends: file: docker-compose.common.yml service: data-processor-common - image: merlinnco/data-processor:latest + image: vespper/data-processor:latest log-parser: extends: file: docker-compose.common.yml service: log-parser-common - image: merlinnco/log-parser:latest + image: vespper/log-parser:latest dashboard: extends: file: docker-compose.common.yml service: dashboard-common - image: merlinnco/dashboard:latest + image: vespper/dashboard:latest diff --git a/examples/README.md b/examples/README.md index a7c58a1..a0ab77d 100644 --- a/examples/README.md +++ b/examples/README.md @@ -6,4 +6,4 @@ In this directory, you can find several examples on how to work with Merlinn. | Section | Description | | :---------------------------------------------------------------------------------- | :---------------------------------------: | -| [Deployments](https://github.com/merlinn-co/merlinn/tree/main/examples/deployments) | Learn how to deploy Merlinn to your cloud | +| [Deployments](https://github.com/vespper/vespper/tree/main/examples/deployments) | Learn how to deploy Merlinn to your cloud | diff --git a/examples/deployments/aws-terraform/README.md b/examples/deployments/aws-terraform/README.md index 3bf0238..209ee79 100644 --- a/examples/deployments/aws-terraform/README.md +++ b/examples/deployments/aws-terraform/README.md @@ -56,10 +56,10 @@ terraform init ### 3. Create SSH key -Generate SSH key to use with your merlinn instance, in order for you to login to your EC2: +Generate SSH key to use with your vespper instance, in order for you to login to your EC2: ```bash -ssh-keygen -t RSA -b 4096 -C "Merlinn AWS Key" -N "" -f ./merlinn-aws && chmod 400 ./merlinn-aws +ssh-keygen -t RSA -b 4096 -C "Merlinn AWS Key" -N "" -f ./vespper-aws && chmod 400 ./vespper-aws ``` ### 4. Set up your Terraform variables and deploy your instance @@ -98,7 +98,7 @@ export instance_public_ip=$(terraform output instance_public_ip | sed 's/"//g') Connect to your EC2 via SSH: ```bash -ssh -i ./merlinn-aws ubuntu@$instance_public_ip +ssh -i ./vespper-aws ubuntu@$instance_public_ip ``` #### 5.3 Make sure Docker process is complete diff --git a/examples/deployments/aws-terraform/merlinn.tf b/examples/deployments/aws-terraform/merlinn.tf index 851f88b..f8b6a78 100644 --- a/examples/deployments/aws-terraform/merlinn.tf +++ b/examples/deployments/aws-terraform/merlinn.tf @@ -12,8 +12,8 @@ provider "aws" { } # Create security group -resource "aws_security_group" "merlinn_sg" { - name = "merlinn-cluster-sg" +resource "aws_security_group" "vespper_sg" { + name = "vespper-cluster-sg" description = "Security group for the cluster nodes" ingress { @@ -44,8 +44,8 @@ resource "aws_security_group" "merlinn_sg" { tags = local.tags } -resource "aws_key_pair" "merlinn-keypair" { - key_name = "merlinn-keypair" # Replace with your desired key pair name +resource "aws_key_pair" "vespper-keypair" { + key_name = "vespper-keypair" # Replace with your desired key pair name public_key = file(var.ssh_public_key) # Replace with the path to your public key file } @@ -69,11 +69,11 @@ data "aws_ami" "ubuntu" { owners = ["099720109477"] # Canonical } # Create EC2 instances -resource "aws_instance" "merlinn_instance" { +resource "aws_instance" "vespper_instance" { ami = data.aws_ami.ubuntu.id instance_type = var.instance_type - key_name = "merlinn-keypair" - security_groups = [aws_security_group.merlinn_sg.name] + key_name = "vespper-keypair" + security_groups = [aws_security_group.vespper_sg.name] user_data = data.template_file.user_data.rendered @@ -81,16 +81,16 @@ resource "aws_instance" "merlinn_instance" { ebs_block_device { device_name = "/dev/sda1" - volume_size = var.merlinn_instance_volume_size # size in GBs + volume_size = var.vespper_instance_volume_size # size in GBs } } -resource "aws_ebs_volume" "merlinn-volume" { - availability_zone = aws_instance.merlinn_instance.availability_zone - size = var.merlinn_data_volume_size - final_snapshot = var.merlinn_data_volume_snapshot_before_destroy - snapshot_id = var.merlinn_data_restore_from_snapshot_id +resource "aws_ebs_volume" "vespper-volume" { + availability_zone = aws_instance.vespper_instance.availability_zone + size = var.vespper_data_volume_size + final_snapshot = var.vespper_data_volume_snapshot_before_destroy + snapshot_id = var.vespper_data_restore_from_snapshot_id tags = local.tags @@ -100,42 +100,42 @@ resource "aws_ebs_volume" "merlinn-volume" { } locals { - cleaned_volume_id = replace(aws_ebs_volume.merlinn-volume.id, "-", "") + cleaned_volume_id = replace(aws_ebs_volume.vespper-volume.id, "-", "") } locals { - restore_from_snapshot = length(var.merlinn_data_restore_from_snapshot_id) == 0 ? false : true + restore_from_snapshot = length(var.vespper_data_restore_from_snapshot_id) == 0 ? false : true } -resource "aws_volume_attachment" "merlinn_volume_attachment" { +resource "aws_volume_attachment" "vespper_volume_attachment" { device_name = "/dev/sdh" - volume_id = aws_ebs_volume.merlinn-volume.id - instance_id = aws_instance.merlinn_instance.id + volume_id = aws_ebs_volume.vespper-volume.id + instance_id = aws_instance.vespper_instance.id provisioner "remote-exec" { inline = [ "if [ -z \"${local.restore_from_snapshot}\" ]; then export VOLUME_ID=${local.cleaned_volume_id} && sudo mkfs -t ext4 /dev/$(lsblk -o +SERIAL | grep $VOLUME_ID | awk '{print $1}'); fi", - "sudo mkdir /merlinn-data", - "export VOLUME_ID=${local.cleaned_volume_id} && sudo mount /dev/$(lsblk -o +SERIAL | grep $VOLUME_ID | awk '{print $1}') /merlinn-data", + "sudo mkdir /vespper-data", + "export VOLUME_ID=${local.cleaned_volume_id} && sudo mount /dev/$(lsblk -o +SERIAL | grep $VOLUME_ID | awk '{print $1}') /vespper-data", "export VOLUME_ID=${local.cleaned_volume_id} && cat <> /dev/null", - "/dev/$(lsblk -o +SERIAL | grep $VOLUME_ID | awk '{print $1}') /merlinn-data ext4 defaults,nofail,discard 0 0", + "/dev/$(lsblk -o +SERIAL | grep $VOLUME_ID | awk '{print $1}') /vespper-data ext4 defaults,nofail,discard 0 0", "EOF", ] connection { - host = aws_instance.merlinn_instance.public_ip + host = aws_instance.vespper_instance.public_ip type = "ssh" user = "ubuntu" private_key = file(var.ssh_private_key) } } - depends_on = [aws_instance.merlinn_instance, aws_ebs_volume.merlinn-volume] + depends_on = [aws_instance.vespper_instance, aws_ebs_volume.vespper-volume] } output "instance_public_ip" { - value = aws_instance.merlinn_instance.public_ip + value = aws_instance.vespper_instance.public_ip } output "instance_private_ip" { - value = aws_instance.merlinn_instance.private_ip + value = aws_instance.vespper_instance.private_ip } diff --git a/examples/deployments/aws-terraform/startup.sh b/examples/deployments/aws-terraform/startup.sh index 8478054..6f017fb 100644 --- a/examples/deployments/aws-terraform/startup.sh +++ b/examples/deployments/aws-terraform/startup.sh @@ -48,7 +48,7 @@ apt-get install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin do usermod -aG docker ubuntu echo "About to clone the repository..." -git clone https://github.com/merlinn-co/merlinn.git && cd merlinn +git clone https://github.com/vespper/vespper.git && cd vespper git config --global --add safe.directory '*' echo "Injecting environment variables..." diff --git a/examples/deployments/aws-terraform/variables.tf b/examples/deployments/aws-terraform/variables.tf index fd71d03..5213018 100644 --- a/examples/deployments/aws-terraform/variables.tf +++ b/examples/deployments/aws-terraform/variables.tf @@ -1,5 +1,5 @@ data "http" "startup_script_remote" { - url = "https://raw.githubusercontent.com/merlinn-co/merlinn/main/examples/deployments/aws-terraform/startup.sh" + url = "https://raw.githubusercontent.com/vespper/vespper/main/examples/deployments/aws-terraform/startup.sh" } data "template_file" "user_data" { @@ -35,41 +35,41 @@ variable "public_access" { locals { tags = { - Name = "merlinn-instance" + Name = "vespper-instance" } } variable "ssh_public_key" { description = "SSH Public Key" type = string - default = "./merlinn-aws.pub" + default = "./vespper-aws.pub" } variable "ssh_private_key" { description = "SSH Private Key" type = string - default = "./merlinn-aws" + default = "./vespper-aws" } -variable "merlinn_instance_volume_size" { +variable "vespper_instance_volume_size" { description = "The size of the instance volume - the root volume" type = number default = 30 } -variable "merlinn_data_volume_size" { - description = "EBS Volume Size of the attached data volume where your merlinn data is stored" +variable "vespper_data_volume_size" { + description = "EBS Volume Size of the attached data volume where your vespper data is stored" type = number default = 20 } -variable "merlinn_data_volume_snapshot_before_destroy" { - description = "Take a snapshot of the merlinn data volume before destroying it" +variable "vespper_data_volume_snapshot_before_destroy" { + description = "Take a snapshot of the vespper data volume before destroying it" type = bool default = true } -variable "merlinn_data_restore_from_snapshot_id" { - description = "Restore the merlinn data volume from a snapshot" +variable "vespper_data_restore_from_snapshot_id" { + description = "Restore the vespper data volume from a snapshot" type = string default = "" } @@ -104,4 +104,4 @@ variable "slack_signing_secret" { variable "openai_token" { description = "OpenAI token" type = string -} \ No newline at end of file +} diff --git a/merlinn.iml b/merlinn.iml new file mode 100644 index 0000000..80cc739 --- /dev/null +++ b/merlinn.iml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index f4f521c..bbe017a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -4026,18 +4026,6 @@ "undici-types": "~5.26.4" } }, - "node_modules/@merlinn/db": { - "resolved": "packages/db", - "link": true - }, - "node_modules/@merlinn/scripts": { - "resolved": "packages/scripts", - "link": true - }, - "node_modules/@merlinn/utils": { - "resolved": "packages/utils", - "link": true - }, "node_modules/@mistralai/mistralai": { "version": "0.0.10", "resolved": "https://registry.npmjs.org/@mistralai/mistralai/-/mistralai-0.0.10.tgz", @@ -7326,6 +7314,18 @@ "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==", "license": "ISC" }, + "node_modules/@vespper/db": { + "resolved": "packages/db", + "link": true + }, + "node_modules/@vespper/scripts": { + "resolved": "packages/scripts", + "link": true + }, + "node_modules/@vespper/utils": { + "resolved": "packages/utils", + "link": true + }, "node_modules/@vitejs/plugin-react-swc": { "version": "3.6.0", "resolved": "https://registry.npmjs.org/@vitejs/plugin-react-swc/-/plugin-react-swc-3.6.0.tgz", @@ -22487,7 +22487,7 @@ } }, "packages/db": { - "name": "@merlinn/db", + "name": "@vespper/db", "version": "0.0.1", "dependencies": { "mongoose": "^8.3.2", @@ -22496,7 +22496,7 @@ } }, "packages/scripts": { - "name": "@merlinn/scripts", + "name": "@vespper/scripts", "version": "0.0.1", "dependencies": { "commander": "^12.0.0", @@ -22547,13 +22547,13 @@ } }, "packages/utils": { - "name": "@merlinn/utils", + "name": "@vespper/utils", "version": "0.0.1", "dependencies": { "@google-cloud/secret-manager": "^5.1.0", "@litehex/node-vault": "^0.2.2", - "@merlinn/db": "*", - "@merlinn/utils": "*", + "@vespper/db": "*", + "@vespper/utils": "*", "tslib": "^2.3.0" } }, @@ -22561,8 +22561,6 @@ "version": "0.1.0", "dependencies": { "@datadog/datadog-api-client": "^1.21.0", - "@merlinn/db": "*", - "@merlinn/utils": "*", "@octokit/types": "^12.4.0", "@ory/client": "^1.9.0", "@ory/kratos-client": "^1.2.0", @@ -22570,6 +22568,8 @@ "@slack/bolt": "^3.16.0", "@types/cors": "^2.8.17", "@types/ioredis": "^5.0.0", + "@vespper/db": "*", + "@vespper/utils": "*", "axios": "^1.6.2", "body-parser": "^1.19.0", "chromadb": "1.9.1", diff --git a/packages/db/README.md b/packages/db/README.md index 1db52bd..c34471f 100644 --- a/packages/db/README.md +++ b/packages/db/README.md @@ -4,8 +4,8 @@ This library was generated with [Nx](https://nx.dev). ## Building -Run `nx build @merlinn/db` to build the library. +Run `nx build @vespper/db` to build the library. ## Running unit tests -Run `nx test @merlinn/db` to execute the unit tests via [Jest](https://jestjs.io). +Run `nx test @vespper/db` to execute the unit tests via [Jest](https://jestjs.io). diff --git a/packages/db/package.json b/packages/db/package.json index 8cf5052..8c76ebf 100644 --- a/packages/db/package.json +++ b/packages/db/package.json @@ -1,5 +1,5 @@ { - "name": "@merlinn/db", + "name": "@vespper/db", "version": "0.0.1", "scripts": { "test": "jest", diff --git a/packages/scripts/README.md b/packages/scripts/README.md index 16ff41c..e15b3f2 100644 --- a/packages/scripts/README.md +++ b/packages/scripts/README.md @@ -4,8 +4,8 @@ This library was generated with [Nx](https://nx.dev). ## Building -Run `nx build @merlinn/db` to build the library. +Run `nx build @vespper/db` to build the library. ## Running unit tests -Run `nx test @merlinn/db` to execute the unit tests via [Jest](https://jestjs.io). +Run `nx test @vespper/db` to execute the unit tests via [Jest](https://jestjs.io). diff --git a/packages/scripts/package.json b/packages/scripts/package.json index def17fc..07a01b5 100644 --- a/packages/scripts/package.json +++ b/packages/scripts/package.json @@ -1,5 +1,5 @@ { - "name": "@merlinn/scripts", + "name": "@vespper/scripts", "version": "0.0.1", "scripts": { "test": "jest", diff --git a/packages/utils/README.md b/packages/utils/README.md index c338e02..58b48c3 100644 --- a/packages/utils/README.md +++ b/packages/utils/README.md @@ -4,8 +4,8 @@ This library was generated with [Nx](https://nx.dev). ## Building -Run `nx build @merlinn/db` to build the library. +Run `nx build @vespper/db` to build the library. ## Running unit tests -Run `nx test @merlinn/db` to execute the unit tests via [Jest](https://jestjs.io). +Run `nx test @vespper/db` to execute the unit tests via [Jest](https://jestjs.io). diff --git a/packages/utils/package.json b/packages/utils/package.json index c15f203..05cf1f5 100644 --- a/packages/utils/package.json +++ b/packages/utils/package.json @@ -1,5 +1,5 @@ { - "name": "@merlinn/utils", + "name": "@vespper/utils", "version": "0.0.1", "scripts": { "test": "jest", @@ -9,8 +9,8 @@ "dependencies": { "@google-cloud/secret-manager": "^5.1.0", "@litehex/node-vault": "^0.2.2", - "@merlinn/db": "*", - "@merlinn/utils": "*", + "@vespper/db": "*", + "@vespper/utils": "*", "tslib": "^2.3.0" }, "main": "dist/index.js", diff --git a/packages/utils/src/cloud/secrets/base.ts b/packages/utils/src/cloud/secrets/base.ts index 26b26d4..87bbcc8 100644 --- a/packages/utils/src/cloud/secrets/base.ts +++ b/packages/utils/src/cloud/secrets/base.ts @@ -1,4 +1,4 @@ -import { IIntegration } from "@merlinn/db"; +import { IIntegration } from "@vespper/db"; export abstract class SecretsBackend { abstract fetchSecrets( diff --git a/packages/utils/src/cloud/secrets/file.ts b/packages/utils/src/cloud/secrets/file.ts index ba58aa8..1c073b3 100644 --- a/packages/utils/src/cloud/secrets/file.ts +++ b/packages/utils/src/cloud/secrets/file.ts @@ -1,8 +1,8 @@ import { SecretsBackend } from "./base"; import { promises as fs } from "fs"; import path from "path"; -import { Integration } from "@merlinn/db"; -import type { IIntegration } from "@merlinn/db"; +import { Integration } from "@vespper/db"; +import type { IIntegration } from "@vespper/db"; export class FileSecretManager extends SecretsBackend { readonly directory: string; diff --git a/packages/utils/src/cloud/secrets/gcp.ts b/packages/utils/src/cloud/secrets/gcp.ts index b855543..59516bc 100644 --- a/packages/utils/src/cloud/secrets/gcp.ts +++ b/packages/utils/src/cloud/secrets/gcp.ts @@ -1,7 +1,7 @@ import { SecretsBackend } from "./base"; import { SecretManagerServiceClient } from "@google-cloud/secret-manager"; -import { Integration } from "@merlinn/db"; -import type { IIntegration } from "@merlinn/db"; +import { Integration } from "@vespper/db"; +import type { IIntegration } from "@vespper/db"; const projectId = process.env.GCLOUD_PROJECT as string; diff --git a/packages/utils/src/cloud/secrets/vault.ts b/packages/utils/src/cloud/secrets/vault.ts index bb6924c..76f4521 100644 --- a/packages/utils/src/cloud/secrets/vault.ts +++ b/packages/utils/src/cloud/secrets/vault.ts @@ -1,7 +1,7 @@ import { SecretsBackend } from "./base"; import { Client } from "@litehex/node-vault"; -import { Integration } from "@merlinn/db"; -import type { IIntegration } from "@merlinn/db"; +import { Integration } from "@vespper/db"; +import type { IIntegration } from "@vespper/db"; export class HashiCorpVaultSecretManager extends SecretsBackend { readonly client: Client; diff --git a/packages/utils/src/index.d.ts b/packages/utils/src/index.d.ts index 856ac99..0ea034f 100644 --- a/packages/utils/src/index.d.ts +++ b/packages/utils/src/index.d.ts @@ -1,5 +1,5 @@ // TODO: For some reason, we have to declare the mongoose types here as well. Otherwise, -// the build fails. Need to look into that. Ideally, the declaration should be in @merlinn/db. +// the build fails. Need to look into that. Ideally, the declaration should be in @vespper/db. declare module "mongoose" { interface Document { encryptFieldsSync: () => void; diff --git a/services/api/.env.dev b/services/api/.env.dev index 89a074b..88516fc 100644 --- a/services/api/.env.dev +++ b/services/api/.env.dev @@ -5,7 +5,7 @@ SECRET_MANAGER_DIRECTORY=../../data/dev/secrets ENCRYPTION_SALT=1234567890123456 HASHICORP_VAULT_URL=http://localhost:8202 DASHBOARD_APP_URL=http://localhost:5173 -MONGO_URI=mongodb://localhost:27017/merlinn-db +MONGO_URI=mongodb://localhost:27017/vespper-db KRATOS_PUBLIC_URL="http://localhost:4433" KRATOS_ADMIN_URL="http://localhost:4434" ORY_WEBHOOK_SECRET="super-secret-ory-webhook-key" @@ -14,4 +14,4 @@ CHROMA_API_KEY="secret-token" DATA_PROCESSOR_URL=http://localhost:8080/data-processor LITELLM_URL=http://localhost:4000 LOG_PARSER_URL=http://localhost:8080/log-parser -TELEMETRY_ENABLED=true \ No newline at end of file +TELEMETRY_ENABLED=true diff --git a/services/api/package.json b/services/api/package.json index ef2c24f..7bc94ea 100644 --- a/services/api/package.json +++ b/services/api/package.json @@ -4,8 +4,8 @@ "private": true, "dependencies": { "@datadog/datadog-api-client": "^1.21.0", - "@merlinn/db": "*", - "@merlinn/utils": "*", + "@vespper/db": "*", + "@vespper/utils": "*", "@octokit/types": "^12.4.0", "@ory/client": "^1.9.0", "@ory/kratos-client": "^1.2.0", diff --git a/services/api/project.json b/services/api/project.json index b8d8e8f..b47251c 100644 --- a/services/api/project.json +++ b/services/api/project.json @@ -17,7 +17,7 @@ }, "production": { "push": true, - "tags": ["merlinnco/api:latest"] + "tags": ["vespper/api:latest"] } } } diff --git a/services/api/src/agent/tools/coralogix/expert.ts b/services/api/src/agent/tools/coralogix/expert.ts index dad81d0..bbb3cc6 100644 --- a/services/api/src/agent/tools/coralogix/expert.ts +++ b/services/api/src/agent/tools/coralogix/expert.ts @@ -2,7 +2,7 @@ import { z } from "zod"; import { DynamicStructuredTool } from "langchain/tools"; import CallbackHandler from "langfuse-langchain"; import { ChatPromptTemplate, MessagesPlaceholder } from "langchain/prompts"; -import { CoralogixIntegration } from "@merlinn/db"; +import { CoralogixIntegration } from "@vespper/db"; import { default as logsExpertTool } from "./logs_expert"; import { createAgent } from "../base"; import { RunContext } from "../../../agent/types"; diff --git a/services/api/src/agent/tools/coralogix/logs_expert.ts b/services/api/src/agent/tools/coralogix/logs_expert.ts index c16cc8e..6909665 100644 --- a/services/api/src/agent/tools/coralogix/logs_expert.ts +++ b/services/api/src/agent/tools/coralogix/logs_expert.ts @@ -1,7 +1,7 @@ import { z } from "zod"; import { DynamicStructuredTool } from "langchain/tools"; import { PromptTemplate } from "langchain/prompts"; -import { CoralogixIntegration } from "@merlinn/db"; +import { CoralogixIntegration } from "@vespper/db"; import { CallbackHandler } from "langfuse-langchain"; import { DATAPRIME_CHEATSHEET } from "./constants"; import { diff --git a/services/api/src/agent/tools/coralogix/read_logs.ts b/services/api/src/agent/tools/coralogix/read_logs.ts index 618e3b3..ba901ce 100644 --- a/services/api/src/agent/tools/coralogix/read_logs.ts +++ b/services/api/src/agent/tools/coralogix/read_logs.ts @@ -1,7 +1,7 @@ import { AxiosError } from "axios"; import { z } from "zod"; import { DynamicStructuredTool } from "langchain/tools"; -import type { CoralogixIntegration } from "@merlinn/db"; +import type { CoralogixIntegration } from "@vespper/db"; import type { CoralogixRegionKey } from "../../../types"; import { Timeframe, diff --git a/services/api/src/agent/tools/coralogix/utils.ts b/services/api/src/agent/tools/coralogix/utils.ts index e400b2e..e324b49 100644 --- a/services/api/src/agent/tools/coralogix/utils.ts +++ b/services/api/src/agent/tools/coralogix/utils.ts @@ -1,6 +1,6 @@ import axios from "axios"; import { CoralogixQueryResult, CoralogixRegionKey } from "../../../types"; -import { CoralogixIntegration, IIntegration } from "@merlinn/db"; +import { CoralogixIntegration, IIntegration } from "@vespper/db"; import { Timeframe, getTimestamp, diff --git a/services/api/src/agent/tools/datadog/read_logs.ts b/services/api/src/agent/tools/datadog/read_logs.ts index e50ae52..436d967 100644 --- a/services/api/src/agent/tools/datadog/read_logs.ts +++ b/services/api/src/agent/tools/datadog/read_logs.ts @@ -1,7 +1,7 @@ import { z } from "zod"; import { DynamicStructuredTool } from "langchain/tools"; import { v2 } from "@datadog/datadog-api-client"; -import type { DataDogIntegration } from "@merlinn/db"; +import type { DataDogIntegration } from "@vespper/db"; import { getLogsInstance } from "../../../clients/datadog"; const timeframe2math = { diff --git a/services/api/src/agent/tools/github/get_latest_code_changes.ts b/services/api/src/agent/tools/github/get_latest_code_changes.ts index 896ab2c..65694d7 100644 --- a/services/api/src/agent/tools/github/get_latest_code_changes.ts +++ b/services/api/src/agent/tools/github/get_latest_code_changes.ts @@ -1,6 +1,6 @@ import { z } from "zod"; import { DynamicStructuredTool } from "langchain/tools"; -import type { GithubIntegration } from "@merlinn/db"; +import type { GithubIntegration } from "@vespper/db"; import { GithubClient } from "../../../clients"; // import { chatModel } from "../../model"; // import { summarizeReadmePrompt } from "../../prompts"; diff --git a/services/api/src/agent/tools/index.ts b/services/api/src/agent/tools/index.ts index 5ef3ea9..823dbcb 100644 --- a/services/api/src/agent/tools/index.ts +++ b/services/api/src/agent/tools/index.ts @@ -6,7 +6,7 @@ import type { JaegerIntegration, PrometheusIntegration, MongoDBIntegration, -} from "@merlinn/db"; +} from "@vespper/db"; import { toolLoaders as coralogixToolLoaders } from "./coralogix"; import { toolLoaders as githubToolLoaders } from "./github"; import { toolLoaders as datadogToolLoaders } from "./datadog"; diff --git a/services/api/src/agent/tools/jaeger/get_longest_trace.ts b/services/api/src/agent/tools/jaeger/get_longest_trace.ts index 91431e1..be29f4b 100644 --- a/services/api/src/agent/tools/jaeger/get_longest_trace.ts +++ b/services/api/src/agent/tools/jaeger/get_longest_trace.ts @@ -1,6 +1,6 @@ import { z } from "zod"; import { DynamicStructuredTool } from "langchain/tools"; -import type { JaegerIntegration } from "@merlinn/db"; +import type { JaegerIntegration } from "@vespper/db"; import { JaegerClient } from "../../../clients/jaeger"; import type { JaegerSpan, JaegerTrace } from "../../../types/vendors"; import { buildOutput } from "../utils"; diff --git a/services/api/src/agent/tools/mongodb/describe_db.ts b/services/api/src/agent/tools/mongodb/describe_db.ts index 73b2c3b..a1cc676 100644 --- a/services/api/src/agent/tools/mongodb/describe_db.ts +++ b/services/api/src/agent/tools/mongodb/describe_db.ts @@ -1,6 +1,6 @@ import { DynamicTool } from "langchain/tools"; import { MongoClient, Db, WithId, Document } from "mongodb"; -import type { MongoDBIntegration } from "@merlinn/db"; +import type { MongoDBIntegration } from "@vespper/db"; import util from "util"; interface CollectionInfo { diff --git a/services/api/src/agent/tools/mongodb/query_db.ts b/services/api/src/agent/tools/mongodb/query_db.ts index e95af8e..a098d84 100644 --- a/services/api/src/agent/tools/mongodb/query_db.ts +++ b/services/api/src/agent/tools/mongodb/query_db.ts @@ -1,7 +1,7 @@ import { z } from "zod"; import { DynamicStructuredTool } from "langchain/tools"; import { MongoClient, Db } from "mongodb"; -import type { MongoDBIntegration } from "@merlinn/db"; +import type { MongoDBIntegration } from "@vespper/db"; export default async function (integration: MongoDBIntegration) { const { dbUrl } = integration.credentials; diff --git a/services/api/src/agent/tools/prometheus/get_alerts.ts b/services/api/src/agent/tools/prometheus/get_alerts.ts index 94fe9b1..3972d5e 100644 --- a/services/api/src/agent/tools/prometheus/get_alerts.ts +++ b/services/api/src/agent/tools/prometheus/get_alerts.ts @@ -1,5 +1,5 @@ import { DynamicTool } from "langchain/tools"; -import type { PrometheusIntegration } from "@merlinn/db"; +import type { PrometheusIntegration } from "@vespper/db"; import { PrometheusDriver } from "prometheus-query"; export default async function (integration: PrometheusIntegration) { diff --git a/services/api/src/agent/tools/prometheus/metrics_explorer.ts b/services/api/src/agent/tools/prometheus/metrics_explorer.ts index b2857d6..4a43dc1 100644 --- a/services/api/src/agent/tools/prometheus/metrics_explorer.ts +++ b/services/api/src/agent/tools/prometheus/metrics_explorer.ts @@ -1,6 +1,6 @@ import axios from "axios"; import { DynamicTool } from "langchain/tools"; -import type { PrometheusIntegration } from "@merlinn/db"; +import type { PrometheusIntegration } from "@vespper/db"; export default async function (integration: PrometheusIntegration) { return new DynamicTool({ diff --git a/services/api/src/agent/tools/prometheus/query.ts b/services/api/src/agent/tools/prometheus/query.ts index dace444..aa4ba9a 100644 --- a/services/api/src/agent/tools/prometheus/query.ts +++ b/services/api/src/agent/tools/prometheus/query.ts @@ -1,6 +1,6 @@ import { z } from "zod"; import { DynamicStructuredTool } from "langchain/tools"; -import type { PrometheusIntegration } from "@merlinn/db"; +import type { PrometheusIntegration } from "@vespper/db"; import { PrometheusDriver } from "prometheus-query"; export default async function (integration: PrometheusIntegration) { diff --git a/services/api/src/agent/tools/static/index.ts b/services/api/src/agent/tools/static/index.ts index f2e3463..d53d4ed 100644 --- a/services/api/src/agent/tools/static/index.ts +++ b/services/api/src/agent/tools/static/index.ts @@ -1,4 +1,4 @@ -import { indexModel } from "@merlinn/db"; +import { indexModel } from "@vespper/db"; import { default as semanticSearch } from "./semantic_search"; import { RunContext } from "../../../agent/types"; diff --git a/services/api/src/agent/tools/static/semantic_search.ts b/services/api/src/agent/tools/static/semantic_search.ts index 8dc8e98..63234ee 100644 --- a/services/api/src/agent/tools/static/semantic_search.ts +++ b/services/api/src/agent/tools/static/semantic_search.ts @@ -2,7 +2,7 @@ import { z } from "zod"; import { DynamicStructuredTool } from "langchain/tools"; import { RunContext } from "../../types"; import { buildOutput } from "../utils"; -import { indexModel } from "@merlinn/db"; +import { indexModel } from "@vespper/db"; import { getVectorStore, nodesToText } from "../../rag"; function normalizeCosineScore(score: number): number { diff --git a/services/api/src/agent/tools/types.ts b/services/api/src/agent/tools/types.ts index c5cbb5f..197fd28 100644 --- a/services/api/src/agent/tools/types.ts +++ b/services/api/src/agent/tools/types.ts @@ -1,4 +1,4 @@ -import { IIntegration } from "@merlinn/db"; +import { IIntegration } from "@vespper/db"; import { DynamicStructuredTool, DynamicTool } from "langchain/tools"; import { RunContext } from "../types"; diff --git a/services/api/src/agent/types.ts b/services/api/src/agent/types.ts index 11634fe..6bffe4f 100644 --- a/services/api/src/agent/types.ts +++ b/services/api/src/agent/types.ts @@ -1,7 +1,7 @@ import { ChatOpenAI } from "langchain/chat_models/openai"; import { ChatPromptTemplate } from "langchain/prompts"; import { AIMessage, HumanMessage, MessageContent } from "langchain/schema"; -import type { IIntegration } from "@merlinn/db"; +import type { IIntegration } from "@vespper/db"; import { LangfuseTraceClient } from "langfuse"; // Langchain helper types diff --git a/services/api/src/clients/email/client.ts b/services/api/src/clients/email/client.ts index 2c9e436..ce8cdb9 100644 --- a/services/api/src/clients/email/client.ts +++ b/services/api/src/clients/email/client.ts @@ -20,7 +20,7 @@ export class EmailClient { sendEmail = async ({ to, subject, text, html }: SendEmailParams) => { const msg = { to, - from: '"Merlinn" ', + from: '"Merlinn" ', subject, text, html, diff --git a/services/api/src/common/secrets.ts b/services/api/src/common/secrets.ts index ce539f8..6044144 100644 --- a/services/api/src/common/secrets.ts +++ b/services/api/src/common/secrets.ts @@ -2,7 +2,7 @@ import { FileSecretManager, GCPSecretManager, HashiCorpVaultSecretManager, -} from "@merlinn/utils"; +} from "@vespper/utils"; export function getSecretManager() { const secretManagerType = process.env.SECRET_MANAGER_TYPE || "vault"; diff --git a/services/api/src/index.d.ts b/services/api/src/index.d.ts index 69587ed..80919c7 100644 --- a/services/api/src/index.d.ts +++ b/services/api/src/index.d.ts @@ -12,7 +12,7 @@ declare namespace Express { } // TODO: For some reason, we have to declare the mongoose types here as well. Otherwise, -// the build fails. Need to look into that. Ideally, the declaration should be in @merlinn/db. +// the build fails. Need to look into that. Ideally, the declaration should be in @vespper/db. declare module "mongoose" { interface Document { encryptFieldsSync: () => void; diff --git a/services/api/src/middlewares/auth.ts b/services/api/src/middlewares/auth.ts index 177fc99..f3646cd 100644 --- a/services/api/src/middlewares/auth.ts +++ b/services/api/src/middlewares/auth.ts @@ -1,5 +1,5 @@ import { Request, Response, NextFunction } from "express"; -import { userModel, IUser } from "@merlinn/db"; +import { userModel, IUser } from "@vespper/db"; import { AppError, ErrorCode } from "../errors"; import { catchAsync } from "../utils/errors"; // eslint-disable-next-line @typescript-eslint/no-var-requires diff --git a/services/api/src/middlewares/slack.ts b/services/api/src/middlewares/slack.ts index e3bc7e9..5886acf 100644 --- a/services/api/src/middlewares/slack.ts +++ b/services/api/src/middlewares/slack.ts @@ -1,5 +1,5 @@ import { Request, Response, NextFunction } from "express"; -import { IUser, userModel, integrationModel } from "@merlinn/db"; +import { IUser, userModel, integrationModel } from "@vespper/db"; import { AppError, ErrorCode } from "../errors"; import { catchAsync } from "../utils/errors"; diff --git a/services/api/src/middlewares/webhooks.ts b/services/api/src/middlewares/webhooks.ts index 9402d99..1fe2b81 100644 --- a/services/api/src/middlewares/webhooks.ts +++ b/services/api/src/middlewares/webhooks.ts @@ -1,12 +1,12 @@ import { Request, Response, NextFunction } from "express"; -import { webhookModel, PlanFieldCode, IWebhook } from "@merlinn/db"; +import { webhookModel, PlanFieldCode, IWebhook } from "@vespper/db"; import { catchAsync } from "../utils/errors"; import { isEnterprise } from "../utils/ee"; import { AppError } from "../errors"; import { getPlanFieldState } from "../services/plans"; export function getSecretFromRequest(req: Request) { - const customHeaderSecret = req.headers["x-merlinn-secret"] as string; + const customHeaderSecret = req.headers["x-vespper-secret"] as string; if (customHeaderSecret) { return customHeaderSecret; diff --git a/services/api/src/routers/chat.ts b/services/api/src/routers/chat.ts index 3a1e94b..3585d4e 100644 --- a/services/api/src/routers/chat.ts +++ b/services/api/src/routers/chat.ts @@ -1,8 +1,8 @@ import express, { Request, Response } from "express"; import Langfuse from "langfuse"; import { uuid } from "uuidv4"; -import { integrationModel, PlanFieldCode } from "@merlinn/db"; -import { IIntegration } from "@merlinn/db"; +import { integrationModel, PlanFieldCode } from "@vespper/db"; +import { IIntegration } from "@vespper/db"; import { runAgent } from "../agent"; import { getSlackUser } from "../middlewares/slack"; import { parseMessages } from "../agent/parse"; diff --git a/services/api/src/routers/db-index.ts b/services/api/src/routers/db-index.ts index 949c985..841eb59 100644 --- a/services/api/src/routers/db-index.ts +++ b/services/api/src/routers/db-index.ts @@ -3,9 +3,9 @@ import axios from "axios"; import { checkAuth, getDBUser } from "../middlewares/auth"; import { catchAsync } from "../utils/errors"; import { AppError, ErrorCode } from "../errors"; -import { indexModel, integrationModel, PlanFieldCode } from "@merlinn/db"; +import { indexModel, integrationModel, PlanFieldCode } from "@vespper/db"; import { refreshAtlassianToken } from "../services/oauth"; -import type { AtlassianIntegration, IIntegration } from "@merlinn/db"; +import type { AtlassianIntegration, IIntegration } from "@vespper/db"; import { zip } from "../utils/arrays"; import { isEnterprise } from "../utils/ee"; import { getTimestamp } from "../utils/dates"; diff --git a/services/api/src/routers/integrations.ts b/services/api/src/routers/integrations.ts index 2c89591..177d1dd 100644 --- a/services/api/src/routers/integrations.ts +++ b/services/api/src/routers/integrations.ts @@ -1,6 +1,6 @@ import express, { Request, Response } from "express"; -import { vendorModel, organizationModel, integrationModel } from "@merlinn/db"; -import type { IIntegration } from "@merlinn/db"; +import { vendorModel, organizationModel, integrationModel } from "@vespper/db"; +import type { IIntegration } from "@vespper/db"; import { checkAuth, getDBUser } from "../middlewares/auth"; import { catchAsync } from "../utils/errors"; import { AppError } from "../errors"; diff --git a/services/api/src/routers/invite.ts b/services/api/src/routers/invite.ts index e2ccb78..15231bb 100644 --- a/services/api/src/routers/invite.ts +++ b/services/api/src/routers/invite.ts @@ -2,13 +2,13 @@ import express, { Request, Response } from "express"; import { checkAuth, getDBUser } from "../middlewares/auth"; import { createOryIdentity, createRecoveryLink } from "../clients/ory"; import { EmailClient, OpsgenieClient, PagerDutyClient } from "../clients"; -import { userModel, integrationModel, PlanFieldCode } from "@merlinn/db"; +import { userModel, integrationModel, PlanFieldCode } from "@vespper/db"; import type { IIntegration, IOrganization, OpsgenieIntegration, PagerDutyIntegration, -} from "@merlinn/db"; +} from "@vespper/db"; import { EventType, SystemEvent, events } from "../events"; import { catchAsync } from "../utils/errors"; import { isEnterprise } from "../utils/ee"; @@ -151,7 +151,7 @@ router.post( const subject = "Invitation to Merlinn"; const html = `You have been invited to Merlinn. Please click the following link to join: Click here. - Once you are registered, you can sign in to https://app.merlinn.co or start using the Slack bot!`; + Once you are registered, you can sign in to https://app.vespper.com or start using the Slack bot!`; const client = new EmailClient(smtpConnectionUrl); await client.sendEmail({ to: email, subject, html }); } diff --git a/services/api/src/routers/organizations.ts b/services/api/src/routers/organizations.ts index ceb2523..47c2ac8 100644 --- a/services/api/src/routers/organizations.ts +++ b/services/api/src/routers/organizations.ts @@ -8,7 +8,7 @@ import { webhookModel, indexModel, planStateModel, -} from "@merlinn/db"; +} from "@vespper/db"; import { checkAuth, getDBUser } from "../middlewares/auth"; import { catchAsync } from "../utils/errors"; import { isEnterprise } from "../utils/ee"; diff --git a/services/api/src/routers/users.ts b/services/api/src/routers/users.ts index 14f4d35..5647506 100644 --- a/services/api/src/routers/users.ts +++ b/services/api/src/routers/users.ts @@ -1,7 +1,7 @@ import express, { Request, Response } from "express"; import { checkAuth, getDBUser } from "../middlewares/auth"; -import { userModel, PlanFieldCode } from "@merlinn/db"; -import type { IUser } from "@merlinn/db"; +import { userModel, PlanFieldCode } from "@vespper/db"; +import type { IUser } from "@vespper/db"; import { FilterQuery } from "mongoose"; import { deleteOryIdentity, getOryIdentity } from "../clients/ory"; import { EventType, events } from "../events"; diff --git a/services/api/src/routers/vendors.ts b/services/api/src/routers/vendors.ts index 0cfc998..4d0248f 100644 --- a/services/api/src/routers/vendors.ts +++ b/services/api/src/routers/vendors.ts @@ -1,5 +1,5 @@ import express, { Request, Response } from "express"; -import { vendorModel } from "@merlinn/db"; +import { vendorModel } from "@vespper/db"; import { checkAuth, getDBUser } from "../middlewares/auth"; import { catchAsync } from "../utils/errors"; diff --git a/services/api/src/server.ts b/services/api/src/server.ts index e92b21d..8aac26b 100644 --- a/services/api/src/server.ts +++ b/services/api/src/server.ts @@ -1,6 +1,6 @@ import { TelemetryListener } from "./telemetry/listener"; import { app } from "./app"; -import { connectToDB } from "@merlinn/db"; +import { connectToDB } from "@vespper/db"; import { startAllJobs } from "./jobs"; import { NotificationsListener } from "./notifications"; import { isEnterprise } from "./utils/ee"; diff --git a/services/api/src/services/alerts/parsers/opsgenie.ts b/services/api/src/services/alerts/parsers/opsgenie.ts index 35aa6ec..cc80e5f 100644 --- a/services/api/src/services/alerts/parsers/opsgenie.ts +++ b/services/api/src/services/alerts/parsers/opsgenie.ts @@ -3,12 +3,12 @@ import { CoralogixClient, GrafanaClient, } from "../../../clients"; -import { integrationModel } from "@merlinn/db"; +import { integrationModel } from "@vespper/db"; import type { CoralogixIntegration, GrafanaIntegration, OpsgenieIntegration, -} from "@merlinn/db"; +} from "@vespper/db"; import type { OpsgenieAlert } from "../../../types"; import type { AlertEvent } from "../../../types/internal"; import { secretManager } from "../../../common/secrets"; diff --git a/services/api/src/services/alerts/parsers/pagerduty.ts b/services/api/src/services/alerts/parsers/pagerduty.ts index 838f41f..79d9d72 100644 --- a/services/api/src/services/alerts/parsers/pagerduty.ts +++ b/services/api/src/services/alerts/parsers/pagerduty.ts @@ -1,4 +1,4 @@ -import { integrationModel, PagerDutyIntegration } from "@merlinn/db"; +import { integrationModel, PagerDutyIntegration } from "@vespper/db"; import { PagerDutyClient } from "../../../clients"; import { AlertEvent } from "../../../types/internal"; import { secretManager } from "../../../common/secrets"; diff --git a/services/api/src/services/oauth/atlassian.ts b/services/api/src/services/oauth/atlassian.ts index cb4c3a5..c1c2c36 100644 --- a/services/api/src/services/oauth/atlassian.ts +++ b/services/api/src/services/oauth/atlassian.ts @@ -1,6 +1,6 @@ import { AxiosError } from "axios"; -import { integrationModel } from "@merlinn/db"; -import type { AtlassianIntegration } from "@merlinn/db"; +import { integrationModel } from "@vespper/db"; +import type { AtlassianIntegration } from "@vespper/db"; import { AtlassianClient } from "../../clients"; import { AppError } from "../../errors"; import { secretManager } from "../../common/secrets"; diff --git a/services/api/src/services/oauth/pagerduty.ts b/services/api/src/services/oauth/pagerduty.ts index e1efca5..816b151 100644 --- a/services/api/src/services/oauth/pagerduty.ts +++ b/services/api/src/services/oauth/pagerduty.ts @@ -1,6 +1,6 @@ import { AxiosError } from "axios"; -import { integrationModel } from "@merlinn/db"; -import type { PagerDutyIntegration } from "@merlinn/db"; +import { integrationModel } from "@vespper/db"; +import type { PagerDutyIntegration } from "@vespper/db"; import { PagerDutyClient } from "../../clients"; import { AppError } from "../../errors"; import { secretManager } from "../../common/secrets"; diff --git a/services/api/src/services/plans/base.ts b/services/api/src/services/plans/base.ts index e61dcf3..38086a8 100644 --- a/services/api/src/services/plans/base.ts +++ b/services/api/src/services/plans/base.ts @@ -11,7 +11,7 @@ import { PlanFieldKind, ResetMode, UserLevelFieldState, -} from "@merlinn/db"; +} from "@vespper/db"; interface BaseUpdateParams { fieldCode?: PlanFieldCode; diff --git a/services/api/src/services/plans/jobs.ts b/services/api/src/services/plans/jobs.ts index 5124172..09aa9e2 100644 --- a/services/api/src/services/plans/jobs.ts +++ b/services/api/src/services/plans/jobs.ts @@ -1,6 +1,6 @@ import cron from "node-cron"; import { resetPlanStates } from "./base"; -import { ResetMode } from "@merlinn/db"; +import { ResetMode } from "@vespper/db"; // TODO: move these jobs to a different service maybe const hourlyJob = cron.schedule("0 * * * *", async () => { diff --git a/services/api/src/tests/services/plan.test.ts b/services/api/src/tests/services/plan.test.ts index 2d0f921..abf823e 100644 --- a/services/api/src/tests/services/plan.test.ts +++ b/services/api/src/tests/services/plan.test.ts @@ -6,9 +6,9 @@ import { planFieldModel, PlanFieldKind, ResetMode, -} from "@merlinn/db"; +} from "@vespper/db"; import { Types } from "mongoose"; -import type { IPlanState } from "@merlinn/db"; +import type { IPlanState } from "@vespper/db"; import { resetPlanStates } from "../../services/plans/base"; const DUMMY_FIELDS = [ diff --git a/services/dashboard/project.json b/services/dashboard/project.json index d7c5c7b..434046c 100644 --- a/services/dashboard/project.json +++ b/services/dashboard/project.json @@ -17,7 +17,7 @@ }, "production": { "push": true, - "tags": ["merlinnco/dashboard:latest"] + "tags": ["vespper/dashboard:latest"] } } } diff --git a/services/dashboard/src/components/Connection/integrations/oauth/OAuthGithub.tsx b/services/dashboard/src/components/Connection/integrations/oauth/OAuthGithub.tsx index cc2e510..5ee8ac9 100644 --- a/services/dashboard/src/components/Connection/integrations/oauth/OAuthGithub.tsx +++ b/services/dashboard/src/components/Connection/integrations/oauth/OAuthGithub.tsx @@ -26,7 +26,7 @@ export const ConnectGithubIntegration = ({ orgId, data }: ConnectionProps) => {
  • Install Merlinn Github app on your desired organizations through{" "} this diff --git a/services/dashboard/src/components/Connection/webhooks/Opsgenie.tsx b/services/dashboard/src/components/Connection/webhooks/Opsgenie.tsx index c50da9e..892a0fd 100644 --- a/services/dashboard/src/components/Connection/webhooks/Opsgenie.tsx +++ b/services/dashboard/src/components/Connection/webhooks/Opsgenie.tsx @@ -60,7 +60,7 @@ export const ConnectOpsgenieWebhook = ({ data }: ConnectionProps) => { https://1234abcd.ngrok.io/webhooks/opsgenie
  • - Add a custom header called x-merlinn-secret and put your secret. + Add a custom header called x-vespper-secret and put your secret.
  • Mark the “Add Alert Description to Payload” and “Add Alert Details to diff --git a/services/dashboard/src/components/Connection/webhooks/PageDuty.tsx b/services/dashboard/src/components/Connection/webhooks/PageDuty.tsx index 991c707..02b87bd 100644 --- a/services/dashboard/src/components/Connection/webhooks/PageDuty.tsx +++ b/services/dashboard/src/components/Connection/webhooks/PageDuty.tsx @@ -57,7 +57,7 @@ export const ConnectPageDutyWebhook = ({ data }: any) => { only “incident.triggered”
  • - Add a custom header called “x-merlinn-secret” and insert your secret. + Add a custom header called “x-vespper-secret” and insert your secret.
  • Click “Add Webhook”
  • diff --git a/services/dashboard/src/pages/Support/Support.tsx b/services/dashboard/src/pages/Support/Support.tsx index da37a03..73c94e9 100644 --- a/services/dashboard/src/pages/Support/Support.tsx +++ b/services/dashboard/src/pages/Support/Support.tsx @@ -35,7 +35,7 @@ function SupportPage() {