From ea1b320370c9f9b93d89b4633419f7d555ac0c22 Mon Sep 17 00:00:00 2001 From: Michael Lin Date: Wed, 18 Feb 2026 16:24:04 -0800 Subject: [PATCH 001/217] update aws diagrams (#1617) --- docs/admin/architecture.mdx | 23 +++++++++++++++++------ 1 file changed, 17 insertions(+), 6 deletions(-) diff --git a/docs/admin/architecture.mdx b/docs/admin/architecture.mdx index 0399ae2b9..d14e74f9d 100644 --- a/docs/admin/architecture.mdx +++ b/docs/admin/architecture.mdx @@ -481,26 +481,37 @@ For customers with specific needs, a variety of self-hosted deployment methods a Learn more in the [Sourcegraph self-hosted docs](/self-hosted). + + Below diagrams are used to outline the architecture of Sourcegraph + self-hosted deployments on AWS. For more details on the core application + architecture, please refer to the [Sourcegraph architecture + overview](#overview) section above. + + #### AWS (Docker Compose) ```mermaid architecture-beta - group vpc(aws:vpc)[VPC] + group account(aws:account)[AWS Account] + + group vpc(aws:vpc)[VPC] in account + service ebs(aws:ebs)[Data Volume] in vpc group public_subnet(aws:public-subnet)[Public Subnet] in vpc group ec2_sg[Security Group] in public_subnet - service ec2(aws:ec2)[Sourcegraph Deployment] in ec2_sg - service ebs(aws:ebs)[Data Volume] in ec2_sg + + group ec2(aws:ec2)[EC2] in ec2_sg + service sg_core(server)[Sourcegraph core] in ec2 group private_subnet(aws:private-subnet)[Private Subnet] in vpc group rds_sg[Security Group] in private_subnet service rds(aws:rds)[RDS PostgreSQL] in rds_sg - ec2:R -- L:ebs - ec2:B -- T:rds + sg_core{group}:R -- L:ebs + sg_core:B -- T:rds ``` -#### AWS (EKS) +#### AWS (Kubernetes) ```mermaid architecture-beta From bc10774e9ae1646f3a12ab3f6817774428469b95 Mon Sep 17 00:00:00 2001 From: Petri Last Date: Thu, 19 Feb 2026 09:24:24 -0700 Subject: [PATCH 002/217] Remove OneLogin warning from 2018 (#1621) This warning is older than the Sourcegraph repo --- docs/admin/auth/index.mdx | 2 -- 1 file changed, 2 deletions(-) diff --git a/docs/admin/auth/index.mdx b/docs/admin/auth/index.mdx index 1ce6af921..0e91af63e 100644 --- a/docs/admin/auth/index.mdx +++ b/docs/admin/auth/index.mdx @@ -412,8 +412,6 @@ The [`openidconnect` auth provider](/admin/config/site-config#openid-connect-inc - [Salesforce Identity](https://developer.salesforce.com/page/Inside_OpenID_Connect_on_Force.com) - [Microsoft Entra ID (Azure Active Directory)](https://docs.microsoft.com/en-us/azure/active-directory/develop/active-directory-protocols-openid-connect-code) - [Google Identity Platform](https://developers.google.com/identity/) -- Known issue: [OneLogin](https://www.onelogin.com/openid-connect) OpenID Connect is not supported (use SAML for OneLogin instead) - If the OpenID Connect provider requires specifying scopes, the following scopes are required: - `openid` From 66b686bdd5675d92a2a4b64bc71c54e17a7c9f9c Mon Sep 17 00:00:00 2001 From: Warren Gifford Date: Thu, 19 Feb 2026 10:48:39 -0800 Subject: [PATCH 003/217] chore/release: kustomize deprecate warning (#1624) closes PLAT-22 extra warnings for deprecation of kustomize deployment type --- docs/self-hosted/deploy/kubernetes/configure.mdx | 4 ++++ docs/self-hosted/deploy/kubernetes/operations.mdx | 4 ++++ docs/self-hosted/deploy/kubernetes/upgrade.mdx | 4 ++++ 3 files changed, 12 insertions(+) diff --git a/docs/self-hosted/deploy/kubernetes/configure.mdx b/docs/self-hosted/deploy/kubernetes/configure.mdx index a71d78aa2..de21aa5d4 100644 --- a/docs/self-hosted/deploy/kubernetes/configure.mdx +++ b/docs/self-hosted/deploy/kubernetes/configure.mdx @@ -1,5 +1,9 @@ # Configure Sourcegraph with Kustomize + + The Kustomize deployment type is planned for deprecation and will be sunset in a future release. We recommend using the [Helm deployment](/self-hosted/deploy/kubernetes) for all new Kubernetes installations. + + This guide will demonstrate how to customize a Kubernetes deployment (**non-Helm**) using Kustomize components. diff --git a/docs/self-hosted/deploy/kubernetes/operations.mdx b/docs/self-hosted/deploy/kubernetes/operations.mdx index 12015d14e..63a95d3c8 100644 --- a/docs/self-hosted/deploy/kubernetes/operations.mdx +++ b/docs/self-hosted/deploy/kubernetes/operations.mdx @@ -1,5 +1,9 @@ # Operations guides for Sourcegraph on Kubernetes + + The Kustomize deployment type is planned for deprecation and will be sunset in a future release. We recommend using the [Helm deployment](/self-hosted/deploy/kubernetes) for all new Kubernetes installations. + + Operations guides specific to managing [Sourcegraph on Kubernetes](/self-hosted/deploy/kubernetes/) installations. diff --git a/docs/self-hosted/deploy/kubernetes/upgrade.mdx b/docs/self-hosted/deploy/kubernetes/upgrade.mdx index d134bfc87..c11a60b01 100644 --- a/docs/self-hosted/deploy/kubernetes/upgrade.mdx +++ b/docs/self-hosted/deploy/kubernetes/upgrade.mdx @@ -1,5 +1,9 @@ # Updating Sourcegraph with Kubernetes + + The Kustomize deployment type is planned for deprecation and will be sunset in a future release. We recommend using the [Helm deployment](/self-hosted/deploy/kubernetes) for all new Kubernetes installations. + + This document describes the process to update a **Kubernetes Kustomize** or **Kubernetes Legacy** Sourcegraph instance. If you are unfamiliar with Sourcegraph versioning or releases see our [general concepts documentation](/self-hosted/updates/). This guide is **not for use with Helm**. Please refer to the [Upgrading Sourcegraph with Helm docs](/self-hosted/deploy/kubernetes#upgrading-sourcegraph) for Helm deployments. From 4460f0b64c247a314cf58ee3e572a9a215bd79cc Mon Sep 17 00:00:00 2001 From: Warren Gifford Date: Thu, 19 Feb 2026 10:51:18 -0800 Subject: [PATCH 004/217] chore/release: k3s and AMI sunset notice (#1623) closes PLAT-412 closes PLAT-413 This PR adds a deprecation and sunset warning for the AMIs and k3s install script deployment types --- docs/how-to/aws-instance-sizing.mdx | 4 ++++ docs/self-hosted/deploy/docker-compose/migrate.mdx | 2 +- docs/self-hosted/deploy/index.mdx | 4 ++++ docs/self-hosted/deploy/machine-images/aws-ami.mdx | 4 ++++ docs/self-hosted/deploy/machine-images/aws-oneclick.mdx | 4 ++++ docs/self-hosted/deploy/machine-images/index.mdx | 4 ++++ docs/self-hosted/deploy/single-node/index.mdx | 2 +- docs/self-hosted/deploy/single-node/script.mdx | 4 ++++ .../postgresql-collation-version-mismatch-resolution.mdx | 4 ++++ docs/self-hosted/updates/index.mdx | 4 ++-- 10 files changed, 32 insertions(+), 4 deletions(-) diff --git a/docs/how-to/aws-instance-sizing.mdx b/docs/how-to/aws-instance-sizing.mdx index 00729ed39..d60545a1e 100644 --- a/docs/how-to/aws-instance-sizing.mdx +++ b/docs/how-to/aws-instance-sizing.mdx @@ -1,5 +1,9 @@ # AWS Instance Sizing for Sourcegraph + +**Deprecation notice:** AWS AMI deployments will be sunset in Sourcegraph 7.0.0. We recommend migrating to [Kubernetes Helm](/self-hosted/deploy/kubernetes) or [Docker Compose](/self-hosted/deploy/docker-compose) deployment methods. Please contact support@sourcegraph.com for migration assistance. + + ## Instance size chart Select an instance type according to the number of users and repositories you have using this table. If you fall between two sizes, choose the larger of the two. diff --git a/docs/self-hosted/deploy/docker-compose/migrate.mdx b/docs/self-hosted/deploy/docker-compose/migrate.mdx index 5af5976ec..39fd2d928 100644 --- a/docs/self-hosted/deploy/docker-compose/migrate.mdx +++ b/docs/self-hosted/deploy/docker-compose/migrate.mdx @@ -1,6 +1,6 @@ # Migrate from the single Docker image to Docker Compose -> ⚠️ We recommend new users use our [machine image](/self-hosted/deploy/machine-images/) or [script-install](/self-hosted/deploy/single-node/script) instructions, which are easier and offer more flexibility when configuring Sourcegraph. Existing customers can reach out to our Customer Engineering team support@sourcegraph.com if they wish to migrate to these deployment models. +> ⚠️ We recommend new users use our [Kubernetes Helm](/self-hosted/deploy/kubernetes) or [Docker Compose](/self-hosted/deploy/docker-compose) deployment methods. Note: [machine image](/self-hosted/deploy/machine-images/) and [script-install](/self-hosted/deploy/single-node/script) deployments are being sunset in Sourcegraph 7.0.0. Existing customers can reach out to our Customer Engineering team support@sourcegraph.com for migration assistance. Since Sourcegraph 3.13, deploying via Docker Compose is the recommended method for production deployments as it provides resource isolation between Sourcegraph services which makes it more scalable and stable. This page describes how to migrate from a single Docker image deployment to the Docker Compose deployment method. diff --git a/docs/self-hosted/deploy/index.mdx b/docs/self-hosted/deploy/index.mdx index dd97dda04..dc20d6ebd 100644 --- a/docs/self-hosted/deploy/index.mdx +++ b/docs/self-hosted/deploy/index.mdx @@ -84,6 +84,10 @@ Best for enterprises looking for a self-hosted solution on the Cloud provider of Machine images provide a pre-configured Sourcegraph instance that can be deployed in minutes with minimal effort. While they offer simplicity, they are designed as a standardized solution and do not support customization. Currently available on the following hosts: + +**Note:** AWS AMI and machine image deployments will be sunset in Sourcegraph 7.0.0. + + +**Deprecation notice:** AWS AMI and machine image deployments will be sunset in Sourcegraph 7.0.0. We recommend migrating to [Kubernetes Helm](/self-hosted/deploy/kubernetes) or [Docker Compose](/self-hosted/deploy/docker-compose) deployment methods. Please contact support@sourcegraph.com for migration assistance. + + Sourcegraph [Amazon Machine Images (AMIs)](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-instances-and-amis.html) allow you to quickly deploy a production-ready Sourcegraph instance tuned to your organization's scale in just a few clicks. Following these docs will provision the following resources: diff --git a/docs/self-hosted/deploy/machine-images/aws-oneclick.mdx b/docs/self-hosted/deploy/machine-images/aws-oneclick.mdx index d43df9f7e..63e15428f 100644 --- a/docs/self-hosted/deploy/machine-images/aws-oneclick.mdx +++ b/docs/self-hosted/deploy/machine-images/aws-oneclick.mdx @@ -1,5 +1,9 @@ # AWS One-Click Installation for Sourcegraph + +**Deprecation notice:** AWS AMI and machine image deployments will be sunset in Sourcegraph 7.0.0. We recommend migrating to [Kubernetes Helm](/self-hosted/deploy/kubernetes) or [Docker Compose](/self-hosted/deploy/docker-compose) deployment methods. Please contact support@sourcegraph.com for migration assistance. + + This page describes how to launch a verified and pre-configured Sourcegraph instance in just ~10 minutes using our one-click CloudFormation template and standard AMIs. Prefer manually installing on AWS yourself? See our [AMI](/self-hosted/deploy/machine-images/aws-ami) installation options. diff --git a/docs/self-hosted/deploy/machine-images/index.mdx b/docs/self-hosted/deploy/machine-images/index.mdx index abeb53e90..24699a116 100644 --- a/docs/self-hosted/deploy/machine-images/index.mdx +++ b/docs/self-hosted/deploy/machine-images/index.mdx @@ -1,5 +1,9 @@ # Sourcegraph Machine Images + +**Deprecation notice:** AWS AMI and machine image deployments will be sunset in Sourcegraph 7.0.0. We recommend migrating to [Kubernetes Helm](/self-hosted/deploy/kubernetes) or [Docker Compose](/self-hosted/deploy/docker-compose) deployment methods. Please contact support@sourcegraph.com for migration assistance. + + Sourcegraph machine images help to simplify the deployment experience for our users by using a pre-setup machine image. ## Overview diff --git a/docs/self-hosted/deploy/single-node/index.mdx b/docs/self-hosted/deploy/single-node/index.mdx index ae83fab13..22213c9db 100644 --- a/docs/self-hosted/deploy/single-node/index.mdx +++ b/docs/self-hosted/deploy/single-node/index.mdx @@ -3,6 +3,6 @@ For customers who want to self-host, we recommend one of the single-node deployment options. - Cloud - - [Machine images](/self-hosted/deploy/machine-images) + - [Machine images](/self-hosted/deploy/machine-images) *(deprecated — sunset in 7.0.0)* - Local - [Docker Compose](/self-hosted/deploy/docker-compose) diff --git a/docs/self-hosted/deploy/single-node/script.mdx b/docs/self-hosted/deploy/single-node/script.mdx index e46dd06bf..fbbcc3070 100644 --- a/docs/self-hosted/deploy/single-node/script.mdx +++ b/docs/self-hosted/deploy/single-node/script.mdx @@ -1,5 +1,9 @@ # Install Sourcegraph via Shell Script + +**Deprecation notice:** The k3s install script deployment method will be sunset in Sourcegraph 7.0.0. We recommend migrating to [Kubernetes Helm](/self-hosted/deploy/kubernetes) or [Docker Compose](/self-hosted/deploy/docker-compose) deployment methods. Please contact support@sourcegraph.com for migration assistance. + + Following these docs will launch a pre-configured single node Sourcegraph instance via shell script. ## Supported Distros diff --git a/docs/self-hosted/postgresql-collation-version-mismatch-resolution.mdx b/docs/self-hosted/postgresql-collation-version-mismatch-resolution.mdx index da61994a4..39adbbcc3 100644 --- a/docs/self-hosted/postgresql-collation-version-mismatch-resolution.mdx +++ b/docs/self-hosted/postgresql-collation-version-mismatch-resolution.mdx @@ -219,6 +219,10 @@ kubectl apply --prune -l deploy=sourcegraph -f cluster.yaml ## AMI/Machine Image based deployments + +**Deprecation notice:** AMI and machine image deployments will be sunset in Sourcegraph 7.0.0. + + Our AMI and GCP machine image deployments run Kubernetes internally, and thus follow the same general directions as our Helm Deployments described above. To access the deployment you must SSH into your AMI/Machine image first. diff --git a/docs/self-hosted/updates/index.mdx b/docs/self-hosted/updates/index.mdx index 0d480ef2e..0a5022895 100644 --- a/docs/self-hosted/updates/index.mdx +++ b/docs/self-hosted/updates/index.mdx @@ -48,7 +48,7 @@ Sourcegraph has two upgrade types. **Standard** upgrades and **Multiversion** up - Moves Sourcegraph multiple versions forward (`v5.0.0` to `v5.2.0`). - Requires downtime while the database schemas and rewritten and unfinished out-of-band migrations are applied - We currently support jumping from version `v3.20` or later to any future version. -- **AMIs do not yet support multiversion upgrades. We hope to improve this soon.** +- **AMIs do not yet support multiversion upgrades. Note: AMI deployments will be sunset in 7.0.0.** > _Note: Patch versions don't determine upgrade type -- you should always upgrade to the latest patch._ @@ -130,7 +130,7 @@ If your instance has schema drift or unfinished oob migrations you may need to a - [Multiversion Upgrade Operations](/self-hosted/deploy/docker-single-container/#multi-version-upgrades) - [Upgrade Notes](https://sourcegraph.com/changelog/self-hosted/server) - [**Pure-docker custom deployments**](/self-hosted/updates/pure-docker) -- [**Sourcegraph AWS AMI instances**](/self-hosted/deploy/machine-images/aws-ami#upgrade) +- [**Sourcegraph AWS AMI instances**](/self-hosted/deploy/machine-images/aws-ami#upgrade) *(deprecated — sunset in 7.0.0)* ## Other helpful links From 662758a603f7de1dc55bd5b6dd7d4c567d2af05f Mon Sep 17 00:00:00 2001 From: Warren Gifford Date: Thu, 19 Feb 2026 11:07:33 -0800 Subject: [PATCH 005/217] chore/release: sunset notice (#1612) closes PLAT-415 This PR adds a sunset warning to the docs repo that single-container will be sunset in the 7.0.0 release. --- docs/admin/auth/saml/index.mdx | 2 -- docs/admin/auth/troubleshooting.mdx | 1 - docs/admin/config/site-config.mdx | 1 - docs/admin/repo/auth.mdx | 1 - docs/self-hosted/advanced-config-file.mdx | 3 --- docs/self-hosted/deploy/docker-compose/migrate.mdx | 2 ++ docs/self-hosted/deploy/docker-single-container/aws.mdx | 2 ++ .../deploy/docker-single-container/digitalocean.mdx | 2 ++ .../deploy/docker-single-container/google-cloud.mdx | 2 ++ docs/self-hosted/deploy/docker-single-container/index.mdx | 2 ++ docs/self-hosted/deploy/index.mdx | 4 ++-- docs/self-hosted/index.mdx | 2 -- docs/self-hosted/observability/logs.mdx | 4 +++- docs/self-hosted/observability/metrics.mdx | 8 ++++++-- docs/self-hosted/postgres.mdx | 4 +++- docs/self-hosted/updates/index.mdx | 5 ++--- 16 files changed, 26 insertions(+), 19 deletions(-) diff --git a/docs/admin/auth/saml/index.mdx b/docs/admin/auth/saml/index.mdx index 035d43b98..e05280972 100644 --- a/docs/admin/auth/saml/index.mdx +++ b/docs/admin/auth/saml/index.mdx @@ -71,7 +71,6 @@ Here are some examples of what your site config might look like: Then, confirm that there are no error messages in: - The `sourcegraph-frontend` deployment logs for instances using [Docker Compose](/self-hosted/deploy/docker-compose/) and [Kubernetes](/self-hosted/deploy/kubernetes/) -- The `sourcegraph/server` container logs for instances using a [single docker container](/self-hosted/deploy/docker-single-container/) The most likely error message indicating a problem is: @@ -179,7 +178,6 @@ See [SAML troubleshooting](#troubleshooting) for more tips. Set the env var `INSECURE_SAML_LOG_TRACES=1` to log all SAML requests and responses on: - The `sourcegraph-frontend` deployment for instances using [Docker Compose](/self-hosted/deploy/docker-compose/) and [Kubernetes](/self-hosted/deploy/kubernetes/) -- The `sourcegraph/server` container for instances using a [single docker container](/self-hosted/deploy/docker-single-container/) ### Debugging with your browser diff --git a/docs/admin/auth/troubleshooting.mdx b/docs/admin/auth/troubleshooting.mdx index 9e09b6460..bdc943ce0 100644 --- a/docs/admin/auth/troubleshooting.mdx +++ b/docs/admin/auth/troubleshooting.mdx @@ -39,7 +39,6 @@ Therefore, it makes no sense to have the central SSO redirect users directly bac Set the env var `INSECURE_OAUTH2_LOG_TRACES=1` to log all OAuth2 requests and responses on: - [Docker Compose](/self-hosted/deploy/docker-compose/) and [Kubernetes](/self-hosted/deploy/kubernetes/): the `sourcegraph-frontend` deployment -- [Single-container](/self-hosted/deploy/docker-single-container/): the `sourcegraph/server` container ### Make sure the client ID and client secret are actually correct diff --git a/docs/admin/config/site-config.mdx b/docs/admin/config/site-config.mdx index 739d9b865..7ddb2fd37 100644 --- a/docs/admin/config/site-config.mdx +++ b/docs/admin/config/site-config.mdx @@ -1160,7 +1160,6 @@ If you are having trouble accessing the web UI, you can make edits to your site Set `FRONTEND_CONTAINER` to: - [Docker Compose](/self-hosted/deploy/docker-compose/): the `sourcegraph-frontend` container -- [Single-container](/self-hosted/deploy/docker-single-container/): the `sourcegraph/server` container ```sh docker exec -it --user=root $FRONTEND_CONTAINER sh -c 'apk add --no-cache && nano /home/sourcegraph/site-config.json' diff --git a/docs/admin/repo/auth.mdx b/docs/admin/repo/auth.mdx index 10da2cb75..9e91db9a4 100644 --- a/docs/admin/repo/auth.mdx +++ b/docs/admin/repo/auth.mdx @@ -33,7 +33,6 @@ Some providers may require additional configuration, consult the [code host spec - [Sourcegraph with Docker Compose](/self-hosted/deploy/docker-compose/): See [the Docker Compose git configuration guide](/self-hosted/deploy/docker-compose/#git-configuration). - [Sourcegraph with Kubernetes](/self-hosted/deploy/kubernetes/): See [Configure repository cloning via SSH](/self-hosted/deploy/kubernetes/configure#ssh-for-cloning). -- [Single-container Sourcegraph](/self-hosted/deploy/docker-single-container/): See [the single-container git configuration guide](/self-hosted/deploy/docker-single-container/#git-configuration-and-authentication). ## Troubleshooting diff --git a/docs/self-hosted/advanced-config-file.mdx b/docs/self-hosted/advanced-config-file.mdx index 07c0ba5ba..010ef7fa5 100644 --- a/docs/self-hosted/advanced-config-file.mdx +++ b/docs/self-hosted/advanced-config-file.mdx @@ -27,7 +27,6 @@ Set `SITE_CONFIG_FILE=site.json` and mount the config on: - [Docker Compose](/self-hosted/deploy/docker-compose/) and [Kubernetes](/self-hosted/deploy/kubernetes/): all `frontend` containers -- [Single-container](/self-hosted/deploy/docker-single-container/): the `sourcegraph/server` container Where `site.json` is a file that contains the [site configuration](/admin/config/site-config), which you would otherwise edit through the in-app site configuration editor. @@ -50,7 +49,6 @@ Set `EXTSVC_CONFIG_FILE=extsvc.json` and mount the config on: - [Docker Compose](/self-hosted/deploy/docker-compose/) and [Kubernetes](/self-hosted/deploy/kubernetes/): all `frontend` containers -- [Single-container](/self-hosted/deploy/docker-single-container/): the `sourcegraph/server` container Where `extsvc.json` contains a JSON object that specifies _all_ of your code hosts in a single JSONC file: @@ -117,7 +115,6 @@ To configure a GitHub App, add `clientID` and `privateKey` fields to the `gitHub Set `GLOBAL_SETTINGS_FILE=global-settings.json` and mount the config on: - [Docker Compose](/self-hosted/deploy/docker-compose/) and [Kubernetes](/self-hosted/deploy/kubernetes/): all `frontend` containers -- [Single-container](/self-hosted/deploy/docker-single-container/): the `sourcegraph/server` container Where `global-settings.json` contains the global settings, which you would otherwise edit through the in-app global settings editor. diff --git a/docs/self-hosted/deploy/docker-compose/migrate.mdx b/docs/self-hosted/deploy/docker-compose/migrate.mdx index 39fd2d928..1ece2e3b3 100644 --- a/docs/self-hosted/deploy/docker-compose/migrate.mdx +++ b/docs/self-hosted/deploy/docker-compose/migrate.mdx @@ -1,5 +1,7 @@ # Migrate from the single Docker image to Docker Compose +The single-container (`sourcegraph/server`) deployment mode has been **removed in Sourcegraph 7.0.0**. The `sourcegraph/server` Docker image is no longer published starting with 7.0.0. You **must** migrate to Docker Compose or Kubernetes before upgrading to 7.0.0. + > ⚠️ We recommend new users use our [Kubernetes Helm](/self-hosted/deploy/kubernetes) or [Docker Compose](/self-hosted/deploy/docker-compose) deployment methods. Note: [machine image](/self-hosted/deploy/machine-images/) and [script-install](/self-hosted/deploy/single-node/script) deployments are being sunset in Sourcegraph 7.0.0. Existing customers can reach out to our Customer Engineering team support@sourcegraph.com for migration assistance. Since Sourcegraph 3.13, deploying via Docker Compose is the recommended method for production deployments as it provides resource isolation between Sourcegraph services which makes it more scalable and stable. This page describes how to migrate from a single Docker image deployment to the Docker Compose deployment method. diff --git a/docs/self-hosted/deploy/docker-single-container/aws.mdx b/docs/self-hosted/deploy/docker-single-container/aws.mdx index 8d082ae03..eef6959cc 100644 --- a/docs/self-hosted/deploy/docker-single-container/aws.mdx +++ b/docs/self-hosted/deploy/docker-single-container/aws.mdx @@ -1,5 +1,7 @@ # Install single-container Sourcegraph with Docker on AWS +The single-container (`sourcegraph/server`) deployment mode has been **removed in Sourcegraph 7.0.0**. The `sourcegraph/server` Docker image is no longer published starting with 7.0.0. Customers must [migrate to Docker Compose](/self-hosted/deploy/docker-compose/migrate) or [Kubernetes](/self-hosted/deploy/kubernetes/) before upgrading to 7.0.0. + This tutorial shows you how to deploy [single-container Sourcegraph with Docker](/self-hosted/deploy/docker-single-container/) to a single EC2 instance on AWS. > NOTE: We _do not_ recommend using this method for a production instance. If deploying a production instance, see [our recommendations](/self-hosted/deploy/) for how to choose a deployment type that suits your needs. We recommend [Docker Compose](/self-hosted/deploy/docker-compose/aws) for most initial production deployments. diff --git a/docs/self-hosted/deploy/docker-single-container/digitalocean.mdx b/docs/self-hosted/deploy/docker-single-container/digitalocean.mdx index 495f9f56d..6afc58a35 100644 --- a/docs/self-hosted/deploy/docker-single-container/digitalocean.mdx +++ b/docs/self-hosted/deploy/docker-single-container/digitalocean.mdx @@ -1,5 +1,7 @@ # Install single-container Sourcegraph with Docker on DigitalOcean +The single-container (`sourcegraph/server`) deployment mode has been **removed in Sourcegraph 7.0.0**. The `sourcegraph/server` Docker image is no longer published starting with 7.0.0. Customers must [migrate to Docker Compose](/self-hosted/deploy/docker-compose/migrate) or [Kubernetes](/self-hosted/deploy/kubernetes/) before upgrading to 7.0.0. + This tutorial shows you how to deploy [single-container Sourcegraph with Docker](/self-hosted/deploy/docker-single-container/) to a single node running on DigitalOcean. > NOTE: We _do not_ recommend using this method for a production instance. If deploying a production instance, see [our recommendations](/self-hosted/deploy/) for how to choose a deployment type that suits your needs. We recommend [Docker Compose](/self-hosted/deploy/docker-compose/digitalocean) for most initial production deployments. diff --git a/docs/self-hosted/deploy/docker-single-container/google-cloud.mdx b/docs/self-hosted/deploy/docker-single-container/google-cloud.mdx index d6ca19cc2..863ae1ae4 100644 --- a/docs/self-hosted/deploy/docker-single-container/google-cloud.mdx +++ b/docs/self-hosted/deploy/docker-single-container/google-cloud.mdx @@ -1,5 +1,7 @@ # Install single-container Sourcegraph with Docker on Google Cloud +The single-container (`sourcegraph/server`) deployment mode has been **removed in Sourcegraph 7.0.0**. The `sourcegraph/server` Docker image is no longer published starting with 7.0.0. Customers must [migrate to Docker Compose](/self-hosted/deploy/docker-compose/migrate) or [Kubernetes](/self-hosted/deploy/kubernetes/) before upgrading to 7.0.0. + This tutorial shows you how to deploy [single-container Sourcegraph with Docker](/self-hosted/deploy/docker-single-container/) to a single node running on Google Cloud. > NOTE: We _do not_ recommend using this method for a production instance. If deploying a production instance, see [our recommendations](/self-hosted/deploy/) for how to choose a deployment type that suits your needs. We recommend [Docker Compose](/self-hosted/deploy/docker-compose/google-cloud) for most initial production deployments. diff --git a/docs/self-hosted/deploy/docker-single-container/index.mdx b/docs/self-hosted/deploy/docker-single-container/index.mdx index e167935a7..a55289e90 100644 --- a/docs/self-hosted/deploy/docker-single-container/index.mdx +++ b/docs/self-hosted/deploy/docker-single-container/index.mdx @@ -1,5 +1,7 @@ # Docker Single Container Deployment +The single-container (`sourcegraph/server`) deployment mode has been **removed in Sourcegraph 7.0.0**. The `sourcegraph/server` Docker image is no longer published starting with 7.0.0. Customers must [migrate to Docker Compose](/self-hosted/deploy/docker-compose/migrate) or [Kubernetes](/self-hosted/deploy/kubernetes/) before upgrading to 7.0.0. + The Docker Single Container deployment type is a way to very quickly get an instance of Sourcegraph set up locally to experiment with many of its features. However, it is **not recommended** for a production instance, and **has limitations** depending on the OS you are deploying to, as well as the associated resources. See the [troubleshooting section](#troubleshooting) for additional information. [Code Insights](/code-insights/) is not supported in Single Container deployments. To try Code Insights you must deploy using [Docker Compose](/self-hosted/deploy/docker-compose/) or [Kubernetes](/self-hosted/deploy/kubernetes/). [Tracing](/self-hosted/observability/tracing) is disabled by default, and if you intend to enable it, you will have to deploy and configure the [OpenTelemetry Collector](/self-hosted/observability/opentelemetry). The Single Container deployment does not ship with this service included. It is strongly recommended to use one of the aforementioned deployment methods if tracing support is a requirement. diff --git a/docs/self-hosted/deploy/index.mdx b/docs/self-hosted/deploy/index.mdx index dc20d6ebd..3683a0051 100644 --- a/docs/self-hosted/deploy/index.mdx +++ b/docs/self-hosted/deploy/index.mdx @@ -108,9 +108,9 @@ See [Sourcegraph Machine Images](/self-hosted/deploy/machine-images) for more in to maintain and manage your own infrastructure. -### On-premises +### On-premises (removed in 7.0.0) -For setting up quick **non-production** environments on-premises. +The single-container (`sourcegraph/server`) deployment mode has been **removed in Sourcegraph 7.0.0**. Customers must [migrate to Docker Compose](/self-hosted/deploy/docker-compose/migrate) or [Kubernetes](/self-hosted/deploy/kubernetes/) before upgrading to 7.0.0. - [Docker Single Container](/self-hosted/deploy/docker-single-container/) - Install Sourcegraph using a single Docker container diff --git a/docs/self-hosted/index.mdx b/docs/self-hosted/index.mdx index ddd6e9603..4522aba76 100644 --- a/docs/self-hosted/index.mdx +++ b/docs/self-hosted/index.mdx @@ -24,7 +24,6 @@ Get started running Sourcegraph on-prem. - [Google Cloud installation](/self-hosted/deploy/docker-compose/google-cloud) - [Kubernetes](/self-hosted/deploy/kubernetes/) - [Machine images](/self-hosted/deploy/machine-images/) -- [Docker single container](/self-hosted/deploy/docker-single-container/) - [Instance sizing](/self-hosted/deploy/instance-size) - [Resource estimator](/self-hosted/deploy/resource-estimator) - [Scaling](/self-hosted/deploy/scale) @@ -37,7 +36,6 @@ Get started running Sourcegraph on-prem. - [Docker Compose upgrades](https://sourcegraph.com/changelog/self-hosted/docker-compose) - [Kubernetes upgrades](https://sourcegraph.com/changelog/self-hosted/kubernetes) - [Pure Docker upgrades](/self-hosted/updates/pure-docker) -- [Server upgrades](https://sourcegraph.com/changelog/self-hosted/server) - [Migrator](/self-hosted/updates/migrator/) - [Upgrading PostgreSQL](/self-hosted/postgres#upgrading-postgresql) diff --git a/docs/self-hosted/observability/logs.mdx b/docs/self-hosted/observability/logs.mdx index 99e179a52..63b64ff61 100644 --- a/docs/self-hosted/observability/logs.mdx +++ b/docs/self-hosted/observability/logs.mdx @@ -14,7 +14,9 @@ A Sourcegraph service's log level is configured via the environment variable `SR - `eror`: Error. - `crit`: Critical. -Learn more about how to apply these environment variables in [docker-compose](/self-hosted/deploy/docker-compose/#set-environment-variables) and [server](/self-hosted/deploy/docker-single-container/#environment-variables) deployments. +Learn more about how to apply these environment variables in [docker-compose](/self-hosted/deploy/docker-compose/#set-environment-variables) deployments. + +> **Note:** The single-container [server](/self-hosted/deploy/docker-single-container/) deployment mode has been removed in 7.0.0. Please [migrate to Docker Compose](/self-hosted/deploy/docker-compose/migrate). ## Log format diff --git a/docs/self-hosted/observability/metrics.mdx b/docs/self-hosted/observability/metrics.mdx index 3f4102520..1d19e11b0 100644 --- a/docs/self-hosted/observability/metrics.mdx +++ b/docs/self-hosted/observability/metrics.mdx @@ -81,7 +81,9 @@ kubectl port-forward svc/grafana 3370:30070 Grafana will be available http://localhost:3370/-/debug/grafana. -If you are using [Docker Single Container](/self-hosted/deploy/docker-single-container/) or the [Docker Compose deployment option](/self-hosted/deploy/), Grafana is available locally at http://localhost:3370/-/debug/grafana without any additional setup. +If you are using the [Docker Compose deployment option](/self-hosted/deploy/), Grafana is available locally at http://localhost:3370/-/debug/grafana without any additional setup. + +> **Note:** The [Docker Single Container](/self-hosted/deploy/docker-single-container/) deployment mode has been removed in 7.0.0. Please [migrate to Docker Compose](/self-hosted/deploy/docker-compose/migrate). If Sourcegraph is deployed to a remote server, then access via an SSH tunnel using a tool such as [sshuttle](https://github.com/sshuttle/sshuttle) is required to establish a secure connection to Grafana. To access the remote server using `sshuttle` from your local machine: @@ -195,9 +197,11 @@ If you are using the [Kubernetes deployment option](/self-hosted/deploy/kubernet kubectl port-forward svc/prometheus 9090:30090 ``` -If you are using [Docker Single Container](/self-hosted/deploy/docker-single-container/) or the [Docker Compose deployment option](/self-hosted/deploy/), you will need to restart the Sourcegraph container +If you are using the [Docker Compose deployment option](/self-hosted/deploy/), you will need to restart the Sourcegraph container with a flag `--publish 9090:9090` in the `docker run` command. +> **Note:** The [Docker Single Container](/self-hosted/deploy/docker-single-container/) deployment mode has been removed in 7.0.0. Please [migrate to Docker Compose](/self-hosted/deploy/docker-compose/migrate). + Prometheus will be available http://localhost:9090. ## Using a custom monitoring system diff --git a/docs/self-hosted/postgres.mdx b/docs/self-hosted/postgres.mdx index 848f04bb2..1dee69c48 100644 --- a/docs/self-hosted/postgres.mdx +++ b/docs/self-hosted/postgres.mdx @@ -106,6 +106,8 @@ When running an [external PostgreSQL instance](/self-hosted/external-services/po > WARNING: **Do not allow Sourcegraph to run/connect to the new Postgres database until it has been fully populated with your data.** Doing so could result in Sourcegraph trying to create e.g. a new DB schema and partially migrating. If this happens to you, restore from the backup you previously took or contact us (support@sourcegraph.com) -#### Single-container Sourcegraph +#### Single-container Sourcegraph (removed in 7.0.0) + +The single-container (`sourcegraph/server`) deployment mode has been removed in Sourcegraph 7.0.0. [Migrate to Docker Compose](/self-hosted/deploy/docker-compose/migrate) or [Kubernetes](/self-hosted/deploy/kubernetes/). Sourcegraph Single-container is not a supported production deployment and currently doesn't support upgrades to Postgres 16. Admins with production data in a single container deployment are advised to reach out to support@sourcegraph.com for assistance. diff --git a/docs/self-hosted/updates/index.mdx b/docs/self-hosted/updates/index.mdx index 0a5022895..7e2e3c578 100644 --- a/docs/self-hosted/updates/index.mdx +++ b/docs/self-hosted/updates/index.mdx @@ -125,9 +125,8 @@ If your instance has schema drift or unfinished oob migrations you may need to a - [Standard Upgrade Operations](/self-hosted/deploy/kubernetes#standard-upgrades) - [Multiversion Upgrade Operations](/self-hosted/deploy/kubernetes#multi-version-upgrades) - [Upgrade Notes](https://sourcegraph.com/changelog/self-hosted/kubernetes) -- **Single-container Sourcegraph with Docker** - - [Standard Upgrade Operations](/self-hosted/deploy/docker-single-container/#standard-upgrades) - - [Multiversion Upgrade Operations](/self-hosted/deploy/docker-single-container/#multi-version-upgrades) +- **Single-container Sourcegraph with Docker (removed in 7.0.0)** + - The single-container deployment mode has been sunset. [Migrate to Docker Compose](/self-hosted/deploy/docker-compose/migrate) or [Kubernetes](/self-hosted/deploy/kubernetes/). - [Upgrade Notes](https://sourcegraph.com/changelog/self-hosted/server) - [**Pure-docker custom deployments**](/self-hosted/updates/pure-docker) - [**Sourcegraph AWS AMI instances**](/self-hosted/deploy/machine-images/aws-ami#upgrade) *(deprecated — sunset in 7.0.0)* From 8a2b56de897654bc0a20ab58234664983e8f7dae Mon Sep 17 00:00:00 2001 From: Warren Gifford Date: Thu, 19 Feb 2026 11:44:46 -0800 Subject: [PATCH 006/217] pure docker deprecation notice (#1602) This is just a note that we plan to deprecate the pure docker deployment type --- docs/self-hosted/updates/pure-docker.mdx | 2 ++ 1 file changed, 2 insertions(+) diff --git a/docs/self-hosted/updates/pure-docker.mdx b/docs/self-hosted/updates/pure-docker.mdx index dbc176290..ab38230cd 100644 --- a/docs/self-hosted/updates/pure-docker.mdx +++ b/docs/self-hosted/updates/pure-docker.mdx @@ -1,5 +1,7 @@ # Updating a pure-Docker Sourcegraph cluster +> WARNING: **The pure-Docker deployment type is planned for deprecation.** We recommend migrating to a supported deployment method such as [Docker Compose](/self-hosted/deploy/docker-compose) or [Kubernetes](/self-hosted/deploy/kubernetes). If you have questions or need assistance with migration, please [contact support](https://sourcegraph.com/contact). + This document describes the exact changes needed to update a [pure-Docker Sourcegraph cluster](https://github.com/sourcegraph/deploy-sourcegraph-docker). Each section comprehensively describes the changes needed in Docker images, environment variables, and added/removed services. **Always refer to this page before upgrading Sourcegraph,** as it comprehensively describes the steps needed to upgrade, and any manual migration steps you must perform. From d4324f757fdde7aad999be9489b21f7c8297a9de Mon Sep 17 00:00:00 2001 From: Warren Gifford Date: Thu, 19 Feb 2026 11:45:13 -0800 Subject: [PATCH 007/217] chore/release: sunset notice PG12 -> PG16 upgrader (#1622) closes PLAT-414 Corresponding docs update to https://github.com/sourcegraph/sourcegraph/pull/9099 Warns admins that the automatic PG upgrade entryscript is removed in 7.0.0 --- docs/self-hosted/deploy/docker-compose/upgrade.mdx | 4 ++++ .../deploy/docker-single-container/index.mdx | 6 +++++- docs/self-hosted/deploy/kubernetes/index.mdx | 4 +++- docs/self-hosted/deploy/kubernetes/upgrade.mdx | 2 +- docs/self-hosted/external-services/postgres.mdx | 7 +++++-- .../self-hosted/how-to/postgres-12-to-16-drift.mdx | 2 +- .../how-to/upgrade-postgres-12-16-builtin-dbs.mdx | 6 +++++- docs/self-hosted/postgres.mdx | 14 +++++++++++++- docs/self-hosted/postgres12-end-of-life-notice.mdx | 8 ++++++-- docs/self-hosted/updates/index.mdx | 2 +- 10 files changed, 44 insertions(+), 11 deletions(-) diff --git a/docs/self-hosted/deploy/docker-compose/upgrade.mdx b/docs/self-hosted/deploy/docker-compose/upgrade.mdx index 85be4fc4d..8c4d83c97 100644 --- a/docs/self-hosted/deploy/docker-compose/upgrade.mdx +++ b/docs/self-hosted/deploy/docker-compose/upgrade.mdx @@ -68,6 +68,10 @@ $ docker-compose up -d --remove-orphans > advisement.{' '} > + +If you are upgrading to Sourcegraph 7.0.0 or later and your databases are still on PostgreSQL 12, you must first upgrade to a 6.x release (such as 6.11.x) to allow the automatic PostgreSQL 12 to 16 upgrade to complete. The entrypoint script that performs this upgrade has been removed in 7.0.0. + + To perform a multi-version upgrade via migrators [upgrade](/self-hosted/updates/migrator/migrator-operations#upgrade) command on a Sourcegraph instance running on Docker compose follow the procedure below: 1. **Check Upgrade Readiness**: diff --git a/docs/self-hosted/deploy/docker-single-container/index.mdx b/docs/self-hosted/deploy/docker-single-container/index.mdx index a55289e90..1de867345 100644 --- a/docs/self-hosted/deploy/docker-single-container/index.mdx +++ b/docs/self-hosted/deploy/docker-single-container/index.mdx @@ -140,6 +140,10 @@ SELECT * FROM users; ### Postgresql 16 + +The single-container deployment (`sourcegraph/server`) is sunset in Sourcegraph 7.0.0 and is no longer supported. The automatic PostgreSQL 12 to 16 upgrade procedure described below only applies to Sourcegraph 5.10.x through 6.x releases. Users should migrate to a supported deployment type before upgrading to 7.0.0. + + > Warning: The 5.11 release updates the database container images from Postgres 12 to Postgres 16. Customers are advised to have a database backup before upgrading! See our [postgres 12 end of life](https://sourcegraph.com/docs/self-hosted/postgres12-end-of-life-notice#postgres-12-end-of-life) notice! From sourcegraph version 5.11 onwards, the Sourcegraph single container Docker image uses Postgresql 16. Upgrading from Postgresql 12 to Postgresql 16 is a manual process, that is similar to the one outlined below for multi-version upgrades, but migrator has been merged into the container, allowing for a simpler upgrade. @@ -267,7 +271,7 @@ The version of this Postgres container is dependent on the version of the instan | `3.20.X` - `3.29.X` | `postgres-12.6` | | `3.30.X` - `3.37.X` | `postgres-12.6-alpine` | | `3.38.X` - `5.9.X` | `postgres-12-alpine` | -| `5.10.X` - | `postgresql-16` | +| `5.10.X` - `6.x` | `postgresql-16` | ## Troubleshooting diff --git a/docs/self-hosted/deploy/kubernetes/index.mdx b/docs/self-hosted/deploy/kubernetes/index.mdx index 10a95dd28..d92af9231 100644 --- a/docs/self-hosted/deploy/kubernetes/index.mdx +++ b/docs/self-hosted/deploy/kubernetes/index.mdx @@ -1025,7 +1025,9 @@ When all pods have restarted and show as Running, you can browse to your Sourceg `v6.1.x`, `v6.2.x`, etc.) must first upgrade to `v5.10.3940` or `v5.11.6271` and then use the standard upgrade procedure to get to their target version. This is because migrator in all versions from `v6.0.0` - onwards will no longer connect to Postgres 12 databases. For more info see + onwards will no longer connect to Postgres 12 databases. Additionally, + starting in Sourcegraph 7.0.0, the automatic PostgreSQL 12 to 16 upgrade + entrypoint script has been removed entirely. For more info see our [PostgreSQL upgrade docs](/self-hosted/postgres#requirements). diff --git a/docs/self-hosted/deploy/kubernetes/upgrade.mdx b/docs/self-hosted/deploy/kubernetes/upgrade.mdx index c11a60b01..8f92a4e33 100644 --- a/docs/self-hosted/deploy/kubernetes/upgrade.mdx +++ b/docs/self-hosted/deploy/kubernetes/upgrade.mdx @@ -111,7 +111,7 @@ To perform a multi-version upgrade via migrators [upgrade](/self-hosted/updates/ kubectl apply --prune -l deploy=sourcegraph -f cluster.yaml ``` - > Note: This step will ensure that any PostgreSQL upgrade performed as an entrypoint script will have a chance to execute before the migrator is run. For more information see [Upgradeing PostgreSQL](/self-hosted/postgres#upgrading-postgresql). + > Note: This step will ensure that any PostgreSQL upgrade performed as an entrypoint script will have a chance to execute before the migrator is run. For more information see [Upgrading PostgreSQL](/self-hosted/postgres#upgrading-postgresql). **Starting in Sourcegraph 7.0.0, the entrypoint upgrade script has been removed. Users on PostgreSQL 12 must upgrade to a 6.x release first.** 4. **Run Migrator with the `upgrade` command**: diff --git a/docs/self-hosted/external-services/postgres.mdx b/docs/self-hosted/external-services/postgres.mdx index 41b590631..31b58978c 100644 --- a/docs/self-hosted/external-services/postgres.mdx +++ b/docs/self-hosted/external-services/postgres.mdx @@ -5,8 +5,11 @@ You can use your own PostgreSQL v16+ server with Sourcegraph if you wish. For ex Please review the [PostgreSQL](/self-hosted/postgres) documentation for a complete list of requirements. - As of version 6.0.0 The Sourcegraph application will require PostgreSQL - v16+, earlier versions worked with 12 or greater. + As of version 6.0.0, the Sourcegraph application requires PostgreSQL + v16+, earlier versions worked with 12 or greater. Starting in 7.0.0, + the automatic PostgreSQL 12 to 16 upgrade entrypoint script has been + removed from the built-in database images. Users with external databases + must ensure they are running PostgreSQL 16 before upgrading to 7.0.0. ## General recommendations diff --git a/docs/self-hosted/how-to/postgres-12-to-16-drift.mdx b/docs/self-hosted/how-to/postgres-12-to-16-drift.mdx index 5f1c5fbcf..6b9f9a0a3 100644 --- a/docs/self-hosted/how-to/postgres-12-to-16-drift.mdx +++ b/docs/self-hosted/how-to/postgres-12-to-16-drift.mdx @@ -1,6 +1,6 @@ # PostgreSQL 12 to 16 Schema Drift -In Sourcegraph versions `5.10.x` and `5.11.x` we support both PostgreSQL 12 and 16. However, Sourcegraph's database management tool `migrator` expects the database schema of the various Sourcegraph databases to be in an exact expected state. The upgrade from PostgreSQL 12 to 16 is opinionated and automatically mutates the schema without running our application defined migrations. Starting in Sourcegraph `5.10.0` we expect databases to be in PostgresSQL 16 and as such our tooling will identify schema drift in PostgreSQL 12 databases. This drift does not impact the functionality of the Sourcegraph instance but will stop migrator's multiversion `upgrade` command from executing. +In Sourcegraph versions `5.10.x` and `5.11.x` we support both PostgreSQL 12 and 16. However, Sourcegraph's database management tool `migrator` expects the database schema of the various Sourcegraph databases to be in an exact expected state. The upgrade from PostgreSQL 12 to 16 is opinionated and automatically mutates the schema without running our application defined migrations. Starting in Sourcegraph `5.10.0` we expect databases to be in PostgresSQL 16 and as such our tooling will identify schema drift in PostgreSQL 12 databases. This drift does not impact the functionality of the Sourcegraph instance but will stop migrator's multiversion `upgrade` command from executing. Note that starting in Sourcegraph 7.0.0, the entrypoint script that performs the automatic PostgreSQL 12 to 16 upgrade has been removed. Users must complete this upgrade on a 6.x release. > **Note:** The autoupgrade feature has been removed in Sourcegraph 6.12.0 and later. The instructions below for autoupgrade only apply to versions prior to 6.12.0. diff --git a/docs/self-hosted/how-to/upgrade-postgres-12-16-builtin-dbs.mdx b/docs/self-hosted/how-to/upgrade-postgres-12-16-builtin-dbs.mdx index 2f12582c8..512723664 100644 --- a/docs/self-hosted/how-to/upgrade-postgres-12-16-builtin-dbs.mdx +++ b/docs/self-hosted/how-to/upgrade-postgres-12-16-builtin-dbs.mdx @@ -1,6 +1,10 @@ # Upgrading Built-in PostgreSQL -The following doc contains detailed instructions for upgrading the built-in PostgreSQL databases. Via our `postgresql-16` and `postgresql-16-codeinsights` image entrypoint script. This doc assumes an admin is attempting to upgrade to Sourcegraph `6.0.0` from an older version (usually pre `5.10.0`) using one of our "deploy" repos. For more general info see [Upgrading PostgreSQL](/self-hosted/postgres#upgrading-postgresql). + +The entrypoint script described in this guide was removed in Sourcegraph 7.0.0. This guide only applies to upgrades targeting Sourcegraph 5.10.x through 6.x. Users on PostgreSQL 12 must complete this upgrade on a 6.x release before upgrading to 7.0.0 or later. + + +The following doc contains detailed instructions for upgrading the built-in PostgreSQL databases via our `postgresql-16` and `postgresql-16-codeinsights` image entrypoint script. This doc assumes an admin is attempting to upgrade to Sourcegraph `6.0.0` from an older version (usually pre `5.10.0`) using one of our "deploy" repos. For more general info see [Upgrading PostgreSQL](/self-hosted/postgres#upgrading-postgresql). > WARNING: Upgrading the PostgreSQL database requires stopping your Sourcegraph deployment which will result in **downtime**. > diff --git a/docs/self-hosted/postgres.mdx b/docs/self-hosted/postgres.mdx index 1dee69c48..6b1cb0bab 100644 --- a/docs/self-hosted/postgres.mdx +++ b/docs/self-hosted/postgres.mdx @@ -61,6 +61,10 @@ Database Image Updates: These images contain an entry script that will detect and upgrade Postgres instances from version 12 (the version in our previous images) to Postgres 16. + +Starting in Sourcegraph 7.0.0, the entrypoint script that automatically upgrades PostgreSQL 12 to 16 has been removed from the database container images. Users still on PostgreSQL 12 must upgrade to a 6.x version first to perform the automatic upgrade before upgrading to 7.0.0 or later. + + > WARNING: Upgrading the PostgreSQL database requires stopping your Sourcegraph deployment which will result in **downtime**. > > Additionally, once the upgrade process is started via the database container, interrupting the container before the upgrade is complete could result in corrupting the underlying Postgres database. **We strongly advise taking a backup before the upgrade.** @@ -76,6 +80,10 @@ For additional assistance with PostgreSQL upgrades, please contact support@sourc ### Upgrade entrypoint script options + +The entrypoint upgrade script and its configuration options described below were removed in Sourcegraph 7.0.0. This section only applies to Sourcegraph 5.10.x through 6.x releases. + + The `PG_UPGRADE_EXTRA_ARGS` environment variable allows you to customize the `pg_upgrade` command in `postgresql-16` and `postgresql-16-codeinsights` deployments. - **Quick upgrade option:** @@ -110,4 +118,8 @@ When running an [external PostgreSQL instance](/self-hosted/external-services/po The single-container (`sourcegraph/server`) deployment mode has been removed in Sourcegraph 7.0.0. [Migrate to Docker Compose](/self-hosted/deploy/docker-compose/migrate) or [Kubernetes](/self-hosted/deploy/kubernetes/). -Sourcegraph Single-container is not a supported production deployment and currently doesn't support upgrades to Postgres 16. Admins with production data in a single container deployment are advised to reach out to support@sourcegraph.com for assistance. + +The single-container deployment (`sourcegraph/server`) is sunset in Sourcegraph 7.0.0 and is no longer supported. Admins using single-container deployments should migrate to a supported deployment type such as [Docker Compose](/self-hosted/deploy/docker-compose/) or [Kubernetes](/self-hosted/deploy/kubernetes/) before upgrading to 7.0.0. + + +For versions prior to 7.0.0, single-container deployments do not support automatic PostgreSQL upgrades. Admins with production data in a single-container deployment are advised to reach out to support@sourcegraph.com for assistance. diff --git a/docs/self-hosted/postgres12-end-of-life-notice.mdx b/docs/self-hosted/postgres12-end-of-life-notice.mdx index b4b2b19d2..b1f738f1d 100644 --- a/docs/self-hosted/postgres12-end-of-life-notice.mdx +++ b/docs/self-hosted/postgres12-end-of-life-notice.mdx @@ -1,5 +1,9 @@ # Postgres 12 End of Life + +As of Sourcegraph 7.0.0, the automatic PostgreSQL 12 to 16 upgrade entrypoint script has been fully removed from the database container images. Users still on PostgreSQL 12 must upgrade to a Sourcegraph 6.x release first to perform the automatic database upgrade before upgrading to 7.0.0 or later. + + Sourcegraph's required minimum version of Postgres will be updated to Postgres 16 with upcoming releases, Sourcegraph 5.10. This change in required minimum version is a result of Postgres 12, the previous required minimum version, reaching end of life. Please review the below information and reach out if you have any questions or would like to review the impact this change will have on you! ## What @@ -34,9 +38,9 @@ The steps for upgrading your version of Postgres will be dependent on your organ ## Call to Action -- If you are using Sourcegraph's built-in database images, please work with your account team to plan for an extended downtime as part of your first upgrade to Sourcegraph 5.10 or beyond. +- If you are using Sourcegraph's built-in database images and are still on PostgreSQL 12, you must upgrade to a Sourcegraph 6.x release (such as 6.11.x) to trigger the automatic PostgreSQL upgrade before upgrading to 7.0.0. The automatic upgrade entrypoint script is not available in 7.0.0 or later. -- If you are using external databases, please follow the appropriate processes to upgrade your Sourcegraph databases to Postgres 16. This will be required to upgrade to the versions of Sourcegraph released on and after January 15, 2025. +- If you are using external databases, please follow the appropriate processes to upgrade your Sourcegraph databases to Postgres 16. This is required for all Sourcegraph versions 6.0.0 and later, and 7.0.0 will only connect to PostgreSQL 16 databases. ## Frequently Asked Questions diff --git a/docs/self-hosted/updates/index.mdx b/docs/self-hosted/updates/index.mdx index 7e2e3c578..0ce30230f 100644 --- a/docs/self-hosted/updates/index.mdx +++ b/docs/self-hosted/updates/index.mdx @@ -134,7 +134,7 @@ If your instance has schema drift or unfinished oob migrations you may need to a ## Other helpful links - [PostgreSQL Collation Version Mismatch Resolution](/self-hosted/postgresql-collation-version-mismatch-resolution) -- [Postgres 12 End Of Life Notice](/self-hosted/postgres12-end-of-life-notice) +- [Postgres 12 End Of Life Notice](/self-hosted/postgres12-end-of-life-notice) — **Note:** Starting in 7.0.0, the automatic PG12→PG16 upgrade entrypoint script has been removed. Users on PG12 must upgrade to a 6.x release first. - [Migrator operations](/self-hosted/updates/migrator/migrator-operations) - [Upgrading Early Versions](/self-hosted/updates/migrator/upgrading-early-versions) - [Troubleshooting upgrades](/self-hosted/updates/migrator/troubleshooting-upgrades) From cde2003724835ff8c7f2a055945ddbd38b5c7577 Mon Sep 17 00:00:00 2001 From: Travis Lyons Date: Fri, 20 Feb 2026 08:55:52 -0500 Subject: [PATCH 008/217] docs: update scip-go docs (#1606) - highlight scip-go-action usage - document manual indexing steps for other CI systems and local indexing - initial, standardized, layout for scip indexer docs --- .../how-to/index-a-go-repository.mdx | 131 ++++++++---------- docs/code-navigation/how-to/index.mdx | 2 +- 2 files changed, 60 insertions(+), 73 deletions(-) diff --git a/docs/code-navigation/how-to/index-a-go-repository.mdx b/docs/code-navigation/how-to/index-a-go-repository.mdx index 69fd5dacf..f3fa4c720 100644 --- a/docs/code-navigation/how-to/index-a-go-repository.mdx +++ b/docs/code-navigation/how-to/index-a-go-repository.mdx @@ -1,91 +1,68 @@ -# Go SCIP indexing +# Index a Go repository

- This page describes how you can automate data indexing in SCIP for Go - codebases or index data manually. + This page describes how you can use [scip-go](https://github.com/sourcegraph/scip-go) and [src-cli](https://github.com/sourcegraph/src-cli) to enable precise indexing for Go codebases.

-## Automated indexing +## GitHub Actions -Sourcegraph provides the Docker images `sourcegraph/scip-go` and `sourcegraph/src-cli` so that you can easily automate indexing in your favorite CI framework. Note that the `scip-go` image bundles `src-cli`, so the second image may not be necessary. +[sourcegraph/scip-go-action](https://github.com/sourcegraph/scip-go-action) can be used to index a Go repository using GitHub Actions. -The following examples show you how to set up automated indexing in a few popular frameworks. You'll need to substitute the indexer and upload commands with what works for your project locally. If you implement automated indexing in a different framework, feel free to edit this page with instructions! +The action installs the latest versions of [src-cli](https://github.com/sourcegraph/src-cli) and [scip-go](https://github.com/sourcegraph/scip-go) +and relies on setup of a go environment to build your application, prior to running. + +If your Sourcegraph instance enforces GitHub validation (`lsifEnforceAuth`), add `-github-token=` to the `src code-intel upload` command. + +Use a GitHub App installation access token when available, or fall back to a GitHub user token (classic PAT or fine-grained token) with `public_repo` scope and `ADMIN`, `MAINTAIN`, or `WRITE` access to the repository. -### GitHub Actions ```yaml +name: scip-go on: - - push + push: + +permissions: + contents: read jobs: - scip-go: - # this line will prevent forks of this repo from uploading lsif indexes - if: github.repository == '' - runs-on: ubuntu-latest - container: sourcegraph/scip-go:latest - steps: - - uses: actions/checkout@v1 - - name: Generate SCIP data - run: scip-go - - name: Install src CLI - run: | - curl -L https://sourcegraph.com/.api/src-cli/src_linux_amd64 -o /usr/local/bin/src - chmod +x /usr/local/bin/src - - name: Upload SCIP data - # this will upload to Sourcegraph.com, you may need to substitute a different command. - # by default, we ignore failures to avoid disrupting CI pipelines with non-critical errors. - run: src code-intel upload -github-token=${{ secrets.GITHUB_TOKEN }} -ignore-upload-failure + scip-go: + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Setup Go + uses: actions/setup-go@v6 + + - name: Sourcegraph Code Intelligence + uses: sourcegraph/scip-go-action@v1 + with: + github-token: ${{ secrets.GITHUB_TOKEN }} + scip-go-version: latest + sourcegraph-url: https://sourcegraph.com/ + sourcegraph-token: ${{ secrets.SRC_ACCESS_TOKEN }} + upload: true ``` -### CircleCI +## CI/CD Integrations and Local Indexing -```yaml -version: 2.1 +For integration with other CI/CD systems, or to test precise indexing of an individual repository, the following instructions can be used +to install and run `scip-go` and `src-cli`. -jobs: - scip-go: - docker: - - image: sourcegraph/scip-go:latest - steps: - - checkout - - run: scip-go - - run: | - curl -L https://sourcegraph.com/.api/src-cli/src_linux_amd64 -o /usr/local/bin/src - chmod +x /usr/local/bin/src; - # this will upload to Sourcegraph.com, you may need to substitute a different command. - # by default, we ignore failures to avoid disrupting CI pipelines with non-critical errors. - - run: src code-intel upload -github-token=<> -ignore-upload-failure - -workflows: - scip-go: - jobs: - - scip-go -``` + + For general CI patterns (sub-projects, custom build environments, and upload frequency), see [Adding precise code navigation to CI/CD workflows](/code-navigation/how-to/adding-scip-to-workflows). + -### Travis CI +### Setup -```yaml -services: - - docker +1. Install the [Go SCIP indexer](https://github.com/sourcegraph/scip-go): -jobs: - include: - - stage: scip-go - # this will upload to Sourcegraph.com, you may need to substitute a different command. - # by default, we ignore failures to avoid disrupting CI pipelines with non-critical errors. - script: - - | - docker run --rm -v $(pwd):/src -w /src sourcegraph/scip-go:latest /bin/sh -c \ - "scip-go; curl -L https://sourcegraph.com/.api/src-cli/src_linux_amd64 -o /usr/local/bin/src; chmod +x /usr/local/bin/src; src code-intel upload -github-token=$GITHUB_TOKEN -ignore-upload-failure" +```shell +go install github.com/sourcegraph/scip-go/cmd/scip-go@latest ``` -## Manual indexing - -1. Install the [Go SCIP indexer](https://github.com/sourcegraph/scip-go). - -1. Install the [Sourcegraph CLI](https://github.com/sourcegraph/src-cli) with the following command: +2. Install the [Sourcegraph CLI](https://github.com/sourcegraph/src-cli): -```sh +```shell curl -L https://sourcegraph.com/.api/src-cli/src_linux_amd64 -o /usr/local/bin/src chmod +x /usr/local/bin/src ``` @@ -93,18 +70,28 @@ jobs: - **macOS**: Replace `linux` with `darwin` in the URL and choose the appropriate architecture: M1/M2 chips - `arm64`, Intel chips - `amd64`. - **Windows**: Visit [the CLI repo](https://github.com/sourcegraph/src-cli) for further instructions. +### Indexing + 1. `cd` into your Go project's root (where the `go.mod` file lives, if you have one) and run: -```sh +```shell scip-go # generates a file named index.scip ``` -1. Upload the data to a Sourcegraph instance with: + + If you have multiple go modules, run scip-go at the root of each module and adjust + the src code-intel upload command with the appropriate `-root` flag for each generated index.scip file. + + +2. Upload the data to a Sourcegraph instance with: -```sh +```shell +export SRC_ENDPOINT="YOUR_SOURCEGRAPH_URL" +export SRC_ACCESS_TOKEN="YOUR_SOURCEGRAPH_API_TOKEN" - src -endpoint= code-intel upload # for private instances - src code-intel upload -github-token= # for public instances +cd path/to/index.scip +src code-intel upload ``` -The upload command will provide a URL you can visit to see the upload status. When the upload is complete, you can visit the repo and check out the difference in code navigation quality! +The upload command will provide a URL you can visit to see the upload status. + diff --git a/docs/code-navigation/how-to/index.mdx b/docs/code-navigation/how-to/index.mdx index d6ba7665e..e62088f66 100644 --- a/docs/code-navigation/how-to/index.mdx +++ b/docs/code-navigation/how-to/index.mdx @@ -2,7 +2,7 @@ - [Adding precise code navigation to CI/CD workflows](/code-navigation/how-to/adding-scip-to-workflows) - [Combining SCIP uploads from CI/CD and auto-indexing](/code-navigation/how-to/combining-scip-uploads-from-ci-cd-and-auto-indexing) -- [Go SCIP indexing](/code-navigation/how-to/index-a-go-repository) +- [Index a Go repository](/code-navigation/how-to/index-a-go-repository) - [Index a TypeScript or JavaScript repository](/code-navigation/how-to/index-a-typescript-and-javascript-repository) - [Index other languages](/code-navigation/how-to/index-other-languages) - [Code intelligence policies resource usage best practices](/code-navigation/how-to/policies-resource-usage-best-practices) From 2a03b71d1bef0da9fc28958a22e6e37b4f5c6e85 Mon Sep 17 00:00:00 2001 From: Felix Kling Date: Sun, 22 Feb 2026 21:15:43 +0100 Subject: [PATCH 009/217] Update own documentation (#1620) This PR updates the own documentation to reflect the new behavior of this feature. --------- Co-authored-by: Erik Seliger --- docs/admin/access-control/index.mdx | 1 - docs/admin/access-control/ownership.mdx | 7 -- docs/admin/index.mdx | 1 - docs/admin/teams.mdx | 113 ------------------ .../codeowners-format.mdx | 8 -- docs/code-ownership/index.mdx | 57 +++++++++ docs/code-search/queries/index.mdx | 2 +- docs/own/assigned-ownership.mdx | 96 --------------- docs/own/codeowners-ingestion.mdx | 57 --------- docs/own/configuration-reference.mdx | 58 --------- docs/own/index.mdx | 98 --------------- docs/technical-changelog.mdx | 4 +- src/data/navigation.ts | 16 +-- src/data/redirects.ts | 26 ++++ 14 files changed, 88 insertions(+), 456 deletions(-) delete mode 100644 docs/admin/access-control/ownership.mdx delete mode 100644 docs/admin/teams.mdx rename docs/{own => code-ownership}/codeowners-format.mdx (86%) create mode 100644 docs/code-ownership/index.mdx delete mode 100644 docs/own/assigned-ownership.mdx delete mode 100644 docs/own/codeowners-ingestion.mdx delete mode 100644 docs/own/configuration-reference.mdx delete mode 100644 docs/own/index.mdx diff --git a/docs/admin/access-control/index.mdx b/docs/admin/access-control/index.mdx index 98652e757..87382e8f3 100644 --- a/docs/admin/access-control/index.mdx +++ b/docs/admin/access-control/index.mdx @@ -42,7 +42,6 @@ To edit the permissions granted to a role, click the role to expand it, then sel You can read about the specific permission types available for each RBAC-enabled product area below: - [Batch Changes](/admin/access-control/batch-changes) -- [Ownership](/admin/access-control/ownership) - [Service accounts](/admin/service-accounts) ### Deleting a role diff --git a/docs/admin/access-control/ownership.mdx b/docs/admin/access-control/ownership.mdx deleted file mode 100644 index 9258e22a5..000000000 --- a/docs/admin/access-control/ownership.mdx +++ /dev/null @@ -1,7 +0,0 @@ -# Access control for Ownership - -Granular controls for who can assign [Ownership](/own/) can be configured by site admins by tuning the roles assigned to users and the permissions granted to those roles. This page describes the permission types available for Ownership, and whether they are granted by default to the **User** [system role](/admin/access-control/#system-roles). All permissions are granted to the **Site Administrator** system role by default. - -| Name | Description | Granted to **User** by default? | -| ------------------- | ---------------------------------------------------------------------------- | :-----------------------------: | -| `ownerships:assign` | Assign ownership to users and teams on repository, directory and file levels | ✗ | diff --git a/docs/admin/index.mdx b/docs/admin/index.mdx index 608dbc753..7f47826d0 100644 --- a/docs/admin/index.mdx +++ b/docs/admin/index.mdx @@ -64,6 +64,5 @@ Sourcegraph administration is primarily managed by site administrators, who are - [Configure search scopes](/code-search/working/snippets) - [Integrate with Phabricator](/integration/phabricator) - [Add organizations](/admin/organizations) -- [Add teams](/admin/teams) (Experimental) - [Configuring rate limits](/admin/code-hosts/rate-limits) - [Configuring command recording](/admin/repo/recording) diff --git a/docs/admin/teams.mdx b/docs/admin/teams.mdx deleted file mode 100644 index ea902b21e..000000000 --- a/docs/admin/teams.mdx +++ /dev/null @@ -1,113 +0,0 @@ -# Modeling teams in Sourcegraph - - - This feature is in Experimental stage and might change in the future. - - -Teams in Sourcegraph are groups of users with a common handle. Teams are structured as a tree, so teams can have child teams. - -Example team structure that can be modeled: - -``` -Engineering -├─ Security -├─ Code Graph -│ ├─ Batch Changes -│ ├─ Code Insights -├─ source -│ ├─ Repo Management -│ ├─ IAM -Product -``` - -Teams in Sourcegraph are usable in [code ownership](/own/), and other features in the future. Teams can be code owners and will influence the code ownership experience. You can search for code owned by a specific team, and in the future advanced ownership analytics will be informed by given team structures. - -## Configuring teams - -Teams can either be defined directly in Sourcegraph, or be ingested from external systems into Sourcegraph using [src-cli](https://github.com/sourcegraph/src-cli). A team name must be globally unique, and the global namespace for names is shared among users, teams, and orgs. - -### From the UI - -Go to **Teams** from the user navbar item. On this page, click "Create team". A team needs to have a unique name and can optionally take a display name. Additionally, you can add a parent team to build a tree structure as outlined above. - -After hitting create, you will be redirected to the team page where you can add Sourcegraph users as team members. - -> NOTE: It's common to define teams in Sourcegraph from a third party system. Teams defined from src-cli using the `-read-only` flag cannot be modified from the UI to prevent state drift from external systems. - -### From the CLI - -If you prefer a command line based approach, or would like to integrate an external system of record for teams into Sourcegraph, [src-cli](https://github.com/sourcegraph/src-cli) provides commands to manage teams: - -```bash -# List configured teams. Lists root teams, using -parent-team can read child teams. -src teams list [-query=] [-parent-team=] - -# Create a new team. -src teams create -name= [-display-name=] [-parent-team=] [-read-only] - -# Update a team. -src teams update -name= [-display-name=] [-parent-team=] - -# Delete a team. -src teams delete -name= - -# List team members. -src teams members list -name= [-query=] - -# Add a new team member. See user account matching for details on how this works. -src teams members add -team-name= [-email=] [-username=] [-id=] [-external-account-service-id= -external-account-service-type= [-external-account-account-id=] [-external-account-login=]] [-skip-unmatched-members] - -# Remove a team member. See user account matching for details on how this works. -src teams members remove -team-name= [-email=] [-username=] [-id=] [-external-account-service-id= -external-account-service-type= [-external-account-account-id=] [-external-account-login=]] [-skip-unmatched-members] -``` - -#### User account matching - -Matching a user account in Sourcegraph from an external system can be achieved in a few different ways: Sourcegraph User ID, Sourcegraph account email, Sourcegraph username or an explicit external-account mapping can be provided. - -The matching order is as follows: - -- try Sourcegraph user ID -- then try email -- then try username -- then try external-account - -Example for external account matching with configured GitHub auth provider: - -```bash -# Match a user with the account ID 123123123: -src teams members add \ - -team-name='engineering' \ - -external-account-service-id='https://github.com/' \ - -external-account-service-type='github' \ - -external-account-account-id='123123123' -# Match a user with the GitHub login handle alice: -src teams members add \ - -team-name='engineering' \ - -external-account-service-id='https://github.com/' \ - -external-account-service-type='github' \ - -external-account-login='alice' -``` - -### Permissions in teams - -For now, team permissions are based on membership. Read-only teams are only editable by site-admins. The creator of a team can always modify it, even if they are not a member of it. - -| **Action** | **Site-admin** | **Regular user** | **Direct team member** | -| :-------------------------------------: | :------------: | :--------------: | :--------------------: | -| Reading teams, metadata and members | 🟢 | 🟢 | 🟢 | -| Creating a new team | 🟢 | 🟢 | n/a | -| Creating a new child team | 🟢 | 🔴 | 🟢 | -| Creating a new read-only team | 🟢 | 🔴 | n/a | -| Updating team details/metadata | 🟢 | 🔴 | 🟢 | -| Deleting a team | 🟢 | 🔴 | 🟢 | -| Deleting a read-only team | 🟢 | 🔴 | 🔴 | -| Adding a member to a team | 🟢 | 🔴 | 🟢 | -| Removing a member from a team | 🟢 | 🔴 | 🟢 | -| Adding a member to a read-only team | 🟢 | 🔴 | 🔴 | -| Removing a member from a read-only team | 🟢 | 🔴 | 🔴 | - -### Known limitations - -- Read-only teams can only be created by site-admins -- Identity Provider / SCIM integrations are not available at the moment diff --git a/docs/own/codeowners-format.mdx b/docs/code-ownership/codeowners-format.mdx similarity index 86% rename from docs/own/codeowners-format.mdx rename to docs/code-ownership/codeowners-format.mdx index 5eced2c79..fc7233561 100644 --- a/docs/own/codeowners-format.mdx +++ b/docs/code-ownership/codeowners-format.mdx @@ -60,11 +60,3 @@ docs/CODEOWNERS ``` Searches at specific commits will return any `CODEOWNERS` data that exists at that specific commit. - -## Uploading a `CODEOWNERS` file to Sourcegraph - -> Use this approach if you don't want to commit `CODEOWNERS` files to your repos, or if you have an existing system that tracks ownership data and want to sync that data with Sourcegraph. - -Read more on how to [manually ingest `CODEOWNERS` data](/own/codeowners-ingestion) into your Sourcegraph instance. - -The [docs](/own/codeowners-ingestion) detail how to use the UI or `src-cli` to upload `CODEOWNERS` files to Sourcegraph. diff --git a/docs/code-ownership/index.mdx b/docs/code-ownership/index.mdx new file mode 100644 index 000000000..6eb3a79ba --- /dev/null +++ b/docs/code-ownership/index.mdx @@ -0,0 +1,57 @@ +# Code ownership + +Code ownership is aimed at helping find the right person and team to contact, for any question, at any time. + +## Concepts + +**Owner**: An owner is defined as a person in Sourcegraph. + +A _person_ can be: + +- a Sourcegraph user which we were able to resolve from the `CODEOWNERS` handle or email, in which case we link to their profile. +- an unknown user for which we were unable to resolve a profile, in which case we will return the `CODEOWNERS` data we have. + +## Code ownership + +Code ownership is set via [the `CODEOWNERS` format](/code-ownership/codeowners-format). + +## Limitations + +- The feature has not been fully validated to work well on large repositories or large `CODEOWNERS` rulesets. This is a future area of improvement, but please contact us if you run into issues. + +## Browsing ownership + +The ownership information is available for browsing once ownership data is available through [a `CODEOWNERS` file](#code-ownership). + +When displaying a source file, there is an "Owernship" button at the bottom. Clicking it will open the "Owernship" panel. + +![File view with the ownership tab selected in the bottom panel](https://storage.googleapis.com/sourcegraph-assets/docs/own/blob-view-panel-v2.png) + +## Ownership search + +### Searching for files with owners + +Code ownership is a first-class citizen in search. Ownership can be either a query input or a search result: + +- `file:has.owner(user@example.com)` keeps only the search results associated with given user (here referred to by e-mail). +- `-file:has.owner(@username)` removes all results owned by specific user (here referred to by name). + +Ownership predicate can also be used without parameters: + +-`file:has.owner()` will only include files with an owner assigned to them. -`-file:has.owner()` will only include files without an owner. + +When performing a search the `select:file.owners` predicate will return the owners for the result of that search. + +For instance one can find all the owners of TypeScript files in a given repository by using `repo:^github\.com/sourcegraph/sourcegraph$ lang:TypeScript select:file.owners`. + +### Find commits in given release for given owner + +To find all commits between versions `5.0` and `5.1` made by `sourcegraph/own` team, the following query could be used: + +`repo:^github\.com/sourcegraph/sourcegraph$@5.1:^5.0 type:commit file:has.owner(sourcegraph/own)` + +## Further reading + +In order to learn more please check out our references: + +- [CODEOWNERS format](/code-ownership/codeowners-format) - Guide to using the CODEOWNERS file format to define ownership diff --git a/docs/code-search/queries/index.mdx b/docs/code-search/queries/index.mdx index 6beb9f05a..b8dfa9f3b 100644 --- a/docs/code-search/queries/index.mdx +++ b/docs/code-search/queries/index.mdx @@ -85,7 +85,7 @@ The following filters can be used on all searches (using [RE2 syntax](https://go | **repo:has.commit.after(...)** | Filter out stale repositories that don't contain commits past the specified time frame. See [built-in predicates](/code-search/queries/language#built-in-repo-predicate) for more | [`repo:has.commit.after(yesterday)`](https://sourcegraph.com/search?q=context:global+repo:.*sourcegraph.*+repo:has.commit.after%28yesterday%29&patternType=keyword)
[`repo:has.commit.after(june 25 2017)`](https://sourcegraph.com/search?q=context:global+repo:.*sourcegraph.*+repo:has.commit.after%28june+25+2017%29&patternType=keyword) | | **rev:at.time(...)** | Search a repo or a branch at a specific point in time. | [`rev:at.time(1 year ago)`](https://sourcegraph.com/search?q=context:global+repo:%5Egithub%5C.com/sourcegraph/sourcegraph%24+rev:at.time%281+year+ago%29+&patternType=keyword&sm=0)
[`rev:at.time(2021-01-01)`](https://sourcegraph.com/search?q=context:global+repo:%5Egithub%5C.com/sourcegraph/sourcegraph%24+rev:at.time%282021-01-01%2C+v5.0.0%29+&patternType=keyword) | | **file:has.content(...)** | Conditionally search files only if they contain contents that match the provided regex pattern. See [built-in predicates](/code-search/queries/language#built-in-repo-predicate) for more | [`file:has.content(Copyright) Sourcegraph`](https://sourcegraph.com/search?q=context:global+file:has.content%28Copyright%29+Sourcegraph&patternType=keyword) | -| **file:has.owners(...)** | **Beta** Conditionally search files only if they are owned by the given owner. Empty means _any owner_. See [code ownership documentation](/own) for more | [`file:has.owner(alice@sourcegraph.com) Sourcegraph`](https://sourcegraph.com/search?q=context:global+file:has.owner%28alice@sourcegraph.com%29+Sourcegraph&patternType=keyword) | +| **file:has.owners(...)** | Conditionally search files only if they are owned by the given owner. Empty means _any owner_. See [code ownership documentation](/code-ownership) for more | [`file:has.owner(alice@sourcegraph.com) Sourcegraph`](https://sourcegraph.com/search?q=context:global+file:has.owner%28alice@sourcegraph.com%29+Sourcegraph&patternType=keyword) | | **file:has.contributor(...)** | Conditionally search files only if a file contributor's name or email matches the provided regex pattern. See [built-in predicates](/code-search/queries/language#built-in-file-predicate) for more | [`file:has.contributor(alice@sourcegraph.com) Sourcegraph`](https://sourcegraph.com/search?q=context:global+file:has.owner%28alice@sourcegraph.com%29+Sourcegraph&patternType=keyword) | | **count:_N_,< /> count:all** | Retrieve N results. By default, Sourcegraph stops searching early and returns if it finds a full page of results. This is desirable for most interactive searches. To wait for all results, use **count:all** | [`count:1000 function`](https://sourcegraph.com/search?q=count:1000+repo:sourcegraph/sourcegraph$+function)
[`count:all err`](https://sourcegraph.com/search?q=repo:github.com/sourcegraph/sourcegraph+err+count:all&patternType=keyword) | | **timeout:_go-duration-value_** | Customizes the timeout for searches. The value of the parameter is a string that can be parsed by the [Go time package's `ParseDuration`](https://golang.org/pkg/time/#ParseDuration) (e.g. 10s, 100ms). By default, the timeout is set to 10 seconds, and the search will optimize for returning results as soon as possible. The timeout value cannot be set longer than 1 minute. When provided, the search is given the full timeout to complete | [`repo:^github.com/sourcegraph timeout:15s func count:10000`](https://sourcegraph.com/search?q=repo:%5Egithub.com/sourcegraph/+timeout:15s+func+count:10000) | diff --git a/docs/own/assigned-ownership.mdx b/docs/own/assigned-ownership.mdx deleted file mode 100644 index f68f08638..000000000 --- a/docs/own/assigned-ownership.mdx +++ /dev/null @@ -1,96 +0,0 @@ -# Assigned ownership - -Owners (both users and teams) can be manually assigned. Assignment can be done on a repository, directory or a file level. - -Assigned ownership propagates in a top-down manner: e.g. - -- If an owner is assigned to the repository, they will be considered an owner for all files and directories of this repository. -- If an owner is assigned to some directory (e.g. `repo-name/src/abc`) within the repo, they will be considered an owner for all the directories and files within `repo-name/src/abc`, but not for any other directories and files higher up in the hierarchy. -- If an owner is assigned to some file (e.g. `repo-name/src/abc/a.go`) within the repo, they will be considered an owner only for this file. - -## Who can assign ownership - -Only site admins can assign ownership by default. For other users, [RBAC should be used](/admin/access-control/ownership) to grant assign ownership right. -[More](/admin/access-control) about RBAC in Sourcegraph. - -## How to assign ownership - -### Repository level ownership - -Go to the repository page and click "Ownership" button. - -![Repository page with Ownership button selected](https://storage.googleapis.com/sourcegraph-assets/docs/own/assigned-ownership-1-dark.png) - -1. Click "Add owner" button, the modal window will open. -2. Activate "New owner" panel. -3. Search for the user/team to assign ownership to. -4. Click "Add owner" button on the modal window. - -![Add repository owner](https://storage.googleapis.com/sourcegraph-assets/docs/own/assigned-owners-2-dark.png) - -Owner is assigned successfully. - -![Repository owner added](https://storage.googleapis.com/sourcegraph-assets/docs/own/assigned-owners-3-dark.png) - -### Directory level ownership - -Go to any directory view (in our example it is `cmd/gitserver/internal`) and click "Show more" on Own panel. - -![Repository page with Ownership button selected](https://storage.googleapis.com/sourcegraph-assets/docs/own/assigned-owners-dir-1-dark.png) - -1. Click "Add owner" button, the modal window will open. -2. Activate "New owner" panel. -3. Search for the user/team to assign ownership to. -4. Click "Add owner" button on the modal window. - -![Add repository owner](https://storage.googleapis.com/sourcegraph-assets/docs/own/assigned-owners-2-dark.png) - -Owner is assigned successfully. - -![Repository owner added](https://storage.googleapis.com/sourcegraph-assets/docs/own/assigned-owners-3-dark.png) - -### File level ownership - -Go to the blob view of any file (in our example it is `cmd/gitserver/internal/cleanup.go`). - -1. Click on the Own bar in the top-right corner. -2. Click "Add owner" button in the bottom-right corner of an opened Ownership tab. -3. Activate "New owner" panel. -4. Search for the user/team to assign ownership to. -5. Click "Add owner" button on the modal window. - -![Add repository owner](https://storage.googleapis.com/sourcegraph-assets/docs/own/assigned-owners-dir-2-dark.png) - -Owner is assigned successfully. - -![Repository owner added](https://storage.googleapis.com/sourcegraph-assets/docs/own/assigned-owners-dir-3-dark.png) - -## How to remove an assigned owner - -### Repository and directory level - -Go to the repository page and click "Ownership" button **or** Go to any directory view and click "Show more" on Own panel. - -Click on "Remove ownership" button. - -![Repository/directory owner removed](https://storage.googleapis.com/sourcegraph-assets/docs/own/assigned-owners-remove-repo-1-dark.png) - -### File level - -Go to the blob view of any file and to the Ownership tab. - -Click on "Remove ownership" button. - -![File owner removed](https://storage.googleapis.com/sourcegraph-assets/docs/own/assigned-owners-remove-file-1-dark.png) - -### Note on removing assigned owners - -Owners can be removed only at the same level they were initially assigned. For example: - -- If an owner is assigned to the repository, they should be removed from the repository level. They cannot be removed from any directory/file within this repo, even though they are considered owners of these directories/files. -- If an owner is assigned to some directory within the repo, they should be removed from the same directory. They cannot be removed from any subdirectory/file below this directory, even though they are considered owners of these subdirectories/files. -- If an owner is assigned to some file within the repo, they should be removed from the same file. - -**"Remove ownership" buttons are disabled and the tooltip is shown when a user is attempting to remove an owner from the different place from where this owner has been assigned.** - -![Remove ownership disabled tooltip](https://storage.googleapis.com/sourcegraph-assets/docs/own/assigned-owners-cannot-remove-dark.png) diff --git a/docs/own/codeowners-ingestion.mdx b/docs/own/codeowners-ingestion.mdx deleted file mode 100644 index 4b5a74b24..000000000 --- a/docs/own/codeowners-ingestion.mdx +++ /dev/null @@ -1,57 +0,0 @@ -# Codeowners ingestion - -This feature is in beta. - -Code ownership allows you to surface ownership data using `CODEOWNERS` files. -This is done automatically if there is a committed `CODEOWNERS` file in your repository at any of the following locations: - -```md -CODEOWNERS -.github/CODEOWNERS -.gitlab/CODEOWNERS -docs/CODEOWNERS -``` - -However, it might be you do not want to have a `CODEOWNERS` file committed to your repository (for example, to avoid automatic review requests), or you would like to overwrite the existing one. - -Sourcegraph provides a UI and CLI to ingest a `CODEOWNERS` file per-repository, that overrides any existing committed file. - -You can ingest one `CODEOWNERS` file per repository. -At this time the same ingested `CODEOWNERS` file applies to all revisions. - -## Ingesting a file through the UI - -Navigating to any repository page, clicking the Ownership button will surface information about any ingested `CODEOWNERS` file, and will allow you to upload or update an existing one. - -![Codeowners ingestion UI on sourcegraph/sourcegraph](https://storage.googleapis.com/sourcegraph-assets/docs/images/own/codeowners_ingestion_ui.png) - -## Ingesting a file with src-cli - -There is the option to ingest data with the Sourcegraph [src-cli](/cli/quickstart). -The CLI provides `add`, `update`, `delete`, and `list` functionality. - -```bash -'src codeowners' is a tool that manages ingested code ownership data in a Sourcegraph instance. - -Usage: - - src codeowners command [command options] - -The commands are: - - get returns the codeowners file for a repository, if exists - create create a codeowners file - update update a codeowners file - delete delete a codeowners file - -Use "src codeowners [command] -h" for more information about a command. -``` - -The input file can be written inline or passed in. - -## Limitations - -- Uploaded `CODEOWNERS` files must use either Sourcegraph usernames or email addresses for correct user matching to occur. `CODEOWNERS` files committed to the repo should use either usernames of the codehost the repo is on (e.g. GitHub) or email addresses. -- The file should respect `CODEOWNERS` formatting for code ownership to surface useful information. No formatting validation is done at upload time. -- Only site admins can add, update or delete a `CODEOWNERS` file through the ingestion API. -- Ingested `CODEOWNERS` files are limited to a size of 10Mb if uploaded through the client. diff --git a/docs/own/configuration-reference.mdx b/docs/own/configuration-reference.mdx deleted file mode 100644 index a19ae0e3b..000000000 --- a/docs/own/configuration-reference.mdx +++ /dev/null @@ -1,58 +0,0 @@ -# Configuration reference - -## Ownership signals and background compute - -Ownership signals are used to guide the assignment of ownership. These are: - -- **Recent contributors signal** counts files modified by commits in the last 90 days. -- **Recent views signal** counts file views within Sourcegraph in the last 90 days. - -Both of these signals are computed by background tasks. -The values of signals are aggregated and bubble up the file tree. -That is, for the Ownership data displayed `/a/` directory, all descendant file signals contribute. -For instance contributions and views of `/a/b/c.go`. - -The **Site admin > Code graph > Ownership signals** page allows enabling and disabling each signal individually. -These need to be explicitly enabled by site admin in order for signals to surface in the UI. - -![Site admin ownership configuration page](https://sourcegraphstatic.com/own-signals-configuration-dark.png) - -### Repository filtering - -In some cases ownership signals need to be disabled for specified repositories: - -- Ownership signals are not desired for certain repositories. -- Computing signals is expensive due to size of some repositories. - -**Exclude repositories** section under each signal in **Site admin > Code graph > Ownership signals** allows to match repositories to exclude from computing ownership signals. -Materialized list of excluded repositories is displayed for feedback. - -![Site admin ownership configuration page](https://sourcegraphstatic.com/own-signals-exclude-dark.png) - -## Analytics - -In order to measure how many files have owners, Sourcegraph exposes analytics through **Site admin > Analytics > Own**. -These present percentage of files that have: - -- Any ownership associated, -- assigned ownership (through the UI), -- ownership via matching rule in CODEOWNERS file. - -Analytics data is computed periodically. -The background process for computing analytics data has to be enabled explicitly through **Site admin > Code graph > Ownership signals**. -This is because the process can become computationally expensive. - -## Assigned ownership access control - -In order to grant users the ability to assign ownership, please use [ownership permission](/admin/access-control/ownership) in role-based access control. -This is a coarse-grained permission, allowing users to assign ownership throughout the instance. -At this point there is no finer-grained ownership assigning access control. - -## Disabling ownership in the UI - -Ownership data is displayed in various places in Code search user interface, among others: - -- in a card on repository and directory pages, -- in a top bar on file page. - -If needed, the visibility of ownership data embedded in Code search UI can be disabled by creating a boolean feature flag `enable-ownership-panels` and setting its value to `false`. diff --git a/docs/own/index.mdx b/docs/own/index.mdx deleted file mode 100644 index 04dcfc919..000000000 --- a/docs/own/index.mdx +++ /dev/null @@ -1,98 +0,0 @@ -# Code ownership - -This feature is in beta. - -Code ownership is aimed at helping find the right person and team to contact, for any question, at any time. We are starting out with code ownership, ownership inference and assignments and are exploring ways to help you find someone to answer _every_ question. - -## Concepts - -**Owner**: An owner is defined as a person or a team in Sourcegraph. - -A _person_ can be: - -- a Sourcegraph user which we were able to resolve from the `CODEOWNERS` handle or email, in which case we link to their profile. -- an unknown user for which we were unable to resolve a profile, in which case we will return the `CODEOWNERS` data we have. - -A _team_ is a group of Sourcegraph users represented by a common handle, which is a new feature that we added. -[Read more about how to manage teams in Sourcegraph](/admin/teams/). - -## Code ownership - -Code ownership is set in 2 different ways: - -- [The `CODEOWNERS` format](/own/codeowners-format) -- [Assigned ownership](/own/assigned-ownership) - -## Limitations - -- Code ownership support has been released as an MVP for 5.0. In the future of the product we intend to infer ownership beyond `CODEOWNERS` data. -- The feature has not been fully validated to work well on large repositories or large `CODEOWNERS` rulesets. This is a future area of improvement, but please contact us if you run into issues. - -## Browsing ownership - -The ownership information is available for browsing once ownership data is available through [a `CODEOWNERS` file](#code-ownership). - -When displaying a source file, there is a bar above the file contents. - -- On the left-hand side, it displays the most recent change to the file. -- On the right-hand side it displays the code ownership bar with at most 2 file owners. Any additional number of owners is also displayed. - -![File view showing code ownership bar on the right hand side above the file contents](https://storage.googleapis.com/sourcegraph-assets/docs/own/blob-view.png) - -After clicking on the code ownership bar, a bottom panel appears listing all the owners. - -![File view with the ownership tab selected in the bottom panel](https://storage.googleapis.com/sourcegraph-assets/docs/own/blob-view-panel.png) - -There is always a single rule in a `CODEOWNERS` file that determines ownership (if any). Each owner listed in the bottom panel has a description found by clicking the collapsible arrow: _Owner is associated with a rule in a `CODEOWNERS` file_. Clicking this description links to the line containing the responsible rule in the `CODEOWNERS` file. - -If any email information has been found for the owner, clicking the mail icon will start an email to them. - -## Ownership search - -### Searching for files with owners - -Code ownership is a first-class citizen in search. Ownership can be either a query input or a search result: - -- `file:has.owner(user@example.com)` keeps only the search results associated with given user (here referred to by e-mail). -- `-file:has.owner(@username)` removes all results owned by specific user (here referred to by name). - -Ownership predicate can also be used without parameters: - --`file:has.owner()` will only include files with an owner assigned to them. -`-file:has.owner()` will only include files without an owner. - -When performing a search the `select:file.owners` predicate will return the owners for the result of that search. - -For instance one can find all the owners of TypeScript files in a given repository by using `repo:^github\.com/sourcegraph/sourcegraph$ lang:TypeScript select:file.owners`. - -### Find commits in given release for given owner - -To find all commits between versions `5.0` and `5.1` made by `sourcegraph/own` team, the following query could be used: - -`repo:^github\.com/sourcegraph/sourcegraph$@5.1:^5.0 type:commit file:has.owner(sourcegraph/own)` - -Same query can be run for any owner (a person or a team). - -## Troubleshooting - -### Memory issues and worker crashes - -The Own background processes (such as ownership signals computation) can consume significant memory, potentially causing worker jobs to crash due to excessive memory usage. If you experience memory problems or worker crashes related to Own: - -1. **Disable ownership signals**: Go to **Site admin > Code graph > Ownership signals** and disable the signals that are causing issues: - - - Recent contributors signal - - Recent views signal - - Analytics computation - -2. **Exclude large repositories**: Use the repository filtering options to exclude large repositories from ownership signal computation. - -3. **Monitor resource usage**: Check your instance's memory usage after disabling signals to confirm the issue is resolved. - -If memory issues persist after disabling ownership features, consider whether Own functionality is essential for your use case. - -## Further reading - -In order to learn more please check out our references: - -- [CODEOWNERS format](/own/codeowners-format) - Guide to using the CODEOWNERS file format to define ownership -- [Configuration](/own/configuration-reference) - Full list of ownership configuration options diff --git a/docs/technical-changelog.mdx b/docs/technical-changelog.mdx index adbbca44e..bbb202928 100644 --- a/docs/technical-changelog.mdx +++ b/docs/technical-changelog.mdx @@ -12121,7 +12121,7 @@ The following PRs were merged onto the previous release branch but could not be - Ping data now reflects whether `cody.enabled` and `completions` are set. - If a Sourcegraph request is traced, its trace ID and span ID are now set to the `X-Trace` and `X-Trace-Span` response headers respectively. The trace URL (if a template is configured in `observability.tracing.urlTemplate`) is now set to `X-Trace-URL` - Previously, the URL was set to `X-Trace`. [#53259](https://github.com/sourcegraph/sourcegraph-public-snapshot/pull/53259) - For users using the single-container server image with the default built-in database, the database must be reindexed. This process can take up to a few hours on systems with large datasets. [#53256](https://github.com/sourcegraph/sourcegraph-public-snapshot/pull/53256) -- [Sourcegraph Own](/own) is now available as a beta enterprise feature. `search-ownership` feature flag is removed and doesn't need to be used. +- [Sourcegraph Own](/code-ownership) is now available as a beta enterprise feature. `search-ownership` feature flag is removed and doesn't need to be used. - Update Jaeger to 1.45.0, and Opentelemetry-Collector to 0.75.0 [#54000](https://github.com/sourcegraph/sourcegraph-public-snapshot/pull/54000) - Switched container OS to Wolfi for hardened containers [#47182](https://github.com/sourcegraph/sourcegraph-public-snapshot/pull/47182), [#47368](https://github.com/sourcegraph/sourcegraph-public-snapshot/pull/47368) - Batches changes now supports for CODEOWNERS for Github. Pull requests requiring CODEOWNERS approval, will no longer show as approved unless explicitly approved by a CODEOWNER. https://github.com/sourcegraph/sourcegraph-public-snapshot/pull/53601 @@ -12270,7 +12270,7 @@ The following PRs were merged onto the previous release branch but could not be - [Role- Access Control](/admin/access-control) is now available as an enterprise feature (in Beta). It is currently only supported for Batch Changes functionality. [#43276](https://github.com/sourcegraph/sourcegraph-public-snapshot/issues/43276) - Site admins can now [restrict creation of batch changes to certain u[sers](/admin/access-control/batch-changes) by tailoring their roles and the permissions granted to those )roles. [#34491](https://github.com/sourcegraph/sourcegraph-public-snapshot/issues/34491) - Site admins can now [configure outgoing webh[ooks](/admin/webhooks/outgoing) for Batch Changes to inform external tools of events related to Sourceg)raph batch changes and their changesets. [#38278](https://github.com/sourcegraph/sourcegraph-public-snapshot/issues/38278) -- [Sourcegraph[ Own](/own) is now available as an experimental enterprise feature. Enable the `search-ownership` fe)ature flag to use it. +- [Sourcegraph[ Own](/code-ownership) is now available as an experimental enterprise feature. Enable the `search-ownership` fe)ature flag to use it. - Gitserver supports a new `COURSIER_CACHE_DIR` env var to configure the cache location for coursier JVM package repos. - Pings now emit a histogram of repository sizes cloned by Sourcegraph [48211](https://github.com/sourcegraph/sourcegraph-public-snapshot/pull/48211). - The search input has been redesigned to greatly improve usability. New contextual suggestions help users learn the Sourcegraph query language as they search. Suggestions have been unified across contexts and filters, and the history mode has been integrated into the input. Improved and expanded keyboard shortcuts also make navigation much easier. This functionality is in beta, and can be disabled in the user menu. diff --git a/src/data/navigation.ts b/src/data/navigation.ts index 98368191d..4254dabe2 100644 --- a/src/data/navigation.ts +++ b/src/data/navigation.ts @@ -406,24 +406,12 @@ export const navigation: NavigationItem[] = [ }, { title: 'Code Ownership', - href: '/own', + href: '/code-ownership', sections: [ { title: 'CODEOWNERS Format', - href: '/own/codeowners-format' + href: '/code-ownership/codeowners-format' }, - { - title: 'CODEOWNERS Ingestion', - href: '/own/codeowners-ingestion' - }, - { - title: 'Configuration Reference', - href: '/own/configuration-reference' - }, - { - title: 'Assigned Ownership', - href: '/own/assigned-ownership' - } ] }, { diff --git a/src/data/redirects.ts b/src/data/redirects.ts index ed00c1ce4..923504a75 100644 --- a/src/data/redirects.ts +++ b/src/data/redirects.ts @@ -7094,6 +7094,32 @@ const redirectsData = [ source: '/self-hosted/updates/server', destination: 'https://sourcegraph.com/changelog/self-hosted/server', permanent: true + }, + // code ownership redirects + { + source: '/own', + destination: '/code-ownership', + permanant: true, + }, + { + source: '/own/assigned-ownership', + destination: '/code-ownership', + permanant: true, + }, + { + source: '/own/configuration-reference', + destination: '/code-ownership', + permanant: true, + }, + { + source: '/own/codeowners-ingestion', + destination: '/code-ownership', + permanant: true, + }, + { + source: '/own/codeowners-format', + destination: '/code-ownership/codeowners-format', + permanant: true, } ]; From fca97c10481d7b9eaabc9c97da1db17a78d1cb38 Mon Sep 17 00:00:00 2001 From: Robert Lin Date: Sun, 22 Feb 2026 23:09:20 +0000 Subject: [PATCH 010/217] entitlements: add reference page (#1632) --- docs/admin/entitlements.mdx | 24 ++++++++++++++++++++++++ docs/admin/index.mdx | 1 + docs/deep-search/index.mdx | 23 ++++++++++++++++++++--- 3 files changed, 45 insertions(+), 3 deletions(-) create mode 100644 docs/admin/entitlements.mdx diff --git a/docs/admin/entitlements.mdx b/docs/admin/entitlements.mdx new file mode 100644 index 000000000..950967718 --- /dev/null +++ b/docs/admin/entitlements.mdx @@ -0,0 +1,24 @@ +# Entitlements + +Sourcegraph administrators can set per-user product usage limits using entitlements: classes of usage limits that can be assigned as a global default, or to specific users. Entitlements can be configured in the **Administration → Entitlements** (`/site-admin/entitlements`) page. + +Entitlements can be set as a global default: default entitlements are granted to all users without an explicit grant for another entitlement of the same type. Additional entitlements can be created to give specific users varying degress of access. For example, you can set up: + +- A default daily limit for regular users +- A higher weekly limit for lead engineers +- Different limits for contractors vs. full-time employees + +Each entitlement has a detailed usage view to help administrators understand how users are using the entitlement, and reset entitlement usage for specific users. + + + Entitlements currently only support [Deep Search](/deep-search), but we may + support other features in the future. If you would like to request + entitlement support for a feature, please reach out at + support@sourcegraph.com. + + + + Entitlements refers to refers to administrator-controlled limits, + while quotas refer to billed usage as determined by the purchased + Sourcegraph subscription. + diff --git a/docs/admin/index.mdx b/docs/admin/index.mdx index 7f47826d0..20624c5ce 100644 --- a/docs/admin/index.mdx +++ b/docs/admin/index.mdx @@ -54,6 +54,7 @@ Sourcegraph administration is primarily managed by site administrators, who are - [GitHub integration](/integration/github) - [All code host integrations (not GitLab or GitHub)](/integration/#integrations) - [Access control](/admin/access-control/) (Beta) +- [Entitlements](/admin/entitlements/) ## Additional resources diff --git a/docs/deep-search/index.mdx b/docs/deep-search/index.mdx index 500a873f6..a64129770 100644 --- a/docs/deep-search/index.mdx +++ b/docs/deep-search/index.mdx @@ -6,7 +6,12 @@ seoPriority: 1.0 Supported on [Enterprise Starter](/pricing/plans/enterprise-starter) and - [Enterprise](/pricing/plans/enterprise) plans. For new customers, the [Enterprise AI Terms of Use](https://sourcegraph.com/terms/ai-terms) apply and Deep Search is enabled by default. For existing customers with licenses predating the AI terms, Deep Search can be enabled after signing the AI terms addendum - please contact your account team for assistance. Deep Search is not supported for BYOK customers. + [Enterprise](/pricing/plans/enterprise) plans. For new customers, the + [Enterprise AI Terms of Use](https://sourcegraph.com/terms/ai-terms) apply + and Deep Search is enabled by default. For existing customers with licenses + predating the AI terms, Deep Search can be enabled after signing the AI + terms addendum - please contact your account team for assistance. Deep + Search is not supported for BYOK customers. Available on the Web. @@ -89,10 +94,22 @@ Conversation sharing is disabled by default. To enable conversation sharing, ask Deep Search is only available to customers using the [Sourcegraph Model Provider](/model-provider). Customers who configure and access their own models via BYOK cannot use the Deep Search feature. -## Monitoring consumption +## Managing usage -Customers can request access to [Enterprise Portal](/admin/enterprise-portal#deep-search-usage-monitoring) to monitor Deep Search usage and quota limits.. +Deep Search usage is managed on two levels: +- **Quotas**, which refers to billed Deep Search usage. These are determined by the purchased Sourcegraph subscription. +- [**Entitlements**](/admin/entitlements), which refers to administrator-controlled limits on how much Deep Search users can consume. + +### Monitoring quota consumption + +Customers can request access to [Enterprise Portal](/admin/enterprise-portal#deep-search-usage-monitoring) to monitor usage of Deep Search quota. + +### Entitlements + +Sourcegraph administrators can configure entitlements for their users, for example "60 Deep Search per hour", in `/site-admin/entitlements`. + +To learn more, refer to [Entitlements](/admin/entitlements) and the [Deep Search entitlements changelog post](https://sourcegraph.com/changelog/deep-search-entitlements). ## Architecture From d15856ddae0d4a38217a2d3e3f08f46a06cbaee3 Mon Sep 17 00:00:00 2001 From: William Bezuidenhout Date: Tue, 24 Feb 2026 12:58:18 +0200 Subject: [PATCH 011/217] executors: document KUBERNETES_JOB_HOST_NETWORK option for executors (#1583) Add documentation for env var added in: - https://github.com/sourcegraph/sourcegraph/pull/9509 --- docs/self-hosted/executors/executors-config.mdx | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/self-hosted/executors/executors-config.mdx b/docs/self-hosted/executors/executors-config.mdx index 3aba7b4e9..95fe98c55 100644 --- a/docs/self-hosted/executors/executors-config.mdx +++ b/docs/self-hosted/executors/executors-config.mdx @@ -62,6 +62,7 @@ The following environment variables are specific to the native Kubernetes Execut | `KUBERNETES_JOB_ANNOTATIONS` | N/A | The JSON encoded annotations to add to the Kubernetes Jobs. e.g. `{"foo": "bar", "faz": "baz"}` | | `KUBERNETES_JOB_POD_ANNOTATIONS` | N/A | The JSON encoded annotations to add to the Kubernetes Job Pods. e.g. `{"foo": "bar", "faz": "baz"}` | | `KUBERNETES_IMAGE_PULL_SECRETS` | N/A | The names of Kubernetes image pull secrets to use for pulling images. e.g. my-secret,my-other-secret | +| `KUBERNETES_JOB_HOST_NETWORK` | `false` | If true, Kubernetes job pods will run with host networking enabled. Useful when using Podman and Kind where pods need to access `host.containers.internal`. | `EXECUTOR_KUBERNETES_NAMESPACE` should be set to either "default" or the From 58e876bd025a447ad3c730e8b1f9efa03546868d Mon Sep 17 00:00:00 2001 From: William Bezuidenhout Date: Tue, 24 Feb 2026 16:16:12 +0200 Subject: [PATCH 012/217] mcp: add doc for deepsearch tool (#1634) [context](https://sourcegraph.slack.com/archives/C05MW2TMYAV/p1771922078724959) * Document deepsearch tool --------- Co-authored-by: Jan Hartman --- docs/api/mcp/index.mdx | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/docs/api/mcp/index.mdx b/docs/api/mcp/index.mdx index 896c2dedb..b94d192a7 100644 --- a/docs/api/mcp/index.mdx +++ b/docs/api/mcp/index.mdx @@ -529,6 +529,16 @@ Find repositories where a contributor has made commits. ### Deep Search +### `deepsearch` + +Create a new Deep Search conversation to answer complex questions about your codebase. + +**Parameters:** + + - `question` - The question to research using Deep Search (required). Should be detailed and specific about what you want to understand. + +**Use cases:** Comprehensive analysis of complex technical questions, multi-step research across one or many remote codebases, detailed explanations with supporting evidence, questions that require combining information from multiple sources + #### `deepsearch_read` Read a Deep Search conversation and return the markdown content of the questions and answers. From 87a5005ad2de970c1ac67ebde66b52ddfb213121 Mon Sep 17 00:00:00 2001 From: Geoffrey Gilmore Date: Tue, 24 Feb 2026 07:10:19 -0800 Subject: [PATCH 013/217] add docs page explaining how to manage feature flags with the graphql api (#1635) --- docs/admin/how-to/index.mdx | 1 + .../manage-feature-flags-with-graphql.mdx | 128 ++++++++++++++++++ 2 files changed, 129 insertions(+) create mode 100644 docs/admin/how-to/manage-feature-flags-with-graphql.mdx diff --git a/docs/admin/how-to/index.mdx b/docs/admin/how-to/index.mdx index 40ff7c80e..b7cc5d376 100644 --- a/docs/admin/how-to/index.mdx +++ b/docs/admin/how-to/index.mdx @@ -6,6 +6,7 @@ - [How to troubleshoot a repository that is not being updated](/admin/how-to/repo-not-updated) - [How to configure submodules](/admin/how-to/submodule-configuration) - [How to remove users or edit users with the GraphQL API](/admin/how-to/mutate-user-api) +- [How to manage feature flags with the GraphQL API](/admin/how-to/manage-feature-flags-with-graphql) - [How to troubleshoot a failure to update repositories when new repositories are added](/admin/how-to/update-repo-failure) - [How to purge deleted repository data from Sourcegraph](/admin/how-to/remove-repo#manually-purge-deleted-repository-data-from-disk) - [How to address common monorepo problems](/admin/how-to/monorepo-issues) diff --git a/docs/admin/how-to/manage-feature-flags-with-graphql.mdx b/docs/admin/how-to/manage-feature-flags-with-graphql.mdx new file mode 100644 index 000000000..4a3ce5a88 --- /dev/null +++ b/docs/admin/how-to/manage-feature-flags-with-graphql.mdx @@ -0,0 +1,128 @@ +# How to manage feature flags with the GraphQL API + +Some Sourcegraph instances do not expose the feature flag admin UI. In those cases, site admins can manage feature flags through the GraphQL API using the `src` CLI. + +## Prerequisites + +- Install `src` by following the [`src-cli` installation instructions](https://github.com/sourcegraph/src-cli#installation). +- Sign in to your instance: + +```bash +src login https://your-sourcegraph-instance.com +``` + +## List all feature flags + +```bash +src api -query=' +query { + featureFlags { + ... on FeatureFlagBoolean { + name + value + } + ... on FeatureFlagRollout { + name + rolloutBasisPoints + } + } +}' +``` + +## Get a single feature flag + +```bash +src api -query=' +query { + featureFlag(name: "my-feature-flag") { + ... on FeatureFlagBoolean { + name + value + } + ... on FeatureFlagRollout { + name + rolloutBasisPoints + } + } +}' +``` + +## Update a feature flag + +Update a boolean flag: + +```bash +src api -query=' +mutation { + updateFeatureFlag(name: "my-feature-flag", value: false) { + ... on FeatureFlagBoolean { + name + value + } + } +}' +``` + +Update a rollout flag: + +```bash +src api -query=' +mutation { + updateFeatureFlag(name: "my-rollout-flag", rolloutBasisPoints: 5000) { + ... on FeatureFlagRollout { + name + rolloutBasisPoints + } + } +}' +``` + +`rolloutBasisPoints` uses basis points where `10000 = 100%` and `5000 = 50%`. + +## Delete a feature flag + +```bash +src api -query=' +mutation { + deleteFeatureFlag(name: "my-feature-flag") { + alwaysNil + } +}' +``` + +## Create a user or organization override + +```bash +src api -query=' +mutation { + createFeatureFlagOverride( + namespace: "VXNlcjox" + flagName: "my-feature-flag" + value: true + ) { + id + value + } +}' +``` + +The `namespace` argument must be the GraphQL ID of a user or organization. + +Use a query like this to discover IDs: + +```bash +src api -query=' +query { + users(first: 10) { + nodes { + id + username + } + } +}' +``` + +## Related docs + +- [GraphQL API reference](/api/graphql) +- [`src` CLI references](/cli/references) From 9b2a1a449c328cd70eb8049c72c805d7d8bf8d9b Mon Sep 17 00:00:00 2001 From: Enrique Gonzalez Date: Tue, 24 Feb 2026 13:54:33 -0800 Subject: [PATCH 014/217] fix: change sub tag for callout in deploy executors page (#1636) This was using the HTML tag which caused some issues with layout. These are better shown as callouts. CleanShot 2026-02-24 at 11 27
35@2x --- docs/self-hosted/executors/deploy-executors.mdx | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/docs/self-hosted/executors/deploy-executors.mdx b/docs/self-hosted/executors/deploy-executors.mdx index c73678feb..e2e19a7c9 100644 --- a/docs/self-hosted/executors/deploy-executors.mdx +++ b/docs/self-hosted/executors/deploy-executors.mdx @@ -33,11 +33,11 @@ So, if you expect an Executor instance to process up to 4 jobs in parallel, the The above recommended resources can be changed to fit your constraints. See below for configuring resources for a Job. - - Note: the smallest machine type on AWS that can support Executors with + + The smallest machine type on AWS that can support Executors with Firecracker is `c5n.metal` (72 vCPU and 192GB of Memory), but concurrency can be turned up for the additional cost. - + #### Job configuration @@ -48,10 +48,10 @@ and `EXECUTOR_JOB_MEMORY`. See [executor configuration](/self-hosted/executors/executors-config) for a full list of configuration options. - - Note: changing CPU and Memory for jobs will affect the overall requirements + + Changing CPU and Memory for jobs will affect the overall requirements for an Executor instance. - + #### AWS From 8388821802983dfb38e9334ea61ef6a808fb0f91 Mon Sep 17 00:00:00 2001 From: Robert Lin Date: Wed, 25 Feb 2026 07:21:06 -0800 Subject: [PATCH 015/217] Change 'On-premises' to 'Single-container' in deployment docs (#1640) Not sure why this section was called on-premises, isnt everything else also on-premises? --- docs/self-hosted/deploy/index.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/self-hosted/deploy/index.mdx b/docs/self-hosted/deploy/index.mdx index 3683a0051..fe296e6a7 100644 --- a/docs/self-hosted/deploy/index.mdx +++ b/docs/self-hosted/deploy/index.mdx @@ -108,7 +108,7 @@ See [Sourcegraph Machine Images](/self-hosted/deploy/machine-images) for more in to maintain and manage your own infrastructure. -### On-premises (removed in 7.0.0) +### Single-container (removed in 7.0.0) The single-container (`sourcegraph/server`) deployment mode has been **removed in Sourcegraph 7.0.0**. Customers must [migrate to Docker Compose](/self-hosted/deploy/docker-compose/migrate) or [Kubernetes](/self-hosted/deploy/kubernetes/) before upgrading to 7.0.0. From d0b701f7d8b0898332e8666972fd42b69add32d1 Mon Sep 17 00:00:00 2001 From: sourcegraph-buildkite <71296199+sourcegraph-buildkite@users.noreply.github.com> Date: Wed, 25 Feb 2026 20:14:53 +0200 Subject: [PATCH 016/217] =?UTF-8?q?=F0=9F=A4=96=20Sync=20generated=20docs?= =?UTF-8?q?=20from=20sourcegraph/sourcegraph=20(2026-02-25/13-48-43)=20(#1?= =?UTF-8?q?639)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This is an automated pull request, created by //doc:generated.push on sourcegraph/sourcegraph Co-authored-by: Buildkite --- docs/admin/code-hosts/aws-codecommit.mdx | 2 +- docs/admin/code-hosts/azuredevops.mdx | 2 +- docs/admin/code-hosts/bitbucket-cloud.mdx | 2 +- docs/admin/code-hosts/bitbucket-server.mdx | 2 +- docs/admin/code-hosts/gerrit.mdx | 2 +- docs/admin/code-hosts/github.mdx | 2 +- docs/admin/code-hosts/gitlab.mdx | 2 +- docs/admin/code-hosts/gitolite.mdx | 2 +- docs/admin/code-hosts/other.mdx | 2 +- docs/admin/code-hosts/phabricator.mdx | 2 +- docs/admin/config/settings.mdx | 4 +- docs/admin/config/site-config.mdx | 51 +- docs/admin/repo/perforce.mdx | 2 +- docs/cody/capabilities/supported-models.mdx | 2 + docs/self-hosted/observability/alerts.mdx | 251 ++++++--- docs/self-hosted/observability/dashboards.mdx | 488 +++++++++++++++++- 16 files changed, 719 insertions(+), 99 deletions(-) diff --git a/docs/admin/code-hosts/aws-codecommit.mdx b/docs/admin/code-hosts/aws-codecommit.mdx index 8eeafe2f2..d3e7661e1 100644 --- a/docs/admin/code-hosts/aws-codecommit.mdx +++ b/docs/admin/code-hosts/aws-codecommit.mdx @@ -37,7 +37,7 @@ AWS CodeCommit connections support the following configuration options, which ar {/* SCHEMA_SYNC_START: admin/code_hosts/aws_codecommit.schema.json */} {/* WARNING: This section is auto-generated during releases. Do not edit manually. */} -{/* Last updated: 2026-01-22T04:55:03Z */} +{/* Last updated: 2026-02-25T13:48:43Z */} ```json { // REQUIRED: diff --git a/docs/admin/code-hosts/azuredevops.mdx b/docs/admin/code-hosts/azuredevops.mdx index 9f0b89792..2e0c9d4db 100644 --- a/docs/admin/code-hosts/azuredevops.mdx +++ b/docs/admin/code-hosts/azuredevops.mdx @@ -65,7 +65,7 @@ Azure DevOps connections support the following configuration options, which are {/* SCHEMA_SYNC_START: admin/code_hosts/azuredevops.schema.json */} {/* WARNING: This section is auto-generated during releases. Do not edit manually. */} -{/* Last updated: 2026-01-22T04:55:03Z */} +{/* Last updated: 2026-02-25T13:48:43Z */} ```json // Authentication alternatives: token OR windowsPassword diff --git a/docs/admin/code-hosts/bitbucket-cloud.mdx b/docs/admin/code-hosts/bitbucket-cloud.mdx index 50f3fc465..666d84c09 100644 --- a/docs/admin/code-hosts/bitbucket-cloud.mdx +++ b/docs/admin/code-hosts/bitbucket-cloud.mdx @@ -116,7 +116,7 @@ Bitbucket Cloud connections support the following configuration options, which a {/* SCHEMA_SYNC_START: admin/code_hosts/bitbucket_cloud.schema.json */} {/* WARNING: This section is auto-generated during releases. Do not edit manually. */} -{/* Last updated: 2026-01-22T04:55:03Z */} +{/* Last updated: 2026-02-25T13:48:43Z */} ```json { // The workspace access token to use when authenticating with Bitbucket Cloud. diff --git a/docs/admin/code-hosts/bitbucket-server.mdx b/docs/admin/code-hosts/bitbucket-server.mdx index ec9d503e1..89f86ee4a 100644 --- a/docs/admin/code-hosts/bitbucket-server.mdx +++ b/docs/admin/code-hosts/bitbucket-server.mdx @@ -202,7 +202,7 @@ Bitbucket Server / Bitbucket Data Center connections support the following confi {/* SCHEMA_SYNC_START: admin/code_hosts/bitbucket_server.schema.json */} {/* WARNING: This section is auto-generated during releases. Do not edit manually. */} -{/* Last updated: 2026-01-22T04:55:03Z */} +{/* Last updated: 2026-02-25T13:48:43Z */} ```json // Authentication alternatives: token OR password diff --git a/docs/admin/code-hosts/gerrit.mdx b/docs/admin/code-hosts/gerrit.mdx index 744028860..9b865ed28 100644 --- a/docs/admin/code-hosts/gerrit.mdx +++ b/docs/admin/code-hosts/gerrit.mdx @@ -113,7 +113,7 @@ Gerrit connections support the following configuration options, which are specif {/* SCHEMA_SYNC_START: admin/code_hosts/gerrit.schema.json */} {/* WARNING: This section is auto-generated during releases. Do not edit manually. */} -{/* Last updated: 2026-01-22T04:55:03Z */} +{/* Last updated: 2026-02-25T13:48:43Z */} ```json { // If non-null, enforces Gerrit repository permissions. This requires that there is an item in the [site configuration json](https://sourcegraph.com/docs/admin/config/site_config#auth-providers) `auth.providers` field, of type "gerrit" with the same `url` field as specified in this `GerritConnection`. diff --git a/docs/admin/code-hosts/github.mdx b/docs/admin/code-hosts/github.mdx index 0306f7084..69fe29e14 100644 --- a/docs/admin/code-hosts/github.mdx +++ b/docs/admin/code-hosts/github.mdx @@ -454,7 +454,7 @@ GitHub connections support the following configuration options, which are specif {/* SCHEMA_SYNC_START: admin/code_hosts/github.schema.json */} {/* WARNING: This section is auto-generated during releases. Do not edit manually. */} -{/* Last updated: 2026-01-22T04:55:03Z */} +{/* Last updated: 2026-02-25T13:48:43Z */} ```json // Authentication alternatives: token OR gitHubAppDetails OR externalAccount OR useRandomExternalAccount diff --git a/docs/admin/code-hosts/gitlab.mdx b/docs/admin/code-hosts/gitlab.mdx index 9c64b668a..e4ba46207 100644 --- a/docs/admin/code-hosts/gitlab.mdx +++ b/docs/admin/code-hosts/gitlab.mdx @@ -189,7 +189,7 @@ See [Internal rate limits](/admin/code-hosts/rate-limits#internal-rate-limits). {/* SCHEMA_SYNC_START: admin/code_hosts/gitlab.schema.json */} {/* WARNING: This section is auto-generated during releases. Do not edit manually. */} -{/* Last updated: 2026-01-22T04:55:03Z */} +{/* Last updated: 2026-02-25T13:48:43Z */} ```json { // If non-null, enforces GitLab repository permissions. This requires that there be an item in the `auth.providers` field of type "gitlab" with the same `url` field as specified in this `GitLabConnection`. diff --git a/docs/admin/code-hosts/gitolite.mdx b/docs/admin/code-hosts/gitolite.mdx index 6893c03f7..284436d00 100644 --- a/docs/admin/code-hosts/gitolite.mdx +++ b/docs/admin/code-hosts/gitolite.mdx @@ -25,7 +25,7 @@ To connect Gitolite to Sourcegraph: {/* SCHEMA_SYNC_START: admin/code_hosts/gitolite.schema.json */} {/* WARNING: This section is auto-generated during releases. Do not edit manually. */} -{/* Last updated: 2026-01-22T04:55:03Z */} +{/* Last updated: 2026-02-25T13:48:43Z */} ```json { // A list of repositories to never mirror from this Gitolite instance. Supports excluding by exact name ({"name": "foo"}). diff --git a/docs/admin/code-hosts/other.mdx b/docs/admin/code-hosts/other.mdx index ab3969727..723cb343f 100644 --- a/docs/admin/code-hosts/other.mdx +++ b/docs/admin/code-hosts/other.mdx @@ -68,7 +68,7 @@ Repositories must be listed individually: {/* SCHEMA_SYNC_START: admin/code_hosts/other_external_service.schema.json */} {/* WARNING: This section is auto-generated during releases. Do not edit manually. */} -{/* Last updated: 2026-01-22T04:55:03Z */} +{/* Last updated: 2026-02-25T13:48:43Z */} ```json { // A list of repositories to never mirror by name after applying repositoryPathPattern. Supports excluding by exact name ({"name": "myrepo"}) or regular expression ({"pattern": ".*secret.*"}). diff --git a/docs/admin/code-hosts/phabricator.mdx b/docs/admin/code-hosts/phabricator.mdx index 6dbf20838..d940f8fcb 100644 --- a/docs/admin/code-hosts/phabricator.mdx +++ b/docs/admin/code-hosts/phabricator.mdx @@ -76,7 +76,7 @@ The Sourcegraph instance's site admin must [update the `corsOrigin` site config {/* SCHEMA_SYNC_START: admin/code_hosts/phabricator.schema.json */} {/* WARNING: This section is auto-generated during releases. Do not edit manually. */} -{/* Last updated: 2026-01-22T04:55:03Z */} +{/* Last updated: 2026-02-25T13:48:43Z */} ```json { // SSH cipher to use when cloning via SSH. Must be a valid choice from `ssh -Q cipher`. diff --git a/docs/admin/config/settings.mdx b/docs/admin/config/settings.mdx index 44743cf16..63f31a5e5 100644 --- a/docs/admin/config/settings.mdx +++ b/docs/admin/config/settings.mdx @@ -27,7 +27,7 @@ Settings options and their default values are shown below. {/* SCHEMA_SYNC_START: admin/config/settings.schema.json */} {/* WARNING: This section is auto-generated during releases. Do not edit manually. */} -{/* Last updated: 2026-01-22T04:55:03Z */} +{/* Last updated: 2026-02-25T13:48:43Z */} ```json { @@ -41,7 +41,7 @@ Settings options and their default values are shown below. // Whether to show alerts for major and minor version updates. Alerts for patch version updates will be shown if `alerts.showPatchUpdates` is true. "alerts.showMajorMinorUpdates": true, - // Whether to show alerts for patch version updates. Alerts for major and minor version updates will be shown if `alerts.showMajorMinorUpdatess` is true. + // Whether to show alerts for patch version updates. Alerts for major and minor version updates will be shown if `alerts.showMajorMinorUpdates` is true. "alerts.showPatchUpdates": true, // Whether to run global searches over all repositories. On instances with many repositories, this can lead to issues such as: low quality results, slow response times, or significant load on the Sourcegraph instance. Defaults to true. diff --git a/docs/admin/config/site-config.mdx b/docs/admin/config/site-config.mdx index 7ddb2fd37..20ce60a37 100644 --- a/docs/admin/config/site-config.mdx +++ b/docs/admin/config/site-config.mdx @@ -21,7 +21,7 @@ All site configuration options and their default values are shown below. {/* SCHEMA_SYNC_START: admin/config/site.schema.json */} {/* WARNING: This section is auto-generated during releases. Do not edit manually. */} -{/* Last updated: 2026-01-22T04:55:03Z */} +{/* Last updated: 2026-02-25T13:48:43Z */} ```json { @@ -79,6 +79,9 @@ All site configuration options and their default values are shown below. // Reject unverified commits when creating a Batch Change "batchChanges.rejectUnverifiedCommit": false, + // When enabled, only site admins can merge changesets using the Batch Changes UI. This is useful when the Batch Changes GitHub App has elevated access and you want to restrict who can merge changes. + "batchChanges.restrictMergeToAdmins": false, + // When enabled, only site admins can create and apply batch changes. "batchChanges.restrictToAdmins": false, @@ -168,6 +171,9 @@ All site configuration options and their default values are shown below. // - 20 "debug.search.symbolsParallelism": 0, + // Use database-backed worker for Deep Search question processing instead of in-memory worker pool. Enables persistence across frontend restarts. + "deepSearch.worker.enabled": true, + // The rate limit (in requests per hour) for the default rate limiter in the rate limiters registry. By default this is disabled and the default rate limit is infinity. "defaultRateLimit": -1, @@ -177,6 +183,9 @@ All site configuration options and their default values are shown below. // Disable periodically fetching git contents for existing repositories. "disableAutoGitUpdates": false, + // Disable fetching changelog posts from the external Sourcegraph changelog API. Useful for airgapped environments. + "disableChangelog": false, + // Disable the feedback survey "disableFeedbackSurvey": false, @@ -269,13 +278,16 @@ All site configuration options and their default values are shown below. "extsvc.gitlab": false }, "deepSearch.enabled": false, + "deepSearch.model": "anthropic::2024-10-22::claude-sonnet-4-latest", "deepSearch.sharing.enabled": false, + "deepSearch.showCodyWeb": false, "enableGithubInternalRepoVisibility": false, "enablePermissionsWebhooks": false, "enableStorm": false, "eventLogging": "enabled", "gitServerPinnedRepos": null, "goPackages": "disabled", + "homepage": null, "insightsAlternateLoadingStrategy": false, "insightsBackfillerV2": true, "insightsDataRetention": true, @@ -429,7 +441,7 @@ All site configuration options and their default values are shown below. "modelConfiguration": null, - // Notifications recieved from Sourcegraph.com to display in Sourcegraph. + // Notifications received from Sourcegraph.com to display in Sourcegraph. // Other example values: // - { // "key": "2023-03-10-my-key", @@ -544,6 +556,9 @@ All site configuration options and their default values are shown below. // Valid options: "STANDARD", "Azure AD" "scim.identityProvider": "STANDARD", + // Enable AI query helper mode in search, including natural language query translation suggestions. + "search.aiQueryHelper.enabled": false, + // The number of threads each indexserver should use to index shards. If not set, indexserver will use the number of available CPUs. This is exposed as a safeguard and should usually not require being set. // Other example values: // - 10 @@ -578,6 +593,9 @@ All site configuration options and their default values are shown below. "maxTimeoutSeconds": 60 }, + // EXPERIMENTAL: Use content-based language detection for lang: filters (Zoekt only). + "searchContentBasedLanguageDetection": false, + // Syntax highlighting configuration // Other example values: // - { @@ -694,7 +712,13 @@ All site configuration options and their default values are shown below. ] }, - // IP allowlist for access to the Sourcegraph instance. If set, only requests from these IP addresses will be allowed. By default client IP is infered connected client IP address, and you may configure to use a request header to determine the user IP. + // Requires PIN or biometric verification when using admin passkeys. When enabled, authenticators must support and perform user verification (PIN entry, fingerprint, face recognition, etc.). This provides stronger assurance that the person using the passkey is the legitimate owner. + "auth.adminPasskeyPINRequired": false, + + // Requires site admin users to verify their identity using a FIDO2/WebAuthn passkey before accessing admin pages. When enabled, admins must register at least one passkey and re-verify periodically (default: every hour). This provides step-up authentication for sensitive admin operations. + "auth.adminPasskeyRequired": false, + + // IP allowlist for access to the Sourcegraph instance. If set, only requests from these IP addresses will be allowed. By default client IP is inferred connected client IP address, and you may configure to use a request header to determine the user IP. "auth.allowedIpAddress": { "clientIpAddress": null, "enabled": false, @@ -707,8 +731,11 @@ All site configuration options and their default values are shown below. // Enables users to change their username after account creation. Warning: setting this to be true has security implications if you have enabled (or will at any point in the future enable) repository permissions with an option that relies on username equivalency between Sourcegraph and an external service or authentication provider. Do NOT set this to true if you are using non-built-in authentication OR rely on username equivalency for repository permissions. "auth.enableUsernameChanges": false, + // When enabled, users are required to connect at least one external account to their Sourcegraph account. Site admins are exempt from this requirement. + "auth.enforceExternalAccountConnection": false, + // Enables OAuth 2.0 Dynamic Client Registration (RFC 7591) for the Sourcegraph identity provider. When enabled, OAuth clients can self-register programmatically instead of requiring manual pre-configuration. Required for MCP clients and other applications that use dynamic registration for authorization. - "auth.idpDynamicClientRegistrationEnabled": false, + "auth.idpDynamicClientRegistrationEnabled": true, // The config options for account lockout // Other example values: @@ -761,7 +788,7 @@ All site configuration options and their default values are shown below. ], // The maximum duration of a user session, after which it expires and the user is required to re-authenticate. The default is 90 days. Must be at least 1 hour. There is typically no need to set this, but some users may have specific internal security requirements. - // The string format is that of the Duration type in the Go time package (https://golang.org/pkg/time/#ParseDuration). E.g., "720h", "43200m", "2592000s" all indicate a timespan of 30 days. + // The string format is that of the Duration type in the Go time package (https://golang.org/pkg/time/#ParseDuration). E.g., "720h", "43200m", "2592000s" all indicate a time span of 30 days. // Other example values: // - "168h" "auth.sessionExpiry": "2160h", @@ -778,7 +805,7 @@ All site configuration options and their default values are shown below. // Other example values: // - { // "*": [ - // "myorg1" + // "org1" // ] // } "auth.userOrgMap": null, @@ -830,7 +857,6 @@ All site configuration options and their default values are shown below. // "accessToken": "abc123", // "chatModel": "chat", // "completionModel": "code-completion", - // "enabled": true, // "perUserDailyLimit": 100, // "provider": "openai" // } @@ -887,6 +913,10 @@ All site configuration options and their default values are shown below. // The configuration for multiqueue executors. "executors.multiqueue": { "dequeueCacheConfig": { + "agenticbatchchanges": { + "limit": 50, + "weight": 1 + }, "batches": { "limit": 50, "weight": 4 @@ -951,7 +981,7 @@ All site configuration options and their default values are shown below. // Maximum number of git clone processes that will be run concurrently per gitserver to update repositories. <= 0 means disabled. "gitMaxConcurrentCleanups": 5, - // Maximum number of git clone processes that will be run concurrently per gitserver to update repositories. Note: the global git update scheduler respects gitMaxConcurrentClones. However, we allow each gitserver to run upto gitMaxConcurrentClones to allow for urgent fetches. Urgent fetches are used when a user is browsing a PR and we do not have the commit yet. + // Maximum number of git clone processes that will be run concurrently per gitserver to update repositories. Note: the global git update scheduler respects gitMaxConcurrentClones. However, we allow each gitserver to run up to gitMaxConcurrentClones to allow for urgent fetches. Urgent fetches are used when a user is browsing a PR and we do not have the commit yet. "gitMaxConcurrentClones": 5, // Record git operations that are executed on configured repositories. @@ -1012,7 +1042,6 @@ All site configuration options and their default values are shown below. // "logo": "https://example.com/logo_dark.png", // "symbol": "https://example.com/search_symbol_dark_24x24.png" // }, - // "disableSymbolSpin": true, // "favicon": "https://example.com/favicon.ico", // "light": { // "logo": "https://example.com/logo_light.png", @@ -1118,15 +1147,13 @@ All site configuration options and their default values are shown below. // Configures distributed tracing within Sourcegraph. To learn more, refer to https://sourcegraph.com/docs/admin/observability/tracing // Other example values: // - { - // "debug": false, // "sampling": "selective", // "type": "opentelemetry", // "urlTemplate": "https://ui.honeycomb.io/$ORG/environments/$DATASET/trace?trace_id={{ .TraceID }}" // } // - { - // "debug": true, // "sampling": "all", - // "type": "jaeger", + // "type": "opentelemetry", // "urlTemplate": "{{ .ExternalURL }}/-/debug/jaeger/trace/{{ .TraceID }}" // } "observability.tracing": { diff --git a/docs/admin/repo/perforce.mdx b/docs/admin/repo/perforce.mdx index 7051f22be..090c6edc8 100644 --- a/docs/admin/repo/perforce.mdx +++ b/docs/admin/repo/perforce.mdx @@ -228,7 +228,7 @@ With this setting, Sourcegraph will ignore any rules with a host other than `*`, {/* SCHEMA_SYNC_START: admin/code_hosts/perforce.schema.json */} {/* WARNING: This section is auto-generated during releases. Do not edit manually. */} -{/* Last updated: 2026-01-22T04:55:03Z */} +{/* Last updated: 2026-02-25T13:48:43Z */} ```json { // If non-null, enforces Perforce depot permissions. diff --git a/docs/cody/capabilities/supported-models.mdx b/docs/cody/capabilities/supported-models.mdx index 9fded58c0..19ab2548a 100644 --- a/docs/cody/capabilities/supported-models.mdx +++ b/docs/cody/capabilities/supported-models.mdx @@ -14,6 +14,8 @@ Cody supports a variety of cutting-edge large language models for use in chat an | **Provider** | **Model** | **Status** | **Vision Support** | | :----------- | :-------- | :--------- | :----------------- | +| Anthropic | [Claude Opus 4.6](https://docs.anthropic.com/en/docs/about-claude/models/overview) | ✅ | ✅ | +| Anthropic | [Claude Sonnet 4.6](https://docs.anthropic.com/en/docs/about-claude/models/overview) | ✅ | ✅ | | Anthropic | [Claude Sonnet 4.5](https://docs.anthropic.com/en/docs/about-claude/models/overview) | ✅ | ✅ | | Anthropic | [Claude Sonnet 4.5 with Thinking](https://docs.anthropic.com/en/docs/about-claude/models/overview) | ✅ | ✅ | | Anthropic | [Claude Opus 4.5](https://docs.anthropic.com/en/docs/about-claude/models/overview) | ✅ | ✅ | diff --git a/docs/self-hosted/observability/alerts.mdx b/docs/self-hosted/observability/alerts.mdx index 6236c6e32..fe9f16fd8 100644 --- a/docs/self-hosted/observability/alerts.mdx +++ b/docs/self-hosted/observability/alerts.mdx @@ -18,7 +18,7 @@ To learn more about Sourcegraph's alerting and how to set up alerts, see [our al **Next steps** - **Get details on the exact queries that are slow** by configuring `"observability.logSlowSearches": 20,` in the site configuration and looking for `frontend` warning logs prefixed with `slow search request` for additional details. -- **Check that most repositories are indexed** by visiting https://sourcegraph.example.com/site-admin/repositories?filter=needs-index (it should show few or no results.) +- **Check that most repositories are indexed** by visiting https://sourcegraph.example.com/admin/repositories?filter=needs-index (it should show few or no results.) - **Kubernetes:** Check CPU usage of zoekt-webserver in the indexed-search pod, consider increasing CPU limits in the `indexed-search.Deployment.yaml` if regularly hitting max CPU utilization. - **Docker Compose:** Check CPU usage on the Zoekt Web Server dashboard, consider increasing `cpus:` of the zoekt-webserver container in `docker-compose.yml` if regularly hitting max CPU utilization. - Learn more about the related dashboard panel in the [dashboards reference](dashboards#frontend-99th_percentile_search_request_duration). @@ -52,7 +52,7 @@ Generated query for warning alert: `max((histogram_quantile(0.99, sum by (le) (r **Next steps** - **Get details on the exact queries that are slow** by configuring `"observability.logSlowSearches": 15,` in the site configuration and looking for `frontend` warning logs prefixed with `slow search request` for additional details. -- **Check that most repositories are indexed** by visiting https://sourcegraph.example.com/site-admin/repositories?filter=needs-index (it should show few or no results.) +- **Check that most repositories are indexed** by visiting https://sourcegraph.example.com/admin/repositories?filter=needs-index (it should show few or no results.) - **Kubernetes:** Check CPU usage of zoekt-webserver in the indexed-search pod, consider increasing CPU limits in the `indexed-search.Deployment.yaml` if regularly hitting max CPU utilization. - **Docker Compose:** Check CPU usage on the Zoekt Web Server dashboard, consider increasing `cpus:` of the zoekt-webserver container in `docker-compose.yml` if regularly hitting max CPU utilization. - Learn more about the related dashboard panel in the [dashboards reference](dashboards#frontend-90th_percentile_search_request_duration). @@ -241,7 +241,7 @@ Generated query for warning alert: `max((histogram_quantile(0.9, sum by (le) (ra **Next steps** - **Get details on the exact queries that are slow** by configuring `"observability.logSlowSearches": 20,` in the site configuration and looking for `frontend` warning logs prefixed with `slow search request` for additional details. -- **Check that most repositories are indexed** by visiting https://sourcegraph.example.com/site-admin/repositories?filter=needs-index (it should show few or no results.) +- **Check that most repositories are indexed** by visiting https://sourcegraph.example.com/admin/repositories?filter=needs-index (it should show few or no results.) - **Kubernetes:** Check CPU usage of zoekt-webserver in the indexed-search pod, consider increasing CPU limits in the `indexed-search.Deployment.yaml` if regularly hitting max CPU utilization. - **Docker Compose:** Check CPU usage on the Zoekt Web Server dashboard, consider increasing `cpus:` of the zoekt-webserver container in `docker-compose.yml` if regularly hitting max CPU utilization. - This alert may indicate that your instance is struggling to process symbols queries on a monorepo, [learn more here](https://sourcegraph.com/docs/admin/monorepo). @@ -276,7 +276,7 @@ Generated query for warning alert: `max((histogram_quantile(0.99, sum by (le) (r **Next steps** - **Get details on the exact queries that are slow** by configuring `"observability.logSlowSearches": 15,` in the site configuration and looking for `frontend` warning logs prefixed with `slow search request` for additional details. -- **Check that most repositories are indexed** by visiting https://sourcegraph.example.com/site-admin/repositories?filter=needs-index (it should show few or no results.) +- **Check that most repositories are indexed** by visiting https://sourcegraph.example.com/admin/repositories?filter=needs-index (it should show few or no results.) - **Kubernetes:** Check CPU usage of zoekt-webserver in the indexed-search pod, consider increasing CPU limits in the `indexed-search.Deployment.yaml` if regularly hitting max CPU utilization. - **Docker Compose:** Check CPU usage on the Zoekt Web Server dashboard, consider increasing `cpus:` of the zoekt-webserver container in `docker-compose.yml` if regularly hitting max CPU utilization. - This alert may indicate that your instance is struggling to process symbols queries on a monorepo, [learn more here](https://sourcegraph.com/docs/admin/monorepo). @@ -432,7 +432,7 @@ Generated query for warning alert: `max((sum by (alert_type) (increase(src_graph **Next steps** - **Get details on the exact queries that are slow** by configuring `"observability.logSlowSearches": 20,` in the site configuration and looking for `frontend` warning logs prefixed with `slow search request` for additional details. -- **Check that most repositories are indexed** by visiting https://sourcegraph.example.com/site-admin/repositories?filter=needs-index (it should show few or no results.) +- **Check that most repositories are indexed** by visiting https://sourcegraph.example.com/admin/repositories?filter=needs-index (it should show few or no results.) - **Kubernetes:** Check CPU usage of zoekt-webserver in the indexed-search pod, consider increasing CPU limits in the `indexed-search.Deployment.yaml` if regularly hitting max CPU utilization. - **Docker Compose:** Check CPU usage on the Zoekt Web Server dashboard, consider increasing `cpus:` of the zoekt-webserver container in `docker-compose.yml` if regularly hitting max CPU utilization. - Learn more about the related dashboard panel in the [dashboards reference](dashboards#frontend-99th_percentile_search_api_request_duration). @@ -466,7 +466,7 @@ Generated query for warning alert: `max((histogram_quantile(0.99, sum by (le) (r **Next steps** - **Get details on the exact queries that are slow** by configuring `"observability.logSlowSearches": 15,` in the site configuration and looking for `frontend` warning logs prefixed with `slow search request` for additional details. -- **Check that most repositories are indexed** by visiting https://sourcegraph.example.com/site-admin/repositories?filter=needs-index (it should show few or no results.) +- **Check that most repositories are indexed** by visiting https://sourcegraph.example.com/admin/repositories?filter=needs-index (it should show few or no results.) - **Kubernetes:** Check CPU usage of zoekt-webserver in the indexed-search pod, consider increasing CPU limits in the `indexed-search.Deployment.yaml` if regularly hitting max CPU utilization. - **Docker Compose:** Check CPU usage on the Zoekt Web Server dashboard, consider increasing `cpus:` of the zoekt-webserver container in `docker-compose.yml` if regularly hitting max CPU utilization. - Learn more about the related dashboard panel in the [dashboards reference](dashboards#frontend-90th_percentile_search_api_request_duration). @@ -1286,7 +1286,7 @@ Generated query for warning alert: `max((max by (instance) (go_gc_duration_secon **Descriptions** -- critical frontend: less than 90% percentage pods available for 10m0s +- critical frontend: less than 50% percentage pods available for 15m0s **Next steps** @@ -1306,7 +1306,7 @@ Generated query for warning alert: `max((max by (instance) (go_gc_duration_secon
Technical details -Generated query for critical alert: `min((sum by (app) (up{app=~".*(frontend\\|sourcegraph-frontend)"\}) / count by (app) (up\{app=~".*(frontend\\|sourcegraph-frontend)"}) * 100) <= 90)` +Generated query for critical alert: `min((sum by (app) (up{app=~".*(frontend\\|sourcegraph-frontend)"\}) / count by (app) (up\{app=~".*(frontend\\|sourcegraph-frontend)"}) * 100) <= 50)`
@@ -1429,7 +1429,7 @@ Generated query for warning alert: `max((sum by (container_label_io_kubernetes_p **Next steps** - **Check if the problem may be an intermittent and temporary peak** using the "Container monitoring" section at the bottom of the Git Server dashboard. -- **Single container deployments:** Consider upgrading to a [Docker Compose deployment](../deploy/docker-compose/migrate) which offers better scalability and resource isolation. +- **Single container deployments (removed in 7.0.0):** The single-container deployment mode has been sunset. [Migrate to Docker Compose](../deploy/docker-compose/migrate). - **Kubernetes and Docker Compose:** Check that you are running a similar number of git server replicas and that their CPU/memory limits are allocated according to what is shown in the [Sourcegraph resource estimator](https://sourcegraph.com/docs/self-hosted/deploy/resource-estimator). - More help interpreting this metric is available in the [dashboards reference](dashboards#gitserver-running_git_commands). - **Silence this alert:** If you are aware of this alert and want to silence notifications for it, add the following to your site configuration and set a reminder to re-evaluate the alert: @@ -1464,7 +1464,7 @@ Generated query for critical alert: `max((sum by (instance, cmd) (src_gitserver_ **Next steps** -- **Single container deployments:** Upgrade to a [Docker Compose deployment](../deploy/docker-compose/migrate) which offers better scalability and resource isolation. +- **Single container deployments (removed in 7.0.0):** The single-container deployment mode has been sunset. [Migrate to Docker Compose](../deploy/docker-compose/migrate). - **Kubernetes and Docker Compose:** Check that you are running a similar number of git server replicas and that their CPU/memory limits are allocated according to what is shown in the [Sourcegraph resource estimator](https://sourcegraph.com/docs/self-hosted/deploy/resource-estimator). - If your persistent volume is slow, you may want to provision more IOPS, usually by increasing the volume size. - More help interpreting this metric is available in the [dashboards reference](dashboards#gitserver-echo_command_duration_test). @@ -1529,7 +1529,7 @@ Generated query for critical alert: `max((sum(rate(src_gitserver_repo_corrupted[ **Next steps** - **If you just added several repositories**, the warning may be expected. -- **Check which repositories need cloning**, by visiting e.g. https://sourcegraph.example.com/site-admin/repositories?filter=not-cloned +- **Check which repositories need cloning**, by visiting e.g. https://sourcegraph.example.com/admin/repositories?filter=not-cloned - Learn more about the related dashboard panel in the [dashboards reference](dashboards#gitserver-repository_clone_queue_size). - **Silence this alert:** If you are aware of this alert and want to silence notifications for it, add the following to your site configuration and set a reminder to re-evaluate the alert: @@ -2007,7 +2007,7 @@ Generated query for warning alert: `max((max by (instance) (go_gc_duration_secon **Descriptions** -- critical gitserver: less than 90% percentage pods available for 10m0s +- critical gitserver: less than 50% percentage pods available for 15m0s **Next steps** @@ -2027,7 +2027,7 @@ Generated query for warning alert: `max((max by (instance) (go_gc_duration_secon
Technical details -Generated query for critical alert: `min((sum by (app) (up{app=~".*gitserver"\}) / count by (app) (up\{app=~".*gitserver"}) * 100) <= 90)` +Generated query for critical alert: `min((sum by (app) (up{app=~".*gitserver"\}) / count by (app) (up\{app=~".*gitserver"}) * 100) <= 50)`
@@ -2427,7 +2427,7 @@ Generated query for warning alert: `max((max by (name) (container_oom_events_tot **Descriptions** -- critical postgres: less than 90% percentage pods available for 10m0s +- critical postgres: less than 50% percentage pods available for 15m0s **Next steps** @@ -2447,7 +2447,7 @@ Generated query for warning alert: `max((max by (name) (container_oom_events_tot
Technical details -Generated query for critical alert: `min((sum by (app) (up{app=~".*(pgsql\\|codeintel-db\\|codeinsights)"\}) / count by (app) (up\{app=~".*(pgsql\\|codeintel-db\\|codeinsights)"}) * 100) <= 90)` +Generated query for critical alert: `min((sum by (app) (up{app=~".*(pgsql\\|codeintel-db\\|codeinsights)"\}) / count by (app) (up\{app=~".*(pgsql\\|codeintel-db\\|codeinsights)"}) * 100) <= 50)`
@@ -2496,7 +2496,7 @@ Generated query for critical alert: `max((sum by (app_name, db_name) (increase(s **Descriptions** -- critical precise-code-intel-worker: less than 90% percentage pods available for 10m0s +- critical precise-code-intel-worker: less than 50% percentage pods available for 15m0s **Next steps** @@ -2516,7 +2516,7 @@ Generated query for critical alert: `max((sum by (app_name, db_name) (increase(s
Technical details -Generated query for critical alert: `min((sum by (app) (up{app=~".*precise-code-intel-worker"\}) / count by (app) (up\{app=~".*precise-code-intel-worker"}) * 100) <= 90)` +Generated query for critical alert: `min((sum by (app) (up{app=~".*precise-code-intel-worker"\}) / count by (app) (up\{app=~".*precise-code-intel-worker"}) * 100) <= 50)`
@@ -2565,7 +2565,7 @@ Generated query for critical alert: `max((sum by (app_name, db_name) (increase(s **Descriptions** -- critical syntactic-indexing: less than 90% percentage pods available for 10m0s +- critical syntactic-indexing: less than 50% percentage pods available for 15m0s **Next steps** @@ -2585,7 +2585,7 @@ Generated query for critical alert: `max((sum by (app_name, db_name) (increase(s
Technical details -Generated query for critical alert: `min((sum by (app) (up{app=~".*syntactic-code-intel-worker"\}) / count by (app) (up\{app=~".*syntactic-code-intel-worker"}) * 100) <= 90)` +Generated query for critical alert: `min((sum by (app) (up{app=~".*syntactic-code-intel-worker"\}) / count by (app) (up\{app=~".*syntactic-code-intel-worker"}) * 100) <= 50)`
@@ -2979,7 +2979,7 @@ Generated query for warning alert: `max((max by (name) (container_oom_events_tot **Descriptions** -- critical redis: less than 90% percentage pods available for 10m0s +- critical redis: less than 50% percentage pods available for 15m0s **Next steps** @@ -2999,7 +2999,7 @@ Generated query for warning alert: `max((max by (name) (container_oom_events_tot
Technical details -Generated query for critical alert: `min((sum by (app) (up{app=~".*redis-cache"\}) / count by (app) (up\{app=~".*redis-cache"}) * 100) <= 90)` +Generated query for critical alert: `min((sum by (app) (up{app=~".*redis-cache"\}) / count by (app) (up\{app=~".*redis-cache"}) * 100) <= 50)`
@@ -3011,7 +3011,7 @@ Generated query for critical alert: `min((sum by (app) (up{app=~".*redis-cache"\ **Descriptions** -- critical redis: less than 90% percentage pods available for 10m0s +- critical redis: less than 50% percentage pods available for 15m0s **Next steps** @@ -3031,7 +3031,7 @@ Generated query for critical alert: `min((sum by (app) (up{app=~".*redis-cache"\
Technical details -Generated query for critical alert: `min((sum by (app) (up{app=~".*redis-store"\}) / count by (app) (up\{app=~".*redis-store"}) * 100) <= 90)` +Generated query for critical alert: `min((sum by (app) (up{app=~".*redis-store"\}) / count by (app) (up\{app=~".*redis-store"}) * 100) <= 50)`
@@ -3854,38 +3854,6 @@ Generated query for warning alert: `max((histogram_quantile(0.95, max by (le, ty
-## worker: perms_syncer_sync_errors - -

permissions sync error rate

- -**Descriptions** - -- critical worker: 1+ permissions sync error rate for 1m0s - -**Next steps** - -- Check the network connectivity the Sourcegraph and the code host. -- Check if API rate limit quota is exhausted on the code host. -- Learn more about the related dashboard panel in the [dashboards reference](dashboards#worker-perms_syncer_sync_errors). -- **Silence this alert:** If you are aware of this alert and want to silence notifications for it, add the following to your site configuration and set a reminder to re-evaluate the alert: - -```json -"observability.silenceAlerts": [ - "critical_worker_perms_syncer_sync_errors" -] -``` - -*Managed by the Sourcegraph Services team.* - -
-Technical details - -Generated query for critical alert: `max((max by (type) (ceil(rate(src_repo_perms_syncer_sync_errors_total[1m])))) >= 1)` - -
- -
- ## worker: goroutine_error_rate

error rate for periodic goroutine executions

@@ -4341,7 +4309,7 @@ Generated query for warning alert: `max((max by (instance) (go_gc_duration_secon **Descriptions** -- critical worker: less than 90% percentage pods available for 10m0s +- critical worker: less than 50% percentage pods available for 15m0s **Next steps** @@ -4361,7 +4329,7 @@ Generated query for warning alert: `max((max by (instance) (go_gc_duration_secon
Technical details -Generated query for critical alert: `min((sum by (app) (up{app=~".*worker"\}) / count by (app) (up\{app=~".*worker"}) * 100) <= 90)` +Generated query for critical alert: `min((sum by (app) (up{app=~".*worker"\}) / count by (app) (up\{app=~".*worker"}) * 100) <= 50)`
@@ -4946,7 +4914,7 @@ Generated query for warning alert: `max((max by (instance) (go_gc_duration_secon **Descriptions** -- critical searcher: less than 90% percentage pods available for 10m0s +- critical searcher: less than 50% percentage pods available for 15m0s **Next steps** @@ -4966,7 +4934,7 @@ Generated query for warning alert: `max((max by (instance) (go_gc_duration_secon
Technical details -Generated query for critical alert: `min((sum by (app) (up{app=~".*searcher"\}) / count by (app) (up\{app=~".*searcher"}) * 100) <= 90)` +Generated query for critical alert: `min((sum by (app) (up{app=~".*searcher"\}) / count by (app) (up\{app=~".*searcher"}) * 100) <= 50)`
@@ -5264,7 +5232,7 @@ Generated query for warning alert: `max((max by (name) (container_oom_events_tot **Descriptions** -- critical syntect-server: less than 90% percentage pods available for 10m0s +- critical syntect-server: less than 50% percentage pods available for 15m0s **Next steps** @@ -5284,7 +5252,7 @@ Generated query for warning alert: `max((max by (name) (container_oom_events_tot
Technical details -Generated query for critical alert: `min((sum by (app) (up{app=~".*syntect-server"\}) / count by (app) (up\{app=~".*syntect-server"}) * 100) <= 90)` +Generated query for critical alert: `min((sum by (app) (up{app=~".*syntect-server"\}) / count by (app) (up\{app=~".*syntect-server"}) * 100) <= 50)`
@@ -5684,7 +5652,7 @@ Generated query for warning alert: `max((max by (instance) (go_gc_duration_secon **Descriptions** -- critical zoekt: less than 90% percentage pods available for 10m0s +- critical zoekt: less than 50% percentage pods available for 15m0s **Next steps** @@ -5704,7 +5672,7 @@ Generated query for warning alert: `max((max by (instance) (go_gc_duration_secon
Technical details -Generated query for critical alert: `min((sum by (app) (up{app=~".*indexed-search"\}) / count by (app) (up\{app=~".*indexed-search"}) * 100) <= 90)` +Generated query for critical alert: `min((sum by (app) (up{app=~".*indexed-search"\}) / count by (app) (up\{app=~".*indexed-search"}) * 100) <= 50)`
@@ -6227,7 +6195,7 @@ Generated query for warning alert: `max((max by (name) (container_oom_events_tot **Descriptions** -- critical prometheus: less than 90% percentage pods available for 10m0s +- critical prometheus: less than 50% percentage pods available for 15m0s **Next steps** @@ -6247,7 +6215,7 @@ Generated query for warning alert: `max((max by (name) (container_oom_events_tot
Technical details -Generated query for critical alert: `min((sum by (app) (up{app=~".*prometheus"\}) / count by (app) (up\{app=~".*prometheus"}) * 100) <= 90)` +Generated query for critical alert: `min((sum by (app) (up{app=~".*prometheus"\}) / count by (app) (up\{app=~".*prometheus"}) * 100) <= 50)`
@@ -6809,7 +6777,7 @@ Generated query for warning alert: `max((cadvisor_container_memory_usage_percent **Descriptions** -- critical otel-collector: less than 90% percentage pods available for 10m0s +- critical otel-collector: less than 50% percentage pods available for 15m0s **Next steps** @@ -6829,7 +6797,148 @@ Generated query for warning alert: `max((cadvisor_container_memory_usage_percent
Technical details -Generated query for critical alert: `min((sum by (app) (up{app=~".*otel-collector"\}) / count by (app) (up\{app=~".*otel-collector"}) * 100) <= 90)` +Generated query for critical alert: `min((sum by (app) (up{app=~".*otel-collector"\}) / count by (app) (up\{app=~".*otel-collector"}) * 100) <= 50)` + +
+ +
+ +## deepsearch: deepsearch_questions_in_flight_growth + +

rate of growth of in-flight questions over 1h

+ +**Descriptions** + +- warning deepsearch: 1+ rate of growth of in-flight questions over 1h for 30m0s +- critical deepsearch: 1+ rate of growth of in-flight questions over 1h for 1h0m0s + +**Next steps** + +- Check for questions that are never stopping. +- Check for slow LLM responses or tool execution times. +- Review `deepsearch_question_processing_duration` for processing time trends. +- More help interpreting this metric is available in the [dashboards reference](dashboards#deepsearch-deepsearch_questions_in_flight_growth). +- **Silence this alert:** If you are aware of this alert and want to silence notifications for it, add the following to your site configuration and set a reminder to re-evaluate the alert: + +```json +"observability.silenceAlerts": [ + "warning_deepsearch_deepsearch_questions_in_flight_growth", + "critical_deepsearch_deepsearch_questions_in_flight_growth" +] +``` + +*Managed by the Sourcegraph Code Understanding team.* + +
+Technical details + +Generated query for warning alert: `max((max(deriv(src_deepsearch_questions_in_flight[1h]))) > 1)` + +Generated query for critical alert: `max((max(deriv(src_deepsearch_questions_in_flight[1h]))) > 1)` + +
+ +
+ +## deepsearch: deepsearch_question_processing_error_rate + +

question processing error rate over 5m

+ +**Descriptions** + +- warning deepsearch: 10%+ question processing error rate over 5m for 10m0s +- critical deepsearch: 20%+ question processing error rate over 5m for 10m0s + +**Next steps** + +- Check frontend logs for `Worker failed to process question` errors. +- Review LLM stream errors in the `LLM streaming` panel below. +- Check for upstream LLM provider issues. +- More help interpreting this metric is available in the [dashboards reference](dashboards#deepsearch-deepsearch_question_processing_error_rate). +- **Silence this alert:** If you are aware of this alert and want to silence notifications for it, add the following to your site configuration and set a reminder to re-evaluate the alert: + +```json +"observability.silenceAlerts": [ + "warning_deepsearch_deepsearch_question_processing_error_rate", + "critical_deepsearch_deepsearch_question_processing_error_rate" +] +``` + +*Managed by the Sourcegraph Code Understanding team.* + +
+Technical details + +Generated query for warning alert: `max((sum(rate(src_deepsearch_question_processing_errors_total{operation="question"\}[5m])) / (sum(rate(src_deepsearch_question_processing_total\{operation="question"}[5m])) > 0) * 100) > 10)` + +Generated query for critical alert: `max((sum(rate(src_deepsearch_question_processing_errors_total{operation="question"\}[5m])) / (sum(rate(src_deepsearch_question_processing_total\{operation="question"}[5m])) > 0) * 100) > 20)` + +
+ +
+ +## deepsearch: deepsearch_llm_stream_fatal_errors + +

fatal LLM stream errors over 5m

+ +**Descriptions** + +- warning deepsearch: 20+ fatal LLM stream errors over 5m + +**Next steps** + +- Check frontend logs for `fatal error in LLM stream`. +- More help interpreting this metric is available in the [dashboards reference](dashboards#deepsearch-deepsearch_llm_stream_fatal_errors). +- **Silence this alert:** If you are aware of this alert and want to silence notifications for it, add the following to your site configuration and set a reminder to re-evaluate the alert: + +```json +"observability.silenceAlerts": [ + "warning_deepsearch_deepsearch_llm_stream_fatal_errors" +] +``` + +*Managed by the Sourcegraph Code Understanding team.* + +
+Technical details + +Generated query for warning alert: `max((sum(increase(src_deepsearch_question_processing_errors_total{operation="llm_stream_fatal"}[5m]))) > 20)` + +
+ +
+ +## externalapi: externalapi_error_rate + +

error rate over 5m

+ +**Descriptions** + +- warning externalapi: 10%+ error rate over 5m for 10m0s +- critical externalapi: 25%+ error rate over 5m for 10m0s + +**Next steps** + +- Check frontend logs for external API errors. +- Review individual RPC method error rates below. +- More help interpreting this metric is available in the [dashboards reference](dashboards#externalapi-externalapi_error_rate). +- **Silence this alert:** If you are aware of this alert and want to silence notifications for it, add the following to your site configuration and set a reminder to re-evaluate the alert: + +```json +"observability.silenceAlerts": [ + "warning_externalapi_externalapi_error_rate", + "critical_externalapi_externalapi_error_rate" +] +``` + +*Managed by the Sourcegraph Platform team.* + +
+Technical details + +Generated query for warning alert: `max((sum(rate(rpc_server_duration_milliseconds_count{rpc_connect_error_code!=""}[5m])) / (sum(rate(rpc_server_duration_milliseconds_count[5m])) > 0) * 100) > 10)` + +Generated query for critical alert: `max((sum(rate(rpc_server_duration_milliseconds_count{rpc_connect_error_code!=""}[5m])) / (sum(rate(rpc_server_duration_milliseconds_count[5m])) > 0) * 100) > 25)`
@@ -6862,9 +6971,9 @@ Generated query for critical alert: `min((sum by (app) (up{app=~".*otel-collecto
Technical details -Generated query for warning alert: `max(((sum by (op) (rate(src_workerutil_dbworker_store_errors_total[5m])) / sum by (op) (rate(src_workerutil_dbworker_store_total[5m]))) * 100) >= 5)` +Generated query for warning alert: `max(((sum by (op) (rate(src_workerutil_dbworker_store_errors_total[5m])) / (sum by (op) (rate(src_workerutil_dbworker_store_errors_total[5m])) + sum by (op) (rate(src_workerutil_dbworker_store_total[5m])))) * 100) >= 5)` -Generated query for critical alert: `max(((sum by (op) (rate(src_workerutil_dbworker_store_errors_total[5m])) / sum by (op) (rate(src_workerutil_dbworker_store_total[5m]))) * 100) >= 50)` +Generated query for critical alert: `max(((sum by (op) (rate(src_workerutil_dbworker_store_errors_total[5m])) / (sum by (op) (rate(src_workerutil_dbworker_store_errors_total[5m])) + sum by (op) (rate(src_workerutil_dbworker_store_total[5m])))) * 100) >= 50)`
@@ -6897,9 +7006,9 @@ Generated query for critical alert: `max(((sum by (op) (rate(src_workerutil_dbwo
Technical details -Generated query for warning alert: `max(((sum by (domain) (rate(src_workerutil_dbworker_store_errors_total[5m])) / sum by (domain) (rate(src_workerutil_dbworker_store_total[5m]))) * 100) >= 5)` +Generated query for warning alert: `max(((sum by (domain) (rate(src_workerutil_dbworker_store_errors_total[5m])) / (sum by (domain) (rate(src_workerutil_dbworker_store_errors_total[5m])) + sum by (domain) (rate(src_workerutil_dbworker_store_total[5m])))) * 100) >= 5)` -Generated query for critical alert: `max(((sum by (domain) (rate(src_workerutil_dbworker_store_errors_total[5m])) / sum by (domain) (rate(src_workerutil_dbworker_store_total[5m]))) * 100) >= 50)` +Generated query for critical alert: `max(((sum by (domain) (rate(src_workerutil_dbworker_store_errors_total[5m])) / (sum by (domain) (rate(src_workerutil_dbworker_store_errors_total[5m])) + sum by (domain) (rate(src_workerutil_dbworker_store_total[5m])))) * 100) >= 50)`
diff --git a/docs/self-hosted/observability/dashboards.mdx b/docs/self-hosted/observability/dashboards.mdx index a99cad066..f0a7ce44d 100644 --- a/docs/self-hosted/observability/dashboards.mdx +++ b/docs/self-hosted/observability/dashboards.mdx @@ -15979,7 +15979,11 @@ histogram_quantile(0.95, max by (le, type) (rate(src_repo_perms_syncer_sync_dura

Permissions sync error rate

-Refer to the [alerts reference](alerts#worker-perms_syncer_sync_errors) for 1 alert related to this panel. +Permissions sync errors are often transient and rarely actionable. +- Check the network connectivity the Sourcegraph and the code host. +- Check if API rate limit quota is exhausted on the code host. + +This panel has no related alerts. To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101170` on your Sourcegraph instance. @@ -34943,6 +34947,484 @@ histogram_quantile(0.50, sum(rate(src_completions_upstream_connection_dial_durat
+## Deep Search + +

Monitoring for Deep Search question processing.

+ +To see this dashboard, visit `/-/debug/grafana/d/deepsearch/deepsearch` on your Sourcegraph instance. + +### Deep Search: Question processing + +#### deepsearch: deepsearch_questions_in_flight + +

Number of questions currently being processed

+ +The number of deep search questions currently being processed. + +This panel has no related alerts. + +To see this panel, visit `/-/debug/grafana/d/deepsearch/deepsearch?viewPanel=100000` on your Sourcegraph instance. + +*Managed by the Sourcegraph Code Understanding team.* + +
+Technical details + +Query: + +``` +sum(src_deepsearch_questions_in_flight) +``` +
+ +
+ +#### deepsearch: deepsearch_questions_in_flight_growth + +

Rate of growth of in-flight questions over 1h

+ +A positive value indicates the queue is growing faster than it`s being processed. + +Refer to the [alerts reference](alerts#deepsearch-deepsearch_questions_in_flight_growth) for 2 alerts related to this panel. + +To see this panel, visit `/-/debug/grafana/d/deepsearch/deepsearch?viewPanel=100001` on your Sourcegraph instance. + +*Managed by the Sourcegraph Code Understanding team.* + +
+Technical details + +Query: + +``` +max(deriv(src_deepsearch_questions_in_flight[1h])) +``` +
+ +
+ +#### deepsearch: deepsearch_question_processing_rate + +

Questions processed per minute

+ +Rate of deep search questions being processed. + +This panel has no related alerts. + +To see this panel, visit `/-/debug/grafana/d/deepsearch/deepsearch?viewPanel=100010` on your Sourcegraph instance. + +*Managed by the Sourcegraph Code Understanding team.* + +
+Technical details + +Query: + +``` +sum(rate(src_deepsearch_question_processing_total{operation="question"}[5m])) * 60 +``` +
+ +
+ +#### deepsearch: deepsearch_question_processing_error_rate + +

Question processing error rate over 5m

+ +Percentage of deep search questions that result in an error. + +Refer to the [alerts reference](alerts#deepsearch-deepsearch_question_processing_error_rate) for 2 alerts related to this panel. + +To see this panel, visit `/-/debug/grafana/d/deepsearch/deepsearch?viewPanel=100011` on your Sourcegraph instance. + +*Managed by the Sourcegraph Code Understanding team.* + +
+Technical details + +Query: + +``` +sum(rate(src_deepsearch_question_processing_errors_total{operation="question"}[5m])) / (sum(rate(src_deepsearch_question_processing_total{operation="question"}[5m])) > 0) * 100 +``` +
+ +
+ +#### deepsearch: deepsearch_question_processing_p99_duration + +

99th percentile question processing duration

+ +99th percentile time to process a deep search question. + +This panel has no related alerts. + +To see this panel, visit `/-/debug/grafana/d/deepsearch/deepsearch?viewPanel=100020` on your Sourcegraph instance. + +*Managed by the Sourcegraph Code Understanding team.* + +
+Technical details + +Query: + +``` +histogram_quantile(0.99, sum(rate(src_deepsearch_question_processing_duration_seconds_bucket{operation="question"}[5m])) by (le)) +``` +
+ +
+ +#### deepsearch: deepsearch_question_processing_p50_duration + +

50th percentile question processing duration

+ +Median time to process a deep search question. + +This panel has no related alerts. + +To see this panel, visit `/-/debug/grafana/d/deepsearch/deepsearch?viewPanel=100021` on your Sourcegraph instance. + +*Managed by the Sourcegraph Code Understanding team.* + +
+Technical details + +Query: + +``` +histogram_quantile(0.50, sum(rate(src_deepsearch_question_processing_duration_seconds_bucket{operation="question"}[5m])) by (le)) +``` +
+ +
+ +### Deep Search: LLM streaming + +#### deepsearch: deepsearch_llm_stream_fatal_errors + +

Fatal LLM stream errors over 5m

+ +Number of fatal errors during LLM streaming in the last 5 minutes. + +Refer to the [alerts reference](alerts#deepsearch-deepsearch_llm_stream_fatal_errors) for 1 alert related to this panel. + +To see this panel, visit `/-/debug/grafana/d/deepsearch/deepsearch?viewPanel=100100` on your Sourcegraph instance. + +*Managed by the Sourcegraph Code Understanding team.* + +
+Technical details + +Query: + +``` +sum(increase(src_deepsearch_question_processing_errors_total{operation="llm_stream_fatal"}[5m])) +``` +
+ +
+ +#### deepsearch: deepsearch_llm_stream_non_fatal_errors + +

Non-fatal LLM stream errors over 5m

+ +Number of non-fatal errors during LLM streaming. + +This panel has no related alerts. + +To see this panel, visit `/-/debug/grafana/d/deepsearch/deepsearch?viewPanel=100101` on your Sourcegraph instance. + +*Managed by the Sourcegraph Code Understanding team.* + +
+Technical details + +Query: + +``` +sum(increase(src_deepsearch_question_processing_errors_total{operation="llm_stream_non_fatal"}[5m])) +``` +
+ +
+ +## Sourcegraph external API + +

Monitoring for the Sourcegraph external API.

+ +To see this dashboard, visit `/-/debug/grafana/d/externalapi/externalapi` on your Sourcegraph instance. + +### Sourcegraph external API: Request rate and errors + +#### externalapi: externalapi_request_rate + +

Requests per second by service

+ +Rate of external API requests by service. + +This panel has no related alerts. + +To see this panel, visit `/-/debug/grafana/d/externalapi/externalapi?viewPanel=100000` on your Sourcegraph instance. + +*Managed by the Sourcegraph Platform team.* + +
+Technical details + +Query: + +``` +sum by (rpc_service)(rate(rpc_server_duration_milliseconds_count{rpc_service=~"$rpc_service"}[5m])) +``` +
+ +
+ +#### externalapi: externalapi_request_rate_by_method + +

Requests per second by method

+ +Rate of external API requests by RPC method. + +This panel has no related alerts. + +To see this panel, visit `/-/debug/grafana/d/externalapi/externalapi?viewPanel=100001` on your Sourcegraph instance. + +*Managed by the Sourcegraph Platform team.* + +
+Technical details + +Query: + +``` +sum by (rpc_method)(rate(rpc_server_duration_milliseconds_count{rpc_service=~"$rpc_service"}[5m])) +``` +
+ +
+ +#### externalapi: externalapi_error_rate + +

Error rate over 5m

+ +Percentage of external API requests that result in an error. + +Refer to the [alerts reference](alerts#externalapi-externalapi_error_rate) for 2 alerts related to this panel. + +To see this panel, visit `/-/debug/grafana/d/externalapi/externalapi?viewPanel=100010` on your Sourcegraph instance. + +*Managed by the Sourcegraph Platform team.* + +
+Technical details + +Query: + +``` +sum(rate(rpc_server_duration_milliseconds_count{rpc_service=~"$rpc_service",rpc_connect_error_code!=""}[5m])) / (sum(rate(rpc_server_duration_milliseconds_count{rpc_service=~"$rpc_service"}[5m])) > 0) * 100 +``` +
+ +
+ +#### externalapi: externalapi_errors_by_code + +

Errors by error code over 5m

+ +Rate of external API errors by ConnectRPC error code. + +This panel has no related alerts. + +To see this panel, visit `/-/debug/grafana/d/externalapi/externalapi?viewPanel=100011` on your Sourcegraph instance. + +*Managed by the Sourcegraph Platform team.* + +
+Technical details + +Query: + +``` +sum by (rpc_connect_error_code)(rate(rpc_server_duration_milliseconds_count{rpc_service=~"$rpc_service",rpc_connect_error_code!=""}[5m])) +``` +
+ +
+ +### Sourcegraph external API: Latency + +#### externalapi: externalapi_p99_duration + +

99th percentile request duration

+ +99th percentile external API request duration. + +This panel has no related alerts. + +To see this panel, visit `/-/debug/grafana/d/externalapi/externalapi?viewPanel=100100` on your Sourcegraph instance. + +*Managed by the Sourcegraph Platform team.* + +
+Technical details + +Query: + +``` +histogram_quantile(0.99, sum by (le)(rate(rpc_server_duration_milliseconds_bucket{rpc_service=~"$rpc_service"}[5m]))) +``` +
+ +
+ +#### externalapi: externalapi_p90_duration + +

90th percentile request duration

+ +90th percentile external API request duration. + +This panel has no related alerts. + +To see this panel, visit `/-/debug/grafana/d/externalapi/externalapi?viewPanel=100101` on your Sourcegraph instance. + +*Managed by the Sourcegraph Platform team.* + +
+Technical details + +Query: + +``` +histogram_quantile(0.90, sum by (le)(rate(rpc_server_duration_milliseconds_bucket{rpc_service=~"$rpc_service"}[5m]))) +``` +
+ +
+ +#### externalapi: externalapi_p50_duration + +

50th percentile request duration

+ +Median external API request duration. + +This panel has no related alerts. + +To see this panel, visit `/-/debug/grafana/d/externalapi/externalapi?viewPanel=100102` on your Sourcegraph instance. + +*Managed by the Sourcegraph Platform team.* + +
+Technical details + +Query: + +``` +histogram_quantile(0.50, sum by (le)(rate(rpc_server_duration_milliseconds_bucket{rpc_service=~"$rpc_service"}[5m]))) +``` +
+ +
+ +#### externalapi: externalapi_p99_duration_by_method + +

99th percentile request duration by method

+ +99th percentile external API request duration per RPC method. + +This panel has no related alerts. + +To see this panel, visit `/-/debug/grafana/d/externalapi/externalapi?viewPanel=100110` on your Sourcegraph instance. + +*Managed by the Sourcegraph Platform team.* + +
+Technical details + +Query: + +``` +histogram_quantile(0.99, sum by (le, rpc_method)(rate(rpc_server_duration_milliseconds_bucket{rpc_service=~"$rpc_service"}[5m]))) +``` +
+ +
+ +#### externalapi: externalapi_p50_duration_by_method + +

50th percentile request duration by method

+ +Median external API request duration per RPC method. + +This panel has no related alerts. + +To see this panel, visit `/-/debug/grafana/d/externalapi/externalapi?viewPanel=100111` on your Sourcegraph instance. + +*Managed by the Sourcegraph Platform team.* + +
+Technical details + +Query: + +``` +histogram_quantile(0.50, sum by (le, rpc_method)(rate(rpc_server_duration_milliseconds_bucket{rpc_service=~"$rpc_service"}[5m]))) +``` +
+ +
+ +### Sourcegraph external API: Request and response sizes + +#### externalapi: externalapi_p99_request_size + +

99th percentile request size

+ +99th percentile external API request message size. + +This panel has no related alerts. + +To see this panel, visit `/-/debug/grafana/d/externalapi/externalapi?viewPanel=100200` on your Sourcegraph instance. + +*Managed by the Sourcegraph Platform team.* + +
+Technical details + +Query: + +``` +histogram_quantile(0.99, sum by (le)(rate(rpc_server_request_size_bytes_bucket{rpc_service=~"$rpc_service"}[5m]))) +``` +
+ +
+ +#### externalapi: externalapi_p99_response_size + +

99th percentile response size

+ +99th percentile external API response message size. + +This panel has no related alerts. + +To see this panel, visit `/-/debug/grafana/d/externalapi/externalapi?viewPanel=100201` on your Sourcegraph instance. + +*Managed by the Sourcegraph Platform team.* + +
+Technical details + +Query: + +``` +histogram_quantile(0.99, sum by (le)(rate(rpc_server_response_size_bytes_bucket{rpc_service=~"$rpc_service"}[5m]))) +``` +
+ +
+ ## Periodic Goroutines

Overview of all periodic background routines across Sourcegraph services.

@@ -35441,7 +35923,7 @@ To see this panel, visit `/-/debug/grafana/d/background-jobs/background-jobs?vie Query: ``` -(sum by (op) (rate(src_workerutil_dbworker_store_errors_total{domain=~"$dbworker_domain"}[5m])) / sum by (op) (rate(src_workerutil_dbworker_store_total{domain=~"$dbworker_domain"}[5m]))) * 100 +(sum by (op) (rate(src_workerutil_dbworker_store_errors_total{domain=~"$dbworker_domain"}[5m])) / (sum by (op) (rate(src_workerutil_dbworker_store_errors_total{domain=~"$dbworker_domain"}[5m])) + sum by (op) (rate(src_workerutil_dbworker_store_total{domain=~"$dbworker_domain"}[5m])))) * 100 ``` @@ -35463,7 +35945,7 @@ To see this panel, visit `/-/debug/grafana/d/background-jobs/background-jobs?vie Query: ``` -(sum by (domain) (rate(src_workerutil_dbworker_store_errors_total{domain=~"$dbworker_domain"}[5m])) / sum by (domain) (rate(src_workerutil_dbworker_store_total{domain=~"$dbworker_domain"}[5m]))) * 100 +(sum by (domain) (rate(src_workerutil_dbworker_store_errors_total{domain=~"$dbworker_domain"}[5m])) / (sum by (domain) (rate(src_workerutil_dbworker_store_errors_total{domain=~"$dbworker_domain"}[5m])) + sum by (domain) (rate(src_workerutil_dbworker_store_total{domain=~"$dbworker_domain"}[5m])))) * 100 ``` From 23ba7ced7a3528f8d25f80eb5633f1ac10ea27e0 Mon Sep 17 00:00:00 2001 From: Robert Lin Date: Wed, 25 Feb 2026 12:14:23 -0800 Subject: [PATCH 017/217] api: prune GraphQL docs, add warnings, add new API (#1631) - Makes the `/api` page the landing page for the new external API - Add warning on GraphQL API page, rebrand as a debug API - Removes a lot of GraphQL examples pages to start discouraging their use and also clean things up --- docs/api/graphql/examples.mdx | 13 - docs/api/graphql/index.mdx | 27 +- .../managing-code-insights-with-api.mdx | 374 ------------------ .../managing-search-contexts-with-api.mdx | 195 --------- docs/api/graphql/search.mdx | 26 -- docs/api/index.mdx | 35 +- docs/api/stream-api/index.mdx | 7 +- docs/code-insights/references/index.mdx | 1 - .../how-to/create-search-context-graphql.mdx | 112 ------ docs/code-search/how-to/index.mdx | 2 +- docs/code-search/working/search-contexts.mdx | 4 - docs/deep-search/api.mdx | 299 -------------- docs/deep-search/index.mdx | 4 + .../getting-started/github-vs-sourcegraph.mdx | 2 +- docs/tutorials/index.mdx | 6 +- src/data/navigation.ts | 12 +- src/data/redirects.ts | 49 ++- 17 files changed, 94 insertions(+), 1074 deletions(-) delete mode 100644 docs/api/graphql/examples.mdx delete mode 100644 docs/api/graphql/managing-code-insights-with-api.mdx delete mode 100644 docs/api/graphql/managing-search-contexts-with-api.mdx delete mode 100644 docs/api/graphql/search.mdx delete mode 100644 docs/code-search/how-to/create-search-context-graphql.mdx delete mode 100644 docs/deep-search/api.mdx diff --git a/docs/api/graphql/examples.mdx b/docs/api/graphql/examples.mdx deleted file mode 100644 index 63e8712b5..000000000 --- a/docs/api/graphql/examples.mdx +++ /dev/null @@ -1,13 +0,0 @@ -# Sourcegraph GraphQL API examples - -This page demonstrates a few example GraphQL queries for the [Sourcegraph GraphQL API](/api/graphql/). For help with the API, you can use `Ctrl + space` to trigger tooltips. - -| GraphQL query | Description | Example use case | -| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| [Get the contents of a file on the default branch]() | Returns the file contents. | Quickly fetch file contents without cloning a repository or hitting your code host API (which is usually slower or more rate-limited than Sourcegraph). | -| [Perform a search query and get results]() | Returns the search result metadata (whether or not the search result limit was hit, if the search timed out, etc.) and the actual results of the search query, which can be one of three types: Repository, FileMatch, or CommitSearchResult. | Search for a new framework or API that you are using (or have deprecated) and determine all of the repositories that haven't yet been migrated. | -| [Compare 2 commits]() | Returns a list of changes between 2 commits. | Scan diffs between the old and new versions of a deployed service for changes that might indicate an incompatibility (e.g., in a service discovery manifest). | -| [List the first 1,000 repositories]() | Returns the name, description, and URL of the first 1,000 repositories on the Sourcegraph server (in order of their creation date). | - | -| [List all files in a repository]() | Returns every file in the repository, its path (relative to the repository root), whether or not it is a directory or plain file, and what the URL path to the file is. | List all of the files in each repository of your organization (when combined with the "List the first 1000 repositories" example above) to determine which of your repositories are missing important files like READMEs, LICENSEs, and Dockerfiles. | -| [List the languages used in a repository]() | Returns the primary language of the repository as well as a list of all the languages used in the repository. | List all of the languages in each repository of your organization (when combined with the "List the first 1000 repositories" example above) to determine how many repos use each language across your entire organization. | -| [Current month's active users]() | Returns the current month's active users (total count and usernames) and their last active time. | - | diff --git a/docs/api/graphql/index.mdx b/docs/api/graphql/index.mdx index 2b300af90..b0014510c 100644 --- a/docs/api/graphql/index.mdx +++ b/docs/api/graphql/index.mdx @@ -2,19 +2,20 @@ seoPriority: 0.8 --- -# Sourcegraph GraphQL API +# Sourcegraph GraphQL debug API -The Sourcegraph GraphQL API is a rich API that exposes data related to the code available on a Sourcegraph instance. +The Sourcegraph GraphQL API is a debug API that can be used for Sourcegraph diagnostics and simple tooling. -The Sourcegraph GraphQL API supports the following types of queries: - -- Full-text and regexp code search -- Rich git-level metadata, including commits, branches, blame information, and file tree data -- Repository and user metadata + + The GraphQL API is intended primarily for debugging use cases. It does not + have backwards-compatibility guarantees, and may not remain stable across + Sourcegraph releases. For more information, please refer to the [Sourcegraph + API page](/api). + - The API is under active development. Backwards compatibility will be - maintained in most cases. + For code search integrations, we currently recommend using the [stream + search API](/api/stream-api/). ## Quickstart @@ -75,10 +76,6 @@ always uses the latest version of the API). To access the documentation, click **Docs** on the right-hand side of the API console page. -### Search - -See [additional documentation about search GraphQL API](/api/graphql/search). - ### Sudo access tokens Site admins may create access tokens with the special `site-admin:sudo` scope, which allows the holder to perform any action as any other user. @@ -114,10 +111,6 @@ https://sourcegraph.com/.api/graphql i.e. you just need to send the `Authorization` header and a JSON object like `{"query": "my query string", "variables": {"var1": "val1"}}`. -## Examples - -See "[Sourcegraph GraphQL API examples](/api/graphql/examples)". - ## Cost Limits To ensure system performance and stability, configurable GraphQL query cost limitations have been implemented. This feature is crucial for preventing resource exhaustion due to extensive or overly complex queries. The default configuration looks as follows, and can be modified in site configuration: diff --git a/docs/api/graphql/managing-code-insights-with-api.mdx b/docs/api/graphql/managing-code-insights-with-api.mdx deleted file mode 100644 index aaaa122d8..000000000 --- a/docs/api/graphql/managing-code-insights-with-api.mdx +++ /dev/null @@ -1,374 +0,0 @@ -# Managing Code Insights with the API - -Learn how to manage [Code Insights](/code-insights/) on private Sourcegraph instances with the API. If you haven't used the API before, learn more about [the GraphQL API and how to use it](/api/graphql/). - -This page is meant as a guide for common use cases. You can find all of GraphQL documentation in the [API Console](/api/graphql/#api-console). - -## Prerequisites - -The Code Insights GraphQL API is available on Sourcegraph versions 3.35.1+. - -Note: If Code Insights setting storage is enabled, (`ENABLE_CODE_INSIGHTS_SETTINGS_STORAGE:true`) any changes made via the API will be periodically overwritten by insights stored in settings. This is an unlikely scenario. - -## Permissions and visibility - -Note: there are no separate read/write permissions at this time, so if a user has permission to view an insight they can also edit and delete it. - -When a user creates a Code Insight, that user will automatically be granted permission to view that insight. Besides this one case of insight-level permissions, all permissions exist on [dashboards](/code-insights/explanations/viewing-code-insights#insights-dashboards). This means that in order for another user to view an insight via the API, that insight must first be attached to a dashboard with either organization or global permissions. - -See [Managing Dashboards](#managing-dashboards) below for more information. - -## Just-in-time vs persisted insights - -Some insights generate and persist time series data, while others calculate their data just-in-time on page load. Currently, line chart insights will be persisted, while the language statistics pie charts that run over a single repository will be generated just-in-time. - -## Creating a persisted insight - -To create a Code Insight that will generate and persist time series data, use the mutation below. - -Important: Specify the list of repositories that the insight should run over in `repositoryScope.repositories` or leave it empty to specify that the query should be run across all repositories. - -```gql -mutation CreateLineChartSearchInsight($input: LineChartSearchInsightInput!) { - createLineChartSearchInsight(input: $input) { - view { - id - } - } -} -``` - -Example variables: - -```json -{ - "input": { - "options": { - "title": "Javascript to Typescript migration" - }, - "dataSeries": [ - { - "query": "lang:javascript", - "options": { - "label": "javascript", - "lineColor": "#6495ED" - }, - "repositoryScope": { - "repositories": [] - }, - "timeScope": { - "stepInterval": { - "unit": "MONTH", - "value": 1 - } - } - }, - { - "query": "lang:typescript", - "options": { - "label": "typescript", - "lineColor": "#DE3163" - }, - "repositoryScope": { - "repositories": [] - }, - "timeScope": { - "stepInterval": { - "unit": "MONTH", - "value": 1 - } - } - } - ] - } -} -``` - -## Creating a pie chart insight - -Pie chart insights show language usage across a specified repository. Because this type of chart has not yet been generalized to other use cases, the `query` field in the input is not used. To create one, use the mutation below. - -```gql -mutation CreatePieChartSearchInsight($input: PieChartSearchInsightInput!) { - createPieChartSearchInsight(input: $input) { - view { - id - } - } -} -``` - -Example variables: - -```json -{ - "input": { - "query": "", - "repositoryScope": { - "repositories": ["sourcegraph/sourcegraph"] - }, - "presentationOptions": { - "title": "Language usage for Sourcegraph", - "otherThreshold": 0.3 - } - } -} -``` - -## Reading a single Code Insight - -Use the query below to read a Code Insight by `id`. `filters` are optional, and if provided will filter the aggregated time series to specific repositories. - -You can find an insight's `id` if you visit the edit page for the insight. The edit page URL will be of the form `https://sourcegraph.yourcompany.com/insights/edit/aW5zaWdodF92aWV3OiIyM2hiYzNNclB2bDBtajlLTTZTUlBpWVlhZWQi?dashboardId=all` where the `id` is `aW5zaWdodF92aWV3OiIyM2hiYzNNclB2bDBtajlLTTZTUlBpWVlhZWQi`. Alternatively, you can list all insights using this graphQL API. - -Notes on the return object: - -- `dataSeries.status` is useful to guage the progress of the series point generation. More information can be found in the [API Console Documentation](/api/graphql/#api-console) -- The `dataSeries`, `dataSeriesDefinitions` and `seriesPresentation` arrays each store different information about the same series. The `seriesId` field on each can be used to match them up. - - `dataSeries` contains the calculated time series data - - `dataSeriesDefinitions` contains the definition for the series, such as the query and time interval - - `seriesPresentation` contains presentation options such as the title and line color - -```gql -query InsightViews($id: ID, $filters: InsightViewFiltersInput) { - insightViews(id: $id, filters: $filters) { - nodes { - id - dataSeries { - label - points { - dateTime - value - } - status { - pendingJobs - completedJobs - failedJobs - backfillQueuedAt - } - } - dataSeriesDefinitions { - ... on SearchInsightDataSeriesDefinition { - seriesId - query - repositoryScope { - repositories - } - timeScope { - ... on InsightIntervalTimeScope { - unit - value - } - } - } - } - presentation { - ... on LineChartInsightViewPresentation { - title - seriesPresentation { - seriesId - label - color - } - } - ... on PieChartInsightViewPresentation { - title - otherThreshold - } - } - } - } -} -``` - -Example variables: - -```json -{ - "id": "aW5zaWdodF92aWV3OiIyMkVIR2pXOTFkSzNOanpmM2hyWnU3WDJwMlgi", - "filters": { - "includeRepoRegex": "sourcegraph/sourcegraph", - "excludeRepoRegex": "sourcegraph/handbook" - } -} -``` - -## List Code Insights - -The query below will list all of the Code Insights that you can see based on [permissions](#permissions-and-visibility). The query and return object is the same as for reading a single Code Insight. All input parameters are optional, and can be used for cursor-based pagination and repository filtering. - -```gql -query InsightViews( - $first: Int - $after: String - $filters: InsightViewFiltersInput -) { - insightViews(first: $first, after: $after, filters: $filters) { - nodes { - id - } - pageInfo { - endCursor - hasNextPage - } - } -} -``` - -Example variables: - -```json -{ - "first": 10, - "after": "aW5zaWdodF92aWV3OiIyM1l3WHpmSkVhY2Juc0RvWVE5N0FtRU9Wbkki" -} -``` - -## Updating a Code Insight - -Below is a GraphQL mutation that updates an existing Code Insight. The format is almost identical to the creation mutation, except that it now takes an `id`. The input object must be complete as it will completely overwrite the existing Code Insight. - -Important: series are added, updated, and deleted from the insight as follows: - -- A `dataSeries` without a `seriesId` or with an unknown `seriesId` will be treated as a new series and be added to the insight. -- A `dataSeries` with a `seriesId` that already exists for this insight will be updated in place. -- Any `dataSeries` that previously existed on the insight but are NOT included in the update **will be deleted.** - -```gql -mutation UpdateLineChartSearchInsight( - $id: ID! - $input: UpdateLineChartSearchInsightInput! -) { - updateLineChartSearchInsight(id: $id, input: $input) { - view { - id - } - } -} -``` - -Example variables: - -This is an example of updating the Code Insight from the creation mutation example. This updates `options.title`, the `dataSeries.timeScope.stepInterval` of the existing javascript series, and deletes the typescript series by omiting it. - -```json -{ - "id": "[INSIGHT_ID]", - "input": { - "presentationOptions": { - "title": "Javascript weekly" - }, - "viewControls": { - "seriesDisplayOptions": {}, - "filters": {} - }, - "dataSeries": [ - { - "seriesId": "[SERIES_ID]", - "query": "lang:javascript", - "options": { - "label": "javascript", - "lineColor": "#6495ED" - }, - "repositoryScope": { - "repositories": [] - }, - "timeScope": { - "stepInterval": { - "unit": "WEEK", - "value": 1 - } - } - } - ] - } -} -``` - -## Deleting a Code Insight - -Below is a GraphQL mutation that deletes a Code Insight by ID. - -```gql -mutation DeleteInsightView($id: ID!) { - deleteInsightView(id: $id) { - alwaysNil - } -} -``` - -Example variables: - -```json -{ - "id": "aW5zaWdodF92aWV3OiIyMkVIR2pXOTFkSzNOanpmM2hyWnU3WDJwMlgi" -} -``` - -## Managing dashboards - -### Creating a dashboard - -Below is a GraphQL mutation that creates a dashboard with global permissions, meaning all users can view this dashboard and all of its insights. - -```gql -mutation CreateInsightsDashboard($input: CreateInsightsDashboardInput!) { - createInsightsDashboard(input: $input) { - dashboard { - id - } - } -} -``` - -Example variables: - -```json -{ - "input": { - "title": "Global insights dashboard", - "grants": { - "users": [], - "organizations": [], - "global": true - } - } -} -``` - -### Adding and removing Code Insights from a dashboard - -Use the following mutations to add and remove insights from dashboards: - -```gql -mutation AddInsightViewToDashboard($input: AddInsightViewToDashboardInput!) { - addInsightViewToDashboard(input: $input) { - dashboard { - id - } - } -} -``` - -```gql -mutation RemoveInsightViewFromDashboard( - $input: RemoveInsightViewFromDashboardInput! -) { - removeInsightViewFromDashboard(input: $input) { - dashboard { - id - } - } -} -``` - -Example variables: - -```json -{ - "input": { - "insightViewId": "aW5zaWdodF92aWV3OiIyMkVIR2pXOTFkSzNOanpmM2hyWnU3WDJwMlgi", - "dashboardId": "ZGFzaGJvYXJkOnsiSWRUeXBlIjoiY3VzdG9tIiwiQXJnIjoxNDV9" - } -} -``` diff --git a/docs/api/graphql/managing-search-contexts-with-api.mdx b/docs/api/graphql/managing-search-contexts-with-api.mdx deleted file mode 100644 index 1734ea750..000000000 --- a/docs/api/graphql/managing-search-contexts-with-api.mdx +++ /dev/null @@ -1,195 +0,0 @@ -# Managing search contexts with the API - -Learn how to manage [search contexts](/code-search/working/search-contexts) on private Sourcegraph instances with the API. If you haven't used the API before, learn more about [the GraphQL API and how to use it](/api/graphql/). - -## Prerequisites - -- Search contexts and search context management are [enabled in global settings](/code-search/features#search-contexts). - -### Permissions and visibility overview - -To read and write search contexts through the API you will need appropriate permissions. The permissions are determined based on the individual search context's namespace and its visibility (private or public). - -**Read** permissions (view contents, use in searches): - -- **Public** search contexts are available to all users - - On Sourcegraph.com, unauthenticated visitors can also see public search contexts -- **Private** search contexts - - With user namespace: only available to the user - - With organization namespace: only available to users in the organization - - With global (instance-level) namespace: only available to site-admins - -**Write** permissions (create, update, delete): - -- Site-admins have write access to all public search contexts and all global (instance-level) search contexts -- A regular user has write access to its search contexts and its organization's search contexts - -## Create a context - -Below is a GraphQL query that creates a new search context. To populate the `searchContext.namespace` property, you will have to query the API beforehand to retrieve the user or organization ID. - -If `searchContext.namespace` is not specified or `null` then the context is created in the global (instance-level) namespace. -To specify search context repositories you will need their ids. Similar to the `namespace` property you will need to retrieve them from the API before creating the context. - -```gql -mutation CreateSearchContext( - $searchContext: SearchContextInput! - $repositories: [SearchContextRepositoryRevisionsInput!]! -) { - createSearchContext( - searchContext: $searchContext - repositories: $repositories - ) { - id - spec - } -} -``` - -Example variables: - -```json -{ - "searchContext": { - "name": "MySearchContext", - "description": "A description of my search context", - "namespace": "user-id", - "public": true - }, - "repositories": [ - { - "repositoryID": "repo-id", - "revisions": ["main", "branch-1"] - } - ] -} -``` - -## Read a single context - -Below is a GraphQL query that fetches a single search context by ID. - -```gql -query ReadSearchContext($id: ID!) { - node(id: $id) { - ... on SearchContext { - id - spec - } - } -} -``` - -Example variables: - -```json -{"id": "search-context-id"} -``` - -## List available contexts - -Below is a GraphQL query that fetches all available search contexts and allows filtering by multiple parameters. The `namespaces` array allows filtering by one or multiple namespace ids (user or organization id). -To include global (instance-level) contexts you can specify `null` as one of the ids. If the `namespaces` array is omitted or empty, then no filtering by namespace is applied and all available contexts are returned. -The `query` parameter allows filtering by search context spec. - -```gql -query ListSearchContexts( - $first: Int! - $after: String - $query: String - $namespaces: [ID] - $orderBy: SearchContextsOrderBy - $descending: Boolean -) { - searchContexts( - first: $first - after: $after - query: $query - namespaces: $namespaces - orderBy: $orderBy - descending: $descending - ) { - nodes { - id - spec - } - pageInfo { - hasNextPage - endCursor - } - totalCount - } -} -``` - -Example variables: - -Query with these variables will return the first 50 search contexts ordered by search context `updatedAt` timestamp ascending. The results will be filtered to include only -global contexts (`null`), `organization1` contexts (`organization1-id`), and `user1` contexts (`user1-id`). - -```json -{ - "first": 50, - "namespaces": [null, "organization1-id", "user1-id"], - "orderBy": "SEARCH_CONTEXT_UPDATED_AT" -} -``` - -## Update a context - -Below is a GraphQL query that updates an existing search context. You cannot update a search context namespace. -You have to provide the full search context and all repositories with revisions you want to keep on each update. - -```gql -mutation UpdateSearchContext( - $id: ID! - $searchContext: SearchContextEditInput! - $repositories: [SearchContextRepositoryRevisionsInput!]! -) { - updateSearchContext( - id: $id - searchContext: $searchContext - repositories: $repositories - ) { - id - spec - } -} -``` - -Example variables: - -```json -{ - "id": "search-context-id-to-update", - "searchContext": { - "name": "MyUpdatedSearchContext", - "description": "An updated description of my search context", - "public": false - }, - "repositories": [ - { - "repositoryID": "repo-id", - "revisions": ["main", "branch-1", "branch-2"] - } - ] -} -``` - -## Delete a context - -Below is a GraphQL query that deletes a search context by ID. - -```gql -mutation DeleteSearchContext($id: ID!) { - deleteSearchContext(id: $id) { - alwaysNil - } -} -``` - -Example variables: - -```json -{"id": "search-context-id-to-delete"} -``` diff --git a/docs/api/graphql/search.mdx b/docs/api/graphql/search.mdx deleted file mode 100644 index d55f71f8c..000000000 --- a/docs/api/graphql/search.mdx +++ /dev/null @@ -1,26 +0,0 @@ -# Sourcegraph search GraphQL API - -This page adds some additional depth and context to Sourcegraph's search GraphQL API. - -## Search Pagination in GraphQL API - -Sourcegraph does not support pagination for search results when using the GraphQL search API due to the dynamic nature of search queries. The order of results may vary each time you run a search, making traditional pagination unreliable. - -Instead, we recommend using the [stream search API](/api/stream-api/) for scenarios where you need to run a long query and receive continuous results. This enables you to execute long-running queries. - -## `src` CLI usage (easier than GraphQL) - -Putting together a comprehensive GraphQL search query can be difficult. For this reason, we created the [`src` CLI tool](https://sourcegraph.com/github.com/sourcegraph/src-cli) which allows you to simply run a search query and get the JSON results without constructing the GraphQL query: - -``` -export SRC_ENDPOINT=https://sourcegraph.com -export SRC_ACCESS_TOKEN=secret - -src search -json 'repo:pallets/flask error' -``` - -You can then consume the JSON output directly, add `--get-curl` to get a `curl` execution line, and more. See [the `src` CLI tool](https://sourcegraph.com/github.com/sourcegraph/src-cli) for more details. - -## Incomplete search results when using Graphql - -Sometimes, users find discrepancies in the number of results returned on UI compared to Graphql for the same query. This can be avoided by adding `"count:all" ` to the query used in Graphql. This ensures all the matching records are being fetched via Graphql. diff --git a/docs/api/index.mdx b/docs/api/index.mdx index 34b1004d4..ddf8b2742 100644 --- a/docs/api/index.mdx +++ b/docs/api/index.mdx @@ -1,8 +1,31 @@ -# API Documentation +# Sourcegraph API -Sourcegraph exposes the following APIs: +Starting in [Sourcegraph 7.0, a new versioned external API is being introduced for custom integrations](https://sourcegraph.com/changelog/sourcegraph-api). The currently available API surface can be seen in `/api-reference` (e.g. `https://sourcegraph.example.com/api-reference`). From this page, integrators can view the available operations and download the OpenAPI schema. We are committed to supporting integrations built on top of these new APIs with backwards compatibility and migration assistance for breaking changes. -- [Sourcegraph GraphQL API](/api/graphql/), for accessing data stored or computed by Sourcegraph -- [Sourcegraph Analytics API](/analytics/api/), for accessing your Sourcegraph Analytics data -- [Sourcegraph Stream API](/api/stream-api/), for consuming search results as a stream of events -- [Sourcegraph MCP Server](/api/mcp/), for connecting AI agents and applications to Sourcegraph's code search capabilities + + The new Sourcegraph API is a work in progress, and capabilities are + gradually being ported over. If you have an integration you'd like to build + that is not currently served by the new Sourcegraph API, please reach out at + support@sourcegraph.com. + + +For specific types of integrations, Sourcegraph also offers the following APIs: + +- [Sourcegraph streaming search API](/api/stream-api/), for consuming search results as a stream of events +- [Sourcegraph MCP server](/api/mcp/), for connecting AI agents and applications to Sourcegraph's code search capabilities +- [Sourcegraph Analytics API](/analytics/api/), for accessing your Sourcegraph Analytics data + +For diagnostics use cases, the [Sourcegraph GraphQL debug API](/api/graphql/) is also available without any compatibility guarauntees. + + +

The Sourcegraph GraphQL API has historically been an internal interface + without formal compatibility guarantees. For external integrations, + Sourcegraph 7.0 introduces a new, supported API at `/api-reference`. + The GraphQL API remains available, but we recommend migrating to the + new API for a stable integration experience.

+ +

If you have a + use case that is not currently served by the new Sourcegraph API, please + reach out at support@sourcegraph.com.

+ +
diff --git a/docs/api/stream-api/index.mdx b/docs/api/stream-api/index.mdx index 32c3d16cb..86261c829 100644 --- a/docs/api/stream-api/index.mdx +++ b/docs/api/stream-api/index.mdx @@ -2,11 +2,10 @@ seoPriority: 1.0 --- -# Sourcegraph Stream API +# Sourcegraph streaming search API -With the Stream API you can consume search results and related metadata as -a stream of events. The Sourcegraph UI calls the Stream API for all interactive searches. -Compared to our [GraphQL API](/api/graphql/), it offers shorter times to first results and +With the streaming search API you can consume search results and related metadata as +a stream of events. The Sourcegraph UI calls the streaming search API for all interactive searches. It offers shorter times to first results and supports running exhaustive searches returning a large volume of results without putting pressure on the backend. diff --git a/docs/code-insights/references/index.mdx b/docs/code-insights/references/index.mdx index e60269b27..f063348db 100644 --- a/docs/code-insights/references/index.mdx +++ b/docs/code-insights/references/index.mdx @@ -6,6 +6,5 @@ The following is a list of reference documents for Code Insights: - [Common reasons code insights may not match search results](/code-insights/references/common-reasons-code-insights-may-not-match-search-results) - [Incomplete data points](/code-insights/references/incomplete-data-points) - [Licensing and limited access](/code-insights/references/license) -- [Managing code insights with the API](/api/graphql/managing-code-insights-with-api) - [Requirements](/code-insights/references/requirements) - [Code Insight repository scope](/code-insights/references/repository-scope) diff --git a/docs/code-search/how-to/create-search-context-graphql.mdx b/docs/code-search/how-to/create-search-context-graphql.mdx deleted file mode 100644 index 1cb153cb2..000000000 --- a/docs/code-search/how-to/create-search-context-graphql.mdx +++ /dev/null @@ -1,112 +0,0 @@ -# How to create a search context with the GraphQL API - -This document will take you through how to create a search context for your user with Sourcegraph's GraphQL API. - -## Prerequisites - -- This document assumes that you have a private Sourcegraph instance -- Assumes you are creating a Private search context with a user namespace which is only available to the user -- For more information on available permissions and ways to alter the following examples, please see [Managing search contexts with api - permissions and visibility overview](/api/graphql/managing-search-contexts-with-api#permissions-and-visibility-overview) - -## Steps to create - -Step 1: Add to global configuration (must be site-admin): - -```json -{ - "experimentalFeatures": { - "showSearchContext": true - } -} -``` - -Step 2: Make sure you have added code hosts: [Add repositories (from code hosts) to Sourcegraph](/admin/repo/add) - -Step 3: Follow the steps to [Generate an access token for GraphQL](/api/graphql#quickstart) if you already haven't - -Step 4: Navigate to the API console on your instance, replacing sourcegraph.example with the correct string for your instance URL. - -- Example: `https://sourcegraph.example.com/api/console` - -Step 5: Query your user namespace id and save the value - -- The name: will be your Sourcegraph instance login name - Example: - -```json -query { - namespaceByName(name: "my_login_name") { - id - } -} -``` - -Step 6: Query your desired repo id and save the value. - -- It should be whatever the URL is for that repo. - Example: - -```json -query { - repository(name: "github.com/org_name/repo_name") { - id - } -} -``` - -Step 7: Take the values from steps 5 and 6 and put them into the example variables from our docs here: - -- [Managing search contexts with API - Create a context](/api/graphql/managing-search-contexts-with-api#create-a-context) - -Run this with no changes: - -```json -mutation CreateSearchContext( - $searchContext: SearchContextInput! - $repositories: [SearchContextRepositoryRevisionsInput!]! -) { - createSearchContext(searchContext: $searchContext, repositories: $repositories) { - id - spec - } -} -``` - -Then in the Query Variables section on the bottom of the GraphQL API page, use this variables example, changing at least the name and description: - -```json -{ - "searchContext": { - "name": "MySearchContext", - "description": "A description of my search context", - "namespace": "user-id-from-step-5", - "public": true - }, - "repositories": [ - { - "repositoryID": "repo-id-from-step-6", - "revisions": ["main", "branch-1"] - } - ] -} -``` - -Step 8: Run the query, that should create a search context and the output will look something like: - -```json -{ - "data": { - "createSearchContext": { - "id": "V2VhcmNoQ29udGV4dDoiQGdpc2VsbGUvTXlTZWFyY2hDb250ZXh0MiI=", - "spec": "@my_login_name/MySearchContext" - } - } -} -``` - -Step 9: Go to the main search page and you should see the new Search context as part of the search bar! - -## Further resources - -- [Using and creating search contexts](/code-search/working/search-contexts) -- [Sourcegraph - Administration Config](/admin) diff --git a/docs/code-search/how-to/index.mdx b/docs/code-search/how-to/index.mdx index e6e4c49dd..3b6d68f18 100644 --- a/docs/code-search/how-to/index.mdx +++ b/docs/code-search/how-to/index.mdx @@ -1,4 +1,4 @@ # How-to guides - [Switch from Oracle OpenGrok to Sourcegraph](/code-search/how-to/opengrok) -- [How to create a search context with the GraphQL API](/code-search/how-to/create-search-context-graphql) +- [How to create a search context with the GraphQL API](/api/graphql) diff --git a/docs/code-search/working/search-contexts.mdx b/docs/code-search/working/search-contexts.mdx index 397487988..6e5bbc766 100644 --- a/docs/code-search/working/search-contexts.mdx +++ b/docs/code-search/working/search-contexts.mdx @@ -139,7 +139,3 @@ If you're an admin, to enable this feature for all users set `experimentalFeatur ### Creating search contexts from search results You can now create new search contexts right from the search results page. Once you've enabled query-based search contexts you'll see a Create context button above the search results. - -## Managing search contexts with the API - -Learn how to [manage search contexts with the GraphQL API](/api/graphql/managing-search-contexts-with-api). diff --git a/docs/deep-search/api.mdx b/docs/deep-search/api.mdx deleted file mode 100644 index 602961421..000000000 --- a/docs/deep-search/api.mdx +++ /dev/null @@ -1,299 +0,0 @@ ---- -preview: true ---- - -# Deep Search API - -

- Programmatic access to Sourcegraph's agentic code search capabilities. -

- - - The **experimental** Deep Search API is available in Sourcegraph version - 6.7+. This API allows you to programmatically create and manage Deep Search - conversations. - - We are looking for feedback on the API and its usage. Please let us know your - thoughts and suggestions. - - - -The Deep Search API provides programmatic access to Sourcegraph's agentic code search capabilities. Use this API to integrate Deep Search into your development workflows, build custom tools, or automate code analysis tasks. - -## Authentication - -All API requests require authentication using a Sourcegraph access token. You can generate an access token from your user settings. - -```bash -# Set your access token -export SRC_ACCESS_TOKEN="your-token-here" -``` - -## Base URL - -All Deep Search API endpoints are prefixed with `/.api/deepsearch/v1` and require the `X-Requested-With` header to identify the client: - -```bash -curl 'https://your-sourcegraph-instance.com/.api/deepsearch/v1' \ - -H 'Accept: application/json' \ - -H 'Content-Type: application/json' \ - -H "Authorization: token $SRC_ACCESS_TOKEN" \ - -H 'X-Requested-With: my-client 1.0.0' -``` - - - The `X-Requested-With` header is required and should include your client - name and version number. - - -## Creating conversations - -All Deep Search conversations are processed asynchronously. When you create a conversation, the API will return immediately with a conversation object containing the question in `processing` status. - -Create a new Deep Search conversation by asking a question: - -```bash -curl 'https://your-sourcegraph-instance.com/.api/deepsearch/v1' \ - -H 'Accept: application/json' \ - -H 'Content-Type: application/json' \ - -H "Authorization: token $SRC_ACCESS_TOKEN" \ - -H 'X-Requested-With: my-client 1.0.0' \ - -d '{"question":"Does github.com/sourcegraph/sourcegraph have a README?"}' -``` - -The API returns a conversation object with the question initially in `processing` status: - -```json -{ - "id": 140, - "questions": [ - { - "id": 163, - "conversation_id": 140, - "question": "Does github.com/sourcegraph/sourcegraph have a README?", - "created_at": "2025-09-24T08:14:06Z", - "updated_at": "2025-09-24T08:14:06Z", - "status": "processing", - "turns": [ - { - "reasoning": "Does github.com/sourcegraph/sourcegraph have a README?", - "timestamp": 1758701646, - "role": "user" - } - ], - "stats": { - "time_millis": 0, - "tool_calls": 0, - "total_input_tokens": 0, - "cached_tokens": 0, - "cache_creation_input_tokens": 0, - "prompt_tokens": 0, - "completion_tokens": 0, - "total_tokens": 0, - "credits": 0 - }, - "suggested_followups": null - } - ], - "created_at": "2025-09-24T08:14:06Z", - "updated_at": "2025-09-24T08:14:06Z", - "user_id": 1, - "read_token": "caebeb05-7755-4f89-834f-e3ee4a6acb25", - "share_url": "https://your-sourcegraph-instance.com/deepsearch/caebeb05-7755-4f89-834f-e3ee4a6acb25" -} -``` - -To get the completed answer, poll the conversation endpoint: - -```bash -curl 'https://your-sourcegraph-instance.com/.api/deepsearch/v1/140' \ - -H 'Accept: application/json' \ - -H "Authorization: token $SRC_ACCESS_TOKEN" \ - -H 'X-Requested-With: my-client 1.0.0' -``` - -Once processing is complete, the response will include the answer: - -```json -{ - "id": 140, - "questions": [ - { - "id": 163, - "conversation_id": 140, - "question": "Does github.com/sourcegraph/sourcegraph have a README?", - "created_at": "2025-09-24T08:14:06Z", - "updated_at": "2025-09-24T08:14:15Z", - "status": "completed", - "title": "GitHub README check", - "answer": "Yes, [github.com/sourcegraph/sourcegraph](https://sourcegraph.test:3443/github.com/sourcegraph/sourcegraph) has a [README.md](https://sourcegraph.test:3443/github.com/sourcegraph/sourcegraph/-/blob/README.md) file in the root directory.", - "sources": [ - { - "type": "Repository", - "link": "/github.com/sourcegraph/sourcegraph", - "label": "github.com/sourcegraph/sourcegraph" - } - ], - "stats": { - "time_millis": 6369, - "tool_calls": 1, - "total_input_tokens": 13632, - "cached_tokens": 12359, - "cache_creation_input_tokens": 13625, - "prompt_tokens": 11, - "completion_tokens": 156, - "total_tokens": 13694, - "credits": 2 - }, - "suggested_followups": [ - "What information does the README.md file contain?", - "Are there other important documentation files in the repository?" - ] - } - ], - "created_at": "2025-09-24T08:14:06Z", - "updated_at": "2025-09-24T08:14:15Z", - "user_id": 1, - "read_token": "caebeb05-7755-4f89-834f-e3ee4a6acb25", - "viewer": {"is_owner": true}, - "quota_usage": { - "total_quota": 0, - "quota_limit": -1, - "reset_time": "2025-10-01T00:00:00Z" - }, - "share_url": "https://sourcegraph.test:3443/deepsearch/caebeb05-7755-4f89-834f-e3ee4a6acb25" -} -``` - -## Adding follow-up questions - -Continue a conversation by adding follow-up questions. The `conversation_id` in the request body must match the conversation ID in the URL: - -```bash -curl 'https://your-sourcegraph-instance.com/.api/deepsearch/v1/140/questions' \ - -H 'Accept: application/json' \ - -H 'Content-Type: application/json' \ - -H "Authorization: token $SRC_ACCESS_TOKEN" \ - -H 'X-Requested-With: my-client 1.0.0' \ - -d '{"conversation_id":140,"question":"What does the README file contain?"}' -``` - -## Listing conversations - -Get all your conversations with optional filtering: - -```bash -# List all conversations -curl 'https://your-sourcegraph-instance.com/.api/deepsearch/v1' \ - -H 'Accept: application/json' \ - -H "Authorization: token $SRC_ACCESS_TOKEN" \ - -H 'X-Requested-With: my-client 1.0.0' - -# List with pagination and filtering -curl 'https://your-sourcegraph-instance.com/.api/deepsearch/v1?page_first=10&sort=created_at' \ - -H 'Accept: application/json' \ - -H "Authorization: token $SRC_ACCESS_TOKEN" \ - -H 'X-Requested-With: my-client 1.0.0' -``` - -Available query parameters: - -- `filter_id` - Filter by conversation ID -- `filter_user_id` - Filter by user ID -- `filter_read_token` - Access conversations via read token (requires sharing to be enabled) -- `filter_is_starred` - Filter by starred conversations (`true` or `false`) -- `page_first` - Number of results per page -- `page_after` - Pagination cursor -- `sort` - Sort order: `id`, `-id`, `created_at`, `-created_at`, `updated_at`, `-updated_at` (default: `-updated_at`) - -## Managing conversations - -**Get a specific conversation:** - -```bash -curl 'https://your-sourcegraph-instance.com/.api/deepsearch/v1/140' \ - -H 'Accept: application/json' \ - -H "Authorization: token $SRC_ACCESS_TOKEN" \ - -H 'X-Requested-With: my-client 1.0.0' -``` - -**Delete a conversation:** - -```bash -curl 'https://your-sourcegraph-instance.com/.api/deepsearch/v1/140' \ - -X DELETE \ - -H "Authorization: token $SRC_ACCESS_TOKEN" \ - -H 'X-Requested-With: my-client 1.0.0' -``` - -**Cancel a processing question:** - -```bash -curl 'https://your-sourcegraph-instance.com/.api/deepsearch/v1/140/questions/163/cancel' \ - -X POST \ - -H 'Accept: application/json' \ - -H "Authorization: token $SRC_ACCESS_TOKEN" \ - -H 'X-Requested-With: my-client 1.0.0' -``` - -## Accessing conversations via read tokens - -You can retrieve a conversation using its read token with the `filter_read_token` query parameter. - -Each conversation includes a `read_token` field that allows accessing the conversation. -The read token is also visible in the web client URL and in the `share_url` field. -Note that you can only access other users' conversations via read tokens if sharing is enabled on your Sourcegraph instance. - -```bash -curl 'https://your-sourcegraph-instance.com/.api/deepsearch/v1?filter_read_token=5d9aa113-c511-4687-8b71-dbc2dd733c03' \ - -H 'Accept: application/json' \ - -H "Authorization: token $SRC_ACCESS_TOKEN" \ - -H 'X-Requested-With: my-client 1.0.0' -``` - -## Response structure - -**Conversation object:** - -- `id` - Unique conversation identifier -- `questions` - Array of questions and answers -- `created_at`/`updated_at` - Timestamps -- `user_id` - Owner user ID -- `read_token` - Token for sharing access -- `share_url` - URL for sharing the conversation - -**Question object:** - -- `id` - Unique question identifier -- `question` - The original question text -- `status` - Processing status: `pending`, `processing`, `completed` -- `error` - Error details if the question processing encountered an issue -- `title` - Generated title for the question -- `answer` - The AI-generated answer (when completed) -- `sources` - Array of sources used to generate the answer -- `suggested_followups` - Suggested follow-up questions - -If a question fails to process, the `status` will be `completed` and the `error` field will be populated, for example: - -```json -{ - "status": "completed", - "error": { - "title": "Token limit reached", - "kind": "TokenLimitExceeded", - "message": "The search exceeded the maximum token limit...", - "details": "Additional context about the error" - } -} -``` - -## Error handling - -The API returns standard HTTP status codes with descriptive error messages: - -- `200` - Success -- `202` - Accepted (for async requests) -- `400` - Bad Request -- `401` - Unauthorized -- `404` - Not Found -- `500` - Internal Server Error diff --git a/docs/deep-search/index.mdx b/docs/deep-search/index.mdx index a64129770..34c7bfcde 100644 --- a/docs/deep-search/index.mdx +++ b/docs/deep-search/index.mdx @@ -111,6 +111,10 @@ Sourcegraph administrators can configure entitlements for their users, for examp To learn more, refer to [Entitlements](/admin/entitlements) and the [Deep Search entitlements changelog post](https://sourcegraph.com/changelog/deep-search-entitlements). +## Integrations and APIs + +Integrations can use [Sourcegraph APIs](/api), such as the new Sourcegraph API and MCP server, to interact with Deep Search. + ## Architecture Learn about how Deep Search fits into Sourcegraph in the [architecture overview](/admin/architecture#deep-search). diff --git a/docs/getting-started/github-vs-sourcegraph.mdx b/docs/getting-started/github-vs-sourcegraph.mdx index 107639077..a153aac76 100644 --- a/docs/getting-started/github-vs-sourcegraph.mdx +++ b/docs/getting-started/github-vs-sourcegraph.mdx @@ -308,7 +308,7 @@ Sourcegraph’s [editor integrations](/integration/editor) let you search and na ### API -GitHub has a REST API for web clients, but it is not yet documented. On the other hand, Sourcegraph offers different APIs that help you access code-related data available on a Sourcegraph instance. The [GraphQL API](/api/graphql) accesses data stored and computed by Sourcegraph. This API can [fetch](/api/graphql/examples) file contents without cloning a repository or search for a new API and determine all of the repositories that haven’t migrated to it yet. The [Stream API](/api/stream-api) supports consuming search results as a stream of events and it can be used to [search](/api/stream-api#example-curl) over all indexed repositories. Lastly, use the [interactive API explorer](https://sourcegraph.com/api/console#%7B%22query%22%3A%22%23%20Type%20queries%20here%2C%20with%20completion%2C%20validation%2C%20and%20hovers.%5Cn%23%5Cn%23%20Here's%20an%20example%20query%20to%20get%20you%20started%3A%5Cn%5Cnquery%20%7B%5Cn%20%20currentUser%20%7B%5Cn%20%20%20%20username%5Cn%20%20%7D%5Cn%20%20repositories%28first%3A%201%29%20%7B%5Cn%20%20%20%20nodes%20%7B%5Cn%20%20%20%20%20%20name%5Cn%20%20%20%20%7D%5Cn%20%20%7D%5Cn%7D%5Cn%22%7D) to build and test your API queries. +GitHub has a REST API for web clients, but it is not yet documented. On the other hand, Sourcegraph offers different APIs that help you access code-related data available on a Sourcegraph instance. The [GraphQL API](/api/graphql) accesses data stored and computed by Sourcegraph. This API can [fetch](/api/graphql) file contents without cloning a repository or search for a new API and determine all of the repositories that haven’t migrated to it yet. The [Stream API](/api/stream-api) supports consuming search results as a stream of events and it can be used to [search](/api/stream-api#example-curl) over all indexed repositories. Lastly, use the [interactive API explorer](https://sourcegraph.com/api/console#%7B%22query%22%3A%22%23%20Type%20queries%20here%2C%20with%20completion%2C%20validation%2C%20and%20hovers.%5Cn%23%5Cn%23%20Here's%20an%20example%20query%20to%20get%20you%20started%3A%5Cn%5Cnquery%20%7B%5Cn%20%20currentUser%20%7B%5Cn%20%20%20%20username%5Cn%20%20%7D%5Cn%20%20repositories%28first%3A%201%29%20%7B%5Cn%20%20%20%20nodes%20%7B%5Cn%20%20%20%20%20%20name%5Cn%20%20%20%20%7D%5Cn%20%20%7D%5Cn%7D%5Cn%22%7D) to build and test your API queries. | **Features** | **GitHub** | **Sourcegraph** | | --------------------------------------- | ------------------------------------------------------------------------------------------------ | ---------------------------------------------- | diff --git a/docs/tutorials/index.mdx b/docs/tutorials/index.mdx index 113690eef..cc0321b6b 100644 --- a/docs/tutorials/index.mdx +++ b/docs/tutorials/index.mdx @@ -108,11 +108,7 @@ Full [search query syntax](/code-search/queries). ## The Sourcegraph API -| Topic | Content Type | Description | -| ------------------------------------------------------------------ | ------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| [GraphQL API](/api/graphql/) | Reference | The Sourcegraph GraphQL API is a rich API that exposes data related to the code available on a Sourcegraph instance. | -| [GraphQL Examples](/api/graphql/managing-search-contexts-with-api) | Reference | This page demonstrates a few example GraphQL queries for the Sourcegraph GraphQL API. | -| [Streaming API](/api/stream-api/) | Reference | With the Stream API you can consume search results and related metadata as a stream of events. The Sourcegraph UI calls the Stream API for all interactive searches. Compared to our GraphQL API, it offers shorter times to first results and supports running exhaustive searches returning a large volume of results without putting pressure on the backend. | +See [the Sourcegraph API page](/api). ## Search Notebooks diff --git a/src/data/navigation.ts b/src/data/navigation.ts index 4254dabe2..a802b9fe9 100644 --- a/src/data/navigation.ts +++ b/src/data/navigation.ts @@ -411,7 +411,7 @@ export const navigation: NavigationItem[] = [ { title: 'CODEOWNERS Format', href: '/code-ownership/codeowners-format' - }, + } ] }, { @@ -464,14 +464,10 @@ export const navigation: NavigationItem[] = [ title: 'APIs', href: '/api/graphql', sections: [ - {title: 'GraphQL API', href: '/api/graphql'}, - {title: 'Stream API', href: '/api/stream-api'}, + {title: 'Sourcegraph API', href: '/api'}, + {title: 'Streaming search API', href: '/api/stream-api'}, {title: 'Analytics API', href: '/analytics/api'}, - { - title: 'Deep Search API', - href: '/deep-search/api', - preview: true - } + {title: 'Debug API', href: '/api/graphql'} ] }, { diff --git a/src/data/redirects.ts b/src/data/redirects.ts index 923504a75..564ad1848 100644 --- a/src/data/redirects.ts +++ b/src/data/redirects.ts @@ -6328,7 +6328,8 @@ const redirectsData = [ }, { source: '/admin/updates/docker_compose', - destination: 'https://sourcegraph.com/changelog/self-hosted/docker-compose', + destination: + 'https://sourcegraph.com/changelog/self-hosted/docker-compose', permanent: true }, { @@ -7049,7 +7050,8 @@ const redirectsData = [ }, { source: '/self-hosted/updates/docker_compose', - destination: 'https://sourcegraph.com/changelog/self-hosted/docker-compose', + destination: + 'https://sourcegraph.com/changelog/self-hosted/docker-compose', permanent: true }, { @@ -7082,7 +7084,8 @@ const redirectsData = [ // Self-hosted update pages moved to /changelog/self-hosted/ { source: '/self-hosted/updates/docker-compose', - destination: 'https://sourcegraph.com/changelog/self-hosted/docker-compose', + destination: + 'https://sourcegraph.com/changelog/self-hosted/docker-compose', permanent: true }, { @@ -7099,27 +7102,57 @@ const redirectsData = [ { source: '/own', destination: '/code-ownership', - permanant: true, + permanant: true }, { source: '/own/assigned-ownership', destination: '/code-ownership', - permanant: true, + permanant: true }, { source: '/own/configuration-reference', destination: '/code-ownership', - permanant: true, + permanant: true }, { source: '/own/codeowners-ingestion', destination: '/code-ownership', - permanant: true, + permanant: true }, { source: '/own/codeowners-format', destination: '/code-ownership/codeowners-format', - permanant: true, + permanant: true + }, + { + source: '/api/graphql/examples', + destination: '/api/graphql', + permanent: true + }, + { + source: '/api/graphql/search', + destination: '/api/stream-api', + permanent: true + }, + { + source: '/api/graphql/managing-code-insights-with-api', + destination: '/api/graphql', + permanent: true + }, + { + source: '/api/graphql/managing-search-contexts-with-api', + destination: '/api/graphql', + permanent: true + }, + { + source: '/code-search/how-to/create-search-context-graphql', + destination: '/api', + permanent: true + }, + { + source: '/deep-search/api', + destination: '/api', + permanent: true } ]; From f3155710a2772ff16c134ce469af51118fe5cda0 Mon Sep 17 00:00:00 2001 From: Enrique Gonzalez Date: Wed, 25 Feb 2026 15:03:01 -0800 Subject: [PATCH 018/217] docs: move latest version to 7.0 (#1641) Will merge once 7.0 is released everywhere --- docs.config.js | 2 +- docs/legacy.mdx | 1 + src/data/versions.ts | 4 ++++ 3 files changed, 6 insertions(+), 1 deletion(-) diff --git a/docs.config.js b/docs.config.js index b9caea6d3..a5452538d 100644 --- a/docs.config.js +++ b/docs.config.js @@ -1,5 +1,5 @@ const config = { - DOCS_LATEST_VERSION: '6.12' + DOCS_LATEST_VERSION: '7.0' }; module.exports = config; diff --git a/docs/legacy.mdx b/docs/legacy.mdx index 0add3931d..f1cd8c725 100644 --- a/docs/legacy.mdx +++ b/docs/legacy.mdx @@ -6,6 +6,7 @@ +- [6.12](https://6.12.sourcegraph.com) - [6.11](https://6.11.sourcegraph.com) - [6.10](https://6.10.sourcegraph.com) - [6.9](https://6.9.sourcegraph.com) diff --git a/src/data/versions.ts b/src/data/versions.ts index 05b71e7fb..6b6730373 100644 --- a/src/data/versions.ts +++ b/src/data/versions.ts @@ -13,6 +13,10 @@ export const versions: VersionI[] = [ label: 'latest', url: '/docs' }, + { + name: 'v6.12', + url: 'https://6.12.sourcegraph.com' + }, { name: 'v6.11', url: 'https://6.11.sourcegraph.com' From be71dfbd6c975aea5e62d2362f50bf8e61e3422d Mon Sep 17 00:00:00 2001 From: Keegan Carruthers-Smith Date: Thu, 26 Feb 2026 01:50:29 +0200 Subject: [PATCH 019/217] update MCP docs for 7.0 GA release (#1558) - Remove experimental callout - MCP is now generally available - DCR is now enabled by default, update docs accordingly - Add new 'mcp' scope documentation for OAuth and access tokens - Add 'Disabling DCR' section for admins who need to turn it off - Add upgrade notes for users migrating from 7.0 - Update mcp-remote example to use 'mcp' scope instead of 'user:all' --------- Co-authored-by: Amp --- docs/api/mcp/index.mdx | 69 ++++++++++++++++++++++-------------------- 1 file changed, 37 insertions(+), 32 deletions(-) diff --git a/docs/api/mcp/index.mdx b/docs/api/mcp/index.mdx index b94d192a7..3b801c3c2 100644 --- a/docs/api/mcp/index.mdx +++ b/docs/api/mcp/index.mdx @@ -13,12 +13,6 @@ seoPriority: 1.0 Supported on [Enterprise](/pricing/plans/enterprise) plans. - - This feature is - [experimental](/admin/beta-and-experimental-features#experimental-features) - and might change or be removed in the future. - - The Sourcegraph Model Context Protocol (MCP) Server provides AI agents and applications with programmatic access to your Sourcegraph instance's code search, navigation, and analysis capabilities through a standardized interface. ## Server Endpoints @@ -36,44 +30,35 @@ Example URL: https://your-sourcegraph-instance.com/.api/mcp ``` -## Authentication - -The Sourcegraph MCP server supports two authentication methods: - -### OAuth 2.0 with Dynamic Client Registration - -Sourcegraph supports MCP spec-compliant OAuth with Dynamic Client Registration ([RFC 7591](https://datatracker.ietf.org/doc/html/rfc7591)), allowing AI agents to authenticate without pre-configured client IDs. - -#### Enabling Dynamic Client Registration +## Getting Started -Enable this feature by setting the following site configuration: - -```json -{ - "auth.idpDynamicClientRegistrationEnabled": true -} -``` - -Once enabled, MCP clients that support OAuth can authenticate automatically. For example, for [Amp](https://ampcode.com/), you can run: +MCP clients that support OAuth can connect directly—just point them at your Sourcegraph instance and authenticate through your browser: +**[Amp](https://ampcode.com/)** ```bash amp mcp add sg https://sourcegraph.example.com/.api/mcp ``` -For [Claude Code](https://www.claude.com/product/claude-code), you can run: - +**[Claude Code](https://www.claude.com/product/claude-code)** ```bash claude mcp add --transport http sg https://sourcegraph.example.com/.api/mcp ``` +This works similarly for other MCP-compatible agents. See [Client Integration](#client-integration) for detailed setup instructions for each client. + +## Authentication + +The MCP server supports OAuth 2.0 and access token authentication. -This works similarly for other MCP-compatible agents. +### OAuth 2.0 -#### Manual OAuth Setup +Sourcegraph implements Dynamic Client Registration ([RFC 7591](https://datatracker.ietf.org/doc/html/rfc7591)), so compatible clients can authenticate automatically without pre-configured client IDs. DCR-registered applications are restricted to the `mcp` scope, which limits access to MCP endpoints only. + + If your agent doesn't support Dynamic Client Registration, you can manually create an OAuth application: -1. Create an OAuth application in your Sourcegraph instance following the instructions [here](/admin/oauth-apps#creating-an-oauth-app). (Note: you will need the `user:all` scope) +1. Create an OAuth application in your Sourcegraph instance following the instructions [here](/admin/oauth-apps#creating-an-oauth-app). (Note: you can use the `mcp` scope for MCP-only access, or `user:all` for full access) 2. Use `mcp-remote` as a fallback with the following configuration: ```json @@ -88,7 +73,7 @@ If your agent doesn't support Dynamic Client Registration, you can manually crea "--static-oauth-client-info", "{\"client_id\":\"\"}", "--static-oauth-client-metadata", - "{\"scope\":\"user:all\"}" + "{\"scope\":\"mcp\"}" ] } } @@ -101,14 +86,30 @@ If your agent doesn't support Dynamic Client Registration, you can manually crea -### Authorization Header + + + + +To disable DCR, set the following site configuration: + +```json +{ + "auth.idpDynamicClientRegistrationEnabled": false +} +``` + + + +### Access Tokens -Include your token in the Authorization header: +Alternatively, include an access token in the Authorization header: ``` Authorization: token YOUR_ACCESS_TOKEN ``` +Access tokens can use the `mcp` scope to restrict access to MCP endpoints only. + ## Client Integration The Sourcegraph MCP server can be integrated with various AI tools and IDEs that support the Model Context Protocol. @@ -529,6 +530,10 @@ Find repositories where a contributor has made commits. ### Deep Search + + Admins can disable the `deepsearch` tool on the default and v1 MCP endpoints by setting the environment variable `SRC_MCP_DISABLE_DEEPSEARCH_TOOL=true` on the Sourcegraph instance. This does not affect `deepsearch_read` or the dedicated `/deepsearch` endpoint. This is a temporary measure available in 7.0 and will be replaced by a proper tool allowlist in a future release. + + ### `deepsearch` Create a new Deep Search conversation to answer complex questions about your codebase. From 109e1900970a66a468a0b53dddb31492372b96e2 Mon Sep 17 00:00:00 2001 From: Robert Lin Date: Wed, 25 Feb 2026 16:25:14 -0800 Subject: [PATCH 020/217] deepsearch: bring back legacy API page (#1642) Customer is asking for it and in hindsight, better to have it and add a big warning than delete it so fast, oops --- docs/deep-search/api.mdx | 300 +++++++++++++++++++++++++++++++++++++++ src/data/redirects.ts | 5 - 2 files changed, 300 insertions(+), 5 deletions(-) create mode 100644 docs/deep-search/api.mdx diff --git a/docs/deep-search/api.mdx b/docs/deep-search/api.mdx new file mode 100644 index 000000000..04dfa320f --- /dev/null +++ b/docs/deep-search/api.mdx @@ -0,0 +1,300 @@ +--- +preview: true +--- + +# Deep Search API + + +

+ The **experimental** Deep Search API has been **deprecated** as of + Sourcegraph 7.0. In Sourcegraph 7.0, [a new versioned Sourcegraph API is + being introduced for custom + integrations](https://sourcegraph.com/changelog/sourcegraph-api), + available at `/api-reference` (e.g. + `https://sourcegraph.example.com/api-reference`). This experimental Deep + Search API remains available, but we recommend migrating to the new API + for a stable integration experience. If you need migration assistance, + please reach out at support@sourcegraph.com. +

+

Learn more about the Sourcegraph API [here](/api).

+
+ +The Deep Search API provides programmatic access to Sourcegraph's agentic code search capabilities. Use this API to integrate Deep Search into your development workflows, build custom tools, or automate code analysis tasks. + +## Authentication + +All API requests require authentication using a Sourcegraph access token. You can generate an access token from your user settings. + +```bash +# Set your access token +export SRC_ACCESS_TOKEN="your-token-here" +``` + +## Base URL + +All Deep Search API endpoints are prefixed with `/.api/deepsearch/v1` and require the `X-Requested-With` header to identify the client: + +```bash +curl 'https://your-sourcegraph-instance.com/.api/deepsearch/v1' \ + -H 'Accept: application/json' \ + -H 'Content-Type: application/json' \ + -H "Authorization: token $SRC_ACCESS_TOKEN" \ + -H 'X-Requested-With: my-client 1.0.0' +``` + + + The `X-Requested-With` header is required and should include your client + name and version number. + + +## Creating conversations + +All Deep Search conversations are processed asynchronously. When you create a conversation, the API will return immediately with a conversation object containing the question in `processing` status. + +Create a new Deep Search conversation by asking a question: + +```bash +curl 'https://your-sourcegraph-instance.com/.api/deepsearch/v1' \ + -H 'Accept: application/json' \ + -H 'Content-Type: application/json' \ + -H "Authorization: token $SRC_ACCESS_TOKEN" \ + -H 'X-Requested-With: my-client 1.0.0' \ + -d '{"question":"Does github.com/sourcegraph/sourcegraph have a README?"}' +``` + +The API returns a conversation object with the question initially in `processing` status: + +```json +{ + "id": 140, + "questions": [ + { + "id": 163, + "conversation_id": 140, + "question": "Does github.com/sourcegraph/sourcegraph have a README?", + "created_at": "2025-09-24T08:14:06Z", + "updated_at": "2025-09-24T08:14:06Z", + "status": "processing", + "turns": [ + { + "reasoning": "Does github.com/sourcegraph/sourcegraph have a README?", + "timestamp": 1758701646, + "role": "user" + } + ], + "stats": { + "time_millis": 0, + "tool_calls": 0, + "total_input_tokens": 0, + "cached_tokens": 0, + "cache_creation_input_tokens": 0, + "prompt_tokens": 0, + "completion_tokens": 0, + "total_tokens": 0, + "credits": 0 + }, + "suggested_followups": null + } + ], + "created_at": "2025-09-24T08:14:06Z", + "updated_at": "2025-09-24T08:14:06Z", + "user_id": 1, + "read_token": "caebeb05-7755-4f89-834f-e3ee4a6acb25", + "share_url": "https://your-sourcegraph-instance.com/deepsearch/caebeb05-7755-4f89-834f-e3ee4a6acb25" +} +``` + +To get the completed answer, poll the conversation endpoint: + +```bash +curl 'https://your-sourcegraph-instance.com/.api/deepsearch/v1/140' \ + -H 'Accept: application/json' \ + -H "Authorization: token $SRC_ACCESS_TOKEN" \ + -H 'X-Requested-With: my-client 1.0.0' +``` + +Once processing is complete, the response will include the answer: + +```json +{ + "id": 140, + "questions": [ + { + "id": 163, + "conversation_id": 140, + "question": "Does github.com/sourcegraph/sourcegraph have a README?", + "created_at": "2025-09-24T08:14:06Z", + "updated_at": "2025-09-24T08:14:15Z", + "status": "completed", + "title": "GitHub README check", + "answer": "Yes, [github.com/sourcegraph/sourcegraph](https://sourcegraph.test:3443/github.com/sourcegraph/sourcegraph) has a [README.md](https://sourcegraph.test:3443/github.com/sourcegraph/sourcegraph/-/blob/README.md) file in the root directory.", + "sources": [ + { + "type": "Repository", + "link": "/github.com/sourcegraph/sourcegraph", + "label": "github.com/sourcegraph/sourcegraph" + } + ], + "stats": { + "time_millis": 6369, + "tool_calls": 1, + "total_input_tokens": 13632, + "cached_tokens": 12359, + "cache_creation_input_tokens": 13625, + "prompt_tokens": 11, + "completion_tokens": 156, + "total_tokens": 13694, + "credits": 2 + }, + "suggested_followups": [ + "What information does the README.md file contain?", + "Are there other important documentation files in the repository?" + ] + } + ], + "created_at": "2025-09-24T08:14:06Z", + "updated_at": "2025-09-24T08:14:15Z", + "user_id": 1, + "read_token": "caebeb05-7755-4f89-834f-e3ee4a6acb25", + "viewer": {"is_owner": true}, + "quota_usage": { + "total_quota": 0, + "quota_limit": -1, + "reset_time": "2025-10-01T00:00:00Z" + }, + "share_url": "https://sourcegraph.test:3443/deepsearch/caebeb05-7755-4f89-834f-e3ee4a6acb25" +} +``` + +## Adding follow-up questions + +Continue a conversation by adding follow-up questions. The `conversation_id` in the request body must match the conversation ID in the URL: + +```bash +curl 'https://your-sourcegraph-instance.com/.api/deepsearch/v1/140/questions' \ + -H 'Accept: application/json' \ + -H 'Content-Type: application/json' \ + -H "Authorization: token $SRC_ACCESS_TOKEN" \ + -H 'X-Requested-With: my-client 1.0.0' \ + -d '{"conversation_id":140,"question":"What does the README file contain?"}' +``` + +## Listing conversations + +Get all your conversations with optional filtering: + +```bash +# List all conversations +curl 'https://your-sourcegraph-instance.com/.api/deepsearch/v1' \ + -H 'Accept: application/json' \ + -H "Authorization: token $SRC_ACCESS_TOKEN" \ + -H 'X-Requested-With: my-client 1.0.0' + +# List with pagination and filtering +curl 'https://your-sourcegraph-instance.com/.api/deepsearch/v1?page_first=10&sort=created_at' \ + -H 'Accept: application/json' \ + -H "Authorization: token $SRC_ACCESS_TOKEN" \ + -H 'X-Requested-With: my-client 1.0.0' +``` + +Available query parameters: + +- `filter_id` - Filter by conversation ID +- `filter_user_id` - Filter by user ID +- `filter_read_token` - Access conversations via read token (requires sharing to be enabled) +- `filter_is_starred` - Filter by starred conversations (`true` or `false`) +- `page_first` - Number of results per page +- `page_after` - Pagination cursor +- `sort` - Sort order: `id`, `-id`, `created_at`, `-created_at`, `updated_at`, `-updated_at` (default: `-updated_at`) + +## Managing conversations + +**Get a specific conversation:** + +```bash +curl 'https://your-sourcegraph-instance.com/.api/deepsearch/v1/140' \ + -H 'Accept: application/json' \ + -H "Authorization: token $SRC_ACCESS_TOKEN" \ + -H 'X-Requested-With: my-client 1.0.0' +``` + +**Delete a conversation:** + +```bash +curl 'https://your-sourcegraph-instance.com/.api/deepsearch/v1/140' \ + -X DELETE \ + -H "Authorization: token $SRC_ACCESS_TOKEN" \ + -H 'X-Requested-With: my-client 1.0.0' +``` + +**Cancel a processing question:** + +```bash +curl 'https://your-sourcegraph-instance.com/.api/deepsearch/v1/140/questions/163/cancel' \ + -X POST \ + -H 'Accept: application/json' \ + -H "Authorization: token $SRC_ACCESS_TOKEN" \ + -H 'X-Requested-With: my-client 1.0.0' +``` + +## Accessing conversations via read tokens + +You can retrieve a conversation using its read token with the `filter_read_token` query parameter. + +Each conversation includes a `read_token` field that allows accessing the conversation. +The read token is also visible in the web client URL and in the `share_url` field. +Note that you can only access other users' conversations via read tokens if sharing is enabled on your Sourcegraph instance. + +```bash +curl 'https://your-sourcegraph-instance.com/.api/deepsearch/v1?filter_read_token=5d9aa113-c511-4687-8b71-dbc2dd733c03' \ + -H 'Accept: application/json' \ + -H "Authorization: token $SRC_ACCESS_TOKEN" \ + -H 'X-Requested-With: my-client 1.0.0' +``` + +## Response structure + +**Conversation object:** + +- `id` - Unique conversation identifier +- `questions` - Array of questions and answers +- `created_at`/`updated_at` - Timestamps +- `user_id` - Owner user ID +- `read_token` - Token for sharing access +- `share_url` - URL for sharing the conversation + +**Question object:** + +- `id` - Unique question identifier +- `question` - The original question text +- `status` - Processing status: `pending`, `processing`, `completed` +- `error` - Error details if the question processing encountered an issue +- `title` - Generated title for the question +- `answer` - The AI-generated answer (when completed) +- `sources` - Array of sources used to generate the answer +- `suggested_followups` - Suggested follow-up questions + +If a question fails to process, the `status` will be `completed` and the `error` field will be populated, for example: + +```json +{ + "status": "completed", + "error": { + "title": "Token limit reached", + "kind": "TokenLimitExceeded", + "message": "The search exceeded the maximum token limit...", + "details": "Additional context about the error" + } +} +``` + +## Error handling + +The API returns standard HTTP status codes with descriptive error messages: + +- `200` - Success +- `202` - Accepted (for async requests) +- `400` - Bad Request +- `401` - Unauthorized +- `404` - Not Found +- `500` - Internal Server Error diff --git a/src/data/redirects.ts b/src/data/redirects.ts index 564ad1848..459fbe28a 100644 --- a/src/data/redirects.ts +++ b/src/data/redirects.ts @@ -7149,11 +7149,6 @@ const redirectsData = [ destination: '/api', permanent: true }, - { - source: '/deep-search/api', - destination: '/api', - permanent: true - } ]; const updatedRedirectsData = redirectsData.map(redirect => { From 02df049c5e2a5a094e2fc187d6ccfe80baea0c8d Mon Sep 17 00:00:00 2001 From: Robert Lin Date: Thu, 26 Feb 2026 01:59:36 -0800 Subject: [PATCH 021/217] sourcegraph 7.0: link to changelog (#1643) had amp run through all the 7.0 mentions and link them --- docs/api/index.mdx | 4 ++-- docs/deep-search/api.mdx | 2 +- docs/how-to/aws-instance-sizing.mdx | 2 +- docs/self-hosted/deploy/docker-compose/migrate.mdx | 4 ++-- docs/self-hosted/deploy/docker-compose/upgrade.mdx | 2 +- docs/self-hosted/deploy/docker-single-container/aws.mdx | 2 +- .../deploy/docker-single-container/digitalocean.mdx | 2 +- .../deploy/docker-single-container/google-cloud.mdx | 2 +- docs/self-hosted/deploy/docker-single-container/index.mdx | 4 ++-- docs/self-hosted/deploy/index.mdx | 4 ++-- docs/self-hosted/deploy/kubernetes/index.mdx | 2 +- docs/self-hosted/deploy/kubernetes/upgrade.mdx | 2 +- docs/self-hosted/deploy/machine-images/aws-ami.mdx | 2 +- docs/self-hosted/deploy/machine-images/aws-oneclick.mdx | 2 +- docs/self-hosted/deploy/machine-images/index.mdx | 2 +- docs/self-hosted/deploy/single-node/script.mdx | 2 +- docs/self-hosted/how-to/postgres-12-to-16-drift.mdx | 2 +- .../how-to/upgrade-postgres-12-16-builtin-dbs.mdx | 2 +- docs/self-hosted/postgres.mdx | 8 ++++---- docs/self-hosted/postgres12-end-of-life-notice.mdx | 2 +- .../postgresql-collation-version-mismatch-resolution.mdx | 2 +- 21 files changed, 28 insertions(+), 28 deletions(-) diff --git a/docs/api/index.mdx b/docs/api/index.mdx index ddf8b2742..a8d8894ee 100644 --- a/docs/api/index.mdx +++ b/docs/api/index.mdx @@ -1,6 +1,6 @@ # Sourcegraph API -Starting in [Sourcegraph 7.0, a new versioned external API is being introduced for custom integrations](https://sourcegraph.com/changelog/sourcegraph-api). The currently available API surface can be seen in `/api-reference` (e.g. `https://sourcegraph.example.com/api-reference`). From this page, integrators can view the available operations and download the OpenAPI schema. We are committed to supporting integrations built on top of these new APIs with backwards compatibility and migration assistance for breaking changes. +Starting in [Sourcegraph 7.0](https://sourcegraph.com/changelog/releases/7.0), a new versioned external API is being introduced for custom integrations (see the [announcement](https://sourcegraph.com/changelog/sourcegraph-api)). The currently available API surface can be seen in `/api-reference` (e.g. `https://sourcegraph.example.com/api-reference`). From this page, integrators can view the available operations and download the OpenAPI schema. We are committed to supporting integrations built on top of these new APIs with backwards compatibility and migration assistance for breaking changes. The new Sourcegraph API is a work in progress, and capabilities are @@ -20,7 +20,7 @@ For diagnostics use cases, the [Sourcegraph GraphQL debug API](/api/graphql/) is

The Sourcegraph GraphQL API has historically been an internal interface without formal compatibility guarantees. For external integrations, - Sourcegraph 7.0 introduces a new, supported API at `/api-reference`. + [Sourcegraph 7.0](https://sourcegraph.com/changelog/releases/7.0) introduces a new, supported API at `/api-reference`. The GraphQL API remains available, but we recommend migrating to the new API for a stable integration experience.

diff --git a/docs/deep-search/api.mdx b/docs/deep-search/api.mdx index 04dfa320f..dfdcf0ee1 100644 --- a/docs/deep-search/api.mdx +++ b/docs/deep-search/api.mdx @@ -7,7 +7,7 @@ preview: true

The **experimental** Deep Search API has been **deprecated** as of - Sourcegraph 7.0. In Sourcegraph 7.0, [a new versioned Sourcegraph API is + [Sourcegraph 7.0](https://sourcegraph.com/changelog/releases/7.0). In this release, [a new versioned Sourcegraph API is being introduced for custom integrations](https://sourcegraph.com/changelog/sourcegraph-api), available at `/api-reference` (e.g. diff --git a/docs/how-to/aws-instance-sizing.mdx b/docs/how-to/aws-instance-sizing.mdx index d60545a1e..dfae097ed 100644 --- a/docs/how-to/aws-instance-sizing.mdx +++ b/docs/how-to/aws-instance-sizing.mdx @@ -1,7 +1,7 @@ # AWS Instance Sizing for Sourcegraph -**Deprecation notice:** AWS AMI deployments will be sunset in Sourcegraph 7.0.0. We recommend migrating to [Kubernetes Helm](/self-hosted/deploy/kubernetes) or [Docker Compose](/self-hosted/deploy/docker-compose) deployment methods. Please contact support@sourcegraph.com for migration assistance. +**Deprecation notice:** AWS AMI deployments will be sunset in [Sourcegraph 7.0.0](https://sourcegraph.com/changelog/releases/7.0). We recommend migrating to [Kubernetes Helm](/self-hosted/deploy/kubernetes) or [Docker Compose](/self-hosted/deploy/docker-compose) deployment methods. Please contact support@sourcegraph.com for migration assistance. ## Instance size chart diff --git a/docs/self-hosted/deploy/docker-compose/migrate.mdx b/docs/self-hosted/deploy/docker-compose/migrate.mdx index 1ece2e3b3..bdb1b8a4b 100644 --- a/docs/self-hosted/deploy/docker-compose/migrate.mdx +++ b/docs/self-hosted/deploy/docker-compose/migrate.mdx @@ -1,8 +1,8 @@ # Migrate from the single Docker image to Docker Compose -The single-container (`sourcegraph/server`) deployment mode has been **removed in Sourcegraph 7.0.0**. The `sourcegraph/server` Docker image is no longer published starting with 7.0.0. You **must** migrate to Docker Compose or Kubernetes before upgrading to 7.0.0. +The single-container (`sourcegraph/server`) deployment mode has been **removed in [Sourcegraph 7.0.0](https://sourcegraph.com/changelog/releases/7.0)**. The `sourcegraph/server` Docker image is no longer published starting with 7.0.0. You **must** migrate to Docker Compose or Kubernetes before upgrading to 7.0.0. -> ⚠️ We recommend new users use our [Kubernetes Helm](/self-hosted/deploy/kubernetes) or [Docker Compose](/self-hosted/deploy/docker-compose) deployment methods. Note: [machine image](/self-hosted/deploy/machine-images/) and [script-install](/self-hosted/deploy/single-node/script) deployments are being sunset in Sourcegraph 7.0.0. Existing customers can reach out to our Customer Engineering team support@sourcegraph.com for migration assistance. +> ⚠️ We recommend new users use our [Kubernetes Helm](/self-hosted/deploy/kubernetes) or [Docker Compose](/self-hosted/deploy/docker-compose) deployment methods. Note: [machine image](/self-hosted/deploy/machine-images/) and [script-install](/self-hosted/deploy/single-node/script) deployments are being sunset in [Sourcegraph 7.0.0](https://sourcegraph.com/changelog/releases/7.0). Existing customers can reach out to our Customer Engineering team support@sourcegraph.com for migration assistance. Since Sourcegraph 3.13, deploying via Docker Compose is the recommended method for production deployments as it provides resource isolation between Sourcegraph services which makes it more scalable and stable. This page describes how to migrate from a single Docker image deployment to the Docker Compose deployment method. diff --git a/docs/self-hosted/deploy/docker-compose/upgrade.mdx b/docs/self-hosted/deploy/docker-compose/upgrade.mdx index 8c4d83c97..86ac84245 100644 --- a/docs/self-hosted/deploy/docker-compose/upgrade.mdx +++ b/docs/self-hosted/deploy/docker-compose/upgrade.mdx @@ -69,7 +69,7 @@ $ docker-compose up -d --remove-orphans > -If you are upgrading to Sourcegraph 7.0.0 or later and your databases are still on PostgreSQL 12, you must first upgrade to a 6.x release (such as 6.11.x) to allow the automatic PostgreSQL 12 to 16 upgrade to complete. The entrypoint script that performs this upgrade has been removed in 7.0.0. +If you are upgrading to [Sourcegraph 7.0.0](https://sourcegraph.com/changelog/releases/7.0) or later and your databases are still on PostgreSQL 12, you must first upgrade to a 6.x release (such as 6.11.x) to allow the automatic PostgreSQL 12 to 16 upgrade to complete. The entrypoint script that performs this upgrade has been removed in 7.0.0. To perform a multi-version upgrade via migrators [upgrade](/self-hosted/updates/migrator/migrator-operations#upgrade) command on a Sourcegraph instance running on Docker compose follow the procedure below: diff --git a/docs/self-hosted/deploy/docker-single-container/aws.mdx b/docs/self-hosted/deploy/docker-single-container/aws.mdx index eef6959cc..a71b748fc 100644 --- a/docs/self-hosted/deploy/docker-single-container/aws.mdx +++ b/docs/self-hosted/deploy/docker-single-container/aws.mdx @@ -1,6 +1,6 @@ # Install single-container Sourcegraph with Docker on AWS -The single-container (`sourcegraph/server`) deployment mode has been **removed in Sourcegraph 7.0.0**. The `sourcegraph/server` Docker image is no longer published starting with 7.0.0. Customers must [migrate to Docker Compose](/self-hosted/deploy/docker-compose/migrate) or [Kubernetes](/self-hosted/deploy/kubernetes/) before upgrading to 7.0.0. +The single-container (`sourcegraph/server`) deployment mode has been **removed in [Sourcegraph 7.0.0](https://sourcegraph.com/changelog/releases/7.0)**. The `sourcegraph/server` Docker image is no longer published starting with 7.0.0. Customers must [migrate to Docker Compose](/self-hosted/deploy/docker-compose/migrate) or [Kubernetes](/self-hosted/deploy/kubernetes/) before upgrading to 7.0.0. This tutorial shows you how to deploy [single-container Sourcegraph with Docker](/self-hosted/deploy/docker-single-container/) to a single EC2 instance on AWS. diff --git a/docs/self-hosted/deploy/docker-single-container/digitalocean.mdx b/docs/self-hosted/deploy/docker-single-container/digitalocean.mdx index 6afc58a35..237153b0f 100644 --- a/docs/self-hosted/deploy/docker-single-container/digitalocean.mdx +++ b/docs/self-hosted/deploy/docker-single-container/digitalocean.mdx @@ -1,6 +1,6 @@ # Install single-container Sourcegraph with Docker on DigitalOcean -The single-container (`sourcegraph/server`) deployment mode has been **removed in Sourcegraph 7.0.0**. The `sourcegraph/server` Docker image is no longer published starting with 7.0.0. Customers must [migrate to Docker Compose](/self-hosted/deploy/docker-compose/migrate) or [Kubernetes](/self-hosted/deploy/kubernetes/) before upgrading to 7.0.0. +The single-container (`sourcegraph/server`) deployment mode has been **removed in [Sourcegraph 7.0.0](https://sourcegraph.com/changelog/releases/7.0)**. The `sourcegraph/server` Docker image is no longer published starting with 7.0.0. Customers must [migrate to Docker Compose](/self-hosted/deploy/docker-compose/migrate) or [Kubernetes](/self-hosted/deploy/kubernetes/) before upgrading to 7.0.0. This tutorial shows you how to deploy [single-container Sourcegraph with Docker](/self-hosted/deploy/docker-single-container/) to a single node running on DigitalOcean. diff --git a/docs/self-hosted/deploy/docker-single-container/google-cloud.mdx b/docs/self-hosted/deploy/docker-single-container/google-cloud.mdx index 863ae1ae4..330d3bb08 100644 --- a/docs/self-hosted/deploy/docker-single-container/google-cloud.mdx +++ b/docs/self-hosted/deploy/docker-single-container/google-cloud.mdx @@ -1,6 +1,6 @@ # Install single-container Sourcegraph with Docker on Google Cloud -The single-container (`sourcegraph/server`) deployment mode has been **removed in Sourcegraph 7.0.0**. The `sourcegraph/server` Docker image is no longer published starting with 7.0.0. Customers must [migrate to Docker Compose](/self-hosted/deploy/docker-compose/migrate) or [Kubernetes](/self-hosted/deploy/kubernetes/) before upgrading to 7.0.0. +The single-container (`sourcegraph/server`) deployment mode has been **removed in [Sourcegraph 7.0.0](https://sourcegraph.com/changelog/releases/7.0)**. The `sourcegraph/server` Docker image is no longer published starting with 7.0.0. Customers must [migrate to Docker Compose](/self-hosted/deploy/docker-compose/migrate) or [Kubernetes](/self-hosted/deploy/kubernetes/) before upgrading to 7.0.0. This tutorial shows you how to deploy [single-container Sourcegraph with Docker](/self-hosted/deploy/docker-single-container/) to a single node running on Google Cloud. diff --git a/docs/self-hosted/deploy/docker-single-container/index.mdx b/docs/self-hosted/deploy/docker-single-container/index.mdx index 1de867345..64e70058b 100644 --- a/docs/self-hosted/deploy/docker-single-container/index.mdx +++ b/docs/self-hosted/deploy/docker-single-container/index.mdx @@ -1,6 +1,6 @@ # Docker Single Container Deployment -The single-container (`sourcegraph/server`) deployment mode has been **removed in Sourcegraph 7.0.0**. The `sourcegraph/server` Docker image is no longer published starting with 7.0.0. Customers must [migrate to Docker Compose](/self-hosted/deploy/docker-compose/migrate) or [Kubernetes](/self-hosted/deploy/kubernetes/) before upgrading to 7.0.0. +The single-container (`sourcegraph/server`) deployment mode has been **removed in [Sourcegraph 7.0.0](https://sourcegraph.com/changelog/releases/7.0)**. The `sourcegraph/server` Docker image is no longer published starting with 7.0.0. Customers must [migrate to Docker Compose](/self-hosted/deploy/docker-compose/migrate) or [Kubernetes](/self-hosted/deploy/kubernetes/) before upgrading to 7.0.0. The Docker Single Container deployment type is a way to very quickly get an instance of Sourcegraph set up locally to experiment with many of its features. However, it is **not recommended** for a production instance, and **has limitations** depending on the OS you are deploying to, as well as the associated resources. See the [troubleshooting section](#troubleshooting) for additional information. @@ -141,7 +141,7 @@ SELECT * FROM users; ### Postgresql 16 -The single-container deployment (`sourcegraph/server`) is sunset in Sourcegraph 7.0.0 and is no longer supported. The automatic PostgreSQL 12 to 16 upgrade procedure described below only applies to Sourcegraph 5.10.x through 6.x releases. Users should migrate to a supported deployment type before upgrading to 7.0.0. +The single-container deployment (`sourcegraph/server`) is sunset in [Sourcegraph 7.0.0](https://sourcegraph.com/changelog/releases/7.0) and is no longer supported. The automatic PostgreSQL 12 to 16 upgrade procedure described below only applies to Sourcegraph 5.10.x through 6.x releases. Users should migrate to a supported deployment type before upgrading to 7.0.0. > Warning: The 5.11 release updates the database container images from Postgres 12 to Postgres 16. Customers are advised to have a database backup before upgrading! See our [postgres 12 end of life](https://sourcegraph.com/docs/self-hosted/postgres12-end-of-life-notice#postgres-12-end-of-life) notice! diff --git a/docs/self-hosted/deploy/index.mdx b/docs/self-hosted/deploy/index.mdx index fe296e6a7..d0c2d78b7 100644 --- a/docs/self-hosted/deploy/index.mdx +++ b/docs/self-hosted/deploy/index.mdx @@ -85,7 +85,7 @@ Best for enterprises looking for a self-hosted solution on the Cloud provider of Machine images provide a pre-configured Sourcegraph instance that can be deployed in minutes with minimal effort. While they offer simplicity, they are designed as a standardized solution and do not support customization. Currently available on the following hosts: -**Note:** AWS AMI and machine image deployments will be sunset in Sourcegraph 7.0.0. +**Note:** AWS AMI and machine image deployments will be sunset in [Sourcegraph 7.0.0](https://sourcegraph.com/changelog/releases/7.0). @@ -110,7 +110,7 @@ See [Sourcegraph Machine Images](/self-hosted/deploy/machine-images) for more in ### Single-container (removed in 7.0.0) -The single-container (`sourcegraph/server`) deployment mode has been **removed in Sourcegraph 7.0.0**. Customers must [migrate to Docker Compose](/self-hosted/deploy/docker-compose/migrate) or [Kubernetes](/self-hosted/deploy/kubernetes/) before upgrading to 7.0.0. +The single-container (`sourcegraph/server`) deployment mode has been **removed in [Sourcegraph 7.0.0](https://sourcegraph.com/changelog/releases/7.0)**. Customers must [migrate to Docker Compose](/self-hosted/deploy/docker-compose/migrate) or [Kubernetes](/self-hosted/deploy/kubernetes/) before upgrading to 7.0.0. - [Docker Single Container](/self-hosted/deploy/docker-single-container/) - Install Sourcegraph using a single Docker container diff --git a/docs/self-hosted/deploy/kubernetes/index.mdx b/docs/self-hosted/deploy/kubernetes/index.mdx index d92af9231..8b164e6fc 100644 --- a/docs/self-hosted/deploy/kubernetes/index.mdx +++ b/docs/self-hosted/deploy/kubernetes/index.mdx @@ -1026,7 +1026,7 @@ When all pods have restarted and show as Running, you can browse to your Sourceg `v5.11.6271` and then use the standard upgrade procedure to get to their target version. This is because migrator in all versions from `v6.0.0` onwards will no longer connect to Postgres 12 databases. Additionally, - starting in Sourcegraph 7.0.0, the automatic PostgreSQL 12 to 16 upgrade + starting in [Sourcegraph 7.0.0](https://sourcegraph.com/changelog/releases/7.0), the automatic PostgreSQL 12 to 16 upgrade entrypoint script has been removed entirely. For more info see our [PostgreSQL upgrade docs](/self-hosted/postgres#requirements). diff --git a/docs/self-hosted/deploy/kubernetes/upgrade.mdx b/docs/self-hosted/deploy/kubernetes/upgrade.mdx index 8f92a4e33..38ac21af2 100644 --- a/docs/self-hosted/deploy/kubernetes/upgrade.mdx +++ b/docs/self-hosted/deploy/kubernetes/upgrade.mdx @@ -111,7 +111,7 @@ To perform a multi-version upgrade via migrators [upgrade](/self-hosted/updates/ kubectl apply --prune -l deploy=sourcegraph -f cluster.yaml ``` - > Note: This step will ensure that any PostgreSQL upgrade performed as an entrypoint script will have a chance to execute before the migrator is run. For more information see [Upgrading PostgreSQL](/self-hosted/postgres#upgrading-postgresql). **Starting in Sourcegraph 7.0.0, the entrypoint upgrade script has been removed. Users on PostgreSQL 12 must upgrade to a 6.x release first.** + > Note: This step will ensure that any PostgreSQL upgrade performed as an entrypoint script will have a chance to execute before the migrator is run. For more information see [Upgrading PostgreSQL](/self-hosted/postgres#upgrading-postgresql). **Starting in [Sourcegraph 7.0.0](https://sourcegraph.com/changelog/releases/7.0), the entrypoint upgrade script has been removed. Users on PostgreSQL 12 must upgrade to a 6.x release first.** 4. **Run Migrator with the `upgrade` command**: diff --git a/docs/self-hosted/deploy/machine-images/aws-ami.mdx b/docs/self-hosted/deploy/machine-images/aws-ami.mdx index ad4161e0c..db537c42d 100644 --- a/docs/self-hosted/deploy/machine-images/aws-ami.mdx +++ b/docs/self-hosted/deploy/machine-images/aws-ami.mdx @@ -1,7 +1,7 @@ # Sourcegraph AWS AMI instances -**Deprecation notice:** AWS AMI and machine image deployments will be sunset in Sourcegraph 7.0.0. We recommend migrating to [Kubernetes Helm](/self-hosted/deploy/kubernetes) or [Docker Compose](/self-hosted/deploy/docker-compose) deployment methods. Please contact support@sourcegraph.com for migration assistance. +**Deprecation notice:** AWS AMI and machine image deployments will be sunset in [Sourcegraph 7.0.0](https://sourcegraph.com/changelog/releases/7.0). We recommend migrating to [Kubernetes Helm](/self-hosted/deploy/kubernetes) or [Docker Compose](/self-hosted/deploy/docker-compose) deployment methods. Please contact support@sourcegraph.com for migration assistance. Sourcegraph [Amazon Machine Images (AMIs)](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-instances-and-amis.html) allow you to quickly deploy a production-ready Sourcegraph instance tuned to your organization's scale in just a few clicks. diff --git a/docs/self-hosted/deploy/machine-images/aws-oneclick.mdx b/docs/self-hosted/deploy/machine-images/aws-oneclick.mdx index 63e15428f..9520d2b9a 100644 --- a/docs/self-hosted/deploy/machine-images/aws-oneclick.mdx +++ b/docs/self-hosted/deploy/machine-images/aws-oneclick.mdx @@ -1,7 +1,7 @@ # AWS One-Click Installation for Sourcegraph -**Deprecation notice:** AWS AMI and machine image deployments will be sunset in Sourcegraph 7.0.0. We recommend migrating to [Kubernetes Helm](/self-hosted/deploy/kubernetes) or [Docker Compose](/self-hosted/deploy/docker-compose) deployment methods. Please contact support@sourcegraph.com for migration assistance. +**Deprecation notice:** AWS AMI and machine image deployments will be sunset in [Sourcegraph 7.0.0](https://sourcegraph.com/changelog/releases/7.0). We recommend migrating to [Kubernetes Helm](/self-hosted/deploy/kubernetes) or [Docker Compose](/self-hosted/deploy/docker-compose) deployment methods. Please contact support@sourcegraph.com for migration assistance. This page describes how to launch a verified and pre-configured Sourcegraph instance in just ~10 minutes using our one-click CloudFormation template and standard AMIs. diff --git a/docs/self-hosted/deploy/machine-images/index.mdx b/docs/self-hosted/deploy/machine-images/index.mdx index 24699a116..6b6f4f730 100644 --- a/docs/self-hosted/deploy/machine-images/index.mdx +++ b/docs/self-hosted/deploy/machine-images/index.mdx @@ -1,7 +1,7 @@ # Sourcegraph Machine Images -**Deprecation notice:** AWS AMI and machine image deployments will be sunset in Sourcegraph 7.0.0. We recommend migrating to [Kubernetes Helm](/self-hosted/deploy/kubernetes) or [Docker Compose](/self-hosted/deploy/docker-compose) deployment methods. Please contact support@sourcegraph.com for migration assistance. +**Deprecation notice:** AWS AMI and machine image deployments will be sunset in [Sourcegraph 7.0.0](https://sourcegraph.com/changelog/releases/7.0). We recommend migrating to [Kubernetes Helm](/self-hosted/deploy/kubernetes) or [Docker Compose](/self-hosted/deploy/docker-compose) deployment methods. Please contact support@sourcegraph.com for migration assistance. Sourcegraph machine images help to simplify the deployment experience for our users by using a pre-setup machine image. diff --git a/docs/self-hosted/deploy/single-node/script.mdx b/docs/self-hosted/deploy/single-node/script.mdx index fbbcc3070..10b75f8c5 100644 --- a/docs/self-hosted/deploy/single-node/script.mdx +++ b/docs/self-hosted/deploy/single-node/script.mdx @@ -1,7 +1,7 @@ # Install Sourcegraph via Shell Script -**Deprecation notice:** The k3s install script deployment method will be sunset in Sourcegraph 7.0.0. We recommend migrating to [Kubernetes Helm](/self-hosted/deploy/kubernetes) or [Docker Compose](/self-hosted/deploy/docker-compose) deployment methods. Please contact support@sourcegraph.com for migration assistance. +**Deprecation notice:** The k3s install script deployment method will be sunset in [Sourcegraph 7.0.0](https://sourcegraph.com/changelog/releases/7.0). We recommend migrating to [Kubernetes Helm](/self-hosted/deploy/kubernetes) or [Docker Compose](/self-hosted/deploy/docker-compose) deployment methods. Please contact support@sourcegraph.com for migration assistance. Following these docs will launch a pre-configured single node Sourcegraph instance via shell script. diff --git a/docs/self-hosted/how-to/postgres-12-to-16-drift.mdx b/docs/self-hosted/how-to/postgres-12-to-16-drift.mdx index 6b9f9a0a3..ba6aad28a 100644 --- a/docs/self-hosted/how-to/postgres-12-to-16-drift.mdx +++ b/docs/self-hosted/how-to/postgres-12-to-16-drift.mdx @@ -1,6 +1,6 @@ # PostgreSQL 12 to 16 Schema Drift -In Sourcegraph versions `5.10.x` and `5.11.x` we support both PostgreSQL 12 and 16. However, Sourcegraph's database management tool `migrator` expects the database schema of the various Sourcegraph databases to be in an exact expected state. The upgrade from PostgreSQL 12 to 16 is opinionated and automatically mutates the schema without running our application defined migrations. Starting in Sourcegraph `5.10.0` we expect databases to be in PostgresSQL 16 and as such our tooling will identify schema drift in PostgreSQL 12 databases. This drift does not impact the functionality of the Sourcegraph instance but will stop migrator's multiversion `upgrade` command from executing. Note that starting in Sourcegraph 7.0.0, the entrypoint script that performs the automatic PostgreSQL 12 to 16 upgrade has been removed. Users must complete this upgrade on a 6.x release. +In Sourcegraph versions `5.10.x` and `5.11.x` we support both PostgreSQL 12 and 16. However, Sourcegraph's database management tool `migrator` expects the database schema of the various Sourcegraph databases to be in an exact expected state. The upgrade from PostgreSQL 12 to 16 is opinionated and automatically mutates the schema without running our application defined migrations. Starting in Sourcegraph `5.10.0` we expect databases to be in PostgresSQL 16 and as such our tooling will identify schema drift in PostgreSQL 12 databases. This drift does not impact the functionality of the Sourcegraph instance but will stop migrator's multiversion `upgrade` command from executing. Note that starting in [Sourcegraph 7.0.0](https://sourcegraph.com/changelog/releases/7.0), the entrypoint script that performs the automatic PostgreSQL 12 to 16 upgrade has been removed. Users must complete this upgrade on a 6.x release. > **Note:** The autoupgrade feature has been removed in Sourcegraph 6.12.0 and later. The instructions below for autoupgrade only apply to versions prior to 6.12.0. diff --git a/docs/self-hosted/how-to/upgrade-postgres-12-16-builtin-dbs.mdx b/docs/self-hosted/how-to/upgrade-postgres-12-16-builtin-dbs.mdx index 512723664..5e5c83d98 100644 --- a/docs/self-hosted/how-to/upgrade-postgres-12-16-builtin-dbs.mdx +++ b/docs/self-hosted/how-to/upgrade-postgres-12-16-builtin-dbs.mdx @@ -1,7 +1,7 @@ # Upgrading Built-in PostgreSQL -The entrypoint script described in this guide was removed in Sourcegraph 7.0.0. This guide only applies to upgrades targeting Sourcegraph 5.10.x through 6.x. Users on PostgreSQL 12 must complete this upgrade on a 6.x release before upgrading to 7.0.0 or later. +The entrypoint script described in this guide was removed in [Sourcegraph 7.0.0](https://sourcegraph.com/changelog/releases/7.0). This guide only applies to upgrades targeting Sourcegraph 5.10.x through 6.x. Users on PostgreSQL 12 must complete this upgrade on a 6.x release before upgrading to 7.0.0 or later. The following doc contains detailed instructions for upgrading the built-in PostgreSQL databases via our `postgresql-16` and `postgresql-16-codeinsights` image entrypoint script. This doc assumes an admin is attempting to upgrade to Sourcegraph `6.0.0` from an older version (usually pre `5.10.0`) using one of our "deploy" repos. For more general info see [Upgrading PostgreSQL](/self-hosted/postgres#upgrading-postgresql). diff --git a/docs/self-hosted/postgres.mdx b/docs/self-hosted/postgres.mdx index 6b1cb0bab..1aaa56aa7 100644 --- a/docs/self-hosted/postgres.mdx +++ b/docs/self-hosted/postgres.mdx @@ -62,7 +62,7 @@ Database Image Updates: These images contain an entry script that will detect and upgrade Postgres instances from version 12 (the version in our previous images) to Postgres 16. -Starting in Sourcegraph 7.0.0, the entrypoint script that automatically upgrades PostgreSQL 12 to 16 has been removed from the database container images. Users still on PostgreSQL 12 must upgrade to a 6.x version first to perform the automatic upgrade before upgrading to 7.0.0 or later. +Starting in [Sourcegraph 7.0.0](https://sourcegraph.com/changelog/releases/7.0), the entrypoint script that automatically upgrades PostgreSQL 12 to 16 has been removed from the database container images. Users still on PostgreSQL 12 must upgrade to a 6.x version first to perform the automatic upgrade before upgrading to 7.0.0 or later. > WARNING: Upgrading the PostgreSQL database requires stopping your Sourcegraph deployment which will result in **downtime**. @@ -81,7 +81,7 @@ For additional assistance with PostgreSQL upgrades, please contact support@sourc ### Upgrade entrypoint script options -The entrypoint upgrade script and its configuration options described below were removed in Sourcegraph 7.0.0. This section only applies to Sourcegraph 5.10.x through 6.x releases. +The entrypoint upgrade script and its configuration options described below were removed in [Sourcegraph 7.0.0](https://sourcegraph.com/changelog/releases/7.0). This section only applies to Sourcegraph 5.10.x through 6.x releases. The `PG_UPGRADE_EXTRA_ARGS` environment variable allows you to customize the `pg_upgrade` command in `postgresql-16` and `postgresql-16-codeinsights` deployments. @@ -116,10 +116,10 @@ When running an [external PostgreSQL instance](/self-hosted/external-services/po #### Single-container Sourcegraph (removed in 7.0.0) -The single-container (`sourcegraph/server`) deployment mode has been removed in Sourcegraph 7.0.0. [Migrate to Docker Compose](/self-hosted/deploy/docker-compose/migrate) or [Kubernetes](/self-hosted/deploy/kubernetes/). +The single-container (`sourcegraph/server`) deployment mode has been removed in [Sourcegraph 7.0.0](https://sourcegraph.com/changelog/releases/7.0). [Migrate to Docker Compose](/self-hosted/deploy/docker-compose/migrate) or [Kubernetes](/self-hosted/deploy/kubernetes/). -The single-container deployment (`sourcegraph/server`) is sunset in Sourcegraph 7.0.0 and is no longer supported. Admins using single-container deployments should migrate to a supported deployment type such as [Docker Compose](/self-hosted/deploy/docker-compose/) or [Kubernetes](/self-hosted/deploy/kubernetes/) before upgrading to 7.0.0. +The single-container deployment (`sourcegraph/server`) is sunset in [Sourcegraph 7.0.0](https://sourcegraph.com/changelog/releases/7.0) and is no longer supported. Admins using single-container deployments should migrate to a supported deployment type such as [Docker Compose](/self-hosted/deploy/docker-compose/) or [Kubernetes](/self-hosted/deploy/kubernetes/) before upgrading to 7.0.0. For versions prior to 7.0.0, single-container deployments do not support automatic PostgreSQL upgrades. Admins with production data in a single-container deployment are advised to reach out to support@sourcegraph.com for assistance. diff --git a/docs/self-hosted/postgres12-end-of-life-notice.mdx b/docs/self-hosted/postgres12-end-of-life-notice.mdx index b1f738f1d..20a55bdb5 100644 --- a/docs/self-hosted/postgres12-end-of-life-notice.mdx +++ b/docs/self-hosted/postgres12-end-of-life-notice.mdx @@ -1,7 +1,7 @@ # Postgres 12 End of Life -As of Sourcegraph 7.0.0, the automatic PostgreSQL 12 to 16 upgrade entrypoint script has been fully removed from the database container images. Users still on PostgreSQL 12 must upgrade to a Sourcegraph 6.x release first to perform the automatic database upgrade before upgrading to 7.0.0 or later. +As of [Sourcegraph 7.0.0](https://sourcegraph.com/changelog/releases/7.0), the automatic PostgreSQL 12 to 16 upgrade entrypoint script has been fully removed from the database container images. Users still on PostgreSQL 12 must upgrade to a Sourcegraph 6.x release first to perform the automatic database upgrade before upgrading to 7.0.0 or later. Sourcegraph's required minimum version of Postgres will be updated to Postgres 16 with upcoming releases, Sourcegraph 5.10. This change in required minimum version is a result of Postgres 12, the previous required minimum version, reaching end of life. Please review the below information and reach out if you have any questions or would like to review the impact this change will have on you! diff --git a/docs/self-hosted/postgresql-collation-version-mismatch-resolution.mdx b/docs/self-hosted/postgresql-collation-version-mismatch-resolution.mdx index 39adbbcc3..abbffacf1 100644 --- a/docs/self-hosted/postgresql-collation-version-mismatch-resolution.mdx +++ b/docs/self-hosted/postgresql-collation-version-mismatch-resolution.mdx @@ -220,7 +220,7 @@ kubectl apply --prune -l deploy=sourcegraph -f cluster.yaml ## AMI/Machine Image based deployments -**Deprecation notice:** AMI and machine image deployments will be sunset in Sourcegraph 7.0.0. +**Deprecation notice:** AMI and machine image deployments will be sunset in [Sourcegraph 7.0.0](https://sourcegraph.com/changelog/releases/7.0). Our AMI and GCP machine image deployments run Kubernetes internally, and thus follow the same general directions as our Helm Deployments described above. From 09f3a949ab37120702e193df8864218951e0ea9c Mon Sep 17 00:00:00 2001 From: Robert Lin Date: Thu, 26 Feb 2026 09:11:05 -0800 Subject: [PATCH 022/217] navigation: point APIs to /api, not GraphQL (#1647) --- src/data/navigation.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/data/navigation.ts b/src/data/navigation.ts index a802b9fe9..3da1dab81 100644 --- a/src/data/navigation.ts +++ b/src/data/navigation.ts @@ -462,7 +462,7 @@ export const navigation: NavigationItem[] = [ }, { title: 'APIs', - href: '/api/graphql', + href: '/api', sections: [ {title: 'Sourcegraph API', href: '/api'}, {title: 'Streaming search API', href: '/api/stream-api'}, From b7e3c58838a78166a8749739d122ba1d9b51fd8a Mon Sep 17 00:00:00 2001 From: julialeex Date: Thu, 26 Feb 2026 17:19:30 -0500 Subject: [PATCH 023/217] Add missing OAuth scopes to Slack integration docs (#1649) Updates the permissions reference table to include three new scopes (assistant:write, files:read, reactions:write) that are present in the current app manifest but were missing from the documentation. --- docs/slack-integration.mdx | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/docs/slack-integration.mdx b/docs/slack-integration.mdx index b30f25a8d..85342501d 100644 --- a/docs/slack-integration.mdx +++ b/docs/slack-integration.mdx @@ -103,13 +103,16 @@ All required permissions below are automatically provided via the app manifest g | Permission | Purpose | | ------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------- | | `app_mentions:read` | Allows the app to detect when users mention `@Sourcegraph` to begin a Deep Search. | +| `assistant:write` | Enables the Slack Assistant feature, allowing Sourcegraph to respond in the Assistant panel for direct, contextual interactions. | | `channels:history` | Enables the app to read message history in the Slack thread where `@Sourcegraph` was tagged, in order to provide context for the Deep Search conversation | | `chat:write` | Allows the app to send Deep Search responses back to Slack channels and threads where it was mentioned. | +| `files:read` | Allows the app to read files shared in Slack messages to include them as context for Deep Search conversations. | | `groups:history` | Enables the app to read message history in private channels it is added to (only read when mentioned.) | | `im:history` | Enables the app to read direct message history (with the app only), for one-on-one conversations with Sourcegraph. | -| `mpim:history` | Enables the app to read message history in direct messaging groups it is added to | | `links:read` | Enables the app to read link metadata when unfurling Deep Search URLs for rich link previews. | | `links:write` | Enables the app to post rich previews when Deep Search links are shared in Slack | +| `mpim:history` | Enables the app to read message history in direct messaging groups it is added to | +| `reactions:write` | Allows the app to add emoji reactions to messages, such as indicating when a Deep Search is in progress. | | `team:read` | Allows the app to access basic information about the Slack workspace, for configuration and producing links to your Slack workspace in site admin areas. | | `users:read` | Enables the app to read basic user profile information to associate Slack users with Sourcegraph accounts | | `users:read.email` | Allows the app to read user email addresses to match Slack users with their Sourcegraph accounts | From 9f2fc37df429edcb81a14a0070f9594326f573b3 Mon Sep 17 00:00:00 2001 From: Michael Bahr <1830132+bahrmichael@users.noreply.github.com> Date: Fri, 27 Feb 2026 17:15:03 +0100 Subject: [PATCH 024/217] fix: update suggested scopes for gitlab with batch changes (#1652) See https://sourcegraph.slack.com/archives/C05MW2TMYAV/p1772133476875459 --- docs/admin/auth/index.mdx | 6 ++++-- docs/admin/auth/troubleshooting.mdx | 3 +-- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/docs/admin/auth/index.mdx b/docs/admin/auth/index.mdx index 0e91af63e..3df9e0c21 100644 --- a/docs/admin/auth/index.mdx +++ b/docs/admin/auth/index.mdx @@ -222,7 +222,9 @@ The response will include an `id` field with your organization's numeric ID. Sourcegraph instance: - Authorization callback URL: `https://sourcegraph.example.com/.auth/gitlab/callback` -- Scopes: `read_user`, `read_api` (be sure to set `"apiScope": "read_api"` in the `auth.providers` config, as indicated below) +- Scopes: `read_user`, `api` + +Write access is required for Batch Changes. Then add the following lines to your site configuration: @@ -236,7 +238,7 @@ Then add the following lines to your site configuration: "clientID": "replace-with-the-oauth-application-id", "clientSecret": "replace-with-the-oauth-secret", "url": "https://gitlab.example.com", - "apiScope": "read_api", // If not set, it defaults to "api" and the OAuth application will have to be adjusted accordingly. + "apiScope": "api", // If not set, it defaults to "api". "allowSignup": false, // If not set, it defaults to true allowing any GitLab user with access to your instance to sign up. "allowGroups": ["group", "group/subgroup", "group/subgroup/subgroup"], // Restrict logins and sign-ups to members of groups or subgroups based on the full-path provided. } diff --git a/docs/admin/auth/troubleshooting.mdx b/docs/admin/auth/troubleshooting.mdx index bdc943ce0..b73b8b6f3 100644 --- a/docs/admin/auth/troubleshooting.mdx +++ b/docs/admin/auth/troubleshooting.mdx @@ -55,11 +55,10 @@ The requested scope is invalid, unknown, or malformed. This could be related to the scopes granted on your `clientID` and `clientSecret` on the `auth.providers` section in your site configuration. -For example, for the GitLab oAuth integratio, check the [GitLab scopes](https://gitlab.com/-/profile/applications) granted to ensure that you have the following configured: +For example, for the GitLab oAuth integration, check the [GitLab scopes](https://gitlab.com/-/profile/applications) granted to ensure that you have the following configured: - `api` - `read_user` -- `read_api` ### Test in incognito mode From fe8f994cef008e1b6d1c3d7e9830a2b8ae8a9843 Mon Sep 17 00:00:00 2001 From: sourcegraph-buildkite <71296199+sourcegraph-buildkite@users.noreply.github.com> Date: Sat, 28 Feb 2026 00:16:19 +0200 Subject: [PATCH 025/217] =?UTF-8?q?=F0=9F=A4=96=20Sync=20generated=20docs?= =?UTF-8?q?=20from=20sourcegraph/sourcegraph=20(2026-02-27/21-45-19)=20(#1?= =?UTF-8?q?654)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This is an automated pull request, created by //doc:generated.push on sourcegraph/sourcegraph --------- Co-authored-by: Buildkite Co-authored-by: Robert Lin --- docs/admin/architecture.mdx | 2 +- docs/admin/code-hosts/aws-codecommit.mdx | 2 +- docs/admin/code-hosts/azuredevops.mdx | 2 +- docs/admin/code-hosts/bitbucket-cloud.mdx | 2 +- docs/admin/code-hosts/bitbucket-server.mdx | 2 +- docs/admin/code-hosts/gerrit.mdx | 2 +- docs/admin/code-hosts/github.mdx | 2 +- docs/admin/code-hosts/gitlab.mdx | 2 +- docs/admin/code-hosts/gitolite.mdx | 2 +- docs/admin/code-hosts/other.mdx | 2 +- docs/admin/code-hosts/phabricator.mdx | 2 +- docs/admin/config/settings.mdx | 3 +- docs/admin/config/site-config.mdx | 8 +- docs/admin/pings.mdx | 4 +- docs/admin/repo/perforce.mdx | 2 +- .../{telemetry.mdx => telemetry/index.mdx} | 4 +- docs/admin/telemetry/protocol.mdx | 643 ++++++++++++++++++ docs/cody/capabilities/supported-models.mdx | 2 + 18 files changed, 670 insertions(+), 18 deletions(-) rename docs/admin/{telemetry.mdx => telemetry/index.mdx} (94%) create mode 100644 docs/admin/telemetry/protocol.mdx diff --git a/docs/admin/architecture.mdx b/docs/admin/architecture.mdx index d14e74f9d..c1662802f 100644 --- a/docs/admin/architecture.mdx +++ b/docs/admin/architecture.mdx @@ -292,7 +292,7 @@ Understanding how individuals and organizations use Sourcegraph is key to provid The data we collect powers the [Sourcegraph Analytics service](../analytics/index.mdx). -We take sensitive data/PII exfiltration, intentional or not, very seriously. Our [Telemetry docs](./telemetry.mdx) outline some of the measures we take to ensure privacy and data security. +We take sensitive data/PII exfiltration, intentional or not, very seriously. Our [Telemetry docs](./telemetry/index.mdx) outline some of the measures we take to ensure privacy and data security. Telemetry is exported through the `worker` service to the Sourcegraph-managed "Telemetry Gateway" service and "Pings" service, for telemetry events and aggregated reports, respectively. diff --git a/docs/admin/code-hosts/aws-codecommit.mdx b/docs/admin/code-hosts/aws-codecommit.mdx index d3e7661e1..478ed0259 100644 --- a/docs/admin/code-hosts/aws-codecommit.mdx +++ b/docs/admin/code-hosts/aws-codecommit.mdx @@ -37,7 +37,7 @@ AWS CodeCommit connections support the following configuration options, which ar {/* SCHEMA_SYNC_START: admin/code_hosts/aws_codecommit.schema.json */} {/* WARNING: This section is auto-generated during releases. Do not edit manually. */} -{/* Last updated: 2026-02-25T13:48:43Z */} +{/* Last updated: 2026-02-27T21:45:19Z */} ```json { // REQUIRED: diff --git a/docs/admin/code-hosts/azuredevops.mdx b/docs/admin/code-hosts/azuredevops.mdx index 2e0c9d4db..30df9ea8a 100644 --- a/docs/admin/code-hosts/azuredevops.mdx +++ b/docs/admin/code-hosts/azuredevops.mdx @@ -65,7 +65,7 @@ Azure DevOps connections support the following configuration options, which are {/* SCHEMA_SYNC_START: admin/code_hosts/azuredevops.schema.json */} {/* WARNING: This section is auto-generated during releases. Do not edit manually. */} -{/* Last updated: 2026-02-25T13:48:43Z */} +{/* Last updated: 2026-02-27T21:45:19Z */} ```json // Authentication alternatives: token OR windowsPassword diff --git a/docs/admin/code-hosts/bitbucket-cloud.mdx b/docs/admin/code-hosts/bitbucket-cloud.mdx index 666d84c09..9712a8f3d 100644 --- a/docs/admin/code-hosts/bitbucket-cloud.mdx +++ b/docs/admin/code-hosts/bitbucket-cloud.mdx @@ -116,7 +116,7 @@ Bitbucket Cloud connections support the following configuration options, which a {/* SCHEMA_SYNC_START: admin/code_hosts/bitbucket_cloud.schema.json */} {/* WARNING: This section is auto-generated during releases. Do not edit manually. */} -{/* Last updated: 2026-02-25T13:48:43Z */} +{/* Last updated: 2026-02-27T21:45:19Z */} ```json { // The workspace access token to use when authenticating with Bitbucket Cloud. diff --git a/docs/admin/code-hosts/bitbucket-server.mdx b/docs/admin/code-hosts/bitbucket-server.mdx index 89f86ee4a..f34e0927d 100644 --- a/docs/admin/code-hosts/bitbucket-server.mdx +++ b/docs/admin/code-hosts/bitbucket-server.mdx @@ -202,7 +202,7 @@ Bitbucket Server / Bitbucket Data Center connections support the following confi {/* SCHEMA_SYNC_START: admin/code_hosts/bitbucket_server.schema.json */} {/* WARNING: This section is auto-generated during releases. Do not edit manually. */} -{/* Last updated: 2026-02-25T13:48:43Z */} +{/* Last updated: 2026-02-27T21:45:19Z */} ```json // Authentication alternatives: token OR password diff --git a/docs/admin/code-hosts/gerrit.mdx b/docs/admin/code-hosts/gerrit.mdx index 9b865ed28..59623f7ff 100644 --- a/docs/admin/code-hosts/gerrit.mdx +++ b/docs/admin/code-hosts/gerrit.mdx @@ -113,7 +113,7 @@ Gerrit connections support the following configuration options, which are specif {/* SCHEMA_SYNC_START: admin/code_hosts/gerrit.schema.json */} {/* WARNING: This section is auto-generated during releases. Do not edit manually. */} -{/* Last updated: 2026-02-25T13:48:43Z */} +{/* Last updated: 2026-02-27T21:45:19Z */} ```json { // If non-null, enforces Gerrit repository permissions. This requires that there is an item in the [site configuration json](https://sourcegraph.com/docs/admin/config/site_config#auth-providers) `auth.providers` field, of type "gerrit" with the same `url` field as specified in this `GerritConnection`. diff --git a/docs/admin/code-hosts/github.mdx b/docs/admin/code-hosts/github.mdx index 69fe29e14..e2f675e6a 100644 --- a/docs/admin/code-hosts/github.mdx +++ b/docs/admin/code-hosts/github.mdx @@ -454,7 +454,7 @@ GitHub connections support the following configuration options, which are specif {/* SCHEMA_SYNC_START: admin/code_hosts/github.schema.json */} {/* WARNING: This section is auto-generated during releases. Do not edit manually. */} -{/* Last updated: 2026-02-25T13:48:43Z */} +{/* Last updated: 2026-02-27T21:45:19Z */} ```json // Authentication alternatives: token OR gitHubAppDetails OR externalAccount OR useRandomExternalAccount diff --git a/docs/admin/code-hosts/gitlab.mdx b/docs/admin/code-hosts/gitlab.mdx index e4ba46207..172c43e3d 100644 --- a/docs/admin/code-hosts/gitlab.mdx +++ b/docs/admin/code-hosts/gitlab.mdx @@ -189,7 +189,7 @@ See [Internal rate limits](/admin/code-hosts/rate-limits#internal-rate-limits). {/* SCHEMA_SYNC_START: admin/code_hosts/gitlab.schema.json */} {/* WARNING: This section is auto-generated during releases. Do not edit manually. */} -{/* Last updated: 2026-02-25T13:48:43Z */} +{/* Last updated: 2026-02-27T21:45:19Z */} ```json { // If non-null, enforces GitLab repository permissions. This requires that there be an item in the `auth.providers` field of type "gitlab" with the same `url` field as specified in this `GitLabConnection`. diff --git a/docs/admin/code-hosts/gitolite.mdx b/docs/admin/code-hosts/gitolite.mdx index 284436d00..9e9044421 100644 --- a/docs/admin/code-hosts/gitolite.mdx +++ b/docs/admin/code-hosts/gitolite.mdx @@ -25,7 +25,7 @@ To connect Gitolite to Sourcegraph: {/* SCHEMA_SYNC_START: admin/code_hosts/gitolite.schema.json */} {/* WARNING: This section is auto-generated during releases. Do not edit manually. */} -{/* Last updated: 2026-02-25T13:48:43Z */} +{/* Last updated: 2026-02-27T21:45:19Z */} ```json { // A list of repositories to never mirror from this Gitolite instance. Supports excluding by exact name ({"name": "foo"}). diff --git a/docs/admin/code-hosts/other.mdx b/docs/admin/code-hosts/other.mdx index 723cb343f..97d48ee76 100644 --- a/docs/admin/code-hosts/other.mdx +++ b/docs/admin/code-hosts/other.mdx @@ -68,7 +68,7 @@ Repositories must be listed individually: {/* SCHEMA_SYNC_START: admin/code_hosts/other_external_service.schema.json */} {/* WARNING: This section is auto-generated during releases. Do not edit manually. */} -{/* Last updated: 2026-02-25T13:48:43Z */} +{/* Last updated: 2026-02-27T21:45:19Z */} ```json { // A list of repositories to never mirror by name after applying repositoryPathPattern. Supports excluding by exact name ({"name": "myrepo"}) or regular expression ({"pattern": ".*secret.*"}). diff --git a/docs/admin/code-hosts/phabricator.mdx b/docs/admin/code-hosts/phabricator.mdx index d940f8fcb..e520a21f6 100644 --- a/docs/admin/code-hosts/phabricator.mdx +++ b/docs/admin/code-hosts/phabricator.mdx @@ -76,7 +76,7 @@ The Sourcegraph instance's site admin must [update the `corsOrigin` site config {/* SCHEMA_SYNC_START: admin/code_hosts/phabricator.schema.json */} {/* WARNING: This section is auto-generated during releases. Do not edit manually. */} -{/* Last updated: 2026-02-25T13:48:43Z */} +{/* Last updated: 2026-02-27T21:45:19Z */} ```json { // SSH cipher to use when cloning via SSH. Must be a valid choice from `ssh -Q cipher`. diff --git a/docs/admin/config/settings.mdx b/docs/admin/config/settings.mdx index 63f31a5e5..8d2c75797 100644 --- a/docs/admin/config/settings.mdx +++ b/docs/admin/config/settings.mdx @@ -27,7 +27,7 @@ Settings options and their default values are shown below. {/* SCHEMA_SYNC_START: admin/config/settings.schema.json */} {/* WARNING: This section is auto-generated during releases. Do not edit manually. */} -{/* Last updated: 2026-02-25T13:48:43Z */} +{/* Last updated: 2026-02-27T21:45:19Z */} ```json { @@ -99,6 +99,7 @@ Settings options and their default values are shown below. "searchQueryInput": "v1", "searchResultsAggregations": false, "showCodeMonitoringLogs": false, + "smartHover": true, "symbolKindTags": false }, diff --git a/docs/admin/config/site-config.mdx b/docs/admin/config/site-config.mdx index 20ce60a37..1c758ce6d 100644 --- a/docs/admin/config/site-config.mdx +++ b/docs/admin/config/site-config.mdx @@ -21,7 +21,7 @@ All site configuration options and their default values are shown below. {/* SCHEMA_SYNC_START: admin/config/site.schema.json */} {/* WARNING: This section is auto-generated during releases. Do not edit manually. */} -{/* Last updated: 2026-02-25T13:48:43Z */} +{/* Last updated: 2026-02-27T21:45:19Z */} ```json { @@ -171,6 +171,12 @@ All site configuration options and their default values are shown below. // - 20 "debug.search.symbolsParallelism": 0, + // Enable/disable the Deep Search feature + "deepSearch.enabled": false, + + // Enable/disable sharing of Deep Search conversations via read tokens + "deepSearch.sharing.enabled": false, + // Use database-backed worker for Deep Search question processing instead of in-memory worker pool. Enables persistence across frontend restarts. "deepSearch.worker.enabled": true, diff --git a/docs/admin/pings.mdx b/docs/admin/pings.mdx index 82bda5224..455f9a516 100644 --- a/docs/admin/pings.mdx +++ b/docs/admin/pings.mdx @@ -4,7 +4,7 @@ Sourcegraph periodically sends a ping to `pings.sourcegraph.com` to help our pro Sourcegraph will also periodically perform a license verification check, to verify the validity of the configured Sourcegraph license. Tampering with these checks, or preventing them from occuring, will cause Sourcegraph to disable many features until a successful check is completed. Certain Enterprise licenses can request to be exempt from these license verification checks. -To learn more about all types of telemetry emitted by Sourcegraph instances, [Telemetry docs](./telemetry.mdx). +To learn more about all types of telemetry emitted by Sourcegraph instances, [Telemetry docs](./telemetry/index.mdx). ## Ping payloads @@ -213,7 +213,7 @@ Sourcegraph aggregates usage and performance metrics for some product features i ## Allowlist IPs / CIDR Ranges for Sourcegraph -Refer to the [Telemetry docs](./telemetry.mdx) for the list of ranges to allowlist. +Refer to the [Telemetry docs](./telemetry/index.mdx) for the list of ranges to allowlist. ## Using an HTTP proxy for ping requests diff --git a/docs/admin/repo/perforce.mdx b/docs/admin/repo/perforce.mdx index 090c6edc8..bc8420492 100644 --- a/docs/admin/repo/perforce.mdx +++ b/docs/admin/repo/perforce.mdx @@ -228,7 +228,7 @@ With this setting, Sourcegraph will ignore any rules with a host other than `*`, {/* SCHEMA_SYNC_START: admin/code_hosts/perforce.schema.json */} {/* WARNING: This section is auto-generated during releases. Do not edit manually. */} -{/* Last updated: 2026-02-25T13:48:43Z */} +{/* Last updated: 2026-02-27T21:45:19Z */} ```json { // If non-null, enforces Perforce depot permissions. diff --git a/docs/admin/telemetry.mdx b/docs/admin/telemetry/index.mdx similarity index 94% rename from docs/admin/telemetry.mdx rename to docs/admin/telemetry/index.mdx index d6c1c102e..92dd92635 100644 --- a/docs/admin/telemetry.mdx +++ b/docs/admin/telemetry/index.mdx @@ -10,7 +10,7 @@ If you have any questions about telemetry collection, please reach out to your S ## Telemetry Events -Sourcegraph instances 5.2.1 and later collect telemetry events from all Sourcegraph end-user client applications to understand usage patterns and help improve the product. Telemetry events can be generated when certain user actions occur, like opening files or performing searches. This data helps us provide the highest level of support to Sourcegraph's customers, and powers the [Sourcegraph Analytics](../analytics/index.mdx) service. +Sourcegraph instances 5.2.1 and later collect telemetry events from all Sourcegraph end-user client applications to understand usage patterns and help improve the product. Telemetry events can be generated when certain user actions occur, like opening files or performing searches. This data helps us provide the highest level of support to Sourcegraph's customers, and powers the [Sourcegraph Analytics](../../analytics/index.mdx) service. Sensitive data/PII exfiltration, intentional or not, is a significant concern to Sourcegraph that we take very seriously. Some of the measures we take to ensure privacy and data security are: @@ -33,4 +33,4 @@ Prior to 5.2.0, allowlist the full [Cloudflare IP ranges](https://www.cloudflare ## Architecture -To learn more about how telemetry data if handled, refer to the [Architecture page](./architecture.mdx#analytics-and-telemetry). +To learn more about how telemetry data if handled, refer to the [Architecture page](../../admin/architecture.mdx#analytics-and-telemetry). diff --git a/docs/admin/telemetry/protocol.mdx b/docs/admin/telemetry/protocol.mdx new file mode 100644 index 000000000..3399d9d3e --- /dev/null +++ b/docs/admin/telemetry/protocol.mdx @@ -0,0 +1,643 @@ +# Telemetry protocol + + +This page contains the core schema for telemetry event data that gets exported from Sourcegraph. + +To learn more, refer to our [telemetry documentation](https://sourcegraph.com/docs/telemetry). + +## Table of Contents + +- [Event](#telemetrygateway-v1-Event) +- [EventBillingMetadata](#telemetrygateway-v1-EventBillingMetadata) +- [EventFeatureFlags](#telemetrygateway-v1-EventFeatureFlags) +- [EventFeatureFlags.FlagsEntry](#telemetrygateway-v1-EventFeatureFlags-FlagsEntry) +- [EventInteraction](#telemetrygateway-v1-EventInteraction) +- [EventInteraction.Geolocation](#telemetrygateway-v1-EventInteraction-Geolocation) +- [EventMarketingTracking](#telemetrygateway-v1-EventMarketingTracking) +- [EventParameters](#telemetrygateway-v1-EventParameters) +- [EventParameters.LegacyMetadataEntry](#telemetrygateway-v1-EventParameters-LegacyMetadataEntry) +- [EventParameters.MetadataEntry](#telemetrygateway-v1-EventParameters-MetadataEntry) +- [EventSource](#telemetrygateway-v1-EventSource) +- [EventSource.Client](#telemetrygateway-v1-EventSource-Client) +- [EventSource.Server](#telemetrygateway-v1-EventSource-Server) +- [EventSource.Server.RequestClient](#telemetrygateway-v1-EventSource-Server-RequestClient) +- [EventUser](#telemetrygateway-v1-EventUser) +- [Identifier](#telemetrygateway-v1-Identifier) +- [Identifier.LicensedInstanceIdentifier](#telemetrygateway-v1-Identifier-LicensedInstanceIdentifier) +- [Identifier.ManagedServiceIdentifier](#telemetrygateway-v1-Identifier-ManagedServiceIdentifier) +- [Identifier.UnlicensedInstanceIdentifier](#telemetrygateway-v1-Identifier-UnlicensedInstanceIdentifier) +- [Identifier.WorkspaceIdentifier](#telemetrygateway-v1-Identifier-WorkspaceIdentifier) +- [InstanceOrganizationMetadata](#telemetrygateway-v1-InstanceOrganizationMetadata) +- [InstanceUserMetadata](#telemetrygateway-v1-InstanceUserMetadata) +- [PublishInstanceUserMetadataRequest](#telemetrygateway-v1-PublishInstanceUserMetadataRequest) +- [PublishInstanceUserMetadataRequest.OrganizationMetadataPayload](#telemetrygateway-v1-PublishInstanceUserMetadataRequest-OrganizationMetadataPayload) +- [PublishInstanceUserMetadataRequest.UserMetadataPayload](#telemetrygateway-v1-PublishInstanceUserMetadataRequest-UserMetadataPayload) +- [PublishInstanceUserMetadataRequestMetadata](#telemetrygateway-v1-PublishInstanceUserMetadataRequestMetadata) +- [PublishInstanceUserMetadataResponse](#telemetrygateway-v1-PublishInstanceUserMetadataResponse) +- [RecordEventRequest](#telemetrygateway-v1-RecordEventRequest) +- [RecordEventResponse](#telemetrygateway-v1-RecordEventResponse) +- [RecordEventsRequest](#telemetrygateway-v1-RecordEventsRequest) +- [RecordEventsRequest.EventsPayload](#telemetrygateway-v1-RecordEventsRequest-EventsPayload) +- [RecordEventsRequestMetadata](#telemetrygateway-v1-RecordEventsRequestMetadata) +- [RecordEventsResponse](#telemetrygateway-v1-RecordEventsResponse) + +- [Scalar Value Types](#scalar-value-types) + + + + + + + +### Event + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| id | [string](#string) | |

Generated ID of the event, currently expected to be UUID v4.

| +| timestamp | [google.protobuf.Timestamp](#google-protobuf-Timestamp) | |

Timestamp of when the original event was recorded.

| +| feature | [string](#string) | |

Feature associated with the event in camelCase, e.g. 'myFeature'.

| +| action | [string](#string) | |

Action associated with the event in camelCase, e.g. 'pageView'.

| +| source | [EventSource](#telemetrygateway-v1-EventSource) | |

Source of the event.

| +| parameters | [EventParameters](#telemetrygateway-v1-EventParameters) | |

Parameters of the event.

| +| user | [EventUser](#telemetrygateway-v1-EventUser) | optional |

Optional user associated with the event.

This field should be hydrated by the Sourcegraph server, and not provided

by clients.

| +| feature_flags | [EventFeatureFlags](#telemetrygateway-v1-EventFeatureFlags) | optional |

Optional feature flags configured in the context of the event.

| +| marketing_tracking | [EventMarketingTracking](#telemetrygateway-v1-EventMarketingTracking) | optional |

Optional marketing campaign tracking parameters.

🚨 SECURITY: This metadata is NEVER exported from single-tenant Sourcegraph

instances, and is only exported for events tracked in the public

Sourcegraph.com instance and managed services.

| +| interaction | [EventInteraction](#telemetrygateway-v1-EventInteraction) | optional |

Optional metadata identifying the interaction that generated the event.

| + + + + + + + + +### EventBillingMetadata + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| product | [string](#string) | |

Billing product ID associated with the event.

| +| category | [string](#string) | |

Billing category ID the event falls into.

| + + + + + + + + +### EventFeatureFlags + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| flags | [EventFeatureFlags.FlagsEntry](#telemetrygateway-v1-EventFeatureFlags-FlagsEntry) | repeated |

Evaluated feature flags. In Soucegraph we currently only support boolean

feature flags, but in the API we allow arbitrary string values for future

extensibility.

This field should be hydrated by the Sourcegraph server, and not provided

by clients.

| + + + + + + + + +### EventFeatureFlags.FlagsEntry + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| key | [string](#string) | |

| +| value | [string](#string) | |

| + + + + + + + + +### EventInteraction + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| trace_id | [string](#string) | optional |

OpenTelemetry trace ID representing the interaction associated with the event.

| +| interaction_id | [string](#string) | optional |

Custom interaction ID representing the interaction associated with the event.

| +| geolocation | [EventInteraction.Geolocation](#telemetrygateway-v1-EventInteraction-Geolocation) | optional |

Geolocation associated with the interaction, typically inferred from the

originating client's IP address (which we do not collect).

| +| parent_interaction_id | [string](#string) | optional |

Parent interaction ID for tracking nested/sub-agent calls.

| +| root_interaction_id | [string](#string) | optional |

Root interaction ID identifying the first interaction in the chain.

If there is no parent, root_interaction_id equals interaction_id.

| +| session_id | [string](#string) | optional |

Session identifier from sourcegraphSessionId cookie, used for

session-level event correlation.

| + + + + + + + + +### EventInteraction.Geolocation + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| country_code | [string](#string) | |

Inferred ISO 3166-1 alpha-2 or alpha-3 country code

| + + + + + + + + +### EventMarketingTracking +Marketing campaign tracking metadata. + +🚨 SECURITY: This metadata is NEVER exported from single-tenant Sourcegraph +instances, and is only exported for events tracked in the public +Sourcegraph.com instance and managed services. + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| url | [string](#string) | optional |

URL the event occurred on.

| +| cohort_id | [string](#string) | optional |

Cohort ID to identify the user as part of a specific A/B test.

| +| referrer | [string](#string) | optional |

Referrer URL that refers the user to Sourcegraph.

| +| last_page_seen_url | [string](#string) | optional |

URL the user last visited, in their current session.

| +| most_recent_referrer_url | [string](#string) | optional |

Most recent referrer URL, in their current session

| +| first_page_seen_url | [string](#string) | optional |

First URL the user visited, in their current session.

| +| utm_campaign | [string](#string) | optional |

UTM campaign tracking parameters, in their current session.

| +| utm_content | [string](#string) | optional |

UTM content tracking parameters, in their current session.

| +| utm_medium | [string](#string) | optional |

UTM medium tracking parameters, in their current session.

| +| utm_source | [string](#string) | optional |

UTM source tracking parameters, in their current session.

| +| utm_term | [string](#string) | optional |

UTM term tracking parameters, in their current session.

| + + + + + + + + +### EventParameters + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| version | [int32](#int32) | |

Version of the event parameters, used for indicating the "shape" of this

event's metadata, beginning at 0. Useful for denoting if the shape of

metadata has changed in any way.

| +| legacy_metadata | [EventParameters.LegacyMetadataEntry](#telemetrygateway-v1-EventParameters-LegacyMetadataEntry) | repeated | **Deprecated.**

DEPRECATED, legacy metadata format that only accepted int64 - use the new

'metadata' field instead, which accepts float values. Values sent through

this proto field will be merged into the new metadata attributes.

| +| metadata | [EventParameters.MetadataEntry](#telemetrygateway-v1-EventParameters-MetadataEntry) | repeated |

Strictly typed metadata, restricted to integer values to avoid accidentally

exporting sensitive or private data.

| +| private_metadata | [google.protobuf.Struct](#google-protobuf-Struct) | optional |

Additional potentially sensitive metadata - i.e. not restricted to integer

values.

🚨 SECURITY: This metadata is NOT exported from instances by default, as it

can contain arbitrarily-shaped data that may accidentally contain sensitive

or private contents.

This metadata is only exported on an allowlist basis based on terms of

use agreements and combinations of event feature and action, alongside

careful audit of callsites.

| +| billing_metadata | [EventBillingMetadata](#telemetrygateway-v1-EventBillingMetadata) | optional |

Optional billing-related metadata.

| + + + + + + + + +### EventParameters.LegacyMetadataEntry + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| key | [string](#string) | |

| +| value | [int64](#int64) | |

| + + + + + + + + +### EventParameters.MetadataEntry + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| key | [string](#string) | |

| +| value | [double](#double) | |

| + + + + + + + + +### EventSource + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| server | [EventSource.Server](#telemetrygateway-v1-EventSource-Server) | |

Information about the server that is publishing the event, based on

RecordEventsRequestMetadata.Identifier.

| +| client | [EventSource.Client](#telemetrygateway-v1-EventSource-Client) | optional |

Information about the client that generated the event.

| + + + + + + + + +### EventSource.Client + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| name | [string](#string) | |

Source client of the event.

| +| version | [string](#string) | optional |

Version of the client.

| + + + + + + + + +### EventSource.Server + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| version | [string](#string) | |

Version of the server emitting the event, corresponding to

RecordEventsRequestMetadata.Identifier. For example, if the Identifier

indicates the publisher is a Sourcegraph instance, the version represents

the version of the Sourcegraph server.

| +| request_client | [EventSource.Server.RequestClient](#telemetrygateway-v1-EventSource-Server-RequestClient) | optional |

Information about the original client that made the request that triggered

this serverside event.

| + + + + + + + + +### EventSource.Server.RequestClient + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| user_agent | [string](#string) | |

The user agent of the original client that made the request that triggered

this serverside event.

| +| api_client_name | [string](#string) | |

The name of the original client that made the request that triggered

this serverside event.

| +| api_client_version | [string](#string) | |

The version of the original client that made the request that triggered

this serverside event.

| +| requested_with | [string](#string) | |

The X-Requested-With header from the original client that made the request

that triggered this serverside event.

| +| api_client_feature | [string](#string) | |

The client-reported feature from the original client that made the request

that triggered this serverside event.

| + + + + + + + + +### EventUser +EventUser represents a user in the context of an event, and thus must be free +of sensitive sensitive metadata and PII about the user. + +PublishInstanceUserMetadata is used to allow instances to submit additional +metadata about users for instances that consent to it. + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| user_id | [int64](#int64) | optional |

Sourcegraph instance database user ID of the user. User IDs are specific to

a Sourcegraph instance, and are not universal across Sourcegraph instances.

We use an int64 as an ID because in Sourcegraph, database user IDs are

always integers.

| +| anonymous_user_id | [string](#string) | optional |

Randomized unique identifier representing the user (typically stored in

localstorage in web clients, or similar mechanisms elsewhere). This is

often used for unauthenticated users, but can persist to authenticated

users as well.

| +| sams_external_id | [string](#string) | optional |

Sourcegraph Accounts Management System (SAMS) account associated with the

user, represented by a SAMS external user ID in a UUID format. This is only

valid for services leveraging SAMS as an identity provider - in other words,

traditional Sourcegraph instances will not provide this.

Learn more about SAMS: https://handbook.sourcegraph.com/departments/engineering/teams/core-services/sams

| + + + + + + + + +### Identifier + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| licensed_instance | [Identifier.LicensedInstanceIdentifier](#telemetrygateway-v1-Identifier-LicensedInstanceIdentifier) | |

A licensed Sourcegraph instance.

| +| unlicensed_instance | [Identifier.UnlicensedInstanceIdentifier](#telemetrygateway-v1-Identifier-UnlicensedInstanceIdentifier) | |

An unlicensed Sourcegraph instance.

| +| managed_service | [Identifier.ManagedServiceIdentifier](#telemetrygateway-v1-Identifier-ManagedServiceIdentifier) | |

A service operated and managed by the Sourcegraph team, for example

a service deployed by MSP: https://handbook.sourcegraph.com/departments/engineering/teams/core-services/managed-services/platform/

Valid SAMS client credentials are required to publish events under a

managed service identifier. The required scope is

'telemetry_gateway::events::publish'. See go/sams-client-credentials and

go/sams-token-scopes for more information.

| +| workspace | [Identifier.WorkspaceIdentifier](#telemetrygateway-v1-Identifier-WorkspaceIdentifier) | |

A workspace within a tenant host.

Valid SAMS client credentials are required to publish events under a

workspace identifier. The required scope is

'telemetry_gateway::events::publish'. See go/sams-client-credentials and

go/sams-token-scopes for more information.

| + + + + + + + + +### Identifier.LicensedInstanceIdentifier + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| license_key | [string](#string) | |

License key configured in the Sourcegraph instance emitting the event.

| +| instance_id | [string](#string) | |

Self-reported Sourcegraph instance identifier.

| +| external_url | [string](#string) | |

Instance external URL defined in the instance site configuration.

| + + + + + + + + +### Identifier.ManagedServiceIdentifier + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| service_id | [string](#string) | |

Self-reported service identifier, for example 'my-service'.

| +| service_environment | [string](#string) | optional |

Self-reported service environment, for example 'prod' or 'dev'.

| + + + + + + + + +### Identifier.UnlicensedInstanceIdentifier + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| instance_id | [string](#string) | |

Self-reported Sourcegraph instance identifier.

| +| external_url | [string](#string) | |

Instance external URL defined in the instance site configuration.

| + + + + + + + + +### Identifier.WorkspaceIdentifier + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| workspace_id | [string](#string) | |

Self-reported Sourcegraph workspace identifier, for example 'ws_$UUID'.

| +| external_url | [string](#string) | |

The workspace's assigned external URL.

| + + + + + + + + +### InstanceOrganizationMetadata + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| id | [int64](#int64) | |

Internal ID of the organization from the 'orgs' table.

| +| name | [string](#string) | |

Name of the organization.

| +| display_name | [string](#string) | |

Display name of the organization.

| +| user_ids | [int64](#int64) | repeated |

The IDs of users that are members of this organization. We allow a single

repeated set here as the repeated ID-only format should be fairly compact

for realistic scenarios.

| + + + + + + + + +### InstanceUserMetadata + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| id | [int64](#int64) | |

Internal ID of the user from the 'users' table.

| +| username | [string](#string) | |

Username of the user.

| +| primary_email | [string](#string) | |

Primary email of the user.

| +| assigned_rbac_roles | [string](#string) | repeated |

Assigned RBAC roles for the user.

| + + + + + + + + +### PublishInstanceUserMetadataRequest + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| metadata | [PublishInstanceUserMetadataRequestMetadata](#telemetrygateway-v1-PublishInstanceUserMetadataRequestMetadata) | |

Metadata about the events being recorded.

| +| user_metadata | [PublishInstanceUserMetadataRequest.UserMetadataPayload](#telemetrygateway-v1-PublishInstanceUserMetadataRequest-UserMetadataPayload) | |

Batch of user metadata to publish in a single message. Clients should aim

to batch large uploads into a series of smaller requests in the RecordEvents

stream, being mindful of common limits in individual message sizes:

https://protobuf.dev/programming-guides/api/#bound-req-res-sizes

🚨 SECURITY: Callers exporting for single-tenant Sourcegraph should always

respect in-instance toggles for what user metadata should be exported.

| +| organization_metadata | [PublishInstanceUserMetadataRequest.OrganizationMetadataPayload](#telemetrygateway-v1-PublishInstanceUserMetadataRequest-OrganizationMetadataPayload) | |

Batch of organization metadata to publish in a single message. Clients

should aim to batch large uploads into a series of smaller requests in the

RecordEvents stream, being mindful of common limits in individual message

sizes: https://protobuf.dev/programming-guides/api/#bound-req-res-sizes

🚨 SECURITY: Callers exporting for single-tenant Sourcegraph should always

respect in-instance toggles for what user metadata should be exported.

| + + + + + + + + +### PublishInstanceUserMetadataRequest.OrganizationMetadataPayload + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| organizations | [InstanceOrganizationMetadata](#telemetrygateway-v1-InstanceOrganizationMetadata) | repeated |

Organization metadata from the 'orgs' table in a Sourcegraph instance.

| + + + + + + + + +### PublishInstanceUserMetadataRequest.UserMetadataPayload + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| users | [InstanceUserMetadata](#telemetrygateway-v1-InstanceUserMetadata) | repeated |

User metadata from the 'users' table in a Sourcegraph instance.

| + + + + + + + + +### PublishInstanceUserMetadataRequestMetadata + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| request_id | [string](#string) | |

Client-provided request identifier for diagnostics purposes.

| +| identifier | [Identifier](#telemetrygateway-v1-Identifier) | |

Telemetry publisher self-identification. Only LicensedInstanceIdentifier

and UnlicensedInstanceIdentifier are accepted for this RPC.

| + + + + + + + + +### PublishInstanceUserMetadataResponse + + + + + + + + + +### RecordEventRequest + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| metadata | [RecordEventsRequestMetadata](#telemetrygateway-v1-RecordEventsRequestMetadata) | |

Metadata about the events being recorded.

| +| event | [Event](#telemetrygateway-v1-Event) | |

Event to record.

| + + + + + + + + +### RecordEventResponse + + + + + + + + + +### RecordEventsRequest + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| metadata | [RecordEventsRequestMetadata](#telemetrygateway-v1-RecordEventsRequestMetadata) | |

Metadata about the events being recorded.

| +| events | [RecordEventsRequest.EventsPayload](#telemetrygateway-v1-RecordEventsRequest-EventsPayload) | |

Batch of events to record in a single request. Clients should aim to

batch large event backlogs into a series of smaller requests in the

RecordEvents stream, being mindful of common limits in individual message

sizes: https://protobuf.dev/programming-guides/api/#bound-req-res-sizes

| + + + + + + + + +### RecordEventsRequest.EventsPayload + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| events | [Event](#telemetrygateway-v1-Event) | repeated |

| + + + + + + + + +### RecordEventsRequestMetadata + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| request_id | [string](#string) | |

Client-provided request identifier for diagnostics purposes.

| +| identifier | [Identifier](#telemetrygateway-v1-Identifier) | |

Telemetry publisher self-identification - for example, a Sourcegraph

instance of some other kind of service.

| + + + + + + + + +### RecordEventsResponse + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| succeeded_events | [string](#string) | repeated |

IDs of all events that were successfully recorded in the request.

Note that if succeeded_events is a subset of events that were submitted,

then some events failed to record and should be retried.

| + + + + + + {/* end messages */} + + {/* end enums */} + + {/* end HasExtensions */} + + + + +### TelemeteryGatewayService + + +| Method Name | Request Type | Response Type | Description | +| ----------- | ------------ | ------------- | ------------| +| RecordEvents | [RecordEventsRequest](#telemetrygateway-v1-RecordEventsRequest) stream | [RecordEventsResponse](#telemetrygateway-v1-RecordEventsResponse) stream |

RecordEvents streams telemetry events in batches to the Telemetry Gateway

service. Events should only be considered delivered if recording is

acknowledged in RecordEventsResponse.

This is the preferred mechanism for exporting large volumes of events in

bulk.

🚨 SECURITY: Callers exporting for single-tenant Sourcegraph should check

the attributes of the Event type to ensure that only the appropriate fields

are exported, as some fields should only be exported on an allowlist basis.

| +| RecordEvent | [RecordEventRequest](#telemetrygateway-v1-RecordEventRequest) | [RecordEventResponse](#telemetrygateway-v1-RecordEventResponse) |

RecordEvent records a single telemetry event to the Telemetry Gateway service.

If the RPC succeeds, then the event was successfully published.

This RPC currently ONLY accepts events published by ManagedServiceIdentifier,

as this mechanism is intended for low-volume managed services. Higher-volume

use cases should implement a batching mechanism and use the RecordEvents

RPC instead.

🚨 SECURITY: Callers exporting for single-tenant Sourcegraph should check

the attributes of the Event type to ensure that only the appropriate fields

are exported, as some fields should only be exported on an allowlist basis.

| +| PublishInstanceUserMetadata | [PublishInstanceUserMetadataRequest](#telemetrygateway-v1-PublishInstanceUserMetadataRequest) stream | [PublishInstanceUserMetadataResponse](#telemetrygateway-v1-PublishInstanceUserMetadataResponse) |

PublishInstanceUserMetadata uploads additional user metadata from a

Sourcegraph instance. This matadata is used to enrich recorded events with

attributes that are considered sensitive and thus not part of the RecordEvents

and RecordEvent RPCs.

🚨 SECURITY: Callers exporting for single-tenant Sourcegraph should always

respect in-instance toggles for what user metadata should be exported.

| + + {/* end services */} + + + +## Scalar Value Types + +| .proto Type | Notes | +| ----------- | ----- | +| double | | +| float | | +| int32 | Uses variable-length encoding. Inefficient for encoding negative numbers – if your field is likely to have negative values, use sint32 instead. | +| int64 | Uses variable-length encoding. Inefficient for encoding negative numbers – if your field is likely to have negative values, use sint64 instead. | +| uint32 | Uses variable-length encoding. | +| uint64 | Uses variable-length encoding. | +| sint32 | Uses variable-length encoding. Signed int value. These more efficiently encode negative numbers than regular int32s. | +| sint64 | Uses variable-length encoding. Signed int value. These more efficiently encode negative numbers than regular int64s. | +| fixed32 | Always four bytes. More efficient than uint32 if values are often greater than 2^28. | +| fixed64 | Always eight bytes. More efficient than uint64 if values are often greater than 2^56. | +| sfixed32 | Always four bytes. | +| sfixed64 | Always eight bytes. | +| bool | | +| string | A string must always contain UTF-8 encoded or 7-bit ASCII text. | +| bytes | May contain any arbitrary sequence of bytes. | diff --git a/docs/cody/capabilities/supported-models.mdx b/docs/cody/capabilities/supported-models.mdx index 19ab2548a..5ebedcc71 100644 --- a/docs/cody/capabilities/supported-models.mdx +++ b/docs/cody/capabilities/supported-models.mdx @@ -28,6 +28,8 @@ Cody supports a variety of cutting-edge large language models for use in chat an | Google | [Gemini 2.5 Pro](https://cloud.google.com/vertex-ai/generative-ai/docs/models/gemini/2-5-pro) | ✅ | ✅ | | Google | [Gemini 3 Pro](https://cloud.google.com/vertex-ai/generative-ai/docs/models/gemini/3-pro) | ✅ (experimental) | ❌ | | Google | [Gemini 3 Flash](https://cloud.google.com/vertex-ai/generative-ai/docs/models/gemini/3-flash) | ✅ (experimental) | ❌ | +| Google | [Gemini 3.1 Pro](https://cloud.google.com/vertex-ai/generative-ai/docs/models/gemini/3-1-pro) | ✅ (experimental) | ❌ | +| OpenAI | [GPT-5.2](https://platform.openai.com/docs/models/gpt-5.2) | ✅ | ✅ | | OpenAI | [GPT-5.1](https://platform.openai.com/docs/models/gpt-5.1) | ✅ | ✅ | | OpenAI | [GPT-5](https://platform.openai.com/docs/models/gpt-5) | ✅ | ✅ | | OpenAI | [GPT-5 mini](https://platform.openai.com/docs/models/gpt-5-mini) | ✅ | ✅ | From 72e6a9ffc76fcd7c993392a3be28ce3114fc256a Mon Sep 17 00:00:00 2001 From: sourcegraph-buildkite <71296199+sourcegraph-buildkite@users.noreply.github.com> Date: Sat, 28 Feb 2026 03:04:49 +0200 Subject: [PATCH 026/217] =?UTF-8?q?=F0=9F=A4=96=20Sync=20generated=20docs?= =?UTF-8?q?=20from=20sourcegraph/sourcegraph=20(2026-02-28/00-57-04)=20(#1?= =?UTF-8?q?656)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This is an automated pull request, created by //doc:generated.push on sourcegraph/sourcegraph Co-authored-by: Buildkite --- docs/admin/code-hosts/aws-codecommit.mdx | 2 +- docs/admin/code-hosts/azuredevops.mdx | 2 +- docs/admin/code-hosts/bitbucket-cloud.mdx | 2 +- docs/admin/code-hosts/bitbucket-server.mdx | 2 +- docs/admin/code-hosts/gerrit.mdx | 2 +- docs/admin/code-hosts/github.mdx | 2 +- docs/admin/code-hosts/gitlab.mdx | 2 +- docs/admin/code-hosts/gitolite.mdx | 2 +- docs/admin/code-hosts/other.mdx | 2 +- docs/admin/code-hosts/phabricator.mdx | 2 +- docs/admin/config/settings.mdx | 2 +- docs/admin/config/site-config.mdx | 2 +- docs/admin/repo/perforce.mdx | 2 +- .../telemetry/private-metadata-allowlist.mdx | 35 +++++++++++++++++++ docs/admin/telemetry/protocol.mdx | 13 +++---- 15 files changed, 55 insertions(+), 19 deletions(-) create mode 100644 docs/admin/telemetry/private-metadata-allowlist.mdx diff --git a/docs/admin/code-hosts/aws-codecommit.mdx b/docs/admin/code-hosts/aws-codecommit.mdx index 478ed0259..50e15a8e6 100644 --- a/docs/admin/code-hosts/aws-codecommit.mdx +++ b/docs/admin/code-hosts/aws-codecommit.mdx @@ -37,7 +37,7 @@ AWS CodeCommit connections support the following configuration options, which ar {/* SCHEMA_SYNC_START: admin/code_hosts/aws_codecommit.schema.json */} {/* WARNING: This section is auto-generated during releases. Do not edit manually. */} -{/* Last updated: 2026-02-27T21:45:19Z */} +{/* Last updated: 2026-02-28T00:57:04Z */} ```json { // REQUIRED: diff --git a/docs/admin/code-hosts/azuredevops.mdx b/docs/admin/code-hosts/azuredevops.mdx index 30df9ea8a..f70ea2bb7 100644 --- a/docs/admin/code-hosts/azuredevops.mdx +++ b/docs/admin/code-hosts/azuredevops.mdx @@ -65,7 +65,7 @@ Azure DevOps connections support the following configuration options, which are {/* SCHEMA_SYNC_START: admin/code_hosts/azuredevops.schema.json */} {/* WARNING: This section is auto-generated during releases. Do not edit manually. */} -{/* Last updated: 2026-02-27T21:45:19Z */} +{/* Last updated: 2026-02-28T00:57:04Z */} ```json // Authentication alternatives: token OR windowsPassword diff --git a/docs/admin/code-hosts/bitbucket-cloud.mdx b/docs/admin/code-hosts/bitbucket-cloud.mdx index 9712a8f3d..a7e33e73b 100644 --- a/docs/admin/code-hosts/bitbucket-cloud.mdx +++ b/docs/admin/code-hosts/bitbucket-cloud.mdx @@ -116,7 +116,7 @@ Bitbucket Cloud connections support the following configuration options, which a {/* SCHEMA_SYNC_START: admin/code_hosts/bitbucket_cloud.schema.json */} {/* WARNING: This section is auto-generated during releases. Do not edit manually. */} -{/* Last updated: 2026-02-27T21:45:19Z */} +{/* Last updated: 2026-02-28T00:57:04Z */} ```json { // The workspace access token to use when authenticating with Bitbucket Cloud. diff --git a/docs/admin/code-hosts/bitbucket-server.mdx b/docs/admin/code-hosts/bitbucket-server.mdx index f34e0927d..226ec3f8a 100644 --- a/docs/admin/code-hosts/bitbucket-server.mdx +++ b/docs/admin/code-hosts/bitbucket-server.mdx @@ -202,7 +202,7 @@ Bitbucket Server / Bitbucket Data Center connections support the following confi {/* SCHEMA_SYNC_START: admin/code_hosts/bitbucket_server.schema.json */} {/* WARNING: This section is auto-generated during releases. Do not edit manually. */} -{/* Last updated: 2026-02-27T21:45:19Z */} +{/* Last updated: 2026-02-28T00:57:04Z */} ```json // Authentication alternatives: token OR password diff --git a/docs/admin/code-hosts/gerrit.mdx b/docs/admin/code-hosts/gerrit.mdx index 59623f7ff..988139446 100644 --- a/docs/admin/code-hosts/gerrit.mdx +++ b/docs/admin/code-hosts/gerrit.mdx @@ -113,7 +113,7 @@ Gerrit connections support the following configuration options, which are specif {/* SCHEMA_SYNC_START: admin/code_hosts/gerrit.schema.json */} {/* WARNING: This section is auto-generated during releases. Do not edit manually. */} -{/* Last updated: 2026-02-27T21:45:19Z */} +{/* Last updated: 2026-02-28T00:57:04Z */} ```json { // If non-null, enforces Gerrit repository permissions. This requires that there is an item in the [site configuration json](https://sourcegraph.com/docs/admin/config/site_config#auth-providers) `auth.providers` field, of type "gerrit" with the same `url` field as specified in this `GerritConnection`. diff --git a/docs/admin/code-hosts/github.mdx b/docs/admin/code-hosts/github.mdx index e2f675e6a..961d1252b 100644 --- a/docs/admin/code-hosts/github.mdx +++ b/docs/admin/code-hosts/github.mdx @@ -454,7 +454,7 @@ GitHub connections support the following configuration options, which are specif {/* SCHEMA_SYNC_START: admin/code_hosts/github.schema.json */} {/* WARNING: This section is auto-generated during releases. Do not edit manually. */} -{/* Last updated: 2026-02-27T21:45:19Z */} +{/* Last updated: 2026-02-28T00:57:04Z */} ```json // Authentication alternatives: token OR gitHubAppDetails OR externalAccount OR useRandomExternalAccount diff --git a/docs/admin/code-hosts/gitlab.mdx b/docs/admin/code-hosts/gitlab.mdx index 172c43e3d..59f489785 100644 --- a/docs/admin/code-hosts/gitlab.mdx +++ b/docs/admin/code-hosts/gitlab.mdx @@ -189,7 +189,7 @@ See [Internal rate limits](/admin/code-hosts/rate-limits#internal-rate-limits). {/* SCHEMA_SYNC_START: admin/code_hosts/gitlab.schema.json */} {/* WARNING: This section is auto-generated during releases. Do not edit manually. */} -{/* Last updated: 2026-02-27T21:45:19Z */} +{/* Last updated: 2026-02-28T00:57:04Z */} ```json { // If non-null, enforces GitLab repository permissions. This requires that there be an item in the `auth.providers` field of type "gitlab" with the same `url` field as specified in this `GitLabConnection`. diff --git a/docs/admin/code-hosts/gitolite.mdx b/docs/admin/code-hosts/gitolite.mdx index 9e9044421..1819dd0dd 100644 --- a/docs/admin/code-hosts/gitolite.mdx +++ b/docs/admin/code-hosts/gitolite.mdx @@ -25,7 +25,7 @@ To connect Gitolite to Sourcegraph: {/* SCHEMA_SYNC_START: admin/code_hosts/gitolite.schema.json */} {/* WARNING: This section is auto-generated during releases. Do not edit manually. */} -{/* Last updated: 2026-02-27T21:45:19Z */} +{/* Last updated: 2026-02-28T00:57:04Z */} ```json { // A list of repositories to never mirror from this Gitolite instance. Supports excluding by exact name ({"name": "foo"}). diff --git a/docs/admin/code-hosts/other.mdx b/docs/admin/code-hosts/other.mdx index 97d48ee76..26c97f98a 100644 --- a/docs/admin/code-hosts/other.mdx +++ b/docs/admin/code-hosts/other.mdx @@ -68,7 +68,7 @@ Repositories must be listed individually: {/* SCHEMA_SYNC_START: admin/code_hosts/other_external_service.schema.json */} {/* WARNING: This section is auto-generated during releases. Do not edit manually. */} -{/* Last updated: 2026-02-27T21:45:19Z */} +{/* Last updated: 2026-02-28T00:57:04Z */} ```json { // A list of repositories to never mirror by name after applying repositoryPathPattern. Supports excluding by exact name ({"name": "myrepo"}) or regular expression ({"pattern": ".*secret.*"}). diff --git a/docs/admin/code-hosts/phabricator.mdx b/docs/admin/code-hosts/phabricator.mdx index e520a21f6..7f67f75c4 100644 --- a/docs/admin/code-hosts/phabricator.mdx +++ b/docs/admin/code-hosts/phabricator.mdx @@ -76,7 +76,7 @@ The Sourcegraph instance's site admin must [update the `corsOrigin` site config {/* SCHEMA_SYNC_START: admin/code_hosts/phabricator.schema.json */} {/* WARNING: This section is auto-generated during releases. Do not edit manually. */} -{/* Last updated: 2026-02-27T21:45:19Z */} +{/* Last updated: 2026-02-28T00:57:04Z */} ```json { // SSH cipher to use when cloning via SSH. Must be a valid choice from `ssh -Q cipher`. diff --git a/docs/admin/config/settings.mdx b/docs/admin/config/settings.mdx index 8d2c75797..52429d1be 100644 --- a/docs/admin/config/settings.mdx +++ b/docs/admin/config/settings.mdx @@ -27,7 +27,7 @@ Settings options and their default values are shown below. {/* SCHEMA_SYNC_START: admin/config/settings.schema.json */} {/* WARNING: This section is auto-generated during releases. Do not edit manually. */} -{/* Last updated: 2026-02-27T21:45:19Z */} +{/* Last updated: 2026-02-28T00:57:04Z */} ```json { diff --git a/docs/admin/config/site-config.mdx b/docs/admin/config/site-config.mdx index 1c758ce6d..f7d859938 100644 --- a/docs/admin/config/site-config.mdx +++ b/docs/admin/config/site-config.mdx @@ -21,7 +21,7 @@ All site configuration options and their default values are shown below. {/* SCHEMA_SYNC_START: admin/config/site.schema.json */} {/* WARNING: This section is auto-generated during releases. Do not edit manually. */} -{/* Last updated: 2026-02-27T21:45:19Z */} +{/* Last updated: 2026-02-28T00:57:04Z */} ```json { diff --git a/docs/admin/repo/perforce.mdx b/docs/admin/repo/perforce.mdx index bc8420492..bc3814b71 100644 --- a/docs/admin/repo/perforce.mdx +++ b/docs/admin/repo/perforce.mdx @@ -228,7 +228,7 @@ With this setting, Sourcegraph will ignore any rules with a host other than `*`, {/* SCHEMA_SYNC_START: admin/code_hosts/perforce.schema.json */} {/* WARNING: This section is auto-generated during releases. Do not edit manually. */} -{/* Last updated: 2026-02-27T21:45:19Z */} +{/* Last updated: 2026-02-28T00:57:04Z */} ```json { // If non-null, enforces Perforce depot permissions. diff --git a/docs/admin/telemetry/private-metadata-allowlist.mdx b/docs/admin/telemetry/private-metadata-allowlist.mdx new file mode 100644 index 000000000..1838f2aab --- /dev/null +++ b/docs/admin/telemetry/private-metadata-allowlist.mdx @@ -0,0 +1,35 @@ +# Private metadata allowlist + +This document lists all telemetry events that are allowed to export specific `privateMetadata` fields. + +By default, `privateMetadata` is **never** exported from customers +because it can contain arbitrarily-shaped data that may accidentally include sensitive or private contents. The events listed below have been individually reviewed and approved for export of specific private metadata fields only. + +To learn more, refer to the [telemetry documentation](https://sourcegraph.com/docs/telemetry). + +| **Feature** | **Action** | **Allowed `privateMetadata` fields** | +| :---------- | :--------- | :----------------------------------- | +| `cody.completion` | _(all)_ | `languageId` — Provides customers with valuable language-specific insights for code completion usage patterns.
`otherCompletionProviders` — Provides internal teams insights on competitor completion providers customers are using.
`providerModel` — Provides internal teams insights on the specific model used for completions.
`resolvedModel` — The resolved model used for the completion request. | +| `cody.hoverCommands` | visible | `languageId` — Provides customers with valuable language-specific insights for hover command usage patterns. | +| `blob.codeintel` | _(all)_ | `languageId` — Provides customers with valuable language-specific insights for code intelligence usage patterns. | +| `cody.chat-question` | submitted | `chatModel` — Provides customers with chat-model specific insights to help determine which models best suit their use cases.
`chatAgent` — Provides customers with chat-agent (e.g. deep-cody) specific insights to help determine which agents best suit their use cases. | +| `cody.chatResponse` | _(all)_ | `chatModel` — Provides customers with chat-model specific insights to help determine which models best suit their use cases. | +| `cody.chatResponseNew` | _(all)_ | `chatModel` — Provides customers with chat-model specific insights to help determine which models best suit their use cases. | +| `cody.command.doc` | executed | `model` — Provides customers with model-specific insights to help determine which models best suit their use cases. | +| `cody.command.edit` | executed | `model` — Provides customers with model-specific insights to help determine which models best suit their use cases. | +| `cody.command.fix` | executed | `model` — Provides customers with model-specific insights to help determine which models best suit their use cases. | +| `cody.command.test` | executed | `model` — Provides customers with model-specific insights to help determine which models best suit their use cases. | +| `search` | execute | `lang` — High-cardinality language identifier; not sensitive and helpful for determining how users are using search. | +| `codeintel.explorePanel.usages` | _(all)_ | `lang` — High-cardinality language identifier; not sensitive and helpful for determining how users are using search. | +| `codeintel.explorePanel` | _(all)_ | `lang` — High-cardinality language identifier; not sensitive and helpful for determining how users are using search. | +| `codeintel` | _(all)_ | `lang` — High-cardinality language identifier; not sensitive and helpful for determining how users are using search. | +| `cody.autoedit` | _(all)_ | `model` — High-cardinality model identifier; not sensitive and helpful for determining what model is being used.
`languageId` — Identifies the language of the code; not sensitive and high cardinality. | +| `cody.fixup.user` | _(all)_ | `model` — High-cardinality model identifier; not sensitive and helpful for determining what model is being used. | +| `cody.fixup.user` | _(all)_ | `model` — High-cardinality model identifier; not sensitive and helpful for determining what model is being used. | +| `cody.fixup.response` | _(all)_ | `model` — High-cardinality model identifier; not sensitive and helpful for determining what model is being used. | +| `cody.fixup.apply` | _(all)_ | `model` — High-cardinality model identifier; not sensitive and helpful for determining what model is being used. | +| `cody.fixup.persistence` | _(all)_ | `model` — High-cardinality model identifier; not sensitive and helpful for determining what model is being used. | +| `cody.modelSelector` | _(all)_ | `modelId` — High-cardinality model identifier; helpful for determining the model selected in the model selector.
`modelProvider` — High-cardinality model provider; helpful for determining the model selected in the model selector. | +| `cody.smart-apply.context` | applied | `model` — High-cardinality model identifier; helpful for determining the model that was selected. | +| `deepsearch` | search.toolcall | `toolName` — High-cardinality tool name; helpful for determining which tools are being used during deep search.
`toolId` — High-cardinality tool identifier; helpful for determining which tools are being used during deep search.
`model` — High-cardinality model identifier; helpful for determining which models are being used during deep search. | +| `externalApi` | request | `procedure` — ConnectRPC procedure path (e.g. '/sourcegraph.users.v1.UsersService/GetUser'); not sensitive and needed to distinguish which external API RPCs are being used. | \ No newline at end of file diff --git a/docs/admin/telemetry/protocol.mdx b/docs/admin/telemetry/protocol.mdx index 3399d9d3e..1ceec743e 100644 --- a/docs/admin/telemetry/protocol.mdx +++ b/docs/admin/telemetry/protocol.mdx @@ -407,7 +407,7 @@ metadata about users for instances that consent to it.
### InstanceOrganizationMetadata - +🚨 SECURITY: This metadata is NOT exported from instances by default. | Field | Type | Label | Description | @@ -425,7 +425,7 @@ metadata about users for instances that consent to it. ### InstanceUserMetadata - +🚨 SECURITY: This metadata is NOT exported from instances by default. | Field | Type | Label | Description | @@ -443,7 +443,7 @@ metadata about users for instances that consent to it. ### PublishInstanceUserMetadataRequest - +🚨 SECURITY: This metadata is NOT exported from instances by default. | Field | Type | Label | Description | @@ -460,7 +460,7 @@ metadata about users for instances that consent to it. ### PublishInstanceUserMetadataRequest.OrganizationMetadataPayload - +🚨 SECURITY: This metadata is NOT exported from instances by default. | Field | Type | Label | Description | @@ -475,7 +475,7 @@ metadata about users for instances that consent to it. ### PublishInstanceUserMetadataRequest.UserMetadataPayload - +🚨 SECURITY: This metadata is NOT exported from instances by default. | Field | Type | Label | Description | @@ -610,7 +610,8 @@ metadata about users for instances that consent to it. ### TelemeteryGatewayService - +TelemetryGatewayService accepts telemetry and related data from Sourcegraph +instances and managed services. | Method Name | Request Type | Response Type | Description | | ----------- | ------------ | ------------- | ------------| From a4cd4966f4a2a731ec5c64e04a1641fe57c943f5 Mon Sep 17 00:00:00 2001 From: Robert Lin Date: Fri, 27 Feb 2026 17:25:16 -0800 Subject: [PATCH 027/217] telemetry: add a bit more detail about telemetry data (#1657) Part of https://linear.app/sourcegraph/issue/SVC-2147/v2t-better-advertise-export-privacy-guarantees Will add https://github.com/sourcegraph/sourcegraph/pull/10419 in the future as well once that is live --- docs/admin/telemetry/index.mdx | 26 ++++++++++++++++++++++---- docs/api/graphql/index.mdx | 14 +++++++------- 2 files changed, 29 insertions(+), 11 deletions(-) diff --git a/docs/admin/telemetry/index.mdx b/docs/admin/telemetry/index.mdx index 92dd92635..b401f64d3 100644 --- a/docs/admin/telemetry/index.mdx +++ b/docs/admin/telemetry/index.mdx @@ -8,20 +8,38 @@ To enable this, Sourcegraph collects several types of usage data from Sourcegrap If you have any questions about telemetry collection, please reach out to your Sourcegraph account representative. -## Telemetry Events +## Telemetry events -Sourcegraph instances 5.2.1 and later collect telemetry events from all Sourcegraph end-user client applications to understand usage patterns and help improve the product. Telemetry events can be generated when certain user actions occur, like opening files or performing searches. This data helps us provide the highest level of support to Sourcegraph's customers, and powers the [Sourcegraph Analytics](../../analytics/index.mdx) service. +Sourcegraph collects telemetry events from all Sourcegraph end-user client applications, as well as Sourcegraph backend operations, to understand usage patterns and help improve the product. Telemetry events can be generated when certain user actions occur, like opening files or performing searches. This data helps us provide the highest level of support to Sourcegraph's customers, and powers the [Sourcegraph Analytics](../../analytics/index.mdx) service. Sensitive data/PII exfiltration, intentional or not, is a significant concern to Sourcegraph that we take very seriously. Some of the measures we take to ensure privacy and data security are: -1. Telemetry events are, by default, only allowed to export numeric metadata - for example, string values that may contain sensitive contents are generally redacted. String values we do retain are generally categorized information. +1. Telemetry events are, by default, only allowed to export numeric metadata - for example, string values that may contain sensitive contents are generally redacted. + 1. A carefully audited set of arbitrary properties we do export contain only categorized, enumerated information - you can see the full list [here](/admin/telemetry/private-metadata-allowlist). 2. User identifiers are numeric and anonymized, as identifiers are specific per-instance. 3. Data will be encrypted while in motion from each Sourcegraph instance to Sourcegraph. +Specifics of the exported data structure is available in the [Telemetry protocol](/admin/telemetry/protocol) reference. + +Recently exported events can be retrieved via the [debug console](../../api/graphql/index.mdx) for review. +You can find the API console at any time by going to **Settings**, and then clicking **Debug console** from the left sidebar, or by visiting it directly at `/debug/console`. Use the following query: + +```gql +query { + telemetry { + exportedEvents(first: 5) { + nodes { + payload + } + } + } +} +``` + You can reach out to support@sourcegraph.com for additional information about how telemetry events are recorded and which attributes are exported by default. -## Allowlist IPs / CIDR Ranges for Sourcegraph +## Allowlist IPs / CIDR ranges for Sourcegraph Starting 5.2.0: diff --git a/docs/api/graphql/index.mdx b/docs/api/graphql/index.mdx index b0014510c..fa1e3c262 100644 --- a/docs/api/graphql/index.mdx +++ b/docs/api/graphql/index.mdx @@ -60,20 +60,20 @@ For automated scripts, CI/CD pipelines, and production integrations, use [servic ## Documentation & tooling -### API Console and documentation +### API console and documentation Sourcegraph includes a built-in API console that lets you write queries and -view API documentation in your browser. +view debug API documentation in your browser. -You can find the API console at any time by going to **Settings**, and then -clicking **API console** from the left sidebar, or by visiting it directly at -`https://sourcegraph.example.com/api/console`. +You can find the debug API console at any time by going to **Settings**, and then +clicking **Debug console** from the left sidebar, or by visiting it directly at +`https://sourcegraph.example.com/debug/console`. If you have not yet set up a Sourcegraph server, you can also test out the API -on the [Sourcegraph.com API console](https://sourcegraph.com/api/console) (which +on the [Sourcegraph.com debug console](https://sourcegraph.com/debug/console) (which always uses the latest version of the API). -To access the documentation, click **Docs** on the right-hand side of the API +To access the documentation, click **Docs** on the right-hand side of the debug console page. ### Sudo access tokens From 6dda090db473b71ccfb5a6f4081666fd5b57ec9c Mon Sep 17 00:00:00 2001 From: julialeex Date: Mon, 2 Mar 2026 11:03:58 -0500 Subject: [PATCH 028/217] Add missing im:write to Slack integration docs (#1660) Updates the permissions reference table to include the new scope we added in https://github.com/sourcegraph/sourcegraph/pull/10458 --- docs/slack-integration.mdx | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/slack-integration.mdx b/docs/slack-integration.mdx index 85342501d..c748cbdea 100644 --- a/docs/slack-integration.mdx +++ b/docs/slack-integration.mdx @@ -109,6 +109,7 @@ All required permissions below are automatically provided via the app manifest g | `files:read` | Allows the app to read files shared in Slack messages to include them as context for Deep Search conversations. | | `groups:history` | Enables the app to read message history in private channels it is added to (only read when mentioned.) | | `im:history` | Enables the app to read direct message history (with the app only), for one-on-one conversations with Sourcegraph. | +| `im:write` | Allows the app to send direct messages to users, enabling the bot to reply in DM conversations. | | `links:read` | Enables the app to read link metadata when unfurling Deep Search URLs for rich link previews. | | `links:write` | Enables the app to post rich previews when Deep Search links are shared in Slack | | `mpim:history` | Enables the app to read message history in direct messaging groups it is added to | From 529d604682ed5b5188467e998bc61b0c92648d44 Mon Sep 17 00:00:00 2001 From: julialeex Date: Mon, 2 Mar 2026 15:08:44 -0500 Subject: [PATCH 029/217] feat/externalapi: Add API migration guide (#1644) CLOSE CU-2424 Adds a new guide that walks integrators through migrating to the new Sourcegraph API ## Testing http://localhost:3000/deep-search/api --------- Co-authored-by: Robert Lin --- docs/deep-search/api.mdx | 64 +++++++++++++++++++++++++++++++++----- docs/deep-search/index.mdx | 4 ++- 2 files changed, 60 insertions(+), 8 deletions(-) diff --git a/docs/deep-search/api.mdx b/docs/deep-search/api.mdx index dfdcf0ee1..e751e57d4 100644 --- a/docs/deep-search/api.mdx +++ b/docs/deep-search/api.mdx @@ -1,15 +1,11 @@ ---- -preview: true ---- - # Deep Search API

The **experimental** Deep Search API has been **deprecated** as of - [Sourcegraph 7.0](https://sourcegraph.com/changelog/releases/7.0). In this release, [a new versioned Sourcegraph API is - being introduced for custom - integrations](https://sourcegraph.com/changelog/sourcegraph-api), + [Sourcegraph 7.0](https://sourcegraph.com/changelog/releases/7.0). In + this release, [a new versioned Sourcegraph API is being introduced for + custom integrations](https://sourcegraph.com/changelog/sourcegraph-api), available at `/api-reference` (e.g. `https://sourcegraph.example.com/api-reference`). This experimental Deep Search API remains available, but we recommend migrating to the new API @@ -19,6 +15,60 @@ preview: true

Learn more about the Sourcegraph API [here](/api).

+ + If you're using the experimental Deep Search API, see the [migration + guide](#migrating-to-the-new-sourcegraph-api) to upgrade to the new `/api/` + endpoints. + + +## Migrating to the New Sourcegraph API + +Starting in [Sourcegraph 7.0](https://sourcegraph.com/changelog/releases/7.0), Sourcegraph introduces a new, versioned [API](/api/) at `/api/`. **The new API provides stable, supported endpoints** for functionality previously served by this experimental Deep Search API. See the [Sourcegraph API changelog](https://sourcegraph.com/changelog/sourcegraph-api) for more details. + +An interactive API reference is available at `/api-reference` on your Sourcegraph instance (e.g. `https://sourcegraph.example.com/api-reference`), where you can view all operations and download the OpenAPI schema. + +![API reference](https://storage.googleapis.com/sourcegraph-assets/Docs/api-reference-dark.png) + +### What changed + +1. **Base URL**: `/.api/deepsearch/v1/...` → `/api/deepsearch.v1.Service/...` +2. **Token scopes**: Any access token → token with `externalapi:read` / `externalapi:write` scope +3. **`X-Requested-With` header**: No longer required +4. **Resource identifiers**: Numeric IDs (`140`) → resource names (`users/~self/conversations/140`). For requests that require a parent, the current user name is `users/~self`. +5. **Status field**: `status: "processing"` → `state: "STATE_PROCESSING"` + +### AI-assisted migration + +The fastest way to migrate is to give your AI coding agent the OpenAPI schema and this migration guide, and let it update your code. You can download the schema from `/api-reference` on your Sourcegraph instance (e.g. `https://sourcegraph.example.com/api-reference`) — look for the **Download OpenAPI** button. Then tell your agent to migrate your Deep Search API calls to the new `/api/` equivalents. + +For a real-world example, see [this Amp thread](https://ampcode.com/threads/T-019ca189-6ef4-746b-a844-3a068df71b25) migrating the [raycast-sourcegraph](https://github.com/bobheadxi/raycast-sourcegraph) extension from the old API to the new endpoints. + +### Endpoint mapping + +| Operation | Old endpoint | New endpoint | +| ------------------- | ------------------------------------------------------ | ----------------------------------------------------------- | +| Create conversation | `POST /.api/deepsearch/v1` | `POST /api/deepsearch.v1.Service/CreateConversation` | +| Get conversation | `GET /.api/deepsearch/v1/{id}` | `POST /api/deepsearch.v1.Service/GetConversation` | +| List conversations | `GET /.api/deepsearch/v1` | `POST /api/deepsearch.v1.Service/ListConversationSummaries` | +| Add follow-up | `POST /.api/deepsearch/v1/{id}/questions` | `POST /api/deepsearch.v1.Service/AddConversationQuestion` | +| Cancel question | `POST /.api/deepsearch/v1/{id}/questions/{qid}/cancel` | `POST /api/deepsearch.v1.Service/CancelConversation` | +| Delete conversation | `DELETE /.api/deepsearch/v1/{id}` | `POST /api/deepsearch.v1.Service/DeleteConversation` | + +### Response field mapping + +| Old field | New field | +| ---------------------- | --------------------------------------- | +| `id: 140` | `name: "users/~self/conversations/140"` | +| `status: "processing"` | `state: "STATE_PROCESSING"` | +| `status: "completed"` | `state: "STATE_COMPLETED"` | +| `questions[].answer` | `questions[].answer` (unchanged) | +| `read_token` | Not exposed | +| `share_url` | Not exposed | + +If you have questions about the migration or need features not yet available in the new API, reach out at **support@sourcegraph.com**. + +## Legacy API reference + The Deep Search API provides programmatic access to Sourcegraph's agentic code search capabilities. Use this API to integrate Deep Search into your development workflows, build custom tools, or automate code analysis tasks. ## Authentication diff --git a/docs/deep-search/index.mdx b/docs/deep-search/index.mdx index 34c7bfcde..f116f28af 100644 --- a/docs/deep-search/index.mdx +++ b/docs/deep-search/index.mdx @@ -113,7 +113,9 @@ To learn more, refer to [Entitlements](/admin/entitlements) and the [Deep Search ## Integrations and APIs -Integrations can use [Sourcegraph APIs](/api), such as the new Sourcegraph API and MCP server, to interact with Deep Search. +Integrations can use [Sourcegraph APIs](/api) and the [MCP server](/api/mcp) to interact with Deep Search. + +If you are using the experimental Deep Search API, please [follow our migration guide](/deep-search/api). ## Architecture From c74eb6fee6e27f3b6cd4958b1ead54ee92911821 Mon Sep 17 00:00:00 2001 From: julialeex Date: Mon, 2 Mar 2026 16:22:06 -0500 Subject: [PATCH 030/217] fix/externalapi: fix the heading level problem and add example prompt for AI-assisted Deep Search API migration (#1666) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Adds a copy-pasteable prompt to the AI-assisted migration section of the Deep Search API docs. Fix the heading level problem in the guide. Screenshot 2026-03-02 at 4 16 51 PM Screenshot 2026-03-02 at 4 16 55 PM --- docs/deep-search/api.mdx | 33 +++++++++++++++++++++++---------- 1 file changed, 23 insertions(+), 10 deletions(-) diff --git a/docs/deep-search/api.mdx b/docs/deep-search/api.mdx index e751e57d4..bb96233a0 100644 --- a/docs/deep-search/api.mdx +++ b/docs/deep-search/api.mdx @@ -39,7 +39,20 @@ An interactive API reference is available at `/api-reference` on your Sourcegrap ### AI-assisted migration -The fastest way to migrate is to give your AI coding agent the OpenAPI schema and this migration guide, and let it update your code. You can download the schema from `/api-reference` on your Sourcegraph instance (e.g. `https://sourcegraph.example.com/api-reference`) — look for the **Download OpenAPI** button. Then tell your agent to migrate your Deep Search API calls to the new `/api/` equivalents. +The fastest way to migrate is to give your AI coding agent the OpenAPI schema and this migration guide, and let it update your code. You can download the schema from `/api-reference` on your Sourcegraph instance (e.g. `https://sourcegraph.example.com/api-reference`) — look for the **Download OpenAPI** button. Then use a prompt like the following: + +```text +Migrate the Deep Search API calls in this project from the deprecated +/.api/deepsearch/v1 endpoints to the new Sourcegraph /api/deepsearch.v1.Service/ +endpoints. The main file to update is . + +Use the migration guide on +https://sourcegraph.com/docs/deep-search/api#migrating-to-the-new-sourcegraph-api +for reference. Use the attached OpenAPI schema (@sourcegraph-openapi.yml) as the +specification for the new API. +``` + +Replace `` with the file(s) in your project that call the Deep Search API, and attach the downloaded OpenAPI schema so the agent can reference the exact request/response shapes. For a real-world example, see [this Amp thread](https://ampcode.com/threads/T-019ca189-6ef4-746b-a844-3a068df71b25) migrating the [raycast-sourcegraph](https://github.com/bobheadxi/raycast-sourcegraph) extension from the old API to the new endpoints. @@ -71,7 +84,7 @@ If you have questions about the migration or need features not yet available in The Deep Search API provides programmatic access to Sourcegraph's agentic code search capabilities. Use this API to integrate Deep Search into your development workflows, build custom tools, or automate code analysis tasks. -## Authentication +### Authentication All API requests require authentication using a Sourcegraph access token. You can generate an access token from your user settings. @@ -80,7 +93,7 @@ All API requests require authentication using a Sourcegraph access token. You ca export SRC_ACCESS_TOKEN="your-token-here" ``` -## Base URL +### Base URL All Deep Search API endpoints are prefixed with `/.api/deepsearch/v1` and require the `X-Requested-With` header to identify the client: @@ -97,7 +110,7 @@ curl 'https://your-sourcegraph-instance.com/.api/deepsearch/v1' \ name and version number.
-## Creating conversations +### Creating conversations All Deep Search conversations are processed asynchronously. When you create a conversation, the API will return immediately with a conversation object containing the question in `processing` status. @@ -216,7 +229,7 @@ Once processing is complete, the response will include the answer: } ``` -## Adding follow-up questions +### Adding follow-up questions Continue a conversation by adding follow-up questions. The `conversation_id` in the request body must match the conversation ID in the URL: @@ -229,7 +242,7 @@ curl 'https://your-sourcegraph-instance.com/.api/deepsearch/v1/140/questions' \ -d '{"conversation_id":140,"question":"What does the README file contain?"}' ``` -## Listing conversations +### Listing conversations Get all your conversations with optional filtering: @@ -257,7 +270,7 @@ Available query parameters: - `page_after` - Pagination cursor - `sort` - Sort order: `id`, `-id`, `created_at`, `-created_at`, `updated_at`, `-updated_at` (default: `-updated_at`) -## Managing conversations +### Managing conversations **Get a specific conversation:** @@ -287,7 +300,7 @@ curl 'https://your-sourcegraph-instance.com/.api/deepsearch/v1/140/questions/163 -H 'X-Requested-With: my-client 1.0.0' ``` -## Accessing conversations via read tokens +### Accessing conversations via read tokens You can retrieve a conversation using its read token with the `filter_read_token` query parameter. @@ -302,7 +315,7 @@ curl 'https://your-sourcegraph-instance.com/.api/deepsearch/v1?filter_read_token -H 'X-Requested-With: my-client 1.0.0' ``` -## Response structure +### Response structure **Conversation object:** @@ -338,7 +351,7 @@ If a question fails to process, the `status` will be `completed` and the `error` } ``` -## Error handling +### Error handling The API returns standard HTTP status codes with descriptive error messages: From e9da41a5c96fe157b652839d8f22201c2aa0be4e Mon Sep 17 00:00:00 2001 From: Enrique Gonzalez Date: Tue, 3 Mar 2026 06:28:40 -0800 Subject: [PATCH 031/217] docs: add additional scopes to oauth (#1663) Adds three oauth scopes that have been added: * externalapi:read * externalapi:write * mcp --- docs/admin/oauth-apps.mdx | 3 +++ 1 file changed, 3 insertions(+) diff --git a/docs/admin/oauth-apps.mdx b/docs/admin/oauth-apps.mdx index 22c700090..d0df6f6fc 100644 --- a/docs/admin/oauth-apps.mdx +++ b/docs/admin/oauth-apps.mdx @@ -81,6 +81,9 @@ When creating an OAuth app, select the minimum scopes necessary for your applica | `email` | Access to user's email address | | `offline_access` | Request refresh tokens for offline access | | `user:all` | Full access to Sourcegraph API on behalf of the user | +| `externalapi:read` | Read-only access to the [Sourcegraph API](/api) | +| `externalapi:write` | Write access to the [Sourcegraph API](/api) | +| `mcp` | Access to Model Context Protocol resources | The `user:all` scope is required for GraphQL API access with OAuth tokens. From fcd9bfe2659ddd4ba62b850ce5ed5f6963b0fe02 Mon Sep 17 00:00:00 2001 From: Justin Dorfman Date: Tue, 3 Mar 2026 08:11:47 -0800 Subject: [PATCH 032/217] docs: add Windsurf MCP setup (#1665) ## Summary Document how to configure the Sourcegraph MCP server in Windsurf. ## Changes - add Windsurf entry to the MCP integrations list - document the Windsurf MCP config file and auth headers --- docs/api/mcp/index.mdx | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/docs/api/mcp/index.mdx b/docs/api/mcp/index.mdx index 3b801c3c2..f45ae0b1e 100644 --- a/docs/api/mcp/index.mdx +++ b/docs/api/mcp/index.mdx @@ -122,6 +122,7 @@ The Sourcegraph MCP server can be integrated with various AI tools and IDEs that - [VS Code](#vs-code) - [Cursor](#cursor) - [Antigravity](#antigravity) + - [Windsurf](#windsurf) - [OpenCode](#opencode) ### Amp @@ -335,6 +336,32 @@ code --add-mcp "{ \"name\": \"sourcegraph\", \"type\": \"remote\", \"url\": \"ht URL and `YOUR_ACCESS_TOKEN` with your access token. +#### Windsurf + +1. Create ⁠`~/.codeium/windsurf/mcp_config.json`. +2. Add the following: + + ```json + { + "mcpServers": { + "sourcegraph": { + "serverUrl": "https://your-sourcegraph-instance.com/.api/mcp", + "headers": { + "Authorization": "token YOUR_ACCESS_TOKEN", + "Content-Type": "application/json" + } + } + } + } + ``` + + + Replace `your-sourcegraph-instance.com` with your Sourcegraph instance + URL and `YOUR_ACCESS_TOKEN` with your access token. + + +3. Save the configuration file. + ### OpenCode You can add the Sourcegraph MCP server to OpenCode by configuring it in your MCP settings file: From 0f018cd4e13c20386e7d7acaa5c8ced53da4dfb7 Mon Sep 17 00:00:00 2001 From: sourcegraph-buildkite <71296199+sourcegraph-buildkite@users.noreply.github.com> Date: Tue, 3 Mar 2026 19:38:05 +0200 Subject: [PATCH 033/217] =?UTF-8?q?=F0=9F=A4=96=20Sync=20generated=20docs?= =?UTF-8?q?=20from=20sourcegraph/sourcegraph=20(2026-03-02/17-40-22)=20(#1?= =?UTF-8?q?662)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This is an automated pull request, created by //doc:generated.push on sourcegraph/sourcegraph Co-authored-by: Buildkite --- docs/admin/code-hosts/aws-codecommit.mdx | 2 +- docs/admin/code-hosts/azuredevops.mdx | 2 +- docs/admin/code-hosts/bitbucket-cloud.mdx | 2 +- docs/admin/code-hosts/bitbucket-server.mdx | 2 +- docs/admin/code-hosts/gerrit.mdx | 2 +- docs/admin/code-hosts/github.mdx | 2 +- docs/admin/code-hosts/gitlab.mdx | 2 +- docs/admin/code-hosts/gitolite.mdx | 2 +- docs/admin/code-hosts/other.mdx | 2 +- docs/admin/code-hosts/phabricator.mdx | 2 +- docs/admin/config/settings.mdx | 2 +- docs/admin/config/site-config.mdx | 8 +------- docs/admin/repo/perforce.mdx | 2 +- .../telemetry/private-metadata-allowlist.mdx | 20 +++++++++---------- 14 files changed, 23 insertions(+), 29 deletions(-) diff --git a/docs/admin/code-hosts/aws-codecommit.mdx b/docs/admin/code-hosts/aws-codecommit.mdx index 50e15a8e6..482547a31 100644 --- a/docs/admin/code-hosts/aws-codecommit.mdx +++ b/docs/admin/code-hosts/aws-codecommit.mdx @@ -37,7 +37,7 @@ AWS CodeCommit connections support the following configuration options, which ar {/* SCHEMA_SYNC_START: admin/code_hosts/aws_codecommit.schema.json */} {/* WARNING: This section is auto-generated during releases. Do not edit manually. */} -{/* Last updated: 2026-02-28T00:57:04Z */} +{/* Last updated: 2026-03-02T17:40:22Z */} ```json { // REQUIRED: diff --git a/docs/admin/code-hosts/azuredevops.mdx b/docs/admin/code-hosts/azuredevops.mdx index f70ea2bb7..4bad0bcad 100644 --- a/docs/admin/code-hosts/azuredevops.mdx +++ b/docs/admin/code-hosts/azuredevops.mdx @@ -65,7 +65,7 @@ Azure DevOps connections support the following configuration options, which are {/* SCHEMA_SYNC_START: admin/code_hosts/azuredevops.schema.json */} {/* WARNING: This section is auto-generated during releases. Do not edit manually. */} -{/* Last updated: 2026-02-28T00:57:04Z */} +{/* Last updated: 2026-03-02T17:40:22Z */} ```json // Authentication alternatives: token OR windowsPassword diff --git a/docs/admin/code-hosts/bitbucket-cloud.mdx b/docs/admin/code-hosts/bitbucket-cloud.mdx index a7e33e73b..35420d7a3 100644 --- a/docs/admin/code-hosts/bitbucket-cloud.mdx +++ b/docs/admin/code-hosts/bitbucket-cloud.mdx @@ -116,7 +116,7 @@ Bitbucket Cloud connections support the following configuration options, which a {/* SCHEMA_SYNC_START: admin/code_hosts/bitbucket_cloud.schema.json */} {/* WARNING: This section is auto-generated during releases. Do not edit manually. */} -{/* Last updated: 2026-02-28T00:57:04Z */} +{/* Last updated: 2026-03-02T17:40:22Z */} ```json { // The workspace access token to use when authenticating with Bitbucket Cloud. diff --git a/docs/admin/code-hosts/bitbucket-server.mdx b/docs/admin/code-hosts/bitbucket-server.mdx index 226ec3f8a..1a3949ff7 100644 --- a/docs/admin/code-hosts/bitbucket-server.mdx +++ b/docs/admin/code-hosts/bitbucket-server.mdx @@ -202,7 +202,7 @@ Bitbucket Server / Bitbucket Data Center connections support the following confi {/* SCHEMA_SYNC_START: admin/code_hosts/bitbucket_server.schema.json */} {/* WARNING: This section is auto-generated during releases. Do not edit manually. */} -{/* Last updated: 2026-02-28T00:57:04Z */} +{/* Last updated: 2026-03-02T17:40:22Z */} ```json // Authentication alternatives: token OR password diff --git a/docs/admin/code-hosts/gerrit.mdx b/docs/admin/code-hosts/gerrit.mdx index 988139446..06cd07093 100644 --- a/docs/admin/code-hosts/gerrit.mdx +++ b/docs/admin/code-hosts/gerrit.mdx @@ -113,7 +113,7 @@ Gerrit connections support the following configuration options, which are specif {/* SCHEMA_SYNC_START: admin/code_hosts/gerrit.schema.json */} {/* WARNING: This section is auto-generated during releases. Do not edit manually. */} -{/* Last updated: 2026-02-28T00:57:04Z */} +{/* Last updated: 2026-03-02T17:40:22Z */} ```json { // If non-null, enforces Gerrit repository permissions. This requires that there is an item in the [site configuration json](https://sourcegraph.com/docs/admin/config/site_config#auth-providers) `auth.providers` field, of type "gerrit" with the same `url` field as specified in this `GerritConnection`. diff --git a/docs/admin/code-hosts/github.mdx b/docs/admin/code-hosts/github.mdx index 961d1252b..457283cc6 100644 --- a/docs/admin/code-hosts/github.mdx +++ b/docs/admin/code-hosts/github.mdx @@ -454,7 +454,7 @@ GitHub connections support the following configuration options, which are specif {/* SCHEMA_SYNC_START: admin/code_hosts/github.schema.json */} {/* WARNING: This section is auto-generated during releases. Do not edit manually. */} -{/* Last updated: 2026-02-28T00:57:04Z */} +{/* Last updated: 2026-03-02T17:40:22Z */} ```json // Authentication alternatives: token OR gitHubAppDetails OR externalAccount OR useRandomExternalAccount diff --git a/docs/admin/code-hosts/gitlab.mdx b/docs/admin/code-hosts/gitlab.mdx index 59f489785..4b27841d7 100644 --- a/docs/admin/code-hosts/gitlab.mdx +++ b/docs/admin/code-hosts/gitlab.mdx @@ -189,7 +189,7 @@ See [Internal rate limits](/admin/code-hosts/rate-limits#internal-rate-limits). {/* SCHEMA_SYNC_START: admin/code_hosts/gitlab.schema.json */} {/* WARNING: This section is auto-generated during releases. Do not edit manually. */} -{/* Last updated: 2026-02-28T00:57:04Z */} +{/* Last updated: 2026-03-02T17:40:22Z */} ```json { // If non-null, enforces GitLab repository permissions. This requires that there be an item in the `auth.providers` field of type "gitlab" with the same `url` field as specified in this `GitLabConnection`. diff --git a/docs/admin/code-hosts/gitolite.mdx b/docs/admin/code-hosts/gitolite.mdx index 1819dd0dd..73cb6bd17 100644 --- a/docs/admin/code-hosts/gitolite.mdx +++ b/docs/admin/code-hosts/gitolite.mdx @@ -25,7 +25,7 @@ To connect Gitolite to Sourcegraph: {/* SCHEMA_SYNC_START: admin/code_hosts/gitolite.schema.json */} {/* WARNING: This section is auto-generated during releases. Do not edit manually. */} -{/* Last updated: 2026-02-28T00:57:04Z */} +{/* Last updated: 2026-03-02T17:40:22Z */} ```json { // A list of repositories to never mirror from this Gitolite instance. Supports excluding by exact name ({"name": "foo"}). diff --git a/docs/admin/code-hosts/other.mdx b/docs/admin/code-hosts/other.mdx index 26c97f98a..0f835de3a 100644 --- a/docs/admin/code-hosts/other.mdx +++ b/docs/admin/code-hosts/other.mdx @@ -68,7 +68,7 @@ Repositories must be listed individually: {/* SCHEMA_SYNC_START: admin/code_hosts/other_external_service.schema.json */} {/* WARNING: This section is auto-generated during releases. Do not edit manually. */} -{/* Last updated: 2026-02-28T00:57:04Z */} +{/* Last updated: 2026-03-02T17:40:22Z */} ```json { // A list of repositories to never mirror by name after applying repositoryPathPattern. Supports excluding by exact name ({"name": "myrepo"}) or regular expression ({"pattern": ".*secret.*"}). diff --git a/docs/admin/code-hosts/phabricator.mdx b/docs/admin/code-hosts/phabricator.mdx index 7f67f75c4..bc1a68515 100644 --- a/docs/admin/code-hosts/phabricator.mdx +++ b/docs/admin/code-hosts/phabricator.mdx @@ -76,7 +76,7 @@ The Sourcegraph instance's site admin must [update the `corsOrigin` site config {/* SCHEMA_SYNC_START: admin/code_hosts/phabricator.schema.json */} {/* WARNING: This section is auto-generated during releases. Do not edit manually. */} -{/* Last updated: 2026-02-28T00:57:04Z */} +{/* Last updated: 2026-03-02T17:40:22Z */} ```json { // SSH cipher to use when cloning via SSH. Must be a valid choice from `ssh -Q cipher`. diff --git a/docs/admin/config/settings.mdx b/docs/admin/config/settings.mdx index 52429d1be..a7857ad43 100644 --- a/docs/admin/config/settings.mdx +++ b/docs/admin/config/settings.mdx @@ -27,7 +27,7 @@ Settings options and their default values are shown below. {/* SCHEMA_SYNC_START: admin/config/settings.schema.json */} {/* WARNING: This section is auto-generated during releases. Do not edit manually. */} -{/* Last updated: 2026-02-28T00:57:04Z */} +{/* Last updated: 2026-03-02T17:40:22Z */} ```json { diff --git a/docs/admin/config/site-config.mdx b/docs/admin/config/site-config.mdx index f7d859938..a65928abb 100644 --- a/docs/admin/config/site-config.mdx +++ b/docs/admin/config/site-config.mdx @@ -21,7 +21,7 @@ All site configuration options and their default values are shown below. {/* SCHEMA_SYNC_START: admin/config/site.schema.json */} {/* WARNING: This section is auto-generated during releases. Do not edit manually. */} -{/* Last updated: 2026-02-28T00:57:04Z */} +{/* Last updated: 2026-03-02T17:40:22Z */} ```json { @@ -718,12 +718,6 @@ All site configuration options and their default values are shown below. ] }, - // Requires PIN or biometric verification when using admin passkeys. When enabled, authenticators must support and perform user verification (PIN entry, fingerprint, face recognition, etc.). This provides stronger assurance that the person using the passkey is the legitimate owner. - "auth.adminPasskeyPINRequired": false, - - // Requires site admin users to verify their identity using a FIDO2/WebAuthn passkey before accessing admin pages. When enabled, admins must register at least one passkey and re-verify periodically (default: every hour). This provides step-up authentication for sensitive admin operations. - "auth.adminPasskeyRequired": false, - // IP allowlist for access to the Sourcegraph instance. If set, only requests from these IP addresses will be allowed. By default client IP is inferred connected client IP address, and you may configure to use a request header to determine the user IP. "auth.allowedIpAddress": { "clientIpAddress": null, diff --git a/docs/admin/repo/perforce.mdx b/docs/admin/repo/perforce.mdx index bc3814b71..6ce588791 100644 --- a/docs/admin/repo/perforce.mdx +++ b/docs/admin/repo/perforce.mdx @@ -228,7 +228,7 @@ With this setting, Sourcegraph will ignore any rules with a host other than `*`, {/* SCHEMA_SYNC_START: admin/code_hosts/perforce.schema.json */} {/* WARNING: This section is auto-generated during releases. Do not edit manually. */} -{/* Last updated: 2026-02-28T00:57:04Z */} +{/* Last updated: 2026-03-02T17:40:22Z */} ```json { // If non-null, enforces Perforce depot permissions. diff --git a/docs/admin/telemetry/private-metadata-allowlist.mdx b/docs/admin/telemetry/private-metadata-allowlist.mdx index 1838f2aab..d8a9c26bc 100644 --- a/docs/admin/telemetry/private-metadata-allowlist.mdx +++ b/docs/admin/telemetry/private-metadata-allowlist.mdx @@ -10,16 +10,16 @@ To learn more, refer to the [telemetry documentation](https://sourcegraph.com/do | **Feature** | **Action** | **Allowed `privateMetadata` fields** | | :---------- | :--------- | :----------------------------------- | | `cody.completion` | _(all)_ | `languageId` — Provides customers with valuable language-specific insights for code completion usage patterns.
`otherCompletionProviders` — Provides internal teams insights on competitor completion providers customers are using.
`providerModel` — Provides internal teams insights on the specific model used for completions.
`resolvedModel` — The resolved model used for the completion request. | -| `cody.hoverCommands` | visible | `languageId` — Provides customers with valuable language-specific insights for hover command usage patterns. | +| `cody.hoverCommands` | `visible` | `languageId` — Provides customers with valuable language-specific insights for hover command usage patterns. | | `blob.codeintel` | _(all)_ | `languageId` — Provides customers with valuable language-specific insights for code intelligence usage patterns. | -| `cody.chat-question` | submitted | `chatModel` — Provides customers with chat-model specific insights to help determine which models best suit their use cases.
`chatAgent` — Provides customers with chat-agent (e.g. deep-cody) specific insights to help determine which agents best suit their use cases. | +| `cody.chat-question` | `submitted` | `chatModel` — Provides customers with chat-model specific insights to help determine which models best suit their use cases.
`chatAgent` — Provides customers with chat-agent (e.g. deep-cody) specific insights to help determine which agents best suit their use cases. | | `cody.chatResponse` | _(all)_ | `chatModel` — Provides customers with chat-model specific insights to help determine which models best suit their use cases. | | `cody.chatResponseNew` | _(all)_ | `chatModel` — Provides customers with chat-model specific insights to help determine which models best suit their use cases. | -| `cody.command.doc` | executed | `model` — Provides customers with model-specific insights to help determine which models best suit their use cases. | -| `cody.command.edit` | executed | `model` — Provides customers with model-specific insights to help determine which models best suit their use cases. | -| `cody.command.fix` | executed | `model` — Provides customers with model-specific insights to help determine which models best suit their use cases. | -| `cody.command.test` | executed | `model` — Provides customers with model-specific insights to help determine which models best suit their use cases. | -| `search` | execute | `lang` — High-cardinality language identifier; not sensitive and helpful for determining how users are using search. | +| `cody.command.doc` | `executed` | `model` — Provides customers with model-specific insights to help determine which models best suit their use cases. | +| `cody.command.edit` | `executed` | `model` — Provides customers with model-specific insights to help determine which models best suit their use cases. | +| `cody.command.fix` | `executed` | `model` — Provides customers with model-specific insights to help determine which models best suit their use cases. | +| `cody.command.test` | `executed` | `model` — Provides customers with model-specific insights to help determine which models best suit their use cases. | +| `search` | `execute` | `lang` — High-cardinality language identifier; not sensitive and helpful for determining how users are using search. | | `codeintel.explorePanel.usages` | _(all)_ | `lang` — High-cardinality language identifier; not sensitive and helpful for determining how users are using search. | | `codeintel.explorePanel` | _(all)_ | `lang` — High-cardinality language identifier; not sensitive and helpful for determining how users are using search. | | `codeintel` | _(all)_ | `lang` — High-cardinality language identifier; not sensitive and helpful for determining how users are using search. | @@ -30,6 +30,6 @@ To learn more, refer to the [telemetry documentation](https://sourcegraph.com/do | `cody.fixup.apply` | _(all)_ | `model` — High-cardinality model identifier; not sensitive and helpful for determining what model is being used. | | `cody.fixup.persistence` | _(all)_ | `model` — High-cardinality model identifier; not sensitive and helpful for determining what model is being used. | | `cody.modelSelector` | _(all)_ | `modelId` — High-cardinality model identifier; helpful for determining the model selected in the model selector.
`modelProvider` — High-cardinality model provider; helpful for determining the model selected in the model selector. | -| `cody.smart-apply.context` | applied | `model` — High-cardinality model identifier; helpful for determining the model that was selected. | -| `deepsearch` | search.toolcall | `toolName` — High-cardinality tool name; helpful for determining which tools are being used during deep search.
`toolId` — High-cardinality tool identifier; helpful for determining which tools are being used during deep search.
`model` — High-cardinality model identifier; helpful for determining which models are being used during deep search. | -| `externalApi` | request | `procedure` — ConnectRPC procedure path (e.g. '/sourcegraph.users.v1.UsersService/GetUser'); not sensitive and needed to distinguish which external API RPCs are being used. | \ No newline at end of file +| `cody.smart-apply.context` | `applied` | `model` — High-cardinality model identifier; helpful for determining the model that was selected. | +| `deepsearch` | `search.toolcall` | `toolName` — High-cardinality tool name; helpful for determining which tools are being used during deep search.
`toolId` — High-cardinality tool identifier; helpful for determining which tools are being used during deep search.
`model` — High-cardinality model identifier; helpful for determining which models are being used during deep search. | +| `externalApi` | `request` | `procedure` — ConnectRPC procedure path (e.g. '/sourcegraph.users.v1.UsersService/GetUser'); not sensitive and needed to distinguish which external API RPCs are being used. | \ No newline at end of file From ab33b8217d7cdde3f73f25398638b48f91b0357f Mon Sep 17 00:00:00 2001 From: Michael Lin Date: Tue, 3 Mar 2026 13:03:57 -0800 Subject: [PATCH 034/217] revamp docker compose aws docs (#1619) --- .../self-hosted/deploy/docker-compose/aws.mdx | 206 ++++-------------- 1 file changed, 37 insertions(+), 169 deletions(-) diff --git a/docs/self-hosted/deploy/docker-compose/aws.mdx b/docs/self-hosted/deploy/docker-compose/aws.mdx index 61bf6e588..dbb148c23 100644 --- a/docs/self-hosted/deploy/docker-compose/aws.mdx +++ b/docs/self-hosted/deploy/docker-compose/aws.mdx @@ -1,171 +1,39 @@ # Install Sourcegraph on Amazon Web Services (AWS) -This guide will take you through how to deploy Sourcegraph with [Docker Compose](https://docs.docker.com/compose/) to a single EC2 instance on Amazon Web Services (AWS). - -## Configure - -Click **Launch Instance** from the [EC2 dashboard](https://console.aws.amazon.com/ec2/v2/home), then fill in the following values for each section: - -#### Name and tags - -1. Name your instance - -#### Application and OS Images - -1. Select **Amazon Linux** in the _Quick Start_ tab - -2. Select **Amazon Linux 2 AMI (HVM), SSD Volume Type** under _Amazon Machine Image (AMI)_ - -#### Instance type - -1. Select an appropriate instance type using our [resource estimator](/self-hosted/deploy/resource-estimator) as reference - -#### Key pair (login) - -1. Create a new key pair for your instance, or choose an existing key pair from the drop down list - -#### Network settings - -1. Click `Edit` in the header to enable **Auto-assign Public IP** - -2. Under **Firewall (security group)** , create or select existing security group with the following settings: - -- Allow SSH traffic from Anywhere -- Allow HTTPs traffic from the internet -- Allow HTTP traffic from the internet - -> NOTE: If possible, replace the IP address ranges specified with the IPs from which you actually want to allow access. - -#### Configure storage - -1. Click **Add New Volume** to add an _additional_ EBS volume for storing data - -2. Click **Advanced** in the header to update the following settings for the new Custom Volume: - -- `Storage Type`: EBS -- `Device name`: `/dev/sdb` -- `Volume Type`: `gp3` (General Purpose SSD) -- `Size (GiB)`: `250GB minimum` - - Sourcegraph needs at least as much space as all your repositories combined take up - - Allocating as much disk space as you can upfront minimize the need for [resizing your volume](https://aws.amazon.com/premiumsupport/knowledge-center/expand-root-ebs-linux/) in the future -- `Delete on Termination`: `No` - -#### Advanced details > User Data - -Copy and paste the _startup script_ below into the **User Data** textbox: - -```bash -#!/usr/bin/env bash -set -euxo pipefail -############################################################################### -# ACTION REQUIRED: REPLACE THE URL AND REVISION WITH YOUR DEPLOYMENT REPO INFO -############################################################################### -# Please read the notes below the script if you are cloning a private repository -DEPLOY_SOURCEGRAPH_DOCKER_FORK_CLONE_URL='https://github.com/sourcegraph/deploy-sourcegraph-docker.git' -DEPLOY_SOURCEGRAPH_DOCKER_FORK_REVISION={CURRENT_VERSION} -##################### NO CHANGES REQUIRED BELOW THIS LINE ##################### -DEPLOY_SOURCEGRAPH_DOCKER_CHECKOUT='/home/ec2-user/deploy-sourcegraph-docker' -DOCKER_COMPOSE_VERSION='1.29.2' -DOCKER_DAEMON_CONFIG_FILE='/etc/docker/daemon.json' -DOCKER_DATA_ROOT='/mnt/docker-data' -EBS_VOLUME_DEVICE_NAME='/dev/sdb' -EBS_VOLUME_LABEL='sourcegraph' -# Install git -yum update -y -yum install git -y -# Clone the deployment repository -git clone "${DEPLOY_SOURCEGRAPH_DOCKER_FORK_CLONE_URL}" "${DEPLOY_SOURCEGRAPH_DOCKER_CHECKOUT}" -cd "${DEPLOY_SOURCEGRAPH_DOCKER_CHECKOUT}" -git checkout "${DEPLOY_SOURCEGRAPH_DOCKER_FORK_REVISION}" -# Format (if unformatted) and then mount the attached volume -device_fs=$(lsblk "${EBS_VOLUME_DEVICE_NAME}" --noheadings --output fsType) -if [ "${device_fs}" == "" ] -then - mkfs -t xfs "${EBS_VOLUME_DEVICE_NAME}" -fi -xfs_admin -L "${EBS_VOLUME_LABEL}" "${EBS_VOLUME_DEVICE_NAME}" -mkdir -p "${DOCKER_DATA_ROOT}" -mount -L "${EBS_VOLUME_LABEL}" "${DOCKER_DATA_ROOT}" -# Mount file system by label on reboot -echo "LABEL=${EBS_VOLUME_LABEL} ${DOCKER_DATA_ROOT} xfs defaults,nofail 0 2" >> '/etc/fstab' -umount "${DOCKER_DATA_ROOT}" -mount -a -# Install, configure, and enable Docker -yum update -y -amazon-linux-extras install docker -systemctl enable --now docker -sed -i -e 's/1024/262144/g' /etc/sysconfig/docker -sed -i -e 's/4096/262144/g' /etc/sysconfig/docker -usermod -a -G docker ec2-user -# Install jq for scripting -yum install -y jq -## Initialize the config file with empty json if it doesn't exist -if [ ! -f "${DOCKER_DAEMON_CONFIG_FILE}" ] -then - mkdir -p $(dirname "${DOCKER_DAEMON_CONFIG_FILE}") - echo '{}' > "${DOCKER_DAEMON_CONFIG_FILE}" -fi -## Point Docker storage to mounted volume -tmp_config=$(mktemp) -trap "rm -f ${tmp_config}" EXIT -cat "${DOCKER_DAEMON_CONFIG_FILE}" | jq --arg DATA_ROOT "${DOCKER_DATA_ROOT}" '.["data-root"]=$DATA_ROOT' > "${tmp_config}" -cat "${tmp_config}" > "${DOCKER_DAEMON_CONFIG_FILE}" -# Restart Docker daemon to pick up new changes -systemctl restart --now docker -# Install Docker Compose -curl -L "https://github.com/docker/compose/releases/download/${DOCKER_COMPOSE_VERSION}/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose -chmod +x /usr/local/bin/docker-compose -curl -L "https://raw.githubusercontent.com/docker/compose/${DOCKER_COMPOSE_VERSION}/contrib/completion/bash/docker-compose" -o /etc/bash_completion.d/docker-compose -# Start Sourcegraph with Docker Compose -cd "${DEPLOY_SOURCEGRAPH_DOCKER_CHECKOUT}"/docker-compose -docker-compose up -d --remove-orphans -``` - -> NOTE: If you're deploying a production instance, we recommend [forking the deployment configuration repository](/self-hosted/deploy/docker-compose/#step-1-fork-the-deployment-repository) to track any customizations you make to the deployment config. If you do so, you'll want to update the _startup script_ you pasted from above to refer to the clone URL and revision of your fork: -> -> - `DEPLOY_SOURCEGRAPH_DOCKER_FORK_CLONE_URL`: The Git clone URL of your deployment repository. If it is a private repository, please check with your code host on how to generate a URL for cloning private repository -> - `DEPLOY_SOURCEGRAPH_DOCKER_FORK_REVISION`: The revision (branch) in your fork containing the customizations, typically "release" - ---- - -## Deploy - -1. Click **Launch Instance** in the _Summary Section_ on the right to launch the EC2 node running Sourcegraph. - -2. In your web browser, navigate to the public IP address assigned to the EC2 node. (Look for the **IPv4 Public IP** value in your EC2 instance page under the _Description_ panel.) It may take a few minutes for the instance to finish initializing before Sourcegraph becomes accessible. - -You can monitor the setup process by SSHing into the instance to run the following diagnostic commands: - -```bash -# Follow the status of the startup script -tail -f /var/log/cloud-init-output.log -# Once installation is completed, check the health of the "sourcegraph-frontend" container -docker ps --filter="name=sourcegraph-frontend-0" -``` - -> NOTE: If you have configured a DNS entry for the IP, please ensure to update `externalURL` in your Sourcegraph instance's Site Configuration to reflect that - ---- - -## Upgrade - -See the [Docker Compose upgrade docs](/self-hosted/deploy/docker-compose/upgrade). - ---- - -## Storage and Backups - -Data is persisted within a [Docker volume](https://docs.docker.com/storage/volumes/) as defined in the [deployment repository](https://github.com/sourcegraph/deploy-sourcegraph-docker/blob/master/docker-compose/docker-compose.yaml). The startup script configures Docker using a [daemon configuration file](https://docs.docker.com/engine/reference/commandline/dockerd/#daemon-configuration-file) to store all the data on the attached data volume, which is mounted at `/mnt/docker-data`, where volumes are stored within `/mnt/docker-data/volumes`. - -There are two, non-mutually-exclusive ways to back up data: - -- [Snapshot the entire `/mnt/docker-data` EBS volume](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-creating-snapshot.html) on an [automatic, scheduled basis](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/snapshot-lifecycle.html). - -Use [AWS RDS for PostgreSQL](https://aws.amazon.com/rds/) instead of the Dockerized PostgreSQL instance included by default. All data from Sourcegraph is derivable from the data stored in this database. Note, however, that it may take awhile to reclone repositories and rebuild indices afresh. If you require a faster restoration process, we recommend also snapshotting the EBS volume. (Recommended) - ---- - -## Other resources - -[HTTP and HTTPS/SSL configuration](/self-hosted/http-https-configuration#sourcegraph-via-docker-compose-caddy-2) -[Site Administration Quickstart](/admin/how-to/site-admin-quickstart) +This guide provides an overview of deploying Sourcegraph with [Docker Compose](https://docs.docker.com/compose/) to a single [EC2](https://aws.amazon.com/ec2/) instance on Amazon Web Services (AWS). For detailed instructions or any assistance, please reach out to your account team. + +## Architecture + +Our recommended architecture for deploying Sourcegraph with Docker Compose on AWS consists of a single EC2 instance with an attached EBS volume and an RDS for PostgreSQL instance for data storage. The EC2 instance runs the Sourcegraph application, while the EBS volume provides persistent storage for repositories and other data, and the RDS instance provides storage for user data and application metadata. + +See [Architecture: AWS (Docker Compose)](/admin/architecture#aws-docker-compose) for diagrams. + +## Before you start + +Before deploying the Sourcegraph application, we require familiarity with the following AWS (e.g., EC2, EBS, RDS, IAM) and Docker concepts. Then, ensure you have the following prerequisites in place: + +### Amazon Web Services account + +You should have the permissions necessary to create and manage EC2 instances, EBS volumes, and RDS instances in your AWS account. It's not recommended to use your root account for this purpose. Instead, create a new IAM user with the necessary permissions and use that account for deployment. + +### Amazon EC2 + +Follow the instructions in the [AWS documentation](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EC2_GetStarted.html) to set up an EC2 instance with an EBS volume mounted. Ensure that you select an appropriate instance type based on your expected workload and resource requirements. You may use one of the x86 Linux AMIs as machine image. Also, configure inbound rules to allow HTTP/HTTPS (ports 80 and 443) only from the networks that should be able to reach the application (public internet for external deployments, or corporate/private ranges for internal deployments). Ensure you also have administrative access (SSH or Session Manager) for ongoing management of the application. + +You should also set up automatic snapshots for the EBS volume following [AWS documentation](https://docs.aws.amazon.com/ebs/latest/userguide/ebs-creating-snapshot.html) to ensure that your data is backed up regularly. + +### Docker & Docker Compose + +Install Docker and Docker Compose on your EC2 instance. You can follow the instructions in the [Docker documentation](https://docs.docker.com/engine/install/) to install Docker on Linux, and then install Docker Compose using the instructions provided in the [Docker Compose documentation](https://docs.docker.com/compose/install/). Ensure you set up the EBS volume as the Docker daemon data directory following [Docker documentation](https://docs.docker.com/engine/daemon/#daemon-data-directory). + +### Amazon RDS for PostgreSQL + +Set up an RDS instance for PostgreSQL in your AWS account. You can follow the instructions in the [AWS documentation](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_CreatePostgreSQLInstance.html) to create a new RDS instance. Ensure that the RDS instance is accessible from your EC2 instance and that you have the necessary credentials to connect to it. + +### IAM + +It is recommended to create an IAM role with the necessary permissions to allow your EC2 instance to access the RDS instance. This will help ensure that your application can access the required resources securely with minimal permissions. + +## Deploying Sourcegraph + +Follow the [installation steps for Docker Compose](/self-hosted/deploy/docker-compose#installation-steps) to complete the deployment of Sourcegraph on your AWS EC2 instance. During the configuration step, ensure to [provide the necessary connection details for your RDS instance](self-hosted/external-services/postgres). From 7b928f416032cfd5c9f4f75062ddb18988249bf5 Mon Sep 17 00:00:00 2001 From: Michael Lin Date: Tue, 3 Mar 2026 15:23:55 -0800 Subject: [PATCH 035/217] fix: update broken link (#1668) https://sourcegraph.slack.com/archives/C01DXLN3D0T/p1772571859050799 also made this a required status check to catch problems prior to merging --- docs/self-hosted/deploy/docker-compose/aws.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/self-hosted/deploy/docker-compose/aws.mdx b/docs/self-hosted/deploy/docker-compose/aws.mdx index dbb148c23..15a7c53fb 100644 --- a/docs/self-hosted/deploy/docker-compose/aws.mdx +++ b/docs/self-hosted/deploy/docker-compose/aws.mdx @@ -36,4 +36,4 @@ It is recommended to create an IAM role with the necessary permissions to allow ## Deploying Sourcegraph -Follow the [installation steps for Docker Compose](/self-hosted/deploy/docker-compose#installation-steps) to complete the deployment of Sourcegraph on your AWS EC2 instance. During the configuration step, ensure to [provide the necessary connection details for your RDS instance](self-hosted/external-services/postgres). +Follow the [installation steps for Docker Compose](/self-hosted/deploy/docker-compose#installation-steps) to complete the deployment of Sourcegraph on your AWS EC2 instance. During the configuration step, ensure to [provide the necessary connection details for your RDS instance](/self-hosted/external-services/postgres). From 89e6a468620f3e54db9fa85f4a45c3551bb49ed4 Mon Sep 17 00:00:00 2001 From: julialeex Date: Wed, 4 Mar 2026 11:46:05 -0500 Subject: [PATCH 036/217] fix/externalapi: update the migration guide (#1667) Updated the guide based on the suggestions in https://sourcegraph.slack.com/archives/C022SPMNR0W/p1772538070145969?thread_ts=1772486950.293899&cid=C022SPMNR0W Re-organized the doc a little bit, added resource identifiers, request format, and status field to what changed. --- docs/deep-search/api.mdx | 65 ++++++++++++++++++++++++---------------- 1 file changed, 40 insertions(+), 25 deletions(-) diff --git a/docs/deep-search/api.mdx b/docs/deep-search/api.mdx index bb96233a0..7dd199432 100644 --- a/docs/deep-search/api.mdx +++ b/docs/deep-search/api.mdx @@ -34,12 +34,49 @@ An interactive API reference is available at `/api-reference` on your Sourcegrap 1. **Base URL**: `/.api/deepsearch/v1/...` → `/api/deepsearch.v1.Service/...` 2. **Token scopes**: Any access token → token with `externalapi:read` / `externalapi:write` scope 3. **`X-Requested-With` header**: No longer required -4. **Resource identifiers**: Numeric IDs (`140`) → resource names (`users/~self/conversations/140`). For requests that require a parent, the current user name is `users/~self`. -5. **Status field**: `status: "processing"` → `state: "STATE_PROCESSING"` +4. **Resource identifiers**: Numeric IDs (`140`) → resource names (`users/~self/conversations/140`). For requests that require a parent, use `users/~self` for the authenticated user. +5. **Request format**: Flat JSON (`{"question": "..."}`) → nested structure (`conversation.questions[].input[].question.text`) +6. **Status field**: Plain string (`status: "processing"`) → `oneof` object (`state: { "processing": {} }`) + - **Errors** are now a distinct state rather than a `completed` status with an `error` field: + ```json + "state": { + "error": { + "code": "ERROR_INTERNAL | ERROR_QUOTA_EXCEEDED | ERROR_ENTITLEMENT_EXCEEDED | ERROR_TOKEN_LIMIT_EXCEEDED", + "message": "...", + "retry_time": "..." + } + } + ``` + +### Endpoint mapping + +| Operation | Old endpoint | New endpoint | +| ------------------- | ------------------------------------------------------ | ----------------------------------------------------------- | +| Create conversation | `POST /.api/deepsearch/v1` | `POST /api/deepsearch.v1.Service/CreateConversation` | +| Get conversation | `GET /.api/deepsearch/v1/{id}` | `POST /api/deepsearch.v1.Service/GetConversation` | +| List conversations | `GET /.api/deepsearch/v1` | `POST /api/deepsearch.v1.Service/ListConversationSummaries` | +| Add follow-up | `POST /.api/deepsearch/v1/{id}/questions` | `POST /api/deepsearch.v1.Service/AddConversationQuestion` | +| Cancel question | `POST /.api/deepsearch/v1/{id}/questions/{qid}/cancel` | `POST /api/deepsearch.v1.Service/CancelConversation` | +| Delete conversation | `DELETE /.api/deepsearch/v1/{id}` | `POST /api/deepsearch.v1.Service/DeleteConversation` | + +### Response field mapping + +| Old field | New field | +| ------------------------------- | --------------------------------------------------------- | +| `id: 140` | `name: "users/~self/conversations/140"` | +| `status: "processing"` | `state: { "processing": {} }` | +| `status: "completed"` + `error` | `state: { "error": { "code": "...", "message": "..." } }` | +| `questions[].answer` | `questions[].answer` (unchanged) | + +### Notes on the new request format + +The new API uses a nested request structure. For example, `CreateConversation` requires `conversation.questions[].input[].question.text` rather than a flat `{"question": "..."}`. See the interactive API reference at `/api-reference` on your instance for request examples and exact schemas. + +Conversations are still processed asynchronously — poll `GetConversation` until the `state` field reaches a terminal value (`completed`, `error`, or `canceled`). For `error` states, inspect `code` for the error type (`ERROR_QUOTA_EXCEEDED`, `ERROR_TOKEN_LIMIT_EXCEEDED`, etc.) and `message` for details. ### AI-assisted migration -The fastest way to migrate is to give your AI coding agent the OpenAPI schema and this migration guide, and let it update your code. You can download the schema from `/api-reference` on your Sourcegraph instance (e.g. `https://sourcegraph.example.com/api-reference`) — look for the **Download OpenAPI** button. Then use a prompt like the following: +The fastest way to migrate is to give your AI coding agent the OpenAPI schema and this migration guide, and let it update your code. You can download the schema from `/api-reference` on your Sourcegraph instance (e.g. `https://sourcegraph.example.com/api-reference`) — look for the **Download** button. Then use a prompt like the following: ```text Migrate the Deep Search API calls in this project from the deprecated @@ -56,28 +93,6 @@ Replace `` with the file(s) in your project that call the Dee For a real-world example, see [this Amp thread](https://ampcode.com/threads/T-019ca189-6ef4-746b-a844-3a068df71b25) migrating the [raycast-sourcegraph](https://github.com/bobheadxi/raycast-sourcegraph) extension from the old API to the new endpoints. -### Endpoint mapping - -| Operation | Old endpoint | New endpoint | -| ------------------- | ------------------------------------------------------ | ----------------------------------------------------------- | -| Create conversation | `POST /.api/deepsearch/v1` | `POST /api/deepsearch.v1.Service/CreateConversation` | -| Get conversation | `GET /.api/deepsearch/v1/{id}` | `POST /api/deepsearch.v1.Service/GetConversation` | -| List conversations | `GET /.api/deepsearch/v1` | `POST /api/deepsearch.v1.Service/ListConversationSummaries` | -| Add follow-up | `POST /.api/deepsearch/v1/{id}/questions` | `POST /api/deepsearch.v1.Service/AddConversationQuestion` | -| Cancel question | `POST /.api/deepsearch/v1/{id}/questions/{qid}/cancel` | `POST /api/deepsearch.v1.Service/CancelConversation` | -| Delete conversation | `DELETE /.api/deepsearch/v1/{id}` | `POST /api/deepsearch.v1.Service/DeleteConversation` | - -### Response field mapping - -| Old field | New field | -| ---------------------- | --------------------------------------- | -| `id: 140` | `name: "users/~self/conversations/140"` | -| `status: "processing"` | `state: "STATE_PROCESSING"` | -| `status: "completed"` | `state: "STATE_COMPLETED"` | -| `questions[].answer` | `questions[].answer` (unchanged) | -| `read_token` | Not exposed | -| `share_url` | Not exposed | - If you have questions about the migration or need features not yet available in the new API, reach out at **support@sourcegraph.com**. ## Legacy API reference From dd2d51441ac510a53b9ec7dc0b29e6137c37b8f8 Mon Sep 17 00:00:00 2001 From: Aditya Kalia <32119652+akalia25@users.noreply.github.com> Date: Thu, 5 Mar 2026 17:36:08 -0500 Subject: [PATCH 037/217] Update Sourcegraph Analytics docs with refresh cadence and current dashboard structure (#1673) --- docs/analytics/index.mdx | 152 ++++++++++++++++++++++++++------------- 1 file changed, 102 insertions(+), 50 deletions(-) diff --git a/docs/analytics/index.mdx b/docs/analytics/index.mdx index dd7bf9fa7..3fc28b3b5 100644 --- a/docs/analytics/index.mdx +++ b/docs/analytics/index.mdx @@ -14,7 +14,9 @@ Our managed [Sourcegraph Analytics service](https://analytics.sourcegraph.com) f To get started, follow our [enablement instructions](#enablement-instructions). -![sourcegraph-analytics](https://storage.googleapis.com/sourcegraph-assets/Docs/Sourcegraph-Analytics-2025-01-28.png) +![sourcegraph-analytics](https://storage.googleapis.com/sourcegraph-assets/Docs/Sourcegraph-Analytics-2026-03-05.png) + +Analytics data refreshes every 12 hours, at 00:00 and 12:00 UTC. Recent activity may take up to 12 hours to appear. ## Enablement instructions @@ -50,10 +52,15 @@ Learn more about how we think about [the ROI of Sourcegraph in our blog](https:/ ### Overview metrics -| **Metric** | **Description** | -| ---------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------ | -| Percent of code written by Cody | Percentage of code written by Cody out of all code written during the selected time. [Learn more about this metric.](/analytics/pcw) | -| Characters of code written by Cody | Total characters of code written by Cody during the selected time | +| **Metric** | **Description** | +| --------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| Total Sourcegraph users | Total number of unique users who have used any Sourcegraph product during the selected time | +| Average daily active users | The average number of unique users who use Sourcegraph per day during the selected time | +| Total hours saved | Estimated total hours of developer time saved by using Sourcegraph, based on typical time savings per feature (editable per feature) | +| Total deep searches | Total number of Deep Search queries performed during the selected time | +| Daily active users | Chart showing the number of unique users who used Sourcegraph by day | +| Monthly active users | Chart showing the number of unique users who used Sourcegraph by month | +| Time saved | Breakdown of estimated time saved by feature (completions and auto-edits, commands, chats, searches, and code navigation), with configurable minutes-saved-per-use values | ### User metrics @@ -65,56 +72,113 @@ Learn more about how we think about [the ROI of Sourcegraph in our blog](https:/ | Daily active users | Number of unique users who used Sourcegraph by day | | Weekly active users | Number of unique users who used Sourcegraph by week | | Daily users by product | Count of daily users across different Sourcegraph products (Cody, Code Search, Code Insights, etc.) | -| Product usage distribution (by percentage of users) | Percentage breakdown of users across different Sourcegraph product groupings during the selected time | -| Detailed user activity (top 20 users) | List of the 20 most active users during the selected time and their usage patterns | -| Frequency of usage | Count of users who used Sourcegraph _n_ times over the past 30 days | - -Cody-only user metrics - -Many of the metrics above are also available for Cody only. However, some user definitions are slightly different: - -| User category | Description | +| Monthly users by product | Count of monthly users across different Sourcegraph products (Cody, Code Search, Code Insights, etc.) | +| Detailed user activity | List of all active users during the selected time and their usage patterns | + +### Code Search and Understanding metrics + +The Code Search and Understanding page is organized into five tabs: Search, Deep Search, MCP, Batch Changes, and Code Navigation. + +#### Search + +| **Metric** | **Description** | +| ----------------------------------------- | ------------------------------------------------------------------------------------------------------------------ | +| Total in-product searches | Number of searches performed using the Sourcegraph search interface during the selected time | +| Minutes saved per search | Configurable estimate of minutes saved per search (default: 5 minutes) | +| Hours saved by searches | Estimated hours saved based on total searches multiplied by minutes saved per search | +| Total file views | Number of times users viewed individual files through Sourcegraph during the selected time | +| Daily in-product search activity | Chart showing in-product searches, result clicks, and file views by day | +| Daily search users (in-product and API) | Number of unique users performing searches each day, including both UI and API usage | +| All searches (in-product and API) by type | Breakdown of searches by category (Standard, Regex, Literal, Structural, Cody Context, Keyword, NLS) by day | + +#### Deep Search + +| **Metric** | **Description** | +| ----------------------------- | ---------------------------------------------------------------------------------------------------------------------------------- | +| Total deep searches | Total number of Deep Search queries (initial and follow-up messages) during the selected time | +| Minutes saved per Deep Search | Configurable estimate of minutes saved per Deep Search | +| Hours saved by deep searches | Estimated hours saved based on total Deep Searches multiplied by minutes saved | +| Daily deep searches | Chart showing Deep Search queries by day | +| Monthly deep searches | Bar chart showing Deep Search queries by month | +| Daily deep search users | Chart showing daily Deep Search users and searches per user | +| Top deep search users | Searchable table of all Deep Search users with query counts, queries per day, and tool calls | + +#### MCP + +| **Metric** | **Description** | +| ------------------------------- | ------------------------------------------------------------------------------------- | +| Total MCP tool calls | Total number of MCP tool calls during the selected time | +| Minutes saved per MCP tool call | Configurable estimate of minutes saved per MCP tool call | +| Hours saved by MCP | Estimated hours saved based on total MCP tool calls multiplied by minutes saved | +| MCP DAUs | Chart showing daily active MCP users | +| MCP MAUs | Bar chart showing monthly active MCP users | +| MCP usage by tool | Horizontal bar chart showing tool call counts broken down by tool name | +| Top MCP users | Searchable table of MCP users with tool call counts | + +#### Batch Changes + +| **Metric** | **Description** | +| ------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| Total changesets published | Total number of changesets published during the selected time | +| Minutes saved per changeset | Configurable estimate of minutes saved per changeset published | +| Hours saved by Batch Changes | Estimated hours saved based on total changesets published multiplied by minutes saved | +| Batch changes activity | Chart showing Batch Changes opened, specs created, specs executed, changesets published, and changes merged in Sourcegraph by day | + +#### Code Navigation + +| **Metric** | **Description** | +| -------------------------------- | ------------------------------------------------------------------------------------------------------- | +| Total Code Nav actions | Count of all code navigation operations performed (e.g., go-to-definition, find references) | +| Minutes saved per Code Nav action | Configurable estimate of minutes saved per code navigation action | +| Hours saved by code navigation | Estimated hours saved based on total code navigation actions multiplied by minutes saved | +| Precise Code Nav % | Percentage of code navigation actions that used precise intelligence rather than search-based results | +| Daily code navigation activity | Chart showing code navigation actions performed each day | +| Daily code navigation users | Chart showing the number of unique users utilizing code navigation features each day | + +### Cody metrics + +The Cody page is organized into four tabs: Overview, Completions, Commands, and Chats. + +#### Overview + +Cody-specific user metrics with slightly different user definitions: + +| **Metric** | **Description** | | ------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | Authenticated users | All users signed in to Cody in an editor or interacted with Cody on the web during the selected period. [Read more](/pricing/faqs#how-are-active-users-counted-and-billed-for-cody). | | Active users | All users who sign in to Cody in an editor or interact with Cody on the web during the period selected. [Read more](/pricing/faqs#how-are-active-users-counted-and-billed-for-cody). | -### Code Search & navigation metrics - -| **Metric** | **Description** | -| ------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -| Total in-product searchers | Number of unique users who performed searches using the Sourcegraph search interface during the selected time | -| Total result clicks | Count of times users clicked on search results to view files or other resources during the selected time | -| Total file views | Number of times users viewed individual files through Sourcegraph during the selected time | -| Hours saved | The number of hours saved by search and code navigation users, assuming 5 minutes saved per search and 30 seconds per code navigation action | -| Daily in-product search activity | Count of search operations performed each day through the Sourcegraph interface | -| Daily search users (in-product and API) | Number of unique users performing searches each day, including both UI and API usage | -| All searches (in-product and API) by type | Breakdown of searches by category (e.g., literal, regex), including both UI and API usage | -| Total code navigation actions | Count of all code navigation operations performed (e.g., go-to-definition, find references) during the selected time period | -| Precise code navigation % | Percentage of code navigation actions that used precise intelligence rather than search-based results during the selected time | -| Daily code navigation activity | Count of code navigation operations performed each day | -| Daily code navigation users | Number of unique users utilizing code navigation features each day | -| Precise vs. search-based code navigation actions by language | Comparison of precise vs. search-based navigation success rates broken down by programming language | -| Batch changes usage funnel | Number of times various Batch Changes actions were taken each day: Batch Changes opened, specs created, specs executed, changesets published, and changes merged (from the Sourcegraph UI) | - -### Autocompletion metrics +#### Completions | **Metric** | **Description** | | -------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | Total accepted completions & auto-edits | Count of completions and auto-edits accepted by users during the selected time | | Hours saved | The number of hours saved by Cody users, assuming 2 minutes saved per completion and auto-edit | -| Completions and auto-edits by day | The number of completions and auto-edits suggested by day and by editor. | -| Completion and auto-edit acceptance rate (CAR) | The percent of completions and auto-edits presented to a user for at least 750ms accepted by day, the editor, day, and month. | +| Completions and auto-edits by day | The number of completions and auto-edits suggested by day and by editor | +| Completion and auto-edit acceptance rate (CAR) | The percent of completions and auto-edits presented to a user for at least 750ms accepted by day, the editor, day, and month | | Weighted completion and auto-edit acceptance rate (wCAR) | Similar to CAR, but weighted by the number of characters presented in the completion and auto-edit, by the editor, day, and month. This assigns more "weight" to accepted completions that provide more code to the user. | | Completion persistence rate | Percent of completions that are retained or mostly retained (67%+ of inserted text) after various time intervals. Auto-edits are not included. | -| Average completion and auto-edit latency (ms) | The average milliseconds of latency before a user is presented with a completion or auto-edit suggestion by an editor. | +| Average completion and auto-edit latency (ms) | The average milliseconds of latency before a user is presented with a completion or auto-edit suggestion by an editor | | Acceptance rate by language | CAR and total completion suggestions broken down by editor during the selected time. Auto-edits not included | -### Chat and prompt metrics +#### Commands + +_As of Sourcegraph version 5.10, commands are being deprecated in favor of chat prompts. If your Sourcegraph instance is running version 5.10 or later, you may see decreased command usage._ + +| **Metric** | **Description** | +| ----------------------- | ----------------------------------------------------------------------------------------------------------- | +| Total command events | Total number of command executions during the selected time | +| Hours saved by commands | Total hours saved through command executions during the selected time, assuming 5 minutes saved per command | +| Cody commands by day | Daily count of command executions | +| Cody command users | Daily count of command users | +| Most used commands | Ranking of most frequently used Cody commands during the selected time | + +#### Chats | **Metric** | **Description** | | ---------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | | Total chat events | Total number of chat interactions with Cody during the selected time | -| Hours saved by chats | Total hours saved through Cody chat interactions during the selected time , assuming 5 minutes saved per chat | +| Hours saved by chats | Total hours saved through Cody chat interactions during the selected time, assuming 5 minutes saved per chat | | Cody chats by day | Daily count of chat interactions | | Cody chat users | Daily count of chat users | | Lines of code inserted | Lines of code generated by Cody in chat that get applied, inserted, or pasted into the editor. Only VS Code is included in this metric for now | @@ -123,18 +187,6 @@ Many of the metrics above are also available for Cody only. However, some user d | Prompts created, edited, and deleted by day | Daily count of prompt management activities, including creation, modification, and removal | | Users creating, editing, and deleting prompts by day | Number of unique users performing prompt management activities each day | -### Command metrics (deprecated) - -_As of Sourcegraph version 5.10, commands are being deprecated in favor of our new feature, chat prompts. As a result, if your Sourcegraph instance is running version 5.10 or later, you may see decreased command usage. In the coming weeks, these command metrics will be deprecated and replaced with new prompt metrics on the Chats tab._ - -| **Metric** | **Description** | -| ----------------------- | ----------------------------------------------------------------------------------------------------------- | -| Total command events | Total number of command executions during the selected time | -| Hours saved by commands | Total hours saved through command executions during the selected time, assuming 5 minutes saved per command | -| Cody commands by day | Daily count of command executions | -| Cody command users | Daily count of command users | -| Most used commands | Ranking of most frequently used Cody commands during the selected time | - ### CSV export You can download underlying user activity data from Sourcegraph Analytics as a CSV export. To do this, click the `Export user-level data` button at the top right of any tab within the portal. From 6c576d7b46b93da683e77790ff602c4a6f53d736 Mon Sep 17 00:00:00 2001 From: Robert Lin Date: Fri, 6 Mar 2026 12:45:47 -0800 Subject: [PATCH 038/217] telemetry: add more clarification (#1672) Feedback from https://sourcegraph.slack.com/archives/C05MW2TMYAV/p1772673652782289?thread_ts=1772175044.092159&cid=C05MW2TMYAV --- docs/admin/architecture.mdx | 6 ++--- docs/admin/pings.mdx | 4 ++-- docs/admin/telemetry/index.mdx | 22 +++++++++---------- .../deploy/docker-compose/configuration.mdx | 4 ++-- .../deploy/kubernetes/configure.mdx | 9 +++++--- docs/self-hosted/deploy/kubernetes/index.mdx | 2 +- .../observability/opentelemetry.mdx | 4 ++-- docs/self-hosted/observability/tracing.mdx | 4 ++-- 8 files changed, 29 insertions(+), 26 deletions(-) diff --git a/docs/admin/architecture.mdx b/docs/admin/architecture.mdx index c1662802f..12863e98d 100644 --- a/docs/admin/architecture.mdx +++ b/docs/admin/architecture.mdx @@ -278,7 +278,7 @@ Repository permissions are mirrored from code hosts to Sourcegraph by default. T ### Model Provider -The **Sourcegraph Model Provider** is the default and recommended way to configure AI features like Deep Search and Cody. Through this service, we provide zero-configuration access to state-of-the-art models from various LLM providers, including Anthropic and OpenAI, with enterprise-grade [privacy and security](../model-provider/index.mdx#privacy-and-security). +The **Sourcegraph Model Provider** is the default and recommended way to configure AI features like Deep Search and Cody. Through this service, we provide zero-configuration access to state-of-the-art models from various LLM providers, including Anthropic and OpenAI, with enterprise-grade [privacy and security](/model-provider#privacy-and-security). Learn more in the [Sourcegraph Model Provider docs](/model-provider). @@ -290,9 +290,9 @@ The **Sourcegraph Model Provider** is the default and recommended way to configu Understanding how individuals and organizations use Sourcegraph is key to providing the highest level of support to Sourcegraph's customers. To enable this, Sourcegraph collects several types of usage data from Sourcegraph instances by having Sourcegraph instances emit telemetry from most product capabilities. -The data we collect powers the [Sourcegraph Analytics service](../analytics/index.mdx). +The data we collect powers the [Sourcegraph Analytics service](/analytics). -We take sensitive data/PII exfiltration, intentional or not, very seriously. Our [Telemetry docs](./telemetry/index.mdx) outline some of the measures we take to ensure privacy and data security. +We take sensitive data/PII exfiltration, intentional or not, very seriously. Our [Telemetry docs](/admin/telemetry) outline some of the measures we take to ensure privacy and data security. Telemetry is exported through the `worker` service to the Sourcegraph-managed "Telemetry Gateway" service and "Pings" service, for telemetry events and aggregated reports, respectively. diff --git a/docs/admin/pings.mdx b/docs/admin/pings.mdx index 455f9a516..5993b0c6c 100644 --- a/docs/admin/pings.mdx +++ b/docs/admin/pings.mdx @@ -4,7 +4,7 @@ Sourcegraph periodically sends a ping to `pings.sourcegraph.com` to help our pro Sourcegraph will also periodically perform a license verification check, to verify the validity of the configured Sourcegraph license. Tampering with these checks, or preventing them from occuring, will cause Sourcegraph to disable many features until a successful check is completed. Certain Enterprise licenses can request to be exempt from these license verification checks. -To learn more about all types of telemetry emitted by Sourcegraph instances, [Telemetry docs](./telemetry/index.mdx). +To learn more about all types of telemetry emitted by Sourcegraph instances, [Telemetry docs](/admin/telemetry). ## Ping payloads @@ -213,7 +213,7 @@ Sourcegraph aggregates usage and performance metrics for some product features i ## Allowlist IPs / CIDR Ranges for Sourcegraph -Refer to the [Telemetry docs](./telemetry/index.mdx) for the list of ranges to allowlist. +Refer to the [Telemetry docs](/admin/telemetry) for the list of ranges to allowlist. ## Using an HTTP proxy for ping requests diff --git a/docs/admin/telemetry/index.mdx b/docs/admin/telemetry/index.mdx index b401f64d3..cb9c1996f 100644 --- a/docs/admin/telemetry/index.mdx +++ b/docs/admin/telemetry/index.mdx @@ -10,19 +10,19 @@ If you have any questions about telemetry collection, please reach out to your S ## Telemetry events -Sourcegraph collects telemetry events from all Sourcegraph end-user client applications, as well as Sourcegraph backend operations, to understand usage patterns and help improve the product. Telemetry events can be generated when certain user actions occur, like opening files or performing searches. This data helps us provide the highest level of support to Sourcegraph's customers, and powers the [Sourcegraph Analytics](../../analytics/index.mdx) service. +Sourcegraph collects telemetry events from all Sourcegraph end-user client applications, as well as Sourcegraph backend operations, to understand usage patterns and help improve the product. Telemetry events can be generated when certain user actions occur, like opening files or performing searches. This data helps us provide the highest level of support to Sourcegraph's customers, and powers the [Sourcegraph Analytics](/analytics) service. -Sensitive data/PII exfiltration, intentional or not, is a significant concern to Sourcegraph that we take very seriously. -Some of the measures we take to ensure privacy and data security are: +Sensitive data/PII exfiltration is a significant concern that we take very seriously. +Some of the measures we take to ensure privacy and data security include: -1. Telemetry events are, by default, only allowed to export numeric metadata - for example, string values that may contain sensitive contents are generally redacted. - 1. A carefully audited set of arbitrary properties we do export contain only categorized, enumerated information - you can see the full list [here](/admin/telemetry/private-metadata-allowlist). -2. User identifiers are numeric and anonymized, as identifiers are specific per-instance. -3. Data will be encrypted while in motion from each Sourcegraph instance to Sourcegraph. +1. Telemetry event parameters that can be provided by our features and exported by default - referred to as "event metadata" - [are only allowed to include numeric values](/admin/telemetry/protocol#telemetrygateway-v1-EventParameters-MetadataEntry). + 1. To prevent the risk of leaking sensitive information, string-type data is not collected, except [these fields](/admin/telemetry/private-metadata-allowlist), which are carefully audited. + 2. We use programming language types-based enforcement to ensure that event metadata keys are known statically, rather than coming from arbitrary sources. +2. [User identifiers](/admin/telemetry/protocol#telemetrygateway-v1-EventUser) are numeric and anonymized, as identifiers are specific per-instance. +3. For all other properties, we use a well-defined data structure (available in the [Telemetry protocol reference](/admin/telemetry/protocol)) to ensure that we never export sensitive data. Changes to this data structure and data collection implementations are carefully monitored and reviewed. +4. Data is encrypted while in transit from each Sourcegraph instance to Sourcegraph. -Specifics of the exported data structure is available in the [Telemetry protocol](/admin/telemetry/protocol) reference. - -Recently exported events can be retrieved via the [debug console](../../api/graphql/index.mdx) for review. +Recently exported events can be retrieved via the [debug console](/api/graphql) for review. You can find the API console at any time by going to **Settings**, and then clicking **Debug console** from the left sidebar, or by visiting it directly at `/debug/console`. Use the following query: ```gql @@ -51,4 +51,4 @@ Prior to 5.2.0, allowlist the full [Cloudflare IP ranges](https://www.cloudflare ## Architecture -To learn more about how telemetry data if handled, refer to the [Architecture page](../../admin/architecture.mdx#analytics-and-telemetry). +To learn more about how telemetry data is processed, refer to the [Architecture page](/admin/architecture#analytics-and-telemetry). diff --git a/docs/self-hosted/deploy/docker-compose/configuration.mdx b/docs/self-hosted/deploy/docker-compose/configuration.mdx index c39338852..6e533ca91 100644 --- a/docs/self-hosted/deploy/docker-compose/configuration.mdx +++ b/docs/self-hosted/deploy/docker-compose/configuration.mdx @@ -50,9 +50,9 @@ services: See ["Environment variables in Compose"](https://docs.docker.com/compose/environment-variables/) for other ways to pass these environment variables to the relevant services (command line, .env file, etc.). -## Enable HTTP tracing +## Enable tracing -Sourcegraph supports HTTP tracing to help troubleshoot issues. See [Tracing](/self-hosted/observability/tracing) for details. +Sourcegraph supports tracing to help troubleshoot issues. See [Tracing](/self-hosted/observability/tracing) for details. The base docker-compose.yaml file enables the bundled [otel-collector](https://sourcegraph.com/search?q=repo:%5Egithub%5C.com/sourcegraph/deploy-sourcegraph-docker$+file:docker-compose/docker-compose.yaml+content:%22++otel-collector:%22&patternType=keyword) by default, but a tracing backend needs to be deployed or configured to see traces. diff --git a/docs/self-hosted/deploy/kubernetes/configure.mdx b/docs/self-hosted/deploy/kubernetes/configure.mdx index de21aa5d4..40ddd61be 100644 --- a/docs/self-hosted/deploy/kubernetes/configure.mdx +++ b/docs/self-hosted/deploy/kubernetes/configure.mdx @@ -1,7 +1,10 @@ # Configure Sourcegraph with Kustomize - The Kustomize deployment type is planned for deprecation and will be sunset in a future release. We recommend using the [Helm deployment](/self-hosted/deploy/kubernetes) for all new Kubernetes installations. + The Kustomize deployment type is planned for deprecation and will be sunset + in a future release. We recommend using the [Helm + deployment](/self-hosted/deploy/kubernetes) for all new Kubernetes + installations. This guide will demonstrate how to customize a Kubernetes deployment (**non-Helm**) using Kustomize components. @@ -180,7 +183,7 @@ Following these steps will allow Prometheus to successfully scrape metrics from ## Tracing -Sourcegraph supports HTTP tracing to help troubleshoot issues. See [Tracing](/self-hosted/observability/tracing) for details. +Sourcegraph supports tracing to help troubleshoot issues. See [Tracing](/self-hosted/observability/tracing) for details. To enable tracing on your Kustomize instance, you'll need to either: @@ -191,7 +194,7 @@ Once a tracing backend has been deployed, see our [Tracing](/self-hosted/observa ### Deploy the bundled OpenTelemetry Collector and Jaeger -The quickest way to get started with HTTP tracing is by deploying our bundled OTEL and Jaeger containers together. +The quickest way to get started with tracing is by deploying our bundled OTEL and Jaeger containers together. Include the `tracing` component to deploy both OpenTelemetry and Jaeger together. This component also configures the following services: diff --git a/docs/self-hosted/deploy/kubernetes/index.mdx b/docs/self-hosted/deploy/kubernetes/index.mdx index 8b164e6fc..ca69aa060 100644 --- a/docs/self-hosted/deploy/kubernetes/index.mdx +++ b/docs/self-hosted/deploy/kubernetes/index.mdx @@ -377,7 +377,7 @@ More details on how to create and configure a subchart can be found in the [helm ### Tracing -Sourcegraph supports HTTP tracing to help troubleshoot issues. See [Tracing](/self-hosted/observability/tracing) for details. +Sourcegraph supports tracing to help troubleshoot issues. See [Tracing](/self-hosted/observability/tracing) for details. To enable tracing on your Helm instance, you'll need to either: diff --git a/docs/self-hosted/observability/opentelemetry.mdx b/docs/self-hosted/observability/opentelemetry.mdx index 090dee93e..ab7ef45e4 100644 --- a/docs/self-hosted/observability/opentelemetry.mdx +++ b/docs/self-hosted/observability/opentelemetry.mdx @@ -1,6 +1,6 @@ # OpenTelemetry -> This page is a deep dive into OpenTelemetry and customizing it. To get started with HTTP Tracing, see the [Tracing](/self-hosted/observability/tracing) page. +> This page is a deep dive into OpenTelemetry and customizing it. To get started with tracing, see the [Tracing](/self-hosted/observability/tracing) page. [OpenTelemetry](https://opentelemetry.io/) (OTEL) is an industry-standard toolset to handle observability data, ex. metrics, logs, and traces. @@ -20,7 +20,7 @@ For details on how to deploy the otel-collector, and where to find its configura - [Kubernetes with Kustomize](/self-hosted/deploy/kubernetes/configure#deploy-opentelemetry-collector-to-use-an-external-tracing-backend) - [Docker Compose](/self-hosted/deploy/docker-compose/configuration#configure-an-external-tracing-backend) -## HTTP Tracing Backends +## Tracing backends Sourcegraph containers export traces in OTEL format to the bundled otel-collector. For more information about traces, see the [Tracing](/self-hosted/observability/tracing) page. diff --git a/docs/self-hosted/observability/tracing.mdx b/docs/self-hosted/observability/tracing.mdx index 6752f3089..ed0cefcb3 100644 --- a/docs/self-hosted/observability/tracing.mdx +++ b/docs/self-hosted/observability/tracing.mdx @@ -1,4 +1,4 @@ -# HTTP Tracing +# Tracing traces are a powerful debugging tool to help you see how your Sourcegraph requests are processed under the hood - like having X-ray vision into how long each part takes and where errors occur. @@ -10,7 +10,7 @@ To enable traces on your Sourcegraph Instance: ## Backends -The quickest way to get started with HTTP tracing is to deploy our bundled Jaeger backend. You can also configure an external, OpenTelemetry-compatible backend of your choice. +The quickest way to get started with tracing is to deploy our bundled Jaeger backend. You can also configure an external, OpenTelemetry-compatible backend of your choice. ### Jaeger From 33aa196fd908bd6e2273878211784ec719bc6449 Mon Sep 17 00:00:00 2001 From: sourcegraph-buildkite <71296199+sourcegraph-buildkite@users.noreply.github.com> Date: Fri, 6 Mar 2026 23:02:32 +0200 Subject: [PATCH 039/217] =?UTF-8?q?=F0=9F=A4=96=20Sync=20generated=20docs?= =?UTF-8?q?=20from=20sourcegraph/sourcegraph=20(2026-03-06/20-59-17)=20(#1?= =?UTF-8?q?675)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This is an automated pull request, created by //doc:generated.push on sourcegraph/sourcegraph Co-authored-by: Buildkite --- docs/admin/code-hosts/aws-codecommit.mdx | 2 +- docs/admin/code-hosts/azuredevops.mdx | 2 +- docs/admin/code-hosts/bitbucket-cloud.mdx | 2 +- docs/admin/code-hosts/bitbucket-server.mdx | 2 +- docs/admin/code-hosts/gerrit.mdx | 2 +- docs/admin/code-hosts/github.mdx | 2 +- docs/admin/code-hosts/gitlab.mdx | 2 +- docs/admin/code-hosts/gitolite.mdx | 2 +- docs/admin/code-hosts/other.mdx | 2 +- docs/admin/code-hosts/phabricator.mdx | 2 +- docs/admin/config/settings.mdx | 5 ++- docs/admin/config/site-config.mdx | 5 ++- docs/admin/repo/perforce.mdx | 2 +- .../telemetry/private-metadata-allowlist.mdx | 15 ++++---- docs/admin/telemetry/protocol.mdx | 33 +++++++++++------ docs/cody/capabilities/supported-models.mdx | 2 - docs/self-hosted/observability/alerts.mdx | 37 ------------------- docs/self-hosted/observability/dashboards.mdx | 2 +- 18 files changed, 50 insertions(+), 71 deletions(-) diff --git a/docs/admin/code-hosts/aws-codecommit.mdx b/docs/admin/code-hosts/aws-codecommit.mdx index 482547a31..45bb54f32 100644 --- a/docs/admin/code-hosts/aws-codecommit.mdx +++ b/docs/admin/code-hosts/aws-codecommit.mdx @@ -37,7 +37,7 @@ AWS CodeCommit connections support the following configuration options, which ar {/* SCHEMA_SYNC_START: admin/code_hosts/aws_codecommit.schema.json */} {/* WARNING: This section is auto-generated during releases. Do not edit manually. */} -{/* Last updated: 2026-03-02T17:40:22Z */} +{/* Last updated: 2026-03-06T20:59:17Z */} ```json { // REQUIRED: diff --git a/docs/admin/code-hosts/azuredevops.mdx b/docs/admin/code-hosts/azuredevops.mdx index 4bad0bcad..08f4c56e2 100644 --- a/docs/admin/code-hosts/azuredevops.mdx +++ b/docs/admin/code-hosts/azuredevops.mdx @@ -65,7 +65,7 @@ Azure DevOps connections support the following configuration options, which are {/* SCHEMA_SYNC_START: admin/code_hosts/azuredevops.schema.json */} {/* WARNING: This section is auto-generated during releases. Do not edit manually. */} -{/* Last updated: 2026-03-02T17:40:22Z */} +{/* Last updated: 2026-03-06T20:59:17Z */} ```json // Authentication alternatives: token OR windowsPassword diff --git a/docs/admin/code-hosts/bitbucket-cloud.mdx b/docs/admin/code-hosts/bitbucket-cloud.mdx index 35420d7a3..8349f8ef6 100644 --- a/docs/admin/code-hosts/bitbucket-cloud.mdx +++ b/docs/admin/code-hosts/bitbucket-cloud.mdx @@ -116,7 +116,7 @@ Bitbucket Cloud connections support the following configuration options, which a {/* SCHEMA_SYNC_START: admin/code_hosts/bitbucket_cloud.schema.json */} {/* WARNING: This section is auto-generated during releases. Do not edit manually. */} -{/* Last updated: 2026-03-02T17:40:22Z */} +{/* Last updated: 2026-03-06T20:59:17Z */} ```json { // The workspace access token to use when authenticating with Bitbucket Cloud. diff --git a/docs/admin/code-hosts/bitbucket-server.mdx b/docs/admin/code-hosts/bitbucket-server.mdx index 1a3949ff7..01f1bd272 100644 --- a/docs/admin/code-hosts/bitbucket-server.mdx +++ b/docs/admin/code-hosts/bitbucket-server.mdx @@ -202,7 +202,7 @@ Bitbucket Server / Bitbucket Data Center connections support the following confi {/* SCHEMA_SYNC_START: admin/code_hosts/bitbucket_server.schema.json */} {/* WARNING: This section is auto-generated during releases. Do not edit manually. */} -{/* Last updated: 2026-03-02T17:40:22Z */} +{/* Last updated: 2026-03-06T20:59:17Z */} ```json // Authentication alternatives: token OR password diff --git a/docs/admin/code-hosts/gerrit.mdx b/docs/admin/code-hosts/gerrit.mdx index 06cd07093..651b5093a 100644 --- a/docs/admin/code-hosts/gerrit.mdx +++ b/docs/admin/code-hosts/gerrit.mdx @@ -113,7 +113,7 @@ Gerrit connections support the following configuration options, which are specif {/* SCHEMA_SYNC_START: admin/code_hosts/gerrit.schema.json */} {/* WARNING: This section is auto-generated during releases. Do not edit manually. */} -{/* Last updated: 2026-03-02T17:40:22Z */} +{/* Last updated: 2026-03-06T20:59:17Z */} ```json { // If non-null, enforces Gerrit repository permissions. This requires that there is an item in the [site configuration json](https://sourcegraph.com/docs/admin/config/site_config#auth-providers) `auth.providers` field, of type "gerrit" with the same `url` field as specified in this `GerritConnection`. diff --git a/docs/admin/code-hosts/github.mdx b/docs/admin/code-hosts/github.mdx index 457283cc6..94e1d4d95 100644 --- a/docs/admin/code-hosts/github.mdx +++ b/docs/admin/code-hosts/github.mdx @@ -454,7 +454,7 @@ GitHub connections support the following configuration options, which are specif {/* SCHEMA_SYNC_START: admin/code_hosts/github.schema.json */} {/* WARNING: This section is auto-generated during releases. Do not edit manually. */} -{/* Last updated: 2026-03-02T17:40:22Z */} +{/* Last updated: 2026-03-06T20:59:17Z */} ```json // Authentication alternatives: token OR gitHubAppDetails OR externalAccount OR useRandomExternalAccount diff --git a/docs/admin/code-hosts/gitlab.mdx b/docs/admin/code-hosts/gitlab.mdx index 4b27841d7..e125d1fee 100644 --- a/docs/admin/code-hosts/gitlab.mdx +++ b/docs/admin/code-hosts/gitlab.mdx @@ -189,7 +189,7 @@ See [Internal rate limits](/admin/code-hosts/rate-limits#internal-rate-limits). {/* SCHEMA_SYNC_START: admin/code_hosts/gitlab.schema.json */} {/* WARNING: This section is auto-generated during releases. Do not edit manually. */} -{/* Last updated: 2026-03-02T17:40:22Z */} +{/* Last updated: 2026-03-06T20:59:17Z */} ```json { // If non-null, enforces GitLab repository permissions. This requires that there be an item in the `auth.providers` field of type "gitlab" with the same `url` field as specified in this `GitLabConnection`. diff --git a/docs/admin/code-hosts/gitolite.mdx b/docs/admin/code-hosts/gitolite.mdx index 73cb6bd17..d085e26ed 100644 --- a/docs/admin/code-hosts/gitolite.mdx +++ b/docs/admin/code-hosts/gitolite.mdx @@ -25,7 +25,7 @@ To connect Gitolite to Sourcegraph: {/* SCHEMA_SYNC_START: admin/code_hosts/gitolite.schema.json */} {/* WARNING: This section is auto-generated during releases. Do not edit manually. */} -{/* Last updated: 2026-03-02T17:40:22Z */} +{/* Last updated: 2026-03-06T20:59:17Z */} ```json { // A list of repositories to never mirror from this Gitolite instance. Supports excluding by exact name ({"name": "foo"}). diff --git a/docs/admin/code-hosts/other.mdx b/docs/admin/code-hosts/other.mdx index 0f835de3a..cb0ee85c5 100644 --- a/docs/admin/code-hosts/other.mdx +++ b/docs/admin/code-hosts/other.mdx @@ -68,7 +68,7 @@ Repositories must be listed individually: {/* SCHEMA_SYNC_START: admin/code_hosts/other_external_service.schema.json */} {/* WARNING: This section is auto-generated during releases. Do not edit manually. */} -{/* Last updated: 2026-03-02T17:40:22Z */} +{/* Last updated: 2026-03-06T20:59:17Z */} ```json { // A list of repositories to never mirror by name after applying repositoryPathPattern. Supports excluding by exact name ({"name": "myrepo"}) or regular expression ({"pattern": ".*secret.*"}). diff --git a/docs/admin/code-hosts/phabricator.mdx b/docs/admin/code-hosts/phabricator.mdx index bc1a68515..5e05fdfaa 100644 --- a/docs/admin/code-hosts/phabricator.mdx +++ b/docs/admin/code-hosts/phabricator.mdx @@ -76,7 +76,7 @@ The Sourcegraph instance's site admin must [update the `corsOrigin` site config {/* SCHEMA_SYNC_START: admin/code_hosts/phabricator.schema.json */} {/* WARNING: This section is auto-generated during releases. Do not edit manually. */} -{/* Last updated: 2026-03-02T17:40:22Z */} +{/* Last updated: 2026-03-06T20:59:17Z */} ```json { // SSH cipher to use when cloning via SSH. Must be a valid choice from `ssh -Q cipher`. diff --git a/docs/admin/config/settings.mdx b/docs/admin/config/settings.mdx index a7857ad43..b0347f255 100644 --- a/docs/admin/config/settings.mdx +++ b/docs/admin/config/settings.mdx @@ -27,7 +27,7 @@ Settings options and their default values are shown below. {/* SCHEMA_SYNC_START: admin/config/settings.schema.json */} {/* WARNING: This section is auto-generated during releases. Do not edit manually. */} -{/* Last updated: 2026-03-02T17:40:22Z */} +{/* Last updated: 2026-03-06T20:59:17Z */} ```json { @@ -78,6 +78,9 @@ Settings options and their default values are shown below. // Usually this setting is used in global and organization settings. If set in user settings, the message will only be displayed to that single user. "cody.notices": null, + // Disable the Slack community call-to-action banner on the Deep Search page. + "deepSearch.slackCta.disabled": false, + // Experimental features and settings. "experimentalFeatures": { "batchChangesExecution": true, diff --git a/docs/admin/config/site-config.mdx b/docs/admin/config/site-config.mdx index a65928abb..36d8d9fe5 100644 --- a/docs/admin/config/site-config.mdx +++ b/docs/admin/config/site-config.mdx @@ -21,7 +21,7 @@ All site configuration options and their default values are shown below. {/* SCHEMA_SYNC_START: admin/config/site.schema.json */} {/* WARNING: This section is auto-generated during releases. Do not edit manually. */} -{/* Last updated: 2026-03-02T17:40:22Z */} +{/* Last updated: 2026-03-06T20:59:17Z */} ```json { @@ -76,6 +76,9 @@ All site configuration options and their default values are shown below. // When enabled, all branches created by batch changes will be pushed to forks of the original repository. "batchChanges.enforceForks": false, + // Enables/disables native server-side execution for Batch Changes workspaces. ONLY ENABLE THIS IF YOU ARE USING EXECUTORS ON KUBERNETES. + "batchChanges.nativeServerSideExecution": false, + // Reject unverified commits when creating a Batch Change "batchChanges.rejectUnverifiedCommit": false, diff --git a/docs/admin/repo/perforce.mdx b/docs/admin/repo/perforce.mdx index 6ce588791..55a6d31e4 100644 --- a/docs/admin/repo/perforce.mdx +++ b/docs/admin/repo/perforce.mdx @@ -228,7 +228,7 @@ With this setting, Sourcegraph will ignore any rules with a host other than `*`, {/* SCHEMA_SYNC_START: admin/code_hosts/perforce.schema.json */} {/* WARNING: This section is auto-generated during releases. Do not edit manually. */} -{/* Last updated: 2026-03-02T17:40:22Z */} +{/* Last updated: 2026-03-06T20:59:17Z */} ```json { // If non-null, enforces Perforce depot permissions. diff --git a/docs/admin/telemetry/private-metadata-allowlist.mdx b/docs/admin/telemetry/private-metadata-allowlist.mdx index d8a9c26bc..a887e247f 100644 --- a/docs/admin/telemetry/private-metadata-allowlist.mdx +++ b/docs/admin/telemetry/private-metadata-allowlist.mdx @@ -1,14 +1,15 @@ # Private metadata allowlist -This document lists all telemetry events that are allowed to export specific `privateMetadata` fields. +This document lists all telemetry events that are allowed to export specific `privateMetadata` fields (from within [telemetry event parameters](https://sourcegraph.com/docs/admin/telemetry/protocol#telemetrygateway-v1-EventParameters)). +By default, `privateMetadata` is **never** exported from customers because it can contain arbitrarily-shaped data that may accidentally include sensitive or private contents. +The specific events and properties listed below have been individually reviewed and approved for export. +The implementation of each is monitored to ensure they contain only categorized, enumerated information. -By default, `privateMetadata` is **never** exported from customers -because it can contain arbitrarily-shaped data that may accidentally include sensitive or private contents. The events listed below have been individually reviewed and approved for export of specific private metadata fields only. +The only `metadata` we collect by default are non-sensitive numeric values. +To learn more, refer to the [telemetry documentation](https://sourcegraph.com/docs/admin/telemetry). -To learn more, refer to the [telemetry documentation](https://sourcegraph.com/docs/telemetry). - -| **Feature** | **Action** | **Allowed `privateMetadata` fields** | -| :---------- | :--------- | :----------------------------------- | +| **Event feature** | **Event action** | **Allowed `privateMetadata` fields** | +| :---------------- | :--------------- | :----------------------------------- | | `cody.completion` | _(all)_ | `languageId` — Provides customers with valuable language-specific insights for code completion usage patterns.
`otherCompletionProviders` — Provides internal teams insights on competitor completion providers customers are using.
`providerModel` — Provides internal teams insights on the specific model used for completions.
`resolvedModel` — The resolved model used for the completion request. | | `cody.hoverCommands` | `visible` | `languageId` — Provides customers with valuable language-specific insights for hover command usage patterns. | | `blob.codeintel` | _(all)_ | `languageId` — Provides customers with valuable language-specific insights for code intelligence usage patterns. | diff --git a/docs/admin/telemetry/protocol.mdx b/docs/admin/telemetry/protocol.mdx index 1ceec743e..258aa669a 100644 --- a/docs/admin/telemetry/protocol.mdx +++ b/docs/admin/telemetry/protocol.mdx @@ -3,7 +3,7 @@ This page contains the core schema for telemetry event data that gets exported from Sourcegraph. -To learn more, refer to our [telemetry documentation](https://sourcegraph.com/docs/telemetry). +To learn more, refer to our [telemetry documentation](https://sourcegraph.com/docs/admin/telemetry). ## Table of Contents @@ -185,15 +185,16 @@ Sourcegraph.com instance and managed services. ### EventParameters - +EventParameters carries the metadata provided by individual Sourcegraph telemetry SDK +callsites, and is the primary means of recording product interaction metadata. | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | | version | [int32](#int32) | |

Version of the event parameters, used for indicating the "shape" of this

event's metadata, beginning at 0. Useful for denoting if the shape of

metadata has changed in any way.

| | legacy_metadata | [EventParameters.LegacyMetadataEntry](#telemetrygateway-v1-EventParameters-LegacyMetadataEntry) | repeated | **Deprecated.**

DEPRECATED, legacy metadata format that only accepted int64 - use the new

'metadata' field instead, which accepts float values. Values sent through

this proto field will be merged into the new metadata attributes.

| -| metadata | [EventParameters.MetadataEntry](#telemetrygateway-v1-EventParameters-MetadataEntry) | repeated |

Strictly typed metadata, restricted to integer values to avoid accidentally

exporting sensitive or private data.

| -| private_metadata | [google.protobuf.Struct](#google-protobuf-Struct) | optional |

Additional potentially sensitive metadata - i.e. not restricted to integer

values.

🚨 SECURITY: This metadata is NOT exported from instances by default, as it

can contain arbitrarily-shaped data that may accidentally contain sensitive

or private contents.

This metadata is only exported on an allowlist basis based on terms of

use agreements and combinations of event feature and action, alongside

careful audit of callsites.

| +| metadata | [EventParameters.MetadataEntry](#telemetrygateway-v1-EventParameters-MetadataEntry) | repeated |

Strictly typed exported-by-default metadata, restricted to numeric values

to ensure no sensitive attributes are exported. Sourcegraph telemetry SDKs

must use programming language type-checking to ensure metadata keys are

statically known.

| +| private_metadata | [google.protobuf.Struct](#google-protobuf-Struct) | optional |

Additional potentially sensitive metadata - i.e. not restricted to numeric

values.

🚨 SECURITY: This metadata is NOT exported from instances by default, as it

can contain arbitrarily-shaped data that may accidentally contain sensitive

or private contents.

This metadata is only exported on an allowlist basis based on terms of

use agreements and combinations of event feature and action, alongside

careful audit of callsites. For the list of allowlisted properties, refer

to this generated page:

https://sourcegraph.com/docs/admin/telemetry/private-metadata-allowlist

| | billing_metadata | [EventBillingMetadata](#telemetrygateway-v1-EventBillingMetadata) | optional |

Optional billing-related metadata.

| @@ -407,7 +408,9 @@ metadata about users for instances that consent to it. ### InstanceOrganizationMetadata -🚨 SECURITY: This metadata is NOT exported from instances by default. +🚨 SECURITY: This metadata is NOT exported from instances by default. It is +exported if the customer specifically requests it to be enabled for optional +Sourcegraph Analytics features. | Field | Type | Label | Description | @@ -425,7 +428,9 @@ metadata about users for instances that consent to it. ### InstanceUserMetadata -🚨 SECURITY: This metadata is NOT exported from instances by default. +🚨 SECURITY: This metadata is NOT exported from instances by default. It is +exported if the customer specifically requests it to be enabled for optional +Sourcegraph Analytics features. | Field | Type | Label | Description | @@ -443,14 +448,16 @@ metadata about users for instances that consent to it. ### PublishInstanceUserMetadataRequest -🚨 SECURITY: This metadata is NOT exported from instances by default. +🚨 SECURITY: This metadata is NOT exported from instances by default. It is +exported if the customer specifically requests it to be enabled for optional +Sourcegraph Analytics features. | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | | metadata | [PublishInstanceUserMetadataRequestMetadata](#telemetrygateway-v1-PublishInstanceUserMetadataRequestMetadata) | |

Metadata about the events being recorded.

| -| user_metadata | [PublishInstanceUserMetadataRequest.UserMetadataPayload](#telemetrygateway-v1-PublishInstanceUserMetadataRequest-UserMetadataPayload) | |

Batch of user metadata to publish in a single message. Clients should aim

to batch large uploads into a series of smaller requests in the RecordEvents

stream, being mindful of common limits in individual message sizes:

https://protobuf.dev/programming-guides/api/#bound-req-res-sizes

🚨 SECURITY: Callers exporting for single-tenant Sourcegraph should always

respect in-instance toggles for what user metadata should be exported.

| -| organization_metadata | [PublishInstanceUserMetadataRequest.OrganizationMetadataPayload](#telemetrygateway-v1-PublishInstanceUserMetadataRequest-OrganizationMetadataPayload) | |

Batch of organization metadata to publish in a single message. Clients

should aim to batch large uploads into a series of smaller requests in the

RecordEvents stream, being mindful of common limits in individual message

sizes: https://protobuf.dev/programming-guides/api/#bound-req-res-sizes

🚨 SECURITY: Callers exporting for single-tenant Sourcegraph should always

respect in-instance toggles for what user metadata should be exported.

| +| user_metadata | [PublishInstanceUserMetadataRequest.UserMetadataPayload](#telemetrygateway-v1-PublishInstanceUserMetadataRequest-UserMetadataPayload) | |

Batch of user metadata to publish in a single message. Clients should aim

to batch large uploads into a series of smaller requests in the RecordEvents

stream, being mindful of common limits in individual message sizes:

https://protobuf.dev/programming-guides/api/#bound-req-res-sizes

🚨 SECURITY: This metadata is NOT exported from instances by default. It is

exported if the customer specifically requests it to be enabled for optional

Sourcegraph Analytics features.

| +| organization_metadata | [PublishInstanceUserMetadataRequest.OrganizationMetadataPayload](#telemetrygateway-v1-PublishInstanceUserMetadataRequest-OrganizationMetadataPayload) | |

Batch of organization metadata to publish in a single message. Clients

should aim to batch large uploads into a series of smaller requests in the

RecordEvents stream, being mindful of common limits in individual message

sizes: https://protobuf.dev/programming-guides/api/#bound-req-res-sizes

🚨 SECURITY: This metadata is NOT exported from instances by default. It is

exported if the customer specifically requests it to be enabled for optional

Sourcegraph Analytics features.

| @@ -460,7 +467,9 @@ metadata about users for instances that consent to it. ### PublishInstanceUserMetadataRequest.OrganizationMetadataPayload -🚨 SECURITY: This metadata is NOT exported from instances by default. +🚨 SECURITY: This metadata is NOT exported from instances by default. It is +exported if the customer specifically requests it to be enabled for optional +Sourcegraph Analytics features. | Field | Type | Label | Description | @@ -475,7 +484,9 @@ metadata about users for instances that consent to it. ### PublishInstanceUserMetadataRequest.UserMetadataPayload -🚨 SECURITY: This metadata is NOT exported from instances by default. +🚨 SECURITY: This metadata is NOT exported from instances by default. It is +exported if the customer specifically requests it to be enabled for optional +Sourcegraph Analytics features. | Field | Type | Label | Description | diff --git a/docs/cody/capabilities/supported-models.mdx b/docs/cody/capabilities/supported-models.mdx index 5ebedcc71..8d4f8b97c 100644 --- a/docs/cody/capabilities/supported-models.mdx +++ b/docs/cody/capabilities/supported-models.mdx @@ -22,9 +22,7 @@ Cody supports a variety of cutting-edge large language models for use in chat an | Anthropic | [Claude Opus 4.5 with Thinking](https://docs.anthropic.com/en/docs/about-claude/models/overview) | ✅ | ✅ | | Anthropic | [Claude Haiku 4.5](https://docs.anthropic.com/en/docs/about-claude/models/overview) | ✅ | ✅ | | Anthropic | [Claude Haiku 4.5 with Thinking](https://docs.anthropic.com/en/docs/about-claude/models/overview) | ✅ | ✅ | -| Google | [Gemini 2.0 Flash](https://deepmind.google/technologies/gemini/flash/) | ✅ | ✅ | | Google | [Gemini 2.5 Flash](https://cloud.google.com/vertex-ai/generative-ai/docs/models/gemini/2-5-flash) | ✅ | ✅ | -| Google | [Gemini 2.0 Flash-Lite](https://deepmind.google/technologies/gemini/flash/) | ✅ | ✅ | | Google | [Gemini 2.5 Pro](https://cloud.google.com/vertex-ai/generative-ai/docs/models/gemini/2-5-pro) | ✅ | ✅ | | Google | [Gemini 3 Pro](https://cloud.google.com/vertex-ai/generative-ai/docs/models/gemini/3-pro) | ✅ (experimental) | ❌ | | Google | [Gemini 3 Flash](https://cloud.google.com/vertex-ai/generative-ai/docs/models/gemini/3-flash) | ✅ (experimental) | ❌ | diff --git a/docs/self-hosted/observability/alerts.mdx b/docs/self-hosted/observability/alerts.mdx index fe9f16fd8..d857b648f 100644 --- a/docs/self-hosted/observability/alerts.mdx +++ b/docs/self-hosted/observability/alerts.mdx @@ -1417,43 +1417,6 @@ Generated query for warning alert: `max((sum by (container_label_io_kubernetes_p
-## gitserver: running_git_commands - -

git commands running on each gitserver instance

- -**Descriptions** - -- warning gitserver: 50+ git commands running on each gitserver instance for 2m0s -- critical gitserver: 100+ git commands running on each gitserver instance for 5m0s - -**Next steps** - -- **Check if the problem may be an intermittent and temporary peak** using the "Container monitoring" section at the bottom of the Git Server dashboard. -- **Single container deployments (removed in 7.0.0):** The single-container deployment mode has been sunset. [Migrate to Docker Compose](../deploy/docker-compose/migrate). -- **Kubernetes and Docker Compose:** Check that you are running a similar number of git server replicas and that their CPU/memory limits are allocated according to what is shown in the [Sourcegraph resource estimator](https://sourcegraph.com/docs/self-hosted/deploy/resource-estimator). -- More help interpreting this metric is available in the [dashboards reference](dashboards#gitserver-running_git_commands). -- **Silence this alert:** If you are aware of this alert and want to silence notifications for it, add the following to your site configuration and set a reminder to re-evaluate the alert: - -```json -"observability.silenceAlerts": [ - "warning_gitserver_running_git_commands", - "critical_gitserver_running_git_commands" -] -``` - -*Managed by the Sourcegraph Services team.* - -
-Technical details - -Generated query for warning alert: `max((sum by (instance, cmd) (src_gitserver_exec_running)) >= 50)` - -Generated query for critical alert: `max((sum by (instance, cmd) (src_gitserver_exec_running)) >= 100)` - -
- -
- ## gitserver: echo_command_duration_test

echo test command duration

diff --git a/docs/self-hosted/observability/dashboards.mdx b/docs/self-hosted/observability/dashboards.mdx index f0a7ce44d..dce0c86d8 100644 --- a/docs/self-hosted/observability/dashboards.mdx +++ b/docs/self-hosted/observability/dashboards.mdx @@ -6137,7 +6137,7 @@ sort_desc(sum(sum_over_time(src_gitserver_exec_high_memory_usage_count{instance= A high value signals load. -Refer to the [alerts reference](alerts#gitserver-running_git_commands) for 2 alerts related to this panel. +This panel has no related alerts. To see this panel, visit `/-/debug/grafana/d/gitserver/gitserver?viewPanel=100030` on your Sourcegraph instance. From a7e7fba131568e19efaa49b42d6a248b58329149 Mon Sep 17 00:00:00 2001 From: Stefan Hengl Date: Mon, 9 Mar 2026 09:33:13 +0100 Subject: [PATCH 040/217] chore(deep search): document move of config settings to top-level (#1645) Related to https://github.com/sourcegraph/sourcegraph/pull/10362 --- docs/deep-search/index.mdx | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/docs/deep-search/index.mdx b/docs/deep-search/index.mdx index f116f28af..2d83ed9f0 100644 --- a/docs/deep-search/index.mdx +++ b/docs/deep-search/index.mdx @@ -72,9 +72,7 @@ We do not enforce [repository permissions](/admin/permissions) for viewing share If Deep Search is disabled, ask your site administrator to enable the following setting in your site configuration: ```json -"experimentalFeatures": { - "deepSearch.enabled": true, -}, +"deepSearch.enabled": true, ``` Deep Search uses a combination of frontier and specialized models selected by Sourcegraph. We continuously evaluate and update these models to ensure optimal performance. @@ -84,10 +82,8 @@ Deep Search uses a combination of frontier and specialized models selected by So Conversation sharing is disabled by default. To enable conversation sharing, ask your site administrator to enable the following setting in your site configuration: ```json -"experimentalFeatures": { - "deepSearch.enabled": true, - "deepSearch.sharing.enabled": true, -}, +"deepSearch.enabled": true, +"deepSearch.sharing.enabled": true, ``` ### Custom model configuration and BYOK (Bring Your Own Key) From 643064c2371ac07c4f26564ead4bd439c69afe86 Mon Sep 17 00:00:00 2001 From: Jason Hawk Harris Date: Tue, 10 Mar 2026 13:29:28 -0500 Subject: [PATCH 041/217] chore: remove notebooks from docs (#1680) ### Remove Notebooks references from docs Removes all references to the deprecated Notebooks feature from documentation pages. _Removes references in the following files:_ - `/notebooks/` - `pricing/faqs.mdx` - `tutorials/index.mdx` - `getting-started/github-vs-sourcegraph.mdx` - `admin/user-data-deletion.mdx` - `admin/pings.mdx` - `integration/index.mdx` Historical entries in technical-changelog.mdx are intentionally preserved. --- docs/admin/pings.mdx | 11 --- docs/admin/user-data-deletion.mdx | 3 +- .../getting-started/github-vs-sourcegraph.mdx | 8 -- docs/integration/index.mdx | 3 +- docs/notebooks/blocks.mdx | 25 ------ docs/notebooks/index.mdx | 75 ----------------- docs/notebooks/notebook-embedding.mdx | 44 ---------- docs/notebooks/notebook-sharing.mdx | 23 ------ docs/notebooks/quickstart.mdx | 82 ------------------- docs/pricing/faqs.mdx | 2 +- docs/tutorials/index.mdx | 6 -- 11 files changed, 3 insertions(+), 279 deletions(-) delete mode 100644 docs/notebooks/blocks.mdx delete mode 100644 docs/notebooks/index.mdx delete mode 100644 docs/notebooks/notebook-embedding.mdx delete mode 100644 docs/notebooks/notebook-sharing.mdx delete mode 100644 docs/notebooks/quickstart.mdx diff --git a/docs/admin/pings.mdx b/docs/admin/pings.mdx index 5993b0c6c..66a13c1e4 100644 --- a/docs/admin/pings.mdx +++ b/docs/admin/pings.mdx @@ -162,17 +162,6 @@ Sourcegraph aggregates usage and performance metrics for some product features i - Total number of search executions - Total number of search executions that errored - 50th and 90th percentile runtimes for search executions -- Notebooks usage data - - Total number of views of the notebook page - - Total number of views of the notebooks list page - - Total number of views of the embedded notebook page - - Total number of created notebooks - - Total number of added notebook stars - - Total number of added notebook markdown blocks - - Total number of added notebook query blocks - - Total number of added notebook file blocks - - Total number of added notebook symbol blocks - - Total number of added notebook compute blocks - Code Host integration usage data (Browser extension / Native Integration) - Aggregate counts of current daily, weekly, and monthly unique users and total events - Aggregate counts of current daily, weekly, and monthly unique users and total events who visited Sourcegraph instance from browser extension diff --git a/docs/admin/user-data-deletion.mdx b/docs/admin/user-data-deletion.mdx index bbc5f09ac..214c6d7ba 100644 --- a/docs/admin/user-data-deletion.mdx +++ b/docs/admin/user-data-deletion.mdx @@ -28,6 +28,5 @@ When a user or organization is deleted (for both "delete" or "delete forever"), | Code Insight dashboard | Sometimes | If the dashboard was private to the user it is deleted on the user deletion; if it was private to the org it is deleted on the org deletion. If it was a global dashboard, it will continue to exist. | | Code Monitor | Yes | If the user that created the code monitor is deleted, their code monitors are deleted and will no longer trigger new actions. | | Repository Permissions | Yes | If you delete the user, the associated repository permissions will be deleted as well via a database trigger. If the user is revived later, the permissions need to be synced again. | -| Search Notebook | Yes | If you delete the user or organization that owns the notebook, it no longer appears in the UI. In the organization-owned case, it's still preserved in the database. | -| Search Context | Yes | If you delete the user or organization that owns the context, it no longer appears in the UI. In cases where it was an organization notebook, it is preserved in the database. | +| Search Context | Yes | If you delete the user or organization that owns the context, it no longer appears in the UI. In cases where it was an organization context, it is preserved in the database. | | Settings file (extensions, experimental features, defaults) | Yes | If you delete the user or organization, the associated settings file is deleted. | diff --git a/docs/getting-started/github-vs-sourcegraph.mdx b/docs/getting-started/github-vs-sourcegraph.mdx index a153aac76..f81aec244 100644 --- a/docs/getting-started/github-vs-sourcegraph.mdx +++ b/docs/getting-started/github-vs-sourcegraph.mdx @@ -329,14 +329,6 @@ Sourcegraph offers [code monitors](/code-monitoring), which continuously monitor Each code monitor can span any scope of your choosing, such as a single repository, multiple repositories, or multiple code hosts. They can also be scoped to specific branches of a repository. Code monitor alerts can be configured to send notifications via email, Slack message, or webhook. Most queries used for a code monitor can also be reused for a Code Insights chart or a fix with Batch Changes. -## Embedded code search and documentation - -Sourcegaph’s [Notebooks](/notebooks) integrate code search with Markdown for knowledge sharing. Notebooks are created with blocks, and each block can be Markdown, a code search query, a live code snippet, a file, or a symbol. - -Notebooks pull information directly from your codebase, so the information served in notebooks (via code search blocks, for example) always reflects what is live in your code at that moment in time. By referencing live code, notebooks are useful for onboarding teammates, documenting vulnerabilities, walking through complex parts of a codebase, or keeping track of useful queries. - -GitHub does not currently offer functionality to embed code search within notebooks or documentation. - ## Licensing GitHub is closed source, while Sourcegraph’s code is publicly available. diff --git a/docs/integration/index.mdx b/docs/integration/index.mdx index 8e9defb05..99d3d97bc 100644 --- a/docs/integration/index.mdx +++ b/docs/integration/index.mdx @@ -19,8 +19,7 @@ Sourcegraph integrates with your other tools to help you search, navigate, and r - [Open in Editor](/integration/open-in-editor): jump to your editor from Sourcegraph - [Search shortcuts](/integration/browser-extension/how-tos/browser-search-engine): quickly search from your browser - Launcher extensions - - [Sourcegraph for Raycast](https://www.raycast.com/bobheadxi/sourcegraph) (unofficial): search code, browse - notebooks, and manage batch changes from the Raycast launcher + - [Sourcegraph for Raycast](https://www.raycast.com/bobheadxi/sourcegraph) (unofficial): search code and manage batch changes from the Raycast launcher - Cody IDE Extensions - [JetBrains](/integration/jetbrains) - [VS Code](/cody/clients/install-vscode) diff --git a/docs/notebooks/blocks.mdx b/docs/notebooks/blocks.mdx deleted file mode 100644 index 47cae7ef1..000000000 --- a/docs/notebooks/blocks.mdx +++ /dev/null @@ -1,25 +0,0 @@ -Blocks are the compositional units of a notebook. You can interleave the various block types in a notebook to create rich, powerful documentation. There are four supported block types. - -# Block types - -## Markdown blocks - -Markdown blocks support standard Markdown formatting, enabling you to create headings, lists, code blocks, and more. They are the foundational block type for providing additional context to the specialized block types described below. - -## Query blocks - -Query blocks support the full Sourcegraph search query language, allowing you to use our full [search syntax](/code-search/queries), including any of our types, filters, patterns, and predicates, to display the most relevant results. - -> Note: Notebook block searches don't use your Sourcegraph instance's default search configuration. For example you'll need to explicitly specify things like `patterntype:regexp` or `context:sourcegraph` even if your user or global settings have a configured default for these values. - -## Symbol blocks - -With symbol blocks, you can identify the symbol you want to highlight. Symbol blocks are special. As long as the symbol definition stays within the file you selected when you created the block, you don't need to update it when the file changes. Symbol blocks "follow" the symbol around the file and so always display its current location. - -Symbol blocks provide some UI affordances to make it easier to find symbols, such as a default `type:symbol` in the query, as well as a purpose-built typeahead specialized for symbol selection. - -## File blocks - -File blocks are similar to symbol blocks in that they are some special affordances to make them easier to create. You can add an entire file the file block, or you can select a line range of a file. File ranges are great for embedding code snippets into a notebook or highlighting important files. File blocks are editable so you can modify a full file to only show a line range from it, or remove the line range to show an entire file. - -If you're viewing a file in Sourcegraph search, you can also copy the URL and paste it directly into a file block or the command palette. If you have a line range selected it will be preserved on paste. diff --git a/docs/notebooks/index.mdx b/docs/notebooks/index.mdx deleted file mode 100644 index 25e305cb0..000000000 --- a/docs/notebooks/index.mdx +++ /dev/null @@ -1,75 +0,0 @@ -# Notebooks - -Notebooks enable powerful live–and persistent–documentation, shareable with your organization or the world. - -Inspired by Jupyter Notebooks and powered by Markdown and Sourcegraph's code search, Notebooks let you and your team create living documentation that interacts directly with your code. You can leverage Notebooks to onboard a new teammate, document known vulnerabilities, a common pattern in your codebase, or useful Sourcegraph queries. - -![](https://storage.googleapis.com/sourcegraph-assets/docs/images/notebooks/notebooks_home.gif) - -Notebooks have powerful content creation features, like multiple block types, each with their own unique capabilities. -If you're familiar with Jupyter Notebooks, then you already understand the blocks concept. You can add as many of each -block as you want to a Sourcegraph notebook. - -## Notebook types - -Notebooks can be created in two ways. Through the web interface or via special Markdown files with the special `.snb` extension. To view file-based notebooks you must view the files in the file view on sourcegraph.com or on your Sourcegraph instance. - -### Web-based notebooks - -The simplest way to get started with Notebooks is to create one using the web interface. Notebooks created this way have -the advantage of being interactive, letting you see the content of your blocks in realtime as you create your notebook. - -You can also create web-based notebooks by importing plain Markdown files and then augmenting them with Sourcegraph notebook block types in the web interface. A new notebook will automatically be created when you import a standard markdown file. From there, you can modify it however you like in the web interface. - -Web-based notebooks are automatically saved as they're edited. There is currently no version control, version history, or versioning system. - -### File-based notebooks - -Alternatively, you can create notebooks using text files with the `.snb` file extension. These files are rendered specially by Sourcegraph (either on sourcegraph.com or within your Sourcegraph instance) to display notebook blocks alongside standard Markdown blocks. - -Whenever you view a `.snb` file on Sourcegraph, you'll see a "Run all blocks" button near the top of the notebook, which will execute all the notebook blocks at once. Markdown and file blocks are rendered by default. - -File-based notebooks have the advantage of living anywhere you store text files. The disadvantage comes during composition, as you won't be able to see the contents of your blocks while you create your notebook. - -### Combined approaches - -#### Compose online and export to disk - -If you prefer to keep your notebooks in your repos but want to compose them on the web, you can get the best of both worlds by composing your notebooks on your sourcegraph instance and then exporting them to your repositories on disk. - -#### Embed notebooks anywhere - -Sourcegraph notebooks can be [embedded](/notebooks/notebook-embedding) anywhere that allows iframes. Notebooks hosted on sourcegraph.com can be embedded anywhere. Notebooks hosted on your private instance are subject to your organization's security policies, but can generally be viewed by any user with access to your instance as long as they're logged in. - -## Notebook blocks - -The currently supported block types are: - -- Query -- File -- Symbol -- Markdown - -[Read more about block types](/notebooks/blocks). - -## Searching notebooks - -Notebooks created through the web interface are full text searchable from the `/notebooks` page. Each tab has its own search box and each search box is scoped to that tab. The exception is the Explore tab, which searches all notebooks you have access to. - -Searches will match on notebook titles and any text in blocks. For example any text in Markdown blocks and any of the query text in file, symbol, and search query blocks. Searching through results in symbol, file, and query block types is not supported because they are dynamic in nature. - - - - - -## Explanations - -- [Sharing notebooks](/notebooks/notebook-sharing) -- [Embedding notebooks](/notebooks/notebook-embedding) -- [Block types](/notebooks/blocks) diff --git a/docs/notebooks/notebook-embedding.mdx b/docs/notebooks/notebook-embedding.mdx deleted file mode 100644 index d5c962b25..000000000 --- a/docs/notebooks/notebook-embedding.mdx +++ /dev/null @@ -1,44 +0,0 @@ -# Embedding Notebooks - -A notebook can be embedded using a standard iframe element. In order for the iframe to load, the user must be logged into Sourcegraph. The notebook embedding URL is an authenticated endpoint. - -## Domain considerations - -Certain browsers (i.e. Safari and Firefox) block cross-domain cookies from being sent in iframe requests. This will prevent an embedded notebook from being displayed, even when a user is logged into Sourcegraph from the same browser. To ensure that notebook embedding requests will be permitted to load for all of your logged-in Sourcegraph users, the Sourcegraph instance must be hosted on the same domain as the page that loads the iframe element. For Cloud customers, see [Custom Domains](/cloud/#custom-domains). - -## How to embed - -To create the embedding URL, copy the notebook URL (e.g. `https://your-sourcegraph-instance.com/notebooks/notebook-id`), and add the `/embed` prefix directly before the `/notebooks` segment: - -``` -https://{your-sourcegraph-instance.com}/embed/notebooks/{notebook-id} -``` - -Once you have the embedding URL, create an iframe element and use the embedding URL as the `src` attribute value. See example iframe below: - -```html - -``` - -## Security - -We recommend using the `sandbox` attribute to apply extra security restrictions to the iframe. Notebooks require three exceptions: `allow-scripts` allows executing Javascript scripts, `allow-same-origin` allows access to local storage and cookies, and `allow-popups` allows opening links in a separate tab. - -## Enable embedding notebooks on private instances - -Embedding is disabled by default on private instances. A site-admin can enable embedding by running the following GraphQL mutation in the API console, located at `https://{your-sourcegraph-instance.com}/api/console`: - -```graphql -mutation { - createFeatureFlag(name: "enable-embed-route", value: true) { - ... on FeatureFlagBoolean { - name - value - } - } -} -``` diff --git a/docs/notebooks/notebook-sharing.mdx b/docs/notebooks/notebook-sharing.mdx deleted file mode 100644 index decb3e07b..000000000 --- a/docs/notebooks/notebook-sharing.mdx +++ /dev/null @@ -1,23 +0,0 @@ -# Sharing Notebooks - -Notebooks support the following sharing scheme. - -## User namespace - -### Private Notebooks - -This is the default permissions level for all new notebook. Only the creator can view and edit the notebook. - -## Sourcegraph organization namespace - -Find out more about Sourcegraph organizations and how to create and configure them on the [organizations docs page](/admin/organizations). - -### Private organization Notebooks - -Only organization members can view and edit the notebook. - -### Public organization Notebooks - -In self-hosted and managed Sourcegraph instances, everyone who has access to the instance can view the notebook. On [Sourcegraph.com](https://sourcegraph.com), anyone can view the Notebook. In both cases, only members of the owning Sourcegraph organization can edit the Notebook. - -![](https://storage.googleapis.com/sourcegraph-assets/docs/images/notebooks/notebook_sharing.gif) diff --git a/docs/notebooks/quickstart.mdx b/docs/notebooks/quickstart.mdx deleted file mode 100644 index 4c9f343bd..000000000 --- a/docs/notebooks/quickstart.mdx +++ /dev/null @@ -1,82 +0,0 @@ -# Quickstart for Notebooks - -In this guide, you'll create your first Notebook - -## The Notebooks interface - -The Notebooks interface will be familiar if you've ever used Jupyter or iPython notebooks before. -![A new notebook](https://storage.googleapis.com/sourcegraph-assets/docs/images/notebooks/notebooks_ui_overview) - -### Run all blocks - -The Run all blocks button allows you to render all the blocks in the Notebook with one click. You'll want to get in the habit of using this button every time you start reading a Notebook. -![The Run all blocks button](https://storage.googleapis.com/sourcegraph-assets/docs/images/notebooks/notebooks_run_all.jpeg) - -### Autosave - -Notebooks are automatically saved so you'll never lose your work. - -![null](https://storage.googleapis.com/sourcegraph-assets/docs/images/notebooks/notebooks_autosave.jpeg) - -### Supported block types - -Like Jupyter notebooks, Sourcegraph Notebooks support Markdown. They also support two special block types: Query and Code. - -#### Query blocks - -Query blocks allow you to enter any valid Sourcegraph query and view the results right inside the notebook. The query block input supports the same typeahead functionality as the main Sourcegraph search bar. - -![](https://storage.googleapis.com/sourcegraph-assets/docs/images/notebooks/notebooks_query_block) - -#### Markdown blocks - -Markdown blocks support all the Markdown features you'd expect, including rendering images and syntax highlighting. - -#### Code blocks - -Code blocks are another special block type that allow you show a file range from any file on Sourcegraph. You can use the interface to fill in the range you want, or just select a code block and paste in a valid Sourcegraph URL to have the inputs auto-filled. - - - -![](https://storage.googleapis.com/sourcegraph-assets/docs/images/notebooks/notebooks_code_block.mp4) - -# Create a new Notebook - -- Navigate to [https://sourcegraph.com/notebooks](https://sourcegraph.com/notebooks) and click "Create notebook". -- Click on the name to edit and rename the Notebook "React components" -- Create a Markdown block and enter the text below. - -``` -# React class components -React class components are no longer the preferred style of component creation. Today, functional components are the standard. Below are some examples of class components in the Sourcegraph codebase. -``` - -- Click the render button, or press Cmd+Return to render the block -- Next, create a query block and enter the following query to find some examples of class components in the Sourcegraph codebase. - -``` -repo:^github\.com/sourcegraph/sourcegraph$ lang:TypeScript extends React -``` - -- Render the block with Cmd+Return -- Next, let's find some recent commits that include class components. -- Click the "duplicate" button to duplicate the block and modify the query to return commits that added our search phrase. - -``` -repo:^github\.com/sourcegraph/sourcegraph$ lang:TypeScript extends React type:diff select:commit.diff.added -``` - -- Your Notebook should now look like [this](https://sourcegraph.com/notebooks/Tm90ZWJvb2s6MTE4). -- **Optional:** share you notebook by clicking "Private" at the top right of the screen and select "Public" to share your Notebook with the community! diff --git a/docs/pricing/faqs.mdx b/docs/pricing/faqs.mdx index 929f2e029..9733863d2 100644 --- a/docs/pricing/faqs.mdx +++ b/docs/pricing/faqs.mdx @@ -47,7 +47,7 @@ A billable active Code Search or Code Intelligence Platform user is signed into - Creating, viewing, or receiving a code monitor - Creating, viewing, modifying, or applying a batch change - Creating, viewing, or modifying a code insight -- Creating, viewing, or modifying a search notebook + ## How is this measured in the product? diff --git a/docs/tutorials/index.mdx b/docs/tutorials/index.mdx index cc0321b6b..5c0d4e4ca 100644 --- a/docs/tutorials/index.mdx +++ b/docs/tutorials/index.mdx @@ -110,12 +110,6 @@ Full [search query syntax](/code-search/queries). See [the Sourcegraph API page](/api). -## Search Notebooks - -| Topic | Content Type | Description | -| ---------------------------------------------------------- | ------------ | ----------------------------------------------------------------------------------------------------------- | -| [Search Notebooks Quickstart Guide](/notebooks/quickstart) | Tutorial | Notebooks enable powerful live–and persistent–documentation, shareable with your organization or the world. | - ## Customizing Your Sourcegraph User Environment | Topic | Content Type | Description | From bde1c77cb5cb8fecb5cb99112a8059f2203bc25f Mon Sep 17 00:00:00 2001 From: Warren Gifford Date: Tue, 10 Mar 2026 14:50:37 -0700 Subject: [PATCH 042/217] chore/platform: deepsearch networking requirements (#1677) closes PLAT-422 This PR adds some configuration advisements about the optimal ingress configuration for working with streaming deepsearch Internal context: https://sourcegraph.slack.com/archives/C05MW2TMYAV/p1770145934635309 --- docs/code-search/queries/language.mdx | 13 +++++++------ docs/deep-search/index.mdx | 13 +++++++++++++ docs/self-hosted/deploy/kubernetes/index.mdx | 10 ++++++++++ 3 files changed, 30 insertions(+), 6 deletions(-) diff --git a/docs/code-search/queries/language.mdx b/docs/code-search/queries/language.mdx index 8da070363..97813a0c7 100644 --- a/docs/code-search/queries/language.mdx +++ b/docs/code-search/queries/language.mdx @@ -260,12 +260,13 @@ For example, Sourcegraph admins can increase the maximum timeout of 1 minute through [site configuration](/admin/search#maximum-timeout). - The maximum timeout can also depend on the HTTP load balancer in front of - Sourcegraph (nginx/ELB/Cloudflare/etc). Sourcegraph admins may need to - increase timeouts for Sourcegraph paths, particularly the - `.api/search/stream` path. This uses - [SSE](https://en.wikipedia.org/wiki/Server-sent_events), so your reverse - proxy may have specific support for these requests. + The maximum timeout also depends on the HTTP load balancer or ingress controller + in front of Sourcegraph (nginx/ELB/Cloudflare/etc). Sourcegraph admins must ensure + timeouts for the `.api/search/stream` path are set to at least **5 minutes**, as + this endpoint uses [SSE](https://en.wikipedia.org/wiki/Server-sent_events) for + streaming search results. This requirement also applies to [Deep Search](/deep-search). + See the [Kubernetes deployment guide](/self-hosted/deploy/kubernetes#cloud-providers-guides) + for further guidance. ### Visibility diff --git a/docs/deep-search/index.mdx b/docs/deep-search/index.mdx index 2d83ed9f0..08f48eb74 100644 --- a/docs/deep-search/index.mdx +++ b/docs/deep-search/index.mdx @@ -90,6 +90,19 @@ Conversation sharing is disabled by default. To enable conversation sharing, ask Deep Search is only available to customers using the [Sourcegraph Model Provider](/model-provider). Customers who configure and access their own models via BYOK cannot use the Deep Search feature. +## Self-hosted network requirements + +Deep Search streams its responses using [Server-Sent Events (SSE)](https://en.wikipedia.org/wiki/Server-sent_events). Responses are streamed progressively as the agent works, and a single Deep Search request can remain open for up to 5 minutes. + +If your Sourcegraph instance sits behind a reverse proxy, load balancer, or ingress controller, you must ensure the timeout for connections to Sourcegraph is set to at least **5 minutes**. The default timeout for many proxies (often 30–60 seconds) will cause in-progress Deep Search responses to be cut off prematurely. + + + SSE streaming is the default and recommended transport for Deep Search. A polling + fallback is temporarily available but will be removed in a future release. + Ensure your ingress or proxy timeout is raised to at least 5 minutes before + enabling Deep Search for your users. + + ## Managing usage Deep Search usage is managed on two levels: diff --git a/docs/self-hosted/deploy/kubernetes/index.mdx b/docs/self-hosted/deploy/kubernetes/index.mdx index ca69aa060..57ebb7320 100644 --- a/docs/self-hosted/deploy/kubernetes/index.mdx +++ b/docs/self-hosted/deploy/kubernetes/index.mdx @@ -488,6 +488,16 @@ This section is aimed at providing high-level guidance on deploying Sourcegraph - An Ingress Controller installed, e.g. platform native ingress controller, [NGINX Ingress Controller]. - The ability to create DNS records for Sourcegraph, e.g. `sourcegraph.company.com` + + Sourcegraph uses [Server-Sent Events (SSE)](https://en.wikipedia.org/wiki/Server-sent_events) + for streaming search results and [Deep Search](/deep-search) responses. Your ingress controller or + load balancer must be configured to allow connections to remain open for at least + **5 minutes**. The default timeout for many ingress controllers and cloud load + balancers is significantly lower and will cause streaming responses to be terminated + prematurely. Consult your ingress controller's documentation for the appropriate + timeout annotation or setting. + + ### Configure Sourcegraph on Google Kubernetes Engine (GKE) #### Prerequisites From df5b6d07b2d981cd6eb526c6af291d8c35036494 Mon Sep 17 00:00:00 2001 From: Warren Gifford Date: Fri, 13 Mar 2026 10:42:28 -0700 Subject: [PATCH 043/217] chore/release: add deprecation notices about sboms in the 7.1.x release (#1685) closes PLAT-468 SBOMs will no longer be published in version `7.1.x`. https://github.com/sourcegraph/sourcegraph/pull/10785 This PR adds a deprecation notice as a temporary measure while its feasible someone may still be using sbom for older versions of Sourcegraph which will still be available. The `sbom` and `signature` command both rely on a published sbom for a given release, so we'll remove them both. --- docs/cli/how-tos/fetch-sboms.mdx | 8 ++++++-- docs/cli/how-tos/index.mdx | 4 ++-- docs/cli/how-tos/verify-container-signatures.mdx | 8 ++++++-- docs/cli/references/index.mdx | 4 ++-- docs/cli/references/sbom.mdx | 6 ++++-- docs/cli/references/signature.mdx | 6 ++++-- 6 files changed, 24 insertions(+), 12 deletions(-) diff --git a/docs/cli/how-tos/fetch-sboms.mdx b/docs/cli/how-tos/fetch-sboms.mdx index 276ac6476..5fd3701c8 100644 --- a/docs/cli/how-tos/fetch-sboms.mdx +++ b/docs/cli/how-tos/fetch-sboms.mdx @@ -1,6 +1,10 @@ # How to fetch SBOMs for Sourcegraph -Sourcegraph generates and cryptographically signs a Software Bill of Materials (SBOM) for each container image in every release. These SBOMs are stored in our container registry alongside their corresponding images. + +**Deprecated:** As of Sourcegraph 7.0.2852, we no longer generate SBOMs as part of the release process. The `src sbom fetch` command will only work for Sourcegraph releases between 5.9.0 and 7.0.2852. For questions about software supply chain security, please contact your Sourcegraph account team. + + +Sourcegraph generated and cryptographically signed a Software Bill of Materials (SBOM) for each container image in releases 5.9.0 through 7.0.2852. These SBOMs are stored in our container registry alongside their corresponding images. Use the Sourcegraph CLI (`src`) to fetch SBOMs for a specific release. @@ -14,7 +18,7 @@ Use the Sourcegraph CLI (`src`) to fetch SBOMs for a specific release. 1. Determine the Sourcegraph version to verify. Use either a [recent release](https://sourcegraph.com/changelog/releases) or your instance's current version. - > **Note:** SBOMs are only available only for Sourcegraph release 5.9.0 and later. + > **Note:** SBOMs are only available for Sourcegraph releases 5.9.0 through 7.0.2852. To find your instance's current version, check your deployment or view the Settings page on your Sourcegraph instance (version shown in bottom left corner). diff --git a/docs/cli/how-tos/index.mdx b/docs/cli/how-tos/index.mdx index c32c04c73..5cf06d835 100644 --- a/docs/cli/how-tos/index.mdx +++ b/docs/cli/how-tos/index.mdx @@ -5,5 +5,5 @@ The following how-tos apply to the `src` command line interface to Sourcegraph: - [Creating an access token](/cli/how-tos/creating-an-access-token) - [Revoking an access token](/cli/how-tos/revoking-an-access-token) - [Managing access tokens](/cli/how-tos/managing-access-tokens) -- [How to fetch SBOMs for Sourcegraph](/cli/how-tos/fetch-sboms) -- [How to verify container signatures for Sourcegraph releases](/cli/how-tos/verify-container-signatures) +- [How to fetch SBOMs for Sourcegraph (deprecated)](/cli/how-tos/fetch-sboms) +- [How to verify container signatures for Sourcegraph releases (deprecated)](/cli/how-tos/verify-container-signatures) diff --git a/docs/cli/how-tos/verify-container-signatures.mdx b/docs/cli/how-tos/verify-container-signatures.mdx index 14011c573..ee32e5cc3 100644 --- a/docs/cli/how-tos/verify-container-signatures.mdx +++ b/docs/cli/how-tos/verify-container-signatures.mdx @@ -1,6 +1,10 @@ # How to verify container signatures for Sourcegraph releases -Sourcegraph publishes cryptographic signatures for all container images included in each release. These signatures can be used to verify the authenticity and integrity of the downloaded images. + +**Deprecated:** As of Sourcegraph 7.0.2852, we no longer publish container signatures as part of the release process. The `src signature verify` command will only work for Sourcegraph releases between 5.11.4013 and 7.0.2852. For questions about software supply chain security, please contact your Sourcegraph account team. + + +Sourcegraph published cryptographic signatures for all container images included in releases 5.11.4013 through 7.0.2852. These signatures can be used to verify the authenticity and integrity of the downloaded images. To verify signatures for a specific release, use the Sourcegraph CLI (`src`). This tool validates that all images in the release were signed by Sourcegraph and displays the SHA256 hashes of the verified images. @@ -14,7 +18,7 @@ To verify signatures for a specific release, use the Sourcegraph CLI (`src`). Th 1. Determine the Sourcegraph version to verify. Use either a [recent release](https://sourcegraph.com/changelog/releases) or your instance's current version. - > **Note:** Signature verification is available only for Sourcegraph release 5.11.4013 and later. + > **Note:** Signature verification is available only for Sourcegraph releases 5.11.4013 through 7.0.2852. To find your instance's current version, check your deployment or view the Settings page on your Sourcegraph instance (version shown in bottom left corner). diff --git a/docs/cli/references/index.mdx b/docs/cli/references/index.mdx index 5f606371d..c511872ba 100644 --- a/docs/cli/references/index.mdx +++ b/docs/cli/references/index.mdx @@ -15,11 +15,11 @@ * [`lsp`](references/lsp) * [`orgs`](references/orgs) * [`repos`](references/repos) -* [`sbom`](references/sbom) +* [`sbom` (deprecated)](references/sbom) * [`search`](references/search) * [`search-jobs`](references/search-jobs) * [`serve-git`](references/serve-git) -* [`signature`](references/signature) +* [`signature` (deprecated)](references/signature) * [`snapshot`](references/snapshot) * [`teams`](references/teams) * [`users`](references/users) diff --git a/docs/cli/references/sbom.mdx b/docs/cli/references/sbom.mdx index 76dd910b3..e3750cf6a 100644 --- a/docs/cli/references/sbom.mdx +++ b/docs/cli/references/sbom.mdx @@ -1,11 +1,13 @@ # `src sbom` - + +**Deprecated:** SBOMs are no longer generated for Sourcegraph releases after version 7.0.2852. + ## Usage ``` -'src sbom' fetches and verifies SBOM (Software Bill of Materials) data for Sourcegraph containers. +'src sbom' fetches and verifies SBOM (Software Bill of Materials) data for Sourcegraph containers for releases 5.9.0 through 7.0.2852. Usage: diff --git a/docs/cli/references/signature.mdx b/docs/cli/references/signature.mdx index a335f9ca9..b050db010 100644 --- a/docs/cli/references/signature.mdx +++ b/docs/cli/references/signature.mdx @@ -1,11 +1,13 @@ # `src signature` - + +**Deprecated:** Container signatures are no longer published for Sourcegraph releases after version 7.0.2852. + ## Usage ``` -'src signature' verifies published signatures for Sourcegraph containers. +'src signature' verifies published signatures for Sourcegraph containers for releases 5.11.4013 through 7.0.2852. Usage: From db789f5e1486445ab0b5ed9927db12efe204b691 Mon Sep 17 00:00:00 2001 From: Petri Last Date: Fri, 13 Mar 2026 17:31:21 -0600 Subject: [PATCH 044/217] fix: Add redirect links for all code hosts, not just ones with underscores (#1686) Only ones like `bitbucket_server` and `bitbucket_cloud` had redirects, but the parent `code_hosts` was changed as well, so we need to redirect for all code hosts there. --- src/data/redirects.ts | 40 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) diff --git a/src/data/redirects.ts b/src/data/redirects.ts index 459fbe28a..a8ce3c4d1 100644 --- a/src/data/redirects.ts +++ b/src/data/redirects.ts @@ -6453,6 +6453,11 @@ const redirectsData = [ destination: '/admin/code-hosts/aws-codecommit', permanent: true }, + { + source: '/admin/code_hosts/azuredevops', + destination: '/admin/code-hosts/azuredevops', + permanent: true + }, { source: '/admin/code_hosts/bitbucket_cloud', destination: '/admin/code-hosts/bitbucket-cloud', @@ -6463,6 +6468,41 @@ const redirectsData = [ destination: '/admin/code-hosts/bitbucket-server', permanent: true }, + { + source: '/admin/code_hosts/gerrit', + destination: '/admin/code-hosts/gerrit', + permanent: true + }, + { + source: '/admin/code_hosts/github', + destination: '/admin/code-hosts/github', + permanent: true + }, + { + source: '/admin/code_hosts/gitlab', + destination: '/admin/code-hosts/gitlab', + permanent: true + }, + { + source: '/admin/code_hosts/gitolite', + destination: '/admin/code-hosts/gitolite', + permanent: true + }, + { + source: '/admin/code_hosts/non-git', + destination: '/admin/code-hosts/non-git', + permanent: true + }, + { + source: '/admin/code_hosts/other', + destination: '/admin/code-hosts/other', + permanent: true + }, + { + source: '/admin/code_hosts/phabricator', + destination: '/admin/code-hosts/phabricator', + permanent: true + }, { source: '/admin/code_hosts/rate_limits', destination: '/admin/code-hosts/rate-limits', From 047028c4a9fad2b002233451168ca9869a182300 Mon Sep 17 00:00:00 2001 From: Eugenio Sanchez Date: Mon, 16 Mar 2026 20:16:07 -0700 Subject: [PATCH 045/217] added spacing to bullets code host github page - section Github API access (#1688) Previously, spaces were missing after the colon after each bullet title on [this page of our docs ](https://sourcegraph.com/docs/admin/code-hosts/github#github-api-access). image Fixed and tested it locally: image --- docs/admin/code-hosts/github.mdx | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/admin/code-hosts/github.mdx b/docs/admin/code-hosts/github.mdx index 94e1d4d95..777eedc88 100644 --- a/docs/admin/code-hosts/github.mdx +++ b/docs/admin/code-hosts/github.mdx @@ -228,10 +228,10 @@ In this example, the kubernetes public repository on GitHub is added by selectin GitHub requires a `token` in order to access their API. There are different types of tokens that can be supplied. When using GitHub apps, this is handled automatically by Sourcegraph. -- **[GitHub app installation access token](https://docs.github.com/en/apps/creating-github-apps/authenticating-with-a-github-app/generating-an-installation-access-token-for-a-github-app)**:An installation access token is created automatically when you install a GitHub app. Do not set this token in the code host connection configuration. This token gives Sourcegraph the same level of access to repositories as the GitHub app installation. -- **[Personal access token](https://help.github.com/en/articles/creating-a-personal-access-token-for-the-command-line)**:This gives Sourcegraph the same level of access to repositories as the account that created the token. If you don't want to mix your personal repositories with your organizations repositories, you could add an entry to the `exclude` array, or you can use a machine user token or a fine-grained access token. -- **[Fine-grained access token](https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/creating-a-personal-access-token#creating-a-fine-grained-personal-access-token)**:Allows scoping access tokens to specific repositories with specific permissions. Consult the [table below](#fine-grained-access-token-permissions) for the required permissions. -- **[Machine user token](https://developer.github.com/v3/guides/managing-deploy-keys/#machine-users)**:Generates a token for a machine user that is affiliated with an organization instead of a user account. +- **[GitHub app installation access token](https://docs.github.com/en/apps/creating-github-apps/authenticating-with-a-github-app/generating-an-installation-access-token-for-a-github-app)**: An installation access token is created automatically when you install a GitHub app. Do not set this token in the code host connection configuration. This token gives Sourcegraph the same level of access to repositories as the GitHub app installation. +- **[Personal access token](https://help.github.com/en/articles/creating-a-personal-access-token-for-the-command-line)**: This gives Sourcegraph the same level of access to repositories as the account that created the token. If you don't want to mix your personal repositories with your organizations repositories, you could add an entry to the `exclude` array, or you can use a machine user token or a fine-grained access token. +- **[Fine-grained access token](https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/creating-a-personal-access-token#creating-a-fine-grained-personal-access-token)**: Allows scoping access tokens to specific repositories with specific permissions. Consult the [table below](#fine-grained-access-token-permissions) for the required permissions. +- **[Machine user token](https://developer.github.com/v3/guides/managing-deploy-keys/#machine-users)**: Generates a token for a machine user that is affiliated with an organization instead of a user account. ### Personal access token scopes From e72789422e52f7f293e9ccd810e4198524f94d99 Mon Sep 17 00:00:00 2001 From: William Bezuidenhout Date: Wed, 18 Mar 2026 09:33:03 +0200 Subject: [PATCH 046/217] src-cli: update cli docs for src cli OAuth (#1681) Update docs to mention OAuth support in src-cli --- docs/cli/explanations/env.mdx | 9 +++++++-- docs/cli/quickstart.mdx | 6 +++++- 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/docs/cli/explanations/env.mdx b/docs/cli/explanations/env.mdx index 9449c40c4..982754ae7 100644 --- a/docs/cli/explanations/env.mdx +++ b/docs/cli/explanations/env.mdx @@ -2,7 +2,12 @@ ## Overview -`src` requires two environment variables to be set to authenticate against your Sourcegraph instance. +`src` supports two authentication methods: + +- Interactive OAuth via `src login` +- Access token authentication via `SRC_ACCESS_TOKEN` + +Use OAuth for local interactive use, or set the environment variables below for non-interactive workflows such as scripts and CI. ## `SRC_ENDPOINT` @@ -18,7 +23,7 @@ If the environment variable is not set, it'll default to "https://sourcegraph.co ## `SRC_ACCESS_TOKEN` -`src` uses an access token to authenticate as you to your Sourcegraph instance. This token needs to be in the `SRC_ACCESS_TOKEN` environment variable. +`src` can use an access token to authenticate as you to your Sourcegraph instance. Set it in the `SRC_ACCESS_TOKEN` environment variable. Note, `src` will use the `SRC_ACCESS_TOKEN` over the OAuth token if it is set in the environment. To create an access token, please refer to "[Creating an access token](/cli/how-tos/creating-an-access-token)". diff --git a/docs/cli/quickstart.mdx b/docs/cli/quickstart.mdx index 7e71c5757..59958140f 100644 --- a/docs/cli/quickstart.mdx +++ b/docs/cli/quickstart.mdx @@ -51,7 +51,11 @@ For other options, please refer to [the Windows specific `src` documentation](/c ![Output from src login showing success](https://sourcegraphstatic.com/docs/images/batch_changes/src_login_success.png) -Once complete, you should have two new environment variables set: `SRC_ENDPOINT` and `SRC_ACCESS_TOKEN`. +### OAuth login + +`src login` supports interactive OAuth login, so you can sign in without creating or exporting a `SRC_ACCESS_TOKEN`. + +If you need non-interactive authentication, such as in CI or scripts, you can still use `SRC_ENDPOINT` and `SRC_ACCESS_TOKEN`. ## Run a code search From e7efddb8f8fa15294badd170e0dbff31116a7eb6 Mon Sep 17 00:00:00 2001 From: Keegan Carruthers-Smith Date: Wed, 18 Mar 2026 09:56:34 +0200 Subject: [PATCH 047/217] deep-search: example of deepsearch_read (#1691) It felt too specific to document that deepsearch can read other deepsearch threads. So rather than adding a whole section for it, I am including an example of it in the example prompts. --- docs/deep-search/index.mdx | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/deep-search/index.mdx b/docs/deep-search/index.mdx index 08f48eb74..a7d6e5548 100644 --- a/docs/deep-search/index.mdx +++ b/docs/deep-search/index.mdx @@ -55,6 +55,7 @@ For use cases where you're looking for exhaustive answers (for example, "Find al - Look at the GraphQL APIs available in `@sourcegraph/sourcegraph`. Are any of them unused? The client code is in the `@cody` repository. - Which tools do we use in our build processes defined in `BUILD.bazel` files? - Generate a request flow diagram for `src/backend`. Mark the auth and rate limit points. +- Based on the findings in `https://sourcegraph.com/deepsearch/e3c0150a-b7ef-4955-bed4-d5820ca7a70d`, investigate whether the same logging patterns appear in our other microservices. ## Conversation sharing From 1690fa410e410b8066591fecbafe25c7d744ef47 Mon Sep 17 00:00:00 2001 From: William Bezuidenhout Date: Wed, 18 Mar 2026 14:38:58 +0200 Subject: [PATCH 048/217] src-cli: add documentation for src auth token (#1693) Add documentation for `src auth token` --- docs/cli/explanations/env.mdx | 24 ++++++++++++++++++++++++ docs/cli/quickstart.mdx | 2 ++ 2 files changed, 26 insertions(+) diff --git a/docs/cli/explanations/env.mdx b/docs/cli/explanations/env.mdx index 982754ae7..3e8add5bd 100644 --- a/docs/cli/explanations/env.mdx +++ b/docs/cli/explanations/env.mdx @@ -27,6 +27,30 @@ If the environment variable is not set, it'll default to "https://sourcegraph.co To create an access token, please refer to "[Creating an access token](/cli/how-tos/creating-an-access-token)". +## Reusing the current `src` credential in scripts + +If you have already authenticated with `src login`, or you have `SRC_ACCESS_TOKEN` set, you can reuse the active credential from shell scripts: + +- `src auth token` prints the raw token value. +- `src auth token --header` prints a complete `Authorization` header using the correct scheme for the current auth mode. + +When `src` is using an access token, `--header` prints `Authorization: token ...`. When `src` is using OAuth, it prints `Authorization: Bearer ...`. + +Use `src auth token` when another tool expects only the token value. For example, to populate the `YOUR_ACCESS_TOKEN` environment variable used by the OpenCode MCP setup in [/api/mcp](/api/mcp): + +```sh +export YOUR_ACCESS_TOKEN="$(src auth token)" +``` + +Use `src auth token --header` when another command expects a complete `Authorization` header: + +```sh +curl -H "$(src auth token --header)" \ + -H "Content-Type: application/json" \ + -d '{"query":"query { currentUser { username } }"}' \ + "$SRC_ENDPOINT/.api/graphql" +``` + ## Adding request headers with `SRC_HEADER_` (Proxy Authentication with `src`) If your instance is behind an authenticating proxy that requires additional headers, they can be supplied via environment variables. Any environment variable passed starting with the string `SRC_HEADER_{string-A}="String-B"` will be passed into the request with form `String-A: String-B`. See examples below: diff --git a/docs/cli/quickstart.mdx b/docs/cli/quickstart.mdx index 59958140f..021a0e42b 100644 --- a/docs/cli/quickstart.mdx +++ b/docs/cli/quickstart.mdx @@ -55,6 +55,8 @@ For other options, please refer to [the Windows specific `src` documentation](/c `src login` supports interactive OAuth login, so you can sign in without creating or exporting a `SRC_ACCESS_TOKEN`. +If you need to reuse the current `src` credential in another command, `src auth token` prints the raw token and `src auth token --header` prints a complete `Authorization` header for the active authentication mode. + If you need non-interactive authentication, such as in CI or scripts, you can still use `SRC_ENDPOINT` and `SRC_ACCESS_TOKEN`. ## Run a code search From b83028e191a140055511f9cecac70a92ff11ca3f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Kie=C5=82bowicz?= Date: Thu, 19 Mar 2026 13:44:43 +0100 Subject: [PATCH 049/217] Update code navigation features docs (#1695) - Replaced outdated screenshots and GIFs with new assets uploaded to GCS - Replaced "Ask Cody" section with "Deep Search" - Rename 'popover' terminology to 'hover' across code navigation docs --- docs/code-navigation/features.mdx | 102 +++++++----------- docs/code-navigation/index.mdx | 4 +- docs/code-navigation/rockskip.mdx | 6 +- .../executors/deploy-executors-terraform.mdx | 2 +- 4 files changed, 46 insertions(+), 68 deletions(-) diff --git a/docs/code-navigation/features.mdx b/docs/code-navigation/features.mdx index c4fb8bcd9..aeb3e25e7 100644 --- a/docs/code-navigation/features.mdx +++ b/docs/code-navigation/features.mdx @@ -5,69 +5,33 @@ core functionality.

-Using our [integrations](/integration/), all code navigation features are available everywhere you read code. This includes browsers and GitHub pull requests. +## Hover -![code-navigation-features](https://storage.googleapis.com/sourcegraph-assets/docs/images/code-intelligence/extension-example.gif) +Hovers allow you to quickly glance at the type signature and accompanying documentation of a symbol definition without having to context switch to another source file (which may or may not be available while browsing code). -## Popover - -Popovers allow you to quickly glance at the type signature and accompanying documentation of a symbol definition without having to context switch to another source file (which may or may not be available while browsing code). - -![popover](https://storage.googleapis.com/sourcegraph-assets/Docs/popover.png) +![hover](https://storage.googleapis.com/sourcegraph-assets/Docs/hover.png) ## Go to definition -When you click on the **Go to definition** button in the popover or click on a symbol's name (in the sidebar or code view), you will be navigated directly to the definition of the symbol. +When you click on the **Go to definition** button in the hover or click on a symbol's name (in the sidebar or code view), you will be navigated directly to the definition of the symbol. -![go-to-definition](https://storage.googleapis.com/sourcegraph-assets/docs/images/code-intelligence/go-to-def.gif) + ## Find references -When you select **Find references** from the popover, a panel at the bottom of the page lists all references, definitions, and implementations found for both precise and search-based results (from search heuristics). - -![find-references](https://storage.googleapis.com/sourcegraph-assets/docs/images/code-intelligence/find-references.gif) - -When a particular token returns a large number of references, we truncate the results to < 500 to optimize for browser loading speed. We are planning to improve this in the future with the ability to view it as a search so that users can utilize the powerful filtering of Sourcegraph's search to find the references they are looking for. - -## Dependency navigation - - - This feature is in Beta stage and is not available for other language - ecosystems. - - -Dependency navigation enables **Find references** and **Go to definition** to show usages across multiple repositories, including transitive dependencies. - -For example, the animation below demonstrates how to trigger **Find references** in the `github.com/Netflix/Hystrix` repository and navigate to results in the Java standard library (JDK). - -![dependency-navigation](https://storage.googleapis.com/sourcegraph-assets/docs/images/code-intelligence/dependency-nav.gif) - -The instructions to set up dependency navigation require you to set up auto-indexing. For more information on how to set up auto-indexing, please refer to our [auto-indexing documentation](/code-navigation/auto-indexing). - -## Find implementations - -If precise code navigation is enabled for your repositories, you can click **Find Implementations** to navigate to a symbol's interface definition. If you're at the interface definition itself, clicking on **Find Implementations** will show all the places where the interface is being implemented, allowing you to explore how other users across repositories use it. It can also show which interfaces a struct implements. - -![find-implementations](https://storage.googleapis.com/sourcegraph-assets/docs/images/code-intelligence/find-impl.gif) - - - Read [here](/code-navigation/writing-an-indexer#quick-reference) for an - overview of which languages support this feature. - - -## Perform an Action - -Code Search allows you to harness the power of Search and quickly find, discover, and understand code. However, the end result isn't always to view the results of a search query. Code Search empowers you to perform an action given a set of results. - -![Code Search Actions](https://storage.googleapis.com/sourcegraph-assets/Docs/actions/code-search-actions.png) - -When browsing code, you can perform the following actions: - -### Ask Cody - -Cody is a free and open-core AI coding assistant that writes, fixes, and maintains your code and is available on Sourcegraph. It allows you to ask natural language questions about your code and receive intelligent suggestions and explanations. - -When browsing code on Sourcegraph, you can ask Cody a question by clicking the **Ask Cody** button above the file you are viewing. This will open a chat interface where you can have a conversation with Cody about the code you are viewing. +When you select **Find references** from the hover, a panel at the bottom of the page lists all references, definitions, and implementations found for both precise and search-based results (from search heuristics). -Having Cody integrated directly into Sourcegraph code search makes it fast and easy to get AI-powered insights as you explore code. +When a particular token returns a large number of references, we truncate the results to < 500 to optimize for browser loading speed. We are planning to improve this in the future with the ability to view it as a search so that users can utilize the powerful filtering of Sourcegraph's search to find the references they are looking for. + +## Perform an Action + +Code Search allows you to harness the power of Search and quickly find, discover, and understand code. However, the end result isn't always to view the results of a search query. Code Search empowers you to perform an action given a set of results. + +![Code Search Actions](https://storage.googleapis.com/sourcegraph-assets/Docs/actions.png) + +When browsing code, you can perform the following actions: + +### Deep Search + +[Deep Search](/deep-search) is an agentic code search tool that understands natural language questions about your codebase. When browsing code on Sourcegraph, you can open Deep Search from the sidebar to ask questions about the code you are viewing. + +Deep Search performs an in-depth search across your codebase and returns a detailed, sourced answer. You can continue the conversation with follow-up questions to dive deeper into relevant code. + +![Deep Search](https://storage.googleapis.com/sourcegraph-assets/Docs/deep-search.png) ### Open in Editor @@ -104,7 +84,7 @@ When you click this button, a sidebar will open showing every commit that touche - Date - Commit SHA -![History action](https://storage.googleapis.com/sourcegraph-assets/Docs/actions/history-action.png) +![History action](https://storage.googleapis.com/sourcegraph-assets/Docs/history.png) You can click on any commit to view the full diff and see exactly what changed in that particular version of the file. @@ -123,7 +103,7 @@ When you click this button on a file, blame information will be displayed inline - The commit message - The timestamp of when it was changed -![Blame action](https://storage.googleapis.com/sourcegraph-assets/Docs/actions/blame-action.png) +![Blame action](https://storage.googleapis.com/sourcegraph-assets/Docs/blame.png) Using blame makes it easy to answer questions like: @@ -141,11 +121,9 @@ The Open in CodeHost button allows you to quickly view the file in its native co For example, if you are viewing a file from a GitHub repository in Sourcegraph, clicking Open in CodeHost will open `GitHub.com` in a new tab with that file displayed. -### Copy Link - -The Copy Link action allows you to easily copy a permanent link to the exact line range you are viewing in Sourcegraph. When you click this button, the link is copied to your clipboard. You can then paste the link in any text field or document. +### Permalink -![Copy Link action](https://storage.googleapis.com/sourcegraph-assets/Docs/actions/copy-action.gif) +The Permalink action allows you to easily copy a link to the exact line range you are viewing in Sourcegraph. When you click this button, the link is copied to your clipboard. You can then paste the link in any text field or document. ### Raw download diff --git a/docs/code-navigation/index.mdx b/docs/code-navigation/index.mdx index feb874099..83444757b 100644 --- a/docs/code-navigation/index.mdx +++ b/docs/code-navigation/index.mdx @@ -68,9 +68,9 @@ Code Navigation helps you with the following tasks: | **Feature** | **Description** | | ----------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| [Popover](/code-navigation/features#popover) | Quickly view a symbol's type signature and documentation without switching to another source file | +| [Hover](/code-navigation/features#hover) | Quickly view a symbol's type signature and documentation without switching to another source file | | [Go to definition](/code-navigation/features#go-to-definition) | Click the button or symbol name, navigates you to the symbol's definition | -| [Find references](/code-navigation/features#find-references) | Selecting it in the popover lists all references, definitions, and implementations at the bottom, including precise and search-based results | +| [Find references](/code-navigation/features#find-references) | Selecting it in the hover lists all references, definitions, and implementations at the bottom, including precise and search-based results | | [Find implementations](/code-navigation/features#find-implementations) | Click to go to a symbol's interface definition or, at the interface, see all implementations across repositories, including interfaces implemented by a struct | | [Perform an action](/code-navigation/features#perform-an-action) | When browsing code, you can perform a couple of actions like open in code host, raw download and view blame. | diff --git a/docs/code-navigation/rockskip.mdx b/docs/code-navigation/rockskip.mdx index 8c4d1c7eb..85a4ea0b9 100644 --- a/docs/code-navigation/rockskip.mdx +++ b/docs/code-navigation/rockskip.mdx @@ -8,9 +8,9 @@ Rockskip is an alternative symbol indexing and query engine for the symbol servi ![still processing symbols error](https://storage.googleapis.com/sourcegraph-assets/docs/images/code-intelligence/symbol-sidebar-timeout.png) -![hover popover spinner](https://storage.googleapis.com/sourcegraph-assets/docs/images/code-intelligence/hover-popover-spinner.png) +![hover spinner](https://storage.googleapis.com/sourcegraph-assets/docs/images/code-intelligence/hover-popover-spinner.png) -If you regularly see the above error or slow hover popovers (when not using precise navigation), it probably means that the default implementation (which copies SQLite DBs for each commit) is not fast enough and that Rockskip might help. +If you regularly see the above error or slow hovers (when not using precise navigation), it probably means that the default implementation (which copies SQLite DBs for each commit) is not fast enough and that Rockskip might help. A very rough way to gauge if Rockskip will help is if your repository has a 2GB+ `.git` directory, 50K+ commits, or 50K+ files in the working tree. @@ -78,7 +78,7 @@ For all deployments, make sure that: **Step 3:** Wait for indexing to complete. You can check the status as before by refreshing the page, opening the symbols sidebar, and looking at the error message. If you are interested in more technical details about the status, see the [instructions below](#how-do-i-check-the-indexing-status). -**Step 4:** Open the symbols sidebar again and the symbols should appear quickly. Hover popovers and jump-to-definition via search-based code navigation should also respond quickly. +**Step 4:** Open the symbols sidebar again and the symbols should appear quickly. Hovers and jump-to-definition via search-based code navigation should also respond quickly. That's it! New commits will be indexed automatically when users visit them. diff --git a/docs/self-hosted/executors/deploy-executors-terraform.mdx b/docs/self-hosted/executors/deploy-executors-terraform.mdx index dab9ed0ac..dbb2b6bbc 100644 --- a/docs/self-hosted/executors/deploy-executors-terraform.mdx +++ b/docs/self-hosted/executors/deploy-executors-terraform.mdx @@ -281,7 +281,7 @@ you@sourcegraph-executor-h0rv:~$ curl - Try setting a higher update frequency: `PRECISE_CODE_INTEL_AUTO_INDEXING_TASK_INTERVAL=10s` - Try setting a lower delay: `PRECISE_CODE_INTEL_AUTO_INDEXING_REPOSITORY_PROCESS_DELAY=10s` 7. Once you have a completed indexing job, click **Uploads** and check to see that an index has been uploaded. -8. Once the index has been uploaded, you should see the **`PRECISE`** badge in the hover popover! 🎉 +8. Once the index has been uploaded, you should see the **`PRECISE`** badge in the hover! 🎉 ## Auto-scaling From 6a9f509ae2791815483897678cc0184c3f0edff6 Mon Sep 17 00:00:00 2001 From: Warren Gifford Date: Thu, 19 Mar 2026 15:55:52 -0700 Subject: [PATCH 050/217] jaeger docs update (#1698) Updates to the jaeger instructions for self hosted customers on helm Associated to https://github.com/sourcegraph/deploy-sourcegraph-helm/pull/841 --- docs/self-hosted/deploy/kubernetes/index.mdx | 31 ++++++++++++++++++++ docs/self-hosted/observability/tracing.mdx | 2 ++ 2 files changed, 33 insertions(+) diff --git a/docs/self-hosted/deploy/kubernetes/index.mdx b/docs/self-hosted/deploy/kubernetes/index.mdx index 57ebb7320..da0f0e54b 100644 --- a/docs/self-hosted/deploy/kubernetes/index.mdx +++ b/docs/self-hosted/deploy/kubernetes/index.mdx @@ -395,6 +395,37 @@ jaeger: enabled: true ``` +#### Customize Jaeger configuration + +Starting with Sourcegraph 7.1.0, the bundled Jaeger instance uses an [OpenTelemetry Collector-style YAML configuration](https://www.jaegertracing.io/docs/2.16/configuration/) instead of CLI flags. Common settings are exposed through the `jaeger.config` Helm value. + +You can override these settings in your Helm values override file. For example, to increase the maximum number of in-memory traces: + +```yaml +jaeger: + enabled: true + config: + maxTraces: 50000 +``` + +Or using `--set` on the command line: + +```bash +helm upgrade sourcegraph sourcegraph/sourcegraph \ + --set jaeger.config.maxTraces=50000 +``` + +The available configuration options are: + +| Value | Default | Description | +| --- | --- | --- | +| `jaeger.config.maxTraces` | `20000` | Maximum number of traces stored in memory | +| `jaeger.config.logLevel` | `info` | Log level (`debug`, `info`, `warn`, `error`) | +| `jaeger.config.samplingDefaultProbability` | `1.0` | Default sampling probability (0.0–1.0) returned to services that query Jaeger for sampling config | +| `jaeger.config.existingConfigMap` | `""` | Name of a pre-existing ConfigMap containing a `jaeger-config.yaml` key. When set, the chart skips creating its own ConfigMap and uses yours instead | + +For advanced customization beyond these options, set `jaeger.config.existingConfigMap` to the name of your own ConfigMap containing a full `jaeger-config.yaml` key. See the [Jaeger v2 configuration reference](https://www.jaegertracing.io/docs/2.16/configuration/) for all available options. + #### Configure OpenTelemetry Collector to use an external tracing backend To configure the bundled otel-collector to export traces to an external OTEL-compatible backend, you you can customize the otel-collector's config file directly in your Helm values `override.yaml` file. diff --git a/docs/self-hosted/observability/tracing.mdx b/docs/self-hosted/observability/tracing.mdx index ed0cefcb3..9fb8af414 100644 --- a/docs/self-hosted/observability/tracing.mdx +++ b/docs/self-hosted/observability/tracing.mdx @@ -20,6 +20,8 @@ To deploy our bundled Jaeger backend, follow the instructions for your deploymen - [Kubernetes with Kustomize](/self-hosted/deploy/kubernetes/configure#deploy-the-bundled-opentelemetry-collector-and-jaeger) - [Docker Compose](/self-hosted/deploy/docker-compose/configuration#deploy-the-bundled-jaeger) +For Helm deployments, you can also [customize the Jaeger configuration](/self-hosted/deploy/kubernetes#customize-jaeger-configuration) (e.g., `max_traces`, sampling, log level) directly through Helm values. + Then configure your Site Configuration: 1. Ensure your `externalURL` is configured From 14ea7fbfe01d1753b20ed7941a03458e06a014ea Mon Sep 17 00:00:00 2001 From: Michael Bahr <1830132+bahrmichael@users.noreply.github.com> Date: Fri, 20 Mar 2026 11:14:17 +0100 Subject: [PATCH 051/217] docs(batch-changes): clarify default-branch behavior for repositoriesMatchingQuery (#1702) This PR updates the docs/descriptions to clarify that SSBC doesn't read the branch from the repositoriesMatchingQuery field. While src-cli may still support this behavior, I think the right path forward is to reflect what SSBC can do. See https://github.com/sourcegraph/sourcegraph-public-snapshot/pull/24222 and https://github.com/sourcegraph/sourcegraph-public-snapshot/pull/28168 for implementation details. Co-authored-by: Amp --- docs/batch-changes/batch-spec-yaml-reference.mdx | 8 ++++++-- docs/batch-changes/faq.mdx | 6 ++++++ 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/docs/batch-changes/batch-spec-yaml-reference.mdx b/docs/batch-changes/batch-spec-yaml-reference.mdx index 5a28ebdfd..b4176fbda 100644 --- a/docs/batch-changes/batch-spec-yaml-reference.mdx +++ b/docs/batch-changes/batch-spec-yaml-reference.mdx @@ -68,7 +68,9 @@ description: | ## `on` -The set of repositories (and branches) on which the batch change would run. It's specified as a list of search queries (that match repositories) and specific repositories. +The set of repositories on which the batch change would run. It's specified as a list of search queries (that match repositories) and specific repositories. + +Repositories matched by [`on.repositoriesMatchingQuery`](#onrepositoriesmatchingquery) run on each repository's default branch unless overridden by a more specific [`on.repository`](#onrepository) entry that sets `branch` or `branches`. ### Examples @@ -80,7 +82,9 @@ on: ## `on.repositoriesMatchingQuery` -A Sourcegraph search query that matches a set of repositories (and branches). Each matched repository branch is added to the list of repositories on which the batch change will run. +A Sourcegraph search query that matches a set of repositories. Each matched repository is added to the list of repositories on which the batch change will run. + +Matched repositories run on their default branch. Branch selectors in the search query are used to find repositories, but do not set the target branch for the batch change. To target non-default branches, add explicit [`on.repository`](#onrepository) entries with `branch` or `branches`. Your search query should answer the question, "Where do I want to run this batch change?". Search result matches for things like commits, symbols, or file owners will be ignored. diff --git a/docs/batch-changes/faq.mdx b/docs/batch-changes/faq.mdx index 06d53b8a4..452759d61 100644 --- a/docs/batch-changes/faq.mdx +++ b/docs/batch-changes/faq.mdx @@ -194,6 +194,12 @@ Sourcegraph search shows you results on any repositories that you have read acce This disparity most often stems from needing write access to one or more of the repositories where your search query returns results. Consider asking an admin to set up a [global service account token](/batch-changes/configuring-credentials#global-service-account-tokens) if your batch change must update all matching repositories. +## Why does `repositoriesMatchingQuery` with `repo:...@branch` still run on the default branch? + +`on.repositoriesMatchingQuery` selects repositories to include in the batch change. For server-side batch changes, each matched repository runs on its default branch unless a more specific `on.repository` entry sets `branch` or `branches`. + +If you need to target non-default branches, add explicit `on.repository` entries with `branch` or `branches`. + ## Why is my batch change preview hanging? When working with `src,` there are occurrences where applying your batch spec might get stuck on a particular step. More so in the `Determining workspace type` step. The `Determining workspace type` is a simple step that decides if bind or volume modes should be used based on the command line flags and the OS and architecture. From 0125779448bbd6795c4bf9c13755b8d5a3a51ea5 Mon Sep 17 00:00:00 2001 From: Enrique Gonzalez Date: Fri, 20 Mar 2026 10:33:33 -0700 Subject: [PATCH 052/217] remove amp from SLA doc as well as mention of 24x7 SLA (#1705) --- docs/sla/index.mdx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/sla/index.mdx b/docs/sla/index.mdx index 597a33bb3..1e7e79e3d 100644 --- a/docs/sla/index.mdx +++ b/docs/sla/index.mdx @@ -17,7 +17,7 @@ While we always strive to respond to your issues as quickly as possible, our SLA The following policy applies to both our cloud-based (managed instance) and on-premise/self-hosted Sourcegraph customers: -## For Sourcegraph Enterprise & Amp Enterprise Premium plans +## For Sourcegraph Enterprise plans | Severity level | Description | Response time | Support availability | | -------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------- | -------------------- | @@ -26,7 +26,7 @@ The following policy applies to both our cloud-based (managed instance) and on-p | 2 | Medium impact: Core features are unavailable or somewhat slowed; workaround exists | Within eight business hours of identifying the issue | 24x5 (Monday-Friday) | | 3 | Minimal impact: Questions or clarifications regarding features, documentation, or deployments | Within two business days of identifying the issue | 24x5 (Monday-Friday) | -> NOTE: Premium support with enhanced SLAs can be added to your Enterprise plans as an add-on. Our business hours, defined as Sunday 2 PM PST to Friday 5 PM PST, align with our 24x5 support coverage. +> NOTE: Our business hours, defined as Sunday 2 PM PST to Friday 5 PM PST, align with our 24x5 support coverage. ### All other paid plans From 3655d5e8e1794cc6134872c4fa805ebe39e1d73f Mon Sep 17 00:00:00 2001 From: Robert Lin Date: Fri, 20 Mar 2026 11:32:41 -0700 Subject: [PATCH 053/217] telemetry: document eventsQueuedForExport (#1699) Closes https://linear.app/sourcegraph/issue/SVC-2147/v2t-better-advertise-export-privacy-guarantees --- docs/admin/telemetry/index.mdx | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/docs/admin/telemetry/index.mdx b/docs/admin/telemetry/index.mdx index cb9c1996f..eaa2e9140 100644 --- a/docs/admin/telemetry/index.mdx +++ b/docs/admin/telemetry/index.mdx @@ -22,7 +22,7 @@ Some of the measures we take to ensure privacy and data security include: 3. For all other properties, we use a well-defined data structure (available in the [Telemetry protocol reference](/admin/telemetry/protocol)) to ensure that we never export sensitive data. Changes to this data structure and data collection implementations are carefully monitored and reviewed. 4. Data is encrypted while in transit from each Sourcegraph instance to Sourcegraph. -Recently exported events can be retrieved via the [debug console](/api/graphql) for review. +Exported events can be retrieved via the [debug console](/api/graphql) for review. You can find the API console at any time by going to **Settings**, and then clicking **Debug console** from the left sidebar, or by visiting it directly at `/debug/console`. Use the following query: ```gql @@ -33,6 +33,12 @@ query { payload } } + # Added in https://sourcegraph.com/changelog/releases/7.0.2178 + eventsQueuedForExport(first: 5) { + nodes { + payload + } + } } } ``` From 96978a1a042eaeebbcfac332379a7c138d774a77 Mon Sep 17 00:00:00 2001 From: Travis Lyons Date: Wed, 25 Mar 2026 16:14:02 -0400 Subject: [PATCH 054/217] mcp: simplify MCP documentation (#1712) move client-integrations to a separate page: - reduce the amount of content on the MCP landing page as more clients are added remove 'example usage' - these were raw MCP tool call schemas, not particularly relevant to how a user will interact with MCP via an agent made 'getting started' the first section on the MCP page --- docs/api/mcp/client-integrations.mdx | 283 ++++++++++++++++++++ docs/api/mcp/index.mdx | 381 ++------------------------- src/data/navigation.ts | 5 +- 3 files changed, 316 insertions(+), 353 deletions(-) create mode 100644 docs/api/mcp/client-integrations.mdx diff --git a/docs/api/mcp/client-integrations.mdx b/docs/api/mcp/client-integrations.mdx new file mode 100644 index 000000000..ad95ce6e2 --- /dev/null +++ b/docs/api/mcp/client-integrations.mdx @@ -0,0 +1,283 @@ +# Client Integrations + +

+ Set up the Sourcegraph MCP server with your preferred AI coding tool or IDE. +

+ + + Supported on [Enterprise](/pricing/plans/enterprise) plans. + + +## Supported Clients + +- [Amp](#amp) +- [Claude Code](#claude-code) +- [Google Gemini Code Assist](#google-gemini-code-assist) +- [VS Code](#vs-code) + - [Cursor](#cursor) + - [Antigravity](#antigravity) + - [Windsurf](#windsurf) +- [OpenCode](#opencode) + +### Amp + +You can add the Sourcegraph MCP server to [Amp](https://ampcode.com) in two ways: + +#### Option 1: VSCode settings.json + +1. Open VSCode's `settings.json` file. +2. Add the following configuration: + + ```json + { + "amp.mcpServers": { + "sourcegraph": { + "url": "https://your-sourcegraph-instance.com/.api/mcp", + "headers": { + "Authorization": "token YOUR_ACCESS_TOKEN" + } + } + } + } + ``` + + + Replace `your-sourcegraph-instance.com` with your Sourcegraph instance + URL and `YOUR_ACCESS_TOKEN` with your access token. + + +3. Save the configuration file. +4. Restart VS Code to apply the new configuration. + +#### Option 2: Amp CLI + +Run the following command in your terminal: + +```bash +amp mcp add sourcegraph --header "Authorization=token YOUR_ACCESS_TOKEN" https://sourcegraph.sourcegraph.com/.api/mcp +``` + + + Replace `sourcegraph.sourcegraph.com` with your Sourcegraph instance URL and + set `YOUR_ACCESS_TOKEN` environment variable to your access token. + + +### Claude Code + +You can add the Sourcegraph MCP server to [Claude Code](https://claude.ai/code) in two ways: + +#### Option 1: Project-scoped server (via .mcp.json file) + +1. Create a `.mcp.json` file in your project root if it doesn't exist. +2. Add the following configuration: + + ```json + { + "mcpServers": { + "sourcegraph": { + "type": "http", + "url": "https://your-sourcegraph-instance.com/.api/mcp", + "headers": { + "Authorization": "token YOUR_ACCESS_TOKEN" + } + } + } + } + ``` + + + Replace `your-sourcegraph-instance.com` with your Sourcegraph instance + URL and `YOUR_ACCESS_TOKEN` with your access token. + + +3. Save the configuration file. +4. Restart Claude Code to apply the new configuration. + +#### Option 2: Locally-scoped server (via CLI command) + +You can also add the Sourcegraph MCP server as a locally-scoped server, which is only available to you in the current project: + +1. Run the following command in your terminal: + + ```bash + claude mcp add --transport http sourcegraph https://your-sourcegraph-instance.com/.api/mcp \ + --header "Authorization: token YOUR_ACCESS_TOKEN" + ``` + + + Replace `your-sourcegraph-instance.com` with your Sourcegraph instance + URL and `YOUR_ACCESS_TOKEN` with your access token. + + +Locally-scoped servers take precedence over project-scoped servers with the same name and are stored in your project-specific user settings. + +### Google Gemini Code Assist + +You can add the Sourcegraph MCP server to Google Gemini Code Assist by configuring the `.gemini/settings.json` file: + +1. Open or create the configuration file at `~/.gemini/settings.json` (or the equivalent path on your system). +2. Add the following configuration: + + ```json + { + "mcpServers": { + "sourcegraph": { + "httpUrl": "https://your-sourcegraph-instance.com/.api/mcp", + "headers": { + "Authorization": "token YOUR_ACCESS_TOKEN" + } + } + } + } + ``` + + + Replace `your-sourcegraph-instance.com` with your Sourcegraph instance + URL and `YOUR_ACCESS_TOKEN` with your access token. + + +3. Save the configuration file. +4. Restart Gemini Code Assist to apply the new configuration. + +### VS Code + +You can add the Sourcegraph MCP server to VS Code in one of two ways: + +#### Option 1: `code` CLI + +1. Run the following command to add the MCP server to the global configuration + +```bash +code --add-mcp "{ \"name\": \"sourcegraph\", \"type\": \"remote\", \"url\": \"https://your-sourcegraph-instance.com/.api/mcp\" }" +``` + +2. Launch or restart VS Code to apply the new configuration. + +#### Option 2: VSCode `mcp.json` + +1. Create `.vscode/mcp.json` in your project. +2. Add the following configuration: + + ```json + { + "servers": { + "sourcegraph": { + "type": "http", + "url": "https://your-sourcegraph-instance.com/.api/mcp" + } + }, + "inputs": [] + } + ``` + +3. Save the configuration file. +4. Restart VS Code to apply the new configuration. + +#### Cursor + +1. Open or create the MCP configuration file at `~/.cursor/mcp.json` (or the equivalent path on your system). +2. Add the following: + + ```json + { + "mcpServers": { + "sourcegraph": { + "url": "https://your-sourcegraph-instance.com/.api/mcp", + "type": "http", + "headers": { + "Authorization": "token YOUR_ACCESS_TOKEN" + } + } + } + } + ``` + + + Replace `your-sourcegraph-instance.com` with your Sourcegraph instance + URL and `YOUR_ACCESS_TOKEN` with your access token. + + +3. Save the configuration file. +4. Restart Cursor to apply the new configuration. + +#### Antigravity + +1. Create ⁠`.vscode/mcp.json` (Antigravity uses `.vscode` for configs) in your project. +2. Add the following: + + ```json + { + "servers": { + "sourcegraph": { + "url": "https://your-sourcegraph-instance.com/.api/mcp", + "type": "http", + "headers": { + "Authorization": "token YOUR_ACCESS_TOKEN" + } + } + }, + "inputs": [] + } + ``` + + + Replace `your-sourcegraph-instance.com` with your Sourcegraph instance + URL and `YOUR_ACCESS_TOKEN` with your access token. + + +#### Windsurf + +1. Create ⁠`~/.codeium/windsurf/mcp_config.json`. +2. Add the following: + + ```json + { + "mcpServers": { + "sourcegraph": { + "serverUrl": "https://your-sourcegraph-instance.com/.api/mcp", + "headers": { + "Authorization": "token YOUR_ACCESS_TOKEN", + "Content-Type": "application/json" + } + } + } + } + ``` + + + Replace `your-sourcegraph-instance.com` with your Sourcegraph instance + URL and `YOUR_ACCESS_TOKEN` with your access token. + + +3. Save the configuration file. + +### OpenCode + +You can add the Sourcegraph MCP server to OpenCode by configuring it in your MCP settings file: + +1. Open or create the MCP configuration file at `~/.config/opencode/opencode.jsonc` (or the equivalent path on your system). +2. Add the following configuration: + + ```json + { + "mcp": { + "sourcegraph": { + "type": "remote", + "url": "https://your-sourcegraph-instance.com/.api/mcp", + "oauth": false, + "headers": { + "Authorization": "token {env:YOUR_ACCESS_TOKEN}" + } + } + }, + "$schema": "https://opencode.ai/config.json" + } + ``` + + + Replace `your-sourcegraph-instance.com` with your Sourcegraph instance + URL and `YOUR_ACCESS_TOKEN` with your access token. + + +3. Save the configuration file. +4. Restart OpenCode to apply the changes. diff --git a/docs/api/mcp/index.mdx b/docs/api/mcp/index.mdx index f45ae0b1e..507b05dad 100644 --- a/docs/api/mcp/index.mdx +++ b/docs/api/mcp/index.mdx @@ -15,37 +15,39 @@ seoPriority: 1.0 The Sourcegraph Model Context Protocol (MCP) Server provides AI agents and applications with programmatic access to your Sourcegraph instance's code search, navigation, and analysis capabilities through a standardized interface. -## Server Endpoints - -The MCP server provides different tool suites for various use cases: - -| Endpoint | Description | -|----------|-------------| -| `/.api/mcp` | Full suite of Sourcegraph tools | -| `/.api/mcp/deepsearch` | Deep Search agent | - -Example URL: - -``` -https://your-sourcegraph-instance.com/.api/mcp -``` - ## Getting Started MCP clients that support OAuth can connect directly—just point them at your Sourcegraph instance and authenticate through your browser: **[Amp](https://ampcode.com/)** + ```bash amp mcp add sg https://sourcegraph.example.com/.api/mcp ``` **[Claude Code](https://www.claude.com/product/claude-code)** + ```bash claude mcp add --transport http sg https://sourcegraph.example.com/.api/mcp ``` This works similarly for other MCP-compatible agents. See [Client Integration](#client-integration) for detailed setup instructions for each client. +## Server Endpoints + +The MCP server provides different tool suites for various use cases: + +| Endpoint | Description | +| ---------------------- | ------------------------------- | +| `/.api/mcp` | Full suite of Sourcegraph tools | +| `/.api/mcp/deepsearch` | Deep Search agent | + +Example URL: + +``` +https://your-sourcegraph-instance.com/.api/mcp +``` + ## Authentication The MCP server supports OAuth 2.0 and access token authentication. @@ -102,297 +104,17 @@ To disable DCR, set the following site configuration: ### Access Tokens -Alternatively, include an access token in the Authorization header: +Alternatively, include a [Sourcegraph access token](/cli/how-tos/creating-an-access-token) in the Authorization header: ``` Authorization: token YOUR_ACCESS_TOKEN ``` -Access tokens can use the `mcp` scope to restrict access to MCP endpoints only. - -## Client Integration - -The Sourcegraph MCP server can be integrated with various AI tools and IDEs that support the Model Context Protocol. - -### Supported Clients - -- [Amp](#amp) -- [Claude Code](#claude-code) -- [Google Gemini Code Assist](#google-gemini-code-assist) -- [VS Code](#vs-code) - - [Cursor](#cursor) - - [Antigravity](#antigravity) - - [Windsurf](#windsurf) -- [OpenCode](#opencode) - -### Amp - - - To create an access token, visit [Creating an access - token](/cli/how-tos/creating-an-access-token). - - -You can add the Sourcegraph MCP server to [Amp](https://ampcode.com) in two ways: - -#### Option 1: VSCode settings.json - -1. Open VSCode's `settings.json` file. -2. Add the following configuration: - - ```json - { - "amp.mcpServers": { - "sourcegraph": { - "url": "https://your-sourcegraph-instance.com/.api/mcp", - "headers": { - "Authorization": "token YOUR_ACCESS_TOKEN" - } - } - } - } - ``` - - - Replace `your-sourcegraph-instance.com` with your Sourcegraph instance - URL and `YOUR_ACCESS_TOKEN` with your access token. - - -3. Save the configuration file. -4. Restart VS Code to apply the new configuration. - -#### Option 2: Amp CLI - -Run the following command in your terminal: - -```bash -amp mcp add sourcegraph --header "Authorization=token YOUR_ACCESS_TOKEN" https://sourcegraph.sourcegraph.com/.api/mcp -``` - - Replace `sourcegraph.sourcegraph.com` with your Sourcegraph instance URL and - set `YOUR_ACCESS_TOKEN` environment variable to your access token. + Access tokens can use the `mcp` scope to restrict access to MCP endpoints + only. -### Claude Code - -You can add the Sourcegraph MCP server to [Claude Code](https://claude.ai/code) in two ways: - -#### Option 1: Project-scoped server (via .mcp.json file) - -1. Create a `.mcp.json` file in your project root if it doesn't exist. -2. Add the following configuration: - - ```json - { - "mcpServers": { - "sourcegraph": { - "type": "http", - "url": "https://your-sourcegraph-instance.com/.api/mcp", - "headers": { - "Authorization": "token YOUR_ACCESS_TOKEN" - } - } - } - } - ``` - - - Replace `your-sourcegraph-instance.com` with your Sourcegraph instance - URL and `YOUR_ACCESS_TOKEN` with your access token. - - -3. Save the configuration file. -4. Restart Claude Code to apply the new configuration. - -#### Option 2: Locally-scoped server (via CLI command) - -You can also add the Sourcegraph MCP server as a locally-scoped server, which is only available to you in the current project: - -1. Run the following command in your terminal: - - ```bash - claude mcp add --transport http sourcegraph https://your-sourcegraph-instance.com/.api/mcp \ - --header "Authorization: token YOUR_ACCESS_TOKEN" - ``` - - - Replace `your-sourcegraph-instance.com` with your Sourcegraph instance - URL and `YOUR_ACCESS_TOKEN` with your access token. - - -Locally-scoped servers take precedence over project-scoped servers with the same name and are stored in your project-specific user settings. - -### Google Gemini Code Assist - -You can add the Sourcegraph MCP server to Google Gemini Code Assist by configuring the `.gemini/settings.json` file: - -1. Open or create the configuration file at `~/.gemini/settings.json` (or the equivalent path on your system). -2. Add the following configuration: - - ```json - { - "mcpServers": { - "sourcegraph": { - "httpUrl": "https://your-sourcegraph-instance.com/.api/mcp", - "headers": { - "Authorization": "token YOUR_ACCESS_TOKEN" - } - } - } - } - ``` - - - Replace `your-sourcegraph-instance.com` with your Sourcegraph instance - URL and `YOUR_ACCESS_TOKEN` with your access token. - - -3. Save the configuration file. -4. Restart Gemini Code Assist to apply the new configuration. - -### VS Code - -You can add the Sourcegraph MCP server to VS Code in one of two ways: - -#### Option 1: `code` CLI - -1. Run the following command to add the MCP server to the global configuration - -```bash -code --add-mcp "{ \"name\": \"sourcegraph\", \"type\": \"remote\", \"url\": \"https://your-sourcegraph-instance.com/.api/mcp\" }" -``` - -2. Launch or restart VS Code to apply the new configuration. - -#### Option 2: VSCode `mcp.json` - -1. Create `.vscode/mcp.json` in your project. -2. Add the following configuration: - - ```json - { - "servers": { - "sourcegraph": { - "type": "http", - "url": "https://your-sourcegraph-instance.com/.api/mcp", - } - }, - "inputs": [] - } - ``` - -3. Save the configuration file. -4. Restart VS Code to apply the new configuration. - -#### Cursor - -1. Open or create the MCP configuration file at `~/.cursor/mcp.json` (or the equivalent path on your system). -2. Add the following: - - ```json - { - "mcpServers": { - "sourcegraph": { - "url": "https://your-sourcegraph-instance.com/.api/mcp", - "type": "http", - "headers": { - "Authorization": "token YOUR_ACCESS_TOKEN" - } - } - } - } - ``` - - - Replace `your-sourcegraph-instance.com` with your Sourcegraph instance - URL and `YOUR_ACCESS_TOKEN` with your access token. - - -3. Save the configuration file. -4. Restart Cursor to apply the new configuration. - -#### Antigravity - -1. Create ⁠`.vscode/mcp.json` (Antigravity uses `.vscode` for configs) in your project. -2. Add the following: - - ```json - { - "servers": { - "sourcegraph": { - "url": "https://your-sourcegraph-instance.com/.api/mcp", - "type": "http", - "headers": { - "Authorization": "token YOUR_ACCESS_TOKEN" - } - } - }, - "inputs": [] - } - ``` - - - Replace `your-sourcegraph-instance.com` with your Sourcegraph instance - URL and `YOUR_ACCESS_TOKEN` with your access token. - - -#### Windsurf - -1. Create ⁠`~/.codeium/windsurf/mcp_config.json`. -2. Add the following: - - ```json - { - "mcpServers": { - "sourcegraph": { - "serverUrl": "https://your-sourcegraph-instance.com/.api/mcp", - "headers": { - "Authorization": "token YOUR_ACCESS_TOKEN", - "Content-Type": "application/json" - } - } - } - } - ``` - - - Replace `your-sourcegraph-instance.com` with your Sourcegraph instance - URL and `YOUR_ACCESS_TOKEN` with your access token. - - -3. Save the configuration file. - -### OpenCode - -You can add the Sourcegraph MCP server to OpenCode by configuring it in your MCP settings file: - -1. Open or create the MCP configuration file at `~/.config/opencode/opencode.jsonc` (or the equivalent path on your system). -2. Add the following configuration: - - ```json - { - "mcp": { - "sourcegraph": { - "type": "remote", - "url": "https://your-sourcegraph-instance.com/.api/mcp", - "oauth": false, - "headers": { - "Authorization": "token {env:YOUR_ACCESS_TOKEN}" - } - } - }, - "$schema": "https://opencode.ai/config.json" - } - ``` - - - Replace `your-sourcegraph-instance.com` with your Sourcegraph instance - URL and `YOUR_ACCESS_TOKEN` with your access token. - - -3. Save the configuration file. -4. Restart OpenCode to apply the changes. - ## Available Tools @@ -558,7 +280,11 @@ Find repositories where a contributor has made commits. ### Deep Search - Admins can disable the `deepsearch` tool on the default and v1 MCP endpoints by setting the environment variable `SRC_MCP_DISABLE_DEEPSEARCH_TOOL=true` on the Sourcegraph instance. This does not affect `deepsearch_read` or the dedicated `/deepsearch` endpoint. This is a temporary measure available in 7.0 and will be replaced by a proper tool allowlist in a future release. + Admins can disable the `deepsearch` tool on the default and v1 MCP endpoints + by setting the environment variable `SRC_MCP_DISABLE_DEEPSEARCH_TOOL=true` + on the Sourcegraph instance. This does not affect `deepsearch_read` or the + dedicated `/deepsearch` endpoint. This is a temporary measure available in + 7.0 and will be replaced by a proper tool allowlist in a future release. ### `deepsearch` @@ -567,7 +293,7 @@ Create a new Deep Search conversation to answer complex questions about your cod **Parameters:** - - `question` - The question to research using Deep Search (required). Should be detailed and specific about what you want to understand. +- `question` - The question to research using Deep Search (required). Should be detailed and specific about what you want to understand. **Use cases:** Comprehensive analysis of complex technical questions, multi-step research across one or many remote codebases, detailed explanations with supporting evidence, questions that require combining information from multiple sources @@ -577,61 +303,12 @@ Read a Deep Search conversation and return the markdown content of the questions **Parameters:** -- `identifier` - The Deep Search conversation identifier (required). Can be: - - A full Sourcegraph Deep Search URL (e.g., `https://sourcegraph.com/deepsearch/abc123` or `https://sourcegraph.com/deepsearch/shared/abc123`) - - A read token (e.g., `abc123-def456-...`) +- `identifier` - The Deep Search conversation identifier (required). Can be: + - A full Sourcegraph Deep Search URL (e.g., `https://sourcegraph.com/deepsearch/abc123` or `https://sourcegraph.com/deepsearch/shared/abc123`) + - A read token (e.g., `abc123-def456-...`) **Use cases:** Reading or re-opening Deep Search results, summarizing existing answers, using past Deep Search as context for new questions -## Usage Examples - -### Finding Authentication Code - -```json -{ - "method": "tools/call", - "params": { - "name": "nls_search", - "arguments": { - "query": "authentication login user" - } - } -} -``` - -### Reading a Specific File - -```json -{ - "method": "tools/call", - "params": { - "name": "read_file", - "arguments": { - "repo": "github.com/myorg/myrepo", - "path": "src/auth/login.go", - "startLine": 1, - "endLine": 50 - } - } -} -``` - -### Finding Recent Changes - -```json -{ - "method": "tools/call", - "params": { - "name": "commit_search", - "arguments": { - "repos": ["github.com/myorg/myrepo"], - "messageTerms": ["bug fix"], - "after": "1 week ago" - } - } -} -``` - ## Best Practices 1. **Repository Scoping:** Use `list_repos` first to find relevant repositories for better performance diff --git a/src/data/navigation.ts b/src/data/navigation.ts index 3da1dab81..10157fc93 100644 --- a/src/data/navigation.ts +++ b/src/data/navigation.ts @@ -472,7 +472,10 @@ export const navigation: NavigationItem[] = [ }, { title: 'MCP Server', - href: '/api/mcp' + href: '/api/mcp', + sections: [ + {title: 'Client Integrations', href: '/api/mcp/client-integrations'} + ] } ] }, From 0b7cfb68b4afbab36ca96cea4022914b4b50021b Mon Sep 17 00:00:00 2001 From: Enrique Gonzalez Date: Wed, 25 Mar 2026 14:34:30 -0700 Subject: [PATCH 055/217] chore: remove mention of TA in analytics instructions (#1700) --- docs/analytics/index.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/analytics/index.mdx b/docs/analytics/index.mdx index 3fc28b3b5..21d39528c 100644 --- a/docs/analytics/index.mdx +++ b/docs/analytics/index.mdx @@ -25,7 +25,7 @@ To get started, follow our [enablement instructions](#enablement-instructions). To enable Sourcegraph Analytics for self-hosted or Cloud instances: - Create an account on [Sourcegraph Accounts](https://accounts.sourcegraph.com/), or find the email address associated with your existing account. -- Contact your Sourcegraph Technical Advisor or point of contact (or email us at support@sourcegraph.com if you don't know your contact), provide them with the email address you used to register above and ask for access to Sourcegraph Analytics. +- Contact your Sourcegraph Customer Success Manager or point of contact (or email us at support@sourcegraph.com if you don't know your contact), provide them with the email address you used to register above and ask for access to Sourcegraph Analytics. - They will validate your account and link it to your Sourcegraph Enterprise instance's usage metrics. - Sign in to [Sourcegraph Analytics](https://analytics.sourcegraph.com). From 5729c50061156be89689b0b05797665e5573c95d Mon Sep 17 00:00:00 2001 From: Bolaji Olajide <25608335+BolajiOlajide@users.noreply.github.com> Date: Thu, 26 Mar 2026 02:53:05 +0100 Subject: [PATCH 056/217] Fix markdown table formatting in incoming webhooks doc (#1713) Fixes the code host compatibility table in `docs/admin/webhooks/incoming.mdx` to use proper markdown table syntax with pipe delimiters. | Before | After | |---|---| | CleanShot 2026-03-26 at 02 42
18@2x | CleanShot 2026-03-26 at 02 42
35@2x | --- docs/admin/webhooks/incoming.mdx | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/docs/admin/webhooks/incoming.mdx b/docs/admin/webhooks/incoming.mdx index 19fbdaba7..da5d3e194 100644 --- a/docs/admin/webhooks/incoming.mdx +++ b/docs/admin/webhooks/incoming.mdx @@ -10,14 +10,13 @@ Webhooks currently serve three purposes for reacting to external events: See the table below for code host compatibility: - Code host | Code push | [Batch changes](/batch-changes) | User permissions - ------------------------------ | :----------------------------------------------: | :-------: | :--------------: -GitHub | 🟢 | 🟢 | 🟢 -GitLab | 🟢 | 🟢 | 🔴 -Bitbucket Server / Datacenter | 🟢 | 🟢 | 🔴 -Bitbucket Cloud | 🟢 | 🟢 | 🔴 -Azure DevOps | 🔴 | 🟢 | 🔴 +| Code host | Code push | [Batch changes](/batch-changes) | User permissions | +| ----------------------------- | --------- | ------------------------------- | ---------------- | +| GitHub | 🟢 | 🟢 | 🟢 | +| GitLab | 🟢 | 🟢 | 🔴 | +| Bitbucket Server / Datacenter | 🟢 | 🟢 | 🔴 | +| Bitbucket Cloud | 🟢 | 🟢 | 🔴 | +| Azure DevOps | 🔴 | 🟢 | 🔴 | To receive webhooks both Sourcegraph and the code host need to be configured. To configure Sourcegraph, [add an incoming webhook](#adding-an-incoming-webhook). Then [configure webhooks on your code host](#configuring-webhooks-on-the-code-host) @@ -40,7 +39,7 @@ Before adding an incoming webhook you should ensure that you have at least one [ The incoming webhook will be configured to accept events from a specific code host based on its type and URN. -1. Navigate to **Site Admin > Configuration > Incoming webhooks** +1. Navigate to **Site Admin > Integrations > Incoming webhooks** ![Incoming webhooks page](https://storage.googleapis.com/sourcegraph-assets/docs/images/administration/config/webhooks/incoming-webhooks-page.png) 2. Click **+ Create webhook** ![Adding an incoming webhook](https://storage.googleapis.com/sourcegraph-assets/docs/images/administration/config/webhooks/adding-webhook.png) From 44721cf68f43910c3a2611cf9713fb88f3eafdb3 Mon Sep 17 00:00:00 2001 From: Gabe Torres <69164745+gabtorre@users.noreply.github.com> Date: Thu, 26 Mar 2026 13:08:50 -0700 Subject: [PATCH 057/217] Remove $USER parameter from user settings URL examples (#1715) - Updated /users/$USER/settings/security to /users/settings/security - Updated /users/$USER/settings/permissions to /users/settings/permissions - Added consistent clarification that URLs redirect to your settings --- docs/admin/permissions/syncing.mdx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/admin/permissions/syncing.mdx b/docs/admin/permissions/syncing.mdx index e4861e6a0..5b9ea6e51 100644 --- a/docs/admin/permissions/syncing.mdx +++ b/docs/admin/permissions/syncing.mdx @@ -89,7 +89,7 @@ identifiers from code host to repoIDs on Sourcegraph side. > identifier cannot be matched and repository permissions cannot be enforced. This is the main reason to require users to connect to their code host. This -can be done on the Account security settings page: `/users/$USER/settings/security`. +can be done on the Account security settings page: `/settings/security` - redirects to your settings. ### Entities that do not exist on Sourcegraph @@ -121,7 +121,7 @@ The state of user or repository permissions can be checked directly in the Sourc **User permissions** 1. Click on your avatar in top right corner of the page -1. Navigate to **Settings > Permissions** (Or URL path `/users/$USER/settings/permissions`) +1. Navigate to **Settings > Permissions** (Or URL path `/settings/permissions` - redirects to your settings) 1. The permissions page should look similar to: ![User permissions page](https://storage.googleapis.com/sourcegraph-assets/docs/images/administration/config/permissions/user-permissions-page.png) **Repository permissions** From a5d80e5e2b269dddbd87299075c10d2cee36176d Mon Sep 17 00:00:00 2001 From: Gabe Torres <69164745+gabtorre@users.noreply.github.com> Date: Fri, 27 Mar 2026 12:59:42 -0700 Subject: [PATCH 058/217] Batch changes: add link to tracking existing changesets and improve subtitle (#1720) add link to tracking existing changesets and improve subtitle --- docs/batch-changes/index.mdx | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/docs/batch-changes/index.mdx b/docs/batch-changes/index.mdx index 453d607f3..1c22134d4 100644 --- a/docs/batch-changes/index.mdx +++ b/docs/batch-changes/index.mdx @@ -9,8 +9,7 @@ seoPriority: 1.0

- This section is about Batch Changes, which helps you automate and ship - large-scale code changes across many repositories and code hosts. + Learn how to automate and ship large-scale code changes across many repositories and code hosts.

Batch Changes helps you ship large-scale code changes across many repositories and code hosts. You can create pull requests on all affected repositories, and it tracks their progress until they're all merged. You can also preview the changes and update them at any time. @@ -29,7 +28,7 @@ Batch Changes helps you ship large-scale code changes across many repositories a /> -## Get Started +## Getting Started Date: Fri, 27 Mar 2026 23:07:30 +0200 Subject: [PATCH 059/217] Hardcode sitemap base URL to sourcegraph.com/docs (#1718) Replace dynamic host detection with hardcoded base URL for the sitemap. All sitemap entries should always point to the production docs site. --- src/app/robots.ts | 19 ++----------------- src/app/sitemap.ts | 7 +------ 2 files changed, 3 insertions(+), 23 deletions(-) diff --git a/src/app/robots.ts b/src/app/robots.ts index 0e985d9c0..35d3bdba1 100644 --- a/src/app/robots.ts +++ b/src/app/robots.ts @@ -1,26 +1,11 @@ import {MetadataRoute} from 'next'; -import {headers} from 'next/headers'; export default async function robots(): Promise { - const headersList = await headers(); - const host = headersList.get('host') || 'sourcegraph.com'; - const protocol = host.includes('localhost') ? 'http' : 'https'; - const docsPath = host === 'sourcegraph.com' ? '/docs' : ''; - const baseUrl = `${protocol}://${host}${docsPath}`; - - const vercelEnv = process.env.VERCEL_ENV; - // Only allow robots for the latest version (and local dev), the versioned - // historic docs pages should not be crawled by search engines. - const allowRobots = - (vercelEnv === 'production' && host === 'sourcegraph.com') || - vercelEnv === undefined; - return { rules: { userAgent: '*', - allow: allowRobots ? '/' : undefined, - disallow: allowRobots ? undefined : '/' + allow: '/' }, - sitemap: allowRobots ? `${baseUrl}/sitemap.xml` : undefined + sitemap: 'https://sourcegraph.com/docs/sitemap.xml' }; } diff --git a/src/app/sitemap.ts b/src/app/sitemap.ts index 313e72902..618ceb52f 100644 --- a/src/app/sitemap.ts +++ b/src/app/sitemap.ts @@ -1,13 +1,8 @@ import {MetadataRoute} from 'next'; -import {headers} from 'next/headers'; import {allPosts} from 'contentlayer/generated'; export default async function sitemap(): Promise { - const headersList = await headers(); - const host = headersList.get('host') || 'sourcegraph.com'; - const protocol = host.includes('localhost') ? 'http' : 'https'; - const docsPath = host === 'sourcegraph.com' ? '/docs' : ''; - const baseUrl = `${protocol}://${host}${docsPath}`; + const baseUrl = 'https://sourcegraph.com/docs'; const links: MetadataRoute.Sitemap = [ { From 828467412bf09b13ef6735f09a4d1a3cd185fde5 Mon Sep 17 00:00:00 2001 From: Gabe Torres <69164745+gabtorre@users.noreply.github.com> Date: Mon, 30 Mar 2026 05:10:53 -0700 Subject: [PATCH 060/217] Update configuring-credentials: add OAuth support, auth method matrix (#1722) --- .../batch-changes/configuring-credentials.mdx | 39 ++++++++++++------- 1 file changed, 24 insertions(+), 15 deletions(-) diff --git a/docs/batch-changes/configuring-credentials.mdx b/docs/batch-changes/configuring-credentials.mdx index 684245b12..996ec5c48 100644 --- a/docs/batch-changes/configuring-credentials.mdx +++ b/docs/batch-changes/configuring-credentials.mdx @@ -1,8 +1,7 @@ # Configuring Credentials

- Learn how to configure access tokens for code hosts when creating - changesets. + Learn how to configure credentials for code hosts when creating changesets.

Interacting with a code host (such as creating, updating, or syncing changesets) is made possible by configuring credentials for that code host. Sourcegraph uses these credentials to manage changesets on your behalf and with your specific permissions. @@ -12,14 +11,30 @@ Interacting with a code host (such as creating, updating, or syncing changesets) - Sourcegraph instance with repositories in it. Read more in the [Quickstart](/batch-changes/quickstart) guide on how to set up a Sourcegraph instance. - Account on the code host with access to the repositories you wish to target with your batch changes. -## Types of credentials used by Batch Changes +## Supported authentication methods + +The following authentication methods are supported: -Batch Changes can use access tokens for all code hosts, and [GitHub apps (experimental)](#github-apps) for GitHub code hosts. +| **Code Host** | **Personal Access Token** | **Fine-Grained Access Token** | **GitHub App** | **OAuth** | +| -------------------------------- | :-----------------------: | :---------------------------: | :------------: | :-------: | +| GitHub | ✅ | ✅ | ✅ (experimental) | ❌ | +| GitHub Enterprise | ✅ | ✅ | ✅ (experimental) | ❌ | +| GitLab | ✅ | ❌ | ❌ | ✅ | +| Bitbucket Server / Data Center | ✅ | ❌ | ❌ | ✅ | +| Bitbucket Cloud | ✅ | ❌ | ❌ | ✅ | +| Azure DevOps | ✅ | ❌ | ❌ | ❌ | +| Gerrit | ✅ | ❌ | ❌ | ❌ | -Two types of credentials can be configured to use with Batch Changes: +## Types of credentials used by Batch Changes + +Credentials can be configured at two levels: 1. **User Credential** - A credential set by an individual Batch Changes user for their personal code host user account. -2. **Global Service Credential** (Configurable by admins only) - A credential that can be used by any Batch Changes user who does not have a personal credential configured. These are also required for [importing changesets](/batch-changes/tracking-existing-changesets) and syncing changeset state from the code host when webhooks are not configured. Although currently importing changesets is not supported without a global credential, if you’re concerned about individual user permissions, using a global credential is not recommended. +2. **Global Service Credential** (Configurable by admins only) - A credential that can be used by any Batch Changes user who does not have a personal credential configured. If you’re concerned about individual user permissions, using a global credential is not recommended. + + + A global credential is required for [importing changesets](/batch-changes/tracking-existing-changesets) and is used as a fallback for syncing imported changeset state when webhooks are not configured. + Different credentials are used for different types of operations, as shown in the table below. @@ -33,20 +48,14 @@ Different credentials are used for different types of operations, as shown in th | Publishing a changeset | 🟢 | 🟡 | | Updating a changeset | 🟢 | 🟡 | | Closing a changeset | 🟢 | 🟡 | +| Syncing a changeset | 🟢 | 🟡 | | Importing a changeset | 🔴 | 🟢 | -| Syncing a changeset | 🔴 | 🟢 | -When creating a changeset on a code host, the author of the changeset will reflect the credential used (e.g., on GitHub, the user will be the pull request author). This is why a user credential is preferred for most operations. +The credential used determines who appears as the pull request or merge request author on the code host. This is separate from the git commit author, which is set by the batch spec or local `git config` when running `src batch [apply|preview]`. ## Personal access tokens -Personal access tokens are not strictly required if a global access token has also been configured, but users should add one if they want Sourcegraph to create changesets under their name. - - - Commit author is determined by your spec file or local `git config` at the - time of running `src batch [apply|preview]`, completely independent from - code host credentials. - +Personal access tokens are not strictly required if a global credential has also been configured, but users should add one if they want changesets to be created under their name on the code host. ### Adding personal access token From 2f783b6678369a0ef5263fe1258715a8d8af42c9 Mon Sep 17 00:00:00 2001 From: Jan Hartman Date: Mon, 30 Mar 2026 16:33:46 +0200 Subject: [PATCH 061/217] feat: Add query assist page (#1725) I decided to make this quite prominent, happy to adjust. CleanShot 2026-03-30 at 16 01 19 --- docs/code-search/features.mdx | 26 +++++++------ docs/code-search/index.mdx | 1 + docs/code-search/query-assist.mdx | 63 +++++++++++++++++++++++++++++++ src/data/navigation.ts | 1 + 4 files changed, 80 insertions(+), 11 deletions(-) create mode 100644 docs/code-search/query-assist.mdx diff --git a/docs/code-search/features.mdx b/docs/code-search/features.mdx index e1bf04fab..b86a4d8f3 100644 --- a/docs/code-search/features.mdx +++ b/docs/code-search/features.mdx @@ -15,6 +15,10 @@ /> +## Query assist + +[Query assist](/code-search/query-assist) lets you describe what you're looking for in plain natural language. A custom-trained large language model translates your input into a precise Sourcegraph search query, so you can search effectively without memorizing the entire query syntax. + ## Powerful, flexible queries Sourcegraph code search performs full-text searches and supports both regular expression and exact queries. By default, Sourcegraph searches across all your repositories. Our search query syntax allows for advanced queries, such as searching over any branch or commit, narrowing searches by programming language or file pattern, and more. @@ -71,9 +75,9 @@ You can exclude files and directories from search by adding the file `.sourcegra The Sourcegraph search language supports [RE2](https://golang.org/s/re2syntax) syntax. If you're used to tools like Perl which uses [PCRE syntax](https://www.pcre.org/original/doc/html/pcresyntax.html), you may notice that there are some features that are missing from RE2 like backreferences and lookarounds. We choose to use RE2 for a few reasons: -- It makes it possible to build [worst-case linear](https://swtch.com/~rsc/regexp/regexp1.html) evaluation engines, which is very desirable for building a production-ready regex search engine. -- It's well-supported in Go, allowing us to take advantage of a rich ecosystem (notably including [Zoekt](https://github.com/sourcegraph/zoekt)) -- Our API and tooling makes it straightforward to use Sourcegraph with other tools that provide facilities not built in to the search language. +- It makes it possible to build [worst-case linear](https://swtch.com/~rsc/regexp/regexp1.html) evaluation engines, which is very desirable for building a production-ready regex search engine. +- It's well-supported in Go, allowing us to take advantage of a rich ecosystem (notably including [Zoekt](https://github.com/sourcegraph/zoekt)) +- Our API and tooling makes it straightforward to use Sourcegraph with other tools that provide facilities not built in to the search language. As an example of how you can use Sourcegraph tooling with other tools, we can use `jq` (which supports Perl regexes) along with `src` to post-filter search results. In this case, we want to use backreferences to find go functions that take a single pointer argument and return a non-pointer of the same type as the input. @@ -100,17 +104,17 @@ Users on Sourcegraph instance `v5.9.0` or more get the improved and new Code Sea You get the following improvements: -- **In-line diff view**: Easily compare commits and see how a file changed over time, all in-line -- **Revamped code navigation**: Quickly find a list of references of a given symbol, or immediately jump to the definition -- **Reworked fuzzy finder ⌘K**: Find files and symbols quickly and easily with our whole new fuzzy finder -- **File actions**: Like open in editor and open on code host +- **In-line diff view**: Easily compare commits and see how a file changed over time, all in-line +- **Revamped code navigation**: Quickly find a list of references of a given symbol, or immediately jump to the definition +- **Reworked fuzzy finder ⌘K**: Find files and symbols quickly and easily with our whole new fuzzy finder +- **File actions**: Like open in editor and open on code host ## Personalized search ranking Sourcegraph Enterprise users can get more personalized and better-ranked search results in the search bar for their codebases. With this feature, you get: -- Improved ranking for keyword searches like "data router". This capability is enabled by default and cannot be configured -- Personalized ranking, specifically boosted results from repos you recently contributed to. This is controlled by the setting `experimentalFeatures.boostRelevantRepositories` +- Improved ranking for keyword searches like "data router". This capability is enabled by default and cannot be configured +- Personalized ranking, specifically boosted results from repos you recently contributed to. This is controlled by the setting `experimentalFeatures.boostRelevantRepositories` These boosted results from your recently contributed repositories make finding the code you care about easier. @@ -142,5 +146,5 @@ This file picker is useful when comparing branches with thousands of changed fil ## Other search tips -- When viewing a file or directory, press the `y` key to expand the URL to its canonical form (with the full 40-character Git commit SHA). -- To share a link to multi-line range in a file, click on the starting line number and shift-click on the ending line number (in the left-hand gutter). +- When viewing a file or directory, press the `y` key to expand the URL to its canonical form (with the full 40-character Git commit SHA). +- To share a link to multi-line range in a file, click on the starting line number and shift-click on the ending line number (in the left-hand gutter). diff --git a/docs/code-search/index.mdx b/docs/code-search/index.mdx index 406a87558..35ee97cc6 100644 --- a/docs/code-search/index.mdx +++ b/docs/code-search/index.mdx @@ -88,6 +88,7 @@ Sourcegraph's Code Search empowers you to: Code Search main features include: +- Use [query assist](/code-search/query-assist) to search with natural language - Use regular expressions and keyword queries to perform full-text searches - Search any branch and commit, with no indexing required - Search [commit diffs](/code-search/features#commit-diff-search) and [commit messages](/code-search/features#commit-message-search) to see how code has changed diff --git a/docs/code-search/query-assist.mdx b/docs/code-search/query-assist.mdx new file mode 100644 index 000000000..ee9c0cb2e --- /dev/null +++ b/docs/code-search/query-assist.mdx @@ -0,0 +1,63 @@ +# Query assist + +

+ Search your code using natural language with query assist. +

+ +Query assist enables you to describe what you're looking for in plain natural language, and Sourcegraph automatically translates your input into a precise [search query](/code-search/queries). It is powered by a custom-trained LLM that understands Sourcegraph's search query syntax, so you can focus on what you want to find rather than how to express it. + +## How to use query assist + +1. Press `#` in the search bar to activate query assist mode +2. Type a natural language description of what you're looking for — for example, "find all usages of the authToken field in Go files" +3. As you type, query assist suggests translated [search queries](/code-search/queries) in a dropdown below the search bar +4. Select a suggestion and press `Enter` to execute the query + +You can mix and match precise and natural language input. For example, you can type `repo:foo/bar` manually, then enter query assist mode and type "jane's work in january 2026", then finish by manually typing `refactor auth check`. The full query should then look like `repo:foo/bar type:commit author:jane after:"2026-01-01" before:"2026-01-31" refactor auth check`. + +## Examples + +### Basic searches + +| Natural language input | Generated query | +| ----------------------------------------- | ---------------------------------------------- | +| "TODO comments in python files" | `lang:python TODO` | +| "find all uses of @Deprecated in java" | `lang:java @Deprecated` | +| "find function definitions for parseJSON" | `type:symbol select:symbol.function parseJSON` | + +### Filtering and scoping + +| Natural language input | Generated query | +| --------------------------------------------- | ------------------------------------ | +| "find numpy in requirements.txt" | `file:requirements.txt numpy` | +| "javascript files excluding test directories" | `lang:javascript -file:test` | +| "find auth middleware in repo django/django" | `repo:django/django auth middleware` | + +### History and diffs + +| Natural language input | Generated query | +| -------------------------------------------------- | -------------------------------------------------------------------- | +| "what did alice work on in the acme/backend repo?" | `repo:acme/backend type:commit author:alice` | +| "show me diffs with console.log added last month" | `type:diff select:commit.diff.added after:"1 month ago" console.log` | +| "commits mentioning deploy but not rollback" | `type:commit deploy NOT rollback` | + +### Repository predicates and metadata + +| Natural language input | Generated query | +| ----------------------------------------------------- | -------------------------------------------------- | +| "repos that have a package.json containing express" | `repo:has.file(path:package.json content:express)` | +| "which repositories contain a Dockerfile?" | `repo:has.path(Dockerfile) select:repo` | +| "show me repos that haven't been updated in 6 months" | `-repo:has.commit.after(6 months ago) select:repo` | + +### Complex queries + +| Natural language input | Generated query | +| ------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | +| "useState or useEffect in typescript but not in tests" | `lang:typescript -file:test useState OR useEffect` | +| "deprecated code removed in the last 2 weeks in java or kotlin" | `(lang:java OR lang:kotlin) type:diff select:commit.diff.removed after:"2 weeks ago" deprecated` | +| "commits by alice or bob mentioning refactor in backend repos after june 2023" | `repo:backend type:commit (author:alice OR author:bob) after:2023-06-01 refactor` | +| "FIXME on all branches except main in linker repo" | `repo:linker rev:*refs/heads/*:*!refs/heads/main FIXME` | + +## Requirements + +Query assist is available for customers using [Sourcegraph Model Provider](/model-provider). No additional configuration is required — it is enabled by default in the search bar. diff --git a/src/data/navigation.ts b/src/data/navigation.ts index 10157fc93..895c8766a 100644 --- a/src/data/navigation.ts +++ b/src/data/navigation.ts @@ -32,6 +32,7 @@ export const navigation: NavigationItem[] = [ href: '/code-search', sections: [ {title: 'Features', href: '/code-search/features'}, + {title: 'Query assist', href: '/code-search/query-assist'}, { title: 'Search Query Syntax', href: '/code-search/queries', From 1880852ffeeeb5346726b0a904bdee8b1632f65d Mon Sep 17 00:00:00 2001 From: Robert Lin Date: Mon, 30 Mar 2026 12:49:47 -0700 Subject: [PATCH 062/217] nav: pass over for sentence casing (#1690) Surprisingly tricky --- src/data/navigation.ts | 262 ++++++++++++++++++++++------------------- 1 file changed, 140 insertions(+), 122 deletions(-) diff --git a/src/data/navigation.ts b/src/data/navigation.ts index 895c8766a..e0a3ffdd5 100644 --- a/src/data/navigation.ts +++ b/src/data/navigation.ts @@ -34,49 +34,49 @@ export const navigation: NavigationItem[] = [ {title: 'Features', href: '/code-search/features'}, {title: 'Query assist', href: '/code-search/query-assist'}, { - title: 'Search Query Syntax', + title: 'Search query syntax', href: '/code-search/queries', subsections: [ { - title: 'Search Filters Panel', + title: 'Search filters', href: '/code-search/working/search-filters' }, { - title: 'Search Examples', + title: 'Search examples', href: '/code-search/queries/examples' }, { - title: 'Symbol Search', + title: 'Symbol search', href: '/code-search/types/symbol' }, { - title: 'Language Reference', + title: 'Search query language reference', href: '/code-search/queries/language' } ] }, { - title: 'Advanced Features', - href: '/code-search/working/saved-searches', + title: 'Advanced features', + href: '/code-search/features', subsections: [ { - title: 'Fuzzy Finder', + title: 'Fuzzy finder', href: '/code-search/types/fuzzy' }, { - title: 'Search Contexts', + title: 'Search contexts', href: '/code-search/working/search-contexts' }, { - title: 'Search Jobs', + title: 'Search jobs', href: '/code-search/types/search-jobs' }, { - title: 'Search Snippets', + title: 'Search snippets', href: '/code-search/working/snippets' }, { - title: 'Search Subexpressions', + title: 'Search subexpressions', href: '/code-search/working/search-subexpressions' }, { @@ -84,13 +84,13 @@ export const navigation: NavigationItem[] = [ href: '/code-search/working/saved-searches' }, { - title: 'Structural Search', + title: 'Structural search', href: '/code-search/types/structural' } ] }, { - title: 'FAQs', + title: 'Cody FAQs', href: '/code-search/faq' } ] @@ -100,7 +100,7 @@ export const navigation: NavigationItem[] = [ href: '/deep-search', sections: [ { - title: 'Slack Integration', + title: 'Slack integration', href: '/slack-integration' } ] @@ -110,19 +110,19 @@ export const navigation: NavigationItem[] = [ href: '/code-navigation', sections: [ { - title: 'Features', + title: 'Code Navigation features', href: '/code-navigation/features' }, { - title: 'Search-based code navigation', + title: 'Search-based Code Navigation', href: '/code-navigation/search-based-code-navigation' }, { - title: 'Precise code navigation', + title: 'Precise Code Navigation', href: '/code-navigation/precise-code-navigation' }, { - title: 'Syntactic code navigation', + title: 'Syntactic Code Navigation', href: '/code-navigation/syntactic-code-navigation' }, { @@ -130,11 +130,11 @@ export const navigation: NavigationItem[] = [ href: '/code-navigation/auto-indexing' }, { - title: 'Environment Variables', + title: 'Code Navigation environment variables', href: '/code-navigation/envvars' }, { - title: 'Troubleshooting', + title: 'Code Navigation troubleshooting guide', href: '/code-navigation/troubleshooting' } ] @@ -143,21 +143,21 @@ export const navigation: NavigationItem[] = [ title: 'Cody', href: '/cody', sections: [ - {title: 'Quickstart', href: '/cody/quickstart'}, + {title: 'Cody quickstart', href: '/cody/quickstart'}, { - title: 'Installation', + title: 'Cody clients', href: '/cody/clients', subsections: [ { - title: 'Cody for VS Code', + title: 'Installing Cody in VS Code', href: '/cody/clients/install-vscode' }, { - title: 'Cody for JetBrains', + title: 'Installing Cody for JetBrains', href: '/cody/clients/install-jetbrains' }, { - title: 'Cody for Visual Studio', + title: 'Installing Cody in Visual Studio', href: '/cody/clients/install-visual-studio' }, // { title: "Cody for Eclipse", href: "/cody/clients/install-eclipse", }, @@ -172,30 +172,30 @@ export const navigation: NavigationItem[] = [ href: '/cody/clients/enable-cody-enterprise', subsections: [ { - title: 'Features', + title: 'Cody Enterprise features', href: '/cody/enterprise/features' }, { - title: 'Completions Configuration', + title: 'Completions configuration', href: '/cody/enterprise/completions-configuration' }, { - title: 'Model Configuration', + title: 'Model configuration', href: '/cody/enterprise/model-configuration' }, { - title: 'Model Configuration examples', + title: 'Model configuration examples', href: '/cody/enterprise/model-config-examples' } ] }, { - title: 'Capabilities', + title: 'Cody capabilities', href: '/cody/capabilities', subsections: [ {title: 'Chat', href: '/cody/capabilities/chat'}, { - title: 'Agentic Context Fetching', + title: 'Agentic context fetching', href: '/cody/capabilities/agentic-context-fetching' }, { @@ -211,57 +211,60 @@ export const navigation: NavigationItem[] = [ href: '/cody/capabilities/prompts' }, { - title: 'Debug Code', + title: 'Debug code', href: '/cody/capabilities/debug-code' }, { - title: 'Context Filters', + title: 'Manage Cody context', href: '/cody/capabilities/ignore-context' }, { - title: 'Proxy Setup', + title: 'Run Cody via proxies', href: '/cody/capabilities/proxy-setup' }, { - title: 'Supported Models', + title: 'Supported LLMs', href: '/cody/capabilities/supported-models' }, { - title: 'Feature Parity Reference', + title: 'Feature parity reference for Cody clients', href: '/cody/clients/feature-reference' } ] }, { - title: 'Core Concepts', + title: 'Cody context', href: '/cody/core-concepts/context', subsections: [ { - title: 'Context', + title: 'Cody context', href: '/cody/core-concepts/context' }, { - title: 'Token Limits', + title: 'Cody input and output token limits', href: '/cody/core-concepts/token-limits' }, { - title: 'Prompts Guide', + title: 'Cody prompting guide', href: '/cody/prompts-guide' }, { - title: 'Enterprise Architecture', + title: 'Sourcegraph architecture', href: '/admin/architecture#cody' } ] }, - {title: 'Troubleshooting', href: '/cody/troubleshooting'}, - {title: 'FAQs', href: '/cody/faq'} + { + title: 'Troubleshooting Cody', + href: '/cody/troubleshooting' + }, + {title: 'Administration FAQ', href: '/cody/faq'} ] } ] }, { - separator: 'Code Management', + separator: 'Code management', topics: [ { title: 'Batch Changes', @@ -269,79 +272,79 @@ export const navigation: NavigationItem[] = [ sections: [ {title: 'Quickstart', href: '/batch-changes/quickstart'}, { - title: 'Create a Batch Change', + title: 'Creating a batch change', href: '/batch-changes/create-a-batch-change', subsections: [ { - title: 'Sourcegraph UI', + title: 'On your Sourcegraph instance', href: '/batch-changes/create-a-batch-change#on-your-sourcegraph-instance' }, { - title: 'Sourcegraph CLI', + title: 'Using the Sourcegraph CLI', href: '/batch-changes/create-a-batch-change#using-the-sourcegraph-cli' } ] }, { - title: 'View Batch Changes', + title: 'Viewing batch changes', href: '/batch-changes/view-batch-changes' }, { - title: 'Update a Batch Change', + title: 'Update a batch change', href: '/batch-changes/update-a-batch-change' }, { - title: 'Close a Batch Change', + title: 'Closing and deleting a batch change', href: '/batch-changes/delete-a-batch-change' }, { - title: 'Bulk Operations', + title: 'Bulk operations on changesets', href: '/batch-changes/bulk-operations-on-changesets', subsections: [ { - title: 'Publishing Changesets', + title: 'Publishing changesets to the code host', href: '/batch-changes/publishing-changesets' }, { - title: 'Pushing Code', + title: 'Pushing code to a code host', href: '/batch-changes/push-only-changesets' }, { - title: 'Tracking Changesets', + title: 'Tracking existing changesets', href: '/batch-changes/tracking-existing-changesets' }, { - title: 'Rebasing Changesets', + title: 'Rebasing changesets', href: '/batch-changes/rebasing-changesets' } ] }, { - title: 'Configuring Credentials', + title: 'Configuring credentials', href: '/batch-changes/configuring-credentials', subsections: [ { - title: 'Site Admin Config', + title: 'Admin configuration for Batch Changes', href: '/batch-changes/site-admin-configuration' } ] }, { - title: 'Access Permissions', + title: 'Permissions in Batch Changes', href: '/batch-changes/permissions-in-batch-changes' }, { - title: 'Changesets in Monorepos', + title: 'Creating changesets per project in monorepos', href: '/batch-changes/creating-changesets-per-project-in-monorepos', subsections: [ { - title: 'Changesets in Large Repos', + title: 'Creating multiple changesets in large repositories', href: '/batch-changes/creating-multiple-changesets-in-large-repositories' } ] }, { - title: 'Error Handling', + title: 'Error handling of changesets', href: '/batch-changes/handling-errored-changesets' }, { @@ -349,47 +352,47 @@ export const navigation: NavigationItem[] = [ href: '/batch-changes/examples', subsections: [ { - title: 'Refactor Go Code via Comby', + title: 'Refactor Go code using Comby', href: '/batch-changes/refactor-go-comby' }, { - title: 'Update Go Import Statements via Comby', + title: 'Updating Go import statements using Comby', href: '/batch-changes/updating-go-import-statements' }, { - title: 'Update Base Images in Dockerfiles', + title: 'Updating base images in Dockerfiles', href: '/batch-changes/update-base-images-in-dockerfiles' }, { - title: 'Search and Replace Specific Terms', + title: 'Search and replace specific terms', href: '/batch-changes/search-and-replace-specific-terms' } ] }, { - title: 'Batch Spec Reference', + title: 'Batch spec YAML reference', href: '/batch-changes/batch-spec-yaml-reference', subsections: [ { - title: 'Batch Spec Templating', + title: 'Batch spec templating', href: '/batch-changes/batch-spec-templating' }, { - title: 'Batch Spec Cheatsheet', + title: 'Batch spec cheatsheet', href: '/batch-changes/batch-spec-cheat-sheet' } ] }, { - title: 'Working with the CLI', + title: 'How `src` executes a batch spec', href: '/batch-changes/how-src-executes-a-batch-spec', subsections: [ { - title: 'Re-executing Batch Specs', + title: 'Re-executing batch specs multiple times', href: '/batch-changes/reexecuting-batch-specs-multiple-times' }, { - title: 'CLI Subcommands', + title: '`src batch`', href: '/cli/references/batch' } ] @@ -405,33 +408,36 @@ export const navigation: NavigationItem[] = [ title: 'Code Monitoring', href: '/code-monitoring' }, - { - title: 'Code Ownership', - href: '/code-ownership', - sections: [ - { - title: 'CODEOWNERS Format', - href: '/code-ownership/codeowners-format' - } - ] - }, { title: 'Code Insights', href: '/code-insights', sections: [ - {title: 'Quickstart', href: '/code-insights/quickstart'}, + { + title: 'Quickstart for src', + href: '/code-insights/quickstart' + }, { title: 'Explanations', href: '/code-insights/explanations' }, - {title: 'How-to Guides', href: '/code-insights/how-tos'}, - {title: 'References', href: '/code-insights/references'} + {title: 'How-tos', href: '/code-insights/how-tos'}, + {title: '`src`', href: '/code-insights/references'} + ] + }, + { + title: 'Code Ownership', + href: '/code-ownership', + sections: [ + { + title: 'The CODEOWNERS format', + href: '/code-ownership/codeowners-format' + } ] } ] }, { - separator: 'Developer Tools', + separator: 'Developer tools', topics: [ { title: 'Sourcegraph CLI', @@ -439,43 +445,52 @@ export const navigation: NavigationItem[] = [ sections: [ {title: 'Quickstart', href: '/cli/quickstart'}, {title: 'Explanations', href: '/cli/explanations'}, - {title: 'How-to Guides', href: '/cli/how-tos'}, + {title: 'How-tos', href: '/cli/how-tos'}, {title: 'References', href: '/cli/references'} ] }, { - title: 'Cody CLI', + title: 'Install Cody CLI', href: '/cody/clients/install-cli' }, { - title: 'Browser Extension', + title: 'Browser extensions', href: '/integration/browser-extension', sections: [ { - title: 'Browser Search Engine', + title: 'Browser search engine shortcuts', href: '/integration/browser-extension/how-tos/browser-search-engine' } ] }, { - title: 'Editor Extensions', + title: 'Editor integrations', href: '/integration/editor' }, { - title: 'APIs', + title: 'Sourcegraph API', href: '/api', sections: [ {title: 'Sourcegraph API', href: '/api'}, - {title: 'Streaming search API', href: '/api/stream-api'}, - {title: 'Analytics API', href: '/analytics/api'}, - {title: 'Debug API', href: '/api/graphql'} + { + title: 'Sourcegraph streaming search API', + href: '/api/stream-api' + }, + { + title: 'Sourcegraph Analytics API', + href: '/analytics/api' + }, + { + title: 'Sourcegraph GraphQL debug API', + href: '/api/graphql' + } ] }, { - title: 'MCP Server', + title: 'Sourcegraph MCP server', href: '/api/mcp', sections: [ - {title: 'Client Integrations', href: '/api/mcp/client-integrations'} + {title: 'Client integrations', href: '/api/mcp/client-integrations'} ] } ] @@ -484,27 +499,30 @@ export const navigation: NavigationItem[] = [ separator: 'Platform', topics: [ { - title: 'Sourcegraph Admin', + title: 'Administration', href: '/admin', sections: [ - {title: 'Configuration', href: '/admin'}, + {title: 'Administration', href: '/admin'}, {title: 'Licensing', href: '/admin/licensing'}, { - title: 'Enterprise Portal', + title: 'Sourcegraph Enterprise Portal', href: '/admin/enterprise-portal' }, - {title: 'Codehosts', href: '/admin/code-hosts'}, - {title: 'User Authentication', href: '/admin/auth'}, - {title: 'Access Control', href: '/admin/access-control'}, + {title: 'Code host connections', href: '/admin/code-hosts'}, + {title: 'User authentication', href: '/admin/auth'}, + {title: 'Access control', href: '/admin/access-control'}, { - title: 'Repository Permissions', + title: 'Repository permissions', href: '/admin/permissions' }, - {title: 'OAuth Apps', href: '/admin/oauth-apps'}, + {title: 'OAuth apps', href: '/admin/oauth-apps'}, {title: 'Executors', href: '/admin/executors'}, {title: 'FAQs', href: '/admin/faq'}, - {title: 'How-to Guides', href: '/admin/how-to'}, - {title: 'Architecture', href: '/admin/architecture'} + {title: 'How-to guides', href: '/admin/how-to'}, + { + title: 'Sourcegraph architecture', + href: '/admin/architecture' + } ] }, { @@ -512,11 +530,11 @@ export const navigation: NavigationItem[] = [ href: '/cloud' }, { - title: 'Enterprise Self-Hosted', + title: 'Enterprise self-hosted', href: '/self-hosted', sections: [ { - title: 'Deploy', + title: 'Deployment', href: '/self-hosted/deploy', subsections: [ { @@ -528,27 +546,27 @@ export const navigation: NavigationItem[] = [ href: '/self-hosted/deploy/docker-compose' }, { - title: 'Kubernetes', + title: 'Sourcegraph on Kubernetes with Helm', href: '/self-hosted/deploy/kubernetes' }, { - title: 'Machine Images', + title: 'Sourcegraph machine images', href: '/self-hosted/deploy/machine-images' } ] }, { - title: 'Upgrade', + title: 'Updating Sourcegraph', href: '/self-hosted/updates', subsections: [ { - title: 'Migrator', + title: 'Migrator resources', href: '/self-hosted/updates/migrator' } ] }, { - title: 'External Services', + title: 'Using external services', href: '/self-hosted/external-services' }, { @@ -560,7 +578,7 @@ export const navigation: NavigationItem[] = [ href: '/self-hosted/observability' }, { - title: 'How-to Guides', + title: 'How-to guides', href: '/self-hosted/how-to' }, { @@ -574,7 +592,7 @@ export const navigation: NavigationItem[] = [ href: '/analytics', sections: [ {title: 'Metrics', href: '/analytics#metrics'}, - {title: 'API', href: '/analytics/api'} + {title: 'Sourcegraph Analytics API', href: '/analytics/api'} ] }, { @@ -587,7 +605,7 @@ export const navigation: NavigationItem[] = [ separator: 'Pricing', topics: [ { - title: 'Plans', + title: 'Sourcegraph pricing plans', href: '/pricing/plans', sections: [ {title: 'Free', href: '/pricing/plans/free'}, @@ -599,7 +617,7 @@ export const navigation: NavigationItem[] = [ ] }, { - title: 'Plan Comparison', + title: 'Sourcegraph pricing plan comparison', href: '/pricing/plan-comparison' }, { @@ -609,14 +627,14 @@ export const navigation: NavigationItem[] = [ ] }, { - separator: 'Help & Support', + separator: 'Help & support', topics: [ { - title: 'SLAs & Premium Support', + title: 'SLAs and premium support', href: '/sla' }, { - title: 'Tutorials', + title: 'Sourcegraph tutorials', href: '/tutorials' }, { @@ -628,7 +646,7 @@ export const navigation: NavigationItem[] = [ href: 'https://sourcegraph.com/changelog' }, { - title: 'Releases', + title: 'Sourcegraph releases', href: '/releases' } ] From 6cd46c261ca2e8eff57cafa6281e5264091eada4 Mon Sep 17 00:00:00 2001 From: Robert Lin Date: Mon, 30 Mar 2026 14:43:16 -0700 Subject: [PATCH 063/217] remove most pricing content, redirect to https://sourcegraph.com/pricing (#1727) Pricing information shouldn't be in product docs, it should be in the website --- docs/admin/code-hosts/gitlab.mdx | 2 +- docs/pricing/faqs.mdx | 84 ++++---------------- docs/pricing/plan-comparison.mdx | 43 ----------- docs/pricing/plans/enterprise-starter.mdx | 93 +++++++++++++++-------- docs/pricing/plans/enterprise.mdx | 20 +---- docs/pricing/plans/free.mdx | 30 -------- docs/pricing/plans/index.mdx | 34 --------- src/data/navigation.ts | 23 ++---- src/data/redirects.ts | 24 +++++- 9 files changed, 109 insertions(+), 244 deletions(-) delete mode 100644 docs/pricing/plan-comparison.mdx delete mode 100644 docs/pricing/plans/free.mdx delete mode 100644 docs/pricing/plans/index.mdx diff --git a/docs/admin/code-hosts/gitlab.mdx b/docs/admin/code-hosts/gitlab.mdx index e125d1fee..a72589c14 100644 --- a/docs/admin/code-hosts/gitlab.mdx +++ b/docs/admin/code-hosts/gitlab.mdx @@ -1,7 +1,7 @@ # GitLab - Supported on Sourcegraph [Free](/pricing/plans/free) and + Supported on Sourcegraph [Enterprise Starter](/pricing/plans/enterprise-starter) and [Enterprise](/pricing/plans/enterprise) plans. diff --git a/docs/pricing/faqs.mdx b/docs/pricing/faqs.mdx index 9733863d2..1f96fa280 100644 --- a/docs/pricing/faqs.mdx +++ b/docs/pricing/faqs.mdx @@ -1,53 +1,31 @@ # FAQs

- Learn about some of the most commonly asked questions about Sourcegraph. + Learn about some of the most commonly asked questions about Sourcegraph + pricing.

-## What's the difference between Free, Enterprise Starter, and Enterprise plans? - -Free is best for individuals working on hobby projects with public code search. - -Enterprise Starter is for growing organizations who want Sourcegraph's search experience hosted on our cloud. - -Enterprise is for organizations that want AI and search across the SDLC with enterprise-level security, scalability, and flexible deployment. +To learn more about pricing, refer to our [official pricing page](https://sourcegraph.com/pricing). ## What forms of support are available for paid plans? Email and web portal support is available to both Enterprise Starter and Enterprise customers, and you can [read more about our SLAs](/sla). Premium support with enhanced SLAs is also available as an add-on for Enterprise customers. -## Can I upgrade or downgrade my plan? - -To upgrade to Enterprise, please [contact our Sales team](https://sourcegraph.com/contact/request-info). - -## What's the difference between "flexible LLM options" and "bring your own LLM key"? - -Flexible LLM options: Enterprise users with Cody enabled can select from multiple options to use for chat. - -Bring your own LLM key: Enterprise customers can optionally provide their own LLM API key for supported LLMs (including for LLM services such as Azure OpenAI and Amazon Bedrock). In this scenario, customers pay for their own LLM consumption, and we will provide a pricing discount with your plan. - ## Does Sourcegraph use my code to improve the models used by other people? For Enterprise customers, Sourcegraph will not train on your company's data unless your instance admin enables fine-tuning, which would customize an existing model exclusively for your use. -## How are active users counted and billed for Cody? - -This only applies to Cody Enterprise contracts. - -‍A billable user is one who is signed in to their Enterprise account and actively interacts with the product (e.g., they see suggested autocompletions, run commands or chat with Cody, start new discussions, clear chat history, or copy text from chats, change settings, and more). Simply having Cody installed is not enough to be considered a billable user. - ## How are active users calculated for Sourcegraph Code Search and Code Intelligence Platform? A billable active Code Search or Code Intelligence Platform user is signed into and accesses Sourcegraph. This includes but is not limited to: -- Visiting the Sourcegraph web application or using a browser extension, editor extension, or other client while signed in -- Conducting a search in the Sourcegraph UI or extension -- Hovering and navigating code in the Sourcegraph UI or extension -- Viewing a file or repository in Sourcegraph -- Creating, viewing, or receiving a code monitor -- Creating, viewing, modifying, or applying a batch change -- Creating, viewing, or modifying a code insight - +- Visiting the Sourcegraph web application or using a browser extension, editor extension, or other client while signed in +- Conducting a search in the Sourcegraph UI or extension +- Hovering and navigating code in the Sourcegraph UI or extension +- Viewing a file or repository in Sourcegraph +- Creating, viewing, or receiving a code monitor +- Creating, viewing, modifying, or applying a batch change +- Creating, viewing, or modifying a code insight ## How is this measured in the product? @@ -59,44 +37,14 @@ User counts and usage metrics are in [Sourcegraph Analytics](../analytics). Sourcegraph has security and reliability controls built for the most demanding enterprises. To learn more, see our [Security page](https://sourcegraph.netlify.app/security). -## What if I want AI or Code Search Enterprise only? - -You can purchase Enterprise plans for AI or Code Search only. [Contact us](https://sourcegraph.com/contact/request-info) to learn more. +## Enterprise Starter -## Which code hosts is the Enterprise Starter plan compatible with? +See [our Enterprise Starter documentation](/pricing/plans/enterprise-starter). -The Enterprise Starter plan is currently compatible with GitHub. Its limit for indexing is 100 repositories for search and context. +## Cody -## What are the limits of the Enterprise starter plan? +### How are active users counted and billed for Cody? -The Enterprise Starter plan supports up to 50 developers and, alongside a limit of 100 repositories for search and context, also includes 5GB of storage. Adding additional seats gives you 1GB of additional storage per seat, for a maximum total of 10GB. - -## Billing FAQs for Enterprise Starter - -## How do I cancel subscription renewal? - -In the **Workspace settings > Billing** page, you can cancel the subscription and continue having access to your workspace until the end of your current billing period (that is indicated in the UI). - -## How do I cancel subscription and delete my workspace immediately? - -On the **Workspace settings > General settings** page, you can delete your workspace. This will immediately remove access and cancel your subscription. - -## How is the subscription renewal dates determined? - -Your subscription renewals are scheduled to happen on the same day of the month. On shorter months (e.g., day 31 on April, which only has 30 days), the last day of the month will be the subscription renewal day instead. - -## How do I access my invoices? - -You can access your invoices via the **Workspace settings > Billing** page by clicking the **View invoices** button, which takes you to the Stripe Customer Portal. Note that invoices are not emailed every month. - -## How do I pay my invoice if my subscription is past due? - -After updating or resolving your payment method issue that occurred during the automatic subscription renewal, you may do one of the following to pay the invoice for your past-due subscription: - -1. Wait for our system to re-attempt the charge for the invoice. It usually takes up to 24 hours. If it does not happen after 24 hours, please contact [Support](support@sourcegraph.com) to resolve the issue. -1. In the **Workspace settings > Billing** page, click the **View invoices** button, which takes you to the Stripe Customer Portal. Then, pay the invoice there. Our system will reconcile your payment within 24 hours. If it does not reconcile after 24 hours, please contact [Support](support@sourcegraph.com) to resolve the issue. -1. Contact [Support](support@sourcegraph.com) to request re-attempt the charge for the invoice using the payment method on file. - -## Are there any refunds for the subscription? +This only applies to Cody Enterprise contracts. -We don't offer refunds, but if you have any queries regarding the Enterprise Starter, please write to support@sourcegraph.com, and we'll help resolve the issue. +‍A billable user is one who is signed in to their Enterprise account and actively interacts with the product (e.g., they see suggested autocompletions, run commands or chat with Cody, start new discussions, clear chat history, or copy text from chats, change settings, and more). Simply having Cody installed is not enough to be considered a billable user. diff --git a/docs/pricing/plan-comparison.mdx b/docs/pricing/plan-comparison.mdx deleted file mode 100644 index f6a6eb904..000000000 --- a/docs/pricing/plan-comparison.mdx +++ /dev/null @@ -1,43 +0,0 @@ ---- -seoPriority: 1.0 ---- - -# Sourcegraph Pricing Plan Comparison - -

- This page lists a detailed comparison of the features available in each - plan. -

- -| **Features** | **Free** | **Enterprise Starter** | **Enterprise** | -| ------------------------- | --------------------------------- | --------------------------------- | ----------------------------------------------------- | -| **AI** | | | | -| Deep Search | N/A | 10 / week | Add-on | -| **Code Search** | | | | -| Code Search | Public code | ✓ | ✓ | -| Code Navigation | - | Basic precision only | ✓ | -| Code Insights | - | - | ✓ | -| Code Monitoring | - | - | ✓ | -| Search Jobs. | - | - | ✓ | -| Batch Changes | - | - | ✓ | -| **Deployment** | | | | -| Cloud deployment | Multi-tenant | Multi-tenant | Single tenant | -| Self hosted option | - | - | ✓ | -| Private workspace | - | ✓ | ✓ | -| Scalability | Public code only | Limited repositories and users | Full enterprise scale up to terabytes of code | -| **Admin and Security** | | | | -| SSO/SAML | Basic (GH/GL/Google) | Basic (GH/GL/Google) | ✓ | -| Role-based access control | - | - | ✓ | -| Analytics | - | Basic | ✓ | -| Audit logs | - | - | ✓ | -| Guardrails (_Deprecated_) | - | - | Beta | -| Indexed code | - | Private | Private | -| Context Filters | - | - | ✓ | -| **Compatibility** | | | | -| Code hosts | Local codebase | GitHub, GitLab, Bitbucket.org | All major codehosts | -| IDEs | N/A | N/A | VS Code, JetBrains IDEs, Visual Studio (Experimental) | -| Programming languages | All popular programming languages | All popular programming languages | All popular programming languages | -| **Support** | | | | -| Support level | - | Limited Support | Enterprise support | -| Dedicated TA support | - | - | Add-on | -| Premium support | - | - | Add-on | diff --git a/docs/pricing/plans/enterprise-starter.mdx b/docs/pricing/plans/enterprise-starter.mdx index 256e4a471..39415d665 100644 --- a/docs/pricing/plans/enterprise-starter.mdx +++ b/docs/pricing/plans/enterprise-starter.mdx @@ -1,23 +1,20 @@ # Enterprise Starter -

- Learn about the Enterprise Starter plan tailored for individuals and teams - wanting private code indexing and search to leverage the Sourcegraph - platform better. -

- The Enterprise Starter plan offers a multi-tenant Sourcegraph instance designed for individuals and teams. It provides the core features of a traditional Sourcegraph instance but with a simplified management experience. This plan provides a fully managed version of Sourcegraph through a self-serve flow. -## Team seats + + **Sourcegraph Enterprise** is our recommended experience. Visit [Sourcegraph + pricing](https://sourcegraph.com/pricing) to learn more. + -The Enterprise Starter plan is priced at **$19 per month per seat**. You can add or remove team members at any time. +To sign up, visit [workspaces.sourcegraph.com](https://workspaces.sourcegraph.com). ## Enterprise Starter team roles The Enterprise Starter plan includes the following team-level roles: -- **Admin**: Has full access to the workspace, including the ability to manage repos, users, billing, and settings -- **Member**: Can access repositories in the workspace and use the supported features +- **Admin**: Has full access to the workspace, including the ability to manage repos, users, billing, and settings +- **Member**: Can access repositories in the workspace and use the supported features ## Billing @@ -25,8 +22,6 @@ Workspaces on the Enterprise Starter plan are billed monthly based on the number If you fail to make the payment after the grace period, your workspace will be deleted, and you will not be able to recover your data. -Please also see [FAQs](/pricing/faqs) for more FAQs, including how to downgrade Enterprise Starter. - ## Features supported The Enterprise Starter plan supports a variety of search-based features like: @@ -41,21 +36,21 @@ The Enterprise Starter plan supports a variety of search-based features like: Sourcegraph Enterprise Starter offers the following limits: -- Max 500 users per workspace -- Max 100 repos per workspace -- Starts with 25 GB of storage -- 5 GB storage per seat added -- 50 GB max total storage +- Max 500 users per workspace +- Max 100 repos per workspace +- Starts with 25 GB of storage +- 5 GB storage per seat added +- 50 GB max total storage ## Workspace settings After creating a new workspace, you can switch views between your personal and workspace accounts. You can configure different **Workspace settings**. These include options for: -- **General Settings**: Helps you configure how your workspace is described or accessed with options like workspace name, URL, and deleting the workspace -- **Users**: Manage permissions, assign seats, or invite new users -- **Billing**: Manage your monthly billing cycle for all your purchased seats -- **Repository Management**: Add, remove, and view the status of your connected repositories -- **User settings**: Navigates you to your personal account's settings +- **General Settings**: Helps you configure how your workspace is described or accessed with options like workspace name, URL, and deleting the workspace +- **Users**: Manage permissions, assign seats, or invite new users +- **Billing**: Manage your monthly billing cycle for all your purchased seats +- **Repository Management**: Add, remove, and view the status of your connected repositories +- **User settings**: Navigates you to your personal account's settings ![workspace-settings](https://storage.googleapis.com/sourcegraph-assets/Docs/workspace-settings-125.jpg) @@ -75,25 +70,59 @@ From the Repository Management settings, workspace admins can configure various **Repository permissions**: -- **GitHub** provides repository-level permissions that are reflected in Sourcegraph. -- **GitLab.com** and **Bitbucket Cloud** repositories are accessible to all workspace members regardless of the member's permissions on the external code host. +- **GitHub** provides repository-level permissions that are reflected in Sourcegraph. +- **GitLab.com** and **Bitbucket Cloud** repositories are accessible to all workspace members regardless of the member's permissions on the external code host. ![repo-management](https://storage.googleapis.com/sourcegraph-assets/Docs/repo-management-new.png) From here, you can: -- Use the public code search to add and index open source repos in your workspace -- Add multiple organizations to index private repos +- Use the public code search to add and index open source repos in your workspace +- Add multiple organizations to index private repos When you add a new organization, you must authorize access and permission for all repositories or selected ones. To index a repository from your organization, -- Click and select it from the repository list -- Next, from the search bar, type the repo name you are looking for -- Click it to add the repository to your workspace -- The status of the repos will change to **TO BE ADDED** in the right sidebar with a **Save Changes** button -- Next, the repo gets a **QUEUED** status, and it takes some time to process -- Finally, it gets indexed with a **CLONED** status +- Click and select it from the repository list +- Next, from the search bar, type the repo name you are looking for +- Click it to add the repository to your workspace +- The status of the repos will change to **TO BE ADDED** in the right sidebar with a **Save Changes** button +- Next, the repo gets a **QUEUED** status, and it takes some time to process +- Finally, it gets indexed with a **CLONED** status As you add more repos, you get logs for the number of repos added, storage used, and their status. To remove any repo from your workspace, click the repo name that changes the repo status **TO BE REMOVED**. Click the **Save Changes** button to confirm it. ![repo-list](https://storage.googleapis.com/sourcegraph-assets/Docs/sidebar-new.png) + +## FAQ + +### What are the limits of the Enterprise starter plan? + +Limits applied to Enterprise Starter workspaces are outlined [here](https://workspaces.sourcegraph.com/plan). + +### How do I cancel subscription renewal? + +In the **Workspace settings > Billing** page, you can cancel the subscription and continue having access to your workspace until the end of your current billing period (that is indicated in the UI). + +### How do I cancel subscription and delete my workspace immediately? + +On the **Workspace settings > General settings** page, you can delete your workspace. This will immediately remove access and cancel your subscription. + +### How are subscription renewal dates determined? + +Your subscription renewals are scheduled to happen on the same day of the month. On shorter months (e.g., day 31 on April, which only has 30 days), the last day of the month will be the subscription renewal day instead. + +### How do I access my invoices? + +You can access your invoices via the **Workspace settings > Billing** page by clicking the **View invoices** button, which takes you to the Stripe Customer Portal. Note that invoices are not emailed every month. + +### How do I pay my invoice if my subscription is past due? + +After updating or resolving your payment method issue that occurred during the automatic subscription renewal, you may do one of the following to pay the invoice for your past-due subscription: + +1. Wait for our system to re-attempt the charge for the invoice. It usually takes up to 24 hours. If it does not happen after 24 hours, please contact [Support](support@sourcegraph.com) to resolve the issue. +1. In the **Workspace settings > Billing** page, click the **View invoices** button, which takes you to the Stripe Customer Portal. Then, pay the invoice there. Our system will reconcile your payment within 24 hours. If it does not reconcile after 24 hours, please contact [Support](support@sourcegraph.com) to resolve the issue. +1. Contact [Support](support@sourcegraph.com) to request re-attempt the charge for the invoice using the payment method on file. + +### Are there any refunds for the subscription? + +We don't offer refunds, but if you have any queries regarding the Enterprise Starter, please write to support@sourcegraph.com, and we'll help resolve the issue. diff --git a/docs/pricing/plans/enterprise.mdx b/docs/pricing/plans/enterprise.mdx index 4e804caef..2603b8c04 100644 --- a/docs/pricing/plans/enterprise.mdx +++ b/docs/pricing/plans/enterprise.mdx @@ -1,21 +1,5 @@ # Enterprise -

- Learn about the Sourcegraph's Enterprise plan and the features included. -

+Sourcegraph Enterprise is the recommended Sourcegraph experience with enterprise-level security, scalability, and flexibility. -Sourcegraph offers multiple Enterprise plan options, including Enterprise Dedicated Cloud (default) and Enterprise Self Hosted (on-request) for organizations and enterprises that need search with enterprise-level security, scalability, and flexibility. - -## Features breakdown - -Here's a detailed breakdown of features included in the different Enterprise plan options. - -| **Feature** | **Enterprise Dedicated Cloud** | **Enterprise Self Hosted** | -| ------------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| **Description** | - Search with enterprise-level security, scalability, and flexibility | - Search with enterprise-level security, scalability, and flexibility | -| **Price** | - $59/user/month
- 25+ devs | - $59/user/month
- Contact Sales | -| **AI features** | - Deep Search | - Deep Search | -| **Code Search features** | - Everything in Enterprise Starter, plus:
- Batch Changes
- Code Insights
- Code Navigation | - Everything in Enterprise Starter, plus:
- Batch Changes
- Code Insights
- Code Navigation | -| **Deployment types** | - Single-tenant Coud | - Self- Hosted | -| **Compatibility** | - Everything in Enterprise Starter, plus:
- Enterprise admin and security features
- All major code hosts
- Guardrails (Deprecated)
- Context Filters | - Everything in Enterprise Starter, plus:
- Enterprise admin and security features
- All major code hosts
- Guardrails (Deprecated)
- Context Filters | -| **Support** | - 24x5 support with options like:
- TA support
- Premium Support Offerings
- Forward Deployed Engineer (FDE) | - Enterprise support with options like:
- Dedicated TA support
- Premium Support Offerings
- Forward Deployed Engineer (FDE) | +Visit [sourcegraph.com/pricing](https://sourcegraph.com/pricing) for the latest Enterprise plan information, pricing, and feature details. diff --git a/docs/pricing/plans/free.mdx b/docs/pricing/plans/free.mdx deleted file mode 100644 index b9f26abb8..000000000 --- a/docs/pricing/plans/free.mdx +++ /dev/null @@ -1,30 +0,0 @@ -# Free - -

- Learn about the Sourcegraph's Free plan and the features included. -

- -Sourcegraph's Free plan is designed for hobbyists, and light usage is aimed at users with personal projects and small-scale applications. - -## Pricing and billing cycle - -There is no billing cycle, as it's free to use and supports one user per account. You can upgrade to our Enterprise Starter plan for more advanced features. - -## Free vs. Enterprise Starter comparison - -The Enterprise Starter plan provides extended usage limits and advanced features compared to the Free plan. Here's a side-by-side comparison of the two: - -| **Feature** | **Free** | **Enterprise Starter** | -| ------------------------ | ------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -| **Description** | - Public Code Search for hobbyists or light usage | - Code Search for growing organizations hosted on our cloud | -| **Price** | - $0/month
- 1 user | - $19/user/month
- Up to 50 devs | -| **Code Search features** | N/A | - Code Search
- Symbol Search | -| **Deployment types** | - Multi-tenant Coud | - Multi-tenant Cloud
- Private Workspace
- Privately indexed code (100 repos) | -| **Compatibility** | - All popular coding languages
Natural language search
- All major code hosts | - All popular coding languages
Natural language search
- Code hosted on GitHub | -| **Support** | - Community support only | - 9x5 Support | - -## Moving to Enterprise Starter plan - -From your Sourcegraph dashboard, you can upgrade to the Enterprise Starter by clicking the **Create workspace for my team** button. Enter your workspace name and URL, and choose the number of seats. You can start with a single seat and add more later from the **Users** settings section. - -Click the **Create workspace** button to navigate to the payment page. Here, you can view your subscription details and enter your payment details for a successful transaction. diff --git a/docs/pricing/plans/index.mdx b/docs/pricing/plans/index.mdx deleted file mode 100644 index 8ca2f2e38..000000000 --- a/docs/pricing/plans/index.mdx +++ /dev/null @@ -1,34 +0,0 @@ ---- -seoPriority: 1.0 ---- - -# Sourcegraph Pricing Plans - -

- Sourcegraph offers three different pricing plans based on your needs. -

- -{' '} - - - - - diff --git a/src/data/navigation.ts b/src/data/navigation.ts index e0a3ffdd5..16e4fb9e6 100644 --- a/src/data/navigation.ts +++ b/src/data/navigation.ts @@ -490,7 +490,10 @@ export const navigation: NavigationItem[] = [ title: 'Sourcegraph MCP server', href: '/api/mcp', sections: [ - {title: 'Client integrations', href: '/api/mcp/client-integrations'} + { + title: 'Client integrations', + href: '/api/mcp/client-integrations' + } ] } ] @@ -605,23 +608,11 @@ export const navigation: NavigationItem[] = [ separator: 'Pricing', topics: [ { - title: 'Sourcegraph pricing plans', - href: '/pricing/plans', - sections: [ - {title: 'Free', href: '/pricing/plans/free'}, - { - title: 'Enterprise Starter', - href: '/pricing/plans/enterprise-starter' - }, - {title: 'Enterprise', href: '/pricing/plans/enterprise'} - ] - }, - { - title: 'Sourcegraph pricing plan comparison', - href: '/pricing/plan-comparison' + title: 'Sourcegraph pricing', + href: 'https://sourcegraph.com/pricing' }, { - title: 'FAQs', + title: 'Pricing FAQs', href: '/pricing/faqs' } ] diff --git a/src/data/redirects.ts b/src/data/redirects.ts index a8ce3c4d1..8a2948dd9 100644 --- a/src/data/redirects.ts +++ b/src/data/redirects.ts @@ -5465,9 +5465,19 @@ const redirectsData = [ }, //Pricing redirects + { + source: '/pricing', + destination: 'https://sourcegraph.com/pricing', + permanent: true + }, { source: '/pricing/free', - destination: '/pricing/plans/free', + destination: 'https://sourcegraph.com/pricing', + permanent: true + }, + { + source: '/pricing/plans/free', + destination: 'https://sourcegraph.com/pricing', permanent: true }, { @@ -5480,6 +5490,11 @@ const redirectsData = [ destination: '/pricing/plans/enterprise', permanent: true }, + { + source: '/pricing/plan-comparison', + destination: 'https://sourcegraph.com/pricing', + permanent: true + }, { source: '/pricing/billing-faqs', destination: '/pricing/faqs', @@ -5489,7 +5504,12 @@ const redirectsData = [ // Admin pricing docs redirects { source: '/admin/pricing', - destination: '/pricing/plans', + destination: 'https://sourcegraph.com/pricing', + permanent: true + }, + { + source: '/pricing/plans', + destination: 'https://sourcegraph.com/pricing', permanent: true }, From 4f49443599663541bb9ae2e86ff509257e0f5619 Mon Sep 17 00:00:00 2001 From: sourcegraph-buildkite <71296199+sourcegraph-buildkite@users.noreply.github.com> Date: Mon, 30 Mar 2026 23:51:53 +0200 Subject: [PATCH 064/217] =?UTF-8?q?=F0=9F=A4=96=20Sync=20generated=20docs?= =?UTF-8?q?=20from=20sourcegraph/sourcegraph=20(2026-03-30/11-57-12)=20(#1?= =?UTF-8?q?724)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This is an automated pull request, created by //doc:generated.push on sourcegraph/sourcegraph Co-authored-by: Buildkite Co-authored-by: Robert Lin --- docs/admin/code-hosts/aws-codecommit.mdx | 2 +- docs/admin/code-hosts/azuredevops.mdx | 2 +- docs/admin/code-hosts/bitbucket-cloud.mdx | 2 +- docs/admin/code-hosts/bitbucket-server.mdx | 2 +- docs/admin/code-hosts/gerrit.mdx | 2 +- docs/admin/code-hosts/github.mdx | 2 +- docs/admin/code-hosts/gitlab.mdx | 2 +- docs/admin/code-hosts/gitolite.mdx | 2 +- docs/admin/code-hosts/other.mdx | 2 +- docs/admin/code-hosts/phabricator.mdx | 2 +- docs/admin/config/settings.mdx | 2 +- docs/admin/config/site-config.mdx | 10 +- docs/admin/repo/perforce.mdx | 2 +- .../telemetry/private-metadata-allowlist.mdx | 1 + docs/cli/references/index.mdx | 4 +- docs/cli/references/sbom.mdx | 6 +- docs/cli/references/signature.mdx | 6 +- docs/cody/capabilities/supported-models.mdx | 15 +- docs/self-hosted/observability/alerts.mdx | 146 +- docs/self-hosted/observability/dashboards.mdx | 3126 +++++------------ 20 files changed, 959 insertions(+), 2379 deletions(-) diff --git a/docs/admin/code-hosts/aws-codecommit.mdx b/docs/admin/code-hosts/aws-codecommit.mdx index 45bb54f32..92975a892 100644 --- a/docs/admin/code-hosts/aws-codecommit.mdx +++ b/docs/admin/code-hosts/aws-codecommit.mdx @@ -37,7 +37,7 @@ AWS CodeCommit connections support the following configuration options, which ar {/* SCHEMA_SYNC_START: admin/code_hosts/aws_codecommit.schema.json */} {/* WARNING: This section is auto-generated during releases. Do not edit manually. */} -{/* Last updated: 2026-03-06T20:59:17Z */} +{/* Last updated: 2026-03-30T11:57:12Z */} ```json { // REQUIRED: diff --git a/docs/admin/code-hosts/azuredevops.mdx b/docs/admin/code-hosts/azuredevops.mdx index 08f4c56e2..a3b676c21 100644 --- a/docs/admin/code-hosts/azuredevops.mdx +++ b/docs/admin/code-hosts/azuredevops.mdx @@ -65,7 +65,7 @@ Azure DevOps connections support the following configuration options, which are {/* SCHEMA_SYNC_START: admin/code_hosts/azuredevops.schema.json */} {/* WARNING: This section is auto-generated during releases. Do not edit manually. */} -{/* Last updated: 2026-03-06T20:59:17Z */} +{/* Last updated: 2026-03-30T11:57:12Z */} ```json // Authentication alternatives: token OR windowsPassword diff --git a/docs/admin/code-hosts/bitbucket-cloud.mdx b/docs/admin/code-hosts/bitbucket-cloud.mdx index 8349f8ef6..6e28423cf 100644 --- a/docs/admin/code-hosts/bitbucket-cloud.mdx +++ b/docs/admin/code-hosts/bitbucket-cloud.mdx @@ -116,7 +116,7 @@ Bitbucket Cloud connections support the following configuration options, which a {/* SCHEMA_SYNC_START: admin/code_hosts/bitbucket_cloud.schema.json */} {/* WARNING: This section is auto-generated during releases. Do not edit manually. */} -{/* Last updated: 2026-03-06T20:59:17Z */} +{/* Last updated: 2026-03-30T11:57:12Z */} ```json { // The workspace access token to use when authenticating with Bitbucket Cloud. diff --git a/docs/admin/code-hosts/bitbucket-server.mdx b/docs/admin/code-hosts/bitbucket-server.mdx index 01f1bd272..4b32be04a 100644 --- a/docs/admin/code-hosts/bitbucket-server.mdx +++ b/docs/admin/code-hosts/bitbucket-server.mdx @@ -202,7 +202,7 @@ Bitbucket Server / Bitbucket Data Center connections support the following confi {/* SCHEMA_SYNC_START: admin/code_hosts/bitbucket_server.schema.json */} {/* WARNING: This section is auto-generated during releases. Do not edit manually. */} -{/* Last updated: 2026-03-06T20:59:17Z */} +{/* Last updated: 2026-03-30T11:57:12Z */} ```json // Authentication alternatives: token OR password diff --git a/docs/admin/code-hosts/gerrit.mdx b/docs/admin/code-hosts/gerrit.mdx index 651b5093a..9fd9f2825 100644 --- a/docs/admin/code-hosts/gerrit.mdx +++ b/docs/admin/code-hosts/gerrit.mdx @@ -113,7 +113,7 @@ Gerrit connections support the following configuration options, which are specif {/* SCHEMA_SYNC_START: admin/code_hosts/gerrit.schema.json */} {/* WARNING: This section is auto-generated during releases. Do not edit manually. */} -{/* Last updated: 2026-03-06T20:59:17Z */} +{/* Last updated: 2026-03-30T11:57:12Z */} ```json { // If non-null, enforces Gerrit repository permissions. This requires that there is an item in the [site configuration json](https://sourcegraph.com/docs/admin/config/site_config#auth-providers) `auth.providers` field, of type "gerrit" with the same `url` field as specified in this `GerritConnection`. diff --git a/docs/admin/code-hosts/github.mdx b/docs/admin/code-hosts/github.mdx index 777eedc88..93826d807 100644 --- a/docs/admin/code-hosts/github.mdx +++ b/docs/admin/code-hosts/github.mdx @@ -454,7 +454,7 @@ GitHub connections support the following configuration options, which are specif {/* SCHEMA_SYNC_START: admin/code_hosts/github.schema.json */} {/* WARNING: This section is auto-generated during releases. Do not edit manually. */} -{/* Last updated: 2026-03-06T20:59:17Z */} +{/* Last updated: 2026-03-30T11:57:12Z */} ```json // Authentication alternatives: token OR gitHubAppDetails OR externalAccount OR useRandomExternalAccount diff --git a/docs/admin/code-hosts/gitlab.mdx b/docs/admin/code-hosts/gitlab.mdx index a72589c14..0f844657f 100644 --- a/docs/admin/code-hosts/gitlab.mdx +++ b/docs/admin/code-hosts/gitlab.mdx @@ -189,7 +189,7 @@ See [Internal rate limits](/admin/code-hosts/rate-limits#internal-rate-limits). {/* SCHEMA_SYNC_START: admin/code_hosts/gitlab.schema.json */} {/* WARNING: This section is auto-generated during releases. Do not edit manually. */} -{/* Last updated: 2026-03-06T20:59:17Z */} +{/* Last updated: 2026-03-30T11:57:12Z */} ```json { // If non-null, enforces GitLab repository permissions. This requires that there be an item in the `auth.providers` field of type "gitlab" with the same `url` field as specified in this `GitLabConnection`. diff --git a/docs/admin/code-hosts/gitolite.mdx b/docs/admin/code-hosts/gitolite.mdx index d085e26ed..c3e945707 100644 --- a/docs/admin/code-hosts/gitolite.mdx +++ b/docs/admin/code-hosts/gitolite.mdx @@ -25,7 +25,7 @@ To connect Gitolite to Sourcegraph: {/* SCHEMA_SYNC_START: admin/code_hosts/gitolite.schema.json */} {/* WARNING: This section is auto-generated during releases. Do not edit manually. */} -{/* Last updated: 2026-03-06T20:59:17Z */} +{/* Last updated: 2026-03-30T11:57:12Z */} ```json { // A list of repositories to never mirror from this Gitolite instance. Supports excluding by exact name ({"name": "foo"}). diff --git a/docs/admin/code-hosts/other.mdx b/docs/admin/code-hosts/other.mdx index cb0ee85c5..38903208f 100644 --- a/docs/admin/code-hosts/other.mdx +++ b/docs/admin/code-hosts/other.mdx @@ -68,7 +68,7 @@ Repositories must be listed individually: {/* SCHEMA_SYNC_START: admin/code_hosts/other_external_service.schema.json */} {/* WARNING: This section is auto-generated during releases. Do not edit manually. */} -{/* Last updated: 2026-03-06T20:59:17Z */} +{/* Last updated: 2026-03-30T11:57:12Z */} ```json { // A list of repositories to never mirror by name after applying repositoryPathPattern. Supports excluding by exact name ({"name": "myrepo"}) or regular expression ({"pattern": ".*secret.*"}). diff --git a/docs/admin/code-hosts/phabricator.mdx b/docs/admin/code-hosts/phabricator.mdx index 5e05fdfaa..49461a8f0 100644 --- a/docs/admin/code-hosts/phabricator.mdx +++ b/docs/admin/code-hosts/phabricator.mdx @@ -76,7 +76,7 @@ The Sourcegraph instance's site admin must [update the `corsOrigin` site config {/* SCHEMA_SYNC_START: admin/code_hosts/phabricator.schema.json */} {/* WARNING: This section is auto-generated during releases. Do not edit manually. */} -{/* Last updated: 2026-03-06T20:59:17Z */} +{/* Last updated: 2026-03-30T11:57:12Z */} ```json { // SSH cipher to use when cloning via SSH. Must be a valid choice from `ssh -Q cipher`. diff --git a/docs/admin/config/settings.mdx b/docs/admin/config/settings.mdx index b0347f255..3073d85c5 100644 --- a/docs/admin/config/settings.mdx +++ b/docs/admin/config/settings.mdx @@ -27,7 +27,7 @@ Settings options and their default values are shown below. {/* SCHEMA_SYNC_START: admin/config/settings.schema.json */} {/* WARNING: This section is auto-generated during releases. Do not edit manually. */} -{/* Last updated: 2026-03-06T20:59:17Z */} +{/* Last updated: 2026-03-30T11:57:12Z */} ```json { diff --git a/docs/admin/config/site-config.mdx b/docs/admin/config/site-config.mdx index 36d8d9fe5..b2c318347 100644 --- a/docs/admin/config/site-config.mdx +++ b/docs/admin/config/site-config.mdx @@ -21,7 +21,7 @@ All site configuration options and their default values are shown below. {/* SCHEMA_SYNC_START: admin/config/site.schema.json */} {/* WARNING: This section is auto-generated during releases. Do not edit manually. */} -{/* Last updated: 2026-03-06T20:59:17Z */} +{/* Last updated: 2026-03-30T11:57:12Z */} ```json { @@ -448,6 +448,9 @@ All site configuration options and their default values are shown below. // DEPRECATED: Configure maxRepos in search.limits "maxReposToSearch": -1, + // Enable/disable MCP API endpoints under `/.api/mcp`. When disabled, MCP endpoints return 404. + "mcp.enabled": true, + "modelConfiguration": null, // Notifications received from Sourcegraph.com to display in Sourcegraph. @@ -648,7 +651,8 @@ All site configuration options and their default values are shown below. "tls.external": null, - // The channel on which to automatically check for Sourcegraph updates. + // ⚠️ DEPRECATED: DEPRECATED: This setting has no effect. + // DEPRECATED: This setting has no effect. // Valid options: "release", "none" // Other example values: // - "none" @@ -737,7 +741,7 @@ All site configuration options and their default values are shown below. // When enabled, users are required to connect at least one external account to their Sourcegraph account. Site admins are exempt from this requirement. "auth.enforceExternalAccountConnection": false, - // Enables OAuth 2.0 Dynamic Client Registration (RFC 7591) for the Sourcegraph identity provider. When enabled, OAuth clients can self-register programmatically instead of requiring manual pre-configuration. Required for MCP clients and other applications that use dynamic registration for authorization. + // Enables OAuth 2.0 Dynamic Client Registration (RFC 7591) for the Sourcegraph identity provider. When enabled, OAuth clients can self-register programmatically instead of requiring manual pre-configuration. This is used for MCP clients; if `mcp.enabled` is `false`, this setting is treated as `false`. "auth.idpDynamicClientRegistrationEnabled": true, // The config options for account lockout diff --git a/docs/admin/repo/perforce.mdx b/docs/admin/repo/perforce.mdx index 55a6d31e4..ce80f19b1 100644 --- a/docs/admin/repo/perforce.mdx +++ b/docs/admin/repo/perforce.mdx @@ -228,7 +228,7 @@ With this setting, Sourcegraph will ignore any rules with a host other than `*`, {/* SCHEMA_SYNC_START: admin/code_hosts/perforce.schema.json */} {/* WARNING: This section is auto-generated during releases. Do not edit manually. */} -{/* Last updated: 2026-03-06T20:59:17Z */} +{/* Last updated: 2026-03-30T11:57:12Z */} ```json { // If non-null, enforces Perforce depot permissions. diff --git a/docs/admin/telemetry/private-metadata-allowlist.mdx b/docs/admin/telemetry/private-metadata-allowlist.mdx index a887e247f..609fe90f9 100644 --- a/docs/admin/telemetry/private-metadata-allowlist.mdx +++ b/docs/admin/telemetry/private-metadata-allowlist.mdx @@ -33,4 +33,5 @@ To learn more, refer to the [telemetry documentation](https://sourcegraph.com/do | `cody.modelSelector` | _(all)_ | `modelId` — High-cardinality model identifier; helpful for determining the model selected in the model selector.
`modelProvider` — High-cardinality model provider; helpful for determining the model selected in the model selector. | | `cody.smart-apply.context` | `applied` | `model` — High-cardinality model identifier; helpful for determining the model that was selected. | | `deepsearch` | `search.toolcall` | `toolName` — High-cardinality tool name; helpful for determining which tools are being used during deep search.
`toolId` — High-cardinality tool identifier; helpful for determining which tools are being used during deep search.
`model` — High-cardinality model identifier; helpful for determining which models are being used during deep search. | +| `admin.users` | `delete` | `userIDs` — Numeric identifiers of users being deleted; needed for audit and analytics of admin user management actions. | | `externalApi` | `request` | `procedure` — ConnectRPC procedure path (e.g. '/sourcegraph.users.v1.UsersService/GetUser'); not sensitive and needed to distinguish which external API RPCs are being used. | \ No newline at end of file diff --git a/docs/cli/references/index.mdx b/docs/cli/references/index.mdx index c511872ba..5f606371d 100644 --- a/docs/cli/references/index.mdx +++ b/docs/cli/references/index.mdx @@ -15,11 +15,11 @@ * [`lsp`](references/lsp) * [`orgs`](references/orgs) * [`repos`](references/repos) -* [`sbom` (deprecated)](references/sbom) +* [`sbom`](references/sbom) * [`search`](references/search) * [`search-jobs`](references/search-jobs) * [`serve-git`](references/serve-git) -* [`signature` (deprecated)](references/signature) +* [`signature`](references/signature) * [`snapshot`](references/snapshot) * [`teams`](references/teams) * [`users`](references/users) diff --git a/docs/cli/references/sbom.mdx b/docs/cli/references/sbom.mdx index e3750cf6a..76dd910b3 100644 --- a/docs/cli/references/sbom.mdx +++ b/docs/cli/references/sbom.mdx @@ -1,13 +1,11 @@ # `src sbom` - -**Deprecated:** SBOMs are no longer generated for Sourcegraph releases after version 7.0.2852. - + ## Usage ``` -'src sbom' fetches and verifies SBOM (Software Bill of Materials) data for Sourcegraph containers for releases 5.9.0 through 7.0.2852. +'src sbom' fetches and verifies SBOM (Software Bill of Materials) data for Sourcegraph containers. Usage: diff --git a/docs/cli/references/signature.mdx b/docs/cli/references/signature.mdx index b050db010..a335f9ca9 100644 --- a/docs/cli/references/signature.mdx +++ b/docs/cli/references/signature.mdx @@ -1,13 +1,11 @@ # `src signature` - -**Deprecated:** Container signatures are no longer published for Sourcegraph releases after version 7.0.2852. - + ## Usage ``` -'src signature' verifies published signatures for Sourcegraph containers for releases 5.11.4013 through 7.0.2852. +'src signature' verifies published signatures for Sourcegraph containers. Usage: diff --git a/docs/cody/capabilities/supported-models.mdx b/docs/cody/capabilities/supported-models.mdx index 8d4f8b97c..a323b0d56 100644 --- a/docs/cody/capabilities/supported-models.mdx +++ b/docs/cody/capabilities/supported-models.mdx @@ -16,6 +16,7 @@ Cody supports a variety of cutting-edge large language models for use in chat an | :----------- | :-------- | :--------- | :----------------- | | Anthropic | [Claude Opus 4.6](https://docs.anthropic.com/en/docs/about-claude/models/overview) | ✅ | ✅ | | Anthropic | [Claude Sonnet 4.6](https://docs.anthropic.com/en/docs/about-claude/models/overview) | ✅ | ✅ | +| Anthropic | [Claude Sonnet 4.6 with Thinking](https://docs.anthropic.com/en/docs/about-claude/models/overview) | ✅ | ✅ | | Anthropic | [Claude Sonnet 4.5](https://docs.anthropic.com/en/docs/about-claude/models/overview) | ✅ | ✅ | | Anthropic | [Claude Sonnet 4.5 with Thinking](https://docs.anthropic.com/en/docs/about-claude/models/overview) | ✅ | ✅ | | Anthropic | [Claude Opus 4.5](https://docs.anthropic.com/en/docs/about-claude/models/overview) | ✅ | ✅ | @@ -24,9 +25,12 @@ Cody supports a variety of cutting-edge large language models for use in chat an | Anthropic | [Claude Haiku 4.5 with Thinking](https://docs.anthropic.com/en/docs/about-claude/models/overview) | ✅ | ✅ | | Google | [Gemini 2.5 Flash](https://cloud.google.com/vertex-ai/generative-ai/docs/models/gemini/2-5-flash) | ✅ | ✅ | | Google | [Gemini 2.5 Pro](https://cloud.google.com/vertex-ai/generative-ai/docs/models/gemini/2-5-pro) | ✅ | ✅ | -| Google | [Gemini 3 Pro](https://cloud.google.com/vertex-ai/generative-ai/docs/models/gemini/3-pro) | ✅ (experimental) | ❌ | -| Google | [Gemini 3 Flash](https://cloud.google.com/vertex-ai/generative-ai/docs/models/gemini/3-flash) | ✅ (experimental) | ❌ | -| Google | [Gemini 3.1 Pro](https://cloud.google.com/vertex-ai/generative-ai/docs/models/gemini/3-1-pro) | ✅ (experimental) | ❌ | +| Google | [Gemini 3 Flash](https://cloud.google.com/vertex-ai/generative-ai/docs/models/gemini/3-flash) | ✅ | ❌ | +| Google | [Gemini 3.1 Flash Lite](https://docs.cloud.google.com/vertex-ai/generative-ai/docs/models/gemini/3-1-flash-lite) | ✅ | ❌ | +| Google | [Gemini 3.1 Pro](https://cloud.google.com/vertex-ai/generative-ai/docs/models/gemini/3-1-pro) | ✅ (beta) | ❌ | +| OpenAI | [GPT-5.4](https://developers.openai.com/api/docs/models/gpt-5.4) | ✅ | ✅ | +| OpenAI | [GPT-5.4 mini](https://developers.openai.com/api/docs/models/gpt-5.4-mini) | ✅ | ✅ | +| OpenAI | [GPT-5.4 nano](https://developers.openai.com/api/docs/models/gpt-5.4-nano) | ✅ | ✅ | | OpenAI | [GPT-5.2](https://platform.openai.com/docs/models/gpt-5.2) | ✅ | ✅ | | OpenAI | [GPT-5.1](https://platform.openai.com/docs/models/gpt-5.1) | ✅ | ✅ | | OpenAI | [GPT-5](https://platform.openai.com/docs/models/gpt-5) | ✅ | ✅ | @@ -55,11 +59,12 @@ Cody uses a set of models for autocomplete which are suited for the low latency | Anthropic | [Claude Haiku 4.5 with Thinking](https://docs.anthropic.com/en/docs/about-claude/models/overview) | ✅ | | Fireworks.ai | StarCoder | ✅ | | Fireworks.ai | DeepSeek V2 Lite Base | ✅ | -| Fireworks.ai | AutoEdits Fireworks Default | ✅ (experimental) | +| Fireworks.ai | AutoEdits Fireworks Default | ✅ (beta) | | Fireworks.ai | Autoedits DeepSeek Coder V2 | ✅ (beta) | | Fireworks.ai | Autoedits DeepSeek Coder V2 | ✅ (beta) | | Fireworks.ai | Autoedits DeepSeek Coder V2 | ✅ (beta) | | Fireworks.ai | Autoedits Long Suggestion V4 Warm Start SFT | ✅ (beta) | +| Fireworks.ai | NLS Query Translator | ✅ | | OpenAI | [GPT-4.1-nano](https://platform.openai.com/docs/models/gpt-4.1-nano) | ✅ | @@ -69,7 +74,7 @@ Cody uses a set of models for autocomplete which are suited for the low latency | **Provider** | **Model** | **Status** | | :----------- | :-------- | :--------- | | Fireworks.ai | Smart Apply Qwen Default | ✅ | -| Fireworks.ai | Smart Apply Qwen 32B V1 | ✅ (experimental) | +| Fireworks.ai | Smart Apply Qwen 32B V1 | ✅ (beta) | ## Default Models diff --git a/docs/self-hosted/observability/alerts.mdx b/docs/self-hosted/observability/alerts.mdx index d857b648f..1909109c1 100644 --- a/docs/self-hosted/observability/alerts.mdx +++ b/docs/self-hosted/observability/alerts.mdx @@ -1386,37 +1386,6 @@ Generated query for critical alert: `min(((src_gitserver_disk_space_available /
-## gitserver: cpu_throttling_time - -

container CPU throttling time %

- -**Descriptions** - -- warning gitserver: 75%+ container CPU throttling time % for 2m0s - -**Next steps** - -- - Consider increasing the CPU limit for the container. -- More help interpreting this metric is available in the [dashboards reference](dashboards#gitserver-cpu_throttling_time). -- **Silence this alert:** If you are aware of this alert and want to silence notifications for it, add the following to your site configuration and set a reminder to re-evaluate the alert: - -```json -"observability.silenceAlerts": [ - "warning_gitserver_cpu_throttling_time" -] -``` - -*Managed by the Sourcegraph Services team.* - -
-Technical details - -Generated query for warning alert: `max((sum by (container_label_io_kubernetes_pod_name) ((rate(container_cpu_cfs_throttled_periods_total{container_label_io_kubernetes_container_name="gitserver"\}[5m]) / rate(container_cpu_cfs_periods_total\{container_label_io_kubernetes_container_name="gitserver"}[5m])) * 100)) >= 75)` - -
- -
- ## gitserver: echo_command_duration_test

echo test command duration

@@ -1513,26 +1482,23 @@ Generated query for warning alert: `max((sum(src_gitserver_clone_queue)) >= 2
-## gitserver: git_command_retry_attempts_rate +## gitserver: cpu_usage_percentage -

rate of git command corruption retry attempts over 5m

+

CPU usage

**Descriptions** -- warning gitserver: 0.1reqps+ rate of git command corruption retry attempts over 5m for 5m0s +- warning gitserver: 95%+ CPU usage for 10m0s **Next steps** -- Investigate the underlying cause of corruption errors in git commands. -- Check disk health and I/O performance. -- Monitor for patterns in specific git operations that trigger retries. -- Consider adjusting retry configuration if retries are too frequent. -- More help interpreting this metric is available in the [dashboards reference](dashboards#gitserver-git_command_retry_attempts_rate). +- Consider increasing CPU limits or scaling out. +- Learn more about the related dashboard panel in the [dashboards reference](dashboards#gitserver-cpu_usage_percentage). - **Silence this alert:** If you are aware of this alert and want to silence notifications for it, add the following to your site configuration and set a reminder to re-evaluate the alert: ```json "observability.silenceAlerts": [ - "warning_gitserver_git_command_retry_attempts_rate" + "warning_gitserver_cpu_usage_percentage" ] ``` @@ -1541,31 +1507,29 @@ Generated query for warning alert: `max((sum(src_gitserver_clone_queue)) >= 2
Technical details -Generated query for warning alert: `max((sum(rate(src_gitserver_retry_attempts_total[5m]))) >= 0.1)` +Generated query for warning alert: `max((cadvisor_container_cpu_usage_percentage_total{name=~"^gitserver.*"}) >= 95)`

-## gitserver: goroutine_error_rate +## gitserver: memory_rss -

error rate for periodic goroutine executions

+

memory (RSS)

**Descriptions** -- warning gitserver: 0.01reqps+ error rate for periodic goroutine executions for 15m0s +- warning gitserver: 90%+ memory (RSS) for 10m0s **Next steps** -- Check service logs for error details related to the failing periodic routine -- Check if the routine depends on external services that may be unavailable -- Look for recent changes to the routine`s code or configuration -- More help interpreting this metric is available in the [dashboards reference](dashboards#gitserver-goroutine_error_rate). +- Consider increasing memory limits or scaling out. +- More help interpreting this metric is available in the [dashboards reference](dashboards#gitserver-memory_rss). - **Silence this alert:** If you are aware of this alert and want to silence notifications for it, add the following to your site configuration and set a reminder to re-evaluate the alert: ```json "observability.silenceAlerts": [ - "warning_gitserver_goroutine_error_rate" + "warning_gitserver_memory_rss" ] ``` @@ -1574,31 +1538,29 @@ Generated query for warning alert: `max((sum(rate(src_gitserver_retry_attempts_t
Technical details -Generated query for warning alert: `max((sum by (name, job_name) (rate(src_periodic_goroutine_errors_total{job=~".*gitserver.*"}[5m]))) >= 0.01)` +Generated query for warning alert: `max((max by (name) (container_memory_rss{name=~"^gitserver.*"\} / container_spec_memory_limit_bytes\{name=~"^gitserver.*"}) * 100) >= 90)`

-## gitserver: goroutine_error_percentage +## gitserver: cpu_throttling_time -

percentage of periodic goroutine executions that result in errors

+

container CPU throttling time %

**Descriptions** -- warning gitserver: 5%+ percentage of periodic goroutine executions that result in errors +- warning gitserver: 75%+ container CPU throttling time % for 2m0s **Next steps** -- Check service logs for error details related to the failing periodic routine -- Check if the routine depends on external services that may be unavailable -- Consider temporarily disabling the routine if it`s non-critical and causing cascading issues -- More help interpreting this metric is available in the [dashboards reference](dashboards#gitserver-goroutine_error_percentage). +- Consider increasing the CPU limit for the container. +- More help interpreting this metric is available in the [dashboards reference](dashboards#gitserver-cpu_throttling_time). - **Silence this alert:** If you are aware of this alert and want to silence notifications for it, add the following to your site configuration and set a reminder to re-evaluate the alert: ```json "observability.silenceAlerts": [ - "warning_gitserver_goroutine_error_percentage" + "warning_gitserver_cpu_throttling_time" ] ``` @@ -1607,29 +1569,32 @@ Generated query for warning alert: `max((sum by (name, job_name) (rate(src_perio
Technical details -Generated query for warning alert: `max((sum by (name, job_name) (rate(src_periodic_goroutine_errors_total{job=~".*gitserver.*"\}[5m])) / sum by (name, job_name) (rate(src_periodic_goroutine_total\{job=~".*gitserver.*"}[5m]) > 0) * 100) >= 5)` +Generated query for warning alert: `max((sum by (container_label_io_kubernetes_pod_name) ((rate(container_cpu_cfs_throttled_periods_total{container_label_io_kubernetes_container_name="gitserver"\}[5m]) / rate(container_cpu_cfs_periods_total\{container_label_io_kubernetes_container_name="gitserver"}[5m])) * 100)) >= 75)`

-## gitserver: cpu_usage_percentage +## gitserver: git_command_retry_attempts_rate -

CPU usage

+

rate of git command corruption retry attempts over 5m

**Descriptions** -- warning gitserver: 95%+ CPU usage for 10m0s +- warning gitserver: 0.1reqps+ rate of git command corruption retry attempts over 5m for 5m0s **Next steps** -- Consider increasing CPU limits or scaling out. -- Learn more about the related dashboard panel in the [dashboards reference](dashboards#gitserver-cpu_usage_percentage). +- Investigate the underlying cause of corruption errors in git commands. +- Check disk health and I/O performance. +- Monitor for patterns in specific git operations that trigger retries. +- Consider adjusting retry configuration if retries are too frequent. +- More help interpreting this metric is available in the [dashboards reference](dashboards#gitserver-git_command_retry_attempts_rate). - **Silence this alert:** If you are aware of this alert and want to silence notifications for it, add the following to your site configuration and set a reminder to re-evaluate the alert: ```json "observability.silenceAlerts": [ - "warning_gitserver_cpu_usage_percentage" + "warning_gitserver_git_command_retry_attempts_rate" ] ``` @@ -1638,29 +1603,31 @@ Generated query for warning alert: `max((sum by (name, job_name) (rate(src_perio
Technical details -Generated query for warning alert: `max((cadvisor_container_cpu_usage_percentage_total{name=~"^gitserver.*"}) >= 95)` +Generated query for warning alert: `max((sum(rate(src_gitserver_retry_attempts_total[5m]))) >= 0.1)`

-## gitserver: memory_rss +## gitserver: goroutine_error_rate -

memory (RSS)

+

error rate for periodic goroutine executions

**Descriptions** -- warning gitserver: 90%+ memory (RSS) for 10m0s +- warning gitserver: 0.01reqps+ error rate for periodic goroutine executions for 15m0s **Next steps** -- Consider increasing memory limits or scaling out. -- More help interpreting this metric is available in the [dashboards reference](dashboards#gitserver-memory_rss). +- Check service logs for error details related to the failing periodic routine +- Check if the routine depends on external services that may be unavailable +- Look for recent changes to the routine`s code or configuration +- More help interpreting this metric is available in the [dashboards reference](dashboards#gitserver-goroutine_error_rate). - **Silence this alert:** If you are aware of this alert and want to silence notifications for it, add the following to your site configuration and set a reminder to re-evaluate the alert: ```json "observability.silenceAlerts": [ - "warning_gitserver_memory_rss" + "warning_gitserver_goroutine_error_rate" ] ``` @@ -1669,7 +1636,40 @@ Generated query for warning alert: `max((cadvisor_container_cpu_usage_percentage
Technical details -Generated query for warning alert: `max((max by (name) (container_memory_rss{name=~"^gitserver.*"\} / container_spec_memory_limit_bytes\{name=~"^gitserver.*"}) * 100) >= 90)` +Generated query for warning alert: `max((sum by (name, job_name) (rate(src_periodic_goroutine_errors_total{job=~".*gitserver.*"}[5m]))) >= 0.01)` + +
+ +
+ +## gitserver: goroutine_error_percentage + +

percentage of periodic goroutine executions that result in errors

+ +**Descriptions** + +- warning gitserver: 5%+ percentage of periodic goroutine executions that result in errors + +**Next steps** + +- Check service logs for error details related to the failing periodic routine +- Check if the routine depends on external services that may be unavailable +- Consider temporarily disabling the routine if it`s non-critical and causing cascading issues +- More help interpreting this metric is available in the [dashboards reference](dashboards#gitserver-goroutine_error_percentage). +- **Silence this alert:** If you are aware of this alert and want to silence notifications for it, add the following to your site configuration and set a reminder to re-evaluate the alert: + +```json +"observability.silenceAlerts": [ + "warning_gitserver_goroutine_error_percentage" +] +``` + +*Managed by the Sourcegraph Services team.* + +
+Technical details + +Generated query for warning alert: `max((sum by (name, job_name) (rate(src_periodic_goroutine_errors_total{job=~".*gitserver.*"\}[5m])) / sum by (name, job_name) (rate(src_periodic_goroutine_total\{job=~".*gitserver.*"}[5m]) > 0) * 100) >= 5)`
diff --git a/docs/self-hosted/observability/dashboards.mdx b/docs/self-hosted/observability/dashboards.mdx index dce0c86d8..0e5a20306 100644 --- a/docs/self-hosted/observability/dashboards.mdx +++ b/docs/self-hosted/observability/dashboards.mdx @@ -4993,7 +4993,7 @@ max by (name) (container_memory_working_set_bytes{name=~"^(frontend|sourcegraph-

Memory (RSS)

-The total anonymous memory in use by the application, which includes Go stack and heap. This memory is is non-reclaimable, and high usage may trigger OOM kills. Note: the metric is named RSS because to match the cadvisor name, but `anonymous` is more accurate." +The total anonymous memory in use by the application, which includes Go stack and heap. This memory is non-reclaimable, and high usage may trigger OOM kills. Note: the metric is named RSS to match the cadvisor name, but "anonymous" is more accurate. Refer to the [alerts reference](alerts#frontend-memory_rss) for 1 alert related to this panel. @@ -6025,66 +6025,22 @@ Query:
-#### gitserver: cpu_throttling_time - -

Container CPU throttling time %

- -- A high value indicates that the container is spending too much time waiting for CPU cycles. - -Refer to the [alerts reference](alerts#gitserver-cpu_throttling_time) for 1 alert related to this panel. - -To see this panel, visit `/-/debug/grafana/d/gitserver/gitserver?viewPanel=100010` on your Sourcegraph instance. - -*Managed by the Sourcegraph Services team.* - -
-Technical details - -Query: - -``` -sum by (container_label_io_kubernetes_pod_name) ((rate(container_cpu_cfs_throttled_periods_total{container_label_io_kubernetes_container_name="gitserver", container_label_io_kubernetes_pod_name=~`${shard:regex}`}[5m]) / rate(container_cpu_cfs_periods_total{container_label_io_kubernetes_container_name="gitserver", container_label_io_kubernetes_pod_name=~`${shard:regex}`}[5m])) * 100) -``` -
- -
- -#### gitserver: cpu_usage_seconds - -

Cpu usage seconds

- -- This value should not exceed 75% of the CPU limit over a longer period of time. - - We cannot alert on this as we don`t know the resource allocation. - - - If this value is high for a longer time, consider increasing the CPU limit for the container. - -This panel has no related alerts. - -To see this panel, visit `/-/debug/grafana/d/gitserver/gitserver?viewPanel=100011` on your Sourcegraph instance. - -*Managed by the Sourcegraph Services team.* - -
-Technical details - -Query: - -``` -sum by (container_label_io_kubernetes_pod_name) (rate(container_cpu_usage_seconds_total{container_label_io_kubernetes_container_name="gitserver", container_label_io_kubernetes_pod_name=~`${shard:regex}`}[5m])) -``` -
+#### gitserver: high_memory_git_commands -
+

Number of git commands that exceeded the threshold for high memory usage

-#### gitserver: memory_major_page_faults +This graph tracks the number of git subcommands that gitserver ran that exceeded the threshold for high memory usage. +This graph in itself is not an alert, but it is used to learn about the memory usage of gitserver. -

Gitserver page faults

+If gitserver frequently serves requests where the status code is KILLED, this graph might help to correlate that +with the high memory usage. -The number of major page faults in a 5 minute window for gitserver. If this number increases significantly, it indicates that more git API calls need to load data from disk. There may not be enough memory to efficiently support the amount of API requests served concurrently. +This graph spiking is not a problem necessarily. But when subcommands or the whole gitserver service are getting +OOM killed and this graph shows spikes, increasing the memory might be useful. This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/gitserver/gitserver?viewPanel=100020` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/gitserver/gitserver?viewPanel=100010` on your Sourcegraph instance. *Managed by the Sourcegraph Services team.* @@ -6094,28 +6050,21 @@ To see this panel, visit `/-/debug/grafana/d/gitserver/gitserver?viewPanel=10002 Query: ``` -rate(container_memory_failures_total{failure_type="pgmajfault", name=~"^gitserver.*"}[5m]) +sort_desc(sum(sum_over_time(src_gitserver_exec_high_memory_usage_count{instance=~`${shard:regex}`}[2m])) by (cmd)) ```
-#### gitserver: high_memory_git_commands - -

Number of git commands that exceeded the threshold for high memory usage

- -This graph tracks the number of git subcommands that gitserver ran that exceeded the threshold for high memory usage. -This graph in itself is not an alert, but it is used to learn about the memory usage of gitserver. +#### gitserver: running_git_commands -If gitserver frequently serves requests where the status code is KILLED, this graph might help to correlate that -with the high memory usage. +

Git commands running on each gitserver instance

-This graph spiking is not a problem necessarily. But when subcommands or the whole gitserver service are getting -OOM killed and this graph shows spikes, increasing the memory might be useful. +A high value signals load. This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/gitserver/gitserver?viewPanel=100021` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/gitserver/gitserver?viewPanel=100011` on your Sourcegraph instance. *Managed by the Sourcegraph Services team.* @@ -6125,21 +6074,21 @@ To see this panel, visit `/-/debug/grafana/d/gitserver/gitserver?viewPanel=10002 Query: ``` -sort_desc(sum(sum_over_time(src_gitserver_exec_high_memory_usage_count{instance=~`${shard:regex}`}[2m])) by (cmd)) +sum by (instance, cmd) (src_gitserver_exec_running{instance=~`${shard:regex}`}) ```
-#### gitserver: running_git_commands +#### gitserver: git_commands_received -

Git commands running on each gitserver instance

+

Rate of git commands received

-A high value signals load. +per second rate per command This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/gitserver/gitserver?viewPanel=100030` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/gitserver/gitserver?viewPanel=100012` on your Sourcegraph instance. *Managed by the Sourcegraph Services team.* @@ -6149,21 +6098,22 @@ To see this panel, visit `/-/debug/grafana/d/gitserver/gitserver?viewPanel=10003 Query: ``` -sum by (instance, cmd) (src_gitserver_exec_running{instance=~`${shard:regex}`}) +sum by (cmd) (rate(src_gitserver_exec_duration_seconds_count{instance=~`${shard:regex}`}[5m])) ```
-#### gitserver: git_commands_received +#### gitserver: git_command_cpu_usage_seconds_by_scope -

Rate of git commands received

+

Git command CPU usage seconds by requester scope

-per second rate per command +CPU time consumed by git subcommands, grouped by propagated requester scope and CPU kind. +Use this to identify high-CPU callers and whether time is spent in user or system CPU. This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/gitserver/gitserver?viewPanel=100031` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/gitserver/gitserver?viewPanel=100013` on your Sourcegraph instance. *Managed by the Sourcegraph Services team.* @@ -6173,7 +6123,7 @@ To see this panel, visit `/-/debug/grafana/d/gitserver/gitserver?viewPanel=10003 Query: ``` -sum by (cmd) (rate(src_gitserver_exec_duration_seconds_count{instance=~`${shard:regex}`}[5m])) +topk(20, sum by (scope, kind) (rate(src_gitserver_exec_cpu_seconds_total{instance=~`${shard:regex}`}[5m]))) ``` @@ -6187,7 +6137,7 @@ sum by (cmd) (rate(src_gitserver_exec_duration_seconds_count{instance=~`${shard: Refer to the [alerts reference](alerts#gitserver-echo_command_duration_test) for 1 alert related to this panel. -To see this panel, visit `/-/debug/grafana/d/gitserver/gitserver?viewPanel=100040` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/gitserver/gitserver?viewPanel=100020` on your Sourcegraph instance. *Managed by the Sourcegraph Services team.* @@ -6213,7 +6163,7 @@ by recloning repositories, but this may take a while depending on repo size. Refer to the [alerts reference](alerts#gitserver-repo_corrupted) for 1 alert related to this panel. -To see this panel, visit `/-/debug/grafana/d/gitserver/gitserver?viewPanel=100041` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/gitserver/gitserver?viewPanel=100021` on your Sourcegraph instance. *Managed by the Sourcegraph Services team.* @@ -6235,7 +6185,7 @@ sum(rate(src_gitserver_repo_corrupted[5m])) Refer to the [alerts reference](alerts#gitserver-repository_clone_queue_size) for 1 alert related to this panel. -To see this panel, visit `/-/debug/grafana/d/gitserver/gitserver?viewPanel=100050` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/gitserver/gitserver?viewPanel=100030` on your Sourcegraph instance. *Managed by the Sourcegraph Services team.* @@ -6261,7 +6211,7 @@ It does not indicate any problems with the instance, but can give a good indicat This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/gitserver/gitserver?viewPanel=100051` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/gitserver/gitserver?viewPanel=100031` on your Sourcegraph instance. *Managed by the Sourcegraph Services team.* @@ -6277,15 +6227,26 @@ sum by (job, instance) (src_gitserver_client_concurrent_requests)
-### Git Server: Gitservice for internal cloning +### Git Server: Gitserver (CPU, Memory) -#### gitserver: gitservice_request_duration +Gitserver leverages memory mapping to optimize file reads: it is generally expected to consume all the memory provided to it, if it can. When it finds data that is not available in memory yet, this causes a 'page fault', and the data is loaded into memory from disk. -

95th percentile gitservice request duration per shard

+A trend to watch out for: when something in-application happens to take a lot of memory, and active file previously used nearly all remaining memory, then: -A high value means any internal service trying to clone a repo from gitserver is slowed down. +1. 'Memory (RSS)' goes up, due to in-application usage +2. 'Memory usage (Active file)' goes down, as file data held in memory is evicted +3. 'Page faults' go up, as less data is held in memory (and with that, IOPS, disk read throughput, ...) -This panel has no related alerts. +This can also happen without 'Memory (RSS)' increasing, if the provisioned memory is insufficent to start with. +A small degree of this is behaviour generally expected, but if it happens significantly or causes user-noticeable impact, it's likely gitserver could benefit from more memory. Look for more user-facing metrics to make a final determination on appropriate resource allocation. + +_See https://en.wikipedia.org/wiki/Memory-mapped_file and the related articles for more information about memory maps._ + +#### gitserver: cpu_usage_percentage + +

CPU usage

+ +Refer to the [alerts reference](alerts#gitserver-cpu_usage_percentage) for 1 alert related to this panel. To see this panel, visit `/-/debug/grafana/d/gitserver/gitserver?viewPanel=100100` on your Sourcegraph instance. @@ -6297,17 +6258,17 @@ To see this panel, visit `/-/debug/grafana/d/gitserver/gitserver?viewPanel=10010 Query: ``` -histogram_quantile(0.95, sum(rate(src_gitserver_gitservice_duration_seconds_bucket{instance=~`${shard:regex}`}[5m])) by (le, gitservice)) +cadvisor_container_cpu_usage_percentage_total{name=~"^gitserver.*"} ```
-#### gitserver: gitservice_request_rate +#### gitserver: memory_usage_percentage -

Gitservice request rate per shard

+

Memory usage percentage (total)

-Per shard gitservice request rate +An estimate for the active memory in use, which includes anonymous memory, file memory, and kernel memory. Some of this memory is reclaimable, so high usage does not necessarily indicate memory pressure. This panel has no related alerts. @@ -6321,17 +6282,17 @@ To see this panel, visit `/-/debug/grafana/d/gitserver/gitserver?viewPanel=10010 Query: ``` -sum(rate(src_gitserver_gitservice_duration_seconds_count{instance=~`${shard:regex}`}[5m])) by (gitservice) +cadvisor_container_memory_usage_percentage_total{name=~"^gitserver.*"} ```
-#### gitserver: gitservice_requests_running +#### gitserver: memory_working_set_bytes -

Gitservice requests running per shard

+

Memory usage bytes (total)

-Per shard gitservice requests running +An estimate for the active memory in use in bytes, which includes anonymous memory, file memory, and kernel memory. Some of this memory is reclaimable, so high usage does not necessarily indicate memory pressure. This panel has no related alerts. @@ -6345,23 +6306,21 @@ To see this panel, visit `/-/debug/grafana/d/gitserver/gitserver?viewPanel=10010 Query: ``` -sum(src_gitserver_gitservice_running{instance=~`${shard:regex}`}) by (gitservice) +max by (name) (container_memory_working_set_bytes{name=~"^gitserver.*"}) ```
-### Git Server: Gitserver cleanup jobs - -#### gitserver: janitor_tasks_total +#### gitserver: memory_rss -

Total housekeeping tasks by type and status

+

Memory (RSS)

-The rate of housekeeping tasks performed in repositories, broken down by task type and success/failure status +The total anonymous memory in use by the application, which includes Go stack and heap. This memory is non-reclaimable, and high usage may trigger OOM kills. Note: the metric is named RSS to match the cadvisor name, but "anonymous" is more accurate. -This panel has no related alerts. +Refer to the [alerts reference](alerts#gitserver-memory_rss) for 1 alert related to this panel. -To see this panel, visit `/-/debug/grafana/d/gitserver/gitserver?viewPanel=100200` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/gitserver/gitserver?viewPanel=100110` on your Sourcegraph instance. *Managed by the Sourcegraph Services team.* @@ -6371,21 +6330,21 @@ To see this panel, visit `/-/debug/grafana/d/gitserver/gitserver?viewPanel=10020 Query: ``` -sum(rate(src_gitserver_janitor_tasks_total{instance=~`${shard:regex}`}[5m])) by (housekeeping_task, status) +max(container_memory_rss{name=~"^gitserver.*"} / container_spec_memory_limit_bytes{name=~"^gitserver.*"}) by (name) * 100.0 ```
-#### gitserver: p90_janitor_tasks_latency_success_over_5m +#### gitserver: memory_total_active_file -

90th percentile latency of successful tasks by type over 5m

+

Memory usage (active file)

-The 90th percentile latency of successful housekeeping tasks, broken down by task type +This metric shows the total active file-backed memory currently in use by the application. Some of it may be reclaimable, so high usage does not necessarily indicate memory pressure. This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/gitserver/gitserver?viewPanel=100210` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/gitserver/gitserver?viewPanel=100111` on your Sourcegraph instance. *Managed by the Sourcegraph Services team.* @@ -6395,21 +6354,21 @@ To see this panel, visit `/-/debug/grafana/d/gitserver/gitserver?viewPanel=10021 Query: ``` -histogram_quantile(0.90, sum(rate(src_gitserver_janitor_tasks_latency_bucket{instance=~`${shard:regex}`, status="success"}[5m])) by (le, housekeeping_task)) +max(container_memory_total_active_file_bytes{name=~"^gitserver.*"} / container_spec_memory_limit_bytes{name=~"^gitserver.*"}) by (name) * 100.0 ```
-#### gitserver: p95_janitor_tasks_latency_success_over_5m +#### gitserver: memory_kernel_usage -

95th percentile latency of successful tasks by type over 5m

+

Memory usage (kernel)

-The 95th percentile latency of successful housekeeping tasks, broken down by task type +The kernel usage metric shows the amount of memory used by the kernel on behalf of the application. Some of it may be reclaimable, so high usage does not necessarily indicate memory pressure. This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/gitserver/gitserver?viewPanel=100211` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/gitserver/gitserver?viewPanel=100112` on your Sourcegraph instance. *Managed by the Sourcegraph Services team.* @@ -6419,21 +6378,21 @@ To see this panel, visit `/-/debug/grafana/d/gitserver/gitserver?viewPanel=10021 Query: ``` -histogram_quantile(0.95, sum(rate(src_gitserver_janitor_tasks_latency_bucket{instance=~`${shard:regex}`, status="success"}[5m])) by (le, housekeeping_task)) +max(container_memory_kernel_usage{name=~"^gitserver.*"} / container_spec_memory_limit_bytes{name=~"^gitserver.*"}) by (name) * 100.0 ```
-#### gitserver: p99_janitor_tasks_latency_success_over_5m +#### gitserver: memory_major_page_faults -

99th percentile latency of successful tasks by type over 5m

+

Gitserver page faults

-The 99th percentile latency of successful housekeeping tasks, broken down by task type +The number of major page faults in a 5 minute window for gitserver. If this number increases significantly, it indicates that more git API calls need to load data from disk. There may not be enough memory to efficiently support the amount of API requests served concurrently. This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/gitserver/gitserver?viewPanel=100212` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/gitserver/gitserver?viewPanel=100120` on your Sourcegraph instance. *Managed by the Sourcegraph Services team.* @@ -6443,21 +6402,21 @@ To see this panel, visit `/-/debug/grafana/d/gitserver/gitserver?viewPanel=10021 Query: ``` -histogram_quantile(0.99, sum(rate(src_gitserver_janitor_tasks_latency_bucket{instance=~`${shard:regex}`, status="success"}[5m])) by (le, housekeeping_task)) +rate(container_memory_failures_total{failure_type="pgmajfault", name=~"^gitserver.*"}[5m]) ```
-#### gitserver: p90_janitor_tasks_latency_failure_over_5m +#### gitserver: cpu_throttling_time -

90th percentile latency of failed tasks by type over 5m

+

Container CPU throttling time %

-The 90th percentile latency of failed housekeeping tasks, broken down by task type +A high value indicates that the container is spending too much time waiting for CPU cycles. -This panel has no related alerts. +Refer to the [alerts reference](alerts#gitserver-cpu_throttling_time) for 1 alert related to this panel. -To see this panel, visit `/-/debug/grafana/d/gitserver/gitserver?viewPanel=100220` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/gitserver/gitserver?viewPanel=100130` on your Sourcegraph instance. *Managed by the Sourcegraph Services team.* @@ -6467,21 +6426,23 @@ To see this panel, visit `/-/debug/grafana/d/gitserver/gitserver?viewPanel=10022 Query: ``` -histogram_quantile(0.90, sum(rate(src_gitserver_janitor_tasks_latency_bucket{instance=~`${shard:regex}`, status="failure"}[5m])) by (le, housekeeping_task)) +sum by (container_label_io_kubernetes_pod_name) ((rate(container_cpu_cfs_throttled_periods_total{container_label_io_kubernetes_container_name="gitserver", container_label_io_kubernetes_pod_name=~`${shard:regex}`}[5m]) / rate(container_cpu_cfs_periods_total{container_label_io_kubernetes_container_name="gitserver", container_label_io_kubernetes_pod_name=~`${shard:regex}`}[5m])) * 100) ```
-#### gitserver: p95_janitor_tasks_latency_failure_over_5m +#### gitserver: cpu_usage_seconds -

95th percentile latency of failed tasks by type over 5m

+

Cpu usage seconds

-The 95th percentile latency of failed housekeeping tasks, broken down by task type +- This value should not exceed 75% of the CPU limit over a longer period of time. +- We cannot alert on this as we don`t know the resource allocation. +- If this value is high for a longer time, consider increasing the CPU limit for the container. This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/gitserver/gitserver?viewPanel=100221` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/gitserver/gitserver?viewPanel=100131` on your Sourcegraph instance. *Managed by the Sourcegraph Services team.* @@ -6491,21 +6452,23 @@ To see this panel, visit `/-/debug/grafana/d/gitserver/gitserver?viewPanel=10022 Query: ``` -histogram_quantile(0.95, sum(rate(src_gitserver_janitor_tasks_latency_bucket{instance=~`${shard:regex}`, status="failure"}[5m])) by (le, housekeeping_task)) +sum by (container_label_io_kubernetes_pod_name) (rate(container_cpu_usage_seconds_total{container_label_io_kubernetes_container_name="gitserver", container_label_io_kubernetes_pod_name=~`${shard:regex}`}[5m])) ```
-#### gitserver: p99_janitor_tasks_latency_failure_over_5m +### Git Server: Gitservice for internal cloning -

99th percentile latency of failed tasks by type over 5m

+#### gitserver: gitservice_request_duration -The 99th percentile latency of failed housekeeping tasks, broken down by task type +

95th percentile gitservice request duration per shard

+ +A high value means any internal service trying to clone a repo from gitserver is slowed down. This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/gitserver/gitserver?viewPanel=100222` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/gitserver/gitserver?viewPanel=100200` on your Sourcegraph instance. *Managed by the Sourcegraph Services team.* @@ -6515,21 +6478,21 @@ To see this panel, visit `/-/debug/grafana/d/gitserver/gitserver?viewPanel=10022 Query: ``` -histogram_quantile(0.99, sum(rate(src_gitserver_janitor_tasks_latency_bucket{instance=~`${shard:regex}`, status="failure"}[5m])) by (le, housekeeping_task)) +histogram_quantile(0.95, sum(rate(src_gitserver_gitservice_duration_seconds_bucket{instance=~`${shard:regex}`}[5m])) by (le, gitservice)) ```
-#### gitserver: pruned_files_total_over_5m +#### gitserver: gitservice_request_rate -

Files pruned by type over 5m

+

Gitservice request rate per shard

-The rate of files pruned during cleanup, broken down by file type +Per shard gitservice request rate This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/gitserver/gitserver?viewPanel=100230` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/gitserver/gitserver?viewPanel=100201` on your Sourcegraph instance. *Managed by the Sourcegraph Services team.* @@ -6539,21 +6502,21 @@ To see this panel, visit `/-/debug/grafana/d/gitserver/gitserver?viewPanel=10023 Query: ``` -sum(rate(src_gitserver_janitor_pruned_files_total{instance=~`${shard:regex}`}[5m])) by (filetype) +sum(rate(src_gitserver_gitservice_duration_seconds_count{instance=~`${shard:regex}`}[5m])) by (gitservice) ```
-#### gitserver: data_structure_count_over_5m +#### gitserver: gitservice_requests_running -

Data structure counts over 5m

+

Gitservice requests running per shard

-The count distribution of various Git data structures in repositories +Per shard gitservice requests running This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/gitserver/gitserver?viewPanel=100240` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/gitserver/gitserver?viewPanel=100202` on your Sourcegraph instance. *Managed by the Sourcegraph Services team.* @@ -6563,21 +6526,23 @@ To see this panel, visit `/-/debug/grafana/d/gitserver/gitserver?viewPanel=10024 Query: ``` -histogram_quantile(0.95, sum(rate(src_gitserver_janitor_data_structure_count_bucket{instance=~`${shard:regex}`}[5m])) by (le, data_structure)) +sum(src_gitserver_gitservice_running{instance=~`${shard:regex}`}) by (gitservice) ```
-#### gitserver: janitor_data_structure_size +### Git Server: Gitserver cleanup jobs -

Data structure sizes

+#### gitserver: janitor_tasks_total -The size distribution of various Git data structures in repositories +

Total housekeeping tasks by type and status

+ +The rate of housekeeping tasks performed in repositories, broken down by task type and success/failure status This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/gitserver/gitserver?viewPanel=100250` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/gitserver/gitserver?viewPanel=100300` on your Sourcegraph instance. *Managed by the Sourcegraph Services team.* @@ -6587,21 +6552,21 @@ To see this panel, visit `/-/debug/grafana/d/gitserver/gitserver?viewPanel=10025 Query: ``` -histogram_quantile(0.95, sum(rate(src_gitserver_janitor_data_structure_size_bucket{instance=~`${shard:regex}`}[5m])) by (le, data_structure)) +sum(rate(src_gitserver_janitor_tasks_total{instance=~`${shard:regex}`}[5m])) by (housekeeping_task, status) ```
-#### gitserver: janitor_time_since_optimization +#### gitserver: p90_janitor_tasks_latency_success_over_5m -

Time since last optimization

+

90th percentile latency of successful tasks by type over 5m

-The time elapsed since last optimization of various Git data structures +The 90th percentile latency of successful housekeeping tasks, broken down by task type This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/gitserver/gitserver?viewPanel=100260` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/gitserver/gitserver?viewPanel=100310` on your Sourcegraph instance. *Managed by the Sourcegraph Services team.* @@ -6611,21 +6576,21 @@ To see this panel, visit `/-/debug/grafana/d/gitserver/gitserver?viewPanel=10026 Query: ``` -histogram_quantile(0.95, sum(rate(src_gitserver_janitor_time_since_last_optimization_seconds_bucket{instance=~`${shard:regex}`}[5m])) by (le, data_structure)) +histogram_quantile(0.90, sum(rate(src_gitserver_janitor_tasks_latency_bucket{instance=~`${shard:regex}`, status="success"}[5m])) by (le, housekeeping_task)) ```
-#### gitserver: janitor_data_structure_existence +#### gitserver: p95_janitor_tasks_latency_success_over_5m -

Data structure existence

+

95th percentile latency of successful tasks by type over 5m

-The rate at which data structures are reported to exist in repositories +The 95th percentile latency of successful housekeeping tasks, broken down by task type This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/gitserver/gitserver?viewPanel=100270` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/gitserver/gitserver?viewPanel=100311` on your Sourcegraph instance. *Managed by the Sourcegraph Services team.* @@ -6635,25 +6600,21 @@ To see this panel, visit `/-/debug/grafana/d/gitserver/gitserver?viewPanel=10027 Query: ``` -sum(rate(src_gitserver_janitor_data_structure_existence_total{instance=~`${shard:regex}`, exists="true"}[5m])) by (data_structure) +histogram_quantile(0.95, sum(rate(src_gitserver_janitor_tasks_latency_bucket{instance=~`${shard:regex}`, status="success"}[5m])) by (le, housekeeping_task)) ```
-### Git Server: Git Command Corruption Retries - -#### gitserver: git_command_retry_attempts_rate +#### gitserver: p99_janitor_tasks_latency_success_over_5m -

Rate of git command corruption retry attempts over 5m

+

99th percentile latency of successful tasks by type over 5m

-The rate of git command retry attempts due to corruption detection. -A non-zero value indicates that gitserver is detecting potential corruption and attempting retries. -This metric helps track how often the retry mechanism is triggered. +The 99th percentile latency of successful housekeeping tasks, broken down by task type -Refer to the [alerts reference](alerts#gitserver-git_command_retry_attempts_rate) for 1 alert related to this panel. +This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/gitserver/gitserver?viewPanel=100300` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/gitserver/gitserver?viewPanel=100312` on your Sourcegraph instance. *Managed by the Sourcegraph Services team.* @@ -6663,22 +6624,242 @@ To see this panel, visit `/-/debug/grafana/d/gitserver/gitserver?viewPanel=10030 Query: ``` -sum(rate(src_gitserver_retry_attempts_total{instance=~`${shard:regex}`}[5m])) +histogram_quantile(0.99, sum(rate(src_gitserver_janitor_tasks_latency_bucket{instance=~`${shard:regex}`, status="success"}[5m])) by (le, housekeeping_task)) ```
-#### gitserver: git_command_retry_success_rate +#### gitserver: p90_janitor_tasks_latency_failure_over_5m -

Rate of successful git command corruption retries over 5m

+

90th percentile latency of failed tasks by type over 5m

+ +The 90th percentile latency of failed housekeeping tasks, broken down by task type + +This panel has no related alerts. + +To see this panel, visit `/-/debug/grafana/d/gitserver/gitserver?viewPanel=100320` on your Sourcegraph instance. + +*Managed by the Sourcegraph Services team.* + +
+Technical details + +Query: + +``` +histogram_quantile(0.90, sum(rate(src_gitserver_janitor_tasks_latency_bucket{instance=~`${shard:regex}`, status="failure"}[5m])) by (le, housekeeping_task)) +``` +
+ +
+ +#### gitserver: p95_janitor_tasks_latency_failure_over_5m + +

95th percentile latency of failed tasks by type over 5m

+ +The 95th percentile latency of failed housekeeping tasks, broken down by task type + +This panel has no related alerts. + +To see this panel, visit `/-/debug/grafana/d/gitserver/gitserver?viewPanel=100321` on your Sourcegraph instance. + +*Managed by the Sourcegraph Services team.* + +
+Technical details + +Query: + +``` +histogram_quantile(0.95, sum(rate(src_gitserver_janitor_tasks_latency_bucket{instance=~`${shard:regex}`, status="failure"}[5m])) by (le, housekeeping_task)) +``` +
+ +
+ +#### gitserver: p99_janitor_tasks_latency_failure_over_5m + +

99th percentile latency of failed tasks by type over 5m

+ +The 99th percentile latency of failed housekeeping tasks, broken down by task type + +This panel has no related alerts. + +To see this panel, visit `/-/debug/grafana/d/gitserver/gitserver?viewPanel=100322` on your Sourcegraph instance. + +*Managed by the Sourcegraph Services team.* + +
+Technical details + +Query: + +``` +histogram_quantile(0.99, sum(rate(src_gitserver_janitor_tasks_latency_bucket{instance=~`${shard:regex}`, status="failure"}[5m])) by (le, housekeeping_task)) +``` +
+ +
+ +#### gitserver: pruned_files_total_over_5m + +

Files pruned by type over 5m

+ +The rate of files pruned during cleanup, broken down by file type + +This panel has no related alerts. + +To see this panel, visit `/-/debug/grafana/d/gitserver/gitserver?viewPanel=100330` on your Sourcegraph instance. + +*Managed by the Sourcegraph Services team.* + +
+Technical details + +Query: + +``` +sum(rate(src_gitserver_janitor_pruned_files_total{instance=~`${shard:regex}`}[5m])) by (filetype) +``` +
+ +
+ +#### gitserver: data_structure_count_over_5m + +

Data structure counts over 5m

+ +The count distribution of various Git data structures in repositories + +This panel has no related alerts. + +To see this panel, visit `/-/debug/grafana/d/gitserver/gitserver?viewPanel=100340` on your Sourcegraph instance. + +*Managed by the Sourcegraph Services team.* + +
+Technical details + +Query: + +``` +histogram_quantile(0.95, sum(rate(src_gitserver_janitor_data_structure_count_bucket{instance=~`${shard:regex}`}[5m])) by (le, data_structure)) +``` +
+ +
+ +#### gitserver: janitor_data_structure_size + +

Data structure sizes

+ +The size distribution of various Git data structures in repositories + +This panel has no related alerts. + +To see this panel, visit `/-/debug/grafana/d/gitserver/gitserver?viewPanel=100350` on your Sourcegraph instance. + +*Managed by the Sourcegraph Services team.* + +
+Technical details + +Query: + +``` +histogram_quantile(0.95, sum(rate(src_gitserver_janitor_data_structure_size_bucket{instance=~`${shard:regex}`}[5m])) by (le, data_structure)) +``` +
+ +
+ +#### gitserver: janitor_time_since_optimization + +

Time since last optimization

+ +The time elapsed since last optimization of various Git data structures + +This panel has no related alerts. + +To see this panel, visit `/-/debug/grafana/d/gitserver/gitserver?viewPanel=100360` on your Sourcegraph instance. + +*Managed by the Sourcegraph Services team.* + +
+Technical details + +Query: + +``` +histogram_quantile(0.95, sum(rate(src_gitserver_janitor_time_since_last_optimization_seconds_bucket{instance=~`${shard:regex}`}[5m])) by (le, data_structure)) +``` +
+ +
+ +#### gitserver: janitor_data_structure_existence + +

Data structure existence

+ +The rate at which data structures are reported to exist in repositories + +This panel has no related alerts. + +To see this panel, visit `/-/debug/grafana/d/gitserver/gitserver?viewPanel=100370` on your Sourcegraph instance. + +*Managed by the Sourcegraph Services team.* + +
+Technical details + +Query: + +``` +sum(rate(src_gitserver_janitor_data_structure_existence_total{instance=~`${shard:regex}`, exists="true"}[5m])) by (data_structure) +``` +
+ +
+ +### Git Server: Git Command Corruption Retries + +#### gitserver: git_command_retry_attempts_rate + +

Rate of git command corruption retry attempts over 5m

+ +The rate of git command retry attempts due to corruption detection. +A non-zero value indicates that gitserver is detecting potential corruption and attempting retries. +This metric helps track how often the retry mechanism is triggered. + +Refer to the [alerts reference](alerts#gitserver-git_command_retry_attempts_rate) for 1 alert related to this panel. + +To see this panel, visit `/-/debug/grafana/d/gitserver/gitserver?viewPanel=100400` on your Sourcegraph instance. + +*Managed by the Sourcegraph Services team.* + +
+Technical details + +Query: + +``` +sum(rate(src_gitserver_retry_attempts_total{instance=~`${shard:regex}`}[5m])) +``` +
+ +
+ +#### gitserver: git_command_retry_success_rate + +

Rate of successful git command corruption retries over 5m

The rate of git commands that succeeded after retry attempts. This indicates how effective the retry mechanism is at resolving transient corruption issues. This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/gitserver/gitserver?viewPanel=100301` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/gitserver/gitserver?viewPanel=100401` on your Sourcegraph instance. *Managed by the Sourcegraph Services team.* @@ -6703,7 +6884,7 @@ These failures will result in repository corruption marking and potential reclon This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/gitserver/gitserver?viewPanel=100310` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/gitserver/gitserver?viewPanel=100410` on your Sourcegraph instance. *Managed by the Sourcegraph Services team.* @@ -6729,7 +6910,7 @@ Common causes include network issues, permission changes, or concurrent reposito This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/gitserver/gitserver?viewPanel=100311` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/gitserver/gitserver?viewPanel=100411` on your Sourcegraph instance. *Managed by the Sourcegraph Services team.* @@ -6755,7 +6936,7 @@ A low ratio may indicate persistent corruption issues requiring investigation. This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/gitserver/gitserver?viewPanel=100312` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/gitserver/gitserver?viewPanel=100412` on your Sourcegraph instance. *Managed by the Sourcegraph Services team.* @@ -6782,7 +6963,7 @@ A value of 0 indicates the routine isn`t running currently, it awaits it`s next This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/gitserver/gitserver?viewPanel=100400` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/gitserver/gitserver?viewPanel=100500` on your Sourcegraph instance. *Managed by the Sourcegraph Platform team.* @@ -6807,7 +6988,7 @@ A low or zero value could indicate that a routine is stalled or encountering err This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/gitserver/gitserver?viewPanel=100401` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/gitserver/gitserver?viewPanel=100501` on your Sourcegraph instance. *Managed by the Sourcegraph Platform team.* @@ -6832,7 +7013,7 @@ A sustained high error rate may indicate a problem with the routine`s configurat Refer to the [alerts reference](alerts#gitserver-goroutine_error_rate) for 1 alert related to this panel. -To see this panel, visit `/-/debug/grafana/d/gitserver/gitserver?viewPanel=100410` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/gitserver/gitserver?viewPanel=100510` on your Sourcegraph instance. *Managed by the Sourcegraph Services team.* @@ -6857,7 +7038,7 @@ A value above 5% indicates that a significant portion of routine executions are Refer to the [alerts reference](alerts#gitserver-goroutine_error_percentage) for 1 alert related to this panel. -To see this panel, visit `/-/debug/grafana/d/gitserver/gitserver?viewPanel=100411` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/gitserver/gitserver?viewPanel=100511` on your Sourcegraph instance. *Managed by the Sourcegraph Services team.* @@ -6882,7 +7063,7 @@ Longer durations might indicate increased load or processing time. This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/gitserver/gitserver?viewPanel=100420` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/gitserver/gitserver?viewPanel=100520` on your Sourcegraph instance. *Managed by the Sourcegraph Platform team.* @@ -6907,7 +7088,7 @@ This represents how long a complete loop iteration takes before sleeping for the This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/gitserver/gitserver?viewPanel=100421` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/gitserver/gitserver?viewPanel=100521` on your Sourcegraph instance. *Managed by the Sourcegraph Platform team.* @@ -6932,7 +7113,7 @@ Higher values indicate that tenant processing is taking longer and may affect ov This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/gitserver/gitserver?viewPanel=100430` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/gitserver/gitserver?viewPanel=100530` on your Sourcegraph instance. *Managed by the Sourcegraph Platform team.* @@ -6957,7 +7138,7 @@ Consistently high values might indicate problematic tenants or inefficient proce This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/gitserver/gitserver?viewPanel=100431` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/gitserver/gitserver?viewPanel=100531` on your Sourcegraph instance. *Managed by the Sourcegraph Platform team.* @@ -6982,7 +7163,7 @@ Unexpected changes can indicate tenant configuration issues or scaling events. This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/gitserver/gitserver?viewPanel=100440` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/gitserver/gitserver?viewPanel=100540` on your Sourcegraph instance. *Managed by the Sourcegraph Platform team.* @@ -7007,7 +7188,7 @@ A healthy routine should maintain a consistent processing rate. This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/gitserver/gitserver?viewPanel=100441` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/gitserver/gitserver?viewPanel=100541` on your Sourcegraph instance. *Managed by the Sourcegraph Platform team.* @@ -7032,7 +7213,7 @@ Consistent errors indicate problems with specific tenants. This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/gitserver/gitserver?viewPanel=100450` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/gitserver/gitserver?viewPanel=100550` on your Sourcegraph instance. *Managed by the Sourcegraph Platform team.* @@ -7057,7 +7238,7 @@ Values above 5% indicate significant tenant processing problems. This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/gitserver/gitserver?viewPanel=100451` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/gitserver/gitserver?viewPanel=100551` on your Sourcegraph instance. *Managed by the Sourcegraph Platform team.* @@ -7073,15 +7254,17 @@ Query:
-### Git Server: Gitserver (CPU, Memory) +### Git Server: Network I/O pod metrics (only available on Kubernetes) -#### gitserver: cpu_usage_percentage +#### gitserver: network_sent_bytes_aggregate -

CPU usage

+

Transmission rate over 5m (aggregate)

-Refer to the [alerts reference](alerts#gitserver-cpu_usage_percentage) for 1 alert related to this panel. +The rate of bytes sent over the network across all pods -To see this panel, visit `/-/debug/grafana/d/gitserver/gitserver?viewPanel=100500` on your Sourcegraph instance. +This panel has no related alerts. + +To see this panel, visit `/-/debug/grafana/d/gitserver/gitserver?viewPanel=100600` on your Sourcegraph instance. *Managed by the Sourcegraph Services team.* @@ -7091,21 +7274,21 @@ To see this panel, visit `/-/debug/grafana/d/gitserver/gitserver?viewPanel=10050 Query: ``` -cadvisor_container_cpu_usage_percentage_total{name=~"^gitserver.*"} +sum(rate(container_network_transmit_bytes_total{container_label_io_kubernetes_pod_name=~`.*gitserver.*`}[5m])) ```
-#### gitserver: memory_usage_percentage +#### gitserver: network_received_packets_per_instance -

Memory usage percentage (total)

+

Transmission rate over 5m (per instance)

-An estimate for the active memory in use, which includes anonymous memory, file memory, and kernel memory. Some of this memory is reclaimable, so high usage does not necessarily indicate memory pressure. +The amount of bytes sent over the network by individual pods This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/gitserver/gitserver?viewPanel=100501` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/gitserver/gitserver?viewPanel=100601` on your Sourcegraph instance. *Managed by the Sourcegraph Services team.* @@ -7115,161 +7298,15 @@ To see this panel, visit `/-/debug/grafana/d/gitserver/gitserver?viewPanel=10050 Query: ``` -cadvisor_container_memory_usage_percentage_total{name=~"^gitserver.*"} +sum by (container_label_io_kubernetes_pod_name) (rate(container_network_transmit_bytes_total{container_label_io_kubernetes_pod_name=~`${instance:regex}`}[5m])) ```
-#### gitserver: memory_working_set_bytes +#### gitserver: network_received_bytes_aggregate -

Memory usage bytes (total)

- -An estimate for the active memory in use in bytes, which includes anonymous memory, file memory, and kernel memory. Some of this memory is reclaimable, so high usage does not necessarily indicate memory pressure. - -This panel has no related alerts. - -To see this panel, visit `/-/debug/grafana/d/gitserver/gitserver?viewPanel=100502` on your Sourcegraph instance. - -*Managed by the Sourcegraph Services team.* - -
-Technical details - -Query: - -``` -max by (name) (container_memory_working_set_bytes{name=~"^gitserver.*"}) -``` -
- -
- -#### gitserver: memory_rss - -

Memory (RSS)

- -The total anonymous memory in use by the application, which includes Go stack and heap. This memory is is non-reclaimable, and high usage may trigger OOM kills. Note: the metric is named RSS because to match the cadvisor name, but `anonymous` is more accurate." - -Refer to the [alerts reference](alerts#gitserver-memory_rss) for 1 alert related to this panel. - -To see this panel, visit `/-/debug/grafana/d/gitserver/gitserver?viewPanel=100510` on your Sourcegraph instance. - -*Managed by the Sourcegraph Services team.* - -
-Technical details - -Query: - -``` -max(container_memory_rss{name=~"^gitserver.*"} / container_spec_memory_limit_bytes{name=~"^gitserver.*"}) by (name) * 100.0 -``` -
- -
- -#### gitserver: memory_total_active_file - -

Memory usage (active file)

- -This metric shows the total active file-backed memory currently in use by the application. Some of it may be reclaimable, so high usage does not necessarily indicate memory pressure. - -This panel has no related alerts. - -To see this panel, visit `/-/debug/grafana/d/gitserver/gitserver?viewPanel=100511` on your Sourcegraph instance. - -*Managed by the Sourcegraph Services team.* - -
-Technical details - -Query: - -``` -max(container_memory_total_active_file_bytes{name=~"^gitserver.*"} / container_spec_memory_limit_bytes{name=~"^gitserver.*"}) by (name) * 100.0 -``` -
- -
- -#### gitserver: memory_kernel_usage - -

Memory usage (kernel)

- -The kernel usage metric shows the amount of memory used by the kernel on behalf of the application. Some of it may be reclaimable, so high usage does not necessarily indicate memory pressure. - -This panel has no related alerts. - -To see this panel, visit `/-/debug/grafana/d/gitserver/gitserver?viewPanel=100512` on your Sourcegraph instance. - -*Managed by the Sourcegraph Services team.* - -
-Technical details - -Query: - -``` -max(container_memory_kernel_usage{name=~"^gitserver.*"} / container_spec_memory_limit_bytes{name=~"^gitserver.*"}) by (name) * 100.0 -``` -
- -
- -### Git Server: Network I/O pod metrics (only available on Kubernetes) - -#### gitserver: network_sent_bytes_aggregate - -

Transmission rate over 5m (aggregate)

- -The rate of bytes sent over the network across all pods - -This panel has no related alerts. - -To see this panel, visit `/-/debug/grafana/d/gitserver/gitserver?viewPanel=100600` on your Sourcegraph instance. - -*Managed by the Sourcegraph Services team.* - -
-Technical details - -Query: - -``` -sum(rate(container_network_transmit_bytes_total{container_label_io_kubernetes_pod_name=~`.*gitserver.*`}[5m])) -``` -
- -
- -#### gitserver: network_received_packets_per_instance - -

Transmission rate over 5m (per instance)

- -The amount of bytes sent over the network by individual pods - -This panel has no related alerts. - -To see this panel, visit `/-/debug/grafana/d/gitserver/gitserver?viewPanel=100601` on your Sourcegraph instance. - -*Managed by the Sourcegraph Services team.* - -
-Technical details - -Query: - -``` -sum by (container_label_io_kubernetes_pod_name) (rate(container_network_transmit_bytes_total{container_label_io_kubernetes_pod_name=~`${instance:regex}`}[5m])) -``` -
- -
- -#### gitserver: network_received_bytes_aggregate - -

Receive rate over 5m (aggregate)

+

Receive rate over 5m (aggregate)

The amount of bytes received from the network across pods @@ -17584,7 +17621,7 @@ max by (name) (container_memory_working_set_bytes{name=~"^worker.*"})

Memory (RSS)

-The total anonymous memory in use by the application, which includes Go stack and heap. This memory is is non-reclaimable, and high usage may trigger OOM kills. Note: the metric is named RSS because to match the cadvisor name, but `anonymous` is more accurate." +The total anonymous memory in use by the application, which includes Go stack and heap. This memory is non-reclaimable, and high usage may trigger OOM kills. Note: the metric is named RSS to match the cadvisor name, but "anonymous" is more accurate. Refer to the [alerts reference](alerts#worker-memory_rss) for 1 alert related to this panel. @@ -21287,7 +21324,7 @@ max by (name) (container_memory_working_set_bytes{name=~"^searcher.*"})

Memory (RSS)

-The total anonymous memory in use by the application, which includes Go stack and heap. This memory is is non-reclaimable, and high usage may trigger OOM kills. Note: the metric is named RSS because to match the cadvisor name, but `anonymous` is more accurate." +The total anonymous memory in use by the application, which includes Go stack and heap. This memory is non-reclaimable, and high usage may trigger OOM kills. Note: the metric is named RSS to match the cadvisor name, but "anonymous" is more accurate. Refer to the [alerts reference](alerts#searcher-memory_rss) for 1 alert related to this panel. @@ -21815,7 +21852,7 @@ max by (name) (container_memory_working_set_bytes{name=~"^syntect-server.*"})

Memory (RSS)

-The total anonymous memory in use by the application, which includes Go stack and heap. This memory is is non-reclaimable, and high usage may trigger OOM kills. Note: the metric is named RSS because to match the cadvisor name, but `anonymous` is more accurate." +The total anonymous memory in use by the application, which includes Go stack and heap. This memory is non-reclaimable, and high usage may trigger OOM kills. Note: the metric is named RSS to match the cadvisor name, but "anonymous" is more accurate. Refer to the [alerts reference](alerts#syntect-server-memory_rss) for 1 alert related to this panel. @@ -22369,7 +22406,7 @@ max by (name) (container_memory_working_set_bytes{name=~"^zoekt-indexserver.*"})

Memory (RSS)

-The total anonymous memory in use by the application, which includes Go stack and heap. This memory is is non-reclaimable, and high usage may trigger OOM kills. Note: the metric is named RSS because to match the cadvisor name, but `anonymous` is more accurate." +The total anonymous memory in use by the application, which includes Go stack and heap. This memory is non-reclaimable, and high usage may trigger OOM kills. Note: the metric is named RSS to match the cadvisor name, but "anonymous" is more accurate. Refer to the [alerts reference](alerts#zoekt-memory_rss) for 1 alert related to this panel. @@ -22439,6 +22476,19 @@ max(container_memory_kernel_usage{name=~"^zoekt-indexserver.*"} / container_spec ### Zoekt: Zoekt-webserver (CPU, Memory) +Zoekt web server leverages memory mapping to optimize file reads: it is generally expected to consume all the memory provided to it, if it can. When it finds data that is not available in memory yet, this causes a 'page fault', and the data is loaded into memory from disk. + +A trend to watch out for: when something in-application happens to take a lot of memory, and active file previously used nearly all remaining memory, then: + +1. 'Memory (RSS)' goes up, due to in-application usage +2. 'Memory usage (Active file)' goes down, as file data held in memory is evicted +3. 'Page faults' go up, as less data is held in memory (and with that, IOPS, disk read throughput, ...) + +This can also happen without 'Memory (RSS)' increasing, if the provisioned memory is insufficent to start with. +A small degree of this is behaviour generally expected, but if it happens significantly or causes user-noticeable impact, it's likely zoekt web server could benefit from more memory. Look for more user-facing metrics to make a final determination on appropriate resource allocation. + +_See https://en.wikipedia.org/wiki/Memory-mapped_file and the related articles for more information about memory maps._ + #### zoekt: cpu_usage_percentage

CPU usage

@@ -22513,7 +22563,7 @@ max by (name) (container_memory_working_set_bytes{name=~"^zoekt-webserver.*"})

Memory (RSS)

-The total anonymous memory in use by the application, which includes Go stack and heap. This memory is is non-reclaimable, and high usage may trigger OOM kills. Note: the metric is named RSS because to match the cadvisor name, but `anonymous` is more accurate." +The total anonymous memory in use by the application, which includes Go stack and heap. This memory is non-reclaimable, and high usage may trigger OOM kills. Note: the metric is named RSS to match the cadvisor name, but "anonymous" is more accurate. Refer to the [alerts reference](alerts#zoekt-memory_rss) for 1 alert related to this panel. @@ -31886,1547 +31936,7 @@ This panel has no related alerts. To see this panel, visit `/-/debug/grafana/d/codeintel-uploads/codeintel-uploads?viewPanel=101011` on your Sourcegraph instance. -*Managed by the Sourcegraph Code Understanding team.* - -
-Technical details - -Query: - -``` -histogram_quantile(0.99, sum by (le,op)(rate(src_codeintel_uploads_hard_deleter_duration_seconds_bucket{job=~"^${source:regex}.*"}[5m]))) -``` -
- -
- -#### codeintel-uploads: codeintel_uploads_hard_deleter_errors_total - -

Job invocation operation errors every 5m

- -This panel has no related alerts. - -To see this panel, visit `/-/debug/grafana/d/codeintel-uploads/codeintel-uploads?viewPanel=101012` on your Sourcegraph instance. - -*Managed by the Sourcegraph Code Understanding team.* - -
-Technical details - -Query: - -``` -sum by (op)(increase(src_codeintel_uploads_hard_deleter_errors_total{job=~"^${source:regex}.*"}[5m])) -``` -
- -
- -#### codeintel-uploads: codeintel_uploads_hard_deleter_error_rate - -

Job invocation operation error rate over 5m

- -This panel has no related alerts. - -To see this panel, visit `/-/debug/grafana/d/codeintel-uploads/codeintel-uploads?viewPanel=101013` on your Sourcegraph instance. - -*Managed by the Sourcegraph Code Understanding team.* - -
-Technical details - -Query: - -``` -sum by (op)(increase(src_codeintel_uploads_hard_deleter_errors_total{job=~"^${source:regex}.*"}[5m])) / (sum by (op)(increase(src_codeintel_uploads_hard_deleter_total{job=~"^${source:regex}.*"}[5m])) + sum by (op)(increase(src_codeintel_uploads_hard_deleter_errors_total{job=~"^${source:regex}.*"}[5m]))) * 100 -``` -
- -
- -### Code Intelligence > Uploads: Codeintel: Uploads > Janitor task > Codeintel uploads janitor audit logs - -#### codeintel-uploads: codeintel_uploads_janitor_audit_logs_records_scanned_total - -

Records scanned every 5m

- -The number of candidate records considered for cleanup. - -This panel has no related alerts. - -To see this panel, visit `/-/debug/grafana/d/codeintel-uploads/codeintel-uploads?viewPanel=101100` on your Sourcegraph instance. - -*Managed by the Sourcegraph Code Understanding team.* - -
-Technical details - -Query: - -``` -sum(increase(src_codeintel_uploads_janitor_audit_logs_records_scanned_total{job=~"^${source:regex}.*"}[5m])) -``` -
- -
- -#### codeintel-uploads: codeintel_uploads_janitor_audit_logs_records_altered_total - -

Records altered every 5m

- -The number of candidate records altered as part of cleanup. - -This panel has no related alerts. - -To see this panel, visit `/-/debug/grafana/d/codeintel-uploads/codeintel-uploads?viewPanel=101101` on your Sourcegraph instance. - -*Managed by the Sourcegraph Code Understanding team.* - -
-Technical details - -Query: - -``` -sum(increase(src_codeintel_uploads_janitor_audit_logs_records_altered_total{job=~"^${source:regex}.*"}[5m])) -``` -
- -
- -#### codeintel-uploads: codeintel_uploads_janitor_audit_logs_total - -

Job invocation operations every 5m

- -This panel has no related alerts. - -To see this panel, visit `/-/debug/grafana/d/codeintel-uploads/codeintel-uploads?viewPanel=101110` on your Sourcegraph instance. - -*Managed by the Sourcegraph Code Understanding team.* - -
-Technical details - -Query: - -``` -sum by (op)(increase(src_codeintel_uploads_janitor_audit_logs_total{job=~"^${source:regex}.*"}[5m])) -``` -
- -
- -#### codeintel-uploads: codeintel_uploads_janitor_audit_logs_99th_percentile_duration - -

99th percentile successful job invocation operation duration over 5m

- -This panel has no related alerts. - -To see this panel, visit `/-/debug/grafana/d/codeintel-uploads/codeintel-uploads?viewPanel=101111` on your Sourcegraph instance. - -*Managed by the Sourcegraph Code Understanding team.* - -
-Technical details - -Query: - -``` -histogram_quantile(0.99, sum by (le,op)(rate(src_codeintel_uploads_janitor_audit_logs_duration_seconds_bucket{job=~"^${source:regex}.*"}[5m]))) -``` -
- -
- -#### codeintel-uploads: codeintel_uploads_janitor_audit_logs_errors_total - -

Job invocation operation errors every 5m

- -This panel has no related alerts. - -To see this panel, visit `/-/debug/grafana/d/codeintel-uploads/codeintel-uploads?viewPanel=101112` on your Sourcegraph instance. - -*Managed by the Sourcegraph Code Understanding team.* - -
-Technical details - -Query: - -``` -sum by (op)(increase(src_codeintel_uploads_janitor_audit_logs_errors_total{job=~"^${source:regex}.*"}[5m])) -``` -
- -
- -#### codeintel-uploads: codeintel_uploads_janitor_audit_logs_error_rate - -

Job invocation operation error rate over 5m

- -This panel has no related alerts. - -To see this panel, visit `/-/debug/grafana/d/codeintel-uploads/codeintel-uploads?viewPanel=101113` on your Sourcegraph instance. - -*Managed by the Sourcegraph Code Understanding team.* - -
-Technical details - -Query: - -``` -sum by (op)(increase(src_codeintel_uploads_janitor_audit_logs_errors_total{job=~"^${source:regex}.*"}[5m])) / (sum by (op)(increase(src_codeintel_uploads_janitor_audit_logs_total{job=~"^${source:regex}.*"}[5m])) + sum by (op)(increase(src_codeintel_uploads_janitor_audit_logs_errors_total{job=~"^${source:regex}.*"}[5m]))) * 100 -``` -
- -
- -### Code Intelligence > Uploads: Codeintel: Uploads > Janitor task > Codeintel uploads janitor scip documents - -#### codeintel-uploads: codeintel_uploads_janitor_scip_documents_records_scanned_total - -

Records scanned every 5m

- -The number of candidate records considered for cleanup. - -This panel has no related alerts. - -To see this panel, visit `/-/debug/grafana/d/codeintel-uploads/codeintel-uploads?viewPanel=101200` on your Sourcegraph instance. - -*Managed by the Sourcegraph Code Understanding team.* - -
-Technical details - -Query: - -``` -sum(increase(src_codeintel_uploads_janitor_scip_documents_records_scanned_total{job=~"^${source:regex}.*"}[5m])) -``` -
- -
- -#### codeintel-uploads: codeintel_uploads_janitor_scip_documents_records_altered_total - -

Records altered every 5m

- -The number of candidate records altered as part of cleanup. - -This panel has no related alerts. - -To see this panel, visit `/-/debug/grafana/d/codeintel-uploads/codeintel-uploads?viewPanel=101201` on your Sourcegraph instance. - -*Managed by the Sourcegraph Code Understanding team.* - -
-Technical details - -Query: - -``` -sum(increase(src_codeintel_uploads_janitor_scip_documents_records_altered_total{job=~"^${source:regex}.*"}[5m])) -``` -
- -
- -#### codeintel-uploads: codeintel_uploads_janitor_scip_documents_total - -

Job invocation operations every 5m

- -This panel has no related alerts. - -To see this panel, visit `/-/debug/grafana/d/codeintel-uploads/codeintel-uploads?viewPanel=101210` on your Sourcegraph instance. - -*Managed by the Sourcegraph Code Understanding team.* - -
-Technical details - -Query: - -``` -sum by (op)(increase(src_codeintel_uploads_janitor_scip_documents_total{job=~"^${source:regex}.*"}[5m])) -``` -
- -
- -#### codeintel-uploads: codeintel_uploads_janitor_scip_documents_99th_percentile_duration - -

99th percentile successful job invocation operation duration over 5m

- -This panel has no related alerts. - -To see this panel, visit `/-/debug/grafana/d/codeintel-uploads/codeintel-uploads?viewPanel=101211` on your Sourcegraph instance. - -*Managed by the Sourcegraph Code Understanding team.* - -
-Technical details - -Query: - -``` -histogram_quantile(0.99, sum by (le,op)(rate(src_codeintel_uploads_janitor_scip_documents_duration_seconds_bucket{job=~"^${source:regex}.*"}[5m]))) -``` -
- -
- -#### codeintel-uploads: codeintel_uploads_janitor_scip_documents_errors_total - -

Job invocation operation errors every 5m

- -This panel has no related alerts. - -To see this panel, visit `/-/debug/grafana/d/codeintel-uploads/codeintel-uploads?viewPanel=101212` on your Sourcegraph instance. - -*Managed by the Sourcegraph Code Understanding team.* - -
-Technical details - -Query: - -``` -sum by (op)(increase(src_codeintel_uploads_janitor_scip_documents_errors_total{job=~"^${source:regex}.*"}[5m])) -``` -
- -
- -#### codeintel-uploads: codeintel_uploads_janitor_scip_documents_error_rate - -

Job invocation operation error rate over 5m

- -This panel has no related alerts. - -To see this panel, visit `/-/debug/grafana/d/codeintel-uploads/codeintel-uploads?viewPanel=101213` on your Sourcegraph instance. - -*Managed by the Sourcegraph Code Understanding team.* - -
-Technical details - -Query: - -``` -sum by (op)(increase(src_codeintel_uploads_janitor_scip_documents_errors_total{job=~"^${source:regex}.*"}[5m])) / (sum by (op)(increase(src_codeintel_uploads_janitor_scip_documents_total{job=~"^${source:regex}.*"}[5m])) + sum by (op)(increase(src_codeintel_uploads_janitor_scip_documents_errors_total{job=~"^${source:regex}.*"}[5m]))) * 100 -``` -
- -
- -### Code Intelligence > Uploads: Codeintel: Uploads > Reconciler task > Codeintel uploads reconciler scip metadata - -#### codeintel-uploads: codeintel_uploads_reconciler_scip_metadata_records_scanned_total - -

Records scanned every 5m

- -The number of candidate records considered for cleanup. - -This panel has no related alerts. - -To see this panel, visit `/-/debug/grafana/d/codeintel-uploads/codeintel-uploads?viewPanel=101300` on your Sourcegraph instance. - -*Managed by the Sourcegraph Code Understanding team.* - -
-Technical details - -Query: - -``` -sum(increase(src_codeintel_uploads_reconciler_scip_metadata_records_scanned_total{job=~"^${source:regex}.*"}[5m])) -``` -
- -
- -#### codeintel-uploads: codeintel_uploads_reconciler_scip_metadata_records_altered_total - -

Records altered every 5m

- -The number of candidate records altered as part of cleanup. - -This panel has no related alerts. - -To see this panel, visit `/-/debug/grafana/d/codeintel-uploads/codeintel-uploads?viewPanel=101301` on your Sourcegraph instance. - -*Managed by the Sourcegraph Code Understanding team.* - -
-Technical details - -Query: - -``` -sum(increase(src_codeintel_uploads_reconciler_scip_metadata_records_altered_total{job=~"^${source:regex}.*"}[5m])) -``` -
- -
- -#### codeintel-uploads: codeintel_uploads_reconciler_scip_metadata_total - -

Job invocation operations every 5m

- -This panel has no related alerts. - -To see this panel, visit `/-/debug/grafana/d/codeintel-uploads/codeintel-uploads?viewPanel=101310` on your Sourcegraph instance. - -*Managed by the Sourcegraph Code Understanding team.* - -
-Technical details - -Query: - -``` -sum by (op)(increase(src_codeintel_uploads_reconciler_scip_metadata_total{job=~"^${source:regex}.*"}[5m])) -``` -
- -
- -#### codeintel-uploads: codeintel_uploads_reconciler_scip_metadata_99th_percentile_duration - -

99th percentile successful job invocation operation duration over 5m

- -This panel has no related alerts. - -To see this panel, visit `/-/debug/grafana/d/codeintel-uploads/codeintel-uploads?viewPanel=101311` on your Sourcegraph instance. - -*Managed by the Sourcegraph Code Understanding team.* - -
-Technical details - -Query: - -``` -histogram_quantile(0.99, sum by (le,op)(rate(src_codeintel_uploads_reconciler_scip_metadata_duration_seconds_bucket{job=~"^${source:regex}.*"}[5m]))) -``` -
- -
- -#### codeintel-uploads: codeintel_uploads_reconciler_scip_metadata_errors_total - -

Job invocation operation errors every 5m

- -This panel has no related alerts. - -To see this panel, visit `/-/debug/grafana/d/codeintel-uploads/codeintel-uploads?viewPanel=101312` on your Sourcegraph instance. - -*Managed by the Sourcegraph Code Understanding team.* - -
-Technical details - -Query: - -``` -sum by (op)(increase(src_codeintel_uploads_reconciler_scip_metadata_errors_total{job=~"^${source:regex}.*"}[5m])) -``` -
- -
- -#### codeintel-uploads: codeintel_uploads_reconciler_scip_metadata_error_rate - -

Job invocation operation error rate over 5m

- -This panel has no related alerts. - -To see this panel, visit `/-/debug/grafana/d/codeintel-uploads/codeintel-uploads?viewPanel=101313` on your Sourcegraph instance. - -*Managed by the Sourcegraph Code Understanding team.* - -
-Technical details - -Query: - -``` -sum by (op)(increase(src_codeintel_uploads_reconciler_scip_metadata_errors_total{job=~"^${source:regex}.*"}[5m])) / (sum by (op)(increase(src_codeintel_uploads_reconciler_scip_metadata_total{job=~"^${source:regex}.*"}[5m])) + sum by (op)(increase(src_codeintel_uploads_reconciler_scip_metadata_errors_total{job=~"^${source:regex}.*"}[5m]))) * 100 -``` -
- -
- -### Code Intelligence > Uploads: Codeintel: Uploads > Reconciler task > Codeintel uploads reconciler scip data - -#### codeintel-uploads: codeintel_uploads_reconciler_scip_data_records_scanned_total - -

Records scanned every 5m

- -The number of candidate records considered for cleanup. - -This panel has no related alerts. - -To see this panel, visit `/-/debug/grafana/d/codeintel-uploads/codeintel-uploads?viewPanel=101400` on your Sourcegraph instance. - -*Managed by the Sourcegraph Code Understanding team.* - -
-Technical details - -Query: - -``` -sum(increase(src_codeintel_uploads_reconciler_scip_data_records_scanned_total{job=~"^${source:regex}.*"}[5m])) -``` -
- -
- -#### codeintel-uploads: codeintel_uploads_reconciler_scip_data_records_altered_total - -

Records altered every 5m

- -The number of candidate records altered as part of cleanup. - -This panel has no related alerts. - -To see this panel, visit `/-/debug/grafana/d/codeintel-uploads/codeintel-uploads?viewPanel=101401` on your Sourcegraph instance. - -*Managed by the Sourcegraph Code Understanding team.* - -
-Technical details - -Query: - -``` -sum(increase(src_codeintel_uploads_reconciler_scip_data_records_altered_total{job=~"^${source:regex}.*"}[5m])) -``` -
- -
- -#### codeintel-uploads: codeintel_uploads_reconciler_scip_data_total - -

Job invocation operations every 5m

- -This panel has no related alerts. - -To see this panel, visit `/-/debug/grafana/d/codeintel-uploads/codeintel-uploads?viewPanel=101410` on your Sourcegraph instance. - -*Managed by the Sourcegraph Code Understanding team.* - -
-Technical details - -Query: - -``` -sum by (op)(increase(src_codeintel_uploads_reconciler_scip_data_total{job=~"^${source:regex}.*"}[5m])) -``` -
- -
- -#### codeintel-uploads: codeintel_uploads_reconciler_scip_data_99th_percentile_duration - -

99th percentile successful job invocation operation duration over 5m

- -This panel has no related alerts. - -To see this panel, visit `/-/debug/grafana/d/codeintel-uploads/codeintel-uploads?viewPanel=101411` on your Sourcegraph instance. - -*Managed by the Sourcegraph Code Understanding team.* - -
-Technical details - -Query: - -``` -histogram_quantile(0.99, sum by (le,op)(rate(src_codeintel_uploads_reconciler_scip_data_duration_seconds_bucket{job=~"^${source:regex}.*"}[5m]))) -``` -
- -
- -#### codeintel-uploads: codeintel_uploads_reconciler_scip_data_errors_total - -

Job invocation operation errors every 5m

- -This panel has no related alerts. - -To see this panel, visit `/-/debug/grafana/d/codeintel-uploads/codeintel-uploads?viewPanel=101412` on your Sourcegraph instance. - -*Managed by the Sourcegraph Code Understanding team.* - -
-Technical details - -Query: - -``` -sum by (op)(increase(src_codeintel_uploads_reconciler_scip_data_errors_total{job=~"^${source:regex}.*"}[5m])) -``` -
- -
- -#### codeintel-uploads: codeintel_uploads_reconciler_scip_data_error_rate - -

Job invocation operation error rate over 5m

- -This panel has no related alerts. - -To see this panel, visit `/-/debug/grafana/d/codeintel-uploads/codeintel-uploads?viewPanel=101413` on your Sourcegraph instance. - -*Managed by the Sourcegraph Code Understanding team.* - -
-Technical details - -Query: - -``` -sum by (op)(increase(src_codeintel_uploads_reconciler_scip_data_errors_total{job=~"^${source:regex}.*"}[5m])) / (sum by (op)(increase(src_codeintel_uploads_reconciler_scip_data_total{job=~"^${source:regex}.*"}[5m])) + sum by (op)(increase(src_codeintel_uploads_reconciler_scip_data_errors_total{job=~"^${source:regex}.*"}[5m]))) * 100 -``` -
- -
- -## Telemetry - -

Monitoring telemetry services in Sourcegraph.

- -To see this dashboard, visit `/-/debug/grafana/d/telemetry/telemetry` on your Sourcegraph instance. - -### Telemetry: Telemetry Gateway Exporter: Events export and queue metrics - -#### telemetry: telemetry_gateway_exporter_queue_size - -

Telemetry event payloads pending export

- -The number of events queued to be exported. - -This panel has no related alerts. - -To see this panel, visit `/-/debug/grafana/d/telemetry/telemetry?viewPanel=100000` on your Sourcegraph instance. - -*Managed by the Sourcegraph Services team.* - -
-Technical details - -Query: - -``` -sum(src_telemetrygatewayexporter_queue_size) -``` -
- -
- -#### telemetry: telemetry_gateway_exporter_queue_growth - -

Rate of growth of events export queue over 30m

- -A positive value indicates the queue is growing. - -Refer to the [alerts reference](alerts#telemetry-telemetry_gateway_exporter_queue_growth) for 2 alerts related to this panel. - -To see this panel, visit `/-/debug/grafana/d/telemetry/telemetry?viewPanel=100001` on your Sourcegraph instance. - -*Managed by the Sourcegraph Services team.* - -
-Technical details - -Query: - -``` -max(deriv(src_telemetrygatewayexporter_queue_size[30m])) -``` -
- -
- -#### telemetry: src_telemetrygatewayexporter_exported_events - -

Events exported from queue per hour

- -The number of events being exported. - -This panel has no related alerts. - -To see this panel, visit `/-/debug/grafana/d/telemetry/telemetry?viewPanel=100010` on your Sourcegraph instance. - -*Managed by the Sourcegraph Services team.* - -
-Technical details - -Query: - -``` -max(increase(src_telemetrygatewayexporter_exported_events[1h])) -``` -
- -
- -#### telemetry: telemetry_gateway_exporter_batch_size - -

Number of events exported per batch over 30m

- -The number of events exported in each batch. The largest bucket is the maximum number of events exported per batch. -If the distribution trends to the maximum bucket, then events export throughput is at or approaching saturation - try increasing `TELEMETRY_GATEWAY_EXPORTER_EXPORT_BATCH_SIZE` or decreasing `TELEMETRY_GATEWAY_EXPORTER_EXPORT_INTERVAL`. - -This panel has no related alerts. - -To see this panel, visit `/-/debug/grafana/d/telemetry/telemetry?viewPanel=100011` on your Sourcegraph instance. - -*Managed by the Sourcegraph Services team.* - -
-Technical details - -Query: - -``` -sum by (le) (rate(src_telemetrygatewayexporter_batch_size_bucket[30m])) -``` -
- -
- -### Telemetry: Telemetry Gateway Exporter: Events export job operations - -#### telemetry: telemetrygatewayexporter_exporter_total - -

Events exporter operations every 30m

- -This panel has no related alerts. - -To see this panel, visit `/-/debug/grafana/d/telemetry/telemetry?viewPanel=100100` on your Sourcegraph instance. - -*Managed by the Sourcegraph Services team.* - -
-Technical details - -Query: - -``` -sum(increase(src_telemetrygatewayexporter_exporter_total{job=~"^worker.*"}[30m])) -``` -
- -
- -#### telemetry: telemetrygatewayexporter_exporter_99th_percentile_duration - -

Aggregate successful events exporter operation duration distribution over 30m

- -This panel has no related alerts. - -To see this panel, visit `/-/debug/grafana/d/telemetry/telemetry?viewPanel=100101` on your Sourcegraph instance. - -*Managed by the Sourcegraph Services team.* - -
-Technical details - -Query: - -``` -sum by (le)(rate(src_telemetrygatewayexporter_exporter_duration_seconds_bucket{job=~"^worker.*"}[30m])) -``` -
- -
- -#### telemetry: telemetrygatewayexporter_exporter_errors_total - -

Events exporter operation errors every 30m

- -Refer to the [alerts reference](alerts#telemetry-telemetrygatewayexporter_exporter_errors_total) for 1 alert related to this panel. - -To see this panel, visit `/-/debug/grafana/d/telemetry/telemetry?viewPanel=100102` on your Sourcegraph instance. - -*Managed by the Sourcegraph Services team.* - -
-Technical details - -Query: - -``` -sum(increase(src_telemetrygatewayexporter_exporter_errors_total{job=~"^worker.*"}[30m])) -``` -
- -
- -#### telemetry: telemetrygatewayexporter_exporter_error_rate - -

Events exporter operation error rate over 30m

- -This panel has no related alerts. - -To see this panel, visit `/-/debug/grafana/d/telemetry/telemetry?viewPanel=100103` on your Sourcegraph instance. - -*Managed by the Sourcegraph Services team.* - -
-Technical details - -Query: - -``` -sum(increase(src_telemetrygatewayexporter_exporter_errors_total{job=~"^worker.*"}[30m])) / (sum(increase(src_telemetrygatewayexporter_exporter_total{job=~"^worker.*"}[30m])) + sum(increase(src_telemetrygatewayexporter_exporter_errors_total{job=~"^worker.*"}[30m]))) * 100 -``` -
- -
- -### Telemetry: Telemetry Gateway Exporter: Events export queue cleanup job operations - -#### telemetry: telemetrygatewayexporter_queue_cleanup_total - -

Events export queue cleanup operations every 30m

- -This panel has no related alerts. - -To see this panel, visit `/-/debug/grafana/d/telemetry/telemetry?viewPanel=100200` on your Sourcegraph instance. - -*Managed by the Sourcegraph Services team.* - -
-Technical details - -Query: - -``` -sum(increase(src_telemetrygatewayexporter_queue_cleanup_total{job=~"^worker.*"}[30m])) -``` -
- -
- -#### telemetry: telemetrygatewayexporter_queue_cleanup_99th_percentile_duration - -

Aggregate successful events export queue cleanup operation duration distribution over 30m

- -This panel has no related alerts. - -To see this panel, visit `/-/debug/grafana/d/telemetry/telemetry?viewPanel=100201` on your Sourcegraph instance. - -*Managed by the Sourcegraph Services team.* - -
-Technical details - -Query: - -``` -sum by (le)(rate(src_telemetrygatewayexporter_queue_cleanup_duration_seconds_bucket{job=~"^worker.*"}[30m])) -``` -
- -
- -#### telemetry: telemetrygatewayexporter_queue_cleanup_errors_total - -

Events export queue cleanup operation errors every 30m

- -Refer to the [alerts reference](alerts#telemetry-telemetrygatewayexporter_queue_cleanup_errors_total) for 1 alert related to this panel. - -To see this panel, visit `/-/debug/grafana/d/telemetry/telemetry?viewPanel=100202` on your Sourcegraph instance. - -*Managed by the Sourcegraph Services team.* - -
-Technical details - -Query: - -``` -sum(increase(src_telemetrygatewayexporter_queue_cleanup_errors_total{job=~"^worker.*"}[30m])) -``` -
- -
- -#### telemetry: telemetrygatewayexporter_queue_cleanup_error_rate - -

Events export queue cleanup operation error rate over 30m

- -This panel has no related alerts. - -To see this panel, visit `/-/debug/grafana/d/telemetry/telemetry?viewPanel=100203` on your Sourcegraph instance. - -*Managed by the Sourcegraph Services team.* - -
-Technical details - -Query: - -``` -sum(increase(src_telemetrygatewayexporter_queue_cleanup_errors_total{job=~"^worker.*"}[30m])) / (sum(increase(src_telemetrygatewayexporter_queue_cleanup_total{job=~"^worker.*"}[30m])) + sum(increase(src_telemetrygatewayexporter_queue_cleanup_errors_total{job=~"^worker.*"}[30m]))) * 100 -``` -
- -
- -### Telemetry: Telemetry Gateway Exporter: Events export queue metrics reporting job operations - -#### telemetry: telemetrygatewayexporter_queue_metrics_reporter_total - -

Events export backlog metrics reporting operations every 30m

- -This panel has no related alerts. - -To see this panel, visit `/-/debug/grafana/d/telemetry/telemetry?viewPanel=100300` on your Sourcegraph instance. - -*Managed by the Sourcegraph Services team.* - -
-Technical details - -Query: - -``` -sum(increase(src_telemetrygatewayexporter_queue_metrics_reporter_total{job=~"^worker.*"}[30m])) -``` -
- -
- -#### telemetry: telemetrygatewayexporter_queue_metrics_reporter_99th_percentile_duration - -

Aggregate successful events export backlog metrics reporting operation duration distribution over 30m

- -This panel has no related alerts. - -To see this panel, visit `/-/debug/grafana/d/telemetry/telemetry?viewPanel=100301` on your Sourcegraph instance. - -*Managed by the Sourcegraph Services team.* - -
-Technical details - -Query: - -``` -sum by (le)(rate(src_telemetrygatewayexporter_queue_metrics_reporter_duration_seconds_bucket{job=~"^worker.*"}[30m])) -``` -
- -
- -#### telemetry: telemetrygatewayexporter_queue_metrics_reporter_errors_total - -

Events export backlog metrics reporting operation errors every 30m

- -Refer to the [alerts reference](alerts#telemetry-telemetrygatewayexporter_queue_metrics_reporter_errors_total) for 1 alert related to this panel. - -To see this panel, visit `/-/debug/grafana/d/telemetry/telemetry?viewPanel=100302` on your Sourcegraph instance. - -*Managed by the Sourcegraph Services team.* - -
-Technical details - -Query: - -``` -sum(increase(src_telemetrygatewayexporter_queue_metrics_reporter_errors_total{job=~"^worker.*"}[30m])) -``` -
- -
- -#### telemetry: telemetrygatewayexporter_queue_metrics_reporter_error_rate - -

Events export backlog metrics reporting operation error rate over 30m

- -This panel has no related alerts. - -To see this panel, visit `/-/debug/grafana/d/telemetry/telemetry?viewPanel=100303` on your Sourcegraph instance. - -*Managed by the Sourcegraph Services team.* - -
-Technical details - -Query: - -``` -sum(increase(src_telemetrygatewayexporter_queue_metrics_reporter_errors_total{job=~"^worker.*"}[30m])) / (sum(increase(src_telemetrygatewayexporter_queue_metrics_reporter_total{job=~"^worker.*"}[30m])) + sum(increase(src_telemetrygatewayexporter_queue_metrics_reporter_errors_total{job=~"^worker.*"}[30m]))) * 100 -``` -
- -
- -### Telemetry: Telemetry persistence - -#### telemetry: telemetry_v2_export_queue_write_failures - -

Failed writes to events export queue over 5m

- -Telemetry V2 writes send events into the `telemetry_events_export_queue` for the exporter to periodically export. - -Refer to the [alerts reference](alerts#telemetry-telemetry_v2_export_queue_write_failures) for 2 alerts related to this panel. - -To see this panel, visit `/-/debug/grafana/d/telemetry/telemetry?viewPanel=100400` on your Sourcegraph instance. - -*Managed by the Sourcegraph Services team.* - -
-Technical details - -Query: - -``` -(sum(increase(src_telemetry_export_store_queued_events{failed="true"}[5m])) / sum(increase(src_telemetry_export_store_queued_events[5m]))) * 100 -``` -
- -
- -#### telemetry: telemetry_v2_event_logs_write_failures - -

Failed write V2 events to V1 'event_logs' over 5m

- -Telemetry V2 writes also attempt to `tee` events into the legacy V1 events format in the `event_logs` database table for long-term local persistence. - -Refer to the [alerts reference](alerts#telemetry-telemetry_v2_event_logs_write_failures) for 1 alert related to this panel. - -To see this panel, visit `/-/debug/grafana/d/telemetry/telemetry?viewPanel=100401` on your Sourcegraph instance. - -*Managed by the Sourcegraph Services team.* - -
-Technical details - -Query: - -``` -(sum(increase(src_telemetry_teestore_v1_events{failed="true"}[5m])) / sum(increase(src_telemetry_teestore_v1_events[5m]))) * 100 -``` -
- -
- -### Telemetry: Telemetry Gateway Exporter: (off by default) User metadata export job operations - -#### telemetry: telemetrygatewayexporter_usermetadata_exporter_total - -

(off by default) user metadata exporter operations every 30m

- -This panel has no related alerts. - -To see this panel, visit `/-/debug/grafana/d/telemetry/telemetry?viewPanel=100500` on your Sourcegraph instance. - -*Managed by the Sourcegraph Services team.* - -
-Technical details - -Query: - -``` -sum(increase(src_telemetrygatewayexporter_usermetadata_exporter_total{job=~"^worker.*"}[30m])) -``` -
- -
- -#### telemetry: telemetrygatewayexporter_usermetadata_exporter_99th_percentile_duration - -

Aggregate successful (off by default) user metadata exporter operation duration distribution over 30m

- -This panel has no related alerts. - -To see this panel, visit `/-/debug/grafana/d/telemetry/telemetry?viewPanel=100501` on your Sourcegraph instance. - -*Managed by the Sourcegraph Services team.* - -
-Technical details - -Query: - -``` -sum by (le)(rate(src_telemetrygatewayexporter_usermetadata_exporter_duration_seconds_bucket{job=~"^worker.*"}[30m])) -``` -
- -
- -#### telemetry: telemetrygatewayexporter_usermetadata_exporter_errors_total - -

(off by default) user metadata exporter operation errors every 30m

- -Refer to the [alerts reference](alerts#telemetry-telemetrygatewayexporter_usermetadata_exporter_errors_total) for 1 alert related to this panel. - -To see this panel, visit `/-/debug/grafana/d/telemetry/telemetry?viewPanel=100502` on your Sourcegraph instance. - -*Managed by the Sourcegraph Services team.* - -
-Technical details - -Query: - -``` -sum(increase(src_telemetrygatewayexporter_usermetadata_exporter_errors_total{job=~"^worker.*"}[30m])) -``` -
- -
- -#### telemetry: telemetrygatewayexporter_usermetadata_exporter_error_rate - -

(off by default) user metadata exporter operation error rate over 30m

- -This panel has no related alerts. - -To see this panel, visit `/-/debug/grafana/d/telemetry/telemetry?viewPanel=100503` on your Sourcegraph instance. - -*Managed by the Sourcegraph Services team.* - -
-Technical details - -Query: - -``` -sum(increase(src_telemetrygatewayexporter_usermetadata_exporter_errors_total{job=~"^worker.*"}[30m])) / (sum(increase(src_telemetrygatewayexporter_usermetadata_exporter_total{job=~"^worker.*"}[30m])) + sum(increase(src_telemetrygatewayexporter_usermetadata_exporter_errors_total{job=~"^worker.*"}[30m]))) * 100 -``` -
- -
- -## OpenTelemetry Collector - -

The OpenTelemetry collector ingests OpenTelemetry data from Sourcegraph and exports it to the configured backends.

- -To see this dashboard, visit `/-/debug/grafana/d/otel-collector/otel-collector` on your Sourcegraph instance. - -### OpenTelemetry Collector: Receivers - -#### otel-collector: otel_span_receive_rate - -

Spans received per receiver per minute

- -Shows the rate of spans accepted by the configured reveiver - -A Trace is a collection of spans and a span represents a unit of work or operation. Spans are the building blocks of Traces. -The spans have only been accepted by the receiver, which means they still have to move through the configured pipeline to be exported. -For more information on tracing and configuration of a OpenTelemetry receiver see https://opentelemetry.io/docs/collector/configuration/#receivers. - -See the Exporters section see spans that have made it through the pipeline and are exported. - -Depending the configured processors, received spans might be dropped and not exported. For more information on configuring processors see -https://opentelemetry.io/docs/collector/configuration/#processors. - -This panel has no related alerts. - -To see this panel, visit `/-/debug/grafana/d/otel-collector/otel-collector?viewPanel=100000` on your Sourcegraph instance. - -*Managed by the Sourcegraph Platform team.* - -
-Technical details - -Query: - -``` -sum by (receiver) (rate(otelcol_receiver_accepted_spans[1m])) -``` -
- -
- -#### otel-collector: otel_span_refused - -

Spans refused per receiver

- - - -Refer to the [alerts reference](alerts#otel-collector-otel_span_refused) for 1 alert related to this panel. - -To see this panel, visit `/-/debug/grafana/d/otel-collector/otel-collector?viewPanel=100001` on your Sourcegraph instance. - -*Managed by the Sourcegraph Platform team.* - -
-Technical details - -Query: - -``` -sum by (receiver) (rate(otelcol_receiver_refused_spans[1m])) -``` -
- -
- -### OpenTelemetry Collector: Exporters - -#### otel-collector: otel_span_export_rate - -

Spans exported per exporter per minute

- -Shows the rate of spans being sent by the exporter - -A Trace is a collection of spans. A Span represents a unit of work or operation. Spans are the building blocks of Traces. -The rate of spans here indicates spans that have made it through the configured pipeline and have been sent to the configured export destination. - -For more information on configuring a exporter for the OpenTelemetry collector see https://opentelemetry.io/docs/collector/configuration/#exporters. - -This panel has no related alerts. - -To see this panel, visit `/-/debug/grafana/d/otel-collector/otel-collector?viewPanel=100100` on your Sourcegraph instance. - -*Managed by the Sourcegraph Platform team.* - -
-Technical details - -Query: - -``` -sum by (exporter) (rate(otelcol_exporter_sent_spans[1m])) -``` -
- -
- -#### otel-collector: otel_span_export_failures - -

Span export failures by exporter

- -Shows the rate of spans failed to be sent by the configured reveiver. A number higher than 0 for a long period can indicate a problem with the exporter configuration or with the service that is being exported too - -For more information on configuring a exporter for the OpenTelemetry collector see https://opentelemetry.io/docs/collector/configuration/#exporters. - -Refer to the [alerts reference](alerts#otel-collector-otel_span_export_failures) for 1 alert related to this panel. - -To see this panel, visit `/-/debug/grafana/d/otel-collector/otel-collector?viewPanel=100101` on your Sourcegraph instance. - -*Managed by the Sourcegraph Platform team.* - -
-Technical details - -Query: - -``` -sum by (exporter) (rate(otelcol_exporter_send_failed_spans[1m])) -``` -
- -
- -### OpenTelemetry Collector: Queue Length - -#### otel-collector: otelcol_exporter_queue_capacity - -

Exporter queue capacity

- -Shows the the capacity of the retry queue (in batches). - -This panel has no related alerts. - -To see this panel, visit `/-/debug/grafana/d/otel-collector/otel-collector?viewPanel=100200` on your Sourcegraph instance. - -*Managed by the Sourcegraph Platform team.* - -
-Technical details - -Query: - -``` -sum by (exporter) (rate(otelcol_exporter_queue_capacity{job=~"^.*"}[1m])) -``` -
- -
- -#### otel-collector: otelcol_exporter_queue_size - -

Exporter queue size

- -Shows the current size of retry queue - -This panel has no related alerts. - -To see this panel, visit `/-/debug/grafana/d/otel-collector/otel-collector?viewPanel=100201` on your Sourcegraph instance. - -*Managed by the Sourcegraph Platform team.* - -
-Technical details - -Query: - -``` -sum by (exporter) (rate(otelcol_exporter_queue_size{job=~"^.*"}[1m])) -``` -
- -
- -#### otel-collector: otelcol_exporter_enqueue_failed_spans - -

Exporter enqueue failed spans

- -Shows the rate of spans failed to be enqueued by the configured exporter. A number higher than 0 for a long period can indicate a problem with the exporter configuration - -Refer to the [alerts reference](alerts#otel-collector-otelcol_exporter_enqueue_failed_spans) for 1 alert related to this panel. - -To see this panel, visit `/-/debug/grafana/d/otel-collector/otel-collector?viewPanel=100202` on your Sourcegraph instance. - -*Managed by the Sourcegraph Platform team.* - -
-Technical details - -Query: - -``` -sum by (exporter) (rate(otelcol_exporter_enqueue_failed_spans{job=~"^.*"}[1m])) -``` -
- -
- -### OpenTelemetry Collector: Processors - -#### otel-collector: otelcol_processor_dropped_spans - -

Spans dropped per processor per minute

- -Shows the rate of spans dropped by the configured processor - -Refer to the [alerts reference](alerts#otel-collector-otelcol_processor_dropped_spans) for 1 alert related to this panel. - -To see this panel, visit `/-/debug/grafana/d/otel-collector/otel-collector?viewPanel=100300` on your Sourcegraph instance. - -*Managed by the Sourcegraph Platform team.* - -
-Technical details - -Query: - -``` -sum by (processor) (rate(otelcol_processor_dropped_spans[1m])) -``` -
- -
- -### OpenTelemetry Collector: Collector resource usage - -#### otel-collector: otel_cpu_usage - -

Cpu usage of the collector

- -Shows CPU usage as reported by the OpenTelemetry collector. - -This panel has no related alerts. - -To see this panel, visit `/-/debug/grafana/d/otel-collector/otel-collector?viewPanel=100400` on your Sourcegraph instance. - -*Managed by the Sourcegraph Platform team.* - -
-Technical details - -Query: - -``` -sum by (job) (rate(otelcol_process_cpu_seconds{job=~"^.*"}[1m])) -``` -
- -
- -#### otel-collector: otel_memory_resident_set_size - -

Memory allocated to the otel collector

- -Shows the allocated memory Resident Set Size (RSS) as reported by the OpenTelemetry collector. - -This panel has no related alerts. - -To see this panel, visit `/-/debug/grafana/d/otel-collector/otel-collector?viewPanel=100401` on your Sourcegraph instance. - -*Managed by the Sourcegraph Platform team.* - -
-Technical details - -Query: - -``` -sum by (job) (rate(otelcol_process_memory_rss{job=~"^.*"}[1m])) -``` -
- -
- -#### otel-collector: otel_memory_usage - -

Memory used by the collector

- -Shows how much memory is being used by the otel collector. - -* High memory usage might indicate thad the configured pipeline is keeping a lot of spans in memory for processing -* Spans failing to be sent and the exporter is configured to retry -* A high batch count by using a batch processor - -For more information on configuring processors for the OpenTelemetry collector see https://opentelemetry.io/docs/collector/configuration/#processors. - -This panel has no related alerts. - -To see this panel, visit `/-/debug/grafana/d/otel-collector/otel-collector?viewPanel=100402` on your Sourcegraph instance. - -*Managed by the Sourcegraph Platform team.* - -
-Technical details - -Query: - -``` -sum by (job) (rate(otelcol_process_runtime_total_alloc_bytes{job=~"^.*"}[1m])) -``` -
- -
- -### OpenTelemetry Collector: Container monitoring (not available on server) - -#### otel-collector: container_missing - -

Container missing

- -This value is the number of times a container has not been seen for more than one minute. If you observe this -value change independent of deployment events (such as an upgrade), it could indicate pods are being OOM killed or terminated for some other reasons. - -- **Kubernetes:** - - Determine if the pod was OOM killed using `kubectl describe pod otel-collector` (look for `OOMKilled: true`) and, if so, consider increasing the memory limit in the relevant `Deployment.yaml`. - - Check the logs before the container restarted to see if there are `panic:` messages or similar using `kubectl logs -p otel-collector`. -- **Docker Compose:** - - Determine if the pod was OOM killed using `docker inspect -f '\{\{json .State\}\}' otel-collector` (look for `"OOMKilled":true`) and, if so, consider increasing the memory limit of the otel-collector container in `docker-compose.yml`. - - Check the logs before the container restarted to see if there are `panic:` messages or similar using `docker logs otel-collector` (note this will include logs from the previous and currently running container). - -This panel has no related alerts. - -To see this panel, visit `/-/debug/grafana/d/otel-collector/otel-collector?viewPanel=100500` on your Sourcegraph instance. - -*Managed by the Sourcegraph Platform team.* - -
-Technical details - -Query: - -``` -count by(name) ((time() - container_last_seen{name=~"^otel-collector.*"}) > 60) -``` -
- -
- -#### otel-collector: container_cpu_usage - -

Container cpu usage total (1m average) across all cores by instance

- -Refer to the [alerts reference](alerts#otel-collector-container_cpu_usage) for 1 alert related to this panel. - -To see this panel, visit `/-/debug/grafana/d/otel-collector/otel-collector?viewPanel=100501` on your Sourcegraph instance. - -*Managed by the Sourcegraph Platform team.* - -
-Technical details - -Query: - -``` -cadvisor_container_cpu_usage_percentage_total{name=~"^otel-collector.*"} -``` -
- -
- -#### otel-collector: container_memory_usage - -

Container memory usage by instance

- -Refer to the [alerts reference](alerts#otel-collector-container_memory_usage) for 1 alert related to this panel. - -To see this panel, visit `/-/debug/grafana/d/otel-collector/otel-collector?viewPanel=100502` on your Sourcegraph instance. - -*Managed by the Sourcegraph Platform team.* - -
-Technical details - -Query: - -``` -cadvisor_container_memory_usage_percentage_total{name=~"^otel-collector.*"} -``` -
- -
- -#### otel-collector: fs_io_operations - -

Filesystem reads and writes rate by instance over 1h

- -This value indicates the number of filesystem read and write operations by containers of this service. -When extremely high, this can indicate a resource usage problem, or can cause problems with the service itself, especially if high values or spikes correlate with \{\{CONTAINER_NAME\}\} issues. - -This panel has no related alerts. - -To see this panel, visit `/-/debug/grafana/d/otel-collector/otel-collector?viewPanel=100503` on your Sourcegraph instance. - -*Managed by the Sourcegraph Platform team.* - -
-Technical details - -Query: - -``` -sum by(name) (rate(container_fs_reads_total{name=~"^otel-collector.*"}[1h]) + rate(container_fs_writes_total{name=~"^otel-collector.*"}[1h])) -``` -
- -
- -### OpenTelemetry Collector: Kubernetes monitoring (only available on Kubernetes) - -#### otel-collector: pods_available_percentage - -

Percentage pods available

- -Refer to the [alerts reference](alerts#otel-collector-pods_available_percentage) for 1 alert related to this panel. - -To see this panel, visit `/-/debug/grafana/d/otel-collector/otel-collector?viewPanel=100600` on your Sourcegraph instance. - -*Managed by the Sourcegraph Platform team.* +*Managed by the Sourcegraph Code Understanding team.*
Technical details @@ -33434,30 +31944,21 @@ To see this panel, visit `/-/debug/grafana/d/otel-collector/otel-collector?viewP Query: ``` -sum by(app) (up{app=~".*otel-collector"}) / count by (app) (up{app=~".*otel-collector"}) * 100 +histogram_quantile(0.99, sum by (le,op)(rate(src_codeintel_uploads_hard_deleter_duration_seconds_bucket{job=~"^${source:regex}.*"}[5m]))) ```

-## Completions - -

Cody chat and code completions.

- -To see this dashboard, visit `/-/debug/grafana/d/completions/completions` on your Sourcegraph instance. - -### Completions: Completions requests - -#### completions: api_request_rate - -

Rate of completions API requests

+#### codeintel-uploads: codeintel_uploads_hard_deleter_errors_total -Rate (QPS) of requests to cody chat and code completion endpoints. +

Job invocation operation errors every 5m

This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/completions/completions?viewPanel=100000` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/codeintel-uploads/codeintel-uploads?viewPanel=101012` on your Sourcegraph instance. +*Managed by the Sourcegraph Code Understanding team.*
Technical details @@ -33465,24 +31966,21 @@ To see this panel, visit `/-/debug/grafana/d/completions/completions?viewPanel=1 Query: ``` -sum by (code)(irate(src_http_request_duration_seconds_count{route=~"^cody.completions.*"}[5m])) +sum by (op)(increase(src_codeintel_uploads_hard_deleter_errors_total{job=~"^${source:regex}.*"}[5m])) ```

-### Completions: Chat completions - -#### completions: chat_completions_p99_stream_duration - -

Stream: total time (p99)

+#### codeintel-uploads: codeintel_uploads_hard_deleter_error_rate -Time spent on the Stream() invocation, i.e. how long results take to connect, stream results, and finish streaming. +

Job invocation operation error rate over 5m

This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/completions/completions?viewPanel=100100` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/codeintel-uploads/codeintel-uploads?viewPanel=101013` on your Sourcegraph instance. +*Managed by the Sourcegraph Code Understanding team.*
Technical details @@ -33490,22 +31988,25 @@ To see this panel, visit `/-/debug/grafana/d/completions/completions?viewPanel=1 Query: ``` -histogram_quantile(0.99, sum(rate(src_completions_stream_duration_seconds_bucket{feature="chat_completions",model=~'${model}'}[$sampling_duration])) by (le, model)) +sum by (op)(increase(src_codeintel_uploads_hard_deleter_errors_total{job=~"^${source:regex}.*"}[5m])) / (sum by (op)(increase(src_codeintel_uploads_hard_deleter_total{job=~"^${source:regex}.*"}[5m])) + sum by (op)(increase(src_codeintel_uploads_hard_deleter_errors_total{job=~"^${source:regex}.*"}[5m]))) * 100 ```

-#### completions: chat_completions_p95_stream_duration +### Code Intelligence > Uploads: Codeintel: Uploads > Janitor task > Codeintel uploads janitor audit logs + +#### codeintel-uploads: codeintel_uploads_janitor_audit_logs_records_scanned_total -

Stream: total time (p95)

+

Records scanned every 5m

-Time spent on the Stream() invocation, i.e. how long results take to connect, stream results, and finish streaming. +The number of candidate records considered for cleanup. This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/completions/completions?viewPanel=100101` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/codeintel-uploads/codeintel-uploads?viewPanel=101100` on your Sourcegraph instance. +*Managed by the Sourcegraph Code Understanding team.*
Technical details @@ -33513,22 +32014,23 @@ To see this panel, visit `/-/debug/grafana/d/completions/completions?viewPanel=1 Query: ``` -histogram_quantile(0.95, sum(rate(src_completions_stream_duration_seconds_bucket{feature="chat_completions",model=~'${model}'}[$sampling_duration])) by (le, model)) +sum(increase(src_codeintel_uploads_janitor_audit_logs_records_scanned_total{job=~"^${source:regex}.*"}[5m])) ```

-#### completions: chat_completions_p75_stream_duration +#### codeintel-uploads: codeintel_uploads_janitor_audit_logs_records_altered_total -

Stream: total time (p75)

+

Records altered every 5m

-Time spent on the Stream() invocation, i.e. how long results take to connect, stream results, and finish streaming. +The number of candidate records altered as part of cleanup. This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/completions/completions?viewPanel=100102` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/codeintel-uploads/codeintel-uploads?viewPanel=101101` on your Sourcegraph instance. +*Managed by the Sourcegraph Code Understanding team.*
Technical details @@ -33536,22 +32038,21 @@ To see this panel, visit `/-/debug/grafana/d/completions/completions?viewPanel=1 Query: ``` -histogram_quantile(0.75, sum(rate(src_completions_stream_duration_seconds_bucket{feature="chat_completions",model=~'${model}'}[$sampling_duration])) by (le, model)) +sum(increase(src_codeintel_uploads_janitor_audit_logs_records_altered_total{job=~"^${source:regex}.*"}[5m])) ```

-#### completions: chat_completions_p50_stream_duration - -

Stream: total time (p50)

+#### codeintel-uploads: codeintel_uploads_janitor_audit_logs_total -Time spent on the Stream() invocation, i.e. how long results take to connect, stream results, and finish streaming. +

Job invocation operations every 5m

This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/completions/completions?viewPanel=100103` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/codeintel-uploads/codeintel-uploads?viewPanel=101110` on your Sourcegraph instance. +*Managed by the Sourcegraph Code Understanding team.*
Technical details @@ -33559,22 +32060,21 @@ To see this panel, visit `/-/debug/grafana/d/completions/completions?viewPanel=1 Query: ``` -histogram_quantile(0.50, sum(rate(src_completions_stream_duration_seconds_bucket{feature="chat_completions",model=~'${model}'}[$sampling_duration])) by (le, model)) +sum by (op)(increase(src_codeintel_uploads_janitor_audit_logs_total{job=~"^${source:regex}.*"}[5m])) ```

-#### completions: chat_completions_p99_non_stream_overhead_duration - -

Non-stream overhead (p99)

+#### codeintel-uploads: codeintel_uploads_janitor_audit_logs_99th_percentile_duration -Time between Go HTTP handler invocation and Stream() invocation, overhead of e.g. request validation, routing to gateway/other, model resolution, error reporting/tracing, guardrails, etc. +

99th percentile successful job invocation operation duration over 5m

This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/completions/completions?viewPanel=100110` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/codeintel-uploads/codeintel-uploads?viewPanel=101111` on your Sourcegraph instance. +*Managed by the Sourcegraph Code Understanding team.*
Technical details @@ -33582,22 +32082,21 @@ To see this panel, visit `/-/debug/grafana/d/completions/completions?viewPanel=1 Query: ``` -histogram_quantile(0.99, sum(rate(src_completions_handler_overhead_duration_seconds_bucket{feature="chat_completions",model=~'${model}'}[$sampling_duration])) by (le,model)) +histogram_quantile(0.99, sum by (le,op)(rate(src_codeintel_uploads_janitor_audit_logs_duration_seconds_bucket{job=~"^${source:regex}.*"}[5m]))) ```

-#### completions: chat_completions_p95_non_stream_overhead_duration - -

Non-stream overhead (p95)

+#### codeintel-uploads: codeintel_uploads_janitor_audit_logs_errors_total -Time between Go HTTP handler invocation and Stream() invocation, overhead of e.g. request validation, routing to gateway/other, model resolution, error reporting/tracing, guardrails, etc. +

Job invocation operation errors every 5m

This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/completions/completions?viewPanel=100111` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/codeintel-uploads/codeintel-uploads?viewPanel=101112` on your Sourcegraph instance. +*Managed by the Sourcegraph Code Understanding team.*
Technical details @@ -33605,22 +32104,21 @@ To see this panel, visit `/-/debug/grafana/d/completions/completions?viewPanel=1 Query: ``` -histogram_quantile(0.95, sum(rate(src_completions_handler_overhead_duration_seconds_bucket{feature="chat_completions",model=~'${model}'}[$sampling_duration])) by (le,model)) +sum by (op)(increase(src_codeintel_uploads_janitor_audit_logs_errors_total{job=~"^${source:regex}.*"}[5m])) ```

-#### completions: chat_completions_p75_non_stream_overhead_duration - -

Non-stream overhead (p75)

+#### codeintel-uploads: codeintel_uploads_janitor_audit_logs_error_rate -Time between Go HTTP handler invocation and Stream() invocation, overhead of e.g. request validation, routing to gateway/other, model resolution, error reporting/tracing, guardrails, etc. +

Job invocation operation error rate over 5m

This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/completions/completions?viewPanel=100112` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/codeintel-uploads/codeintel-uploads?viewPanel=101113` on your Sourcegraph instance. +*Managed by the Sourcegraph Code Understanding team.*
Technical details @@ -33628,22 +32126,25 @@ To see this panel, visit `/-/debug/grafana/d/completions/completions?viewPanel=1 Query: ``` -histogram_quantile(0.75, sum(rate(src_completions_handler_overhead_duration_seconds_bucket{feature="chat_completions",model=~'${model}'}[$sampling_duration])) by (le,model)) +sum by (op)(increase(src_codeintel_uploads_janitor_audit_logs_errors_total{job=~"^${source:regex}.*"}[5m])) / (sum by (op)(increase(src_codeintel_uploads_janitor_audit_logs_total{job=~"^${source:regex}.*"}[5m])) + sum by (op)(increase(src_codeintel_uploads_janitor_audit_logs_errors_total{job=~"^${source:regex}.*"}[5m]))) * 100 ```

-#### completions: chat_completions_p50_non_stream_overhead_duration +### Code Intelligence > Uploads: Codeintel: Uploads > Janitor task > Codeintel uploads janitor scip documents + +#### codeintel-uploads: codeintel_uploads_janitor_scip_documents_records_scanned_total -

Non-stream overhead (p50)

+

Records scanned every 5m

-Time between Go HTTP handler invocation and Stream() invocation, overhead of e.g. request validation, routing to gateway/other, model resolution, error reporting/tracing, guardrails, etc. +The number of candidate records considered for cleanup. This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/completions/completions?viewPanel=100113` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/codeintel-uploads/codeintel-uploads?viewPanel=101200` on your Sourcegraph instance. +*Managed by the Sourcegraph Code Understanding team.*
Technical details @@ -33651,22 +32152,23 @@ To see this panel, visit `/-/debug/grafana/d/completions/completions?viewPanel=1 Query: ``` -histogram_quantile(0.50, sum(rate(src_completions_handler_overhead_duration_seconds_bucket{feature="chat_completions",model=~'${model}'}[$sampling_duration])) by (le,model)) +sum(increase(src_codeintel_uploads_janitor_scip_documents_records_scanned_total{job=~"^${source:regex}.*"}[5m])) ```

-#### completions: chat_completions_p99_stream_first_event_duration +#### codeintel-uploads: codeintel_uploads_janitor_scip_documents_records_altered_total -

Stream: time to first event (p99)

+

Records altered every 5m

-Time between calling Stream(), the client connecting to the server etc. and actually getting the first streaming event back. +The number of candidate records altered as part of cleanup. This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/completions/completions?viewPanel=100120` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/codeintel-uploads/codeintel-uploads?viewPanel=101201` on your Sourcegraph instance. +*Managed by the Sourcegraph Code Understanding team.*
Technical details @@ -33674,22 +32176,21 @@ To see this panel, visit `/-/debug/grafana/d/completions/completions?viewPanel=1 Query: ``` -histogram_quantile(0.99, sum(rate(src_completions_stream_first_event_duration_seconds_bucket{feature="chat_completions",model=~'${model}'}[$sampling_duration])) by (le, model)) +sum(increase(src_codeintel_uploads_janitor_scip_documents_records_altered_total{job=~"^${source:regex}.*"}[5m])) ```

-#### completions: chat_completions_p95_stream_first_event_duration - -

Stream: time to first event (p95)

+#### codeintel-uploads: codeintel_uploads_janitor_scip_documents_total -Time between calling Stream(), the client connecting to the server etc. and actually getting the first streaming event back. +

Job invocation operations every 5m

This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/completions/completions?viewPanel=100121` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/codeintel-uploads/codeintel-uploads?viewPanel=101210` on your Sourcegraph instance. +*Managed by the Sourcegraph Code Understanding team.*
Technical details @@ -33697,22 +32198,21 @@ To see this panel, visit `/-/debug/grafana/d/completions/completions?viewPanel=1 Query: ``` -histogram_quantile(0.95, sum(rate(src_completions_stream_first_event_duration_seconds_bucket{feature="chat_completions",model=~'${model}'}[$sampling_duration])) by (le, model)) +sum by (op)(increase(src_codeintel_uploads_janitor_scip_documents_total{job=~"^${source:regex}.*"}[5m])) ```

-#### completions: chat_completions_p75_stream_first_event_duration - -

Stream: time to first event (p75)

+#### codeintel-uploads: codeintel_uploads_janitor_scip_documents_99th_percentile_duration -Time between calling Stream(), the client connecting to the server etc. and actually getting the first streaming event back. +

99th percentile successful job invocation operation duration over 5m

This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/completions/completions?viewPanel=100122` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/codeintel-uploads/codeintel-uploads?viewPanel=101211` on your Sourcegraph instance. +*Managed by the Sourcegraph Code Understanding team.*
Technical details @@ -33720,22 +32220,21 @@ To see this panel, visit `/-/debug/grafana/d/completions/completions?viewPanel=1 Query: ``` -histogram_quantile(0.75, sum(rate(src_completions_stream_first_event_duration_seconds_bucket{feature="chat_completions",model=~'${model}'}[$sampling_duration])) by (le, model)) +histogram_quantile(0.99, sum by (le,op)(rate(src_codeintel_uploads_janitor_scip_documents_duration_seconds_bucket{job=~"^${source:regex}.*"}[5m]))) ```

-#### completions: chat_completions_p50_stream_first_event_duration - -

Stream: time to first event (p50)

+#### codeintel-uploads: codeintel_uploads_janitor_scip_documents_errors_total -Time between calling Stream(), the client connecting to the server etc. and actually getting the first streaming event back. +

Job invocation operation errors every 5m

This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/completions/completions?viewPanel=100123` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/codeintel-uploads/codeintel-uploads?viewPanel=101212` on your Sourcegraph instance. +*Managed by the Sourcegraph Code Understanding team.*
Technical details @@ -33743,22 +32242,21 @@ To see this panel, visit `/-/debug/grafana/d/completions/completions?viewPanel=1 Query: ``` -histogram_quantile(0.50, sum(rate(src_completions_stream_first_event_duration_seconds_bucket{feature="chat_completions",model=~'${model}'}[$sampling_duration])) by (le, model)) +sum by (op)(increase(src_codeintel_uploads_janitor_scip_documents_errors_total{job=~"^${source:regex}.*"}[5m])) ```

-#### completions: chat_completions_p99_upstream_roundtrip_duration - -

Stream: first byte sent -> received (p99)

+#### codeintel-uploads: codeintel_uploads_janitor_scip_documents_error_rate -Time between sending the first byte to the upstream, and then getting the first byte back from the upstream. +

Job invocation operation error rate over 5m

This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/completions/completions?viewPanel=100130` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/codeintel-uploads/codeintel-uploads?viewPanel=101213` on your Sourcegraph instance. +*Managed by the Sourcegraph Code Understanding team.*
Technical details @@ -33766,22 +32264,25 @@ To see this panel, visit `/-/debug/grafana/d/completions/completions?viewPanel=1 Query: ``` -histogram_quantile(0.99, sum(rate(src_completions_upstream_roundtrip_duration_seconds_bucket{feature="chat_completions",model=~'${model}'}[$sampling_duration])) by (le, provider)) +sum by (op)(increase(src_codeintel_uploads_janitor_scip_documents_errors_total{job=~"^${source:regex}.*"}[5m])) / (sum by (op)(increase(src_codeintel_uploads_janitor_scip_documents_total{job=~"^${source:regex}.*"}[5m])) + sum by (op)(increase(src_codeintel_uploads_janitor_scip_documents_errors_total{job=~"^${source:regex}.*"}[5m]))) * 100 ```

-#### completions: chat_completions_p95_upstream_roundtrip_duration +### Code Intelligence > Uploads: Codeintel: Uploads > Reconciler task > Codeintel uploads reconciler scip metadata + +#### codeintel-uploads: codeintel_uploads_reconciler_scip_metadata_records_scanned_total -

Stream: first byte sent -> received (p95)

+

Records scanned every 5m

-Time between sending the first byte to the upstream, and then getting the first byte back from the upstream. +The number of candidate records considered for cleanup. This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/completions/completions?viewPanel=100131` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/codeintel-uploads/codeintel-uploads?viewPanel=101300` on your Sourcegraph instance. +*Managed by the Sourcegraph Code Understanding team.*
Technical details @@ -33789,22 +32290,23 @@ To see this panel, visit `/-/debug/grafana/d/completions/completions?viewPanel=1 Query: ``` -histogram_quantile(0.95, sum(rate(src_completions_upstream_roundtrip_duration_seconds_bucket{feature="chat_completions",model=~'${model}'}[$sampling_duration])) by (le, provider)) +sum(increase(src_codeintel_uploads_reconciler_scip_metadata_records_scanned_total{job=~"^${source:regex}.*"}[5m])) ```

-#### completions: chat_completions_p75_upstream_roundtrip_duration +#### codeintel-uploads: codeintel_uploads_reconciler_scip_metadata_records_altered_total -

Stream: first byte sent -> received (p75)

+

Records altered every 5m

-Time between sending the first byte to the upstream, and then getting the first byte back from the upstream. +The number of candidate records altered as part of cleanup. This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/completions/completions?viewPanel=100132` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/codeintel-uploads/codeintel-uploads?viewPanel=101301` on your Sourcegraph instance. +*Managed by the Sourcegraph Code Understanding team.*
Technical details @@ -33812,22 +32314,21 @@ To see this panel, visit `/-/debug/grafana/d/completions/completions?viewPanel=1 Query: ``` -histogram_quantile(0.75, sum(rate(src_completions_upstream_roundtrip_duration_seconds_bucket{feature="chat_completions",model=~'${model}'}[$sampling_duration])) by (le, provider)) +sum(increase(src_codeintel_uploads_reconciler_scip_metadata_records_altered_total{job=~"^${source:regex}.*"}[5m])) ```

-#### completions: chat_completions_p50_upstream_roundtrip_duration - -

Stream: first byte sent -> received (p50)

+#### codeintel-uploads: codeintel_uploads_reconciler_scip_metadata_total -Time between sending the first byte to the upstream, and then getting the first byte back from the upstream. +

Job invocation operations every 5m

This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/completions/completions?viewPanel=100133` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/codeintel-uploads/codeintel-uploads?viewPanel=101310` on your Sourcegraph instance. +*Managed by the Sourcegraph Code Understanding team.*
Technical details @@ -33835,22 +32336,21 @@ To see this panel, visit `/-/debug/grafana/d/completions/completions?viewPanel=1 Query: ``` -histogram_quantile(0.50, sum(rate(src_completions_upstream_roundtrip_duration_seconds_bucket{feature="chat_completions",model=~'${model}'}[$sampling_duration])) by (le, provider)) +sum by (op)(increase(src_codeintel_uploads_reconciler_scip_metadata_total{job=~"^${source:regex}.*"}[5m])) ```

-#### completions: chat_completions_p99_http_connect_total - -

Stream: HTTP connect: total (p99)

+#### codeintel-uploads: codeintel_uploads_reconciler_scip_metadata_99th_percentile_duration -Time spent acquiring an HTTP connection to the upstream, either from an existing pool OR by performing DNS resolution, TCP connection, etc. +

99th percentile successful job invocation operation duration over 5m

This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/completions/completions?viewPanel=100140` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/codeintel-uploads/codeintel-uploads?viewPanel=101311` on your Sourcegraph instance. +*Managed by the Sourcegraph Code Understanding team.*
Technical details @@ -33858,22 +32358,21 @@ To see this panel, visit `/-/debug/grafana/d/completions/completions?viewPanel=1 Query: ``` -histogram_quantile(0.99, sum(rate(src_completions_upstream_connection_total_duration_seconds_bucket[$sampling_duration])) by (le, connection_type, provider)) +histogram_quantile(0.99, sum by (le,op)(rate(src_codeintel_uploads_reconciler_scip_metadata_duration_seconds_bucket{job=~"^${source:regex}.*"}[5m]))) ```

-#### completions: chat_completions_p95_http_connect_total - -

Stream: HTTP connect: total (p95)

+#### codeintel-uploads: codeintel_uploads_reconciler_scip_metadata_errors_total -Time spent acquiring an HTTP connection to the upstream, either from an existing pool OR by performing DNS resolution, TCP connection, etc. +

Job invocation operation errors every 5m

This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/completions/completions?viewPanel=100141` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/codeintel-uploads/codeintel-uploads?viewPanel=101312` on your Sourcegraph instance. +*Managed by the Sourcegraph Code Understanding team.*
Technical details @@ -33881,22 +32380,21 @@ To see this panel, visit `/-/debug/grafana/d/completions/completions?viewPanel=1 Query: ``` -histogram_quantile(0.95, sum(rate(src_completions_upstream_connection_total_duration_seconds_bucket[$sampling_duration])) by (le, connection_type, provider)) +sum by (op)(increase(src_codeintel_uploads_reconciler_scip_metadata_errors_total{job=~"^${source:regex}.*"}[5m])) ```

-#### completions: chat_completions_p75_http_connect_total - -

Stream: HTTP connect: total (p75)

+#### codeintel-uploads: codeintel_uploads_reconciler_scip_metadata_error_rate -Time spent acquiring an HTTP connection to the upstream, either from an existing pool OR by performing DNS resolution, TCP connection, etc. +

Job invocation operation error rate over 5m

This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/completions/completions?viewPanel=100142` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/codeintel-uploads/codeintel-uploads?viewPanel=101313` on your Sourcegraph instance. +*Managed by the Sourcegraph Code Understanding team.*
Technical details @@ -33904,22 +32402,25 @@ To see this panel, visit `/-/debug/grafana/d/completions/completions?viewPanel=1 Query: ``` -histogram_quantile(0.75, sum(rate(src_completions_upstream_connection_total_duration_seconds_bucket[$sampling_duration])) by (le, connection_type, provider)) +sum by (op)(increase(src_codeintel_uploads_reconciler_scip_metadata_errors_total{job=~"^${source:regex}.*"}[5m])) / (sum by (op)(increase(src_codeintel_uploads_reconciler_scip_metadata_total{job=~"^${source:regex}.*"}[5m])) + sum by (op)(increase(src_codeintel_uploads_reconciler_scip_metadata_errors_total{job=~"^${source:regex}.*"}[5m]))) * 100 ```

-#### completions: chat_completions_p50_http_connect_total +### Code Intelligence > Uploads: Codeintel: Uploads > Reconciler task > Codeintel uploads reconciler scip data + +#### codeintel-uploads: codeintel_uploads_reconciler_scip_data_records_scanned_total -

Stream: HTTP connect: total (p50)

+

Records scanned every 5m

-Time spent acquiring an HTTP connection to the upstream, either from an existing pool OR by performing DNS resolution, TCP connection, etc. +The number of candidate records considered for cleanup. This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/completions/completions?viewPanel=100143` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/codeintel-uploads/codeintel-uploads?viewPanel=101400` on your Sourcegraph instance. +*Managed by the Sourcegraph Code Understanding team.*
Technical details @@ -33927,22 +32428,23 @@ To see this panel, visit `/-/debug/grafana/d/completions/completions?viewPanel=1 Query: ``` -histogram_quantile(0.50, sum(rate(src_completions_upstream_connection_total_duration_seconds_bucket[$sampling_duration])) by (le, connection_type, provider)) +sum(increase(src_codeintel_uploads_reconciler_scip_data_records_scanned_total{job=~"^${source:regex}.*"}[5m])) ```

-#### completions: chat_completions_p99_http_connect_dns +#### codeintel-uploads: codeintel_uploads_reconciler_scip_data_records_altered_total -

Stream: HTTP connect: dns (p99)

+

Records altered every 5m

-Portion of time spent on DNS when acquiring an HTTP connection to the upstream. +The number of candidate records altered as part of cleanup. This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/completions/completions?viewPanel=100150` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/codeintel-uploads/codeintel-uploads?viewPanel=101401` on your Sourcegraph instance. +*Managed by the Sourcegraph Code Understanding team.*
Technical details @@ -33950,22 +32452,21 @@ To see this panel, visit `/-/debug/grafana/d/completions/completions?viewPanel=1 Query: ``` -histogram_quantile(0.99, sum(rate(src_completions_upstream_connection_dns_duration_seconds_bucket[$sampling_duration])) by (le, provider)) +sum(increase(src_codeintel_uploads_reconciler_scip_data_records_altered_total{job=~"^${source:regex}.*"}[5m])) ```

-#### completions: chat_completions_p95_http_connect_dns - -

Stream: HTTP connect: dns (p95)

+#### codeintel-uploads: codeintel_uploads_reconciler_scip_data_total -Portion of time spent on DNS when acquiring an HTTP connection to the upstream. +

Job invocation operations every 5m

This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/completions/completions?viewPanel=100151` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/codeintel-uploads/codeintel-uploads?viewPanel=101410` on your Sourcegraph instance. +*Managed by the Sourcegraph Code Understanding team.*
Technical details @@ -33973,22 +32474,21 @@ To see this panel, visit `/-/debug/grafana/d/completions/completions?viewPanel=1 Query: ``` -histogram_quantile(0.95, sum(rate(src_completions_upstream_connection_dns_duration_seconds_bucket[$sampling_duration])) by (le, provider)) +sum by (op)(increase(src_codeintel_uploads_reconciler_scip_data_total{job=~"^${source:regex}.*"}[5m])) ```

-#### completions: chat_completions_p75_http_connect_dns - -

Stream: HTTP connect: dns (p75)

+#### codeintel-uploads: codeintel_uploads_reconciler_scip_data_99th_percentile_duration -Portion of time spent on DNS when acquiring an HTTP connection to the upstream. +

99th percentile successful job invocation operation duration over 5m

This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/completions/completions?viewPanel=100152` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/codeintel-uploads/codeintel-uploads?viewPanel=101411` on your Sourcegraph instance. +*Managed by the Sourcegraph Code Understanding team.*
Technical details @@ -33996,22 +32496,21 @@ To see this panel, visit `/-/debug/grafana/d/completions/completions?viewPanel=1 Query: ``` -histogram_quantile(0.75, sum(rate(src_completions_upstream_connection_dns_duration_seconds_bucket[$sampling_duration])) by (le, provider)) +histogram_quantile(0.99, sum by (le,op)(rate(src_codeintel_uploads_reconciler_scip_data_duration_seconds_bucket{job=~"^${source:regex}.*"}[5m]))) ```

-#### completions: chat_completions_p50_http_connect_dns - -

Stream: HTTP connect: dns (p50)

+#### codeintel-uploads: codeintel_uploads_reconciler_scip_data_errors_total -Portion of time spent on DNS when acquiring an HTTP connection to the upstream. +

Job invocation operation errors every 5m

This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/completions/completions?viewPanel=100153` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/codeintel-uploads/codeintel-uploads?viewPanel=101412` on your Sourcegraph instance. +*Managed by the Sourcegraph Code Understanding team.*
Technical details @@ -34019,22 +32518,21 @@ To see this panel, visit `/-/debug/grafana/d/completions/completions?viewPanel=1 Query: ``` -histogram_quantile(0.50, sum(rate(src_completions_upstream_connection_dns_duration_seconds_bucket[$sampling_duration])) by (le, provider)) +sum by (op)(increase(src_codeintel_uploads_reconciler_scip_data_errors_total{job=~"^${source:regex}.*"}[5m])) ```

-#### completions: chat_completions_p99_http_connect_tls - -

Stream: HTTP connect: tls (p99)

+#### codeintel-uploads: codeintel_uploads_reconciler_scip_data_error_rate -Portion of time spent on TLS when acquiring an HTTP connection to the upstream. +

Job invocation operation error rate over 5m

This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/completions/completions?viewPanel=100160` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/codeintel-uploads/codeintel-uploads?viewPanel=101413` on your Sourcegraph instance. +*Managed by the Sourcegraph Code Understanding team.*
Technical details @@ -34042,22 +32540,31 @@ To see this panel, visit `/-/debug/grafana/d/completions/completions?viewPanel=1 Query: ``` -histogram_quantile(0.99, sum(rate(src_completions_upstream_connection_tls_duration_seconds_bucket[$sampling_duration])) by (le, provider)) +sum by (op)(increase(src_codeintel_uploads_reconciler_scip_data_errors_total{job=~"^${source:regex}.*"}[5m])) / (sum by (op)(increase(src_codeintel_uploads_reconciler_scip_data_total{job=~"^${source:regex}.*"}[5m])) + sum by (op)(increase(src_codeintel_uploads_reconciler_scip_data_errors_total{job=~"^${source:regex}.*"}[5m]))) * 100 ```

-#### completions: chat_completions_p95_http_connect_tls +## Telemetry + +

Monitoring telemetry services in Sourcegraph.

+ +To see this dashboard, visit `/-/debug/grafana/d/telemetry/telemetry` on your Sourcegraph instance. + +### Telemetry: Telemetry Gateway Exporter: Events export and queue metrics + +#### telemetry: telemetry_gateway_exporter_queue_size -

Stream: HTTP connect: tls (p95)

+

Telemetry event payloads pending export

-Portion of time spent on TLS when acquiring an HTTP connection to the upstream. +The number of events queued to be exported. This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/completions/completions?viewPanel=100161` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/telemetry/telemetry?viewPanel=100000` on your Sourcegraph instance. +*Managed by the Sourcegraph Services team.*
Technical details @@ -34065,22 +32572,23 @@ To see this panel, visit `/-/debug/grafana/d/completions/completions?viewPanel=1 Query: ``` -histogram_quantile(0.95, sum(rate(src_completions_upstream_connection_tls_duration_seconds_bucket[$sampling_duration])) by (le, provider)) +sum(src_telemetrygatewayexporter_queue_size) ```

-#### completions: chat_completions_p75_http_connect_tls +#### telemetry: telemetry_gateway_exporter_queue_growth -

Stream: HTTP connect: tls (p75)

+

Rate of growth of events export queue over 30m

-Portion of time spent on TLS when acquiring an HTTP connection to the upstream. +A positive value indicates the queue is growing. -This panel has no related alerts. +Refer to the [alerts reference](alerts#telemetry-telemetry_gateway_exporter_queue_growth) for 2 alerts related to this panel. -To see this panel, visit `/-/debug/grafana/d/completions/completions?viewPanel=100162` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/telemetry/telemetry?viewPanel=100001` on your Sourcegraph instance. +*Managed by the Sourcegraph Services team.*
Technical details @@ -34088,22 +32596,23 @@ To see this panel, visit `/-/debug/grafana/d/completions/completions?viewPanel=1 Query: ``` -histogram_quantile(0.75, sum(rate(src_completions_upstream_connection_tls_duration_seconds_bucket[$sampling_duration])) by (le, provider)) +max(deriv(src_telemetrygatewayexporter_queue_size[30m])) ```

-#### completions: chat_completions_p50_http_connect_tls +#### telemetry: src_telemetrygatewayexporter_exported_events -

Stream: HTTP connect: tls (p50)

+

Events exported from queue per hour

-Portion of time spent on TLS when acquiring an HTTP connection to the upstream. +The number of events being exported. This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/completions/completions?viewPanel=100163` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/telemetry/telemetry?viewPanel=100010` on your Sourcegraph instance. +*Managed by the Sourcegraph Services team.*
Technical details @@ -34111,22 +32620,24 @@ To see this panel, visit `/-/debug/grafana/d/completions/completions?viewPanel=1 Query: ``` -histogram_quantile(0.50, sum(rate(src_completions_upstream_connection_tls_duration_seconds_bucket[$sampling_duration])) by (le, provider)) +max(increase(src_telemetrygatewayexporter_exported_events[1h])) ```

-#### completions: chat_completions_p99_http_connect_dial +#### telemetry: telemetry_gateway_exporter_batch_size -

Stream: HTTP connect: dial (p99)

+

Number of events exported per batch over 30m

-Portion of time spent on golang Dial() when acquiring an HTTP connection to the upstream. +The number of events exported in each batch. The largest bucket is the maximum number of events exported per batch. +If the distribution trends to the maximum bucket, then events export throughput is at or approaching saturation - try increasing `TELEMETRY_GATEWAY_EXPORTER_EXPORT_BATCH_SIZE` or decreasing `TELEMETRY_GATEWAY_EXPORTER_EXPORT_INTERVAL`. This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/completions/completions?viewPanel=100170` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/telemetry/telemetry?viewPanel=100011` on your Sourcegraph instance. +*Managed by the Sourcegraph Services team.*
Technical details @@ -34134,22 +32645,23 @@ To see this panel, visit `/-/debug/grafana/d/completions/completions?viewPanel=1 Query: ``` -histogram_quantile(0.99, sum(rate(src_completions_upstream_connection_dial_duration_seconds_bucket[$sampling_duration])) by (le, provider)) +sum by (le) (rate(src_telemetrygatewayexporter_batch_size_bucket[30m])) ```

-#### completions: chat_completions_p95_http_connect_dial +### Telemetry: Telemetry Gateway Exporter: Events export job operations -

Stream: HTTP connect: dial (p95)

+#### telemetry: telemetrygatewayexporter_exporter_total -Portion of time spent on golang Dial() when acquiring an HTTP connection to the upstream. +

Events exporter operations every 30m

This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/completions/completions?viewPanel=100171` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/telemetry/telemetry?viewPanel=100100` on your Sourcegraph instance. +*Managed by the Sourcegraph Services team.*
Technical details @@ -34157,22 +32669,21 @@ To see this panel, visit `/-/debug/grafana/d/completions/completions?viewPanel=1 Query: ``` -histogram_quantile(0.95, sum(rate(src_completions_upstream_connection_dial_duration_seconds_bucket[$sampling_duration])) by (le, provider)) +sum(increase(src_telemetrygatewayexporter_exporter_total{job=~"^worker.*"}[30m])) ```

-#### completions: chat_completions_p75_http_connect_dial - -

Stream: HTTP connect: dial (p75)

+#### telemetry: telemetrygatewayexporter_exporter_99th_percentile_duration -Portion of time spent on golang Dial() when acquiring an HTTP connection to the upstream. +

Aggregate successful events exporter operation duration distribution over 30m

This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/completions/completions?viewPanel=100172` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/telemetry/telemetry?viewPanel=100101` on your Sourcegraph instance. +*Managed by the Sourcegraph Services team.*
Technical details @@ -34180,22 +32691,21 @@ To see this panel, visit `/-/debug/grafana/d/completions/completions?viewPanel=1 Query: ``` -histogram_quantile(0.75, sum(rate(src_completions_upstream_connection_dial_duration_seconds_bucket[$sampling_duration])) by (le, provider)) +sum by (le)(rate(src_telemetrygatewayexporter_exporter_duration_seconds_bucket{job=~"^worker.*"}[30m])) ```

-#### completions: chat_completions_p50_http_connect_dial - -

Stream: HTTP connect: dial (p50)

+#### telemetry: telemetrygatewayexporter_exporter_errors_total -Portion of time spent on golang Dial() when acquiring an HTTP connection to the upstream. +

Events exporter operation errors every 30m

-This panel has no related alerts. +Refer to the [alerts reference](alerts#telemetry-telemetrygatewayexporter_exporter_errors_total) for 1 alert related to this panel. -To see this panel, visit `/-/debug/grafana/d/completions/completions?viewPanel=100173` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/telemetry/telemetry?viewPanel=100102` on your Sourcegraph instance. +*Managed by the Sourcegraph Services team.*
Technical details @@ -34203,24 +32713,21 @@ To see this panel, visit `/-/debug/grafana/d/completions/completions?viewPanel=1 Query: ``` -histogram_quantile(0.50, sum(rate(src_completions_upstream_connection_dial_duration_seconds_bucket[$sampling_duration])) by (le, provider)) +sum(increase(src_telemetrygatewayexporter_exporter_errors_total{job=~"^worker.*"}[30m])) ```

-### Completions: Code completions - -#### completions: code_completions_p99_stream_duration - -

Stream: total time (p99)

+#### telemetry: telemetrygatewayexporter_exporter_error_rate -Time spent on the Stream() invocation, i.e. how long results take to connect, stream results, and finish streaming. +

Events exporter operation error rate over 30m

This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/completions/completions?viewPanel=100200` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/telemetry/telemetry?viewPanel=100103` on your Sourcegraph instance. +*Managed by the Sourcegraph Services team.*
Technical details @@ -34228,22 +32735,23 @@ To see this panel, visit `/-/debug/grafana/d/completions/completions?viewPanel=1 Query: ``` -histogram_quantile(0.99, sum(rate(src_completions_stream_duration_seconds_bucket{feature="code_completions",model=~'${model}'}[$sampling_duration])) by (le, model)) +sum(increase(src_telemetrygatewayexporter_exporter_errors_total{job=~"^worker.*"}[30m])) / (sum(increase(src_telemetrygatewayexporter_exporter_total{job=~"^worker.*"}[30m])) + sum(increase(src_telemetrygatewayexporter_exporter_errors_total{job=~"^worker.*"}[30m]))) * 100 ```

-#### completions: code_completions_p95_stream_duration +### Telemetry: Telemetry Gateway Exporter: Events export queue cleanup job operations -

Stream: total time (p95)

+#### telemetry: telemetrygatewayexporter_queue_cleanup_total -Time spent on the Stream() invocation, i.e. how long results take to connect, stream results, and finish streaming. +

Events export queue cleanup operations every 30m

This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/completions/completions?viewPanel=100201` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/telemetry/telemetry?viewPanel=100200` on your Sourcegraph instance. +*Managed by the Sourcegraph Services team.*
Technical details @@ -34251,22 +32759,21 @@ To see this panel, visit `/-/debug/grafana/d/completions/completions?viewPanel=1 Query: ``` -histogram_quantile(0.95, sum(rate(src_completions_stream_duration_seconds_bucket{feature="code_completions",model=~'${model}'}[$sampling_duration])) by (le, model)) +sum(increase(src_telemetrygatewayexporter_queue_cleanup_total{job=~"^worker.*"}[30m])) ```

-#### completions: code_completions_p75_stream_duration - -

Stream: total time (p75)

+#### telemetry: telemetrygatewayexporter_queue_cleanup_99th_percentile_duration -Time spent on the Stream() invocation, i.e. how long results take to connect, stream results, and finish streaming. +

Aggregate successful events export queue cleanup operation duration distribution over 30m

This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/completions/completions?viewPanel=100202` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/telemetry/telemetry?viewPanel=100201` on your Sourcegraph instance. +*Managed by the Sourcegraph Services team.*
Technical details @@ -34274,22 +32781,21 @@ To see this panel, visit `/-/debug/grafana/d/completions/completions?viewPanel=1 Query: ``` -histogram_quantile(0.75, sum(rate(src_completions_stream_duration_seconds_bucket{feature="code_completions",model=~'${model}'}[$sampling_duration])) by (le, model)) +sum by (le)(rate(src_telemetrygatewayexporter_queue_cleanup_duration_seconds_bucket{job=~"^worker.*"}[30m])) ```

-#### completions: code_completions_p50_stream_duration - -

Stream: total time (p50)

+#### telemetry: telemetrygatewayexporter_queue_cleanup_errors_total -Time spent on the Stream() invocation, i.e. how long results take to connect, stream results, and finish streaming. +

Events export queue cleanup operation errors every 30m

-This panel has no related alerts. +Refer to the [alerts reference](alerts#telemetry-telemetrygatewayexporter_queue_cleanup_errors_total) for 1 alert related to this panel. -To see this panel, visit `/-/debug/grafana/d/completions/completions?viewPanel=100203` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/telemetry/telemetry?viewPanel=100202` on your Sourcegraph instance. +*Managed by the Sourcegraph Services team.*
Technical details @@ -34297,22 +32803,21 @@ To see this panel, visit `/-/debug/grafana/d/completions/completions?viewPanel=1 Query: ``` -histogram_quantile(0.50, sum(rate(src_completions_stream_duration_seconds_bucket{feature="code_completions",model=~'${model}'}[$sampling_duration])) by (le, model)) +sum(increase(src_telemetrygatewayexporter_queue_cleanup_errors_total{job=~"^worker.*"}[30m])) ```

-#### completions: code_completions_p99_non_stream_overhead_duration - -

Non-stream overhead (p99)

+#### telemetry: telemetrygatewayexporter_queue_cleanup_error_rate -Time between Go HTTP handler invocation and Stream() invocation, overhead of e.g. request validation, routing to gateway/other, model resolution, error reporting/tracing, guardrails, etc. +

Events export queue cleanup operation error rate over 30m

This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/completions/completions?viewPanel=100210` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/telemetry/telemetry?viewPanel=100203` on your Sourcegraph instance. +*Managed by the Sourcegraph Services team.*
Technical details @@ -34320,22 +32825,23 @@ To see this panel, visit `/-/debug/grafana/d/completions/completions?viewPanel=1 Query: ``` -histogram_quantile(0.99, sum(rate(src_completions_handler_overhead_duration_seconds_bucket{feature="code_completions",model=~'${model}'}[$sampling_duration])) by (le,model)) +sum(increase(src_telemetrygatewayexporter_queue_cleanup_errors_total{job=~"^worker.*"}[30m])) / (sum(increase(src_telemetrygatewayexporter_queue_cleanup_total{job=~"^worker.*"}[30m])) + sum(increase(src_telemetrygatewayexporter_queue_cleanup_errors_total{job=~"^worker.*"}[30m]))) * 100 ```

-#### completions: code_completions_p95_non_stream_overhead_duration +### Telemetry: Telemetry Gateway Exporter: Events export queue metrics reporting job operations -

Non-stream overhead (p95)

+#### telemetry: telemetrygatewayexporter_queue_metrics_reporter_total -Time between Go HTTP handler invocation and Stream() invocation, overhead of e.g. request validation, routing to gateway/other, model resolution, error reporting/tracing, guardrails, etc. +

Events export backlog metrics reporting operations every 30m

This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/completions/completions?viewPanel=100211` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/telemetry/telemetry?viewPanel=100300` on your Sourcegraph instance. +*Managed by the Sourcegraph Services team.*
Technical details @@ -34343,22 +32849,21 @@ To see this panel, visit `/-/debug/grafana/d/completions/completions?viewPanel=1 Query: ``` -histogram_quantile(0.95, sum(rate(src_completions_handler_overhead_duration_seconds_bucket{feature="code_completions",model=~'${model}'}[$sampling_duration])) by (le,model)) +sum(increase(src_telemetrygatewayexporter_queue_metrics_reporter_total{job=~"^worker.*"}[30m])) ```

-#### completions: code_completions_p75_non_stream_overhead_duration - -

Non-stream overhead (p75)

+#### telemetry: telemetrygatewayexporter_queue_metrics_reporter_99th_percentile_duration -Time between Go HTTP handler invocation and Stream() invocation, overhead of e.g. request validation, routing to gateway/other, model resolution, error reporting/tracing, guardrails, etc. +

Aggregate successful events export backlog metrics reporting operation duration distribution over 30m

This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/completions/completions?viewPanel=100212` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/telemetry/telemetry?viewPanel=100301` on your Sourcegraph instance. +*Managed by the Sourcegraph Services team.*
Technical details @@ -34366,22 +32871,21 @@ To see this panel, visit `/-/debug/grafana/d/completions/completions?viewPanel=1 Query: ``` -histogram_quantile(0.75, sum(rate(src_completions_handler_overhead_duration_seconds_bucket{feature="code_completions",model=~'${model}'}[$sampling_duration])) by (le,model)) +sum by (le)(rate(src_telemetrygatewayexporter_queue_metrics_reporter_duration_seconds_bucket{job=~"^worker.*"}[30m])) ```

-#### completions: code_completions_p50_non_stream_overhead_duration - -

Non-stream overhead (p50)

+#### telemetry: telemetrygatewayexporter_queue_metrics_reporter_errors_total -Time between Go HTTP handler invocation and Stream() invocation, overhead of e.g. request validation, routing to gateway/other, model resolution, error reporting/tracing, guardrails, etc. +

Events export backlog metrics reporting operation errors every 30m

-This panel has no related alerts. +Refer to the [alerts reference](alerts#telemetry-telemetrygatewayexporter_queue_metrics_reporter_errors_total) for 1 alert related to this panel. -To see this panel, visit `/-/debug/grafana/d/completions/completions?viewPanel=100213` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/telemetry/telemetry?viewPanel=100302` on your Sourcegraph instance. +*Managed by the Sourcegraph Services team.*
Technical details @@ -34389,22 +32893,21 @@ To see this panel, visit `/-/debug/grafana/d/completions/completions?viewPanel=1 Query: ``` -histogram_quantile(0.50, sum(rate(src_completions_handler_overhead_duration_seconds_bucket{feature="code_completions",model=~'${model}'}[$sampling_duration])) by (le,model)) +sum(increase(src_telemetrygatewayexporter_queue_metrics_reporter_errors_total{job=~"^worker.*"}[30m])) ```

-#### completions: code_completions_p99_stream_first_event_duration - -

Stream: time to first event (p99)

+#### telemetry: telemetrygatewayexporter_queue_metrics_reporter_error_rate -Time between calling Stream(), the client connecting to the server etc. and actually getting the first streaming event back. +

Events export backlog metrics reporting operation error rate over 30m

This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/completions/completions?viewPanel=100220` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/telemetry/telemetry?viewPanel=100303` on your Sourcegraph instance. +*Managed by the Sourcegraph Services team.*
Technical details @@ -34412,22 +32915,25 @@ To see this panel, visit `/-/debug/grafana/d/completions/completions?viewPanel=1 Query: ``` -histogram_quantile(0.99, sum(rate(src_completions_stream_first_event_duration_seconds_bucket{feature="code_completions",model=~'${model}'}[$sampling_duration])) by (le, model)) +sum(increase(src_telemetrygatewayexporter_queue_metrics_reporter_errors_total{job=~"^worker.*"}[30m])) / (sum(increase(src_telemetrygatewayexporter_queue_metrics_reporter_total{job=~"^worker.*"}[30m])) + sum(increase(src_telemetrygatewayexporter_queue_metrics_reporter_errors_total{job=~"^worker.*"}[30m]))) * 100 ```

-#### completions: code_completions_p95_stream_first_event_duration +### Telemetry: Telemetry persistence -

Stream: time to first event (p95)

+#### telemetry: telemetry_v2_export_queue_write_failures -Time between calling Stream(), the client connecting to the server etc. and actually getting the first streaming event back. +

Failed writes to events export queue over 5m

-This panel has no related alerts. +Telemetry V2 writes send events into the `telemetry_events_export_queue` for the exporter to periodically export. + +Refer to the [alerts reference](alerts#telemetry-telemetry_v2_export_queue_write_failures) for 2 alerts related to this panel. -To see this panel, visit `/-/debug/grafana/d/completions/completions?viewPanel=100221` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/telemetry/telemetry?viewPanel=100400` on your Sourcegraph instance. +*Managed by the Sourcegraph Services team.*
Technical details @@ -34435,22 +32941,23 @@ To see this panel, visit `/-/debug/grafana/d/completions/completions?viewPanel=1 Query: ``` -histogram_quantile(0.95, sum(rate(src_completions_stream_first_event_duration_seconds_bucket{feature="code_completions",model=~'${model}'}[$sampling_duration])) by (le, model)) +(sum(increase(src_telemetry_export_store_queued_events{failed="true"}[5m])) / sum(increase(src_telemetry_export_store_queued_events[5m]))) * 100 ```

-#### completions: code_completions_p75_stream_first_event_duration +#### telemetry: telemetry_v2_event_logs_write_failures -

Stream: time to first event (p75)

+

Failed write V2 events to V1 'event_logs' over 5m

-Time between calling Stream(), the client connecting to the server etc. and actually getting the first streaming event back. +Telemetry V2 writes also attempt to `tee` events into the legacy V1 events format in the `event_logs` database table for long-term local persistence. -This panel has no related alerts. +Refer to the [alerts reference](alerts#telemetry-telemetry_v2_event_logs_write_failures) for 1 alert related to this panel. -To see this panel, visit `/-/debug/grafana/d/completions/completions?viewPanel=100222` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/telemetry/telemetry?viewPanel=100401` on your Sourcegraph instance. +*Managed by the Sourcegraph Services team.*
Technical details @@ -34458,22 +32965,23 @@ To see this panel, visit `/-/debug/grafana/d/completions/completions?viewPanel=1 Query: ``` -histogram_quantile(0.75, sum(rate(src_completions_stream_first_event_duration_seconds_bucket{feature="code_completions",model=~'${model}'}[$sampling_duration])) by (le, model)) +(sum(increase(src_telemetry_teestore_v1_events{failed="true"}[5m])) / sum(increase(src_telemetry_teestore_v1_events[5m]))) * 100 ```

-#### completions: code_completions_p50_stream_first_event_duration +### Telemetry: Telemetry Gateway Exporter: (off by default) User metadata export job operations -

Stream: time to first event (p50)

+#### telemetry: telemetrygatewayexporter_usermetadata_exporter_total -Time between calling Stream(), the client connecting to the server etc. and actually getting the first streaming event back. +

(off by default) user metadata exporter operations every 30m

This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/completions/completions?viewPanel=100223` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/telemetry/telemetry?viewPanel=100500` on your Sourcegraph instance. +*Managed by the Sourcegraph Services team.*
Technical details @@ -34481,22 +32989,21 @@ To see this panel, visit `/-/debug/grafana/d/completions/completions?viewPanel=1 Query: ``` -histogram_quantile(0.50, sum(rate(src_completions_stream_first_event_duration_seconds_bucket{feature="code_completions",model=~'${model}'}[$sampling_duration])) by (le, model)) +sum(increase(src_telemetrygatewayexporter_usermetadata_exporter_total{job=~"^worker.*"}[30m])) ```

-#### completions: code_completions_p99_upstream_roundtrip_duration - -

Stream: first byte sent -> received (p99)

+#### telemetry: telemetrygatewayexporter_usermetadata_exporter_99th_percentile_duration -Time between sending the first byte to the upstream, and then getting the first byte back from the upstream. +

Aggregate successful (off by default) user metadata exporter operation duration distribution over 30m

This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/completions/completions?viewPanel=100230` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/telemetry/telemetry?viewPanel=100501` on your Sourcegraph instance. +*Managed by the Sourcegraph Services team.*
Technical details @@ -34504,22 +33011,21 @@ To see this panel, visit `/-/debug/grafana/d/completions/completions?viewPanel=1 Query: ``` -histogram_quantile(0.99, sum(rate(src_completions_upstream_roundtrip_duration_seconds_bucket{feature="code_completions",model=~'${model}'}[$sampling_duration])) by (le, provider)) +sum by (le)(rate(src_telemetrygatewayexporter_usermetadata_exporter_duration_seconds_bucket{job=~"^worker.*"}[30m])) ```

-#### completions: code_completions_p95_upstream_roundtrip_duration - -

Stream: first byte sent -> received (p95)

+#### telemetry: telemetrygatewayexporter_usermetadata_exporter_errors_total -Time between sending the first byte to the upstream, and then getting the first byte back from the upstream. +

(off by default) user metadata exporter operation errors every 30m

-This panel has no related alerts. +Refer to the [alerts reference](alerts#telemetry-telemetrygatewayexporter_usermetadata_exporter_errors_total) for 1 alert related to this panel. -To see this panel, visit `/-/debug/grafana/d/completions/completions?viewPanel=100231` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/telemetry/telemetry?viewPanel=100502` on your Sourcegraph instance. +*Managed by the Sourcegraph Services team.*
Technical details @@ -34527,22 +33033,21 @@ To see this panel, visit `/-/debug/grafana/d/completions/completions?viewPanel=1 Query: ``` -histogram_quantile(0.95, sum(rate(src_completions_upstream_roundtrip_duration_seconds_bucket{feature="code_completions",model=~'${model}'}[$sampling_duration])) by (le, provider)) +sum(increase(src_telemetrygatewayexporter_usermetadata_exporter_errors_total{job=~"^worker.*"}[30m])) ```

-#### completions: code_completions_p75_upstream_roundtrip_duration - -

Stream: first byte sent -> received (p75)

+#### telemetry: telemetrygatewayexporter_usermetadata_exporter_error_rate -Time between sending the first byte to the upstream, and then getting the first byte back from the upstream. +

(off by default) user metadata exporter operation error rate over 30m

This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/completions/completions?viewPanel=100232` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/telemetry/telemetry?viewPanel=100503` on your Sourcegraph instance. +*Managed by the Sourcegraph Services team.*
Technical details @@ -34550,22 +33055,40 @@ To see this panel, visit `/-/debug/grafana/d/completions/completions?viewPanel=1 Query: ``` -histogram_quantile(0.75, sum(rate(src_completions_upstream_roundtrip_duration_seconds_bucket{feature="code_completions",model=~'${model}'}[$sampling_duration])) by (le, provider)) +sum(increase(src_telemetrygatewayexporter_usermetadata_exporter_errors_total{job=~"^worker.*"}[30m])) / (sum(increase(src_telemetrygatewayexporter_usermetadata_exporter_total{job=~"^worker.*"}[30m])) + sum(increase(src_telemetrygatewayexporter_usermetadata_exporter_errors_total{job=~"^worker.*"}[30m]))) * 100 ```

-#### completions: code_completions_p50_upstream_roundtrip_duration +## OpenTelemetry Collector + +

The OpenTelemetry collector ingests OpenTelemetry data from Sourcegraph and exports it to the configured backends.

+ +To see this dashboard, visit `/-/debug/grafana/d/otel-collector/otel-collector` on your Sourcegraph instance. + +### OpenTelemetry Collector: Receivers + +#### otel-collector: otel_span_receive_rate + +

Spans received per receiver per minute

+ +Shows the rate of spans accepted by the configured reveiver + +A Trace is a collection of spans and a span represents a unit of work or operation. Spans are the building blocks of Traces. +The spans have only been accepted by the receiver, which means they still have to move through the configured pipeline to be exported. +For more information on tracing and configuration of a OpenTelemetry receiver see https://opentelemetry.io/docs/collector/configuration/#receivers. -

Stream: first byte sent -> received (p50)

+See the Exporters section see spans that have made it through the pipeline and are exported. -Time between sending the first byte to the upstream, and then getting the first byte back from the upstream. +Depending the configured processors, received spans might be dropped and not exported. For more information on configuring processors see +https://opentelemetry.io/docs/collector/configuration/#processors. This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/completions/completions?viewPanel=100233` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/otel-collector/otel-collector?viewPanel=100000` on your Sourcegraph instance. +*Managed by the Sourcegraph Platform team.*
Technical details @@ -34573,22 +33096,23 @@ To see this panel, visit `/-/debug/grafana/d/completions/completions?viewPanel=1 Query: ``` -histogram_quantile(0.50, sum(rate(src_completions_upstream_roundtrip_duration_seconds_bucket{feature="code_completions",model=~'${model}'}[$sampling_duration])) by (le, provider)) +sum by (receiver) (rate(otelcol_receiver_accepted_spans[1m])) ```

-#### completions: code_completions_p99_http_connect_total +#### otel-collector: otel_span_refused + +

Spans refused per receiver

-

Stream: HTTP connect: total (p99)

-Time spent acquiring an HTTP connection to the upstream, either from an existing pool OR by performing DNS resolution, TCP connection, etc. -This panel has no related alerts. +Refer to the [alerts reference](alerts#otel-collector-otel_span_refused) for 1 alert related to this panel. -To see this panel, visit `/-/debug/grafana/d/completions/completions?viewPanel=100240` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/otel-collector/otel-collector?viewPanel=100001` on your Sourcegraph instance. +*Managed by the Sourcegraph Platform team.*
Technical details @@ -34596,22 +33120,30 @@ To see this panel, visit `/-/debug/grafana/d/completions/completions?viewPanel=1 Query: ``` -histogram_quantile(0.99, sum(rate(src_completions_upstream_connection_total_duration_seconds_bucket[$sampling_duration])) by (le, connection_type, provider)) +sum by (receiver) (rate(otelcol_receiver_refused_spans[1m])) ```

-#### completions: code_completions_p95_http_connect_total +### OpenTelemetry Collector: Exporters + +#### otel-collector: otel_span_export_rate + +

Spans exported per exporter per minute

+ +Shows the rate of spans being sent by the exporter -

Stream: HTTP connect: total (p95)

+A Trace is a collection of spans. A Span represents a unit of work or operation. Spans are the building blocks of Traces. +The rate of spans here indicates spans that have made it through the configured pipeline and have been sent to the configured export destination. -Time spent acquiring an HTTP connection to the upstream, either from an existing pool OR by performing DNS resolution, TCP connection, etc. +For more information on configuring a exporter for the OpenTelemetry collector see https://opentelemetry.io/docs/collector/configuration/#exporters. This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/completions/completions?viewPanel=100241` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/otel-collector/otel-collector?viewPanel=100100` on your Sourcegraph instance. +*Managed by the Sourcegraph Platform team.*
Technical details @@ -34619,22 +33151,25 @@ To see this panel, visit `/-/debug/grafana/d/completions/completions?viewPanel=1 Query: ``` -histogram_quantile(0.95, sum(rate(src_completions_upstream_connection_total_duration_seconds_bucket[$sampling_duration])) by (le, connection_type, provider)) +sum by (exporter) (rate(otelcol_exporter_sent_spans[1m])) ```

-#### completions: code_completions_p75_http_connect_total +#### otel-collector: otel_span_export_failures -

Stream: HTTP connect: total (p75)

+

Span export failures by exporter

-Time spent acquiring an HTTP connection to the upstream, either from an existing pool OR by performing DNS resolution, TCP connection, etc. +Shows the rate of spans failed to be sent by the configured reveiver. A number higher than 0 for a long period can indicate a problem with the exporter configuration or with the service that is being exported too -This panel has no related alerts. +For more information on configuring a exporter for the OpenTelemetry collector see https://opentelemetry.io/docs/collector/configuration/#exporters. + +Refer to the [alerts reference](alerts#otel-collector-otel_span_export_failures) for 1 alert related to this panel. -To see this panel, visit `/-/debug/grafana/d/completions/completions?viewPanel=100242` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/otel-collector/otel-collector?viewPanel=100101` on your Sourcegraph instance. +*Managed by the Sourcegraph Platform team.*
Technical details @@ -34642,22 +33177,25 @@ To see this panel, visit `/-/debug/grafana/d/completions/completions?viewPanel=1 Query: ``` -histogram_quantile(0.75, sum(rate(src_completions_upstream_connection_total_duration_seconds_bucket[$sampling_duration])) by (le, connection_type, provider)) +sum by (exporter) (rate(otelcol_exporter_send_failed_spans[1m])) ```

-#### completions: code_completions_p50_http_connect_total +### OpenTelemetry Collector: Queue Length + +#### otel-collector: otelcol_exporter_queue_capacity -

Stream: HTTP connect: total (p50)

+

Exporter queue capacity

-Time spent acquiring an HTTP connection to the upstream, either from an existing pool OR by performing DNS resolution, TCP connection, etc. +Shows the the capacity of the retry queue (in batches). This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/completions/completions?viewPanel=100243` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/otel-collector/otel-collector?viewPanel=100200` on your Sourcegraph instance. +*Managed by the Sourcegraph Platform team.*
Technical details @@ -34665,22 +33203,23 @@ To see this panel, visit `/-/debug/grafana/d/completions/completions?viewPanel=1 Query: ``` -histogram_quantile(0.50, sum(rate(src_completions_upstream_connection_total_duration_seconds_bucket[$sampling_duration])) by (le, connection_type, provider)) +sum by (exporter) (rate(otelcol_exporter_queue_capacity{job=~"^.*"}[1m])) ```

-#### completions: code_completions_p99_http_connect_dns +#### otel-collector: otelcol_exporter_queue_size -

Stream: HTTP connect: dns (p99)

+

Exporter queue size

-Portion of time spent on DNS when acquiring an HTTP connection to the upstream. +Shows the current size of retry queue This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/completions/completions?viewPanel=100250` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/otel-collector/otel-collector?viewPanel=100201` on your Sourcegraph instance. +*Managed by the Sourcegraph Platform team.*
Technical details @@ -34688,22 +33227,23 @@ To see this panel, visit `/-/debug/grafana/d/completions/completions?viewPanel=1 Query: ``` -histogram_quantile(0.99, sum(rate(src_completions_upstream_connection_dns_duration_seconds_bucket[$sampling_duration])) by (le, provider)) +sum by (exporter) (rate(otelcol_exporter_queue_size{job=~"^.*"}[1m])) ```

-#### completions: code_completions_p95_http_connect_dns +#### otel-collector: otelcol_exporter_enqueue_failed_spans -

Stream: HTTP connect: dns (p95)

+

Exporter enqueue failed spans

-Portion of time spent on DNS when acquiring an HTTP connection to the upstream. +Shows the rate of spans failed to be enqueued by the configured exporter. A number higher than 0 for a long period can indicate a problem with the exporter configuration -This panel has no related alerts. +Refer to the [alerts reference](alerts#otel-collector-otelcol_exporter_enqueue_failed_spans) for 1 alert related to this panel. -To see this panel, visit `/-/debug/grafana/d/completions/completions?viewPanel=100251` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/otel-collector/otel-collector?viewPanel=100202` on your Sourcegraph instance. +*Managed by the Sourcegraph Platform team.*
Technical details @@ -34711,22 +33251,25 @@ To see this panel, visit `/-/debug/grafana/d/completions/completions?viewPanel=1 Query: ``` -histogram_quantile(0.95, sum(rate(src_completions_upstream_connection_dns_duration_seconds_bucket[$sampling_duration])) by (le, provider)) +sum by (exporter) (rate(otelcol_exporter_enqueue_failed_spans{job=~"^.*"}[1m])) ```

-#### completions: code_completions_p75_http_connect_dns +### OpenTelemetry Collector: Processors -

Stream: HTTP connect: dns (p75)

+#### otel-collector: otelcol_processor_dropped_spans -Portion of time spent on DNS when acquiring an HTTP connection to the upstream. +

Spans dropped per processor per minute

-This panel has no related alerts. +Shows the rate of spans dropped by the configured processor + +Refer to the [alerts reference](alerts#otel-collector-otelcol_processor_dropped_spans) for 1 alert related to this panel. -To see this panel, visit `/-/debug/grafana/d/completions/completions?viewPanel=100252` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/otel-collector/otel-collector?viewPanel=100300` on your Sourcegraph instance. +*Managed by the Sourcegraph Platform team.*
Technical details @@ -34734,22 +33277,25 @@ To see this panel, visit `/-/debug/grafana/d/completions/completions?viewPanel=1 Query: ``` -histogram_quantile(0.75, sum(rate(src_completions_upstream_connection_dns_duration_seconds_bucket[$sampling_duration])) by (le, provider)) +sum by (processor) (rate(otelcol_processor_dropped_spans[1m])) ```

-#### completions: code_completions_p50_http_connect_dns +### OpenTelemetry Collector: Collector resource usage + +#### otel-collector: otel_cpu_usage -

Stream: HTTP connect: dns (p50)

+

Cpu usage of the collector

-Portion of time spent on DNS when acquiring an HTTP connection to the upstream. +Shows CPU usage as reported by the OpenTelemetry collector. This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/completions/completions?viewPanel=100253` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/otel-collector/otel-collector?viewPanel=100400` on your Sourcegraph instance. +*Managed by the Sourcegraph Platform team.*
Technical details @@ -34757,22 +33303,23 @@ To see this panel, visit `/-/debug/grafana/d/completions/completions?viewPanel=1 Query: ``` -histogram_quantile(0.50, sum(rate(src_completions_upstream_connection_dns_duration_seconds_bucket[$sampling_duration])) by (le, provider)) +sum by (job) (rate(otelcol_process_cpu_seconds{job=~"^.*"}[1m])) ```

-#### completions: code_completions_p99_http_connect_tls +#### otel-collector: otel_memory_resident_set_size -

Stream: HTTP connect: tls (p99)

+

Memory allocated to the otel collector

-Portion of time spent on TLS when acquiring an HTTP connection to the upstream. +Shows the allocated memory Resident Set Size (RSS) as reported by the OpenTelemetry collector. This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/completions/completions?viewPanel=100260` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/otel-collector/otel-collector?viewPanel=100401` on your Sourcegraph instance. +*Managed by the Sourcegraph Platform team.*
Technical details @@ -34780,22 +33327,29 @@ To see this panel, visit `/-/debug/grafana/d/completions/completions?viewPanel=1 Query: ``` -histogram_quantile(0.99, sum(rate(src_completions_upstream_connection_tls_duration_seconds_bucket[$sampling_duration])) by (le, provider)) +sum by (job) (rate(otelcol_process_memory_rss{job=~"^.*"}[1m])) ```

-#### completions: code_completions_p95_http_connect_tls +#### otel-collector: otel_memory_usage + +

Memory used by the collector

+ +Shows how much memory is being used by the otel collector. -

Stream: HTTP connect: tls (p95)

+* High memory usage might indicate thad the configured pipeline is keeping a lot of spans in memory for processing +* Spans failing to be sent and the exporter is configured to retry +* A high batch count by using a batch processor -Portion of time spent on TLS when acquiring an HTTP connection to the upstream. +For more information on configuring processors for the OpenTelemetry collector see https://opentelemetry.io/docs/collector/configuration/#processors. This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/completions/completions?viewPanel=100261` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/otel-collector/otel-collector?viewPanel=100402` on your Sourcegraph instance. +*Managed by the Sourcegraph Platform team.*
Technical details @@ -34803,22 +33357,33 @@ To see this panel, visit `/-/debug/grafana/d/completions/completions?viewPanel=1 Query: ``` -histogram_quantile(0.95, sum(rate(src_completions_upstream_connection_tls_duration_seconds_bucket[$sampling_duration])) by (le, provider)) +sum by (job) (rate(otelcol_process_runtime_total_alloc_bytes{job=~"^.*"}[1m])) ```

-#### completions: code_completions_p75_http_connect_tls +### OpenTelemetry Collector: Container monitoring (not available on server) + +#### otel-collector: container_missing + +

Container missing

-

Stream: HTTP connect: tls (p75)

+This value is the number of times a container has not been seen for more than one minute. If you observe this +value change independent of deployment events (such as an upgrade), it could indicate pods are being OOM killed or terminated for some other reasons. -Portion of time spent on TLS when acquiring an HTTP connection to the upstream. +- **Kubernetes:** + - Determine if the pod was OOM killed using `kubectl describe pod otel-collector` (look for `OOMKilled: true`) and, if so, consider increasing the memory limit in the relevant `Deployment.yaml`. + - Check the logs before the container restarted to see if there are `panic:` messages or similar using `kubectl logs -p otel-collector`. +- **Docker Compose:** + - Determine if the pod was OOM killed using `docker inspect -f '\{\{json .State\}\}' otel-collector` (look for `"OOMKilled":true`) and, if so, consider increasing the memory limit of the otel-collector container in `docker-compose.yml`. + - Check the logs before the container restarted to see if there are `panic:` messages or similar using `docker logs otel-collector` (note this will include logs from the previous and currently running container). This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/completions/completions?viewPanel=100262` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/otel-collector/otel-collector?viewPanel=100500` on your Sourcegraph instance. +*Managed by the Sourcegraph Platform team.*
Technical details @@ -34826,22 +33391,21 @@ To see this panel, visit `/-/debug/grafana/d/completions/completions?viewPanel=1 Query: ``` -histogram_quantile(0.75, sum(rate(src_completions_upstream_connection_tls_duration_seconds_bucket[$sampling_duration])) by (le, provider)) +count by(name) ((time() - container_last_seen{name=~"^otel-collector.*"}) > 60) ```

-#### completions: code_completions_p50_http_connect_tls - -

Stream: HTTP connect: tls (p50)

+#### otel-collector: container_cpu_usage -Portion of time spent on TLS when acquiring an HTTP connection to the upstream. +

Container cpu usage total (1m average) across all cores by instance

-This panel has no related alerts. +Refer to the [alerts reference](alerts#otel-collector-container_cpu_usage) for 1 alert related to this panel. -To see this panel, visit `/-/debug/grafana/d/completions/completions?viewPanel=100263` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/otel-collector/otel-collector?viewPanel=100501` on your Sourcegraph instance. +*Managed by the Sourcegraph Platform team.*
Technical details @@ -34849,22 +33413,21 @@ To see this panel, visit `/-/debug/grafana/d/completions/completions?viewPanel=1 Query: ``` -histogram_quantile(0.50, sum(rate(src_completions_upstream_connection_tls_duration_seconds_bucket[$sampling_duration])) by (le, provider)) +cadvisor_container_cpu_usage_percentage_total{name=~"^otel-collector.*"} ```

-#### completions: code_completions_p99_http_connect_dial - -

Stream: HTTP connect: dial (p99)

+#### otel-collector: container_memory_usage -Portion of time spent on golang Dial() when acquiring an HTTP connection to the upstream. +

Container memory usage by instance

-This panel has no related alerts. +Refer to the [alerts reference](alerts#otel-collector-container_memory_usage) for 1 alert related to this panel. -To see this panel, visit `/-/debug/grafana/d/completions/completions?viewPanel=100270` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/otel-collector/otel-collector?viewPanel=100502` on your Sourcegraph instance. +*Managed by the Sourcegraph Platform team.*
Technical details @@ -34872,22 +33435,24 @@ To see this panel, visit `/-/debug/grafana/d/completions/completions?viewPanel=1 Query: ``` -histogram_quantile(0.99, sum(rate(src_completions_upstream_connection_dial_duration_seconds_bucket[$sampling_duration])) by (le, provider)) +cadvisor_container_memory_usage_percentage_total{name=~"^otel-collector.*"} ```

-#### completions: code_completions_p95_http_connect_dial +#### otel-collector: fs_io_operations -

Stream: HTTP connect: dial (p95)

+

Filesystem reads and writes rate by instance over 1h

-Portion of time spent on golang Dial() when acquiring an HTTP connection to the upstream. +This value indicates the number of filesystem read and write operations by containers of this service. +When extremely high, this can indicate a resource usage problem, or can cause problems with the service itself, especially if high values or spikes correlate with \{\{CONTAINER_NAME\}\} issues. This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/completions/completions?viewPanel=100271` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/otel-collector/otel-collector?viewPanel=100503` on your Sourcegraph instance. +*Managed by the Sourcegraph Platform team.*
Technical details @@ -34895,22 +33460,23 @@ To see this panel, visit `/-/debug/grafana/d/completions/completions?viewPanel=1 Query: ``` -histogram_quantile(0.95, sum(rate(src_completions_upstream_connection_dial_duration_seconds_bucket[$sampling_duration])) by (le, provider)) +sum by(name) (rate(container_fs_reads_total{name=~"^otel-collector.*"}[1h]) + rate(container_fs_writes_total{name=~"^otel-collector.*"}[1h])) ```

-#### completions: code_completions_p75_http_connect_dial +### OpenTelemetry Collector: Kubernetes monitoring (only available on Kubernetes) -

Stream: HTTP connect: dial (p75)

+#### otel-collector: pods_available_percentage -Portion of time spent on golang Dial() when acquiring an HTTP connection to the upstream. +

Percentage pods available

-This panel has no related alerts. +Refer to the [alerts reference](alerts#otel-collector-pods_available_percentage) for 1 alert related to this panel. -To see this panel, visit `/-/debug/grafana/d/completions/completions?viewPanel=100272` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/otel-collector/otel-collector?viewPanel=100600` on your Sourcegraph instance. +*Managed by the Sourcegraph Platform team.*
Technical details @@ -34918,21 +33484,29 @@ To see this panel, visit `/-/debug/grafana/d/completions/completions?viewPanel=1 Query: ``` -histogram_quantile(0.75, sum(rate(src_completions_upstream_connection_dial_duration_seconds_bucket[$sampling_duration])) by (le, provider)) +sum by(app) (up{app=~".*otel-collector"}) / count by (app) (up{app=~".*otel-collector"}) * 100 ```

-#### completions: code_completions_p50_http_connect_dial +## Completions + +

Cody chat and code completions.

+ +To see this dashboard, visit `/-/debug/grafana/d/completions/completions` on your Sourcegraph instance. + +### Completions: Completions requests + +#### completions: api_request_rate -

Stream: HTTP connect: dial (p50)

+

Rate of completions API requests

-Portion of time spent on golang Dial() when acquiring an HTTP connection to the upstream. +Rate (QPS) of requests to cody chat and code completion endpoints. This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/completions/completions?viewPanel=100273` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/completions/completions?viewPanel=100000` on your Sourcegraph instance.
@@ -34941,7 +33515,7 @@ To see this panel, visit `/-/debug/grafana/d/completions/completions?viewPanel=1 Query: ``` -histogram_quantile(0.50, sum(rate(src_completions_upstream_connection_dial_duration_seconds_bucket[$sampling_duration])) by (le, provider)) +sum by (code)(irate(src_http_request_duration_seconds_count{route=~"^cody.completions.*"}[5m])) ```
From 32b853a7f361b7dca54ae08ede6d7fea4be008a2 Mon Sep 17 00:00:00 2001 From: Keegan Carruthers-Smith Date: Tue, 31 Mar 2026 11:04:01 +0200 Subject: [PATCH 065/217] mcp: document RBAC and mcp.enabled (#1714) --- docs/admin/access-control/index.mdx | 3 +- docs/admin/oauth-apps.mdx | 37 ++++++++++++---- docs/api/mcp/index.mdx | 65 ++++++++++++++++++++++++++++- docs/technical-changelog.mdx | 2 +- 4 files changed, 96 insertions(+), 11 deletions(-) diff --git a/docs/admin/access-control/index.mdx b/docs/admin/access-control/index.mdx index 87382e8f3..ff98aecf8 100644 --- a/docs/admin/access-control/index.mdx +++ b/docs/admin/access-control/index.mdx @@ -14,7 +14,7 @@ same repository access on Sourcegraph as your code host.
-Sourcegraph uses [Role-Based Access Control (RBAC)](https://en.wikipedia.org/wiki/Role-based_access_control) to enable fine-grained control over different features and abilities of Sourcegraph, without having to modify permissions for each user individually. Currently, the scope of permissions control is limited to [Batch Changes](/admin/access-control/batch-changes) functionality, but it will be expanded to other areas in the future. +Sourcegraph uses [Role-Based Access Control (RBAC)](https://en.wikipedia.org/wiki/Role-based_access_control) to enable fine-grained control over different features and abilities of Sourcegraph, without having to modify permissions for each user individually. RBAC currently covers several areas, including [Batch Changes](/admin/access-control/batch-changes), [service accounts](/admin/service-accounts), and [Sourcegraph MCP Server access](/api/mcp#availability-and-access-control), and it will expand to other areas over time. ## Managing roles and permissions @@ -43,6 +43,7 @@ You can read about the specific permission types available for each RBAC-enabled - [Batch Changes](/admin/access-control/batch-changes) - [Service accounts](/admin/service-accounts) +- [Sourcegraph MCP Server](/api/mcp#availability-and-access-control) ### Deleting a role diff --git a/docs/admin/oauth-apps.mdx b/docs/admin/oauth-apps.mdx index d0df6f6fc..b5cc061da 100644 --- a/docs/admin/oauth-apps.mdx +++ b/docs/admin/oauth-apps.mdx @@ -91,14 +91,15 @@ When creating an OAuth app, select the minimum scopes necessary for your applica ## OAuth endpoints reference -| Endpoint | URL | -| -------------------- | ------------------------------------------------------------- | -| Authorization | `https://sourcegraph.example.com/.auth/idp/oauth/authorize` | -| Token | `https://sourcegraph.example.com/.auth/idp/oauth/token` | -| Device Authorization | `https://sourcegraph.example.com/.auth/idp/oauth/device/code` | -| Token Revocation | `https://sourcegraph.example.com/.auth/idp/oauth/revoke` | -| Token Introspection | `https://sourcegraph.example.com/.auth/idp/oauth/introspect` | -| User Info | `https://sourcegraph.example.com/.auth/idp/oauth/userinfo` | +| Endpoint | URL | +|-----------------------------|---------------------------------------------------------------| +| Authorization | `https://sourcegraph.example.com/.auth/idp/oauth/authorize` | +| Dynamic Client Registration | `https://sourcegraph.example.com/.auth/idp/oauth/register` | +| Token | `https://sourcegraph.example.com/.auth/idp/oauth/token` | +| Device Authorization | `https://sourcegraph.example.com/.auth/idp/oauth/device/code` | +| Token Revocation | `https://sourcegraph.example.com/.auth/idp/oauth/revoke` | +| Token Introspection | `https://sourcegraph.example.com/.auth/idp/oauth/introspect` | +| User Info | `https://sourcegraph.example.com/.auth/idp/oauth/userinfo` | ## OAuth Flow Examples @@ -359,3 +360,23 @@ curl -X POST https://sourcegraph.example.com/.auth/idp/oauth/revoke \ -d "client_id=YOUR_CLIENT_ID" \ -d "client_secret=YOUR_CLIENT_SECRET" # Only for private clients ``` + +## Dynamic Client Registration for MCP + +Sourcegraph also supports OAuth 2.0 Dynamic Client Registration (RFC 7591) at +`/.auth/idp/oauth/register` for MCP clients that can self-register. + +This endpoint can be disabled by setting either `mcp.enabled` or +`auth.idpDynamicClientRegistrationEnabled` to `false`. + +Applications created through Dynamic Client Registration are limited to the +`mcp` scope. For general OAuth integrations that need scopes such as +`user:all`, `openid`, or `offline_access`, create an OAuth app manually. + + + To disable self-registration, set + `auth.idpDynamicClientRegistrationEnabled` to `false`. If `mcp.enabled` is + `false`, Dynamic Client Registration is also unavailable. See + [MCP authentication and access control](/api/mcp#availability-and-access-control) + for the MCP-specific behavior. + diff --git a/docs/api/mcp/index.mdx b/docs/api/mcp/index.mdx index 507b05dad..a19d7cd24 100644 --- a/docs/api/mcp/index.mdx +++ b/docs/api/mcp/index.mdx @@ -92,7 +92,7 @@ If your agent doesn't support Dynamic Client Registration, you can manually crea -To disable DCR, set the following site configuration: +To disable DCR while leaving MCP available, set the following site configuration: ```json { @@ -100,6 +100,9 @@ To disable DCR, set the following site configuration: } ``` +If `mcp.enabled` is `false`, DCR is also unavailable and the registration +endpoint returns `404`. + ### Access Tokens @@ -115,6 +118,66 @@ Authorization: token YOUR_ACCESS_TOKEN only.
+## Availability and Access Control + +Admins can control MCP at three levels: + +- Site configuration: `mcp.enabled` enables or disables the MCP HTTP endpoints. +- OAuth Dynamic Client Registration: `auth.idpDynamicClientRegistrationEnabled` controls whether OAuth clients can self-register; it is effectively disabled whenever `mcp.enabled` is `false`. +- RBAC: users must have the `MCP#ACCESS` permission to use MCP. + +### Site-Level Enablement + +Use the `mcp.enabled` site configuration to turn the MCP server on or off for the entire instance: + +```json +{ + "mcp.enabled": true +} +``` + +`mcp.enabled` defaults to `true`. When set to `false`, requests to `/.api/mcp` +and its subpaths return `404 no route`. + +### OAuth Dynamic Client Registration + +Use `auth.idpDynamicClientRegistrationEnabled` to control whether compatible +OAuth clients can self-register against the Sourcegraph identity provider: + +```json +{ + "auth.idpDynamicClientRegistrationEnabled": true +} +``` + +`auth.idpDynamicClientRegistrationEnabled` defaults to `true`, but it is +treated as `false` whenever `mcp.enabled` is `false`. When DCR is unavailable, +requests to `/.auth/idp/oauth/register` return `404 not found`. + +### Restricting MCP with RBAC + +When MCP is enabled, Sourcegraph also checks the `MCP#ACCESS` permission before +serving MCP requests. Users without that permission receive `403 forbidden`. + +By default, `MCP#ACCESS` is granted to the built-in `User` system role, so all +signed-in users can access MCP unless an admin changes the default role +permissions. + +To restrict MCP to a subset of users: + +1. Open **Site admin > Users & auth > Roles**. +2. Edit the built-in **User** role and remove the `MCP > ACCESS` permission if you want MCP denied by default. +3. Create a custom role that includes `MCP > ACCESS`. +4. Assign that role to the users who should be allowed to use MCP. + +See [Access control](/admin/access-control) for more about managing roles and permissions. + + + MCP access control is separate from [repository permissions](/admin/permissions/). + Users can only read data from repositories they are already allowed to access + in Sourcegraph. + + ## Available Tools diff --git a/docs/technical-changelog.mdx b/docs/technical-changelog.mdx index bbb202928..9b41994ed 100644 --- a/docs/technical-changelog.mdx +++ b/docs/technical-changelog.mdx @@ -497,7 +497,7 @@ There were no uncategorized changes for this release #### Auth - add site setting auth.idpDynamicClientRegistrationEnabled `(PR #8336)` - - Sourcegraph now supports OAuth 2.0 Dynamic Client Registration (RFC 7591). This makes it easier to authenticate against Sourcegraph from an MCP client. As an administrator you must set `auth.idpDynamicClientRegistrationEnabled` to `true` in your site settings. + - Sourcegraph now supports OAuth 2.0 Dynamic Client Registration (RFC 7591) for MCP clients. The feature is controlled by `auth.idpDynamicClientRegistrationEnabled` and is effectively disabled when `mcp.enabled` is `false`. #### Code Nav From 71bb3f765f05fe78246c19112bb13d715476ba44 Mon Sep 17 00:00:00 2001 From: Robert Lin Date: Tue, 31 Mar 2026 11:29:23 -0700 Subject: [PATCH 066/217] customer-facing beta and experimental policy (#1726) Adaptation of https://docs.google.com/document/d/15bVl9QBs4aJiJlmiqhGIt8ZMUb9G9dYLpVpqSSo4Rf8/edit?tab=t.aw66tktynwlv for external reference. Minor deviation being discussed here: https://sourcegraph.slack.com/archives/C0AFZSM5RU2/p1774900987314169?thread_ts=1774028164.914529&cid=C0AFZSM5RU2 **Preview: https://sourcegraph-docs-git-beta-and-experimental-sourcegraph-f8c71130.vercel.app/beta-and-experimental** --- docs/admin/beta-and-experimental-features.mdx | 38 ------------- docs/admin/index.mdx | 2 +- docs/admin/repo/perforce.mdx | 2 +- docs/beta-and-experimental/index.mdx | 57 +++++++++++++++++++ docs/sla/index.mdx | 4 +- src/data/navigation.ts | 32 +++++------ src/data/redirects.ts | 7 ++- 7 files changed, 83 insertions(+), 59 deletions(-) delete mode 100644 docs/admin/beta-and-experimental-features.mdx create mode 100644 docs/beta-and-experimental/index.mdx diff --git a/docs/admin/beta-and-experimental-features.mdx b/docs/admin/beta-and-experimental-features.mdx deleted file mode 100644 index 66a077ca7..000000000 --- a/docs/admin/beta-and-experimental-features.mdx +++ /dev/null @@ -1,38 +0,0 @@ -# Beta and experimental features - -Sourcegraph often beta tests major features before we make them generally available. - -Exposing beta and experimental features gives you an opportunity to try our newest features sooner. - -In return, your feedback helps us make sure that our new features are reliable and useful, and we appreciate any and all feedback you want to provide. You can email us directly to [feedback@sourcegraph.com](mailto:feedback@sourcegraph.com). - -## Both beta and experimental features - -For both features labeled `Beta` and those labeled `Experimental`, Sourcegraph wants to be transparent that: - -- The feature is undergoing active development and your [feedback](mailto:feedback@sourcegraph.com) is especially appreciated -- The feature may have bugs -- The feature may be changed, deprecated, or removed -- The feature is excluded from our [Support SLAs](https://handbook.sourcegraph.com/support#slas) -- The feature may have an additional cost to use once it becomes generally available -- Any documentation for the feature will explicitly note the feature is in beta or experimental mode - -## Experimental features - -If a feature is labeled `Experimental`, this specifically means: - -- The feature may be primarily supported by the product engineering team rather than our customer support team -- The feature may have limited support and no documentation in the Sourcegraph docs -- The feature will have to be deliberately enabled -- The customer engineering team may not be aware or proficient in introducing this feature -- We think there's about a 50% chance this makes it to Beta - -## Beta features - -If a feature is labeled `Beta`, this specifically means: - -- The feature will have documentation on sourcegraph.com/docs -- The feature will be primarily supported by the customer support team -- The feature may require intentional setup, or it may be widely available to all users by default -- The customer engineering team is aware of this feature, but may rely on product managers to introduce it to customers -- We think there's about a 90% chance this makes it to GA diff --git a/docs/admin/index.mdx b/docs/admin/index.mdx index 20624c5ce..0ff10c2f8 100644 --- a/docs/admin/index.mdx +++ b/docs/admin/index.mdx @@ -13,7 +13,7 @@ Sourcegraph administration is primarily managed by site administrators, who are ## Features - [Batch Changes](/batch-changes/) -- [Beta and experimental features](/admin/beta-and-experimental-features) +- [Beta and experimental features](/beta-and-experimental) - [Code navigation](/code-navigation/) - [Pings](/admin/pings) - [Telemetry](/admin/telemetry) diff --git a/docs/admin/repo/perforce.mdx b/docs/admin/repo/perforce.mdx index ce80f19b1..8cb33dbab 100644 --- a/docs/admin/repo/perforce.mdx +++ b/docs/admin/repo/perforce.mdx @@ -300,7 +300,7 @@ We are actively working to significantly improve Sourcegraph's Perforce support. ## Configure experimental features -As of Sourcegraph 5.1, there are the following experimental features for Perforce depots. These are merely for providing feedback and have [limited support](/admin/beta-and-experimental-features#experimental-features). +As of Sourcegraph 5.1, there are the following experimental features for Perforce depots. These are merely for providing feedback and have [limited support](/beta-and-experimental#experimental-features). ### Changelist ID in URLs diff --git a/docs/beta-and-experimental/index.mdx b/docs/beta-and-experimental/index.mdx new file mode 100644 index 000000000..638763c75 --- /dev/null +++ b/docs/beta-and-experimental/index.mdx @@ -0,0 +1,57 @@ +# Beta and experimental features + +**Beta** and **Experimental** Sourcegraph features give you an opportunity to try newer features and shape their development, before they become generally available. + +Your feedback helps us make sure that our new features are reliable and useful, and we appreciate any and all feedback you want to provide. You can email us directly to [feedback@sourcegraph.com](mailto:feedback@sourcegraph.com). + +For both features labeled **Beta** or **Experimental**, Sourcegraph wants to be transparent that: + +- The feature is undergoing active development and your [feedback](mailto:feedback@sourcegraph.com) is especially appreciated +- The feature may have bugs, and is excluded from our support SLAs +- The feature may change, be deprecated, be removed, or be disabled at any time +- The feature may have temporary usage limits during the beta and experimental period. +- The feature may require admin enablement or other intentional setup +- The feature may become [billable with credits](#credits-and-billing) once they become generally available + +## Feature lifecycle + +Features generally move through the following stages: + +| Stage | Label | Credit impact | +| -------------------------------------- | ---------------- | ------------------------------------------------------------------------------ | +| [Experimental](#experimental-features) | **Experimental** | No credits consumed | +| [Beta](#beta-features) | **Beta** | No credits consumed | +| General availability | No special label | [Credits may apply according to the published rate card](#credits-and-billing) | + +## Experimental features + +If a feature is labeled **Experimental**, this specifically means: + +- The feature is intended for early evaluation and will generally require deliberate enablement +- There may be no fixed timeline for moving the feature to **Beta** or general availability +- Some **Experimental** features may have credit costs associated with them when they exit Beta into general availability; see [credits and billing](#credits-and-billing) +- Admins can disable **Experimental** features globally + +General points about [both beta and experimental features](#beta-and-experimental-features) also apply. + +## Beta features + +If a feature is labeled **Beta**, this specifically means: + +- The feature may be widely available to all customers by default +- There may be no fixed timeline for moving the feature to general availability +- Some **Beta** features may have credit costs associated with them when they graduate to general availability; see [credits and billing](#credits-and-billing) +- Admins can disable **Beta** features globally + +General points about [both beta and experimental features](#beta-and-experimental-features) also apply. + +## Credits and billing + +Billing depends on the feature. + +- **Experimental** and **Beta** features do _not_ consume credits +- Some **Beta** or **Experimental** features, when they graduate to general availability, may be billable with credits. + - Such features will have a **Beta** stage with messaging that identifies, if applicable, the upcoming credit cost and start date. Sourcegraph will provide at least 30 days notice before credits consumption begins. +- Admins can [configure limits](/admin/entitlements) on the use of credit-consuming features + +To learn more about credits and billing, please reach out to your account manager or [support@sourcegraph.com](mailto:support@sourcegraph.com). diff --git a/docs/sla/index.mdx b/docs/sla/index.mdx index 1e7e79e3d..13c5ebaf4 100644 --- a/docs/sla/index.mdx +++ b/docs/sla/index.mdx @@ -11,7 +11,7 @@ seoPriority: 1.0 ## Service Level Agreements (SLAs) -Our service level agreements (SLAs) are designed for products that are generally available and exclude [beta and experimental features](/admin/beta-and-experimental-features). SLA response times indicate how quickly we aim to provide an initial response to your inquiries or concerns. Our team will resolve all issues as quickly as possible. However, it's important to understand that SLA times differ from guaranteed resolution times. +Our service level agreements (SLAs) are designed for products that are generally available and exclude [beta and experimental features](/beta-and-experimental). SLA response times indicate how quickly we aim to provide an initial response to your inquiries or concerns. Our team will resolve all issues as quickly as possible. However, it's important to understand that SLA times differ from guaranteed resolution times. While we always strive to respond to your issues as quickly as possible, our SLAs are specifically applicable from Monday through Friday. @@ -119,7 +119,7 @@ Premium SLAs give customers access to our Support team 24x7 for Severity 0 and 1 First response times remain the same according to our SLAs. However, Emergency and Severe Impact issues are supported 24x7 with Premium Support (versus 24x5 without Premium Support). -This service is provided for all GA products Sourcegraph offers, not for any [Experimental or Beta features](/admin/beta-and-experimental-features). +This service is provided for all GA products Sourcegraph offers, not for any [Experimental or Beta features](/beta-and-experimental). > NOTE: This package includes access to Slack Support diff --git a/src/data/navigation.ts b/src/data/navigation.ts index 16e4fb9e6..996f311c8 100644 --- a/src/data/navigation.ts +++ b/src/data/navigation.ts @@ -90,7 +90,7 @@ export const navigation: NavigationItem[] = [ ] }, { - title: 'Cody FAQs', + title: 'Code Search FAQs', href: '/code-search/faq' } ] @@ -258,7 +258,7 @@ export const navigation: NavigationItem[] = [ title: 'Troubleshooting Cody', href: '/cody/troubleshooting' }, - {title: 'Administration FAQ', href: '/cody/faq'} + {title: 'Cody FAQ', href: '/cody/faq'} ] } ] @@ -590,6 +590,10 @@ export const navigation: NavigationItem[] = [ } ] }, + { + title: 'Sourcegraph Model Provider', + href: '/model-provider' + }, { title: 'Sourcegraph Analytics', href: '/analytics', @@ -599,8 +603,8 @@ export const navigation: NavigationItem[] = [ ] }, { - title: 'Sourcegraph Model Provider', - href: '/model-provider' + title: 'Sourcegraph Accounts', + href: '/sourcegraph-accounts' } ] }, @@ -621,24 +625,20 @@ export const navigation: NavigationItem[] = [ separator: 'Help & support', topics: [ { - title: 'SLAs and premium support', - href: '/sla' - }, - { - title: 'Sourcegraph tutorials', - href: '/tutorials' + title: 'Changelog', + href: 'https://sourcegraph.com/changelog' }, { - title: 'Sourcegraph Accounts', - href: '/sourcegraph-accounts' + title: 'Beta and experimental features', + href: '/beta-and-experimental' }, { - title: 'Changelog', - href: 'https://sourcegraph.com/changelog' + title: 'SLAs and premium support', + href: '/sla' }, { - title: 'Sourcegraph releases', - href: '/releases' + title: 'Tutorials', + href: '/tutorials' } ] } diff --git a/src/data/redirects.ts b/src/data/redirects.ts index 8a2948dd9..b164a1e55 100644 --- a/src/data/redirects.ts +++ b/src/data/redirects.ts @@ -6460,7 +6460,7 @@ const redirectsData = [ }, { source: '/admin/beta_and_experimental_features', - destination: '/admin/beta-and-experimental-features', + destination: '/beta-and-experimental', permanent: true }, { @@ -7134,6 +7134,11 @@ const redirectsData = [ destination: '/admin/permissions', permanent: true }, + { + source: '/admin/beta-and-experimental-features', + destination: '/beta-and-experimental', + permanent: true + }, // RSS feed moved from /docs/technical-changelog.rss to /changelog/technical-changelog.rss // This redirect preserves existing RSS subscriptions { From f81d05e1c49d5f36f3c52404c8e1d959c2fb0d4e Mon Sep 17 00:00:00 2001 From: Enrique Gonzalez Date: Tue, 31 Mar 2026 11:49:26 -0700 Subject: [PATCH 067/217] make 7.1 latest version release (#1728) --- docs.config.js | 2 +- src/data/versions.ts | 5 +++++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/docs.config.js b/docs.config.js index a5452538d..d82726f00 100644 --- a/docs.config.js +++ b/docs.config.js @@ -1,5 +1,5 @@ const config = { - DOCS_LATEST_VERSION: '7.0' + DOCS_LATEST_VERSION: '7.1' }; module.exports = config; diff --git a/src/data/versions.ts b/src/data/versions.ts index 6b6730373..2e0a15a2b 100644 --- a/src/data/versions.ts +++ b/src/data/versions.ts @@ -13,6 +13,11 @@ export const versions: VersionI[] = [ label: 'latest', url: '/docs' }, + { + name: 'v7.0', + url: 'https://7.0.sourcegraph.com' + }, + { name: 'v6.12', url: 'https://6.12.sourcegraph.com' From 46404c4a67743c954a89c06d130b0f88e9844836 Mon Sep 17 00:00:00 2001 From: Erik Seliger Date: Wed, 1 Apr 2026 01:53:15 +0200 Subject: [PATCH 068/217] docs: remove Enterprise Starter from Slack integration support (#1731) --- docs/slack-integration.mdx | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/docs/slack-integration.mdx b/docs/slack-integration.mdx index c748cbdea..007008fad 100644 --- a/docs/slack-integration.mdx +++ b/docs/slack-integration.mdx @@ -1,8 +1,7 @@ # Slack Integration - Supported on [Enterprise Starter](/pricing/plans/enterprise-starter) and - [Enterprise](/pricing/plans/enterprise) plans. + Supported on [Enterprise](/pricing/plans/enterprise) plans. The Sourcegraph Slack integration brings the power of [Deep Search](/deep-search) directly into your Slack workspace. When you mention `@Sourcegraph` in any Slack channel or thread, a Deep Search conversation starts right there—no context switching required. From 0f3f2c0f2704a46b44567afb2109651fecae0afa Mon Sep 17 00:00:00 2001 From: Bolaji Olajide <25608335+BolajiOlajide@users.noreply.github.com> Date: Thu, 2 Apr 2026 13:20:53 +0100 Subject: [PATCH 069/217] Remove beta tag from RBAC access control page (#1737) RBAC is no longer in beta. This removes the beta callout from the access control documentation page. --- docs/admin/access-control/index.mdx | 2 -- 1 file changed, 2 deletions(-) diff --git a/docs/admin/access-control/index.mdx b/docs/admin/access-control/index.mdx index ff98aecf8..01744edac 100644 --- a/docs/admin/access-control/index.mdx +++ b/docs/admin/access-control/index.mdx @@ -5,8 +5,6 @@ Available via the Web app. -This feature is in Beta stage. - This page refers to in-product permissions, which determine who can, for example, create a batch change, or who is a site admin. This is *not* the From 483062fc1025bde676ddf7d5c4b77f777fd31bef Mon Sep 17 00:00:00 2001 From: Michael Bahr <1830132+bahrmichael@users.noreply.github.com> Date: Thu, 2 Apr 2026 14:42:26 +0200 Subject: [PATCH 070/217] chore: remove experimental notice from commit signing docs (#1738) Created by Sourcegraph Agentic Batch Changes workflow [_Created by Sourcegraph batch change `bahrmichael/mb-update-docs-commit-signing-experimental`._](https://sourcegraph.sourcegraph.com/users/bahrmichael/batch-changes/mb-update-docs-commit-signing-experimental) Co-authored-by: Sourcegraph <15893131+sourcegraph-bot@users.noreply.github.com> --- docs/admin/config/batch-changes.mdx | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/docs/admin/config/batch-changes.mdx b/docs/admin/config/batch-changes.mdx index 3d783ccae..f87655a59 100644 --- a/docs/admin/config/batch-changes.mdx +++ b/docs/admin/config/batch-changes.mdx @@ -176,12 +176,7 @@ Batch Changes supports commit signing with both GitHub apps and with SSH keys. ### Commit signing with SSH keys (GitLab and GitHub) - - Commit signing with SSH keys is currently Experimental and is supported only - with Sourcegraph v6.2 or more. - - -Commit signing with SSH keys can only be combined with a personal or fine-grained access token. +Commit signing with SSH keys is supported with Sourcegraph v6.2 or more and can only be combined with a personal or fine-grained access token. Sourcegraph can be configured to sign commits using SSH keys with user and site admin credentials. From b753c189277440b0a7916e357313f5e1817224a7 Mon Sep 17 00:00:00 2001 From: Robert Lin Date: Thu, 2 Apr 2026 11:11:31 -0700 Subject: [PATCH 071/217] docs(api): add webhooks link to API overview (#1739) Adds a link to the [Webhooks](/admin/webhooks/) docs from the [API overview page](/api/), alongside the other integration-specific API links. Co-authored-by: Claude Sonnet 4.6 --- docs/api/index.mdx | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/api/index.mdx b/docs/api/index.mdx index a8d8894ee..447540eb1 100644 --- a/docs/api/index.mdx +++ b/docs/api/index.mdx @@ -14,6 +14,7 @@ For specific types of integrations, Sourcegraph also offers the following APIs: - [Sourcegraph streaming search API](/api/stream-api/), for consuming search results as a stream of events - [Sourcegraph MCP server](/api/mcp/), for connecting AI agents and applications to Sourcegraph's code search capabilities - [Sourcegraph Analytics API](/analytics/api/), for accessing your Sourcegraph Analytics data +- [Webhooks](/admin/webhooks/), for receiving event notifications from Sourcegraph For diagnostics use cases, the [Sourcegraph GraphQL debug API](/api/graphql/) is also available without any compatibility guarauntees. From 9b03cf7b3486786894fcf1a7af5dc9148f99e68e Mon Sep 17 00:00:00 2001 From: Gabe Torres <69164745+gabtorre@users.noreply.github.com> Date: Mon, 6 Apr 2026 14:23:49 -0700 Subject: [PATCH 072/217] docs: fix access token config to show correct nested JSON structure (#1741) --- docs/cli/how-tos/managing-access-tokens.mdx | 30 ++++++++++++++------- 1 file changed, 21 insertions(+), 9 deletions(-) diff --git a/docs/cli/how-tos/managing-access-tokens.mdx b/docs/cli/how-tos/managing-access-tokens.mdx index 7e468e06a..acd0bc648 100644 --- a/docs/cli/how-tos/managing-access-tokens.mdx +++ b/docs/cli/how-tos/managing-access-tokens.mdx @@ -1,23 +1,35 @@ # Managing access tokens -The `auth.accessTokens` setting in Sourcegraph's site configuration allows admins to fine-tune parameters related to access tokens. +The `auth.accessTokens` setting in Sourcegraph's site configuration allows admins to fine-tune parameters related to access tokens: + +```json +{ + "auth.accessTokens": { + "allow": "all-users-create", + "allowNoExpiration": false, + "maxTokensPerUser": 25, + "expirationOptionDays": [7, 14, 30, 60, 90], + "defaultExpirationDays": 90 + } +} +``` ## Access token creation -The `auth.accessTokens.allow` configuration field permits or restricts the creation of access tokens. It can be assigned one of three values: "none," "all-users-create" (which is the default option), or "site-admin-create.” +The `allow` property permits or restricts the use of access tokens. It can be assigned one of three values: -- `none` Disables the creation of access tokens. -- `all-users-create` Allows users to create their own token. -- `site-admin-create` Allows site admins to create tokens for users. +- `all-users-create` (default) Enables all users to create access tokens. +- `site-admin-create` Restricts creation of new tokens to admin users (existing tokens will still work until revoked). +- `none` Disables access tokens entirely. -`auth.accessTokens.maxTokensPerUser` - This config field determines the maximum number of active access tokens a user can have. The default maximum is 25 tokens. +The `maxTokensPerUser` property determines the maximum number of active access tokens a user can have. The default maximum is 25 tokens. ## Access token expiration Admins can set expiration policies for access tokens. After this specified period, tokens will automatically lose their access. Note that tokens created before version 5.3 do not expire; this policy only applies to **new** tokens. -`auth.accessTokens.allowNoExpiration` - This controls whether tokens can be created with no expiration date. The default setting is false. +`allowNoExpiration` - Controls whether tokens can be created with no expiration date. The default setting is false. -`auth.accessTokens.expirationOptionDays` - This represents the options users are presented with for the token expiration period. The default options are [7, 14, 30, 60, 90]. +`expirationOptionDays` - The options users are presented with for the token expiration period. The default options are [7, 14, 30, 60, 90]. -`auth.accessTokens.defaultExpirationDays` - This sets the default duration selection when creating a new access token. The default is 90 days. +`defaultExpirationDays` - The default duration selection when creating a new access token. The default is 90 days. From f4743f22b0f1e822fbc749782b6aed62ea22fa3d Mon Sep 17 00:00:00 2001 From: Peter Guy Date: Tue, 7 Apr 2026 15:12:23 -0700 Subject: [PATCH 073/217] remove endpoint command line and expand on SRC_ENDPOINT and SRC_ACCES_TOKEN (#1742) We're still figuring out how to expand `src login` with OAuth; made some (hopefully clarifying) changes to the CLI quickstart docs. --- docs/batch-changes/quickstart.mdx | 10 +--------- docs/cli/quickstart.mdx | 10 +++++----- 2 files changed, 6 insertions(+), 14 deletions(-) diff --git a/docs/batch-changes/quickstart.mdx b/docs/batch-changes/quickstart.mdx index a36619142..8e22b1d8f 100644 --- a/docs/batch-changes/quickstart.mdx +++ b/docs/batch-changes/quickstart.mdx @@ -31,15 +31,7 @@ curl -L https:///.api/src-cli/src_linux_amd64 -o chmod +x /usr/local/bin/src ``` -Authenticate `src` with your Sourcegraph instance by running `src login` and following the instructions: - -```bash -src login https:// -``` - -![src-login-success](https://sourcegraphstatic.com/docs/images/batch_changes/src_login_success.png) - -Once `src login` reports that you're authenticated, you're ready for the next step. +Authenticate `src` with your Sourcegraph instance by following the [CLI quickstart](/cli/quickstart) and you'll be ready for the next step. ## Write a batch spec diff --git a/docs/cli/quickstart.mdx b/docs/cli/quickstart.mdx index 021a0e42b..4c394d4bf 100644 --- a/docs/cli/quickstart.mdx +++ b/docs/cli/quickstart.mdx @@ -47,17 +47,17 @@ For other options, please refer to [the Windows specific `src` documentation](/c ## Connect to Sourcegraph -`src` needs to be authenticated against your Sourcegraph instance. The quickest way to do this is to run `src login https://YOUR-SOURCEGRAPH-INSTANCE` and follow the instructions: - -![Output from src login showing success](https://sourcegraphstatic.com/docs/images/batch_changes/src_login_success.png) +`src` needs to be authenticated against your Sourcegraph instance. The quickest way to do this is to add `SRC_ENDPOINT=https://YOUR-SOURCEGRAPH-INSTANCE` to your shell environment, then run `src login` to launch OAuth authentication against your Sourcegraph instance. ### OAuth login -`src login` supports interactive OAuth login, so you can sign in without creating or exporting a `SRC_ACCESS_TOKEN`. +`src login` supports interactive OAuth login, so you can sign in without creating or exporting `SRC_ACCESS_TOKEN`. If you need to reuse the current `src` credential in another command, `src auth token` prints the raw token and `src auth token --header` prints a complete `Authorization` header for the active authentication mode. -If you need non-interactive authentication, such as in CI or scripts, you can still use `SRC_ENDPOINT` and `SRC_ACCESS_TOKEN`. +### PAT login + +If you need non-interactive authentication, such as in CI or scripts, you can still [create an access token](/cli/how-tos/creating-an-access-token) in your Sourcegraph instance, then use `SRC_ACCESS_TOKEN` in the shell environment, along with `SRC_ENDPOINT`. In this case, `src login` is not necessary: `src` will use the PAT from the environment to authenticate against your Sourcegraph instance. ## Run a code search From 9da3f390764bcb29161a3c12a09929b2f5a6c7a1 Mon Sep 17 00:00:00 2001 From: Erik Seliger Date: Fri, 10 Apr 2026 15:18:09 +0200 Subject: [PATCH 074/217] Move 5.x releases to legacy section (#1743) Policy is latest two major releases (so 7.x and 6.x at this time), we just forgot to update this. --- docs/legacy.mdx | 106 +++++++++++++-------------- src/components/ReleasesTable.tsx | 120 +++++++++++++++---------------- 2 files changed, 112 insertions(+), 114 deletions(-) diff --git a/docs/legacy.mdx b/docs/legacy.mdx index f1cd8c725..83a656790 100644 --- a/docs/legacy.mdx +++ b/docs/legacy.mdx @@ -1,77 +1,77 @@ # Legacy Versions

- This page displays the docs for legacy Sourcegraph versions less than 5.1 + Find versioned documentation for previous versions of Sourcegraph below.

-- [6.12](https://6.12.sourcegraph.com) -- [6.11](https://6.11.sourcegraph.com) -- [6.10](https://6.10.sourcegraph.com) -- [6.9](https://6.9.sourcegraph.com) -- [6.8](https://6.8.sourcegraph.com) -- [6.7](https://6.7.sourcegraph.com) -- [6.6](https://6.6.sourcegraph.com) -- [6.5](https://6.5.sourcegraph.com) -- [6.4](https://6.4.sourcegraph.com) -- [6.3](https://6.3.sourcegraph.com) -- [6.2](https://6.2.sourcegraph.com) -- [6.1](https://6.1.sourcegraph.com) -- [6.0](https://6.0.sourcegraph.com) +- [6.12](https://6.12.sourcegraph.com) +- [6.11](https://6.11.sourcegraph.com) +- [6.10](https://6.10.sourcegraph.com) +- [6.9](https://6.9.sourcegraph.com) +- [6.8](https://6.8.sourcegraph.com) +- [6.7](https://6.7.sourcegraph.com) +- [6.6](https://6.6.sourcegraph.com) +- [6.5](https://6.5.sourcegraph.com) +- [6.4](https://6.4.sourcegraph.com) +- [6.3](https://6.3.sourcegraph.com) +- [6.2](https://6.2.sourcegraph.com) +- [6.1](https://6.1.sourcegraph.com) +- [6.0](https://6.0.sourcegraph.com) -- [5.11](https://5.11.sourcegraph.com/) -- [5.10](https://5.10.sourcegraph.com/) -- [5.9](https://5.9.sourcegraph.com/) -- [5.8](https://5.8.sourcegraph.com/) -- [5.7](https://5.7.sourcegraph.com/) -- [5.6](https://5.6.sourcegraph.com/) -- [5.5](https://5.5.sourcegraph.com/) -- [5.4](https://5.4.sourcegraph.com) -- [5.3](https://5.3.sourcegraph.com/) -- [5.2](https://5.2.sourcegraph.com/) -- [5.1](https://docs.sourcegraph.com/@5.1/) -- [5.0](https://docs.sourcegraph.com/@5.0/) +- [5.11](https://5.11.sourcegraph.com/) +- [5.10](https://5.10.sourcegraph.com/) +- [5.9](https://5.9.sourcegraph.com/) +- [5.8](https://5.8.sourcegraph.com/) +- [5.7](https://5.7.sourcegraph.com/) +- [5.6](https://5.6.sourcegraph.com/) +- [5.5](https://5.5.sourcegraph.com/) +- [5.4](https://5.4.sourcegraph.com) +- [5.3](https://5.3.sourcegraph.com/) +- [5.2](https://5.2.sourcegraph.com/) +- [5.1](https://docs.sourcegraph.com/@5.1/) +- [5.0](https://docs.sourcegraph.com/@5.0/) -- [4.5](https://docs.sourcegraph.com/@4.5/) -- [4.4](https://docs.sourcegraph.com/@4.4/) -- [4.3](https://docs.sourcegraph.com/@4.3/) -- [4.2](https://docs.sourcegraph.com/@4.2/) -- [4.1](https://docs.sourcegraph.com/@4.1/) -- [4.0](https://docs.sourcegraph.com/@4.0/) +- [4.5](https://docs.sourcegraph.com/@4.5/) +- [4.4](https://docs.sourcegraph.com/@4.4/) +- [4.3](https://docs.sourcegraph.com/@4.3/) +- [4.2](https://docs.sourcegraph.com/@4.2/) +- [4.1](https://docs.sourcegraph.com/@4.1/) +- [4.0](https://docs.sourcegraph.com/@4.0/) -- [3.43](https://docs.sourcegraph.com/@3.43/) -- [3.41](https://docs.sourcegraph.com/@3.41/) -- [3.40](https://docs.sourcegraph.com/@3.40/) -- [3.39](https://docs.sourcegraph.com/@3.39/) -- [3.38](https://docs.sourcegraph.com/@3.38/) -- [3.37](https://docs.sourcegraph.com/@3.37/) -- [3.36](https://docs.sourcegraph.com/@3.36/) -- [3.35](https://docs.sourcegraph.com/@3.35/) -- [3.34](https://docs.sourcegraph.com/@3.34/) -- [3.32](https://docs.sourcegraph.com/@3.32/) -- [3.31](https://docs.sourcegraph.com/@3.31/) -- [3.30](https://docs.sourcegraph.com/@3.30/) -- [3.29](https://docs.sourcegraph.com/@3.29/) -- [3.28](https://docs.sourcegraph.com/@3.28/) -- [3.27](https://docs.sourcegraph.com/@3.27/) -- [3.26](https://docs.sourcegraph.com/@3.26/) -- [3.25](https://docs.sourcegraph.com/@3.25/) -- [3.24](https://docs.sourcegraph.com/@3.24/) -- [3.23](https://docs.sourcegraph.com/@3.23/) -- [3.22](https://docs.sourcegraph.com/@3.22/) -- [3.21](https://docs.sourcegraph.com/@3.21/) +- [3.43](https://docs.sourcegraph.com/@3.43/) +- [3.41](https://docs.sourcegraph.com/@3.41/) +- [3.40](https://docs.sourcegraph.com/@3.40/) +- [3.39](https://docs.sourcegraph.com/@3.39/) +- [3.38](https://docs.sourcegraph.com/@3.38/) +- [3.37](https://docs.sourcegraph.com/@3.37/) +- [3.36](https://docs.sourcegraph.com/@3.36/) +- [3.35](https://docs.sourcegraph.com/@3.35/) +- [3.34](https://docs.sourcegraph.com/@3.34/) +- [3.32](https://docs.sourcegraph.com/@3.32/) +- [3.31](https://docs.sourcegraph.com/@3.31/) +- [3.30](https://docs.sourcegraph.com/@3.30/) +- [3.29](https://docs.sourcegraph.com/@3.29/) +- [3.28](https://docs.sourcegraph.com/@3.28/) +- [3.27](https://docs.sourcegraph.com/@3.27/) +- [3.26](https://docs.sourcegraph.com/@3.26/) +- [3.25](https://docs.sourcegraph.com/@3.25/) +- [3.24](https://docs.sourcegraph.com/@3.24/) +- [3.23](https://docs.sourcegraph.com/@3.23/) +- [3.22](https://docs.sourcegraph.com/@3.22/) +- [3.21](https://docs.sourcegraph.com/@3.21/) diff --git a/src/components/ReleasesTable.tsx b/src/components/ReleasesTable.tsx index f7660c635..383830a37 100644 --- a/src/components/ReleasesTable.tsx +++ b/src/components/ReleasesTable.tsx @@ -25,35 +25,6 @@ function formatDate(dateString: string): string { }); } -type LegacyRelease = { - name: string; - date: string; - anchor?: string; - url?: string; -}; - -const legacySupportedReleases: LegacyRelease[] = [ - {name: '5.10 Patch 1', date: 'December 2024', url: 'https://sourcegraph.com/changelog/releases/5.10.1164'}, - {name: '5.10 Patch 0', date: 'November 2024', url: 'https://sourcegraph.com/changelog/releases/5.10.0'}, - {name: '5.9 Patch 3', date: 'November 2024', url: 'https://sourcegraph.com/changelog/releases/5.9.1590'}, - {name: '5.9 Patch 2', date: 'November 2024', url: 'https://sourcegraph.com/changelog/releases/5.9.347'}, - {name: '5.9 Patch 1', date: 'November 2024', url: 'https://sourcegraph.com/changelog/releases/5.9.45'}, - {name: '5.9 Patch 0', date: 'October 2024', url: 'https://sourcegraph.com/changelog/releases/5.9.0'}, - {name: '5.8 Patch 1', date: 'October 2024', url: 'https://sourcegraph.com/changelog/releases/5.8.1579'}, - {name: '5.8 Patch 0', date: 'October 2024', url: 'https://sourcegraph.com/changelog/releases/5.8.0'}, - {name: '5.7 Patch 1', date: 'September 2024', url: 'https://sourcegraph.com/changelog/releases/5.7.2474'}, - {name: '5.7 Patch 0', date: 'September 2024', url: 'https://sourcegraph.com/changelog/releases/5.7.0'}, - {name: '5.6 Patch 2', date: 'August 2024', anchor: 'v562535'}, - {name: '5.6 Patch 1', date: 'August 2024', anchor: 'v56185'}, - {name: '5.6', date: 'August 2024', anchor: 'v560'}, - {name: '5.5', date: 'July 2024', anchor: 'v553956'}, - {name: '5.4', date: 'May 2024', anchor: 'v547765'}, - {name: '5.3', date: 'February 2024', anchor: 'v5312303'}, - {name: '5.2', date: 'October 2023', anchor: 'v527'}, - {name: '5.1', date: 'June 2023', anchor: 'v519'}, - {name: '5.0', date: 'March 2023', anchor: 'v506'} -]; - export function SupportedReleasesTable() { const [releases, setReleases] = useState([]); const [loading, setLoading] = useState(true); @@ -147,38 +118,6 @@ export function SupportedReleasesTable() { ))} - {legacySupportedReleases.map(release => ( - - {release.name} - {release.date} - ✅ - - {release.url ? ( - - Notes - - ) : ( - - Notes - - )} - - - - Install - - - - ))} @@ -187,6 +126,65 @@ export function SupportedReleasesTable() { export function DeprecatedReleasesTable() { const deprecatedReleases = [ + { + version: '5.10 Patch 1', + date: 'December 2024', + url: 'https://sourcegraph.com/changelog/releases/5.10.1164' + }, + { + version: '5.10 Patch 0', + date: 'November 2024', + url: 'https://sourcegraph.com/changelog/releases/5.10.0' + }, + { + version: '5.9 Patch 3', + date: 'November 2024', + url: 'https://sourcegraph.com/changelog/releases/5.9.1590' + }, + { + version: '5.9 Patch 2', + date: 'November 2024', + url: 'https://sourcegraph.com/changelog/releases/5.9.347' + }, + { + version: '5.9 Patch 1', + date: 'November 2024', + url: 'https://sourcegraph.com/changelog/releases/5.9.45' + }, + { + version: '5.9 Patch 0', + date: 'October 2024', + url: 'https://sourcegraph.com/changelog/releases/5.9.0' + }, + { + version: '5.8 Patch 1', + date: 'October 2024', + url: 'https://sourcegraph.com/changelog/releases/5.8.1579' + }, + { + version: '5.8 Patch 0', + date: 'October 2024', + url: 'https://sourcegraph.com/changelog/releases/5.8.0' + }, + { + version: '5.7 Patch 1', + date: 'September 2024', + url: 'https://sourcegraph.com/changelog/releases/5.7.2474' + }, + { + version: '5.7 Patch 0', + date: 'September 2024', + url: 'https://sourcegraph.com/changelog/releases/5.7.0' + }, + {version: '5.6 Patch 2', date: 'August 2024', anchor: 'v562535'}, + {version: '5.6 Patch 1', date: 'August 2024', anchor: 'v56185'}, + {version: '5.6', date: 'August 2024', anchor: 'v560'}, + {version: '5.5', date: 'July 2024', anchor: 'v553956'}, + {version: '5.4', date: 'May 2024', anchor: 'v547765'}, + {version: '5.3', date: 'February 2024', anchor: 'v5312303'}, + {version: '5.2', date: 'October 2023', anchor: 'v527'}, + {version: '5.1', date: 'June 2023', anchor: 'v519'}, + {version: '5.0', date: 'March 2023', anchor: 'v506'}, {version: '4.5', date: 'February 2023', anchor: 'v451'}, {version: '4.4', date: 'January 2023', anchor: 'v442'}, {version: '4.3', date: 'December 2022', anchor: 'v431'}, From 139064ae458225ef9a67af6c5389e548e085f13b Mon Sep 17 00:00:00 2001 From: mibali <111276665+mibali@users.noreply.github.com> Date: Fri, 10 Apr 2026 18:58:50 +0100 Subject: [PATCH 075/217] Update azuredevops.mdx (#1746) Updated the page to include the recently Added `repos` field to Azure DevOps external service for explicit repository selection --- docs/admin/code-hosts/azuredevops.mdx | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/docs/admin/code-hosts/azuredevops.mdx b/docs/admin/code-hosts/azuredevops.mdx index a3b676c21..60ea02fb2 100644 --- a/docs/admin/code-hosts/azuredevops.mdx +++ b/docs/admin/code-hosts/azuredevops.mdx @@ -39,7 +39,11 @@ Next, configure the code host connection by following the next steps: "username": "", "token": "", "projects": ["org1/project1"], - "orgs": ["org2"] + "orgs": ["org2"], + "repos": [ + "myorg/myproject/myrepo1", + "myorg/myproject/myrepo2" + ] } ``` @@ -47,7 +51,7 @@ Next, configure the code host connection by following the next steps: ## Repository syncing -Currently, all repositories belonging to the configured organizations/projects will be synced. +All repositories within the configured organizations/projects are synced by default, but you can also choose to sync either all repositories or only specific repositories from those organizations/projects. In addition, you may exclude one or more repositories by setting the [`exclude`](/admin/code-hosts/azuredevops#configuration) field in the code host connection. @@ -127,6 +131,13 @@ Azure DevOps connections support the following configuration options, which are // ] "projects": null, + // An array of "org/project/repo" strings specifying which Azure DevOps repositories within a project should be mirrored in Sourcegraph. + "repos": [ + "myorg/my-project/myrepo", // Format: // + "myorg/myproject/myproject", // Format: repository where project and repo share the same name + "myorg/my project/my project" // Format: spaces in project or repository names + ] + // Rate limit applied when making background API requests. "rateLimit": { "enabled": false, From d2e61aaaa478c7b3e61b05b6bdf03d8991b14da5 Mon Sep 17 00:00:00 2001 From: natehessler Date: Fri, 10 Apr 2026 16:17:06 -0500 Subject: [PATCH 076/217] Enhance SCIM setup instructions for Okta (#1744) --- docs/admin/scim.mdx | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/docs/admin/scim.mdx b/docs/admin/scim.mdx index f8d797132..c4e86a2f1 100644 --- a/docs/admin/scim.mdx +++ b/docs/admin/scim.mdx @@ -72,6 +72,24 @@ To configure: To set up user provisioning in [Okta](https://help.okta.com/en-us/Content/Topics/Apps/Apps_App_Integration_Wizard_SCIM.htm), you must first set up a new app integration of the "SAML 2.0" type, then configure it to use SCIM. Here are the steps to do this: + + Please note: Okta offers two different provisioning configuration UIs depending on the + integration type: **SCIM Connection** (used with standard integrations) and + **Connector Configuration** (used with custom connectors via the Okta + provisioning agent). The steps below apply to both, but the way the + `Authorization` header is entered differs slightly: + + - In the **SCIM Connection** UI, there is a dedicated `Bearer` prefix field + alongside the token input — enter only the raw token in the token field. + - In the **Connector Configuration** UI, there is a single text field for the + full header value — you must enter the full string `Bearer {your token}` + (including the `Bearer ` prefix) in that field. + + In both cases, the Sourcegraph SCIM server requires the `Authorization` header + to be in the format `Bearer {your token}`. Omitting the `Bearer ` prefix will + result in a `401 Unauthorized` error. + + 1. Follow our [SAML guide](/admin/auth/saml/okta) to set up a new app integration with SAML, then open the integration you just created. - If you already have the integration, just open your existing app integration. 1. Go to the "General" tab and click "Edit" in the "App Settings" section. From 67261057cb0d595a0b6028565a76e654cce66fdb Mon Sep 17 00:00:00 2001 From: Enrique Gonzalez Date: Tue, 14 Apr 2026 15:06:47 -0700 Subject: [PATCH 077/217] docs: add clarification between oauth apps and M2M credentials (#1745) Co-authored-by: Amp --- docs/admin/oauth-apps.mdx | 32 ++++++++++++++++++++++++++++++-- docs/admin/service-accounts.mdx | 19 +++++++++++++++++-- 2 files changed, 47 insertions(+), 4 deletions(-) diff --git a/docs/admin/oauth-apps.mdx b/docs/admin/oauth-apps.mdx index b5cc061da..dbcc8a4c0 100644 --- a/docs/admin/oauth-apps.mdx +++ b/docs/admin/oauth-apps.mdx @@ -11,6 +11,26 @@ This makes OAuth the preferred choice for any multi-user integration like browse OAuth Apps are in compliance with standards including [RFC 6749](https://tools.ietf.org/html/rfc6749), [RFC 7636 (PKCE)](https://tools.ietf.org/html/rfc7636), and [RFC 8628 (Device Authorization Grant)](https://tools.ietf.org/html/rfc8628). + + OAuth Apps and service-account M2M credentials both use Sourcegraph's OAuth + server, but they are different client types for different jobs: + + - OAuth Apps created in **Site admin > OAuth clients** are for apps acting on + behalf of a user. They support `authorization_code` and + `refresh_token`, and public clients also support the device authorization + flow. + - Service-account M2M credentials are separate OAuth clients that are bound to + a service account. They are the only clients that support + `grant_type=client_credentials`. + + Sourcegraph's OpenID Connect discovery document lists + `client_credentials` in `grant_types_supported` for all instances because it + describes the OAuth server's overall capabilities. It does not mean every + OAuth client created in the UI can use it. Likewise, `scopes_supported` + lists the scopes the server can issue overall, not the scopes configured on a + specific OAuth App or M2M credential. + + Consider using **M2M (client-credentials) service-account tokens** or traditional [access tokens](/cli/how-tos/creating-an-access-token) for server-to-server communication, automated scripts, CI/CD pipelines, or single-user applications that do not require per-user permission checks. See [service accounts](/admin/service-accounts#m2m-oauth-credentials-client-credentials-flow) for details. ## Creating an OAuth App @@ -61,7 +81,7 @@ Public clients: Private clients can securely store client secrets: - **Server-side web applications** -- **Backend services** +- **Backend services that act on behalf of signed-in users** - **Secure server environments** Private clients: @@ -69,11 +89,15 @@ Private clients: - Receive both client ID and client secret - Can use the standard authorization code flow (PKCE strongly recommended) - Allow client authentication with a secret and server-side code exchange +- Still act on behalf of a user, not as a standalone machine identity ## Available Scopes When creating an OAuth app, select the minimum scopes necessary for your application: +The discovery document's `scopes_supported` value is server-wide metadata. Each +OAuth App can request only the scopes selected on that client. + | Scope | Description | | ---------------- | -------------------------------------------------------- | | `openid` | Required for OpenID Connect authentication | @@ -103,6 +127,10 @@ When creating an OAuth app, select the minimum scopes necessary for your applica ## OAuth Flow Examples +The first three flows below are for OAuth Apps created in **Site admin > OAuth +clients**. The `client_credentials` example is included for completeness, but +it only works with M2M credentials created for a service account. + 1. **Authorization Request**: Redirect users to Sourcegraph's authorization endpoint: @@ -260,7 +288,7 @@ curl -X POST https://sourcegraph.example.com/.auth/idp/oauth/token \ -The client credentials flow is designed for server-to-server authentication without user interaction. Service accounts can create M2M (machine-to-machine) credentials that use this flow. You can create M2M credentials in the service account settings under **Access tokens > M2M credentials**. +The client credentials flow is designed for server-to-server authentication without user interaction. It is not available for OAuth Apps created in **Site admin > OAuth clients**. Instead, service accounts create separate M2M (machine-to-machine) credentials that use this flow. You can create M2M credentials in the service account settings under **Access tokens > M2M credentials**. 1. **Token Request** (no user interaction required): diff --git a/docs/admin/service-accounts.mdx b/docs/admin/service-accounts.mdx index 022a2188f..afce86190 100644 --- a/docs/admin/service-accounts.mdx +++ b/docs/admin/service-accounts.mdx @@ -26,6 +26,14 @@ You'll be presented with some next steps you might want to take, like creating a Service accounts can authenticate using either traditional access tokens or M2M (machine-to-machine) OAuth credentials. + + M2M credentials are not the same thing as OAuth Apps created in + **Site admin > OAuth clients**. OAuth Apps are for flows where an application + acts on behalf of a user. M2M credentials are separate OAuth clients that are + bound to a service account and are the only way to use + `grant_type=client_credentials`. + + ### Traditional Access Tokens For detailed information about creating, managing, and using traditional access tokens, see: @@ -36,7 +44,14 @@ For detailed information about creating, managing, and using traditional access ### M2M OAuth Credentials (Client Credentials Flow) -M2M credentials provide short-lived tokens via the OAuth client credentials flow expiring after 1 hour. +M2M credentials provide short-lived tokens via the OAuth client credentials flow expiring after 1 hour. Tokens issued by this flow represent the service account itself, not an end-user session. + +Sourcegraph's OpenID Connect discovery document lists `client_credentials` in +`grant_types_supported` for all instances because it describes the OAuth +server's overall capabilities. It does not mean a regular OAuth App can use +that grant. In the same way, `scopes_supported` lists the scopes the server can +issue overall, not the scopes configured on a specific OAuth App or M2M +credential. **Creating M2M credentials:** @@ -65,7 +80,7 @@ curl -H "Authorization: Bearer ACCESS_TOKEN" \ https://sourcegraph.example.com/.api/graphql ``` -See [OAuth Apps → Client Credentials Flow](/admin/oauth-apps#oauth-flow-examples) for more details on the client credentials flow. +See [OAuth Apps](/admin/oauth-apps#oauth-flow-examples) for a side-by-side explanation of user-delegated OAuth flows versus service-account M2M credentials. Both authentication methods can be used to access Sourcegraph's [GraphQL API](/api/graphql) and [Stream API](/api/stream-api). From e13b1266b64a5febe1a5ea143faa33d564ea6b0a Mon Sep 17 00:00:00 2001 From: qaisjp Date: Tue, 14 Apr 2026 21:36:34 -0400 Subject: [PATCH 078/217] Fix batch changes system configuration keys (#1723) --- docs/batch-changes/permissions-in-batch-changes.mdx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/batch-changes/permissions-in-batch-changes.mdx b/docs/batch-changes/permissions-in-batch-changes.mdx index a12cd6fdd..13f233171 100644 --- a/docs/batch-changes/permissions-in-batch-changes.mdx +++ b/docs/batch-changes/permissions-in-batch-changes.mdx @@ -85,8 +85,8 @@ If you are not permitted to view a repository on Sourcegraph, you won't be able ## Disabling Batch Changes -A site admin can disable Batch Changes for a Sourcegraph instance by setting the [site configuration](/admin/config/site-config) property `"batch-changes.enabled"` to `false`. +A site admin can disable Batch Changes for a Sourcegraph instance by setting the [site configuration](/admin/config/site-config) property `"batchChanges.enabled"` to `false`. ## Disabling Batch Changes for non-site-admin users -A site admin can disable batch changes for regular users by setting the [site configuration](/admin/config/site-config) property `"batch-changes.restrictToAdmins"` to `true`. +A site admin can disable batch changes for regular users by setting the [site configuration](/admin/config/site-config) property `"batchChanges.restrictToAdmins"` to `true`. From c01204c9883df81bf9af1857ff1a9ce9b3d9d112 Mon Sep 17 00:00:00 2001 From: Marc <7050295+marcleblanc2@users.noreply.github.com> Date: Thu, 16 Apr 2026 11:44:11 -0600 Subject: [PATCH 079/217] Replace PRECISE_CODE_INTEL_UPLOAD_TTL with CODEINTEL_UPLOADSTORE_EXPIRER_MAX_AGE (#1749) Our docs currently suggest customers configure a deprecated env var. This update replaces it with the effective env var. https://github.com/sourcegraph/sourcegraph/pull/11717 removes the deprecated env var from code. --- docs/code-navigation/envvars.mdx | 11 +++++++++-- docs/self-hosted/external-services/object-storage.mdx | 3 +-- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/docs/code-navigation/envvars.mdx b/docs/code-navigation/envvars.mdx index fa9dc2fcd..b74815c5f 100644 --- a/docs/code-navigation/envvars.mdx +++ b/docs/code-navigation/envvars.mdx @@ -15,7 +15,6 @@ The following settings should be the same for the [`precise-code-intel-worker`]( | `PRECISE_CODE_INTEL_UPLOAD_BACKEND` | `blobstore` | The target file service for code graph uploads. S3, GCS, and Blobstore are supported. In older versions of Sourcegraph (before v3.4.2) `Minio` was also a valid value. | | `PRECISE_CODE_INTEL_UPLOAD_MANAGE_BUCKET` | `false` | Whether or not the client should manage the target bucket configuration | | `PRECISE_CODE_INTEL_UPLOAD_BUCKET` | `lsif-uploads` | The name of the bucket to store LSIF uploads in | -| `PRECISE_CODE_INTEL_UPLOAD_TTL` | `168h` | The maximum age of an upload before deletion | The following settings should be the same for the [`codeintel-auto-indexing`](#codeintel-auto-indexing) worker task as well. @@ -76,6 +75,15 @@ The following variables influence the behavior of the [`codeintel-janitor` worke | `PRECISE_CODE_INTEL_RETENTION_COMMIT_BATCH_SIZE` | `100` | The number of commits to process per upload at a time. | | `PRECISE_CODE_INTEL_CONFIGURATION_POLICY_MEMBERSHIP_BATCH_SIZE` | `100` | The maximum number of policy configurations to update repository membership for at a time. | +### `codeintel-upload-store-expirer` + +The following variables influence the behavior of the upload store expirer job, which cleans up old SCIP uploads from object storage. + +| **Name** | **Default** | **Description** | +| ------------------------------------------- | ----------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `CODEINTEL_UPLOADSTORE_EXPIRER_MAX_AGE` | `168h` | Time to leave an uploaded SCIP index file in the bucket before deletion, which should be long enough for the Precise Code Intel Worker to process the file into the codeintel-db.| +| `CODEINTEL_UPLOADSTORE_EXPIRER_INTERVAL` | `1h` | The frequency the expirer job runs. | + ## precise-code-intel-worker The following are variables are read from the `precise-code-intel-worker` service to control code graph data upload processing behavior. @@ -92,4 +100,3 @@ The following settings should be the same for the [`frontend`](#frontend) servic | `PRECISE_CODE_INTEL_UPLOAD_BACKEND` | `blobstore` | The target file service for code graph data uploads. S3, GCS, and Blobstore are supported. | | `PRECISE_CODE_INTEL_UPLOAD_MANAGE_BUCKET` | `false` | Whether or not the client should manage the target bucket configuration | | `PRECISE_CODE_INTEL_UPLOAD_BUCKET` | `lsif-uploads` | The name of the bucket to store LSIF uploads in | -| `PRECISE_CODE_INTEL_UPLOAD_TTL` | `168h` | The maximum age of an upload before deletion | diff --git a/docs/self-hosted/external-services/object-storage.mdx b/docs/self-hosted/external-services/object-storage.mdx index d78b4591a..fabdd753c 100644 --- a/docs/self-hosted/external-services/object-storage.mdx +++ b/docs/self-hosted/external-services/object-storage.mdx @@ -57,10 +57,9 @@ To target a GCS bucket you've already provisioned, set the following environment ### Provisioning buckets -If you would like to allow your Sourcegraph instance to control the creation and lifecycle configuration management of the target buckets, set the following environment variables: +If you would like to allow your Sourcegraph instance to call the AWS S3 / GCS API to create the bucket, set the following environment variable: - `PRECISE_CODE_INTEL_UPLOAD_MANAGE_BUCKET=true` -- `PRECISE_CODE_INTEL_UPLOAD_TTL=168h` (default) ## Search Job Results From e7ca4c415c0090a224342dc3086d8dd52125a7ab Mon Sep 17 00:00:00 2001 From: Justin Dorfman Date: Thu, 16 Apr 2026 13:19:35 -0700 Subject: [PATCH 080/217] docs: update batch changes video to new logo version (#1750) ## Summary - Updates the batch changes index page video source from `batch-changes.webm` to `batch-changes-new-logo.webm` - Ensures the demo video reflects the current Sourcegraph branding/logo --- docs/batch-changes/index.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/batch-changes/index.mdx b/docs/batch-changes/index.mdx index 1c22134d4..f58b95575 100644 --- a/docs/batch-changes/index.mdx +++ b/docs/batch-changes/index.mdx @@ -23,7 +23,7 @@ Batch Changes helps you ship large-scale code changes across many repositories a style={{width: '100%', height: 'auto'}} > From 41bc9d4f8830dbc48a42677339863d60505b7807 Mon Sep 17 00:00:00 2001 From: Enrique Gonzalez Date: Thu, 16 Apr 2026 16:11:43 -0700 Subject: [PATCH 081/217] =?UTF-8?q?fix:=20make=20completions=20config=20le?= =?UTF-8?q?ss=20prominent=20and=20favor=20modelConfigurat=E2=80=A6=20(#175?= =?UTF-8?q?1)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit …ion as much as possible --- docs/admin/config/site-config.mdx | 6 +++++- docs/cody/clients/enable-cody-enterprise.mdx | 16 ++++++++-------- .../enterprise/completions-configuration.mdx | 11 ++++++----- 3 files changed, 19 insertions(+), 14 deletions(-) diff --git a/docs/admin/config/site-config.mdx b/docs/admin/config/site-config.mdx index b2c318347..0056f8961 100644 --- a/docs/admin/config/site-config.mdx +++ b/docs/admin/config/site-config.mdx @@ -451,6 +451,8 @@ All site configuration options and their default values are shown below. // Enable/disable MCP API endpoints under `/.api/mcp`. When disabled, MCP endpoints return 404. "mcp.enabled": true, + // Recommended configuration for Cody models and providers. + // Prefer this over the legacy "completions" field. "modelConfiguration": null, // Notifications received from Sourcegraph.com to display in Sourcegraph. @@ -858,7 +860,9 @@ All site configuration options and their default values are shown below. // AI & Completions ////////////////////////////////////////////////////////////// - // Configuration for the completions service. + // DEPRECATED: Legacy configuration for Cody models. + // Prefer "modelConfiguration" for new deployments, and do not set this + // field if your instance is already configured with "modelConfiguration". // Other example values: // - { // "accessToken": "abc123", diff --git a/docs/cody/clients/enable-cody-enterprise.mdx b/docs/cody/clients/enable-cody-enterprise.mdx index 9ceed40b3..922c19e53 100644 --- a/docs/cody/clients/enable-cody-enterprise.mdx +++ b/docs/cody/clients/enable-cody-enterprise.mdx @@ -96,18 +96,18 @@ There are two ways of configuring Cody for LLM providers: - - + + diff --git a/docs/cody/enterprise/completions-configuration.mdx b/docs/cody/enterprise/completions-configuration.mdx index 075641b6d..4e711ef77 100644 --- a/docs/cody/enterprise/completions-configuration.mdx +++ b/docs/cody/enterprise/completions-configuration.mdx @@ -5,11 +5,12 @@ instance.

- - Configuring Cody via `completions` is legacy but it's still supported. We - recommend using the new - [`modelConfiguration`](/cody/enterprise/model-configuration) for flexible - LLM model selection. + + `completions` is a legacy configuration path. Do not add `completions` if + your instance is already configured with + [`modelConfiguration`](/cody/enterprise/model-configuration). Use + `modelConfiguration` for new deployments. Only use `completions` if your + instance has already been using it, and consider moving away from it. [Cody Enterprise](https://sourcegraph.com/enterprise) supports many models and model providers. You can configure Cody Enterprise to access models via Sourcegraph Cody Gateway or directly using your own model provider account or infrastructure. Let's look at these options in more detail. From b2bee7c7d84941fa7c4a403330aa6ce79b34768f Mon Sep 17 00:00:00 2001 From: sourcegraph-buildkite <71296199+sourcegraph-buildkite@users.noreply.github.com> Date: Fri, 17 Apr 2026 03:57:25 +0200 Subject: [PATCH 082/217] =?UTF-8?q?=F0=9F=A4=96=20Sync=20generated=20docs?= =?UTF-8?q?=20from=20sourcegraph/sourcegraph=20(#1740)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This is an automated pull request, created by //doc:generated.push on sourcegraph/sourcegraph Co-authored-by: Buildkite Co-authored-by: Robert Lin --- docs/admin/code-hosts/aws-codecommit.mdx | 2 +- docs/admin/code-hosts/azuredevops.mdx | 20 +- docs/admin/code-hosts/bitbucket-cloud.mdx | 2 +- docs/admin/code-hosts/bitbucket-server.mdx | 2 +- docs/admin/code-hosts/gerrit.mdx | 2 +- docs/admin/code-hosts/github.mdx | 2 +- docs/admin/code-hosts/gitlab.mdx | 2 +- docs/admin/code-hosts/gitolite.mdx | 2 +- docs/admin/code-hosts/other.mdx | 2 +- docs/admin/code-hosts/phabricator.mdx | 2 +- docs/admin/config/settings.mdx | 2 +- docs/admin/config/site-config.mdx | 5 +- docs/admin/repo/perforce.mdx | 2 +- .../telemetry/private-metadata-allowlist.mdx | 3 +- docs/admin/telemetry/protocol.mdx | 1 + docs/cli/references/auth.mdx | 22 + docs/cli/references/index.mdx | 1 + docs/cli/references/login.mdx | 6 +- docs/self-hosted/observability/alerts.mdx | 227 +++++- docs/self-hosted/observability/dashboards.mdx | 669 +++++++++++++++++- 20 files changed, 926 insertions(+), 50 deletions(-) create mode 100644 docs/cli/references/auth.mdx diff --git a/docs/admin/code-hosts/aws-codecommit.mdx b/docs/admin/code-hosts/aws-codecommit.mdx index 92975a892..1baf5cbcb 100644 --- a/docs/admin/code-hosts/aws-codecommit.mdx +++ b/docs/admin/code-hosts/aws-codecommit.mdx @@ -37,7 +37,7 @@ AWS CodeCommit connections support the following configuration options, which ar {/* SCHEMA_SYNC_START: admin/code_hosts/aws_codecommit.schema.json */} {/* WARNING: This section is auto-generated during releases. Do not edit manually. */} -{/* Last updated: 2026-03-30T11:57:12Z */} +{/* Last updated: 2026-04-14T00:48:03Z */} ```json { // REQUIRED: diff --git a/docs/admin/code-hosts/azuredevops.mdx b/docs/admin/code-hosts/azuredevops.mdx index 60ea02fb2..306e0fcbc 100644 --- a/docs/admin/code-hosts/azuredevops.mdx +++ b/docs/admin/code-hosts/azuredevops.mdx @@ -69,7 +69,7 @@ Azure DevOps connections support the following configuration options, which are {/* SCHEMA_SYNC_START: admin/code_hosts/azuredevops.schema.json */} {/* WARNING: This section is auto-generated during releases. Do not edit manually. */} -{/* Last updated: 2026-03-30T11:57:12Z */} +{/* Last updated: 2026-04-14T00:48:03Z */} ```json // Authentication alternatives: token OR windowsPassword @@ -131,19 +131,23 @@ Azure DevOps connections support the following configuration options, which are // ] "projects": null, - // An array of "org/project/repo" strings specifying which Azure DevOps repositories within a project should be mirrored in Sourcegraph. - "repos": [ - "myorg/my-project/myrepo", // Format: // - "myorg/myproject/myproject", // Format: repository where project and repo share the same name - "myorg/my project/my project" // Format: spaces in project or repository names - ] - // Rate limit applied when making background API requests. "rateLimit": { "enabled": false, "requestsPerHour": 0 }, + // An array of repository "org/project/repo" strings specifying which Azure DevOps repositories to mirror on Sourcegraph. If both 'repos' and 'projects' or 'orgs' are specified, the union of both sets will be synced. + // Other example values: + // - [ + // "myorg/myproject/myrepo" + // ] + // - [ + // "myorg/my project/myrepo", + // "myorg/anotherproject/anotherrepo" + // ] + "repos": null, + // The pattern used to generate the corresponding Sourcegraph repository name for a Azure DevOps repository. // - "{host}" is replaced with the Azure DevOps URL's host (such as dev.azure.com) // - "{orgName}" is replaced with the repository's parent projects owning organization (or collection on DevOps server) diff --git a/docs/admin/code-hosts/bitbucket-cloud.mdx b/docs/admin/code-hosts/bitbucket-cloud.mdx index 6e28423cf..4b988dc3a 100644 --- a/docs/admin/code-hosts/bitbucket-cloud.mdx +++ b/docs/admin/code-hosts/bitbucket-cloud.mdx @@ -116,7 +116,7 @@ Bitbucket Cloud connections support the following configuration options, which a {/* SCHEMA_SYNC_START: admin/code_hosts/bitbucket_cloud.schema.json */} {/* WARNING: This section is auto-generated during releases. Do not edit manually. */} -{/* Last updated: 2026-03-30T11:57:12Z */} +{/* Last updated: 2026-04-14T00:48:03Z */} ```json { // The workspace access token to use when authenticating with Bitbucket Cloud. diff --git a/docs/admin/code-hosts/bitbucket-server.mdx b/docs/admin/code-hosts/bitbucket-server.mdx index 4b32be04a..78d6f9907 100644 --- a/docs/admin/code-hosts/bitbucket-server.mdx +++ b/docs/admin/code-hosts/bitbucket-server.mdx @@ -202,7 +202,7 @@ Bitbucket Server / Bitbucket Data Center connections support the following confi {/* SCHEMA_SYNC_START: admin/code_hosts/bitbucket_server.schema.json */} {/* WARNING: This section is auto-generated during releases. Do not edit manually. */} -{/* Last updated: 2026-03-30T11:57:12Z */} +{/* Last updated: 2026-04-14T00:48:03Z */} ```json // Authentication alternatives: token OR password diff --git a/docs/admin/code-hosts/gerrit.mdx b/docs/admin/code-hosts/gerrit.mdx index 9fd9f2825..dce57c1fa 100644 --- a/docs/admin/code-hosts/gerrit.mdx +++ b/docs/admin/code-hosts/gerrit.mdx @@ -113,7 +113,7 @@ Gerrit connections support the following configuration options, which are specif {/* SCHEMA_SYNC_START: admin/code_hosts/gerrit.schema.json */} {/* WARNING: This section is auto-generated during releases. Do not edit manually. */} -{/* Last updated: 2026-03-30T11:57:12Z */} +{/* Last updated: 2026-04-14T00:48:03Z */} ```json { // If non-null, enforces Gerrit repository permissions. This requires that there is an item in the [site configuration json](https://sourcegraph.com/docs/admin/config/site_config#auth-providers) `auth.providers` field, of type "gerrit" with the same `url` field as specified in this `GerritConnection`. diff --git a/docs/admin/code-hosts/github.mdx b/docs/admin/code-hosts/github.mdx index 93826d807..11cfa94e6 100644 --- a/docs/admin/code-hosts/github.mdx +++ b/docs/admin/code-hosts/github.mdx @@ -454,7 +454,7 @@ GitHub connections support the following configuration options, which are specif {/* SCHEMA_SYNC_START: admin/code_hosts/github.schema.json */} {/* WARNING: This section is auto-generated during releases. Do not edit manually. */} -{/* Last updated: 2026-03-30T11:57:12Z */} +{/* Last updated: 2026-04-14T00:48:03Z */} ```json // Authentication alternatives: token OR gitHubAppDetails OR externalAccount OR useRandomExternalAccount diff --git a/docs/admin/code-hosts/gitlab.mdx b/docs/admin/code-hosts/gitlab.mdx index 0f844657f..a58cac4ee 100644 --- a/docs/admin/code-hosts/gitlab.mdx +++ b/docs/admin/code-hosts/gitlab.mdx @@ -189,7 +189,7 @@ See [Internal rate limits](/admin/code-hosts/rate-limits#internal-rate-limits). {/* SCHEMA_SYNC_START: admin/code_hosts/gitlab.schema.json */} {/* WARNING: This section is auto-generated during releases. Do not edit manually. */} -{/* Last updated: 2026-03-30T11:57:12Z */} +{/* Last updated: 2026-04-14T00:48:03Z */} ```json { // If non-null, enforces GitLab repository permissions. This requires that there be an item in the `auth.providers` field of type "gitlab" with the same `url` field as specified in this `GitLabConnection`. diff --git a/docs/admin/code-hosts/gitolite.mdx b/docs/admin/code-hosts/gitolite.mdx index c3e945707..773b93c5f 100644 --- a/docs/admin/code-hosts/gitolite.mdx +++ b/docs/admin/code-hosts/gitolite.mdx @@ -25,7 +25,7 @@ To connect Gitolite to Sourcegraph: {/* SCHEMA_SYNC_START: admin/code_hosts/gitolite.schema.json */} {/* WARNING: This section is auto-generated during releases. Do not edit manually. */} -{/* Last updated: 2026-03-30T11:57:12Z */} +{/* Last updated: 2026-04-14T00:48:03Z */} ```json { // A list of repositories to never mirror from this Gitolite instance. Supports excluding by exact name ({"name": "foo"}). diff --git a/docs/admin/code-hosts/other.mdx b/docs/admin/code-hosts/other.mdx index 38903208f..d3b73b3d2 100644 --- a/docs/admin/code-hosts/other.mdx +++ b/docs/admin/code-hosts/other.mdx @@ -68,7 +68,7 @@ Repositories must be listed individually: {/* SCHEMA_SYNC_START: admin/code_hosts/other_external_service.schema.json */} {/* WARNING: This section is auto-generated during releases. Do not edit manually. */} -{/* Last updated: 2026-03-30T11:57:12Z */} +{/* Last updated: 2026-04-14T00:48:03Z */} ```json { // A list of repositories to never mirror by name after applying repositoryPathPattern. Supports excluding by exact name ({"name": "myrepo"}) or regular expression ({"pattern": ".*secret.*"}). diff --git a/docs/admin/code-hosts/phabricator.mdx b/docs/admin/code-hosts/phabricator.mdx index 49461a8f0..4fd1b944c 100644 --- a/docs/admin/code-hosts/phabricator.mdx +++ b/docs/admin/code-hosts/phabricator.mdx @@ -76,7 +76,7 @@ The Sourcegraph instance's site admin must [update the `corsOrigin` site config {/* SCHEMA_SYNC_START: admin/code_hosts/phabricator.schema.json */} {/* WARNING: This section is auto-generated during releases. Do not edit manually. */} -{/* Last updated: 2026-03-30T11:57:12Z */} +{/* Last updated: 2026-04-14T00:48:03Z */} ```json { // SSH cipher to use when cloning via SSH. Must be a valid choice from `ssh -Q cipher`. diff --git a/docs/admin/config/settings.mdx b/docs/admin/config/settings.mdx index 3073d85c5..6bf175da4 100644 --- a/docs/admin/config/settings.mdx +++ b/docs/admin/config/settings.mdx @@ -27,7 +27,7 @@ Settings options and their default values are shown below. {/* SCHEMA_SYNC_START: admin/config/settings.schema.json */} {/* WARNING: This section is auto-generated during releases. Do not edit manually. */} -{/* Last updated: 2026-03-30T11:57:12Z */} +{/* Last updated: 2026-04-14T00:48:03Z */} ```json { diff --git a/docs/admin/config/site-config.mdx b/docs/admin/config/site-config.mdx index 0056f8961..f5deff347 100644 --- a/docs/admin/config/site-config.mdx +++ b/docs/admin/config/site-config.mdx @@ -21,7 +21,7 @@ All site configuration options and their default values are shown below. {/* SCHEMA_SYNC_START: admin/config/site.schema.json */} {/* WARNING: This section is auto-generated during releases. Do not edit manually. */} -{/* Last updated: 2026-03-30T11:57:12Z */} +{/* Last updated: 2026-04-14T00:48:03Z */} ```json { @@ -180,9 +180,6 @@ All site configuration options and their default values are shown below. // Enable/disable sharing of Deep Search conversations via read tokens "deepSearch.sharing.enabled": false, - // Use database-backed worker for Deep Search question processing instead of in-memory worker pool. Enables persistence across frontend restarts. - "deepSearch.worker.enabled": true, - // The rate limit (in requests per hour) for the default rate limiter in the rate limiters registry. By default this is disabled and the default rate limit is infinity. "defaultRateLimit": -1, diff --git a/docs/admin/repo/perforce.mdx b/docs/admin/repo/perforce.mdx index 8cb33dbab..8159ea637 100644 --- a/docs/admin/repo/perforce.mdx +++ b/docs/admin/repo/perforce.mdx @@ -228,7 +228,7 @@ With this setting, Sourcegraph will ignore any rules with a host other than `*`, {/* SCHEMA_SYNC_START: admin/code_hosts/perforce.schema.json */} {/* WARNING: This section is auto-generated during releases. Do not edit manually. */} -{/* Last updated: 2026-03-30T11:57:12Z */} +{/* Last updated: 2026-04-14T00:48:03Z */} ```json { // If non-null, enforces Perforce depot permissions. diff --git a/docs/admin/telemetry/private-metadata-allowlist.mdx b/docs/admin/telemetry/private-metadata-allowlist.mdx index 609fe90f9..78bdcc02a 100644 --- a/docs/admin/telemetry/private-metadata-allowlist.mdx +++ b/docs/admin/telemetry/private-metadata-allowlist.mdx @@ -34,4 +34,5 @@ To learn more, refer to the [telemetry documentation](https://sourcegraph.com/do | `cody.smart-apply.context` | `applied` | `model` — High-cardinality model identifier; helpful for determining the model that was selected. | | `deepsearch` | `search.toolcall` | `toolName` — High-cardinality tool name; helpful for determining which tools are being used during deep search.
`toolId` — High-cardinality tool identifier; helpful for determining which tools are being used during deep search.
`model` — High-cardinality model identifier; helpful for determining which models are being used during deep search. | | `admin.users` | `delete` | `userIDs` — Numeric identifiers of users being deleted; needed for audit and analytics of admin user management actions. | -| `externalApi` | `request` | `procedure` — ConnectRPC procedure path (e.g. '/sourcegraph.users.v1.UsersService/GetUser'); not sensitive and needed to distinguish which external API RPCs are being used. | \ No newline at end of file +| `externalApi` | `request` | `procedure` — ConnectRPC procedure path (e.g. '/sourcegraph.users.v1.UsersService/GetUser'); not sensitive and needed to distinguish which external API RPCs are being used. | +| `metering` | `consume` | `meteringEventId` — The UUID of the billing event in the metering export queue, used to correlate billing events with telemetry events. | \ No newline at end of file diff --git a/docs/admin/telemetry/protocol.mdx b/docs/admin/telemetry/protocol.mdx index 258aa669a..8b25a7a42 100644 --- a/docs/admin/telemetry/protocol.mdx +++ b/docs/admin/telemetry/protocol.mdx @@ -439,6 +439,7 @@ Sourcegraph Analytics features. | username | [string](#string) | |

Username of the user.

| | primary_email | [string](#string) | |

Primary email of the user.

| | assigned_rbac_roles | [string](#string) | repeated |

Assigned RBAC roles for the user.

| +| service_account | [bool](#bool) | |

Whether the user is a service account.

| diff --git a/docs/cli/references/auth.mdx b/docs/cli/references/auth.mdx new file mode 100644 index 000000000..eb5d3834e --- /dev/null +++ b/docs/cli/references/auth.mdx @@ -0,0 +1,22 @@ +# `src auth` + + + +## Usage + +``` +'src auth' provides authentication-related helper commands. + +Usage: + + src auth command [command options] + +The commands are: + + token prints the current authentication token + +Use "src auth [command] -h" for more information about a command. + + +``` + \ No newline at end of file diff --git a/docs/cli/references/index.mdx b/docs/cli/references/index.mdx index 5f606371d..9c0eb3737 100644 --- a/docs/cli/references/index.mdx +++ b/docs/cli/references/index.mdx @@ -5,6 +5,7 @@ * [`admin`](references/admin) * [`api`](references/api) +* [`auth`](references/auth) * [`batch`](references/batch) * [`code-intel`](references/code-intel) * [`codeowners`](references/codeowners) diff --git a/docs/cli/references/login.mdx b/docs/cli/references/login.mdx index a53c76fd7..19a74edaf 100644 --- a/docs/cli/references/login.mdx +++ b/docs/cli/references/login.mdx @@ -19,7 +19,7 @@ Usage: - src login SOURCEGRAPH_URL + src login [flags] SOURCEGRAPH_URL Examples: @@ -31,6 +31,10 @@ Examples: $ src login https://sourcegraph.com + If no access token is configured, 'src login' uses OAuth device flow automatically: + + $ src login https://sourcegraph.com + -dump-requests Log GraphQL requests and responses to stdout -get-curl diff --git a/docs/self-hosted/observability/alerts.mdx b/docs/self-hosted/observability/alerts.mdx index 1909109c1..9034041ff 100644 --- a/docs/self-hosted/observability/alerts.mdx +++ b/docs/self-hosted/observability/alerts.mdx @@ -6546,6 +6546,175 @@ Generated query for warning alert: `max((sum(increase(src_telemetrygatewayexport
+## metering: metering_exporter_queue_growth + +

rate of growth of metering export queue over 30m

+ +**Descriptions** + +- warning metering: 1+ rate of growth of metering export queue over 30m for 1h0m0s +- critical metering: 1+ rate of growth of metering export queue over 30m for 36h0m0s + +**Next steps** + +- Check the "number of metering events exported per batch over 30m" dashboard panel to see if export throughput is at saturation. +- Check worker logs for metering exporter failures and Enterprise Portal connectivity issues. +- More help interpreting this metric is available in the [dashboards reference](dashboards#metering-metering_exporter_queue_growth). +- **Silence this alert:** If you are aware of this alert and want to silence notifications for it, add the following to your site configuration and set a reminder to re-evaluate the alert: + +```json +"observability.silenceAlerts": [ + "warning_metering_metering_exporter_queue_growth", + "critical_metering_metering_exporter_queue_growth" +] +``` + +*Managed by the Sourcegraph Services team.* + +
+Technical details + +Generated query for warning alert: `max(((deriv((sum(src_meteringexporter_queue_size and on (instance, job) ((increase(src_meteringexporter_queue_metrics_reporter_total{job=~"^worker.*"\}[15m]) > 0) or on (instance, job) (increase(src_meteringexporter_queue_metrics_reporter_errors_total\{job=~"^worker.*"}[15m]) > 0))))[30m:])) or on () vector(0)) > 1)` + +Generated query for critical alert: `max(((deriv((sum(src_meteringexporter_queue_size and on (instance, job) ((increase(src_meteringexporter_queue_metrics_reporter_total{job=~"^worker.*"\}[15m]) > 0) or on (instance, job) (increase(src_meteringexporter_queue_metrics_reporter_errors_total\{job=~"^worker.*"}[15m]) > 0))))[30m:])) or on () vector(0)) > 1)` + +
+ +
+ +## metering: metering_exporter_oldest_unexported_event_age + +

age of the oldest unexported metering event

+ +**Descriptions** + +- warning metering: 1800s+ age of the oldest unexported metering event for 30m0s +- critical metering: 7200s+ age of the oldest unexported metering event for 2h0m0s + +**Next steps** + +- Check whether the metering export job is failing or making no forward progress. +- Compare this panel with "rate of growth of metering export queue over 30m" and the exporter error panels below. +- Check worker logs and verify the Enterprise Portal is reachable. +- More help interpreting this metric is available in the [dashboards reference](dashboards#metering-metering_exporter_oldest_unexported_event_age). +- **Silence this alert:** If you are aware of this alert and want to silence notifications for it, add the following to your site configuration and set a reminder to re-evaluate the alert: + +```json +"observability.silenceAlerts": [ + "warning_metering_metering_exporter_oldest_unexported_event_age", + "critical_metering_metering_exporter_oldest_unexported_event_age" +] +``` + +*Managed by the Sourcegraph Services team.* + +
+Technical details + +Generated query for warning alert: `max(((max(src_meteringexporter_oldest_unexported_event and on (instance, job) ((increase(src_meteringexporter_queue_metrics_reporter_total{job=~"^worker.*"\}[15m]) > 0) or on (instance, job) (increase(src_meteringexporter_queue_metrics_reporter_errors_total\{job=~"^worker.*"}[15m]) > 0)))) or on () vector(0)) > 1800)` + +Generated query for critical alert: `max(((max(src_meteringexporter_oldest_unexported_event and on (instance, job) ((increase(src_meteringexporter_queue_metrics_reporter_total{job=~"^worker.*"\}[15m]) > 0) or on (instance, job) (increase(src_meteringexporter_queue_metrics_reporter_errors_total\{job=~"^worker.*"}[15m]) > 0)))) or on () vector(0)) > 7200)` + +
+ +
+ +## metering: meteringexporter_exporter_errors_total + +

events exporter operation errors every 30m

+ +**Descriptions** + +- warning metering: 0+ events exporter operation errors every 30m + +**Next steps** + +- Failures indicate that exporting credit metering events from Sourcegraph are failing. +- Check worker logs for metering exporter failures and Enterprise Portal connectivity issues. +- Learn more about the related dashboard panel in the [dashboards reference](dashboards#metering-meteringexporter_exporter_errors_total). +- **Silence this alert:** If you are aware of this alert and want to silence notifications for it, add the following to your site configuration and set a reminder to re-evaluate the alert: + +```json +"observability.silenceAlerts": [ + "warning_metering_meteringexporter_exporter_errors_total" +] +``` + +*Managed by the Sourcegraph Services team.* + +
+Technical details + +Generated query for warning alert: `max((sum(increase(src_meteringexporter_exporter_errors_total{job=~"^worker.*"}[30m]))) > 0)` + +
+ +
+ +## metering: meteringexporter_queue_cleanup_errors_total + +

events export queue cleanup operation errors every 30m

+ +**Descriptions** + +- warning metering: 0+ events export queue cleanup operation errors every 30m + +**Next steps** + +- Failures indicate that pruning already-exported metering events from the queue is failing. +- Check worker logs for metering exporter cleanup failures. +- Learn more about the related dashboard panel in the [dashboards reference](dashboards#metering-meteringexporter_queue_cleanup_errors_total). +- **Silence this alert:** If you are aware of this alert and want to silence notifications for it, add the following to your site configuration and set a reminder to re-evaluate the alert: + +```json +"observability.silenceAlerts": [ + "warning_metering_meteringexporter_queue_cleanup_errors_total" +] +``` + +*Managed by the Sourcegraph Services team.* + +
+Technical details + +Generated query for warning alert: `max((sum(increase(src_meteringexporter_queue_cleanup_errors_total{job=~"^worker.*"}[30m]))) > 0)` + +
+ +
+ +## metering: meteringexporter_queue_metrics_reporter_errors_total + +

events export backlog metrics reporting operation errors every 30m

+ +**Descriptions** + +- warning metering: 0+ events export backlog metrics reporting operation errors every 30m + +**Next steps** + +- Failures indicate that metering export queue metrics are not being refreshed. +- Check worker logs for metering exporter metrics reporter failures. +- Learn more about the related dashboard panel in the [dashboards reference](dashboards#metering-meteringexporter_queue_metrics_reporter_errors_total). +- **Silence this alert:** If you are aware of this alert and want to silence notifications for it, add the following to your site configuration and set a reminder to re-evaluate the alert: + +```json +"observability.silenceAlerts": [ + "warning_metering_meteringexporter_queue_metrics_reporter_errors_total" +] +``` + +*Managed by the Sourcegraph Services team.* + +
+Technical details + +Generated query for warning alert: `max((sum(increase(src_meteringexporter_queue_metrics_reporter_errors_total{job=~"^worker.*"}[30m]))) > 0)` + +
+ +
+ ## otel-collector: otel_span_refused

spans refused per receiver

@@ -6815,7 +6984,6 @@ Generated query for critical alert: `max((max(deriv(src_deepsearch_questions_in_ **Next steps** - Check frontend logs for `Worker failed to process question` errors. -- Review LLM stream errors in the `LLM streaming` panel below. - Check for upstream LLM provider issues. - More help interpreting this metric is available in the [dashboards reference](dashboards#deepsearch-deepsearch_question_processing_error_rate). - **Silence this alert:** If you are aware of this alert and want to silence notifications for it, add the following to your site configuration and set a reminder to re-evaluate the alert: @@ -6840,23 +7008,27 @@ Generated query for critical alert: `max((sum(rate(src_deepsearch_question_proce
-## deepsearch: deepsearch_llm_stream_fatal_errors +## deepsearch: deepsearch_slow_questions -

fatal LLM stream errors over 5m

+

questions taking longer than 5 minutes over 15m

**Descriptions** -- warning deepsearch: 20+ fatal LLM stream errors over 5m +- warning deepsearch: 3+ questions taking longer than 5 minutes over 15m +- critical deepsearch: 10+ questions taking longer than 5 minutes over 15m **Next steps** -- Check frontend logs for `fatal error in LLM stream`. -- More help interpreting this metric is available in the [dashboards reference](dashboards#deepsearch-deepsearch_llm_stream_fatal_errors). +- Search frontend logs for questionIDs with long processing times. +- Check `deepsearch_turn_p95_duration` to see if individual turns are slow. +- Check `deepsearch_question_outcome_by_reason` for elevated truncation or error rates. +- More help interpreting this metric is available in the [dashboards reference](dashboards#deepsearch-deepsearch_slow_questions). - **Silence this alert:** If you are aware of this alert and want to silence notifications for it, add the following to your site configuration and set a reminder to re-evaluate the alert: ```json "observability.silenceAlerts": [ - "warning_deepsearch_deepsearch_llm_stream_fatal_errors" + "warning_deepsearch_deepsearch_slow_questions", + "critical_deepsearch_deepsearch_slow_questions" ] ``` @@ -6865,7 +7037,46 @@ Generated query for critical alert: `max((sum(rate(src_deepsearch_question_proce
Technical details -Generated query for warning alert: `max((sum(increase(src_deepsearch_question_processing_errors_total{operation="llm_stream_fatal"}[5m]))) > 20)` +Generated query for warning alert: `max((sum(increase(src_deepsearch_question_processing_duration_seconds_count{operation="question"\}[15m])) - sum(increase(src_deepsearch_question_processing_duration_seconds_bucket\{le="300",operation="question"}[15m]))) > 3)` + +Generated query for critical alert: `max((sum(increase(src_deepsearch_question_processing_duration_seconds_count{operation="question"\}[15m])) - sum(increase(src_deepsearch_question_processing_duration_seconds_bucket\{le="300",operation="question"}[15m]))) > 10)` + +
+ +
+ +## deepsearch: deepsearch_response_truncated + +

response truncated questions over 15m

+ +**Descriptions** + +- warning deepsearch: 3+ response truncated questions over 15m +- critical deepsearch: 10+ response truncated questions over 15m + +**Next steps** + +- Search frontend logs for: "answer truncated due to output token limit" to find affected questionIDs. +- This usually indicates model overthinking and spending all output tokens on thinking with no useful answer, or the user requested an extremely large output. +- Check if a recent model change may have caused increased thinking token usage. +- More help interpreting this metric is available in the [dashboards reference](dashboards#deepsearch-deepsearch_response_truncated). +- **Silence this alert:** If you are aware of this alert and want to silence notifications for it, add the following to your site configuration and set a reminder to re-evaluate the alert: + +```json +"observability.silenceAlerts": [ + "warning_deepsearch_deepsearch_response_truncated", + "critical_deepsearch_deepsearch_response_truncated" +] +``` + +*Managed by the Sourcegraph Code Understanding team.* + +
+Technical details + +Generated query for warning alert: `max((sum(increase(src_deepsearch_question_outcome_total{outcome="response_truncated"}[15m]))) > 3)` + +Generated query for critical alert: `max((sum(increase(src_deepsearch_question_outcome_total{outcome="response_truncated"}[15m]))) > 10)`
diff --git a/docs/self-hosted/observability/dashboards.mdx b/docs/self-hosted/observability/dashboards.mdx index 0e5a20306..38290ef9e 100644 --- a/docs/self-hosted/observability/dashboards.mdx +++ b/docs/self-hosted/observability/dashboards.mdx @@ -6205,9 +6205,7 @@ sum(src_gitserver_clone_queue)

Number of concurrent requests running against gitserver client

-This metric is only for informational purposes. It indicates the current number of concurrently running requests by process against gitserver gRPC. - -It does not indicate any problems with the instance, but can give a good indication of load spikes or request throttling. +This metric is only for informational purposes. It indicates the current number of concurrently running requests by process against gitserver gRPC. It does not indicate any problems with the instance, but can give a good indication of load spikes or request throttling. This panel has no related alerts. @@ -6227,6 +6225,30 @@ sum by (job, instance) (src_gitserver_client_concurrent_requests)
+#### gitserver: repos_not_on_primary + +

Cloned repos not on primary shard

+ +The number of cloned repositories currently observed off-primary. For shard relocation operations this should trend towards zero. + +This panel has no related alerts. + +To see this panel, visit `/-/debug/grafana/d/gitserver/gitserver?viewPanel=100032` on your Sourcegraph instance. + +*Managed by the Sourcegraph Services team.* + +
+Technical details + +Query: + +``` +max(src_repoupdater_repos_not_on_primary) +``` +
+ +
+ ### Git Server: Gitserver (CPU, Memory) Gitserver leverages memory mapping to optimize file reads: it is generally expected to consume all the memory provided to it, if it can. When it finds data that is not available in memory yet, this causes a 'page fault', and the data is loaded into memory from disk. @@ -33061,6 +33083,473 @@ sum(increase(src_telemetrygatewayexporter_usermetadata_exporter_errors_total{job
+## Metering + +

Monitoring credit metering export services in Sourcegraph.

+ +To see this dashboard, visit `/-/debug/grafana/d/metering/metering` on your Sourcegraph instance. + +### Metering: Metering exporter: events export and queue metrics + +#### metering: metering_exporter_queue_size + +

Credit metering events pending export

+ +The number of credit metering events queued to be exported. + +This panel has no related alerts. + +To see this panel, visit `/-/debug/grafana/d/metering/metering?viewPanel=100000` on your Sourcegraph instance. + +*Managed by the Sourcegraph Services team.* + +
+Technical details + +Query: + +``` +( + sum( + src_meteringexporter_queue_size + and on(instance, job) + ( + ( + increase(src_meteringexporter_queue_metrics_reporter_total{job=~"^worker.*"}[15m]) > 0 + ) + or on(instance, job) + ( + increase(src_meteringexporter_queue_metrics_reporter_errors_total{job=~"^worker.*"}[15m]) > 0 + ) + ) + ) + ) or on() vector(0) +``` +
+ +
+ +#### metering: metering_exporter_queue_growth + +

Rate of growth of metering export queue over 30m

+ +A positive value indicates the metering export queue is growing. + +Refer to the [alerts reference](alerts#metering-metering_exporter_queue_growth) for 2 alerts related to this panel. + +To see this panel, visit `/-/debug/grafana/d/metering/metering?viewPanel=100001` on your Sourcegraph instance. + +*Managed by the Sourcegraph Services team.* + +
+Technical details + +Query: + +``` +( + deriv(( + sum( + src_meteringexporter_queue_size + and on(instance, job) + ( + ( + increase(src_meteringexporter_queue_metrics_reporter_total{job=~"^worker.*"}[15m]) > 0 + ) + or on(instance, job) + ( + increase(src_meteringexporter_queue_metrics_reporter_errors_total{job=~"^worker.*"}[15m]) > 0 + ) + ) + ) + )[30m:]) + ) or on() vector(0) +``` +
+ +
+ +#### metering: metering_exporter_oldest_unexported_event_age + +

Age of the oldest unexported metering event

+ +The age in seconds of the oldest metering event still waiting in the export queue. + +Refer to the [alerts reference](alerts#metering-metering_exporter_oldest_unexported_event_age) for 2 alerts related to this panel. + +To see this panel, visit `/-/debug/grafana/d/metering/metering?viewPanel=100010` on your Sourcegraph instance. + +*Managed by the Sourcegraph Services team.* + +
+Technical details + +Query: + +``` +( + max( + src_meteringexporter_oldest_unexported_event + and on(instance, job) + ( + ( + increase(src_meteringexporter_queue_metrics_reporter_total{job=~"^worker.*"}[15m]) > 0 + ) + or on(instance, job) + ( + increase(src_meteringexporter_queue_metrics_reporter_errors_total{job=~"^worker.*"}[15m]) > 0 + ) + ) + ) + ) or on() vector(0) +``` +
+ +
+ +#### metering: metering_exporter_exported_events + +

Metering events exported from queue per hour

+ +The number of metering events exported over the last hour. + +This panel has no related alerts. + +To see this panel, visit `/-/debug/grafana/d/metering/metering?viewPanel=100011` on your Sourcegraph instance. + +*Managed by the Sourcegraph Services team.* + +
+Technical details + +Query: + +``` +sum(increase(src_meteringexporter_exported_events[1h])) +``` +
+ +
+ +#### metering: metering_exporter_batch_size + +

Number of metering events exported per batch over 30m

+ +The number of metering events exported in each batch. The largest bucket is the maximum number of events exported per batch. +If the distribution trends to the maximum bucket, then export throughput is at or approaching saturation - please contact customer support. + +This panel has no related alerts. + +To see this panel, visit `/-/debug/grafana/d/metering/metering?viewPanel=100020` on your Sourcegraph instance. + +*Managed by the Sourcegraph Services team.* + +
+Technical details + +Query: + +``` +sum by (le) (rate(src_meteringexporter_batch_size_bucket[30m])) +``` +
+ +
+ +#### metering: metering_exporter_pruned_events + +

Metering events pruned from queue per hour

+ +The number of already-exported metering events pruned from the queue over the last hour. + +This panel has no related alerts. + +To see this panel, visit `/-/debug/grafana/d/metering/metering?viewPanel=100021` on your Sourcegraph instance. + +*Managed by the Sourcegraph Services team.* + +
+Technical details + +Query: + +``` +sum(increase(src_meteringexporter_events_pruned[1h])) +``` +
+ +
+ +### Metering: Metering Exporter: Events export job operations + +#### metering: meteringexporter_exporter_total + +

Events exporter operations every 30m

+ +This panel has no related alerts. + +To see this panel, visit `/-/debug/grafana/d/metering/metering?viewPanel=100100` on your Sourcegraph instance. + +*Managed by the Sourcegraph Services team.* + +
+Technical details + +Query: + +``` +sum(increase(src_meteringexporter_exporter_total{job=~"^worker.*"}[30m])) +``` +
+ +
+ +#### metering: meteringexporter_exporter_99th_percentile_duration + +

Aggregate successful events exporter operation duration distribution over 30m

+ +This panel has no related alerts. + +To see this panel, visit `/-/debug/grafana/d/metering/metering?viewPanel=100101` on your Sourcegraph instance. + +*Managed by the Sourcegraph Services team.* + +
+Technical details + +Query: + +``` +sum by (le)(rate(src_meteringexporter_exporter_duration_seconds_bucket{job=~"^worker.*"}[30m])) +``` +
+ +
+ +#### metering: meteringexporter_exporter_errors_total + +

Events exporter operation errors every 30m

+ +Refer to the [alerts reference](alerts#metering-meteringexporter_exporter_errors_total) for 1 alert related to this panel. + +To see this panel, visit `/-/debug/grafana/d/metering/metering?viewPanel=100102` on your Sourcegraph instance. + +*Managed by the Sourcegraph Services team.* + +
+Technical details + +Query: + +``` +sum(increase(src_meteringexporter_exporter_errors_total{job=~"^worker.*"}[30m])) +``` +
+ +
+ +#### metering: meteringexporter_exporter_error_rate + +

Events exporter operation error rate over 30m

+ +This panel has no related alerts. + +To see this panel, visit `/-/debug/grafana/d/metering/metering?viewPanel=100103` on your Sourcegraph instance. + +*Managed by the Sourcegraph Services team.* + +
+Technical details + +Query: + +``` +sum(increase(src_meteringexporter_exporter_errors_total{job=~"^worker.*"}[30m])) / (sum(increase(src_meteringexporter_exporter_total{job=~"^worker.*"}[30m])) + sum(increase(src_meteringexporter_exporter_errors_total{job=~"^worker.*"}[30m]))) * 100 +``` +
+ +
+ +### Metering: Metering Exporter: Events export queue cleanup job operations + +#### metering: meteringexporter_queue_cleanup_total + +

Events export queue cleanup operations every 30m

+ +This panel has no related alerts. + +To see this panel, visit `/-/debug/grafana/d/metering/metering?viewPanel=100200` on your Sourcegraph instance. + +*Managed by the Sourcegraph Services team.* + +
+Technical details + +Query: + +``` +sum(increase(src_meteringexporter_queue_cleanup_total{job=~"^worker.*"}[30m])) +``` +
+ +
+ +#### metering: meteringexporter_queue_cleanup_99th_percentile_duration + +

Aggregate successful events export queue cleanup operation duration distribution over 30m

+ +This panel has no related alerts. + +To see this panel, visit `/-/debug/grafana/d/metering/metering?viewPanel=100201` on your Sourcegraph instance. + +*Managed by the Sourcegraph Services team.* + +
+Technical details + +Query: + +``` +sum by (le)(rate(src_meteringexporter_queue_cleanup_duration_seconds_bucket{job=~"^worker.*"}[30m])) +``` +
+ +
+ +#### metering: meteringexporter_queue_cleanup_errors_total + +

Events export queue cleanup operation errors every 30m

+ +Refer to the [alerts reference](alerts#metering-meteringexporter_queue_cleanup_errors_total) for 1 alert related to this panel. + +To see this panel, visit `/-/debug/grafana/d/metering/metering?viewPanel=100202` on your Sourcegraph instance. + +*Managed by the Sourcegraph Services team.* + +
+Technical details + +Query: + +``` +sum(increase(src_meteringexporter_queue_cleanup_errors_total{job=~"^worker.*"}[30m])) +``` +
+ +
+ +#### metering: meteringexporter_queue_cleanup_error_rate + +

Events export queue cleanup operation error rate over 30m

+ +This panel has no related alerts. + +To see this panel, visit `/-/debug/grafana/d/metering/metering?viewPanel=100203` on your Sourcegraph instance. + +*Managed by the Sourcegraph Services team.* + +
+Technical details + +Query: + +``` +sum(increase(src_meteringexporter_queue_cleanup_errors_total{job=~"^worker.*"}[30m])) / (sum(increase(src_meteringexporter_queue_cleanup_total{job=~"^worker.*"}[30m])) + sum(increase(src_meteringexporter_queue_cleanup_errors_total{job=~"^worker.*"}[30m]))) * 100 +``` +
+ +
+ +### Metering: Metering Exporter: Events export queue metrics reporting job operations + +#### metering: meteringexporter_queue_metrics_reporter_total + +

Events export backlog metrics reporting operations every 30m

+ +This panel has no related alerts. + +To see this panel, visit `/-/debug/grafana/d/metering/metering?viewPanel=100300` on your Sourcegraph instance. + +*Managed by the Sourcegraph Services team.* + +
+Technical details + +Query: + +``` +sum(increase(src_meteringexporter_queue_metrics_reporter_total{job=~"^worker.*"}[30m])) +``` +
+ +
+ +#### metering: meteringexporter_queue_metrics_reporter_99th_percentile_duration + +

Aggregate successful events export backlog metrics reporting operation duration distribution over 30m

+ +This panel has no related alerts. + +To see this panel, visit `/-/debug/grafana/d/metering/metering?viewPanel=100301` on your Sourcegraph instance. + +*Managed by the Sourcegraph Services team.* + +
+Technical details + +Query: + +``` +sum by (le)(rate(src_meteringexporter_queue_metrics_reporter_duration_seconds_bucket{job=~"^worker.*"}[30m])) +``` +
+ +
+ +#### metering: meteringexporter_queue_metrics_reporter_errors_total + +

Events export backlog metrics reporting operation errors every 30m

+ +Refer to the [alerts reference](alerts#metering-meteringexporter_queue_metrics_reporter_errors_total) for 1 alert related to this panel. + +To see this panel, visit `/-/debug/grafana/d/metering/metering?viewPanel=100302` on your Sourcegraph instance. + +*Managed by the Sourcegraph Services team.* + +
+Technical details + +Query: + +``` +sum(increase(src_meteringexporter_queue_metrics_reporter_errors_total{job=~"^worker.*"}[30m])) +``` +
+ +
+ +#### metering: meteringexporter_queue_metrics_reporter_error_rate + +

Events export backlog metrics reporting operation error rate over 30m

+ +This panel has no related alerts. + +To see this panel, visit `/-/debug/grafana/d/metering/metering?viewPanel=100303` on your Sourcegraph instance. + +*Managed by the Sourcegraph Services team.* + +
+Technical details + +Query: + +``` +sum(increase(src_meteringexporter_queue_metrics_reporter_errors_total{job=~"^worker.*"}[30m])) / (sum(increase(src_meteringexporter_queue_metrics_reporter_total{job=~"^worker.*"}[30m])) + sum(increase(src_meteringexporter_queue_metrics_reporter_errors_total{job=~"^worker.*"}[30m]))) * 100 +``` +
+ +
+ ## OpenTelemetry Collector

The OpenTelemetry collector ingests OpenTelemetry data from Sourcegraph and exports it to the configured backends.

@@ -33625,11 +34114,11 @@ sum(rate(src_deepsearch_question_processing_errors_total{operation="question"}[5
-#### deepsearch: deepsearch_question_processing_p99_duration +#### deepsearch: deepsearch_question_processing_p95_duration -

99th percentile question processing duration

+

95th percentile question processing duration

-99th percentile time to process a deep search question. +95th percentile time to process a deep search question. This panel has no related alerts. @@ -33643,7 +34132,7 @@ To see this panel, visit `/-/debug/grafana/d/deepsearch/deepsearch?viewPanel=100 Query: ``` -histogram_quantile(0.99, sum(rate(src_deepsearch_question_processing_duration_seconds_bucket{operation="question"}[5m])) by (le)) +histogram_quantile(0.95, sum(rate(src_deepsearch_question_processing_duration_seconds_bucket{operation="question"}[5m])) by (le)) ``` @@ -33673,15 +34162,39 @@ histogram_quantile(0.50, sum(rate(src_deepsearch_question_processing_duration_se
-### Deep Search: LLM streaming +#### deepsearch: deepsearch_slow_questions + +

Questions taking longer than 5 minutes over 15m

+ +Number of deep search questions that took longer than 5 minutes in the last 15 minutes. + +Refer to the [alerts reference](alerts#deepsearch-deepsearch_slow_questions) for 2 alerts related to this panel. + +To see this panel, visit `/-/debug/grafana/d/deepsearch/deepsearch?viewPanel=100030` on your Sourcegraph instance. + +*Managed by the Sourcegraph Code Understanding team.* + +
+Technical details + +Query: + +``` +sum(increase(src_deepsearch_question_processing_duration_seconds_count{operation="question"}[15m])) - sum(increase(src_deepsearch_question_processing_duration_seconds_bucket{le="300",operation="question"}[15m])) +``` +
+ +
+ +### Deep Search: Turn processing -#### deepsearch: deepsearch_llm_stream_fatal_errors +#### deepsearch: deepsearch_turn_p95_duration -

Fatal LLM stream errors over 5m

+

95th percentile turn duration

-Number of fatal errors during LLM streaming in the last 5 minutes. +95th percentile duration of individual agent turns. A turn includes the LLM call and any tool execution. Useful for investigating when question-level alerts fire. -Refer to the [alerts reference](alerts#deepsearch-deepsearch_llm_stream_fatal_errors) for 1 alert related to this panel. +This panel has no related alerts. To see this panel, visit `/-/debug/grafana/d/deepsearch/deepsearch?viewPanel=100100` on your Sourcegraph instance. @@ -33693,17 +34206,17 @@ To see this panel, visit `/-/debug/grafana/d/deepsearch/deepsearch?viewPanel=100 Query: ``` -sum(increase(src_deepsearch_question_processing_errors_total{operation="llm_stream_fatal"}[5m])) +histogram_quantile(0.95, sum(rate(src_deepsearch_turn_duration_seconds_bucket[5m])) by (le)) ```
-#### deepsearch: deepsearch_llm_stream_non_fatal_errors +#### deepsearch: deepsearch_turn_p50_duration -

Non-fatal LLM stream errors over 5m

+

50th percentile turn duration

-Number of non-fatal errors during LLM streaming. +Median duration of individual agent turns. This panel has no related alerts. @@ -33717,7 +34230,129 @@ To see this panel, visit `/-/debug/grafana/d/deepsearch/deepsearch?viewPanel=100 Query: ``` -sum(increase(src_deepsearch_question_processing_errors_total{operation="llm_stream_non_fatal"}[5m])) +histogram_quantile(0.50, sum(rate(src_deepsearch_turn_duration_seconds_bucket[5m])) by (le)) +``` + + +
+ +### Deep Search: Question outcomes + +#### deepsearch: deepsearch_question_outcome_by_reason + +

Question outcomes by reason over 5m

+ +Breakdown of deep search question outcomes by reason and whether the question was billable. + +This panel has no related alerts. + +To see this panel, visit `/-/debug/grafana/d/deepsearch/deepsearch?viewPanel=100200` on your Sourcegraph instance. + +*Managed by the Sourcegraph Code Understanding team.* + +
+Technical details + +Query: + +``` +sum by (outcome, billable) (rate(src_deepsearch_question_outcome_total[5m])) * 60 +``` +
+ +
+ +#### deepsearch: deepsearch_errored_but_billed_rate + +

Errored but billed rate over 5m

+ +Percentage of billed deep search questions that completed with an error. Use alongside count-based panels for cross-referencing scale of issues. + +This panel has no related alerts. + +To see this panel, visit `/-/debug/grafana/d/deepsearch/deepsearch?viewPanel=100201` on your Sourcegraph instance. + +*Managed by the Sourcegraph Code Understanding team.* + +
+Technical details + +Query: + +``` +sum(rate(src_deepsearch_question_outcome_total{billable="true",error="true"}[5m])) / (sum(rate(src_deepsearch_question_outcome_total{billable="true"}[5m])) > 0) * 100 +``` +
+ +
+ +#### deepsearch: deepsearch_billable_failures + +

Billable failures over time

+ +Number of billed deep search questions that completed with an error (token limit exceeded or response truncated) in the last 15 minutes. + +This panel has no related alerts. + +To see this panel, visit `/-/debug/grafana/d/deepsearch/deepsearch?viewPanel=100210` on your Sourcegraph instance. + +*Managed by the Sourcegraph Code Understanding team.* + +
+Technical details + +Query: + +``` +sum by (outcome) (increase(src_deepsearch_question_outcome_total{billable="true",error="true"}[15m])) +``` +
+ +
+ +#### deepsearch: deepsearch_response_truncated + +

Response truncated questions over 15m

+ +Number of deep search questions where the response was truncated due to hitting the output token limit in the last 15 minutes. + +Refer to the [alerts reference](alerts#deepsearch-deepsearch_response_truncated) for 2 alerts related to this panel. + +To see this panel, visit `/-/debug/grafana/d/deepsearch/deepsearch?viewPanel=100220` on your Sourcegraph instance. + +*Managed by the Sourcegraph Code Understanding team.* + +
+Technical details + +Query: + +``` +sum(increase(src_deepsearch_question_outcome_total{outcome="response_truncated"}[15m])) +``` +
+ +
+ +#### deepsearch: deepsearch_token_limit_exceeded + +

Token limit exceeded questions over 15m

+ +Number of deep search questions that exceeded the conversation token limit in the last 15 minutes. + +This panel has no related alerts. + +To see this panel, visit `/-/debug/grafana/d/deepsearch/deepsearch?viewPanel=100221` on your Sourcegraph instance. + +*Managed by the Sourcegraph Code Understanding team.* + +
+Technical details + +Query: + +``` +sum(increase(src_deepsearch_question_outcome_total{outcome="token_limit_exceeded"}[15m])) ```
From 82be31e5ac53b19c58f28922d3b33f0fd0b55534 Mon Sep 17 00:00:00 2001 From: Enrique Gonzalez Date: Fri, 17 Apr 2026 11:31:11 -0700 Subject: [PATCH 083/217] fix: Refer to MCP client integrations from MCP page (#1753) --- docs/api/mcp/index.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/api/mcp/index.mdx b/docs/api/mcp/index.mdx index a19d7cd24..407b6b561 100644 --- a/docs/api/mcp/index.mdx +++ b/docs/api/mcp/index.mdx @@ -31,7 +31,7 @@ amp mcp add sg https://sourcegraph.example.com/.api/mcp claude mcp add --transport http sg https://sourcegraph.example.com/.api/mcp ``` -This works similarly for other MCP-compatible agents. See [Client Integration](#client-integration) for detailed setup instructions for each client. +This works similarly for other MCP-compatible agents. See [Client Integrations](/api/mcp/client-integrations) for detailed setup instructions for each client. ## Server Endpoints From bf6db2f4cf17675da541abd0a46540ddec6acb02 Mon Sep 17 00:00:00 2001 From: Bolaji Olajide <25608335+BolajiOlajide@users.noreply.github.com> Date: Mon, 20 Apr 2026 12:05:26 +0100 Subject: [PATCH 084/217] docs: update Batch Changes credentials to reflect GitHub OAuth support (#1755) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## Summary Updates the Batch Changes configuring credentials documentation to correctly reflect that GitHub OAuth is supported. ### Changes - Mark OAuth as supported (✅) for GitHub and GitHub Enterprise in the authentication methods table - Update callout notes for both GitHub.com and GitHub Enterprise sections to confirm OAuth access tokens are supported --- docs/batch-changes/configuring-credentials.mdx | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/docs/batch-changes/configuring-credentials.mdx b/docs/batch-changes/configuring-credentials.mdx index 996ec5c48..7d643449b 100644 --- a/docs/batch-changes/configuring-credentials.mdx +++ b/docs/batch-changes/configuring-credentials.mdx @@ -17,8 +17,8 @@ The following authentication methods are supported: | **Code Host** | **Personal Access Token** | **Fine-Grained Access Token** | **GitHub App** | **OAuth** | | -------------------------------- | :-----------------------: | :---------------------------: | :------------: | :-------: | -| GitHub | ✅ | ✅ | ✅ (experimental) | ❌ | -| GitHub Enterprise | ✅ | ✅ | ✅ (experimental) | ❌ | +| GitHub | ✅ | ✅ | ✅ (experimental) | ✅ | +| GitHub Enterprise | ✅ | ✅ | ✅ (experimental) | ✅ | | GitLab | ✅ | ❌ | ❌ | ✅ | | Bitbucket Server / Data Center | ✅ | ❌ | ❌ | ✅ | | Bitbucket Cloud | ✅ | ❌ | ❌ | ✅ | @@ -144,9 +144,7 @@ The `workflow` scope is technically only required if your batch changes modify f When working with organizations that have SAML SSO (Single Sign On) enabled, configuring credentials requires an additional step that [involves white-listing the token for use in that organization](https://docs.github.com/en/enterprise-cloud@latest/authentication/authenticating-with-saml-single-sign-on/authorizing-a-personal-access-token-for-use-with-saml-single-sign-on). - Currently, classic and fine-grained access tokens are supported only. - Alternative token types like OAuth access tokens (for example, OAuth apps) - are not supported. + Classic and fine-grained access tokens, as well as OAuth access tokens, are supported. #### Personal Access Token @@ -233,9 +231,7 @@ When working with organizations that have SAML SSO (Single Sign On) enabled, con
- Currently, classic personal and fine-grained access tokens are supported - only. Alternative token types like OAuth access tokens (for example, OAuth - apps) are not supported. + Classic personal and fine-grained access tokens, as well as OAuth access tokens, are supported. ### GitLab From 84b0c0d7d123dae7bb47b9deaf59e240b3cea3f7 Mon Sep 17 00:00:00 2001 From: Robert Lin Date: Mon, 20 Apr 2026 14:05:24 -0700 Subject: [PATCH 085/217] revise admin consultation note for Experimental features (#1756) I think this made experimental sound more self-serve than it should - in practice, we should probably aim for a very hands-on approach in experimental stage, where we do enablement customer by customer. Only in beta stage, should we allow customers to request for features to be request disablement on a temporary basis (because we dont want every feature to have toggles forever) --- docs/beta-and-experimental/index.mdx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/beta-and-experimental/index.mdx b/docs/beta-and-experimental/index.mdx index 638763c75..0156c6c3a 100644 --- a/docs/beta-and-experimental/index.mdx +++ b/docs/beta-and-experimental/index.mdx @@ -30,7 +30,7 @@ If a feature is labeled **Experimental**, this specifically means: - The feature is intended for early evaluation and will generally require deliberate enablement - There may be no fixed timeline for moving the feature to **Beta** or general availability - Some **Experimental** features may have credit costs associated with them when they exit Beta into general availability; see [credits and billing](#credits-and-billing) -- Admins can disable **Experimental** features globally +- Admins will be consulted before **Experimental** features are enabled General points about [both beta and experimental features](#beta-and-experimental-features) also apply. @@ -41,7 +41,7 @@ If a feature is labeled **Beta**, this specifically means: - The feature may be widely available to all customers by default - There may be no fixed timeline for moving the feature to general availability - Some **Beta** features may have credit costs associated with them when they graduate to general availability; see [credits and billing](#credits-and-billing) -- Admins can disable **Beta** features globally +- Admins can request for **Beta** features to be temporarily disabled globally General points about [both beta and experimental features](#beta-and-experimental-features) also apply. From c743ae4d91feb1d333c1e49d6ea6251b27dc4362 Mon Sep 17 00:00:00 2001 From: Michael Bahr <1830132+bahrmichael@users.noreply.github.com> Date: Wed, 22 Apr 2026 17:23:26 +0200 Subject: [PATCH 086/217] update stale feature flag reference (#1758) For https://sourcegraph.slack.com/archives/C05MW2TMYAV/p1776810366321379?thread_ts=1772603207.607009&cid=C05MW2TMYAV --- docs/self-hosted/executors/deploy-executors-kubernetes.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/self-hosted/executors/deploy-executors-kubernetes.mdx b/docs/self-hosted/executors/deploy-executors-kubernetes.mdx index 7ff0999e4..fbd2c221c 100644 --- a/docs/self-hosted/executors/deploy-executors-kubernetes.mdx +++ b/docs/self-hosted/executors/deploy-executors-kubernetes.mdx @@ -64,7 +64,7 @@ Native Kubernetes Executors can be deployed via either the `sourcegraph-executor ### Steps -1. If you are deploying Executors for processing Batch Changes, enable the `native-ssbc-execution` feature flag in **Site admin > Feature flags** by creating a Boolean feature flag with the value set to `true` +1. If you are deploying Executors for processing Batch Changes, set `batchChanges.nativeServerSideExecution` to `true` in your [site configuration](/admin/config/site-config). Only enable this when using Executors on Kubernetes. 2. Configure the following environment variables on the Executor Deployment: 1. `EXECUTOR_FRONTEND_URL` should match the URL of your Sourcegraph instance From f817ea4e1e51ce8409cb70c6404fb8c4285277f2 Mon Sep 17 00:00:00 2001 From: Emi Date: Wed, 22 Apr 2026 14:28:25 -0700 Subject: [PATCH 087/217] add smart hover docs (#1757) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Adds the missing(😅) docs page mentioned in https://sourcegraph.com/docs/code-navigation/precise-code-navigation image image --------- Signed-off-by: Emi Co-authored-by: Erik Seliger --- docs/code-navigation/smart-hover.mdx | 25 +++++++++++++++++++++++++ src/data/navigation.ts | 4 ++++ 2 files changed, 29 insertions(+) create mode 100644 docs/code-navigation/smart-hover.mdx diff --git a/docs/code-navigation/smart-hover.mdx b/docs/code-navigation/smart-hover.mdx new file mode 100644 index 000000000..ea99e8063 --- /dev/null +++ b/docs/code-navigation/smart-hover.mdx @@ -0,0 +1,25 @@ +# Smart hover summaries + + + Supported on [Enterprise](/pricing/plans/enterprise) plans. + This feature is currently in [Beta](/beta-and-experimental). + + +When [precise code intelligence](/code-navigation/precise-code-navigation) is available, Sourcegraph will provide a generated summary of the meaning of the symbol, and usage of the symbol across the codebase. In combination with the precise code intelligence hover information, this often saves the need to jump to a symbol and back which interrupts the flow of reading, and simplifies understanding complex codebases. Linked citations can even serve as an alternative to traditional code navigation. + +![Smart hover summary demo](https://storage.googleapis.com/changelog-static-assets-prod/20260417_smart-hover-summaries-beta_smart-hover-demo2.jpg) + +Summaries are powered by a small, fast model, but only compiler-grade precise code intelligence data is used to inform the LLM of actual usage patterns across your repositories, allowing the LLM to cite factual usage locations in its answers — even across repositories. + +## Requirements + +1. [Precise code navigation](/code-navigation/precise-code-navigation) must be configured for your repositories. Smart hover summaries only appear when precise code intelligence data is available. +2. Summaries are only provided for top-level symbols (function names, types, interfaces, etc.) and are not available for local symbols (e.g. variables inside a function) + +## Billing + +Smart hover summaries are a [Beta feature](/beta-and-experimental) and free while the feature is in Beta. The feature may become [billable with credits](/beta-and-experimental#credits-and-billing) once it becomes generally available. At least 30 days notice will be given before such a change goes into effect. + +## Feedback + +Please share feedback on this feature with us at [feedback@sourcegraph.com](mailto:feedback@sourcegraph.com) or via your customer success manager. diff --git a/src/data/navigation.ts b/src/data/navigation.ts index 996f311c8..e11e2e540 100644 --- a/src/data/navigation.ts +++ b/src/data/navigation.ts @@ -125,6 +125,10 @@ export const navigation: NavigationItem[] = [ title: 'Syntactic Code Navigation', href: '/code-navigation/syntactic-code-navigation' }, + { + title: 'Smart hover summaries', + href: '/code-navigation/smart-hover' + }, { title: 'Auto-indexing', href: '/code-navigation/auto-indexing' From 32ce22f547fcd85a9be223ab11631297b7d03293 Mon Sep 17 00:00:00 2001 From: Robert Lin Date: Thu, 23 Apr 2026 21:16:55 -0700 Subject: [PATCH 088/217] object-storage: add new 'sourcegraph' bucket (#1747) See https://github.com/sourcegraph/sourcegraph/pull/11613, https://github.com/sourcegraph/sourcegraph/pull/11614 Preview: https://sourcegraph-docs-git-new-sourcegrap-ffb85d-sourcegraph-f8c71130.vercel.app/self-hosted/external-services/object-storage Closes https://linear.app/sourcegraph/issue/SVC-2259/sourcegraphobjects-on-prem-guidance --- .../external-services/object-storage.mdx | 247 +++++++++++++----- 1 file changed, 180 insertions(+), 67 deletions(-) diff --git a/docs/self-hosted/external-services/object-storage.mdx b/docs/self-hosted/external-services/object-storage.mdx index fabdd753c..bc60b00b5 100644 --- a/docs/self-hosted/external-services/object-storage.mdx +++ b/docs/self-hosted/external-services/object-storage.mdx @@ -1,117 +1,230 @@ # Using a managed object storage service (S3 or GCS) -By default, Sourcegraph will use a `sourcegraph/blobstore` server bundled with the instance to temporarily store [code graph indexes](../../code-navigation/precise-code-navigation) uploaded by users as well as the results of [search jobs](../../code-search/types/search-jobs). +Object storage is used by various Sourcegraph features, for example to store [code graph indexes](../../code-navigation/precise-code-navigation) uploaded by users or the results of [search jobs](../../code-search/types/search-jobs). -You can alternatively configure your instance to instead store this data in an S3 or GCS bucket. Doing so may decrease your hosting costs as persistent volumes are often more expensive than the same storage space in an object store service. +By default, Sourcegraph will use a `sourcegraph/blobstore` server bundled with the instance. This is intended as a temporary measure: we recommend that administrators configure self-hosted Sourcegraph to store this data in an [AWS S3](https://aws.amazon.com/s3/) or [Google Cloud Storage (GCS)](https://cloud.google.com/storage) bucket following the guidance below. Doing so may decrease your hosting costs as persistent volumes are often more expensive than the same storage space in an object store service. + + + Starting in [Sourcegraph + 7.2](https://sourcegraph.com/changelog/releases/7.2), new instances only + need to configure the [Sourcegraph bucket](#sourcegraph-bucket), and + Sourcegraph will use that single bucket for all features. Instances + provisioned before 7.2 can continue to use their existing buckets, but the + new bucket is still required. + + +## Sourcegraph bucket + + + Self-hosted Sourcegraph instances using S3 or GCS object storage provisioned + before [Sourcegraph 7.2](https://sourcegraph.com/changelog/releases/7.2) + should provision an additional bucket following the guidance below. + Sourcegraph will report a warning when this bucket is not present, as it + will become required for new features in a future release. No action is + required if you are using the default `sourcegraph/blobstore`. + + +The Sourcegraph bucket is intended to be the single bucket for new Sourcegraph features. Instead of creating one bucket per feature, new features store objects under namespaced key prefixes within this bucket. + +Existing bucket configuration for [code graph indexes](#code-graph-indexes) and [search jobs](#search-job-results) remain in use. This change ensures future features can be enabled without requiring a new bucket for each feature. + +New instances deployed using [Sourcegraph 7.2](https://sourcegraph.com/changelog/releases/7.2) or later can choose to _only_ provision the Sourcegraph bucket: this bucket can be used for both [code graph indexes](#code-graph-indexes) and [search jobs](#search-job-results), if not explicit configuration is provided for those features. + +### Using GCS for the Sourcegraph bucket + +Set the following environment variables to target a GCS bucket for shared Sourcegraph uploads. + +- `SOURCEGRAPH_UPLOAD_BACKEND=GCS` +- `SOURCEGRAPH_UPLOAD_BUCKET=` +- `SOURCEGRAPH_UPLOAD_GCP_PROJECT_ID=` +- `SOURCEGRAPH_UPLOAD_GOOGLE_APPLICATION_CREDENTIALS_FILE=` (optional) +- `SOURCEGRAPH_UPLOAD_GOOGLE_APPLICATION_CREDENTIALS_FILE_CONTENT=<{"my": "content"}>` (optional) + +If you are running on GKE with Workload Identity, or otherwise relying on +Application Default Credentials, you can omit the GCS credentials file +variables. Grant the `roles/storage.objectAdmin` role to the service accounts used by +the `frontend`, `worker`, `precise-code-intel-worker`, `gitserver`, and +`searcher` services in a GKE environment. + +### Using S3 for the Sourcegraph bucket + +Set the following environment variables to target an S3 bucket for shared Sourcegraph uploads. + +- `SOURCEGRAPH_UPLOAD_BACKEND=S3` +- `SOURCEGRAPH_UPLOAD_BUCKET=` +- `SOURCEGRAPH_UPLOAD_AWS_REGION=us-east-1` +- `SOURCEGRAPH_UPLOAD_AWS_ENDPOINT=https://s3.us-east-1.amazonaws.com` +- `SOURCEGRAPH_UPLOAD_AWS_ACCESS_KEY_ID=` +- `SOURCEGRAPH_UPLOAD_AWS_SECRET_ACCESS_KEY=` +- `SOURCEGRAPH_UPLOAD_AWS_SESSION_TOKEN=` (optional) +- `SOURCEGRAPH_UPLOAD_AWS_USE_EC2_ROLE_CREDENTIALS=true` (optional; set to use EC2 metadata API over static credentials) +- `SOURCEGRAPH_UPLOAD_AWS_USE_PATH_STYLE=false` (optional) + + + If a non-default region is supplied, ensure that the subdomain of the + endpoint URL (_the `AWS_ENDPOINT` value_) matches the target region. + + +You don't need to set the `SOURCEGRAPH_UPLOAD_AWS_ACCESS_KEY_ID` environment +variable when using `SOURCEGRAPH_UPLOAD_AWS_USE_EC2_ROLE_CREDENTIALS=true` +because role credentials will be automatically resolved. Attach the IAM role +to the EC2 instances hosting the `frontend`, `worker`, +`precise-code-intel-worker`, `gitserver`, and `searcher` containers in a +multi-node environment. + +### Automatically provision the Sourcegraph bucket + +Most deployments should provision this bucket directly in their cloud provider and leave this disabled. If you would like to allow your Sourcegraph instance to manage the target bucket configuration, set the following environment variable: + + + This requires additional bucket-management permissions from your configured + storage vendor (AWS or GCP). + + +- `SOURCEGRAPH_UPLOAD_MANAGE_BUCKET=true` ## Code Graph Indexes To target a managed object storage service for storing [code graph index uploads](../../code-navigation/precise-code-navigation), you will need to set a handful of environment variables for configuration and authentication to the target service. -- If you are running a `sourcegraph/server` deployment, set the environment variables on the server container -- If you are running via Docker-compose or Kubernetes, set the environment variables on the `frontend`, `worker`, and `precise-code-intel-worker` containers + + Starting in [Sourcegraph + 7.2](https://sourcegraph.com/changelog/releases/7.2), new instances only + need to configure the [Sourcegraph bucket](#sourcegraph-bucket), and + Sourcegraph will use that single bucket for all features. If a separate + bucket is needed for Code Graph Indexes, that can still be configured, but + we recommend using one bucket. + -### Using S3 +- If you are running a `sourcegraph/server` deployment, set the environment variables on the server container +- If you are running via Docker-compose or Kubernetes, set the environment variables on the `frontend`, `worker`, and `precise-code-intel-worker` containers + +### Using S3 for the Code Graph Indexes bucket To target an S3 bucket you've already provisioned, set the following environment variables. Authentication can be done through [an access and secret key pair](https://docs.aws.amazon.com/general/latest/gr/aws-sec-cred-types.html#access-keys-and-secret-access-keys) (and optional session token), or via the EC2 metadata API. - {' '} - Never commit AWS access keys in Git. You should consider using a secret handling - service offered by your cloud provider.{' '} + Never commit AWS access keys in Git. You should consider using a secret + handling service offered by your cloud provider. -- `PRECISE_CODE_INTEL_UPLOAD_BACKEND=S3` -- `PRECISE_CODE_INTEL_UPLOAD_BUCKET=` -- `PRECISE_CODE_INTEL_UPLOAD_AWS_ENDPOINT=https://s3.us-east-1.amazonaws.com` -- `PRECISE_CODE_INTEL_UPLOAD_AWS_ACCESS_KEY_ID=` -- `PRECISE_CODE_INTEL_UPLOAD_AWS_SECRET_ACCESS_KEY=` -- `PRECISE_CODE_INTEL_UPLOAD_AWS_SESSION_TOKEN=` (optional) -- `PRECISE_CODE_INTEL_UPLOAD_AWS_USE_EC2_ROLE_CREDENTIALS=true` (optional; set to use EC2 metadata API over static credentials) -- `PRECISE_CODE_INTEL_UPLOAD_AWS_REGION=us-east-1` (default) +- `PRECISE_CODE_INTEL_UPLOAD_BACKEND=S3` +- `PRECISE_CODE_INTEL_UPLOAD_BUCKET=` +- `PRECISE_CODE_INTEL_UPLOAD_AWS_REGION=us-east-1` +- `PRECISE_CODE_INTEL_UPLOAD_AWS_ENDPOINT=https://s3.us-east-1.amazonaws.com` +- `PRECISE_CODE_INTEL_UPLOAD_AWS_ACCESS_KEY_ID=` +- `PRECISE_CODE_INTEL_UPLOAD_AWS_SECRET_ACCESS_KEY=` +- `PRECISE_CODE_INTEL_UPLOAD_AWS_SESSION_TOKEN=` (optional) +- `PRECISE_CODE_INTEL_UPLOAD_AWS_USE_EC2_ROLE_CREDENTIALS=true` (optional; set to use EC2 metadata API over static credentials) - {' '} - If a non-default region is supplied, ensure that the subdomain of the endpoint - URL (_the `AWS_ENDPOINT` value_) matches the target region.{' '} + If a non-default region is supplied, ensure that the subdomain of the + endpoint URL (_the `AWS_ENDPOINT` value_) matches the target region. - - {' '} - You don't need to set the `PRECISE_CODE_INTEL_UPLOAD_AWS_ACCESS_KEY_ID` environment - variable when using `PRECISE_CODE_INTEL_UPLOAD_AWS_USE_EC2_ROLE_CREDENTIALS=true` - because role credentials will be automatically resolved. Attach the IAM role - to the EC2 instances hosting the `frontend`, `worker`, and `precise-code-intel-worker` - containers in a multi-node environment.{' '} - +You don't need to set the `PRECISE_CODE_INTEL_UPLOAD_AWS_ACCESS_KEY_ID` +environment variable when using +`PRECISE_CODE_INTEL_UPLOAD_AWS_USE_EC2_ROLE_CREDENTIALS=true` because role +credentials will be automatically resolved. Attach the IAM role to the EC2 +instances hosting the `frontend`, `worker`, and `precise-code-intel-worker` +containers in a multi-node environment. + +### Using GCS for the Code Graph Indexes bucket -### Using GCS +To target a GCS bucket you've already provisioned, set the following environment variables. -To target a GCS bucket you've already provisioned, set the following environment variables. Authentication is done through a service account key, supplied as either a path to a volume-mounted file, or the contents read in as an environment variable payload. +- `PRECISE_CODE_INTEL_UPLOAD_BACKEND=GCS` +- `PRECISE_CODE_INTEL_UPLOAD_BUCKET=` +- `PRECISE_CODE_INTEL_UPLOAD_GCP_PROJECT_ID=` +- `PRECISE_CODE_INTEL_UPLOAD_GOOGLE_APPLICATION_CREDENTIALS_FILE=` (optional) +- `PRECISE_CODE_INTEL_UPLOAD_GOOGLE_APPLICATION_CREDENTIALS_FILE_CONTENT=<{"my": "content"}>` (optional) -- `PRECISE_CODE_INTEL_UPLOAD_BACKEND=GCS` -- `PRECISE_CODE_INTEL_UPLOAD_BUCKET=` -- `PRECISE_CODE_INTEL_UPLOAD_GCP_PROJECT_ID=` -- `PRECISE_CODE_INTEL_UPLOAD_GOOGLE_APPLICATION_CREDENTIALS_FILE=` -- `PRECISE_CODE_INTEL_UPLOAD_GOOGLE_APPLICATION_CREDENTIALS_FILE_CONTENT=<{"my": "content"}>` +If you are running on GKE with Workload Identity, or otherwise relying on +Application Default Credentials, you can omit the GCS credentials file +variables. Grant the `roles/storage.objectAdmin` role to the service accounts used by +the `frontend`, `worker`, and `precise-code-intel-worker` services in a GKE environment. -### Provisioning buckets +### Automatically provision the Code Graph Indexes bucket If you would like to allow your Sourcegraph instance to call the AWS S3 / GCS API to create the bucket, set the following environment variable: -- `PRECISE_CODE_INTEL_UPLOAD_MANAGE_BUCKET=true` + + This requires additional bucket-management permissions from your configured + storage vendor (AWS or GCP). + + +- `PRECISE_CODE_INTEL_UPLOAD_MANAGE_BUCKET=true` +- If using GCS, `SOURCEGRAPH_UPLOAD_GCP_PROJECT_ID` is also required -## Search Job Results +## Search Job results -To target a third party managed object storage service for storing [search job results](../../code-search/types/search-jobs), you must set a handful of environment variables for configuration and authentication to the target service. +To target a third party managed object storage service for storing [Search Job results](../../code-search/types/search-jobs), you must set a handful of environment variables for configuration and authentication to the target service. + + + Starting in [Sourcegraph + 7.2](https://sourcegraph.com/changelog/releases/7.2), new instances only + need to configure the [Sourcegraph bucket](#sourcegraph-bucket), and + Sourcegraph will use that single bucket for all features. If a separate + bucket is needed for Search Job results, that can still be configured, but + we recommend using one bucket. + -- If you are running a `sourcegraph/server` deployment, set the environment variables on the server container -- If you are running via Docker-compose or Kubernetes, set the environment variables on the `frontend` and `worker` containers +- If you are running a `sourcegraph/server` deployment, set the environment variables on the server container +- If you are running via Docker-compose or Kubernetes, set the environment variables on the `frontend` and `worker` containers -### Using S3 +### Using S3 for the Search Job results bucket Set the following environment variables to target an S3 bucket you've already provisioned. Authentication can be done through [an access and secret key pair](https://docs.aws.amazon.com/general/latest/gr/aws-sec-cred-types.html#access-keys-and-secret-access-keys) (and optionally through session token) or via the EC2 metadata API. - {' '} - Never commit AWS access keys in Git. You should consider using a secret handling - service offered by your cloud provider. + Never commit AWS access keys in Git. You should consider using a secret + handling service offered by your cloud provider. -- `SEARCH_JOBS_UPLOAD_BACKEND=S3` -- `SEARCH_JOBS_UPLOAD_BUCKET=` -- `SEARCH_JOBS_UPLOAD_AWS_ENDPOINT=https://s3.us-east-1.amazonaws.com` -- `SEARCH_JOBS_UPLOAD_AWS_ACCESS_KEY_ID=` -- `SEARCH_JOBS_UPLOAD_AWS_SECRET_ACCESS_KEY=` -- `SEARCH_JOBS_UPLOAD_AWS_SESSION_TOKEN=` (optional) -- `SEARCH_JOBS_UPLOAD_AWS_USE_EC2_ROLE_CREDENTIALS=true` (optional; set to use EC2 metadata API over static credentials) -- `SEARCH_JOBS_UPLOAD_AWS_REGION=us-east-1` (default) +- `SEARCH_JOBS_UPLOAD_BACKEND=S3` +- `SEARCH_JOBS_UPLOAD_BUCKET=` +- `SEARCH_JOBS_UPLOAD_AWS_REGION=us-east-1` +- `SEARCH_JOBS_UPLOAD_AWS_ENDPOINT=https://s3.us-east-1.amazonaws.com` +- `SEARCH_JOBS_UPLOAD_AWS_ACCESS_KEY_ID=` +- `SEARCH_JOBS_UPLOAD_AWS_SECRET_ACCESS_KEY=` +- `SEARCH_JOBS_UPLOAD_AWS_SESSION_TOKEN=` (optional) +- `SEARCH_JOBS_UPLOAD_AWS_USE_EC2_ROLE_CREDENTIALS=true` (optional; set to use EC2 metadata API over static credentials) - {' '} - If a non-default region is supplied, ensure that the subdomain of the endpoint - URL (the `AWS_ENDPOINT` value) matches the target region. + If a non-default region is supplied, ensure that the subdomain of the + endpoint URL (_the `AWS_ENDPOINT` value_) matches the target region. - {' '} You don't need to set the `SEARCH_JOBS_UPLOAD_AWS_ACCESS_KEY_ID` environment - variable when using `SEARCH_JOBS_UPLOAD_AWS_USE_EC2_ROLE_CREDENTIALS=true` because - role credentials will be automatically resolved. + variable when using `SEARCH_JOBS_UPLOAD_AWS_USE_EC2_ROLE_CREDENTIALS=true` + because role credentials will be automatically resolved. Attach the IAM role + to the EC2 instances hosting the `frontend` and `worker` containers in a + multi-node environment. -### Using GCS +### Using GCS for the Search Job results bucket + +Set the following environment variables to target a GCS bucket you've already provisioned. -Set the following environment variables to target a GCS bucket you've already provisioned. Authentication is done through a service account key, either as a path to a volume-mounted file or the contents read in as an environment variable payload. +- `SEARCH_JOBS_UPLOAD_BACKEND=GCS` +- `SEARCH_JOBS_UPLOAD_BUCKET=` +- `SEARCH_JOBS_UPLOAD_GCP_PROJECT_ID=` +- `SEARCH_JOBS_UPLOAD_GOOGLE_APPLICATION_CREDENTIALS_FILE=` (optional) +- `SEARCH_JOBS_UPLOAD_GOOGLE_APPLICATION_CREDENTIALS_FILE_CONTENT=<{"my": "content"}>` (optional) -- `SEARCH_JOBS_UPLOAD_BACKEND=GCS` -- `SEARCH_JOBS_UPLOAD_BUCKET=` -- `SEARCH_JOBS_UPLOAD_GCP_PROJECT_ID=` -- `SEARCH_JOBS_UPLOAD_GOOGLE_APPLICATION_CREDENTIALS_FILE=` -- `SEARCH_JOBS_UPLOAD_GOOGLE_APPLICATION_CREDENTIALS_FILE_CONTENT=<{"my": "content"}>` +If you are running on GKE with Workload Identity, or otherwise relying on +Application Default Credentials, you can omit the GCS credentials file +variables. Grant the `roles/storage.objectAdmin` role to the service accounts used by +the `frontend` and `worker` services in a GKE environment. -### Provisioning buckets +### Automatically provision the Search Job results bucket If you would like to allow your Sourcegraph instance to control the creation and lifecycle configuration management of the target buckets, set the following environment variables: -- `SEARCH_JOBS_UPLOAD_MANAGE_BUCKET=true` + + This requires additional bucket-management permissions from your configured + storage vendor (AWS or GCP). + + +- `SEARCH_JOBS_UPLOAD_MANAGE_BUCKET=true` From 6b8ae42192efc596da415d47970ac5b1ec747df7 Mon Sep 17 00:00:00 2001 From: Stefan Hengl Date: Fri, 24 Apr 2026 15:36:12 +0200 Subject: [PATCH 089/217] docs: mention search contexts in Deep Search (#1759) Adds a short Search contexts section to the Deep Search docs. --- docs/deep-search/index.mdx | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/docs/deep-search/index.mdx b/docs/deep-search/index.mdx index a7d6e5548..94eadbfbb 100644 --- a/docs/deep-search/index.mdx +++ b/docs/deep-search/index.mdx @@ -35,6 +35,14 @@ The answer is formatted in Markdown and can include links to relevant files, dir - Provide reasonably scoped questions. The agent will perform much better if it does not have to read the entire codebase at once. - Check the list of sources. This is extremely useful for debugging and understanding where the answer came from. Ask a follow-up question and mention the missing source if something is missing. +## Using search contexts + +You can reuse the same [search contexts](/code-search/working/search-contexts) you already use in Code Search when creating a new Deep Search query. Click **Set scope** in the composer to select a search context and limit Deep Search to that repository scope. Deep Search automatically pre-selects your default search context. + +Search contexts are useful when you want to keep Deep Search focused on a specific part of your codebase, such as a team's repositories, a product area, or another shared scope used across your organization. Limiting Deep Search to a smaller set of repositories can help it search faster and produce more focused, higher-quality answers. + +To learn how to create and manage search contexts, see [Search contexts](/code-search/working/search-contexts). + ## Using @-mentions Type `@` at any point while entering a query to add context. By default, the menu shows repositories relevant to you based on your commit history. As you type, suggestions update in real-time to show matching files and repositories. From b8d663aaf2102f5093b65f7cd6dcde5a31bb8c52 Mon Sep 17 00:00:00 2001 From: sourcegraph-buildkite <71296199+sourcegraph-buildkite@users.noreply.github.com> Date: Mon, 27 Apr 2026 13:26:37 +0200 Subject: [PATCH 090/217] =?UTF-8?q?=F0=9F=A4=96=20Sync=20generated=20docs?= =?UTF-8?q?=20from=20sourcegraph/sourcegraph=20(#1752)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This is an automated pull request, created by //doc:generated.push on sourcegraph/sourcegraph Co-authored-by: Buildkite --- docs/admin/code-hosts/aws-codecommit.mdx | 2 +- docs/admin/code-hosts/azuredevops.mdx | 2 +- docs/admin/code-hosts/bitbucket-cloud.mdx | 2 +- docs/admin/code-hosts/bitbucket-server.mdx | 2 +- docs/admin/code-hosts/gerrit.mdx | 2 +- docs/admin/code-hosts/github.mdx | 2 +- docs/admin/code-hosts/gitlab.mdx | 2 +- docs/admin/code-hosts/gitolite.mdx | 2 +- docs/admin/code-hosts/other.mdx | 2 +- docs/admin/code-hosts/phabricator.mdx | 2 +- docs/admin/config/settings.mdx | 6 +- docs/admin/config/site-config.mdx | 10 +- docs/admin/repo/perforce.mdx | 2 +- docs/cli/references/extsvc/list.mdx | 4 +- docs/cli/references/index.mdx | 5 - docs/cli/references/orgs/list.mdx | 8 +- docs/cli/references/repos/list.mdx | 8 +- docs/cli/references/users/list.mdx | 8 +- docs/cody/capabilities/supported-models.mdx | 49 ++-- docs/self-hosted/observability/alerts.mdx | 2 +- docs/self-hosted/observability/dashboards.mdx | 236 +----------------- 21 files changed, 57 insertions(+), 301 deletions(-) diff --git a/docs/admin/code-hosts/aws-codecommit.mdx b/docs/admin/code-hosts/aws-codecommit.mdx index 1baf5cbcb..598252204 100644 --- a/docs/admin/code-hosts/aws-codecommit.mdx +++ b/docs/admin/code-hosts/aws-codecommit.mdx @@ -37,7 +37,7 @@ AWS CodeCommit connections support the following configuration options, which ar {/* SCHEMA_SYNC_START: admin/code_hosts/aws_codecommit.schema.json */} {/* WARNING: This section is auto-generated during releases. Do not edit manually. */} -{/* Last updated: 2026-04-14T00:48:03Z */} +{/* Last updated: 2026-04-27T11:17:39Z */} ```json { // REQUIRED: diff --git a/docs/admin/code-hosts/azuredevops.mdx b/docs/admin/code-hosts/azuredevops.mdx index 306e0fcbc..fba7332cf 100644 --- a/docs/admin/code-hosts/azuredevops.mdx +++ b/docs/admin/code-hosts/azuredevops.mdx @@ -69,7 +69,7 @@ Azure DevOps connections support the following configuration options, which are {/* SCHEMA_SYNC_START: admin/code_hosts/azuredevops.schema.json */} {/* WARNING: This section is auto-generated during releases. Do not edit manually. */} -{/* Last updated: 2026-04-14T00:48:03Z */} +{/* Last updated: 2026-04-27T11:17:39Z */} ```json // Authentication alternatives: token OR windowsPassword diff --git a/docs/admin/code-hosts/bitbucket-cloud.mdx b/docs/admin/code-hosts/bitbucket-cloud.mdx index 4b988dc3a..cd611356b 100644 --- a/docs/admin/code-hosts/bitbucket-cloud.mdx +++ b/docs/admin/code-hosts/bitbucket-cloud.mdx @@ -116,7 +116,7 @@ Bitbucket Cloud connections support the following configuration options, which a {/* SCHEMA_SYNC_START: admin/code_hosts/bitbucket_cloud.schema.json */} {/* WARNING: This section is auto-generated during releases. Do not edit manually. */} -{/* Last updated: 2026-04-14T00:48:03Z */} +{/* Last updated: 2026-04-27T11:17:39Z */} ```json { // The workspace access token to use when authenticating with Bitbucket Cloud. diff --git a/docs/admin/code-hosts/bitbucket-server.mdx b/docs/admin/code-hosts/bitbucket-server.mdx index 78d6f9907..ef1661138 100644 --- a/docs/admin/code-hosts/bitbucket-server.mdx +++ b/docs/admin/code-hosts/bitbucket-server.mdx @@ -202,7 +202,7 @@ Bitbucket Server / Bitbucket Data Center connections support the following confi {/* SCHEMA_SYNC_START: admin/code_hosts/bitbucket_server.schema.json */} {/* WARNING: This section is auto-generated during releases. Do not edit manually. */} -{/* Last updated: 2026-04-14T00:48:03Z */} +{/* Last updated: 2026-04-27T11:17:39Z */} ```json // Authentication alternatives: token OR password diff --git a/docs/admin/code-hosts/gerrit.mdx b/docs/admin/code-hosts/gerrit.mdx index dce57c1fa..0d66540c4 100644 --- a/docs/admin/code-hosts/gerrit.mdx +++ b/docs/admin/code-hosts/gerrit.mdx @@ -113,7 +113,7 @@ Gerrit connections support the following configuration options, which are specif {/* SCHEMA_SYNC_START: admin/code_hosts/gerrit.schema.json */} {/* WARNING: This section is auto-generated during releases. Do not edit manually. */} -{/* Last updated: 2026-04-14T00:48:03Z */} +{/* Last updated: 2026-04-27T11:17:39Z */} ```json { // If non-null, enforces Gerrit repository permissions. This requires that there is an item in the [site configuration json](https://sourcegraph.com/docs/admin/config/site_config#auth-providers) `auth.providers` field, of type "gerrit" with the same `url` field as specified in this `GerritConnection`. diff --git a/docs/admin/code-hosts/github.mdx b/docs/admin/code-hosts/github.mdx index 11cfa94e6..f29014ff8 100644 --- a/docs/admin/code-hosts/github.mdx +++ b/docs/admin/code-hosts/github.mdx @@ -454,7 +454,7 @@ GitHub connections support the following configuration options, which are specif {/* SCHEMA_SYNC_START: admin/code_hosts/github.schema.json */} {/* WARNING: This section is auto-generated during releases. Do not edit manually. */} -{/* Last updated: 2026-04-14T00:48:03Z */} +{/* Last updated: 2026-04-27T11:17:39Z */} ```json // Authentication alternatives: token OR gitHubAppDetails OR externalAccount OR useRandomExternalAccount diff --git a/docs/admin/code-hosts/gitlab.mdx b/docs/admin/code-hosts/gitlab.mdx index a58cac4ee..b9970b075 100644 --- a/docs/admin/code-hosts/gitlab.mdx +++ b/docs/admin/code-hosts/gitlab.mdx @@ -189,7 +189,7 @@ See [Internal rate limits](/admin/code-hosts/rate-limits#internal-rate-limits). {/* SCHEMA_SYNC_START: admin/code_hosts/gitlab.schema.json */} {/* WARNING: This section is auto-generated during releases. Do not edit manually. */} -{/* Last updated: 2026-04-14T00:48:03Z */} +{/* Last updated: 2026-04-27T11:17:39Z */} ```json { // If non-null, enforces GitLab repository permissions. This requires that there be an item in the `auth.providers` field of type "gitlab" with the same `url` field as specified in this `GitLabConnection`. diff --git a/docs/admin/code-hosts/gitolite.mdx b/docs/admin/code-hosts/gitolite.mdx index 773b93c5f..8fe847b72 100644 --- a/docs/admin/code-hosts/gitolite.mdx +++ b/docs/admin/code-hosts/gitolite.mdx @@ -25,7 +25,7 @@ To connect Gitolite to Sourcegraph: {/* SCHEMA_SYNC_START: admin/code_hosts/gitolite.schema.json */} {/* WARNING: This section is auto-generated during releases. Do not edit manually. */} -{/* Last updated: 2026-04-14T00:48:03Z */} +{/* Last updated: 2026-04-27T11:17:39Z */} ```json { // A list of repositories to never mirror from this Gitolite instance. Supports excluding by exact name ({"name": "foo"}). diff --git a/docs/admin/code-hosts/other.mdx b/docs/admin/code-hosts/other.mdx index d3b73b3d2..4da97689c 100644 --- a/docs/admin/code-hosts/other.mdx +++ b/docs/admin/code-hosts/other.mdx @@ -68,7 +68,7 @@ Repositories must be listed individually: {/* SCHEMA_SYNC_START: admin/code_hosts/other_external_service.schema.json */} {/* WARNING: This section is auto-generated during releases. Do not edit manually. */} -{/* Last updated: 2026-04-14T00:48:03Z */} +{/* Last updated: 2026-04-27T11:17:39Z */} ```json { // A list of repositories to never mirror by name after applying repositoryPathPattern. Supports excluding by exact name ({"name": "myrepo"}) or regular expression ({"pattern": ".*secret.*"}). diff --git a/docs/admin/code-hosts/phabricator.mdx b/docs/admin/code-hosts/phabricator.mdx index 4fd1b944c..6982ca5a7 100644 --- a/docs/admin/code-hosts/phabricator.mdx +++ b/docs/admin/code-hosts/phabricator.mdx @@ -76,7 +76,7 @@ The Sourcegraph instance's site admin must [update the `corsOrigin` site config {/* SCHEMA_SYNC_START: admin/code_hosts/phabricator.schema.json */} {/* WARNING: This section is auto-generated during releases. Do not edit manually. */} -{/* Last updated: 2026-04-14T00:48:03Z */} +{/* Last updated: 2026-04-27T11:17:39Z */} ```json { // SSH cipher to use when cloning via SSH. Must be a valid choice from `ssh -Q cipher`. diff --git a/docs/admin/config/settings.mdx b/docs/admin/config/settings.mdx index 6bf175da4..3922a2133 100644 --- a/docs/admin/config/settings.mdx +++ b/docs/admin/config/settings.mdx @@ -27,7 +27,7 @@ Settings options and their default values are shown below. {/* SCHEMA_SYNC_START: admin/config/settings.schema.json */} {/* WARNING: This section is auto-generated during releases. Do not edit manually. */} -{/* Last updated: 2026-04-14T00:48:03Z */} +{/* Last updated: 2026-04-27T11:17:39Z */} ```json { @@ -68,6 +68,9 @@ Settings options and their default values are shown below. // Whether to supplement precise references with search-based results. "codeIntel.mixPreciseAndSearchBasedReferences": false, + // Controls whether you see AI-generated summaries in hover tooltips. Set to false to opt out. + "codeIntel.smartHover": true, + // Whether to enable trace logging on the extension. "codeIntel.traceExtension": false, @@ -102,7 +105,6 @@ Settings options and their default values are shown below. "searchQueryInput": "v1", "searchResultsAggregations": false, "showCodeMonitoringLogs": false, - "smartHover": true, "symbolKindTags": false }, diff --git a/docs/admin/config/site-config.mdx b/docs/admin/config/site-config.mdx index f5deff347..745236abe 100644 --- a/docs/admin/config/site-config.mdx +++ b/docs/admin/config/site-config.mdx @@ -21,7 +21,7 @@ All site configuration options and their default values are shown below. {/* SCHEMA_SYNC_START: admin/config/site.schema.json */} {/* WARNING: This section is auto-generated during releases. Do not edit manually. */} -{/* Last updated: 2026-04-14T00:48:03Z */} +{/* Last updated: 2026-04-27T11:17:39Z */} ```json { @@ -284,7 +284,7 @@ All site configuration options and their default values are shown below. "extsvc.gitlab": false }, "deepSearch.enabled": false, - "deepSearch.model": "anthropic::2024-10-22::claude-sonnet-4-latest", + "deepSearch.model": "anthropic::2024-10-22::claude-sonnet-4-6-latest", "deepSearch.sharing.enabled": false, "deepSearch.showCodyWeb": false, "enableGithubInternalRepoVisibility": false, @@ -448,8 +448,6 @@ All site configuration options and their default values are shown below. // Enable/disable MCP API endpoints under `/.api/mcp`. When disabled, MCP endpoints return 404. "mcp.enabled": true, - // Recommended configuration for Cody models and providers. - // Prefer this over the legacy "completions" field. "modelConfiguration": null, // Notifications received from Sourcegraph.com to display in Sourcegraph. @@ -857,9 +855,7 @@ All site configuration options and their default values are shown below. // AI & Completions ////////////////////////////////////////////////////////////// - // DEPRECATED: Legacy configuration for Cody models. - // Prefer "modelConfiguration" for new deployments, and do not set this - // field if your instance is already configured with "modelConfiguration". + // Configuration for the completions service. // Other example values: // - { // "accessToken": "abc123", diff --git a/docs/admin/repo/perforce.mdx b/docs/admin/repo/perforce.mdx index 8159ea637..25fc0a683 100644 --- a/docs/admin/repo/perforce.mdx +++ b/docs/admin/repo/perforce.mdx @@ -228,7 +228,7 @@ With this setting, Sourcegraph will ignore any rules with a host other than `*`, {/* SCHEMA_SYNC_START: admin/code_hosts/perforce.schema.json */} {/* WARNING: This section is auto-generated during releases. Do not edit manually. */} -{/* Last updated: 2026-04-14T00:48:03Z */} +{/* Last updated: 2026-04-27T11:17:39Z */} ```json { // If non-null, enforces Perforce depot permissions. diff --git a/docs/cli/references/extsvc/list.mdx b/docs/cli/references/extsvc/list.mdx index 6222b4fe5..05a2ffd2d 100644 --- a/docs/cli/references/extsvc/list.mdx +++ b/docs/cli/references/extsvc/list.mdx @@ -7,7 +7,7 @@ |------|-------------|---------------| | `-dump-requests` | Log GraphQL requests and responses to stdout | `false` | | `-f` | Format for the output, using the syntax of Go package text/template. (e.g. "\{\{.\|json\}\}") | | -| `-first` | Return only the first n external services. (use -1 for unlimited) | `-1` | +| `-first` | Return only the first n external services. | `1000` | | `-get-curl` | Print the curl command for executing this query and exit (WARNING: includes printing your access token!) | `false` | | `-insecure-skip-verify` | Skip validation of TLS certificates against trusted chains | `false` | | `-trace` | Log the trace ID for requests. See https://docs.sourcegraph.com/admin/observability/tracing | `false` | @@ -23,7 +23,7 @@ Usage of 'src extsvc list': -f string Format for the output, using the syntax of Go package text/template. (e.g. "{{.|json}}") -first int - Return only the first n external services. (use -1 for unlimited) (default -1) + Return only the first n external services. (default 1000) -get-curl Print the curl command for executing this query and exit (WARNING: includes printing your access token!) -insecure-skip-verify diff --git a/docs/cli/references/index.mdx b/docs/cli/references/index.mdx index 9c0eb3737..ce8d4246f 100644 --- a/docs/cli/references/index.mdx +++ b/docs/cli/references/index.mdx @@ -5,25 +5,20 @@ * [`admin`](references/admin) * [`api`](references/api) -* [`auth`](references/auth) * [`batch`](references/batch) * [`code-intel`](references/code-intel) * [`codeowners`](references/codeowners) * [`config`](references/config) * [`debug`](references/debug) * [`extsvc`](references/extsvc) -* [`login`](references/login) * [`lsp`](references/lsp) * [`orgs`](references/orgs) * [`repos`](references/repos) -* [`sbom`](references/sbom) * [`search`](references/search) * [`search-jobs`](references/search-jobs) * [`serve-git`](references/serve-git) -* [`signature`](references/signature) * [`snapshot`](references/snapshot) * [`teams`](references/teams) * [`users`](references/users) * [`validate`](references/validate) -* [`version`](references/version) \ No newline at end of file diff --git a/docs/cli/references/orgs/list.mdx b/docs/cli/references/orgs/list.mdx index 96f5b8b92..06f4bacb9 100644 --- a/docs/cli/references/orgs/list.mdx +++ b/docs/cli/references/orgs/list.mdx @@ -7,7 +7,7 @@ |------|-------------|---------------| | `-dump-requests` | Log GraphQL requests and responses to stdout | `false` | | `-f` | Format for the output, using the syntax of Go package text/template. (e.g. "\{\{.ID\}\}: \{\{.Name\}\} (\{\{.DisplayName\}\})" or "\{\{.\|json\}\}") | `{{.Name}}` | -| `-first` | Returns the first n organizations from the list. (use -1 for unlimited) | `1000` | +| `-first` | Returns the first n organizations from the list. | `1000` | | `-get-curl` | Print the curl command for executing this query and exit (WARNING: includes printing your access token!) | `false` | | `-insecure-skip-verify` | Skip validation of TLS certificates against trusted chains | `false` | | `-query` | Returns organizations whose names match the query. (e.g. "alice") | | @@ -24,7 +24,7 @@ Usage of 'src orgs list': -f string Format for the output, using the syntax of Go package text/template. (e.g. "{{.ID}}: {{.Name}} ({{.DisplayName}})" or "{{.|json}}") (default "{{.Name}}") -first int - Returns the first n organizations from the list. (use -1 for unlimited) (default 1000) + Returns the first n organizations from the list. (default 1000) -get-curl Print the curl command for executing this query and exit (WARNING: includes printing your access token!) -insecure-skip-verify @@ -42,10 +42,6 @@ Examples: $ src orgs list - List *all* organizations (may be slow!): - - $ src orgs list -first='-1' - List organizations whose names match the query: $ src orgs list -query='myquery' diff --git a/docs/cli/references/repos/list.mdx b/docs/cli/references/repos/list.mdx index 75d0b4801..21ef68eee 100644 --- a/docs/cli/references/repos/list.mdx +++ b/docs/cli/references/repos/list.mdx @@ -9,7 +9,7 @@ | `-descending` | Whether or not results should be in descending order. | `false` | | `-dump-requests` | Log GraphQL requests and responses to stdout | `false` | | `-f` | Format for the output, using the syntax of Go package text/template. (e.g. "\{\{.ID\}\}: \{\{.Name\}\}") or "\{\{.\|json\}\}") | `{{.Name}}` | -| `-first` | Returns the first n repositories from the list. (use -1 for unlimited) | `1000` | +| `-first` | Returns the first n repositories from the list. | `1000` | | `-get-curl` | Print the curl command for executing this query and exit (WARNING: includes printing your access token!) | `false` | | `-indexed` | Include repositories that have a text search index. | `true` | | `-insecure-skip-verify` | Skip validation of TLS certificates against trusted chains | `false` | @@ -35,7 +35,7 @@ Usage of 'src repos list': -f string Format for the output, using the syntax of Go package text/template. (e.g. "{{.ID}}: {{.Name}}") or "{{.|json}}") (default "{{.Name}}") -first int - Returns the first n repositories from the list. (use -1 for unlimited) (default 1000) + Returns the first n repositories from the list. (default 1000) -get-curl Print the curl command for executing this query and exit (WARNING: includes printing your access token!) -indexed @@ -67,10 +67,6 @@ Examples: $ src repos list -f '{{.|json}}' - List *all* repositories (may be slow!): - - $ src repos list -first='-1' - List repositories whose names match the query: $ src repos list -query='myquery' diff --git a/docs/cli/references/users/list.mdx b/docs/cli/references/users/list.mdx index 2b9cb2566..bc4d8c97b 100644 --- a/docs/cli/references/users/list.mdx +++ b/docs/cli/references/users/list.mdx @@ -7,7 +7,7 @@ |------|-------------|---------------| | `-dump-requests` | Log GraphQL requests and responses to stdout | `false` | | `-f` | Format for the output, using the syntax of Go package text/template. (e.g. "\{\{.ID\}\}: \{\{.Username\}\} (\{\{.DisplayName\}\})" or "\{\{.\|json\}\}") | `{{.Username}}` | -| `-first` | Returns the first n users from the list. (use -1 for unlimited) | `1000` | +| `-first` | Returns the first n users from the list. | `1000` | | `-get-curl` | Print the curl command for executing this query and exit (WARNING: includes printing your access token!) | `false` | | `-insecure-skip-verify` | Skip validation of TLS certificates against trusted chains | `false` | | `-query` | Returns users whose names match the query. (e.g. "alice") | | @@ -25,7 +25,7 @@ Usage of 'src users list': -f string Format for the output, using the syntax of Go package text/template. (e.g. "{{.ID}}: {{.Username}} ({{.DisplayName}})" or "{{.|json}}") (default "{{.Username}}") -first int - Returns the first n users from the list. (use -1 for unlimited) (default 1000) + Returns the first n users from the list. (default 1000) -get-curl Print the curl command for executing this query and exit (WARNING: includes printing your access token!) -insecure-skip-verify @@ -45,10 +45,6 @@ Examples: $ src users list - List *all* users (may be slow!): - - $ src users list -first='-1' - List users whose names match the query: $ src users list -query='myquery' diff --git a/docs/cody/capabilities/supported-models.mdx b/docs/cody/capabilities/supported-models.mdx index a323b0d56..9658a1efe 100644 --- a/docs/cody/capabilities/supported-models.mdx +++ b/docs/cody/capabilities/supported-models.mdx @@ -14,15 +14,16 @@ Cody supports a variety of cutting-edge large language models for use in chat an | **Provider** | **Model** | **Status** | **Vision Support** | | :----------- | :-------- | :--------- | :----------------- | -| Anthropic | [Claude Opus 4.6](https://docs.anthropic.com/en/docs/about-claude/models/overview) | ✅ | ✅ | -| Anthropic | [Claude Sonnet 4.6](https://docs.anthropic.com/en/docs/about-claude/models/overview) | ✅ | ✅ | -| Anthropic | [Claude Sonnet 4.6 with Thinking](https://docs.anthropic.com/en/docs/about-claude/models/overview) | ✅ | ✅ | -| Anthropic | [Claude Sonnet 4.5](https://docs.anthropic.com/en/docs/about-claude/models/overview) | ✅ | ✅ | -| Anthropic | [Claude Sonnet 4.5 with Thinking](https://docs.anthropic.com/en/docs/about-claude/models/overview) | ✅ | ✅ | -| Anthropic | [Claude Opus 4.5](https://docs.anthropic.com/en/docs/about-claude/models/overview) | ✅ | ✅ | -| Anthropic | [Claude Opus 4.5 with Thinking](https://docs.anthropic.com/en/docs/about-claude/models/overview) | ✅ | ✅ | -| Anthropic | [Claude Haiku 4.5](https://docs.anthropic.com/en/docs/about-claude/models/overview) | ✅ | ✅ | -| Anthropic | [Claude Haiku 4.5 with Thinking](https://docs.anthropic.com/en/docs/about-claude/models/overview) | ✅ | ✅ | +| Anthropic | [Claude Opus 4.7](https://platform.claude.com/docs/en/about-claude/models/overview) | ✅ | ✅ | +| Anthropic | [Claude Opus 4.6](https://platform.claude.com/docs/en/about-claude/models/overview) | ✅ | ✅ | +| Anthropic | [Claude Sonnet 4.6](https://platform.claude.com/docs/en/about-claude/models/overview) | ✅ | ✅ | +| Anthropic | [Claude Sonnet 4.6 with Thinking](https://platform.claude.com/docs/en/about-claude/models/overview) | ✅ | ✅ | +| Anthropic | [Claude Sonnet 4.5](https://platform.claude.com/docs/en/about-claude/models/overview) | ✅ | ✅ | +| Anthropic | [Claude Sonnet 4.5 with Thinking](https://platform.claude.com/docs/en/about-claude/models/overview) | ✅ | ✅ | +| Anthropic | [Claude Opus 4.5](https://platform.claude.com/docs/en/about-claude/models/overview) | ✅ | ✅ | +| Anthropic | [Claude Opus 4.5 with Thinking](https://platform.claude.com/docs/en/about-claude/models/overview) | ✅ | ✅ | +| Anthropic | [Claude Haiku 4.5](https://platform.claude.com/docs/en/about-claude/models/overview) | ✅ | ✅ | +| Anthropic | [Claude Haiku 4.5 with Thinking](https://platform.claude.com/docs/en/about-claude/models/overview) | ✅ | ✅ | | Google | [Gemini 2.5 Flash](https://cloud.google.com/vertex-ai/generative-ai/docs/models/gemini/2-5-flash) | ✅ | ✅ | | Google | [Gemini 2.5 Pro](https://cloud.google.com/vertex-ai/generative-ai/docs/models/gemini/2-5-pro) | ✅ | ✅ | | Google | [Gemini 3 Flash](https://cloud.google.com/vertex-ai/generative-ai/docs/models/gemini/3-flash) | ✅ | ❌ | @@ -52,29 +53,21 @@ Cody supports a variety of cutting-edge large language models for use in chat an ## Autocomplete Cody uses a set of models for autocomplete which are suited for the low latency use case. - -| **Provider** | **Model** | **Status** | -| :----------- | :-------- | :--------- | -| Anthropic | [Claude Haiku 4.5](https://docs.anthropic.com/en/docs/about-claude/models/overview) | ✅ | -| Anthropic | [Claude Haiku 4.5 with Thinking](https://docs.anthropic.com/en/docs/about-claude/models/overview) | ✅ | -| Fireworks.ai | StarCoder | ✅ | -| Fireworks.ai | DeepSeek V2 Lite Base | ✅ | -| Fireworks.ai | AutoEdits Fireworks Default | ✅ (beta) | -| Fireworks.ai | Autoedits DeepSeek Coder V2 | ✅ (beta) | -| Fireworks.ai | Autoedits DeepSeek Coder V2 | ✅ (beta) | -| Fireworks.ai | Autoedits DeepSeek Coder V2 | ✅ (beta) | -| Fireworks.ai | Autoedits Long Suggestion V4 Warm Start SFT | ✅ (beta) | -| Fireworks.ai | NLS Query Translator | ✅ | -| OpenAI | [GPT-4.1-nano](https://platform.openai.com/docs/models/gpt-4.1-nano) | ✅ | +| **Provider** | **Model** | **Status** | **Hosting region** | +| :----------- | :-------- | :--------- | :----------------- | +| Anthropic | [Claude Haiku 4.5](https://platform.claude.com/docs/en/about-claude/models/overview) | ✅ | global | +| Anthropic | [Claude Haiku 4.5 with Thinking](https://platform.claude.com/docs/en/about-claude/models/overview) | ✅ | global | +| Fireworks.ai | DeepSeek V2 Lite Base | ✅ | US Iowa | +| Fireworks.ai | Autoedits Fine-Tune DeepSeek Coder V2 | ✅ | US Iowa | +| Fireworks.ai | NLS Query Translator | ✅ | US Iowa | +| OpenAI | [GPT-4.1-nano](https://platform.openai.com/docs/models/gpt-4.1-nano) | ✅ | global | ## Smart Apply - -| **Provider** | **Model** | **Status** | -| :----------- | :-------- | :--------- | -| Fireworks.ai | Smart Apply Qwen Default | ✅ | -| Fireworks.ai | Smart Apply Qwen 32B V1 | ✅ (beta) | +| **Provider** | **Model** | **Status** | **Hosting region** | +| :----------- | :-------- | :--------- | :----------------- | +| Fireworks.ai | Smart Apply Fine-Tune Qwen 32B V1 | ✅ | US Iowa | ## Default Models diff --git a/docs/self-hosted/observability/alerts.mdx b/docs/self-hosted/observability/alerts.mdx index 9034041ff..6892d0f3e 100644 --- a/docs/self-hosted/observability/alerts.mdx +++ b/docs/self-hosted/observability/alerts.mdx @@ -5483,7 +5483,7 @@ Generated query for critical alert: `max(((proc_metrics_memory_map_current_count
Technical details -Generated query for warning alert: `max((sum by (code) (increase(src_zoekt_request_duration_seconds_count{code!~"2.."}[5m])) / ignoring (code) group_left () sum(increase(src_zoekt_request_duration_seconds_count[5m])) * 100) >= 5)` +Custom query for warning alert: `max(((sum(increase(src_zoekt_request_duration_seconds_count{code="error"}[5m])) / sum(increase(src_zoekt_request_duration_seconds_count[5m])) * 100) and (sum(increase(src_zoekt_request_duration_seconds_count[5m])) >= 50)) >= 5)`
diff --git a/docs/self-hosted/observability/dashboards.mdx b/docs/self-hosted/observability/dashboards.mdx index 38290ef9e..3be352e0a 100644 --- a/docs/self-hosted/observability/dashboards.mdx +++ b/docs/self-hosted/observability/dashboards.mdx @@ -5545,224 +5545,6 @@ sum by (email_source) (increase(src_email_send{success="true"}[30m]))
-### Frontend: Sentinel queries (only on sourcegraph.com) - -#### frontend: mean_successful_sentinel_duration_by_query - -

Mean successful sentinel search duration by query

- -Mean search duration for successful sentinel queries, broken down by query. Useful for debugging whether a slowdown is limited to a specific type of query. - -This panel has no related alerts. - -To see this panel, visit `/-/debug/grafana/d/frontend/frontend?viewPanel=103800` on your Sourcegraph instance. - -*Managed by the Sourcegraph Code Understanding team.* - -
-Technical details - -Query: - -``` -sum(rate(src_search_response_latency_seconds_sum{source=~"searchblitz.*", status="success"}[$sentinel_sampling_duration])) by (source) / sum(rate(src_search_response_latency_seconds_count{source=~"searchblitz.*", status="success"}[$sentinel_sampling_duration])) by (source) -``` -
- -
- -#### frontend: mean_sentinel_stream_latency_by_query - -

Mean successful sentinel stream latency by query

- -Mean time to first result for successful streaming sentinel queries, broken down by query. Useful for debugging whether a slowdown is limited to a specific type of query. - -This panel has no related alerts. - -To see this panel, visit `/-/debug/grafana/d/frontend/frontend?viewPanel=103801` on your Sourcegraph instance. - -*Managed by the Sourcegraph Code Understanding team.* - -
-Technical details - -Query: - -``` -sum(rate(src_search_streaming_latency_seconds_sum{source=~"searchblitz.*"}[$sentinel_sampling_duration])) by (source) / sum(rate(src_search_streaming_latency_seconds_count{source=~"searchblitz.*"}[$sentinel_sampling_duration])) by (source) -``` -
- -
- -#### frontend: 90th_percentile_successful_sentinel_duration_by_query - -

90th percentile successful sentinel search duration by query

- -90th percentile search duration for successful sentinel queries, broken down by query. Useful for debugging whether a slowdown is limited to a specific type of query. - -This panel has no related alerts. - -To see this panel, visit `/-/debug/grafana/d/frontend/frontend?viewPanel=103810` on your Sourcegraph instance. - -*Managed by the Sourcegraph Code Understanding team.* - -
-Technical details - -Query: - -``` -histogram_quantile(0.90, sum(rate(src_search_response_latency_seconds_bucket{source=~"searchblitz.*", status="success"}[$sentinel_sampling_duration])) by (le, source)) -``` -
- -
- -#### frontend: 90th_percentile_successful_stream_latency_by_query - -

90th percentile successful sentinel stream latency by query

- -90th percentile time to first result for successful streaming sentinel queries, broken down by query. Useful for debugging whether a slowdown is limited to a specific type of query. - -This panel has no related alerts. - -To see this panel, visit `/-/debug/grafana/d/frontend/frontend?viewPanel=103811` on your Sourcegraph instance. - -*Managed by the Sourcegraph Code Understanding team.* - -
-Technical details - -Query: - -``` -histogram_quantile(0.90, sum(rate(src_search_streaming_latency_seconds_bucket{source=~"searchblitz.*"}[$sentinel_sampling_duration])) by (le, source)) -``` -
- -
- -#### frontend: 90th_percentile_unsuccessful_duration_by_query - -

90th percentile unsuccessful sentinel search duration by query

- -90th percentile search duration of _unsuccessful_ sentinel queries (by error or timeout), broken down by query. Useful for debugging how the performance of failed requests affect UX. - -This panel has no related alerts. - -To see this panel, visit `/-/debug/grafana/d/frontend/frontend?viewPanel=103820` on your Sourcegraph instance. - -*Managed by the Sourcegraph Code Understanding team.* - -
-Technical details - -Query: - -``` -histogram_quantile(0.90, sum(rate(src_search_response_latency_seconds_bucket{source=~`searchblitz.*`, status!=`success`}[$sentinel_sampling_duration])) by (le, source)) -``` -
- -
- -#### frontend: 75th_percentile_successful_sentinel_duration_by_query - -

75th percentile successful sentinel search duration by query

- -75th percentile search duration of successful sentinel queries, broken down by query. Useful for debugging whether a slowdown is limited to a specific type of query. - -This panel has no related alerts. - -To see this panel, visit `/-/debug/grafana/d/frontend/frontend?viewPanel=103830` on your Sourcegraph instance. - -*Managed by the Sourcegraph Code Understanding team.* - -
-Technical details - -Query: - -``` -histogram_quantile(0.75, sum(rate(src_search_response_latency_seconds_bucket{source=~"searchblitz.*", status="success"}[$sentinel_sampling_duration])) by (le, source)) -``` -
- -
- -#### frontend: 75th_percentile_successful_stream_latency_by_query - -

75th percentile successful sentinel stream latency by query

- -75th percentile time to first result for successful streaming sentinel queries, broken down by query. Useful for debugging whether a slowdown is limited to a specific type of query. - -This panel has no related alerts. - -To see this panel, visit `/-/debug/grafana/d/frontend/frontend?viewPanel=103831` on your Sourcegraph instance. - -*Managed by the Sourcegraph Code Understanding team.* - -
-Technical details - -Query: - -``` -histogram_quantile(0.75, sum(rate(src_search_streaming_latency_seconds_bucket{source=~"searchblitz.*"}[$sentinel_sampling_duration])) by (le, source)) -``` -
- -
- -#### frontend: 75th_percentile_unsuccessful_duration_by_query - -

75th percentile unsuccessful sentinel search duration by query

- -75th percentile search duration of _unsuccessful_ sentinel queries (by error or timeout), broken down by query. Useful for debugging how the performance of failed requests affect UX. - -This panel has no related alerts. - -To see this panel, visit `/-/debug/grafana/d/frontend/frontend?viewPanel=103840` on your Sourcegraph instance. - -*Managed by the Sourcegraph Code Understanding team.* - -
-Technical details - -Query: - -``` -histogram_quantile(0.75, sum(rate(src_search_response_latency_seconds_bucket{source=~`searchblitz.*`, status!=`success`}[$sentinel_sampling_duration])) by (le, source)) -``` -
- -
- -#### frontend: unsuccessful_status_rate - -

Unsuccessful status rate

- -The rate of unsuccessful sentinel queries, broken down by failure type. - -This panel has no related alerts. - -To see this panel, visit `/-/debug/grafana/d/frontend/frontend?viewPanel=103850` on your Sourcegraph instance. - -*Managed by the Sourcegraph Code Understanding team.* - -
-Technical details - -Query: - -``` -sum(rate(src_graphql_search_response{source=~"searchblitz.*", status!="success"}[$sentinel_sampling_duration])) by (status) -``` -
- -
- ### Frontend: Incoming webhooks #### frontend: p95_time_to_handle_incoming_webhooks @@ -5777,7 +5559,7 @@ p95 response time to incoming webhook requests from code hosts. This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/frontend/frontend?viewPanel=103900` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/frontend/frontend?viewPanel=103800` on your Sourcegraph instance. *Managed by the Sourcegraph Services team.* @@ -5801,7 +5583,7 @@ histogram_quantile(0.95, sum (rate(src_http_request_duration_seconds_bucket{rou This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/frontend/frontend?viewPanel=104000` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/frontend/frontend?viewPanel=103900` on your Sourcegraph instance. *Managed by the Sourcegraph Code Plane team.* @@ -5823,7 +5605,7 @@ sum(increase(src_insights_aggregations_total{job=~"^(frontend|sourcegraph-fronte This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/frontend/frontend?viewPanel=104001` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/frontend/frontend?viewPanel=103901` on your Sourcegraph instance. *Managed by the Sourcegraph Code Plane team.* @@ -5845,7 +5627,7 @@ sum by (le)(rate(src_insights_aggregations_duration_seconds_bucket{job=~"^(fron This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/frontend/frontend?viewPanel=104002` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/frontend/frontend?viewPanel=103902` on your Sourcegraph instance. *Managed by the Sourcegraph Code Plane team.* @@ -5867,7 +5649,7 @@ sum(increase(src_insights_aggregations_errors_total{job=~"^(frontend|sourcegraph This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/frontend/frontend?viewPanel=104003` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/frontend/frontend?viewPanel=103903` on your Sourcegraph instance. *Managed by the Sourcegraph Code Plane team.* @@ -5889,7 +5671,7 @@ sum(increase(src_insights_aggregations_errors_total{job=~"^(frontend|sourcegraph This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/frontend/frontend?viewPanel=104010` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/frontend/frontend?viewPanel=103910` on your Sourcegraph instance. *Managed by the Sourcegraph Code Plane team.* @@ -5911,7 +5693,7 @@ sum by (op,extended_mode)(increase(src_insights_aggregations_total{job=~"^(front This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/frontend/frontend?viewPanel=104011` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/frontend/frontend?viewPanel=103911` on your Sourcegraph instance. *Managed by the Sourcegraph Code Plane team.* @@ -5933,7 +5715,7 @@ histogram_quantile(0.99, sum by (le,op,extended_mode)(rate(src_insights_aggrega This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/frontend/frontend?viewPanel=104012` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/frontend/frontend?viewPanel=103912` on your Sourcegraph instance. *Managed by the Sourcegraph Code Plane team.* @@ -5955,7 +5737,7 @@ sum by (op,extended_mode)(increase(src_insights_aggregations_errors_total{job=~" This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/frontend/frontend?viewPanel=104013` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/frontend/frontend?viewPanel=103913` on your Sourcegraph instance. *Managed by the Sourcegraph Code Plane team.* From 67546e612d4609ab85cb981d32c8a12b93bee43d Mon Sep 17 00:00:00 2001 From: Bolaji Olajide <25608335+BolajiOlajide@users.noreply.github.com> Date: Mon, 27 Apr 2026 13:37:19 +0100 Subject: [PATCH 091/217] docs/batch-changes: add Bitbucket Server and Cloud OAuth credential documentation (#1716) Adds documentation for the new Bitbucket Server and Bitbucket Cloud OAuth credential support in Batch Changes. ## Changes - Added inline links from existing Bitbucket PAT/app password sections pointing to the new OAuth alternative - Added a new **Bitbucket OAuth** section covering: - **Bitbucket Server OAuth**: prerequisites, scopes (`REPO_READ`, `REPO_WRITE`), step-by-step credential setup, migration from PATs - **Bitbucket Cloud OAuth**: prerequisites, required permissions, scopes (`account`, `email`, `repository`, `pullrequest:write`), step-by-step credential setup, migration from app passwords - **Token refresh**: automatic refresh behavior and requirements - **Credential removal**: cleanup of linked external accounts Companion PR: https://github.com/sourcegraph/sourcegraph/pull/10068 --- .../batch-changes/configuring-credentials.mdx | 91 +++++++++++++++++++ 1 file changed, 91 insertions(+) diff --git a/docs/batch-changes/configuring-credentials.mdx b/docs/batch-changes/configuring-credentials.mdx index 7d643449b..76b74a269 100644 --- a/docs/batch-changes/configuring-credentials.mdx +++ b/docs/batch-changes/configuring-credentials.mdx @@ -254,6 +254,8 @@ Batch Changes require the access token to have the `write` permission on both pr ![bb-token](https://sourcegraphstatic.com/docs/images/batch_changes/bb-token.png) +Alternatively, you can use [Bitbucket Server OAuth](#bitbucket-server-oauth) to authenticate without manually creating a token. + ### Bitbucket Cloud On Bitbucket, follow the steps to [create an app password](https://support.atlassian.com/bitbucket-cloud/docs/app-passwords/). Batch Changes requires the following scopes: @@ -266,6 +268,8 @@ On Bitbucket, follow the steps to [create an app password](https://support.atlas ![bb-cloud](https://sourcegraphstatic.com/docs/images/batch_changes/bb-cloud-app-password.png) +Alternatively, you can use [Bitbucket Cloud OAuth](#bitbucket-cloud-oauth) to authenticate without manually creating an app password. + ### Azure DevOps Follow the steps to [create a PAT](https://learn.microsoft.com/en-us/azure/devops/organizations/accounts/use-personal-access-tokens-to-authenticate?view=azure-devops&tabs=Windows#create-a-pat) on Azure DevOps. Batch Changes requires the following scopes: @@ -369,3 +373,90 @@ To remove a GitHub app from your Sourcegraph instance, navigate back to the same If you want to delete the GitHub app entirely, you have to navigate to [GitHub's list of applications](https://github.com/settings/apps/) and delete it from there. + +## Bitbucket OAuth + +Sourcegraph supports OAuth-based authentication for Batch Changes with both Bitbucket Server (Data Center) and Bitbucket Cloud. This allows users to authorize Batch Changes to act on their behalf using OAuth instead of manually creating personal access tokens or app passwords. + + + Bitbucket OAuth for Batch Changes requires a site administrator to first configure a Bitbucket + [authentication provider](/admin/auth) in Sourcegraph. The same auth provider used for SSO sign-in + is reused for Batch Changes — no additional provider configuration is needed. + + +### Bitbucket Server OAuth + +#### Prerequisites + +A Sourcegraph site administrator must configure a [Bitbucket Server authentication provider](/admin/auth#bitbucket-server). If your instance already uses Bitbucket Server for sign-in, this step is already complete. + +The OAuth consumer in Bitbucket Server should be configured as an incoming application link with at minimum **Read** permission on **Repositories**. When a user initiates the Batch Changes OAuth flow, Sourcegraph automatically requests the elevated scopes needed: + +- `REPO_READ` — read repository contents and metadata +- `REPO_WRITE` — push branches and create/update pull requests + +#### Adding a Bitbucket Server OAuth credential + +- Navigate to **User settings > Batch Changes** +- Click **Add credentials** for your Bitbucket Server code host +- Select **Bitbucket Server OAuth** as the **Authentication strategy** +- Click the **Authorize** button +- You will be redirected to your Bitbucket Server instance to grant access +- After authorizing, you will be redirected back to Sourcegraph with the credential automatically provisioned + +#### Migrating from PATs to Bitbucket Server OAuth + +You can migrate from personal access tokens to OAuth by deleting the existing PAT credential and creating a new one using the Bitbucket Server OAuth option. Existing batch changes will continue to work with the new credential. + +### Bitbucket Cloud OAuth + +#### Prerequisites + +A Sourcegraph site administrator must configure a [Bitbucket Cloud authentication provider](/admin/auth#bitbucket-cloud). If your instance already uses Bitbucket Cloud for sign-in, this step is already complete. + +The OAuth consumer in Bitbucket Cloud should have the following permissions enabled: + +- **Account**: Read +- **Email**: Read +- **Repositories**: Read +- **Pull requests**: Read and Write + + + If the OAuth consumer is missing required permissions, users will see an `invalid_scope` error + during the OAuth flow. Ensure all the above permissions are selected in your Bitbucket Cloud + workspace under **Settings > OAuth consumers**. + + +When a user initiates the Batch Changes OAuth flow, Sourcegraph requests the following scopes: + +- `account` — read the authenticated user's account information +- `email` — read the authenticated user's email addresses +- `repository` — read and access repository contents +- `pullrequest:write` — create and update pull requests + +#### Adding a Bitbucket Cloud OAuth credential + +- Navigate to **User settings > Batch Changes** +- Click **Add credentials** for your Bitbucket Cloud code host +- Select **Bitbucket Cloud OAuth** as the **Authentication strategy** +- Click the **Authorize** button +- You will be redirected to Bitbucket Cloud to grant access +- After authorizing, you will be redirected back to Sourcegraph with the credential automatically provisioned + +#### Migrating from app passwords to Bitbucket Cloud OAuth + +You can migrate from app passwords to OAuth by deleting the existing credential and creating a new one using the Bitbucket Cloud OAuth option. Existing batch changes will continue to work with the new credential. + +### Token refresh + +OAuth tokens have limited lifetimes. Sourcegraph automatically refreshes tokens when they expire using the refresh token obtained during authorization. Token refresh is handled transparently — users do not need to re-authorize unless the refresh token itself is revoked or the OAuth consumer is deleted. + + + The Bitbucket authentication provider must remain configured in the Sourcegraph site configuration + for token refresh to work. If the auth provider is removed, tokens will not be refreshed and will + eventually expire. + + +### Removing a Bitbucket OAuth credential + +When a Bitbucket OAuth credential is removed, the linked external account used for Batch Changes is also cleaned up. This does not affect the user's ability to sign in to Sourcegraph via Bitbucket — sign-in and Batch Changes use separate external accounts. From 2334ecd784fabb811a85f804fe079b4bbca2c4c7 Mon Sep 17 00:00:00 2001 From: Michael Lin Date: Mon, 27 Apr 2026 21:42:56 -0700 Subject: [PATCH 092/217] docs/cloud: clarify private network support via Private Connectivity (#1761) closes PLAT-574 Co-authored-by: Claude Opus 4.7 (1M context) --- docs/cloud/index.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/cloud/index.mdx b/docs/cloud/index.mdx index 982efa903..04864de2c 100644 --- a/docs/cloud/index.mdx +++ b/docs/cloud/index.mdx @@ -197,7 +197,7 @@ Supported destinations: > NOTE: We may be able to [support special requests](#accommodating-special-requirements), please reach out to your account team. - The Sourcegraph instance can only be accessible via a public IP. Running it in a private network and pairing it with your private network via site-to-site VPN or VPC Peering is not yet supported. -- Code hosts or user authentication providers running in a private network are not yet supported. They have to be publicly available or they must allow incoming traffic from Sourcegraph-owned static IP addresses. We do not have proper support for other connectivity methods, e.g. site-to-site VPN, VPC peering, tunneling. +- Code hosts or user authentication providers running in a private network must be reachable either publicly (optionally restricted to [Sourcegraph-owned static IP addresses](#private-connectivity)) or through one of the supported [Private Connectivity](#private-connectivity) options (AWS Private Link, GCP Private Service Connect, Sourcegraph Connect agent, or alternate public load balancers). Other connectivity methods such as site-to-site VPN or VPC peering are not supported. - Instances currently run only on Google Cloud Platform in the [chosen regions](#multiple-region-availability). Other regions and cloud providers (such as AWS or Azure) are not yet supported. - Some [configuration options](/admin/) are managed by Sourcegraph and cannot be overridden by customers, e.g. feature flags, experimental features, and auto-indexing policy. Please reach out to your account team if you would like to make changes to these settings. From 19c29b5fbdb51e491c681fd6e756f43a6602eefd Mon Sep 17 00:00:00 2001 From: Jan Hartman Date: Tue, 28 Apr 2026 15:39:29 +0200 Subject: [PATCH 093/217] Update DS docs after evaluator release (#1762) --- docs/deep-search/index.mdx | 18 +++++------------- 1 file changed, 5 insertions(+), 13 deletions(-) diff --git a/docs/deep-search/index.mdx b/docs/deep-search/index.mdx index 94eadbfbb..f9ff24d13 100644 --- a/docs/deep-search/index.mdx +++ b/docs/deep-search/index.mdx @@ -54,9 +54,7 @@ You can @-mention: - **Repositories** — scope the search to specific repos - **Files** — point the agent to particular files -For use cases where you're looking for exhaustive answers (for example, "Find all files with the `.XYZ` file extension in `foo' repo that contain the word`bar`), Code Search still excels, while Deep Search will only utilize a sample of the results. Deep Search will perform a Code Search query as a source, which you can use to continue an exhaustive search within the Code Search product. - -### Examples of prompts +## Examples of prompts - Find examples of logger usage and show examples of the different types of logging we use. - I want to know when the indexing queue functionality was last changed in `@zoekt`. Show me the last few commit diffs touching this code and explain the changes. @@ -64,6 +62,7 @@ For use cases where you're looking for exhaustive answers (for example, "Find al - Which tools do we use in our build processes defined in `BUILD.bazel` files? - Generate a request flow diagram for `src/backend`. Mark the auth and rate limit points. - Based on the findings in `https://sourcegraph.com/deepsearch/e3c0150a-b7ef-4955-bed4-d5820ca7a70d`, investigate whether the same logging patterns appear in our other microservices. +- Which packages in `@myorg/repo` still import pkg/errors but haven’t migrated to `corp.pkg/logging/v2`? ## Conversation sharing @@ -72,7 +71,7 @@ For use cases where you're looking for exhaustive answers (for example, "Find al enabling it.{' '}
-Starting from Sourcegraph version 6.5, you can share Deep Search conversations with other users in your Sourcegraph instance. To share a conversation, click the "Share" button in the top left, then copy the link. Once you share a conversation, any user on your instance can view it with the link. You can also reset the share link and generate a new one, invalidating the previous link. +You can share Deep Search conversations with other users in your Sourcegraph instance. To share a conversation, simply copy the URL or click the "Share" button, then copy the link. Once you share a conversation, any user on your instance can view it with the link. You can also reset the share link and generate a new one, invalidating the previous link. We do not enforce [repository permissions](/admin/permissions) for viewing shared Deep Search conversations. This means that a user can view a conversation shared with them, regardless of which repositories they can access. We plan to revisit this in the future. @@ -88,7 +87,7 @@ Deep Search uses a combination of frontier and specialized models selected by So ### Enabling conversation sharing -Conversation sharing is disabled by default. To enable conversation sharing, ask your site administrator to enable the following setting in your site configuration: +To enable conversation sharing, ask your site administrator to enable the following setting in your site configuration: ```json "deepSearch.enabled": true, @@ -97,7 +96,7 @@ Conversation sharing is disabled by default. To enable conversation sharing, ask ### Custom model configuration and BYOK (Bring Your Own Key) -Deep Search is only available to customers using the [Sourcegraph Model Provider](/model-provider). Customers who configure and access their own models via BYOK cannot use the Deep Search feature. +Deep Search is only available to customers using the [Sourcegraph Model Provider](/model-provider). Customers who configure and access their own models via BYOK cannot use Deep Search. ## Self-hosted network requirements @@ -105,13 +104,6 @@ Deep Search streams its responses using [Server-Sent Events (SSE)](https://en.wi If your Sourcegraph instance sits behind a reverse proxy, load balancer, or ingress controller, you must ensure the timeout for connections to Sourcegraph is set to at least **5 minutes**. The default timeout for many proxies (often 30–60 seconds) will cause in-progress Deep Search responses to be cut off prematurely. - - SSE streaming is the default and recommended transport for Deep Search. A polling - fallback is temporarily available but will be removed in a future release. - Ensure your ingress or proxy timeout is raised to at least 5 minutes before - enabling Deep Search for your users. - - ## Managing usage Deep Search usage is managed on two levels: From cae145b88497b5656fc59577fae0d1577b7e6687 Mon Sep 17 00:00:00 2001 From: Gabe Torres <69164745+gabtorre@users.noreply.github.com> Date: Tue, 28 Apr 2026 17:12:44 -0700 Subject: [PATCH 094/217] fix settings for temporarily disabling code host requests (#1763) Remove gitMaxConcurrentClones: 0 (values <= 0 fall back to default 5, so it doesn't disable clones). Clarify what the remaining settings actually stop and point to per-code-host rateLimit for API throttling. --- docs/admin/code-hosts/index.mdx | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/docs/admin/code-hosts/index.mdx b/docs/admin/code-hosts/index.mdx index d7dc2150c..364081067 100644 --- a/docs/admin/code-hosts/index.mdx +++ b/docs/admin/code-hosts/index.mdx @@ -63,17 +63,24 @@ For information on code host-related rate limits, see [rate limits](/admin/code- ## Temporarily disabling requests to code hosts -It may be the case that you'd like to temporarily disable all `git` and API requests from Sourcegraph to a code host. Adding the following to your site configuration will stop Sourcegraph from sending requests to the configured code host connections: +It may be the case that you'd like to temporarily reduce or pause the `git` and API requests Sourcegraph sends to a code host. Adding the following to your site configuration will stop Sourcegraph's periodic background traffic and rate-limit git operations to zero: -> WARNING: disabling all git and API requests to codehosts will also disable permissions syncs, batch changes, discovery of new repos, and updates to currently synched repos. Synching with codehosts is a core functionality of Sourcegraph and many other features may also be affected. +> WARNING: applying these settings will also disable permissions syncs, batch changes, discovery of new repos, and updates to currently synched repos. Syncing with codehosts is a core functionality of Sourcegraph and many other features may also be affected. ```json "disableAutoGitUpdates": true, "disableAutoCodeHostSyncs": true, -"gitMaxCodehostRequestsPerSecond": 0, -"gitMaxConcurrentClones": 0 +"gitMaxCodehostRequestsPerSecond": 0 ``` +What each setting does: + +- `disableAutoGitUpdates` halts the periodic background `git fetch` scheduler. On-demand git fetches triggered by user actions (for example, browsing a commit Sourcegraph hasn't seen yet) are not stopped by this flag alone. +- `disableAutoCodeHostSyncs` halts periodic syncs of repository metadata, permissions, and batch changes changesets. Operations explicitly initiated by users or admins (manual sync, batch change application, etc.) can still issue API requests. +- `gitMaxCodehostRequestsPerSecond: 0` configures the **git** rate limiter to allow zero requests per second per gitserver, which blocks any remaining ad-hoc git operations. This setting does **not** affect HTTP/API requests to code hosts; those are governed by each code host connection's `rateLimit`. + +> NOTE: These settings do not guarantee zero outbound traffic. To also throttle API traffic, set the per-code-host `rateLimit` on each code host connection (see [Rate limits](/admin/code-hosts/rate-limits)). Inbound webhooks delivered _from_ the code host to Sourcegraph are not affected by any of these settings. + ## Using Self-signed TLS Certificates To use Sourcegraph with self-signed TLS Certificates, update the site configuration to add the certificate and skip verification of the certificate chain: From f0da511bb502964e5a6c5b0261527f93d4ab9d15 Mon Sep 17 00:00:00 2001 From: Taras Yemets Date: Thu, 30 Apr 2026 14:49:43 +0300 Subject: [PATCH 095/217] Mermaid: zoom/pan in expanded diagrams + state cleanup (#1765) --- package.json | 1 + pnpm-lock.yaml | 8 + src/components/Mermaid.tsx | 367 +++++++++++++++++++++---------------- 3 files changed, 214 insertions(+), 162 deletions(-) diff --git a/package.json b/package.json index b9a845752..656a94576 100644 --- a/package.json +++ b/package.json @@ -64,6 +64,7 @@ "remark-gfm": "3.0.1", "shiki": "^0.14.7", "simple-functional-loader": "^1.2.1", + "svg-pan-zoom": "^3.6.2", "tailwind-merge": "^2.3.0", "tailwindcss": "^3.4.0", "tailwindcss-animate": "^1.0.7", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 4a14b11df..c13133f22 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -149,6 +149,9 @@ importers: simple-functional-loader: specifier: ^1.2.1 version: 1.2.1 + svg-pan-zoom: + specifier: ^3.6.2 + version: 3.6.2 tailwind-merge: specifier: ^2.3.0 version: 2.6.1 @@ -4972,6 +4975,9 @@ packages: resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} engines: {node: '>= 0.4'} + svg-pan-zoom@3.6.2: + resolution: {integrity: sha512-JwnvRWfVKw/Xzfe6jriFyfey/lWJLq4bUh2jwoR5ChWQuQoOH8FEh1l/bEp46iHHKHEJWIyFJETbazraxNWECg==} + tailwind-merge@2.6.1: resolution: {integrity: sha512-Oo6tHdpZsGpkKG88HJ8RR1rg/RdnEkQEfMoEk2x1XRI3F1AxeU+ijRXpiVUF4UbLfcxxRGw6TbUINKYdWVsQTQ==} @@ -11285,6 +11291,8 @@ snapshots: supports-preserve-symlinks-flag@1.0.0: {} + svg-pan-zoom@3.6.2: {} + tailwind-merge@2.6.1: {} tailwindcss-animate@1.0.7(tailwindcss@3.4.19(yaml@2.8.2)): diff --git a/src/components/Mermaid.tsx b/src/components/Mermaid.tsx index ce1549433..4b166aba6 100644 --- a/src/components/Mermaid.tsx +++ b/src/components/Mermaid.tsx @@ -1,15 +1,12 @@ 'use client'; -import type mermaidAPI from 'mermaid'; import {useTheme} from 'next-themes'; -import {useCallback, useEffect, useId, useRef, useState} from 'react'; +import {useEffect, useId, useRef, useState} from 'react'; import {createPortal} from 'react-dom'; import * as logoPacks from '../images/logos/'; -type MermaidType = typeof mermaidAPI; - const LIGHT_THEME = { primaryColor: '#FFF3F0', secondaryColor: '#FFE5E0', @@ -82,123 +79,56 @@ export function Mermaid({chart}: MermaidProps) { const id = useId().replace(/:/g, '-'); const [svg, setSvg] = useState(''); const [error, setError] = useState(null); - const [renderKey, setRenderKey] = useState(() => - Math.random().toString(36).slice(2) - ); const [isExpanded, setIsExpanded] = useState(false); - const [mounted, setMounted] = useState(false); - const portalRef = useRef(null); - const mermaidRef = useRef(null); const {resolvedTheme} = useTheme(); useEffect(() => { - setMounted(true); - const div = document.createElement('div'); - div.id = `mermaid-portal-${id}`; - document.body.appendChild(div); - portalRef.current = div; - return () => { - if (portalRef.current) { - document.body.removeChild(portalRef.current); - } - }; - }, [id]); + if (!chart || !chart.trim() || !resolvedTheme) return; - useEffect(() => { - if (!mounted) return; - - const initMermaid = async () => { - const mermaidModule = await import('mermaid'); - const mermaid = mermaidModule.default; - mermaidRef.current = mermaid; + let cancelled = false; - mermaid.registerIconPacks( - Object.values(logoPacks).map(icons => ({ - name: icons.prefix, - icons - })) - ); - - const isDark = resolvedTheme === 'dark'; - mermaid.initialize({ - startOnLoad: false, - theme: 'base', - themeVariables: isDark ? DARK_THEME : LIGHT_THEME, - themeCSS: isDark - ? '.node-bkg { stroke: #F34E3F !important; }' - : '' - }); - - setRenderKey(Math.random().toString(36).slice(2)); - }; - - initMermaid(); - }, [resolvedTheme, mounted]); - - useEffect(() => { - if (!chart || !chart.trim() || !mounted || !mermaidRef.current) { - return; - } - - let isMounted = true; - const elementId = `mermaid-${id}-${renderKey}`; - - const renderChart = async () => { + (async () => { try { - const existing = document.getElementById(elementId); - if (existing) { - existing.remove(); - } + // mermaid touches `window`/`document` at module load, so we + // dynamic-import it to keep this component SSR-safe. + const {default: mermaid} = await import('mermaid'); + if (cancelled) return; - const {svg} = await mermaidRef.current!.render( - elementId, - chart + mermaid.registerIconPacks( + Object.values(logoPacks).map(icons => ({ + name: icons.prefix, + icons + })) ); - if (isMounted) { - setSvg(svg); - setError(null); - } - } catch (err) { - if (isMounted) { - setError( - err instanceof Error - ? err.message - : 'Failed to render diagram' - ); - } - } - }; - - renderChart(); - return () => { - isMounted = false; - }; - }, [chart, id, renderKey, mounted]); + const isDark = resolvedTheme === 'dark'; + mermaid.initialize({ + startOnLoad: false, + theme: 'base', + themeVariables: isDark ? DARK_THEME : LIGHT_THEME, + themeCSS: isDark + ? '.node-bkg { stroke: #F34E3F !important; }' + : '' + }); - const handleKeyDown = useCallback( - (e: KeyboardEvent) => { - if (e.key === 'Escape' && isExpanded) { - setIsExpanded(false); + const {svg} = await mermaid.render(`mermaid-${id}`, chart); + if (cancelled) return; + setSvg(svg); + setError(null); + } catch (err) { + if (cancelled) return; + setError( + err instanceof Error + ? err.message + : 'Failed to render diagram' + ); } - }, - [isExpanded] - ); + })(); - useEffect(() => { - if (isExpanded) { - document.addEventListener('keydown', handleKeyDown); - document.body.style.overflow = 'hidden'; - } return () => { - document.removeEventListener('keydown', handleKeyDown); - document.body.style.overflow = ''; + cancelled = true; }; - }, [isExpanded, handleKeyDown]); - - if (!mounted) { - return null; - } + }, [chart, id, resolvedTheme]); if (error) { return ( @@ -248,66 +178,179 @@ export function Mermaid({chart}: MermaidProps) { - {!isExpanded && ( -
- )} +
- {isExpanded && - mounted && - portalRef.current && - createPortal( -
setIsExpanded(false)} + {isExpanded && ( + setIsExpanded(false)} + /> + )} + + ); +} + +interface DiagramCanvasProps { + svg: string; + bgColor: string; + className?: string; + toolbarExtra?: React.ReactNode; +} + +function DiagramCanvas({ + svg, + bgColor, + className, + toolbarExtra +}: DiagramCanvasProps) { + const containerRef = useRef(null); + const panZoomRef = useRef(null); + const [zoom, setZoom] = useState(1); + + useEffect(() => { + // svg-pan-zoom touches `window`/`document` at module load, so we + // dynamic-import it to keep this component SSR-safe. + const el = containerRef.current; + if (!el) return; + + let cancelled = false; + let instance: SvgPanZoom.Instance | null = null; + + import('svg-pan-zoom').then(({default: svgPanZoom}) => { + if (cancelled || !el) return; + + el.innerHTML = svg; + const svgEl = el.querySelector('svg'); + if (!svgEl) return; + svgEl.style.maxWidth = 'none'; + svgEl.style.width = '100%'; + svgEl.style.height = '100%'; + + instance = svgPanZoom(svgEl, { + fit: true, + center: true, + minZoom: 0.5, + maxZoom: 10, + zoomScaleSensitivity: 0.3, + preventMouseEventsDefault: false, + onZoom: setZoom + }); + panZoomRef.current = instance; + }); + + return () => { + cancelled = true; + instance?.destroy(); + panZoomRef.current = null; + }; + }, [svg]); + + return ( +
+
+
+ + + +
+ {toolbarExtra} +
+
+
+ ); +} + +interface ExpandedDiagramProps { + svg: string; + bgColor: string; + onClose: () => void; +} + +function ExpandedDiagram({svg, bgColor, onClose}: ExpandedDiagramProps) { + useEffect(() => { + const handleKeyDown = (e: KeyboardEvent) => { + if (e.key === 'Escape') onClose(); + }; + document.addEventListener('keydown', handleKeyDown); + document.body.style.overflow = 'hidden'; + return () => { + document.removeEventListener('keydown', handleKeyDown); + document.body.style.overflow = ''; + }; + }, [onClose]); + + return createPortal( +
+
{ + // Click on a link inside lets the modal close (and navigation proceed); + // other clicks inside keep it open. + if (!(e.target as HTMLElement).closest('.clickable')) { + e.stopPropagation(); + } + }} + > + - -
-
-
, - portalRef.current - )} - + + + + } + /> +
+
, + document.body ); } From 27b97ca16e68af225195773899bc99dea9de1793 Mon Sep 17 00:00:00 2001 From: Keegan Carruthers-Smith Date: Wed, 6 May 2026 10:56:12 +0200 Subject: [PATCH 096/217] batch-changes: update bitbucket cloud api token docs (#1768) Our documentation was outdated. BitBucket cloud now uses a different flow to create a token and the names of the scopes have changed. The new UX also doesn't have a reasonable screenshot to take, so we leave it out. --- docs/batch-changes/configuring-credentials.mdx | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/docs/batch-changes/configuring-credentials.mdx b/docs/batch-changes/configuring-credentials.mdx index 76b74a269..31a6e9b03 100644 --- a/docs/batch-changes/configuring-credentials.mdx +++ b/docs/batch-changes/configuring-credentials.mdx @@ -258,17 +258,17 @@ Alternatively, you can use [Bitbucket Server OAuth](#bitbucket-server-oauth) to ### Bitbucket Cloud -On Bitbucket, follow the steps to [create an app password](https://support.atlassian.com/bitbucket-cloud/docs/app-passwords/). Batch Changes requires the following scopes: +On Bitbucket, follow the steps to [create an API token with scopes](https://support.atlassian.com/bitbucket-cloud/docs/create-an-api-token/). Batch Changes requires the following Bitbucket scopes: -- `account:read` -- `repo:read` -- `repo:write` -- `pr:write` -- `pipeline:read` +- `read:account` +- `read:repository:bitbucket` +- `read:pipeline:bitbucket` +- `write:repository:bitbucket` +- `write:pullrequest:bitbucket` -![bb-cloud](https://sourcegraphstatic.com/docs/images/batch_changes/bb-cloud-app-password.png) +If you have an existing Bitbucket Cloud app password, you can continue using it until Bitbucket Cloud disables app passwords. For new credentials, use an API token. -Alternatively, you can use [Bitbucket Cloud OAuth](#bitbucket-cloud-oauth) to authenticate without manually creating an app password. +Alternatively, you can use [Bitbucket Cloud OAuth](#bitbucket-cloud-oauth) to authenticate without manually creating a token. ### Azure DevOps From d2fa014d91964ff69b433d633f582643ca4e1253 Mon Sep 17 00:00:00 2001 From: Jan Hartman Date: Fri, 8 May 2026 10:33:51 +0200 Subject: [PATCH 097/217] Add evaluator to MCP tools list, document missing endpoint (#1769) --- docs/api/mcp/index.mdx | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/docs/api/mcp/index.mdx b/docs/api/mcp/index.mdx index 407b6b561..094480e74 100644 --- a/docs/api/mcp/index.mdx +++ b/docs/api/mcp/index.mdx @@ -37,10 +37,11 @@ This works similarly for other MCP-compatible agents. See [Client Integrations]( The MCP server provides different tool suites for various use cases: -| Endpoint | Description | -| ---------------------- | ------------------------------- | -| `/.api/mcp` | Full suite of Sourcegraph tools | -| `/.api/mcp/deepsearch` | Deep Search agent | +| Endpoint | Description | +| ---------------------- | ----------------------------------- | +| `/.api/mcp` | Core Sourcegraph search tools | +| `/.api/mcp/all` | Full suite of Sourcegraph tools | +| `/.api/mcp/deepsearch` | Deep Search agent | Example URL: @@ -264,6 +265,17 @@ Semantic search with flexible linguistic matching. **Features:** Flexible linguistic matching, stemming, broader results than keyword search +#### `evaluator` + +Run sandboxed Lua scripts for aggregation, cross-referencing, and computation over search results. + +**Parameters:** + +- `script` - Lua script to execute against Sourcegraph search results (required) + +**Use cases:** Counting or aggregating many search matches, cross-referencing multiple searches, transforming or combining search output with custom logic + + ### Code Navigation #### `go_to_definition` From fccceac6cc3e5ddba0fa279088c98604704b7280 Mon Sep 17 00:00:00 2001 From: Eugenio Sanchez Date: Mon, 11 May 2026 09:57:17 -0700 Subject: [PATCH 098/217] fix(batch-changes): repair broken permissions table (#1770) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## What Fixes the broken table under "Batch Change access for each permission level" on `/batch-changes/permissions-in-batch-changes`. Previously the table rendered as a single paragraph with literal `|` separators visible to the reader. ## Currently at Permissions in Batch Changes You can see the page [here](https://sourcegraph.com/docs/batch-changes/permissions-in-batch-changes#permissions-in-batch-changes) image ## After (locally) image ## Why The markdown was malformed in two ways: 1. There was a blank line between the header row and the `|---|` separator row. GFM requires the separator to be on the line immediately after the header, otherwise the whole block falls back to a paragraph. 2. The rows were missing leading/trailing `|` pipes, unlike every other table in the repo. ## How Rewrote the table using the standard pipe-delimited form already used elsewhere in the docs (e.g., `docs/tutorials/index.mdx`). No content changes — the actions and ✅/❌ values are identical to the previous source. ## Test plan - `pnpm run dev` and visit `/batch-changes/permissions-in-batch-changes` - Confirm the "Batch Change access for each permission level" section renders as a real table with three columns (Batch change action / Read / Admin) - Confirm no other pages are affected (only this one file changed) --- .../permissions-in-batch-changes.mdx | 29 +++++++++---------- 1 file changed, 14 insertions(+), 15 deletions(-) diff --git a/docs/batch-changes/permissions-in-batch-changes.mdx b/docs/batch-changes/permissions-in-batch-changes.mdx index 13f233171..892377fd5 100644 --- a/docs/batch-changes/permissions-in-batch-changes.mdx +++ b/docs/batch-changes/permissions-in-batch-changes.mdx @@ -30,21 +30,20 @@ Batch changes can be created under the user's or an organization's namespace. If The following table shows the access for each permission level for a batch change. - **Batch change action** | **Read** | **Admin** - -------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :------: | :-------: -View batch change name and description
(Also shows input branch name, create/update dates, and batch change status) | ✅ | ✅ -View burndown chart (aggregate changeset statuses over time) | ✅ | ✅ -View list of patches and changesets | ✅ | ✅ -View `diffstat` (aggregate count of added/changed/deleted lines) | ✅ | ✅ -View error messages (related to creating or syncing changesets) | ❌ | ✅ -Edit batch change name, description, and branch name | ❌ | ✅ -Update batch change patches (and changesets on code hosts) | ❌ | ✅ -Publish changesets to code host | ❌ | ✅ -Add/remove existing changesets to/from batch change | ❌ | ✅ -Refresh changeset statuses | ❌ | ✅ -Close batch change | ❌ | ✅ -Delete batch change | ❌ | ✅ +| **Batch change action** | **Read** | **Admin** | +| ----------------------- | :------: | :-------: | +| View batch change name and description
(Also shows input branch name, create/update dates, and batch change status) | ✅ | ✅ | +| View burndown chart (aggregate changeset statuses over time) | ✅ | ✅ | +| View list of patches and changesets | ✅ | ✅ | +| View `diffstat` (aggregate count of added/changed/deleted lines) | ✅ | ✅ | +| View error messages (related to creating or syncing changesets) | ❌ | ✅ | +| Edit batch change name, description, and branch name | ❌ | ✅ | +| Update batch change patches (and changesets on code hosts) | ❌ | ✅ | +| Publish changesets to code host | ❌ | ✅ | +| Add/remove existing changesets to/from batch change | ❌ | ✅ | +| Refresh changeset statuses | ❌ | ✅ | +| Close batch change | ❌ | ✅ | +| Delete batch change | ❌ | ✅ | Authorization for all actions is also subject to [repository From 72ee1a5b7a6316652172c69ffac740545ec4d6d8 Mon Sep 17 00:00:00 2001 From: Enrique Gonzalez Date: Tue, 19 May 2026 09:05:05 -0700 Subject: [PATCH 099/217] Update docs latest version to 7.3 (#1773) ## Summary - Set DOCS_LATEST_VERSION to 7.3 - Add 7.2 and 7.1 to the version selector previous versions - Add a Sourcegraph 7.X section to the legacy versions page ## Test plan - Not run (config/navigation content change only) Co-authored-by: Amp --- docs.config.js | 2 +- docs/legacy.mdx | 8 ++++++++ src/data/versions.ts | 17 ++++++++++++----- 3 files changed, 21 insertions(+), 6 deletions(-) diff --git a/docs.config.js b/docs.config.js index d82726f00..7c5cd3a51 100644 --- a/docs.config.js +++ b/docs.config.js @@ -1,5 +1,5 @@ const config = { - DOCS_LATEST_VERSION: '7.1' + DOCS_LATEST_VERSION: '7.3' }; module.exports = config; diff --git a/docs/legacy.mdx b/docs/legacy.mdx index 83a656790..1371231ab 100644 --- a/docs/legacy.mdx +++ b/docs/legacy.mdx @@ -4,6 +4,14 @@ Find versioned documentation for previous versions of Sourcegraph below.

+ + +- [7.2](https://7.2.sourcegraph.com) +- [7.1](https://7.1.sourcegraph.com) +- [7.0](https://7.0.sourcegraph.com) + + + - [6.12](https://6.12.sourcegraph.com) diff --git a/src/data/versions.ts b/src/data/versions.ts index 2e0a15a2b..f15188926 100644 --- a/src/data/versions.ts +++ b/src/data/versions.ts @@ -13,11 +13,18 @@ export const versions: VersionI[] = [ label: 'latest', url: '/docs' }, - { - name: 'v7.0', - url: 'https://7.0.sourcegraph.com' - }, - + { + name: 'v7.2', + url: 'https://7.2.sourcegraph.com' + }, + { + name: 'v7.1', + url: 'https://7.1.sourcegraph.com' + }, + { + name: 'v7.0', + url: 'https://7.0.sourcegraph.com' + }, { name: 'v6.12', url: 'https://6.12.sourcegraph.com' From 3d627505682bd6d0f62e579d59330c49610c576d Mon Sep 17 00:00:00 2001 From: Robert Lin Date: Tue, 19 May 2026 13:46:43 -0700 Subject: [PATCH 100/217] docs: add smart hover summaries to entitlements (#1772) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## Summary - Updates the entitlements page to list smart hover summaries alongside Deep Search as a supported feature. - Adds a "Managing usage" section to the smart hover summaries page linking to the entitlements docs, mirroring the pattern used on the Deep Search page. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-authored-by: Claude Sonnet 4.6 --- docs/admin/entitlements.mdx | 4 ++-- docs/code-navigation/smart-hover.mdx | 6 ++++++ 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/docs/admin/entitlements.mdx b/docs/admin/entitlements.mdx index 950967718..01b3e1fd0 100644 --- a/docs/admin/entitlements.mdx +++ b/docs/admin/entitlements.mdx @@ -11,8 +11,8 @@ Entitlements can be set as a global default: default entitlements are granted to Each entitlement has a detailed usage view to help administrators understand how users are using the entitlement, and reset entitlement usage for specific users. - Entitlements currently only support [Deep Search](/deep-search), but we may - support other features in the future. If you would like to request + Entitlements currently support [Deep Search](/deep-search) and [smart hover + summaries](/code-navigation/smart-hover). If you would like to request entitlement support for a feature, please reach out at support@sourcegraph.com. diff --git a/docs/code-navigation/smart-hover.mdx b/docs/code-navigation/smart-hover.mdx index ea99e8063..7ecb329d3 100644 --- a/docs/code-navigation/smart-hover.mdx +++ b/docs/code-navigation/smart-hover.mdx @@ -20,6 +20,12 @@ Summaries are powered by a small, fast model, but only compiler-grade precise co Smart hover summaries are a [Beta feature](/beta-and-experimental) and free while the feature is in Beta. The feature may become [billable with credits](/beta-and-experimental#credits-and-billing) once it becomes generally available. At least 30 days notice will be given before such a change goes into effect. +## Managing usage + +Sourcegraph administrators can configure entitlements for their users to control smart hover summary usage in `/site-admin/entitlements`. + +To learn more, refer to [Entitlements](/admin/entitlements). + ## Feedback Please share feedback on this feature with us at [feedback@sourcegraph.com](mailto:feedback@sourcegraph.com) or via your customer success manager. From 38c5db0b60e3c5662cfffbc89e26709dd3db6594 Mon Sep 17 00:00:00 2001 From: Gabe Torres <69164745+gabtorre@users.noreply.github.com> Date: Wed, 20 May 2026 10:20:12 -0700 Subject: [PATCH 101/217] docs: document batch_changes:read permission (#1775) Fix broken markdown table and replace 'Coming soon!' placeholder with description of the now-GA batch_changes:read permission --- docs/admin/access-control/batch-changes.mdx | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/docs/admin/access-control/batch-changes.mdx b/docs/admin/access-control/batch-changes.mdx index bd4c29481..907cf71f4 100644 --- a/docs/admin/access-control/batch-changes.mdx +++ b/docs/admin/access-control/batch-changes.mdx @@ -2,8 +2,7 @@ Granular controls for who can access [Batch Changes](/batch-changes/) can be configured by site admins by tuning the roles assigned to users and the permissions granted to those roles. This page describes the permission types available for Batch Changes, and whether they are granted by default to the **User** [system role](/admin/access-control#system-roles). All permissions are granted to the **Site Administrator** system role by default. - Name | Description | Granted to **User** by default? - ---------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :-----------------------------: -`batch_changes:read` | **_Coming soon!_** | ✓ -`batch_changes:write` |
  • User can create, update, close, or delete batch changes.
  • User can create, execute, and apply batch specs.
  • User can perform bulk operations on changesets such as publishing, commenting on, closing, or merging them.
| ✓ +| Name | Description | Granted to **User** by default? | +| --------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :-----------------------------: | +| `batch_changes:read` |
  • User can view batch changes, changesets, and batch specs.
  • User can view bulk operations and batch spec workspaces.
| ✓ | +| `batch_changes:write` |
  • User can create, update, close, or delete batch changes.
  • User can create, execute, and apply batch specs.
  • User can perform bulk operations on changesets such as publishing, commenting on, closing, or merging them.
| ✓ | From 4efc14c888a979dbcd39fd0d613d5703c06b467c Mon Sep 17 00:00:00 2001 From: Warren Gifford Date: Fri, 22 May 2026 15:08:45 -0700 Subject: [PATCH 102/217] chore/platform: deprecate pure docker deployment (#1777) closes PLAT-668 As seen on title. --- docs/admin/pings.mdx | 2 +- docs/code-navigation/troubleshooting.mdx | 2 +- docs/self-hosted/http-https-configuration.mdx | 5 - docs/self-hosted/index.mdx | 1 - docs/self-hosted/updates/index.mdx | 1 - docs/self-hosted/updates/pure-docker.mdx | 754 ------------------ src/data/redirects.ts | 6 +- 7 files changed, 5 insertions(+), 766 deletions(-) delete mode 100644 docs/self-hosted/updates/pure-docker.mdx diff --git a/docs/admin/pings.mdx b/docs/admin/pings.mdx index 66a13c1e4..68b102c76 100644 --- a/docs/admin/pings.mdx +++ b/docs/admin/pings.mdx @@ -18,7 +18,7 @@ Sourcegraph aggregates usage and performance metrics for some product features i - The IP address of the instance (e.g. "172.xx.xx.xx") - Sourcegraph version string (e.g. "vX.X.X") - Dependency versions (e.g. "6.0.9" for Redis, or "13.0" for Postgres) -- Deployment type (single Docker image, Docker Compose, Kubernetes cluster, Helm, or pure Docker cluster) +- Deployment type (single Docker image, Docker Compose, Kubernetes cluster, Helm) - License key associated with your Sourcegraph Enterprise subscription - Aggregate count of current monthly users - Total count of existing user accounts diff --git a/docs/code-navigation/troubleshooting.mdx b/docs/code-navigation/troubleshooting.mdx index 3fa74214a..5d726039a 100644 --- a/docs/code-navigation/troubleshooting.mdx +++ b/docs/code-navigation/troubleshooting.mdx @@ -32,7 +32,7 @@ Before bringing a code navigation issue to the engineering team, the site-admin The following details should always be supplied. - The Sourcegraph instance version -- The Sourcegraph instance deployment type (e.g. server, pure-docker, docker-compose, k8s) +- The Sourcegraph instance deployment type (e.g. server, docker-compose, k8s) - The memory, cpu, and disk resources allocated to the following containers: - frontend - precise-code-intel-worker diff --git a/docs/self-hosted/http-https-configuration.mdx b/docs/self-hosted/http-https-configuration.mdx index 6580d6cd0..8c954c2af 100644 --- a/docs/self-hosted/http-https-configuration.mdx +++ b/docs/self-hosted/http-https-configuration.mdx @@ -5,7 +5,6 @@ Overview: - [Single Docker image (`sourcegraph/server`): NGINX](#sourcegraph-single-instance-docker) - [Sourcegraph Cluster (Kubernetes): NGINX](#sourcegraph-cluster-kubernetes) - [Docker Compose: Caddy 2](#sourcegraph-via-docker-compose-caddy-2) -- [Other Sourcegraph clusters (e.g. pure-docker)](#other-sourcegraph-clusters-e-g-pure-docker) ## Sourcegraph single Docker image and Sourcegraph Cluster (Kubernetes): NGINX @@ -205,8 +204,4 @@ In your [docker-compose.yaml](https://github.com/sourcegraph/deploy-sourcegraph- **NOTE**: When adding your certs to your instance, make sure they are in the `deploy-sourcegraph-docker` folder, not outside of it. They will not be recognized otherwise. -## Other Sourcegraph clusters (e.g. pure-Docker) -NGINX is not included in the [pure-Docker deployment](https://github.com/sourcegraph/deploy-sourcegraph-docker) as it's designed to be minimal and not tied to any specific reverse proxy. - -If NGINX is your preferred reverse proxy, we suggest using [the official NGINX docker images](https://hub.docker.com/_/nginx) and following their instructions for [securing HTTP traffic with a proxied server](https://docs.nginx.com/nginx/admin-guide/security-controls/securing-http-traffic-upstream/). diff --git a/docs/self-hosted/index.mdx b/docs/self-hosted/index.mdx index 4522aba76..1f66d8eda 100644 --- a/docs/self-hosted/index.mdx +++ b/docs/self-hosted/index.mdx @@ -35,7 +35,6 @@ Get started running Sourcegraph on-prem. - [Upgrade Overview](/self-hosted/updates/) - [Docker Compose upgrades](https://sourcegraph.com/changelog/self-hosted/docker-compose) - [Kubernetes upgrades](https://sourcegraph.com/changelog/self-hosted/kubernetes) -- [Pure Docker upgrades](/self-hosted/updates/pure-docker) - [Migrator](/self-hosted/updates/migrator/) - [Upgrading PostgreSQL](/self-hosted/postgres#upgrading-postgresql) diff --git a/docs/self-hosted/updates/index.mdx b/docs/self-hosted/updates/index.mdx index 0ce30230f..404660cf9 100644 --- a/docs/self-hosted/updates/index.mdx +++ b/docs/self-hosted/updates/index.mdx @@ -128,7 +128,6 @@ If your instance has schema drift or unfinished oob migrations you may need to a - **Single-container Sourcegraph with Docker (removed in 7.0.0)** - The single-container deployment mode has been sunset. [Migrate to Docker Compose](/self-hosted/deploy/docker-compose/migrate) or [Kubernetes](/self-hosted/deploy/kubernetes/). - [Upgrade Notes](https://sourcegraph.com/changelog/self-hosted/server) -- [**Pure-docker custom deployments**](/self-hosted/updates/pure-docker) - [**Sourcegraph AWS AMI instances**](/self-hosted/deploy/machine-images/aws-ami#upgrade) *(deprecated — sunset in 7.0.0)* ## Other helpful links diff --git a/docs/self-hosted/updates/pure-docker.mdx b/docs/self-hosted/updates/pure-docker.mdx deleted file mode 100644 index ab38230cd..000000000 --- a/docs/self-hosted/updates/pure-docker.mdx +++ /dev/null @@ -1,754 +0,0 @@ -# Updating a pure-Docker Sourcegraph cluster - -> WARNING: **The pure-Docker deployment type is planned for deprecation.** We recommend migrating to a supported deployment method such as [Docker Compose](/self-hosted/deploy/docker-compose) or [Kubernetes](/self-hosted/deploy/kubernetes). If you have questions or need assistance with migration, please [contact support](https://sourcegraph.com/contact). - -This document describes the exact changes needed to update a [pure-Docker Sourcegraph cluster](https://github.com/sourcegraph/deploy-sourcegraph-docker). -Each section comprehensively describes the changes needed in Docker images, environment variables, and added/removed services. **Always refer to this page before upgrading Sourcegraph,** as it comprehensively describes the steps needed to upgrade, and any manual migration steps you must perform. - -1. Read our [update policy](/self-hosted/updates/#update-policy) to learn about Sourcegraph updates. -2. Find the relevant entry for your update in the update notes on this page. **If the notes indicate a patch release exists, target the highest one.** - -## Unreleased - -## v6.2.2553 - -### Known issues - -Customers running Sourcegraph versions prior to v6.2.2553 and using the Sourcegraph provided PostgreSQL containers may encounter PostgreSQL collation version mismatch warnings after upgrading to more recent Sourcegraph versions due to an underlying glibc version update. - -When logging into the database via psql or similar tools you may see the following warning: - -```shell -WARNING: database "sg" has a collation version mismatch DETAIL: The database was created using collation version 2.40, but the operating system provides version 2.41. -``` - -Mismatched collation versions can lead to database index corruption if left unchecked. - -Affected Services - -- pgsql container -- codeintel-db container -- codeinsights-db container - -Only self-hosted customers using the Sourcegraph provided PostgreSQL container images are affected. - -Self-hosted customers using external databases, such as AWS RDS, GCP CloudSQL, or another self-managed solution are NOT affected. - -See our [PostgreSQL Collation Version Mismatch Resolution](/self-hosted/postgresql-collation-version-mismatch-resolution) notes for more details. - -## v5.2.6 ➔ v5.2.7 - -As a template, perform the same actions as the following diff in your own deployment: [`Upgrade to v5.2.7`](https://github.com/sourcegraph/deploy-sourcegraph-docker/compare/v5.2.6...v5.2.7) - -For non-standard replica builds: - -- [`Customer Replica 1: ➔ v5.2.7`](https://github.com/sourcegraph/deploy-sourcegraph-docker-customer-replica-1/compare/v5.2.6...v5.2.7) - -#### Notes: - -## v5.2.5 ➔ v5.2.6 - -As a template, perform the same actions as the following diff in your own deployment: [`Upgrade to v5.2.6`](https://github.com/sourcegraph/deploy-sourcegraph-docker/compare/v5.2.5...v5.2.6) - -For non-standard replica builds: - -- [`Customer Replica 1: ➔ v5.2.6`](https://github.com/sourcegraph/deploy-sourcegraph-docker-customer-replica-1/compare/v5.2.5...v5.2.6) - -#### Notes: - -## v5.2.4 ➔ v5.2.5 - -As a template, perform the same actions as the following diff in your own deployment: [`Upgrade to v5.2.5`](https://github.com/sourcegraph/deploy-sourcegraph-docker/compare/v5.2.4...v5.2.5) -For non-standard replica builds: - -- [`Customer Replica 1: ➔ v5.2.5`](https://github.com/sourcegraph/deploy-sourcegraph-docker-customer-replica-1/compare/v5.2.4...v5.2.5) - -#### Notes: - -## v5.2.3 ➔ v5.2.4 - -As a template, perform the same actions as the following diff in your own deployment: [`Upgrade to v5.2.4`](https://github.com/sourcegraph/deploy-sourcegraph-docker/compare/v5.2.3...v5.2.4) -For non-standard replica builds: - -- [`Customer Replica 1: ➔ v5.2.4`](https://github.com/sourcegraph/deploy-sourcegraph-docker-customer-replica-1/compare/v5.2.3...v5.2.4) - -#### Notes: - -## v5.2.2 ➔ v5.2.3 - -As a template, perform the same actions as the following diff in your own deployment: [`Upgrade to v5.2.3`](https://github.com/sourcegraph/deploy-sourcegraph-docker/compare/v5.2.2...v5.2.3) - -For non-standard replica builds: - -- [`Customer Replica 1: ➔ v5.2.3`](https://github.com/sourcegraph/deploy-sourcegraph-docker-customer-replica-1/compare/v5.2.2...v5.2.3) - -#### Notes: - -## v5.2.1 ➔ v5.2.2 - -As a template, perform the same actions as the following diff in your own deployment: [`Upgrade to v5.2.2`](https://github.com/sourcegraph/deploy-sourcegraph-docker/compare/v5.2.1...v5.2.2) - -For non-standard replica builds: - -- [`Customer Replica 1: ➔ v5.2.2`](https://github.com/sourcegraph/deploy-sourcegraph-docker-customer-replica-1/compare/v5.2.1...v5.2.2) - -#### Notes: - -## v5.2.0 ➔ v5.2.1 - -As a template, perform the same actions as the following diff in your own deployment: [`Upgrade to v5.2.1`](https://github.com/sourcegraph/deploy-sourcegraph-docker/compare/v5.2.0...v5.2.1) - -For non-standard replica builds: - -- [`Customer Replica 1: ➔ v5.2.1`](https://github.com/sourcegraph/deploy-sourcegraph-docker-customer-replica-1/compare/v5.2.0...v5.2.1) - -#### Notes: - -## v5.1.9 ➔ v5.2.0 - -As a template, perform the same actions as the following diff in your own deployment: [`Upgrade to v5.2.0`](https://github.com/sourcegraph/deploy-sourcegraph-docker/compare/v5.1.9...v5.2.0) - -For non-standard replica builds: - -- [`Customer Replica 1: ➔ v5.2.0`](https://github.com/sourcegraph/deploy-sourcegraph-docker-customer-replica-1/compare/v5.1.9...v5.2.0) - -#### Notes: - -## v5.1.8 ➔ v5.1.9 - -As a template, perform the same actions as the following diff in your own deployment: [`Upgrade to v5.1.9`](https://github.com/sourcegraph/deploy-sourcegraph-docker/compare/v5.1.8...v5.1.9) - -For non-standard replica builds: - -- [`Customer Replica 1: ➔ v5.1.9`](https://github.com/sourcegraph/deploy-sourcegraph-docker-customer-replica-1/compare/v5.1.8...v5.1.9) - -#### Notes: - -## v5.1.7 ➔ v5.1.8 - -As a template, perform the same actions as the following diff in your own deployment: [`Upgrade to v5.1.8`](https://github.com/sourcegraph/deploy-sourcegraph-docker/compare/v5.1.7...v5.1.8) - -For non-standard replica builds: - -- [`Customer Replica 1: ➔ v5.1.8`](https://github.com/sourcegraph/deploy-sourcegraph-docker-customer-replica-1/compare/v5.1.7...v5.1.8) - -#### Notes: - -## v5.1.6 ➔ v5.1.7 - -As a template, perform the same actions as the following diff in your own deployment: [`Upgrade to v5.1.7`](https://github.com/sourcegraph/deploy-sourcegraph-docker/compare/v5.1.6...v5.1.7) - -For non-standard replica builds: - -- [`Customer Replica 1: ➔ v5.1.7`](https://github.com/sourcegraph/deploy-sourcegraph-docker-customer-replica-1/compare/v5.1.6...v5.1.7) - -#### Notes: - -## v5.1.5 ➔ v5.1.6 - -As a template, perform the same actions as the following diff in your own deployment: [`Upgrade to v5.1.6`](https://github.com/sourcegraph/deploy-sourcegraph-docker/compare/v5.1.5...v5.1.6) - -For non-standard replica builds: - -- [`Customer Replica 1: ➔ v5.1.6`](https://github.com/sourcegraph/deploy-sourcegraph-docker-customer-replica-1/compare/v5.1.5...v5.1.6) - -#### Notes: - -## v5.1.4 ➔ v5.1.5 - -As a template, perform the same actions as the following diff in your own deployment: [`Upgrade to v5.1.5`](https://github.com/sourcegraph/deploy-sourcegraph-docker/compare/v5.1.4...v5.1.5) - -For non-standard replica builds: - -- [`Customer Replica 1: ➔ v5.1.5`](https://github.com/sourcegraph/deploy-sourcegraph-docker-customer-replica-1/compare/v5.1.4...v5.1.5) - -#### Notes: - -## v5.1.3 ➔ v5.1.4 - -As a template, perform the same actions as the following diff in your own deployment: [`Upgrade to v5.1.4`](https://github.com/sourcegraph/deploy-sourcegraph-docker/compare/v5.1.3...v5.1.4) - -For non-standard replica builds: - -- [`Customer Replica 1: ➔ v5.1.4`](https://github.com/sourcegraph/deploy-sourcegraph-docker-customer-replica-1/compare/v5.1.3...v5.1.4) - -#### Notes: - -## v5.1.2 ➔ v5.1.3 - -As a template, perform the same actions as the following diff in your own deployment: [`Upgrade to v5.1.3`](https://github.com/sourcegraph/deploy-sourcegraph-docker/compare/v5.1.2...v5.1.3) - -For non-standard replica builds: - -- [`Customer Replica 1: ➔ v5.1.3`](https://github.com/sourcegraph/deploy-sourcegraph-docker-customer-replica-1/compare/v5.1.2...v5.1.3) - -#### Notes: - -## v5.1.1 ➔ v5.1.2 - -As a template, perform the same actions as the following diff in your own deployment: [`Upgrade to v5.1.2`](https://github.com/sourcegraph/deploy-sourcegraph-docker/compare/v5.1.1...v5.1.2) - -For non-standard replica builds: - -- [`Customer Replica 1: ➔ v5.1.2`](https://github.com/sourcegraph/deploy-sourcegraph-docker-customer-replica-1/compare/v5.1.1...v5.1.2) - -#### Notes: - -## v5.1.0 ➔ v5.1.1 - -As a template, perform the same actions as the following diff in your own deployment: [`Upgrade to v5.1.1`](https://github.com/sourcegraph/deploy-sourcegraph-docker/compare/v5.1.0...v5.1.1) - -For non-standard replica builds: - -- [`Customer Replica 1: ➔ v5.1.1`](https://github.com/sourcegraph/deploy-sourcegraph-docker-customer-replica-1/compare/v5.1.0...v5.1.1) - -#### Notes: - -## v5.0.6 ➔ v5.1.0 - -As a template, perform the same actions as the following diff in your own deployment: [`Upgrade to v5.1.0`](https://github.com/sourcegraph/deploy-sourcegraph-docker/compare/v5.0.6...v5.1.0) - -For non-standard replica builds: - -- [`Customer Replica 1: ➔ v5.1.0`](https://github.com/sourcegraph/deploy-sourcegraph-docker-customer-replica-1/compare/v5.0.6...v5.1.0) - -#### Notes: - -## v5.0.5 ➔ v5.0.6 - -As a template, perform the same actions as the following diff in your own deployment: [`Upgrade to v5.0.6`](https://github.com/sourcegraph/deploy-sourcegraph-docker/compare/v5.0.5...v5.0.6) - -For non-standard replica builds: - -- [`Customer Replica 1: ➔ v5.0.6`](https://github.com/sourcegraph/deploy-sourcegraph-docker-customer-replica-1/compare/v5.0.5...v5.0.6) - -#### Notes: - -## v5.0.4 ➔ v5.0.5 - -As a template, perform the same actions as the following diff in your own deployment: [`Upgrade to v5.0.5`](https://github.com/sourcegraph/deploy-sourcegraph-docker/compare/v5.0.4...v5.0.5) - -For non-standard replica builds: - -- [`Customer Replica 1: ➔ v5.0.5`](https://github.com/sourcegraph/deploy-sourcegraph-docker-customer-replica-1/compare/v5.0.4...v5.0.5) - -#### Notes: - -## v5.0.3 ➔ v5.0.4 - -As a template, perform the same actions as the following diff in your own deployment: [`Upgrade to v5.0.4`](https://github.com/sourcegraph/deploy-sourcegraph-docker/compare/v5.0.3...v5.0.4) - -For non-standard replica builds: - -- [`Customer Replica 1: ➔ v5.0.4`](https://github.com/sourcegraph/deploy-sourcegraph-docker-customer-replica-1/compare/v5.0.3...v5.0.4) - -#### Notes: - -## v5.0.2 ➔ v5.0.3 - -As a template, perform the same actions as the following diff in your own deployment: [`Upgrade to v5.0.3`](https://github.com/sourcegraph/deploy-sourcegraph-docker/compare/v5.0.2...v5.0.3) - -For non-standard replica builds: - -- [`Customer Replica 1: ➔ v5.0.3`](https://github.com/sourcegraph/deploy-sourcegraph-docker-customer-replica-1/compare/v5.0.2...v5.0.3) - -#### Notes: - -## v5.0.1 ➔ v5.0.2 - -As a template, perform the same actions as the following diff in your own deployment: [`Upgrade to v5.0.2`](https://github.com/sourcegraph/deploy-sourcegraph-docker/compare/v5.0.1...v5.0.2) - -For non-standard replica builds: - -- [`Customer Replica 1: ➔ v5.0.2`](https://github.com/sourcegraph/deploy-sourcegraph-docker-customer-replica-1/compare/v5.0.1...v5.0.2) - -#### Notes: - -## v5.0.0 ➔ v5.0.1 - -As a template, perform the same actions as the following diff in your own deployment: [`Upgrade to v5.0.1`](https://github.com/sourcegraph/deploy-sourcegraph-docker/compare/v5.0.0...v5.0.1) - -For non-standard replica builds: - -- [`Customer Replica 1: ➔ v5.0.1`](https://github.com/sourcegraph/deploy-sourcegraph-docker-customer-replica-1/compare/v5.0.0...v5.0.1) - -#### Notes: - -## v4.5.1 ➔ v5.0.0 - -As a template, perform the same actions as the following diff in your own deployment: [`Upgrade to v5.0.0`](https://github.com/sourcegraph/deploy-sourcegraph-docker/compare/v4.5.1...v5.0.0) - -For non-standard replica builds: - -- [`Customer Replica 1: ➔ v5.0.0`](https://github.com/sourcegraph/deploy-sourcegraph-docker-customer-replica-1/compare/v4.5.1...v5.0.0) - -#### Notes: - -## v4.5.0 ➔ v4.5.1 - -As a template, perform the same actions as the following diff in your own deployment: [`Upgrade to v4.5.1`](https://github.com/sourcegraph/deploy-sourcegraph-docker/compare/v4.5.0...v4.5.1) - -For non-standard replica builds: - -- [`Customer Replica 1: ➔ v4.5.1`](https://github.com/sourcegraph/deploy-sourcegraph-docker-customer-replica-1/compare/v4.5.0...v4.5.1) - -#### Notes: - -## v4.4.2 ➔ v4.5.0 - -As a template, perform the same actions as the following diff in your own deployment: [`Upgrade to v4.5.0`](https://github.com/sourcegraph/deploy-sourcegraph-docker/compare/v4.4.2...v4.5.0) - -For non-standard replica builds: - -- [`Customer Replica 1: ➔ v4.5.0`](https://github.com/sourcegraph/deploy-sourcegraph-docker-customer-replica-1/compare/v4.4.2...v4.5.0) - -#### Notes: - -- This release introduces a background job that will convert all LSIF data into SCIP. **This migration is irreversible** and a rollback from this version may result in loss of precise code intelligence data. Please see the [migration notes](/admin/how-to/lsif-scip-migration) for more details. - -## v4.4.1 ➔ v4.4.2 - -As a template, perform the same actions as the following diff in your own deployment: [`Upgrade to v4.4.2`](https://github.com/sourcegraph/deploy-sourcegraph-docker/compare/v4.4.1...v4.4.2) - -For non-standard replica builds: - -- [`Customer Replica 1: ➔ v4.4.2`](https://github.com/sourcegraph/deploy-sourcegraph-docker-customer-replica-1/compare/v4.4.1...v4.4.2) - -#### Notes: - -## v4.4.0 ➔ v4.4.1 - -As a template, perform the same actions as the following diffs in your own deployment: - -- [`➔ v4.4.1`](https://github.com/sourcegraph/deploy-sourcegraph-docker/commit/9f597b9fb42ea1a170e4456e57e4340d3f722e65) -- - -## v4.3.1 ➔ v4.4.1 - -As a template, perform the same actions as the following diffs in your own deployment: - -- [`➔ v4.4.0`](https://github.com/sourcegraph/deploy-sourcegraph-docker/commit/8cdeb7616b73e100aec41806b1118264fea0615d) -- Users attempting a multi-version upgrade to v4.4.0 may be affected by a bug in which an outdated schema migration is included in the upgrade process. _This issue is fixed in patch v4.4.2_ - - - The error will be encountered while running `upgrade`, and contains the following text: `"frontend": failed to apply migration 1648115472`. - - To resolve this issue run migrator with the args `'add-log', '-db=frontend', '-version=1648115472'`. - - If migrator was stopped while running `upgrade` the next run of upgrade will encounter drift, this drift should be disregarded by providing migrator with the `--skip-drift-check` flag. - -## v4.2 ➔ v4.3.1 - -As a template, perform the same actions as the following diffs in your own deployment: - -- [`➔ v4.3.1`](https://github.com/sourcegraph/deploy-sourcegraph-docker/commit/1a8f9a3d71664bf31a1fae9d2ad99c9074eaebe9) - -## v4.1 ➔ v4.2.1 - -- `minio` has been replaced with `blobstore`. Please see the update notes [here](/self-hosted/how-to/blobstore-update-notes) - -As a template, perform the same actions as the following diffs in your own deployment: - -- [`➔ v4.2.0`](https://github.com/sourcegraph/deploy-sourcegraph-docker/commit/a2bd81af53c8b8ad5b0d69e7857945a1f96e331f) - -## v4.0 ➔ v4.1.3 - -As a template, perform the same actions as the following diffs in your own deployment: - -- [`➔ v4.1.0`](https://github.com/sourcegraph/deploy-sourcegraph-docker/commit/c1684d0e613630bbe70bc81693e56c906d8f2d08) - -**Patch releases**: - -- [`v4.1.1`](https://github.com/sourcegraph/deploy-sourcegraph-docker/commit/88523d785a0a2fcf943fca44f8d7be381209f3d7) - -## v3.43 ➔ v4.0 - -As a template, perform the same actions as the following diffs in your own deployment: - -- [`➔ v4.0.0`](https://github.com/sourcegraph/deploy-sourcegraph-docker/commit/916d2f79e04955e5bef2a47dba738d68655f20ac) - -**Patch releases**: - -- [`➔ v4.0.1`](https://github.com/sourcegraph/deploy-sourcegraph-docker/commit/46a3d0652ad6396a99d2c8b601ff362fbcf4a1c3) - -## v3.42 ➔ v3.43 - -As a template, perform the same actions as the following diffs in your own deployment: - -- [`➔ v3.43.0`](https://github.com/sourcegraph/deploy-sourcegraph-docker/commit/94be340c1b0e57c866d2f530c489da4f65d453e2) - -**Patch releases**: - -- `v3.43.1` -- `v3.43.2` - -## v3.41 ➔ v3.42 - -As a template, perform the same actions as the following diffs in your own deployment: - -- [`➔ v3.42.0`](https://github.com/sourcegraph/deploy-sourcegraph-docker/commit/a189e495813bc33d544b302eb98c197d70eacc87) - -**Patch releases**: - -- `v3.42.1` -- `v3.42.2` - -## v3.40 ➔ v3.41 - -As a template, perform the same actions as the following diffs in your own deployment: - -- [`➔ v3.41.0`](https://github.com/sourcegraph/deploy-sourcegraph-docker/commit/8bfd70892c1bf56c5a88db0329826800c7a1097b) - -## v3.39 ➔ v3.40 - -As a template, perform the same actions as the following diffs in your own deployment: - -- [`-> 3.40.0`](https://github.com/sourcegraph/deploy-sourcegraph-docker/commit/2c94a1fb5fa396759d4800a717af6658548943f7) -- [`-> 3.40.2`](https://github.com/sourcegraph/deploy-sourcegraph-docker/commit/312b9f8308148cf9403cc7868eee7b5c9611b121) - -**Patch releases**: - -- `v3.40.1` -- `v3.40.2` - -**Notes**: - -- A fix that corrects the default behavior of the `migrator` service is included in this release. An attempt to standardize CLI packages in v3.39.0 unintentionally - broke the default behavior. In order to guard against this, all command line arguments are explicitly set in the deployment manifest. -- **CAUTION** Added the ability to customize postgres server configuration by mounting external configuration files. If you have customized the config in any way, you should copy your changes to the added `postgresql.conf` files [sourcegraph/deploy-sourcegraph-docker#806](https://github.com/sourcegraph/deploy-sourcegraph-docker/pull/806) - -## v3.38 ➔ v3.39 - -As a template, perform the same actions as the following diffs in your own deployment: - -- [`-> 3.39.0`](https://github.com/sourcegraph/deploy-sourcegraph-docker/commit/b37367c738d28ef7e27c8b1f833eb9355bd9e8b1) -- [`-> 3.39.1`](https://github.com/sourcegraph/deploy-sourcegraph-docker/commit/c2450311e385f077679d7666c09fd5a2aa7a6b6e) - -**Patch releases**: - -- `v3.39.1` - -**Notes**: - -- In this release we need to remove timescaledb from `shared_preload_libraries` configuration in `codeinsights-db`'s `postgresql.conf`. This step will be [performed automatically](https://github.com/sourcegraph/deploy-sourcegraph-docker/commit/b37367c738d28ef7e27c8b1f833eb9355bd9e8b1#diff-916162e35509bb582798c4306953fec9f43779d82420cb4435576e2873869f78R17). It can be performed manually instead of run as part of the deploy script. - -## v3.37 ➔ v3.38 - -As a template, perform the same actions as the following diffs in your own deployment: - -- [`➔ v3.38.0`](https://github.com/sourcegraph/deploy-sourcegraph-docker/commit/a66a74ce9a120a9da743eb44c6fea3a55f51842a) -- [`➔ v3.38.1`](https://github.com/sourcegraph/deploy-sourcegraph-docker/commit/19735936834aab31134888c179bf07387f09a647) - -**Patch releases**: - -- `v3.38.1` - -**Notes**: - -- This release adds the requirement that the environment variables `SRC_GIT_SERVERS`, `SEARCHER_URL`, `SYMBOLS_URL`, and `INDEXED_SEARCH_SERVERS` are set for the worker process. - -## v3.36 ➔ v3.37 - -As a template, perform the same actions as the following diffs in your own deployment: - -- [`➔ v3.37.0`](https://github.com/sourcegraph/deploy-sourcegraph-docker/commit/9e369ec86cdef50b9e2a8350040d011cf2c7cd49) - -**Notes**: - -- This release adds a new container that runs database migrations (`migrator`) independently of the frontend container. Confirm the environment variables on this new container match your database settings. - -## v3.35 ➔ v3.36 - -As a template, perform the same actions as the following diffs in your own deployment: - -- [`➔ v3.36.1`](https://github.com/sourcegraph/deploy-sourcegraph-docker/commit/25cdf1858de7fe3d0a3e3479a7e5620a02ac6a2c) -- [`➔ v3.36.2`](https://github.com/sourcegraph/deploy-sourcegraph-docker/commit/45946fd69dd061cb39c85cfd06a037aeeaf74808) -- [`➔ v3.36.3`](https://github.com/sourcegraph/deploy-sourcegraph-docker/commit/3273d3c7da750ff15ba9d4f24d1e09e835bf11d9) - -**Patch releases**: - -- `v3.36.1` -- `v3.36.3` -- `v3.36.3` - -## v3.34 ➔ v3.35 - -As a template, perform the same actions as the following diffs in your own deployment: - -- [`➔ v3.35.0`](https://github.com/sourcegraph/deploy-sourcegraph-docker/commit/33b076a123c23930cc3339167bdd5502bebc5a3c) -- [`➔ v3.35.1`](https://github.com/sourcegraph/deploy-sourcegraph-docker/commit/ba0d94eb945fd3371ed888e4b7177828b33acd3d) -- [`➔ v3.35.2`](https://github.com/sourcegraph/deploy-sourcegraph-docker/commit/abc948e60a489f559ebd5cc8f0affcd3c4371fa4) - -**Patch releases**: - -- `v3.35.1` -- `v3.35.2` - -**Notes**: - -- The `query-runner` service has been decomissioned in the 3.35.0 release. You can safely remove the `query-runner` service from your installation. -- There is a [known issue](/code-insights/how-tos/Troubleshooting#oob-migration-has-made-progress-but-is-stuck-before-reaching-100) with the Code Insights out-of-band settings migration not reaching 100% complete when encountering deleted users or organizations. - -## v3.33 ➔ v3.34 - -As a template, perform the same actions as the following diffs in your own deployment: - -- [`➔ v3.34.2`](https://github.com/sourcegraph/deploy-sourcegraph-docker/commit/d615dd5f63ec0984d60076aecf0bc598d9ffc1a8) - -**Patch releases**: - -- `v3.34.1` -- `v3.34.2` - -## v3.32 ➔ v3.33 - -As a template, perform the same actions as the following diffs in your own deployment: - -- [`➔ v3.33.0`](https://github.com/sourcegraph/deploy-sourcegraph-docker/commit/f6dc5c4a859b09faaea44a34e3ba8e85c92fcf58) - -## v3.31 ➔ v3.32 - -As a template, perform the same actions as the following diffs in your own deployment: - -- [`➔ v3.32.0`](https://github.com/sourcegraph/deploy-sourcegraph-docker/commit/2c4c283ae9f89fa48232f0b99ed1982008034fee) - -## v3.30 ➔ v3.31 - -> WARNING: **This upgrade must originate from `v3.30.3`.** - -**Notes**: - -- The **built-in** main Postgres (`pgsql`) and codeintel (`codeintel-db`) databases have switched to an alpine-based Docker image. Upon upgrading, Sourcegraph will need to re-index the entire database. - -## v3.29 ➔ v3.30 - -> WARNING: **If you have already upgraded to 3.30.0, 3.30.1, or 3.30.2** please see the rebuild corrupt postgres indexes guide for recovery steps. - -As a template, perform the same actions as the following diffs in your own deployment: - -- [`➔ v3.30.0`](https://github.com/sourcegraph/deploy-sourcegraph-docker/commit/63802ca5966754162c2b3e077e64e60687138874) - -**Patch releases**: - -- `v3.30.1` -- `v3.30.2` -- `v3.30.3` - -## v3.28 ➔ v3.29 - -As a template, perform the same actions as the following diffs in your own deployment: - -- [`➔ v3.29.1`](https://github.com/sourcegraph/deploy-sourcegraph-docker/commit/940100429fdd59f930436d47e226f5a7116bf6d9) - -**Patch releases**: - -- `v3.29.1` - -**Notes**: - -- This upgrade adds a new `worker` service that runs a number of background jobs that were previously run in the `frontend` service. See [notes on deploying workers](/self-hosted/workers#deploying-workers) for additional details. Good initial values for CPU and memory resources allocated to this new service should match the `frontend` service. - -## v3.27 ➔ v3.28 - -As a template, perform the same actions as the following diffs in your own deployment: - -- [`➔ v3.28.0`](https://github.com/sourcegraph/deploy-sourcegraph-docker/commit/fa9bd6b4749697e09a4a74537e180e8331d84a5b) - -## v3.26 ➔ v3.27 - -> WARNING: Sourcegraph 3.27 now requires **Postgres 12+**. - -As a template, perform the same actions as the following diffs in your own deployment: - -- [`➔ v3.27.4`](https://github.com/sourcegraph/deploy-sourcegraph-docker/commit/1d01302a86d219a0f00f6dcbd27d4a511581ff27) - -**Patch releases**: - -- `v3.27.1` -- `v3.27.2` -- `v3.27.3` -- `v3.27.4` - -**Notes**: - -- If you are using an external database, [upgrade your database](/self-hosted/postgres#upgrading-external-postgresql-instances) to Postgres 12.5 or above prior to upgrading Sourcegraph. No action is required if you are using the supplied supplied database images. - -## v3.26 ➔ v3.26 - -As a template, perform the same actions as the following diffs in your own deployment: - -- [`➔ v3.26.0`](https://github.com/sourcegraph/deploy-sourcegraph-docker/commit/68ffad230fc6f99477cedd303a55b91a8c4d9acb) -- [`➔ v3.26.2`](https://github.com/sourcegraph/deploy-sourcegraph-docker/commit/de80a4af2ef2eeb23526e3ea560f7f72e1a71a5f) - -**Patch releases**: - -- `v3.26.1` -- `v3.26.2` - -## v3.24 ➔ v3.25 - -As a template, perform the same actions as the following diffs in your own deployment: - -- [`➔ v3.25.0`](https://github.com/sourcegraph/deploy-sourcegraph-docker/commit/ee2cbb59c80a382fb6cc649d4547b044d9a8b28d) - -**Notes**: - -- **If you are connecting to an external Postgres database using SSL/TLS:** Go `1.15` introduced changes to SSL/TLS connection validation which requires certificates to include a `SAN`. This field was not included in older certificates and clients relied on the `CN` field. You might see an error like `x509: certificate relies on legacy Common Name field`. We recommend that customers using Sourcegraph with an external database and connecting to it using SSL/TLS check whether the certificate is up to date. - - AWS RDS customers please reference [AWS' documentation on updating the SSL/TLS certificate](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/UsingWithRDS.SSL-certificate-rotation.html) for steps to rotate your certificate. -- Confirm that `codeinsights-db-disk` has the correct file permissions via the following command. - -```bash -sudo chown -R 999:999 ~/sourcegraph-docker/codeinsights-db-disk/ -``` - -## v3.23 ➔ v3.24 - -As a template, perform the same actions as the following diffs in your own deployment: - -- [`➔ v3.24.0`](https://github.com/sourcegraph/deploy-sourcegraph-docker/commit/4acc4c7ed5d49ce41b1f68d654a3f4e2f35bd622) - -## v3.22 ➔ v3.23 - -As a template, perform the same actions as the following diffs in your own deployment: - -- [`➔ v3.23.0`](https://github.com/sourcegraph/deploy-sourcegraph-docker/commit/10de1a4e34ab2c716bd63e52a68a6af896bd81b7) - -## v3.21 ➔ v3.22 - -As a template, perform the same actions as the following diffs in your own deployment: - -- [`➔ v3.22.0`](https://github.com/sourcegraph/deploy-sourcegraph-docker/commit/223c11dacffafb985c2d29b6c6a9b84bcc8255be) - -**Notes**: - -- This upgrade removes the `code intel bundle manager`. This service has been deprecated and all references to it have been removed. -- This upgrade also adds a MinIO container that doesn't require any custom configuration. You can find more detailed documentation [here](/self-hosted/external-services/object-storage). - -## v3.20 ➔ v3.21 - -As a template, perform the same actions as the following diffs in your own deployment: - -- [`➔ v3.21.2`](https://github.com/sourcegraph/deploy-sourcegraph-docker/commit/4629ddfcdfd070b41801106199817ae903ead510) - -**Patch releases**: - -- `v3.21.1` -- `v3.21.2` - -**Notes\***: - -- This upgrade includes a new code-intel DB (`deploy-codeintel-db.sh`) and a new service `minio` (`deploy-minio.sh`) to store precise code intel indexes. -- There is a new environment variable for frontend and frontend-internal called `CODEINTEL_PGHOST`. - -## v3.19 ➔ v3.20 - -As a template, perform the same actions as the following diffs in your own deployment: - -- [`➔ v3.20.1`](https://github.com/sourcegraph/deploy-sourcegraph-docker/commit/7c57315a1ce05981d436860d79ca01553931e274) - -**Patch releases**: - -- `v3.20.1` - -**Notes**: - -- Confirm that `lsif-server-disk` has the correct file permissions via the following command. - -```bash -sudo chown -R 100:101 ~/sourcegraph-docker/lsif-server-disk/ ~/sourcegraph-docker/lsif-server-disk/ -``` - -## v3.18 ➔ v3.19 - -As a template, perform the same actions as the following diffs in your own deployment: - -- [`➔ v3.19.1`](https://github.com/sourcegraph/deploy-sourcegraph-docker/commit/a1648452c6f7c16637b0e069776df12604c27f73) - -**Patch releases**: - -- `v3.19.1` - -**Notes**: - -- Confirm that `lsif-server-disk` has the correct file permissions via the following command. - -```bash -sudo chown -R 100:101 ~/sourcegraph-docker/lsif-server-disk/ ~/sourcegraph-docker/lsif-server-disk/ -``` - -## v3.17 ➔ v3.18 - -As a template, perform the same actions as the following diffs in your own deployment: - -- [`➔ v3.18.0`](https://github.com/sourcegraph/deploy-sourcegraph-docker/commit/7e6b23cdfead3be639048c5fa7fffe07441610f2) - -**Notes**: - -- `deploy-grafana.sh` and `deploy-prometheus.sh` had environment variables changed, otherwise only image tags have changed. - -## v3.16 ➔ v3.17 - -As a template, perform the same actions as the following diffs in your own deployment: - -- [`➔ v3.17.2`](https://github.com/sourcegraph/deploy-sourcegraph-docker/commit/2895236661de3ff633ee56fe0b87e9a0f530cc60) - -**Patch releases**: - -- `v3.17.2` - -## v3.15 ➔ v3.16 - -As a template, perform the same actions as this [diff](https://github.com/sourcegraph/deploy-sourcegraph-docker/compare/customer-replica-v3.15.1...customer-replica-v3.16.0) in your own deployment. - -**Steps**: - -1. Change `3.15.1` image tags to `3.16.0`. -1. Update `prometheus/prometheus_targets.yml` [as shown here](https://github.com/sourcegraph/deploy-sourcegraph-docker/compare/customer-replica-v3.15.1...customer-replica-v3.16.0#diff-1d4c5a677b37d150c65ea8356cad978a). - -## v3.14 ➔ v3.15 - -**Patch releases**: - -- `v3.15.1` - -**Steps**: - -1. Update environment variables - -- On `frontend` and `frontend-internal` containers, remove the `LSIF_SERVER_URL` environment variable. -- On `frontend` and `frontend-internal` containers, set `PRECISE_CODE_INTEL_API_SERVER_URL=http://precise-code-intel-api-server:3186` -- On all containers, change `JAEGER_AGENT_HOST=jaeger-agent` to `JAEGER_AGENT_HOST=jaeger` - -1. Remove all old container deployments - -- `jaeger-agent` container (`deploy-jaeger-agent.sh`) -- `jaeger-cassandra` container (`deploy-jaeger-cassandra.sh`) -- `jaeger-collector` container (`deploy-jaeger-collector.sh`) -- `jaeger-query` container (`deploy-jaeger-query.sh`) -- `lsif-server` container (`deploy-lsif-server.sh`) - -1. Add new container deployments - -- Add a single `jaeger` container [following this spec](https://github.com/sourcegraph/deploy-sourcegraph-docker/blob/v3.15.1/deploy-jaeger.sh#L1) -- Add a single `precise-code-intel-api-server` container [following this spec](https://github.com/sourcegraph/deploy-sourcegraph-docker/blob/v3.15.1/deploy-precise-code-intel-api-server.sh) -- Add a single `precise-code-intel-bundle-manager` container [following this spec](https://github.com/sourcegraph/deploy-sourcegraph-docker/blob/v3.15.1/deploy-precise-code-intel-bundle-manager.sh) -- Add a single `precise-code-intel-worker` container [following this spec](https://github.com/sourcegraph/deploy-sourcegraph-docker/blob/v3.15.1/deploy-precise-code-intel-worker.sh) - -1. Update prometheus_targets.yml by replacing `lsif-server:3186` with `precise-code-intel-api-server:3186` and replacing `lsif-server:3187` with `precise-code-intel-bundle-manager:3187` -1. Update image tags to `3.15.1`. Change `all sourcegraph/` image tags to `3.15.1`. This includes all images you previously had as `3.14.2` AND all `sourcegraph/` images: - -- `index.docker.io/sourcegraph/grafana:3.15.1` -- `index.docker.io/sourcegraph/prometheus:3.15.1` -- `index.docker.io/sourcegraph/redis-cache:3.15.1` -- `index.docker.io/sourcegraph/redis-store:3.15.1` -- `index.docker.io/sourcegraph/pgsql:3.15.1` - -The following _images_ have been renamed AND use Sourcegraph versions now (their container names and shell script names remain the same for now): - -```diff -- index.docker.io/sourcegraph/syntect_server:c0297a1@sha256:333abb45cfaae9c9d37e576c3853843b00eca33a40a7c71f6b93211ed96528df -+ index.docker.io/sourcegraph/syntax-highlighter:3.15.1 - -- index.docker.io/sourcegraph/zoekt-indexserver:0.0.20200318141948-0b140b7@sha256:b022fd7e4884a71786acae32e0ec8baf785c18350ebf5d574d52335a346364f9 -+ index.docker.io/sourcegraph/search-indexer:3.15.1 - -- index.docker.io/sourcegraph/zoekt-webserver:0.0.20200318141342-0b140b7@sha256:0d0fbce55b51ec7bdd37927539f50459cd0f207b7cf219ca5122d07792012fb1 -+ index.docker.io/sourcegraph/indexed-searcher:3.15.1 -``` diff --git a/src/data/redirects.ts b/src/data/redirects.ts index b164a1e55..abcb9a557 100644 --- a/src/data/redirects.ts +++ b/src/data/redirects.ts @@ -6394,7 +6394,7 @@ const redirectsData = [ }, { source: '/admin/updates/pure_docker', - destination: '/self-hosted/updates/pure_docker', + destination: '/self-hosted/deploy/docker-compose/upgrade', permanent: true }, { @@ -7115,8 +7115,8 @@ const redirectsData = [ permanent: true }, { - source: '/self-hosted/updates/pure_docker', - destination: '/self-hosted/updates/pure-docker', + source: '/self-hosted/updates/pure-docker', + destination: '/self-hosted/deploy/docker-compose/upgrade', permanent: true }, { From 5bd5343c267d5a9348e45c318e6101c4a6f06222 Mon Sep 17 00:00:00 2001 From: federubinstein Date: Tue, 26 May 2026 11:43:43 +0200 Subject: [PATCH 103/217] feat/docs: document user:create outgoing webhook event (#1771) Adds documentation for the new `user:create` outgoing webhook event. Follow-up from PR: https://github.com/sourcegraph/sourcegraph/pull/12425 --- docs/admin/webhooks/outgoing.mdx | 53 ++++++++++++++++++++++++++++++-- 1 file changed, 50 insertions(+), 3 deletions(-) diff --git a/docs/admin/webhooks/outgoing.mdx b/docs/admin/webhooks/outgoing.mdx index 6a742d3c2..2bdc7420a 100644 --- a/docs/admin/webhooks/outgoing.mdx +++ b/docs/admin/webhooks/outgoing.mdx @@ -2,20 +2,20 @@ Outgoing webhooks can be configured on a Sourcegraph instance in order to send Sourcegraph events to external tools and services. This allows for deeper integrations between Sourcegraph and other applications. -Currently, webhooks are only implemented for events related to [Batch Changes](/batch-changes/). They also cannot yet be scoped to specific entities, meaning that they will be triggered for all events of the specified type across Sourcegraph. Expanded support for more event types and scoped events is planned for the future. Please [let us know](mailto:feedback@sourcegraph.com) what types of events you would like to see implemented next, or if you have any other feedback! +Currently, outgoing webhooks cannot yet be scoped to specific entities, meaning that they will be triggered for all events of the specified type across Sourcegraph. Expanded support for more event types and scoped events is planned for the future. Please [let us know](mailto:feedback@sourcegraph.com) what types of events you would like to see implemented next, or if you have any other feedback! > WARNING: Outgoing webhooks have the potential to send sensitive information about your repositories and code to other untrusted services. When configuring outgoing webhooks, be sure to only send events to trusted service URLs and to use the shared secret to verify any requests received. ## Adding an outgoing webhook -1. Navigate to **Site Admin > Configuration > Ougoing webhooks** +1. Navigate to **Site Admin > Configuration > Outgoing webhooks** ![Outgoing webhooks page](https://storage.googleapis.com/sourcegraph-assets/docs/images/administration/config/webhooks/outgoing-webhooks-page.png) 1. Click **+ Create webhook** ![Adding an outgoing webhook](https://storage.googleapis.com/sourcegraph-assets/docs/images/administration/config/webhooks/adding-outgoing-webhook.png) 1. Fill out the form: 1. **URL**: URL endpoint of the external service that Sourcegraph should send webhook events to. 1. **Secret**: An arbitrary secret to share between Sourcegraph and the external service. A default value is provided, but you are free to change it. - 1. **Event types**: The types of [events](#supported-event-types) that will trigger a webhook event. Currently, only events related to Batch Changes are supported. + 1. **Event types**: The types of [events](#supported-event-types) that will trigger a webhook event. 1. Click **Create** The outgoing webhook will now be created and active. To view or edit its details, or to see the log of event requests that have been sent for it, click the **Edit** button on the outgoing webhook's row. @@ -116,3 +116,50 @@ The changeset webhook event payload mirrors the [GraphQL API](/api/graphql/) `Ex "owning_batch_change_id": "QmF0Y2hDaGFuZ2U6MTcz" } ``` + +### User + +- **user:create** - Sent when a Sourcegraph user is created. + +#### Example payload + +The `user:create` webhook event is sent only after successful user creation. Failed user creation attempts do not send the event. + +```json +{ + // The payload schema version. + "version": 1, + "user": { + // The Sourcegraph database ID for the created user. + "database_id": 123, + // The Sourcegraph username for the created user. + "username": "alice", + // The display name, if set. + "display_name": "Alice", + // The avatar URL, if set. + "avatar_url": "https://example.com/avatar.png", + // The user creation timestamp. + "created_at": "2026-05-13T12:00:00Z", + // Whether the created user is a site admin. + "site_admin": false, + // Whether the created user is a service account. + "service_account": false, + // The user's verified email address, if available. + "verified_email": "alice@example.com" + }, + // The Sourcegraph database ID of the user who created this user, if available. + "created_by_user_id": 42, + // Metadata about the external account used to create the user, if available. + "external_account": { + // The external auth or service type. + "service_type": "saml", + // The external auth or service identifier. + "service_id": "https://idp.example.com" + } +} +``` + +- `version` is the payload schema version. Currently, this is `1`. +- `created_by_user_id` is omitted when there is no authenticated Sourcegraph user who created the new user. +- `user.verified_email` is only included when the user's email is verified. +- `external_account` is only included when the user was created through an external account or auth provider path. Its `service_type` may be values such as `saml`, `openidconnect`, or `scim`. From 46fa973f9534dd3e5251d92678113660463a88dc Mon Sep 17 00:00:00 2001 From: Warren Gifford Date: Thu, 4 Jun 2026 21:11:28 -0700 Subject: [PATCH 104/217] docs: add beta warnings for Kubernetes native executor deployment options (#1779) closes PLAT-704 Provide a warning to admins or developers reviewing the k8s-native executors deployment type. These changes are intended to prevent further adoption of a deployment type that may not work with future iteractions sourcegraph and executors --- .../deploy/machine-images/aws-ami.mdx | 2 +- .../deploy/machine-images/aws-oneclick.mdx | 2 +- .../self-hosted/deploy/machine-images/gce.mdx | 2 +- .../executors/deploy-executors-dind.mdx | 8 +++++- .../executors/deploy-executors-kubernetes.mdx | 9 ++++-- .../executors/deploy-executors-terraform.mdx | 28 +++++++++---------- .../executors/deploy-executors.mdx | 8 +++--- docs/self-hosted/executors/index.mdx | 17 +++++++++-- docs/self-hosted/index.mdx | 4 +-- 9 files changed, 52 insertions(+), 28 deletions(-) diff --git a/docs/self-hosted/deploy/machine-images/aws-ami.mdx b/docs/self-hosted/deploy/machine-images/aws-ami.mdx index db537c42d..ad94fdf70 100644 --- a/docs/self-hosted/deploy/machine-images/aws-ami.mdx +++ b/docs/self-hosted/deploy/machine-images/aws-ami.mdx @@ -62,7 +62,7 @@ To configure SSL, and lock down the instance from the public internet, see the [ ### Executors -Executors are supported using [native kubernetes executors](/self-hosted/executors/deploy-executors-kubernetes). +Executors are supported using [native kubernetes executors](/self-hosted/executors/deploy-executors-kubernetes) *(Beta — not recommended for production)*. Executors support [auto-indexing](/code-navigation/auto-indexing) and [server-side batch changes](/batch-changes/server-side). diff --git a/docs/self-hosted/deploy/machine-images/aws-oneclick.mdx b/docs/self-hosted/deploy/machine-images/aws-oneclick.mdx index 9520d2b9a..80075727d 100644 --- a/docs/self-hosted/deploy/machine-images/aws-oneclick.mdx +++ b/docs/self-hosted/deploy/machine-images/aws-oneclick.mdx @@ -74,7 +74,7 @@ Find the URL of your Sourcegraph instance in the **Outputs** section of the AWS ### Executors -Executors are supported using [native kubernetes executors](/self-hosted/executors/deploy-executors-kubernetes). +Executors are supported using [native kubernetes executors](/self-hosted/executors/deploy-executors-kubernetes) *(Beta — not recommended for production)*. Executors support [auto-indexing](/code-navigation/auto-indexing) and [server-side batch changes](/batch-changes/server-side). diff --git a/docs/self-hosted/deploy/machine-images/gce.mdx b/docs/self-hosted/deploy/machine-images/gce.mdx index ce90f8542..008664765 100644 --- a/docs/self-hosted/deploy/machine-images/gce.mdx +++ b/docs/self-hosted/deploy/machine-images/gce.mdx @@ -114,7 +114,7 @@ $ sudo su sourcegraph ### Executors -Executors are supported using [native kubernetes executors](/self-hosted/executors/deploy-executors-kubernetes). +Executors are supported using [native kubernetes executors](/self-hosted/executors/deploy-executors-kubernetes) *(Beta — not recommended for production)*. Executors support [auto-indexing](/code-navigation/auto-indexing) and [server-side batch changes](/batch-changes/server-side). diff --git a/docs/self-hosted/executors/deploy-executors-dind.mdx b/docs/self-hosted/executors/deploy-executors-dind.mdx index de42b8d1c..e2fabbcc5 100644 --- a/docs/self-hosted/executors/deploy-executors-dind.mdx +++ b/docs/self-hosted/executors/deploy-executors-dind.mdx @@ -1,6 +1,12 @@ # Deploying Sourcegraph executors on Kubernetes (docker-in-docker) -This feature is in Beta stage. + + Docker-in-Docker Kubernetes executors are in beta and are not recommended for production use. + This deployment mode requires privileged pod access and does not use Firecracker isolation. + For production workloads, deploy using + [Terraform](/self-hosted/executors/deploy-executors-terraform) or the + [Linux binary](/self-hosted/executors/deploy-executors-binary) instead. + [Kubernetes manifests](https://github.com/sourcegraph/deploy-sourcegraph-k8s) are provided to deploy Sourcegraph Executors on a running Kubernetes cluster. If you are deploying Sourcegraph with helm, charts are available [here](https://github.com/sourcegraph/deploy-sourcegraph-helm). diff --git a/docs/self-hosted/executors/deploy-executors-kubernetes.mdx b/docs/self-hosted/executors/deploy-executors-kubernetes.mdx index fbd2c221c..8f735c084 100644 --- a/docs/self-hosted/executors/deploy-executors-kubernetes.mdx +++ b/docs/self-hosted/executors/deploy-executors-kubernetes.mdx @@ -1,7 +1,9 @@ # Deploying Sourcegraph Executors natively on Kubernetes - - This feature is in beta and is available in Sourcegraph 5.1.0 and later. + + Native Kubernetes executors are in beta. For production workloads, consider deploying using + [Terraform](/self-hosted/executors/deploy-executors-terraform) or the + [Linux binary](/self-hosted/executors/deploy-executors-binary) for better long-term support. The native Kubernetes Executors have a master Executor pod that schedules worker pods via the Kubernetes API. The master Executor pod manages the lifecycle of jobs, while the worker pods process the actual [batch change](/batch-changes/server-side) or [precise auto indexing](/code-navigation/auto-indexing) job specs. For more details, see [how it works](/admin/executors#native-kubernetes). @@ -65,6 +67,9 @@ Native Kubernetes Executors can be deployed via either the `sourcegraph-executor ### Steps 1. If you are deploying Executors for processing Batch Changes, set `batchChanges.nativeServerSideExecution` to `true` in your [site configuration](/admin/config/site-config). Only enable this when using Executors on Kubernetes. + + > **Note:** Batch Changes on native Kubernetes executors inherits the beta limitations of + > the native Kubernetes runtime. See the warning at the top of this page. 2. Configure the following environment variables on the Executor Deployment: 1. `EXECUTOR_FRONTEND_URL` should match the URL of your Sourcegraph instance diff --git a/docs/self-hosted/executors/deploy-executors-terraform.mdx b/docs/self-hosted/executors/deploy-executors-terraform.mdx index dbb2b6bbc..3e9df238e 100644 --- a/docs/self-hosted/executors/deploy-executors-terraform.mdx +++ b/docs/self-hosted/executors/deploy-executors-terraform.mdx @@ -1,8 +1,8 @@ # Deploying Sourcegraph executors using Terraform on AWS or GCP [Terraform modules](https://learn.hashicorp.com/tutorials/terraform/module-use?in=terraform/modules) are provided to -provision machines running executors on [AWS](https://sourcegraph.com/github.com/sourcegraph/terraform-aws-executors) -and [Google Cloud](https://sourcegraph.com/github.com/sourcegraph/terraform-google-executors). +provision machines running executors on [AWS](https://github.com/sourcegraph/terraform-aws-executors) +and [Google Cloud](https://github.com/sourcegraph/terraform-google-executors). ## Basic Definition @@ -50,14 +50,14 @@ module "executors" { See the Terraform Modules for additional configurations. -- [AWS](https://sourcegraph.com/github.com/sourcegraph/terraform-aws-executors/-/blob/modules/executors/variables.tf) -- [Google](https://sourcegraph.com/github.com/sourcegraph/terraform-google-executors/-/blob/modules/executors/variables.tf) +- [AWS](https://github.com/sourcegraph/terraform-aws-executors/blob/main/modules/executors/variables.tf) +- [Google](https://github.com/sourcegraph/terraform-google-executors/blob/main/modules/executors/variables.tf) ## Terraform Version Terraform modules `4.2.x` and above allow Terraform from `1.1.x` to `< 2.x` to be used. -If using a Terraform module `4.1.x` or below, use [tfenv](https://sourcegraph.com/github.com/tfutils/tfenv) to install Terraform +If using a Terraform module `4.1.x` or below, use [tfenv](https://github.com/tfutils/tfenv) to install Terraform 1.1+. ```shell @@ -158,16 +158,16 @@ All regions are supported. The following examples provision a single executor to pull from the `codeintel` queue. -- [AWS example](https://sourcegraph.com/github.com/sourcegraph/terraform-aws-executors/-/tree/examples/single-executor) -- [Google example](https://sourcegraph.com/github.com/sourcegraph/terraform-google-executors/-/tree/examples/single-executor) +- [AWS example](https://github.com/sourcegraph/terraform-aws-executors/tree/main/examples/single-executor) +- [Google example](https://github.com/sourcegraph/terraform-google-executors/tree/main/examples/single-executor) ### Multiple Executors The following examples provision two executors, one to pull from the `codeintel` queue and the other for the `batches` queue. -- [AWS example](https://sourcegraph.com/github.com/sourcegraph/terraform-aws-executors/-/tree/examples/multiple-executors) -- [Google example](https://sourcegraph.com/github.com/sourcegraph/terraform-google-executors/-/tree/examples/multiple-executors) +- [AWS example](https://github.com/sourcegraph/terraform-aws-executors/tree/main/examples/multiple-executors) +- [Google example](https://github.com/sourcegraph/terraform-google-executors/tree/main/examples/multiple-executors) ### Step-by-step Guide @@ -192,7 +192,7 @@ The following is a step-by-step guide on provisioning a single `codeintel` execu - `"codeIntelAutoIndexing.enabled": true` - _This is only for `codeintel` executors._ 5. Download - the [example files](https://sourcegraph.com/github.com/sourcegraph/terraform-google-executors/-/blob/examples/single-executor) + the [example files](https://github.com/sourcegraph/terraform-google-executors/tree/main/examples/single-executor) 6. Change the following in `providers.tf` - `project` to the GCP project to provision the executor in - `region` to the GCP region to provision the executor in @@ -291,11 +291,11 @@ you@sourcegraph-executor-h0rv:~$ curl Auto-scaling of executor instances can help to increase concurrency of jobs, without paying for unused resources. With auto-scaling, you can scale down to 0 instances when no workload exist and scale up as far as you like and your cloud provider can support. Auto-scaling needs to be configured separately. -Auto-scaling makes use of the auto-scaling capabilities of the respective cloud provider (**AutoScalingGroups** on AWS and **Instance Groups** on GCP). Sourcegraph's `worker` service publishes a scaling metric (that is, the number of jobs in queue) to the cloud providers. Then, based on that reported value, the auto-scalers add and remove compute resources to match the required amount of compute. The autoscaler will attempt to hold 1 instance running per each [`executor_jobs_per_instance_scaling`](https://sourcegraph.com/search?q=context:global+repo:%5Egithub.com/sourcegraph/terraform-.*-executors%24+variable+%22executor_jobs_per_instance_scaling%22&patternType=literal) items in queue. +Auto-scaling makes use of the auto-scaling capabilities of the respective cloud provider (**AutoScalingGroups** on AWS and **Instance Groups** on GCP). Sourcegraph's `worker` service publishes a scaling metric (that is, the number of jobs in queue) to the cloud providers. Then, based on that reported value, the auto-scalers add and remove compute resources to match the required amount of compute. The autoscaler will attempt to hold 1 instance running per each `executor_jobs_per_instance_scaling` items in queue. -For example, if `executor_jobs_per_instance_scaling` is set to `20` and the queue size is currently `400`, then `20`instances would be determined as required to handle the load. You might want to tweak this number based on the [machine type](https://sourcegraph.com/search?q=context:global+repo:%5Egithub.com/sourcegraph/terraform-.*-executors%24+variable+%22machine_type%22+-f:docker-mirror&patternType=literal), [concurrency per machine](https://sourcegraph.com/search?q=context:global+repo:%5Egithub.com/sourcegraph/terraform-.*-executors%24+variable+%22maximum_num_jobs%22&patternType=literal) and desired processing speed. +For example, if `executor_jobs_per_instance_scaling` is set to `20` and the queue size is currently `400`, then `20` instances would be determined as required to handle the load. You might want to tweak this number based on the `machine_type`, `maximum_num_jobs` (concurrency per machine), and desired processing speed. See the [AWS](https://github.com/sourcegraph/terraform-aws-executors/blob/main/modules/executors/variables.tf) and [Google](https://github.com/sourcegraph/terraform-google-executors/blob/main/modules/executors/variables.tf) variable definitions for details. -With the Terraform variables [`executor_min_replicas`](https://sourcegraph.com/search?q=context:global+repo:%5Egithub.com/sourcegraph/terraform-.*-executors%24+variable+%22executor_min_replicas%22&patternType=literal) and [`executor_max_replicas`](https://sourcegraph.com/search?q=context:global+repo:%5Egithub.com/sourcegraph/terraform-.*-executors%24+variable+%22executor_max_replicas%22&patternType=literal) in the Terraform modules linked to above, you can configure the minimum and maximum number of compute machines to be run at a given time. +With the Terraform variables `executor_min_replicas` and `executor_max_replicas` in the Terraform modules linked to above, you can configure the minimum and maximum number of compute machines to be run at a given time. For auto-scaling to work, two things must be true: @@ -305,7 +305,7 @@ For auto-scaling to work, two things must be true: For the latter to work, the Sourcegraph instance needs to be configured with the correct credentials that allow it to access the cloud provider. -The `credentials` submodule in both the [AWS](https://sourcegraph.com/github.com/sourcegraph/terraform-aws-executors/-/tree/modules/credentials) and [Google](https://sourcegraph.com/github.com/sourcegraph/terraform-google-executors/-/tree/modules/credentials) executor modules exists for that purpose. When used, the `credentials` module sets up the credentials on the cloud provider and returns them in the Terraform outputs. +The `credentials` submodule in both the [AWS](https://github.com/sourcegraph/terraform-aws-executors/tree/main/modules/credentials) and [Google](https://github.com/sourcegraph/terraform-google-executors/tree/main/modules/credentials) executor modules exists for that purpose. When used, the `credentials` module sets up the credentials on the cloud provider and returns them in the Terraform outputs. Here's an example of how one would configure auto-scaling. diff --git a/docs/self-hosted/executors/deploy-executors.mdx b/docs/self-hosted/executors/deploy-executors.mdx index e2e19a7c9..ccbb86b37 100644 --- a/docs/self-hosted/executors/deploy-executors.mdx +++ b/docs/self-hosted/executors/deploy-executors.mdx @@ -4,8 +4,8 @@ Executors can be deployed in a variety of manners. The supported deployment opti - [Linux Binary Service](/self-hosted/executors/deploy-executors-binary) ([Firecracker](./firecracker) compatible) - [Terraform on AWS or GCP](/self-hosted/executors/deploy-executors-terraform) ([Firecracker](./firecracker) compatible) -- [Native Kubernetes](/self-hosted/executors/deploy-executors-kubernetes) -- [Docker-in-Docker on Kubernetes](/self-hosted/executors/deploy-executors-dind) +- [Native Kubernetes](/self-hosted/executors/deploy-executors-kubernetes) *(Beta — not recommended for production)* +- [Docker-in-Docker on Kubernetes](/self-hosted/executors/deploy-executors-dind) *(Beta — not recommended for production)* - [Docker-Compose](/self-hosted/executors/deploy-executors-docker) See [deciding which executor deployment method to use ](../executors#deciding-which-executor-deployment-method-to-use) for more information on these different deployment options. @@ -110,13 +110,13 @@ Once the shared secret is set in Sourcegraph, you can start setting up executors title="Native Kubernetes" icon="installation" href="/self-hosted/executors/deploy-executors-kubernetes" - description="Run executors natively on kubernetes." + description="Run executors natively on kubernetes. (Beta — known reliability limitations, not recommended for production.)" /> **Note:** The flowchart above shows Kubernetes-based deployment options. Both Native Kubernetes +> and Docker-in-Docker Kubernetes executors are currently in beta with known production reliability +> limitations. For production workloads, Terraform or Linux binary deployments are recommended +> even when nested virtualization is not available. + ## How it works Executor instances are capable of being deployed in a variety of ways. Each runtime varies in how jobs are executed. @@ -122,7 +127,11 @@ Executor instances are capable of being deployed in a variety of ways. Each runt ### Native Kubernetes -> NOTE: This is an experimental feature. + + Native Kubernetes executors are in beta and are not recommended for production use. + See the [deployment guide](/self-hosted/executors/deploy-executors-kubernetes) for details + on known limitations. + ![Executors architecture - native kubernetes](https://storage.googleapis.com/sourcegraph-assets/executor_kubernetes_native_arch.png) @@ -142,7 +151,11 @@ Executor instances are capable of being deployed in a variety of ways. Each runt ### Docker-in-Docker Kubernetes -> NOTE: This is an experimental feature. + + Docker-in-Docker Kubernetes executors are in beta and are not recommended for production use. + See the [deployment guide](/self-hosted/executors/deploy-executors-dind) for details on known + limitations. + ![Executors architecture - docker in docker kubernetes](https://storage.googleapis.com/sourcegraph-assets/executor_kubernetes_dind_arch.png) diff --git a/docs/self-hosted/index.mdx b/docs/self-hosted/index.mdx index 1f66d8eda..7b56dff82 100644 --- a/docs/self-hosted/index.mdx +++ b/docs/self-hosted/index.mdx @@ -59,12 +59,12 @@ Get started running Sourcegraph on-prem. - [Executors overview](/self-hosted/executors/) - [Deploy executors](/self-hosted/executors/deploy-executors) -- [Kubernetes deployment](/self-hosted/executors/deploy-executors-kubernetes) +- [Kubernetes deployment](/self-hosted/executors/deploy-executors-kubernetes) *(Beta)* - [Terraform deployment](/self-hosted/executors/deploy-executors-terraform) - [Docker deployment](/self-hosted/executors/deploy-executors-docker) - [Binary deployment](/self-hosted/executors/deploy-executors-binary) - [Binary deployment (offline)](/self-hosted/executors/deploy-executors-binary-offline) -- [Docker-in-Docker](/self-hosted/executors/deploy-executors-dind) +- [Docker-in-Docker](/self-hosted/executors/deploy-executors-dind) *(Beta)* - [Firecracker](/self-hosted/executors/firecracker) - [Configuration](/self-hosted/executors/executors-config) - [Troubleshooting](/self-hosted/executors/executors-troubleshooting) From 85de55cd523a4a824df54b407ba2617ce55c4101 Mon Sep 17 00:00:00 2001 From: Robert Lin Date: Sun, 7 Jun 2026 15:09:48 -0700 Subject: [PATCH 105/217] beta-and-experimental: relax credits terminology (#1776) Clarify usage limits for Beta and Experimental features regarding credits and admin opt-in. --- docs/beta-and-experimental/index.mdx | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/docs/beta-and-experimental/index.mdx b/docs/beta-and-experimental/index.mdx index 0156c6c3a..c19750b1e 100644 --- a/docs/beta-and-experimental/index.mdx +++ b/docs/beta-and-experimental/index.mdx @@ -9,7 +9,7 @@ For both features labeled **Beta** or **Experimental**, Sourcegraph wants to be - The feature is undergoing active development and your [feedback](mailto:feedback@sourcegraph.com) is especially appreciated - The feature may have bugs, and is excluded from our support SLAs - The feature may change, be deprecated, be removed, or be disabled at any time -- The feature may have temporary usage limits during the beta and experimental period. +- The feature may have temporary usage limits during the [Beta](#beta-features) and [Experimental](#experimental-features) period. - The feature may require admin enablement or other intentional setup - The feature may become [billable with credits](#credits-and-billing) once they become generally available @@ -20,7 +20,7 @@ Features generally move through the following stages: | Stage | Label | Credit impact | | -------------------------------------- | ---------------- | ------------------------------------------------------------------------------ | | [Experimental](#experimental-features) | **Experimental** | No credits consumed | -| [Beta](#beta-features) | **Beta** | No credits consumed | +| [Beta](#beta-features) | **Beta** | No credits consumed without explicit opt-in from an administrator | | General availability | No special label | [Credits may apply according to the published rate card](#credits-and-billing) | ## Experimental features @@ -49,7 +49,8 @@ General points about [both beta and experimental features](#beta-and-experimenta Billing depends on the feature. -- **Experimental** and **Beta** features do _not_ consume credits +- **Experimental** and **Beta** features do _not_ consume credits without explicit opt-in from an administrator. + - Some Beta features may be free up to a limit, and with explicit opt-in, usage can be resumed with paid credits. - Some **Beta** or **Experimental** features, when they graduate to general availability, may be billable with credits. - Such features will have a **Beta** stage with messaging that identifies, if applicable, the upcoming credit cost and start date. Sourcegraph will provide at least 30 days notice before credits consumption begins. - Admins can [configure limits](/admin/entitlements) on the use of credit-consuming features From d890741269af1815913b44565a57398a7a7c7f6e Mon Sep 17 00:00:00 2001 From: Aditya Kalia <32119652+akalia25@users.noreply.github.com> Date: Tue, 9 Jun 2026 12:24:50 -0400 Subject: [PATCH 106/217] update refresh cadence (#1780) Updating the docs to reflect the new refresh cadence for the v2_events pipeline to hourly. --- docs/analytics/index.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/analytics/index.mdx b/docs/analytics/index.mdx index 21d39528c..0b68de840 100644 --- a/docs/analytics/index.mdx +++ b/docs/analytics/index.mdx @@ -16,7 +16,7 @@ To get started, follow our [enablement instructions](#enablement-instructions). ![sourcegraph-analytics](https://storage.googleapis.com/sourcegraph-assets/Docs/Sourcegraph-Analytics-2026-03-05.png) -Analytics data refreshes every 12 hours, at 00:00 and 12:00 UTC. Recent activity may take up to 12 hours to appear. +Analytics data refreshes hourly, on the hour. Recent activity may take up to 1 hour to appear. ## Enablement instructions From 6c842ccb250562254ee6fc89676f1cb438674d8e Mon Sep 17 00:00:00 2001 From: Michael Lin Date: Tue, 9 Jun 2026 19:13:34 -0700 Subject: [PATCH 107/217] docs: reframe k8s docker-in-docker executors around threat model (#1781) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Reframes the Docker-in-Docker (DinD) Kubernetes executor docs away from a "not recommended / requires privileged pod" warning toward a proper threat-model explanation. Adds a "Security considerations" section clarifying that running untrusted code is inherent to *all* executor runtimes (not unique to DinD) and that defense in depth bounds the blast radius regardless of runtime. Documents recommended hardening: dedicated/isolated node pools, gVisor sandboxing (e.g. GKE Sandbox), and network restrictions (blocking private ranges and the cloud metadata service). The goal is to help customers evaluate `privileged: true` in context rather than be scared off it. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-authored-by: Claude Opus 4.8 (1M context) --- .../executors/deploy-executors-dind.mdx | 44 +++++++++++++------ 1 file changed, 30 insertions(+), 14 deletions(-) diff --git a/docs/self-hosted/executors/deploy-executors-dind.mdx b/docs/self-hosted/executors/deploy-executors-dind.mdx index e2fabbcc5..2e1a4eb56 100644 --- a/docs/self-hosted/executors/deploy-executors-dind.mdx +++ b/docs/self-hosted/executors/deploy-executors-dind.mdx @@ -1,18 +1,17 @@ # Deploying Sourcegraph executors on Kubernetes (docker-in-docker) - Docker-in-Docker Kubernetes executors are in beta and are not recommended for production use. - This deployment mode requires privileged pod access and does not use Firecracker isolation. - For production workloads, deploy using + Docker-in-Docker Kubernetes executors are in beta. For production workloads where you + want the strongest reliability and support guarantees, you can also deploy via [Terraform](/self-hosted/executors/deploy-executors-terraform) or the - [Linux binary](/self-hosted/executors/deploy-executors-binary) instead. + [Linux binary](/self-hosted/executors/deploy-executors-binary). [Kubernetes manifests](https://github.com/sourcegraph/deploy-sourcegraph-k8s) are provided to deploy Sourcegraph Executors on a running Kubernetes cluster. If you are deploying Sourcegraph with helm, charts are available [here](https://github.com/sourcegraph/deploy-sourcegraph-helm). ## Deployment -Executors on kubernetes machines require privileged access to a container runtime daemon in order to operate correctly. In order to ensure maximum capability across Kubernetes versions and container runtimes, a [Docker in Docker](https://www.docker.com/blog/docker-can-now-run-within-docker/) sidecar is deployed with each executor pod to avoid accessing the host container runtime directly. +Executors on Kubernetes require privileged access to a container runtime daemon in order to operate correctly. To ensure maximum capability across Kubernetes versions and container runtimes, a [Docker in Docker](https://www.docker.com/blog/docker-can-now-run-within-docker/) sidecar is deployed with each executor pod so that the executor does not have to access the host container runtime directly. ### Step-by-step Guide @@ -21,12 +20,6 @@ Ensure you have the following tools installed: - [kubectl](https://kubernetes.io/docs/tasks/tools/#kubectl) - [Helm](https://helm.sh/) if you're installing Sourcegraph with `helm`. -#### Deployment via Kustomize - -Please refer to the [Sourcegraph Kustomize docs](/self-hosted/deploy/kubernetes/kustomize) for the latest instructions. - -To include Executors dind, see [configure Sourcegraph with Kustomize](/self-hosted/deploy/kubernetes/configure) on how to specify the component. - #### Deployment via Helm Please refer to the [Sourcegraph Helm docs](/self-hosted/deploy/kubernetes#quickstart) for the latest instructions. @@ -44,8 +37,31 @@ To specifically deploy Executors, ``` 3. Confirm executors are working by checking the _Executors_ page under **Site admin > Executors > Instances** . -## Note +## Security considerations + +Docker-in-docker executors require the Docker sidecar to run as a [privileged](https://kubernetes.io/docs/tasks/configure-pod-container/security-context/) container. `privileged: true` understandably raises concerns, so it's worth understanding the threat model before evaluating it — and seeing why, with the right deployment practices, it is acceptable for the large majority of self-hosted Sourcegraph instances. + +### Executors run untrusted code by design + +Every executor deployment method exists to run **arbitrary, untrusted code**. Auto-indexing invokes language indexers and package-manager hooks to resolve dependencies, and batch changes run user-defined tooling against the contents of a repository. See [Executors](/admin/executors/) and [Firecracker](/self-hosted/executors/firecracker) for the full sandboxing model. + +This means the risk of a malicious job attempting to break out of its sandbox, consume excessive compute, or exfiltrate code and credentialsis is inherent to running executors. It is not unique to Docker-in-Docker: + +- **Firecracker** provides the strongest per-job isolation (a MicroVM boundary), but it is not a complete security control on its own. Even with Firecracker, Sourcegraph additionally configures `iptables` to stop jobs from reaching [private IP ranges](/self-hosted/executors/firecracker#known-caveats) and the cloud metadata service. +- **Native Kubernetes** and **Docker-in-Docker** run jobs as containers without a MicroVM boundary, so they rely more heavily on the surrounding isolation and network controls. + +The runtime you choose changes the isolation boundary, but they do not negate the need for additional controls to furthur limit the blast radius. + +### Security hardening and risk management + +A privileged container shares the host kernel and can access host devices, so in principle a successful container breakout could affect the node. The mitigations below contain that blast radius to a pool of disposable nodes that run *only* untrusted executor jobs and that cannot reach your internal network — which is the same posture Sourcegraph applies to Firecracker-isolated executors. + +We strongly recommend applying the following controls when running docker-in-docker executors: + +1. **Run executors on a dedicated, isolated node pool.** Schedule executor pods onto their own node pool using taints/tolerations and node selectors or affinity, kept separate from the rest of your Sourcegraph workloads and any other sensitive services. A breakout is then contained to nodes that run only untrusted executor jobs, and those nodes can be recycled aggressively. -Executors deployed in kubernetes do not use [Firecracker](/admin/executors/#how-it-works), meaning they require [privileged access](https://kubernetes.io/docs/tasks/configure-pod-container/security-context/) to the docker daemon running in a sidecar alongside the executor pod. +2. **Sandbox the executor nodes where supported.** Run the executor node pool on a sandboxed runtime such as [gVisor](https://gvisor.dev/) (for example, [GKE Sandbox](https://cloud.google.com/kubernetes-engine/docs/concepts/sandbox-pods)). We offer built-in support for `gVisor` in the docker-in-docker helm chart. Learn more from the documentation. -If you have security concerns, consider deploying via [terraform](/self-hosted/executors/deploy-executors-terraform) or [installing the binary](/self-hosted/executors/deploy-executors-binary) directly. +3. **Restrict network access.** Apply Kubernetes [NetworkPolicies](https://kubernetes.io/docs/concepts/services-networking/network-policies/) and/or cloud firewall rules to the executor node pool to: + - Block access to internal and private resources and services. + - Block access to the cloud instance metadata service at `169.254.169.254` (AWS / GCP). From 92b2068193fa1fd110cd19e5095468987ef83580 Mon Sep 17 00:00:00 2001 From: Enrique Gonzalez Date: Thu, 11 Jun 2026 09:47:31 -0700 Subject: [PATCH 108/217] Update docs latest version to 7.4 (#1782) ## Summary - Set DOCS_LATEST_VERSION to 7.4 - Add 7.3 to the version selector as a previous version - Update the legacy versions page with 7.3 Co-authored-by: Amp --- docs.config.js | 2 +- docs/legacy.mdx | 1 + src/data/versions.ts | 4 ++++ 3 files changed, 6 insertions(+), 1 deletion(-) diff --git a/docs.config.js b/docs.config.js index 7c5cd3a51..6ae0c5425 100644 --- a/docs.config.js +++ b/docs.config.js @@ -1,5 +1,5 @@ const config = { - DOCS_LATEST_VERSION: '7.3' + DOCS_LATEST_VERSION: '7.4' }; module.exports = config; diff --git a/docs/legacy.mdx b/docs/legacy.mdx index 1371231ab..3d522ee8f 100644 --- a/docs/legacy.mdx +++ b/docs/legacy.mdx @@ -6,6 +6,7 @@ +- [7.3](https://7.3.sourcegraph.com) - [7.2](https://7.2.sourcegraph.com) - [7.1](https://7.1.sourcegraph.com) - [7.0](https://7.0.sourcegraph.com) diff --git a/src/data/versions.ts b/src/data/versions.ts index f15188926..89793234e 100644 --- a/src/data/versions.ts +++ b/src/data/versions.ts @@ -13,6 +13,10 @@ export const versions: VersionI[] = [ label: 'latest', url: '/docs' }, + { + name: 'v7.3', + url: 'https://7.3.sourcegraph.com' + }, { name: 'v7.2', url: 'https://7.2.sourcegraph.com' From d811ba12c9562da17a8167ec81e00b516faed032 Mon Sep 17 00:00:00 2001 From: Michael Lin Date: Mon, 15 Jun 2026 09:48:44 -0700 Subject: [PATCH 109/217] docs: remove experimental notice for Sourcegraph Connect (#1784) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Removes the "Experimental stage" callout from the Sourcegraph Connect agent page, as the feature is no longer experimental. No other changes were needed since this was the only experimental notice tied to Sourcegraph Connect. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-authored-by: Claude Opus 4.8 (1M context) --- docs/cloud/private-connectivity-sourcegraph-connect.mdx | 5 ----- 1 file changed, 5 deletions(-) diff --git a/docs/cloud/private-connectivity-sourcegraph-connect.mdx b/docs/cloud/private-connectivity-sourcegraph-connect.mdx index faf37c190..1292fc0fa 100644 --- a/docs/cloud/private-connectivity-sourcegraph-connect.mdx +++ b/docs/cloud/private-connectivity-sourcegraph-connect.mdx @@ -1,10 +1,5 @@ # Private resources in on-prem data centers via the Sourcegraph Connect agent - - This feature is in the Experimental stage. [Contact - us](https://about.sourcegraph.com/contact) for more information. - - As part of the [Enterprise tier](https://sourcegraph.com/pricing), Sourcegraph Cloud supports connecting to private code hosts and artifact registries in the customer's network by deploying the Sourcegraph Connect tunnel agent in the customer's network. ## How it works From 00c1232906c9e3a81edb34bfa52cb977f040b347 Mon Sep 17 00:00:00 2001 From: Enrique Gonzalez Date: Tue, 16 Jun 2026 09:10:31 -0700 Subject: [PATCH 110/217] docs: clarify MCP tool availability by endpoint (#1783) ## Summary - Updates the MCP endpoint descriptions to focus on the documented endpoints - Adds a tool availability matrix after the Available Tools section - Clarifies Deep Search creation vs reading availability and fixes diff_search parameter docs ## Test plan - npx prettier --config ./prettier.config.js --write docs/api/mcp/index.mdx - npm run build --------- Co-authored-by: Amp --- docs/api/mcp/index.mdx | 60 +++++++++++++++++++++++++++++++----------- 1 file changed, 45 insertions(+), 15 deletions(-) diff --git a/docs/api/mcp/index.mdx b/docs/api/mcp/index.mdx index 094480e74..2fd947319 100644 --- a/docs/api/mcp/index.mdx +++ b/docs/api/mcp/index.mdx @@ -37,11 +37,11 @@ This works similarly for other MCP-compatible agents. See [Client Integrations]( The MCP server provides different tool suites for various use cases: -| Endpoint | Description | -| ---------------------- | ----------------------------------- | -| `/.api/mcp` | Core Sourcegraph search tools | -| `/.api/mcp/all` | Full suite of Sourcegraph tools | -| `/.api/mcp/deepsearch` | Deep Search agent | +| Endpoint | Description | +| ---------------------- | --------------------------------------------------------------------------- | +| `/.api/mcp` | Core Sourcegraph search, repository, history, and Deep Search reading tools | +| `/.api/mcp/all` | Full suite of Sourcegraph tools | +| `/.api/mcp/deepsearch` | Deep Search agent tools only | Example URL: @@ -174,9 +174,9 @@ To restrict MCP to a subset of users: See [Access control](/admin/access-control) for more about managing roles and permissions. - MCP access control is separate from [repository permissions](/admin/permissions/). - Users can only read data from repositories they are already allowed to access - in Sourcegraph. + MCP access control is separate from [repository + permissions](/admin/permissions/). Users can only read data from + repositories they are already allowed to access in Sourcegraph. ## Available Tools @@ -275,7 +275,6 @@ Run sandboxed Lua scripts for aggregation, cross-referencing, and computation ov **Use cases:** Counting or aggregating many search matches, cross-referencing multiple searches, transforming or combining search output with custom logic - ### Code Navigation #### `go_to_definition` @@ -316,6 +315,7 @@ Search commits by message, author, content, files, and date ranges. - `contentTerms` - Search in actual code changes (optional) - `files` - Filter by file paths (optional) - `after`/`before` - Date range filters (optional) +- `revisions` - Branches, tags, or ref globs to search (optional) #### `diff_search` @@ -327,8 +327,9 @@ Search actual code changes for specific patterns across repositories. - `repos` - Array of repository names (required) - `added` - Search only added code (optional) - `removed` - Search only removed code (optional) -- `author` - Filter by author (optional) +- `authors` - Filter by authors (optional) - `after`/`before` - Date range filters (optional) +- `revisions` - Branches, tags, or ref globs to search (optional) #### `compare_revisions` @@ -355,11 +356,12 @@ Find repositories where a contributor has made commits. ### Deep Search - Admins can disable the `deepsearch` tool on the default and v1 MCP endpoints - by setting the environment variable `SRC_MCP_DISABLE_DEEPSEARCH_TOOL=true` - on the Sourcegraph instance. This does not affect `deepsearch_read` or the - dedicated `/deepsearch` endpoint. This is a temporary measure available in - 7.0 and will be replaced by a proper tool allowlist in a future release. + Admins can disable the `deepsearch` tool on MCP endpoints where it is + exposed by setting the environment variable + `SRC_MCP_DISABLE_DEEPSEARCH_TOOL=true` on the Sourcegraph instance. This + does not affect `deepsearch_read` or the dedicated `/.api/mcp/deepsearch` + endpoint. This is a temporary measure available in 7.0 and will be replaced + by a proper tool allowlist in a future release. ### `deepsearch` @@ -384,6 +386,34 @@ Read a Deep Search conversation and return the markdown content of the questions **Use cases:** Reading or re-opening Deep Search results, summarizing existing answers, using past Deep Search as context for new questions +## Tool Availability by Endpoint + +Use this matrix to choose the smallest endpoint that has the tools your MCP client needs. + +| Tool | `/.api/mcp` | `/.api/mcp/all` | `/.api/mcp/deepsearch` | +| ----------------------- | :---------: | :-------------: | :--------------------: | +| `commit_search` | ✓ | ✓ | | +| `compare_revisions` | | ✓ | | +| `deepsearch` | | ✓ | ✓ | +| `deepsearch_read` | ✓ | ✓ | ✓ | +| `diff_search` | ✓ | ✓ | | +| `evaluator` | ✓ | ✓ | | +| `find_references` | | ✓ | | +| `get_contributor_repos` | | ✓ | | +| `go_to_definition` | | ✓ | | +| `keyword_search` | ✓ | ✓ | | +| `list_files` | ✓ | ✓ | | +| `list_repos` | ✓ | ✓ | | +| `nls_search` | ✓ | ✓ | | +| `read_file` | ✓ | ✓ | | + + + The default `/.api/mcp` endpoint can read existing Deep Search conversations + with `deepsearch_read`, but it cannot create new Deep Search conversations. + Use `/.api/mcp/all` or `/.api/mcp/deepsearch` when your client needs the + `deepsearch` tool. + + ## Best Practices 1. **Repository Scoping:** Use `list_repos` first to find relevant repositories for better performance From 0baf73adc0dd0637414a771aafc8055fdca2ceb2 Mon Sep 17 00:00:00 2001 From: sourcegraph-buildkite <71296199+sourcegraph-buildkite@users.noreply.github.com> Date: Tue, 16 Jun 2026 19:58:29 -0400 Subject: [PATCH 111/217] =?UTF-8?q?=F0=9F=A4=96=20Sync=20generated=20docs?= =?UTF-8?q?=20from=20sourcegraph/sourcegraph=20(#1764)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This is an automated pull request, created by //doc:generated.push on sourcegraph/sourcegraph Co-authored-by: Buildkite --- docs/admin/code-hosts/aws-codecommit.mdx | 2 +- docs/admin/code-hosts/azuredevops.mdx | 2 +- docs/admin/code-hosts/bitbucket-cloud.mdx | 2 +- docs/admin/code-hosts/bitbucket-server.mdx | 2 +- docs/admin/code-hosts/gerrit.mdx | 2 +- docs/admin/code-hosts/github.mdx | 2 +- docs/admin/code-hosts/gitlab.mdx | 2 +- docs/admin/code-hosts/gitolite.mdx | 2 +- docs/admin/code-hosts/other.mdx | 2 +- docs/admin/code-hosts/phabricator.mdx | 2 +- docs/admin/config/settings.mdx | 7 +- docs/admin/config/site-config.mdx | 17 +- docs/admin/repo/perforce.mdx | 2 +- .../telemetry/private-metadata-allowlist.mdx | 1 + docs/cli/references/abc/index.mdx | 15 + docs/cli/references/abc/variables/delete.mdx | 32 + docs/cli/references/abc/variables/index.mdx | 16 + docs/cli/references/abc/variables/set.mdx | 38 + docs/cli/references/api.mdx | 59 +- docs/cli/references/auth/index.mdx | 27 + docs/cli/references/auth/token.mdx | 36 + docs/cli/references/codeowners/create.mdx | 28 + docs/cli/references/codeowners/delete.mdx | 26 + docs/cli/references/codeowners/get.mdx | 26 + docs/cli/references/codeowners/index.mdx | 29 + docs/cli/references/codeowners/update.mdx | 28 + docs/cli/references/index.mdx | 18 +- docs/cli/references/login.mdx | 39 +- docs/cli/references/orgs/create.mdx | 50 +- docs/cli/references/orgs/delete.mdx | 50 +- docs/cli/references/orgs/get.mdx | 52 +- docs/cli/references/orgs/index.mdx | 28 +- docs/cli/references/orgs/list.mdx | 54 +- docs/cli/references/orgs/members/add.mdx | 50 +- docs/cli/references/orgs/members/index.mdx | 25 +- docs/cli/references/orgs/members/remove.mdx | 49 +- docs/cli/references/users/create.mdx | 54 +- docs/cli/references/users/delete.mdx | 50 +- docs/cli/references/users/get.mdx | 54 +- docs/cli/references/users/index.mdx | 29 +- docs/cli/references/users/list.mdx | 58 +- docs/cli/references/users/prune.mdx | 61 +- docs/cli/references/users/tag.mdx | 58 +- docs/cli/references/version.mdx | 45 +- docs/cody/capabilities/supported-models.mdx | 1 + docs/self-hosted/observability/alerts.mdx | 135 ++ docs/self-hosted/observability/dashboards.mdx | 1299 +++++++++++++++-- 47 files changed, 1941 insertions(+), 725 deletions(-) create mode 100644 docs/cli/references/abc/index.mdx create mode 100644 docs/cli/references/abc/variables/delete.mdx create mode 100644 docs/cli/references/abc/variables/index.mdx create mode 100644 docs/cli/references/abc/variables/set.mdx create mode 100644 docs/cli/references/auth/index.mdx create mode 100644 docs/cli/references/auth/token.mdx create mode 100644 docs/cli/references/codeowners/create.mdx create mode 100644 docs/cli/references/codeowners/delete.mdx create mode 100644 docs/cli/references/codeowners/get.mdx create mode 100644 docs/cli/references/codeowners/index.mdx create mode 100644 docs/cli/references/codeowners/update.mdx diff --git a/docs/admin/code-hosts/aws-codecommit.mdx b/docs/admin/code-hosts/aws-codecommit.mdx index 598252204..4faac573f 100644 --- a/docs/admin/code-hosts/aws-codecommit.mdx +++ b/docs/admin/code-hosts/aws-codecommit.mdx @@ -37,7 +37,7 @@ AWS CodeCommit connections support the following configuration options, which ar {/* SCHEMA_SYNC_START: admin/code_hosts/aws_codecommit.schema.json */} {/* WARNING: This section is auto-generated during releases. Do not edit manually. */} -{/* Last updated: 2026-04-27T11:17:39Z */} +{/* Last updated: 2026-06-16T23:55:06Z */} ```json { // REQUIRED: diff --git a/docs/admin/code-hosts/azuredevops.mdx b/docs/admin/code-hosts/azuredevops.mdx index fba7332cf..1fbc31c61 100644 --- a/docs/admin/code-hosts/azuredevops.mdx +++ b/docs/admin/code-hosts/azuredevops.mdx @@ -69,7 +69,7 @@ Azure DevOps connections support the following configuration options, which are {/* SCHEMA_SYNC_START: admin/code_hosts/azuredevops.schema.json */} {/* WARNING: This section is auto-generated during releases. Do not edit manually. */} -{/* Last updated: 2026-04-27T11:17:39Z */} +{/* Last updated: 2026-06-16T23:55:06Z */} ```json // Authentication alternatives: token OR windowsPassword diff --git a/docs/admin/code-hosts/bitbucket-cloud.mdx b/docs/admin/code-hosts/bitbucket-cloud.mdx index cd611356b..68d795ef3 100644 --- a/docs/admin/code-hosts/bitbucket-cloud.mdx +++ b/docs/admin/code-hosts/bitbucket-cloud.mdx @@ -116,7 +116,7 @@ Bitbucket Cloud connections support the following configuration options, which a {/* SCHEMA_SYNC_START: admin/code_hosts/bitbucket_cloud.schema.json */} {/* WARNING: This section is auto-generated during releases. Do not edit manually. */} -{/* Last updated: 2026-04-27T11:17:39Z */} +{/* Last updated: 2026-06-16T23:55:06Z */} ```json { // The workspace access token to use when authenticating with Bitbucket Cloud. diff --git a/docs/admin/code-hosts/bitbucket-server.mdx b/docs/admin/code-hosts/bitbucket-server.mdx index ef1661138..a37454dc8 100644 --- a/docs/admin/code-hosts/bitbucket-server.mdx +++ b/docs/admin/code-hosts/bitbucket-server.mdx @@ -202,7 +202,7 @@ Bitbucket Server / Bitbucket Data Center connections support the following confi {/* SCHEMA_SYNC_START: admin/code_hosts/bitbucket_server.schema.json */} {/* WARNING: This section is auto-generated during releases. Do not edit manually. */} -{/* Last updated: 2026-04-27T11:17:39Z */} +{/* Last updated: 2026-06-16T23:55:06Z */} ```json // Authentication alternatives: token OR password diff --git a/docs/admin/code-hosts/gerrit.mdx b/docs/admin/code-hosts/gerrit.mdx index 0d66540c4..b4e45c75e 100644 --- a/docs/admin/code-hosts/gerrit.mdx +++ b/docs/admin/code-hosts/gerrit.mdx @@ -113,7 +113,7 @@ Gerrit connections support the following configuration options, which are specif {/* SCHEMA_SYNC_START: admin/code_hosts/gerrit.schema.json */} {/* WARNING: This section is auto-generated during releases. Do not edit manually. */} -{/* Last updated: 2026-04-27T11:17:39Z */} +{/* Last updated: 2026-06-16T23:55:06Z */} ```json { // If non-null, enforces Gerrit repository permissions. This requires that there is an item in the [site configuration json](https://sourcegraph.com/docs/admin/config/site_config#auth-providers) `auth.providers` field, of type "gerrit" with the same `url` field as specified in this `GerritConnection`. diff --git a/docs/admin/code-hosts/github.mdx b/docs/admin/code-hosts/github.mdx index f29014ff8..a223d69eb 100644 --- a/docs/admin/code-hosts/github.mdx +++ b/docs/admin/code-hosts/github.mdx @@ -454,7 +454,7 @@ GitHub connections support the following configuration options, which are specif {/* SCHEMA_SYNC_START: admin/code_hosts/github.schema.json */} {/* WARNING: This section is auto-generated during releases. Do not edit manually. */} -{/* Last updated: 2026-04-27T11:17:39Z */} +{/* Last updated: 2026-06-16T23:55:06Z */} ```json // Authentication alternatives: token OR gitHubAppDetails OR externalAccount OR useRandomExternalAccount diff --git a/docs/admin/code-hosts/gitlab.mdx b/docs/admin/code-hosts/gitlab.mdx index b9970b075..546415c5c 100644 --- a/docs/admin/code-hosts/gitlab.mdx +++ b/docs/admin/code-hosts/gitlab.mdx @@ -189,7 +189,7 @@ See [Internal rate limits](/admin/code-hosts/rate-limits#internal-rate-limits). {/* SCHEMA_SYNC_START: admin/code_hosts/gitlab.schema.json */} {/* WARNING: This section is auto-generated during releases. Do not edit manually. */} -{/* Last updated: 2026-04-27T11:17:39Z */} +{/* Last updated: 2026-06-16T23:55:06Z */} ```json { // If non-null, enforces GitLab repository permissions. This requires that there be an item in the `auth.providers` field of type "gitlab" with the same `url` field as specified in this `GitLabConnection`. diff --git a/docs/admin/code-hosts/gitolite.mdx b/docs/admin/code-hosts/gitolite.mdx index 8fe847b72..3bc7ebad6 100644 --- a/docs/admin/code-hosts/gitolite.mdx +++ b/docs/admin/code-hosts/gitolite.mdx @@ -25,7 +25,7 @@ To connect Gitolite to Sourcegraph: {/* SCHEMA_SYNC_START: admin/code_hosts/gitolite.schema.json */} {/* WARNING: This section is auto-generated during releases. Do not edit manually. */} -{/* Last updated: 2026-04-27T11:17:39Z */} +{/* Last updated: 2026-06-16T23:55:06Z */} ```json { // A list of repositories to never mirror from this Gitolite instance. Supports excluding by exact name ({"name": "foo"}). diff --git a/docs/admin/code-hosts/other.mdx b/docs/admin/code-hosts/other.mdx index 4da97689c..0736cf14b 100644 --- a/docs/admin/code-hosts/other.mdx +++ b/docs/admin/code-hosts/other.mdx @@ -68,7 +68,7 @@ Repositories must be listed individually: {/* SCHEMA_SYNC_START: admin/code_hosts/other_external_service.schema.json */} {/* WARNING: This section is auto-generated during releases. Do not edit manually. */} -{/* Last updated: 2026-04-27T11:17:39Z */} +{/* Last updated: 2026-06-16T23:55:06Z */} ```json { // A list of repositories to never mirror by name after applying repositoryPathPattern. Supports excluding by exact name ({"name": "myrepo"}) or regular expression ({"pattern": ".*secret.*"}). diff --git a/docs/admin/code-hosts/phabricator.mdx b/docs/admin/code-hosts/phabricator.mdx index 6982ca5a7..13810c73f 100644 --- a/docs/admin/code-hosts/phabricator.mdx +++ b/docs/admin/code-hosts/phabricator.mdx @@ -76,7 +76,7 @@ The Sourcegraph instance's site admin must [update the `corsOrigin` site config {/* SCHEMA_SYNC_START: admin/code_hosts/phabricator.schema.json */} {/* WARNING: This section is auto-generated during releases. Do not edit manually. */} -{/* Last updated: 2026-04-27T11:17:39Z */} +{/* Last updated: 2026-06-16T23:55:06Z */} ```json { // SSH cipher to use when cloning via SSH. Must be a valid choice from `ssh -Q cipher`. diff --git a/docs/admin/config/settings.mdx b/docs/admin/config/settings.mdx index 3922a2133..e5777841f 100644 --- a/docs/admin/config/settings.mdx +++ b/docs/admin/config/settings.mdx @@ -27,7 +27,7 @@ Settings options and their default values are shown below. {/* SCHEMA_SYNC_START: admin/config/settings.schema.json */} {/* WARNING: This section is auto-generated during releases. Do not edit manually. */} -{/* Last updated: 2026-04-27T11:17:39Z */} +{/* Last updated: 2026-06-16T23:55:06Z */} ```json { @@ -81,15 +81,20 @@ Settings options and their default values are shown below. // Usually this setting is used in global and organization settings. If set in user settings, the message will only be displayed to that single user. "cody.notices": null, + // BETA: Enable the new compare experience. This feature is under active development and will eventually become the default (and the setting will be removed) + "compareV2.enabled": false, + // Disable the Slack community call-to-action banner on the Deep Search page. "deepSearch.slackCta.disabled": false, // Experimental features and settings. "experimentalFeatures": { + "batchChangeAgentsGuidance": [], "batchChangesExecution": true, "boostRelevantRepositories": true, "clientSearchResultRanking": "by-zoekt-ranking", "codeInsightsRepoUI": "single-search-query", + "deepSearchGuidance": [], "disableOrderBySimilarity": false, "enableLazyBlobSyntaxHighlighting": true, "enableLazyFileResultSyntaxHighlighting": true, diff --git a/docs/admin/config/site-config.mdx b/docs/admin/config/site-config.mdx index 745236abe..fedd63a38 100644 --- a/docs/admin/config/site-config.mdx +++ b/docs/admin/config/site-config.mdx @@ -21,7 +21,7 @@ All site configuration options and their default values are shown below. {/* SCHEMA_SYNC_START: admin/config/site.schema.json */} {/* WARNING: This section is auto-generated during releases. Do not edit manually. */} -{/* Last updated: 2026-04-27T11:17:39Z */} +{/* Last updated: 2026-06-16T23:55:06Z */} ```json { @@ -268,6 +268,7 @@ All site configuration options and their default values are shown below. // Experimental features and settings. "experimentalFeatures": { + "batchChanges.enableAgentWebSearch": false, "batchChanges.enableForkNameSuffix": false, "batchChanges.enablePerforce": false, "codeintelSyntacticIndexing.enabled": false, @@ -311,7 +312,6 @@ All site configuration options and their default values are shown below. "requireUpperandLowerCase": true }, "perforceChangelistMapping": "enabled", - "preciseCodeNavFlow": "v2", "pythonPackages": "disabled", "ranking": { "flushWallTimeMS": 500, @@ -677,9 +677,11 @@ All site configuration options and their default values are shown below. // "enabled": true // } // - { + // "disabledMessage": "Need an account? [Open a ticket](https://tickets.example.com/new) to request access.", // "enabled": false // } "auth.accessRequest": { + "disabledMessage": null, "enabled": true }, @@ -722,6 +724,9 @@ All site configuration options and their default values are shown below. ] }, + // When enabled, the sign-in and sign-up pages can be loaded inside an iframe (e.g. for embedded applications). When disabled (the default), these pages reject framing requests using Sec-Fetch-Dest/Sec-Fetch-Site fetch metadata headers to prevent clickjacking attacks. Password reset endpoints are always protected regardless of this setting. + "auth.allowEmbeddedAuth": false, + // IP allowlist for access to the Sourcegraph instance. If set, only requests from these IP addresses will be allowed. By default client IP is inferred connected client IP address, and you may configure to use a request header to determine the user IP. "auth.allowedIpAddress": { "clientIpAddress": null, @@ -901,7 +906,7 @@ All site configuration options and their default values are shown below. // The tag to use for the batcheshelper image in executors when using native execution. Use this value to use a custom tag. Sourcegraph by default uses the best match, so use this setting only if you really need to overwrite it and make sure to keep it updated. // Other example values: - // - "4.1.0" + // - "7.2.0" "executors.batcheshelperImageTag": null, // The URL where Sourcegraph executors can reach the Sourcegraph instance. If not set, defaults to externalURL. URLs with a path (other than `/`) are not allowed. For Docker executors, the special hostname `host.docker.internal` can be used to refer to the Docker container's host. @@ -917,10 +922,6 @@ All site configuration options and their default values are shown below. // The configuration for multiqueue executors. "executors.multiqueue": { "dequeueCacheConfig": { - "agenticbatchchanges": { - "limit": 50, - "weight": 1 - }, "batches": { "limit": 50, "weight": 4 @@ -937,7 +938,7 @@ All site configuration options and their default values are shown below. // The tag to use for the src-cli image in executors. Use this value to use a custom tag. Sourcegraph by default uses the best match, so use this setting only if you really need to overwrite it and make sure to keep it updated. // Other example values: - // - "4.1.0" + // - "7.2.0" "executors.srcCLIImageTag": null, diff --git a/docs/admin/repo/perforce.mdx b/docs/admin/repo/perforce.mdx index 25fc0a683..d22d29063 100644 --- a/docs/admin/repo/perforce.mdx +++ b/docs/admin/repo/perforce.mdx @@ -228,7 +228,7 @@ With this setting, Sourcegraph will ignore any rules with a host other than `*`, {/* SCHEMA_SYNC_START: admin/code_hosts/perforce.schema.json */} {/* WARNING: This section is auto-generated during releases. Do not edit manually. */} -{/* Last updated: 2026-04-27T11:17:39Z */} +{/* Last updated: 2026-06-16T23:55:06Z */} ```json { // If non-null, enforces Perforce depot permissions. diff --git a/docs/admin/telemetry/private-metadata-allowlist.mdx b/docs/admin/telemetry/private-metadata-allowlist.mdx index 78bdcc02a..965a8b987 100644 --- a/docs/admin/telemetry/private-metadata-allowlist.mdx +++ b/docs/admin/telemetry/private-metadata-allowlist.mdx @@ -33,6 +33,7 @@ To learn more, refer to the [telemetry documentation](https://sourcegraph.com/do | `cody.modelSelector` | _(all)_ | `modelId` — High-cardinality model identifier; helpful for determining the model selected in the model selector.
`modelProvider` — High-cardinality model provider; helpful for determining the model selected in the model selector. | | `cody.smart-apply.context` | `applied` | `model` — High-cardinality model identifier; helpful for determining the model that was selected. | | `deepsearch` | `search.toolcall` | `toolName` — High-cardinality tool name; helpful for determining which tools are being used during deep search.
`toolId` — High-cardinality tool identifier; helpful for determining which tools are being used during deep search.
`model` — High-cardinality model identifier; helpful for determining which models are being used during deep search. | +| `deepsearch` | `search.categorized` | `topics` — LLM-extracted topic keywords for the question (e.g. authentication, batch-changes); used for product usage reporting. | | `admin.users` | `delete` | `userIDs` — Numeric identifiers of users being deleted; needed for audit and analytics of admin user management actions. | | `externalApi` | `request` | `procedure` — ConnectRPC procedure path (e.g. '/sourcegraph.users.v1.UsersService/GetUser'); not sensitive and needed to distinguish which external API RPCs are being used. | | `metering` | `consume` | `meteringEventId` — The UUID of the billing event in the metering export queue, used to correlate billing events with telemetry events. | \ No newline at end of file diff --git a/docs/cli/references/abc/index.mdx b/docs/cli/references/abc/index.mdx new file mode 100644 index 000000000..b0b1ac794 --- /dev/null +++ b/docs/cli/references/abc/index.mdx @@ -0,0 +1,15 @@ +# `src abc` + +manages agentic batch changes. + + + +## Usage + +```sh +$ src abc [command options] +``` + +## Subcommands + +* [`variables`](abc/variables) \ No newline at end of file diff --git a/docs/cli/references/abc/variables/delete.mdx b/docs/cli/references/abc/variables/delete.mdx new file mode 100644 index 000000000..f62ab0543 --- /dev/null +++ b/docs/cli/references/abc/variables/delete.mdx @@ -0,0 +1,32 @@ +# `src abc variables delete` + +Delete variables on a workflow instance. + +Delete workflow instance variables + +Examples: + + Delete a variable from a workflow instance: + + $ src abc variables delete QWdlbnRpY1dvcmtmbG93SW5zdGFuY2U6MQ== approval + + Delete multiple variables in one request: + + $ src abc variables delete QWdlbnRpY1dvcmtmbG93SW5zdGFuY2U6MQ== --var approval --var checkpoints + +## Usage + +```sh +$ src abc variables delete [options] [ ...] +``` + +## Flags + +| Name | Description | Default Value | +|------|-------------|---------------| +| `--dump-requests` | Log GraphQL requests and responses to stdout | `false`| +| `--get-curl` | Print the curl command for executing this query and exit (WARNING: includes printing your access token!) | `false`| +| `--insecure-skip-verify` | Skip validation of TLS certificates against trusted chains | `false`| +| `--trace` | Log the trace ID for requests. See https://docs.sourcegraph.com/admin/observability/tracing | `false`| +| `--user-agent-telemetry` | Include the operating system and architecture in the User-Agent sent with requests to Sourcegraph | `true`| +| `--var` | Variable name to delete. Repeat for multiple names. | ``| \ No newline at end of file diff --git a/docs/cli/references/abc/variables/index.mdx b/docs/cli/references/abc/variables/index.mdx new file mode 100644 index 000000000..d6390599c --- /dev/null +++ b/docs/cli/references/abc/variables/index.mdx @@ -0,0 +1,16 @@ +# `src abc variables` + +manage workflow instance variables. + + + +## Usage + +```sh +$ src abc variables [command options] +``` + +## Subcommands + +* [`delete`](variables/delete) +* [`set`](variables/set) \ No newline at end of file diff --git a/docs/cli/references/abc/variables/set.mdx b/docs/cli/references/abc/variables/set.mdx new file mode 100644 index 000000000..944a250f4 --- /dev/null +++ b/docs/cli/references/abc/variables/set.mdx @@ -0,0 +1,38 @@ +# `src abc variables set` + +Set variables on a workflow instance. + +Set workflow instance variables + +Examples: + + Set a string variable on a workflow instance: + + $ src abc variables set QWdlbnRpY1dvcmtmbG93SW5zdGFuY2U6MQ== prompt="tighten the review criteria" + + Set multiple variables in one request: + + $ src abc variables set QWdlbnRpY1dvcmtmbG93SW5zdGFuY2U6MQ== --var prompt="tighten the review criteria" --var checkpoints='[1,2,3]' + + Set a structured JSON value: + + $ src abc variables set QWdlbnRpY1dvcmtmbG93SW5zdGFuY2U6MQ== checkpoints='[1,2,3]' + +NOTE: Values are interpreted as JSON literals when valid. Otherwise they are sent as plain strings. + +## Usage + +```sh +$ src abc variables set [options] [= ...] +``` + +## Flags + +| Name | Description | Default Value | +|------|-------------|---------------| +| `--dump-requests` | Log GraphQL requests and responses to stdout | `false`| +| `--get-curl` | Print the curl command for executing this query and exit (WARNING: includes printing your access token!) | `false`| +| `--insecure-skip-verify` | Skip validation of TLS certificates against trusted chains | `false`| +| `--trace` | Log the trace ID for requests. See https://docs.sourcegraph.com/admin/observability/tracing | `false`| +| `--user-agent-telemetry` | Include the operating system and architecture in the User-Agent sent with requests to Sourcegraph | `true`| +| `--var` | Variable assignment in <name>=<value> form. Repeat to set multiple variables. | ``| \ No newline at end of file diff --git a/docs/cli/references/api.mdx b/docs/cli/references/api.mdx index 2204e1b1f..7ef9c324f 100644 --- a/docs/cli/references/api.mdx +++ b/docs/cli/references/api.mdx @@ -1,37 +1,6 @@ # `src api` - -## Flags - -| Name | Description | Default Value | -|------|-------------|---------------| -| `-dump-requests` | Log GraphQL requests and responses to stdout | `false` | -| `-get-curl` | Print the curl command for executing this query and exit (WARNING: includes printing your access token!) | `false` | -| `-insecure-skip-verify` | Skip validation of TLS certificates against trusted chains | `false` | -| `-query` | GraphQL query to execute, e.g. 'query \{ currentUser \{ username \} \}' (stdin otherwise) | | -| `-trace` | Log the trace ID for requests. See https://docs.sourcegraph.com/admin/observability/tracing | `false` | -| `-user-agent-telemetry` | Include the operating system and architecture in the User-Agent sent with requests to Sourcegraph | `true` | -| `-vars` | GraphQL query variables to include as JSON string, e.g. '\{"var": "val", "var2": "val2"\}' | | - - -## Usage - -``` -Usage of 'src api': - -dump-requests - Log GraphQL requests and responses to stdout - -get-curl - Print the curl command for executing this query and exit (WARNING: includes printing your access token!) - -insecure-skip-verify - Skip validation of TLS certificates against trusted chains - -query string - GraphQL query to execute, e.g. 'query { currentUser { username } }' (stdin otherwise) - -trace - Log the trace ID for requests. See https://docs.sourcegraph.com/admin/observability/tracing - -user-agent-telemetry - Include the operating system and architecture in the User-Agent sent with requests to Sourcegraph (default true) - -vars string - GraphQL query variables to include as JSON string, e.g. '{"var": "val", "var2": "val2"}' +interacts with the Sourcegraph GraphQL API. Exit codes: @@ -43,21 +12,35 @@ Examples: Run queries (identical behavior): - $ echo 'query { currentUser { username } }' | src api - $ src api -query='query { currentUser { username } }' + $ echo 'query \{ currentUser \{ username \} \}' | src api + $ src api -query='query \{ currentUser \{ username \} \}' Specify query variables: - $ echo '' | src api 'var1=val1' 'var2=val2' + $ echo '<query>' | src api 'var1=val1' 'var2=val2' Searching for "Router" and getting result count: - $ echo 'query($query: String!) { search(query: $query) { results { resultCount } } }' | src api 'query=Router' + $ echo 'query($query: String!) \{ search(query: $query) \{ results \{ resultCount \} \} \}' | src api 'query=Router' Get the curl command for a query (just add '-get-curl' in the flags section): - $ src api -get-curl -query='query { currentUser { username } }' + $ src api -get-curl -query='query \{ currentUser \{ username \} \}' +## Usage +```sh +$ src api [options] [variable=value ...] ``` - \ No newline at end of file + +## Flags + +| Name | Description | Default Value | +|------|-------------|---------------| +| `--dump-requests` | Log GraphQL requests and responses to stdout | `false`| +| `--get-curl` | Print the curl command for executing this query and exit (WARNING: includes printing your access token!) | `false`| +| `--insecure-skip-verify` | Skip validation of TLS certificates against trusted chains | `false`| +| `--query` | GraphQL query to execute, e.g. 'query \{ currentUser \{ username \} \}' (stdin otherwise) | ``| +| `--trace` | Log the trace ID for requests. See https://docs.sourcegraph.com/admin/observability/tracing | `false`| +| `--user-agent-telemetry` | Include the operating system and architecture in the User-Agent sent with requests to Sourcegraph | `true`| +| `--vars` | GraphQL query variables to include as JSON string, e.g. '\{"var": "val", "var2": "val2"\}' | ``| \ No newline at end of file diff --git a/docs/cli/references/auth/index.mdx b/docs/cli/references/auth/index.mdx new file mode 100644 index 000000000..9b08af382 --- /dev/null +++ b/docs/cli/references/auth/index.mdx @@ -0,0 +1,27 @@ +# `src auth` + +authentication helper commands. + +Authentication-related helper commands. + +Examples: + +Print the active auth token: + +$ src auth token +sgp_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx + +Print the current Authorization header: + +$ src auth token --header +Authorization: token sgp_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx + +## Usage + +```sh +$ src auth [command options] +``` + +## Subcommands + +* [`token`](auth/token) \ No newline at end of file diff --git a/docs/cli/references/auth/token.mdx b/docs/cli/references/auth/token.mdx new file mode 100644 index 000000000..e41e986ce --- /dev/null +++ b/docs/cli/references/auth/token.mdx @@ -0,0 +1,36 @@ +# `src auth token` + +prints the current authentication token or Authorization header. + +Print the current authentication token. + +Use --header to print a complete Authorization header instead. + +Examples: + +Raw token output: + +$ src auth token +sgp_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx + +Authorization header output: + +$ src auth token --header +Authorization: token sgp_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx + +If you are authenticated with OAuth instead of SRC_ACCESS_TOKEN, the header uses the Bearer scheme: + +$ src auth token --header +Authorization: Bearer eyJhbGciOi... + +## Usage + +```sh +$ src auth token [options] +``` + +## Flags + +| Name | Description | Default Value | +|------|-------------|---------------| +| `--header` | print the token as an Authorization header | `false`| \ No newline at end of file diff --git a/docs/cli/references/codeowners/create.mdx b/docs/cli/references/codeowners/create.mdx new file mode 100644 index 000000000..134edb219 --- /dev/null +++ b/docs/cli/references/codeowners/create.mdx @@ -0,0 +1,28 @@ +# `src codeowners create` + +create a codeowners file. + +Create a codeowners file for a repository. + +Examples: + + $ src codeowners create -repo='github.com/sourcegraph/sourcegraph' -f CODEOWNERS + $ src codeowners create -repo='github.com/sourcegraph/sourcegraph' -f - + +## Usage + +```sh +$ src codeowners create [options] +``` + +## Flags + +| Name | Description | Default Value | +|------|-------------|---------------| +| `--dump-requests` | Log GraphQL requests and responses to stdout | `false`| +| `--file, -f` | File path to read ownership information from (- for stdin) | ``| +| `--get-curl` | Print the curl command for executing this query and exit (WARNING: includes printing your access token!) | `false`| +| `--insecure-skip-verify` | Skip validation of TLS certificates against trusted chains | `false`| +| `--repo` | The repository to attach the data to | ``| +| `--trace` | Log the trace ID for requests. See https://docs.sourcegraph.com/admin/observability/tracing | `false`| +| `--user-agent-telemetry` | Include the operating system and architecture in the User-Agent sent with requests to Sourcegraph | `true`| \ No newline at end of file diff --git a/docs/cli/references/codeowners/delete.mdx b/docs/cli/references/codeowners/delete.mdx new file mode 100644 index 000000000..7450227b9 --- /dev/null +++ b/docs/cli/references/codeowners/delete.mdx @@ -0,0 +1,26 @@ +# `src codeowners delete` + +delete a codeowners file. + +Delete a codeowners file for a repository. + +Examples: + + $ src codeowners delete -repo='github.com/sourcegraph/sourcegraph' + +## Usage + +```sh +$ src codeowners delete [options] +``` + +## Flags + +| Name | Description | Default Value | +|------|-------------|---------------| +| `--dump-requests` | Log GraphQL requests and responses to stdout | `false`| +| `--get-curl` | Print the curl command for executing this query and exit (WARNING: includes printing your access token!) | `false`| +| `--insecure-skip-verify` | Skip validation of TLS certificates against trusted chains | `false`| +| `--repo` | The repository to delete the data for | ``| +| `--trace` | Log the trace ID for requests. See https://docs.sourcegraph.com/admin/observability/tracing | `false`| +| `--user-agent-telemetry` | Include the operating system and architecture in the User-Agent sent with requests to Sourcegraph | `true`| \ No newline at end of file diff --git a/docs/cli/references/codeowners/get.mdx b/docs/cli/references/codeowners/get.mdx new file mode 100644 index 000000000..259443674 --- /dev/null +++ b/docs/cli/references/codeowners/get.mdx @@ -0,0 +1,26 @@ +# `src codeowners get` + +returns the codeowners file for a repository, if it exists. + +Read the current codeowners file for a repository. + +Examples: + + $ src codeowners get -repo='github.com/sourcegraph/sourcegraph' + +## Usage + +```sh +$ src codeowners get [options] +``` + +## Flags + +| Name | Description | Default Value | +|------|-------------|---------------| +| `--dump-requests` | Log GraphQL requests and responses to stdout | `false`| +| `--get-curl` | Print the curl command for executing this query and exit (WARNING: includes printing your access token!) | `false`| +| `--insecure-skip-verify` | Skip validation of TLS certificates against trusted chains | `false`| +| `--repo` | The repository to attach the data to | ``| +| `--trace` | Log the trace ID for requests. See https://docs.sourcegraph.com/admin/observability/tracing | `false`| +| `--user-agent-telemetry` | Include the operating system and architecture in the User-Agent sent with requests to Sourcegraph | `true`| \ No newline at end of file diff --git a/docs/cli/references/codeowners/index.mdx b/docs/cli/references/codeowners/index.mdx new file mode 100644 index 000000000..f580d73d5 --- /dev/null +++ b/docs/cli/references/codeowners/index.mdx @@ -0,0 +1,29 @@ +# `src codeowners` + +manages ingested code ownership data. + +'src codeowners' manages ingested code ownership data in a Sourcegraph instance. + +Usage: + + src codeowners [command options] + +Examples: + + $ src codeowners get -repo='github.com/sourcegraph/sourcegraph' + $ src codeowners create -repo='github.com/sourcegraph/sourcegraph' -f CODEOWNERS + $ src codeowners update -repo='github.com/sourcegraph/sourcegraph' -f CODEOWNERS + $ src codeowners delete -repo='github.com/sourcegraph/sourcegraph' + +## Usage + +```sh +$ src codeowners [command options] +``` + +## Subcommands + +* [`create`](codeowners/create) +* [`delete`](codeowners/delete) +* [`get`](codeowners/get) +* [`update`](codeowners/update) \ No newline at end of file diff --git a/docs/cli/references/codeowners/update.mdx b/docs/cli/references/codeowners/update.mdx new file mode 100644 index 000000000..a7e2f7720 --- /dev/null +++ b/docs/cli/references/codeowners/update.mdx @@ -0,0 +1,28 @@ +# `src codeowners update` + +update a codeowners file. + +Update a codeowners file for a repository. + +Examples: + + $ src codeowners update -repo='github.com/sourcegraph/sourcegraph' -f CODEOWNERS + $ src codeowners update -repo='github.com/sourcegraph/sourcegraph' -f - + +## Usage + +```sh +$ src codeowners update [options] +``` + +## Flags + +| Name | Description | Default Value | +|------|-------------|---------------| +| `--dump-requests` | Log GraphQL requests and responses to stdout | `false`| +| `--file, -f` | File path to read ownership information from (- for stdin) | ``| +| `--get-curl` | Print the curl command for executing this query and exit (WARNING: includes printing your access token!) | `false`| +| `--insecure-skip-verify` | Skip validation of TLS certificates against trusted chains | `false`| +| `--repo` | The repository to attach the data to | ``| +| `--trace` | Log the trace ID for requests. See https://docs.sourcegraph.com/admin/observability/tracing | `false`| +| `--user-agent-telemetry` | Include the operating system and architecture in the User-Agent sent with requests to Sourcegraph | `true`| \ No newline at end of file diff --git a/docs/cli/references/index.mdx b/docs/cli/references/index.mdx index ce8d4246f..fb7a86720 100644 --- a/docs/cli/references/index.mdx +++ b/docs/cli/references/index.mdx @@ -3,22 +3,12 @@ ## Subcommands -* [`admin`](references/admin) +* [`abc`](references/abc) * [`api`](references/api) -* [`batch`](references/batch) -* [`code-intel`](references/code-intel) +* [`auth`](references/auth) * [`codeowners`](references/codeowners) -* [`config`](references/config) -* [`debug`](references/debug) -* [`extsvc`](references/extsvc) -* [`lsp`](references/lsp) +* [`login`](references/login) * [`orgs`](references/orgs) -* [`repos`](references/repos) -* [`search`](references/search) -* [`search-jobs`](references/search-jobs) -* [`serve-git`](references/serve-git) -* [`snapshot`](references/snapshot) -* [`teams`](references/teams) * [`users`](references/users) -* [`validate`](references/validate) +* [`version`](references/version) \ No newline at end of file diff --git a/docs/cli/references/login.mdx b/docs/cli/references/login.mdx index 19a74edaf..5fd07ddd8 100644 --- a/docs/cli/references/login.mdx +++ b/docs/cli/references/login.mdx @@ -1,20 +1,7 @@ # `src login` +authenticate to a Sourcegraph instance with your user credentials. -## Flags - -| Name | Description | Default Value | -|------|-------------|---------------| -| `-dump-requests` | Log GraphQL requests and responses to stdout | `false` | -| `-get-curl` | Print the curl command for executing this query and exit (WARNING: includes printing your access token!) | `false` | -| `-insecure-skip-verify` | Skip validation of TLS certificates against trusted chains | `false` | -| `-trace` | Log the trace ID for requests. See https://docs.sourcegraph.com/admin/observability/tracing | `false` | -| `-user-agent-telemetry` | Include the operating system and architecture in the User-Agent sent with requests to Sourcegraph | `true` | - - -## Usage - -``` 'src login' helps you authenticate 'src' to access a Sourcegraph instance with your user credentials. Usage: @@ -35,16 +22,18 @@ Examples: $ src login https://sourcegraph.com - -dump-requests - Log GraphQL requests and responses to stdout - -get-curl - Print the curl command for executing this query and exit (WARNING: includes printing your access token!) - -insecure-skip-verify - Skip validation of TLS certificates against trusted chains - -trace - Log the trace ID for requests. See https://docs.sourcegraph.com/admin/observability/tracing - -user-agent-telemetry - Include the operating system and architecture in the User-Agent sent with requests to Sourcegraph (default true) +## Usage +```sh +$ src login [command options] [SOURCEGRAPH_URL] ``` - \ No newline at end of file + +## Flags + +| Name | Description | Default Value | +|------|-------------|---------------| +| `--dump-requests` | Log GraphQL requests and responses to stdout | `false`| +| `--get-curl` | Print the curl command for executing this query and exit (WARNING: includes printing your access token!) | `false`| +| `--insecure-skip-verify` | Skip validation of TLS certificates against trusted chains | `false`| +| `--trace` | Log the trace ID for requests. See https://docs.sourcegraph.com/admin/observability/tracing | `false`| +| `--user-agent-telemetry` | Include the operating system and architecture in the User-Agent sent with requests to Sourcegraph | `true`| \ No newline at end of file diff --git a/docs/cli/references/orgs/create.mdx b/docs/cli/references/orgs/create.mdx index 2842349a3..54f11b857 100644 --- a/docs/cli/references/orgs/create.mdx +++ b/docs/cli/references/orgs/create.mdx @@ -1,37 +1,6 @@ # `src orgs create` - -## Flags - -| Name | Description | Default Value | -|------|-------------|---------------| -| `-display-name` | The new organization's display name. Defaults to organization name if unspecified. | | -| `-dump-requests` | Log GraphQL requests and responses to stdout | `false` | -| `-get-curl` | Print the curl command for executing this query and exit (WARNING: includes printing your access token!) | `false` | -| `-insecure-skip-verify` | Skip validation of TLS certificates against trusted chains | `false` | -| `-name` | The new organization's name. (required) | | -| `-trace` | Log the trace ID for requests. See https://docs.sourcegraph.com/admin/observability/tracing | `false` | -| `-user-agent-telemetry` | Include the operating system and architecture in the User-Agent sent with requests to Sourcegraph | `true` | - - -## Usage - -``` -Usage of 'src orgs create': - -display-name string - The new organization's display name. Defaults to organization name if unspecified. - -dump-requests - Log GraphQL requests and responses to stdout - -get-curl - Print the curl command for executing this query and exit (WARNING: includes printing your access token!) - -insecure-skip-verify - Skip validation of TLS certificates against trusted chains - -name string - The new organization's name. (required) - -trace - Log the trace ID for requests. See https://docs.sourcegraph.com/admin/observability/tracing - -user-agent-telemetry - Include the operating system and architecture in the User-Agent sent with requests to Sourcegraph (default true) +creates an organization. Examples: @@ -39,7 +8,20 @@ Examples: $ src orgs create -name=abc-org -display-name='ABC Organization' +## Usage - +```sh +$ src orgs create [options] ``` - \ No newline at end of file + +## Flags + +| Name | Description | Default Value | +|------|-------------|---------------| +| `--display-name` | The new organization's display name. Defaults to organization name if unspecified. | ``| +| `--dump-requests` | Log GraphQL requests and responses to stdout | `false`| +| `--get-curl` | Print the curl command for executing this query and exit (WARNING: includes printing your access token!) | `false`| +| `--insecure-skip-verify` | Skip validation of TLS certificates against trusted chains | `false`| +| `--name` | The new organization's name. (required) | ``| +| `--trace` | Log the trace ID for requests. See https://docs.sourcegraph.com/admin/observability/tracing | `false`| +| `--user-agent-telemetry` | Include the operating system and architecture in the User-Agent sent with requests to Sourcegraph | `true`| \ No newline at end of file diff --git a/docs/cli/references/orgs/delete.mdx b/docs/cli/references/orgs/delete.mdx index 5175de533..586e806b7 100644 --- a/docs/cli/references/orgs/delete.mdx +++ b/docs/cli/references/orgs/delete.mdx @@ -1,34 +1,6 @@ # `src orgs delete` - -## Flags - -| Name | Description | Default Value | -|------|-------------|---------------| -| `-dump-requests` | Log GraphQL requests and responses to stdout | `false` | -| `-get-curl` | Print the curl command for executing this query and exit (WARNING: includes printing your access token!) | `false` | -| `-id` | The ID of the organization to delete. | | -| `-insecure-skip-verify` | Skip validation of TLS certificates against trusted chains | `false` | -| `-trace` | Log the trace ID for requests. See https://docs.sourcegraph.com/admin/observability/tracing | `false` | -| `-user-agent-telemetry` | Include the operating system and architecture in the User-Agent sent with requests to Sourcegraph | `true` | - - -## Usage - -``` -Usage of 'src orgs delete': - -dump-requests - Log GraphQL requests and responses to stdout - -get-curl - Print the curl command for executing this query and exit (WARNING: includes printing your access token!) - -id string - The ID of the organization to delete. - -insecure-skip-verify - Skip validation of TLS certificates against trusted chains - -trace - Log the trace ID for requests. See https://docs.sourcegraph.com/admin/observability/tracing - -user-agent-telemetry - Include the operating system and architecture in the User-Agent sent with requests to Sourcegraph (default true) +deletes an organization. Examples: @@ -38,13 +10,25 @@ Examples: Delete an organization by name: - $ src orgs delete -id=$(src orgs get -f='{{.ID}}' -name=abc-org) + $ src orgs delete -id=$(src orgs get -f='\{\{.ID\}\}' -name=abc-org) Delete all organizations that match the query - $ src orgs list -f='{{.ID}}' -query=abc-org | xargs -n 1 -I ORGID src orgs delete -id=ORGID - + $ src orgs list -f='\{\{.ID\}\}' -query=abc-org | xargs -n 1 -I ORGID src orgs delete -id=ORGID +## Usage +```sh +$ src orgs delete [options] ``` - \ No newline at end of file + +## Flags + +| Name | Description | Default Value | +|------|-------------|---------------| +| `--dump-requests` | Log GraphQL requests and responses to stdout | `false`| +| `--get-curl` | Print the curl command for executing this query and exit (WARNING: includes printing your access token!) | `false`| +| `--id` | The ID of the organization to delete. | ``| +| `--insecure-skip-verify` | Skip validation of TLS certificates against trusted chains | `false`| +| `--trace` | Log the trace ID for requests. See https://docs.sourcegraph.com/admin/observability/tracing | `false`| +| `--user-agent-telemetry` | Include the operating system and architecture in the User-Agent sent with requests to Sourcegraph | `true`| \ No newline at end of file diff --git a/docs/cli/references/orgs/get.mdx b/docs/cli/references/orgs/get.mdx index 64e0c0295..443647055 100644 --- a/docs/cli/references/orgs/get.mdx +++ b/docs/cli/references/orgs/get.mdx @@ -1,37 +1,6 @@ # `src orgs get` - -## Flags - -| Name | Description | Default Value | -|------|-------------|---------------| -| `-dump-requests` | Log GraphQL requests and responses to stdout | `false` | -| `-f` | Format for the output, using the syntax of Go package text/template. (e.g. "\{\{.ID\}\}: \{\{.Name\}\} (\{\{.DisplayName\}\})") | `{{.\|json}}` | -| `-get-curl` | Print the curl command for executing this query and exit (WARNING: includes printing your access token!) | `false` | -| `-insecure-skip-verify` | Skip validation of TLS certificates against trusted chains | `false` | -| `-name` | Look up organization by name. (e.g. "abc-org") | | -| `-trace` | Log the trace ID for requests. See https://docs.sourcegraph.com/admin/observability/tracing | `false` | -| `-user-agent-telemetry` | Include the operating system and architecture in the User-Agent sent with requests to Sourcegraph | `true` | - - -## Usage - -``` -Usage of 'src orgs get': - -dump-requests - Log GraphQL requests and responses to stdout - -f string - Format for the output, using the syntax of Go package text/template. (e.g. "{{.ID}}: {{.Name}} ({{.DisplayName}})") (default "{{.|json}}") - -get-curl - Print the curl command for executing this query and exit (WARNING: includes printing your access token!) - -insecure-skip-verify - Skip validation of TLS certificates against trusted chains - -name string - Look up organization by name. (e.g. "abc-org") - -trace - Log the trace ID for requests. See https://docs.sourcegraph.com/admin/observability/tracing - -user-agent-telemetry - Include the operating system and architecture in the User-Agent sent with requests to Sourcegraph (default true) +gets an organization. Examples: @@ -41,9 +10,22 @@ Examples: List usernames of members of organization named abc-org (replace '.Username' with '.ID' to list user IDs): - $ src orgs get -f '{{range $i,$ := .Members.Nodes}}{{if ne $i 0}}{{"\n"}}{{end}}{{.Username}}{{end}}' -name=abc-org - + $ src orgs get -f '\{\{range $i,$ := .Members.Nodes\}\}\{\{if ne $i 0\}\}\{\{"\n"\}\}\{\{end\}\}\{\{.Username\}\}\{\{end\}\}' -name=abc-org +## Usage +```sh +$ src orgs get [options] ``` - \ No newline at end of file + +## Flags + +| Name | Description | Default Value | +|------|-------------|---------------| +| `--dump-requests` | Log GraphQL requests and responses to stdout | `false`| +| `--get-curl` | Print the curl command for executing this query and exit (WARNING: includes printing your access token!) | `false`| +| `--insecure-skip-verify` | Skip validation of TLS certificates against trusted chains | `false`| +| `--name` | Look up organization by name. (e.g. "abc-org") | ``| +| `--trace` | Log the trace ID for requests. See https://docs.sourcegraph.com/admin/observability/tracing | `false`| +| `--user-agent-telemetry` | Include the operating system and architecture in the User-Agent sent with requests to Sourcegraph | `true`| +| `-f` | Format for the output, using the syntax of Go package text/template. (e.g. "\{\{.ID\}\}: \{\{.Name\}\} (\{\{.DisplayName\}\})") \| `"\{\{.\\|json\}\}"`| \ No newline at end of file diff --git a/docs/cli/references/orgs/index.mdx b/docs/cli/references/orgs/index.mdx index a3b4977dc..e816a97fa 100644 --- a/docs/cli/references/orgs/index.mdx +++ b/docs/cli/references/orgs/index.mdx @@ -1,11 +1,33 @@ # `src orgs` -## Subcommands +manages organizations. + +'src orgs' is a tool that manages organizations on a Sourcegraph instance. + +Usage: + + src orgs command [command options] + +The commands are: + list lists organizations + get gets an organization + create creates an organization + delete deletes an organization + members manages organization members + +Use "src orgs [command] -h" for more information about a command. + +## Usage + +```sh +$ src orgs [command options] +``` + +## Subcommands * [`create`](orgs/create) * [`delete`](orgs/delete) * [`get`](orgs/get) * [`list`](orgs/list) -* [`members`](orgs/members) - \ No newline at end of file +* [`members`](orgs/members) \ No newline at end of file diff --git a/docs/cli/references/orgs/list.mdx b/docs/cli/references/orgs/list.mdx index 06f4bacb9..9bb10b521 100644 --- a/docs/cli/references/orgs/list.mdx +++ b/docs/cli/references/orgs/list.mdx @@ -1,40 +1,6 @@ # `src orgs list` - -## Flags - -| Name | Description | Default Value | -|------|-------------|---------------| -| `-dump-requests` | Log GraphQL requests and responses to stdout | `false` | -| `-f` | Format for the output, using the syntax of Go package text/template. (e.g. "\{\{.ID\}\}: \{\{.Name\}\} (\{\{.DisplayName\}\})" or "\{\{.\|json\}\}") | `{{.Name}}` | -| `-first` | Returns the first n organizations from the list. | `1000` | -| `-get-curl` | Print the curl command for executing this query and exit (WARNING: includes printing your access token!) | `false` | -| `-insecure-skip-verify` | Skip validation of TLS certificates against trusted chains | `false` | -| `-query` | Returns organizations whose names match the query. (e.g. "alice") | | -| `-trace` | Log the trace ID for requests. See https://docs.sourcegraph.com/admin/observability/tracing | `false` | -| `-user-agent-telemetry` | Include the operating system and architecture in the User-Agent sent with requests to Sourcegraph | `true` | - - -## Usage - -``` -Usage of 'src orgs list': - -dump-requests - Log GraphQL requests and responses to stdout - -f string - Format for the output, using the syntax of Go package text/template. (e.g. "{{.ID}}: {{.Name}} ({{.DisplayName}})" or "{{.|json}}") (default "{{.Name}}") - -first int - Returns the first n organizations from the list. (default 1000) - -get-curl - Print the curl command for executing this query and exit (WARNING: includes printing your access token!) - -insecure-skip-verify - Skip validation of TLS certificates against trusted chains - -query string - Returns organizations whose names match the query. (e.g. "alice") - -trace - Log the trace ID for requests. See https://docs.sourcegraph.com/admin/observability/tracing - -user-agent-telemetry - Include the operating system and architecture in the User-Agent sent with requests to Sourcegraph (default true) +lists organizations. Examples: @@ -46,7 +12,21 @@ Examples: $ src orgs list -query='myquery' +## Usage - +```sh +$ src orgs list [options] ``` - \ No newline at end of file + +## Flags + +| Name | Description | Default Value | +|------|-------------|---------------| +| `--dump-requests` | Log GraphQL requests and responses to stdout | `false`| +| `--first` | Returns the first n organizations from the list. | `1000`| +| `--get-curl` | Print the curl command for executing this query and exit (WARNING: includes printing your access token!) | `false`| +| `--insecure-skip-verify` | Skip validation of TLS certificates against trusted chains | `false`| +| `--query` | Returns organizations whose names match the query. (e.g. "alice") | ``| +| `--trace` | Log the trace ID for requests. See https://docs.sourcegraph.com/admin/observability/tracing | `false`| +| `--user-agent-telemetry` | Include the operating system and architecture in the User-Agent sent with requests to Sourcegraph | `true`| +| `-f` | Format for the output, using the syntax of Go package text/template. (e.g. "\{\{.ID\}\}: \{\{.Name\}\} (\{\{.DisplayName\}\})" or "\{\{.\|json\}\}") \| `"\{\{.Name\}\}"`| \ No newline at end of file diff --git a/docs/cli/references/orgs/members/add.mdx b/docs/cli/references/orgs/members/add.mdx index 3d87f9135..5e398363e 100644 --- a/docs/cli/references/orgs/members/add.mdx +++ b/docs/cli/references/orgs/members/add.mdx @@ -1,45 +1,27 @@ # `src orgs members add` +adds a user as a member to an organization. -## Flags +Examples: -| Name | Description | Default Value | -|------|-------------|---------------| -| `-dump-requests` | Log GraphQL requests and responses to stdout | `false` | -| `-get-curl` | Print the curl command for executing this query and exit (WARNING: includes printing your access token!) | `false` | -| `-insecure-skip-verify` | Skip validation of TLS certificates against trusted chains | `false` | -| `-org-id` | ID of organization to which to add member. (required) | | -| `-trace` | Log the trace ID for requests. See https://docs.sourcegraph.com/admin/observability/tracing | `false` | -| `-user-agent-telemetry` | Include the operating system and architecture in the User-Agent sent with requests to Sourcegraph | `true` | -| `-username` | Username of user to add as member. (required) | | + Add a member (alice) to an organization (abc-org): + $ src orgs members add -org-id=$(src org get -f '\{\{.ID\}\}' -name=abc-org) -username=alice ## Usage +```sh +$ src orgs members add [options] ``` -Usage of 'src orgs members add': - -dump-requests - Log GraphQL requests and responses to stdout - -get-curl - Print the curl command for executing this query and exit (WARNING: includes printing your access token!) - -insecure-skip-verify - Skip validation of TLS certificates against trusted chains - -org-id string - ID of organization to which to add member. (required) - -trace - Log the trace ID for requests. See https://docs.sourcegraph.com/admin/observability/tracing - -user-agent-telemetry - Include the operating system and architecture in the User-Agent sent with requests to Sourcegraph (default true) - -username string - Username of user to add as member. (required) - -Examples: - - Add a member (alice) to an organization (abc-org): - - $ src orgs members add -org-id=$(src org get -f '{{.ID}}' -name=abc-org) -username=alice - +## Flags -``` - \ No newline at end of file +| Name | Description | Default Value | +|------|-------------|---------------| +| `--dump-requests` | Log GraphQL requests and responses to stdout | `false`| +| `--get-curl` | Print the curl command for executing this query and exit (WARNING: includes printing your access token!) | `false`| +| `--insecure-skip-verify` | Skip validation of TLS certificates against trusted chains | `false`| +| `--org-id` | ID of organization to which to add member. (required) | ``| +| `--trace` | Log the trace ID for requests. See https://docs.sourcegraph.com/admin/observability/tracing | `false`| +| `--user-agent-telemetry` | Include the operating system and architecture in the User-Agent sent with requests to Sourcegraph | `true`| +| `--username` | Username of user to add as member. (required) | ``| \ No newline at end of file diff --git a/docs/cli/references/orgs/members/index.mdx b/docs/cli/references/orgs/members/index.mdx index bfaf71b88..a63b687cb 100644 --- a/docs/cli/references/orgs/members/index.mdx +++ b/docs/cli/references/orgs/members/index.mdx @@ -1,8 +1,27 @@ # `src orgs members` -## Subcommands +manages organization members. + +'src orgs members' is a tool that manages organization members on a Sourcegraph instance. + +Usage: + + src orgs members command [command options] + +The commands are: + add adds a user as a member to an organization + remove removes a user as a member from an organization + +Use "src orgs members [command] -h" for more information about a command. + +## Usage + +```sh +$ src orgs members [command options] +``` + +## Subcommands * [`add`](members/add) -* [`remove`](members/remove) - \ No newline at end of file +* [`remove`](members/remove) \ No newline at end of file diff --git a/docs/cli/references/orgs/members/remove.mdx b/docs/cli/references/orgs/members/remove.mdx index e4f09aa23..d9b8062f4 100644 --- a/docs/cli/references/orgs/members/remove.mdx +++ b/docs/cli/references/orgs/members/remove.mdx @@ -1,44 +1,27 @@ # `src orgs members remove` +removes a user as a member from an organization. -## Flags +Examples: -| Name | Description | Default Value | -|------|-------------|---------------| -| `-dump-requests` | Log GraphQL requests and responses to stdout | `false` | -| `-get-curl` | Print the curl command for executing this query and exit (WARNING: includes printing your access token!) | `false` | -| `-insecure-skip-verify` | Skip validation of TLS certificates against trusted chains | `false` | -| `-org-id` | ID of organization from which to remove member. (required) | | -| `-trace` | Log the trace ID for requests. See https://docs.sourcegraph.com/admin/observability/tracing | `false` | -| `-user-agent-telemetry` | Include the operating system and architecture in the User-Agent sent with requests to Sourcegraph | `true` | -| `-user-id` | ID of user to remove as member. (required) | | + Remove a member (alice) from an organization (abc-org): + $ src orgs members remove -org-id=$(src org get -f '\{\{.ID\}\}' -name=abc-org) -user-id=$(src users get -f '\{\{.ID\}\}' -username=alice) ## Usage +```sh +$ src orgs members remove [options] ``` -Usage of 'src orgs members remove': - -dump-requests - Log GraphQL requests and responses to stdout - -get-curl - Print the curl command for executing this query and exit (WARNING: includes printing your access token!) - -insecure-skip-verify - Skip validation of TLS certificates against trusted chains - -org-id string - ID of organization from which to remove member. (required) - -trace - Log the trace ID for requests. See https://docs.sourcegraph.com/admin/observability/tracing - -user-agent-telemetry - Include the operating system and architecture in the User-Agent sent with requests to Sourcegraph (default true) - -user-id string - ID of user to remove as member. (required) - -Examples: - - Remove a member (alice) from an organization (abc-org): - - $ src orgs members remove -org-id=$(src org get -f '{{.ID}}' -name=abc-org) -user-id=$(src users get -f '{{.ID}}' -username=alice) +## Flags -``` - \ No newline at end of file +| Name | Description | Default Value | +|------|-------------|---------------| +| `--dump-requests` | Log GraphQL requests and responses to stdout | `false`| +| `--get-curl` | Print the curl command for executing this query and exit (WARNING: includes printing your access token!) | `false`| +| `--insecure-skip-verify` | Skip validation of TLS certificates against trusted chains | `false`| +| `--org-id` | ID of organization from which to remove member. (required) | ``| +| `--trace` | Log the trace ID for requests. See https://docs.sourcegraph.com/admin/observability/tracing | `false`| +| `--user-agent-telemetry` | Include the operating system and architecture in the User-Agent sent with requests to Sourcegraph | `true`| +| `--user-id` | ID of user to remove as member. (required) | ``| \ No newline at end of file diff --git a/docs/cli/references/users/create.mdx b/docs/cli/references/users/create.mdx index 096cfb496..8c47135c2 100644 --- a/docs/cli/references/users/create.mdx +++ b/docs/cli/references/users/create.mdx @@ -1,40 +1,6 @@ # `src users create` - -## Flags - -| Name | Description | Default Value | -|------|-------------|---------------| -| `-dump-requests` | Log GraphQL requests and responses to stdout | `false` | -| `-email` | The new user's email address. (required) | | -| `-get-curl` | Print the curl command for executing this query and exit (WARNING: includes printing your access token!) | `false` | -| `-insecure-skip-verify` | Skip validation of TLS certificates against trusted chains | `false` | -| `-reset-password-url` | Print the reset password URL to manually send to the new user. | `false` | -| `-trace` | Log the trace ID for requests. See https://docs.sourcegraph.com/admin/observability/tracing | `false` | -| `-user-agent-telemetry` | Include the operating system and architecture in the User-Agent sent with requests to Sourcegraph | `true` | -| `-username` | The new user's username. (required) | | - - -## Usage - -``` -Usage of 'src users create': - -dump-requests - Log GraphQL requests and responses to stdout - -email string - The new user's email address. (required) - -get-curl - Print the curl command for executing this query and exit (WARNING: includes printing your access token!) - -insecure-skip-verify - Skip validation of TLS certificates against trusted chains - -reset-password-url - Print the reset password URL to manually send to the new user. - -trace - Log the trace ID for requests. See https://docs.sourcegraph.com/admin/observability/tracing - -user-agent-telemetry - Include the operating system and architecture in the User-Agent sent with requests to Sourcegraph (default true) - -username string - The new user's username. (required) +creates a user account. Examples: @@ -42,7 +8,21 @@ Examples: $ src users create -username=alice -email=alice@example.com +## Usage - +```sh +$ src users create [options] ``` - \ No newline at end of file + +## Flags + +| Name | Description | Default Value | +|------|-------------|---------------| +| `--dump-requests` | Log GraphQL requests and responses to stdout | `false`| +| `--email` | The new user's email address | ``| +| `--get-curl` | Print the curl command for executing this query and exit (WARNING: includes printing your access token!) | `false`| +| `--insecure-skip-verify` | Skip validation of TLS certificates against trusted chains | `false`| +| `--reset-password-url` | Print the reset password URL to manually send to the new user. | `false`| +| `--trace` | Log the trace ID for requests. See https://docs.sourcegraph.com/admin/observability/tracing | `false`| +| `--user-agent-telemetry` | Include the operating system and architecture in the User-Agent sent with requests to Sourcegraph | `true`| +| `--username` | The new user's username. | ``| \ No newline at end of file diff --git a/docs/cli/references/users/delete.mdx b/docs/cli/references/users/delete.mdx index 72b0db301..a616295da 100644 --- a/docs/cli/references/users/delete.mdx +++ b/docs/cli/references/users/delete.mdx @@ -1,34 +1,6 @@ # `src users delete` - -## Flags - -| Name | Description | Default Value | -|------|-------------|---------------| -| `-dump-requests` | Log GraphQL requests and responses to stdout | `false` | -| `-get-curl` | Print the curl command for executing this query and exit (WARNING: includes printing your access token!) | `false` | -| `-id` | The ID of the user to delete. | | -| `-insecure-skip-verify` | Skip validation of TLS certificates against trusted chains | `false` | -| `-trace` | Log the trace ID for requests. See https://docs.sourcegraph.com/admin/observability/tracing | `false` | -| `-user-agent-telemetry` | Include the operating system and architecture in the User-Agent sent with requests to Sourcegraph | `true` | - - -## Usage - -``` -Usage of 'src users delete': - -dump-requests - Log GraphQL requests and responses to stdout - -get-curl - Print the curl command for executing this query and exit (WARNING: includes printing your access token!) - -id string - The ID of the user to delete. - -insecure-skip-verify - Skip validation of TLS certificates against trusted chains - -trace - Log the trace ID for requests. See https://docs.sourcegraph.com/admin/observability/tracing - -user-agent-telemetry - Include the operating system and architecture in the User-Agent sent with requests to Sourcegraph (default true) +deletes a user account. Examples: @@ -38,13 +10,25 @@ Examples: Delete a user account by username: - $ src users delete -id=$(src users get -f='{{.ID}}' -username=alice) + $ src users delete -id=$(src users get -f='\{\{.ID\}\}' -username=alice) Delete all user accounts that match the query: - $ src users list -f='{{.ID}}' -query=alice | xargs -n 1 -I USERID src users delete -id=USERID - + $ src users list -f='\{\{.ID\}\}' -query=alice | xargs -n 1 -I USERID src users delete -id=USERID +## Usage +```sh +$ src users delete [options] ``` - \ No newline at end of file + +## Flags + +| Name | Description | Default Value | +|------|-------------|---------------| +| `--dump-requests` | Log GraphQL requests and responses to stdout | `false`| +| `--get-curl` | Print the curl command for executing this query and exit (WARNING: includes printing your access token!) | `false`| +| `--id` | The ID of the user to delete. | ``| +| `--insecure-skip-verify` | Skip validation of TLS certificates against trusted chains | `false`| +| `--trace` | Log the trace ID for requests. See https://docs.sourcegraph.com/admin/observability/tracing | `false`| +| `--user-agent-telemetry` | Include the operating system and architecture in the User-Agent sent with requests to Sourcegraph | `true`| \ No newline at end of file diff --git a/docs/cli/references/users/get.mdx b/docs/cli/references/users/get.mdx index 15054f468..d434569dd 100644 --- a/docs/cli/references/users/get.mdx +++ b/docs/cli/references/users/get.mdx @@ -1,40 +1,6 @@ # `src users get` - -## Flags - -| Name | Description | Default Value | -|------|-------------|---------------| -| `-dump-requests` | Log GraphQL requests and responses to stdout | `false` | -| `-email` | Look up user by email. (e.g. "alice@sourcegraph.com") | | -| `-f` | Format for the output, using the syntax of Go package text/template. (e.g. "\{\{.ID\}\}: \{\{.Username\}\} (\{\{.DisplayName\}\})") | `{{.\|json}}` | -| `-get-curl` | Print the curl command for executing this query and exit (WARNING: includes printing your access token!) | `false` | -| `-insecure-skip-verify` | Skip validation of TLS certificates against trusted chains | `false` | -| `-trace` | Log the trace ID for requests. See https://docs.sourcegraph.com/admin/observability/tracing | `false` | -| `-user-agent-telemetry` | Include the operating system and architecture in the User-Agent sent with requests to Sourcegraph | `true` | -| `-username` | Look up user by username. (e.g. "alice") | | - - -## Usage - -``` -Usage of 'src users get': - -dump-requests - Log GraphQL requests and responses to stdout - -email string - Look up user by email. (e.g. "alice@sourcegraph.com") - -f string - Format for the output, using the syntax of Go package text/template. (e.g. "{{.ID}}: {{.Username}} ({{.DisplayName}})") (default "{{.|json}}") - -get-curl - Print the curl command for executing this query and exit (WARNING: includes printing your access token!) - -insecure-skip-verify - Skip validation of TLS certificates against trusted chains - -trace - Log the trace ID for requests. See https://docs.sourcegraph.com/admin/observability/tracing - -user-agent-telemetry - Include the operating system and architecture in the User-Agent sent with requests to Sourcegraph (default true) - -username string - Look up user by username. (e.g. "alice") +gets a user. Examples: @@ -42,7 +8,21 @@ Examples: $ src users get -username=alice +## Usage - +```sh +$ src users get [options] ``` - \ No newline at end of file + +## Flags + +| Name | Description | Default Value | +|------|-------------|---------------| +| `--dump-requests` | Log GraphQL requests and responses to stdout | `false`| +| `--email` | Look up user by email. (e.g. "alice@sourcegraph.com") | ``| +| `--get-curl` | Print the curl command for executing this query and exit (WARNING: includes printing your access token!) | `false`| +| `--insecure-skip-verify` | Skip validation of TLS certificates against trusted chains | `false`| +| `--trace` | Log the trace ID for requests. See https://docs.sourcegraph.com/admin/observability/tracing | `false`| +| `--user-agent-telemetry` | Include the operating system and architecture in the User-Agent sent with requests to Sourcegraph | `true`| +| `--username` | Look up user by username. (e.g. "alice") | ``| +| `-f` | Format for the output, using the syntax of Go package text/template. (e.g. "\{\{.ID\}\}: \{\{.Username\}\} (\{\{.DisplayName\}\})") \| `"\{\{.\\|json\}\}"`| \ No newline at end of file diff --git a/docs/cli/references/users/index.mdx b/docs/cli/references/users/index.mdx index 359e58f4e..99f7a9c57 100644 --- a/docs/cli/references/users/index.mdx +++ b/docs/cli/references/users/index.mdx @@ -1,12 +1,35 @@ # `src users` -## Subcommands +manages users. + +'src users' is a tool that manages users on a Sourcegraph instance. + +Usage: + + src users command [command options] + +The commands are: + list lists users + get gets a user + create creates a user account + delete deletes a user account + prune deletes inactive users + tag add/remove a tag on a user + +Use "src users [command] -h" for more information about a command. + +## Usage + +```sh +$ src users [command options] +``` + +## Subcommands * [`create`](users/create) * [`delete`](users/delete) * [`get`](users/get) * [`list`](users/list) * [`prune`](users/prune) -* [`tag`](users/tag) - \ No newline at end of file +* [`tag`](users/tag) \ No newline at end of file diff --git a/docs/cli/references/users/list.mdx b/docs/cli/references/users/list.mdx index bc4d8c97b..ba5336627 100644 --- a/docs/cli/references/users/list.mdx +++ b/docs/cli/references/users/list.mdx @@ -1,43 +1,6 @@ # `src users list` - -## Flags - -| Name | Description | Default Value | -|------|-------------|---------------| -| `-dump-requests` | Log GraphQL requests and responses to stdout | `false` | -| `-f` | Format for the output, using the syntax of Go package text/template. (e.g. "\{\{.ID\}\}: \{\{.Username\}\} (\{\{.DisplayName\}\})" or "\{\{.\|json\}\}") | `{{.Username}}` | -| `-first` | Returns the first n users from the list. | `1000` | -| `-get-curl` | Print the curl command for executing this query and exit (WARNING: includes printing your access token!) | `false` | -| `-insecure-skip-verify` | Skip validation of TLS certificates against trusted chains | `false` | -| `-query` | Returns users whose names match the query. (e.g. "alice") | | -| `-tag` | Returns users with the given tag. | | -| `-trace` | Log the trace ID for requests. See https://docs.sourcegraph.com/admin/observability/tracing | `false` | -| `-user-agent-telemetry` | Include the operating system and architecture in the User-Agent sent with requests to Sourcegraph | `true` | - - -## Usage - -``` -Usage of 'src users list': - -dump-requests - Log GraphQL requests and responses to stdout - -f string - Format for the output, using the syntax of Go package text/template. (e.g. "{{.ID}}: {{.Username}} ({{.DisplayName}})" or "{{.|json}}") (default "{{.Username}}") - -first int - Returns the first n users from the list. (default 1000) - -get-curl - Print the curl command for executing this query and exit (WARNING: includes printing your access token!) - -insecure-skip-verify - Skip validation of TLS certificates against trusted chains - -query string - Returns users whose names match the query. (e.g. "alice") - -tag string - Returns users with the given tag. - -trace - Log the trace ID for requests. See https://docs.sourcegraph.com/admin/observability/tracing - -user-agent-telemetry - Include the operating system and architecture in the User-Agent sent with requests to Sourcegraph (default true) +lists users. Examples: @@ -53,7 +16,22 @@ Examples: $ src users list -tag=foo +## Usage - +```sh +$ src users list [options] ``` - \ No newline at end of file + +## Flags + +| Name | Description | Default Value | +|------|-------------|---------------| +| `--dump-requests` | Log GraphQL requests and responses to stdout | `false`| +| `--first` | Returns the first n users from the list. | `1000`| +| `--get-curl` | Print the curl command for executing this query and exit (WARNING: includes printing your access token!) | `false`| +| `--insecure-skip-verify` | Skip validation of TLS certificates against trusted chains | `false`| +| `--query` | Returns users whose names match the query. (e.g. "alice") | ``| +| `--tag` | Returns users with the given tag. | ``| +| `--trace` | Log the trace ID for requests. See https://docs.sourcegraph.com/admin/observability/tracing | `false`| +| `--user-agent-telemetry` | Include the operating system and architecture in the User-Agent sent with requests to Sourcegraph | `true`| +| `-f` | Format for the output, using the syntax of Go package text/template. (e.g. "\{\{.ID\}\}: \{\{.Username\}\} (\{\{.DisplayName\}\})" or "\{\{.\|json\}\}") \| `"\{\{.Username\}\}"`| \ No newline at end of file diff --git a/docs/cli/references/users/prune.mdx b/docs/cli/references/users/prune.mdx index 471fb7b90..bc9072d66 100644 --- a/docs/cli/references/users/prune.mdx +++ b/docs/cli/references/users/prune.mdx @@ -1,46 +1,6 @@ # `src users prune` - -## Flags - -| Name | Description | Default Value | -|------|-------------|---------------| -| `-days` | Days threshold on which to remove users, must be 60 days or greater and defaults to this value | `60` | -| `-display-users` | display table of users to be deleted by prune | `false` | -| `-dump-requests` | Log GraphQL requests and responses to stdout | `false` | -| `-force` | skips user confirmation step allowing programmatic use | `false` | -| `-get-curl` | Print the curl command for executing this query and exit (WARNING: includes printing your access token!) | `false` | -| `-insecure-skip-verify` | Skip validation of TLS certificates against trusted chains | `false` | -| `-remove-admin` | prune admin accounts | `false` | -| `-remove-null-users` | removes users with no last active value | `false` | -| `-trace` | Log the trace ID for requests. See https://docs.sourcegraph.com/admin/observability/tracing | `false` | -| `-user-agent-telemetry` | Include the operating system and architecture in the User-Agent sent with requests to Sourcegraph | `true` | - - -## Usage - -``` -Usage of 'src users prune': - -days int - Days threshold on which to remove users, must be 60 days or greater and defaults to this value (default 60) - -display-users - display table of users to be deleted by prune - -dump-requests - Log GraphQL requests and responses to stdout - -force - skips user confirmation step allowing programmatic use - -get-curl - Print the curl command for executing this query and exit (WARNING: includes printing your access token!) - -insecure-skip-verify - Skip validation of TLS certificates against trusted chains - -remove-admin - prune admin accounts - -remove-null-users - removes users with no last active value - -trace - Log the trace ID for requests. See https://docs.sourcegraph.com/admin/observability/tracing - -user-agent-telemetry - Include the operating system and architecture in the User-Agent sent with requests to Sourcegraph (default true) +deletes inactive users. This command removes users from a Sourcegraph instance who have been inactive for 60 or more days. Admin accounts are omitted by default. @@ -50,6 +10,23 @@ Examples: $ src users prune -remove-admin -remove-null-users +## Usage +```sh +$ src users prune [options] ``` - \ No newline at end of file + +## Flags + +| Name | Description | Default Value | +|------|-------------|---------------| +| `--days` | Days threshold on which to remove users, must be 60 days or greater and defaults to this value | `60`| +| `--display-users` | display table of users to be deleted by prune | `false`| +| `--dump-requests` | Log GraphQL requests and responses to stdout | `false`| +| `--force` | skips user confirmation step allowing programmatic use | `false`| +| `--get-curl` | Print the curl command for executing this query and exit (WARNING: includes printing your access token!) | `false`| +| `--insecure-skip-verify` | Skip validation of TLS certificates against trusted chains | `false`| +| `--remove-admin` | prune admin accounts | `false`| +| `--remove-null-users` | removes users with no last active value | `false`| +| `--trace` | Log the trace ID for requests. See https://docs.sourcegraph.com/admin/observability/tracing | `false`| +| `--user-agent-telemetry` | Include the operating system and architecture in the User-Agent sent with requests to Sourcegraph | `true`| \ No newline at end of file diff --git a/docs/cli/references/users/tag.mdx b/docs/cli/references/users/tag.mdx index 5ec8cd5d2..e4fec504d 100644 --- a/docs/cli/references/users/tag.mdx +++ b/docs/cli/references/users/tag.mdx @@ -1,50 +1,16 @@ # `src users tag` - -## Flags - -| Name | Description | Default Value | -|------|-------------|---------------| -| `-dump-requests` | Log GraphQL requests and responses to stdout | `false` | -| `-get-curl` | Print the curl command for executing this query and exit (WARNING: includes printing your access token!) | `false` | -| `-insecure-skip-verify` | Skip validation of TLS certificates against trusted chains | `false` | -| `-remove` | Remove the tag. (default: add the tag | `false` | -| `-tag` | The tag to set on the user. (required) | | -| `-trace` | Log the trace ID for requests. See https://docs.sourcegraph.com/admin/observability/tracing | `false` | -| `-user-agent-telemetry` | Include the operating system and architecture in the User-Agent sent with requests to Sourcegraph | `true` | -| `-user-id` | The ID of the user to tag. (required) | | - - -## Usage - -``` -Usage of 'src users tag': - -dump-requests - Log GraphQL requests and responses to stdout - -get-curl - Print the curl command for executing this query and exit (WARNING: includes printing your access token!) - -insecure-skip-verify - Skip validation of TLS certificates against trusted chains - -remove - Remove the tag. (default: add the tag - -tag string - The tag to set on the user. (required) - -trace - Log the trace ID for requests. See https://docs.sourcegraph.com/admin/observability/tracing - -user-agent-telemetry - Include the operating system and architecture in the User-Agent sent with requests to Sourcegraph (default true) - -user-id string - The ID of the user to tag. (required) +add/remove a tag on a user. Examples: Add a tag "foo" to a user: - $ src users tag -user-id=$(src users get -f '{{.ID}}' -username=alice) -tag=foo + $ src users tag -user-id=$(src users get -f '\{\{.ID\}\}' -username=alice) -tag=foo Remove a tag "foo" to a user: - $ src users tag -user-id=$(src users get -f '{{.ID}}' -username=alice) -remove -tag=foo + $ src users tag -user-id=$(src users get -f '\{\{.ID\}\}' -username=alice) -remove -tag=foo Related examples: @@ -52,7 +18,21 @@ Related examples: $ src users list -tag=foo +## Usage - +```sh +$ src users tag [options] ``` - \ No newline at end of file + +## Flags + +| Name | Description | Default Value | +|------|-------------|---------------| +| `--dump-requests` | Log GraphQL requests and responses to stdout | `false`| +| `--get-curl` | Print the curl command for executing this query and exit (WARNING: includes printing your access token!) | `false`| +| `--insecure-skip-verify` | Skip validation of TLS certificates against trusted chains | `false`| +| `--remove` | Remove the tag. (default: add the tag) | `false`| +| `--tag` | The tag to set on the user. | ``| +| `--trace` | Log the trace ID for requests. See https://docs.sourcegraph.com/admin/observability/tracing | `false`| +| `--user-agent-telemetry` | Include the operating system and architecture in the User-Agent sent with requests to Sourcegraph | `true`| +| `--user-id` | The ID of the user to tag. | ``| \ No newline at end of file diff --git a/docs/cli/references/version.mdx b/docs/cli/references/version.mdx index 8971177a3..e59c6ffe4 100644 --- a/docs/cli/references/version.mdx +++ b/docs/cli/references/version.mdx @@ -1,41 +1,26 @@ # `src version` +Display and compare the src-cli version against the recommended version for your instance -## Flags +Examples: -| Name | Description | Default Value | -|------|-------------|---------------| -| `-client-only` | If true, only the client version will be printed. | `false` | -| `-dump-requests` | Log GraphQL requests and responses to stdout | `false` | -| `-get-curl` | Print the curl command for executing this query and exit (WARNING: includes printing your access token!) | `false` | -| `-insecure-skip-verify` | Skip validation of TLS certificates against trusted chains | `false` | -| `-trace` | Log the trace ID for requests. See https://docs.sourcegraph.com/admin/observability/tracing | `false` | -| `-user-agent-telemetry` | Include the operating system and architecture in the User-Agent sent with requests to Sourcegraph | `true` | +Get the src-cli version and the Sourcegraph instance's recommended version: +$ src version ## Usage +```sh +$ src version [options] ``` -Usage of 'src version': - -client-only - If true, only the client version will be printed. - -dump-requests - Log GraphQL requests and responses to stdout - -get-curl - Print the curl command for executing this query and exit (WARNING: includes printing your access token!) - -insecure-skip-verify - Skip validation of TLS certificates against trusted chains - -trace - Log the trace ID for requests. See https://docs.sourcegraph.com/admin/observability/tracing - -user-agent-telemetry - Include the operating system and architecture in the User-Agent sent with requests to Sourcegraph (default true) - -Examples: - - Get the src-cli version and the Sourcegraph instance's recommended version: - - $ src version +## Flags -``` - \ No newline at end of file +| Name | Description | Default Value | +|------|-------------|---------------| +| `--client-only` | If true, only the client version will be printed. | `false`| +| `--dump-requests` | Log GraphQL requests and responses to stdout | `false`| +| `--get-curl` | Print the curl command for executing this query and exit (WARNING: includes printing your access token!) | `false`| +| `--insecure-skip-verify` | Skip validation of TLS certificates against trusted chains | `false`| +| `--trace` | Log the trace ID for requests. See https://docs.sourcegraph.com/admin/observability/tracing | `false`| +| `--user-agent-telemetry` | Include the operating system and architecture in the User-Agent sent with requests to Sourcegraph | `true`| \ No newline at end of file diff --git a/docs/cody/capabilities/supported-models.mdx b/docs/cody/capabilities/supported-models.mdx index 9658a1efe..21acfeb7f 100644 --- a/docs/cody/capabilities/supported-models.mdx +++ b/docs/cody/capabilities/supported-models.mdx @@ -14,6 +14,7 @@ Cody supports a variety of cutting-edge large language models for use in chat an | **Provider** | **Model** | **Status** | **Vision Support** | | :----------- | :-------- | :--------- | :----------------- | +| Anthropic | [Claude Opus 4.8](https://platform.claude.com/docs/en/about-claude/models/overview) | ✅ | ✅ | | Anthropic | [Claude Opus 4.7](https://platform.claude.com/docs/en/about-claude/models/overview) | ✅ | ✅ | | Anthropic | [Claude Opus 4.6](https://platform.claude.com/docs/en/about-claude/models/overview) | ✅ | ✅ | | Anthropic | [Claude Sonnet 4.6](https://platform.claude.com/docs/en/about-claude/models/overview) | ✅ | ✅ | diff --git a/docs/self-hosted/observability/alerts.mdx b/docs/self-hosted/observability/alerts.mdx index 6892d0f3e..b34e75d3d 100644 --- a/docs/self-hosted/observability/alerts.mdx +++ b/docs/self-hosted/observability/alerts.mdx @@ -4340,6 +4340,11 @@ Generated query for critical alert: `max((max(max_over_time(src_conf_client_time **Next steps** +- Treat sustained high searcher traffic as a sign that indexed search is not carrying enough of the search load. Searcher handles unindexed search, so high per-replica traffic usually means queries are not using Zoekt enough. +- Check Zoekt availability, indexing backlog, and indexing errors to make sure repositories are being indexed and served by indexed search. +- Inspect recent search traffic for broad or repeated unindexed queries, especially automated clients or queries against revisions that cannot use indexed search. +- If users often search non-default branches, consider indexing more branches by configuring `search.index.branches` or `search.index.revisions` in site configuration. +- If the traffic is expected and Zoekt indexing is healthy, consider scaling out searcher replicas to reduce per-replica load and search latency. - More help interpreting this metric is available in the [dashboards reference](dashboards#searcher-replica_traffic). - **Silence this alert:** If you are aware of this alert and want to silence notifications for it, add the following to your site configuration and set a reminder to re-evaluate the alert: @@ -6184,6 +6189,40 @@ Generated query for critical alert: `min((sum by (app) (up{app=~".*prometheus"\}
+## executor: managed_instance_groups_autoscaler_unhealthy + +

managed instance group(s) marked unhealthy by the cascade

+ +**Descriptions** + +- warning executor: 1+ managed instance group(s) marked unhealthy by the cascade for 10m0s + +**Next steps** + +- Inspect the affected managed instance group in the GCP console; check the autoscaler status and recent instance creation errors. +- Check the worker logs filtered to InstrumentationScope "worker.executorqueue.gcp.autoscaler" for the "cascade decision" lines covering the affected (name, queue). +- If unhealthy due to spot stockout in one region, the cascade is doing its job — verify the standard MIG (or next region`s spot MIG) absorbed the demand. Confirm by inspecting src_executors_managed_instance_groups_autoscaler_assigned_demand for the same queue. +- If unhealthy due to quota, request a quota increase. If the sticky cooldown is keeping a recovered MIG in unhealthy state, no action needed — it will clear within 5 minutes. +- More help interpreting this metric is available in the [dashboards reference](dashboards#executor-managed_instance_groups_autoscaler_unhealthy). +- **Silence this alert:** If you are aware of this alert and want to silence notifications for it, add the following to your site configuration and set a reminder to re-evaluate the alert: + +```json +"observability.silenceAlerts": [ + "warning_executor_managed_instance_groups_autoscaler_unhealthy" +] +``` + +*Managed by the Sourcegraph Platform team.* + +
+Technical details + +Generated query for warning alert: `max((max by (name, queue) (src_executors_managed_instance_groups_autoscaler_unhealthy)) >= 1)` + +
+ +
+ ## executor: executor_handlers

executor active handlers

@@ -6715,6 +6754,102 @@ Generated query for warning alert: `max((sum(increase(src_meteringexporter_queue
+## metering: licensing_credit_usage_notifications_errors_total + +

credit usage notification routine operation errors every 30m

+ +**Descriptions** + +- warning metering: 0+ credit usage notification routine operation errors every 30m + +**Next steps** + +- Failures indicate that site admin credit usage notifications are not being refreshed. +- Check worker logs for credit usage notification monitor failures and Enterprise Portal connectivity issues. +- Learn more about the related dashboard panel in the [dashboards reference](dashboards#metering-licensing_credit_usage_notifications_errors_total). +- **Silence this alert:** If you are aware of this alert and want to silence notifications for it, add the following to your site configuration and set a reminder to re-evaluate the alert: + +```json +"observability.silenceAlerts": [ + "warning_metering_licensing_credit_usage_notifications_errors_total" +] +``` + +*Managed by the Sourcegraph Services team.* + +
+Technical details + +Generated query for warning alert: `max((sum(increase(src_licensing_credit_usage_notifications_errors_total{job=~"^worker.*"}[30m]))) > 0)` + +
+ +
+ +## metering: licensing_fast_quota_check_routine_99th_percentile_duration + +

aggregate successful fast quota check probe operation duration distribution over 30m

+ +**Descriptions** + +- warning metering: 30+ aggregate successful fast quota check probe operation duration distribution over 30m for 5m0s + +**Next steps** + +- The 99th percentile probe duration has been above 30 seconds for at least 5 minutes; the probe should normally complete in well under its configured interval (default 1m). +- Check Enterprise Portal latency and worker logs for the `licensing.fast-quota-check` routine. +- Learn more about the related dashboard panel in the [dashboards reference](dashboards#metering-licensing_fast_quota_check_routine_99th_percentile_duration). +- **Silence this alert:** If you are aware of this alert and want to silence notifications for it, add the following to your site configuration and set a reminder to re-evaluate the alert: + +```json +"observability.silenceAlerts": [ + "warning_metering_licensing_fast_quota_check_routine_99th_percentile_duration" +] +``` + +*Managed by the Sourcegraph Services team.* + +
+Technical details + +Custom query for warning alert: `max((histogram_quantile(0.99, sum by (le) (rate(src_licensing_fast_quota_check_routine_duration_seconds_bucket{job=~"^worker.*"}[30m])))) > 30)` + +
+ +
+ +## metering: licensing_fast_quota_check_routine_error_rate + +

fast quota check probe operation error rate over 30m

+ +**Descriptions** + +- warning metering: 15%+ fast quota check probe operation error rate over 30m for 5m0s + +**Next steps** + +- The probe failure rate has been at or above 15% over the last 30 minutes for at least 5 consecutive minutes; FastCheckQuota is consistently failing open and quota enforcement is degraded. +- Check worker logs for the `licensing.fast-quota-check` routine and Enterprise Portal connectivity. +- Learn more about the related dashboard panel in the [dashboards reference](dashboards#metering-licensing_fast_quota_check_routine_error_rate). +- **Silence this alert:** If you are aware of this alert and want to silence notifications for it, add the following to your site configuration and set a reminder to re-evaluate the alert: + +```json +"observability.silenceAlerts": [ + "warning_metering_licensing_fast_quota_check_routine_error_rate" +] +``` + +*Managed by the Sourcegraph Services team.* + +
+Technical details + +Generated query for warning alert: `max((sum(increase(src_licensing_fast_quota_check_routine_errors_total{job=~"^worker.*"\}[30m])) / (sum(increase(src_licensing_fast_quota_check_routine_total\{job=~"^worker.*"\}[30m])) + sum(increase(src_licensing_fast_quota_check_routine_errors_total\{job=~"^worker.*"}[30m]))) * 100) >= 15)` + +
+ +
+ ## otel-collector: otel_span_refused

spans refused per receiver

diff --git a/docs/self-hosted/observability/dashboards.mdx b/docs/self-hosted/observability/dashboards.mdx index 3be352e0a..5b9495677 100644 --- a/docs/self-hosted/observability/dashboards.mdx +++ b/docs/self-hosted/observability/dashboards.mdx @@ -18257,6 +18257,11 @@ sum by (code) (rate(searcher_service_request_total{instance=~`${instance:regex}` This graph is the average number of requests per second searcher is experiencing over the last 10 minutes broken down per replica. +Sustained high traffic here is undesirable because it indicates Sourcegraph is +using unindexed searcher requests instead of Zoekt indexed search for a good amount +of the search load. That can increase searcher and gitserver load and cause +broader search reliability or latency problems downstream. + The code is the HTTP Status code. 200 is success. We have a special code "canceled" which is common when doing a large search request and we find enough results before searching all possible repos. @@ -25482,6 +25487,58 @@ multiqueue_executor_dequeue_cache_size{queue=~"$queue",job=~"^(executor|sourcegr
+### Executor: Multi-MIG priority-cascade autoscaler + +#### executor: managed_instance_groups_autoscaler_unhealthy + +

Managed instance group(s) marked unhealthy by the cascade

+ +1 when the cascade considered the named managed instance group unhealthy on the most recent cycle; 0 when healthy. +A managed instance group is marked unhealthy when GCP cannot provision VMs for it — creation errors (ZONE_RESOURCE_POOL_EXHAUSTED, QUOTA_EXCEEDED, stockout), a sustained scaling gap past the configured wait timeout, or a sticky cooldown after a prior failure. +While unhealthy, demand cascades to the next priority tier (typically the standard MIG behind the spot MIG). + +Refer to the [alerts reference](alerts#executor-managed_instance_groups_autoscaler_unhealthy) for 1 alert related to this panel. + +To see this panel, visit `/-/debug/grafana/d/executor/executor?viewPanel=100100` on your Sourcegraph instance. + +*Managed by the Sourcegraph Platform team.* + +
+Technical details + +Query: + +``` +max by (name, queue) (src_executors_managed_instance_groups_autoscaler_unhealthy) +``` +
+ +
+ +#### executor: managed_instance_groups_autoscaler_assigned_demand + +

Demand assigned by the cascade per managed instance group

+ +Demand (in task units) the cascade assigned to each managed instance group on the most recent cycle. Sums to the queue depth that the cascade saw. A non-zero value on a non-top-priority MIG means the higher-priority MIG was treated as unhealthy and demand spilled. + +This panel has no related alerts. + +To see this panel, visit `/-/debug/grafana/d/executor/executor?viewPanel=100101` on your Sourcegraph instance. + +*Managed by the Sourcegraph Platform team.* + +
+Technical details + +Query: + +``` +max by (name, queue) (src_executors_managed_instance_groups_autoscaler_assigned_demand) +``` +
+ +
+ ### Executor: Executor: Executor jobs #### executor: executor_handlers @@ -25490,7 +25547,7 @@ multiqueue_executor_dequeue_cache_size{queue=~"$queue",job=~"^(executor|sourcegr Refer to the [alerts reference](alerts#executor-executor_handlers) for 1 alert related to this panel. -To see this panel, visit `/-/debug/grafana/d/executor/executor?viewPanel=100100` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/executor/executor?viewPanel=100200` on your Sourcegraph instance. *Managed by the Sourcegraph Code Understanding team.* @@ -25512,7 +25569,7 @@ sum(src_executor_processor_handlers{queue=~"${queue:regex}",sg_job=~"^sourcegrap This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/executor/executor?viewPanel=100110` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/executor/executor?viewPanel=100210` on your Sourcegraph instance. *Managed by the Sourcegraph Code Understanding team.* @@ -25534,7 +25591,7 @@ sum(increase(src_executor_processor_total{queue=~"${queue:regex}",sg_job=~"^sour This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/executor/executor?viewPanel=100111` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/executor/executor?viewPanel=100211` on your Sourcegraph instance. *Managed by the Sourcegraph Code Understanding team.* @@ -25556,7 +25613,7 @@ sum by (le)(rate(src_executor_processor_duration_seconds_bucket{queue=~"${queue This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/executor/executor?viewPanel=100112` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/executor/executor?viewPanel=100212` on your Sourcegraph instance. *Managed by the Sourcegraph Code Understanding team.* @@ -25578,7 +25635,7 @@ sum(increase(src_executor_processor_errors_total{queue=~"${queue:regex}",sg_job= Refer to the [alerts reference](alerts#executor-executor_processor_error_rate) for 1 alert related to this panel. -To see this panel, visit `/-/debug/grafana/d/executor/executor?viewPanel=100113` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/executor/executor?viewPanel=100213` on your Sourcegraph instance. *Managed by the Sourcegraph Code Understanding team.* @@ -25602,7 +25659,7 @@ sum(increase(src_executor_processor_errors_total{queue=~"${queue:regex}",sg_job= This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/executor/executor?viewPanel=100200` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/executor/executor?viewPanel=100300` on your Sourcegraph instance. *Managed by the Sourcegraph Code Understanding team.* @@ -25624,7 +25681,7 @@ sum(increase(src_apiworker_apiclient_queue_total{sg_job=~"^sourcegraph-executors This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/executor/executor?viewPanel=100201` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/executor/executor?viewPanel=100301` on your Sourcegraph instance. *Managed by the Sourcegraph Code Understanding team.* @@ -25646,7 +25703,7 @@ sum by (le)(rate(src_apiworker_apiclient_queue_duration_seconds_bucket{sg_job=~ This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/executor/executor?viewPanel=100202` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/executor/executor?viewPanel=100302` on your Sourcegraph instance. *Managed by the Sourcegraph Code Understanding team.* @@ -25668,7 +25725,7 @@ sum(increase(src_apiworker_apiclient_queue_errors_total{sg_job=~"^sourcegraph-ex This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/executor/executor?viewPanel=100203` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/executor/executor?viewPanel=100303` on your Sourcegraph instance. *Managed by the Sourcegraph Code Understanding team.* @@ -25690,7 +25747,7 @@ sum(increase(src_apiworker_apiclient_queue_errors_total{sg_job=~"^sourcegraph-ex This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/executor/executor?viewPanel=100210` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/executor/executor?viewPanel=100310` on your Sourcegraph instance. *Managed by the Sourcegraph Code Understanding team.* @@ -25712,7 +25769,7 @@ sum by (op)(increase(src_apiworker_apiclient_queue_total{sg_job=~"^sourcegraph-e This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/executor/executor?viewPanel=100211` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/executor/executor?viewPanel=100311` on your Sourcegraph instance. *Managed by the Sourcegraph Code Understanding team.* @@ -25734,7 +25791,7 @@ histogram_quantile(0.99, sum by (le,op)(rate(src_apiworker_apiclient_queue_dura This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/executor/executor?viewPanel=100212` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/executor/executor?viewPanel=100312` on your Sourcegraph instance. *Managed by the Sourcegraph Code Understanding team.* @@ -25756,7 +25813,7 @@ sum by (op)(increase(src_apiworker_apiclient_queue_errors_total{sg_job=~"^source This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/executor/executor?viewPanel=100213` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/executor/executor?viewPanel=100313` on your Sourcegraph instance. *Managed by the Sourcegraph Code Understanding team.* @@ -25780,7 +25837,7 @@ sum by (op)(increase(src_apiworker_apiclient_queue_errors_total{sg_job=~"^source This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/executor/executor?viewPanel=100300` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/executor/executor?viewPanel=100400` on your Sourcegraph instance. *Managed by the Sourcegraph Code Understanding team.* @@ -25802,7 +25859,7 @@ sum(increase(src_apiworker_apiclient_files_total{sg_job=~"^sourcegraph-executors This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/executor/executor?viewPanel=100301` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/executor/executor?viewPanel=100401` on your Sourcegraph instance. *Managed by the Sourcegraph Code Understanding team.* @@ -25824,7 +25881,7 @@ sum by (le)(rate(src_apiworker_apiclient_files_duration_seconds_bucket{sg_job=~ This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/executor/executor?viewPanel=100302` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/executor/executor?viewPanel=100402` on your Sourcegraph instance. *Managed by the Sourcegraph Code Understanding team.* @@ -25846,7 +25903,7 @@ sum(increase(src_apiworker_apiclient_files_errors_total{sg_job=~"^sourcegraph-ex This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/executor/executor?viewPanel=100303` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/executor/executor?viewPanel=100403` on your Sourcegraph instance. *Managed by the Sourcegraph Code Understanding team.* @@ -25868,7 +25925,7 @@ sum(increase(src_apiworker_apiclient_files_errors_total{sg_job=~"^sourcegraph-ex This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/executor/executor?viewPanel=100310` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/executor/executor?viewPanel=100410` on your Sourcegraph instance. *Managed by the Sourcegraph Code Understanding team.* @@ -25890,7 +25947,7 @@ sum by (op)(increase(src_apiworker_apiclient_files_total{sg_job=~"^sourcegraph-e This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/executor/executor?viewPanel=100311` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/executor/executor?viewPanel=100411` on your Sourcegraph instance. *Managed by the Sourcegraph Code Understanding team.* @@ -25912,7 +25969,7 @@ histogram_quantile(0.99, sum by (le,op)(rate(src_apiworker_apiclient_files_dura This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/executor/executor?viewPanel=100312` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/executor/executor?viewPanel=100412` on your Sourcegraph instance. *Managed by the Sourcegraph Code Understanding team.* @@ -25934,7 +25991,7 @@ sum by (op)(increase(src_apiworker_apiclient_files_errors_total{sg_job=~"^source This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/executor/executor?viewPanel=100313` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/executor/executor?viewPanel=100413` on your Sourcegraph instance. *Managed by the Sourcegraph Code Understanding team.* @@ -25958,7 +26015,7 @@ sum by (op)(increase(src_apiworker_apiclient_files_errors_total{sg_job=~"^source This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/executor/executor?viewPanel=100400` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/executor/executor?viewPanel=100500` on your Sourcegraph instance. *Managed by the Sourcegraph Code Understanding team.* @@ -25980,7 +26037,7 @@ sum(increase(src_apiworker_command_total{op=~"setup.*",sg_job=~"^sourcegraph-exe This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/executor/executor?viewPanel=100401` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/executor/executor?viewPanel=100501` on your Sourcegraph instance. *Managed by the Sourcegraph Code Understanding team.* @@ -26002,7 +26059,7 @@ sum by (le)(rate(src_apiworker_command_duration_seconds_bucket{op=~"setup.*",sg This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/executor/executor?viewPanel=100402` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/executor/executor?viewPanel=100502` on your Sourcegraph instance. *Managed by the Sourcegraph Code Understanding team.* @@ -26024,7 +26081,7 @@ sum(increase(src_apiworker_command_errors_total{op=~"setup.*",sg_job=~"^sourcegr This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/executor/executor?viewPanel=100403` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/executor/executor?viewPanel=100503` on your Sourcegraph instance. *Managed by the Sourcegraph Code Understanding team.* @@ -26046,7 +26103,7 @@ sum(increase(src_apiworker_command_errors_total{op=~"setup.*",sg_job=~"^sourcegr This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/executor/executor?viewPanel=100410` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/executor/executor?viewPanel=100510` on your Sourcegraph instance. *Managed by the Sourcegraph Code Understanding team.* @@ -26068,7 +26125,7 @@ sum by (op)(increase(src_apiworker_command_total{op=~"setup.*",sg_job=~"^sourceg This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/executor/executor?viewPanel=100411` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/executor/executor?viewPanel=100511` on your Sourcegraph instance. *Managed by the Sourcegraph Code Understanding team.* @@ -26090,7 +26147,7 @@ histogram_quantile(0.99, sum by (le,op)(rate(src_apiworker_command_duration_sec This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/executor/executor?viewPanel=100412` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/executor/executor?viewPanel=100512` on your Sourcegraph instance. *Managed by the Sourcegraph Code Understanding team.* @@ -26112,7 +26169,7 @@ sum by (op)(increase(src_apiworker_command_errors_total{op=~"setup.*",sg_job=~"^ This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/executor/executor?viewPanel=100413` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/executor/executor?viewPanel=100513` on your Sourcegraph instance. *Managed by the Sourcegraph Code Understanding team.* @@ -26136,7 +26193,7 @@ sum by (op)(increase(src_apiworker_command_errors_total{op=~"setup.*",sg_job=~"^ This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/executor/executor?viewPanel=100500` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/executor/executor?viewPanel=100600` on your Sourcegraph instance. *Managed by the Sourcegraph Code Understanding team.* @@ -26158,7 +26215,7 @@ sum(increase(src_apiworker_command_total{op=~"exec.*",sg_job=~"^sourcegraph-exec This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/executor/executor?viewPanel=100501` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/executor/executor?viewPanel=100601` on your Sourcegraph instance. *Managed by the Sourcegraph Code Understanding team.* @@ -26180,7 +26237,7 @@ sum by (le)(rate(src_apiworker_command_duration_seconds_bucket{op=~"exec.*",sg_ This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/executor/executor?viewPanel=100502` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/executor/executor?viewPanel=100602` on your Sourcegraph instance. *Managed by the Sourcegraph Code Understanding team.* @@ -26202,7 +26259,7 @@ sum(increase(src_apiworker_command_errors_total{op=~"exec.*",sg_job=~"^sourcegra This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/executor/executor?viewPanel=100503` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/executor/executor?viewPanel=100603` on your Sourcegraph instance. *Managed by the Sourcegraph Code Understanding team.* @@ -26224,7 +26281,7 @@ sum(increase(src_apiworker_command_errors_total{op=~"exec.*",sg_job=~"^sourcegra This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/executor/executor?viewPanel=100510` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/executor/executor?viewPanel=100610` on your Sourcegraph instance. *Managed by the Sourcegraph Code Understanding team.* @@ -26246,7 +26303,7 @@ sum by (op)(increase(src_apiworker_command_total{op=~"exec.*",sg_job=~"^sourcegr This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/executor/executor?viewPanel=100511` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/executor/executor?viewPanel=100611` on your Sourcegraph instance. *Managed by the Sourcegraph Code Understanding team.* @@ -26268,7 +26325,7 @@ histogram_quantile(0.99, sum by (le,op)(rate(src_apiworker_command_duration_sec This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/executor/executor?viewPanel=100512` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/executor/executor?viewPanel=100612` on your Sourcegraph instance. *Managed by the Sourcegraph Code Understanding team.* @@ -26290,7 +26347,7 @@ sum by (op)(increase(src_apiworker_command_errors_total{op=~"exec.*",sg_job=~"^s This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/executor/executor?viewPanel=100513` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/executor/executor?viewPanel=100613` on your Sourcegraph instance. *Managed by the Sourcegraph Code Understanding team.* @@ -26314,7 +26371,7 @@ sum by (op)(increase(src_apiworker_command_errors_total{op=~"exec.*",sg_job=~"^s This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/executor/executor?viewPanel=100600` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/executor/executor?viewPanel=100700` on your Sourcegraph instance. *Managed by the Sourcegraph Code Understanding team.* @@ -26336,7 +26393,7 @@ sum(increase(src_apiworker_command_total{op=~"teardown.*",sg_job=~"^sourcegraph- This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/executor/executor?viewPanel=100601` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/executor/executor?viewPanel=100701` on your Sourcegraph instance. *Managed by the Sourcegraph Code Understanding team.* @@ -26358,7 +26415,7 @@ sum by (le)(rate(src_apiworker_command_duration_seconds_bucket{op=~"teardown.*" This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/executor/executor?viewPanel=100602` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/executor/executor?viewPanel=100702` on your Sourcegraph instance. *Managed by the Sourcegraph Code Understanding team.* @@ -26380,7 +26437,7 @@ sum(increase(src_apiworker_command_errors_total{op=~"teardown.*",sg_job=~"^sourc This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/executor/executor?viewPanel=100603` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/executor/executor?viewPanel=100703` on your Sourcegraph instance. *Managed by the Sourcegraph Code Understanding team.* @@ -26402,7 +26459,7 @@ sum(increase(src_apiworker_command_errors_total{op=~"teardown.*",sg_job=~"^sourc This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/executor/executor?viewPanel=100610` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/executor/executor?viewPanel=100710` on your Sourcegraph instance. *Managed by the Sourcegraph Code Understanding team.* @@ -26424,7 +26481,7 @@ sum by (op)(increase(src_apiworker_command_total{op=~"teardown.*",sg_job=~"^sour This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/executor/executor?viewPanel=100611` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/executor/executor?viewPanel=100711` on your Sourcegraph instance. *Managed by the Sourcegraph Code Understanding team.* @@ -26446,7 +26503,7 @@ histogram_quantile(0.99, sum by (le,op)(rate(src_apiworker_command_duration_sec This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/executor/executor?viewPanel=100612` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/executor/executor?viewPanel=100712` on your Sourcegraph instance. *Managed by the Sourcegraph Code Understanding team.* @@ -26468,7 +26525,7 @@ sum by (op)(increase(src_apiworker_command_errors_total{op=~"teardown.*",sg_job= This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/executor/executor?viewPanel=100613` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/executor/executor?viewPanel=100713` on your Sourcegraph instance. *Managed by the Sourcegraph Code Understanding team.* @@ -26494,7 +26551,7 @@ Indicates the amount of CPU time excluding idle and iowait time, divided by the This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/executor/executor?viewPanel=100700` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/executor/executor?viewPanel=100800` on your Sourcegraph instance.
@@ -26517,7 +26574,7 @@ Indicates the average summed time a number of (but strictly not all) non-idle pr This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/executor/executor?viewPanel=100701` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/executor/executor?viewPanel=100801` on your Sourcegraph instance.
@@ -26540,7 +26597,7 @@ Indicates the amount of available memory (including cache and buffers) as a perc This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/executor/executor?viewPanel=100710` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/executor/executor?viewPanel=100810` on your Sourcegraph instance.
@@ -26563,7 +26620,7 @@ Indicates the efficiency of page reclaim, calculated as pgsteal/pgscan. Optimal This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/executor/executor?viewPanel=100711` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/executor/executor?viewPanel=100811` on your Sourcegraph instance.
@@ -26586,7 +26643,7 @@ Indicates the amount of time all non-idle processes were stalled waiting on memo This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/executor/executor?viewPanel=100712` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/executor/executor?viewPanel=100812` on your Sourcegraph instance.
@@ -26609,7 +26666,7 @@ Indicates the percentage of time a disk was busy. If this is less than 100%, the This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/executor/executor?viewPanel=100720` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/executor/executor?viewPanel=100820` on your Sourcegraph instance.
@@ -26632,7 +26689,7 @@ Indicates the number of outstanding/queued IO requests. High but short-lived que This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/executor/executor?viewPanel=100721` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/executor/executor?viewPanel=100821` on your Sourcegraph instance.
@@ -26655,7 +26712,7 @@ Indicates the averaged amount of time for which all non-idle processes were stal This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/executor/executor?viewPanel=100722` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/executor/executor?viewPanel=100822` on your Sourcegraph instance.
@@ -26678,7 +26735,7 @@ Indicates the average summed receiving throughput of all network interfaces. Thi This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/executor/executor?viewPanel=100730` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/executor/executor?viewPanel=100830` on your Sourcegraph instance.
@@ -26701,7 +26758,7 @@ Number of dropped received packets. This can happen if the receive queues/buffer This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/executor/executor?viewPanel=100731` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/executor/executor?viewPanel=100831` on your Sourcegraph instance.
@@ -26724,7 +26781,7 @@ Number of bad/malformed packets received. https://www.kernel.org/doc/html/latest This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/executor/executor?viewPanel=100732` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/executor/executor?viewPanel=100832` on your Sourcegraph instance.
@@ -26747,7 +26804,7 @@ Indicates the average summed transmitted throughput of all network interfaces. T This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/executor/executor?viewPanel=100740` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/executor/executor?viewPanel=100840` on your Sourcegraph instance.
@@ -26770,7 +26827,7 @@ Number of dropped transmitted packets. This can happen if the receiving side`s r This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/executor/executor?viewPanel=100741` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/executor/executor?viewPanel=100841` on your Sourcegraph instance.
@@ -26793,7 +26850,7 @@ Number of packet transmission errors. This is distinct from tx packet dropping, This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/executor/executor?viewPanel=100742` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/executor/executor?viewPanel=100842` on your Sourcegraph instance.
@@ -26818,7 +26875,7 @@ Indicates the amount of CPU time excluding idle and iowait time, divided by the This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/executor/executor?viewPanel=100800` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/executor/executor?viewPanel=100900` on your Sourcegraph instance.
@@ -26841,7 +26898,7 @@ Indicates the average summed time a number of (but strictly not all) non-idle pr This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/executor/executor?viewPanel=100801` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/executor/executor?viewPanel=100901` on your Sourcegraph instance.
@@ -26864,7 +26921,7 @@ Indicates the amount of available memory (including cache and buffers) as a perc This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/executor/executor?viewPanel=100810` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/executor/executor?viewPanel=100910` on your Sourcegraph instance.
@@ -26887,7 +26944,7 @@ Indicates the efficiency of page reclaim, calculated as pgsteal/pgscan. Optimal This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/executor/executor?viewPanel=100811` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/executor/executor?viewPanel=100911` on your Sourcegraph instance.
@@ -26910,7 +26967,7 @@ Indicates the amount of time all non-idle processes were stalled waiting on memo This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/executor/executor?viewPanel=100812` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/executor/executor?viewPanel=100912` on your Sourcegraph instance.
@@ -26933,7 +26990,7 @@ Indicates the percentage of time a disk was busy. If this is less than 100%, the This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/executor/executor?viewPanel=100820` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/executor/executor?viewPanel=100920` on your Sourcegraph instance.
@@ -26956,7 +27013,7 @@ Indicates the number of outstanding/queued IO requests. High but short-lived que This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/executor/executor?viewPanel=100821` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/executor/executor?viewPanel=100921` on your Sourcegraph instance.
@@ -26979,7 +27036,7 @@ Indicates the averaged amount of time for which all non-idle processes were stal This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/executor/executor?viewPanel=100822` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/executor/executor?viewPanel=100922` on your Sourcegraph instance.
@@ -27002,7 +27059,7 @@ Indicates the average summed receiving throughput of all network interfaces. Thi This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/executor/executor?viewPanel=100830` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/executor/executor?viewPanel=100930` on your Sourcegraph instance.
@@ -27025,7 +27082,7 @@ Number of dropped received packets. This can happen if the receive queues/buffer This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/executor/executor?viewPanel=100831` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/executor/executor?viewPanel=100931` on your Sourcegraph instance.
@@ -27048,7 +27105,7 @@ Number of bad/malformed packets received. https://www.kernel.org/doc/html/latest This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/executor/executor?viewPanel=100832` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/executor/executor?viewPanel=100932` on your Sourcegraph instance.
@@ -27071,7 +27128,7 @@ Indicates the average summed transmitted throughput of all network interfaces. T This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/executor/executor?viewPanel=100840` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/executor/executor?viewPanel=100940` on your Sourcegraph instance.
@@ -27094,7 +27151,7 @@ Number of dropped transmitted packets. This can happen if the receiving side`s r This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/executor/executor?viewPanel=100841` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/executor/executor?viewPanel=100941` on your Sourcegraph instance.
@@ -27117,7 +27174,7 @@ Number of packet transmission errors. This is distinct from tx packet dropping, This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/executor/executor?viewPanel=100842` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/executor/executor?viewPanel=100942` on your Sourcegraph instance.
@@ -27142,7 +27199,7 @@ A high value here indicates a possible goroutine leak. Refer to the [alerts reference](alerts#executor-go_goroutines) for 1 alert related to this panel. -To see this panel, visit `/-/debug/grafana/d/executor/executor?viewPanel=100900` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/executor/executor?viewPanel=101000` on your Sourcegraph instance. *Managed by the Sourcegraph Code Plane team.* @@ -27164,7 +27221,7 @@ max by(sg_instance) (go_goroutines{sg_job=~".*sourcegraph-executors"}) Refer to the [alerts reference](alerts#executor-go_gc_duration_seconds) for 1 alert related to this panel. -To see this panel, visit `/-/debug/grafana/d/executor/executor?viewPanel=100901` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/executor/executor?viewPanel=101001` on your Sourcegraph instance. *Managed by the Sourcegraph Code Plane team.* @@ -30516,6 +30573,32 @@ sum by (op)(increase(src_codeintel_uploads_store_errors_total{job=~"^${source:re
+### Code Intelligence > Uploads: Codeintel: Uploads > Supersession + +#### codeintel-uploads: codeintel_uploads_queued_superseded_total + +

Queued upload records superseded every 5m

+ +Number of queued upload records superseded by newer queued uploads + +This panel has no related alerts. + +To see this panel, visit `/-/debug/grafana/d/codeintel-uploads/codeintel-uploads?viewPanel=100200` on your Sourcegraph instance. + +*Managed by the Sourcegraph Code Understanding team.* + +
+Technical details + +Query: + +``` +sum(increase(src_codeintel_uploads_queued_superseded_total{job=~"^${source:regex}.*"}[5m])) +``` +
+ +
+ ### Code Intelligence > Uploads: Codeintel: Uploads > GQL Transport #### codeintel-uploads: codeintel_uploads_transport_graphql_total @@ -30524,7 +30607,7 @@ sum by (op)(increase(src_codeintel_uploads_store_errors_total{job=~"^${source:re This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/codeintel-uploads/codeintel-uploads?viewPanel=100200` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/codeintel-uploads/codeintel-uploads?viewPanel=100300` on your Sourcegraph instance. *Managed by the Sourcegraph Code Understanding team.* @@ -30546,7 +30629,7 @@ sum(increase(src_codeintel_uploads_transport_graphql_total{job=~"^${source:regex This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/codeintel-uploads/codeintel-uploads?viewPanel=100201` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/codeintel-uploads/codeintel-uploads?viewPanel=100301` on your Sourcegraph instance. *Managed by the Sourcegraph Code Understanding team.* @@ -30568,7 +30651,7 @@ sum by (le)(rate(src_codeintel_uploads_transport_graphql_duration_seconds_bucke This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/codeintel-uploads/codeintel-uploads?viewPanel=100202` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/codeintel-uploads/codeintel-uploads?viewPanel=100302` on your Sourcegraph instance. *Managed by the Sourcegraph Code Understanding team.* @@ -30590,7 +30673,7 @@ sum(increase(src_codeintel_uploads_transport_graphql_errors_total{job=~"^${sourc This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/codeintel-uploads/codeintel-uploads?viewPanel=100203` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/codeintel-uploads/codeintel-uploads?viewPanel=100303` on your Sourcegraph instance. *Managed by the Sourcegraph Code Understanding team.* @@ -30612,7 +30695,7 @@ sum(increase(src_codeintel_uploads_transport_graphql_errors_total{job=~"^${sourc This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/codeintel-uploads/codeintel-uploads?viewPanel=100210` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/codeintel-uploads/codeintel-uploads?viewPanel=100310` on your Sourcegraph instance. *Managed by the Sourcegraph Code Understanding team.* @@ -30634,7 +30717,7 @@ sum by (op)(increase(src_codeintel_uploads_transport_graphql_total{job=~"^${sour This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/codeintel-uploads/codeintel-uploads?viewPanel=100211` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/codeintel-uploads/codeintel-uploads?viewPanel=100311` on your Sourcegraph instance. *Managed by the Sourcegraph Code Understanding team.* @@ -30656,7 +30739,7 @@ histogram_quantile(0.99, sum by (le,op)(rate(src_codeintel_uploads_transport_gr This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/codeintel-uploads/codeintel-uploads?viewPanel=100212` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/codeintel-uploads/codeintel-uploads?viewPanel=100312` on your Sourcegraph instance. *Managed by the Sourcegraph Code Understanding team.* @@ -30678,7 +30761,7 @@ sum by (op)(increase(src_codeintel_uploads_transport_graphql_errors_total{job=~" This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/codeintel-uploads/codeintel-uploads?viewPanel=100213` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/codeintel-uploads/codeintel-uploads?viewPanel=100313` on your Sourcegraph instance. *Managed by the Sourcegraph Code Understanding team.* @@ -30702,7 +30785,7 @@ sum by (op)(increase(src_codeintel_uploads_transport_graphql_errors_total{job=~" This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/codeintel-uploads/codeintel-uploads?viewPanel=100300` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/codeintel-uploads/codeintel-uploads?viewPanel=100400` on your Sourcegraph instance. *Managed by the Sourcegraph Code Understanding team.* @@ -30724,7 +30807,7 @@ sum(increase(src_codeintel_uploads_transport_http_total{job=~"^${source:regex}.* This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/codeintel-uploads/codeintel-uploads?viewPanel=100301` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/codeintel-uploads/codeintel-uploads?viewPanel=100401` on your Sourcegraph instance. *Managed by the Sourcegraph Code Understanding team.* @@ -30746,7 +30829,7 @@ sum by (le)(rate(src_codeintel_uploads_transport_http_duration_seconds_bucket{j This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/codeintel-uploads/codeintel-uploads?viewPanel=100302` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/codeintel-uploads/codeintel-uploads?viewPanel=100402` on your Sourcegraph instance. *Managed by the Sourcegraph Code Understanding team.* @@ -30768,7 +30851,7 @@ sum(increase(src_codeintel_uploads_transport_http_errors_total{job=~"^${source:r This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/codeintel-uploads/codeintel-uploads?viewPanel=100303` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/codeintel-uploads/codeintel-uploads?viewPanel=100403` on your Sourcegraph instance. *Managed by the Sourcegraph Code Understanding team.* @@ -30790,7 +30873,7 @@ sum(increase(src_codeintel_uploads_transport_http_errors_total{job=~"^${source:r This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/codeintel-uploads/codeintel-uploads?viewPanel=100310` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/codeintel-uploads/codeintel-uploads?viewPanel=100410` on your Sourcegraph instance. *Managed by the Sourcegraph Code Understanding team.* @@ -30812,7 +30895,7 @@ sum by (op)(increase(src_codeintel_uploads_transport_http_total{job=~"^${source: This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/codeintel-uploads/codeintel-uploads?viewPanel=100311` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/codeintel-uploads/codeintel-uploads?viewPanel=100411` on your Sourcegraph instance. *Managed by the Sourcegraph Code Understanding team.* @@ -30834,7 +30917,7 @@ histogram_quantile(0.99, sum by (le,op)(rate(src_codeintel_uploads_transport_ht This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/codeintel-uploads/codeintel-uploads?viewPanel=100312` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/codeintel-uploads/codeintel-uploads?viewPanel=100412` on your Sourcegraph instance. *Managed by the Sourcegraph Code Understanding team.* @@ -30856,7 +30939,7 @@ sum by (op)(increase(src_codeintel_uploads_transport_http_errors_total{job=~"^${ This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/codeintel-uploads/codeintel-uploads?viewPanel=100313` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/codeintel-uploads/codeintel-uploads?viewPanel=100413` on your Sourcegraph instance. *Managed by the Sourcegraph Code Understanding team.* @@ -30882,7 +30965,7 @@ Number of repositories scanned for data retention This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/codeintel-uploads/codeintel-uploads?viewPanel=100400` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/codeintel-uploads/codeintel-uploads?viewPanel=100500` on your Sourcegraph instance. *Managed by the Sourcegraph Code Understanding team.* @@ -30906,7 +30989,7 @@ Number of codeintel upload records scanned for data retention This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/codeintel-uploads/codeintel-uploads?viewPanel=100401` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/codeintel-uploads/codeintel-uploads?viewPanel=100501` on your Sourcegraph instance. *Managed by the Sourcegraph Code Understanding team.* @@ -30930,7 +31013,7 @@ Number of commits reachable from a codeintel upload record scanned for data rete This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/codeintel-uploads/codeintel-uploads?viewPanel=100402` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/codeintel-uploads/codeintel-uploads?viewPanel=100502` on your Sourcegraph instance. *Managed by the Sourcegraph Code Understanding team.* @@ -30954,7 +31037,7 @@ Number of codeintel upload records marked as expired This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/codeintel-uploads/codeintel-uploads?viewPanel=100403` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/codeintel-uploads/codeintel-uploads?viewPanel=100503` on your Sourcegraph instance. *Managed by the Sourcegraph Code Understanding team.* @@ -30980,7 +31063,7 @@ The number of candidate records considered for cleanup. This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/codeintel-uploads/codeintel-uploads?viewPanel=100500` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/codeintel-uploads/codeintel-uploads?viewPanel=100600` on your Sourcegraph instance. *Managed by the Sourcegraph Code Understanding team.* @@ -31004,7 +31087,7 @@ The number of candidate records altered as part of cleanup. This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/codeintel-uploads/codeintel-uploads?viewPanel=100501` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/codeintel-uploads/codeintel-uploads?viewPanel=100601` on your Sourcegraph instance. *Managed by the Sourcegraph Code Understanding team.* @@ -31026,7 +31109,7 @@ sum(increase(src_codeintel_uploads_janitor_unknown_repository_records_altered_to This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/codeintel-uploads/codeintel-uploads?viewPanel=100510` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/codeintel-uploads/codeintel-uploads?viewPanel=100610` on your Sourcegraph instance. *Managed by the Sourcegraph Code Understanding team.* @@ -31048,7 +31131,7 @@ sum by (op)(increase(src_codeintel_uploads_janitor_unknown_repository_total{job= This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/codeintel-uploads/codeintel-uploads?viewPanel=100511` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/codeintel-uploads/codeintel-uploads?viewPanel=100611` on your Sourcegraph instance. *Managed by the Sourcegraph Code Understanding team.* @@ -31070,7 +31153,7 @@ histogram_quantile(0.99, sum by (le,op)(rate(src_codeintel_uploads_janitor_unkn This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/codeintel-uploads/codeintel-uploads?viewPanel=100512` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/codeintel-uploads/codeintel-uploads?viewPanel=100612` on your Sourcegraph instance. *Managed by the Sourcegraph Code Understanding team.* @@ -31092,7 +31175,7 @@ sum by (op)(increase(src_codeintel_uploads_janitor_unknown_repository_errors_tot This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/codeintel-uploads/codeintel-uploads?viewPanel=100513` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/codeintel-uploads/codeintel-uploads?viewPanel=100613` on your Sourcegraph instance. *Managed by the Sourcegraph Code Understanding team.* @@ -31118,7 +31201,7 @@ The number of candidate records considered for cleanup. This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/codeintel-uploads/codeintel-uploads?viewPanel=100600` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/codeintel-uploads/codeintel-uploads?viewPanel=100700` on your Sourcegraph instance. *Managed by the Sourcegraph Code Understanding team.* @@ -31142,7 +31225,7 @@ The number of candidate records altered as part of cleanup. This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/codeintel-uploads/codeintel-uploads?viewPanel=100601` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/codeintel-uploads/codeintel-uploads?viewPanel=100701` on your Sourcegraph instance. *Managed by the Sourcegraph Code Understanding team.* @@ -31164,7 +31247,7 @@ sum(increase(src_codeintel_uploads_janitor_unknown_commit_records_altered_total{ This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/codeintel-uploads/codeintel-uploads?viewPanel=100610` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/codeintel-uploads/codeintel-uploads?viewPanel=100710` on your Sourcegraph instance. *Managed by the Sourcegraph Code Understanding team.* @@ -31186,7 +31269,7 @@ sum by (op)(increase(src_codeintel_uploads_janitor_unknown_commit_total{job=~"^$ This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/codeintel-uploads/codeintel-uploads?viewPanel=100611` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/codeintel-uploads/codeintel-uploads?viewPanel=100711` on your Sourcegraph instance. *Managed by the Sourcegraph Code Understanding team.* @@ -31208,7 +31291,7 @@ histogram_quantile(0.99, sum by (le,op)(rate(src_codeintel_uploads_janitor_unkn This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/codeintel-uploads/codeintel-uploads?viewPanel=100612` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/codeintel-uploads/codeintel-uploads?viewPanel=100712` on your Sourcegraph instance. *Managed by the Sourcegraph Code Understanding team.* @@ -31230,7 +31313,7 @@ sum by (op)(increase(src_codeintel_uploads_janitor_unknown_commit_errors_total{j This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/codeintel-uploads/codeintel-uploads?viewPanel=100613` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/codeintel-uploads/codeintel-uploads?viewPanel=100713` on your Sourcegraph instance. *Managed by the Sourcegraph Code Understanding team.* @@ -31256,7 +31339,7 @@ The number of candidate records considered for cleanup. This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/codeintel-uploads/codeintel-uploads?viewPanel=100700` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/codeintel-uploads/codeintel-uploads?viewPanel=100800` on your Sourcegraph instance. *Managed by the Sourcegraph Code Understanding team.* @@ -31280,7 +31363,7 @@ The number of candidate records altered as part of cleanup. This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/codeintel-uploads/codeintel-uploads?viewPanel=100701` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/codeintel-uploads/codeintel-uploads?viewPanel=100801` on your Sourcegraph instance. *Managed by the Sourcegraph Code Understanding team.* @@ -31302,7 +31385,7 @@ sum(increase(src_codeintel_uploads_janitor_abandoned_records_altered_total{job=~ This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/codeintel-uploads/codeintel-uploads?viewPanel=100710` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/codeintel-uploads/codeintel-uploads?viewPanel=100810` on your Sourcegraph instance. *Managed by the Sourcegraph Code Understanding team.* @@ -31324,7 +31407,7 @@ sum by (op)(increase(src_codeintel_uploads_janitor_abandoned_total{job=~"^${sour This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/codeintel-uploads/codeintel-uploads?viewPanel=100711` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/codeintel-uploads/codeintel-uploads?viewPanel=100811` on your Sourcegraph instance. *Managed by the Sourcegraph Code Understanding team.* @@ -31346,7 +31429,7 @@ histogram_quantile(0.99, sum by (le,op)(rate(src_codeintel_uploads_janitor_aban This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/codeintel-uploads/codeintel-uploads?viewPanel=100712` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/codeintel-uploads/codeintel-uploads?viewPanel=100812` on your Sourcegraph instance. *Managed by the Sourcegraph Code Understanding team.* @@ -31368,7 +31451,7 @@ sum by (op)(increase(src_codeintel_uploads_janitor_abandoned_errors_total{job=~" This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/codeintel-uploads/codeintel-uploads?viewPanel=100713` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/codeintel-uploads/codeintel-uploads?viewPanel=100813` on your Sourcegraph instance. *Managed by the Sourcegraph Code Understanding team.* @@ -31394,7 +31477,7 @@ The number of candidate records considered for cleanup. This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/codeintel-uploads/codeintel-uploads?viewPanel=100800` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/codeintel-uploads/codeintel-uploads?viewPanel=100900` on your Sourcegraph instance. *Managed by the Sourcegraph Code Understanding team.* @@ -31418,7 +31501,7 @@ The number of candidate records altered as part of cleanup. This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/codeintel-uploads/codeintel-uploads?viewPanel=100801` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/codeintel-uploads/codeintel-uploads?viewPanel=100901` on your Sourcegraph instance. *Managed by the Sourcegraph Code Understanding team.* @@ -31440,7 +31523,7 @@ sum(increase(src_codeintel_uploads_expirer_unreferenced_records_altered_total{jo This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/codeintel-uploads/codeintel-uploads?viewPanel=100810` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/codeintel-uploads/codeintel-uploads?viewPanel=100910` on your Sourcegraph instance. *Managed by the Sourcegraph Code Understanding team.* @@ -31462,7 +31545,7 @@ sum by (op)(increase(src_codeintel_uploads_expirer_unreferenced_total{job=~"^${s This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/codeintel-uploads/codeintel-uploads?viewPanel=100811` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/codeintel-uploads/codeintel-uploads?viewPanel=100911` on your Sourcegraph instance. *Managed by the Sourcegraph Code Understanding team.* @@ -31484,7 +31567,7 @@ histogram_quantile(0.99, sum by (le,op)(rate(src_codeintel_uploads_expirer_unre This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/codeintel-uploads/codeintel-uploads?viewPanel=100812` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/codeintel-uploads/codeintel-uploads?viewPanel=100912` on your Sourcegraph instance. *Managed by the Sourcegraph Code Understanding team.* @@ -31506,7 +31589,7 @@ sum by (op)(increase(src_codeintel_uploads_expirer_unreferenced_errors_total{job This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/codeintel-uploads/codeintel-uploads?viewPanel=100813` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/codeintel-uploads/codeintel-uploads?viewPanel=100913` on your Sourcegraph instance. *Managed by the Sourcegraph Code Understanding team.* @@ -31532,7 +31615,7 @@ The number of candidate records considered for cleanup. This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/codeintel-uploads/codeintel-uploads?viewPanel=100900` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/codeintel-uploads/codeintel-uploads?viewPanel=101000` on your Sourcegraph instance. *Managed by the Sourcegraph Code Understanding team.* @@ -31556,7 +31639,7 @@ The number of candidate records altered as part of cleanup. This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/codeintel-uploads/codeintel-uploads?viewPanel=100901` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/codeintel-uploads/codeintel-uploads?viewPanel=101001` on your Sourcegraph instance. *Managed by the Sourcegraph Code Understanding team.* @@ -31578,7 +31661,7 @@ sum(increase(src_codeintel_uploads_expirer_unreferenced_graph_records_altered_to This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/codeintel-uploads/codeintel-uploads?viewPanel=100910` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/codeintel-uploads/codeintel-uploads?viewPanel=101010` on your Sourcegraph instance. *Managed by the Sourcegraph Code Understanding team.* @@ -31600,7 +31683,7 @@ sum by (op)(increase(src_codeintel_uploads_expirer_unreferenced_graph_total{job= This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/codeintel-uploads/codeintel-uploads?viewPanel=100911` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/codeintel-uploads/codeintel-uploads?viewPanel=101011` on your Sourcegraph instance. *Managed by the Sourcegraph Code Understanding team.* @@ -31622,7 +31705,7 @@ histogram_quantile(0.99, sum by (le,op)(rate(src_codeintel_uploads_expirer_unre This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/codeintel-uploads/codeintel-uploads?viewPanel=100912` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/codeintel-uploads/codeintel-uploads?viewPanel=101012` on your Sourcegraph instance. *Managed by the Sourcegraph Code Understanding team.* @@ -31644,7 +31727,7 @@ sum by (op)(increase(src_codeintel_uploads_expirer_unreferenced_graph_errors_tot This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/codeintel-uploads/codeintel-uploads?viewPanel=100913` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/codeintel-uploads/codeintel-uploads?viewPanel=101013` on your Sourcegraph instance. *Managed by the Sourcegraph Code Understanding team.* @@ -31670,7 +31753,7 @@ The number of candidate records considered for cleanup. This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/codeintel-uploads/codeintel-uploads?viewPanel=101000` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/codeintel-uploads/codeintel-uploads?viewPanel=101100` on your Sourcegraph instance. *Managed by the Sourcegraph Code Understanding team.* @@ -31694,7 +31777,7 @@ The number of candidate records altered as part of cleanup. This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/codeintel-uploads/codeintel-uploads?viewPanel=101001` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/codeintel-uploads/codeintel-uploads?viewPanel=101101` on your Sourcegraph instance. *Managed by the Sourcegraph Code Understanding team.* @@ -31716,7 +31799,7 @@ sum(increase(src_codeintel_uploads_hard_deleter_records_altered_total{job=~"^${s This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/codeintel-uploads/codeintel-uploads?viewPanel=101010` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/codeintel-uploads/codeintel-uploads?viewPanel=101110` on your Sourcegraph instance. *Managed by the Sourcegraph Code Understanding team.* @@ -31738,7 +31821,7 @@ sum by (op)(increase(src_codeintel_uploads_hard_deleter_total{job=~"^${source:re This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/codeintel-uploads/codeintel-uploads?viewPanel=101011` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/codeintel-uploads/codeintel-uploads?viewPanel=101111` on your Sourcegraph instance. *Managed by the Sourcegraph Code Understanding team.* @@ -31760,7 +31843,7 @@ histogram_quantile(0.99, sum by (le,op)(rate(src_codeintel_uploads_hard_deleter This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/codeintel-uploads/codeintel-uploads?viewPanel=101012` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/codeintel-uploads/codeintel-uploads?viewPanel=101112` on your Sourcegraph instance. *Managed by the Sourcegraph Code Understanding team.* @@ -31782,7 +31865,7 @@ sum by (op)(increase(src_codeintel_uploads_hard_deleter_errors_total{job=~"^${so This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/codeintel-uploads/codeintel-uploads?viewPanel=101013` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/codeintel-uploads/codeintel-uploads?viewPanel=101113` on your Sourcegraph instance. *Managed by the Sourcegraph Code Understanding team.* @@ -31808,7 +31891,7 @@ The number of candidate records considered for cleanup. This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/codeintel-uploads/codeintel-uploads?viewPanel=101100` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/codeintel-uploads/codeintel-uploads?viewPanel=101200` on your Sourcegraph instance. *Managed by the Sourcegraph Code Understanding team.* @@ -31832,7 +31915,7 @@ The number of candidate records altered as part of cleanup. This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/codeintel-uploads/codeintel-uploads?viewPanel=101101` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/codeintel-uploads/codeintel-uploads?viewPanel=101201` on your Sourcegraph instance. *Managed by the Sourcegraph Code Understanding team.* @@ -31854,7 +31937,7 @@ sum(increase(src_codeintel_uploads_janitor_audit_logs_records_altered_total{job= This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/codeintel-uploads/codeintel-uploads?viewPanel=101110` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/codeintel-uploads/codeintel-uploads?viewPanel=101210` on your Sourcegraph instance. *Managed by the Sourcegraph Code Understanding team.* @@ -31876,7 +31959,7 @@ sum by (op)(increase(src_codeintel_uploads_janitor_audit_logs_total{job=~"^${sou This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/codeintel-uploads/codeintel-uploads?viewPanel=101111` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/codeintel-uploads/codeintel-uploads?viewPanel=101211` on your Sourcegraph instance. *Managed by the Sourcegraph Code Understanding team.* @@ -31898,7 +31981,7 @@ histogram_quantile(0.99, sum by (le,op)(rate(src_codeintel_uploads_janitor_audi This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/codeintel-uploads/codeintel-uploads?viewPanel=101112` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/codeintel-uploads/codeintel-uploads?viewPanel=101212` on your Sourcegraph instance. *Managed by the Sourcegraph Code Understanding team.* @@ -31920,7 +32003,7 @@ sum by (op)(increase(src_codeintel_uploads_janitor_audit_logs_errors_total{job=~ This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/codeintel-uploads/codeintel-uploads?viewPanel=101113` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/codeintel-uploads/codeintel-uploads?viewPanel=101213` on your Sourcegraph instance. *Managed by the Sourcegraph Code Understanding team.* @@ -31946,7 +32029,7 @@ The number of candidate records considered for cleanup. This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/codeintel-uploads/codeintel-uploads?viewPanel=101200` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/codeintel-uploads/codeintel-uploads?viewPanel=101300` on your Sourcegraph instance. *Managed by the Sourcegraph Code Understanding team.* @@ -31970,7 +32053,7 @@ The number of candidate records altered as part of cleanup. This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/codeintel-uploads/codeintel-uploads?viewPanel=101201` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/codeintel-uploads/codeintel-uploads?viewPanel=101301` on your Sourcegraph instance. *Managed by the Sourcegraph Code Understanding team.* @@ -31992,7 +32075,7 @@ sum(increase(src_codeintel_uploads_janitor_scip_documents_records_altered_total{ This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/codeintel-uploads/codeintel-uploads?viewPanel=101210` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/codeintel-uploads/codeintel-uploads?viewPanel=101310` on your Sourcegraph instance. *Managed by the Sourcegraph Code Understanding team.* @@ -32014,7 +32097,7 @@ sum by (op)(increase(src_codeintel_uploads_janitor_scip_documents_total{job=~"^$ This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/codeintel-uploads/codeintel-uploads?viewPanel=101211` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/codeintel-uploads/codeintel-uploads?viewPanel=101311` on your Sourcegraph instance. *Managed by the Sourcegraph Code Understanding team.* @@ -32036,7 +32119,7 @@ histogram_quantile(0.99, sum by (le,op)(rate(src_codeintel_uploads_janitor_scip This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/codeintel-uploads/codeintel-uploads?viewPanel=101212` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/codeintel-uploads/codeintel-uploads?viewPanel=101312` on your Sourcegraph instance. *Managed by the Sourcegraph Code Understanding team.* @@ -32058,7 +32141,7 @@ sum by (op)(increase(src_codeintel_uploads_janitor_scip_documents_errors_total{j This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/codeintel-uploads/codeintel-uploads?viewPanel=101213` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/codeintel-uploads/codeintel-uploads?viewPanel=101313` on your Sourcegraph instance. *Managed by the Sourcegraph Code Understanding team.* @@ -32084,7 +32167,7 @@ The number of candidate records considered for cleanup. This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/codeintel-uploads/codeintel-uploads?viewPanel=101300` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/codeintel-uploads/codeintel-uploads?viewPanel=101400` on your Sourcegraph instance. *Managed by the Sourcegraph Code Understanding team.* @@ -32108,7 +32191,7 @@ The number of candidate records altered as part of cleanup. This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/codeintel-uploads/codeintel-uploads?viewPanel=101301` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/codeintel-uploads/codeintel-uploads?viewPanel=101401` on your Sourcegraph instance. *Managed by the Sourcegraph Code Understanding team.* @@ -32130,7 +32213,7 @@ sum(increase(src_codeintel_uploads_reconciler_scip_metadata_records_altered_tota This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/codeintel-uploads/codeintel-uploads?viewPanel=101310` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/codeintel-uploads/codeintel-uploads?viewPanel=101410` on your Sourcegraph instance. *Managed by the Sourcegraph Code Understanding team.* @@ -32152,7 +32235,7 @@ sum by (op)(increase(src_codeintel_uploads_reconciler_scip_metadata_total{job=~" This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/codeintel-uploads/codeintel-uploads?viewPanel=101311` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/codeintel-uploads/codeintel-uploads?viewPanel=101411` on your Sourcegraph instance. *Managed by the Sourcegraph Code Understanding team.* @@ -32174,7 +32257,7 @@ histogram_quantile(0.99, sum by (le,op)(rate(src_codeintel_uploads_reconciler_s This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/codeintel-uploads/codeintel-uploads?viewPanel=101312` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/codeintel-uploads/codeintel-uploads?viewPanel=101412` on your Sourcegraph instance. *Managed by the Sourcegraph Code Understanding team.* @@ -32196,7 +32279,7 @@ sum by (op)(increase(src_codeintel_uploads_reconciler_scip_metadata_errors_total This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/codeintel-uploads/codeintel-uploads?viewPanel=101313` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/codeintel-uploads/codeintel-uploads?viewPanel=101413` on your Sourcegraph instance. *Managed by the Sourcegraph Code Understanding team.* @@ -32222,7 +32305,7 @@ The number of candidate records considered for cleanup. This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/codeintel-uploads/codeintel-uploads?viewPanel=101400` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/codeintel-uploads/codeintel-uploads?viewPanel=101500` on your Sourcegraph instance. *Managed by the Sourcegraph Code Understanding team.* @@ -32246,7 +32329,7 @@ The number of candidate records altered as part of cleanup. This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/codeintel-uploads/codeintel-uploads?viewPanel=101401` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/codeintel-uploads/codeintel-uploads?viewPanel=101501` on your Sourcegraph instance. *Managed by the Sourcegraph Code Understanding team.* @@ -32268,7 +32351,7 @@ sum(increase(src_codeintel_uploads_reconciler_scip_data_records_altered_total{jo This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/codeintel-uploads/codeintel-uploads?viewPanel=101410` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/codeintel-uploads/codeintel-uploads?viewPanel=101510` on your Sourcegraph instance. *Managed by the Sourcegraph Code Understanding team.* @@ -32290,7 +32373,7 @@ sum by (op)(increase(src_codeintel_uploads_reconciler_scip_data_total{job=~"^${s This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/codeintel-uploads/codeintel-uploads?viewPanel=101411` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/codeintel-uploads/codeintel-uploads?viewPanel=101511` on your Sourcegraph instance. *Managed by the Sourcegraph Code Understanding team.* @@ -32312,7 +32395,7 @@ histogram_quantile(0.99, sum by (le,op)(rate(src_codeintel_uploads_reconciler_s This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/codeintel-uploads/codeintel-uploads?viewPanel=101412` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/codeintel-uploads/codeintel-uploads?viewPanel=101512` on your Sourcegraph instance. *Managed by the Sourcegraph Code Understanding team.* @@ -32334,7 +32417,7 @@ sum by (op)(increase(src_codeintel_uploads_reconciler_scip_data_errors_total{job This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/codeintel-uploads/codeintel-uploads?viewPanel=101413` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/codeintel-uploads/codeintel-uploads?viewPanel=101513` on your Sourcegraph instance. *Managed by the Sourcegraph Code Understanding team.* @@ -33332,6 +33415,912 @@ sum(increase(src_meteringexporter_queue_metrics_reporter_errors_total{job=~"^wor
+### Metering: Metering: Credit usage notification routine operations + +#### metering: licensing_credit_usage_notifications_total + +

Credit usage notification routine operations every 30m

+ +This panel has no related alerts. + +To see this panel, visit `/-/debug/grafana/d/metering/metering?viewPanel=100400` on your Sourcegraph instance. + +*Managed by the Sourcegraph Services team.* + +
+Technical details + +Query: + +``` +sum(increase(src_licensing_credit_usage_notifications_total{job=~"^worker.*"}[30m])) +``` +
+ +
+ +#### metering: licensing_credit_usage_notifications_99th_percentile_duration + +

Aggregate successful credit usage notification routine operation duration distribution over 30m

+ +This panel has no related alerts. + +To see this panel, visit `/-/debug/grafana/d/metering/metering?viewPanel=100401` on your Sourcegraph instance. + +*Managed by the Sourcegraph Services team.* + +
+Technical details + +Query: + +``` +sum by (le)(rate(src_licensing_credit_usage_notifications_duration_seconds_bucket{job=~"^worker.*"}[30m])) +``` +
+ +
+ +#### metering: licensing_credit_usage_notifications_errors_total + +

Credit usage notification routine operation errors every 30m

+ +Refer to the [alerts reference](alerts#metering-licensing_credit_usage_notifications_errors_total) for 1 alert related to this panel. + +To see this panel, visit `/-/debug/grafana/d/metering/metering?viewPanel=100402` on your Sourcegraph instance. + +*Managed by the Sourcegraph Services team.* + +
+Technical details + +Query: + +``` +sum(increase(src_licensing_credit_usage_notifications_errors_total{job=~"^worker.*"}[30m])) +``` +
+ +
+ +#### metering: licensing_credit_usage_notifications_error_rate + +

Credit usage notification routine operation error rate over 30m

+ +This panel has no related alerts. + +To see this panel, visit `/-/debug/grafana/d/metering/metering?viewPanel=100403` on your Sourcegraph instance. + +*Managed by the Sourcegraph Services team.* + +
+Technical details + +Query: + +``` +sum(increase(src_licensing_credit_usage_notifications_errors_total{job=~"^worker.*"}[30m])) / (sum(increase(src_licensing_credit_usage_notifications_total{job=~"^worker.*"}[30m])) + sum(increase(src_licensing_credit_usage_notifications_errors_total{job=~"^worker.*"}[30m]))) * 100 +``` +
+ +
+ +### Metering: Fast quota check routine (cached, latency-sensitive) + +#### metering: licensing_fast_quota_check_routine_total + +

Fast quota check probe operations every 30m

+ +This panel has no related alerts. + +To see this panel, visit `/-/debug/grafana/d/metering/metering?viewPanel=100500` on your Sourcegraph instance. + +*Managed by the Sourcegraph Services team.* + +
+Technical details + +Query: + +``` +sum(increase(src_licensing_fast_quota_check_routine_total{job=~"^worker.*"}[30m])) +``` +
+ +
+ +#### metering: licensing_fast_quota_check_routine_99th_percentile_duration + +

Aggregate successful fast quota check probe operation duration distribution over 30m

+ +Refer to the [alerts reference](alerts#metering-licensing_fast_quota_check_routine_99th_percentile_duration) for 1 alert related to this panel. + +To see this panel, visit `/-/debug/grafana/d/metering/metering?viewPanel=100501` on your Sourcegraph instance. + +*Managed by the Sourcegraph Services team.* + +
+Technical details + +Query: + +``` +sum by (le)(rate(src_licensing_fast_quota_check_routine_duration_seconds_bucket{job=~"^worker.*"}[30m])) +``` +
+ +
+ +#### metering: licensing_fast_quota_check_routine_errors_total + +

Fast quota check probe operation errors every 30m

+ +This panel has no related alerts. + +To see this panel, visit `/-/debug/grafana/d/metering/metering?viewPanel=100502` on your Sourcegraph instance. + +*Managed by the Sourcegraph Services team.* + +
+Technical details + +Query: + +``` +sum(increase(src_licensing_fast_quota_check_routine_errors_total{job=~"^worker.*"}[30m])) +``` +
+ +
+ +#### metering: licensing_fast_quota_check_routine_error_rate + +

Fast quota check probe operation error rate over 30m

+ +Refer to the [alerts reference](alerts#metering-licensing_fast_quota_check_routine_error_rate) for 1 alert related to this panel. + +To see this panel, visit `/-/debug/grafana/d/metering/metering?viewPanel=100503` on your Sourcegraph instance. + +*Managed by the Sourcegraph Services team.* + +
+Technical details + +Query: + +``` +sum(increase(src_licensing_fast_quota_check_routine_errors_total{job=~"^worker.*"}[30m])) / (sum(increase(src_licensing_fast_quota_check_routine_total{job=~"^worker.*"}[30m])) + sum(increase(src_licensing_fast_quota_check_routine_errors_total{job=~"^worker.*"}[30m]))) * 100 +``` +
+ +
+ +### Metering: Metering V2 Connect client metrics + +#### metering: metering_v2_success_p99_duration_per_method + +

99th percentile success connect client duration per method over 2m

+ +99th percentile duration of success outbound Connect calls to enterpriseportal.metering.v2.MeteringService, per method. + +This panel has no related alerts. + +To see this panel, visit `/-/debug/grafana/d/metering/metering?viewPanel=100600` on your Sourcegraph instance. + +*Managed by the Sourcegraph Services team.* + +
+Technical details + +Query: + +``` +histogram_quantile(0.99, sum by (le, rpc_method) (rate(rpc_client_duration_milliseconds_bucket{rpc_service="enterpriseportal.metering.v2.MeteringService",rpc_method=~"${metering_v2_method:regex}",job=~"${caller:regex}",rpc_connect_rpc_error_code=""}[2m]))) +``` +
+ +
+ +#### metering: metering_v2_success_p95_duration_per_method + +

95th percentile success connect client duration per method over 2m

+ +95th percentile duration of success outbound Connect calls to enterpriseportal.metering.v2.MeteringService, per method. + +This panel has no related alerts. + +To see this panel, visit `/-/debug/grafana/d/metering/metering?viewPanel=100601` on your Sourcegraph instance. + +*Managed by the Sourcegraph Services team.* + +
+Technical details + +Query: + +``` +histogram_quantile(0.95, sum by (le, rpc_method) (rate(rpc_client_duration_milliseconds_bucket{rpc_service="enterpriseportal.metering.v2.MeteringService",rpc_method=~"${metering_v2_method:regex}",job=~"${caller:regex}",rpc_connect_rpc_error_code=""}[2m]))) +``` +
+ +
+ +#### metering: metering_v2_success_p90_duration_per_method + +

90th percentile success connect client duration per method over 2m

+ +90th percentile duration of success outbound Connect calls to enterpriseportal.metering.v2.MeteringService, per method. + +This panel has no related alerts. + +To see this panel, visit `/-/debug/grafana/d/metering/metering?viewPanel=100602` on your Sourcegraph instance. + +*Managed by the Sourcegraph Services team.* + +
+Technical details + +Query: + +``` +histogram_quantile(0.90, sum by (le, rpc_method) (rate(rpc_client_duration_milliseconds_bucket{rpc_service="enterpriseportal.metering.v2.MeteringService",rpc_method=~"${metering_v2_method:regex}",job=~"${caller:regex}",rpc_connect_rpc_error_code=""}[2m]))) +``` +
+ +
+ +#### metering: metering_v2_failure_p99_duration_per_method + +

99th percentile failure connect client duration per method over 2m

+ +99th percentile duration of failure outbound Connect calls to enterpriseportal.metering.v2.MeteringService, per method. + +This panel has no related alerts. + +To see this panel, visit `/-/debug/grafana/d/metering/metering?viewPanel=100610` on your Sourcegraph instance. + +*Managed by the Sourcegraph Services team.* + +
+Technical details + +Query: + +``` +histogram_quantile(0.99, sum by (le, rpc_method) (rate(rpc_client_duration_milliseconds_bucket{rpc_service="enterpriseportal.metering.v2.MeteringService",rpc_method=~"${metering_v2_method:regex}",job=~"${caller:regex}",rpc_connect_rpc_error_code!=""}[2m]))) +``` +
+ +
+ +#### metering: metering_v2_failure_p95_duration_per_method + +

95th percentile failure connect client duration per method over 2m

+ +95th percentile duration of failure outbound Connect calls to enterpriseportal.metering.v2.MeteringService, per method. + +This panel has no related alerts. + +To see this panel, visit `/-/debug/grafana/d/metering/metering?viewPanel=100611` on your Sourcegraph instance. + +*Managed by the Sourcegraph Services team.* + +
+Technical details + +Query: + +``` +histogram_quantile(0.95, sum by (le, rpc_method) (rate(rpc_client_duration_milliseconds_bucket{rpc_service="enterpriseportal.metering.v2.MeteringService",rpc_method=~"${metering_v2_method:regex}",job=~"${caller:regex}",rpc_connect_rpc_error_code!=""}[2m]))) +``` +
+ +
+ +#### metering: metering_v2_failure_p90_duration_per_method + +

90th percentile failure connect client duration per method over 2m

+ +90th percentile duration of failure outbound Connect calls to enterpriseportal.metering.v2.MeteringService, per method. + +This panel has no related alerts. + +To see this panel, visit `/-/debug/grafana/d/metering/metering?viewPanel=100612` on your Sourcegraph instance. + +*Managed by the Sourcegraph Services team.* + +
+Technical details + +Query: + +``` +histogram_quantile(0.90, sum by (le, rpc_method) (rate(rpc_client_duration_milliseconds_bucket{rpc_service="enterpriseportal.metering.v2.MeteringService",rpc_method=~"${metering_v2_method:regex}",job=~"${caller:regex}",rpc_connect_rpc_error_code!=""}[2m]))) +``` +
+ +
+ +#### metering: metering_v2_connect_request_rate_per_method + +

Connect request rate per method over 5m

+ +Rate of outbound Connect calls to enterpriseportal.metering.v2.MeteringService, per method, over a 5 minute window. + +This panel has no related alerts. + +To see this panel, visit `/-/debug/grafana/d/metering/metering?viewPanel=100620` on your Sourcegraph instance. + +*Managed by the Sourcegraph Services team.* + +
+Technical details + +Query: + +``` +sum by (rpc_method) (rate(rpc_client_duration_milliseconds_count{rpc_service="enterpriseportal.metering.v2.MeteringService",rpc_method=~"${metering_v2_method:regex}",job=~"${caller:regex}"}[5m])) +``` +
+ +
+ +#### metering: metering_v2_connect_error_rate_per_method + +

Connect error percentage per method over 2m

+ +Percentage of outbound Connect calls to enterpriseportal.metering.v2.MeteringService that returned a non-OK code, per method. + +This panel has no related alerts. + +To see this panel, visit `/-/debug/grafana/d/metering/metering?viewPanel=100630` on your Sourcegraph instance. + +*Managed by the Sourcegraph Services team.* + +
+Technical details + +Query: + +``` +(100 * sum by (rpc_method) (rate(rpc_client_duration_milliseconds_count{rpc_service="enterpriseportal.metering.v2.MeteringService",rpc_method=~"${metering_v2_method:regex}",job=~"${caller:regex}",rpc_connect_rpc_error_code!=""}[2m]))) / sum by (rpc_method) (rate(rpc_client_duration_milliseconds_count{rpc_service="enterpriseportal.metering.v2.MeteringService",rpc_method=~"${metering_v2_method:regex}",job=~"${caller:regex}"}[2m])) +``` +
+ +
+ +#### metering: metering_v2_connect_error_rate_per_method_by_code + +

Connect error request rate per method and code over 2m

+ +Rate of failing outbound Connect calls to enterpriseportal.metering.v2.MeteringService, broken down by method and connect error code. + +This panel has no related alerts. + +To see this panel, visit `/-/debug/grafana/d/metering/metering?viewPanel=100631` on your Sourcegraph instance. + +*Managed by the Sourcegraph Services team.* + +
+Technical details + +Query: + +``` +label_replace(sum by (rpc_method, rpc_connect_rpc_error_code) (rate(rpc_client_duration_milliseconds_count{rpc_service="enterpriseportal.metering.v2.MeteringService",rpc_method=~"${metering_v2_method:regex}",job=~"${caller:regex}",rpc_connect_rpc_error_code!=""}[2m])), "rpc_connect_rpc_error_code", "ok", "rpc_connect_rpc_error_code", "") +``` +
+ +
+ +#### metering: metering_v2_connect_response_code_distribution + +

Connect response code distribution per method over 2m

+ +Rate of outbound Connect calls to enterpriseportal.metering.v2.MeteringService per method, broken down by rpc_connect_rpc_error_code. Successful calls (which carry no error-code attribute) are normalized to "ok". + +This panel has no related alerts. + +To see this panel, visit `/-/debug/grafana/d/metering/metering?viewPanel=100640` on your Sourcegraph instance. + +*Managed by the Sourcegraph Services team.* + +
+Technical details + +Query: + +``` +label_replace(sum by (rpc_method, rpc_connect_rpc_error_code) (rate(rpc_client_duration_milliseconds_count{rpc_service="enterpriseportal.metering.v2.MeteringService",rpc_method=~"${metering_v2_method:regex}",job=~"${caller:regex}"}[2m])), "rpc_connect_rpc_error_code", "ok", "rpc_connect_rpc_error_code", "") +``` +
+ +
+ +### Metering: Metering V1 Connect client metrics + +#### metering: metering_v1_success_p99_duration_per_method + +

99th percentile success connect client duration per method over 2m

+ +99th percentile duration of success outbound Connect calls to enterpriseportal.metering.v1.MeteringService, per method. + +This panel has no related alerts. + +To see this panel, visit `/-/debug/grafana/d/metering/metering?viewPanel=100700` on your Sourcegraph instance. + +*Managed by the Sourcegraph Services team.* + +
+Technical details + +Query: + +``` +histogram_quantile(0.99, sum by (le, rpc_method) (rate(rpc_client_duration_milliseconds_bucket{rpc_service="enterpriseportal.metering.v1.MeteringService",rpc_method=~"${metering_v1_method:regex}",job=~"${caller:regex}",rpc_connect_rpc_error_code=""}[2m]))) +``` +
+ +
+ +#### metering: metering_v1_success_p95_duration_per_method + +

95th percentile success connect client duration per method over 2m

+ +95th percentile duration of success outbound Connect calls to enterpriseportal.metering.v1.MeteringService, per method. + +This panel has no related alerts. + +To see this panel, visit `/-/debug/grafana/d/metering/metering?viewPanel=100701` on your Sourcegraph instance. + +*Managed by the Sourcegraph Services team.* + +
+Technical details + +Query: + +``` +histogram_quantile(0.95, sum by (le, rpc_method) (rate(rpc_client_duration_milliseconds_bucket{rpc_service="enterpriseportal.metering.v1.MeteringService",rpc_method=~"${metering_v1_method:regex}",job=~"${caller:regex}",rpc_connect_rpc_error_code=""}[2m]))) +``` +
+ +
+ +#### metering: metering_v1_success_p90_duration_per_method + +

90th percentile success connect client duration per method over 2m

+ +90th percentile duration of success outbound Connect calls to enterpriseportal.metering.v1.MeteringService, per method. + +This panel has no related alerts. + +To see this panel, visit `/-/debug/grafana/d/metering/metering?viewPanel=100702` on your Sourcegraph instance. + +*Managed by the Sourcegraph Services team.* + +
+Technical details + +Query: + +``` +histogram_quantile(0.90, sum by (le, rpc_method) (rate(rpc_client_duration_milliseconds_bucket{rpc_service="enterpriseportal.metering.v1.MeteringService",rpc_method=~"${metering_v1_method:regex}",job=~"${caller:regex}",rpc_connect_rpc_error_code=""}[2m]))) +``` +
+ +
+ +#### metering: metering_v1_failure_p99_duration_per_method + +

99th percentile failure connect client duration per method over 2m

+ +99th percentile duration of failure outbound Connect calls to enterpriseportal.metering.v1.MeteringService, per method. + +This panel has no related alerts. + +To see this panel, visit `/-/debug/grafana/d/metering/metering?viewPanel=100710` on your Sourcegraph instance. + +*Managed by the Sourcegraph Services team.* + +
+Technical details + +Query: + +``` +histogram_quantile(0.99, sum by (le, rpc_method) (rate(rpc_client_duration_milliseconds_bucket{rpc_service="enterpriseportal.metering.v1.MeteringService",rpc_method=~"${metering_v1_method:regex}",job=~"${caller:regex}",rpc_connect_rpc_error_code!=""}[2m]))) +``` +
+ +
+ +#### metering: metering_v1_failure_p95_duration_per_method + +

95th percentile failure connect client duration per method over 2m

+ +95th percentile duration of failure outbound Connect calls to enterpriseportal.metering.v1.MeteringService, per method. + +This panel has no related alerts. + +To see this panel, visit `/-/debug/grafana/d/metering/metering?viewPanel=100711` on your Sourcegraph instance. + +*Managed by the Sourcegraph Services team.* + +
+Technical details + +Query: + +``` +histogram_quantile(0.95, sum by (le, rpc_method) (rate(rpc_client_duration_milliseconds_bucket{rpc_service="enterpriseportal.metering.v1.MeteringService",rpc_method=~"${metering_v1_method:regex}",job=~"${caller:regex}",rpc_connect_rpc_error_code!=""}[2m]))) +``` +
+ +
+ +#### metering: metering_v1_failure_p90_duration_per_method + +

90th percentile failure connect client duration per method over 2m

+ +90th percentile duration of failure outbound Connect calls to enterpriseportal.metering.v1.MeteringService, per method. + +This panel has no related alerts. + +To see this panel, visit `/-/debug/grafana/d/metering/metering?viewPanel=100712` on your Sourcegraph instance. + +*Managed by the Sourcegraph Services team.* + +
+Technical details + +Query: + +``` +histogram_quantile(0.90, sum by (le, rpc_method) (rate(rpc_client_duration_milliseconds_bucket{rpc_service="enterpriseportal.metering.v1.MeteringService",rpc_method=~"${metering_v1_method:regex}",job=~"${caller:regex}",rpc_connect_rpc_error_code!=""}[2m]))) +``` +
+ +
+ +#### metering: metering_v1_connect_request_rate_per_method + +

Connect request rate per method over 5m

+ +Rate of outbound Connect calls to enterpriseportal.metering.v1.MeteringService, per method, over a 5 minute window. + +This panel has no related alerts. + +To see this panel, visit `/-/debug/grafana/d/metering/metering?viewPanel=100720` on your Sourcegraph instance. + +*Managed by the Sourcegraph Services team.* + +
+Technical details + +Query: + +``` +sum by (rpc_method) (rate(rpc_client_duration_milliseconds_count{rpc_service="enterpriseportal.metering.v1.MeteringService",rpc_method=~"${metering_v1_method:regex}",job=~"${caller:regex}"}[5m])) +``` +
+ +
+ +#### metering: metering_v1_connect_error_rate_per_method + +

Connect error percentage per method over 2m

+ +Percentage of outbound Connect calls to enterpriseportal.metering.v1.MeteringService that returned a non-OK code, per method. + +This panel has no related alerts. + +To see this panel, visit `/-/debug/grafana/d/metering/metering?viewPanel=100730` on your Sourcegraph instance. + +*Managed by the Sourcegraph Services team.* + +
+Technical details + +Query: + +``` +(100 * sum by (rpc_method) (rate(rpc_client_duration_milliseconds_count{rpc_service="enterpriseportal.metering.v1.MeteringService",rpc_method=~"${metering_v1_method:regex}",job=~"${caller:regex}",rpc_connect_rpc_error_code!=""}[2m]))) / sum by (rpc_method) (rate(rpc_client_duration_milliseconds_count{rpc_service="enterpriseportal.metering.v1.MeteringService",rpc_method=~"${metering_v1_method:regex}",job=~"${caller:regex}"}[2m])) +``` +
+ +
+ +#### metering: metering_v1_connect_error_rate_per_method_by_code + +

Connect error request rate per method and code over 2m

+ +Rate of failing outbound Connect calls to enterpriseportal.metering.v1.MeteringService, broken down by method and connect error code. + +This panel has no related alerts. + +To see this panel, visit `/-/debug/grafana/d/metering/metering?viewPanel=100731` on your Sourcegraph instance. + +*Managed by the Sourcegraph Services team.* + +
+Technical details + +Query: + +``` +label_replace(sum by (rpc_method, rpc_connect_rpc_error_code) (rate(rpc_client_duration_milliseconds_count{rpc_service="enterpriseportal.metering.v1.MeteringService",rpc_method=~"${metering_v1_method:regex}",job=~"${caller:regex}",rpc_connect_rpc_error_code!=""}[2m])), "rpc_connect_rpc_error_code", "ok", "rpc_connect_rpc_error_code", "") +``` +
+ +
+ +#### metering: metering_v1_connect_response_code_distribution + +

Connect response code distribution per method over 2m

+ +Rate of outbound Connect calls to enterpriseportal.metering.v1.MeteringService per method, broken down by rpc_connect_rpc_error_code. Successful calls (which carry no error-code attribute) are normalized to "ok". + +This panel has no related alerts. + +To see this panel, visit `/-/debug/grafana/d/metering/metering?viewPanel=100740` on your Sourcegraph instance. + +*Managed by the Sourcegraph Services team.* + +
+Technical details + +Query: + +``` +label_replace(sum by (rpc_method, rpc_connect_rpc_error_code) (rate(rpc_client_duration_milliseconds_count{rpc_service="enterpriseportal.metering.v1.MeteringService",rpc_method=~"${metering_v1_method:regex}",job=~"${caller:regex}"}[2m])), "rpc_connect_rpc_error_code", "ok", "rpc_connect_rpc_error_code", "") +``` +
+ +
+ +### Metering: Broadcast Messages V1 Connect client metrics + +#### metering: broadcast_messages_v1_success_p99_duration_per_method + +

99th percentile success connect client duration per method over 2m

+ +99th percentile duration of success outbound Connect calls to enterpriseportal.broadcastmessages.v1.BroadcastMessagesService, per method. + +This panel has no related alerts. + +To see this panel, visit `/-/debug/grafana/d/metering/metering?viewPanel=100800` on your Sourcegraph instance. + +*Managed by the Sourcegraph Services team.* + +
+Technical details + +Query: + +``` +histogram_quantile(0.99, sum by (le, rpc_method) (rate(rpc_client_duration_milliseconds_bucket{rpc_service="enterpriseportal.broadcastmessages.v1.BroadcastMessagesService",rpc_method=~"${broadcast_messages_v1_method:regex}",job=~"${caller:regex}",rpc_connect_rpc_error_code=""}[2m]))) +``` +
+ +
+ +#### metering: broadcast_messages_v1_success_p95_duration_per_method + +

95th percentile success connect client duration per method over 2m

+ +95th percentile duration of success outbound Connect calls to enterpriseportal.broadcastmessages.v1.BroadcastMessagesService, per method. + +This panel has no related alerts. + +To see this panel, visit `/-/debug/grafana/d/metering/metering?viewPanel=100801` on your Sourcegraph instance. + +*Managed by the Sourcegraph Services team.* + +
+Technical details + +Query: + +``` +histogram_quantile(0.95, sum by (le, rpc_method) (rate(rpc_client_duration_milliseconds_bucket{rpc_service="enterpriseportal.broadcastmessages.v1.BroadcastMessagesService",rpc_method=~"${broadcast_messages_v1_method:regex}",job=~"${caller:regex}",rpc_connect_rpc_error_code=""}[2m]))) +``` +
+ +
+ +#### metering: broadcast_messages_v1_success_p90_duration_per_method + +

90th percentile success connect client duration per method over 2m

+ +90th percentile duration of success outbound Connect calls to enterpriseportal.broadcastmessages.v1.BroadcastMessagesService, per method. + +This panel has no related alerts. + +To see this panel, visit `/-/debug/grafana/d/metering/metering?viewPanel=100802` on your Sourcegraph instance. + +*Managed by the Sourcegraph Services team.* + +
+Technical details + +Query: + +``` +histogram_quantile(0.90, sum by (le, rpc_method) (rate(rpc_client_duration_milliseconds_bucket{rpc_service="enterpriseportal.broadcastmessages.v1.BroadcastMessagesService",rpc_method=~"${broadcast_messages_v1_method:regex}",job=~"${caller:regex}",rpc_connect_rpc_error_code=""}[2m]))) +``` +
+ +
+ +#### metering: broadcast_messages_v1_failure_p99_duration_per_method + +

99th percentile failure connect client duration per method over 2m

+ +99th percentile duration of failure outbound Connect calls to enterpriseportal.broadcastmessages.v1.BroadcastMessagesService, per method. + +This panel has no related alerts. + +To see this panel, visit `/-/debug/grafana/d/metering/metering?viewPanel=100810` on your Sourcegraph instance. + +*Managed by the Sourcegraph Services team.* + +
+Technical details + +Query: + +``` +histogram_quantile(0.99, sum by (le, rpc_method) (rate(rpc_client_duration_milliseconds_bucket{rpc_service="enterpriseportal.broadcastmessages.v1.BroadcastMessagesService",rpc_method=~"${broadcast_messages_v1_method:regex}",job=~"${caller:regex}",rpc_connect_rpc_error_code!=""}[2m]))) +``` +
+ +
+ +#### metering: broadcast_messages_v1_failure_p95_duration_per_method + +

95th percentile failure connect client duration per method over 2m

+ +95th percentile duration of failure outbound Connect calls to enterpriseportal.broadcastmessages.v1.BroadcastMessagesService, per method. + +This panel has no related alerts. + +To see this panel, visit `/-/debug/grafana/d/metering/metering?viewPanel=100811` on your Sourcegraph instance. + +*Managed by the Sourcegraph Services team.* + +
+Technical details + +Query: + +``` +histogram_quantile(0.95, sum by (le, rpc_method) (rate(rpc_client_duration_milliseconds_bucket{rpc_service="enterpriseportal.broadcastmessages.v1.BroadcastMessagesService",rpc_method=~"${broadcast_messages_v1_method:regex}",job=~"${caller:regex}",rpc_connect_rpc_error_code!=""}[2m]))) +``` +
+ +
+ +#### metering: broadcast_messages_v1_failure_p90_duration_per_method + +

90th percentile failure connect client duration per method over 2m

+ +90th percentile duration of failure outbound Connect calls to enterpriseportal.broadcastmessages.v1.BroadcastMessagesService, per method. + +This panel has no related alerts. + +To see this panel, visit `/-/debug/grafana/d/metering/metering?viewPanel=100812` on your Sourcegraph instance. + +*Managed by the Sourcegraph Services team.* + +
+Technical details + +Query: + +``` +histogram_quantile(0.90, sum by (le, rpc_method) (rate(rpc_client_duration_milliseconds_bucket{rpc_service="enterpriseportal.broadcastmessages.v1.BroadcastMessagesService",rpc_method=~"${broadcast_messages_v1_method:regex}",job=~"${caller:regex}",rpc_connect_rpc_error_code!=""}[2m]))) +``` +
+ +
+ +#### metering: broadcast_messages_v1_connect_request_rate_per_method + +

Connect request rate per method over 5m

+ +Rate of outbound Connect calls to enterpriseportal.broadcastmessages.v1.BroadcastMessagesService, per method, over a 5 minute window. + +This panel has no related alerts. + +To see this panel, visit `/-/debug/grafana/d/metering/metering?viewPanel=100820` on your Sourcegraph instance. + +*Managed by the Sourcegraph Services team.* + +
+Technical details + +Query: + +``` +sum by (rpc_method) (rate(rpc_client_duration_milliseconds_count{rpc_service="enterpriseportal.broadcastmessages.v1.BroadcastMessagesService",rpc_method=~"${broadcast_messages_v1_method:regex}",job=~"${caller:regex}"}[5m])) +``` +
+ +
+ +#### metering: broadcast_messages_v1_connect_error_rate_per_method + +

Connect error percentage per method over 2m

+ +Percentage of outbound Connect calls to enterpriseportal.broadcastmessages.v1.BroadcastMessagesService that returned a non-OK code, per method. + +This panel has no related alerts. + +To see this panel, visit `/-/debug/grafana/d/metering/metering?viewPanel=100830` on your Sourcegraph instance. + +*Managed by the Sourcegraph Services team.* + +
+Technical details + +Query: + +``` +(100 * sum by (rpc_method) (rate(rpc_client_duration_milliseconds_count{rpc_service="enterpriseportal.broadcastmessages.v1.BroadcastMessagesService",rpc_method=~"${broadcast_messages_v1_method:regex}",job=~"${caller:regex}",rpc_connect_rpc_error_code!=""}[2m]))) / sum by (rpc_method) (rate(rpc_client_duration_milliseconds_count{rpc_service="enterpriseportal.broadcastmessages.v1.BroadcastMessagesService",rpc_method=~"${broadcast_messages_v1_method:regex}",job=~"${caller:regex}"}[2m])) +``` +
+ +
+ +#### metering: broadcast_messages_v1_connect_error_rate_per_method_by_code + +

Connect error request rate per method and code over 2m

+ +Rate of failing outbound Connect calls to enterpriseportal.broadcastmessages.v1.BroadcastMessagesService, broken down by method and connect error code. + +This panel has no related alerts. + +To see this panel, visit `/-/debug/grafana/d/metering/metering?viewPanel=100831` on your Sourcegraph instance. + +*Managed by the Sourcegraph Services team.* + +
+Technical details + +Query: + +``` +label_replace(sum by (rpc_method, rpc_connect_rpc_error_code) (rate(rpc_client_duration_milliseconds_count{rpc_service="enterpriseportal.broadcastmessages.v1.BroadcastMessagesService",rpc_method=~"${broadcast_messages_v1_method:regex}",job=~"${caller:regex}",rpc_connect_rpc_error_code!=""}[2m])), "rpc_connect_rpc_error_code", "ok", "rpc_connect_rpc_error_code", "") +``` +
+ +
+ +#### metering: broadcast_messages_v1_connect_response_code_distribution + +

Connect response code distribution per method over 2m

+ +Rate of outbound Connect calls to enterpriseportal.broadcastmessages.v1.BroadcastMessagesService per method, broken down by rpc_connect_rpc_error_code. Successful calls (which carry no error-code attribute) are normalized to "ok". + +This panel has no related alerts. + +To see this panel, visit `/-/debug/grafana/d/metering/metering?viewPanel=100840` on your Sourcegraph instance. + +*Managed by the Sourcegraph Services team.* + +
+Technical details + +Query: + +``` +label_replace(sum by (rpc_method, rpc_connect_rpc_error_code) (rate(rpc_client_duration_milliseconds_count{rpc_service="enterpriseportal.broadcastmessages.v1.BroadcastMessagesService",rpc_method=~"${broadcast_messages_v1_method:regex}",job=~"${caller:regex}"}[2m])), "rpc_connect_rpc_error_code", "ok", "rpc_connect_rpc_error_code", "") +``` +
+ +
+ ## OpenTelemetry Collector

The OpenTelemetry collector ingests OpenTelemetry data from Sourcegraph and exports it to the configured backends.

From ddb660892d9d2ecadc5081fe9b167f3da062175a Mon Sep 17 00:00:00 2001 From: Michael Bahr <1830132+bahrmichael@users.noreply.github.com> Date: Wed, 17 Jun 2026 11:58:32 +0200 Subject: [PATCH 112/217] docs: document Codex MCP setup and invalid_scope workaround (#1786) Adds documentation for connecting OpenAI Codex to the Sourcegraph MCP server. Codex's OAuth login to the MCP server fails with an `invalid_scope` error unless the `mcp` scope is pinned, because MCP endpoints require the `mcp` scope. This documents the fix. Changes: - Adds a Codex section to docs/api/mcp/client-integrations.mdx showing the `config.toml` setup (`scopes = ["mcp"]`). - Adds a Troubleshooting section to docs/api/mcp/index.mdx documenting the `invalid_scope` error and its fix. [_Created by Sourcegraph batch change `bahrmichael/6a183402-8f47-46ab-8ce0-48661bae0502`._](https://sourcegraph.sourcegraph.com/users/bahrmichael/batch-changes/6a183402-8f47-46ab-8ce0-48661bae0502) --- docs/api/mcp/client-integrations.mdx | 30 ++++++++++++++++++++++++++++ docs/api/mcp/index.mdx | 16 +++++++++++++++ 2 files changed, 46 insertions(+) diff --git a/docs/api/mcp/client-integrations.mdx b/docs/api/mcp/client-integrations.mdx index ad95ce6e2..5daaf0323 100644 --- a/docs/api/mcp/client-integrations.mdx +++ b/docs/api/mcp/client-integrations.mdx @@ -18,6 +18,7 @@ - [Antigravity](#antigravity) - [Windsurf](#windsurf) - [OpenCode](#opencode) +- [Codex](#codex) ### Amp @@ -281,3 +282,32 @@ You can add the Sourcegraph MCP server to OpenCode by configuring it in your MCP 3. Save the configuration file. 4. Restart OpenCode to apply the changes. + +### Codex + +You can add the Sourcegraph MCP server to [OpenAI Codex](https://github.com/openai/codex) by editing its `config.toml` file (default `~/.codex/config.toml`, or a project-scoped `.codex/config.toml`): + +1. Open or create the configuration file at `~/.codex/config.toml` (or `.codex/config.toml` in your project). +2. Add the following configuration: + + ```toml + [mcp_servers.sourcegraph] + url = "https://your-sourcegraph-instance.com/.api/mcp" + scopes = ["mcp"] + ``` + + + Replace `your-sourcegraph-instance.com` with your Sourcegraph instance + URL. + + + + `scopes = ["mcp"]` is required. Without it, Codex's OAuth login fails + with an `invalid_scope` error because Sourcegraph's MCP endpoints + require the `mcp` scope. See [Troubleshooting: + `invalid_scope` error during + OAuth](/api/mcp#invalid_scope-error-during-oauth) for details. + + +3. Save the configuration file. +4. Restart Codex and complete the Codex OAuth login flow to sign in to your Sourcegraph instance. diff --git a/docs/api/mcp/index.mdx b/docs/api/mcp/index.mdx index 2fd947319..9a9982f91 100644 --- a/docs/api/mcp/index.mdx +++ b/docs/api/mcp/index.mdx @@ -414,6 +414,22 @@ Use this matrix to choose the smallest endpoint that has the tools your MCP clie `deepsearch` tool. +## Troubleshooting + +### `invalid_scope` error during OAuth + +If your MCP client's OAuth login fails with an `invalid_scope` error when connecting to `/.api/mcp`, the client requested a scope that the Sourcegraph identity provider does not allow for the MCP resource. MCP endpoints require the `mcp` scope. + +To fix this, pin `scopes = ["mcp"]` in your client's OAuth configuration so the client requests only the `mcp` scope during the OAuth flow. + +For OpenAI Codex specifically, set `scopes = ["mcp"]` in your `config.toml`. See the [Codex](/api/mcp/client-integrations#codex) section on the client integrations page for the full configuration. + + + Clients that use Dynamic Client Registration (for example, Claude Code with + `--transport http` and Amp CLI) are automatically registered with the `mcp` + scope and should not normally encounter this error. + + ## Best Practices 1. **Repository Scoping:** Use `list_repos` first to find relevant repositories for better performance From e552275462685a2628a37d4e082a1bbf49453b5b Mon Sep 17 00:00:00 2001 From: Aditya Kalia <32119652+akalia25@users.noreply.github.com> Date: Wed, 17 Jun 2026 13:09:44 -0400 Subject: [PATCH 113/217] Add documentation for `credits` API endpoint (#1767) --- docs/analytics/api.mdx | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/docs/analytics/api.mdx b/docs/analytics/api.mdx index cd886d311..ae19db78b 100644 --- a/docs/analytics/api.mdx +++ b/docs/analytics/api.mdx @@ -56,3 +56,27 @@ export END_DATE="2025-12-31" curl -X GET "https://analytics.sourcegraph.com/api/reports/by-user-client-date?instanceURL=$INSTANCE_URL&startDate=$START_DATE&endDate=$END_DATE" \ -H "Authorization: Bearer $ACCESS_TOKEN" ``` + +### Credit buckets + +The credits API endpoint provides access to credit bucket allocations and consumption for your instance. To retrieve this data, run the following commands: + +```sh +export INSTANCE_URL="" # e.g. example.sourcegraphcloud.com + +curl -X GET "https://analytics.sourcegraph.com/api/credits?instanceURL=$INSTANCE_URL" \ + -H "Authorization: Bearer $ACCESS_TOKEN" +``` + +Optional `startDate` and `endDate` values (formatted as `YYYY-MM-DD`) can be specified to filter buckets by their active period. Both parameters are optional. If neither is specified, all buckets are returned. + +Example: + +```sh +export INSTANCE_URL="" # e.g. example.sourcegraphcloud.com +export START_DATE="2026-05-01" +export END_DATE="2026-12-31" + +curl -X GET "https://analytics.sourcegraph.com/api/credits?instanceURL=$INSTANCE_URL&startDate=$START_DATE&endDate=$END_DATE" \ + -H "Authorization: Bearer $ACCESS_TOKEN" +``` From a7077aa72ee985aee62af4b1458e97f0a6e3595a Mon Sep 17 00:00:00 2001 From: sourcegraph-buildkite <71296199+sourcegraph-buildkite@users.noreply.github.com> Date: Wed, 17 Jun 2026 16:53:36 -0400 Subject: [PATCH 114/217] =?UTF-8?q?=F0=9F=A4=96=20Sync=20generated=20docs?= =?UTF-8?q?=20from=20sourcegraph/sourcegraph=20(#1787)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This is an automated pull request, created by //doc:generated.push on sourcegraph/sourcegraph Co-authored-by: Buildkite --- docs/admin/code-hosts/aws-codecommit.mdx | 2 +- docs/admin/code-hosts/azuredevops.mdx | 2 +- docs/admin/code-hosts/bitbucket-cloud.mdx | 2 +- docs/admin/code-hosts/bitbucket-server.mdx | 2 +- docs/admin/code-hosts/gerrit.mdx | 2 +- docs/admin/code-hosts/github.mdx | 2 +- docs/admin/code-hosts/gitlab.mdx | 2 +- docs/admin/code-hosts/gitolite.mdx | 2 +- docs/admin/code-hosts/other.mdx | 2 +- docs/admin/code-hosts/phabricator.mdx | 2 +- docs/admin/config/settings.mdx | 2 +- docs/admin/config/site-config.mdx | 5 ++++- docs/admin/repo/perforce.mdx | 2 +- 13 files changed, 16 insertions(+), 13 deletions(-) diff --git a/docs/admin/code-hosts/aws-codecommit.mdx b/docs/admin/code-hosts/aws-codecommit.mdx index 4faac573f..da3a764c5 100644 --- a/docs/admin/code-hosts/aws-codecommit.mdx +++ b/docs/admin/code-hosts/aws-codecommit.mdx @@ -37,7 +37,7 @@ AWS CodeCommit connections support the following configuration options, which ar {/* SCHEMA_SYNC_START: admin/code_hosts/aws_codecommit.schema.json */} {/* WARNING: This section is auto-generated during releases. Do not edit manually. */} -{/* Last updated: 2026-06-16T23:55:06Z */} +{/* Last updated: 2026-06-17T20:29:01Z */} ```json { // REQUIRED: diff --git a/docs/admin/code-hosts/azuredevops.mdx b/docs/admin/code-hosts/azuredevops.mdx index 1fbc31c61..759a7ec9a 100644 --- a/docs/admin/code-hosts/azuredevops.mdx +++ b/docs/admin/code-hosts/azuredevops.mdx @@ -69,7 +69,7 @@ Azure DevOps connections support the following configuration options, which are {/* SCHEMA_SYNC_START: admin/code_hosts/azuredevops.schema.json */} {/* WARNING: This section is auto-generated during releases. Do not edit manually. */} -{/* Last updated: 2026-06-16T23:55:06Z */} +{/* Last updated: 2026-06-17T20:29:01Z */} ```json // Authentication alternatives: token OR windowsPassword diff --git a/docs/admin/code-hosts/bitbucket-cloud.mdx b/docs/admin/code-hosts/bitbucket-cloud.mdx index 68d795ef3..61efa8942 100644 --- a/docs/admin/code-hosts/bitbucket-cloud.mdx +++ b/docs/admin/code-hosts/bitbucket-cloud.mdx @@ -116,7 +116,7 @@ Bitbucket Cloud connections support the following configuration options, which a {/* SCHEMA_SYNC_START: admin/code_hosts/bitbucket_cloud.schema.json */} {/* WARNING: This section is auto-generated during releases. Do not edit manually. */} -{/* Last updated: 2026-06-16T23:55:06Z */} +{/* Last updated: 2026-06-17T20:29:01Z */} ```json { // The workspace access token to use when authenticating with Bitbucket Cloud. diff --git a/docs/admin/code-hosts/bitbucket-server.mdx b/docs/admin/code-hosts/bitbucket-server.mdx index a37454dc8..ec3ec526f 100644 --- a/docs/admin/code-hosts/bitbucket-server.mdx +++ b/docs/admin/code-hosts/bitbucket-server.mdx @@ -202,7 +202,7 @@ Bitbucket Server / Bitbucket Data Center connections support the following confi {/* SCHEMA_SYNC_START: admin/code_hosts/bitbucket_server.schema.json */} {/* WARNING: This section is auto-generated during releases. Do not edit manually. */} -{/* Last updated: 2026-06-16T23:55:06Z */} +{/* Last updated: 2026-06-17T20:29:01Z */} ```json // Authentication alternatives: token OR password diff --git a/docs/admin/code-hosts/gerrit.mdx b/docs/admin/code-hosts/gerrit.mdx index b4e45c75e..158e2d36c 100644 --- a/docs/admin/code-hosts/gerrit.mdx +++ b/docs/admin/code-hosts/gerrit.mdx @@ -113,7 +113,7 @@ Gerrit connections support the following configuration options, which are specif {/* SCHEMA_SYNC_START: admin/code_hosts/gerrit.schema.json */} {/* WARNING: This section is auto-generated during releases. Do not edit manually. */} -{/* Last updated: 2026-06-16T23:55:06Z */} +{/* Last updated: 2026-06-17T20:29:01Z */} ```json { // If non-null, enforces Gerrit repository permissions. This requires that there is an item in the [site configuration json](https://sourcegraph.com/docs/admin/config/site_config#auth-providers) `auth.providers` field, of type "gerrit" with the same `url` field as specified in this `GerritConnection`. diff --git a/docs/admin/code-hosts/github.mdx b/docs/admin/code-hosts/github.mdx index a223d69eb..2e5c92390 100644 --- a/docs/admin/code-hosts/github.mdx +++ b/docs/admin/code-hosts/github.mdx @@ -454,7 +454,7 @@ GitHub connections support the following configuration options, which are specif {/* SCHEMA_SYNC_START: admin/code_hosts/github.schema.json */} {/* WARNING: This section is auto-generated during releases. Do not edit manually. */} -{/* Last updated: 2026-06-16T23:55:06Z */} +{/* Last updated: 2026-06-17T20:29:01Z */} ```json // Authentication alternatives: token OR gitHubAppDetails OR externalAccount OR useRandomExternalAccount diff --git a/docs/admin/code-hosts/gitlab.mdx b/docs/admin/code-hosts/gitlab.mdx index 546415c5c..2f35fee0e 100644 --- a/docs/admin/code-hosts/gitlab.mdx +++ b/docs/admin/code-hosts/gitlab.mdx @@ -189,7 +189,7 @@ See [Internal rate limits](/admin/code-hosts/rate-limits#internal-rate-limits). {/* SCHEMA_SYNC_START: admin/code_hosts/gitlab.schema.json */} {/* WARNING: This section is auto-generated during releases. Do not edit manually. */} -{/* Last updated: 2026-06-16T23:55:06Z */} +{/* Last updated: 2026-06-17T20:29:01Z */} ```json { // If non-null, enforces GitLab repository permissions. This requires that there be an item in the `auth.providers` field of type "gitlab" with the same `url` field as specified in this `GitLabConnection`. diff --git a/docs/admin/code-hosts/gitolite.mdx b/docs/admin/code-hosts/gitolite.mdx index 3bc7ebad6..6c811da9e 100644 --- a/docs/admin/code-hosts/gitolite.mdx +++ b/docs/admin/code-hosts/gitolite.mdx @@ -25,7 +25,7 @@ To connect Gitolite to Sourcegraph: {/* SCHEMA_SYNC_START: admin/code_hosts/gitolite.schema.json */} {/* WARNING: This section is auto-generated during releases. Do not edit manually. */} -{/* Last updated: 2026-06-16T23:55:06Z */} +{/* Last updated: 2026-06-17T20:29:01Z */} ```json { // A list of repositories to never mirror from this Gitolite instance. Supports excluding by exact name ({"name": "foo"}). diff --git a/docs/admin/code-hosts/other.mdx b/docs/admin/code-hosts/other.mdx index 0736cf14b..af3a0c32b 100644 --- a/docs/admin/code-hosts/other.mdx +++ b/docs/admin/code-hosts/other.mdx @@ -68,7 +68,7 @@ Repositories must be listed individually: {/* SCHEMA_SYNC_START: admin/code_hosts/other_external_service.schema.json */} {/* WARNING: This section is auto-generated during releases. Do not edit manually. */} -{/* Last updated: 2026-06-16T23:55:06Z */} +{/* Last updated: 2026-06-17T20:29:01Z */} ```json { // A list of repositories to never mirror by name after applying repositoryPathPattern. Supports excluding by exact name ({"name": "myrepo"}) or regular expression ({"pattern": ".*secret.*"}). diff --git a/docs/admin/code-hosts/phabricator.mdx b/docs/admin/code-hosts/phabricator.mdx index 13810c73f..3ba085b9f 100644 --- a/docs/admin/code-hosts/phabricator.mdx +++ b/docs/admin/code-hosts/phabricator.mdx @@ -76,7 +76,7 @@ The Sourcegraph instance's site admin must [update the `corsOrigin` site config {/* SCHEMA_SYNC_START: admin/code_hosts/phabricator.schema.json */} {/* WARNING: This section is auto-generated during releases. Do not edit manually. */} -{/* Last updated: 2026-06-16T23:55:06Z */} +{/* Last updated: 2026-06-17T20:29:01Z */} ```json { // SSH cipher to use when cloning via SSH. Must be a valid choice from `ssh -Q cipher`. diff --git a/docs/admin/config/settings.mdx b/docs/admin/config/settings.mdx index e5777841f..0778de46b 100644 --- a/docs/admin/config/settings.mdx +++ b/docs/admin/config/settings.mdx @@ -27,7 +27,7 @@ Settings options and their default values are shown below. {/* SCHEMA_SYNC_START: admin/config/settings.schema.json */} {/* WARNING: This section is auto-generated during releases. Do not edit manually. */} -{/* Last updated: 2026-06-16T23:55:06Z */} +{/* Last updated: 2026-06-17T20:29:01Z */} ```json { diff --git a/docs/admin/config/site-config.mdx b/docs/admin/config/site-config.mdx index fedd63a38..ee575cacf 100644 --- a/docs/admin/config/site-config.mdx +++ b/docs/admin/config/site-config.mdx @@ -21,7 +21,7 @@ All site configuration options and their default values are shown below. {/* SCHEMA_SYNC_START: admin/config/site.schema.json */} {/* WARNING: This section is auto-generated during releases. Do not edit manually. */} -{/* Last updated: 2026-06-16T23:55:06Z */} +{/* Last updated: 2026-06-17T20:29:01Z */} ```json { @@ -55,6 +55,9 @@ All site configuration options and their default values are shown below. // - "5h30m40s" "batchChanges.changesetsRetention": null, + // Configuration for out-of-the-box coding agent steps in Batch Changes. When an access token is configured for an agent, Sourcegraph routes that agent's LLM traffic directly to the corresponding provider from the frontend proxy. Access tokens remain server-side and are never sent to executors. Agents without an access token continue to use the Sourcegraph Model Provider. + "batchChanges.codingAgents": null, + // A list of permitted container registries for use in batch changes, e.g., docker.io. If empty, all container registries are allowed. It cannot be used together with 'batchChanges.containerRegistryDenylist' // Other example values: // - "docker.io" diff --git a/docs/admin/repo/perforce.mdx b/docs/admin/repo/perforce.mdx index d22d29063..849da799a 100644 --- a/docs/admin/repo/perforce.mdx +++ b/docs/admin/repo/perforce.mdx @@ -228,7 +228,7 @@ With this setting, Sourcegraph will ignore any rules with a host other than `*`, {/* SCHEMA_SYNC_START: admin/code_hosts/perforce.schema.json */} {/* WARNING: This section is auto-generated during releases. Do not edit manually. */} -{/* Last updated: 2026-06-16T23:55:06Z */} +{/* Last updated: 2026-06-17T20:29:01Z */} ```json { // If non-null, enforces Perforce depot permissions. From c96660e6fdad3dd499606a44cd3eec0c0d27e1fc Mon Sep 17 00:00:00 2001 From: Warren Gifford Date: Fri, 19 Jun 2026 14:56:46 -0700 Subject: [PATCH 115/217] executors binary deploy type docs cleanup (#1789) closes PLAT-739 This PR is mostly just cleanup for deadlinks, typos, and some stale versions. I tested the binary runs and starts via the `sg start` and `sg start batches-executor` local dev methods. This isn't a good full walkthrough of the binary installation path, but is sufficient for the task at hand. Tested that installation docs worked locally via an orb vm. Unable to test the ignite on local machine. --- .../deploy-executors-binary-offline.mdx | 35 +++++++++++-------- .../executors/deploy-executors-binary.mdx | 14 ++++---- 2 files changed, 28 insertions(+), 21 deletions(-) diff --git a/docs/self-hosted/executors/deploy-executors-binary-offline.mdx b/docs/self-hosted/executors/deploy-executors-binary-offline.mdx index 9ea5b293c..380036cd2 100644 --- a/docs/self-hosted/executors/deploy-executors-binary-offline.mdx +++ b/docs/self-hosted/executors/deploy-executors-binary-offline.mdx @@ -6,7 +6,7 @@ When running in an air-gap environment, the executor binary can be deployed with Executors require [initial dependencies](/self-hosted/executors/deploy-executors-binary#dependencies) to -be installed on the host machine. The minimum dependencies (when not using [Firecracker](/admin/executors/#firecracker) +be installed on the host machine. The minimum dependencies (when not using [Firecracker](/self-hosted/executors/firecracker) Isolation) are: - [Docker](https://docs.docker.com/engine/install/binaries/#install-daemon-and-client-binaries-on-linux) @@ -47,7 +47,7 @@ Executors require `src-cli` to be installed on the host machine. To install `src 2. Copy the `src` binary to the offline host machine 3. Extract the binary from the archive ```shell - $ tar -zxcf src-cli_${VERSION}_linux_amd64.tar.gz + $ tar -zxf src-cli_${VERSION}_linux_amd64.tar.gz ``` 4. Set the binary as executable by running `chmod +x src` 5. Move the binary to a location in your `$PATH` (e.g. `/usr/local/bin`) @@ -97,25 +97,23 @@ be installed on the host machine. In order for `ignite` to function properly, CNI Plugins must be installed. To install CNI Plugins: 1. Download - the [CNI Plugins](https://github.com/containernetworking/plugins/releases/download/v0.9.1/cni-plugins-linux-amd64-v0.9.1.tgz) - and [CNI Isolation](https://github.com/AkihiroSuda/cni-isolation/releases/download/v0.0.4/cni-isolation-amd64.tgz) - archives on a machine with internet access -2. Copy the archives to the offline host machine + the [CNI Plugins](https://github.com/containernetworking/plugins/releases/download/v1.7.1/cni-plugins-linux-amd64-v1.7.1.tgz) + archive on a machine with internet access +2. Copy the archive to the offline host machine 3. Create the `/opt/cni/bin` directory ```shell $ mkdir -p /opt/cni/bin ``` -4. Extract the archives to the `/opt/cni/bin` directory +4. Extract the archive to the `/opt/cni/bin` directory ```shell - $ tar -zxcf cni-plugins-linux-amd64-v0.9.1.tgz -C /opt/cni/bin - $ tar -zxcf cni-isolation-amd64.tgz -C /opt/cni/bin + $ tar -zxf cni-plugins-linux-amd64-v1.7.1.tgz -C /opt/cni/bin ``` ### Install Ignite Executors use `ignite` to spawn Firecracker VMs to run code in isolation. To install `ignite`: -1. Download [`ignite`](https://github.com/sourcegraph/ignite/releases/download/v0.10.5/ignite-amd64) on a machine with +1. Download [`ignite`](https://github.com/sourcegraph/ignite/releases/download/v0.10.8/ignite-amd64) on a machine with internet access 2. Copy `ignite-amd64` to the offline host machine 3. Set the binary as executable by running `chmod +x ignite-amd64` @@ -123,7 +121,7 @@ Executors use `ignite` to spawn Firecracker VMs to run code in isolation. To ins 5. Confirm `ignite` is installed by running `ignite` ```shell $ ignite version - Ignite version: version.Info{Major:"0", Minor:"8", GitVersion:"v0.10.0", GitCommit:"...", GitTreeState:"clean", BuildDate:"...", GoVersion:"...", Compiler:"gc", Platform:"linux/amd64"} + Ignite version: version.Info{Major:"0", Minor:"10", GitVersion:"v0.10.8", GitCommit:"...", GitTreeState:"clean", BuildDate:"...", GoVersion:"...", Compiler:"gc", Platform:"linux/amd64"} Firecracker version: v0.22.4 Runtime: containerd ``` @@ -160,7 +158,7 @@ If you are using a custom image instead of the Sourcegraph image, you will need To install the Firecracker sandbox image, import the image using `docker`. ```shell -$ docker pull +$ docker pull ``` > Note: Check the version against the version of executors being installed. @@ -170,10 +168,10 @@ If you are using a custom image instead of the Sourcegraph image, you will need #### Kernel Image -To install the Firecracker Kernel image, import the image (`sourcegraph/ignite-kernel:5.10.135-amd64`) using `ignite`. +To install the Firecracker Kernel image, import the image (`sourcegraph/ignite-kernel:6.1.140-amd64`) using `ignite`. ```shell -$ ignite kernel import --runtime docker +$ ignite kernel import --runtime docker ``` > Note: Check the version against the version of executors being installed. @@ -188,3 +186,12 @@ Once the `executor` binary is installed and dependencies are met, you can valida ```shell $ executor validate ``` + +If you are using [Firecracker](/self-hosted/executors/firecracker) isolation, you can also verify that the executor is able to spin up isolation VMs properly: + +```shell +# Optionally provide a repo to clone into the VM's workspace, to verify that cloning works properly as well. +$ executor test-vm [--repo=github.com/sourcegraph/sourcegraph --revision=main] +``` + +This should succeed and print a command to use to attach to the guest VM. If it is able to spin up properly, that is a good indication that everything is set up correctly. diff --git a/docs/self-hosted/executors/deploy-executors-binary.mdx b/docs/self-hosted/executors/deploy-executors-binary.mdx index 465dbfaed..1151f2140 100644 --- a/docs/self-hosted/executors/deploy-executors-binary.mdx +++ b/docs/self-hosted/executors/deploy-executors-binary.mdx @@ -28,7 +28,7 @@ If [Firecracker isolation will be used](/self-hosted/executors/firecracker): _(r ### **Step 0:** Confirm that virtualization is enabled (if using Firecracker) -KVM (virtualization) support is required for our [sandboxing model](/admin/executors/#sandboxing-model) with Firecracker. The following command checks whether virtualization is enabled on the machine (it should print something): +KVM (virtualization) support is required for our [sandboxing model](/self-hosted/executors#sandboxing-model) with Firecracker. The following command checks whether virtualization is enabled on the machine (it should print something): ```bash $ lscpu | grep Virtualization @@ -53,8 +53,7 @@ KVM acceleration can be used Below are the download links for the _latest_ release of executors: -**Note:** Executors need to match the version of Sourcegraph they're running against. Latest will usually only work for you when -you run the latest version of Sourcegraph. +**Note:** The executor binary version must match the version of the Sourcegraph instance it connects to. - [`linux-amd64/executor`](https://storage.googleapis.com/sourcegraph-artifacts/executor/latest/linux-amd64/executor) - [`linux-amd64/executor_SHA256SUM`](https://storage.googleapis.com/sourcegraph-artifacts/executor/latest/linux-amd64/executor_SHA256SUM) @@ -63,8 +62,7 @@ you run the latest version of Sourcegraph. Download and setup the `executor` binary: ```bash -# Plug in the version of your Sourcegraph instance, like v4.1.0. -# Before Sourcegraph 3.43.0, tagged releases of executors are not available and you should default to using "latest" instead. +# Plug in the version of your Sourcegraph instance, e.g. v7.4.0. # Using latest is NOT recommended, because it might be incompatible with your Sourcegraph version. curl -sfLo executor https://storage.googleapis.com/sourcegraph-artifacts/executor/${SOURCEGRAPH_VERSION}/linux-amd64/executor chmod +x executor @@ -74,7 +72,7 @@ mv executor /usr/local/bin ### **Step 2:** Setup environment variables -The executor Linux binary is configured through environment variables which need to be passed to it when you run it (including for the `install`, `validate` and `test-vm` comamnds). You can add these to your shell profile, or an environment file. The `EXECUTOR_FRONTEND_URL`, `EXECUTOR_FRONTEND_PASSWORD` and `EXECUTOR_QUEUE_NAME` **or** `EXECUTOR_QUEUE_NAMES` are _required_ and will need to be set prior to running the executor service for the first time. +The executor Linux binary is configured through environment variables which need to be passed to it when you run it (including for the `install`, `validate` and `test-vm` commands). You can add these to your shell profile, or an environment file. The `EXECUTOR_FRONTEND_URL`, `EXECUTOR_FRONTEND_PASSWORD` and `EXECUTOR_QUEUE_NAME` **or** `EXECUTOR_QUEUE_NAMES` are _required_ and will need to be set prior to running the executor service for the first time. See [Executor configuration](/self-hosted/executors/executors-config) for a full list of configuration options for the executor service. @@ -97,6 +95,8 @@ executor install all executor install --help ``` +> Note: `executor install all` includes Firecracker-specific components (ignite, CNI plugins, VM images) and requires KVM to be available on the host. If KVM is not enabled, this command will fail. Ensure [Step 0](#step-0-confirm-that-virtualization-is-enabled-if-using-firecracker) passes before running this command. + ### **Step 4:** Validate your machine is ready to receive workloads All set up! Before letting the executor start receiving workloads from your Sourcegraph instance, you might want to verify your setup. Run the following command: @@ -107,7 +107,7 @@ executor validate If any issues are found, correct them before proceeding. -If you use our [sandboxing model](/admin/executors/#sandboxing-model) with Firecracker _(recommended)_, you can also verify that the executor is able to spin up the isolation VMs properly. For that, use the following command: +If you use our [sandboxing model](/self-hosted/executors#sandboxing-model) with Firecracker _(recommended)_, you can also verify that the executor is able to spin up the isolation VMs properly. For that, use the following command: ```bash # Optionally provide a repo to clone into the VMs workspace, to verify that cloning works properly as well. From 27a5f44fb842af809f084b2066b35ea070a33767 Mon Sep 17 00:00:00 2001 From: Warren Gifford Date: Tue, 23 Jun 2026 16:24:53 -0700 Subject: [PATCH 116/217] chore/executors: executors dind deploy docs improvements (#1792) closes PLAT-743 These docs improvements are mostly just ease of use improvements linking relevant docs and providing some visual examples in the dind splash page. Procedure tested via a local deployment with `kind` and the executors helm charts I did uncover an issue about the frontend port specification in our configmaps for dind but that will be addressed in a separate PR --- .../executors/deploy-executors-dind.mdx | 32 +++++++++++++++---- 1 file changed, 26 insertions(+), 6 deletions(-) diff --git a/docs/self-hosted/executors/deploy-executors-dind.mdx b/docs/self-hosted/executors/deploy-executors-dind.mdx index 2e1a4eb56..fcfc975a5 100644 --- a/docs/self-hosted/executors/deploy-executors-dind.mdx +++ b/docs/self-hosted/executors/deploy-executors-dind.mdx @@ -7,7 +7,7 @@ [Linux binary](/self-hosted/executors/deploy-executors-binary). -[Kubernetes manifests](https://github.com/sourcegraph/deploy-sourcegraph-k8s) are provided to deploy Sourcegraph Executors on a running Kubernetes cluster. If you are deploying Sourcegraph with helm, charts are available [here](https://github.com/sourcegraph/deploy-sourcegraph-helm). +[Kubernetes manifests](https://github.com/sourcegraph/deploy-sourcegraph-k8s/tree/main/components/executors/dind) are provided to deploy Sourcegraph Executors on a running Kubernetes cluster. If you are deploying Sourcegraph with Helm, charts are available [here](https://github.com/sourcegraph/deploy-sourcegraph-helm/tree/main/charts/sourcegraph-executor/dind). ## Deployment @@ -15,6 +15,11 @@ Executors on Kubernetes require privileged access to a container runtime daemon ### Step-by-step Guide + + Before deploying, ensure your Sourcegraph instance is configured to accept executor connections. + See [Executor authentication](/self-hosted/executors/deploy-executors#executor-authentication) for instructions on setting the required `executors.accessToken` in your site configuration. + + Ensure you have the following tools installed: - [kubectl](https://kubernetes.io/docs/tasks/tools/#kubectl) @@ -26,16 +31,31 @@ Please refer to the [Sourcegraph Helm docs](/self-hosted/deploy/kubernetes#quick To specifically deploy Executors, -1. Create an overrides file, `override.yaml`, with any other customizations you may require. +1. Create an overrides file, `override.yaml`, with any other customizations you may require. At a minimum, you must set the frontend URL and access token: + + ```yaml + executor: + # The in-cluster frontend service endpoint. + # If the executor is deployed in a different namespace than Sourcegraph, use the FQDN form: + # "http://sourcegraph-frontend.sourcegraph.svc.cluster.local:30080" + frontendUrl: "http://sourcegraph-frontend:30080" + frontendPassword: "the-shared-access-token-from-site-config" + # Required. Valid values: batches, codeintel, or both. + queueNames: ["batches", "codeintel"] + ``` + + For additional configuration options: 1. See [details on configurations](/self-hosted/deploy/kubernetes#configuration) - 2. See [here](/self-hosted/executors/executors-config) for a full list of executor environment variables + 2. See the [full values reference](https://github.com/sourcegraph/deploy-sourcegraph-helm/blob/main/charts/sourcegraph-executor/dind/README.md) for all available Helm fields + 3. See [executor environment variables](/self-hosted/executors/executors-config) for the complete configuration reference + 4. See the [GCP example override](https://github.com/sourcegraph/deploy-sourcegraph-helm/blob/main/charts/sourcegraph-executor/dind/examples/gcp/values.yaml) for a more complete example including storage, replica count, and gVisor configuration 2. Run the following command: ```bash helm upgrade --install --values ./override.yaml --version sg-executor sourcegraph/sourcegraph-executor-dind ``` -3. Confirm executors are working by checking the _Executors_ page under **Site admin > Executors > Instances** . +3. Confirm executors are working by checking the _Executors_ page under **Site admin > Executors > Instances**. ## Security considerations @@ -45,12 +65,12 @@ Docker-in-docker executors require the Docker sidecar to run as a [privileged](h Every executor deployment method exists to run **arbitrary, untrusted code**. Auto-indexing invokes language indexers and package-manager hooks to resolve dependencies, and batch changes run user-defined tooling against the contents of a repository. See [Executors](/admin/executors/) and [Firecracker](/self-hosted/executors/firecracker) for the full sandboxing model. -This means the risk of a malicious job attempting to break out of its sandbox, consume excessive compute, or exfiltrate code and credentialsis is inherent to running executors. It is not unique to Docker-in-Docker: +This means the risk of a malicious job attempting to break out of its sandbox, consume excessive compute, or exfiltrate code and credentials is inherent to running executors. It is not unique to Docker-in-Docker: - **Firecracker** provides the strongest per-job isolation (a MicroVM boundary), but it is not a complete security control on its own. Even with Firecracker, Sourcegraph additionally configures `iptables` to stop jobs from reaching [private IP ranges](/self-hosted/executors/firecracker#known-caveats) and the cloud metadata service. - **Native Kubernetes** and **Docker-in-Docker** run jobs as containers without a MicroVM boundary, so they rely more heavily on the surrounding isolation and network controls. -The runtime you choose changes the isolation boundary, but they do not negate the need for additional controls to furthur limit the blast radius. +The runtime you choose changes the isolation boundary, but they do not negate the need for additional controls to further limit the blast radius. ### Security hardening and risk management From e1381d0c881ee8bee1476644f4fa7c227ab78732 Mon Sep 17 00:00:00 2001 From: Warren Gifford Date: Thu, 25 Jun 2026 13:24:32 -0700 Subject: [PATCH 117/217] chore/executors: executors binary offline docs cleanup (#1791) closes PLAT-742 Minor docs cleanups for the offline executors binary deployment option. I'm unable to test the instructions for firecracker installs on a local machine. The locally testable installation guide is similar enough to the online binary instructions, which were tested for https://github.com/sourcegraph/docs/pull/1789 --- .../executors/deploy-executors-binary-offline.mdx | 6 +++--- docs/self-hosted/executors/deploy-executors-binary.mdx | 2 +- docs/self-hosted/executors/deploy-executors.mdx | 10 +++++----- docs/self-hosted/executors/executors-config.mdx | 4 ++-- docs/self-hosted/executors/firecracker.mdx | 2 +- 5 files changed, 12 insertions(+), 12 deletions(-) diff --git a/docs/self-hosted/executors/deploy-executors-binary-offline.mdx b/docs/self-hosted/executors/deploy-executors-binary-offline.mdx index 380036cd2..bc8bfd4cf 100644 --- a/docs/self-hosted/executors/deploy-executors-binary-offline.mdx +++ b/docs/self-hosted/executors/deploy-executors-binary-offline.mdx @@ -14,7 +14,7 @@ Isolation) are: ## Install Binary -1. Download the executor binary version that matches your deployed Sourcegraph Version (e.g. `v4.1.0`) from a machine +1. Download the executor binary version that matches your deployed Sourcegraph Version (e.g. `v7.4.0`) from a machine with internet access ```shell curl -sfLo executor https://storage.googleapis.com/sourcegraph-artifacts/executor/${SOURCEGRAPH_VERSION}/linux-amd64/executor @@ -43,7 +43,7 @@ Batch Changes requires `src-cli` to be installed on the host machine for running Executors require `src-cli` to be installed on the host machine. To install `src-cli`: 1. Download the `src-cli` binary [version](https://github.com/sourcegraph/src-cli/releases) that matches your deployed - Sourcegraph Version (e.g. `v4.1.0`) from a machine with internet access. + Sourcegraph Version (e.g. `v7.4.0`) from a machine with internet access. 2. Copy the `src` binary to the offline host machine 3. Extract the binary from the archive ```shell @@ -54,7 +54,7 @@ Executors require `src-cli` to be installed on the host machine. To install `src 6. Confirm `src` is installed by running `src` ```shell $ src version - Current version: 4.1.0 + Current version: 7.4.0 ``` Ensure the image `sourcegraph/batcheshelper` is available in the internal Docker Registry if using the native execution mode. diff --git a/docs/self-hosted/executors/deploy-executors-binary.mdx b/docs/self-hosted/executors/deploy-executors-binary.mdx index 1151f2140..80f817368 100644 --- a/docs/self-hosted/executors/deploy-executors-binary.mdx +++ b/docs/self-hosted/executors/deploy-executors-binary.mdx @@ -159,7 +159,7 @@ Also, check the [changelog](https://sourcegraph.com/changelog) for any Executors ### **Step 1:** First, grab the executor binary for the new target Sourcegraph version. -> NOTE: Keep in mind that only one minor version bumps are guaranteed to be disruption-free. +> NOTE: Keep in mind that only minor version bumps of one are guaranteed to be disruption-free. ```bash curl -sfLo executor https://storage.googleapis.com/sourcegraph-artifacts/executor/${SOURCEGRAPH_VERSION}/linux-amd64/executor diff --git a/docs/self-hosted/executors/deploy-executors.mdx b/docs/self-hosted/executors/deploy-executors.mdx index ccbb86b37..88208a604 100644 --- a/docs/self-hosted/executors/deploy-executors.mdx +++ b/docs/self-hosted/executors/deploy-executors.mdx @@ -104,25 +104,25 @@ Once the shared secret is set in Sourcegraph, you can start setting up executors title="Install executor on your machine" icon="theming" href="/self-hosted/executors/deploy-executors-binary" - description="Run executors on any linux amd64 machine." + description="Run executors on any Linux amd64 machine." /> @@ -236,7 +236,7 @@ After successfully [deploying binaries](/self-hosted/executors/deploy-executors- #### Adding certificates with Firecracker -When running executors with the [firecracker runtime](/admin/executors/#firecracker), custom certificates need to be added in +When running executors with the [firecracker runtime](/self-hosted/executors/firecracker), custom certificates need to be added in the container that is running within the Firecracker VM. To add custom certificates, you must create a new Docker image that contains the certificates. For example, diff --git a/docs/self-hosted/executors/executors-config.mdx b/docs/self-hosted/executors/executors-config.mdx index 95fe98c55..164b780d7 100644 --- a/docs/self-hosted/executors/executors-config.mdx +++ b/docs/self-hosted/executors/executors-config.mdx @@ -29,8 +29,8 @@ The following is a list of all of the configuration options for the executor ser | `EXECUTOR_VM_STARTUP_SCRIPT_PATH` | A path to a file on the host that is loaded into a fresh virtual machine and executed on startup. | `/vm-startup.sh` | | `NODE_EXPORTER_URL` | The URL of the node_exporter instance, without the /metrics path. | `http://127.0.0.1:9000` | | `EXECUTOR_FIRECRACKER_IMAGE` | The base image to use for virtual machines. | `sourcegraph/executor-vm:insiders` | -| `EXECUTOR_FIRECRACKER_KERNEL_IMAGE` | The base image containing the kernel binary to use for virtual machines. | `sourcegraph/ignite-kernel:5.10.135-amd64` | -| `EXECUTOR_FIRECRACKER_SANDBOX_IMAGE` | The OCI image for the ignite VM sandbox. | `sourcegraph/ignite:v0.10.5` | +| `EXECUTOR_FIRECRACKER_KERNEL_IMAGE` | The base image containing the kernel binary to use for virtual machines. | `sourcegraph/ignite-kernel:6.1.140-amd64` | +| `EXECUTOR_FIRECRACKER_SANDBOX_IMAGE` | The OCI image for the ignite VM sandbox. | `sourcegraph/ignite:v0.10.8` | | `DOCKER_REGISTRY_NODE_EXPORTER_URL` | The URL of the Docker Registry instance's node_exporter, without the /metrics path. | `http://localhost:9000` | | `SRC_LOG_LEVEL` | upper log level to restrict log output to (dbug, info, warn, error, crit) (default value: "warn") | `warn` | diff --git a/docs/self-hosted/executors/firecracker.mdx b/docs/self-hosted/executors/firecracker.mdx index d56b68d74..db035d529 100644 --- a/docs/self-hosted/executors/firecracker.mdx +++ b/docs/self-hosted/executors/firecracker.mdx @@ -6,7 +6,7 @@ Because Sourcegraph has access to your code and credentials to external tools, w Jobs handled by the executor are defined as a series of Docker (or Docker-like) image invocations sharing the same filesystem workspace initialized with the contents of the repository being indexed or modified. When the executor process is running on a raw compute node (specifically, not using the Kubernetes runner in-cluster), the executor can create a [Firecracker "MicroVM"](https://firecracker-microvm.github.io/) for every job and run the containers in a _completely isolated_ manner. The Docker (or Docker-like) daemon running in a MicroVM is isolated from the host, hence each job is also isolated from one another. -See [this architecture diagram](/admin/executors/#firecracker) detailing Firecracker isolation. +See [this architecture diagram](/self-hosted/executors#firecracker) detailing Firecracker isolation. ## When to use From cfd2da54ec4fcce5871f4b2a9f6eb91b15eaa08b Mon Sep 17 00:00:00 2001 From: Gabe Torres <69164745+gabtorre@users.noreply.github.com> Date: Thu, 25 Jun 2026 16:31:28 -0700 Subject: [PATCH 118/217] Update MCP tool reference layout (#1793) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Update the MCP server docs tool reference to use collapsible `
` sections for each tool Screenshot 2026-06-25 at 3 44 46 PM --- docs/api/mcp/index.mdx | 73 +++++++++++++++++++++++++++++++++--------- 1 file changed, 57 insertions(+), 16 deletions(-) diff --git a/docs/api/mcp/index.mdx b/docs/api/mcp/index.mdx index 9a9982f91..bceca0033 100644 --- a/docs/api/mcp/index.mdx +++ b/docs/api/mcp/index.mdx @@ -195,7 +195,8 @@ The MCP server provides these tools for code exploration and analysis: #### `read_file` -Read file contents with line numbers and support for specific ranges and revisions. +
+Read file contents with line numbers and support for specific ranges and revisions. **Parameters:** @@ -211,9 +212,12 @@ Read file contents with line numbers and support for specific ranges and revisio File size limit is 128KB. Use line ranges for larger files. +
+ #### `list_files` -List files and directories in a repository path. +
+List files and directories in a repository path. **Parameters:** @@ -221,9 +225,12 @@ List files and directories in a repository path. - `path` - Directory path (optional, defaults to root) - `revision` - Branch, tag, or commit hash (optional) +
+ #### `list_repos` -Search and list repositories by name patterns with pagination support. +
+Search and list repositories by name patterns with pagination support. **Parameters:** @@ -231,11 +238,14 @@ Search and list repositories by name patterns with pagination support. - `limit` - Maximum results per page (optional, default 50) - `after`/`before` - Pagination cursors (optional) +
+ ### Code Search #### `keyword_search` -Perform exact keyword searches with boolean operators and filters. +
+Perform exact keyword searches with boolean operators and filters. **Parameters:** @@ -249,9 +259,12 @@ Perform exact keyword searches with boolean operators and filters. **Features:** Boolean AND/OR operators, regex patterns +
+ #### `nls_search` -Semantic search with flexible linguistic matching. +
+Semantic search with flexible linguistic matching. **Parameters:** @@ -265,9 +278,12 @@ Semantic search with flexible linguistic matching. **Features:** Flexible linguistic matching, stemming, broader results than keyword search +
+ #### `evaluator` -Run sandboxed Lua scripts for aggregation, cross-referencing, and computation over search results. +
+Run sandboxed Lua scripts for aggregation, cross-referencing, and computation over search results. **Parameters:** @@ -275,11 +291,14 @@ Run sandboxed Lua scripts for aggregation, cross-referencing, and computation ov **Use cases:** Counting or aggregating many search matches, cross-referencing multiple searches, transforming or combining search output with custom logic +
+ ### Code Navigation #### `go_to_definition` -Find the definition of a symbol from a usage location. +
+Find the definition of a symbol from a usage location. **Parameters:** @@ -290,9 +309,12 @@ Find the definition of a symbol from a usage location. **Features:** Cross-repository support, compiler-level accuracy +
+ #### `find_references` -Find all references to a symbol from its definition location. +
+Find all references to a symbol from its definition location. **Parameters:** @@ -301,11 +323,14 @@ Find all references to a symbol from its definition location. - `symbol` - Symbol name to find references for (required) - `revision` - Branch, tag, or commit hash (optional) +
+ ### Version Control & History #### `commit_search` -Search commits by message, author, content, files, and date ranges. +
+Search commits by message, author, content, files, and date ranges. **Parameters:** @@ -317,9 +342,12 @@ Search commits by message, author, content, files, and date ranges. - `after`/`before` - Date range filters (optional) - `revisions` - Branches, tags, or ref globs to search (optional) +
+ #### `diff_search` -Search actual code changes for specific patterns across repositories. +
+Search actual code changes for specific patterns across repositories. **Parameters:** @@ -331,9 +359,12 @@ Search actual code changes for specific patterns across repositories. - `after`/`before` - Date range filters (optional) - `revisions` - Branches, tags, or ref globs to search (optional) +
+ #### `compare_revisions` -Compare changes between two specific revisions. +
+Compare changes between two specific revisions. **Parameters:** @@ -343,9 +374,12 @@ Compare changes between two specific revisions. - `first` - Maximum file diffs to return (optional, default 50) - `after` - Pagination cursor (optional) +
+ #### `get_contributor_repos` -Find repositories where a contributor has made commits. +
+Find repositories where a contributor has made commits. **Parameters:** @@ -353,6 +387,8 @@ Find repositories where a contributor has made commits. - `limit` - Maximum repositories to return (optional, default 20) - `minCommits` - Minimum commits required (optional, default 1) +
+ ### Deep Search @@ -363,10 +399,10 @@ Find repositories where a contributor has made commits. endpoint. This is a temporary measure available in 7.0 and will be replaced by a proper tool allowlist in a future release. +#### `deepsearch` -### `deepsearch` - -Create a new Deep Search conversation to answer complex questions about your codebase. +
+Create a new Deep Search conversation to answer complex questions about your codebase. **Parameters:** @@ -374,9 +410,12 @@ Create a new Deep Search conversation to answer complex questions about your cod **Use cases:** Comprehensive analysis of complex technical questions, multi-step research across one or many remote codebases, detailed explanations with supporting evidence, questions that require combining information from multiple sources +
+ #### `deepsearch_read` -Read a Deep Search conversation and return the markdown content of the questions and answers. +
+Read a Deep Search conversation and return the markdown content of the questions and answers. **Parameters:** @@ -386,6 +425,8 @@ Read a Deep Search conversation and return the markdown content of the questions **Use cases:** Reading or re-opening Deep Search results, summarizing existing answers, using past Deep Search as context for new questions +
+ ## Tool Availability by Endpoint Use this matrix to choose the smallest endpoint that has the tools your MCP client needs. From e81db3c6d4df5feb713de203efe019a54897a258 Mon Sep 17 00:00:00 2001 From: Gabe Torres <69164745+gabtorre@users.noreply.github.com> Date: Thu, 25 Jun 2026 16:33:41 -0700 Subject: [PATCH 119/217] Show pointer cursor on details summaries (#1794) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Screenshot 2026-06-25 at 3 51 08 PM --- src/components/Prose.tsx | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/components/Prose.tsx b/src/components/Prose.tsx index 82d1612ad..eeba543a0 100644 --- a/src/components/Prose.tsx +++ b/src/components/Prose.tsx @@ -34,6 +34,8 @@ export function Prose({ 'prose-strong:text-vermilion-08 dark:prose-strong:text-vermilion-08', // Inline code block 'prose-code:before:content-none prose-code:after:content-none', + // Details summary + '[&_summary]:cursor-pointer', // Video 'prose-video:rounded-xl', From 1d547c5ec2b5d99b9e54915ff2d32353e891c16e Mon Sep 17 00:00:00 2001 From: Gabe Torres <69164745+gabtorre@users.noreply.github.com> Date: Fri, 26 Jun 2026 14:31:42 -0700 Subject: [PATCH 120/217] docs: update MCP tool parameter docs (#1795) - Update MCP tool parameter docs to match current schemas - Add missing parameters such as count, limit, authors - Clarify limits/defaults for several MCP tools - Fix list_repos docs to remove unsupported cursor pagination - Tighten spacing inside docs
blocks for Parameters: labels --- docs/api/mcp/index.mdx | 34 ++++++++++++++++++++++++---------- src/components/Prose.tsx | 4 +++- 2 files changed, 27 insertions(+), 11 deletions(-) diff --git a/docs/api/mcp/index.mdx b/docs/api/mcp/index.mdx index bceca0033..463cc67a9 100644 --- a/docs/api/mcp/index.mdx +++ b/docs/api/mcp/index.mdx @@ -209,7 +209,8 @@ The MCP server provides these tools for code exploration and analysis: **Use cases:** Reading specific files, examining code sections, reviewing different versions - File size limit is 128KB. Use line ranges for larger files. + Files over 128KB return the first 200 lines with a truncation notice. Use + `startLine` and `endLine` to read specific sections of larger files.
@@ -225,18 +226,26 @@ The MCP server provides these tools for code exploration and analysis: - `path` - Directory path (optional, defaults to root) - `revision` - Branch, tag, or commit hash (optional) + + Results are limited to 1000 entries; narrow `path` to inspect + larger directories. + +
#### `list_repos`
-Search and list repositories by name patterns with pagination support. +Search and list repositories by name substring. **Parameters:** -- `query` - Search pattern for repository names (required) -- `limit` - Maximum results per page (optional, default 50) -- `after`/`before` - Pagination cursors (optional) +- `query` - Substring to match against repository names (required) +- `limit` - Maximum repositories to return (optional, default 50, maximum 10000) + + + Responses include `hasMoreResults` to indicate whether the result set was truncated; refine the query or increase `limit` to return more repositories. +
@@ -245,7 +254,7 @@ The MCP server provides these tools for code exploration and analysis: #### `keyword_search`
-Perform exact keyword searches with boolean operators and filters. +Perform exact keyword code searches. **Parameters:** @@ -256,8 +265,9 @@ The MCP server provides these tools for code exploration and analysis: - `repo:` - limit to specific repositories - `file:` - search specific file patterns - `rev:` - search specific revisions +- `count:` - set the number of returned matches -**Features:** Boolean AND/OR operators, regex patterns +**Features:** Boolean AND/OR operators, exact keyword matching
@@ -322,6 +332,7 @@ The MCP server provides these tools for code exploration and analysis: - `path` - File path containing symbol definition (required) - `symbol` - Symbol name to find references for (required) - `revision` - Branch, tag, or commit hash (optional) +- `limit` - Maximum references to return (optional, default 10)
@@ -341,6 +352,7 @@ The MCP server provides these tools for code exploration and analysis: - `files` - Filter by file paths (optional) - `after`/`before` - Date range filters (optional) - `revisions` - Branches, tags, or ref globs to search (optional) +- `count` - Number of results to return (optional, default 50, maximum 100)
@@ -358,6 +370,7 @@ The MCP server provides these tools for code exploration and analysis: - `authors` - Filter by authors (optional) - `after`/`before` - Date range filters (optional) - `revisions` - Branches, tags, or ref globs to search (optional) +- `count` - Maximum results to return (optional, default 20, maximum 50)
@@ -371,7 +384,7 @@ The MCP server provides these tools for code exploration and analysis: - `repo` - Repository name (required) - `base` - Base revision (older version) (required) - `head` - Head revision (newer version) (required) -- `first` - Maximum file diffs to return (optional, default 50) +- `first` - Maximum file diffs to return (optional, default 50, maximum 100) - `after` - Pagination cursor (optional)
@@ -383,8 +396,8 @@ The MCP server provides these tools for code exploration and analysis: **Parameters:** -- `author` - Author name or email (required) -- `limit` - Maximum repositories to return (optional, default 20) +- `authors` - Author names or email addresses (required, maximum 5) +- `limit` - Maximum repositories to return (optional, default 20, maximum 100) - `minCommits` - Minimum commits required (optional, default 1)
@@ -399,6 +412,7 @@ The MCP server provides these tools for code exploration and analysis: endpoint. This is a temporary measure available in 7.0 and will be replaced by a proper tool allowlist in a future release. + #### `deepsearch`
diff --git a/src/components/Prose.tsx b/src/components/Prose.tsx index eeba543a0..3f1b8eef6 100644 --- a/src/components/Prose.tsx +++ b/src/components/Prose.tsx @@ -34,8 +34,10 @@ export function Prose({ 'prose-strong:text-vermilion-08 dark:prose-strong:text-vermilion-08', // Inline code block 'prose-code:before:content-none prose-code:after:content-none', - // Details summary + // Details blocks '[&_summary]:cursor-pointer', + // Tighten the first paragraph under + '[&_details>p:first-of-type]:mt-2', // Video 'prose-video:rounded-xl', From 546355b3b96f81b2ab11420c0f852d60d814af25 Mon Sep 17 00:00:00 2001 From: Eugenio Sanchez Date: Mon, 29 Jun 2026 10:07:07 -0700 Subject: [PATCH 121/217] docs: clarify AWS PrivateLink firewall requirements (#1796) Clarifies that AWS PrivateLink setup requires the network path behind the VPC endpoint service to allow inbound traffic from Sourcegraph-provided source CIDR ranges. Adds an FAQ for cases where the VPC endpoint is accepted and available, but Sourcegraph requests still time out because backend firewall, NLB, security group, or NACL rules block traffic. --- docs/cloud/private-connectivity-aws.mdx | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/docs/cloud/private-connectivity-aws.mdx b/docs/cloud/private-connectivity-aws.mdx index f6bcc097b..fe8531729 100644 --- a/docs/cloud/private-connectivity-aws.mdx +++ b/docs/cloud/private-connectivity-aws.mdx @@ -37,6 +37,8 @@ When a customer has private resources inside the AWS VPC and needs to expose it Sourcegraph will provide the Sourcegraph-managed AWS account ARN that needs to be allowlisted in your VPC endpoint service, e.g., `arn:aws:iam::$accountId:root`. It must be allowlisted by customer before the connection can be established. Note: The AWS account is created exclusively for individual Cloud customers and not shared with others. +In addition to allowlisting the Sourcegraph-managed AWS account ARN on the VPC endpoint service, ensure that the network path behind the endpoint service allows inbound traffic from the Sourcegraph-provided source CIDR ranges to the private resource. + The customer needs to share the following details with Sourcegraph: - VPC endpoint service name in the format of `com.amazonaws.vpce..`. @@ -72,6 +74,12 @@ Advantages of the site-to-site GCP to AWS VPN include: The customer has full control over the exposed service and they may terminate the connection at any point. +### The VPC endpoint is available, but Sourcegraph cannot reach the private resource. What should I check? + +If the endpoint connection is accepted and available but requests from Sourcegraph time out, verify that the private resource allows traffic from the Sourcegraph-provided source CIDR ranges. Check the Network Load Balancer listener, target security groups, network ACLs, and any host or application firewalls for the relevant port, usually `443`. + +DNS and endpoint health can be correct even when backend firewall rules block the traffic. + ### What are the next steps when artifact registry connectivity is working? Only if the private artifact registry is protected by authentication, the customer will need to: From df30816f4364aa809ce6814e47aaaa8182bde1fc Mon Sep 17 00:00:00 2001 From: Robert Lin Date: Tue, 30 Jun 2026 07:51:19 -0700 Subject: [PATCH 122/217] abc: initial docs (#1798) Starting point! Closes https://linear.app/sourcegraph/issue/EPD2-158/bca-product-documentation --- docs/agentic-batch-changes/index.mdx | 75 ++++++++++++++++++++++++++++ src/data/navigation.ts | 4 ++ 2 files changed, 79 insertions(+) create mode 100644 docs/agentic-batch-changes/index.mdx diff --git a/docs/agentic-batch-changes/index.mdx b/docs/agentic-batch-changes/index.mdx new file mode 100644 index 000000000..4c7e1041b --- /dev/null +++ b/docs/agentic-batch-changes/index.mdx @@ -0,0 +1,75 @@ +--- +seoPriority: 1.0 +--- + +# Agentic Batch Changes + +[Agentic Batch Changes](http://sourcegraph.com/agentic-batch-changes) lets you describe a change in plain language: then, the agent scopes it, applies it across every repo, and tracks it through to merge. + + + Agentic Batch Changes is currently a [Beta feature](/beta-and-experimental). + The Beta is currently only available upon request: **[schedule a + demo](https://sourcegraph.com/contact) or reach out to your account manager + to get started.** + + +Agentic Batch Changes is built on top of [Batch Changes](/batch-changes), our precision tool for applying code changes at scale. Paired with [Deep Search](/deep-search), our code understanding agent, these two tools form the foundation of an agent harness specialised for operating across your entire codebase: from thousands of repositories, to the largest monorepos. + + + +## Getting started + +Agentic Batch Changes is currently a [Beta feature](/beta-and-experimental). The Beta is currently only available upon request: **[schedule a demo](https://sourcegraph.com/contact) or reach out to your account manager to get started.** + +Once Agentic Batch Changes is enabled, you can find it in the Sourcegraph navigation bar. + +### Setup + +Before creating an Agentic Batch Change, make sure your Sourcegraph instance can access the repositories and publish changes back to your code host: + +- [Configure code host connections](/admin/code-hosts) for the repositories you want the agent to search and modify. +- [Configure Batch Changes credentials](/batch-changes/configuring-credentials) for each code host where the agent should publish pull requests or merge requests. +- [Deploy Sourcegraph executors](/self-hosted/executors/deploy-executors) so Agentic Batch Changes can run code-modification jobs in isolated workspaces. Executors are available with no additional setup on [Sourcegraph Cloud](/cloud). + +### Prompting + +Each Agentic Batch Change starts with a prompt. Like any agent, specificity and a clear success criteria can dramatically improve results. The agent works particularly well with detailed migration plans, which you can upload for the agent to consume. However, you can also start with some fairly simple requests to see how the agent responds: + +- "Generate documentation for these repositories to describe the purpose of the repository." +- "Generate `AGENTS.md` guidance for these repositories to help coding agents." +- "Identify usage of primitive wrapper constructors in Java projects, like `new Boolean(true)`, and replace them with the recommended `.valueOf()` factory method `Boolean.valueOf(true)`." +- "In our Go 1.16+ code, remove `ioutil` imports, replacing them with the appropriate modern methods in packages like `io` and `os`." +- "Find repositories affected by CVE-2025-55182. Prioritize repositories that have execution paths to vulnerable code. If the application’s React code does not use a server, it is not affected by this vulnerability. If the app does not use a framework, bundler, or bundler plugin that supports React Server Components, the app is not affected by this vulnerability." + +### Customisation + +Most organisations will also have specific conventions, technologies, and preferences. The agent may discover some of these conventions in its research, but you can also improve performance by customising the agent with skills and `AGENTS.md`-style guidance, available on a per-user, per-organisation, or global level in settings: + +- **Users → Settings → Batch Changes → Agent** +- **Administration → Batch Changes → Agent** + +## Administration + +Most Batch Changes configurations still apply in Agentic Batch Changes, unless otherwise listed before. To learn more about Batch Changes configuration options, refer to [Site Admin Configuration for Batch Changes](/batch-changes/site-admin-configuration). + +### Access control + +Access to Agentic Batch Changes can be managed through [role-based access control](/admin/access-control). Users will need both of: + +- Batch Changes permissions `Batch Changes: Read` or `Batch Changes: Write` +- Agentic Batch Changes permissions `Batch Changes: Agent Read` or `Batch Changes: Agent Write` + +## Security + +Agentic Batch Changes uses the same security model as Batch Changes, with additional safeguards for agent-generated work: + +- [Repository permissions](/admin/permissions/) are enforced when users view, create, update, or publish changes, so users can only act on repositories they are allowed to access. +- [Batch Changes credentials](/batch-changes/configuring-credentials) control which code host identity publishes pull requests or merge requests. +- Code host protections, including CI checks, branch protections, and review requirements, continue to apply to pull requests or merge requests created by Agentic Batch Changes. +- [Executors](/admin/executors/) run code-modification jobs in isolated workspaces. Executors do not access code host credentials directly. +- [Executor secrets](/admin/executors/executor-secrets) are scoped by user, organisation, or globally, and are redacted in logs. Agentic Batch Changes will ask you for approval on any agent-generated actions that reference your secrets before those actions run. diff --git a/src/data/navigation.ts b/src/data/navigation.ts index e11e2e540..5f9486c96 100644 --- a/src/data/navigation.ts +++ b/src/data/navigation.ts @@ -270,6 +270,10 @@ export const navigation: NavigationItem[] = [ { separator: 'Code management', topics: [ + { + title: 'Agentic Batch Changes', + href: '/agentic-batch-changes' + }, { title: 'Batch Changes', href: '/batch-changes', From 21b8905b3c603fa1c4fa81a22aae378eef80730e Mon Sep 17 00:00:00 2001 From: Robert Lin Date: Tue, 30 Jun 2026 15:43:01 -0700 Subject: [PATCH 123/217] abc: capability docs (#1799) --- docs/agentic-batch-changes/index.mdx | 49 +++++++++++++++++++++++++--- 1 file changed, 44 insertions(+), 5 deletions(-) diff --git a/docs/agentic-batch-changes/index.mdx b/docs/agentic-batch-changes/index.mdx index 4c7e1041b..ef6084f06 100644 --- a/docs/agentic-batch-changes/index.mdx +++ b/docs/agentic-batch-changes/index.mdx @@ -13,7 +13,7 @@ seoPriority: 1.0 to get started.** -Agentic Batch Changes is built on top of [Batch Changes](/batch-changes), our precision tool for applying code changes at scale. Paired with [Deep Search](/deep-search), our code understanding agent, these two tools form the foundation of an agent harness specialised for operating across your entire codebase: from thousands of repositories, to the largest monorepos. +Agentic Batch Changes is built on top of [Batch Changes](/batch-changes), our precision tool for applying code changes at scale. Paired with [Deep Search](/deep-search), our code understanding agent, these two tools form the foundation of an agent harness specialized for operating across your entire codebase: from thousands of repositories, to the largest monorepos.
@@ -15875,7 +16045,7 @@ max(rate(src_repo_perms_syncer_schedule_repos_total[1m])) This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101200` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101400` on your Sourcegraph instance. *Managed by the Sourcegraph Services team.* @@ -15897,7 +16067,7 @@ sum(increase(src_gitserver_client_total{job=~"^worker.*"}[5m])) This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101201` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101401` on your Sourcegraph instance. *Managed by the Sourcegraph Services team.* @@ -15919,7 +16089,7 @@ sum by (le)(rate(src_gitserver_client_duration_seconds_bucket{job=~"^worker.*"} This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101202` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101402` on your Sourcegraph instance. *Managed by the Sourcegraph Services team.* @@ -15941,7 +16111,7 @@ sum(increase(src_gitserver_client_errors_total{job=~"^worker.*"}[5m])) This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101203` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101403` on your Sourcegraph instance. *Managed by the Sourcegraph Services team.* @@ -15963,7 +16133,7 @@ sum(increase(src_gitserver_client_errors_total{job=~"^worker.*"}[5m])) / (sum(in This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101210` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101410` on your Sourcegraph instance. *Managed by the Sourcegraph Services team.* @@ -15985,7 +16155,7 @@ sum by (op,scope)(increase(src_gitserver_client_total{job=~"^worker.*"}[5m])) This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101211` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101411` on your Sourcegraph instance. *Managed by the Sourcegraph Services team.* @@ -16007,7 +16177,7 @@ histogram_quantile(0.99, sum by (le,op,scope)(rate(src_gitserver_client_duratio This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101212` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101412` on your Sourcegraph instance. *Managed by the Sourcegraph Services team.* @@ -16029,7 +16199,7 @@ sum by (op,scope)(increase(src_gitserver_client_errors_total{job=~"^worker.*"}[5 This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101213` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101413` on your Sourcegraph instance. *Managed by the Sourcegraph Services team.* @@ -16053,7 +16223,7 @@ sum by (op,scope)(increase(src_gitserver_client_errors_total{job=~"^worker.*"}[5 This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101300` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101500` on your Sourcegraph instance. *Managed by the Sourcegraph Services team.* @@ -16075,7 +16245,7 @@ sum(increase(src_gitserver_repositoryservice_client_total{job=~"^worker.*"}[5m]) This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101301` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101501` on your Sourcegraph instance. *Managed by the Sourcegraph Services team.* @@ -16097,7 +16267,7 @@ sum by (le)(rate(src_gitserver_repositoryservice_client_duration_seconds_bucket This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101302` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101502` on your Sourcegraph instance. *Managed by the Sourcegraph Services team.* @@ -16119,7 +16289,7 @@ sum(increase(src_gitserver_repositoryservice_client_errors_total{job=~"^worker.* This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101303` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101503` on your Sourcegraph instance. *Managed by the Sourcegraph Services team.* @@ -16141,7 +16311,7 @@ sum(increase(src_gitserver_repositoryservice_client_errors_total{job=~"^worker.* This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101310` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101510` on your Sourcegraph instance. *Managed by the Sourcegraph Services team.* @@ -16163,7 +16333,7 @@ sum by (op,scope)(increase(src_gitserver_repositoryservice_client_total{job=~"^w This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101311` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101511` on your Sourcegraph instance. *Managed by the Sourcegraph Services team.* @@ -16185,7 +16355,7 @@ histogram_quantile(0.99, sum by (le,op,scope)(rate(src_gitserver_repositoryserv This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101312` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101512` on your Sourcegraph instance. *Managed by the Sourcegraph Services team.* @@ -16207,7 +16377,7 @@ sum by (op,scope)(increase(src_gitserver_repositoryservice_client_errors_total{j This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101313` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101513` on your Sourcegraph instance. *Managed by the Sourcegraph Services team.* @@ -16231,7 +16401,7 @@ sum by (op,scope)(increase(src_gitserver_repositoryservice_client_errors_total{j This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101400` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101600` on your Sourcegraph instance. *Managed by the Sourcegraph Code Plane team.* @@ -16253,7 +16423,7 @@ sum(increase(src_batches_dbstore_total{job=~"^worker.*"}[5m])) This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101401` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101601` on your Sourcegraph instance. *Managed by the Sourcegraph Code Plane team.* @@ -16275,7 +16445,7 @@ sum by (le)(rate(src_batches_dbstore_duration_seconds_bucket{job=~"^worker.*"}[ This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101402` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101602` on your Sourcegraph instance. *Managed by the Sourcegraph Code Plane team.* @@ -16297,7 +16467,7 @@ sum(increase(src_batches_dbstore_errors_total{job=~"^worker.*"}[5m])) This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101403` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101603` on your Sourcegraph instance. *Managed by the Sourcegraph Code Plane team.* @@ -16319,7 +16489,7 @@ sum(increase(src_batches_dbstore_errors_total{job=~"^worker.*"}[5m])) / (sum(inc This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101410` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101610` on your Sourcegraph instance. *Managed by the Sourcegraph Code Plane team.* @@ -16341,7 +16511,7 @@ sum by (op)(increase(src_batches_dbstore_total{job=~"^worker.*"}[5m])) This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101411` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101611` on your Sourcegraph instance. *Managed by the Sourcegraph Code Plane team.* @@ -16363,7 +16533,7 @@ histogram_quantile(0.99, sum by (le,op)(rate(src_batches_dbstore_duration_secon This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101412` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101612` on your Sourcegraph instance. *Managed by the Sourcegraph Code Plane team.* @@ -16385,7 +16555,7 @@ sum by (op)(increase(src_batches_dbstore_errors_total{job=~"^worker.*"}[5m])) This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101413` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101613` on your Sourcegraph instance. *Managed by the Sourcegraph Code Plane team.* @@ -16409,7 +16579,7 @@ sum by (op)(increase(src_batches_dbstore_errors_total{job=~"^worker.*"}[5m])) / This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101500` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101700` on your Sourcegraph instance. *Managed by the Sourcegraph Code Plane team.* @@ -16431,7 +16601,7 @@ sum(increase(src_batches_service_total{job=~"^worker.*"}[5m])) This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101501` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101701` on your Sourcegraph instance. *Managed by the Sourcegraph Code Plane team.* @@ -16453,7 +16623,7 @@ sum by (le)(rate(src_batches_service_duration_seconds_bucket{job=~"^worker.*"}[ This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101502` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101702` on your Sourcegraph instance. *Managed by the Sourcegraph Code Plane team.* @@ -16475,7 +16645,7 @@ sum(increase(src_batches_service_errors_total{job=~"^worker.*"}[5m])) This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101503` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101703` on your Sourcegraph instance. *Managed by the Sourcegraph Code Plane team.* @@ -16497,7 +16667,7 @@ sum(increase(src_batches_service_errors_total{job=~"^worker.*"}[5m])) / (sum(inc This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101510` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101710` on your Sourcegraph instance. *Managed by the Sourcegraph Code Plane team.* @@ -16519,7 +16689,7 @@ sum by (op)(increase(src_batches_service_total{job=~"^worker.*"}[5m])) This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101511` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101711` on your Sourcegraph instance. *Managed by the Sourcegraph Code Plane team.* @@ -16541,7 +16711,7 @@ histogram_quantile(0.99, sum by (le,op)(rate(src_batches_service_duration_secon This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101512` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101712` on your Sourcegraph instance. *Managed by the Sourcegraph Code Plane team.* @@ -16563,7 +16733,7 @@ sum by (op)(increase(src_batches_service_errors_total{job=~"^worker.*"}[5m])) This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101513` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101713` on your Sourcegraph instance. *Managed by the Sourcegraph Code Plane team.* @@ -16587,7 +16757,7 @@ sum by (op)(increase(src_batches_service_errors_total{job=~"^worker.*"}[5m])) / This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101600` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101800` on your Sourcegraph instance. *Managed by the Sourcegraph Code Plane team.* @@ -16609,7 +16779,7 @@ sum(src_query_runner_worker_processor_handlers{job=~"^worker.*"}) This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101610` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101810` on your Sourcegraph instance. *Managed by the Sourcegraph Code Plane team.* @@ -16631,7 +16801,7 @@ sum(increase(src_query_runner_worker_processor_total{job=~"^worker.*"}[5m])) This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101611` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101811` on your Sourcegraph instance. *Managed by the Sourcegraph Code Plane team.* @@ -16653,7 +16823,7 @@ sum by (le)(rate(src_query_runner_worker_processor_duration_seconds_bucket{job= This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101612` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101812` on your Sourcegraph instance. *Managed by the Sourcegraph Code Plane team.* @@ -16675,7 +16845,7 @@ sum(increase(src_query_runner_worker_processor_errors_total{job=~"^worker.*"}[5m This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101613` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101813` on your Sourcegraph instance. *Managed by the Sourcegraph Code Plane team.* @@ -16699,7 +16869,7 @@ sum(increase(src_query_runner_worker_processor_errors_total{job=~"^worker.*"}[5m This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101700` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101900` on your Sourcegraph instance. *Managed by the Sourcegraph Code Plane team.* @@ -16721,7 +16891,7 @@ sum(increase(src_workerutil_dbworker_store_total{domain='insights_query_runner_j This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101701` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101901` on your Sourcegraph instance. *Managed by the Sourcegraph Code Plane team.* @@ -16743,7 +16913,7 @@ sum by (le)(rate(src_workerutil_dbworker_store_duration_seconds_bucket{domain=' This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101702` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101902` on your Sourcegraph instance. *Managed by the Sourcegraph Code Plane team.* @@ -16765,7 +16935,7 @@ sum(increase(src_workerutil_dbworker_store_errors_total{domain='insights_query_r This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101703` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101903` on your Sourcegraph instance. *Managed by the Sourcegraph Code Plane team.* @@ -16787,7 +16957,7 @@ sum(increase(src_workerutil_dbworker_store_errors_total{domain='insights_query_r This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101710` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101910` on your Sourcegraph instance. *Managed by the Sourcegraph Code Plane team.* @@ -16809,7 +16979,7 @@ sum by (op)(increase(src_workerutil_dbworker_store_total{domain='insights_query_ This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101711` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101911` on your Sourcegraph instance. *Managed by the Sourcegraph Code Plane team.* @@ -16831,7 +17001,7 @@ histogram_quantile(0.99, sum by (le,op)(rate(src_workerutil_dbworker_store_dura This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101712` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101912` on your Sourcegraph instance. *Managed by the Sourcegraph Code Plane team.* @@ -16853,7 +17023,7 @@ sum by (op)(increase(src_workerutil_dbworker_store_errors_total{domain='insights This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101713` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101913` on your Sourcegraph instance. *Managed by the Sourcegraph Code Plane team.* @@ -16880,7 +17050,7 @@ A value of 0 indicates the routine isn`t running currently, it awaits it`s next This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101800` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102000` on your Sourcegraph instance. *Managed by the Sourcegraph Platform team.* @@ -16905,7 +17075,7 @@ A low or zero value could indicate that a routine is stalled or encountering err This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101801` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102001` on your Sourcegraph instance. *Managed by the Sourcegraph Platform team.* @@ -16930,7 +17100,7 @@ A sustained high error rate may indicate a problem with the routine`s configurat Refer to the [alerts reference](alerts#worker-goroutine_error_rate) for 1 alert related to this panel. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101810` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102010` on your Sourcegraph instance. *Managed by the Sourcegraph Services team.* @@ -16955,7 +17125,7 @@ A value above 5% indicates that a significant portion of routine executions are Refer to the [alerts reference](alerts#worker-goroutine_error_percentage) for 1 alert related to this panel. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101811` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102011` on your Sourcegraph instance. *Managed by the Sourcegraph Services team.* @@ -16980,7 +17150,7 @@ Longer durations might indicate increased load or processing time. This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101820` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102020` on your Sourcegraph instance. *Managed by the Sourcegraph Platform team.* @@ -17005,7 +17175,7 @@ This represents how long a complete loop iteration takes before sleeping for the This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101821` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102021` on your Sourcegraph instance. *Managed by the Sourcegraph Platform team.* @@ -17030,7 +17200,7 @@ Higher values indicate that tenant processing is taking longer and may affect ov This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101830` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102030` on your Sourcegraph instance. *Managed by the Sourcegraph Platform team.* @@ -17055,7 +17225,7 @@ Consistently high values might indicate problematic tenants or inefficient proce This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101831` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102031` on your Sourcegraph instance. *Managed by the Sourcegraph Platform team.* @@ -17080,7 +17250,7 @@ Unexpected changes can indicate tenant configuration issues or scaling events. This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101840` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102040` on your Sourcegraph instance. *Managed by the Sourcegraph Platform team.* @@ -17105,7 +17275,7 @@ A healthy routine should maintain a consistent processing rate. This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101841` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102041` on your Sourcegraph instance. *Managed by the Sourcegraph Platform team.* @@ -17130,7 +17300,7 @@ Consistent errors indicate problems with specific tenants. This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101850` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102050` on your Sourcegraph instance. *Managed by the Sourcegraph Platform team.* @@ -17155,7 +17325,7 @@ Values above 5% indicate significant tenant processing problems. This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101851` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102051` on your Sourcegraph instance. *Managed by the Sourcegraph Platform team.* @@ -17179,7 +17349,7 @@ Query: This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101900` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102100` on your Sourcegraph instance. *Managed by the Sourcegraph Platform team.* @@ -17201,7 +17371,7 @@ sum by (app_name, db_name) (src_pgsql_conns_max_open{app_name="worker"}) This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101901` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102101` on your Sourcegraph instance. *Managed by the Sourcegraph Platform team.* @@ -17223,7 +17393,7 @@ sum by (app_name, db_name) (src_pgsql_conns_open{app_name="worker"}) This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101910` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102110` on your Sourcegraph instance. *Managed by the Sourcegraph Platform team.* @@ -17245,7 +17415,7 @@ sum by (app_name, db_name) (src_pgsql_conns_in_use{app_name="worker"}) This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101911` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102111` on your Sourcegraph instance. *Managed by the Sourcegraph Platform team.* @@ -17267,7 +17437,7 @@ sum by (app_name, db_name) (src_pgsql_conns_idle{app_name="worker"}) Refer to the [alerts reference](alerts#worker-mean_blocked_seconds_per_conn_request) for 2 alerts related to this panel. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101920` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102120` on your Sourcegraph instance. *Managed by the Sourcegraph Platform team.* @@ -17289,7 +17459,7 @@ sum by (app_name, db_name) (increase(src_pgsql_conns_blocked_seconds{app_name="w This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101930` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102130` on your Sourcegraph instance. *Managed by the Sourcegraph Platform team.* @@ -17311,7 +17481,7 @@ sum by (app_name, db_name) (increase(src_pgsql_conns_closed_max_idle{app_name="w This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101931` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102131` on your Sourcegraph instance. *Managed by the Sourcegraph Platform team.* @@ -17333,7 +17503,7 @@ sum by (app_name, db_name) (increase(src_pgsql_conns_closed_max_lifetime{app_nam This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101932` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102132` on your Sourcegraph instance. *Managed by the Sourcegraph Platform team.* @@ -17357,7 +17527,7 @@ sum by (app_name, db_name) (increase(src_pgsql_conns_closed_max_idle_time{app_na Refer to the [alerts reference](alerts#worker-cpu_usage_percentage) for 1 alert related to this panel. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102000` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102200` on your Sourcegraph instance. *Managed by the Sourcegraph Code Understanding team.* @@ -17381,7 +17551,7 @@ An estimate for the active memory in use, which includes anonymous memory, file This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102001` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102201` on your Sourcegraph instance. *Managed by the Sourcegraph Code Understanding team.* @@ -17405,7 +17575,7 @@ An estimate for the active memory in use in bytes, which includes anonymous memo This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102002` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102202` on your Sourcegraph instance. *Managed by the Sourcegraph Code Understanding team.* @@ -17429,7 +17599,7 @@ The total anonymous memory in use by the application, which includes Go stack an Refer to the [alerts reference](alerts#worker-memory_rss) for 1 alert related to this panel. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102010` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102210` on your Sourcegraph instance. *Managed by the Sourcegraph Code Understanding team.* @@ -17453,7 +17623,7 @@ This metric shows the total active file-backed memory currently in use by the ap This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102011` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102211` on your Sourcegraph instance. *Managed by the Sourcegraph Code Understanding team.* @@ -17477,7 +17647,7 @@ The kernel usage metric shows the amount of memory used by the kernel on behalf This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102012` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102212` on your Sourcegraph instance. *Managed by the Sourcegraph Code Understanding team.* @@ -17511,7 +17681,7 @@ value change independent of deployment events (such as an upgrade), it could ind This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102100` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102300` on your Sourcegraph instance. *Managed by the Sourcegraph Code Understanding team.* @@ -17533,7 +17703,7 @@ count by(name) ((time() - container_last_seen{name=~"^worker.*"}) > 60) Refer to the [alerts reference](alerts#worker-container_cpu_usage) for 1 alert related to this panel. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102101` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102301` on your Sourcegraph instance. *Managed by the Sourcegraph Code Understanding team.* @@ -17555,7 +17725,7 @@ cadvisor_container_cpu_usage_percentage_total{name=~"^worker.*"} Refer to the [alerts reference](alerts#worker-container_memory_usage) for 1 alert related to this panel. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102102` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102302` on your Sourcegraph instance. *Managed by the Sourcegraph Code Understanding team.* @@ -17580,7 +17750,7 @@ When extremely high, this can indicate a resource usage problem, or can cause pr This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102103` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102303` on your Sourcegraph instance. *Managed by the Sourcegraph Code Understanding team.* @@ -17604,7 +17774,7 @@ sum by(name) (rate(container_fs_reads_total{name=~"^worker.*"}[1h]) + rate(conta Refer to the [alerts reference](alerts#worker-provisioning_container_cpu_usage_long_term) for 1 alert related to this panel. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102200` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102400` on your Sourcegraph instance. *Managed by the Sourcegraph Code Plane team.* @@ -17626,7 +17796,7 @@ quantile_over_time(0.9, cadvisor_container_cpu_usage_percentage_total{name=~"^wo Refer to the [alerts reference](alerts#worker-provisioning_container_memory_usage_long_term) for 1 alert related to this panel. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102201` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102401` on your Sourcegraph instance. *Managed by the Sourcegraph Code Plane team.* @@ -17648,7 +17818,7 @@ max_over_time(cadvisor_container_memory_usage_percentage_total{name=~"^worker.*" Refer to the [alerts reference](alerts#worker-provisioning_container_cpu_usage_short_term) for 1 alert related to this panel. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102210` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102410` on your Sourcegraph instance. *Managed by the Sourcegraph Code Plane team.* @@ -17670,7 +17840,7 @@ max_over_time(cadvisor_container_cpu_usage_percentage_total{name=~"^worker.*"}[5 Refer to the [alerts reference](alerts#worker-provisioning_container_memory_usage_short_term) for 1 alert related to this panel. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102211` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102411` on your Sourcegraph instance. *Managed by the Sourcegraph Code Plane team.* @@ -17695,7 +17865,7 @@ When it occurs frequently, it is an indicator of underprovisioning. Refer to the [alerts reference](alerts#worker-container_oomkill_events_total) for 1 alert related to this panel. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102212` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102412` on your Sourcegraph instance. *Managed by the Sourcegraph Code Plane team.* @@ -17721,7 +17891,7 @@ A high value here indicates a possible goroutine leak. Refer to the [alerts reference](alerts#worker-go_goroutines) for 1 alert related to this panel. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102300` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102500` on your Sourcegraph instance. *Managed by the Sourcegraph Code Plane team.* @@ -17743,7 +17913,7 @@ max by(instance) (go_goroutines{job=~".*worker"}) Refer to the [alerts reference](alerts#worker-go_gc_duration_seconds) for 1 alert related to this panel. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102301` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102501` on your Sourcegraph instance. *Managed by the Sourcegraph Code Plane team.* @@ -17767,7 +17937,7 @@ max by(instance) (go_gc_duration_seconds{job=~".*worker"}) Refer to the [alerts reference](alerts#worker-pods_available_percentage) for 1 alert related to this panel. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102400` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102600` on your Sourcegraph instance. *Managed by the Sourcegraph Code Plane team.* @@ -17791,7 +17961,7 @@ sum by(app) (up{app=~".*worker"}) / count by (app) (up{app=~".*worker"}) * 100 This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102500` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102700` on your Sourcegraph instance. *Managed by the Sourcegraph Code Understanding team.* @@ -17813,7 +17983,7 @@ sum(increase(src_workerutil_dbworker_store_total{domain='own_background_worker_s This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102501` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102701` on your Sourcegraph instance. *Managed by the Sourcegraph Code Understanding team.* @@ -17835,7 +18005,7 @@ sum by (le)(rate(src_workerutil_dbworker_store_duration_seconds_bucket{domain=' This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102502` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102702` on your Sourcegraph instance. *Managed by the Sourcegraph Code Understanding team.* @@ -17857,7 +18027,7 @@ sum(increase(src_workerutil_dbworker_store_errors_total{domain='own_background_w This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102503` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102703` on your Sourcegraph instance. *Managed by the Sourcegraph Code Understanding team.* @@ -17879,7 +18049,7 @@ sum(increase(src_workerutil_dbworker_store_errors_total{domain='own_background_w This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102510` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102710` on your Sourcegraph instance. *Managed by the Sourcegraph Code Understanding team.* @@ -17901,7 +18071,7 @@ sum by (op)(increase(src_workerutil_dbworker_store_total{domain='own_background_ This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102511` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102711` on your Sourcegraph instance. *Managed by the Sourcegraph Code Understanding team.* @@ -17923,7 +18093,7 @@ histogram_quantile(0.99, sum by (le,op)(rate(src_workerutil_dbworker_store_dura This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102512` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102712` on your Sourcegraph instance. *Managed by the Sourcegraph Code Understanding team.* @@ -17945,7 +18115,7 @@ sum by (op)(increase(src_workerutil_dbworker_store_errors_total{domain='own_back This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102513` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102713` on your Sourcegraph instance. *Managed by the Sourcegraph Code Understanding team.* @@ -17969,7 +18139,7 @@ sum by (op)(increase(src_workerutil_dbworker_store_errors_total{domain='own_back This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102600` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102800` on your Sourcegraph instance. *Managed by the Sourcegraph Code Plane team.* @@ -17991,7 +18161,7 @@ sum(src_own_background_worker_processor_handlers{job=~"^worker.*"}) This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102610` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102810` on your Sourcegraph instance. *Managed by the Sourcegraph Code Plane team.* @@ -18013,7 +18183,7 @@ sum(increase(src_own_background_worker_processor_total{job=~"^worker.*"}[5m])) This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102611` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102811` on your Sourcegraph instance. *Managed by the Sourcegraph Code Plane team.* @@ -18035,7 +18205,7 @@ sum by (le)(rate(src_own_background_worker_processor_duration_seconds_bucket{jo This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102612` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102812` on your Sourcegraph instance. *Managed by the Sourcegraph Code Plane team.* @@ -18057,7 +18227,7 @@ sum(increase(src_own_background_worker_processor_errors_total{job=~"^worker.*"}[ This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102613` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102813` on your Sourcegraph instance. *Managed by the Sourcegraph Code Plane team.* @@ -18081,7 +18251,7 @@ sum(increase(src_own_background_worker_processor_errors_total{job=~"^worker.*"}[ This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102700` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102900` on your Sourcegraph instance. *Managed by the Sourcegraph Code Understanding team.* @@ -18103,7 +18273,7 @@ sum by (op)(increase(src_own_background_index_scheduler_total{job=~"^worker.*"}[ This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102701` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102901` on your Sourcegraph instance. *Managed by the Sourcegraph Code Understanding team.* @@ -18125,7 +18295,7 @@ histogram_quantile(0.99, sum by (le,op)(rate(src_own_background_index_scheduler This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102702` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102902` on your Sourcegraph instance. *Managed by the Sourcegraph Code Understanding team.* @@ -18147,7 +18317,7 @@ sum by (op)(increase(src_own_background_index_scheduler_errors_total{job=~"^work This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102703` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102903` on your Sourcegraph instance. *Managed by the Sourcegraph Code Understanding team.* @@ -18173,7 +18343,7 @@ The duration since the configuration client used by the "worker" service last su This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102800` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=103000` on your Sourcegraph instance. *Managed by the Sourcegraph Platform team.* @@ -18195,7 +18365,7 @@ src_conf_client_time_since_last_successful_update_seconds{job=~`^worker.*`,insta Refer to the [alerts reference](alerts#worker-worker_site_configuration_duration_since_last_successful_update_by_instance) for 1 alert related to this panel. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102801` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=103001` on your Sourcegraph instance. *Managed by the Sourcegraph Platform team.* @@ -34879,7 +35049,7 @@ To see this panel, visit `/-/debug/grafana/d/deepsearch/deepsearch?viewPanel=100 Query: ``` -sum(rate(src_deepsearch_question_processing_errors_total{operation="question"}[5m])) / (sum(rate(src_deepsearch_question_processing_total{operation="question"}[5m])) > 0) * 100 +sum(increase(src_deepsearch_question_processing_errors_total{operation="question"}[5m])) / (sum(increase(src_deepsearch_question_processing_total{operation="question"}[5m])) + sum(increase(src_deepsearch_question_processing_errors_total{operation="question"}[5m]))) * 100 ```
@@ -35129,6 +35299,698 @@ sum(increase(src_deepsearch_question_outcome_total{outcome="token_limit_exceeded
+## Batch Change Agents + +

Background processing for batch change agents: the message and wake workers, their queues and resetters, and the event streams that drive live UI updates.

+ +To see this dashboard, visit `/-/debug/grafana/d/batch-change-agents/batch-change-agents` on your Sourcegraph instance. + +### Batch Change Agents: Message worker + +#### batch-change-agents: batch_change_agent_message_active_handlers + +

Active message handlers

+ +Number of batch change agent messages being processed concurrently. Each worker is configured for up to 100 concurrent handlers; sustained values near that ceiling mean new messages are waiting for a free slot. + +This panel has no related alerts. + +To see this panel, visit `/-/debug/grafana/d/batch-change-agents/batch-change-agents?viewPanel=100000` on your Sourcegraph instance. + +*Managed by the Sourcegraph Code Plane team.* + +
+Technical details + +Query: + +``` +sum(src_batch_change_agent_message_handlers) +``` +
+ +
+ +#### batch-change-agents: batch_change_agent_message_processing_rate + +

Messages processed per minute

+ +Rate of successfully processed batch change agent messages. A message is one turn of the agent loop for a user; this counts only successful completions (failures appear in the error rate panel). + +This panel has no related alerts. + +To see this panel, visit `/-/debug/grafana/d/batch-change-agents/batch-change-agents?viewPanel=100001` on your Sourcegraph instance. + +*Managed by the Sourcegraph Code Plane team.* + +
+Technical details + +Query: + +``` +sum(rate(src_batch_change_agent_message_total{op="Handle"}[5m])) * 60 +``` +
+ +
+ +#### batch-change-agents: batch_change_agent_message_p95_duration + +

95th percentile message processing duration

+ +95th percentile end-to-end time to process a message (the full agent loop, including all LLM requests). The histogram buckets span 1s to 1h; values pinned at the top bucket mean messages are running longer than an hour. + +This panel has no related alerts. + +To see this panel, visit `/-/debug/grafana/d/batch-change-agents/batch-change-agents?viewPanel=100010` on your Sourcegraph instance. + +*Managed by the Sourcegraph Code Plane team.* + +
+Technical details + +Query: + +``` +histogram_quantile(0.95, sum(rate(src_batch_change_agent_message_duration_seconds_bucket{op="Handle"}[15m])) by (le)) +``` +
+ +
+ +#### batch-change-agents: batch_change_agent_message_p50_duration + +

50th percentile message processing duration

+ +Median end-to-end time to process a message. Useful for spotting a shift in typical agent-loop latency that the error rate would not reveal. + +This panel has no related alerts. + +To see this panel, visit `/-/debug/grafana/d/batch-change-agents/batch-change-agents?viewPanel=100011` on your Sourcegraph instance. + +*Managed by the Sourcegraph Code Plane team.* + +
+Technical details + +Query: + +``` +histogram_quantile(0.50, sum(rate(src_batch_change_agent_message_duration_seconds_bucket{op="Handle"}[15m])) by (le)) +``` +
+ +
+ +#### batch-change-agents: batch_change_agent_message_error_rate + +

Message processing error rate over 5m

+ +Percentage of message handler invocations that ended in an error. The alert is gated on at least 5 attempts in the window so it stays quiet during idle periods. + +Refer to the [alerts reference](alerts#batch-change-agents-batch_change_agent_message_error_rate) for 2 alerts related to this panel. + +To see this panel, visit `/-/debug/grafana/d/batch-change-agents/batch-change-agents?viewPanel=100020` on your Sourcegraph instance. + +*Managed by the Sourcegraph Code Plane team.* + +
+Technical details + +Query: + +``` +sum(increase(src_batch_change_agent_message_errors_total{op="Handle"}[5m])) / (sum(increase(src_batch_change_agent_message_total{op="Handle"}[5m])) + sum(increase(src_batch_change_agent_message_errors_total{op="Handle"}[5m]))) * 100 +``` +
+ +
+ +### Batch Change Agents: Queue backlog + +#### batch-change-agents: batch_change_agent_message_queue_depth + +

Messages waiting in the queue

+ +Number of batch change agent messages enqueued but not yet picked up by a handler. Sustained growth means messages are arriving faster than the 100-handler pool can process them. + +This panel has no related alerts. + +To see this panel, visit `/-/debug/grafana/d/batch-change-agents/batch-change-agents?viewPanel=100100` on your Sourcegraph instance. + +*Managed by the Sourcegraph Code Plane team.* + +
+Technical details + +Query: + +``` +max(src_workerutil_queue_depth{domain="batch_change_agent_message_worker"}) +``` +
+ +
+ +#### batch-change-agents: batch_change_agent_message_queue_wait + +

Oldest queued message wait time

+ +How long the oldest queued message has been waiting for a handler. Zero when the queue is empty. + +Refer to the [alerts reference](alerts#batch-change-agents-batch_change_agent_message_queue_wait) for 2 alerts related to this panel. + +To see this panel, visit `/-/debug/grafana/d/batch-change-agents/batch-change-agents?viewPanel=100101` on your Sourcegraph instance. + +*Managed by the Sourcegraph Code Plane team.* + +
+Technical details + +Query: + +``` +max(src_workerutil_queue_duration_seconds{domain="batch_change_agent_message_worker"}) +``` +
+ +
+ +#### batch-change-agents: batch_change_agent_wake_queue_depth + +

Wake jobs waiting in the queue

+ +Number of wake jobs enqueued but not yet processed. These enqueue a message for the message worker, so a backlog here delays idle threads from re-activating. + +This panel has no related alerts. + +To see this panel, visit `/-/debug/grafana/d/batch-change-agents/batch-change-agents?viewPanel=100110` on your Sourcegraph instance. + +*Managed by the Sourcegraph Code Plane team.* + +
+Technical details + +Query: + +``` +max(src_workerutil_queue_depth{domain="batch_change_agent_wake_worker"}) +``` +
+ +
+ +#### batch-change-agents: batch_change_agent_wake_queue_wait + +

Oldest queued wake job wait time

+ +How long the oldest queued wake job has been waiting for a handler. Zero when the queue is empty. + +This panel has no related alerts. + +To see this panel, visit `/-/debug/grafana/d/batch-change-agents/batch-change-agents?viewPanel=100111` on your Sourcegraph instance. + +*Managed by the Sourcegraph Code Plane team.* + +
+Technical details + +Query: + +``` +max(src_workerutil_queue_duration_seconds{domain="batch_change_agent_wake_worker"}) +``` +
+ +
+ +### Batch Change Agents: Tool calls + +#### batch-change-agents: batch_change_agent_tool_call_rate + +

Tool calls per minute by tool

+ +Rate of successful tool invocations within the agent loop, broken down by tool name (e.g. prepare_batch_spec, run_workspaces, deepsearch). A tool is counted here once it completes without error; failures appear in the error rate panel. Tools called inside subagents (e.g. the read-only workspace tools the analyze_workspaces subagent runs) are counted here too. This is the per-tool view of what the agent loop spends its turns doing. + +This panel has no related alerts. + +To see this panel, visit `/-/debug/grafana/d/batch-change-agents/batch-change-agents?viewPanel=100200` on your Sourcegraph instance. + +*Managed by the Sourcegraph Code Plane team.* + +
+Technical details + +Query: + +``` +sum by (tool) (rate(src_batch_change_agent_tool_total[5m])) * 60 +``` +
+ +
+ +#### batch-change-agents: batch_change_agent_tool_error_rate + +

Tool error rate over 5m by tool

+ +Percentage of invocations per tool that returned an error to the agent loop. A consistently hot tool usually points at a flaky downstream integration it wraps (gitserver, the batch-spec executor, deep search) rather than the agent itself; the model often recovers by retrying, so this complements rather than duplicates the message worker error rate. + +This panel has no related alerts. + +To see this panel, visit `/-/debug/grafana/d/batch-change-agents/batch-change-agents?viewPanel=100201` on your Sourcegraph instance. + +*Managed by the Sourcegraph Code Plane team.* + +
+Technical details + +Query: + +``` +sum by (tool) (increase(src_batch_change_agent_tool_errors_total[5m])) / (sum by (tool) (increase(src_batch_change_agent_tool_total[5m])) + sum by (tool) (increase(src_batch_change_agent_tool_errors_total[5m]))) * 100 +``` +
+ +
+ +#### batch-change-agents: batch_change_agent_tool_p95_duration + +

95th percentile tool call duration by tool

+ +95th percentile execution time per tool. This is the per-tool breakdown of where time in the agent loop goes; long-running tools (deepsearch, wait_for_changesets, wait_for_workspaces) are expected to dominate, while batch-spec and filesystem tools should stay fast. A subagent tool`s duration (e.g. analyze_workspaces) overlaps the inner tool calls it makes, which are also recorded here, so durations should not be summed into a single total. + +This panel has no related alerts. + +To see this panel, visit `/-/debug/grafana/d/batch-change-agents/batch-change-agents?viewPanel=100202` on your Sourcegraph instance. + +*Managed by the Sourcegraph Code Plane team.* + +
+Technical details + +Query: + +``` +histogram_quantile(0.95, sum by (le, tool) (rate(src_batch_change_agent_tool_duration_seconds_bucket[5m]))) +``` +
+ +
+ +### Batch Change Agents: Wake worker + +#### batch-change-agents: batch_change_agent_wake_active_handlers + +

Active wake handlers

+ +Number of wake jobs being processed concurrently. The wake worker only resolves an agent and enqueues a wake message (the LLM work happens in the message worker), so it runs a small pool of 3 handlers. + +This panel has no related alerts. + +To see this panel, visit `/-/debug/grafana/d/batch-change-agents/batch-change-agents?viewPanel=100300` on your Sourcegraph instance. + +*Managed by the Sourcegraph Code Plane team.* + +
+Technical details + +Query: + +``` +sum(src_batch_change_agent_wake_handlers) +``` +
+ +
+ +#### batch-change-agents: batch_change_agent_wake_processing_rate + +

Wake jobs processed per minute

+ +Rate of successfully processed wake jobs that re-activate idle threads with unread inbox items. + +This panel has no related alerts. + +To see this panel, visit `/-/debug/grafana/d/batch-change-agents/batch-change-agents?viewPanel=100301` on your Sourcegraph instance. + +*Managed by the Sourcegraph Code Plane team.* + +
+Technical details + +Query: + +``` +sum(rate(src_batch_change_agent_wake_total{op="Handle"}[5m])) * 60 +``` +
+ +
+ +#### batch-change-agents: batch_change_agent_wake_p95_duration + +

95th percentile wake processing duration

+ +95th percentile time to process a wake job. Wake jobs are a few quick DB operations, so this should stay well under a second. + +This panel has no related alerts. + +To see this panel, visit `/-/debug/grafana/d/batch-change-agents/batch-change-agents?viewPanel=100302` on your Sourcegraph instance. + +*Managed by the Sourcegraph Code Plane team.* + +
+Technical details + +Query: + +``` +histogram_quantile(0.95, sum(rate(src_batch_change_agent_wake_duration_seconds_bucket{op="Handle"}[5m])) by (le)) +``` +
+ +
+ +#### batch-change-agents: batch_change_agent_wake_error_rate + +

Wake processing error rate over 5m

+ +Percentage of wake handler invocations that ended in an error. Wake failures are retried and rarely user-visible, but a sustained nonzero rate means threads are not being re-activated when new inbox items arrive. + +This panel has no related alerts. + +To see this panel, visit `/-/debug/grafana/d/batch-change-agents/batch-change-agents?viewPanel=100310` on your Sourcegraph instance. + +*Managed by the Sourcegraph Code Plane team.* + +
+Technical details + +Query: + +``` +sum(increase(src_batch_change_agent_wake_errors_total{op="Handle"}[5m])) / (sum(increase(src_batch_change_agent_wake_total{op="Handle"}[5m])) + sum(increase(src_batch_change_agent_wake_errors_total{op="Handle"}[5m]))) * 100 +``` +
+ +
+ +### Batch Change Agents: Job queue stores + +#### batch-change-agents: batch_change_agent_store_operation_rate + +

Worker store operations per second by queue

+ +Rate of successful worker store operations (dequeue, mark-complete, etc.) for the batch change agent message and wake queues. + +This panel has no related alerts. + +To see this panel, visit `/-/debug/grafana/d/batch-change-agents/batch-change-agents?viewPanel=100400` on your Sourcegraph instance. + +*Managed by the Sourcegraph Code Plane team.* + +
+Technical details + +Query: + +``` +sum by (domain) (rate(src_workerutil_dbworker_store_total{domain=~"^batch_change_agent.*_worker_store$"}[5m])) +``` +
+ +
+ +#### batch-change-agents: batch_change_agent_store_error_rate + +

Worker store error rate over 5m by queue

+ +Percentage of worker store operations that errored, per queue. A sustained nonzero rate usually points at database problems (contention, connection exhaustion, or migration drift) rather than the agent logic itself. + +This panel has no related alerts. + +To see this panel, visit `/-/debug/grafana/d/batch-change-agents/batch-change-agents?viewPanel=100401` on your Sourcegraph instance. + +*Managed by the Sourcegraph Code Plane team.* + +
+Technical details + +Query: + +``` +sum by (domain) (increase(src_workerutil_dbworker_store_errors_total{domain=~"^batch_change_agent.*_worker_store$"}[5m])) / (sum by (domain) (increase(src_workerutil_dbworker_store_total{domain=~"^batch_change_agent.*_worker_store$"}[5m])) + sum by (domain) (increase(src_workerutil_dbworker_store_errors_total{domain=~"^batch_change_agent.*_worker_store$"}[5m]))) * 100 +``` +
+ +
+ +#### batch-change-agents: batch_change_agent_store_p95_duration + +

95th percentile worker store operation duration by queue

+ +95th percentile duration of worker store operations, per queue. Elevated values indicate database latency affecting how quickly jobs are dequeued and finalized. + +This panel has no related alerts. + +To see this panel, visit `/-/debug/grafana/d/batch-change-agents/batch-change-agents?viewPanel=100402` on your Sourcegraph instance. + +*Managed by the Sourcegraph Code Plane team.* + +
+Technical details + +Query: + +``` +histogram_quantile(0.95, sum by (le, domain) (rate(src_workerutil_dbworker_store_duration_seconds_bucket{domain=~"^batch_change_agent.*_worker_store$"}[5m]))) +``` +
+ +
+ +### Batch Change Agents: Stalled job resetters + +#### batch-change-agents: batch_change_agent_records_reset + +

Stalled jobs reset to queued over 1h by queue

+ +Number of stalled batch change agent jobs that the resetter moved back to the queued state, per queue. + +Refer to the [alerts reference](alerts#batch-change-agents-batch_change_agent_records_reset) for 1 alert related to this panel. + +To see this panel, visit `/-/debug/grafana/d/batch-change-agents/batch-change-agents?viewPanel=100500` on your Sourcegraph instance. + +*Managed by the Sourcegraph Code Plane team.* + +
+Technical details + +Query: + +``` +sum by (domain) (increase(src_dbworker_resetter_record_resets_total{domain=~"^batch_change_agent_.*_resetter$"}[1h])) +``` +
+ +
+ +#### batch-change-agents: batch_change_agent_record_reset_failures + +

Stalled jobs marked failed over 1h by queue

+ +Number of stalled jobs that exhausted their retries and were marked as failed, per queue. A nonzero value means some agent messages or wakes were permanently dropped after repeated crashes. + +This panel has no related alerts. + +To see this panel, visit `/-/debug/grafana/d/batch-change-agents/batch-change-agents?viewPanel=100501` on your Sourcegraph instance. + +*Managed by the Sourcegraph Code Plane team.* + +
+Technical details + +Query: + +``` +sum by (domain) (increase(src_dbworker_resetter_record_reset_failures_total{domain=~"^batch_change_agent_.*_resetter$"}[1h])) +``` +
+ +
+ +#### batch-change-agents: batch_change_agent_stall_duration + +

95th percentile job stall duration before reset

+ +95th percentile time jobs spent stalled before the resetter recovered them, per queue. + +This panel has no related alerts. + +To see this panel, visit `/-/debug/grafana/d/batch-change-agents/batch-change-agents?viewPanel=100502` on your Sourcegraph instance. + +*Managed by the Sourcegraph Code Plane team.* + +
+Technical details + +Query: + +``` +histogram_quantile(0.95, sum by (le, domain) (rate(src_dbworker_resetter_stall_duration_seconds_bucket{domain=~"^batch_change_agent_.*_resetter$"}[1h]))) +``` +
+ +
+ +### Batch Change Agents: Event streams (Redis pub/sub) + +#### batch-change-agents: batch_change_agent_message_stream_publish_rate + +

Message stream events published per second by type

+ +Rate of per-message stream events (turn deltas, tool calls, completion, etc.) successfully published to Redis for live delivery to connected clients. + +This panel has no related alerts. + +To see this panel, visit `/-/debug/grafana/d/batch-change-agents/batch-change-agents?viewPanel=100600` on your Sourcegraph instance. + +*Managed by the Sourcegraph Code Plane team.* + +
+Technical details + +Query: + +``` +sum by (event_type) (rate(src_batch_change_agents_stream_publish_success_total[5m])) +``` +
+ +
+ +#### batch-change-agents: batch_change_agent_message_stream_publish_errors + +

Message stream publish errors per second

+ +Rate of per-message stream events that could not be published to Redis after retries. + +Refer to the [alerts reference](alerts#batch-change-agents-batch_change_agent_message_stream_publish_errors) for 1 alert related to this panel. + +To see this panel, visit `/-/debug/grafana/d/batch-change-agents/batch-change-agents?viewPanel=100601` on your Sourcegraph instance. + +*Managed by the Sourcegraph Code Plane team.* + +
+Technical details + +Query: + +``` +sum(rate(src_batch_change_agents_stream_publish_errors_total[5m])) +``` +
+ +
+ +#### batch-change-agents: batch_change_agent_message_stream_transport_errors + +

Message stream transport errors per second

+ +Rate of Redis subscription transport errors (a subscription died mid-stream). Subscribers reconnect, but clients may briefly stop receiving live updates when this is elevated. + +This panel has no related alerts. + +To see this panel, visit `/-/debug/grafana/d/batch-change-agents/batch-change-agents?viewPanel=100602` on your Sourcegraph instance. + +*Managed by the Sourcegraph Code Plane team.* + +
+Technical details + +Query: + +``` +sum(rate(src_batch_change_agents_stream_transport_errors_total[5m])) +``` +
+ +
+ +#### batch-change-agents: batch_change_agent_thread_stream_publish_rate + +

Thread stream events published per second by type

+ +Rate of thread-level stream events (new message created, title updated) successfully published to Redis. These prompt clients to refetch the thread. + +This panel has no related alerts. + +To see this panel, visit `/-/debug/grafana/d/batch-change-agents/batch-change-agents?viewPanel=100610` on your Sourcegraph instance. + +*Managed by the Sourcegraph Code Plane team.* + +
+Technical details + +Query: + +``` +sum by (event_type) (rate(src_batch_change_agents_thread_stream_publish_success_total[5m])) +``` +
+ +
+ +#### batch-change-agents: batch_change_agent_thread_stream_publish_errors + +

Thread stream publish errors per second

+ +Rate of thread-level stream events that could not be published to Redis after retries. Clients recover thread state on their next refetch. + +This panel has no related alerts. + +To see this panel, visit `/-/debug/grafana/d/batch-change-agents/batch-change-agents?viewPanel=100611` on your Sourcegraph instance. + +*Managed by the Sourcegraph Code Plane team.* + +
+Technical details + +Query: + +``` +sum(rate(src_batch_change_agents_thread_stream_publish_errors_total[5m])) +``` +
+ +
+ +#### batch-change-agents: batch_change_agent_thread_stream_transport_errors + +

Thread stream transport errors per second

+ +Rate of Redis subscription transport errors on the thread-level stream. + +This panel has no related alerts. + +To see this panel, visit `/-/debug/grafana/d/batch-change-agents/batch-change-agents?viewPanel=100612` on your Sourcegraph instance. + +*Managed by the Sourcegraph Code Plane team.* + +
+Technical details + +Query: + +``` +sum(rate(src_batch_change_agents_thread_stream_transport_errors_total[5m])) +``` +
+ +
+ ## Sourcegraph external API

Monitoring for the Sourcegraph external API.

From f47bf45916838dc8afef20c848d36c9ab5e819e2 Mon Sep 17 00:00:00 2001 From: Enrique Gonzalez Date: Thu, 2 Jul 2026 16:20:23 -0700 Subject: [PATCH 128/217] Add docs version publishing skill (#1774) ## Summary - Add a repo-specific Amp skill for the Sourcegraph docs release-version workflow - Document how to cut legacy branches, update version metadata, push to legacy, and open origin PRs - Include the 7.x branch naming convention and recent cut-point examples ## Test plan - Not run (documentation/skill instructions only) --- .../skills/publishing-docs-versions/SKILL.md | 130 ++++++++++++++++++ 1 file changed, 130 insertions(+) create mode 100644 .agents/skills/publishing-docs-versions/SKILL.md diff --git a/.agents/skills/publishing-docs-versions/SKILL.md b/.agents/skills/publishing-docs-versions/SKILL.md new file mode 100644 index 000000000..6dbd3abb9 --- /dev/null +++ b/.agents/skills/publishing-docs-versions/SKILL.md @@ -0,0 +1,130 @@ +--- +name: publishing-docs-versions +description: "Archives Sourcegraph docs release branches and updates latest-version metadata. Use when a new Sourcegraph docs version is released, when creating docs legacy branches, or when updating DOCS_LATEST_VERSION and previous-version lists." +--- + +# Publishing Sourcegraph Docs Versions + +Use this skill for the Sourcegraph docs repo release-version workflow: cutting legacy branches in the `legacy` remote and updating `origin` so the newest version becomes `latest`. + +## Repository conventions + +- Remotes: + - `origin` = `sourcegraph/docs` + - `legacy` = `sourcegraph/docs-legacy-versions` +- 7.x legacy branches use underscores: `v7_0`, `v7_1`, `v7_2`, etc. +- Legacy branches are pushed directly to the `legacy` remote. +- `origin/main` is protected; direct pushes are rejected. Make a branch on `origin` and open a PR. +- The files that control latest/previous versions are: + - `docs.config.js` + - `src/data/versions.ts` + - `docs/legacy.mdx` + +## Standard workflow for a new release + +For a new release `X.Y`: + +1. Archive the previous docs version `P.Q` in the `legacy` remote. +2. Ensure the legacy branch’s own config says it is version `P.Q` and lists older versions only. +3. Update `origin` so `X.Y` is latest and `P.Q` appears as a previous version. + +Example: when 7.4 is released, archive 7.3 as `legacy/v7_3`, then update `origin` with `DOCS_LATEST_VERSION: '7.4'` and add 7.3 to previous-version lists. + +## Finding the cut point for a legacy branch + +Always inspect history instead of guessing: + +```bash +git fetch --all --prune +git log --date=short --pretty=format:'%h %ad %s' origin/main --since='' --until='' --reverse +git for-each-ref refs/remotes/legacy --format='%(refname:short) %(objectname:short) %(committerdate:short) %(subject)' | sort -V | tail -50 +``` + +Pick the commit the user considers the correct snapshot for the previous version. If the user gives a release date but not a commit, use the repo’s existing pattern: + +- Choose a hand-picked `origin/main` commit near the release cut. +- Prefer the last relevant docs commit on the release date when obvious. +- If no version-bump commit exists yet and the user wants the just-current docs archived, use the current `origin/main` tip. + +For reference, recent historical decisions: + +- `legacy/v7_0` was cut from `a5d80e5e` and then got empty no-op marker commits. +- `legacy/v7_1` was cut from `6b8ae421` for the Apr 24 release-date snapshot. +- `legacy/v7_2` was cut from `fccceac6`, then updated with a version metadata commit. + +## Creating and pushing the legacy branch + +Create the branch from the selected cut commit, add an empty marker commit, and push to `legacy`: + +```bash +git switch --detach +git switch -c vX_Y +git commit --allow-empty -m "Branch for docs version X.Y" +git push -u legacy vX_Y +``` + +Then update the legacy branch so it identifies itself as `X.Y` and lists only older versions. + +For `v7_3`, for example: + +- `docs.config.js`: `DOCS_LATEST_VERSION: '7.3'` +- `src/data/versions.ts`: first entry remains `latest`; previous entries should include `v7.2`, `v7.1`, `v7.0`, then 6.x. +- `docs/legacy.mdx`: `Sourcegraph 7.X` should include `7.2`, `7.1`, `7.0` (not 7.3 itself). + +Commit and push: + +```bash +git add docs.config.js src/data/versions.ts docs/legacy.mdx +git commit -m "Update docs latest version to X.Y" +git push legacy vX_Y +``` + +## Updating origin for the newly released version + +Work on a branch from `origin/main`: + +```bash +git switch main +git pull --ff-only origin main +git switch -c eg-update-docs-to-X-Y +``` + +Apply the same version metadata pattern, but for the new latest version. + +For `7.4`, for example: + +- `docs.config.js`: `DOCS_LATEST_VERSION: '7.4'` +- `src/data/versions.ts`: add previous versions in descending order: `v7.3`, `v7.2`, `v7.1`, `v7.0`, then 6.x. +- `docs/legacy.mdx`: add/update `Sourcegraph 7.X` with `7.3`, `7.2`, `7.1`, `7.0`. + +Commit, push the branch, and open a PR: + +```bash +git add docs.config.js src/data/versions.ts docs/legacy.mdx +git commit -m "Update docs latest version to X.Y" +git push -u origin eg-update-docs-to-X-Y +gh pr create --base main --head eg-update-docs-to-X-Y --title "Update docs latest version to X.Y" --body "## Summary +- Set DOCS_LATEST_VERSION to X.Y +- Add previous 7.x versions to the version selector +- Update the legacy versions page + +## Test plan +- Not run (config/navigation content change only)" +``` + +## Verification + +Use lightweight verification for this content/config change: + +```bash +git diff -- docs.config.js src/data/versions.ts docs/legacy.mdx +git status --short --branch +git ls-remote --heads legacy 'v7_*' +``` + +Confirm: + +- The legacy branch points to the pushed commit. +- The legacy branch lists only older previous versions. +- The origin PR branch sets the new latest version and includes the archived version in previous-version lists. +- Return the local workspace to clean `main` unless the user asked to stay on a release branch. From 2a79ffefc64c57c8f13a7d58c5c42a2e8ff01ccf Mon Sep 17 00:00:00 2001 From: Robert Lin Date: Mon, 6 Jul 2026 03:08:04 -0700 Subject: [PATCH 129/217] docs/agentic-batch-changes: link to Batch Changes configuration (#1802) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Adds a note that Batch Changes configuration options like rollout windows and commit signing also apply to Agentic Batch Changes, with a cross-link between the "Batch Changes capabilities" and "Administration" sections. The Administration paragraph now links to the [Batch Changes configuration reference](/admin/config/batch-changes) (which actually documents those options) instead of the lighter overview page. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-authored-by: Claude Opus 4.8 (1M context) --- docs/agentic-batch-changes/index.mdx | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/docs/agentic-batch-changes/index.mdx b/docs/agentic-batch-changes/index.mdx index ef6084f06..2333cfa78 100644 --- a/docs/agentic-batch-changes/index.mdx +++ b/docs/agentic-batch-changes/index.mdx @@ -88,9 +88,11 @@ All [batch changes capabilities](/batch-changes/batch-spec-yaml-reference) are a For example, the agent can write conditional steps, template changeset titles and descriptions, and split changes in one repository into multiple changesets. +Administration options like rollout windows and commit signing also carry over. See [Administration](#administration) for details. + ## Administration -Most Batch Changes configurations still apply in Agentic Batch Changes, unless otherwise listed before. To learn more about Batch Changes configuration options, refer to [Site Admin Configuration for Batch Changes](/batch-changes/site-admin-configuration). +Most Batch Changes configuration options, such as rollout windows and commit signing, still apply in Agentic Batch Changes unless otherwise noted. To learn more, refer to [Batch Changes configuration](/admin/config/batch-changes). ### Access control From 09cf74134e09b5e1a2fcf19188b189944dd41600 Mon Sep 17 00:00:00 2001 From: Warren Gifford Date: Mon, 6 Jul 2026 09:18:43 -0700 Subject: [PATCH 130/217] fix: typos and dead link in native k8s executor docs (#1805) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit closes PLAT-744 - Fix typo: 'steam' → 'stream' in RBAC table - Fix typo: 'namesapce' → 'namespace' in deployment steps - Replace dead-end 'local development YAMLs' reference with link to Helm chart values.yaml This is a very minor fixup. As part of this PR I tested the k8s-native executors connection docs to validate this local install works and the charts are working as expected. See https://linear.app/sourcegraph/issue/PLAT-744/native-kubernetes#comment-4e7a7676 Co-authored-by: Amp --- docs/self-hosted/executors/deploy-executors-kubernetes.mdx | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/self-hosted/executors/deploy-executors-kubernetes.mdx b/docs/self-hosted/executors/deploy-executors-kubernetes.mdx index 8f735c084..51e3bdaa4 100644 --- a/docs/self-hosted/executors/deploy-executors-kubernetes.mdx +++ b/docs/self-hosted/executors/deploy-executors-kubernetes.mdx @@ -15,7 +15,7 @@ Executors interact with the Kubernetes API to manage the lifecycle of individual | API Groups | Resources | Verbs | Reason | | ---------- | ------------------ | ---------------------- | ----------------------------------------------------------------------------------------- | | `batch` | `jobs` | `create`, `delete` | Executors create Job pods to run processes. Once Jobs are completed, they are cleaned up. | -| | `pods`, `pods/log` | `get`, `list`, `watch` | Executors need to look up and steam logs from the Job Pods. | +| | `pods`, `pods/log` | `get`, `list`, `watch` | Executors need to look up and stream logs from the Job Pods. | Here's an example Role YAML to demonstrate the RBAC requirements for native Kubernetes Executors: @@ -75,7 +75,7 @@ Native Kubernetes Executors can be deployed via either the `sourcegraph-executor 1. `EXECUTOR_FRONTEND_URL` should match the URL of your Sourcegraph instance 2. `EXECUTOR_FRONTEND_PASSWORD` should match the `executors.accessToken` key in the Sourcegraph instance's site configuration 3. Either `EXECUTOR_QUEUE_NAMES` or `EXECUTOR_QUEUE_NAME` should be set depending on whether the Executor will process batch change or precise auto indexing jobs - 4. `EXECUTOR_KUBERNETES_NAMESPACE` should be set to the Kubernetes namespace where you intend to run the worker pods. This should generally match the namesapce where you deploy the Executor resources in the next step. + 4. `EXECUTOR_KUBERNETES_NAMESPACE` should be set to the Kubernetes namespace where you intend to run the worker pods. This should generally match the namespace where you deploy the Executor resources in the next step. Additional environment variables may need to be configured for your @@ -141,4 +141,4 @@ The Executor Docker image is available on Docker Hub at [`sourcegraph/executor-k ### Example Configuration YAML -See the local development YAMLs for an example of how to configure the Executor in Kubernetes. +For an example of how to configure the Executor in Kubernetes, see the [`sourcegraph-executor-k8s` Helm chart values reference](https://github.com/sourcegraph/deploy-sourcegraph-helm/blob/main/charts/sourcegraph-executor/k8s/values.yaml). From f584b3cec64ad2186112e3c906913a428afb2707 Mon Sep 17 00:00:00 2001 From: sourcegraph-buildkite <71296199+sourcegraph-buildkite@users.noreply.github.com> Date: Mon, 6 Jul 2026 17:10:18 -0400 Subject: [PATCH 131/217] =?UTF-8?q?=F0=9F=A4=96=20Sync=20generated=20docs?= =?UTF-8?q?=20from=20sourcegraph/sourcegraph=20(#1803)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/admin/code-hosts/aws-codecommit.mdx | 2 +- docs/admin/code-hosts/azuredevops.mdx | 2 +- docs/admin/code-hosts/bitbucket-cloud.mdx | 2 +- docs/admin/code-hosts/bitbucket-server.mdx | 2 +- docs/admin/code-hosts/gerrit.mdx | 2 +- docs/admin/code-hosts/github.mdx | 2 +- docs/admin/code-hosts/gitlab.mdx | 2 +- docs/admin/code-hosts/gitolite.mdx | 2 +- docs/admin/code-hosts/other.mdx | 2 +- docs/admin/code-hosts/phabricator.mdx | 2 +- docs/admin/config/settings.mdx | 2 +- docs/admin/config/site-config.mdx | 24 +++++++++++----------- docs/admin/repo/perforce.mdx | 2 +- 13 files changed, 24 insertions(+), 24 deletions(-) diff --git a/docs/admin/code-hosts/aws-codecommit.mdx b/docs/admin/code-hosts/aws-codecommit.mdx index d6c91f799..76a08b430 100644 --- a/docs/admin/code-hosts/aws-codecommit.mdx +++ b/docs/admin/code-hosts/aws-codecommit.mdx @@ -37,7 +37,7 @@ AWS CodeCommit connections support the following configuration options, which ar {/* SCHEMA_SYNC_START: admin/code_hosts/aws_codecommit.schema.json */} {/* WARNING: This section is auto-generated during releases. Do not edit manually. */} -{/* Last updated: 2026-07-02T18:22:42Z */} +{/* Last updated: 2026-07-06T19:37:47Z */} ```json { // REQUIRED: diff --git a/docs/admin/code-hosts/azuredevops.mdx b/docs/admin/code-hosts/azuredevops.mdx index 6a9662dd5..08fa385e6 100644 --- a/docs/admin/code-hosts/azuredevops.mdx +++ b/docs/admin/code-hosts/azuredevops.mdx @@ -69,7 +69,7 @@ Azure DevOps connections support the following configuration options, which are {/* SCHEMA_SYNC_START: admin/code_hosts/azuredevops.schema.json */} {/* WARNING: This section is auto-generated during releases. Do not edit manually. */} -{/* Last updated: 2026-07-02T18:22:42Z */} +{/* Last updated: 2026-07-06T19:37:47Z */} ```json // Authentication alternatives: token OR windowsPassword diff --git a/docs/admin/code-hosts/bitbucket-cloud.mdx b/docs/admin/code-hosts/bitbucket-cloud.mdx index 27dec327d..3db5e7671 100644 --- a/docs/admin/code-hosts/bitbucket-cloud.mdx +++ b/docs/admin/code-hosts/bitbucket-cloud.mdx @@ -116,7 +116,7 @@ Bitbucket Cloud connections support the following configuration options, which a {/* SCHEMA_SYNC_START: admin/code_hosts/bitbucket_cloud.schema.json */} {/* WARNING: This section is auto-generated during releases. Do not edit manually. */} -{/* Last updated: 2026-07-02T18:22:42Z */} +{/* Last updated: 2026-07-06T19:37:47Z */} ```json { // The workspace access token to use when authenticating with Bitbucket Cloud. diff --git a/docs/admin/code-hosts/bitbucket-server.mdx b/docs/admin/code-hosts/bitbucket-server.mdx index 8b98779dc..75f36152d 100644 --- a/docs/admin/code-hosts/bitbucket-server.mdx +++ b/docs/admin/code-hosts/bitbucket-server.mdx @@ -202,7 +202,7 @@ Bitbucket Server / Bitbucket Data Center connections support the following confi {/* SCHEMA_SYNC_START: admin/code_hosts/bitbucket_server.schema.json */} {/* WARNING: This section is auto-generated during releases. Do not edit manually. */} -{/* Last updated: 2026-07-02T18:22:42Z */} +{/* Last updated: 2026-07-06T19:37:47Z */} ```json // Authentication alternatives: token OR password diff --git a/docs/admin/code-hosts/gerrit.mdx b/docs/admin/code-hosts/gerrit.mdx index eea88448a..819bb290e 100644 --- a/docs/admin/code-hosts/gerrit.mdx +++ b/docs/admin/code-hosts/gerrit.mdx @@ -113,7 +113,7 @@ Gerrit connections support the following configuration options, which are specif {/* SCHEMA_SYNC_START: admin/code_hosts/gerrit.schema.json */} {/* WARNING: This section is auto-generated during releases. Do not edit manually. */} -{/* Last updated: 2026-07-02T18:22:42Z */} +{/* Last updated: 2026-07-06T19:37:47Z */} ```json { // If non-null, enforces Gerrit repository permissions. This requires that there is an item in the [site configuration json](https://sourcegraph.com/docs/admin/config/site_config#auth-providers) `auth.providers` field, of type "gerrit" with the same `url` field as specified in this `GerritConnection`. diff --git a/docs/admin/code-hosts/github.mdx b/docs/admin/code-hosts/github.mdx index dc5922663..a5e4029c8 100644 --- a/docs/admin/code-hosts/github.mdx +++ b/docs/admin/code-hosts/github.mdx @@ -454,7 +454,7 @@ GitHub connections support the following configuration options, which are specif {/* SCHEMA_SYNC_START: admin/code_hosts/github.schema.json */} {/* WARNING: This section is auto-generated during releases. Do not edit manually. */} -{/* Last updated: 2026-07-02T18:22:42Z */} +{/* Last updated: 2026-07-06T19:37:47Z */} ```json // Authentication alternatives: token OR gitHubAppDetails OR externalAccount OR useRandomExternalAccount diff --git a/docs/admin/code-hosts/gitlab.mdx b/docs/admin/code-hosts/gitlab.mdx index d4599f0b1..b39ef4318 100644 --- a/docs/admin/code-hosts/gitlab.mdx +++ b/docs/admin/code-hosts/gitlab.mdx @@ -189,7 +189,7 @@ See [Internal rate limits](/admin/code-hosts/rate-limits#internal-rate-limits). {/* SCHEMA_SYNC_START: admin/code_hosts/gitlab.schema.json */} {/* WARNING: This section is auto-generated during releases. Do not edit manually. */} -{/* Last updated: 2026-07-02T18:22:42Z */} +{/* Last updated: 2026-07-06T19:37:47Z */} ```json { // If non-null, enforces GitLab repository permissions. This requires that there be an item in the `auth.providers` field of type "gitlab" with the same `url` field as specified in this `GitLabConnection`. diff --git a/docs/admin/code-hosts/gitolite.mdx b/docs/admin/code-hosts/gitolite.mdx index 0bbb0c988..f674b45d7 100644 --- a/docs/admin/code-hosts/gitolite.mdx +++ b/docs/admin/code-hosts/gitolite.mdx @@ -25,7 +25,7 @@ To connect Gitolite to Sourcegraph: {/* SCHEMA_SYNC_START: admin/code_hosts/gitolite.schema.json */} {/* WARNING: This section is auto-generated during releases. Do not edit manually. */} -{/* Last updated: 2026-07-02T18:22:42Z */} +{/* Last updated: 2026-07-06T19:37:47Z */} ```json { // A list of repositories to never mirror from this Gitolite instance. Supports excluding by exact name ({"name": "foo"}). diff --git a/docs/admin/code-hosts/other.mdx b/docs/admin/code-hosts/other.mdx index d378e61fe..9a40ed537 100644 --- a/docs/admin/code-hosts/other.mdx +++ b/docs/admin/code-hosts/other.mdx @@ -68,7 +68,7 @@ Repositories must be listed individually: {/* SCHEMA_SYNC_START: admin/code_hosts/other_external_service.schema.json */} {/* WARNING: This section is auto-generated during releases. Do not edit manually. */} -{/* Last updated: 2026-07-02T18:22:42Z */} +{/* Last updated: 2026-07-06T19:37:47Z */} ```json { // A list of repositories to never mirror by name after applying repositoryPathPattern. Supports excluding by exact name ({"name": "myrepo"}) or regular expression ({"pattern": ".*secret.*"}). diff --git a/docs/admin/code-hosts/phabricator.mdx b/docs/admin/code-hosts/phabricator.mdx index e0b4edac8..2746adfd5 100644 --- a/docs/admin/code-hosts/phabricator.mdx +++ b/docs/admin/code-hosts/phabricator.mdx @@ -76,7 +76,7 @@ The Sourcegraph instance's site admin must [update the `corsOrigin` site config {/* SCHEMA_SYNC_START: admin/code_hosts/phabricator.schema.json */} {/* WARNING: This section is auto-generated during releases. Do not edit manually. */} -{/* Last updated: 2026-07-02T18:22:42Z */} +{/* Last updated: 2026-07-06T19:37:47Z */} ```json { // SSH cipher to use when cloning via SSH. Must be a valid choice from `ssh -Q cipher`. diff --git a/docs/admin/config/settings.mdx b/docs/admin/config/settings.mdx index 8b81d43ae..203b785ec 100644 --- a/docs/admin/config/settings.mdx +++ b/docs/admin/config/settings.mdx @@ -27,7 +27,7 @@ Settings options and their default values are shown below. {/* SCHEMA_SYNC_START: admin/config/settings.schema.json */} {/* WARNING: This section is auto-generated during releases. Do not edit manually. */} -{/* Last updated: 2026-07-02T18:22:42Z */} +{/* Last updated: 2026-07-06T19:37:47Z */} ```json { diff --git a/docs/admin/config/site-config.mdx b/docs/admin/config/site-config.mdx index 6e91ff046..797c8b649 100644 --- a/docs/admin/config/site-config.mdx +++ b/docs/admin/config/site-config.mdx @@ -21,7 +21,7 @@ All site configuration options and their default values are shown below. {/* SCHEMA_SYNC_START: admin/config/site.schema.json */} {/* WARNING: This section is auto-generated during releases. Do not edit manually. */} -{/* Last updated: 2026-07-02T18:22:42Z */} +{/* Last updated: 2026-07-06T19:37:47Z */} ```json { @@ -51,6 +51,9 @@ All site configuration options and their default values are shown below. // Automatically delete branches created for Batch Changes changesets when the changeset is merged or closed, for supported code hosts. Overrides any setting on the repository on the code host itself. "batchChanges.autoDeleteBranch": false, + // Enables/disables buildImage steps for Agentic Batch Changes. When unset, buildImage steps are enabled on Sourcegraph Cloud and disabled otherwise. + "batchChanges.buildImage.enabled": false, + // How long changesets will be retained after they have been detached from a batch change. // Other example values: // - "336h" @@ -297,19 +300,15 @@ All site configuration options and their default values are shown below. "deepSearch.showCodyWeb": false, "enableGithubInternalRepoVisibility": false, "enablePermissionsWebhooks": false, - "enableStorm": false, "eventLogging": "enabled", "gitServerPinnedRepos": null, - "goPackages": "disabled", "homepage": null, "insightsAlternateLoadingStrategy": false, "insightsBackfillerV2": true, "insightsDataRetention": true, - "jvmPackages": "disabled", "languageDetection": { "graphQL": "useFileContents" }, - "npmPackages": "disabled", "pagure": "disabled", "passwordPolicy": { "enabled": true, @@ -319,7 +318,6 @@ All site configuration options and their default values are shown below. "requireUpperandLowerCase": true }, "perforceChangelistMapping": "enabled", - "pythonPackages": "disabled", "ranking": { "flushWallTimeMS": 500, "maxQueueMatchCount": -1, @@ -329,8 +327,6 @@ All site configuration options and their default values are shown below. "repoScores": {} }, "rateLimitAnonymous": 500, - "rubyPackages": "disabled", - "rustPackages": "disabled", "scipBasedAPIs": true, "search.index.branches": null, "search.index.query.contexts": false, @@ -479,16 +475,20 @@ All site configuration options and their default values are shown below. // The maximum number of outbound requests to retain. This is a global limit across all outbound requests. If the limit is exceeded, older items will be deleted. If the limit is 0, no outbound requests are logged. "outboundRequestLogLimit": 50, - // The max number of concurrent Own jobs that will run per worker node. + // ⚠️ DEPRECATED: DEPRECATED: This setting has no effect. + // DEPRECATED: This setting has no effect. "own.background.repoIndexConcurrencyLimit": 5, - // The maximum per second burst of repositories for Own jobs per worker node. Generally this value should not be less than the max concurrency. + // ⚠️ DEPRECATED: DEPRECATED: This setting has no effect. + // DEPRECATED: This setting has no effect. "own.background.repoIndexRateBurstLimit": 5, - // The maximum per second rate of repositories for Own jobs per worker node. + // ⚠️ DEPRECATED: DEPRECATED: This setting has no effect. + // DEPRECATED: This setting has no effect. "own.background.repoIndexRateLimit": 20, - // The Own service will attempt to match a Team by the last part of its handle if it contains a slash and no match is found for its full handle. + // ⚠️ DEPRECATED: DEPRECATED: This setting has no effect. + // DEPRECATED: This setting has no effect. "own.bestEffortTeamMatching": true, // URL to fetch unreachable repository details from. Defaults to "https://sourcegraph.com" diff --git a/docs/admin/repo/perforce.mdx b/docs/admin/repo/perforce.mdx index e786e0c34..de5119380 100644 --- a/docs/admin/repo/perforce.mdx +++ b/docs/admin/repo/perforce.mdx @@ -228,7 +228,7 @@ With this setting, Sourcegraph will ignore any rules with a host other than `*`, {/* SCHEMA_SYNC_START: admin/code_hosts/perforce.schema.json */} {/* WARNING: This section is auto-generated during releases. Do not edit manually. */} -{/* Last updated: 2026-07-02T18:22:42Z */} +{/* Last updated: 2026-07-06T19:37:47Z */} ```json { // If non-null, enforces Perforce depot permissions. From 24a5d380d26fa1209dbcc74cbebfa7bd00d6cfbe Mon Sep 17 00:00:00 2001 From: federubinstein Date: Tue, 7 Jul 2026 16:00:08 +0200 Subject: [PATCH 132/217] feat/docs: mention coding agent provider configuration (#1808) Adds a brief note that site admins can configure coding agent provider API keys and optional endpoint overrides from the Batch Changes Agents admin UI. --- docs/agentic-batch-changes/index.mdx | 2 ++ 1 file changed, 2 insertions(+) diff --git a/docs/agentic-batch-changes/index.mdx b/docs/agentic-batch-changes/index.mdx index 2333cfa78..31d04ae9e 100644 --- a/docs/agentic-batch-changes/index.mdx +++ b/docs/agentic-batch-changes/index.mdx @@ -72,6 +72,8 @@ The coding agent step is a new native step type for Agentic Batch Changes that a We currently support [Claude Code](https://claude.com/product/claude-code) and [Codex](https://openai.com/codex) as native coding agent steps. +By default, coding agent LLM traffic is routed through the Sourcegraph Model Provider. Site administrators can configure their own API keys to route traffic directly to Anthropic or OpenAI in **Administration → Batch Changes → Agents**. An optional `endpoint` field can be set for each agent to override the default provider URL. + Note that Agentic Batch Changes does not use coding agent steps for every task. For deterministic changes, the agent will opt to write a script - or even an entire program - to efficiently apply some, or all, of the target changes. ### Building images for steps From 3fcc7fd838fad2b007e7195ee98104c20c3a7c63 Mon Sep 17 00:00:00 2001 From: Warren Gifford Date: Tue, 7 Jul 2026 15:04:03 -0700 Subject: [PATCH 133/217] remove sourcegraph server (#1807) closes PLAT-780 Remove docs related to the sunsetted sourcegraph server deployment type related: https://github.com/sourcegraph/sourcegraph/pull/13858 --- docs/admin/code-hosts/aws-codecommit.mdx | 2 +- docs/admin/repo/add.mdx | 1 - docs/admin/repo/git-config.mdx | 1 - .../deploy/docker-single-container/aws.mdx | 71 ---- .../docker-single-container/digitalocean.mdx | 45 --- .../docker-single-container/google-cloud.mdx | 53 --- .../deploy/docker-single-container/index.mdx | 356 ------------------ docs/self-hosted/deploy/index.mdx | 6 - .../how-to/dirty-database-pre-3-37.mdx | 2 +- docs/self-hosted/how-to/dirty-database.mdx | 2 +- docs/self-hosted/observability/logs.mdx | 2 - docs/self-hosted/observability/metrics.mdx | 3 - docs/self-hosted/pprof.mdx | 4 - docs/self-hosted/updates/automatic.mdx | 2 +- docs/self-hosted/updates/index.mdx | 1 - src/data/redirects.ts | 34 +- 16 files changed, 21 insertions(+), 564 deletions(-) delete mode 100644 docs/self-hosted/deploy/docker-single-container/aws.mdx delete mode 100644 docs/self-hosted/deploy/docker-single-container/digitalocean.mdx delete mode 100644 docs/self-hosted/deploy/docker-single-container/google-cloud.mdx delete mode 100644 docs/self-hosted/deploy/docker-single-container/index.mdx diff --git a/docs/admin/code-hosts/aws-codecommit.mdx b/docs/admin/code-hosts/aws-codecommit.mdx index 76a08b430..fa2036d07 100644 --- a/docs/admin/code-hosts/aws-codecommit.mdx +++ b/docs/admin/code-hosts/aws-codecommit.mdx @@ -136,7 +136,7 @@ To add CodeCommit repositories in Docker Container: ### Mounting SSH keys into the container -1. Copy all the files at your `$HOME/.ssh directory` to `$HOME/.sourcegraph/config/ssh` directory. See [docs](/self-hosted/deploy/docker-single-container/#ssh-authentication-config-keys-knownhosts) for more information about our ssh file system. +1. Copy all the files at your `$HOME/.ssh directory` to `$HOME/.sourcegraph/config/ssh` directory. 1. Read our [guide here](/self-hosted/deploy/docker-compose/#git-ssh-configuration) for Docker Compose deployments 1. Read our [guide here](/self-hosted/deploy/kubernetes/configure#ssh-for-cloning) for Kubernetes deployments 1. Start (or restart) the container. diff --git a/docs/admin/repo/add.mdx b/docs/admin/repo/add.mdx index 664221081..e0138c8df 100644 --- a/docs/admin/repo/add.mdx +++ b/docs/admin/repo/add.mdx @@ -18,7 +18,6 @@ If your repositories are not showing up, check the site admin **Repositories** p If nothing informative is visible there, check for error messages related to communication with your code host's API in the logs from: - [Docker Compose](/self-hosted/deploy/docker-compose/) and [Kubernetes](/self-hosted/deploy/kubernetes/): the logs from the `worker` container/pod -- [Single-container](/self-hosted/deploy/docker-single-container/): the `sourcegraph/server` Docker container ### Repository not cloning or updating diff --git a/docs/admin/repo/git-config.mdx b/docs/admin/repo/git-config.mdx index 6f7d1d890..19f070df3 100644 --- a/docs/admin/repo/git-config.mdx +++ b/docs/admin/repo/git-config.mdx @@ -6,7 +6,6 @@ This guide documents how to configure git-config. To set up SSH and authenticati - [Sourcegraph with Docker Compose](/self-hosted/deploy/docker-compose/): See [the Docker Compose git configuration guide](/self-hosted/deploy/docker-compose/#git-configuration). - [Sourcegraph with Kubernetes](/self-hosted/deploy/kubernetes/): See [Configure repository cloning via SSH](/self-hosted/deploy/kubernetes/configure#ssh-for-cloning). -- [Single-container Sourcegraph](/self-hosted/deploy/docker-single-container/): See [the single-container git configuration guide](/self-hosted/deploy/docker-single-container/#git-configuration-and-authentication). ## Example: alternate clone URL for repos diff --git a/docs/self-hosted/deploy/docker-single-container/aws.mdx b/docs/self-hosted/deploy/docker-single-container/aws.mdx deleted file mode 100644 index a71b748fc..000000000 --- a/docs/self-hosted/deploy/docker-single-container/aws.mdx +++ /dev/null @@ -1,71 +0,0 @@ -# Install single-container Sourcegraph with Docker on AWS - -The single-container (`sourcegraph/server`) deployment mode has been **removed in [Sourcegraph 7.0.0](https://sourcegraph.com/changelog/releases/7.0)**. The `sourcegraph/server` Docker image is no longer published starting with 7.0.0. Customers must [migrate to Docker Compose](/self-hosted/deploy/docker-compose/migrate) or [Kubernetes](/self-hosted/deploy/kubernetes/) before upgrading to 7.0.0. - -This tutorial shows you how to deploy [single-container Sourcegraph with Docker](/self-hosted/deploy/docker-single-container/) to a single EC2 instance on AWS. - -> NOTE: We _do not_ recommend using this method for a production instance. If deploying a production instance, see [our recommendations](/self-hosted/deploy/) for how to choose a deployment type that suits your needs. We recommend [Docker Compose](/self-hosted/deploy/docker-compose/aws) for most initial production deployments. - ---- - -## Deploy to EC2 - -- Click **Launch Instance** from your [EC2 dashboard](https://console.aws.amazon.com/ec2/v2/home). -- Select the Amazon Linux 2 AMI (HVM), SSD Volume Type. -- Select an appropriate instance size (we recommend `t2.medium` or `t2.large`, depending on team size and number of repositories/languages enabled), then **Next: Configure Instance Details** -- Ensure the **Auto-assign Public IP** option is "Enable". This ensures your instance is accessible to the Internet. -- Add the following user data (as text) in the **Advanced Details** section: - - ``` - #cloud-config - repo_update: true - repo_upgrade: all - - runcmd: - # Create the directory structure for Sourcegraph data - - mkdir -p /home/ec2-user/.sourcegraph/config - - mkdir -p /home/ec2-user/.sourcegraph/data - - # Install, configure, and enable Docker - - yum update -y - - amazon-linux-extras install docker - - systemctl enable --now --no-block docker - - sed -i -e 's/1024/10240/g' /etc/sysconfig/docker - - sed -i -e 's/4096/40960/g' /etc/sysconfig/docker - - usermod -a -G docker ec2-user - - # Install and run Sourcegraph. Restart the container upon subsequent reboots - - [ sh, -c, 'docker run -d --publish 80:7080 --publish 443:7080 --publish 127.0.0.1:3370:3370 --restart unless-stopped --volume /home/ec2-user/.sourcegraph/config:/etc/sourcegraph --volume /home/ec2-user/.sourcegraph/data:/var/opt/sourcegraph sourcegraph/server:{CURRENT_VERSION_NO_V}' ] - ``` - -- Select **Next: ...** until you get to the **Configure Security Group** page. Then add the following rules: - - Default **HTTP** rule: port range `80`, source `0.0.0.0/0, ::/0` - - Default **HTTPS** rule: port range `443`, source `0.0.0.0/0, ::/0` - - (NOTE: additional work will be required later on to [configure NGINX to support SSL](/self-hosted/http-https-configuration#nginx-ssl-https-configuration)) -- Launch your instance, then navigate to its public IP in your browser. (This can be found by navigating to the instance page on EC2 and looking in the "Description" panel for the "IPv4 Public IP" value.) You may have to wait a minute or two for the instance to finish initializing before Sourcegraph becomes accessible. You can monitor the status by SSHing into the EC2 instance and viewing the logs: - - ``` - docker logs $(docker ps | grep sourcegraph/server | awk '{ print $1 }') - ``` - -- If you have configured a domain name to point to the IP, configure `externalURL` to reflect that. - ---- - -## Update your Sourcegraph version - -To update to the most recent version of Sourcegraph (X.Y.Z), SSH into your instance and run the following: - -```bash -docker ps # get the $CONTAINER_ID of the running sourcegraph/server container -docker rm -f $CONTAINER_ID -docker run docker run -d --publish 80:7080 --publish 443:7080 --restart unless-stopped --volume /home/ec2-user/.sourcegraph/config:/etc/sourcegraph --volume /home/ec2-user/.sourcegraph/data:/var/opt/sourcegraph sourcegraph/server:X.Y.Z -``` - ---- - -## Using an external database for persistence - -The Docker container has its own internal PostgreSQL and Redis databases. To preserve this data when you kill and recreate the container, you can [use external services](/self-hosted/external-services/) for persistence, such as [AWS RDS for PostgreSQL](https://aws.amazon.com/rds/), [Amazon ElastiCache](https://aws.amazon.com/elasticache/redis/), and [S3](https://aws.amazon.com/s3/) for storing user uploads. - -> NOTE: Use of external databases requires [Sourcegraph Enterprise](https://about.sourcegraph.com/pricing). diff --git a/docs/self-hosted/deploy/docker-single-container/digitalocean.mdx b/docs/self-hosted/deploy/docker-single-container/digitalocean.mdx deleted file mode 100644 index 237153b0f..000000000 --- a/docs/self-hosted/deploy/docker-single-container/digitalocean.mdx +++ /dev/null @@ -1,45 +0,0 @@ -# Install single-container Sourcegraph with Docker on DigitalOcean - -The single-container (`sourcegraph/server`) deployment mode has been **removed in [Sourcegraph 7.0.0](https://sourcegraph.com/changelog/releases/7.0)**. The `sourcegraph/server` Docker image is no longer published starting with 7.0.0. Customers must [migrate to Docker Compose](/self-hosted/deploy/docker-compose/migrate) or [Kubernetes](/self-hosted/deploy/kubernetes/) before upgrading to 7.0.0. - -This tutorial shows you how to deploy [single-container Sourcegraph with Docker](/self-hosted/deploy/docker-single-container/) to a single node running on DigitalOcean. - -> NOTE: We _do not_ recommend using this method for a production instance. If deploying a production instance, see [our recommendations](/self-hosted/deploy/) for how to choose a deployment type that suits your needs. We recommend [Docker Compose](/self-hosted/deploy/docker-compose/digitalocean) for most initial production deployments. - ---- - -## Run Sourcegraph on a Digital Ocean Droplet - -1. [Create a new Digital Ocean Droplet](https://cloud.digitalocean.com/droplets/new). Set the - operating system to be Ubuntu 18.04. For droplet size, we recommend at least 4GB RAM and 2 CPU, - but you may need more depending on team size and number of repositories. We recommend you set up - SSH access (Authentication > SSH keys) for convenient access to the droplet. -1. SSH into the droplet, and install Docker: `snap install docker` -1. Run the Sourcegraph Docker image as a daemon: - - ``` - docker run -d --publish 80:7080 --publish 443:7443 --restart unless-stopped --volume /root/.sourcegraph/config:/etc/sourcegraph --volume /root/.sourcegraph/data:/var/opt/sourcegraph sourcegraph/server:{CURRENT_VERSION_NO_V} - ``` - -1. Navigate to the droplet's IP address to finish initializing Sourcegraph. If you have configured a - DNS entry for the IP, configure `externalURL` to reflect that. - -### After initialization - -After initial setup, we recommend you do the following: - -- Restrict the accessibility of ports other than `80` and `443` via [Cloud - Firewalls](https://www.digitalocean.com/docs/networking/firewalls/quickstart/). -- Set up [TLS/SSL](/self-hosted/http-https-configuration#nginx-ssl-https-configuration) in the NGINX configuration. - ---- - -## Update your Sourcegraph version - -To update to the most recent version of Sourcegraph (X.Y.Z), SSH into your instance and run the following: - -``` -docker ps # get the $CONTAINER_ID of the running sourcegraph/server container -docker rm -f $CONTAINER_ID -docker run -d ... sourcegraph/server:X.Y.Z -``` diff --git a/docs/self-hosted/deploy/docker-single-container/google-cloud.mdx b/docs/self-hosted/deploy/docker-single-container/google-cloud.mdx deleted file mode 100644 index 330d3bb08..000000000 --- a/docs/self-hosted/deploy/docker-single-container/google-cloud.mdx +++ /dev/null @@ -1,53 +0,0 @@ -# Install single-container Sourcegraph with Docker on Google Cloud - -The single-container (`sourcegraph/server`) deployment mode has been **removed in [Sourcegraph 7.0.0](https://sourcegraph.com/changelog/releases/7.0)**. The `sourcegraph/server` Docker image is no longer published starting with 7.0.0. Customers must [migrate to Docker Compose](/self-hosted/deploy/docker-compose/migrate) or [Kubernetes](/self-hosted/deploy/kubernetes/) before upgrading to 7.0.0. - -This tutorial shows you how to deploy [single-container Sourcegraph with Docker](/self-hosted/deploy/docker-single-container/) to a single node running on Google Cloud. - -> NOTE: We _do not_ recommend using this method for a production instance. If deploying a production instance, see [our recommendations](/self-hosted/deploy/) for how to choose a deployment type that suits your needs. We recommend [Docker Compose](/self-hosted/deploy/docker-compose/google-cloud) for most initial production deployments. - ---- - -## Deploy to Google Cloud VM - -- [Open your Google Cloud console](https://console.cloud.google.com/compute/instances) to create a new VM instance and click **Create Instance** -- Choose an appropriate machine type (we recommend at least 2 vCPU and 7.5 GB RAM, more depending on team size and number of repositories/languages enabled) -- Choose Ubuntu 16.04 LTS as your boot disk -- Check the boxes for **Allow HTTP traffic** and **Allow HTTPS traffic** in the **Firewall** section -- Open the **Management, disks, networking, and SSH keys** dropdown section and add the following in the **Startup script** field: - - ``` - #!/usr/bin/env bash - curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - - sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" - sudo apt-get update - apt-cache policy docker-ce - sudo apt-get install -y docker-ce - mkdir -p /root/.sourcegraph/config - mkdir -p /root/.sourcegraph/data - docker run -d --publish 80:7080 --publish 443:7443 --restart unless-stopped --volume /root/.sourcegraph/config:/etc/sourcegraph --volume /root/.sourcegraph/data:/var/opt/sourcegraph sourcegraph/server:{CURRENT_VERSION_NO_V} - ``` - -- Create your VM, then navigate to its public IP address. - -- If you have configured a DNS entry for the IP, configure `externalURL` to reflect that. - ---- - -## Update your Sourcegraph version - -To update to the most recent version of Sourcegraph (X.Y.Z), SSH into your instance and run the following: - -``` -docker ps # get the $CONTAINER_ID of the running sourcegraph/server container -docker rm -f $CONTAINER_ID -docker run -d ... sourcegraph/server:X.Y.Z -``` - ---- - -## Using an external database for persistence - -The Docker container has its own internal PostgreSQL and Redis databases. To preserve this data when you kill and recreate the container, you can [use external services](/self-hosted/external-services/) for persistence, such as Google Cloud's [Cloud SQL for PostgreSQL](https://cloud.google.com/sql/docs/postgres/), [Cloud Memorystore](https://cloud.google.com/memorystore/), and [Cloud Storage](https://cloud.google.com/storage) for storing user uploads. - -> NOTE: Use of external databases requires [Sourcegraph Enterprise](https://about.sourcegraph.com/pricing). diff --git a/docs/self-hosted/deploy/docker-single-container/index.mdx b/docs/self-hosted/deploy/docker-single-container/index.mdx deleted file mode 100644 index 64e70058b..000000000 --- a/docs/self-hosted/deploy/docker-single-container/index.mdx +++ /dev/null @@ -1,356 +0,0 @@ -# Docker Single Container Deployment - -The single-container (`sourcegraph/server`) deployment mode has been **removed in [Sourcegraph 7.0.0](https://sourcegraph.com/changelog/releases/7.0)**. The `sourcegraph/server` Docker image is no longer published starting with 7.0.0. Customers must [migrate to Docker Compose](/self-hosted/deploy/docker-compose/migrate) or [Kubernetes](/self-hosted/deploy/kubernetes/) before upgrading to 7.0.0. - -The Docker Single Container deployment type is a way to very quickly get an instance of Sourcegraph set up locally to experiment with many of its features. However, it is **not recommended** for a production instance, and **has limitations** depending on the OS you are deploying to, as well as the associated resources. See the [troubleshooting section](#troubleshooting) for additional information. - -[Code Insights](/code-insights/) is not supported in Single Container deployments. To try Code Insights you must deploy using [Docker Compose](/self-hosted/deploy/docker-compose/) or [Kubernetes](/self-hosted/deploy/kubernetes/). [Tracing](/self-hosted/observability/tracing) is disabled by default, and if you intend to enable it, you will have to deploy and configure the [OpenTelemetry Collector](/self-hosted/observability/opentelemetry). The Single Container deployment does not ship with this service included. It is strongly recommended to use one of the aforementioned deployment methods if tracing support is a requirement. - -## Installation - -It takes less than a minute to run and install Sourcegraph using Docker: - -``` -docker run ---publish 7080:7080 --publish 127.0.0.1:3370:3370 --rm ---volume ~/.sourcegraph/config:/etc/sourcegraph ---volume ~/.sourcegraph/data:/var/opt/sourcegraph -sourcegraph/server:{CURRENT_VERSION_NO_V} -``` - -Once the server is ready (logo is displayed in the terminal), navigate to the hostname or IP address on port `7080`. Create the admin account, then you'll be guided through setting up Sourcegraph for code searching and navigation. - -For next steps and further configuration options, review the high-level configuration items below, or visit the [detailed configuration documentation](/admin/). - -> WARNING: **We do not recommend using this method for a production instance.** If deploying a production instance, see [our recommendations](/self-hosted/deploy/) for how to choose a deployment type that suits your needs. We recommend [Docker Compose](/self-hosted/deploy/docker-compose/) for most initial production deployments. - -## Configuration - -### Configure exposed Sourcegraph port - -Change the `docker` `--publish` argument to make it listen on the specific interface and port on your host machine. For example, `docker run ... --publish 0.0.0.0:80:7080 ...` would make it accessible on port 80 of your machine. For more information, see "[Publish or expose port](https://docs.docker.com/engine/reference/commandline/run/#publish-or-expose-port--p---expose)" in the Docker documentation. - -The other option is to deploy and run Sourcegraph on a cloud provider. For an example, see the [cloud installation section](#cloud-installation-guides). - -### Git configuration and authentication - -For single-container environments, upon the Sourcegraph Docker image container start, it copies all files from `/etc/sourcegraph/{ssh,gitconfig,netrc}` into its own `$HOME` directory, via the `--volume /mnt/sourcegraph/config:/etc/sourcegraph` in the `docker run` command. - -For example, to mount a `.gitconfig`, create a file `/mnt/sourcegraph/config/gitconfig` on your host containing your configuration: - -``` -# example .gitconfig - -[url "example.url.com:"] - insteadOf = "ssh://example.url.com" -``` - -Alternatively you can create a new Docker image which inherits from Sourcegraph and then mutates the environment: - -```dockerfile -FROM sourcegraph/server:{CURRENT_VERSION_NO_V} - -COPY gitconfig /etc/gitconfig -COPY ssh /root/.ssh -RUN find /root/.ssh -type f -exec chmod 600 '{}' ';' -RUN find /root/.ssh -type d -exec chmod 700 '{}' ';' -``` - -This approach can also be used for `sourcegraph/gitserver` images in cluster environments. - -Learn more about Git [configuration](/admin/repo/git-config) and [authentication](/admin/repo/auth). - -#### SSH authentication (config, keys, `known_hosts`) - -The container consults its own file system (in the standard locations) for SSH configuration, private keys, and `known_hosts`. Upon container start, it copies all files from `/etc/sourcegraph/ssh` into its own `$HOME/.ssh` directory. - -To provide SSH authentication configuration to the container, assuming you're using the default `--volume $HOME/.sourcegraph/config:/etc/sourcegraph`, follow these steps: - -1. Create files at `$HOME/.sourcegraph/config/ssh/config`, `$HOME/.sourcegraph/config/ssh/known_hosts`, etc., on the host machine as desired to configure SSH. -1. Start (or restart) the container. - -To configure the container to use the same SSH as your user account on the host machine, you can also run `cp -R $HOME/.ssh $HOME/.sourcegraph/config/ssh`. - -#### HTTP(S) authentication via netrc - -The easiest way to specify HTTP(S) authentication for repositories is to include the username and password in the clone URL itself, such as `https://user:password@example.com/my/repo`. These credentials won't be displayed to non-admin users. - -Otherwise, the container consults the `$HOME/.netrc` files on its own file system for HTTP(S) authentication. The `.netrc` file is a standard way to specify authentication used to connect to external hosts. - -To provide HTTP(S) authentication, assuming you're using the default `--volume $HOME/.sourcegraph/config:/etc/sourcegraph`, follow these steps: - -1. Create a file at `$HOME/.sourcegraph/config/netrc` on the host machine that contains lines of the form `machine example.com login alice password mypassword` (replacing `example.com`, `alice`, and `mypassword` with the actual values). -1. Start (or restart) the container. - -### Expose debug port - -This is required to [collect debug data](/self-hosted/pprof). - -The docker run command for single-container Sourcegraph needs an additional publish flag to expose the debug port: - -```sh -$ docker run --publish 7080:7080 --publish 127.0.0.1:3370:3370 --publish 127.0.0.1:6060:6060 --rm --volume ~/.sourcegraph/config:/etc/sourcegraph --volume ~/.sourcegraph/data:/var/opt/sourcegraph sourcegraph/server:{CURRENT_VERSION_NO_V} -``` - -If Sourcegraph is deployed to a remote server, then access via an SSH tunnel using a tool -such as [sshuttle](https://github.com/sshuttle/sshuttle) is required to establish a secure connection. -To access the remote server using `sshuttle` from your local machine: - -```sh -$ sshuttle -r user@host 0/0 -``` - -### Environment variables - -Add the following to your docker run command: - -```sh -$ docker run [...] --e (YOUR CODE) -sourcegraph/server:{CURRENT_VERSION_NO_V} -``` - -## Operation - -### Access the database - -> NOTE: To execute an SQL query against the database without first creating an interactive session (as below), append `--command "SELECT * FROM users;"` to the `docker container exec` command. - -Get the Docker container ID for Sourcegraph: - -```sh -$ docker ps -CONTAINER ID IMAGE -d039ec989761 sourcegraph/server:VERSION -``` - -Open a PostgreSQL interactive terminal: - -```sh -$ docker container exec -it d039ec989761 psql -U postgres sourcegraph -``` - -Run your SQL query: - -```sql -SELECT * FROM users; -``` - -## Upgrade - -### Postgresql 16 - - -The single-container deployment (`sourcegraph/server`) is sunset in [Sourcegraph 7.0.0](https://sourcegraph.com/changelog/releases/7.0) and is no longer supported. The automatic PostgreSQL 12 to 16 upgrade procedure described below only applies to Sourcegraph 5.10.x through 6.x releases. Users should migrate to a supported deployment type before upgrading to 7.0.0. - - -> Warning: The 5.11 release updates the database container images from Postgres 12 to Postgres 16. Customers are advised to have a database backup before upgrading! See our [postgres 12 end of life](https://sourcegraph.com/docs/self-hosted/postgres12-end-of-life-notice#postgres-12-end-of-life) notice! - -From sourcegraph version 5.11 onwards, the Sourcegraph single container Docker image uses Postgresql 16. Upgrading from Postgresql 12 to Postgresql 16 is a manual process, that is similar to the one outlined below for multi-version upgrades, but migrator has been merged into the container, allowing for a simpler upgrade. - -> NOTE: It is highly recommended to **take an up-to-date snapshot of your databases** prior to starting a multi-version upgrade. The upgrade process aggressively mutates the shape and contents of your database, and undiscovered errors in the migration process or unexpected environmental differences may cause an unusable instance or data loss. -> -> We recommend performing the entire upgrade procedure on an idle clone of the production instance and switch traffic over on success, if possible. This may be low-effort for installations with a canary environment or a blue/green deployment strategy. -> -> **If you do not feel confident running this process solo**, contact customer support team to help guide you thorough the process. - -**Before performing a multi-version upgrade**: - -- Read our [update policy](/self-hosted/updates/#update-policy) to learn about Sourcegraph updates. -- Find the entries that apply to the version range you're passing through in the [update notes for Sourcegraph with Docker Single Container](https://sourcegraph.com/changelog/self-hosted/server). - -0. You must first shutdown the container instance via `docker stop [CONTAINER]`. -1. Start a temporary Postgres container on top of the Postgres data directory used by the old `sourcegraph/server` image. You must use the _new_ postgresql-16-codeinsights image, which is based on the new Postgresql 16 image, and provides an automatic upgrade script to move from Postgresql 12 to Postgresql 16. - -`docker run --rm -it -v ~/.sourcegraph/data/postgresql:/data/pgdata-12 -e POSTGRES_USER=postgres -p 5432:5432 sourcegraph/postgresql-16-codeinsights:{CURRENT_VERSION_NO_V}` - -2. Once that temporary container marks that Postgresql has started, the migration is complete and you can stop the temporary container. -3. Start the new `sourcegraph/server` container. - -`docker run --publish 7080:7080 --publish 127.0.0.1:3370:3370 --rm --volume ~/.sourcegraph/config:/etc/sourcegraph --volume ~/.sourcegraph/data:/var/opt/sourcegraph sourcegraph/server:{CURRENT_VERSION_NO_V}` - -You now have a single server Sourcegraph container image running on Postgresql 16. - -### Standard upgrades - -A [standard upgrade](/self-hosted/updates/#standard-upgrades) occurs between two minor versions of Sourcegraph. If you are looking to jump forward several versions, you must perform a [multi-version upgrade](#multi-version-upgrades) instead. - -**Before upgrading:** - -- Read our [update policy](/self-hosted/updates/#update-policy) to learn about Sourcegraph updates. -- Find the relevant entry for your update in the [update notes for single-container Sourcegraph with Docker](https://sourcegraph.com/changelog/self-hosted/server). - -To update, just use the newer `sourcegraph/server:N.N.N` Docker image (where `N.N.N` is a patch or single minor release away your current version) in place of the older one, using the same Docker volumes. Your server's data will be migrated automatically if needed. You can always find the version number details of the latest release via the [technical changelog](https://sourcegraph.com/changelog/releases). - -### Multi-version upgrades - -> NOTE: It is no longer necessary to run Migrator outside of the single instance container. Migrator is now built into the container, and will be run via the `sourcegraph/server` image. -> -> We **still** recommend performing the entire upgrade procedure on an idle clone of the production instance and switch traffic over on success, if possible. This may be low-effort for installations with a canary environment or a blue/green deployment strategy. -> -> The below docs are kept for posterity for users on older versions of Sourcegraph that are looking to upgrade or run the migrator tool. - -To update, just use the newer `sourcegraph/server:N.N.N` Docker image in place of the older one, using the same Docker volumes. Your server's data will be migrated automatically if needed. You can always find the version number details of the latest release via the [technical changelog](https://sourcegraph.com/changelog/releases). - -### (Legacy) Multi-version upgrades - -A [multi-version upgrade](/self-hosted/updates/#multi-version-upgrades) is a downtime-incurring upgrade from version 3.20 or later to any future version. Multi-version upgrades will run both schema and data migrations to ensure the data available from the instance remains available post-upgrade. - -> NOTE: It is highly recommended to **take an up-to-date snapshot of your databases** prior to starting a multi-version upgrade. The upgrade process aggressively mutates the shape and contents of your database, and undiscovered errors in the migration process or unexpected environmental differences may cause an unusable instance or data loss. -> -> We recommend performing the entire upgrade procedure on an idle clone of the production instance and switch traffic over on success, if possible. This may be low-effort for installations with a canary environment or a blue/green deployment strategy. -> -> **If you do not feel confident running this process solo**, contact customer support team to help guide you thorough the process. - -**Before performing a multi-version upgrade**: - -- Read our [update policy](/self-hosted/updates/#update-policy) to learn about Sourcegraph updates. -- Find the entries that apply to the version range you're passing through in the [update notes for Sourcegraph with Docker Single Container](https://sourcegraph.com/changelog/self-hosted/server). - -To perform a multi-version upgrade on a Sourcegraph instance running on Docker Single Container: - -1. Stop the running Sourcegraph container via `docker stop [CONTAINER]`. -1. Start a temporary Postgres container on top of the Postgres data directory used by the old `sourcegraph/server` image. This Postgres instance will be used by the following upgrade migration. If using an [external database](/self-hosted/external-services/postgres), the database is already accessible from the `migrator` so no action is needed. Otherwise, start the new Postgres container by following the steps [described below](#running-temporary-postgres-containers). -1. Follow the instructions on [how to run the migrator job in Docker](/self-hosted/updates/migrator/migrator-operations#docker-compose) to perform the upgrade migratiohn. For specific documentation on the `upgrade` command, see the [command documentation](/self-hosted/updates/migrator/migrator-operations#upgrade). The following specific steps are an easy way to run the upgrade command: - -

- -```sh -$ docker run \ - --rm \ - --name migrator_${SG_VERSION} \ - -e PGHOST='pgsql' \ - -e PGPORT='5432' \ - -e PGUSER='sg' \ - -e PGPASSWORD='sg' \ - -e PGDATABASE='sourcegraph' \ - -e PGSSLMODE='disable' \ - -e CODEINTEL_PGHOST='pgsql' \ - -e CODEINTEL_PGPORT='5432' \ - -e CODEINTEL_PGUSER='sg' \ - -e CODEINTEL_PGPASSWORD='sg' \ - -e CODEINTEL_PGDATABASE='sourcegraph-codeintel' \ - -e CODEINTEL_PGSSLMODE='disable' \ - -e CODEINSIGHTS_PGHOST='pgsql' \ - -e CODEINSIGHTS_PGPORT='5432' \ - -e CODEINSIGHTS_PGUSER='postgres' \ - -e CODEINSIGHTS_PGPASSWORD='password' \ - -e CODEINSIGHTS_PGDATABASE='postgres' \ - -e CODEINSIGHTS_PGSSLMODE='disable' \ - -e CODEINTEL_PG_ALLOW_SINGLE_DB=true \ - sourcegraph/migrator:v${SG_VERSION} \ - upgrade --from=${CURRENT_SG_VERSION} --to=${SG_VERSION} -``` - -It is recommended to also add the `--dry-run` flag on a trial invocation to detect if there are any issues with database connection, schema drift, or mismatched versions that need to be addressed. - -After this container exits successfully, the remaining infrastructure can now be updated. All temporary containers can be stopped, and the Docker invocation for your `sourcegraph/server` container can be updated to use the new target version. - -#### Running temporary Postgres containers - -Mounting a Postgres container on top of the data directory used by `sourcegraph/server` will allow us to access and migrate the data in-place without having running services interfere. - -Let `${PATH}` be the directory mounted into `/var/opt/sourcegraph` of your instance. This mount contains the Postgres data directory inside of the container. - -For example, `${PATH}` is `~/.sourcegraph/data` in `-v ~/.sourcegraph/data:/var/opt/sourcegraph`. - -```sh -$ docker run --rm -it \ - -v ${PATH}/postgresql:/data/pgdata-12 \ - -u 70 \ - -p 5432:5432 \ - --entrypoint bash \ - sourcegraph/${PG_VERSION_TAG}:${SG_VERSION} \ - -c 'echo "host all all 0.0.0.0/0 trust" >> /data/pgdata-12/pg_hba.conf && postgres -c l listen_addresses="*" -D /data/pgdata-12' -``` - -The version of this Postgres container is dependent on the version of the instance prior to upgrade. - -| `${SG_VERSION}` | `${PG_VERSION_TAG}` | -| ------------------- | ---------------------- | -| `3.20.X` - `3.29.X` | `postgres-12.6` | -| `3.30.X` - `3.37.X` | `postgres-12.6-alpine` | -| `3.38.X` - `5.9.X` | `postgres-12-alpine` | -| `5.10.X` - `6.x` | `postgresql-16` | - -## Troubleshooting - -If you get stuck or need help, please reach out to [Sourcegraph support](https://help.sourcegraph.com/hc/en-us/requests/new). - -### Mac Computers with Apple silicon - -On Mac computers with Apple silicon, you’ll need to add an extra `--platform linux/amd64` argument to your Docker command for correctly running and installing Sourcegraph. - -### File system performance on Docker for Mac - -There is a [known issue](https://github.com/docker/for-mac/issues/77) in Docker for Mac that causes slower than expected file system performance on volume mounts, which impacts the performance of search and cloning. - -To achieve better performance, you can do any of the following: - -- For better clone performance, clone the repository on your host machine and then [add it to Sourcegraph Server](/admin/repo/add#add-repositories-already-cloned-to-disk). -- Try adding the `:delegated` suffix the data volume mount. [Learn more](https://github.com/docker/for-mac/issues/1592). - ```sh - --volume ~/.sourcegraph/data:/var/opt/sourcegraph:delegated - ``` - -### Testing Sourcegraph on Windows - -Sourcegraph can be **tested** on Windows 10 using roughly the same steps provided above, but data will not be retained after server restarts ([this is due to a limitation of Docker on Windows](https://github.com/docker/for-win/issues/39#issuecomment-371942845)). - -1. [Install Docker for Windows](https://docs.docker.com/docker-for-windows/install/) -2. Using a command prompt, follow the same [installation steps provided above](#install-sourcegraph-with-docker) but remove the `--volume` arguments. For example by pasting this: - -

-	
-		docker run --publish 7080:7080 --publish
-		127.0.0.1:3370:3370 --rm{' '}
-		sourcegraph/server:
-	
-
- -### Low resource environments - -To test Sourcegraph in a low resource environment you may want to disable some of the observability tools (Prometheus and Grafana). - -Add `-e DISABLE_OBSERVABILITY=true` to your docker run command. - -### Starting in Postgres restore mode - -In order to restore a Postgres backup, you need to start on an empty database and prevent all other Sourcegraph services from starting. -You can do this by adding `-e PGRESTORE=true` to your `docker run` command. This will start only the Postgres system and allow you to perform a restore. Once it is done, remove that parameter from your docker command. - -The database is only accessible from within the container. To perform a restore you will need to copy the required files to the container and then execute the restore commands from within the container using `docker exec`. - -You can find examples of this procedure for `docker-compose` in our [docker-compose migration docs](/self-hosted/deploy/docker-compose/migrate). - -### Special instructions for RHEL, Fedora, CentOS and others - -If you run Docker on an OS such as RHEL, Fedora, or CentOS with SELinux enabled, sVirt doesn't allow the Docker process to access `~/.sourcegraph/config` and `~/.sourcegraph/data`. In that case, you will see the following message: - -`Failed to setup nginx:failed to generate nginx configuration to /etc/sourcegraph: open /etc/sourcegraph/nginx.conf: permission denied`. - -To fix this, run: - -`mkdir -p ~/.sourcegraph/config ~/.sourcegraph/data && chcon -R -t svirt_sandbox_file_t ~/.sourcegraph/config ~/.sourcegraph/data` - -## Reference - -### Cloud installation guides - -Cloud specific Sourcegraph installation guides for AWS, Google Cloud and Digital Ocean. - -- [Install Sourcegraph with Docker on AWS](/self-hosted/deploy/docker-single-container/aws) -- [Install Sourcegraph with Docker on Google Cloud](/self-hosted/deploy/docker-single-container/google-cloud) -- [Install Sourcegraph with Docker on DigitalOcean](/self-hosted/deploy/docker-single-container/digitalocean) - -### Insiders build - -To test new development builds of Sourcegraph (triggered by commits to `main`), change the tag to `insiders` in the `docker run` command. - -> WARNING: `insiders` builds may be unstable, so back up Sourcegraph's data and config (usually `~/.sourcegraph`) beforehand. - -```sh -$ docker run --publish 7080:7080 --rm --volume ~/.sourcegraph/config:/etc/sourcegraph --volume ~/.sourcegraph/data:/var/opt/sourcegraph sourcegraph/server:insiders -``` - -To keep this up to date, run `docker pull sourcegraph/server:insiders` to pull in the latest image, and restart the container to access new changes. diff --git a/docs/self-hosted/deploy/index.mdx b/docs/self-hosted/deploy/index.mdx index d0c2d78b7..c2bcc9b2b 100644 --- a/docs/self-hosted/deploy/index.mdx +++ b/docs/self-hosted/deploy/index.mdx @@ -108,12 +108,6 @@ See [Sourcegraph Machine Images](/self-hosted/deploy/machine-images) for more in to maintain and manage your own infrastructure.
-### Single-container (removed in 7.0.0) - -The single-container (`sourcegraph/server`) deployment mode has been **removed in [Sourcegraph 7.0.0](https://sourcegraph.com/changelog/releases/7.0)**. Customers must [migrate to Docker Compose](/self-hosted/deploy/docker-compose/migrate) or [Kubernetes](/self-hosted/deploy/kubernetes/) before upgrading to 7.0.0. - -- [Docker Single Container](/self-hosted/deploy/docker-single-container/) - Install Sourcegraph using a single Docker container - ### ARM / ARM64 support Running Sourcegraph on ARM / ARM64 images is not supported for production deployments at this time. diff --git a/docs/self-hosted/how-to/dirty-database-pre-3-37.mdx b/docs/self-hosted/how-to/dirty-database-pre-3-37.mdx index 9e521e658..5774629d3 100644 --- a/docs/self-hosted/how-to/dirty-database-pre-3-37.mdx +++ b/docs/self-hosted/how-to/dirty-database-pre-3-37.mdx @@ -17,7 +17,7 @@ Resolving this error requires discovering which migration file failed to run, an - This document assumes that you are installing Sourcegraph or were attempting an upgrade when an error occurred. - **NOTE: If you encountered this error during an upgrade, ensure you followed the [proper step upgrade process documented here.](/self-hosted/updates) If you skipped a minor version during an upgrade, you will need to revert back to the last minor version your instance was on before following the steps in this document.** -The following procedure requires that you are able to execute commands from inside the database container. Learn more about shelling into [kubernetes](/self-hosted/deploy/kubernetes/operations#access-the-database), [docker-compose](/self-hosted/deploy/docker-compose/operations#access-the-database), and [Sourcegraph single-container](/self-hosted/deploy/docker-single-container/#access-the-database) instances at these links. +The following procedure requires that you are able to execute commands from inside the database container. Learn more about shelling into [kubernetes](/self-hosted/deploy/kubernetes/operations#access-the-database) and [docker-compose](/self-hosted/deploy/docker-compose/operations#access-the-database) instances at these links. ## TL;DR Steps to resolve diff --git a/docs/self-hosted/how-to/dirty-database.mdx b/docs/self-hosted/how-to/dirty-database.mdx index b5dfecf2f..b7d5b9194 100644 --- a/docs/self-hosted/how-to/dirty-database.mdx +++ b/docs/self-hosted/how-to/dirty-database.mdx @@ -25,7 +25,7 @@ The target schema is marked as dirty and no other migration operation is seen ru - This document assumes that you are installing Sourcegraph or were attempting an upgrade when an error occurred. - **NOTE: If you encountered this error during an upgrade, ensure you followed the [proper step upgrade process documented here.](/self-hosted/updates) If you skipped a minor version during an upgrade, you will need to revert back to the last minor version your instance was on before following the steps in this document.** -The following procedure requires that you are able to execute commands from inside the database container. Learn more about shelling into [kubernetes](/self-hosted/deploy/kubernetes/operations#access-the-database), [docker-compose](/self-hosted/deploy/docker-compose/#access-the-database), and [Sourcegraph single-container](/self-hosted/deploy/docker-single-container/#access-the-database) instances at these links. +The following procedure requires that you are able to execute commands from inside the database container. Learn more about shelling into [kubernetes](/self-hosted/deploy/kubernetes/operations#access-the-database) and [docker-compose](/self-hosted/deploy/docker-compose/#access-the-database) instances at these links. ## Steps to resolve diff --git a/docs/self-hosted/observability/logs.mdx b/docs/self-hosted/observability/logs.mdx index 63b64ff61..810075df5 100644 --- a/docs/self-hosted/observability/logs.mdx +++ b/docs/self-hosted/observability/logs.mdx @@ -16,8 +16,6 @@ A Sourcegraph service's log level is configured via the environment variable `SR Learn more about how to apply these environment variables in [docker-compose](/self-hosted/deploy/docker-compose/#set-environment-variables) deployments. -> **Note:** The single-container [server](/self-hosted/deploy/docker-single-container/) deployment mode has been removed in 7.0.0. Please [migrate to Docker Compose](/self-hosted/deploy/docker-compose/migrate). - ## Log format A Sourcegraph service's log output format is configured via the environment variable `SRC_LOG_FORMAT`. This design facilitates integration with external log aggregation systems and SIEM tools for centralized analysis, monitoring, and alerting. diff --git a/docs/self-hosted/observability/metrics.mdx b/docs/self-hosted/observability/metrics.mdx index 1d19e11b0..84889df0e 100644 --- a/docs/self-hosted/observability/metrics.mdx +++ b/docs/self-hosted/observability/metrics.mdx @@ -83,7 +83,6 @@ Grafana will be available http://localhost:3370/-/debug/grafana. If you are using the [Docker Compose deployment option](/self-hosted/deploy/), Grafana is available locally at http://localhost:3370/-/debug/grafana without any additional setup. -> **Note:** The [Docker Single Container](/self-hosted/deploy/docker-single-container/) deployment mode has been removed in 7.0.0. Please [migrate to Docker Compose](/self-hosted/deploy/docker-compose/migrate). If Sourcegraph is deployed to a remote server, then access via an SSH tunnel using a tool such as [sshuttle](https://github.com/sshuttle/sshuttle) is required to establish a secure connection to Grafana. To access the remote server using `sshuttle` from your local machine: @@ -200,8 +199,6 @@ kubectl port-forward svc/prometheus 9090:30090 If you are using the [Docker Compose deployment option](/self-hosted/deploy/), you will need to restart the Sourcegraph container with a flag `--publish 9090:9090` in the `docker run` command. -> **Note:** The [Docker Single Container](/self-hosted/deploy/docker-single-container/) deployment mode has been removed in 7.0.0. Please [migrate to Docker Compose](/self-hosted/deploy/docker-compose/migrate). - Prometheus will be available http://localhost:9090. ## Using a custom monitoring system diff --git a/docs/self-hosted/pprof.mdx b/docs/self-hosted/pprof.mdx index bb7e8fe6a..116329ff5 100644 --- a/docs/self-hosted/pprof.mdx +++ b/docs/self-hosted/pprof.mdx @@ -22,10 +22,6 @@ kubectl get pods kubectl port-forward sourcegraph-frontend-xxxx 6060:6060 ``` -### Single-container Sourcegraph - -See [expose debug port in single-container Sourcegraph](/self-hosted/deploy/docker-single-container/#expose-debug-port). - ## Generating profiling data Once the port is reachable, you can trigger a profile dump by sending an HTTP request: diff --git a/docs/self-hosted/updates/automatic.mdx b/docs/self-hosted/updates/automatic.mdx index 5afe24d18..5bf9d34c4 100644 --- a/docs/self-hosted/updates/automatic.mdx +++ b/docs/self-hosted/updates/automatic.mdx @@ -16,7 +16,7 @@ From **Sourcegraph 5.1 through 6.11.x**, multi-version upgrades could be perform 1. Determine if your instance is ready to Upgrade: 1. Check your Sourcegraph instances `Site admin > Updates` page. ([more info](/self-hosted/updates/#upgrade-readiness)) - 2. Consult upgrade notes for your deployment type accross the range of your upgrade. ([Kubernetes](https://sourcegraph.com/changelog/self-hosted/kubernetes), [Docker-compose](https://sourcegraph.com/changelog/self-hosted/docker-compose), [Server](https://sourcegraph.com/changelog/self-hosted/server)) + 2. Consult upgrade notes for your deployment type accross the range of your upgrade. ([Kubernetes](https://sourcegraph.com/changelog/self-hosted/kubernetes), [Docker-compose](https://sourcegraph.com/changelog/self-hosted/docker-compose)) 2. Merge the latest Sourcegraph release into your deployment manifests. 3. With upstream changes to your manifests merged, start the new instance. diff --git a/docs/self-hosted/updates/index.mdx b/docs/self-hosted/updates/index.mdx index 404660cf9..bfa12e695 100644 --- a/docs/self-hosted/updates/index.mdx +++ b/docs/self-hosted/updates/index.mdx @@ -127,7 +127,6 @@ If your instance has schema drift or unfinished oob migrations you may need to a - [Upgrade Notes](https://sourcegraph.com/changelog/self-hosted/kubernetes) - **Single-container Sourcegraph with Docker (removed in 7.0.0)** - The single-container deployment mode has been sunset. [Migrate to Docker Compose](/self-hosted/deploy/docker-compose/migrate) or [Kubernetes](/self-hosted/deploy/kubernetes/). - - [Upgrade Notes](https://sourcegraph.com/changelog/self-hosted/server) - [**Sourcegraph AWS AMI instances**](/self-hosted/deploy/machine-images/aws-ami#upgrade) *(deprecated — sunset in 7.0.0)* ## Other helpful links diff --git a/src/data/redirects.ts b/src/data/redirects.ts index abcb9a557..38f856d75 100644 --- a/src/data/redirects.ts +++ b/src/data/redirects.ts @@ -1304,22 +1304,22 @@ const redirectsData = [ }, { source: '/admin/install/docker/aws', - destination: '/admin/deploy/docker-single-container/aws', + destination: '/self-hosted/deploy', permanent: true }, { source: '/admin/install/docker/digitalocean', - destination: '/admin/deploy/docker-single-container/digitalocean', + destination: '/self-hosted/deploy', permanent: true }, { source: '/admin/install/docker/google_cloud', - destination: '/admin/deploy/docker-single-container/google_cloud', + destination: '/self-hosted/deploy', permanent: true }, { source: '/admin/install/docker', - destination: '/admin/deploy/docker-single-container', + destination: '/self-hosted/deploy', permanent: true }, { @@ -1349,7 +1349,7 @@ const redirectsData = [ }, { source: '/admin/deploy/docker', - destination: '/admin/deploy/docker-single-container', + destination: '/self-hosted/deploy', permanent: true }, { @@ -3866,22 +3866,22 @@ const redirectsData = [ }, { source: '/admin/install/docker/aws', - destination: '/admin/deploy/docker-single-container/aws', + destination: '/self-hosted/deploy', permanent: true }, { source: '/admin/install/docker/digitalocean', - destination: '/admin/deploy/docker-single-container/digitalocean', + destination: '/self-hosted/deploy', permanent: true }, { source: '/admin/install/docker/google_cloud', - destination: '/admin/deploy/docker-single-container/google_cloud', + destination: '/self-hosted/deploy', permanent: true }, { source: '/admin/install/docker', - destination: '/admin/deploy/docker-single-container', + destination: '/self-hosted/deploy', permanent: true }, { @@ -3911,7 +3911,7 @@ const redirectsData = [ }, { source: '/admin/deploy/docker', - destination: '/admin/deploy/docker-single-container', + destination: '/self-hosted/deploy', permanent: true }, { @@ -5901,22 +5901,22 @@ const redirectsData = [ }, { source: '/admin/deploy/docker-single-container/aws', - destination: '/self-hosted/deploy/docker-single-container/aws', + destination: '/self-hosted/deploy', permanent: true }, { source: '/admin/deploy/docker-single-container/digitalocean', - destination: '/self-hosted/deploy/docker-single-container/digitalocean', + destination: '/self-hosted/deploy', permanent: true }, { source: '/admin/deploy/docker-single-container/google_cloud', - destination: '/self-hosted/deploy/docker-single-container/google_cloud', + destination: '/self-hosted/deploy', permanent: true }, { source: '/admin/deploy/docker-single-container', - destination: '/self-hosted/deploy/docker-single-container', + destination: '/self-hosted/deploy', permanent: true }, { @@ -6399,7 +6399,7 @@ const redirectsData = [ }, { source: '/admin/updates/server', - destination: 'https://sourcegraph.com/changelog/self-hosted/server', + destination: '/self-hosted/deploy', permanent: true }, { @@ -6954,7 +6954,7 @@ const redirectsData = [ }, { source: '/self-hosted/deploy/docker-single-container/google_cloud', - destination: '/self-hosted/deploy/docker-single-container/google-cloud', + destination: '/self-hosted/deploy', permanent: true }, { @@ -7160,7 +7160,7 @@ const redirectsData = [ }, { source: '/self-hosted/updates/server', - destination: 'https://sourcegraph.com/changelog/self-hosted/server', + destination: '/self-hosted/deploy', permanent: true }, // code ownership redirects From 0d0f8687ceee1714acb7031930ff0c1215a7e660 Mon Sep 17 00:00:00 2001 From: Warren Gifford Date: Wed, 8 Jul 2026 10:28:43 -0700 Subject: [PATCH 134/217] terraform module docs cleanup (#1809) closes PLAT-740 Connected with https://github.com/sourcegraph/terraform-aws-executors/pull/208 This PR makes minor connections to the terraform module documentation. It also splits the documents into two separate pages rather than combining the aws and gcp docs Additional deployment validation procedure was added for the aws aspects of the doc, additionally they were validated alongside the deployment and testing of the PR that upgrades the aws provider in the terraform module. A more comprehensive refactor of all the executors documentation will come later ### Testing This was tested with `npm run dev` locally --- .../deploy-executors-terraform-aws.mdx | 346 ++++++++++++++ .../deploy-executors-terraform-gcp.mdx | 366 ++++++++++++++ .../executors/deploy-executors-terraform.mdx | 448 +----------------- .../executors/deploy-executors.mdx | 14 +- docs/self-hosted/index.mdx | 2 +- 5 files changed, 728 insertions(+), 448 deletions(-) create mode 100644 docs/self-hosted/executors/deploy-executors-terraform-aws.mdx create mode 100644 docs/self-hosted/executors/deploy-executors-terraform-gcp.mdx diff --git a/docs/self-hosted/executors/deploy-executors-terraform-aws.mdx b/docs/self-hosted/executors/deploy-executors-terraform-aws.mdx new file mode 100644 index 000000000..eeb50d724 --- /dev/null +++ b/docs/self-hosted/executors/deploy-executors-terraform-aws.mdx @@ -0,0 +1,346 @@ +# Deploying Sourcegraph executors using Terraform on AWS + +A [Terraform module](https://github.com/sourcegraph/terraform-aws-executors) is provided to +provision machines running executors on AWS. + +See also: [Deploying on Google Cloud](/self-hosted/executors/deploy-executors-terraform-gcp) + +## Basic Definition + +The following is the minimum required definition to deploy an executor on AWS. + +```terraform +module "executors" { + source = "sourcegraph/executors/aws" + + # Find the latest version matching your Sourcegraph version here: + # https://github.com/sourcegraph/terraform-aws-executors/tags + version = "" + + availability_zone = "" + + executor_sourcegraph_external_url = "" + executor_sourcegraph_executor_proxy_password = "" + + # Either: + executor_queue_name = "" + # Or: + executor_queue_names = ["codeintel", "batches"] + + executor_instance_tag = "" + executor_metrics_environment_label = "
- ); }; From 937d21e209df21729b62b328c7b6bf1bc259130d Mon Sep 17 00:00:00 2001 From: Warren Gifford Date: Wed, 8 Jul 2026 18:14:33 -0700 Subject: [PATCH 136/217] chore/executors: explicit upgrade procedures for dind and k8s-native executors + QA (#1811) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit closes PLAT-793 This PR adds an upgrade procedure section to both the k8s native and dind deployment types I dogfooded the procedure deploying executors locally via kind and then connecting them to the clouddev-qa test instance. Then upgrading from 7.4.0 to 7.5.0 Screenshot 2026-07-08 at 5 21 00 PM Tested the selectors as well Screenshot 2026-07-08 at 5 33 10 PM --- .../executors/deploy-executors-dind.mdx | 41 +++++++++++++++++++ .../executors/deploy-executors-kubernetes.mdx | 37 +++++++++++++++++ 2 files changed, 78 insertions(+) diff --git a/docs/self-hosted/executors/deploy-executors-dind.mdx b/docs/self-hosted/executors/deploy-executors-dind.mdx index fcfc975a5..5e6b3dab8 100644 --- a/docs/self-hosted/executors/deploy-executors-dind.mdx +++ b/docs/self-hosted/executors/deploy-executors-dind.mdx @@ -57,6 +57,47 @@ To specifically deploy Executors, ``` 3. Confirm executors are working by checking the _Executors_ page under **Site admin > Executors > Instances**. +#### Deployment via Kustomize + +If you are using Kustomize instead of Helm, apply the `executors/dind` [component](https://github.com/sourcegraph/deploy-sourcegraph-k8s/tree/main/components/executors/dind) from the `deploy-sourcegraph-k8s` repository. See the [Kustomize configuration docs](/self-hosted/deploy/kubernetes/configure#overview) for details. + +## Upgrading executors + +Upgrading Docker-in-Docker executors follows the same pattern as the initial deployment. Check the [changelog](https://sourcegraph.com/changelog) for any executor-related breaking changes or new features. + +### Helm + +1. Update your Helm repo to fetch the latest chart versions: + + ```bash + helm repo update sourcegraph + ``` + +2. Run `helm upgrade` with the target Sourcegraph version: + + ```bash + helm upgrade --install --values ./override.yaml --version sg-executor sourcegraph/sourcegraph-executor-dind + ``` + +3. Verify the executor pod restarts with the new version: + + ```bash + kubectl get pods -l app.kubernetes.io/component=executor + ``` + +4. Confirm the executor is online and reporting the expected version under **Site admin > Executors > Instances**. + +### Kustomize + +1. Update the `deploy-sourcegraph-k8s` repository to the tag matching your target Sourcegraph version. +2. Re-apply the Kustomize overlay: + + ```bash + kubectl apply --prune -l deploy=sourcegraph -f + ``` + +3. Confirm the executor is online under **Site admin > Executors > Instances**. + ## Security considerations Docker-in-docker executors require the Docker sidecar to run as a [privileged](https://kubernetes.io/docs/tasks/configure-pod-container/security-context/) container. `privileged: true` understandably raises concerns, so it's worth understanding the threat model before evaluating it — and seeing why, with the right deployment practices, it is acceptable for the large majority of self-hosted Sourcegraph instances. diff --git a/docs/self-hosted/executors/deploy-executors-kubernetes.mdx b/docs/self-hosted/executors/deploy-executors-kubernetes.mdx index 51e3bdaa4..1ac0720b4 100644 --- a/docs/self-hosted/executors/deploy-executors-kubernetes.mdx +++ b/docs/self-hosted/executors/deploy-executors-kubernetes.mdx @@ -88,6 +88,43 @@ Native Kubernetes Executors can be deployed via either the `sourcegraph-executor 2. For more details on how to configure the `executors/k8s` component for your Kustomize deployment, see the [Kustomize configuration docs](/self-hosted/deploy/kubernetes/configure#overview) 4. Once all the native Kubernetes Executor resources have been deployed to your cluster, confirm that the Executors are online by checking the _Executors_ page under **Site admin > Executors > Instances** +## Upgrading executors + +Upgrading native Kubernetes executors follows the same pattern as the initial deployment. Check the [changelog](https://sourcegraph.com/changelog) for any executor-related breaking changes or new features. + +### Helm + +1. Update your Helm repo to fetch the latest chart versions: + + ```bash + helm repo update sourcegraph + ``` + +2. Run `helm upgrade` with the target Sourcegraph version: + + ```bash + helm upgrade --install --values ./override.yaml --version sg-executor sourcegraph/sourcegraph-executor-k8s + ``` + +3. Verify the executor pod restarts with the new version: + + ```bash + kubectl get pods -l app.kubernetes.io/component=executor + ``` + +4. Confirm the executor is online and reporting the expected version under **Site admin > Executors > Instances**. + +### Kustomize + +1. Update the `deploy-sourcegraph-k8s` repository to the tag matching your target Sourcegraph version. +2. Re-apply the Kustomize overlay: + + ```bash + kubectl apply --prune -l deploy=sourcegraph -f + ``` + +3. Confirm the executor is online under **Site admin > Executors > Instances**. + ## Additional Notes ### Firecracker From 96c7016afbf5aa1ce5ebdbdf58ed8fd719992226 Mon Sep 17 00:00:00 2001 From: Warren Gifford Date: Fri, 10 Jul 2026 10:03:17 -0700 Subject: [PATCH 137/217] chore/executors: docker-compose executors upgrade procedure (#1812) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit closes PLAT-795 Add upgrade procedure for docker-compose deployment type bringing it into parity with the other executors deployments and docs. ### Testing Deployed a 7.5.0 sourcegraph docker-compose instance locally. Then started an executors docker-compose deployment on `7.4.0` verified it connects, then updated it to `7.5.0` Screenshot 2026-07-09 at 3 25 21 PM Screenshot 2026-07-09 at 3 32 04 PM --- .../executors/deploy-executors-docker.mdx | 43 +++++++++++++++++++ 1 file changed, 43 insertions(+) diff --git a/docs/self-hosted/executors/deploy-executors-docker.mdx b/docs/self-hosted/executors/deploy-executors-docker.mdx index 9aae38d86..2d8526822 100644 --- a/docs/self-hosted/executors/deploy-executors-docker.mdx +++ b/docs/self-hosted/executors/deploy-executors-docker.mdx @@ -21,6 +21,49 @@ Privileged containers are required to run executors in docker-compose. This is b - Edit the `deploy-sourcegraph-docker/docker-compose/executors/executor.docker-compose.yaml` and update the [environment variables](/self-hosted/executors/executors-config) - Follow the instructions in the `README` for more specific deployment instructions. +## Upgrading executors + +Upgrading Docker Compose executors requires updating the executor image tag in the compose file and recreating the container. Check the [changelog](https://sourcegraph.com/changelog/self-hosted/docker-compose) for any executor-related breaking changes or new features. + +1. Navigate to the `deploy-sourcegraph-docker` repository and pull the latest changes for the target version: + + ```bash + cd deploy-sourcegraph-docker + git fetch + git checkout v + ``` + + If you are using a custom compose file rather than the one from the repository, update the `image` field for the `executor` service to the target version. For example, to upgrade to version 7.5.0: + + ```yaml + services: + executor: + image: 'index.docker.io/sourcegraph/executor:7.5.0' + ``` + +2. Recreate the executor container with the updated image: + + ```bash + cd docker-compose + docker compose -f docker-compose.yaml -f executors/executor.docker-compose.yaml up -d executor + ``` + + If you are running executors on a standalone machine: + + ```bash + docker compose -f executor.docker-compose.yaml up -d + ``` + + Docker Compose will pull the new image and recreate the executor container. The executor will briefly disconnect during the restart. + +3. Verify the new container is running with the expected image: + + ```bash + docker ps --filter name=executor --format 'table {{.Names}}\t{{.Image}}\t{{.Status}}' + ``` + +4. Confirm the executor is online and reporting the expected version under **Site admin > Executors > Instances**. + ## Note Executors deployed via docker-compose do not use [Firecracker](/admin/executors/#how-it-works), meaning they require [privileged access](https://docs.docker.com/engine/reference/run/#runtime-privilege-and-linux-capabilities) to the docker daemon running on the host. From bb374211313db9dca19c58a3d3ee5664549addf8 Mon Sep 17 00:00:00 2001 From: Warren Gifford Date: Fri, 10 Jul 2026 13:29:03 -0700 Subject: [PATCH 138/217] document gotchas from testing (#1813) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit closes PLAT-796 This PR just adds some helpful notes around the general upgrade process I ran into while dogfooding the install and upgrade process. ### Testing Testing was done on AWS by installing a `7.4.0` instance of executors using the install docs from https://sourcegraph.com/docs/self-hosted/executors/deploy-executors-binary and connecting the instance to `clouddev-qa` Then following the upgrade process as documented Screenshot 2026-07-10 at 12 25
08 PM Screenshot 2026-07-10 at 12 25
31 PM _Note this test was the binary without installing firecracker_ --- .../executors/deploy-executors-binary.mdx | 54 +++++++++++++++---- 1 file changed, 44 insertions(+), 10 deletions(-) diff --git a/docs/self-hosted/executors/deploy-executors-binary.mdx b/docs/self-hosted/executors/deploy-executors-binary.mdx index 80f817368..d7be193d4 100644 --- a/docs/self-hosted/executors/deploy-executors-binary.mdx +++ b/docs/self-hosted/executors/deploy-executors-binary.mdx @@ -157,36 +157,70 @@ If you use the systemd service, simply run `systemctl start executor`, otherwise Upgrading executors is relatively uninvolved. Simply follow the instructions below. Also, check the [changelog](https://sourcegraph.com/changelog) for any Executors related breaking changes or new features that you might want to configure. -### **Step 1:** First, grab the executor binary for the new target Sourcegraph version. +### **Step 1:** Stop the running executor + +If you are running the executor as a systemd service, stop it before replacing the binary: + +```bash +systemctl stop executor +``` + +If you are running `executor run` directly, stop the process (e.g. `Ctrl+C` or `kill`). + +### **Step 2:** Download the new executor binary > NOTE: Keep in mind that only minor version bumps of one are guaranteed to be disruption-free. +The version must include the `v` prefix (e.g. `v7.5.0`). If the version string is incorrect, the download will silently fail due to the `-f` flag. + ```bash +# Plug in the version of your Sourcegraph instance, e.g. v7.5.0. +export SOURCEGRAPH_VERSION=v curl -sfLo executor https://storage.googleapis.com/sourcegraph-artifacts/executor/${SOURCEGRAPH_VERSION}/linux-amd64/executor chmod +x executor # Assuming /usr/local/bin is in $PATH. mv executor /usr/local/bin ``` -### **Step 2:** Make sure all ambient dependencies and configurations are up-to-date: +You can verify the download succeeded by checking the file size (the binary is approximately 60–70 MB): -Ensure [env vars](#step-2-setup-environment-variables) has been configured. +```bash +ls -lh /usr/local/bin/executor +``` + +### **Step 3:** Update dependencies + +Ensure [env vars](#step-2-setup-environment-variables) are configured, then update ambient dependencies. + +If you are using Firecracker (requires KVM): ```bash executor install all -# OR run the following, to see how to install/configure components separately. -executor install --help ``` -### **Step 3:** Validate your machine is ready to receive workloads +If you are **not** using Firecracker (Docker-only mode), install only `src-cli`: -All set up! Before letting the executor start receiving workloads from your Sourcegraph instance, you might want to verify your setup. Run the following command: +```bash +executor install src-cli +``` + +You can run `executor install --help` to see all available install targets. + +### **Step 4:** Validate your machine is ready to receive workloads + +Before restarting, verify your setup: ```bash executor validate ``` -### **Step 4:** Restart your running executor / spin up a new machine +### **Step 5:** Restart the executor + +If you use the systemd service: + +```bash +systemctl start executor +systemctl status executor +``` -Depending on how you set up executors, you might want to restart the systemd service, or restart/replace the machine running them, so the new binary is running. -If you use the systemd service, simply run `systemctl start executor`, otherwise run `executor run`. Your executor should start listening for jobs now and be visible under the `Executors > Instances` section of the Site Configuration. +Otherwise, run `executor run` directly. Your executor should start listening for jobs and be visible under **Site admin > Executors > Instances**. From b99fe83627642287b2b78959153e44599d4eb3e0 Mon Sep 17 00:00:00 2001 From: Enrique Gonzalez Date: Fri, 10 Jul 2026 16:16:35 -0700 Subject: [PATCH 139/217] Update docs latest version to 7.5 (#1814) ## Summary - Set DOCS_LATEST_VERSION to 7.5 - Add 7.4 to the version selector - Update the legacy versions page ## Test plan - Not run (config/navigation content change only) --- docs.config.js | 2 +- docs/legacy.mdx | 1 + src/data/versions.ts | 4 ++++ 3 files changed, 6 insertions(+), 1 deletion(-) diff --git a/docs.config.js b/docs.config.js index 6ae0c5425..5e11535c4 100644 --- a/docs.config.js +++ b/docs.config.js @@ -1,5 +1,5 @@ const config = { - DOCS_LATEST_VERSION: '7.4' + DOCS_LATEST_VERSION: '7.5' }; module.exports = config; diff --git a/docs/legacy.mdx b/docs/legacy.mdx index 3d522ee8f..91497e11e 100644 --- a/docs/legacy.mdx +++ b/docs/legacy.mdx @@ -6,6 +6,7 @@ +- [7.4](https://7.4.sourcegraph.com) - [7.3](https://7.3.sourcegraph.com) - [7.2](https://7.2.sourcegraph.com) - [7.1](https://7.1.sourcegraph.com) diff --git a/src/data/versions.ts b/src/data/versions.ts index 89793234e..1cf4759c2 100644 --- a/src/data/versions.ts +++ b/src/data/versions.ts @@ -13,6 +13,10 @@ export const versions: VersionI[] = [ label: 'latest', url: '/docs' }, + { + name: 'v7.4', + url: 'https://7.4.sourcegraph.com' + }, { name: 'v7.3', url: 'https://7.3.sourcegraph.com' From 616ca04c78cf2b2c4926caa8c76a1b7dc748641a Mon Sep 17 00:00:00 2001 From: federubinstein Date: Mon, 13 Jul 2026 21:13:45 +0200 Subject: [PATCH 140/217] chore/docs: link Sourcegraph Model Provider (#1810) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Linked “Sourcegraph Model Provider” to /model-provider in Agentic Batch Changes docs, as requested here: https://github.com/sourcegraph/docs/pull/1808#discussion_r3537819174 --- docs/agentic-batch-changes/index.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/agentic-batch-changes/index.mdx b/docs/agentic-batch-changes/index.mdx index 31d04ae9e..f47cedf4b 100644 --- a/docs/agentic-batch-changes/index.mdx +++ b/docs/agentic-batch-changes/index.mdx @@ -72,7 +72,7 @@ The coding agent step is a new native step type for Agentic Batch Changes that a We currently support [Claude Code](https://claude.com/product/claude-code) and [Codex](https://openai.com/codex) as native coding agent steps. -By default, coding agent LLM traffic is routed through the Sourcegraph Model Provider. Site administrators can configure their own API keys to route traffic directly to Anthropic or OpenAI in **Administration → Batch Changes → Agents**. An optional `endpoint` field can be set for each agent to override the default provider URL. +By default, coding agent LLM traffic is routed through the [Sourcegraph Model Provider](/model-provider). Site administrators can configure their own API keys to route traffic directly to Anthropic or OpenAI in **Administration → Batch Changes → Agents**. An optional `endpoint` field can be set for each agent to override the default provider URL. Note that Agentic Batch Changes does not use coding agent steps for every task. For deterministic changes, the agent will opt to write a script - or even an entire program - to efficiently apply some, or all, of the target changes. From 10710d14fe58f02a1b2efcbff781f700a28c9d0c Mon Sep 17 00:00:00 2001 From: Keegan Carruthers-Smith Date: Tue, 14 Jul 2026 22:03:05 +0200 Subject: [PATCH 141/217] mcp: make static OAuth client setup discoverable (#1815) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The static OAuth client instructions currently live inside a collapsed manual setup section on the already long MCP page, making the supported DCR opt-out path difficult to discover. This gives MCP authentication its own concise page and links it from the navigation, MCP overview, and OAuth Apps documentation. The new page distinguishes DCR, pre-registered/static OAuth clients, and access tokens. It documents the safe migration order—create and test a public, `mcp`-scoped client before disabling DCR—while retaining the `mcp-remote` fallback and clarifying the callback URI and effect on existing DCR clients and tokens. --- docs/admin/oauth-apps.mdx | 11 ++-- docs/api/mcp/authentication.mdx | 95 +++++++++++++++++++++++++++++++++ docs/api/mcp/index.mdx | 85 ++--------------------------- src/data/navigation.ts | 4 ++ 4 files changed, 108 insertions(+), 87 deletions(-) create mode 100644 docs/api/mcp/authentication.mdx diff --git a/docs/admin/oauth-apps.mdx b/docs/admin/oauth-apps.mdx index dbcc8a4c0..2c97f4e10 100644 --- a/docs/admin/oauth-apps.mdx +++ b/docs/admin/oauth-apps.mdx @@ -402,9 +402,10 @@ Applications created through Dynamic Client Registration are limited to the `user:all`, `openid`, or `offline_access`, create an OAuth app manually. - To disable self-registration, set - `auth.idpDynamicClientRegistrationEnabled` to `false`. If `mcp.enabled` is - `false`, Dynamic Client Registration is also unavailable. See - [MCP authentication and access control](/api/mcp#availability-and-access-control) - for the MCP-specific behavior. + To disable self-registration, set `auth.idpDynamicClientRegistrationEnabled` + to `false`. If `mcp.enabled` is `false`, Dynamic Client Registration is also + unavailable. Configure and test pre-registered OAuth clients before + disabling DCR to avoid interrupting MCP users. See [MCP + Authentication](/api/mcp/authentication) for setup and migration + instructions. diff --git a/docs/api/mcp/authentication.mdx b/docs/api/mcp/authentication.mdx new file mode 100644 index 000000000..e7238b06e --- /dev/null +++ b/docs/api/mcp/authentication.mdx @@ -0,0 +1,95 @@ +# MCP Authentication + +

+ Authenticate MCP clients with OAuth or a Sourcegraph access token. +

+ + + Supported on [Enterprise](/pricing/plans/enterprise) plans. + + +The Sourcegraph MCP server supports OAuth 2.0 and access token authentication. + +| Method | When to use | +| -------------------------------------- | --------------------------------------------------------------------------------------------- | +| OAuth with Dynamic Client Registration | Your MCP client supports OAuth and your organization allows clients to register automatically | +| OAuth with a pre-registered client | Your organization requires administrators to approve OAuth clients in advance | +| Access token | Your MCP client does not support OAuth | + +## OAuth with Dynamic Client Registration + +Sourcegraph implements Dynamic Client Registration (DCR) as defined by [RFC 7591](https://datatracker.ietf.org/doc/html/rfc7591). Compatible MCP clients can register automatically and authenticate through a browser without a pre-configured client ID. + +DCR is enabled by default. Applications created through DCR are restricted to the `mcp` scope, which limits access to MCP endpoints. + +## OAuth with a Pre-registered Client + +Organizations that require administrators to approve OAuth clients can use pre-registered OAuth clients, also called static OAuth clients. This method also works with MCP clients that do not support DCR. + +Configure and test pre-registered clients before disabling DCR to avoid interrupting users. + +### Create an OAuth Client + +1. In Sourcegraph, navigate to **Site admin > OAuth clients**. +2. Click **Create OAuth client** and configure it with: + - A descriptive name and optional description. + - The redirect URI required by your MCP client. For `mcp-remote`, use `http://localhost:3334/oauth/callback`. + - **Public** as the client type. + - The `mcp` scope. +3. Create the client and copy its client ID. + +See [OAuth Apps](/admin/oauth-apps#creating-an-oauth-app) for more information about creating and managing OAuth clients. + +### Configure the MCP Client + +If your MCP client supports a pre-configured OAuth client ID, add the client ID using the client's OAuth settings. + +If it does not, use [`mcp-remote`](https://www.npmjs.com/package/mcp-remote) as a local proxy and add the following configuration to your client's MCP server configuration: + +```json +{ + "sourcegraph": { + "type": "stdio", + "command": "npx", + "args": [ + "mcp-remote", + "https://your-sourcegraph-instance.com/.api/mcp", + "3334", + "--static-oauth-client-info", + "{\"client_id\":\"YOUR_CLIENT_ID\"}", + "--static-oauth-client-metadata", + "{\"scope\":\"mcp\"}" + ] + } +} +``` + +Replace `your-sourcegraph-instance.com` with your Sourcegraph instance URL and `YOUR_CLIENT_ID` with the client ID you copied. Start the MCP client and complete authorization in your browser. + +## Disable Dynamic Client Registration + +After configuring and testing pre-registered clients, disable DCR while leaving MCP available by setting: + +```json +{ + "auth.idpDynamicClientRegistrationEnabled": false +} +``` + +When DCR is disabled: + +- Requests to `/.auth/idp/oauth/register` return `404 not found`. +- Existing DCR-registered clients and their tokens stop working. +- Pre-registered OAuth clients and access tokens continue to work. + +If `mcp.enabled` is `false`, DCR is also unavailable and the MCP endpoints are disabled. + +## Access Tokens + +For clients that do not support OAuth, include a [Sourcegraph access token](/cli/how-tos/creating-an-access-token) in the `Authorization` header: + +``` +Authorization: token YOUR_ACCESS_TOKEN +``` + +Access tokens can use the `mcp` scope to restrict access to MCP endpoints only. diff --git a/docs/api/mcp/index.mdx b/docs/api/mcp/index.mdx index 463cc67a9..cfeefe57f 100644 --- a/docs/api/mcp/index.mdx +++ b/docs/api/mcp/index.mdx @@ -51,80 +51,16 @@ https://your-sourcegraph-instance.com/.api/mcp ## Authentication -The MCP server supports OAuth 2.0 and access token authentication. +The MCP server supports OAuth 2.0 through Dynamic Client Registration or pre-registered OAuth clients, as well as Sourcegraph access tokens. Organizations that require administrators to approve OAuth clients can configure static OAuth clients and disable Dynamic Client Registration. -### OAuth 2.0 - -Sourcegraph implements Dynamic Client Registration ([RFC 7591](https://datatracker.ietf.org/doc/html/rfc7591)), so compatible clients can authenticate automatically without pre-configured client IDs. DCR-registered applications are restricted to the `mcp` scope, which limits access to MCP endpoints only. - - - -If your agent doesn't support Dynamic Client Registration, you can manually create an OAuth application: - -1. Create an OAuth application in your Sourcegraph instance following the instructions [here](/admin/oauth-apps#creating-an-oauth-app). (Note: you can use the `mcp` scope for MCP-only access, or `user:all` for full access) -2. Use `mcp-remote` as a fallback with the following configuration: - -```json -{ - "sourcegraph": { - "type": "stdio", - "command": "npx", - "args": [ - "mcp-remote", - "https://your-sourcegraph-instance.com/.api/mcp", - "3334", - "--static-oauth-client-info", - "{\"client_id\":\"\"}", - "--static-oauth-client-metadata", - "{\"scope\":\"mcp\"}" - ] - } -} -``` - - -
    -
  • Replace `your-sourcegraph-instance.com` with your Sourcegraph instance URL and `` with the ID of the client you registered.
  • -
  • When using the `mcp-remote` fallback, ensure the OAuth client has one of its redirect URIs set to `http://localhost:3334/oauth/callback`.
  • -
-
- -
- - - -To disable DCR while leaving MCP available, set the following site configuration: - -```json -{ - "auth.idpDynamicClientRegistrationEnabled": false -} -``` - -If `mcp.enabled` is `false`, DCR is also unavailable and the registration -endpoint returns `404`. - - - -### Access Tokens - -Alternatively, include a [Sourcegraph access token](/cli/how-tos/creating-an-access-token) in the Authorization header: - -``` -Authorization: token YOUR_ACCESS_TOKEN -``` - - - Access tokens can use the `mcp` scope to restrict access to MCP endpoints - only. - +See [MCP Authentication](/api/mcp/authentication) to choose and configure an authentication method. ## Availability and Access Control Admins can control MCP at three levels: - Site configuration: `mcp.enabled` enables or disables the MCP HTTP endpoints. -- OAuth Dynamic Client Registration: `auth.idpDynamicClientRegistrationEnabled` controls whether OAuth clients can self-register; it is effectively disabled whenever `mcp.enabled` is `false`. +- OAuth Dynamic Client Registration: `auth.idpDynamicClientRegistrationEnabled` controls whether OAuth clients can self-register. See [MCP Authentication](/api/mcp/authentication#disable-dynamic-client-registration) to disable DCR and configure pre-registered clients. - RBAC: users must have the `MCP#ACCESS` permission to use MCP. ### Site-Level Enablement @@ -140,21 +76,6 @@ Use the `mcp.enabled` site configuration to turn the MCP server on or off for th `mcp.enabled` defaults to `true`. When set to `false`, requests to `/.api/mcp` and its subpaths return `404 no route`. -### OAuth Dynamic Client Registration - -Use `auth.idpDynamicClientRegistrationEnabled` to control whether compatible -OAuth clients can self-register against the Sourcegraph identity provider: - -```json -{ - "auth.idpDynamicClientRegistrationEnabled": true -} -``` - -`auth.idpDynamicClientRegistrationEnabled` defaults to `true`, but it is -treated as `false` whenever `mcp.enabled` is `false`. When DCR is unavailable, -requests to `/.auth/idp/oauth/register` return `404 not found`. - ### Restricting MCP with RBAC When MCP is enabled, Sourcegraph also checks the `MCP#ACCESS` permission before diff --git a/src/data/navigation.ts b/src/data/navigation.ts index 5f9486c96..2744ec424 100644 --- a/src/data/navigation.ts +++ b/src/data/navigation.ts @@ -498,6 +498,10 @@ export const navigation: NavigationItem[] = [ title: 'Sourcegraph MCP server', href: '/api/mcp', sections: [ + { + title: 'Authentication', + href: '/api/mcp/authentication' + }, { title: 'Client integrations', href: '/api/mcp/client-integrations' From 41ed29bc5b4f16fa80e97771e7cd8cdcb5614a93 Mon Sep 17 00:00:00 2001 From: Michael Lin Date: Tue, 14 Jul 2026 15:59:06 -0700 Subject: [PATCH 142/217] docs/executors: AWS nested virtualization on non-metal instances (#1816) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit AWS now supports nested virtualization (KVM) on virtualized EC2 instances, so a bare-metal `.metal` instance is no longer required to run Firecracker-isolated executors. This updates the executor binary deploy prerequisites to reflect that and lists the supported Intel-based (amd64) instance families. The AWS and GCP KVM guidance is also split into separate sub-bullets for readability. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-authored-by: Claude Opus 4.8 (1M context) --- docs/self-hosted/executors/deploy-executors-binary.mdx | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/docs/self-hosted/executors/deploy-executors-binary.mdx b/docs/self-hosted/executors/deploy-executors-binary.mdx index d7be193d4..934bdb49b 100644 --- a/docs/self-hosted/executors/deploy-executors-binary.mdx +++ b/docs/self-hosted/executors/deploy-executors-binary.mdx @@ -17,7 +17,9 @@ In order to run executors on your machine, a few things need to be set up correc If [Firecracker isolation will be used](/self-hosted/executors/firecracker): _(recommended)_ -- The host has to support KVM (for AWS that means a [metal instance](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-types.html), on GCP that means [enabling nested virtualization](https://cloud.google.com/compute/docs/instances/nested-virtualization/enabling)) +- The host has to support KVM: + - On AWS, this can be a [metal instance](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-types.html) or a non-bare-metal instance that supports [nested virtualization](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/amazon-ec2-nested-virtualization.html). Nested virtualization is supported on the following Intel-based (amd64) families: `C8i`, `M8i`, `R8i`, `C8id`, `M8id`, `R8id`, `C8i-flex`, `M8i-flex`, `R8i-flex`, `X8i`, `C7i`, `M7i`, `R7i`, `C7i-flex`, `M7i-flex`, and `I7i`. + - On GCP, this means [enabling nested virtualization](https://cloud.google.com/compute/docs/instances/nested-virtualization/enabling). - The following additional dependencies need to be installed: - `dmsetup` - `losetup` From 9fd6fca9e4e2ab7a441ac5fd88dd6dd3edce4eb5 Mon Sep 17 00:00:00 2001 From: Warren Gifford Date: Fri, 17 Jul 2026 11:33:28 -0700 Subject: [PATCH 143/217] Remove AMI and Kustomize from deployment overview (#1819) ## Summary - remove Kubernetes Kustomize from the recommended deployment types - remove the Kustomize quick link from the Kubernetes section - remove the Machine Images section from the deployment overview --- docs/self-hosted/deploy/index.mdx | 38 ------------------------------- 1 file changed, 38 deletions(-) diff --git a/docs/self-hosted/deploy/index.mdx b/docs/self-hosted/deploy/index.mdx index c2bcc9b2b..f9a8b5575 100644 --- a/docs/self-hosted/deploy/index.mdx +++ b/docs/self-hosted/deploy/index.mdx @@ -16,8 +16,6 @@ Sourcegraph's recommended deployment methods are, in order: 1. [Sourcegraph Cloud](#sourcegraph-cloud) - This provides a fully managed solution where Sourcegraph handles all of the maintenance, monitoring, and upgrading tasks to give you an optimal Sourcegraph experience while immediately getting the latest features into your users' hands. This solution does require your code hosts to be connected to the Sourcegraph managed environment. 2. [Kubernetes Helm](#kubernetes) - Sourcegraph's Kubernetes deployment provides the most robust, scalable, and vetted self-hosted solution. This solution is ideal across many self-hosted customers capable of deploying a multi-node instance, and can be supported by all mainstream managed Kubernetes platforms. 3. [Docker Compose](#docker-compose) - Docker Compose provides the preferred single-node deployment solution for Sourcegraph. It can be a good option when the complexities and flexibility provided by Kubernetes Helm are not needed. -4. [Kubernetes Kustomize](#kubernetes) - Kustomize is planned for deprecation and will be sunset in a future release. Helm is Sourcegraph's preferred approach for Kubernetes deployments. -5. [Machine Images](#machine-images) - Sourcegraph can be deployed using dedicated Machine Images for specific Cloud providers. This can be a simple solution in specific circumstances, though has its own considerations. If you are considering this path, please discuss with your account team. ### Sourcegraph Cloud @@ -42,7 +40,6 @@ Best for a wide range of customers open to a Sourcegraph managed [Sourcegraph Cl Multi-node, self hosted solution great for large enterprises and/or other orgs looking for the recommended, robust, and scalable deployment method - **Helm** (Preferred) utilizes pre-packaged charts for templating Sourcegraph deployments -- **Kustomize** (Planned for deprecation) utilizes built-in features of kubectl for configuring Sourcegraph deployments. [Helm](#kubernetes) is the preferred Kubernetes deployment method. - @@ -78,36 +70,6 @@ Single-node, self hosted solution for enterprises looking for a simpler, non-Kub /> -### Machine Images - -Best for enterprises looking for a self-hosted solution on the Cloud provider of their choice. - -Machine images provide a pre-configured Sourcegraph instance that can be deployed in minutes with minimal effort. While they offer simplicity, they are designed as a standardized solution and do not support customization. Currently available on the following hosts: - - -**Note:** AWS AMI and machine image deployments will be sunset in [Sourcegraph 7.0.0](https://sourcegraph.com/changelog/releases/7.0). - - - - - - - -See [Sourcegraph Machine Images](/self-hosted/deploy/machine-images) for more information. - - - Deploying with machine images requires technical expertise and the ability - to maintain and manage your own infrastructure. - - ### ARM / ARM64 support Running Sourcegraph on ARM / ARM64 images is not supported for production deployments at this time. From f7be4f6a1e1a84e67c089e6dd37e33bb348c9281 Mon Sep 17 00:00:00 2001 From: Jan Hartman Date: Tue, 21 Jul 2026 13:26:08 +0200 Subject: [PATCH 144/217] mcp: Add Code Finder and MCP tool blocklist (#1821) Closes CU-3096 Documents the new Code Finder MCP tool and the `mcp.tools.disabled` site config setting for blocking MCP tools. --- docs/api/mcp/index.mdx | 62 ++++++++++++++++++++++++++++++++++++------ 1 file changed, 53 insertions(+), 9 deletions(-) diff --git a/docs/api/mcp/index.mdx b/docs/api/mcp/index.mdx index cfeefe57f..0d6dd59b7 100644 --- a/docs/api/mcp/index.mdx +++ b/docs/api/mcp/index.mdx @@ -60,6 +60,7 @@ See [MCP Authentication](/api/mcp/authentication) to choose and configure an aut Admins can control MCP at three levels: - Site configuration: `mcp.enabled` enables or disables the MCP HTTP endpoints. +- Tool-level configuration: `mcp.tools.disabled` disables individual MCP tools by name. - OAuth Dynamic Client Registration: `auth.idpDynamicClientRegistrationEnabled` controls whether OAuth clients can self-register. See [MCP Authentication](/api/mcp/authentication#disable-dynamic-client-registration) to disable DCR and configure pre-registered clients. - RBAC: users must have the `MCP#ACCESS` permission to use MCP. @@ -76,6 +77,23 @@ Use the `mcp.enabled` site configuration to turn the MCP server on or off for th `mcp.enabled` defaults to `true`. When set to `false`, requests to `/.api/mcp` and its subpaths return `404 no route`. +### Disabling Individual Tools + +Use the `mcp.tools.disabled` site configuration setting to remove specific tools +from all MCP endpoints while keeping the rest of the server available. The setting +takes an array of strings, where each string is the name of a tool to disable - e.g. +`code_finder` or `deepsearch`: + +```json +{ + "mcp.tools.disabled": ["code_finder", "deepsearch"] +} +``` + +Tool names match the headings in [Available Tools](#available-tools) below. +Disabled tools are omitted from the tool list that MCP clients see, and calls +to them are rejected. + ### Restricting MCP with RBAC When MCP is enabled, Sourcegraph also checks the `MCP#ACCESS` permission before @@ -148,8 +166,8 @@ The MCP server provides these tools for code exploration and analysis: - `revision` - Branch, tag, or commit hash (optional) - Results are limited to 1000 entries; narrow `path` to inspect - larger directories. + Results are limited to 1000 entries; narrow `path` to inspect larger + directories. @@ -165,7 +183,8 @@ The MCP server provides these tools for code exploration and analysis: - `limit` - Maximum repositories to return (optional, default 50, maximum 10000) - Responses include `hasMoreResults` to indicate whether the result set was truncated; refine the query or increase `limit` to return more repositories. + Responses include `hasMoreResults` to indicate whether the result set was + truncated; refine the query or increase `limit` to return more repositories. @@ -323,15 +342,39 @@ The MCP server provides these tools for code exploration and analysis: +### Code Finder + +Code Finder is an agentic tool that sits between plain search and Deep Search: it runs its own internal search loop to locate the code relevant to a task, then returns the matching file paths and line ranges with a brief explanation. Unlike `deepsearch`, it runs synchronously and is designed for quickly finding relevant code in a repository you already know, rather than open-ended research across many repositories. + +Code Finder usage is metered against your instance's entitlement. When the quota is exhausted, the tool returns an error. + +#### `code_finder` + +
+Find relevant code using a fast search agent. + +**Parameters:** + +- `task` - The task or query to research and answer (required) + +**Use cases:** Locating the files and line ranges relevant to a task before making changes, finding where a feature is implemented, gathering focused context for an AI agent + +**Best practices:** + +- Name the target repository. Code Finder searches a repository you already know and declines broad cross-repository discovery—identify the repository first (for example with `list_repos`), then call the tool. +- Phrase the task as a precise engineering request: "In github.com/example/shop, find where we build HTTP error responses" rather than "shop error handling". +- Include what you already know: relevant paths, symbols, APIs, configuration names, or error strings and mention findings from earlier searches so the tool skips re-surfacing them and spends its search budget on the unknown parts. +- State explicit success criteria so the tool knows when to stop, such as "Return file paths and line numbers for JWT verification calls." + +**Output:** A short summary followed by links to the relevant files and line ranges. + +
+ ### Deep Search - Admins can disable the `deepsearch` tool on MCP endpoints where it is - exposed by setting the environment variable - `SRC_MCP_DISABLE_DEEPSEARCH_TOOL=true` on the Sourcegraph instance. This - does not affect `deepsearch_read` or the dedicated `/.api/mcp/deepsearch` - endpoint. This is a temporary measure available in 7.0 and will be replaced - by a proper tool allowlist in a future release. + Admins can disable the `deepsearch` tool with the [`mcp.tools.disabled` site + configuration](#disabling-individual-tools). #### `deepsearch` @@ -368,6 +411,7 @@ Use this matrix to choose the smallest endpoint that has the tools your MCP clie | Tool | `/.api/mcp` | `/.api/mcp/all` | `/.api/mcp/deepsearch` | | ----------------------- | :---------: | :-------------: | :--------------------: | +| `code_finder` | ✓ | ✓ | | | `commit_search` | ✓ | ✓ | | | `compare_revisions` | | ✓ | | | `deepsearch` | | ✓ | ✓ | From 19921e2b4896caae40b68bf3688d2a1c9725828b Mon Sep 17 00:00:00 2001 From: Michael Lin Date: Tue, 21 Jul 2026 10:03:49 -0700 Subject: [PATCH 145/217] docs/executors: remove outdated k8s-native same-node requirement (#1820) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Native Kubernetes executor Job pods no longer need to be co-located on the same node as the Executor pod — that requirement was removed when the single-job-pod runtime (with `emptyDir` workspaces) became the default, so Job pods now schedule across any node in the cluster. This removes the stale same-node scheduling guidance (including the `spec.nodeName` Downward API co-location example) from the deployment guide and the troubleshooting page, and drops the 110-pods-per-node note that only applied under the old co-location constraint. The `EXECUTOR_KUBERNETES_NODE_*` env vars are now framed as optional scheduling constraints rather than a co-location requirement. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-authored-by: Claude Opus 4.8 (1M context) --- .../executors/deploy-executors-kubernetes.mdx | 23 ++----------------- .../executors/executors-troubleshooting.mdx | 3 +-- 2 files changed, 3 insertions(+), 23 deletions(-) diff --git a/docs/self-hosted/executors/deploy-executors-kubernetes.mdx b/docs/self-hosted/executors/deploy-executors-kubernetes.mdx index 1ac0720b4..803f06510 100644 --- a/docs/self-hosted/executors/deploy-executors-kubernetes.mdx +++ b/docs/self-hosted/executors/deploy-executors-kubernetes.mdx @@ -136,33 +136,14 @@ or [installing the binary](/self-hosted/executors/deploy-executors-binary) direc ### Job Scheduling -> Note: Kubernetes has a max of 110 pods per node. If you run into this limit, you can lower the number of Job Pods running on a node by setting the environment variable `EXECUTOR_MAXIMUM_NUM_JOBS`. - -Executors deployed on Kubernetes require Jobs to be scheduled on the same Node as the Executor. This is to ensure that -Jobs are able to access the same Persistence Volume as the Executor. - -To ensure that Jobs are scheduled on the same Node as the Executor, the following environment variables can be set, +The following environment variables can be used to constrain which nodes Job Pods are scheduled on, - `EXECUTOR_KUBERNETES_NODE_NAME` - `EXECUTOR_KUBERNETES_NODE_SELECTOR` - `EXECUTOR_KUBERNETES_NODE_REQUIRED_AFFINITY_MATCH_EXPRESSIONS` - `EXECUTOR_KUBERNETES_NODE_REQUIRED_AFFINITY_MATCH_FIELDS` -#### Node Name - -Using the [Downward API](https://kubernetes.io/docs/concepts/workloads/pods/downward-api/#downwardapi-fieldRef), the -property `spec.nodeName` can be used to set the `EXECUTOR_KUBERNETES_NODE_NAME` environment variable. - -```yaml -- name: EXECUTOR_KUBERNETES_NODE_NAME - valueFrom: - fieldRef: - fieldPath: spec.nodeName -``` - -This ensures that the Job is scheduled on the same Node as the Executor. - -However, if the node does not have enough resources to run the Job, the Job will not be scheduled. +For example, use `EXECUTOR_KUBERNETES_NODE_SELECTOR` to restrict Jobs to a dedicated node pool. ### Firewall Rules diff --git a/docs/self-hosted/executors/executors-troubleshooting.mdx b/docs/self-hosted/executors/executors-troubleshooting.mdx index d6a0e790c..b0631b71e 100644 --- a/docs/self-hosted/executors/executors-troubleshooting.mdx +++ b/docs/self-hosted/executors/executors-troubleshooting.mdx @@ -227,8 +227,7 @@ Verify that the machine type in use is of type `.metal` (e.g. `M5.metal`). ## Kubernetes Job Scheduling There are a few environment variables available that can be used to determine which node an Executor Job Pod will be -scheduled in. The Job Pods need to be scheduled in the same node as the Executor Pod (in order to mount the -Persistence Volume Claim). +scheduled in. The following environment variables can be used to determine where the Job Pods will be scheduled. From 3e4f90e9bdaa0f13baf90defe012e24e4e218929 Mon Sep 17 00:00:00 2001 From: Peter Guy Date: Tue, 21 Jul 2026 14:24:04 -0700 Subject: [PATCH 146/217] Update supported OpenAI models (#1822) ## Summary - remove GPT-4.1-nano from the supported chat and autocomplete model lists - remove o4-mini from the supported chat model list - align the docs with sourcegraph/sourcegraph commit [6946b7f66e7](https://github.com/sourcegraph/sourcegraph/commit/6946b7f66e7f57ab7152382d8a9b7b80f7487b31) ## Test plan - ran `git diff --check` - confirmed GPT-4.1-nano and o4-mini no longer appear on the supported-models page Co-authored-by: Amp --- docs/cody/capabilities/supported-models.mdx | 3 --- 1 file changed, 3 deletions(-) diff --git a/docs/cody/capabilities/supported-models.mdx b/docs/cody/capabilities/supported-models.mdx index 5abc3a5fa..029e3c118 100644 --- a/docs/cody/capabilities/supported-models.mdx +++ b/docs/cody/capabilities/supported-models.mdx @@ -43,9 +43,7 @@ Cody supports a variety of cutting-edge large language models for use in chat an | OpenAI | [GPT-4.1](https://platform.openai.com/docs/models/gpt-4.1) | ✅ | ✅ | | OpenAI | [GPT-4o-mini](https://platform.openai.com/docs/models#gpt-4o-mini) | ✅ | ✅ | | OpenAI | [GPT-4.1-mini](https://platform.openai.com/docs/models/gpt-4.1-mini) | ✅ | ✅ | -| OpenAI | [GPT-4.1-nano](https://platform.openai.com/docs/models/gpt-4.1-nano) | ✅ | ✅ | | OpenAI | [o3](https://platform.openai.com/docs/models#o3) | ✅ | ❌ | -| OpenAI | [o4-mini](https://platform.openai.com/docs/models/o4-mini) | ✅ | ❌ | While Gemini models support vision capabilities, Cody clients do not @@ -62,7 +60,6 @@ Cody uses a set of models for autocomplete which are suited for the low latency | Fireworks.ai | DeepSeek V2 Lite Base | ✅ | US Iowa | | Fireworks.ai | Autoedits Fine-Tune DeepSeek Coder V2 | ✅ | US Iowa | | Fireworks.ai | NLS Query Translator | ✅ | US Iowa | -| OpenAI | [GPT-4.1-nano](https://platform.openai.com/docs/models/gpt-4.1-nano) | ✅ | global | From 82cfae1c2afa8e4b5eea8813f5a9f8e4df5708ee Mon Sep 17 00:00:00 2001 From: Michael Bahr <1830132+bahrmichael@users.noreply.github.com> Date: Wed, 22 Jul 2026 17:52:31 +0200 Subject: [PATCH 147/217] docs: note coding agent step MCP and code access (#1823) Closes CPL-605 Expands the "Coding agent steps" section of the Agentic Batch Changes docs to note two capabilities available inside a coding agent step: - Full MCP access under your actor (Sourcegraph MCP tools authenticated as you). - Access to the code being worked on (the workspace repository checkout). [_Created by Sourcegraph agentic batch change._](https://sourcegraph.sourcegraph.com/batch-change-agents/352) --- docs/agentic-batch-changes/index.mdx | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/docs/agentic-batch-changes/index.mdx b/docs/agentic-batch-changes/index.mdx index f47cedf4b..db6e0fd28 100644 --- a/docs/agentic-batch-changes/index.mdx +++ b/docs/agentic-batch-changes/index.mdx @@ -70,6 +70,11 @@ To get set up, just ask the agent for it in your agentic batch change. We recomm The coding agent step is a new native step type for Agentic Batch Changes that allows the agent to delegate non-deterministic or context-dependent changes for another coding agent to handle. Coding agent steps are automatically pre-configured with the [Sourcegraph MCP](/api/mcp). +Within a coding agent step, the agent has: + +- **Full MCP access under your actor** — the [Sourcegraph MCP](/api/mcp) tools are available and authenticated as you, so the agent operates with your permissions. +- **Access to the code being worked on** — the workspace's repository checkout is available to the agent as it makes changes. + We currently support [Claude Code](https://claude.com/product/claude-code) and [Codex](https://openai.com/codex) as native coding agent steps. By default, coding agent LLM traffic is routed through the [Sourcegraph Model Provider](/model-provider). Site administrators can configure their own API keys to route traffic directly to Anthropic or OpenAI in **Administration → Batch Changes → Agents**. An optional `endpoint` field can be set for each agent to override the default provider URL. From b58be29f782faaea016f0f9e950b8f08bfa886eb Mon Sep 17 00:00:00 2001 From: Warren Gifford Date: Wed, 22 Jul 2026 16:06:27 -0700 Subject: [PATCH 148/217] docs: reorganize executor administration and deployment guidance (#1818) Closes PLAT-790 ## Summary This reorganizes the executor documentation around a clearer path from administration concepts to infrastructure deployment and ongoing operations. - Refocuses `admin/executors` on executor concepts, Sourcegraph instance setup, authentication, monitoring, secrets, and sandboxing. - Turns `self-hosted/executors` into the deployment entry point, with a concise prerequisite checklist, deployment decision guidance, validation, and links to each supported deployment method. - Moves deployment-specific architecture, procedures, configuration, upgrade, and security guidance into the relevant Binary, Docker Compose, Kubernetes, Firecracker, AWS, and Google Cloud pages. - Splits private registry configuration, custom certificate configuration, and executor capacity planning into focused pages that are linked from the relevant deployment guides. - Removes the ambiguous `deploy-executors` catch-all page, preserves its useful content in the new structure, and adds redirects for its former URLs. - Improves sidebar navigation, in-page indexes, cross-links between administration and deployment content, and links from feature documentation to the appropriate executor guidance. ## Testing - Tested the updated documentation and navigation locally with `npm run dev`. --------- Co-authored-by: Robert Lin --- docs/admin/executors/index.mdx | 103 +++++- docs/agentic-batch-changes/index.mdx | 2 +- docs/batch-changes/faq.mdx | 2 +- .../how-src-executes-a-batch-spec.mdx | 6 + docs/batch-changes/server-side.mdx | 11 +- docs/code-navigation/auto-indexing.mdx | 2 +- .../executors/custom-certificates.mdx | 108 ++++++ .../deploy-executors-binary-offline.mdx | 21 ++ .../executors/deploy-executors-binary.mdx | 23 +- .../executors/deploy-executors-dind.mdx | 25 +- .../executors/deploy-executors-docker.mdx | 21 +- .../executors/deploy-executors-kubernetes.mdx | 32 +- .../deploy-executors-terraform-aws.mdx | 21 +- .../deploy-executors-terraform-gcp.mdx | 21 +- .../executors/deploy-executors.mdx | 322 ------------------ .../executors/executors-config.mdx | 2 +- .../executors/executors-troubleshooting.mdx | 9 +- docs/self-hosted/executors/firecracker.mdx | 18 +- docs/self-hosted/executors/index.mdx | 277 ++++++--------- .../executors/private-registries.mdx | 73 ++++ .../self-hosted/executors/resource-sizing.mdx | 38 +++ docs/self-hosted/index.mdx | 2 +- docs/technical-changelog.mdx | 2 +- src/data/navigation.ts | 67 +++- src/data/redirects.ts | 9 +- 25 files changed, 677 insertions(+), 540 deletions(-) create mode 100644 docs/self-hosted/executors/custom-certificates.mdx delete mode 100644 docs/self-hosted/executors/deploy-executors.mdx create mode 100644 docs/self-hosted/executors/private-registries.mdx create mode 100644 docs/self-hosted/executors/resource-sizing.mdx diff --git a/docs/admin/executors/index.mdx b/docs/admin/executors/index.mdx index 346bb53f1..b69f32bda 100644 --- a/docs/admin/executors/index.mdx +++ b/docs/admin/executors/index.mdx @@ -5,26 +5,105 @@ Available via the Web app. -Executors are Sourcegraph's solution for isolating and running workloads in a secure and controllable way. Executors provide a sandbox that can run resource-intensive or untrusted tasks on behalf of the Sourcegraph instance, such as: +Executors run resource-intensive or untrusted work on behalf of Sourcegraph. They are used to: -- [Automatically indexing a repository for precise code navigation](/code-navigation/auto-indexing) -- [Running batch changes](/batch-changes/server-side) +- [Automatically index repositories for precise code navigation](/code-navigation/auto-indexing) +- [Run batch changes server-side](/batch-changes/server-side), including [Agentic Batch Changes](/agentic-batch-changes) + +This page covers the Sourcegraph configuration and administrative tools that apply to every executor. If you operate a self-hosted Sourcegraph instance and need to deploy executor infrastructure, see [Deploy executors](/self-hosted/executors). ## Why use executors? -Running untrusted code is a core requirement of features such as precise code navigation [auto-indexing](/code-navigation/auto-indexing), and [running batch changes server-side](/batch-changes/server-side). +Running untrusted code is a core requirement of features such as precise code navigation [auto-indexing](/code-navigation/auto-indexing) and [running batch changes server-side](/batch-changes/server-side). + +Auto-indexing jobs, in particular, invoke project build tools to resolve dependencies. Post-install hooks, insecure [package management tools](https://github.com/golang/go/issues/29230), and package manager proxy attacks can allow malicious code to consume compute resources or exfiltrate data. This is especially dangerous when the work runs inside a Sourcegraph instance that has repository data on disk and unprotected services on its internal network. + +Executors move this work outside the Sourcegraph instance. A job receives an isolated workspace containing a clone of only the repository it needs, limiting its access to other repository data and Sourcegraph services. + +## How executors work + +Executors run jobs outside the Sourcegraph instance. Each executor connects to Sourcegraph, requests work from a queue, prepares an isolated workspace containing one repository, runs the job, and sends its progress and result back to Sourcegraph. + +Keeping this work outside the Sourcegraph instance limits the access that untrusted build tools, package managers, and user-defined commands have to Sourcegraph services and repository data. The exact isolation boundary depends on how the executor is deployed. Self-hosted administrators should review the [deployment and isolation options](/self-hosted/executors#choose-a-deployment-method) before deploying executors. + +## Sandboxing model + +Executors can run each job inside a [Firecracker](https://sourcegraph.com/github.com/firecracker-microvm/firecracker) MicroVM to isolate the job from other jobs and the executor host. Firecracker provides the strongest supported isolation boundary and requires Linux KVM extensions. On cloud infrastructure, this generally requires a bare-metal instance on AWS or nested virtualization on Google Cloud. + +Executors can also run jobs in Docker containers or as Kubernetes Jobs without KVM-based isolation. These methods are easier to deploy on common infrastructure, but they provide a weaker isolation boundary and require additional host, node, and network controls. + +See [Firecracker isolation](/self-hosted/executors/firecracker) for architecture and caveats, or [choose a deployment method](/self-hosted/executors#choose-a-deployment-method) based on your infrastructure and security requirements. + +## Setting up executors + +The following steps configure a self-hosted Sourcegraph instance to accept connections from executors. They are separate from deploying the executor service onto infrastructure such as a Linux host, cloud virtual machine, or Kubernetes cluster. + + + Sourcegraph Cloud includes Sourcegraph-managed executor infrastructure by + default. Cloud customers using these managed executors do not need to + configure executor authentication or deploy their own executor + infrastructure. + + +If you operate a self-hosted Sourcegraph instance, complete the steps below and then follow the [self-hosted deployment guide](/self-hosted/executors) to choose a deployment method and install executors on your infrastructure. + +Self-hosted executors authenticate to Sourcegraph with a shared secret: + +1. Generate a random secret containing at least 20 characters. For example, use OpenSSL to generate a 64-character hexadecimal secret: + + ```bash + openssl rand -hex 32 + ``` + +1. Open **Site admin > Configuration > Advanced configuration**. +1. Set `executors.accessToken` to the generated secret and save the site configuration. + + ``` + { "executors.accessToken": "" } + ``` + +1. Configure the same secret on each executor as `EXECUTOR_FRONTEND_PASSWORD`, or through the equivalent setting for its deployment method. + +The executor authentication secret is not a Sourcegraph user access token and is not managed on the **Access tokens** page. See [Site configuration](/admin/config/site-config#view-and-edit-site-configuration) for more information about editing site configuration. + +## Monitor executor instances + + + The **Executor instances** page becomes available only after + `executors.accessToken` is configured in site configuration. + + +Open **Site admin > Maintenance > Executor instances** to see executors that have connected to Sourcegraph. The page shows whether each executor is active, its Sourcegraph compatibility, and details including its hostname and installed runtime versions. -Auto-indexing jobs, in particular, require the invocation of arbitrary and untrusted code to support the resolution of project dependencies. Invocation of post-install hooks, use of insecure [package management tools](https://github.com/golang/go/issues/29230), and package manager proxy attacks can create opportunities in which an adversary can gain unlimited use of compute or exfiltrate data. The latter outcome is particularly dangerous for on-premise installations of Sourcegraph, which is the chosen option for companies wanting to maintain strict privacy of their code property. +![Executor instances page showing active and inactive executors](https://storage.googleapis.com/sourcegraph-assets/docs/images/executors/executor-instances.png) -Instead of performing this work within the Sourcegraph instance, where code is available on disk and unprotected internal services are available over the local network, we move untrusted compute into a sandboxed environment, the _executor_, that has access only to the clone of a single repository on disk (its _workspace_) and to the public internet. +Use this page to confirm that a new or upgraded executor is connected and reporting the expected version. For host, service, or runtime failures, see [Troubleshoot executors](/self-hosted/executors/executors-troubleshooting). -## Sandboxing Model +## Manage executor secrets -Executors can be deployed with [Firecracker](https://sourcegraph.com/github.com/firecracker-microvm/firecracker) isolation in accordance with our [sandboxing model](/admin/executors/#how-it-works) to isolate jobs from each other and the host. -This requires executors to be run on machines capable of running Linux KVM extensions. On the most popular cloud providers, this either means running executors on bare-metal machines (AWS) or machines capable of nested virtualization (GCP). +Executor secrets provide environment variables to jobs without placing secret values in a batch spec. Global secrets are available to every eligible job, while user and organization secrets apply only to jobs in their respective namespaces. Namespaced secrets override global secrets with the same name. -Optionally, executors can be run without using KVM-based isolation, which is less secure but might be easier to run on common machines. +Site administrators manage global secrets under **Site admin > Batch Changes > Secrets**. Users and organization administrators manage their scoped secrets from the corresponding user or organization settings. -## How it works +Learn how to create, rotate, and remove [executor secrets](/admin/executors/executor-secrets). -Executor instances are capable of being deployed in a variety of ways. Each runtime varies in how jobs are executed. + + + + + diff --git a/docs/agentic-batch-changes/index.mdx b/docs/agentic-batch-changes/index.mdx index db6e0fd28..f8d71f282 100644 --- a/docs/agentic-batch-changes/index.mdx +++ b/docs/agentic-batch-changes/index.mdx @@ -34,7 +34,7 @@ Before creating an Agentic Batch Change, make sure your Sourcegraph instance can - [Configure code host connections](/admin/code-hosts) for the repositories you want the agent to search and modify. - [Configure Batch Changes credentials](/batch-changes/configuring-credentials) for each code host where the agent should publish pull requests or merge requests. -- [Deploy Sourcegraph executors](/self-hosted/executors/deploy-executors) so Agentic Batch Changes can run code-modification jobs in isolated workspaces. Executors are available with no additional setup on [Sourcegraph Cloud](/cloud). +- Ensure [Sourcegraph executors](/admin/executors) are set up so Agentic Batch Changes can run code-modification jobs in isolated workspaces. [Sourcegraph Cloud](/cloud) includes Sourcegraph-managed executors by default, so Cloud customers using them do not need to deploy executor infrastructure. Otherwise, you will need to [deploy Sourcegraph executors](/self-hosted/executors). ### Prompting diff --git a/docs/batch-changes/faq.mdx b/docs/batch-changes/faq.mdx index 452759d61..934be401f 100644 --- a/docs/batch-changes/faq.mdx +++ b/docs/batch-changes/faq.mdx @@ -226,7 +226,7 @@ They can! Each changeset that is computed can be assigned to a separate executor ### What additional resources do I need to provision to run batch changes server-side? -See [deploying executors](/self-hosted/executors/deploy-executors) page. You'll require little as a single compute instance and a docker registry mirror if you just want to process batch changes at a small scale; an autoscaling group of instances if you want to process large batch changes very fast. +For self-hosted Sourcegraph, see [deploying executors](/self-hosted/executors). You may require as little as a single compute instance and a Docker registry mirror to process Batch Changes at a small scale, or an autoscaling group of instances to process large Batch Changes quickly. Sourcegraph Cloud includes Sourcegraph-managed executors by default, so Cloud customers using them do not need to deploy executor infrastructure. ### Can someone accidentally take down the Sourcegraph instance if they run too big a batch change? diff --git a/docs/batch-changes/how-src-executes-a-batch-spec.mdx b/docs/batch-changes/how-src-executes-a-batch-spec.mdx index fe9d2add0..fda4a96b0 100644 --- a/docs/batch-changes/how-src-executes-a-batch-spec.mdx +++ b/docs/batch-changes/how-src-executes-a-batch-spec.mdx @@ -7,6 +7,12 @@ Here, you will learn what happens when a user applies or previews a Batch Spec by running `src batch apply` or `src batch preview` commands. +![Local Batch Changes execution with src-cli](https://storage.googleapis.com/sourcegraph-assets/executor_src_local_arch.png) + +When Batch Changes runs locally, `src` resolves and downloads the target repositories, then runs each batch-spec step sequentially in a Docker container with the repository mounted as its workspace. `src` collects the container logs and resulting diffs, then sends the changeset specifications and batch-spec result to Sourcegraph. + +This local workflow is distinct from [server-side execution](/batch-changes/server-side). For most server-side jobs, Sourcegraph services resolve and orchestrate the work, while the internal `batch-exec` binary handles only the execution of batch-spec steps within an executor workspace. + ## Overview `src batch apply` and `src batch preview` execute a batch spec the same way by following these steps: diff --git a/docs/batch-changes/server-side.mdx b/docs/batch-changes/server-side.mdx index e4efadc14..59f9b318b 100644 --- a/docs/batch-changes/server-side.mdx +++ b/docs/batch-changes/server-side.mdx @@ -9,9 +9,9 @@ certains [limitations](#limitations). -By default, Batch Changes uses a command line interface in your local environment to [compute diffs](/batch-changes/how-src-executes-a-batch-spec) and create changesets. This can be impractical for creating batch changes affecting hundreds or thousands of repositories, with large numbers of workspaces, or if the batch change steps require CPU, memory, or disk resources that are unavailable locally. +Batch Changes can use the Sourcegraph CLI in your local environment to [compute diffs](/batch-changes/how-src-executes-a-batch-spec) and create changesets. Local execution can be impractical for batch changes affecting hundreds or thousands of repositories, with large numbers of workspaces, or when batch change steps require CPU, memory, or disk resources that are unavailable locally. -Instead of computing Batch Changes locally using `src-cli`, you can offload this task to one or many remote server called an [executor](/self-hosted/executors/deploy-executors). Executors are also required to enable code navigation [auto-indexing](/code-navigation/auto-indexing). +Instead of computing Batch Changes locally using `src-cli`, you can offload this task to one or many remote servers called [executors](/admin/executors). Executors are also required to enable code navigation [auto-indexing](/code-navigation/auto-indexing). This allows to: @@ -21,16 +21,15 @@ This allows to: ## Setup -This is a one-time process. Once a site-admin of the Sourcegraph instance sets up executors and enables running batch changes server-side, all users of the Sourcegraph instance can get started with no additional setup required. +Sourcegraph Cloud includes Sourcegraph-managed executors by default, so Cloud customers using them do not need to deploy executor infrastructure. -Make sure that [executors are deployed and are online](/self-hosted/executors/deploy-executors). +If you operate a self-hosted Sourcegraph instance, [deploy executors](/self-hosted/executors) and confirm that they are online. This is a one-time process. Once a site administrator sets up executors and enables running Batch Changes server-side, users can get started without additional executor setup. ## Limitations -- Running batch changes server-side requires setting up executors. Executors are configured ready-to-use on Sourcegraph Cloud +- Self-hosted Sourcegraph instances require executor setup. Executors are ready to use on Sourcegraph Cloud. - Running batch changes server-side is limited to user namespaces - The newly introduced APIs for server-side are still experimental and will likely change -- Executors can only be deployed using Terraform (AWS or GCP) or using pre-built binaries (see [deploying executors](/self-hosted/executors/deploy-executors)). Running batch changes server-side has been tested to run a simple **45K changeset batch change**. Actual performance and setup requirements depend on the complexity of the batch change. diff --git a/docs/code-navigation/auto-indexing.mdx b/docs/code-navigation/auto-indexing.mdx index ce1bd23a7..25647f9c8 100644 --- a/docs/code-navigation/auto-indexing.mdx +++ b/docs/code-navigation/auto-indexing.mdx @@ -21,7 +21,7 @@ The following docs explains how to turn on [auto-indexing](/code-navigation/auto This step is only required if you are on self-hosted Sourcegraph.
-First, [deploy the executor service](/self-hosted/executors/deploy-executors) targeting your Sourcegraph instance. This will provide the necessary compute resources that clone the target Git repository, securely analyze the code to produce a code graph data index, then upload that index to your Sourcegraph instance for processing. +First, [deploy the executor service](/self-hosted/executors) targeting your Sourcegraph instance. This will provide the necessary compute resources that clone the target Git repository, securely analyze the code to produce a code graph data index, then upload that index to your Sourcegraph instance for processing. ### Enable index job scheduling diff --git a/docs/self-hosted/executors/custom-certificates.mdx b/docs/self-hosted/executors/custom-certificates.mdx new file mode 100644 index 000000000..552f7fcec --- /dev/null +++ b/docs/self-hosted/executors/custom-certificates.mdx @@ -0,0 +1,108 @@ +# Use custom certificates with executors + +By default, executors will search for certificates in the following files and directories: + +| Directory or file | Distribution | +| --------------------------------------------------- | ------------------------- | +| `/etc/ssl/certs/ca-certificates.crt` | Debian/Ubuntu/Gentoo etc. | +| `/etc/pki/tls/certs/ca-bundle.crt` | Fedora/RHEL 6 | +| `/etc/ssl/ca-bundle.pem` | OpenSUSE | +| `/etc/pki/tls/cacert.pem` | OpenELEC | +| `/etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem` | CentOS/RHEL 7 | +| `/etc/ssl/cert.pem` | Alpine Linux | +| `/etc/ssl/certs` | SLES10/SLES11 | +| `/etc/pki/tls/certs` | Fedora/RHEL | +| `/system/etc/security/cacerts` | Android | + +If your environment makes use of custom certificates, you can add them to one of these locations in order for executors to pick them up. + +## Add certificates to a binary deployment + +> NOTE: see the [troubleshooting guide](/self-hosted/executors/executors-troubleshooting#connecting-to-cloud-provider-executor-instances) for instructions on how to connect to cloud provider VMs. + +After successfully [deploying binaries](/self-hosted/executors/deploy-executors-binary), follow these steps: + +1. Copy your certificates to `/etc/ssl/certs`. +1. If you are using systemd, run `systemctl restart executor`. If not, proceed to the next step. +1. Run `executor run` on the VM in order to restart the executor service. + +### Add certificates with Firecracker + +When running executors with the [firecracker runtime](/self-hosted/executors/firecracker), custom certificates need to be added in +the container that is running within the Firecracker VM. To add custom certificates, you must create a new Docker image +that contains the certificates. For example, + +```dockerfile +FROM upstream:tag + +# Copy the certificates into the container +COPY customcert.crt /usr/local/share/ca-certificates/customcert.crt +# Update the certificate store +RUN chmod 644 /usr/local/share/ca-certificates/customcert.crt && update-ca-certificates +# ... +``` + +#### Code navigation + +Once the custom image is built, you can configure the executor to use it by setting +the `codeIntelAutoIndexing.indexerMap` to use the custom image. For example, + +```json +"codeIntelAutoIndexing.indexerMap": { + "go": "myregistry.company.com/scip-go:custom" +} +``` + +## Add certificates to a Kubernetes deployment using manifests + +First, add the certificate data as a secret in your preferred namespace: + +```shell +SECRET_NAME=custom-certs +CERT_PATH=/path/to/cert.pem +kubectl create secret generic $SECRET_NAME --from-file=customcert.crt=$CERT_PATH +``` + +Or as a declarative manifest: + +```yaml +apiVersion: v1 +kind: Secret +metadata: + name: custom-certs +data: + customcert.crt: $(base64 -i /path/to/cert.pem) +type: Opaque +``` + +Next, mount the secret in the executor deployment. Add the following snippet to `spec.template.spec.volumes` of each executor deployment: + +```yaml +- name: custom-certs + secret: + secretName: custom-certs +``` + +Also add this snippet to `spec.template.spec.containers.volumeMounts` of each executor deployment (specifically, the executor container, in case you inject any sidecars): + +```yaml +- mountPath: /etc/ssl/certs + name: custom-certs + readOnly: true +``` + +Next, apply the updated YAML manifests. Once the executors have rolled out, they should be picking up your custom certificates. + +## Add certificates to a Kubernetes deployment using Helm + +You may follow the same instructions for the manifest deployment to set custom certificates. + +## Add certificates to a Docker Compose deployment + +First, ensure that the certificate file is present on the host machine. Next, add the volume to the [executor compose file](https://sourcegraph.com/github.com/sourcegraph/deploy-sourcegraph-docker/-/blob/docker-compose/executors/executor.docker-compose.yaml?L26-30): + +```yaml +- '/path/to/certs:/etc/ssl/certs' +``` + +Next, restart the deployment with `docker-compose down` and `docker-compose up -d`. diff --git a/docs/self-hosted/executors/deploy-executors-binary-offline.mdx b/docs/self-hosted/executors/deploy-executors-binary-offline.mdx index bc8bfd4cf..03b9c06d7 100644 --- a/docs/self-hosted/executors/deploy-executors-binary-offline.mdx +++ b/docs/self-hosted/executors/deploy-executors-binary-offline.mdx @@ -2,6 +2,22 @@ When running in an air-gap environment, the executor binary can be deployed with this guide. +## How it works + +An offline deployment uses the same executor binary and job runtime as a standard [Linux binary deployment](/self-hosted/executors/deploy-executors-binary#how-it-works). Download the executor and its dependencies from a connected machine, transfer them into the offline environment, and configure internal container registries where required. + +**On this page** + +- [Initial dependencies](#initial-dependencies) +- [Install the binary](#install-binary) +- [Configure Docker](#configure-docker) +- [Environment variables](#environment-variables) +- [Batch Changes](#batch-changes) +- [Auto-indexing](#auto-indexing) +- [Firecracker setup](#firecracker-setup) +- [Validation](#validation) +- [Related configuration](#related-configuration) + ## Initial Dependencies Executors @@ -195,3 +211,8 @@ $ executor test-vm [--repo=github.com/sourcegraph/sourcegraph --revision=main] ``` This should succeed and print a command to use to attach to the guest VM. If it is able to spin up properly, that is a good indication that everything is set up correctly. + +## Related configuration + +- [Add custom certificates to a binary deployment](/self-hosted/executors/custom-certificates#add-certificates-to-a-binary-deployment) +- [Use private container registries](/self-hosted/executors/private-registries) diff --git a/docs/self-hosted/executors/deploy-executors-binary.mdx b/docs/self-hosted/executors/deploy-executors-binary.mdx index 934bdb49b..e754752ee 100644 --- a/docs/self-hosted/executors/deploy-executors-binary.mdx +++ b/docs/self-hosted/executors/deploy-executors-binary.mdx @@ -1,10 +1,22 @@ # Deploying Sourcegraph executors on linux machines +![Executor architecture when installed as a Linux binary](https://storage.googleapis.com/sourcegraph-assets/executor_binary_arch.png) + +## How it works + +The executor runs as a service on a Linux host and polls Sourcegraph for work. After dequeuing a job, it clones the target repository into a job workspace and runs each step sequentially in a Docker container. Batch Changes jobs that do not use native execution invoke `src`; code navigation and native Batch Changes jobs invoke Docker directly. The executor streams step logs and the final job status back to Sourcegraph. + +**On this page** + +- [Installation](#installation) +- [Upgrading executors](#upgrading-executors) +- [Related configuration](#related-configuration) + ## Installation > Note: See [offline installation guide](/self-hosted/executors/deploy-executors-binary-offline) for instructions on how to install executors in an air-gapped environment. -The following steps will guide you through the process of installing executors on a linux machine. +The following steps will guide you through the process of installing executors on a Linux machine. ### Dependencies @@ -30,7 +42,7 @@ If [Firecracker isolation will be used](/self-hosted/executors/firecracker): _(r ### **Step 0:** Confirm that virtualization is enabled (if using Firecracker) -KVM (virtualization) support is required for our [sandboxing model](/self-hosted/executors#sandboxing-model) with Firecracker. The following command checks whether virtualization is enabled on the machine (it should print something): +KVM (virtualization) support is required for [Firecracker isolation](/self-hosted/executors/firecracker). The following command checks whether virtualization is enabled on the machine (it should print something): ```bash $ lscpu | grep Virtualization @@ -109,7 +121,7 @@ executor validate If any issues are found, correct them before proceeding. -If you use our [sandboxing model](/self-hosted/executors#sandboxing-model) with Firecracker _(recommended)_, you can also verify that the executor is able to spin up the isolation VMs properly. For that, use the following command: +If you use [Firecracker isolation](/self-hosted/executors/firecracker) _(recommended)_, you can also verify that the executor is able to spin up the isolation VMs properly. For that, use the following command: ```bash # Optionally provide a repo to clone into the VMs workspace, to verify that cloning works properly as well. @@ -226,3 +238,8 @@ systemctl status executor ``` Otherwise, run `executor run` directly. Your executor should start listening for jobs and be visible under **Site admin > Executors > Instances**. + +## Related configuration + +- [Add custom certificates to a binary deployment](/self-hosted/executors/custom-certificates#add-certificates-to-a-binary-deployment) +- [Use private container registries](/self-hosted/executors/private-registries) diff --git a/docs/self-hosted/executors/deploy-executors-dind.mdx b/docs/self-hosted/executors/deploy-executors-dind.mdx index 5e6b3dab8..c386eea77 100644 --- a/docs/self-hosted/executors/deploy-executors-dind.mdx +++ b/docs/self-hosted/executors/deploy-executors-dind.mdx @@ -13,11 +13,26 @@ Executors on Kubernetes require privileged access to a container runtime daemon in order to operate correctly. To ensure maximum capability across Kubernetes versions and container runtimes, a [Docker in Docker](https://www.docker.com/blog/docker-can-now-run-within-docker/) sidecar is deployed with each executor pod so that the executor does not have to access the host container runtime directly. +![Docker-in-Docker Kubernetes executor architecture](https://storage.googleapis.com/sourcegraph-assets/executor_kubernetes_dind_arch.png) + +### How it works + +The executor and a Docker-in-Docker daemon run as containers in the same Kubernetes pod. The executor polls Sourcegraph, dequeues a job, and clones its repository into a shared workspace. It then uses the sidecar Docker daemon to run each job step sequentially in a container. Logs and the final job status are streamed back to Sourcegraph. + +**On this page** + +- [Step-by-step guide](#step-by-step-guide) +- [Upgrading executors](#upgrading-executors) +- [Security considerations](#security-considerations) +- [Related configuration](#related-configuration) + ### Step-by-step Guide - Before deploying, ensure your Sourcegraph instance is configured to accept executor connections. - See [Executor authentication](/self-hosted/executors/deploy-executors#executor-authentication) for instructions on setting the required `executors.accessToken` in your site configuration. + Before deploying, ensure your Sourcegraph instance is configured to accept + executor connections. See [Setting up + executors](/admin/executors#setting-up-executors) for instructions on + setting the required `executors.accessToken` in your site configuration. Ensure you have the following tools installed: @@ -126,3 +141,9 @@ We strongly recommend applying the following controls when running docker-in-doc 3. **Restrict network access.** Apply Kubernetes [NetworkPolicies](https://kubernetes.io/docs/concepts/services-networking/network-policies/) and/or cloud firewall rules to the executor node pool to: - Block access to internal and private resources and services. - Block access to the cloud instance metadata service at `169.254.169.254` (AWS / GCP). + +## Related configuration + +- [Add custom certificates using Kubernetes manifests](/self-hosted/executors/custom-certificates#add-certificates-to-a-kubernetes-deployment-using-manifests) +- [Add custom certificates using Helm](/self-hosted/executors/custom-certificates#add-certificates-to-a-kubernetes-deployment-using-helm) +- [Use private container registries](/self-hosted/executors/private-registries) diff --git a/docs/self-hosted/executors/deploy-executors-docker.mdx b/docs/self-hosted/executors/deploy-executors-docker.mdx index 2d8526822..1e3bac888 100644 --- a/docs/self-hosted/executors/deploy-executors-docker.mdx +++ b/docs/self-hosted/executors/deploy-executors-docker.mdx @@ -6,6 +6,20 @@ A [docker-compose file](https://github.com/sourcegraph/deploy-sourcegraph-docker/blob/master/docker-compose/executors/executor.docker-compose.yaml) is provided to deploy executors standlone, or alongside your existing Sourcegraph deployment. +![Executor architecture when deployed with Docker](https://storage.googleapis.com/sourcegraph-assets/executor_docker_arch.png) + +## How it works + +The executor service itself runs in a Docker container and polls Sourcegraph for work. After dequeuing a job, it clones the target repository into a workspace and uses the Docker daemon to run each job step sequentially in another container. Batch Changes jobs that do not use native execution invoke `src`; code navigation and native Batch Changes jobs invoke Docker directly. Logs and the final job status are streamed back to Sourcegraph. + +**On this page** + +- [Requirements](#requirements) +- [Deployment](#deployment) +- [Upgrading executors](#upgrading-executors) +- [Related configuration](#related-configuration) +- [Security note](#note) + ## Requirements Privileged containers are required to run executors in docker-compose. This is because executors require access to the docker daemon running on the host. @@ -64,8 +78,13 @@ Upgrading Docker Compose executors requires updating the executor image tag in t 4. Confirm the executor is online and reporting the expected version under **Site admin > Executors > Instances**. +## Related configuration + +- [Add custom certificates to a Docker Compose deployment](/self-hosted/executors/custom-certificates#add-certificates-to-a-docker-compose-deployment) +- [Use private container registries](/self-hosted/executors/private-registries) + ## Note -Executors deployed via docker-compose do not use [Firecracker](/admin/executors/#how-it-works), meaning they require [privileged access](https://docs.docker.com/engine/reference/run/#runtime-privilege-and-linux-capabilities) to the docker daemon running on the host. +Executors deployed via Docker Compose do not use [Firecracker](/self-hosted/executors/firecracker), meaning they require [privileged access](https://docs.docker.com/engine/reference/run/#runtime-privilege-and-linux-capabilities) to the Docker daemon running on the host. If you have security concerns, consider deploying via [terraform](/self-hosted/executors/deploy-executors-terraform) or [installing the binary](/self-hosted/executors/deploy-executors-binary) directly. diff --git a/docs/self-hosted/executors/deploy-executors-kubernetes.mdx b/docs/self-hosted/executors/deploy-executors-kubernetes.mdx index 803f06510..6ce8db1c3 100644 --- a/docs/self-hosted/executors/deploy-executors-kubernetes.mdx +++ b/docs/self-hosted/executors/deploy-executors-kubernetes.mdx @@ -6,7 +6,21 @@ [Linux binary](/self-hosted/executors/deploy-executors-binary) for better long-term support. -The native Kubernetes Executors have a master Executor pod that schedules worker pods via the Kubernetes API. The master Executor pod manages the lifecycle of jobs, while the worker pods process the actual [batch change](/batch-changes/server-side) or [precise auto indexing](/code-navigation/auto-indexing) job specs. For more details, see [how it works](/admin/executors#native-kubernetes). +The native Kubernetes Executors have a master Executor pod that schedules worker pods via the Kubernetes API. The master Executor pod manages the lifecycle of jobs, while the worker pods process the actual [batch change](/batch-changes/server-side) or [precise auto indexing](/code-navigation/auto-indexing) job specs. Review the [deployment method comparison](/self-hosted/executors#choose-a-deployment-method) for its isolation and support status. + +![Native Kubernetes executor architecture](https://storage.googleapis.com/sourcegraph-assets/executor_kubernetes_native_arch.png) + +## How it works + +The executor runs as a pod and polls Sourcegraph for work. After dequeuing a job, it clones the target repository into a shared workspace and asks the Kubernetes API to create a job pod. Each step runs sequentially as an init container in that pod and shares the workspace through a volume. The executor streams the step logs and final job status back to Sourcegraph. + +**On this page** + +- [Requirements](#requirements) +- [Deployment](#deployment) +- [Upgrading executors](#upgrading-executors) +- [Additional notes](#additional-notes) +- [Related configuration](#related-configuration) ## Requirements @@ -129,14 +143,18 @@ Upgrading native Kubernetes executors follows the same pattern as the initial de ### Firecracker -Executors deployed on Kubernetes do not use [Firecracker](/admin/executors/#how-it-works). +Executors deployed on Kubernetes do not use [Firecracker](/self-hosted/executors/firecracker). If you have security concerns, consider deploying via [terraform](/self-hosted/executors/deploy-executors-terraform) or [installing the binary](/self-hosted/executors/deploy-executors-binary) directly. -### Job Scheduling +### Scale and schedule jobs -The following environment variables can be used to constrain which nodes Job Pods are scheduled on, +Run one native Kubernetes executor controller for each deployment. Do not scale the controller Deployment by adding replicas. To increase the number of jobs that the controller can run concurrently, set the Helm value `executor.maximumNumJobs` or the equivalent `EXECUTOR_MAXIMUM_NUM_JOBS` environment variable. The default Helm value is 10. + +Each job runs in its own pod and has its own workspace volume. By default, the workspace uses an `emptyDir` volume, so job pods do not need to run on the same node as the executor controller. If `KUBERNETES_JOB_VOLUME_TYPE` is set to `pvc`, the executor creates a separate PVC for each job. + +Without additional scheduling configuration, the Kubernetes scheduler can place job pods on any suitable node. Use the following optional environment variables to constrain their placement: - `EXECUTOR_KUBERNETES_NODE_NAME` - `EXECUTOR_KUBERNETES_NODE_SELECTOR` @@ -160,3 +178,9 @@ The Executor Docker image is available on Docker Hub at [`sourcegraph/executor-k ### Example Configuration YAML For an example of how to configure the Executor in Kubernetes, see the [`sourcegraph-executor-k8s` Helm chart values reference](https://github.com/sourcegraph/deploy-sourcegraph-helm/blob/main/charts/sourcegraph-executor/k8s/values.yaml). + +## Related configuration + +- [Add custom certificates using Kubernetes manifests](/self-hosted/executors/custom-certificates#add-certificates-to-a-kubernetes-deployment-using-manifests) +- [Add custom certificates using Helm](/self-hosted/executors/custom-certificates#add-certificates-to-a-kubernetes-deployment-using-helm) +- [Use private container registries](/self-hosted/executors/private-registries) diff --git a/docs/self-hosted/executors/deploy-executors-terraform-aws.mdx b/docs/self-hosted/executors/deploy-executors-terraform-aws.mdx index eeb50d724..5c070cbe8 100644 --- a/docs/self-hosted/executors/deploy-executors-terraform-aws.mdx +++ b/docs/self-hosted/executors/deploy-executors-terraform-aws.mdx @@ -5,6 +5,21 @@ provision machines running executors on AWS. See also: [Deploying on Google Cloud](/self-hosted/executors/deploy-executors-terraform-gcp) +## How it works + +The Terraform module provisions the AWS networking, Docker registry mirror, launch template, and optional autoscaling resources needed by executor instances. Each instance runs the executor binary, polls Sourcegraph for jobs, and processes them using [Firecracker isolation](/self-hosted/executors/firecracker) by default. The underlying job flow is the same as a [Linux binary deployment](/self-hosted/executors/deploy-executors-binary). + +**On this page** + +- [Basic definition](#basic-definition) +- [Terraform version](#terraform-version) +- [Permissions](#permissions) +- [Supported regions](#supported-regions) +- [Examples](#examples) +- [Step-by-step guide](#step-by-step-guide) +- [Auto-scaling](#auto-scaling) +- [Upgrading executors](#upgrading-executors) + ## Basic Definition The following is the minimum required definition to deploy an executor on AWS. @@ -46,7 +61,7 @@ module "executors" { | `private_networking` | If `true`, the executors and Docker registry mirror will live in a private subnet and communicate with the internet through a NAT Gateway. Defaults to `false`. See the [Private Single Executor](#private-single-executor) example. | | `randomize_resource_names` | Use randomized names for resources. Defaults to `false`. Existing resources are updated in-place when enabled. | | `permissions_boundary_arn` | The ARN of an IAM policy to use as the [permissions boundary](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_boundaries.html) for IAM roles and users created by the module. Optional. | -| `private_ca_cert_path` | Path to a private CA certificate file. Use this when executors need to communicate with a Sourcegraph instance that uses a certificate signed by a private/internal CA. Optional. | +| `private_ca_cert_path` | Path to a private CA certificate file. Use this when executors need to communicate with a Sourcegraph instance that uses a certificate signed by a private/internal CA. See [Use custom certificates with executors](/self-hosted/executors/custom-certificates). Optional. | See the [AWS Terraform module variables](https://github.com/sourcegraph/terraform-aws-executors/blob/main/modules/executors/variables.tf) for additional configurations. @@ -222,7 +237,7 @@ ubuntu@ip-10-0-1-42:~$ curl > NOTE: Auto scaling is currently not supported > when [downloading and running executor binaries yourself](/self-hosted/executors/deploy-executors-binary), -> and on managed instances when using self-hosted executors, since it requires deployment adjustments. +> and on Sourcegraph Cloud when using customer-managed executors, since it requires deployment adjustments. Auto-scaling of executor instances can help to increase concurrency of jobs, without paying for unused resources. With auto-scaling, you can scale down to 0 instances when no workload exist and scale up as far as you like and your cloud provider can support. Auto-scaling needs to be configured separately. @@ -306,7 +321,7 @@ Next, you can test whether the number of executors rises and shrinks as load spi ## Upgrading executors Upgrading executors is relatively uninvolved. Simply follow the instructions below. -Also, check the [changelog](https://sourcegraph.com/changelog) for any Executors related breaking changes or new features or flags that you might want to configure. See [Executors maintenance](/self-hosted/executors/deploy-executors#Maintaining-and-upgrading-executors) for version compatibility. +Also, check the [changelog](https://sourcegraph.com/changelog) for any executor-related breaking changes, features, or configuration flags before [upgrading executors](#upgrading-executors). ### **Step 1:** Update the source version of the terraform modules diff --git a/docs/self-hosted/executors/deploy-executors-terraform-gcp.mdx b/docs/self-hosted/executors/deploy-executors-terraform-gcp.mdx index bd2dc26e2..65d68669c 100644 --- a/docs/self-hosted/executors/deploy-executors-terraform-gcp.mdx +++ b/docs/self-hosted/executors/deploy-executors-terraform-gcp.mdx @@ -5,6 +5,21 @@ provision machines running executors on Google Cloud. See also: [Deploying on AWS](/self-hosted/executors/deploy-executors-terraform-aws) +## How it works + +The Terraform module provisions the Google Cloud networking, Docker registry mirror, instance template, and optional autoscaling resources needed by executor instances. Each instance runs the executor binary, polls Sourcegraph for jobs, and processes them using [Firecracker isolation](/self-hosted/executors/firecracker) by default. The underlying job flow is the same as a [Linux binary deployment](/self-hosted/executors/deploy-executors-binary). + +**On this page** + +- [Basic definition](#basic-definition) +- [Terraform version](#terraform-version) +- [Permissions](#permissions) +- [Supported regions](#supported-regions) +- [Examples](#examples) +- [Step-by-step guide](#step-by-step-guide) +- [Auto-scaling](#auto-scaling) +- [Upgrading executors](#upgrading-executors) + ## Basic Definition The following is the minimum required definition to deploy an executor on Google Cloud. @@ -47,7 +62,7 @@ module "executors" { | `executor_use_firecracker` | Whether to use [Firecracker](/self-hosted/executors/firecracker) sandboxing for job execution. Requires nested virtualization support. Defaults to `true`. | | `private_networking` | If `true`, the executors and Docker registry mirror will live in a private subnet and communicate with the internet through Cloud NAT. Defaults to `false`. See the [Private Single Executor](#private-single-executor) example. | | `randomize_resource_names` | Use randomized names for resources. Defaults to `false`. Enabling this on existing deployments will **recreate** executor resources. | -| `private_ca_cert_path` | Path to a private CA certificate file. Use this when executors need to communicate with a Sourcegraph instance that uses a certificate signed by a private/internal CA. Optional. | +| `private_ca_cert_path` | Path to a private CA certificate file. Use this when executors need to communicate with a Sourcegraph instance that uses a certificate signed by a private/internal CA. See [Use custom certificates with executors](/self-hosted/executors/custom-certificates). Optional. | See the [Google Cloud Terraform module variables](https://github.com/sourcegraph/terraform-google-executors/blob/main/modules/executors/variables.tf) for additional configurations. @@ -243,7 +258,7 @@ you@sourcegraph-executor-h0rv:~$ curl > NOTE: Auto scaling is currently not supported > when [downloading and running executor binaries yourself](/self-hosted/executors/deploy-executors-binary), -> and on managed instances when using self-hosted executors, since it requires deployment adjustments. +> and on Sourcegraph Cloud when using customer-managed executors, since it requires deployment adjustments. Auto-scaling of executor instances can help to increase concurrency of jobs, without paying for unused resources. With auto-scaling, you can scale down to 0 instances when no workload exist and scale up as far as you like and your cloud provider can support. Auto-scaling needs to be configured separately. @@ -325,7 +340,7 @@ Next, you can test whether the number of executors rises and shrinks as load spi ## Upgrading executors Upgrading executors is relatively uninvolved. Simply follow the instructions below. -Also, check the [changelog](https://sourcegraph.com/changelog) for any Executors related breaking changes or new features or flags that you might want to configure. See [Executors maintenance](/self-hosted/executors/deploy-executors#Maintaining-and-upgrading-executors) for version compatibility. +Also, check the [changelog](https://sourcegraph.com/changelog) for any executor-related breaking changes, features, or configuration flags before [upgrading executors](#upgrading-executors). ### **Step 1:** Update the source version of the terraform modules diff --git a/docs/self-hosted/executors/deploy-executors.mdx b/docs/self-hosted/executors/deploy-executors.mdx deleted file mode 100644 index 352e00a6f..000000000 --- a/docs/self-hosted/executors/deploy-executors.mdx +++ /dev/null @@ -1,322 +0,0 @@ -# Deploying Sourcegraph executors - -Executors can be deployed in a variety of manners. The supported deployment options are: - -- [Linux Binary Service](/self-hosted/executors/deploy-executors-binary) ([Firecracker](./firecracker) compatible) -- Terraform ([Firecracker](./firecracker) compatible): [AWS](/self-hosted/executors/deploy-executors-terraform-aws) | [Google Cloud](/self-hosted/executors/deploy-executors-terraform-gcp) -- [Native Kubernetes](/self-hosted/executors/deploy-executors-kubernetes) *(Beta — not recommended for production)* -- [Docker-in-Docker on Kubernetes](/self-hosted/executors/deploy-executors-dind) *(Beta — not recommended for production)* -- [Docker-Compose](/self-hosted/executors/deploy-executors-docker) - -See [deciding which executor deployment method to use ](../executors#deciding-which-executor-deployment-method-to-use) for more information on these different deployment options. - - - Executors are available with no additional setup required on Sourcegraph - Cloud. - - -### Resource recommendations - -It is recommended to set the resources based on the number of jobs an instance will process in parallel. - -A single job should have the following resources available. - -- **CPU:** 4 -- **Memory:** 12GB -- **Disk:** 20GB - -So, if you expect an Executor instance to process up to 4 jobs in parallel, the recommended resources for the machine are - -- **CPU:** 16 -- **Memory:** 48GB -- **Disk:** 80GB - -The above recommended resources can be changed to fit your constraints. See below for configuring resources for a Job. - - - The smallest machine type on AWS that can support Executors with - Firecracker is `c5n.metal` (72 vCPU and 192GB of Memory), but concurrency - can be turned up for the additional cost. - - -#### Job configuration - -The maximum number of Jobs an Executor instance can run in parallel is configured by the Environment Variable `EXECUTOR_MAXIMUM_NUM_JOBS`. - -The CPU and Memory usage of an individual Job is configured by the Environment Variables `EXECUTOR_JOB_NUM_CPUS` -and `EXECUTOR_JOB_MEMORY`. - -See [executor configuration](/self-hosted/executors/executors-config) for a full list of configuration options. - - - Changing CPU and Memory for jobs will affect the overall requirements - for an Executor instance. - - -#### AWS - -It is recommended to add the following **Disk** configuration in AWS. - -- **IOPS:** Equal to the Disk Size (so if **Disk** is 100GB, then IOPS is 100) -- **Throughput:** 125MiB/s - -### Supported infrastructures - -- **Operating System:** Linux-based -- **Architecture:** AMD64 - -#### Firecracker requirements - -To run Executors with Firecracker enabled requires the machine to support [Kernel-based Virtual Machine](https://en.wikipedia.org/wiki/Kernel-based_Virtual_Machine). -See [deploying Executors binary](/self-hosted/executors/deploy-executors-binary) for additional information on configuring Linux Machines. - -#### Cloud providers - -Machines on Cloud Providers have additional constraints for use with firecracker. - -- **AWS:** machine type must be - a [metal instance (`.metal`)](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-types.html) -- **GCP:** the instance - must [enable nested virtualization](https://cloud.google.com/compute/docs/instances/nested-virtualization/enabling) - -## Executor authentication - -Executors must be run separately from your Sourcegraph instance. - -Since they must still be able to reach the Sourcegraph instance in order to dequeue and perform work, requests between the Sourcegraph instance and the executors are authenticated via a shared secret. - -Before starting any executors, generate an arbitrary secret string (with at least 20 characters) and [set it as the `executors.accessToken` key in your Sourcegraph instance's site-config](/admin/config/site-config#view-and-edit-site-configuration). The `EXECUTOR_FRONTEND_PASSWORD` environment variable on the executor instance will need to be configured with the same secret string. - -## Executor installation - -Once the shared secret is set in Sourcegraph, you can start setting up executors that can use that access token to talk to the Sourcegraph instance. - -### Supported installation types - - - - - - - - - - -## Validating executor deployments - -If executor instances boot correctly and can authenticate with the Sourcegraph frontend, they will show up in the **Executors** page under **Site admin > Maintenance**. - -![Executor list in UI](https://storage.googleapis.com/sourcegraph-assets/docs/images/code-intelligence/sg-3.34/executor-ui-test.png) - -## Using private registries - -If you want to use docker images stored in a private registry that requires authentication, follow this section to configure it. - -Depending on the executor runtime that is being used, different options exist for provisioning access to private container registries: - -- Through a special secret called `DOCKER_AUTH_CONFIG`, set in [executor secrets](/admin/executors/executor-secrets) in Sourcegraph. -- Through the `EXECUTOR_DOCKER_AUTH_CONFIG` environment variable (also available as a variable in the terraform modules for executors). -- Through the [`config.json` file in `~/.docker`](https://docs.docker.com/engine/reference/commandline/login/). **If using executors with firecracker enabled (recommended) this option is not available.** - -When multiple of the above options are combined, executors will use them in the following order: - -- If a `DOCKER_AUTH_CONFIG` executor secret is configured, that will be preferred. That is so that users can overwrite the credentials being used in their user-settings. This is the only option available in Sourcegraph Cloud. -- If the `EXECUTOR_DOCKER_AUTH_CONFIG` environment variable is set, this will be used as the next option. -- Finally, if neither of the above are set, executors will fall back to the `config.json` file in the user home directory of the user that is owning the executor process. NOTE: This is not available in the firecracker runtime, as the rootfs is not shared with the host. - -The docker CLI supports three ways to use credentials: - -- Using static credentials -- Using [credential helpers](https://docs.docker.com/engine/reference/commandline/login/#credential-helpers) -- Using [credential stores](https://docs.docker.com/engine/reference/commandline/login/#credentials-store) - -Credential helpers and credential stores are only available for use with the `config.json` configuration option, as they require additional infrastructural changes. Thus, those options are not available on Sourcegraph Cloud. - -### Using static credentials - -The `EXECUTOR_DOCKER_AUTH_CONFIG` environment variable and the `DOCKER_AUTH_CONFIG` secret expect a docker config with only the necessary properties set for configuring authentication. -The format of this config supports multiple registries to be configured and looks like this: - -```json -{ - "auths": { - "myregistry.example.com[:port]": { - "auth": "base64(username:password)" - }, - "myregistry2.example.com[:port]": { - "auth": "base64(username:password)" - } - } -} -``` - -You can either create this config yourself by hand, or let docker do it for you by running: - -```bash -TMP_FILE="$(mktemp -d)" bash -c 'echo "" | docker --config "${TMP_FILE}" login --username "" --password-stdin "" && cat "${TMP_FILE}/config.json" && rm -rf "${TMP_FILE}"' -``` - -> NOTE: This doesn't work on Docker for Mac if "Securely store Docker logins in macOS keychain" is enabled, as it would store it in the credentials store instead. - -You can also run the following: - -```bash -echo -n "username:password" | base64 -``` - -and then paste the result of that into a JSON string like this: - -```json -{ - "auths": { - "myregistry.example.com[:port]": { - "auth": "" - } - } -} -``` - -For Google Container Registry, [follow this guide](https://cloud.google.com/container-registry/docs/advanced-authentication#json-key) for how to obtain long-lived static credentials. - -### Configuring the auth config for use in executors - -Now that the config has been obtained, it can be used for the `EXECUTOR_DOCKER_AUTH_CONFIG` environment variable (and terraform variable `docker_auth_config`) or you can create an [executor secret](/admin/executors/executor-secrets#creating-a-new-secret) called `DOCKER_AUTH_CONFIG`. Global executor secrets will be available to every execution, while user and organization level executor secrets will only be available to the namespaces executions. - -## Using custom certificates with executors - -By default, executors will search for certificates in the following files and directories: - -| Directory or file | Distribution | -| --------------------------------------------------- | ------------------------- | -| `/etc/ssl/certs/ca-certificates.crt` | Debian/Ubuntu/Gentoo etc. | -| `/etc/pki/tls/certs/ca-bundle.crt` | Fedora/RHEL 6 | -| `/etc/ssl/ca-bundle.pem` | OpenSUSE | -| `/etc/pki/tls/cacert.pem` | OpenELEC | -| `/etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem` | CentOS/RHEL 7 | -| `/etc/ssl/cert.pem` | Alpine Linux | -| `/etc/ssl/certs` | SLES10/SLES11 | -| `/etc/pki/tls/certs` | Fedora/RHEL | -| `/system/etc/security/cacerts` | Android | - -If your environment makes use of custom certificates, you can add them to one of these locations in order for executors to pick them up. - -### Adding certificates to a binary deployment - -> NOTE: see the [troubleshooting guide](/self-hosted/executors/executors-troubleshooting#connecting-to-cloud-provider-executor-instances) for instructions on how to connect to cloud provider VMs. - -After successfully [deploying binaries](/self-hosted/executors/deploy-executors-binary), follow these steps: - -1. Copy your certificates to `/etc/ssl/certs`. -1. If you are using systemd, run `systemctl restart executor`. If not, proceed to the next step. -1. Run `executor run` on the VM in order to restart the executor service. - -#### Adding certificates with Firecracker - -When running executors with the [firecracker runtime](/self-hosted/executors/firecracker), custom certificates need to be added in -the container that is running within the Firecracker VM. To add custom certificates, you must create a new Docker image -that contains the certificates. For example, - -```dockerfile -FROM upstream:tag - -# Copy the certificates into the container -COPY customcert.crt /usr/local/share/ca-certificates/customcert.crt -# Update the certificate store -RUN chmod 644 /usr/local/share/ca-certificates/customcert.crt && update-ca-certificates -# ... -``` - -##### Code Intel - -Once the custom image is built, you can configure the executor to use it by setting -the `codeIntelAutoIndexing.indexerMap` to use the custom image. For example, - -```json -"codeIntelAutoIndexing.indexerMap": { - "go": "myregistry.company.com/scip-go:custom" -} -``` - -### Adding certificates to a Kubernetes deployment using manifests - -First, add the certificate data as a secret in your preferred namespace: - -```shell -SECRET_NAME=custom-certs -CERT_PATH=/path/to/cert.pem -kubectl create secret generic $SECRET_NAME --from-file=customcert.crt=$CERT_PATH -``` - -Or as a declarative manifest: - -```yaml -apiVersion: v1 -kind: Secret -metadata: - name: custom-certs -data: - customcert.crt: $(base64 -i /path/to/cert.pem) -type: Opaque -``` - -Next, mount the secret in the executor deployment. Add the following snippet to `spec.template.spec.volumes` of each executor deployment: - -```yaml -- name: custom-certs - secret: - secretName: custom-certs -``` - -Also add this snippet to `spec.template.spec.containers.volumeMounts` of each executor deployment (specifically, the executor container, in case you inject any sidecars): - -```yaml -- mountPath: /etc/ssl/certs - name: custom-certs - readOnly: true -``` - -Next, apply the updated YAML manifests. Once the executors have rolled out, they should be picking up your custom certificates. - -### Adding certificates to a Kubernetes deployment using Helm - -You may follow the same instructions for the manifest deployment to set custom certificates. - -### Adding certificates to a Docker Compose deployment - -First, ensure that the certificate file is present on the host machine. Next, add the volume to the [executor compose file](https://sourcegraph.com/github.com/sourcegraph/deploy-sourcegraph-docker/-/blob/docker-compose/executors/executor.docker-compose.yaml?L26-30): - -```yaml -- '/path/to/certs:/etc/ssl/certs' -``` - -Next, restart the deployment with `docker-compose down` and `docker-compose up -d`. diff --git a/docs/self-hosted/executors/executors-config.mdx b/docs/self-hosted/executors/executors-config.mdx index 164b780d7..0a6962654 100644 --- a/docs/self-hosted/executors/executors-config.mdx +++ b/docs/self-hosted/executors/executors-config.mdx @@ -41,7 +41,7 @@ The following environment variables are specific to the native Kubernetes Execut | Name | Default Value | Description | | ------------------------------------------------------------- | :---------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `EXECUTOR_KUBERNETES_CONFIG_PATH` | N/A | The path to the Kubernetes configuration file. If not specified, the in cluster config is used. | -| `EXECUTOR_KUBERNETES_NODE_NAME` | N/A | The name of the Kubernetes Node to create Jobs in. If not specified, the Pods are created in the first available node. | +| `EXECUTOR_KUBERNETES_NODE_NAME` | N/A | The name of the Kubernetes node on which to create Job Pods. If unset, the Kubernetes scheduler selects a suitable node. | | `EXECUTOR_KUBERNETES_NODE_SELECTOR` | N/A | A comma separated list of values to use as a node selector for Kubernetes Jobs. e.g. `foo=bar,app=my-app` | | `EXECUTOR_KUBERNETES_NODE_REQUIRED_AFFINITY_MATCH_EXPRESSION` | N/A | The JSON encoded required affinity match expressions for Kubernetes Jobs. e.g. `[{"key": "foo", "operator": "In", "values": ["bar"]}]` | | `EXECUTOR_KUBERNETES_NODE_REQUIRED_AFFINITY_MATCH_FIELDS` | N/A | The JSON encoded required affinity match fields for Kubernetes Jobs. e.g. `[{"key": "foo", "operator": "In", "values": ["bar"]}]` | diff --git a/docs/self-hosted/executors/executors-troubleshooting.mdx b/docs/self-hosted/executors/executors-troubleshooting.mdx index b0631b71e..8f0dbaffd 100644 --- a/docs/self-hosted/executors/executors-troubleshooting.mdx +++ b/docs/self-hosted/executors/executors-troubleshooting.mdx @@ -188,7 +188,7 @@ This section lists some common mistakes with environment variables. Some of thes ## Verify Firecracker support -The VM instance must [support KVM](/self-hosted/executors/deploy-executors#firecracker-requirements). In effect, this means the instance must meet certain requirements depending on the Cloud provider in use. +The VM instance must [support KVM](/self-hosted/executors/firecracker#how-to-use). In effect, this means the instance must meet certain requirements depending on the cloud provider in use. ### GCP @@ -226,14 +226,13 @@ Verify that the machine type in use is of type `.metal` (e.g. `M5.metal`). ## Kubernetes Job Scheduling -There are a few environment variables available that can be used to determine which node an Executor Job Pod will be -scheduled in. +By default, the Kubernetes scheduler can place executor Job Pods on any suitable node. Each job has its own workspace volume: an `emptyDir` by default, or a per-job PVC when `KUBERNETES_JOB_VOLUME_TYPE` is set to `pvc`. Job Pods do not need to run on the same node as the executor controller. -The following environment variables can be used to determine where the Job Pods will be scheduled. +The following optional environment variables constrain where Job Pods are scheduled. | Name | Default Value | Description | | ------------------------------------------------------------ | :------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| EXECUTOR_KUBERNETES_NODE_NAME | N/A | The name of the Kubernetes Node to create Jobs in. If not specified, the Pods are created in the first available node. | +| EXECUTOR_KUBERNETES_NODE_NAME | N/A | The name of the Kubernetes node on which to create Job Pods. If unset, the Kubernetes scheduler selects a suitable node. | | EXECUTOR_KUBERNETES_NODE_SELECTOR | N/A | A comma separated list of values to use as a node selector for Kubernetes Jobs. e.g. `foo=bar,app=my-app` | | EXECUTOR_KUBERNETES_NODE_REQUIRED_AFFINITY_MATCH_EXPRESSIONS | N/A | The JSON encoded required affinity match expressions for Kubernetes Jobs. e.g. `[{"key": "foo", "operator": "In", "values": ["bar"]}]` | | EXECUTOR_KUBERNETES_NODE_REQUIRED_AFFINITY_MATCH_FIELDS | N/A | The JSON encoded required affinity match fields for Kubernetes Jobs. e.g. `[{"key": "foo", "operator": "In", "values": ["bar"]}]` | diff --git a/docs/self-hosted/executors/firecracker.mdx b/docs/self-hosted/executors/firecracker.mdx index db035d529..f43ae46ca 100644 --- a/docs/self-hosted/executors/firecracker.mdx +++ b/docs/self-hosted/executors/firecracker.mdx @@ -1,12 +1,23 @@ # Firecracker +## How it works + [Executors](/admin/executors/), by design, are services that run arbitrary code supplied by a user. The executor jobs produced by precise code intelligence [auto-indexing](/code-navigation/auto-indexing) and [server-side batch changes](/batch-changes/server-side) are built to invoke _templated_ execution plans, where some parts of execution may invoke code configured by a Sourcegraph administrator or user. Generating a precise index requires invoking an indexer for that language. Batch changes are configured to run arbitrary tooling over the contents of a repository. Because Sourcegraph has access to your code and credentials to external tools, we've designed executors to be able to run separately from the Sourcegraph instance (on a raw compute node) with the minimum API surface area and user code exposed to the job required to meet its objective. This effectively reduces the blast radius of a misconfiguration or insecure configuration. Jobs handled by the executor are defined as a series of Docker (or Docker-like) image invocations sharing the same filesystem workspace initialized with the contents of the repository being indexed or modified. When the executor process is running on a raw compute node (specifically, not using the Kubernetes runner in-cluster), the executor can create a [Firecracker "MicroVM"](https://firecracker-microvm.github.io/) for every job and run the containers in a _completely isolated_ manner. The Docker (or Docker-like) daemon running in a MicroVM is isolated from the host, hence each job is also isolated from one another. -See [this architecture diagram](/self-hosted/executors#firecracker) detailing Firecracker isolation. +![Executor architecture with Firecracker isolation](https://storage.googleapis.com/sourcegraph-assets/executor_firecracker_arch.png) + +The executor still polls Sourcegraph, clones one repository into a job workspace, and runs the job steps sequentially. For each job, Ignite starts a dedicated Firecracker MicroVM and attaches the workspace to it. Docker containers run inside that MicroVM rather than directly on the executor host, and the executor streams their logs and final status back to Sourcegraph. + +**On this page** + +- [When to use Firecracker](#when-to-use) +- [How to use Firecracker](#how-to-use) +- [Known caveats](#known-caveats) +- [Related configuration](#related-configuration) ## When to use @@ -42,3 +53,8 @@ Executor can be fined tuned with the following environment variables, ## Known caveats We configure iptables to prevent Firecracker-isolated processes from talking on [Private IPv4 Addresses](https://en.wikipedia.org/wiki/Private_network#Private_IPv4_addresses) (providing network-level isolation). They can talk to DNS and Sourcegraph only, which prevents users from talking to a 10.x.x.x, 172.x.x.x, or 192.168.x.x range IP. + +## Related configuration + +- [Add custom certificates with Firecracker](/self-hosted/executors/custom-certificates#add-certificates-with-firecracker) +- [Use private container registries](/self-hosted/executors/private-registries) diff --git a/docs/self-hosted/executors/index.mdx b/docs/self-hosted/executors/index.mdx index 63a7d0572..2ced1350a 100644 --- a/docs/self-hosted/executors/index.mdx +++ b/docs/self-hosted/executors/index.mdx @@ -1,181 +1,122 @@ -# Executors +# Deploy executors - - Supported on [Enterprise](/pricing/plans/enterprise) plans. - Available via the Web app. - +Executors run resource-intensive or untrusted jobs for precise code navigation and Batch Changes. This guide helps self-hosted operators choose a deployment method and prepare the infrastructure that executors require. -Executors are Sourcegraph's solution for running untrusted code in a secure and controllable way. Executors provide a sandbox that can run resource-intensive or untrusted tasks on behalf of the Sourcegraph instance, such as: +For feature concepts, Sourcegraph configuration, connected instance management, and executor secrets, see [Administer executors](/admin/executors). -- [Automatically indexing a repository for precise code navigation](/code-navigation/auto-indexing) -- [Running batch changes](/batch-changes/server-side) +## Prepare to deploy executors -## Installation +Complete these prerequisites before deploying executor infrastructure: -To deploy executors for your Sourcegraph instance, follow our [executor deployment guide](executors/deploy-executors). +- **Confirm version compatibility.** Run the same major and minor version of the executor as your Sourcegraph Enterprise instance. +- **Configure authentication to your Sourcegraph instance.** Complete [Setting up executors](/admin/executors#setting-up-executors) to create the shared authentication secret. The guide for your deployment method explains how to provide that secret to the executor. +- **Confirm network connectivity.** Executor infrastructure must be able to reach the Sourcegraph frontend. +- **Provide a supported runtime.** Current executor deployments require a Linux AMD64 (`x86_64`) environment. +- **Plan executor capacity.** Size CPU, memory, and disk for the number and type of concurrent jobs. See [Plan executor capacity](/self-hosted/executors/resource-sizing). -## Why use executors? +## Choose a deployment method -Running untrusted code is a core requirement of features such as precise code navigation [auto-indexing](/code-navigation/auto-indexing), and [running batch changes server-side](/batch-changes/server-side). +The primary decision is whether jobs require a virtual-machine isolation boundary. -Auto-indexing jobs, in particular, require the invocation of arbitrary and untrusted code to support the resolution of project dependencies. Invocation of post-install hooks, use of insecure [package management tools](https://github.com/golang/go/issues/29230), and package manager proxy attacks can create opportunities in which an adversary can gain unlimited use of compute or exfiltrate data. The latter outcome is particularly dangerous for on-premise installations of Sourcegraph, which is the chosen option for companies wanting to maintain strict privacy of their code property. +- **Use Firecracker for the strongest supported job isolation.** Choose a Terraform deployment on AWS or Google Cloud, or install the Linux binary on compatible infrastructure. Firecracker requires KVM: AWS uses bare-metal instances, while Google Cloud supports nested virtualization. +- **Use Docker when KVM is unavailable and privileged container execution is acceptable.** Install the Linux binary in Docker mode or use Docker Compose. +- **For Kubernetes deployments, prefer Docker-in-Docker.** Docker-in-Docker is the preferred option when running executors in an existing Kubernetes cluster. It remains in beta and does not provide the same MicroVM isolation boundary as Firecracker. Native Kubernetes executors are being deprecated. -Instead of performing this work within the Sourcegraph instance, where code is available on disk and unprotected internal services are available over the local network, we move untrusted compute into a sandboxed environment, the _executor_, that has access only to the clone of a single repository on disk (its _workspace_) and to the public internet. - -## Sandboxing Model - -Executors can be deployed with [Firecracker](https://sourcegraph.com/github.com/firecracker-microvm/firecracker) isolation in accordance with our [sandboxing model](/admin/executors/#how-it-works) to isolate jobs from each other and the host. -This requires executors to be run on machines capable of running Linux KVM extensions. On the most popular cloud providers, this either means running executors on bare-metal machines (AWS) or machines capable of nested virtualization (GCP). - -Optionally, executors can be run without using KVM-based isolation, which is less secure but might be easier to run on common machines. - -## Deciding which executor deployment method to use - -Deciding how to deploy the executor depends on your use case. For users that wish to process their untrusted compute in the most secure manner, we recommend leveraging the [Firecracker](./executors/firecracker) isolation method. For users that have constraints around running nested virtualization, the following flowchart can help you decide which deployment option is best for your environment: - -![Executor Deployment Flowchart](https://storage.googleapis.com/sourcegraph-assets/executor_deployment_tree.png) - -> **Note:** The flowchart above shows Kubernetes-based deployment options. Both Native Kubernetes -> and Docker-in-Docker Kubernetes executors are currently in beta with known production reliability -> limitations. For production workloads, Terraform or Linux binary deployments are recommended -> even when nested virtualization is not available. - -## How it works - -Executor instances are capable of being deployed in a variety of ways. Each runtime varies in how jobs are executed. - -### Locally with src-cli - -![Executors architecture - local with src-cli](https://storage.googleapis.com/sourcegraph-assets/executor_src_local_arch.png) - -1. User runs the `src` (e.g. `src batch`) command from the command line. -2. `src` calls the Sourcegraph API to clone a repository. - 1. The repositories are written to a directory. -3. A Docker Container is created for each "step." - 1. The directory containing the repository is mounted to the container. - 2. "Steps" are ran in sequential order. -4. The container run a defined command against the repository. -5. Logs from the container are sent back to `src`. -6. At the end of processing all repositories, the result is sent to a Sourcegraph API. - 1. e.g. Batch Changes sends a `git diff` to a Sourcegraph API (and invokes other APIs). - -### Binary - -![Executors architecture - binary](https://storage.googleapis.com/sourcegraph-assets/executor_binary_arch.png) - -1. The executor binary is installed to a machine. - 1. Additional executables (e.g. Docker, `src`) are installed as well -2. The executor instances pulls for available Jobs from a Sourcegraph API -3. A user initiates a process that creates executor Jobs. -4. The executor instance "dequeues" a Job. -5. Executor calls the Sourcegraph API to clone a repository. - 1. The repositories are written to a directory. -6. A Docker Container is created for each "step." - 1. If the Job is `batches` (non-native execution), `src` is invoked - 2. Docker is invoked directly for other Jobs (`codeintel` and native execution `batches`) - 3. The directory containing the repository is mounted to the container. - 4. "Steps" are ran in sequential order. -7. The container run a defined command against the repository. -8. Logs from the container are sent back to the executor. -9. Logs are streamed from the executor to a Sourcegraph API -10. The executor calls a Sourcegraph API to that "complete" the Job. - -### Firecracker - -> NOTE: [What the heck is firecracker, anyway](/self-hosted/executors/firecracker)?? - -![Executors architecture - firecracker](https://storage.googleapis.com/sourcegraph-assets/executor_firecracker_arch.png) - -1. The executor binary is installed to a machine. - 1. Additional executables (e.g. Docker, `src`) are installed as well -2. The executor instances pulls for available Jobs from a Sourcegraph API -3. A user initiates a process that creates executor Jobs. -4. The executor instance "dequeues" a Job. -5. Executor calls the Sourcegraph API to clone a repository. - 1. The repositories are written to a directory. -6. `ignite` starts up a Docker container that spawns a single Firecracker VM within the Docker container. - 1. The directory containing the repository is mounted to the VM. -7. Docker Container is created in the Firecracker VM for each "step." - 1. If the Job is `batches` (non-native execution), `src` is invoked - 2. Docker is invoked directly for other Jobs (`codeintel` and native execution `batches`) - 3. "Steps" are ran in sequential order. -8. Within each Firecracker VM a single Docker container is created -9. The container run a defined command against the repository. -10. Logs from the container are sent back to the executor. -11. Logs are streamed from the executor to a Sourcegraph API -12. The executor calls a Sourcegraph API to that "complete" the Job. - -### Docker - -![Executors architecture - docker](https://storage.googleapis.com/sourcegraph-assets/executor_docker_arch.png) - -1. The executor image is started as a Docker container on a machine -2. The executor pulls for available Jobs from a Sourcegraph API -3. A user initiates a process that creates executor Jobs. -4. The executor instance "dequeues" a Job. -5. Executor calls the Sourcegraph API to clone a repository. - 1. The repositories are written to a directory. -6. A Docker Container is created for each "step." - 1. If the Job is `batches` (non-native execution), `src` is invoked - 2. Docker is invoked directly for other Jobs (`codeintel` and native execution `batches`) - 3. The directory containing the repository is mounted to the container. - 4. "Steps" are ran in sequential order. -7. The container run a defined command against the repository. -8. Logs from the container are sent back to the executor. -9. Logs are streamed from the executor to a Sourcegraph API -10. The executor calls a Sourcegraph API to that "complete" the Job. - -### Native Kubernetes - - - Native Kubernetes executors are in beta and are not recommended for production use. - See the [deployment guide](/self-hosted/executors/deploy-executors-kubernetes) for details - on known limitations. - - -![Executors architecture - native kubernetes](https://storage.googleapis.com/sourcegraph-assets/executor_kubernetes_native_arch.png) - -1. The executor image is started as a pod in a Kubernetes node -2. The executor pulls for available Jobs from a Sourcegraph API -3. A user initiates a process that creates executor Jobs. -4. The executor instance "dequeues" a Job. -5. Executor calls the Sourcegraph API to clone a repository. - 1. The repositories are written to a directory. -6. A Kubernetes Job is created for each "step." - 1. The directory containing the repository is mounted to the container. - 2. "Steps" are ran in sequential order. -7. The container run a defined command against the repository. -8. Logs from the container are sent back to the executor. -9. Logs are streamed from the executor to a Sourcegraph API -10. The executor calls a Sourcegraph API to that "complete" the Job. - -### Docker-in-Docker Kubernetes +![Flowchart for choosing an executor deployment method](https://storage.googleapis.com/sourcegraph-assets/executor_deployment_tree.png) - Docker-in-Docker Kubernetes executors are in beta and are not recommended for production use. - See the [deployment guide](/self-hosted/executors/deploy-executors-dind) for details on known - limitations. + Executors run untrusted repository code and build tooling. Deployment + methods without Firecracker do not provide a MicroVM boundary. Isolate + executor hosts or nodes from sensitive workloads, restrict access to private + networks and cloud metadata services, and use disposable compute where + possible. -![Executors architecture - docker in docker kubernetes](https://storage.googleapis.com/sourcegraph-assets/executor_kubernetes_dind_arch.png) - -1. The executor image is started as a container in Kubernetes Pod - 1. The dind image is started as a sidecar container in the same Kubernetes Pod -2. The executor pulls for available Jobs from a Sourcegraph API -3. A user initiates a process that creates executor Jobs. -4. The executor instance "dequeues" a Job. -5. Executor calls the Sourcegraph API to clone a repository. - 1. The repositories are written to a directory. -6. A Docker Container is created for each "step." - 1. If the Job is `batches` (non-native execution), `src` is invoked - 2. Docker is invoked directly for other Jobs (`codeintel` and native execution `batches`) - 3. The directory containing the repository is mounted to the container. - 4. "Steps" are ran in sequential order. -7. The container run a defined command against the repository. -8. Logs from the container are sent back to the executor. -9. Logs are streamed from the executor to a Sourcegraph API -10. The executor calls a Sourcegraph API to that "complete" the Job. - -## Troubleshooting - -Refer to the [Troubleshooting Executors](/self-hosted/executors/executors-troubleshooting) document for common debugging operations. +### Recommended deployment methods + + + + + + + + + +### Kubernetes deployment methods + + + + + + +## Validating executor deployments + +Follow the validation steps in the guide for your selected deployment method. After the executor starts, confirm that it is active and reporting the expected version under **Site admin > Maintenance > Executor instances**. + +![Executor instances listed in the Sourcegraph site administration UI](https://storage.googleapis.com/sourcegraph-assets/docs/images/code-intelligence/sg-3.34/executor-ui-test.png) + +## Configure and operate executors + + + + + + + + +For details about the strongest supported job-isolation boundary, see [Firecracker isolation and caveats](/self-hosted/executors/firecracker). diff --git a/docs/self-hosted/executors/private-registries.mdx b/docs/self-hosted/executors/private-registries.mdx new file mode 100644 index 000000000..74ae67a6b --- /dev/null +++ b/docs/self-hosted/executors/private-registries.mdx @@ -0,0 +1,73 @@ +# Use private container registries + +If you want to use docker images stored in a private registry that requires authentication, follow this section to configure it. + +Depending on the executor runtime that is being used, different options exist for provisioning access to private container registries: + +- Through a special secret called `DOCKER_AUTH_CONFIG`, set in [executor secrets](/admin/executors/executor-secrets) in Sourcegraph. +- Through the `EXECUTOR_DOCKER_AUTH_CONFIG` environment variable (also available as a variable in the terraform modules for executors). +- Through the [`config.json` file in `~/.docker`](https://docs.docker.com/engine/reference/commandline/login/). **If using executors with firecracker enabled (recommended) this option is not available.** + +When multiple of the above options are combined, executors will use them in the following order: + +- If a `DOCKER_AUTH_CONFIG` executor secret is configured, that will be preferred. That is so that users can overwrite the credentials being used in their user-settings. This is the only option available in Sourcegraph Cloud. +- If the `EXECUTOR_DOCKER_AUTH_CONFIG` environment variable is set, this will be used as the next option. +- Finally, if neither of the above are set, executors will fall back to the `config.json` file in the user home directory of the user that is owning the executor process. NOTE: This is not available in the firecracker runtime, as the rootfs is not shared with the host. + +The docker CLI supports three ways to use credentials: + +- Using static credentials +- Using [credential helpers](https://docs.docker.com/engine/reference/commandline/login/#credential-helpers) +- Using [credential stores](https://docs.docker.com/engine/reference/commandline/login/#credentials-store) + +Credential helpers and credential stores are only available for use with the `config.json` configuration option, as they require additional infrastructural changes. Thus, those options are not available on Sourcegraph Cloud. + +## Use static credentials + +The `EXECUTOR_DOCKER_AUTH_CONFIG` environment variable and the `DOCKER_AUTH_CONFIG` secret expect a docker config with only the necessary properties set for configuring authentication. +The format of this config supports multiple registries to be configured and looks like this: + +```json +{ + "auths": { + "myregistry.example.com[:port]": { + "auth": "base64(username:password)" + }, + "myregistry2.example.com[:port]": { + "auth": "base64(username:password)" + } + } +} +``` + +You can either create this config yourself by hand, or let docker do it for you by running: + +```bash +TMP_FILE="$(mktemp -d)" bash -c 'echo "" | docker --config "${TMP_FILE}" login --username "" --password-stdin "" && cat "${TMP_FILE}/config.json" && rm -rf "${TMP_FILE}"' +``` + +> NOTE: This doesn't work on Docker for Mac if "Securely store Docker logins in macOS keychain" is enabled, as it would store it in the credentials store instead. + +You can also run the following: + +```bash +echo -n "username:password" | base64 +``` + +and then paste the result of that into a JSON string like this: + +```json +{ + "auths": { + "myregistry.example.com[:port]": { + "auth": "" + } + } +} +``` + +For Google Container Registry, [follow this guide](https://cloud.google.com/container-registry/docs/advanced-authentication#json-key) for how to obtain long-lived static credentials. + +## Configure registry authentication for executors + +Now that the config has been obtained, it can be used for the `EXECUTOR_DOCKER_AUTH_CONFIG` environment variable (and terraform variable `docker_auth_config`) or you can create an [executor secret](/admin/executors/executor-secrets#creating-a-new-secret) called `DOCKER_AUTH_CONFIG`. Global executor secrets will be available to every execution, while user and organization level executor secrets will only be available to the namespaces executions. diff --git a/docs/self-hosted/executors/resource-sizing.mdx b/docs/self-hosted/executors/resource-sizing.mdx new file mode 100644 index 000000000..ff9ae180a --- /dev/null +++ b/docs/self-hosted/executors/resource-sizing.mdx @@ -0,0 +1,38 @@ +# Plan executor capacity + +Executor capacity depends on the number of jobs each executor processes concurrently and the resources allocated to each job. Workload size and the selected deployment method can increase the total infrastructure required. + +## Start with the default job resources + +The default executor configuration allocates the following resources to each job: + +| Resource | Default per job | +| -------- | --------------: | +| CPU | 4 cores | +| Memory | 12 GB | +| Disk | 20 GB | + +Use these defaults as a starting point, then account for the executor host, container runtime, operating system, and any deployment-specific overhead. Monitor real workloads and adjust capacity when jobs are resource constrained or executor infrastructure is consistently underused. + +## Calculate capacity for concurrent jobs + +`EXECUTOR_MAXIMUM_NUM_JOBS` controls the maximum number of jobs an executor can process concurrently. As a starting estimate, multiply the per-job resources by this value. + +For example, an executor processing four jobs concurrently with the defaults needs approximately 16 CPU cores, 48 GB of memory, and 80 GB of job disk, plus resources for the host and runtime. + +You can adjust the calculation with these settings: + +- `EXECUTOR_JOB_NUM_CPUS` controls CPU allocated to each job. +- `EXECUTOR_JOB_MEMORY` controls memory allocated to each job. +- `EXECUTOR_FIRECRACKER_DISK_SPACE` controls disk allocated to each Firecracker virtual machine. + +See the [executor configuration reference](/self-hosted/executors/executors-config) for the defaults and behavior of each setting. + +## Account for the deployment method + +- **Firecracker:** The host must have enough capacity for each concurrent MicroVM in addition to host overhead. Infrastructure must also support KVM. See [Firecracker isolation](/self-hosted/executors/firecracker). +- **Docker:** Job limits apply to containers, but the Docker daemon and executor also consume host resources. +- **Kubernetes:** Include executor pods, sidecars, job pods, and cluster scheduling constraints when sizing nodes or node pools. +- **Terraform:** Choose an instance type that supports the selected isolation method, then tune executor concurrency and autoscaling for the workload. See the [AWS](/self-hosted/executors/deploy-executors-terraform-aws#auto-scaling) or [Google Cloud](/self-hosted/executors/deploy-executors-terraform-gcp#auto-scaling) deployment guide. + +For AWS deployments, provision disk throughput and IOPS for the expected concurrent workload. The Terraform module defaults to 125 MiB/s throughput; increase it when workload measurements show that disk performance is a bottleneck. diff --git a/docs/self-hosted/index.mdx b/docs/self-hosted/index.mdx index 7d95e1784..75878f207 100644 --- a/docs/self-hosted/index.mdx +++ b/docs/self-hosted/index.mdx @@ -58,7 +58,7 @@ Get started running Sourcegraph on-prem. ## [Executors](/self-hosted/executors/) - [Executors overview](/self-hosted/executors/) -- [Deploy executors](/self-hosted/executors/deploy-executors) +- [Deploy executors](/self-hosted/executors) - [Kubernetes deployment](/self-hosted/executors/deploy-executors-kubernetes) *(Beta)* - Terraform deployment: [AWS](/self-hosted/executors/deploy-executors-terraform-aws) | [Google Cloud](/self-hosted/executors/deploy-executors-terraform-gcp) - [Docker deployment](/self-hosted/executors/deploy-executors-docker) diff --git a/docs/technical-changelog.mdx b/docs/technical-changelog.mdx index 9b41994ed..9169574f3 100644 --- a/docs/technical-changelog.mdx +++ b/docs/technical-changelog.mdx @@ -12459,7 +12459,7 @@ The following PRs were merged onto the previous release branch but could not be - [search.largeF[iles](/admin/config/site-config#search-largeFiles) accepts an optional prefix `!` to negate a pattern. The o)rder of the patterns within search.largeFiles is honored such that the last pattern matching overrides preceding patterns. For patterns that begin with a literal `!` prefix with a backslash, for example, `\!fileNameStartsWithExcl!.txt`. Previously indexed files that become excluded due to this change will remain in the index until the next reindex [#45318](https://github.com/sourcegraph/sourcegraph-public-snapshot/pull/45318) - [Webh[ooks](/admin/webhooks/incoming) have been overhauled completely and can now be found under **Site admin >) Repositories > Incoming webhooks**. Webhooks that were added via code host configuration are [deprec[ated](/admin/webhooks/incoming#deprecation-notice) and will be removed in 5.1.0. - Added support fo)r receiving webhook `push` events from GitHub which will trigger Sourcegraph to fetch the latest commit rather than relying on polling. -- Added support for private container registries in Sourcegraph executors. [Using private registries](/self-hosted/executors/deploy-executors#using-private-registries) +- Added support for private container registries in Sourcegraph executors. [Using private registries](/self-hosted/executors/private-registries) ### Changed diff --git a/src/data/navigation.ts b/src/data/navigation.ts index 2744ec424..723ba5758 100644 --- a/src/data/navigation.ts +++ b/src/data/navigation.ts @@ -531,7 +531,20 @@ export const navigation: NavigationItem[] = [ href: '/admin/permissions' }, {title: 'OAuth apps', href: '/admin/oauth-apps'}, - {title: 'Executors', href: '/admin/executors'}, + { + title: 'Executors', + href: '/admin/executors', + subsections: [ + { + title: 'Setting up executors', + href: '/admin/executors#setting-up-executors' + }, + { + title: 'Executor secrets', + href: '/admin/executors/executor-secrets' + } + ] + }, {title: 'FAQs', href: '/admin/faq'}, {title: 'How-to guides', href: '/admin/how-to'}, { @@ -586,7 +599,57 @@ export const navigation: NavigationItem[] = [ }, { title: 'Executors', - href: '/self-hosted/executors' + href: '/self-hosted/executors', + subsections: [ + { + title: 'Private container registries', + href: '/self-hosted/executors/private-registries' + }, + { + title: 'Custom certificates', + href: '/self-hosted/executors/custom-certificates' + }, + { + title: 'Plan executor capacity', + href: '/self-hosted/executors/resource-sizing' + }, + { + title: 'Terraform on AWS', + href: '/self-hosted/executors/deploy-executors-terraform-aws' + }, + { + title: 'Terraform on Google Cloud', + href: '/self-hosted/executors/deploy-executors-terraform-gcp' + }, + { + title: 'Linux binary', + href: '/self-hosted/executors/deploy-executors-binary' + }, + { + title: 'Docker Compose', + href: '/self-hosted/executors/deploy-executors-docker' + }, + { + title: 'Docker-in-Docker on Kubernetes', + href: '/self-hosted/executors/deploy-executors-dind' + }, + { + title: 'Native Kubernetes', + href: '/self-hosted/executors/deploy-executors-kubernetes' + }, + { + title: 'Configuration reference', + href: '/self-hosted/executors/executors-config' + }, + { + title: 'Firecracker isolation', + href: '/self-hosted/executors/firecracker' + }, + { + title: 'Troubleshooting', + href: '/self-hosted/executors/executors-troubleshooting' + } + ] }, { title: 'Observability', diff --git a/src/data/redirects.ts b/src/data/redirects.ts index 38f856d75..133ab937f 100644 --- a/src/data/redirects.ts +++ b/src/data/redirects.ts @@ -6066,7 +6066,7 @@ const redirectsData = [ }, { source: '/admin/executors/deploy_executors', - destination: '/self-hosted/executors/deploy_executors', + destination: '/self-hosted/executors', permanent: true }, { @@ -6974,7 +6974,12 @@ const redirectsData = [ }, { source: '/self-hosted/executors/deploy_executors', - destination: '/self-hosted/executors/deploy-executors', + destination: '/self-hosted/executors', + permanent: true + }, + { + source: '/self-hosted/executors/deploy-executors', + destination: '/self-hosted/executors', permanent: true }, { From 99c95c7c01dc1123445bf9e11753e51a4ef45070 Mon Sep 17 00:00:00 2001 From: Jan Hartman Date: Mon, 27 Jul 2026 08:59:18 +0200 Subject: [PATCH 149/217] mcp: Improve client integrations page (#1825) - Reordered clients in order of popularity - Replaced guidance for token credentials to use env vars instead of hardcoding - Removed Claude Code and Amp setup from main MCP page --- docs/api/mcp/client-integrations.mdx | 300 +++++++++++++-------------- docs/api/mcp/index.mdx | 16 +- 2 files changed, 144 insertions(+), 172 deletions(-) diff --git a/docs/api/mcp/client-integrations.mdx b/docs/api/mcp/client-integrations.mdx index 5daaf0323..ae63571c6 100644 --- a/docs/api/mcp/client-integrations.mdx +++ b/docs/api/mcp/client-integrations.mdx @@ -10,107 +10,180 @@ ## Supported Clients -- [Amp](#amp) - [Claude Code](#claude-code) +- [Codex](#codex) +- [Cursor](#cursor) +- [Copilot](#copilot) +- [OpenCode](#opencode) +- [Amp](#amp) - [Google Gemini Code Assist](#google-gemini-code-assist) - [VS Code](#vs-code) - - [Cursor](#cursor) - [Antigravity](#antigravity) - [Windsurf](#windsurf) -- [OpenCode](#opencode) -- [Codex](#codex) -### Amp +### Claude Code -You can add the Sourcegraph MCP server to [Amp](https://ampcode.com) in two ways: +Add the Sourcegraph MCP server to [Claude Code](https://docs.anthropic.com/en/docs/claude-code/mcp): -#### Option 1: VSCode settings.json +```bash +claude mcp add --transport http sourcegraph https://sourcegraph.example.com/.api/mcp +``` -1. Open VSCode's `settings.json` file. -2. Add the following configuration: +Then run `/mcp` in Claude Code and follow the browser authentication flow. + +To share an access-token configuration with a project, set `SOURCEGRAPH_ACCESS_TOKEN` in your environment and add the following to `.mcp.json` in the project root: + +```json +{ + "mcpServers": { + "sourcegraph": { + "type": "http", + "url": "https://sourcegraph.example.com/.api/mcp", + "headers": { + "Authorization": "token ${SOURCEGRAPH_ACCESS_TOKEN}" + } + } + } +} +``` - ```json - { - "amp.mcpServers": { - "sourcegraph": { - "url": "https://your-sourcegraph-instance.com/.api/mcp", - "headers": { - "Authorization": "token YOUR_ACCESS_TOKEN" - } - } - } - } - ``` +You can also add an access-token configuration for the current project with the CLI: - - Replace `your-sourcegraph-instance.com` with your Sourcegraph instance - URL and `YOUR_ACCESS_TOKEN` with your access token. - +```bash +claude mcp add --transport http sourcegraph https://sourcegraph.example.com/.api/mcp \ + --header "Authorization: token $SOURCEGRAPH_ACCESS_TOKEN" +``` -3. Save the configuration file. -4. Restart VS Code to apply the new configuration. +Locally scoped servers take precedence over project-scoped servers with the same name. -#### Option 2: Amp CLI +### Codex -Run the following command in your terminal: +Add the Sourcegraph MCP server to [Codex](https://learn.chatgpt.com/docs/extend/mcp) by adding the following to `~/.codex/config.toml`, or to `.codex/config.toml` for a trusted project: -```bash -amp mcp add sourcegraph --header "Authorization=token YOUR_ACCESS_TOKEN" https://sourcegraph.sourcegraph.com/.api/mcp +```toml +[mcp_servers.sourcegraph] +url = "https://sourcegraph.example.com/.api/mcp" +scopes = ["mcp"] ``` - - Replace `sourcegraph.sourcegraph.com` with your Sourcegraph instance URL and - set `YOUR_ACCESS_TOKEN` environment variable to your access token. +Then authenticate with `codex mcp login sourcegraph`. + + + `scopes = ["mcp"]` is required. Without it, Codex's OAuth login fails with + an `invalid_scope` error because Sourcegraph's MCP endpoints require the + `mcp` scope. See [Troubleshooting: `invalid_scope` error during + OAuth](/api/mcp#invalid_scope-error-during-oauth) for details. -### Claude Code +### Cursor -You can add the Sourcegraph MCP server to [Claude Code](https://claude.ai/code) in two ways: +Add the following to `~/.cursor/mcp.json`, or to `.cursor/mcp.json` for a project: -#### Option 1: Project-scoped server (via .mcp.json file) +```json +{ + "mcpServers": { + "sourcegraph": { + "url": "https://sourcegraph.example.com/.api/mcp" + } + } +} +``` -1. Create a `.mcp.json` file in your project root if it doesn't exist. -2. Add the following configuration: +Enable the server from **Cursor Settings > Tools & MCP** and follow the OAuth prompt. See [Cursor's MCP documentation](https://cursor.com/docs/mcp) for more information. + +To authenticate with a Sourcegraph access token instead, set `SOURCEGRAPH_ACCESS_TOKEN` in Cursor's environment and add an authorization header: + +```json +{ + "mcpServers": { + "sourcegraph": { + "url": "https://sourcegraph.example.com/.api/mcp", + "headers": { + "Authorization": "token ${env:SOURCEGRAPH_ACCESS_TOKEN}" + } + } + } +} +``` - ```json - { - "mcpServers": { - "sourcegraph": { - "type": "http", - "url": "https://your-sourcegraph-instance.com/.api/mcp", - "headers": { - "Authorization": "token YOUR_ACCESS_TOKEN" - } - } - } - } - ``` +### Copilot - - Replace `your-sourcegraph-instance.com` with your Sourcegraph instance - URL and `YOUR_ACCESS_TOKEN` with your access token. - +Add the Sourcegraph MCP server to [GitHub Copilot CLI](https://docs.github.com/en/copilot/how-tos/copilot-cli/customize-copilot/add-mcp-servers): -3. Save the configuration file. -4. Restart Claude Code to apply the new configuration. +```bash +copilot mcp add --transport http sourcegraph https://sourcegraph.example.com/.api/mcp +``` -#### Option 2: Locally-scoped server (via CLI command) +Then run `/mcp auth sourcegraph` and follow the authentication flow. -You can also add the Sourcegraph MCP server as a locally-scoped server, which is only available to you in the current project: +### OpenCode -1. Run the following command in your terminal: +Add the following to `~/.config/opencode/opencode.json` for a global configuration, or to `opencode.json` in a project root for a project-specific configuration: + +```json +{ + "$schema": "https://opencode.ai/config.json", + "mcp": { + "sourcegraph": { + "type": "remote", + "url": "https://sourcegraph.example.com/.api/mcp" + } + } +} +``` - ```bash - claude mcp add --transport http sourcegraph https://your-sourcegraph-instance.com/.api/mcp \ - --header "Authorization: token YOUR_ACCESS_TOKEN" - ``` +Then authenticate with `opencode mcp auth sourcegraph`. See [OpenCode's MCP documentation](https://opencode.ai/docs/mcp-servers/) for more information. + +To authenticate with a Sourcegraph access token instead, disable OAuth and add an authorization header: + +```json +{ + "$schema": "https://opencode.ai/config.json", + "mcp": { + "sourcegraph": { + "type": "remote", + "url": "https://sourcegraph.example.com/.api/mcp", + "oauth": false, + "headers": { + "Authorization": "token {env:SOURCEGRAPH_ACCESS_TOKEN}" + } + } + } +} +``` - - Replace `your-sourcegraph-instance.com` with your Sourcegraph instance - URL and `YOUR_ACCESS_TOKEN` with your access token. - +### Amp + +Add the Sourcegraph MCP server to [Amp](https://ampcode.com/manual#mcp): + +```bash +amp mcp add sourcegraph https://sourcegraph.example.com/.api/mcp +``` + +Amp starts the OAuth flow in your browser when it connects to the server. + +To authenticate with a Sourcegraph access token instead, add an authorization header: -Locally-scoped servers take precedence over project-scoped servers with the same name and are stored in your project-specific user settings. +```bash +amp mcp add sourcegraph --header "Authorization=token $SOURCEGRAPH_ACCESS_TOKEN" https://sourcegraph.example.com/.api/mcp +``` + +You can also configure the access-token connection in VS Code's `settings.json`: + +```json +{ + "amp.mcpServers": { + "sourcegraph": { + "url": "https://sourcegraph.example.com/.api/mcp", + "headers": { + "Authorization": "token ${SOURCEGRAPH_ACCESS_TOKEN}" + } + } + } +} +``` + +In all examples, replace `sourcegraph.example.com` with your Sourcegraph instance URL. For Claude Code, Cursor, OpenCode, and Amp access-token authentication, set `SOURCEGRAPH_ACCESS_TOKEN` in the client's environment. In other access-token examples, replace `YOUR_ACCESS_TOKEN` with a [Sourcegraph access token](/cli/how-tos/creating-an-access-token). ### Google Gemini Code Assist @@ -174,33 +247,6 @@ code --add-mcp "{ \"name\": \"sourcegraph\", \"type\": \"remote\", \"url\": \"ht 3. Save the configuration file. 4. Restart VS Code to apply the new configuration. -#### Cursor - -1. Open or create the MCP configuration file at `~/.cursor/mcp.json` (or the equivalent path on your system). -2. Add the following: - - ```json - { - "mcpServers": { - "sourcegraph": { - "url": "https://your-sourcegraph-instance.com/.api/mcp", - "type": "http", - "headers": { - "Authorization": "token YOUR_ACCESS_TOKEN" - } - } - } - } - ``` - - - Replace `your-sourcegraph-instance.com` with your Sourcegraph instance - URL and `YOUR_ACCESS_TOKEN` with your access token. - - -3. Save the configuration file. -4. Restart Cursor to apply the new configuration. - #### Antigravity 1. Create ⁠`.vscode/mcp.json` (Antigravity uses `.vscode` for configs) in your project. @@ -251,63 +297,3 @@ code --add-mcp "{ \"name\": \"sourcegraph\", \"type\": \"remote\", \"url\": \"ht 3. Save the configuration file. - -### OpenCode - -You can add the Sourcegraph MCP server to OpenCode by configuring it in your MCP settings file: - -1. Open or create the MCP configuration file at `~/.config/opencode/opencode.jsonc` (or the equivalent path on your system). -2. Add the following configuration: - - ```json - { - "mcp": { - "sourcegraph": { - "type": "remote", - "url": "https://your-sourcegraph-instance.com/.api/mcp", - "oauth": false, - "headers": { - "Authorization": "token {env:YOUR_ACCESS_TOKEN}" - } - } - }, - "$schema": "https://opencode.ai/config.json" - } - ``` - - - Replace `your-sourcegraph-instance.com` with your Sourcegraph instance - URL and `YOUR_ACCESS_TOKEN` with your access token. - - -3. Save the configuration file. -4. Restart OpenCode to apply the changes. - -### Codex - -You can add the Sourcegraph MCP server to [OpenAI Codex](https://github.com/openai/codex) by editing its `config.toml` file (default `~/.codex/config.toml`, or a project-scoped `.codex/config.toml`): - -1. Open or create the configuration file at `~/.codex/config.toml` (or `.codex/config.toml` in your project). -2. Add the following configuration: - - ```toml - [mcp_servers.sourcegraph] - url = "https://your-sourcegraph-instance.com/.api/mcp" - scopes = ["mcp"] - ``` - - - Replace `your-sourcegraph-instance.com` with your Sourcegraph instance - URL. - - - - `scopes = ["mcp"]` is required. Without it, Codex's OAuth login fails - with an `invalid_scope` error because Sourcegraph's MCP endpoints - require the `mcp` scope. See [Troubleshooting: - `invalid_scope` error during - OAuth](/api/mcp#invalid_scope-error-during-oauth) for details. - - -3. Save the configuration file. -4. Restart Codex and complete the Codex OAuth login flow to sign in to your Sourcegraph instance. diff --git a/docs/api/mcp/index.mdx b/docs/api/mcp/index.mdx index 0d6dd59b7..0136f10f8 100644 --- a/docs/api/mcp/index.mdx +++ b/docs/api/mcp/index.mdx @@ -17,21 +17,7 @@ The Sourcegraph Model Context Protocol (MCP) Server provides AI agents and appli ## Getting Started -MCP clients that support OAuth can connect directly—just point them at your Sourcegraph instance and authenticate through your browser: - -**[Amp](https://ampcode.com/)** - -```bash -amp mcp add sg https://sourcegraph.example.com/.api/mcp -``` - -**[Claude Code](https://www.claude.com/product/claude-code)** - -```bash -claude mcp add --transport http sg https://sourcegraph.example.com/.api/mcp -``` - -This works similarly for other MCP-compatible agents. See [Client Integrations](/api/mcp/client-integrations) for detailed setup instructions for each client. +MCP clients that support OAuth can connect directly to your Sourcegraph instance and authenticate through your browser. See [Client Integrations](/api/mcp/client-integrations) for setup instructions for Claude Code, Codex, Cursor, Copilot, OpenCode, Amp, and other supported clients. ## Server Endpoints From 8abd9e60ec61ad6d2399e767f0fbbd10f7fbf015 Mon Sep 17 00:00:00 2001 From: Erik Seliger Date: Thu, 30 Jul 2026 02:50:32 +0200 Subject: [PATCH 150/217] Add supported countries page (#1827) --- docs/supported-countries.mdx | 198 +++++++++++++++++++++++++++++++++++ src/data/navigation.ts | 4 + 2 files changed, 202 insertions(+) create mode 100644 docs/supported-countries.mdx diff --git a/docs/supported-countries.mdx b/docs/supported-countries.mdx new file mode 100644 index 000000000..a5c608946 --- /dev/null +++ b/docs/supported-countries.mdx @@ -0,0 +1,198 @@ +--- +seoPriority: 0.1 +--- + +# Supported countries and regions + +Sourcegraph-operated services, including [Sourcegraph Cloud](/cloud) and the [Sourcegraph Model Provider](/model-provider), are available in the countries, regions, and territories listed below. + +Availability is subject to applicable laws and regulations, including the export controls described in the [Sourcegraph Terms of Service](https://sourcegraph.com/terms/tos#13-export-controls:~:text=conditioned%2C%20or%20delayed.-,13.%20Export%20Controls,-Short%20version%3A%20The). Sourcegraph may restrict access when required by applicable law or by its Partner LLMs. + +If your country or region is not listed, [contact us](https://sourcegraph.com/contact/request-info) to discuss whether another deployment option is available. + +## Countries, regions, and territories + +- Albania +- Algeria +- Andorra +- Angola +- Antigua and Barbuda +- Argentina +- Armenia +- Australia +- Austria +- Azerbaijan +- Bahamas +- Bahrain +- Bangladesh +- Barbados +- Belgium +- Belize +- Benin +- Bhutan +- Bolivia +- Bosnia and Herzegovina +- Botswana +- Brazil +- Brunei +- Bulgaria +- Burkina Faso +- Burundi +- Cabo Verde +- Cambodia +- Cameroon +- Canada +- Central African Republic +- Chad +- Chile +- Colombia +- Comoros +- Congo (Brazzaville) +- Costa Rica +- Côte d'Ivoire +- Croatia +- Cyprus +- Czechia (Czech Republic) +- Denmark +- Djibouti +- Dominica +- Dominican Republic +- Ecuador +- Egypt +- El Salvador +- Equatorial Guinea +- Eritrea +- Estonia +- Eswatini +- Ethiopia +- Fiji +- Finland +- France +- Gabon +- Gambia +- Georgia +- Germany +- Ghana +- Greece +- Grenada +- Guatemala +- Guinea +- Guinea-Bissau +- Guyana +- Haiti +- Honduras +- Hungary +- Iceland +- India +- Indonesia +- Iraq +- Ireland +- Israel +- Italy +- Jamaica +- Japan +- Jordan +- Kazakhstan +- Kenya +- Kiribati +- Kuwait +- Kyrgyzstan +- Laos +- Latvia +- Lebanon +- Lesotho +- Liberia +- Libya +- Liechtenstein +- Lithuania +- Luxembourg +- Madagascar +- Malawi +- Malaysia +- Maldives +- Mali +- Malta +- Marshall Islands +- Mauritania +- Mauritius +- Mexico +- Micronesia +- Moldova +- Monaco +- Mongolia +- Montenegro +- Morocco +- Mozambique +- Namibia +- Nauru +- Nepal +- Netherlands +- New Zealand +- Nicaragua +- Niger +- Nigeria +- North Macedonia +- Norway +- Oman +- Pakistan +- Palau +- Palestine +- Panama +- Papua New Guinea +- Paraguay +- Peru +- Philippines +- Poland +- Portugal +- Qatar +- Romania +- Rwanda +- Saint Kitts and Nevis +- Saint Lucia +- Saint Vincent and the Grenadines +- Samoa +- San Marino +- São Tomé and Príncipe +- Saudi Arabia +- Senegal +- Serbia +- Seychelles +- Sierra Leone +- Singapore +- Slovakia +- Slovenia +- Somalia +- Solomon Islands +- South Africa +- South Korea +- South Sudan +- Spain +- Sri Lanka +- Sudan +- Suriname +- Sweden +- Switzerland +- Taiwan +- Tajikistan +- Tanzania +- Thailand +- Timor-Leste +- Togo +- Tonga +- Trinidad and Tobago +- Tunisia +- Türkiye (Turkey) +- Turkmenistan +- Tuvalu +- Uganda +- Ukraine (except Crimea, Donetsk, Kherson, Luhansk, and Zaporizhzhia regions) +- United Arab Emirates +- United Kingdom +- United States of America +- Uruguay +- Uzbekistan +- Vanuatu +- Vatican City +- Vietnam +- Zambia +- Zimbabwe diff --git a/src/data/navigation.ts b/src/data/navigation.ts index 723ba5758..1280b43da 100644 --- a/src/data/navigation.ts +++ b/src/data/navigation.ts @@ -711,6 +711,10 @@ export const navigation: NavigationItem[] = [ title: 'SLAs and premium support', href: '/sla' }, + { + title: 'Supported countries', + href: '/supported-countries' + }, { title: 'Tutorials', href: '/tutorials' From 57034f948e81c3b7d1585200a2dc360afa41b72d Mon Sep 17 00:00:00 2001 From: Taras Yemets Date: Fri, 31 Jul 2026 14:46:40 +0300 Subject: [PATCH 151/217] docs/observability: add Microsoft Teams alert notifier (#1829) --- docs/self-hosted/observability/alerting.mdx | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/docs/self-hosted/observability/alerting.mdx b/docs/self-hosted/observability/alerting.mdx index de560eacd..d37f8e477 100644 --- a/docs/self-hosted/observability/alerting.mdx +++ b/docs/self-hosted/observability/alerting.mdx @@ -62,6 +62,25 @@ Once configured, Sourcegraph alerts will automatically be routed to the appropri > NOTE: Learn more about generating a [Slack incoming webhook URL](https://api.slack.com/messaging/webhooks) +#### Microsoft Teams + +In a standard Microsoft Teams channel, create a Workflow using the [Send webhook alerts to a channel](https://support.microsoft.com/en-us/workflows/send-messages-in-teams-using-incoming-webhooks) template. Choose the generic template described as allowing anyone to send updates. Do not use variants restricted to users in your organization or specific people because they require OAuth authentication and aren't compatible with Alertmanager's unauthenticated webhook request. Save the Workflow, then copy its complete signed URL. + +```json +"observability.alerts": [ + { + "level": "critical", + "notifier": { + "type": "msteams", + // Complete signed Microsoft Teams Workflow URL + "url": "https://example.logic.azure.com/workflows/.../triggers/manual/paths/invoke?...&sig=..." + } + } +] +``` + +> NOTE: This integration uses a Teams Workflow, not the legacy Microsoft 365 (formerly Office 365) Incoming Webhook connector. No separate token is required. Treat the signed Workflow URL as a secret. + #### PagerDuty ```json From c92394bae248fa0ac255f6ede1d10db597f47289 Mon Sep 17 00:00:00 2001 From: Jan Hartman Date: Fri, 31 Jul 2026 15:46:08 +0200 Subject: [PATCH 152/217] Add beta badge to Code Finder MCP (#1830) CleanShot 2026-07-31 at 15 35 01 --- docs/api/mcp/index.mdx | 2 +- src/components/ui/badge.tsx | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/api/mcp/index.mdx b/docs/api/mcp/index.mdx index 0136f10f8..c13776fac 100644 --- a/docs/api/mcp/index.mdx +++ b/docs/api/mcp/index.mdx @@ -328,7 +328,7 @@ The MCP server provides these tools for code exploration and analysis: -### Code Finder +### Code Finder Beta Code Finder is an agentic tool that sits between plain search and Deep Search: it runs its own internal search loop to locate the code relevant to a task, then returns the matching file paths and line ranges with a brief explanation. Unlike `deepsearch`, it runs synchronously and is designed for quickly finding relevant code in a repository you already know, rather than open-ended research across many repositories. diff --git a/src/components/ui/badge.tsx b/src/components/ui/badge.tsx index 894f536ed..932279e12 100644 --- a/src/components/ui/badge.tsx +++ b/src/components/ui/badge.tsx @@ -46,7 +46,7 @@ function Badge({ ...props }: BadgeProps) { return ( -
Date: Fri, 31 Jul 2026 11:46:51 -0700 Subject: [PATCH 153/217] deepsearch: add evaluator docs (#1826) closes https://linear.app/sourcegraph/issue/CU-3011/add-evaluator-section-in-deep-search-docs adds evaluator section in the deep search docs to explain how it works, guardrails, examples etc. --- docs/deep-search/index.mdx | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/docs/deep-search/index.mdx b/docs/deep-search/index.mdx index f9ff24d13..ce8a582c0 100644 --- a/docs/deep-search/index.mdx +++ b/docs/deep-search/index.mdx @@ -54,6 +54,27 @@ You can @-mention: - **Repositories** — scope the search to specific repos - **Files** — point the agent to particular files +## Exhaustive analysis + +Deep Search can cross-reference and aggregate large result sets for codebase-wide inventories, audits, migration planning, and other structured investigations. + +- **Inventories and audits** — trace how a shared service is consumed across repositories, inventory dependencies, or identify repositories using a vulnerable package version. +- **Migration planning** — produce a CSV or JSON checklist of services that still use an old package, API, or configuration and have not adopted its replacement. +- **Cross-referencing** — compare multiple searches, such as files that match one implementation pattern but not another. +- **Aggregation and reporting** — group findings by repository, language, team, or dependency and calculate totals. + +For larger outputs, Deep Search can create downloadable CSV, JSON, and SVG files while summarizing the key findings in its answer. It can also read generated CSV and JSON files in follow-up investigations to filter, join, or enrich previously collected results without repeating the original searches. + +### Security and guardrails + +Deep Search runs small Lua scripts for analysis, it does not execute code from your repositories. The sandbox applies the following controls: + +- It has no network, system, or general filesystem access. +- Scripts can only use modules provided by Sourcegraph for search, source file reads, formatting, and generated file outputs. +- Search and source file operations are read-only and use Sourcegraph's existing APIs and repository permissions. Searches also use the search context selected for the conversation. Deep Search cannot modify repositories. +- Artifacts generated by scripts are stored in object storage. +- Intermediate search results are processed inside the sandbox. Only the script's return value, supporting sources, and generated file metadata are returned to Deep Search and added to the LLM context. + ## Examples of prompts - Find examples of logger usage and show examples of the different types of logging we use. @@ -63,6 +84,8 @@ You can @-mention: - Generate a request flow diagram for `src/backend`. Mark the auth and rate limit points. - Based on the findings in `https://sourcegraph.com/deepsearch/e3c0150a-b7ef-4955-bed4-d5820ca7a70d`, investigate whether the same logging patterns appear in our other microservices. - Which packages in `@myorg/repo` still import pkg/errors but haven’t migrated to `corp.pkg/logging/v2`? +- Trace every field requested from `profile-service` through `getProfileFeatures`. Create a CSV with the consuming service, repository, source URL, field mask, feature group, and request type. +- Across all repositories, create a CSV of services still using Log4j versions earlier than 2.17. Group the results by repository and detected version. ## Conversation sharing From 2e9ce6f8f5c22ca27a23b288c0ba6a904ebd7f67 Mon Sep 17 00:00:00 2001 From: Keegan Carruthers-Smith Date: Mon, 3 Aug 2026 13:58:06 +0200 Subject: [PATCH 154/217] Document Deep Search agent customization (#1828) Deep Search supports organization-specific skills and AGENTS.md-style guidance, but its overview did not tell users that the customization exists or where to configure it. This adds the same lightweight treatment already used for Agentic Batch Changes and points to the user and administration navigation added by sourcegraph/sourcegraph#14440. Formatting and link validation pass. --------- Co-authored-by: Amp --- docs/deep-search/index.mdx | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/docs/deep-search/index.mdx b/docs/deep-search/index.mdx index ce8a582c0..ac7ffd7d8 100644 --- a/docs/deep-search/index.mdx +++ b/docs/deep-search/index.mdx @@ -35,6 +35,13 @@ The answer is formatted in Markdown and can include links to relevant files, dir - Provide reasonably scoped questions. The agent will perform much better if it does not have to read the entire codebase at once. - Check the list of sources. This is extremely useful for debugging and understanding where the answer came from. Ask a follow-up question and mention the missing source if something is missing. +## Customization + +Most organizations will also have specific conventions, technologies, and preferences. Deep Search may discover some of these conventions in its research, but you can also improve performance by customizing it with skills and `AGENTS.md`-style guidance, available on a per-user, per-organization, or global level in settings: + +- **User settings → Deep Search → Agents** +- **Administration → Deep Search → Agents** + ## Using search contexts You can reuse the same [search contexts](/code-search/working/search-contexts) you already use in Code Search when creating a new Deep Search query. Click **Set scope** in the composer to select a search context and limit Deep Search to that repository scope. Deep Search automatically pre-selects your default search context. From 00cea1f535470d4194e26802846b50dcf1b871c2 Mon Sep 17 00:00:00 2001 From: sourcegraph-buildkite <71296199+sourcegraph-buildkite@users.noreply.github.com> Date: Wed, 5 Aug 2026 22:33:00 -0400 Subject: [PATCH 155/217] =?UTF-8?q?=F0=9F=A4=96=20Sync=20generated=20docs?= =?UTF-8?q?=20from=20sourcegraph/sourcegraph=20(#1806)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This is an automated pull request, created by //doc:generated.push on sourcegraph/sourcegraph --------- Co-authored-by: Buildkite Co-authored-by: Warren Gifford --- docs/admin/code-hosts/aws-codecommit.mdx | 2 +- docs/admin/code-hosts/azuredevops.mdx | 2 +- docs/admin/code-hosts/bitbucket-cloud.mdx | 2 +- docs/admin/code-hosts/bitbucket-server.mdx | 2 +- docs/admin/code-hosts/gerrit.mdx | 2 +- docs/admin/code-hosts/github.mdx | 2 +- docs/admin/code-hosts/gitlab.mdx | 2 +- docs/admin/code-hosts/gitolite.mdx | 2 +- docs/admin/code-hosts/other.mdx | 2 +- docs/admin/code-hosts/phabricator.mdx | 2 +- docs/admin/config/settings.mdx | 25 +- docs/admin/config/site-config.mdx | 23 +- docs/admin/repo/perforce.mdx | 2 +- .../telemetry/private-metadata-allowlist.mdx | 1 + docs/cody/capabilities/supported-models.mdx | 4 + docs/self-hosted/observability/alerts.mdx | 208 +- docs/self-hosted/observability/dashboards.mdx | 2073 ++++++++++++++--- 17 files changed, 2033 insertions(+), 323 deletions(-) diff --git a/docs/admin/code-hosts/aws-codecommit.mdx b/docs/admin/code-hosts/aws-codecommit.mdx index fa2036d07..5f1666ebc 100644 --- a/docs/admin/code-hosts/aws-codecommit.mdx +++ b/docs/admin/code-hosts/aws-codecommit.mdx @@ -37,7 +37,7 @@ AWS CodeCommit connections support the following configuration options, which ar {/* SCHEMA_SYNC_START: admin/code_hosts/aws_codecommit.schema.json */} {/* WARNING: This section is auto-generated during releases. Do not edit manually. */} -{/* Last updated: 2026-07-06T19:37:47Z */} +{/* Last updated: 2026-08-05T21:41:22Z */} ```json { // REQUIRED: diff --git a/docs/admin/code-hosts/azuredevops.mdx b/docs/admin/code-hosts/azuredevops.mdx index 08fa385e6..7695f459c 100644 --- a/docs/admin/code-hosts/azuredevops.mdx +++ b/docs/admin/code-hosts/azuredevops.mdx @@ -69,7 +69,7 @@ Azure DevOps connections support the following configuration options, which are {/* SCHEMA_SYNC_START: admin/code_hosts/azuredevops.schema.json */} {/* WARNING: This section is auto-generated during releases. Do not edit manually. */} -{/* Last updated: 2026-07-06T19:37:47Z */} +{/* Last updated: 2026-08-05T21:41:22Z */} ```json // Authentication alternatives: token OR windowsPassword diff --git a/docs/admin/code-hosts/bitbucket-cloud.mdx b/docs/admin/code-hosts/bitbucket-cloud.mdx index 3db5e7671..51070727f 100644 --- a/docs/admin/code-hosts/bitbucket-cloud.mdx +++ b/docs/admin/code-hosts/bitbucket-cloud.mdx @@ -116,7 +116,7 @@ Bitbucket Cloud connections support the following configuration options, which a {/* SCHEMA_SYNC_START: admin/code_hosts/bitbucket_cloud.schema.json */} {/* WARNING: This section is auto-generated during releases. Do not edit manually. */} -{/* Last updated: 2026-07-06T19:37:47Z */} +{/* Last updated: 2026-08-05T21:41:22Z */} ```json { // The workspace access token to use when authenticating with Bitbucket Cloud. diff --git a/docs/admin/code-hosts/bitbucket-server.mdx b/docs/admin/code-hosts/bitbucket-server.mdx index 75f36152d..6775b7dbb 100644 --- a/docs/admin/code-hosts/bitbucket-server.mdx +++ b/docs/admin/code-hosts/bitbucket-server.mdx @@ -202,7 +202,7 @@ Bitbucket Server / Bitbucket Data Center connections support the following confi {/* SCHEMA_SYNC_START: admin/code_hosts/bitbucket_server.schema.json */} {/* WARNING: This section is auto-generated during releases. Do not edit manually. */} -{/* Last updated: 2026-07-06T19:37:47Z */} +{/* Last updated: 2026-08-05T21:41:22Z */} ```json // Authentication alternatives: token OR password diff --git a/docs/admin/code-hosts/gerrit.mdx b/docs/admin/code-hosts/gerrit.mdx index 819bb290e..f20e399f3 100644 --- a/docs/admin/code-hosts/gerrit.mdx +++ b/docs/admin/code-hosts/gerrit.mdx @@ -113,7 +113,7 @@ Gerrit connections support the following configuration options, which are specif {/* SCHEMA_SYNC_START: admin/code_hosts/gerrit.schema.json */} {/* WARNING: This section is auto-generated during releases. Do not edit manually. */} -{/* Last updated: 2026-07-06T19:37:47Z */} +{/* Last updated: 2026-08-05T21:41:22Z */} ```json { // If non-null, enforces Gerrit repository permissions. This requires that there is an item in the [site configuration json](https://sourcegraph.com/docs/admin/config/site_config#auth-providers) `auth.providers` field, of type "gerrit" with the same `url` field as specified in this `GerritConnection`. diff --git a/docs/admin/code-hosts/github.mdx b/docs/admin/code-hosts/github.mdx index a5e4029c8..fc0144103 100644 --- a/docs/admin/code-hosts/github.mdx +++ b/docs/admin/code-hosts/github.mdx @@ -454,7 +454,7 @@ GitHub connections support the following configuration options, which are specif {/* SCHEMA_SYNC_START: admin/code_hosts/github.schema.json */} {/* WARNING: This section is auto-generated during releases. Do not edit manually. */} -{/* Last updated: 2026-07-06T19:37:47Z */} +{/* Last updated: 2026-08-05T21:41:22Z */} ```json // Authentication alternatives: token OR gitHubAppDetails OR externalAccount OR useRandomExternalAccount diff --git a/docs/admin/code-hosts/gitlab.mdx b/docs/admin/code-hosts/gitlab.mdx index b39ef4318..518ecea02 100644 --- a/docs/admin/code-hosts/gitlab.mdx +++ b/docs/admin/code-hosts/gitlab.mdx @@ -189,7 +189,7 @@ See [Internal rate limits](/admin/code-hosts/rate-limits#internal-rate-limits). {/* SCHEMA_SYNC_START: admin/code_hosts/gitlab.schema.json */} {/* WARNING: This section is auto-generated during releases. Do not edit manually. */} -{/* Last updated: 2026-07-06T19:37:47Z */} +{/* Last updated: 2026-08-05T21:41:22Z */} ```json { // If non-null, enforces GitLab repository permissions. This requires that there be an item in the `auth.providers` field of type "gitlab" with the same `url` field as specified in this `GitLabConnection`. diff --git a/docs/admin/code-hosts/gitolite.mdx b/docs/admin/code-hosts/gitolite.mdx index f674b45d7..f6837c8f2 100644 --- a/docs/admin/code-hosts/gitolite.mdx +++ b/docs/admin/code-hosts/gitolite.mdx @@ -25,7 +25,7 @@ To connect Gitolite to Sourcegraph: {/* SCHEMA_SYNC_START: admin/code_hosts/gitolite.schema.json */} {/* WARNING: This section is auto-generated during releases. Do not edit manually. */} -{/* Last updated: 2026-07-06T19:37:47Z */} +{/* Last updated: 2026-08-05T21:41:22Z */} ```json { // A list of repositories to never mirror from this Gitolite instance. Supports excluding by exact name ({"name": "foo"}). diff --git a/docs/admin/code-hosts/other.mdx b/docs/admin/code-hosts/other.mdx index 9a40ed537..f92d971c6 100644 --- a/docs/admin/code-hosts/other.mdx +++ b/docs/admin/code-hosts/other.mdx @@ -68,7 +68,7 @@ Repositories must be listed individually: {/* SCHEMA_SYNC_START: admin/code_hosts/other_external_service.schema.json */} {/* WARNING: This section is auto-generated during releases. Do not edit manually. */} -{/* Last updated: 2026-07-06T19:37:47Z */} +{/* Last updated: 2026-08-05T21:41:22Z */} ```json { // A list of repositories to never mirror by name after applying repositoryPathPattern. Supports excluding by exact name ({"name": "myrepo"}) or regular expression ({"pattern": ".*secret.*"}). diff --git a/docs/admin/code-hosts/phabricator.mdx b/docs/admin/code-hosts/phabricator.mdx index 2746adfd5..3f1c489b8 100644 --- a/docs/admin/code-hosts/phabricator.mdx +++ b/docs/admin/code-hosts/phabricator.mdx @@ -76,7 +76,7 @@ The Sourcegraph instance's site admin must [update the `corsOrigin` site config {/* SCHEMA_SYNC_START: admin/code_hosts/phabricator.schema.json */} {/* WARNING: This section is auto-generated during releases. Do not edit manually. */} -{/* Last updated: 2026-07-06T19:37:47Z */} +{/* Last updated: 2026-08-05T21:41:22Z */} ```json { // SSH cipher to use when cloning via SSH. Must be a valid choice from `ssh -Q cipher`. diff --git a/docs/admin/config/settings.mdx b/docs/admin/config/settings.mdx index 203b785ec..7fd8d1822 100644 --- a/docs/admin/config/settings.mdx +++ b/docs/admin/config/settings.mdx @@ -27,7 +27,7 @@ Settings options and their default values are shown below. {/* SCHEMA_SYNC_START: admin/config/settings.schema.json */} {/* WARNING: This section is auto-generated during releases. Do not edit manually. */} -{/* Last updated: 2026-07-06T19:37:47Z */} +{/* Last updated: 2026-08-05T21:41:22Z */} ```json { @@ -59,6 +59,11 @@ Settings options and their default values are shown below. // The timeout (in milliseconds) for un-indexed search requests. "basicCodeIntel.unindexedSearchTimeout": 0, + // Settings for Batch Change Agents. + "batchChangeAgents": { + "guidance": [] + }, + // Whether to fetch multiple precise definitions and references on hover. "codeIntel.disableRangeQueries": false, @@ -74,19 +79,26 @@ Settings options and their default values are shown below. // Whether to enable trace logging on the extension. "codeIntel.traceExtension": false, - // Whether the cody chat code snippets should be code highlighted. + // Whether the Cody chat code snippets should be code highlighted. "cody.chatCodeSyntaxHighlightingEnabled": true, // Custom informational messages to display to users at Cody clients locations. // Usually this setting is used in global and organization settings. If set in user settings, the message will only be displayed to that single user. "cody.notices": null, - // BETA: Enable the new compare experience. This feature is under active development and will eventually become the default (and the setting will be removed) + // ⚠️ DEPRECATED: DEPRECATED: This feature is now permanently enabled. Enables the new compare UI. + // DEPRECATED: This feature is now permanently enabled. Enables the new compare UI. "compareV2.enabled": false, + // Additional guidance and skills loaded into Deep Search agent runs. Guidance entries are applied in settings priority order: site/admin settings, then organization settings in stable order, then user settings. Duplicate skill names are resolved by keeping the last loaded skill, so later entries override earlier entries. + "deepSearch.guidance": [], + // Disable the Slack community call-to-action banner on the Deep Search page. "deepSearch.slackCta.disabled": false, + // EXPERIMENTAL: When enabled, new Deep Search conversations will be automatically scoped to your default search context (if one is configured). If a question is pre-filled (e.g. from a URL parameter or draft), the context is not applied. + "deepSearch.useDefaultSearchContext": false, + // Experimental features and settings. "experimentalFeatures": { "batchChangeAgentsDisabledDefaultSkills": [], @@ -102,12 +114,8 @@ Settings options and their default values are shown below. "enableSidebarFilePrefetch": true, "goCodeCheckerTemplates": false, "keywordSearch": true, - "newSearchNavigationUI": false, - "newSearchResultFiltersPanel": false, "newSearchResultsUI": true, - "proactiveSearchResultsAggregations": true, "searchContextsQuery": false, - "searchQueryInput": "v1", "searchResultsAggregations": false, "showCodeMonitoringLogs": false, "symbolKindTags": false @@ -139,7 +147,8 @@ Settings options and their default values are shown below. // If enabled, all members of the org will be treated as admins (e.g. can edit, apply, delete) for all batch changes created in that org. "orgs.allMembersBatchChangesAdmin": false, - // Key-value pairs of code host URLs to Swarm URLs. Keys should have no prefix and should not end with a slash, like "perforce.company.com:1666". Values should look like "https://swarm.company.com/", with a slash at the end. + // ⚠️ DEPRECATED: DEPRECATED: This setting is no longer used. + // DEPRECATED: This setting is no longer used. Key-value pairs of code host URLs to Swarm URLs. Keys should have no prefix and should not end with a slash, like "perforce.company.com:1666". Values should look like "https://swarm.company.com/", with a slash at the end. "perforce.codeHostToSwarmMap": {}, // The default number of lines to show as context below and above search results. Default is 1. diff --git a/docs/admin/config/site-config.mdx b/docs/admin/config/site-config.mdx index 797c8b649..6904c12de 100644 --- a/docs/admin/config/site-config.mdx +++ b/docs/admin/config/site-config.mdx @@ -21,7 +21,7 @@ All site configuration options and their default values are shown below. {/* SCHEMA_SYNC_START: admin/config/site.schema.json */} {/* WARNING: This section is auto-generated during releases. Do not edit manually. */} -{/* Last updated: 2026-07-06T19:37:47Z */} +{/* Last updated: 2026-08-05T21:41:22Z */} ```json { @@ -64,13 +64,13 @@ All site configuration options and their default values are shown below. // Configuration for out-of-the-box coding agent steps in Batch Changes. When an access token is configured for an agent, Sourcegraph routes that agent's LLM traffic directly to the corresponding provider from the frontend proxy. Access tokens remain server-side and are never sent to executors. Agents without an access token continue to use the Sourcegraph Model Provider. "batchChanges.codingAgents": null, - // A list of permitted container registries for use in batch changes, e.g., docker.io. If empty, all container registries are allowed. It cannot be used together with 'batchChanges.containerRegistryDenylist' + // A list of permitted container registries for use in batch changes, e.g., docker.io. Applies to step 'container' images and 'buildImage' base images. If empty, all container registries are allowed. It cannot be used together with 'batchChanges.containerRegistryDenylist' // Other example values: // - "docker.io" // - "artifactory.acme.com" "batchChanges.containerRegistryAllowlist": null, - // A list of forbidden container registries for use in batch changes, e.g., docker.io. If empty, all container registries are allowed. It cannot be used together with 'batchChanges.containerRegistryAllowlist' + // A list of forbidden container registries for use in batch changes, e.g., docker.io. Applies to step 'container' images and 'buildImage' base images. If empty, all container registries are allowed. It cannot be used together with 'batchChanges.containerRegistryAllowlist' // Other example values: // - "docker.io" // - "artifactory.acme.com" @@ -187,6 +187,13 @@ All site configuration options and their default values are shown below. // Enable/disable the Deep Search feature "deepSearch.enabled": false, + // Resource limits for each Deep Search evaluator script execution. + "deepSearch.evaluator": { + "maxGeneratedFileSizeBytes": 10485760, + "maxSearchesPerExecution": 100, + "maxSourceReadsPerExecution": 1000 + }, + // Enable/disable sharing of Deep Search conversations via read tokens "deepSearch.sharing.enabled": false, @@ -294,6 +301,9 @@ All site configuration options and their default values are shown below. "debug.log": { "extsvc.gitlab": false }, + "deepSearch.contextFilters": { + "exclude": null + }, "deepSearch.enabled": false, "deepSearch.model": "anthropic::2024-10-22::claude-sonnet-4-6-latest", "deepSearch.sharing.enabled": false, @@ -451,6 +461,9 @@ All site configuration options and their default values are shown below. // Enable/disable MCP API endpoints under `/.api/mcp`. When disabled, MCP endpoints return 404. "mcp.enabled": true, + // MCP tools to disable across all MCP endpoints. Use canonical tool names (e.g. `deepsearch`, `code_finder`) without the legacy `sg_` prefix. + "mcp.tools.disabled": [], + "modelConfiguration": null, // Notifications received from Sourcegraph.com to display in Sourcegraph. @@ -987,13 +1000,13 @@ All site configuration options and their default values are shown below. // Maximum number of seconds that a long Git command (e.g. clone or remote update) is allowed to execute. The default is 7200 seconds, or 2 hours. "gitLongCommandTimeout": 7200, - // Maximum number of remote code host git operations (e.g. clone or ls-remote) to be run per second per gitserver. Default is -1, which is unlimited. + // Maximum number of git operations (e.g. clone or ls-remote) to be run against code hosts, per second. Fractional rates are rounded to the nearest hourly quota, with positive rates below that resolution enforced as one request per hour. Rate limit is shared across all instances of gitserver, and all code hosts. Default is -1, which is unlimited. "gitMaxCodehostRequestsPerSecond": -1, // Maximum number of git clone processes that will be run concurrently per gitserver to update repositories. <= 0 means disabled. "gitMaxConcurrentCleanups": 5, - // Maximum number of git clone processes that will be run concurrently per gitserver to update repositories. Note: the global git update scheduler respects gitMaxConcurrentClones. However, we allow each gitserver to run up to gitMaxConcurrentClones to allow for urgent fetches. Urgent fetches are used when a user is browsing a PR and we do not have the commit yet. + // Maximum number of git clone processes that will be run concurrently per gitserver to update repositories. Note: the global git update scheduler respects gitMaxConcurrentClones. Changes to this setting require restarting the worker instance (the worker pod in Kubernetes) before the global scheduler uses the new value. However, we allow each gitserver to run up to gitMaxConcurrentClones to allow for urgent fetches. Urgent fetches are used when a user is browsing a PR and we do not have the commit yet. "gitMaxConcurrentClones": 5, // Record git operations that are executed on configured repositories. diff --git a/docs/admin/repo/perforce.mdx b/docs/admin/repo/perforce.mdx index de5119380..5adb427f1 100644 --- a/docs/admin/repo/perforce.mdx +++ b/docs/admin/repo/perforce.mdx @@ -228,7 +228,7 @@ With this setting, Sourcegraph will ignore any rules with a host other than `*`, {/* SCHEMA_SYNC_START: admin/code_hosts/perforce.schema.json */} {/* WARNING: This section is auto-generated during releases. Do not edit manually. */} -{/* Last updated: 2026-07-06T19:37:47Z */} +{/* Last updated: 2026-08-05T21:41:22Z */} ```json { // If non-null, enforces Perforce depot permissions. diff --git a/docs/admin/telemetry/private-metadata-allowlist.mdx b/docs/admin/telemetry/private-metadata-allowlist.mdx index f10600566..ebee6211e 100644 --- a/docs/admin/telemetry/private-metadata-allowlist.mdx +++ b/docs/admin/telemetry/private-metadata-allowlist.mdx @@ -34,6 +34,7 @@ To learn more, refer to the [telemetry documentation](https://sourcegraph.com/do | `cody.smart-apply.context` | `applied` | `model` — High-cardinality model identifier; helpful for determining the model that was selected. | | `deepsearch` | `search.toolcall` | `toolName` — High-cardinality tool name; helpful for determining which tools are being used during deep search.
`toolId` — High-cardinality tool identifier; helpful for determining which tools are being used during deep search.
`model` — High-cardinality model identifier; helpful for determining which models are being used during deep search. | | `deepsearch` | `search.categorized` | `topics` — LLM-extracted topic keywords for the question (e.g. authentication, batch-changes); used for product usage reporting. | +| `batchChangeAgent` | `categorization` | `topics` — LLM-extracted topic keywords for the batch spec (e.g. dependency-updates, code-migration); used for product usage reporting. | | `admin.users` | `delete` | `userIDs` — Numeric identifiers of users being deleted; needed for audit and analytics of admin user management actions. | | `externalApi` | `request` | `procedure` — ConnectRPC procedure path (e.g. '/sourcegraph.users.v1.UsersService/GetUser'); not sensitive and needed to distinguish which external API RPCs are being used. | | `metering` | `consume` | `meteringEventId` — The UUID of the billing event in the metering export queue, used to correlate billing events with telemetry events. | diff --git a/docs/cody/capabilities/supported-models.mdx b/docs/cody/capabilities/supported-models.mdx index 029e3c118..b2d431cfe 100644 --- a/docs/cody/capabilities/supported-models.mdx +++ b/docs/cody/capabilities/supported-models.mdx @@ -14,6 +14,7 @@ Cody supports a variety of cutting-edge large language models for use in chat an | **Provider** | **Model** | **Status** | **Vision Support** | | :----------- | :-------- | :--------- | :----------------- | +| Anthropic | [Claude Opus 5](https://platform.claude.com/docs/en/about-claude/models/whats-new-opus-5) | ✅ | ✅ | | Anthropic | [Claude Opus 4.8](https://platform.claude.com/docs/en/about-claude/models/overview) | ✅ | ✅ | | Anthropic | [Claude Opus 4.7](https://platform.claude.com/docs/en/about-claude/models/overview) | ✅ | ✅ | | Anthropic | [Claude Opus 4.6](https://platform.claude.com/docs/en/about-claude/models/overview) | ✅ | ✅ | @@ -31,6 +32,9 @@ Cody supports a variety of cutting-edge large language models for use in chat an | Google | [Gemini 3.1 Flash Lite](https://docs.cloud.google.com/gemini-enterprise-agent-platform/models/gemini/3-1-flash-lite) | ✅ | ✅ | | Google | [Gemini 3.1 Pro](https://cloud.google.com/vertex-ai/generative-ai/docs/models/gemini/3-1-pro) | ✅ (beta) | ❌ | | Google | [Gemini 3.5 Flash](https://docs.cloud.google.com/gemini-enterprise-agent-platform/models/gemini/3-5-flash) | ✅ | ✅ | +| OpenAI | [GPT-5.6 Sol](https://developers.openai.com/api/docs/models/gpt-5.6-sol) | ✅ | ✅ | +| OpenAI | [GPT-5.6 Terra](https://developers.openai.com/api/docs/models/gpt-5.6-terra) | ✅ | ✅ | +| OpenAI | [GPT-5.6 Luna](https://developers.openai.com/api/docs/models/gpt-5.6-luna) | ✅ | ✅ | | OpenAI | [GPT-5.4](https://developers.openai.com/api/docs/models/gpt-5.4) | ✅ | ✅ | | OpenAI | [GPT-5.4 mini](https://developers.openai.com/api/docs/models/gpt-5.4-mini) | ✅ | ✅ | | OpenAI | [GPT-5.4 nano](https://developers.openai.com/api/docs/models/gpt-5.4-nano) | ✅ | ✅ | diff --git a/docs/self-hosted/observability/alerts.mdx b/docs/self-hosted/observability/alerts.mdx index 8c7f23bde..db6679c77 100644 --- a/docs/self-hosted/observability/alerts.mdx +++ b/docs/self-hosted/observability/alerts.mdx @@ -2385,6 +2385,105 @@ Generated query for critical alert: `min((sum by (app) (up{app=~".*(pgsql\\|code
+## precise-code-intel-worker: codeintel_upload_queue_duration + +

maximum time a precise codeintel upload has been waiting to be processed

+ +**Descriptions** + +- warning precise-code-intel-worker: 3600s+ maximum time a precise codeintel upload has been waiting to be processed for 15m0s + +**Next steps** + +- Check the precise-code-intel-worker logs for upload processing errors. +- Check the codeintel-db and precise-code-intel-worker dashboards for e.g. CPU/memory/disk resource saturation. +- If the queue is growing and workers are healthy, consider scaling up precise-code-intel-worker. +- Learn more about the related dashboard panel in the [dashboards reference](dashboards#precise-code-intel-worker-codeintel_upload_queue_duration). +- **Silence this alert:** If you are aware of this alert and want to silence notifications for it, add the following to your site configuration and set a reminder to re-evaluate the alert: + +```json +"observability.silenceAlerts": [ + "warning_precise-code-intel-worker_codeintel_upload_queue_duration" +] +``` + +*Managed by the Sourcegraph Code Understanding team.* + +
+Technical details + +Generated query for warning alert: `max((max(src_workerutil_queue_duration_seconds{domain="codeintel_upload"})) >= 3600)` + +
+ +
+ +## precise-code-intel-worker: codeintel_upload_processor_runtime_limit_exceeded + +

SCIP uploads killed for exceeding the configured maximum job runtime every 30m

+ +**Descriptions** + +- warning precise-code-intel-worker: 0+ SCIP uploads killed for exceeding the configured maximum job runtime every 30m + +**Next steps** + +- Check the precise-code-intel-worker logs for errors mentioning "job exceeded maximum execution time" to identify the affected upload IDs. +- Check the precise-code-intel-worker dashboard for CPU, memory, and upload size saturation. +- If the uploads are valid but consistently exceed the configured runtime, consider increasing PRECISE_CODE_INTEL_WORKER_MAXIMUM_RUNTIME_PER_JOB or scaling precise-code-intel-worker resources. +- Learn more about the related dashboard panel in the [dashboards reference](dashboards#precise-code-intel-worker-codeintel_upload_processor_runtime_limit_exceeded). +- **Silence this alert:** If you are aware of this alert and want to silence notifications for it, add the following to your site configuration and set a reminder to re-evaluate the alert: + +```json +"observability.silenceAlerts": [ + "warning_precise-code-intel-worker_codeintel_upload_processor_runtime_limit_exceeded" +] +``` + +*Managed by the Sourcegraph Code Understanding team.* + +
+Technical details + +Generated query for warning alert: `max((sum(increase(src_codeintel_upload_processor_maximum_runtime_exceeded_total{job="precise-code-intel-worker"}[30m]))) > 0)` + +
+ +
+ +## precise-code-intel-worker: codeintel_upload_processor_runtime_over_limit + +

time the oldest active SCIP upload has continued running past the configured worker runtime limit

+ +**Descriptions** + +- warning precise-code-intel-worker: 0s+ time the oldest active SCIP upload has continued running past the configured worker runtime limit for 10m0s + +**Next steps** + +- The worker cancels a job`s context when it hits the runtime limit, so a job still running this far past the limit indicates the handler is not responding to cancellation. +- Check the precise-code-intel-worker logs for the active upload ID and processing errors, and check whether the instance is CPU-saturated or deadlocked. +- If the job never terminates, restart the affected precise-code-intel-worker instance and report the stuck upload to the Code Understanding team. +- Learn more about the related dashboard panel in the [dashboards reference](dashboards#precise-code-intel-worker-codeintel_upload_processor_runtime_over_limit). +- **Silence this alert:** If you are aware of this alert and want to silence notifications for it, add the following to your site configuration and set a reminder to re-evaluate the alert: + +```json +"observability.silenceAlerts": [ + "warning_precise-code-intel-worker_codeintel_upload_processor_runtime_over_limit" +] +``` + +*Managed by the Sourcegraph Code Understanding team.* + +
+Technical details + +Generated query for warning alert: `max((max by (instance) (clamp_min(time() - src_codeintel_upload_processor_oldest_start_time_seconds{job="precise-code-intel-worker"\} - src_codeintel_upload_processor_maximum_runtime_per_job_seconds\{job="precise-code-intel-worker"\}, 0) and src_codeintel_upload_processor_oldest_start_time_seconds\{job="precise-code-intel-worker"\} > 0 and src_codeintel_upload_processor_maximum_runtime_per_job_seconds\{job="precise-code-intel-worker"} > 0)) > 0)` + +
+ +
+ ## precise-code-intel-worker: mean_blocked_seconds_per_conn_request

mean blocked seconds per conn request

@@ -4378,6 +4477,10 @@ Generated query for warning alert: `max((sum by (instance) (rate(searcher_servic **Next steps** +- Check the error code breakdown. 503 responses usually indicate a temporary dependency failure, while 500 responses indicate an unexpected searcher failure. +- Compare gRPC latency with the archive fetch queue and archive preparation duration. A growing fetch queue points to gitserver or cache pressure rather than local search execution. +- Check hybrid search final states and Zoekt request errors to determine whether the indexed portion of hybrid search is failing. +- Inspect searcher logs and traces for the affected time range, focusing on repository, commit, query, and the wrapped error. - Learn more about the related dashboard panel in the [dashboards reference](dashboards#searcher-unindexed_search_request_errors). - **Silence this alert:** If you are aware of this alert and want to silence notifications for it, add the following to your site configuration and set a reminder to re-evaluate the alert: @@ -6226,6 +6329,74 @@ Generated query for warning alert: `max((max by (name, queue) (src_executors_man
+## executor: codeintel_queue_growing_but_not_processing + +

codeintel executor queue has a backlog that is not being processed

+ +**Descriptions** + +- critical executor: the codeintel executor queue has a backlog that is not being processed for 30m0s + +**Next steps** + +- Check the corresponding executors in Site Admin > Executors — they may be failing to boot, failing to dequeue, or wedged mid-job. +- Check src_executors_managed_instance_groups_autoscaler_unhealthy for the same queue: if a managed instance group is unhealthy, GCP cannot provision VMs (stockout/quota) and no executor is available to process the backlog. +- Check the Grafana dashboard section for APIClient — executors should be making frequent Dequeue and Heartbeat requests that must not fail. +- A queue whose jobs are all failing (rather than not being picked up) still counts as processing here; investigate that via the executor error-rate alerts and job logs instead. +- More help interpreting this metric is available in the [dashboards reference](dashboards#executor-codeintel_queue_growing_but_not_processing). +- **Silence this alert:** If you are aware of this alert and want to silence notifications for it, add the following to your site configuration and set a reminder to re-evaluate the alert: + +```json +"observability.silenceAlerts": [ + "critical_executor_codeintel_queue_growing_but_not_processing" +] +``` + +*Managed by the Sourcegraph Platform team.* + +
+Technical details + +Custom query for critical alert: `max(((max(src_workerutil_queue_depth{domain="executors_codeintel"\}) > 0) and (sum(rate(src_workerutil_dbworker_store_total\{domain="codeintel_index",op=~"MarkComplete\\|MarkErrored\\|MarkFailed"}[30m])) == 0)) > 0)` + +
+ +
+ +## executor: batches_queue_growing_but_not_processing + +

batches executor queue has a backlog that is not being processed

+ +**Descriptions** + +- critical executor: the batches executor queue has a backlog that is not being processed for 30m0s + +**Next steps** + +- Check the corresponding executors in Site Admin > Executors — they may be failing to boot, failing to dequeue, or wedged mid-job. +- Check src_executors_managed_instance_groups_autoscaler_unhealthy for the same queue: if a managed instance group is unhealthy, GCP cannot provision VMs (stockout/quota) and no executor is available to process the backlog. +- Check the Grafana dashboard section for APIClient — executors should be making frequent Dequeue and Heartbeat requests that must not fail. +- A queue whose jobs are all failing (rather than not being picked up) still counts as processing here; investigate that via the executor error-rate alerts and job logs instead. +- More help interpreting this metric is available in the [dashboards reference](dashboards#executor-batches_queue_growing_but_not_processing). +- **Silence this alert:** If you are aware of this alert and want to silence notifications for it, add the following to your site configuration and set a reminder to re-evaluate the alert: + +```json +"observability.silenceAlerts": [ + "critical_executor_batches_queue_growing_but_not_processing" +] +``` + +*Managed by the Sourcegraph Platform team.* + +
+Technical details + +Custom query for critical alert: `max(((max(src_workerutil_queue_depth{domain="executors_batches"\}) > 0) and (sum(rate(src_workerutil_dbworker_store_total\{domain="batch_spec_workspace_execution_worker_store",op=~"MarkComplete\\|MarkErrored\\|MarkFailed"}[30m])) == 0)) > 0)` + +
+ +
+ ## executor: executor_handlers

executor active handlers

@@ -7121,8 +7292,8 @@ Generated query for critical alert: `max((max(deriv(src_deepsearch_questions_in_ **Next steps** -- Check frontend logs for `Worker failed to process question` errors. -- Check for upstream LLM provider issues. +- Check frontend logs for `worker failed to process question` errors. +- Common causes: upstream LLM provider failures (rate limiting or capacity, e.g. 429/503, and timeouts), database errors mid-processing, or worker panics (`worker panic while processing question`). - More help interpreting this metric is available in the [dashboards reference](dashboards#deepsearch-deepsearch_question_processing_error_rate). - **Silence this alert:** If you are aware of this alert and want to silence notifications for it, add the following to your site configuration and set a reminder to re-evaluate the alert: @@ -7361,6 +7532,39 @@ Generated query for warning alert: `max((sum(rate(src_batch_change_agents_stream
+## batch-changes: batch_changes_records_reset + +

stalled jobs reset to queued over 1h by queue

+ +**Descriptions** + +- warning batch-changes: 5+ stalled jobs reset to queued over 1h by queue for 15m0s + +**Next steps** + +- Resets happen when a worker holding a job stops sending heartbeats, i.e. the worker process crashed or was killed mid-job. +- A small number around a deploy or restart is expected. Sustained resets indicate a crash loop or OOM-kills in the worker. +- Cross-reference worker container restarts and memory usage, and check worker logs for panics. +- More help interpreting this metric is available in the [dashboards reference](dashboards#batch-changes-batch_changes_records_reset). +- **Silence this alert:** If you are aware of this alert and want to silence notifications for it, add the following to your site configuration and set a reminder to re-evaluate the alert: + +```json +"observability.silenceAlerts": [ + "warning_batch-changes_batch_changes_records_reset" +] +``` + +*Managed by the Sourcegraph Code Plane team.* + +
+Technical details + +Generated query for warning alert: `max((sum by (domain) (increase(src_dbworker_resetter_record_resets_total{domain=~"^(batches_reconciler_worker\\|batches_bulk_worker\\|batch_changes_batch_spec_resolution_worker\\|batch_spec_workspace_execution_worker)_resetter$"}[1h]))) > 5)` + +
+ +
+ ## externalapi: externalapi_error_rate

error rate over 5m

diff --git a/docs/self-hosted/observability/dashboards.mdx b/docs/self-hosted/observability/dashboards.mdx index f7d09d118..6dc83214b 100644 --- a/docs/self-hosted/observability/dashboards.mdx +++ b/docs/self-hosted/observability/dashboards.mdx @@ -10955,6 +10955,28 @@ sum by(instance) (src_codeintel_upload_processor_upload_size{job="precise-code-i
+#### precise-code-intel-worker: codeintel_upload_queue_duration + +

Maximum time a precise codeintel upload has been waiting to be processed

+ +Refer to the [alerts reference](alerts#precise-code-intel-worker-codeintel_upload_queue_duration) for 1 alert related to this panel. + +To see this panel, visit `/-/debug/grafana/d/precise-code-intel-worker/precise-code-intel-worker?viewPanel=100002` on your Sourcegraph instance. + +*Managed by the Sourcegraph Code Understanding team.* + +
+Technical details + +Query: + +``` +max(src_workerutil_queue_duration_seconds{domain="codeintel_upload"}) +``` +
+ +
+ #### precise-code-intel-worker: codeintel_upload_processor_total

Handler operations every 5m

@@ -11043,6 +11065,82 @@ sum(increase(src_codeintel_upload_processor_errors_total{job=~"^precise-code-int
+#### precise-code-intel-worker: codeintel_upload_processor_active_upload_runtime + +

Runtime of the oldest SCIP upload actively being processed by each worker instance

+ +Compare against the configured maximum runtime (exposed as src_codeintel_upload_processor_maximum_runtime_per_job_seconds) +to see how much headroom uploads have before hitting PRECISE_CODE_INTEL_WORKER_MAXIMUM_RUNTIME_PER_JOB. + +This panel has no related alerts. + +To see this panel, visit `/-/debug/grafana/d/precise-code-intel-worker/precise-code-intel-worker?viewPanel=100020` on your Sourcegraph instance. + +*Managed by the Sourcegraph Code Understanding team.* + +
+Technical details + +Query: + +``` +max by(instance) ((time() - src_codeintel_upload_processor_oldest_start_time_seconds{job="precise-code-intel-worker"}) + and src_codeintel_upload_processor_oldest_start_time_seconds{job="precise-code-intel-worker"} > 0) +``` +
+ +
+ +#### precise-code-intel-worker: codeintel_upload_processor_runtime_limit_exceeded + +

SCIP uploads killed for exceeding the configured maximum job runtime every 30m

+ +Refer to the [alerts reference](alerts#precise-code-intel-worker-codeintel_upload_processor_runtime_limit_exceeded) for 1 alert related to this panel. + +To see this panel, visit `/-/debug/grafana/d/precise-code-intel-worker/precise-code-intel-worker?viewPanel=100021` on your Sourcegraph instance. + +*Managed by the Sourcegraph Code Understanding team.* + +
+Technical details + +Query: + +``` +sum(increase(src_codeintel_upload_processor_maximum_runtime_exceeded_total{job="precise-code-intel-worker"}[30m])) +``` +
+ +
+ +#### precise-code-intel-worker: codeintel_upload_processor_runtime_over_limit + +

Time the oldest active SCIP upload has continued running past the configured worker runtime limit

+ +Refer to the [alerts reference](alerts#precise-code-intel-worker-codeintel_upload_processor_runtime_over_limit) for 1 alert related to this panel. + +To see this panel, visit `/-/debug/grafana/d/precise-code-intel-worker/precise-code-intel-worker?viewPanel=100022` on your Sourcegraph instance. + +*Managed by the Sourcegraph Code Understanding team.* + +
+Technical details + +Query: + +``` +max by(instance) (clamp_min( + time() - src_codeintel_upload_processor_oldest_start_time_seconds{job="precise-code-intel-worker"} + - src_codeintel_upload_processor_maximum_runtime_per_job_seconds{job="precise-code-intel-worker"}, + 0 + ) + and src_codeintel_upload_processor_oldest_start_time_seconds{job="precise-code-intel-worker"} > 0 + and src_codeintel_upload_processor_maximum_runtime_per_job_seconds{job="precise-code-intel-worker"} > 0) +``` +
+ +
+ ### Precise Code Intel Worker: Codeintel: dbstore stats #### precise-code-intel-worker: codeintel_uploads_store_total @@ -18505,7 +18603,34 @@ sum by (code)(increase(searcher_service_request_total{code!="200",code!="cancele
-### Searcher: Cache store +#### searcher: unindexed_search_request_duration + +

99th percentile unindexed search RPC duration over 5m

+ +This graph measures the complete Search stream, including archive fetching, +local or hybrid search execution, result serialization, and downstream +backpressure. Compare it with the archive pipeline and hybrid Zoekt panels to +locate which stage is responsible for a latency increase. + +This panel has no related alerts. + +To see this panel, visit `/-/debug/grafana/d/searcher/searcher?viewPanel=100020` on your Sourcegraph instance. + +*Managed by the Sourcegraph Code Understanding team.* + +
+Technical details + +Query: + +``` +histogram_quantile(0.99, sum by (le) (rate(grpc_server_handling_seconds_bucket{grpc_service="searcher.v1.SearcherService",grpc_method="Search",instance=~`${instance:regex}`}[5m]))) +``` +
+ +
+ +### Searcher: Unindexed search archive pipeline #### searcher: store_fetching @@ -18585,17 +18710,125 @@ To see this panel, visit `/-/debug/grafana/d/searcher/searcher?viewPanel=100102` Query: ``` -sum by (instance) (rate(searcher_store_fetch_failed{instance=~`${instance:regex}`}[10m])) +sum by (instance) (increase(searcher_store_fetch_failed{instance=~`${instance:regex}`}[10m])) +``` + + +
+ +#### searcher: store_cache_hit_percentage + +

Search archive cache hit percentage over 5m

+ +This graph shows how often searcher can reuse a repository archive from its +local disk cache. A falling hit percentage increases gitserver traffic and can +cause the archive fetch queue and search latency to rise. Look for cache +evictions, cache disk pressure, restarts, or traffic moving between replicas. + +This panel has no related alerts. + +To see this panel, visit `/-/debug/grafana/d/searcher/searcher?viewPanel=100110` on your Sourcegraph instance. + +*Managed by the Sourcegraph Code Understanding team.* + +
+Technical details + +Query: + +``` +100 * sum(rate(src_diskcache_store_access_total{component="store",result="hit",instance=~`${instance:regex}`}[5m])) / sum(rate(src_diskcache_store_access_total{component="store",instance=~`${instance:regex}`}[5m])) +``` +
+ +
+ +#### searcher: store_zip_prepare_duration + +

Average archive preparation duration by cache outcome over 5m

+ +This graph measures the average time needed to make a repository archive +available to a search. Cache misses include fetching code from gitserver and +should be slower than hits. Compare this with the fetch queue to distinguish +dependency or cache pressure from local search execution. The average is used +because the current histogram`s highest finite bucket is 10 seconds, while a +large archive fetch can take minutes. + +This panel has no related alerts. + +To see this panel, visit `/-/debug/grafana/d/searcher/searcher?viewPanel=100111` on your Sourcegraph instance. + +*Managed by the Sourcegraph Code Understanding team.* + +
+Technical details + +Query: + +``` +sum by (cache_hit) (rate(searcher_store_zip_prepare_duration_sum{instance=~`${instance:regex}`}[5m])) / sum by (cache_hit) (rate(searcher_store_zip_prepare_duration_count{instance=~`${instance:regex}`}[5m])) ```

-### Searcher: Index use +#### searcher: archive_size + +

95th percentile searched archive size over 5m

+ +This graph shows the 95th percentile size of repository archives searched by +searcher. A rise with otherwise flat traffic indicates that larger repositories +or commits are increasing CPU, memory, and search latency. + +This panel has no related alerts. + +To see this panel, visit `/-/debug/grafana/d/searcher/searcher?viewPanel=100120` on your Sourcegraph instance. + +*Managed by the Sourcegraph Code Understanding team.* + +
+Technical details + +Query: + +``` +histogram_quantile(0.95, sum by (le) (rate(searcher_service_archive_size_bytes_bucket{instance=~`${instance:regex}`}[5m]))) +``` +
+ +
+ +#### searcher: archive_files + +

95th percentile files per searched archive over 5m

+ +This graph shows the 95th percentile number of files in archives searched by +searcher. Use it with archive size to identify workload amplification that is +not visible in request rate alone. + +This panel has no related alerts. + +To see this panel, visit `/-/debug/grafana/d/searcher/searcher?viewPanel=100121` on your Sourcegraph instance. + +*Managed by the Sourcegraph Code Understanding team.* + +
+Technical details + +Query: + +``` +histogram_quantile(0.95, sum by (le) (rate(searcher_service_archive_files_bucket{instance=~`${instance:regex}`}[5m]))) +``` +
+ +
+ +### Searcher: Hybrid indexed search #### searcher: searcher_hybrid_final_state_total -

Hybrid search final state over 10m

+

Hybrid search final state percentage over 10m

This graph is about our interactions with the search index (zoekt) to help complete unindexed search requests. Searcher will use indexed search for the @@ -18626,7 +18859,7 @@ To see this panel, visit `/-/debug/grafana/d/searcher/searcher?viewPanel=100200` Query: ``` -sum by (state)(increase(searcher_hybrid_final_state_total{instance=~`${instance:regex}`}[10m])) +100 * sum by (state) (rate(searcher_hybrid_final_state_total{instance=~`${instance:regex}`}[10m])) / ignoring(state) group_left sum(rate(searcher_hybrid_final_state_total{instance=~`${instance:regex}`}[10m])) ``` @@ -18653,7 +18886,113 @@ To see this panel, visit `/-/debug/grafana/d/searcher/searcher?viewPanel=100201` Query: ``` -sum by (reason)(increase(searcher_hybrid_retry_total{instance=~`${instance:regex}`}[10m])) +sum by (reason)(rate(searcher_hybrid_retry_total{instance=~`${instance:regex}`}[10m])) +``` + + +
+ +#### searcher: hybrid_zoekt_request_duration + +

95th percentile aggregate Zoekt request duration by result over 5m

+ +This graph measures the aggregate Zoekt portion of a hybrid searcher request. +If it rises with total gRPC latency, investigate Zoekt workload and capacity. +If searcher gRPC latency rises while this remains stable, investigate archive +fetching, local search execution, or response streaming instead. Values above +10 seconds may appear as +Inf because of the metric`s current histogram buckets. + +This panel has no related alerts. + +To see this panel, visit `/-/debug/grafana/d/searcher/searcher?viewPanel=100210` on your Sourcegraph instance. + +*Managed by the Sourcegraph Code Understanding team.* + +
+Technical details + +Query: + +``` +histogram_quantile(0.95, sum by (le, code) (rate(src_zoekt_request_duration_seconds_bucket{category="SearchAll",instance=~`${instance:regex}`}[5m]))) +``` +
+ +
+ +#### searcher: hybrid_zoekt_request_duration_by_host + +

95th percentile Zoekt endpoint request duration over 5m

+ +This graph breaks the Zoekt portion of hybrid search down by endpoint. A +single slow hostname suggests an endpoint or shard-placement issue; all +hostnames worsening together suggests broader workload or capacity pressure. + +This panel has no related alerts. + +To see this panel, visit `/-/debug/grafana/d/searcher/searcher?viewPanel=100211` on your Sourcegraph instance. + +*Managed by the Sourcegraph Code Understanding team.* + +
+Technical details + +Query: + +``` +histogram_quantile(0.95, sum by (le, hostname) (rate(src_zoekt_request_duration_seconds_bucket{category="Search",instance=~`${instance:regex}`}[5m]))) +``` +
+ +
+ +#### searcher: hybrid_zoekt_slow_requests + +

Aggregate Zoekt requests taking longer than 10 seconds over 5m

+ +This graph preserves visibility into slow hybrid Zoekt requests beyond the +highest finite histogram bucket. Use traces to understand whether Zoekt wait, +match-tree search, result volume, or sending time dominates these requests. + +This panel has no related alerts. + +To see this panel, visit `/-/debug/grafana/d/searcher/searcher?viewPanel=100220` on your Sourcegraph instance. + +*Managed by the Sourcegraph Code Understanding team.* + +
+Technical details + +Query: + +``` +sum(rate(src_zoekt_request_duration_seconds_count{category="SearchAll",instance=~`${instance:regex}`}[5m])) - sum(rate(src_zoekt_request_duration_seconds_bucket{category="SearchAll",le="10",instance=~`${instance:regex}`}[5m])) +``` +
+ +
+ +#### searcher: hybrid_zoekt_aggregate_size + +

95th percentile initial aggregated Zoekt result size by flush reason over 5m

+ +This graph shows how many file matches searcher buffers before the first +aggregate Zoekt result is flushed. Large aggregates or MaxSize flushes can +increase memory use and delay the first result sent upstream. + +This panel has no related alerts. + +To see this panel, visit `/-/debug/grafana/d/searcher/searcher?viewPanel=100221` on your Sourcegraph instance. + +*Managed by the Sourcegraph Code Understanding team.* + +
+Technical details + +Query: + +``` +histogram_quantile(0.95, sum by (le, reason) (rate(src_zoekt_final_aggregate_size_bucket{instance=~`${instance:regex}`}[5m]))) ```
@@ -22721,11 +23060,11 @@ histogram_quantile(0.90, sum by (le, name)(rate(zoekt_search_duration_seconds_bu
-#### zoekt: indexed_search_request_duration_p75_aggregate +#### zoekt: indexed_search_request_duration_p50_aggregate -

75th percentile indexed search duration over 1m (aggregate)

+

50th percentile indexed search duration over 1m (aggregate)

-This dashboard shows the 75th percentile of search request durations over the last minute (aggregated across all instances). +This dashboard shows the 50th percentile of search request durations over the last minute (aggregated across all instances). Large duration spikes can be an indicator of saturation and / or a performance regression. @@ -22741,19 +23080,17 @@ To see this panel, visit `/-/debug/grafana/d/zoekt/zoekt?viewPanel=100402` on yo Query: ``` -histogram_quantile(0.75, sum by (le, name)(rate(zoekt_search_duration_seconds_bucket[1m]))) +histogram_quantile(0.50, sum by (le, name)(rate(zoekt_search_duration_seconds_bucket[1m]))) ```
-#### zoekt: indexed_search_request_duration_p99_by_instance - -

99th percentile indexed search duration over 1m (per instance)

+#### zoekt: indexed_search_grpc_request_duration_p50_aggregate -This dashboard shows the 99th percentile of search request durations over the last minute (broken out per instance). +

50th percentile gRPC request duration over 2m for the selected methods (aggregate)

-Large duration spikes can be an indicator of saturation and / or a performance regression. +This dashboard shows the median lifetime of each selected gRPC method, including scheduler waiting, search execution, serialization, result delivery, and client backpressure. Select StreamSearch to isolate streaming search traffic. This panel has no related alerts. @@ -22767,23 +23104,23 @@ To see this panel, visit `/-/debug/grafana/d/zoekt/zoekt?viewPanel=100410` on yo Query: ``` -histogram_quantile(0.99, sum by (le, instance)(rate(zoekt_search_duration_seconds_bucket{instance=~`${instance:regex}`}[1m]))) +histogram_quantile(0.50, sum by (le, grpc_method) (rate(grpc_server_handling_seconds_bucket{grpc_service="zoekt.webserver.v1.WebserverService",grpc_method=~`${zoekt_webserver_method:regex}`,instance=~`${webserver_instance:regex}`}[2m]))) ```
-#### zoekt: indexed_search_request_duration_p90_by_instance +#### zoekt: indexed_search_request_duration_p99_by_instance -

90th percentile indexed search duration over 1m (per instance)

+

99th percentile indexed search duration over 1m (per instance)

-This dashboard shows the 90th percentile of search request durations over the last minute (broken out per instance). +This dashboard shows the 99th percentile of search request durations over the last minute (broken out per instance). Large duration spikes can be an indicator of saturation and / or a performance regression. This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/zoekt/zoekt?viewPanel=100411` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/zoekt/zoekt?viewPanel=100420` on your Sourcegraph instance. *Managed by the Sourcegraph Code Understanding team.* @@ -22793,23 +23130,23 @@ To see this panel, visit `/-/debug/grafana/d/zoekt/zoekt?viewPanel=100411` on yo Query: ``` -histogram_quantile(0.90, sum by (le, instance)(rate(zoekt_search_duration_seconds_bucket{instance=~`${instance:regex}`}[1m]))) +histogram_quantile(0.99, sum by (le, instance)(rate(zoekt_search_duration_seconds_bucket{instance=~`${webserver_instance:regex}`}[1m]))) ```
-#### zoekt: indexed_search_request_duration_p75_by_instance +#### zoekt: indexed_search_request_duration_p90_by_instance -

75th percentile indexed search duration over 1m (per instance)

+

90th percentile indexed search duration over 1m (per instance)

-This dashboard shows the 75th percentile of search request durations over the last minute (broken out per instance). +This dashboard shows the 90th percentile of search request durations over the last minute (broken out per instance). Large duration spikes can be an indicator of saturation and / or a performance regression. This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/zoekt/zoekt?viewPanel=100412` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/zoekt/zoekt?viewPanel=100421` on your Sourcegraph instance. *Managed by the Sourcegraph Code Understanding team.* @@ -22819,25 +23156,49 @@ To see this panel, visit `/-/debug/grafana/d/zoekt/zoekt?viewPanel=100412` on yo Query: ``` -histogram_quantile(0.75, sum by (le, instance)(rate(zoekt_search_duration_seconds_bucket{instance=~`${instance:regex}`}[1m]))) +histogram_quantile(0.90, sum by (le, instance)(rate(zoekt_search_duration_seconds_bucket{instance=~`${webserver_instance:regex}`}[1m]))) ```
-#### zoekt: indexed_search_num_concurrent_requests_aggregate +#### zoekt: indexed_search_request_duration_p50_by_instance -

Amount of in-flight indexed search requests (aggregate)

+

50th percentile indexed search duration over 1m (per instance)

-This dashboard shows the current number of indexed search requests that are in-flight, aggregated across all instances. +This dashboard shows the 50th percentile of search request durations over the last minute (broken out per instance). -In-flight search requests include both running and queued requests. +Large duration spikes can be an indicator of saturation and / or a performance regression. + +This panel has no related alerts. + +To see this panel, visit `/-/debug/grafana/d/zoekt/zoekt?viewPanel=100422` on your Sourcegraph instance. + +*Managed by the Sourcegraph Code Understanding team.* + +
+Technical details + +Query: + +``` +histogram_quantile(0.50, sum by (le, instance)(rate(zoekt_search_duration_seconds_bucket{instance=~`${webserver_instance:regex}`}[1m]))) +``` +
+ +
+ +#### zoekt: indexed_search_num_concurrent_requests_aggregate + +

Amount of running indexed searches and shard searches (aggregate)

-The number of in-flight requests can serve as a proxy for the general load that webserver instances are under. +This dashboard shows the current number of admitted searches executing and the individual shard searches they fan out to, aggregated across all instances. + +Compare these values with scheduler queue state to distinguish active backend work from requests waiting for admission. This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/zoekt/zoekt?viewPanel=100420` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/zoekt/zoekt?viewPanel=100430` on your Sourcegraph instance. *Managed by the Sourcegraph Code Understanding team.* @@ -22847,7 +23208,7 @@ To see this panel, visit `/-/debug/grafana/d/zoekt/zoekt?viewPanel=100420` on yo Query: ``` -sum by (name) (zoekt_search_running) +sum by (__name__) ({__name__=~"zoekt_search_running|zoekt_search_shard_running"}) ``` @@ -22855,17 +23216,15 @@ sum by (name) (zoekt_search_running) #### zoekt: indexed_search_num_concurrent_requests_by_instance -

Amount of in-flight indexed search requests (per instance)

- -This dashboard shows the current number of indexed search requests that are-flight, broken out per instance. +

Amount of running indexed searches and shard searches (per instance)

-In-flight search requests include both running and queued requests. +This dashboard shows the current number of admitted searches executing and the individual shard searches they fan out to, broken out per instance. -The number of in-flight requests can serve as a proxy for the general load that webserver instances are under. +Compare these values with scheduler queue state to identify overloaded or unevenly loaded instances. This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/zoekt/zoekt?viewPanel=100421` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/zoekt/zoekt?viewPanel=100431` on your Sourcegraph instance. *Managed by the Sourcegraph Code Understanding team.* @@ -22875,7 +23234,7 @@ To see this panel, visit `/-/debug/grafana/d/zoekt/zoekt?viewPanel=100421` on yo Query: ``` -sum by (instance, name) (zoekt_search_running{instance=~`${instance:regex}`}) +sum by (instance, __name__) ({__name__=~"zoekt_search_running|zoekt_search_shard_running",instance=~`${webserver_instance:regex}`}) ``` @@ -22895,7 +23254,7 @@ can indicate that the indexed-search backend is saturated. This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/zoekt/zoekt?viewPanel=100430` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/zoekt/zoekt?viewPanel=100440` on your Sourcegraph instance. *Managed by the Sourcegraph Code Understanding team.* @@ -22925,7 +23284,7 @@ can indicate that the indexed-search backend is saturated. This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/zoekt/zoekt?viewPanel=100431` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/zoekt/zoekt?viewPanel=100441` on your Sourcegraph instance. *Managed by the Sourcegraph Code Understanding team.* @@ -22947,7 +23306,7 @@ sum by (instance) (deriv(zoekt_search_running[1m])) Refer to the [alerts reference](alerts#zoekt-indexed_search_request_errors) for 1 alert related to this panel. -To see this panel, visit `/-/debug/grafana/d/zoekt/zoekt?viewPanel=100440` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/zoekt/zoekt?viewPanel=100450` on your Sourcegraph instance. *Managed by the Sourcegraph Code Understanding team.* @@ -22963,6 +23322,155 @@ sum by (code)(increase(src_zoekt_request_duration_seconds_count{code!~"2.."}[5m]
+#### zoekt: indexed_search_index_bytes_loaded_per_request + +

Index bytes loaded per indexed search request over 5m

+ +This dashboard shows how much index data Zoekt reads per search request. An increase without a corresponding traffic increase indicates that the average query is doing more index work. + +This panel has no related alerts. + +To see this panel, visit `/-/debug/grafana/d/zoekt/zoekt?viewPanel=100460` on your Sourcegraph instance. + +*Managed by the Sourcegraph Code Understanding team.* + +
+Technical details + +Query: + +``` +sum(rate(zoekt_search_index_loaded_bytes_total[5m])) / sum(rate(zoekt_search_requests_total[5m])) +``` +
+ +
+ +#### zoekt: indexed_search_content_bytes_loaded_per_request + +

Content bytes loaded per indexed search request over 5m

+ +This dashboard shows how much file content Zoekt loads to verify matches per search request. A rise can explain backend latency even when request volume is unchanged. + +This panel has no related alerts. + +To see this panel, visit `/-/debug/grafana/d/zoekt/zoekt?viewPanel=100461` on your Sourcegraph instance. + +*Managed by the Sourcegraph Code Understanding team.* + +
+Technical details + +Query: + +``` +sum(rate(zoekt_search_content_loaded_bytes_total[5m])) / sum(rate(zoekt_search_requests_total[5m])) +``` +
+ +
+ +#### zoekt: indexed_search_files_considered_per_request + +

Files considered per indexed search request over 5m

+ +This dashboard shows the average candidate files fully evaluated per search. Rising values indicate broader or less selective searches. + +This panel has no related alerts. + +To see this panel, visit `/-/debug/grafana/d/zoekt/zoekt?viewPanel=100470` on your Sourcegraph instance. + +*Managed by the Sourcegraph Code Understanding team.* + +
+Technical details + +Query: + +``` +sum(rate(zoekt_search_files_considered_total[5m])) / sum(rate(zoekt_search_requests_total[5m])) +``` +
+ +
+ +#### zoekt: indexed_search_regexps_considered_per_request + +

Regular expressions considered per indexed search request over 5m

+ +This dashboard shows the average number of regexp evaluations per search. Rising values indicate more expensive verification work. + +This panel has no related alerts. + +To see this panel, visit `/-/debug/grafana/d/zoekt/zoekt?viewPanel=100471` on your Sourcegraph instance. + +*Managed by the Sourcegraph Code Understanding team.* + +
+Technical details + +Query: + +``` +sum(rate(zoekt_search_regexps_considered_total[5m])) / sum(rate(zoekt_search_requests_total[5m])) +``` +
+ +
+ +#### zoekt: indexed_search_backend_failures + +

Indexed search and shard failure rate over 5m

+ +Search failures and crashes indicate failed or potentially incomplete searches. Shard-load and watchdog failures can make indexed data unavailable even when latency remains normal. + +This panel has no related alerts. + +To see this panel, visit `/-/debug/grafana/d/zoekt/zoekt?viewPanel=100480` on your Sourcegraph instance. + +*Managed by the Sourcegraph Code Understanding team.* + +
+Technical details + +Query: + +``` +sum by (failure) ( + label_replace(rate(zoekt_search_failed_total[5m]), "failure", "search failures", "__name__", ".*") + or label_replace(rate(zoekt_search_crashes_total[5m]), "failure", "search crashes", "__name__", ".*") + or label_replace(rate(zoekt_shards_load_failed_total[5m]), "failure", "shard load failures", "__name__", ".*") + or label_replace(rate(zoekt_webserver_watchdog_errors_total[5m]), "failure", "watchdog errors", "__name__", ".*") + ) +``` +
+ +
+ +#### zoekt: indexed_search_shards_loaded + +

Number of shards currently loaded

+ +Unexpected drops can indicate shard loading or availability problems. Correlate changes with shard-load failures and indexing activity. + +This panel has no related alerts. + +To see this panel, visit `/-/debug/grafana/d/zoekt/zoekt?viewPanel=100481` on your Sourcegraph instance. + +*Managed by the Sourcegraph Code Understanding team.* + +
+Technical details + +Query: + +``` +sum(zoekt_shards_loaded) +``` +
+ +
+ #### zoekt: zoekt_shards_sched

Current number of zoekt scheduler processes in a state

@@ -22978,7 +23486,7 @@ For a full explanation of the states see https://github.com/sourcegraph/zoekt/bl This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/zoekt/zoekt?viewPanel=100450` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/zoekt/zoekt?viewPanel=100490` on your Sourcegraph instance. *Managed by the Sourcegraph Code Understanding team.* @@ -23009,7 +23517,31 @@ For a full explanation of the states see https://github.com/sourcegraph/zoekt/bl This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/zoekt/zoekt?viewPanel=100451` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/zoekt/zoekt?viewPanel=100491` on your Sourcegraph instance. + +*Managed by the Sourcegraph Code Understanding team.* + +
+Technical details + +Query: + +``` +sum by (type, state) (rate(zoekt_shards_sched_total[5m])) +``` +
+ +
+ +#### zoekt: zoekt_scheduler_timeout_rate + +

Rate of searches that time out waiting for scheduler admission over 5m

+ +Scheduler timeouts mean searches expired before acquiring execution capacity. Correlate sustained timeouts with queued scheduler work, CPU saturation, and gRPC deadline-exceeded responses. + +This panel has no related alerts. + +To see this panel, visit `/-/debug/grafana/d/zoekt/zoekt?viewPanel=100492` on your Sourcegraph instance. *Managed by the Sourcegraph Code Understanding team.* @@ -23019,7 +23551,7 @@ To see this panel, visit `/-/debug/grafana/d/zoekt/zoekt?viewPanel=100451` on yo Query: ``` -sum by (type, state) (rate(zoekt_shards_sched[5m])) +sum by (type) (rate(zoekt_shards_sched_total{state="timedout"}[5m])) ``` @@ -25709,6 +26241,58 @@ max by (name, queue) (src_executors_managed_instance_groups_autoscaler_assigned_
+#### executor: codeintel_queue_growing_but_not_processing + +

Codeintel executor queue has a backlog that is not being processed

+ +Fires when the codeintel executor queue has a non-empty backlog (`src_workerutil_queue_depth{domain="executors_codeintel"} > 0`) while zero jobs have reached a terminal state over the last 30 minutes (`src_workerutil_dbworker_store_total{domain="codeintel_index"}`). With a backlog present, zero completions over 30m is already abnormal — the only benign zero-completion case (an empty queue) is excluded by the backlog guard. +This is the true "executors not draining" signal: it distinguishes stuck/broken executors from executors that are simply under-provisioned. An under-provisioned queue (backlog present but jobs still completing) has a non-zero terminal-transition rate and will NOT trip this alert — that case is a capacity-review signal, not a stall. +Both signals come from the worker/frontend (always scraped), not from the executor VMs, so this alert works on deployments where executors run outside the cluster (e.g. Sourcegraph Cloud). + +Refer to the [alerts reference](alerts#executor-codeintel_queue_growing_but_not_processing) for 1 alert related to this panel. + +To see this panel, visit `/-/debug/grafana/d/executor/executor?viewPanel=100110` on your Sourcegraph instance. + +*Managed by the Sourcegraph Platform team.* + +
+Technical details + +Query: + +``` +sum(rate(src_workerutil_dbworker_store_total{domain="codeintel_index",op=~"MarkComplete|MarkErrored|MarkFailed"}[5m])) +``` +
+ +
+ +#### executor: batches_queue_growing_but_not_processing + +

Batches executor queue has a backlog that is not being processed

+ +Fires when the batches executor queue has a non-empty backlog (`src_workerutil_queue_depth{domain="executors_batches"} > 0`) while zero jobs have reached a terminal state over the last 30 minutes (`src_workerutil_dbworker_store_total{domain="batch_spec_workspace_execution_worker_store"}`). With a backlog present, zero completions over 30m is already abnormal — the only benign zero-completion case (an empty queue) is excluded by the backlog guard. +This is the true "executors not draining" signal: it distinguishes stuck/broken executors from executors that are simply under-provisioned. An under-provisioned queue (backlog present but jobs still completing) has a non-zero terminal-transition rate and will NOT trip this alert — that case is a capacity-review signal, not a stall. +Both signals come from the worker/frontend (always scraped), not from the executor VMs, so this alert works on deployments where executors run outside the cluster (e.g. Sourcegraph Cloud). + +Refer to the [alerts reference](alerts#executor-batches_queue_growing_but_not_processing) for 1 alert related to this panel. + +To see this panel, visit `/-/debug/grafana/d/executor/executor?viewPanel=100111` on your Sourcegraph instance. + +*Managed by the Sourcegraph Platform team.* + +
+Technical details + +Query: + +``` +sum(rate(src_workerutil_dbworker_store_total{domain="batch_spec_workspace_execution_worker_store",op=~"MarkComplete|MarkErrored|MarkFailed"}[5m])) +``` +
+ +
+ ### Executor: Executor: Executor jobs #### executor: executor_handlers @@ -34491,34 +35075,25 @@ label_replace(sum by (rpc_method, rpc_connect_rpc_error_code) (rate(rpc_client_d
-## OpenTelemetry Collector - -

The OpenTelemetry collector ingests OpenTelemetry data from Sourcegraph and exports it to the configured backends.

- -To see this dashboard, visit `/-/debug/grafana/d/otel-collector/otel-collector` on your Sourcegraph instance. - -### OpenTelemetry Collector: Receivers +## Entitlements usage history telemetry -#### otel-collector: otel_span_receive_rate +

Monitoring entitlement usage history telemetry export and queue health in Sourcegraph.

-

Spans received per receiver per minute

+To see this dashboard, visit `/-/debug/grafana/d/entitlements-usage-history/entitlements-usage-history` on your Sourcegraph instance. -Shows the rate of spans accepted by the configured reveiver +### Entitlements usage history telemetry: Entitlements usage history telemetry: events export and queue metrics -A Trace is a collection of spans and a span represents a unit of work or operation. Spans are the building blocks of Traces. -The spans have only been accepted by the receiver, which means they still have to move through the configured pipeline to be exported. -For more information on tracing and configuration of a OpenTelemetry receiver see https://opentelemetry.io/docs/collector/configuration/#receivers. +#### entitlements-usage-history: entitlements_usage_history_telemetry_exported_events -See the Exporters section see spans that have made it through the pipeline and are exported. +

Entitlement usage history events exported per hour

-Depending the configured processors, received spans might be dropped and not exported. For more information on configuring processors see -https://opentelemetry.io/docs/collector/configuration/#processors. +The number of entitlement usage history events exported as telemetry over the last hour. This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/otel-collector/otel-collector?viewPanel=100000` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/entitlements-usage-history/entitlements-usage-history?viewPanel=100000` on your Sourcegraph instance. -*Managed by the Sourcegraph Platform team.* +*Managed by the Sourcegraph Services team.*
Technical details @@ -34526,23 +35101,24 @@ To see this panel, visit `/-/debug/grafana/d/otel-collector/otel-collector?viewP Query: ``` -sum by (receiver) (rate(otelcol_receiver_accepted_spans[1m])) +sum(increase(src_entitlementstelemetry_usage_history_exported_events[1h])) ```

-#### otel-collector: otel_span_refused - -

Spans refused per receiver

+#### entitlements-usage-history: entitlements_usage_history_telemetry_batch_size +

Number of entitlement usage history events exported per batch over 30m

+The number of entitlement usage history events exported in each batch. The largest bucket is the maximum number of events exported per batch. +If the distribution trends to the maximum bucket, export throughput is at or approaching saturation. -Refer to the [alerts reference](alerts#otel-collector-otel_span_refused) for 1 alert related to this panel. +This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/otel-collector/otel-collector?viewPanel=100001` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/entitlements-usage-history/entitlements-usage-history?viewPanel=100001` on your Sourcegraph instance. -*Managed by the Sourcegraph Platform team.* +*Managed by the Sourcegraph Services team.*
Technical details @@ -34550,30 +35126,23 @@ To see this panel, visit `/-/debug/grafana/d/otel-collector/otel-collector?viewP Query: ``` -sum by (receiver) (rate(otelcol_receiver_refused_spans[1m])) +sum by (le) (rate(src_entitlementstelemetry_usage_history_batch_size_bucket[30m])) ```

-### OpenTelemetry Collector: Exporters - -#### otel-collector: otel_span_export_rate - -

Spans exported per exporter per minute

- -Shows the rate of spans being sent by the exporter +#### entitlements-usage-history: entitlements_usage_history_telemetry_pruned_events -A Trace is a collection of spans. A Span represents a unit of work or operation. Spans are the building blocks of Traces. -The rate of spans here indicates spans that have made it through the configured pipeline and have been sent to the configured export destination. +

Entitlement usage history events pruned per hour

-For more information on configuring a exporter for the OpenTelemetry collector see https://opentelemetry.io/docs/collector/configuration/#exporters. +The number of already-exported entitlement usage history events pruned over the last hour. This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/otel-collector/otel-collector?viewPanel=100100` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/entitlements-usage-history/entitlements-usage-history?viewPanel=100010` on your Sourcegraph instance. -*Managed by the Sourcegraph Platform team.* +*Managed by the Sourcegraph Services team.*
Technical details @@ -34581,23 +35150,195 @@ To see this panel, visit `/-/debug/grafana/d/otel-collector/otel-collector?viewP Query: ``` -sum by (exporter) (rate(otelcol_exporter_sent_spans[1m])) +sum(increase(src_entitlementstelemetry_usage_history_events_pruned[1h])) ```

-#### otel-collector: otel_span_export_failures +#### entitlements-usage-history: entitlements_usage_history_telemetry_queue_size -

Span export failures by exporter

+

Entitlement usage history events pending telemetry export

-Shows the rate of spans failed to be sent by the configured reveiver. A number higher than 0 for a long period can indicate a problem with the exporter configuration or with the service that is being exported too +The number of entitlement usage history events waiting to be exported as telemetry. -For more information on configuring a exporter for the OpenTelemetry collector see https://opentelemetry.io/docs/collector/configuration/#exporters. +This panel has no related alerts. -Refer to the [alerts reference](alerts#otel-collector-otel_span_export_failures) for 1 alert related to this panel. +To see this panel, visit `/-/debug/grafana/d/entitlements-usage-history/entitlements-usage-history?viewPanel=100011` on your Sourcegraph instance. -To see this panel, visit `/-/debug/grafana/d/otel-collector/otel-collector?viewPanel=100101` on your Sourcegraph instance. +*Managed by the Sourcegraph Services team.* + +
+Technical details + +Query: + +``` +( + sum( + src_entitlementstelemetry_usage_history_queue_size + and on(instance, job) + ( + ( + increase(src_entitlementstelemetry_usage_history_queue_metrics_total{job=~"^worker.*"}[15m]) > 0 + ) + or on(instance, job) + ( + increase(src_entitlementstelemetry_usage_history_queue_metrics_errors_total{job=~"^worker.*"}[15m]) > 0 + ) + ) + ) + ) or on() vector(0) +``` +
+ +
+ +#### entitlements-usage-history: entitlements_usage_history_telemetry_queue_oldest_age + +

Age of the oldest unexported entitlement usage history event

+ +The age in seconds of the oldest entitlement usage history event waiting to be exported as telemetry. + +This panel has no related alerts. + +To see this panel, visit `/-/debug/grafana/d/entitlements-usage-history/entitlements-usage-history?viewPanel=100020` on your Sourcegraph instance. + +*Managed by the Sourcegraph Services team.* + +
+Technical details + +Query: + +``` +( + max( + src_entitlementstelemetry_usage_history_queue_oldest_age_seconds + and on(instance, job) + ( + ( + increase(src_entitlementstelemetry_usage_history_queue_metrics_total{job=~"^worker.*"}[15m]) > 0 + ) + or on(instance, job) + ( + increase(src_entitlementstelemetry_usage_history_queue_metrics_errors_total{job=~"^worker.*"}[15m]) > 0 + ) + ) + ) + ) or on() vector(0) +``` +
+ +
+ +## OpenTelemetry Collector + +

The OpenTelemetry collector ingests OpenTelemetry data from Sourcegraph and exports it to the configured backends.

+ +To see this dashboard, visit `/-/debug/grafana/d/otel-collector/otel-collector` on your Sourcegraph instance. + +### OpenTelemetry Collector: Receivers + +#### otel-collector: otel_span_receive_rate + +

Spans received per receiver per minute

+ +Shows the rate of spans accepted by the configured reveiver + +A Trace is a collection of spans and a span represents a unit of work or operation. Spans are the building blocks of Traces. +The spans have only been accepted by the receiver, which means they still have to move through the configured pipeline to be exported. +For more information on tracing and configuration of a OpenTelemetry receiver see https://opentelemetry.io/docs/collector/configuration/#receivers. + +See the Exporters section see spans that have made it through the pipeline and are exported. + +Depending the configured processors, received spans might be dropped and not exported. For more information on configuring processors see +https://opentelemetry.io/docs/collector/configuration/#processors. + +This panel has no related alerts. + +To see this panel, visit `/-/debug/grafana/d/otel-collector/otel-collector?viewPanel=100000` on your Sourcegraph instance. + +*Managed by the Sourcegraph Platform team.* + +
+Technical details + +Query: + +``` +sum by (receiver) (rate(otelcol_receiver_accepted_spans[1m])) +``` +
+ +
+ +#### otel-collector: otel_span_refused + +

Spans refused per receiver

+ + + +Refer to the [alerts reference](alerts#otel-collector-otel_span_refused) for 1 alert related to this panel. + +To see this panel, visit `/-/debug/grafana/d/otel-collector/otel-collector?viewPanel=100001` on your Sourcegraph instance. + +*Managed by the Sourcegraph Platform team.* + +
+Technical details + +Query: + +``` +sum by (receiver) (rate(otelcol_receiver_refused_spans[1m])) +``` +
+ +
+ +### OpenTelemetry Collector: Exporters + +#### otel-collector: otel_span_export_rate + +

Spans exported per exporter per minute

+ +Shows the rate of spans being sent by the exporter + +A Trace is a collection of spans. A Span represents a unit of work or operation. Spans are the building blocks of Traces. +The rate of spans here indicates spans that have made it through the configured pipeline and have been sent to the configured export destination. + +For more information on configuring a exporter for the OpenTelemetry collector see https://opentelemetry.io/docs/collector/configuration/#exporters. + +This panel has no related alerts. + +To see this panel, visit `/-/debug/grafana/d/otel-collector/otel-collector?viewPanel=100100` on your Sourcegraph instance. + +*Managed by the Sourcegraph Platform team.* + +
+Technical details + +Query: + +``` +sum by (exporter) (rate(otelcol_exporter_sent_spans[1m])) +``` +
+ +
+ +#### otel-collector: otel_span_export_failures + +

Span export failures by exporter

+ +Shows the rate of spans failed to be sent by the configured reveiver. A number higher than 0 for a long period can indicate a problem with the exporter configuration or with the service that is being exported too + +For more information on configuring a exporter for the OpenTelemetry collector see https://opentelemetry.io/docs/collector/configuration/#exporters. + +Refer to the [alerts reference](alerts#otel-collector-otel_span_export_failures) for 1 alert related to this panel. + +To see this panel, visit `/-/debug/grafana/d/otel-collector/otel-collector?viewPanel=100101` on your Sourcegraph instance. *Managed by the Sourcegraph Platform team.* @@ -35035,7 +35776,7 @@ sum(rate(src_deepsearch_question_processing_total{operation="question"}[5m])) *

Question processing error rate over 5m

-Percentage of deep search questions that result in an error. +Percentage of deep search questions that result in an error. Excludes entitlement usage limit rejections; see the `deepsearch_question_usage_limited` panel for those. Refer to the [alerts reference](alerts#deepsearch-deepsearch_question_processing_error_rate) for 2 alerts related to this panel. @@ -35103,6 +35844,30 @@ histogram_quantile(0.50, sum(rate(src_deepsearch_question_processing_duration_se
+#### deepsearch: deepsearch_question_usage_limited + +

Questions rejected by usage limits over 15m

+ +Number of deep search questions rejected because the user hit their usage entitlement limit, by entitlement name. These are intentional quota rejections, not processing failures, and do not count towards the question processing error rate. Check frontend logs for `question rejected: usage limit exceeded` to identify affected users. Sustained rejections from an API client usually mean the client does not back off after hitting its limit. + +This panel has no related alerts. + +To see this panel, visit `/-/debug/grafana/d/deepsearch/deepsearch?viewPanel=100030` on your Sourcegraph instance. + +*Managed by the Sourcegraph Code Understanding team.* + +
+Technical details + +Query: + +``` +sum by (entitlement) (increase(src_deepsearch_question_usage_limited_total[15m])) +``` +
+ +
+ #### deepsearch: deepsearch_slow_questions

Questions taking longer than 5 minutes over 15m

@@ -35111,7 +35876,7 @@ Number of deep search questions that took longer than 5 minutes in the last 15 m Refer to the [alerts reference](alerts#deepsearch-deepsearch_slow_questions) for 2 alerts related to this panel. -To see this panel, visit `/-/debug/grafana/d/deepsearch/deepsearch?viewPanel=100030` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/deepsearch/deepsearch?viewPanel=100040` on your Sourcegraph instance. *Managed by the Sourcegraph Code Understanding team.* @@ -35153,17 +35918,735 @@ histogram_quantile(0.95, sum(rate(src_deepsearch_turn_duration_seconds_bucket[5m
-#### deepsearch: deepsearch_turn_p50_duration +#### deepsearch: deepsearch_turn_p50_duration + +

50th percentile turn duration

+ +Median duration of individual agent turns. + +This panel has no related alerts. + +To see this panel, visit `/-/debug/grafana/d/deepsearch/deepsearch?viewPanel=100101` on your Sourcegraph instance. + +*Managed by the Sourcegraph Code Understanding team.* + +
+Technical details + +Query: + +``` +histogram_quantile(0.50, sum(rate(src_deepsearch_turn_duration_seconds_bucket[5m])) by (le)) +``` +
+ +
+ +### Deep Search: Question outcomes + +#### deepsearch: deepsearch_question_outcome_by_reason + +

Question outcomes by reason over 5m

+ +Breakdown of deep search question outcomes by reason and whether the question was billable. + +This panel has no related alerts. + +To see this panel, visit `/-/debug/grafana/d/deepsearch/deepsearch?viewPanel=100200` on your Sourcegraph instance. + +*Managed by the Sourcegraph Code Understanding team.* + +
+Technical details + +Query: + +``` +sum by (outcome, billable) (rate(src_deepsearch_question_outcome_total[5m])) * 60 +``` +
+ +
+ +#### deepsearch: deepsearch_errored_but_billed_rate + +

Errored but billed rate over 5m

+ +Percentage of billed deep search questions that completed with an error. Use alongside count-based panels for cross-referencing scale of issues. + +This panel has no related alerts. + +To see this panel, visit `/-/debug/grafana/d/deepsearch/deepsearch?viewPanel=100201` on your Sourcegraph instance. + +*Managed by the Sourcegraph Code Understanding team.* + +
+Technical details + +Query: + +``` +sum(rate(src_deepsearch_question_outcome_total{billable="true",error="true"}[5m])) / (sum(rate(src_deepsearch_question_outcome_total{billable="true"}[5m])) > 0) * 100 +``` +
+ +
+ +#### deepsearch: deepsearch_billable_failures + +

Billable failures over time

+ +Number of billed deep search questions that completed with an error (token limit exceeded or response truncated) in the last 15 minutes. + +This panel has no related alerts. + +To see this panel, visit `/-/debug/grafana/d/deepsearch/deepsearch?viewPanel=100210` on your Sourcegraph instance. + +*Managed by the Sourcegraph Code Understanding team.* + +
+Technical details + +Query: + +``` +sum by (outcome) (increase(src_deepsearch_question_outcome_total{billable="true",error="true"}[15m])) +``` +
+ +
+ +#### deepsearch: deepsearch_response_truncated + +

Response truncated questions over 15m

+ +Number of deep search questions where the response was truncated due to hitting the output token limit in the last 15 minutes. + +Refer to the [alerts reference](alerts#deepsearch-deepsearch_response_truncated) for 2 alerts related to this panel. + +To see this panel, visit `/-/debug/grafana/d/deepsearch/deepsearch?viewPanel=100220` on your Sourcegraph instance. + +*Managed by the Sourcegraph Code Understanding team.* + +
+Technical details + +Query: + +``` +sum(increase(src_deepsearch_question_outcome_total{outcome="response_truncated"}[15m])) +``` +
+ +
+ +#### deepsearch: deepsearch_token_limit_exceeded + +

Token limit exceeded questions over 15m

+ +Number of deep search questions that exceeded the conversation token limit in the last 15 minutes. + +This panel has no related alerts. + +To see this panel, visit `/-/debug/grafana/d/deepsearch/deepsearch?viewPanel=100221` on your Sourcegraph instance. + +*Managed by the Sourcegraph Code Understanding team.* + +
+Technical details + +Query: + +``` +sum(increase(src_deepsearch_question_outcome_total{outcome="token_limit_exceeded"}[15m])) +``` +
+ +
+ +## Batch Change Agents + +

Background processing for batch change agents: the message and wake workers, their queues and resetters, and the event streams that drive live UI updates.

+ +To see this dashboard, visit `/-/debug/grafana/d/batch-change-agents/batch-change-agents` on your Sourcegraph instance. + +### Batch Change Agents: Message worker + +#### batch-change-agents: batch_change_agent_message_active_handlers + +

Active message handlers

+ +Number of batch change agent messages being processed concurrently. Each worker is configured for up to 100 concurrent handlers; sustained values near that ceiling mean new messages are waiting for a free slot. + +This panel has no related alerts. + +To see this panel, visit `/-/debug/grafana/d/batch-change-agents/batch-change-agents?viewPanel=100000` on your Sourcegraph instance. + +*Managed by the Sourcegraph Code Plane team.* + +
+Technical details + +Query: + +``` +sum(src_batch_change_agent_message_handlers) +``` +
+ +
+ +#### batch-change-agents: batch_change_agent_message_processing_rate + +

Messages processed per minute

+ +Rate of successfully processed batch change agent messages. A message is one turn of the agent loop for a user; this counts only successful completions (failures appear in the error rate panel). + +This panel has no related alerts. + +To see this panel, visit `/-/debug/grafana/d/batch-change-agents/batch-change-agents?viewPanel=100001` on your Sourcegraph instance. + +*Managed by the Sourcegraph Code Plane team.* + +
+Technical details + +Query: + +``` +sum(rate(src_batch_change_agent_message_total{op="Handle"}[5m])) * 60 +``` +
+ +
+ +#### batch-change-agents: batch_change_agent_message_p95_duration + +

95th percentile message processing duration

+ +95th percentile end-to-end time to process a message (the full agent loop, including all LLM requests). The histogram buckets span 1s to 1h; values pinned at the top bucket mean messages are running longer than an hour. + +This panel has no related alerts. + +To see this panel, visit `/-/debug/grafana/d/batch-change-agents/batch-change-agents?viewPanel=100010` on your Sourcegraph instance. + +*Managed by the Sourcegraph Code Plane team.* + +
+Technical details + +Query: + +``` +histogram_quantile(0.95, sum(rate(src_batch_change_agent_message_duration_seconds_bucket{op="Handle"}[15m])) by (le)) +``` +
+ +
+ +#### batch-change-agents: batch_change_agent_message_p50_duration + +

50th percentile message processing duration

+ +Median end-to-end time to process a message. Useful for spotting a shift in typical agent-loop latency that the error rate would not reveal. + +This panel has no related alerts. + +To see this panel, visit `/-/debug/grafana/d/batch-change-agents/batch-change-agents?viewPanel=100011` on your Sourcegraph instance. + +*Managed by the Sourcegraph Code Plane team.* + +
+Technical details + +Query: + +``` +histogram_quantile(0.50, sum(rate(src_batch_change_agent_message_duration_seconds_bucket{op="Handle"}[15m])) by (le)) +``` +
+ +
+ +#### batch-change-agents: batch_change_agent_message_error_rate + +

Message processing error rate over 5m

+ +Percentage of message handler invocations that ended in an error. The alert is gated on at least 5 attempts in the window so it stays quiet during idle periods. + +Refer to the [alerts reference](alerts#batch-change-agents-batch_change_agent_message_error_rate) for 2 alerts related to this panel. + +To see this panel, visit `/-/debug/grafana/d/batch-change-agents/batch-change-agents?viewPanel=100020` on your Sourcegraph instance. + +*Managed by the Sourcegraph Code Plane team.* + +
+Technical details + +Query: + +``` +sum(increase(src_batch_change_agent_message_errors_total{op="Handle"}[5m])) / (sum(increase(src_batch_change_agent_message_total{op="Handle"}[5m])) + sum(increase(src_batch_change_agent_message_errors_total{op="Handle"}[5m]))) * 100 +``` +
+ +
+ +### Batch Change Agents: Queue backlog + +#### batch-change-agents: batch_change_agent_message_queue_depth + +

Messages waiting in the queue

+ +Number of batch change agent messages enqueued but not yet picked up by a handler. Sustained growth means messages are arriving faster than the 100-handler pool can process them. + +This panel has no related alerts. + +To see this panel, visit `/-/debug/grafana/d/batch-change-agents/batch-change-agents?viewPanel=100100` on your Sourcegraph instance. + +*Managed by the Sourcegraph Code Plane team.* + +
+Technical details + +Query: + +``` +max(src_workerutil_queue_depth{domain="batch_change_agent_message_worker"}) +``` +
+ +
+ +#### batch-change-agents: batch_change_agent_message_queue_wait + +

Oldest queued message wait time

+ +How long the oldest queued message has been waiting for a handler. Zero when the queue is empty. + +Refer to the [alerts reference](alerts#batch-change-agents-batch_change_agent_message_queue_wait) for 2 alerts related to this panel. + +To see this panel, visit `/-/debug/grafana/d/batch-change-agents/batch-change-agents?viewPanel=100101` on your Sourcegraph instance. + +*Managed by the Sourcegraph Code Plane team.* + +
+Technical details + +Query: + +``` +max(src_workerutil_queue_duration_seconds{domain="batch_change_agent_message_worker"}) +``` +
+ +
+ +#### batch-change-agents: batch_change_agent_wake_queue_depth + +

Wake jobs waiting in the queue

+ +Number of wake jobs enqueued but not yet processed. These enqueue a message for the message worker, so a backlog here delays idle threads from re-activating. + +This panel has no related alerts. + +To see this panel, visit `/-/debug/grafana/d/batch-change-agents/batch-change-agents?viewPanel=100110` on your Sourcegraph instance. + +*Managed by the Sourcegraph Code Plane team.* + +
+Technical details + +Query: + +``` +max(src_workerutil_queue_depth{domain="batch_change_agent_wake_worker"}) +``` +
+ +
+ +#### batch-change-agents: batch_change_agent_wake_queue_wait + +

Oldest queued wake job wait time

+ +How long the oldest queued wake job has been waiting for a handler. Zero when the queue is empty. + +This panel has no related alerts. + +To see this panel, visit `/-/debug/grafana/d/batch-change-agents/batch-change-agents?viewPanel=100111` on your Sourcegraph instance. + +*Managed by the Sourcegraph Code Plane team.* + +
+Technical details + +Query: + +``` +max(src_workerutil_queue_duration_seconds{domain="batch_change_agent_wake_worker"}) +``` +
+ +
+ +### Batch Change Agents: Tool calls + +#### batch-change-agents: batch_change_agent_tool_call_rate + +

Tool calls per minute by tool

+ +Rate of successful tool invocations within the agent loop, broken down by tool name (e.g. prepare_batch_spec, run_workspaces, deepsearch). A tool is counted here once it completes without error; failures appear in the error rate panel. Tools called inside subagents (e.g. the read-only workspace tools the analyze_workspaces subagent runs) are counted here too. This is the per-tool view of what the agent loop spends its turns doing. + +This panel has no related alerts. + +To see this panel, visit `/-/debug/grafana/d/batch-change-agents/batch-change-agents?viewPanel=100200` on your Sourcegraph instance. + +*Managed by the Sourcegraph Code Plane team.* + +
+Technical details + +Query: + +``` +sum by (tool) (rate(src_batch_change_agent_tool_total[5m])) * 60 +``` +
+ +
+ +#### batch-change-agents: batch_change_agent_tool_error_rate + +

Tool error rate over 5m by tool

+ +Percentage of invocations per tool that returned an error to the agent loop. A consistently hot tool usually points at a flaky downstream integration it wraps (gitserver, the batch-spec executor, deep search) rather than the agent itself; the model often recovers by retrying, so this complements rather than duplicates the message worker error rate. + +This panel has no related alerts. + +To see this panel, visit `/-/debug/grafana/d/batch-change-agents/batch-change-agents?viewPanel=100201` on your Sourcegraph instance. + +*Managed by the Sourcegraph Code Plane team.* + +
+Technical details + +Query: + +``` +sum by (tool) (increase(src_batch_change_agent_tool_errors_total[5m])) / (sum by (tool) (increase(src_batch_change_agent_tool_total[5m])) + sum by (tool) (increase(src_batch_change_agent_tool_errors_total[5m]))) * 100 +``` +
+ +
+ +#### batch-change-agents: batch_change_agent_tool_p95_duration + +

95th percentile tool call duration by tool

+ +95th percentile execution time per tool. This is the per-tool breakdown of where time in the agent loop goes; long-running tools (deepsearch, wait_for_changesets, wait_for_workspaces) are expected to dominate, while batch-spec and filesystem tools should stay fast. A subagent tool`s duration (e.g. analyze_workspaces) overlaps the inner tool calls it makes, which are also recorded here, so durations should not be summed into a single total. + +This panel has no related alerts. + +To see this panel, visit `/-/debug/grafana/d/batch-change-agents/batch-change-agents?viewPanel=100202` on your Sourcegraph instance. + +*Managed by the Sourcegraph Code Plane team.* + +
+Technical details + +Query: + +``` +histogram_quantile(0.95, sum by (le, tool) (rate(src_batch_change_agent_tool_duration_seconds_bucket[5m]))) +``` +
+ +
+ +### Batch Change Agents: Wake worker + +#### batch-change-agents: batch_change_agent_wake_active_handlers + +

Active wake handlers

+ +Number of wake jobs being processed concurrently. The wake worker only resolves an agent and enqueues a wake message (the LLM work happens in the message worker), so it runs a small pool of 3 handlers. + +This panel has no related alerts. + +To see this panel, visit `/-/debug/grafana/d/batch-change-agents/batch-change-agents?viewPanel=100300` on your Sourcegraph instance. + +*Managed by the Sourcegraph Code Plane team.* + +
+Technical details + +Query: + +``` +sum(src_batch_change_agent_wake_handlers) +``` +
+ +
+ +#### batch-change-agents: batch_change_agent_wake_processing_rate + +

Wake jobs processed per minute

+ +Rate of successfully processed wake jobs that re-activate idle threads with unread inbox items. + +This panel has no related alerts. + +To see this panel, visit `/-/debug/grafana/d/batch-change-agents/batch-change-agents?viewPanel=100301` on your Sourcegraph instance. + +*Managed by the Sourcegraph Code Plane team.* + +
+Technical details + +Query: + +``` +sum(rate(src_batch_change_agent_wake_total{op="Handle"}[5m])) * 60 +``` +
+ +
+ +#### batch-change-agents: batch_change_agent_wake_p95_duration + +

95th percentile wake processing duration

+ +95th percentile time to process a wake job. Wake jobs are a few quick DB operations, so this should stay well under a second. + +This panel has no related alerts. + +To see this panel, visit `/-/debug/grafana/d/batch-change-agents/batch-change-agents?viewPanel=100302` on your Sourcegraph instance. + +*Managed by the Sourcegraph Code Plane team.* + +
+Technical details + +Query: + +``` +histogram_quantile(0.95, sum(rate(src_batch_change_agent_wake_duration_seconds_bucket{op="Handle"}[5m])) by (le)) +``` +
+ +
+ +#### batch-change-agents: batch_change_agent_wake_error_rate + +

Wake processing error rate over 5m

+ +Percentage of wake handler invocations that ended in an error. Wake failures are retried and rarely user-visible, but a sustained nonzero rate means threads are not being re-activated when new inbox items arrive. + +This panel has no related alerts. + +To see this panel, visit `/-/debug/grafana/d/batch-change-agents/batch-change-agents?viewPanel=100310` on your Sourcegraph instance. + +*Managed by the Sourcegraph Code Plane team.* + +
+Technical details + +Query: + +``` +sum(increase(src_batch_change_agent_wake_errors_total{op="Handle"}[5m])) / (sum(increase(src_batch_change_agent_wake_total{op="Handle"}[5m])) + sum(increase(src_batch_change_agent_wake_errors_total{op="Handle"}[5m]))) * 100 +``` +
+ +
+ +### Batch Change Agents: Job queue stores + +#### batch-change-agents: batch_change_agent_store_operation_rate + +

Worker store operations per second by queue

+ +Rate of successful worker store operations (dequeue, mark-complete, etc.) for the batch change agent message and wake queues. + +This panel has no related alerts. + +To see this panel, visit `/-/debug/grafana/d/batch-change-agents/batch-change-agents?viewPanel=100400` on your Sourcegraph instance. + +*Managed by the Sourcegraph Code Plane team.* + +
+Technical details + +Query: + +``` +sum by (domain) (rate(src_workerutil_dbworker_store_total{domain=~"^batch_change_agent.*_worker_store$"}[5m])) +``` +
+ +
+ +#### batch-change-agents: batch_change_agent_store_error_rate + +

Worker store error rate over 5m by queue

+ +Percentage of worker store operations that errored, per queue. A sustained nonzero rate usually points at database problems (contention, connection exhaustion, or migration drift) rather than the agent logic itself. + +This panel has no related alerts. + +To see this panel, visit `/-/debug/grafana/d/batch-change-agents/batch-change-agents?viewPanel=100401` on your Sourcegraph instance. + +*Managed by the Sourcegraph Code Plane team.* + +
+Technical details + +Query: + +``` +sum by (domain) (increase(src_workerutil_dbworker_store_errors_total{domain=~"^batch_change_agent.*_worker_store$"}[5m])) / (sum by (domain) (increase(src_workerutil_dbworker_store_total{domain=~"^batch_change_agent.*_worker_store$"}[5m])) + sum by (domain) (increase(src_workerutil_dbworker_store_errors_total{domain=~"^batch_change_agent.*_worker_store$"}[5m]))) * 100 +``` +
+ +
+ +#### batch-change-agents: batch_change_agent_store_p95_duration + +

95th percentile worker store operation duration by queue

+ +95th percentile duration of worker store operations, per queue. Elevated values indicate database latency affecting how quickly jobs are dequeued and finalized. + +This panel has no related alerts. + +To see this panel, visit `/-/debug/grafana/d/batch-change-agents/batch-change-agents?viewPanel=100402` on your Sourcegraph instance. + +*Managed by the Sourcegraph Code Plane team.* + +
+Technical details + +Query: + +``` +histogram_quantile(0.95, sum by (le, domain) (rate(src_workerutil_dbworker_store_duration_seconds_bucket{domain=~"^batch_change_agent.*_worker_store$"}[5m]))) +``` +
+ +
+ +### Batch Change Agents: Stalled job resetters + +#### batch-change-agents: batch_change_agent_records_reset + +

Stalled jobs reset to queued over 1h by queue

+ +Number of stalled batch change agent jobs that the resetter moved back to the queued state, per queue. + +Refer to the [alerts reference](alerts#batch-change-agents-batch_change_agent_records_reset) for 1 alert related to this panel. + +To see this panel, visit `/-/debug/grafana/d/batch-change-agents/batch-change-agents?viewPanel=100500` on your Sourcegraph instance. + +*Managed by the Sourcegraph Code Plane team.* + +
+Technical details + +Query: + +``` +sum by (domain) (increase(src_dbworker_resetter_record_resets_total{domain=~"^batch_change_agent_.*_resetter$"}[1h])) +``` +
+ +
+ +#### batch-change-agents: batch_change_agent_record_reset_failures + +

Stalled jobs marked failed over 1h by queue

+ +Number of stalled jobs that exhausted their retries and were marked as failed, per queue. A nonzero value means some agent messages or wakes were permanently dropped after repeated crashes. + +This panel has no related alerts. + +To see this panel, visit `/-/debug/grafana/d/batch-change-agents/batch-change-agents?viewPanel=100501` on your Sourcegraph instance. + +*Managed by the Sourcegraph Code Plane team.* + +
+Technical details + +Query: + +``` +sum by (domain) (increase(src_dbworker_resetter_record_reset_failures_total{domain=~"^batch_change_agent_.*_resetter$"}[1h])) +``` +
+ +
+ +#### batch-change-agents: batch_change_agent_stall_duration + +

95th percentile job stall duration before reset

+ +95th percentile time jobs spent stalled before the resetter recovered them, per queue. + +This panel has no related alerts. + +To see this panel, visit `/-/debug/grafana/d/batch-change-agents/batch-change-agents?viewPanel=100502` on your Sourcegraph instance. + +*Managed by the Sourcegraph Code Plane team.* + +
+Technical details + +Query: + +``` +histogram_quantile(0.95, sum by (le, domain) (rate(src_dbworker_resetter_stall_duration_seconds_bucket{domain=~"^batch_change_agent_.*_resetter$"}[1h]))) +``` +
+ +
+ +### Batch Change Agents: Event streams (Redis pub/sub) + +#### batch-change-agents: batch_change_agent_message_stream_publish_rate + +

Message stream events published per second by type

+ +Rate of per-message stream events (turn deltas, tool calls, completion, etc.) successfully published to Redis for live delivery to connected clients. + +This panel has no related alerts. + +To see this panel, visit `/-/debug/grafana/d/batch-change-agents/batch-change-agents?viewPanel=100600` on your Sourcegraph instance. + +*Managed by the Sourcegraph Code Plane team.* + +
+Technical details + +Query: + +``` +sum by (event_type) (rate(src_batch_change_agents_stream_publish_success_total[5m])) +``` +
+ +
+ +#### batch-change-agents: batch_change_agent_message_stream_publish_errors -

50th percentile turn duration

+

Message stream publish errors per second

-Median duration of individual agent turns. +Rate of per-message stream events that could not be published to Redis after retries. -This panel has no related alerts. +Refer to the [alerts reference](alerts#batch-change-agents-batch_change_agent_message_stream_publish_errors) for 1 alert related to this panel. -To see this panel, visit `/-/debug/grafana/d/deepsearch/deepsearch?viewPanel=100101` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/batch-change-agents/batch-change-agents?viewPanel=100601` on your Sourcegraph instance. -*Managed by the Sourcegraph Code Understanding team.* +*Managed by the Sourcegraph Code Plane team.*
Technical details @@ -35171,25 +36654,23 @@ To see this panel, visit `/-/debug/grafana/d/deepsearch/deepsearch?viewPanel=100 Query: ``` -histogram_quantile(0.50, sum(rate(src_deepsearch_turn_duration_seconds_bucket[5m])) by (le)) +sum(rate(src_batch_change_agents_stream_publish_errors_total[5m])) ```

-### Deep Search: Question outcomes - -#### deepsearch: deepsearch_question_outcome_by_reason +#### batch-change-agents: batch_change_agent_message_stream_transport_errors -

Question outcomes by reason over 5m

+

Message stream transport errors per second

-Breakdown of deep search question outcomes by reason and whether the question was billable. +Rate of Redis subscription transport errors (a subscription died mid-stream). Subscribers reconnect, but clients may briefly stop receiving live updates when this is elevated. This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/deepsearch/deepsearch?viewPanel=100200` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/batch-change-agents/batch-change-agents?viewPanel=100602` on your Sourcegraph instance. -*Managed by the Sourcegraph Code Understanding team.* +*Managed by the Sourcegraph Code Plane team.*
Technical details @@ -35197,23 +36678,23 @@ To see this panel, visit `/-/debug/grafana/d/deepsearch/deepsearch?viewPanel=100 Query: ``` -sum by (outcome, billable) (rate(src_deepsearch_question_outcome_total[5m])) * 60 +sum(rate(src_batch_change_agents_stream_transport_errors_total[5m])) ```

-#### deepsearch: deepsearch_errored_but_billed_rate +#### batch-change-agents: batch_change_agent_thread_stream_publish_rate -

Errored but billed rate over 5m

+

Thread stream events published per second by type

-Percentage of billed deep search questions that completed with an error. Use alongside count-based panels for cross-referencing scale of issues. +Rate of thread-level stream events (new message created, title updated) successfully published to Redis. These prompt clients to refetch the thread. This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/deepsearch/deepsearch?viewPanel=100201` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/batch-change-agents/batch-change-agents?viewPanel=100610` on your Sourcegraph instance. -*Managed by the Sourcegraph Code Understanding team.* +*Managed by the Sourcegraph Code Plane team.*
Technical details @@ -35221,23 +36702,23 @@ To see this panel, visit `/-/debug/grafana/d/deepsearch/deepsearch?viewPanel=100 Query: ``` -sum(rate(src_deepsearch_question_outcome_total{billable="true",error="true"}[5m])) / (sum(rate(src_deepsearch_question_outcome_total{billable="true"}[5m])) > 0) * 100 +sum by (event_type) (rate(src_batch_change_agents_thread_stream_publish_success_total[5m])) ```

-#### deepsearch: deepsearch_billable_failures +#### batch-change-agents: batch_change_agent_thread_stream_publish_errors -

Billable failures over time

+

Thread stream publish errors per second

-Number of billed deep search questions that completed with an error (token limit exceeded or response truncated) in the last 15 minutes. +Rate of thread-level stream events that could not be published to Redis after retries. Clients recover thread state on their next refetch. This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/deepsearch/deepsearch?viewPanel=100210` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/batch-change-agents/batch-change-agents?viewPanel=100611` on your Sourcegraph instance. -*Managed by the Sourcegraph Code Understanding team.* +*Managed by the Sourcegraph Code Plane team.*
Technical details @@ -35245,23 +36726,23 @@ To see this panel, visit `/-/debug/grafana/d/deepsearch/deepsearch?viewPanel=100 Query: ``` -sum by (outcome) (increase(src_deepsearch_question_outcome_total{billable="true",error="true"}[15m])) +sum(rate(src_batch_change_agents_thread_stream_publish_errors_total[5m])) ```

-#### deepsearch: deepsearch_response_truncated +#### batch-change-agents: batch_change_agent_thread_stream_transport_errors -

Response truncated questions over 15m

+

Thread stream transport errors per second

-Number of deep search questions where the response was truncated due to hitting the output token limit in the last 15 minutes. +Rate of Redis subscription transport errors on the thread-level stream. -Refer to the [alerts reference](alerts#deepsearch-deepsearch_response_truncated) for 2 alerts related to this panel. +This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/deepsearch/deepsearch?viewPanel=100220` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/batch-change-agents/batch-change-agents?viewPanel=100612` on your Sourcegraph instance. -*Managed by the Sourcegraph Code Understanding team.* +*Managed by the Sourcegraph Code Plane team.*
Technical details @@ -35269,23 +36750,31 @@ To see this panel, visit `/-/debug/grafana/d/deepsearch/deepsearch?viewPanel=100 Query: ``` -sum(increase(src_deepsearch_question_outcome_total{outcome="response_truncated"}[15m])) +sum(rate(src_batch_change_agents_thread_stream_transport_errors_total[5m])) ```

-#### deepsearch: deepsearch_token_limit_exceeded +## Batch Changes -

Token limit exceeded questions over 15m

+

Server-side background processing for batch changes: the changeset reconciler, batch-spec resolution, bulk operations and workspace execution, with their worker-queue stores and stalled-job resetters.

-Number of deep search questions that exceeded the conversation token limit in the last 15 minutes. +To see this dashboard, visit `/-/debug/grafana/d/batch-changes/batch-changes` on your Sourcegraph instance. + +### Batch Changes: Changeset reconciler + +#### batch-changes: batch_changes_reconciler_queue_depth + +

Changesets waiting in the queue

+ +Number of changesets enqueued but not yet picked up by a handler. Sustained growth means work is arriving faster than the handler pool (5 handlers) can process it. This is a lower bound: the reconciler_changesets view excludes changesets belonging to deleted repos or namespaces, so the true backlog can be higher. This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/deepsearch/deepsearch?viewPanel=100221` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/batch-changes/batch-changes?viewPanel=100000` on your Sourcegraph instance. -*Managed by the Sourcegraph Code Understanding team.* +*Managed by the Sourcegraph Code Plane team.*
Technical details @@ -35293,29 +36782,21 @@ To see this panel, visit `/-/debug/grafana/d/deepsearch/deepsearch?viewPanel=100 Query: ``` -sum(increase(src_deepsearch_question_outcome_total{outcome="token_limit_exceeded"}[15m])) +max(src_workerutil_queue_depth{domain="batches_reconciler_worker"}) ```

-## Batch Change Agents - -

Background processing for batch change agents: the message and wake workers, their queues and resetters, and the event streams that drive live UI updates.

- -To see this dashboard, visit `/-/debug/grafana/d/batch-change-agents/batch-change-agents` on your Sourcegraph instance. - -### Batch Change Agents: Message worker - -#### batch-change-agents: batch_change_agent_message_active_handlers +#### batch-changes: batch_changes_reconciler_queue_wait -

Active message handlers

+

Oldest queued changeset wait time

-Number of batch change agent messages being processed concurrently. Each worker is configured for up to 100 concurrent handlers; sustained values near that ceiling mean new messages are waiting for a free slot. +How long the oldest queued changeset has been waiting for a handler. Zero when the queue is empty. This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/batch-change-agents/batch-change-agents?viewPanel=100000` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/batch-changes/batch-changes?viewPanel=100001` on your Sourcegraph instance. *Managed by the Sourcegraph Code Plane team.* @@ -35325,21 +36806,21 @@ To see this panel, visit `/-/debug/grafana/d/batch-change-agents/batch-change-ag Query: ``` -sum(src_batch_change_agent_message_handlers) +max(src_workerutil_queue_duration_seconds{domain="batches_reconciler_worker"}) ```
-#### batch-change-agents: batch_change_agent_message_processing_rate +#### batch-changes: batch_changes_reconciler_active_handlers -

Messages processed per minute

+

Active handlers

-Rate of successfully processed batch change agent messages. A message is one turn of the agent loop for a user; this counts only successful completions (failures appear in the error rate panel). +Number of changesets being processed concurrently across all worker replicas. The worker is configured for up to 5 concurrent handlers; sustained values near that ceiling mean new work is waiting for a free slot. This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/batch-change-agents/batch-change-agents?viewPanel=100001` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/batch-changes/batch-changes?viewPanel=100010` on your Sourcegraph instance. *Managed by the Sourcegraph Code Plane team.* @@ -35349,21 +36830,21 @@ To see this panel, visit `/-/debug/grafana/d/batch-change-agents/batch-change-ag Query: ``` -sum(rate(src_batch_change_agent_message_total{op="Handle"}[5m])) * 60 +sum(src_batch_changes_reconciler_handlers) ```
-#### batch-change-agents: batch_change_agent_message_p95_duration +#### batch-changes: batch_changes_reconciler_processing_rate -

95th percentile message processing duration

+

Changesets processed per minute

-95th percentile end-to-end time to process a message (the full agent loop, including all LLM requests). The histogram buckets span 1s to 1h; values pinned at the top bucket mean messages are running longer than an hour. +Rate of successfully processed changesets. This counts only successful completions; failures appear in the error rate panel. This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/batch-change-agents/batch-change-agents?viewPanel=100010` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/batch-changes/batch-changes?viewPanel=100011` on your Sourcegraph instance. *Managed by the Sourcegraph Code Plane team.* @@ -35373,21 +36854,21 @@ To see this panel, visit `/-/debug/grafana/d/batch-change-agents/batch-change-ag Query: ``` -histogram_quantile(0.95, sum(rate(src_batch_change_agent_message_duration_seconds_bucket{op="Handle"}[15m])) by (le)) +sum(rate(src_batch_changes_reconciler_total{op="Handle"}[5m])) * 60 ```
-#### batch-change-agents: batch_change_agent_message_p50_duration +#### batch-changes: batch_changes_reconciler_p95_duration -

50th percentile message processing duration

+

95th percentile processing duration

-Median end-to-end time to process a message. Useful for spotting a shift in typical agent-loop latency that the error rate would not reveal. +95th percentile time to process a single changeset in the handler. This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/batch-change-agents/batch-change-agents?viewPanel=100011` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/batch-changes/batch-changes?viewPanel=100020` on your Sourcegraph instance. *Managed by the Sourcegraph Code Plane team.* @@ -35397,21 +36878,21 @@ To see this panel, visit `/-/debug/grafana/d/batch-change-agents/batch-change-ag Query: ``` -histogram_quantile(0.50, sum(rate(src_batch_change_agent_message_duration_seconds_bucket{op="Handle"}[15m])) by (le)) +histogram_quantile(0.95, sum(rate(src_batch_changes_reconciler_duration_seconds_bucket{op="Handle"}[15m])) by (le)) ```
-#### batch-change-agents: batch_change_agent_message_error_rate +#### batch-changes: batch_changes_reconciler_error_rate -

Message processing error rate over 5m

+

Processing error rate over 5m

-Percentage of message handler invocations that ended in an error. The alert is gated on at least 5 attempts in the window so it stays quiet during idle periods. +Percentage of changeset handler invocations that ended in an error, computed as errors / (total + errors) because the workerutil total counter excludes failures. Client-side errors are excluded from both counters. -Refer to the [alerts reference](alerts#batch-change-agents-batch_change_agent_message_error_rate) for 2 alerts related to this panel. +This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/batch-change-agents/batch-change-agents?viewPanel=100020` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/batch-changes/batch-changes?viewPanel=100021` on your Sourcegraph instance. *Managed by the Sourcegraph Code Plane team.* @@ -35421,23 +36902,23 @@ To see this panel, visit `/-/debug/grafana/d/batch-change-agents/batch-change-ag Query: ``` -sum(increase(src_batch_change_agent_message_errors_total{op="Handle"}[5m])) / (sum(increase(src_batch_change_agent_message_total{op="Handle"}[5m])) + sum(increase(src_batch_change_agent_message_errors_total{op="Handle"}[5m]))) * 100 +sum(increase(src_batch_changes_reconciler_errors_total{op="Handle"}[5m])) / (sum(increase(src_batch_changes_reconciler_total{op="Handle"}[5m])) + sum(increase(src_batch_changes_reconciler_errors_total{op="Handle"}[5m]))) * 100 ```
-### Batch Change Agents: Queue backlog +### Batch Changes: Batch spec resolution -#### batch-change-agents: batch_change_agent_message_queue_depth +#### batch-changes: batch_changes_batch_spec_resolution_worker_queue_depth -

Messages waiting in the queue

+

Resolution jobs waiting in the queue

-Number of batch change agent messages enqueued but not yet picked up by a handler. Sustained growth means messages are arriving faster than the 100-handler pool can process them. +Number of resolution jobs enqueued but not yet picked up by a handler. Sustained growth means work is arriving faster than the handler pool (5 handlers) can process it. This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/batch-change-agents/batch-change-agents?viewPanel=100100` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/batch-changes/batch-changes?viewPanel=100100` on your Sourcegraph instance. *Managed by the Sourcegraph Code Plane team.* @@ -35447,21 +36928,21 @@ To see this panel, visit `/-/debug/grafana/d/batch-change-agents/batch-change-ag Query: ``` -max(src_workerutil_queue_depth{domain="batch_change_agent_message_worker"}) +max(src_workerutil_queue_depth{domain="batch_changes_batch_spec_resolution_worker"}) ```
-#### batch-change-agents: batch_change_agent_message_queue_wait +#### batch-changes: batch_changes_batch_spec_resolution_worker_queue_wait -

Oldest queued message wait time

+

Oldest queued resolution job wait time

-How long the oldest queued message has been waiting for a handler. Zero when the queue is empty. +How long the oldest queued resolution job has been waiting for a handler. Zero when the queue is empty. -Refer to the [alerts reference](alerts#batch-change-agents-batch_change_agent_message_queue_wait) for 2 alerts related to this panel. +This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/batch-change-agents/batch-change-agents?viewPanel=100101` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/batch-changes/batch-changes?viewPanel=100101` on your Sourcegraph instance. *Managed by the Sourcegraph Code Plane team.* @@ -35471,21 +36952,21 @@ To see this panel, visit `/-/debug/grafana/d/batch-change-agents/batch-change-ag Query: ``` -max(src_workerutil_queue_duration_seconds{domain="batch_change_agent_message_worker"}) +max(src_workerutil_queue_duration_seconds{domain="batch_changes_batch_spec_resolution_worker"}) ```
-#### batch-change-agents: batch_change_agent_wake_queue_depth +#### batch-changes: batch_changes_batch_spec_resolution_worker_active_handlers -

Wake jobs waiting in the queue

+

Active handlers

-Number of wake jobs enqueued but not yet processed. These enqueue a message for the message worker, so a backlog here delays idle threads from re-activating. +Number of resolution jobs being processed concurrently across all worker replicas. The worker is configured for up to 5 concurrent handlers; sustained values near that ceiling mean new work is waiting for a free slot. This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/batch-change-agents/batch-change-agents?viewPanel=100110` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/batch-changes/batch-changes?viewPanel=100110` on your Sourcegraph instance. *Managed by the Sourcegraph Code Plane team.* @@ -35495,21 +36976,21 @@ To see this panel, visit `/-/debug/grafana/d/batch-change-agents/batch-change-ag Query: ``` -max(src_workerutil_queue_depth{domain="batch_change_agent_wake_worker"}) +sum(src_batch_changes_batch_spec_resolution_worker_handlers) ```
-#### batch-change-agents: batch_change_agent_wake_queue_wait +#### batch-changes: batch_changes_batch_spec_resolution_worker_processing_rate -

Oldest queued wake job wait time

+

Resolution jobs processed per minute

-How long the oldest queued wake job has been waiting for a handler. Zero when the queue is empty. +Rate of successfully processed resolution jobs. This counts only successful completions; failures appear in the error rate panel. This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/batch-change-agents/batch-change-agents?viewPanel=100111` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/batch-changes/batch-changes?viewPanel=100111` on your Sourcegraph instance. *Managed by the Sourcegraph Code Plane team.* @@ -35519,23 +37000,21 @@ To see this panel, visit `/-/debug/grafana/d/batch-change-agents/batch-change-ag Query: ``` -max(src_workerutil_queue_duration_seconds{domain="batch_change_agent_wake_worker"}) +sum(rate(src_batch_changes_batch_spec_resolution_worker_total{op="Handle"}[5m])) * 60 ```
-### Batch Change Agents: Tool calls - -#### batch-change-agents: batch_change_agent_tool_call_rate +#### batch-changes: batch_changes_batch_spec_resolution_worker_p95_duration -

Tool calls per minute by tool

+

95th percentile processing duration

-Rate of successful tool invocations within the agent loop, broken down by tool name (e.g. prepare_batch_spec, run_workspaces, deepsearch). A tool is counted here once it completes without error; failures appear in the error rate panel. Tools called inside subagents (e.g. the read-only workspace tools the analyze_workspaces subagent runs) are counted here too. This is the per-tool view of what the agent loop spends its turns doing. +95th percentile time to process a single resolution job in the handler. This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/batch-change-agents/batch-change-agents?viewPanel=100200` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/batch-changes/batch-changes?viewPanel=100120` on your Sourcegraph instance. *Managed by the Sourcegraph Code Plane team.* @@ -35545,21 +37024,21 @@ To see this panel, visit `/-/debug/grafana/d/batch-change-agents/batch-change-ag Query: ``` -sum by (tool) (rate(src_batch_change_agent_tool_total[5m])) * 60 +histogram_quantile(0.95, sum(rate(src_batch_changes_batch_spec_resolution_worker_duration_seconds_bucket{op="Handle"}[15m])) by (le)) ```
-#### batch-change-agents: batch_change_agent_tool_error_rate +#### batch-changes: batch_changes_batch_spec_resolution_worker_error_rate -

Tool error rate over 5m by tool

+

Processing error rate over 5m

-Percentage of invocations per tool that returned an error to the agent loop. A consistently hot tool usually points at a flaky downstream integration it wraps (gitserver, the batch-spec executor, deep search) rather than the agent itself; the model often recovers by retrying, so this complements rather than duplicates the message worker error rate. +Percentage of resolution job handler invocations that ended in an error, computed as errors / (total + errors) because the workerutil total counter excludes failures. Client-side errors are excluded from both counters. This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/batch-change-agents/batch-change-agents?viewPanel=100201` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/batch-changes/batch-changes?viewPanel=100121` on your Sourcegraph instance. *Managed by the Sourcegraph Code Plane team.* @@ -35569,21 +37048,23 @@ To see this panel, visit `/-/debug/grafana/d/batch-change-agents/batch-change-ag Query: ``` -sum by (tool) (increase(src_batch_change_agent_tool_errors_total[5m])) / (sum by (tool) (increase(src_batch_change_agent_tool_total[5m])) + sum by (tool) (increase(src_batch_change_agent_tool_errors_total[5m]))) * 100 +sum(increase(src_batch_changes_batch_spec_resolution_worker_errors_total{op="Handle"}[5m])) / (sum(increase(src_batch_changes_batch_spec_resolution_worker_total{op="Handle"}[5m])) + sum(increase(src_batch_changes_batch_spec_resolution_worker_errors_total{op="Handle"}[5m]))) * 100 ```
-#### batch-change-agents: batch_change_agent_tool_p95_duration +### Batch Changes: Bulk operations -

95th percentile tool call duration by tool

+#### batch-changes: batch_changes_bulk_processor_queue_depth -95th percentile execution time per tool. This is the per-tool breakdown of where time in the agent loop goes; long-running tools (deepsearch, wait_for_changesets, wait_for_workspaces) are expected to dominate, while batch-spec and filesystem tools should stay fast. A subagent tool`s duration (e.g. analyze_workspaces) overlaps the inner tool calls it makes, which are also recorded here, so durations should not be summed into a single total. +

Changeset jobs waiting in the queue

+ +Number of changeset jobs enqueued but not yet picked up by a handler. Sustained growth means work is arriving faster than the handler pool (5 handlers) can process it. This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/batch-change-agents/batch-change-agents?viewPanel=100202` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/batch-changes/batch-changes?viewPanel=100200` on your Sourcegraph instance. *Managed by the Sourcegraph Code Plane team.* @@ -35593,23 +37074,21 @@ To see this panel, visit `/-/debug/grafana/d/batch-change-agents/batch-change-ag Query: ``` -histogram_quantile(0.95, sum by (le, tool) (rate(src_batch_change_agent_tool_duration_seconds_bucket[5m]))) +max(src_workerutil_queue_depth{domain="batches_bulk_processor"}) ```
-### Batch Change Agents: Wake worker - -#### batch-change-agents: batch_change_agent_wake_active_handlers +#### batch-changes: batch_changes_bulk_processor_queue_wait -

Active wake handlers

+

Oldest queued changeset job wait time

-Number of wake jobs being processed concurrently. The wake worker only resolves an agent and enqueues a wake message (the LLM work happens in the message worker), so it runs a small pool of 3 handlers. +How long the oldest queued changeset job has been waiting for a handler. Zero when the queue is empty. This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/batch-change-agents/batch-change-agents?viewPanel=100300` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/batch-changes/batch-changes?viewPanel=100201` on your Sourcegraph instance. *Managed by the Sourcegraph Code Plane team.* @@ -35619,21 +37098,21 @@ To see this panel, visit `/-/debug/grafana/d/batch-change-agents/batch-change-ag Query: ``` -sum(src_batch_change_agent_wake_handlers) +max(src_workerutil_queue_duration_seconds{domain="batches_bulk_processor"}) ```
-#### batch-change-agents: batch_change_agent_wake_processing_rate +#### batch-changes: batch_changes_bulk_processor_active_handlers -

Wake jobs processed per minute

+

Active handlers

-Rate of successfully processed wake jobs that re-activate idle threads with unread inbox items. +Number of changeset jobs being processed concurrently across all worker replicas. The worker is configured for up to 5 concurrent handlers; sustained values near that ceiling mean new work is waiting for a free slot. This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/batch-change-agents/batch-change-agents?viewPanel=100301` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/batch-changes/batch-changes?viewPanel=100210` on your Sourcegraph instance. *Managed by the Sourcegraph Code Plane team.* @@ -35643,21 +37122,21 @@ To see this panel, visit `/-/debug/grafana/d/batch-change-agents/batch-change-ag Query: ``` -sum(rate(src_batch_change_agent_wake_total{op="Handle"}[5m])) * 60 +sum(src_batch_changes_bulk_processor_handlers) ```
-#### batch-change-agents: batch_change_agent_wake_p95_duration +#### batch-changes: batch_changes_bulk_processor_processing_rate -

95th percentile wake processing duration

+

Changeset jobs processed per minute

-95th percentile time to process a wake job. Wake jobs are a few quick DB operations, so this should stay well under a second. +Rate of successfully processed changeset jobs. This counts only successful completions; failures appear in the error rate panel. This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/batch-change-agents/batch-change-agents?viewPanel=100302` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/batch-changes/batch-changes?viewPanel=100211` on your Sourcegraph instance. *Managed by the Sourcegraph Code Plane team.* @@ -35667,21 +37146,21 @@ To see this panel, visit `/-/debug/grafana/d/batch-change-agents/batch-change-ag Query: ``` -histogram_quantile(0.95, sum(rate(src_batch_change_agent_wake_duration_seconds_bucket{op="Handle"}[5m])) by (le)) +sum(rate(src_batch_changes_bulk_processor_total{op="Handle"}[5m])) * 60 ```
-#### batch-change-agents: batch_change_agent_wake_error_rate +#### batch-changes: batch_changes_bulk_processor_p95_duration -

Wake processing error rate over 5m

+

95th percentile processing duration

-Percentage of wake handler invocations that ended in an error. Wake failures are retried and rarely user-visible, but a sustained nonzero rate means threads are not being re-activated when new inbox items arrive. +95th percentile time to process a single changeset job in the handler. This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/batch-change-agents/batch-change-agents?viewPanel=100310` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/batch-changes/batch-changes?viewPanel=100220` on your Sourcegraph instance. *Managed by the Sourcegraph Code Plane team.* @@ -35691,23 +37170,21 @@ To see this panel, visit `/-/debug/grafana/d/batch-change-agents/batch-change-ag Query: ``` -sum(increase(src_batch_change_agent_wake_errors_total{op="Handle"}[5m])) / (sum(increase(src_batch_change_agent_wake_total{op="Handle"}[5m])) + sum(increase(src_batch_change_agent_wake_errors_total{op="Handle"}[5m]))) * 100 +histogram_quantile(0.95, sum(rate(src_batch_changes_bulk_processor_duration_seconds_bucket{op="Handle"}[15m])) by (le)) ```
-### Batch Change Agents: Job queue stores - -#### batch-change-agents: batch_change_agent_store_operation_rate +#### batch-changes: batch_changes_bulk_processor_error_rate -

Worker store operations per second by queue

+

Processing error rate over 5m

-Rate of successful worker store operations (dequeue, mark-complete, etc.) for the batch change agent message and wake queues. +Percentage of changeset job handler invocations that ended in an error, computed as errors / (total + errors) because the workerutil total counter excludes failures. Client-side errors are excluded from both counters. This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/batch-change-agents/batch-change-agents?viewPanel=100400` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/batch-changes/batch-changes?viewPanel=100221` on your Sourcegraph instance. *Managed by the Sourcegraph Code Plane team.* @@ -35717,21 +37194,23 @@ To see this panel, visit `/-/debug/grafana/d/batch-change-agents/batch-change-ag Query: ``` -sum by (domain) (rate(src_workerutil_dbworker_store_total{domain=~"^batch_change_agent.*_worker_store$"}[5m])) +sum(increase(src_batch_changes_bulk_processor_errors_total{op="Handle"}[5m])) / (sum(increase(src_batch_changes_bulk_processor_total{op="Handle"}[5m])) + sum(increase(src_batch_changes_bulk_processor_errors_total{op="Handle"}[5m]))) * 100 ```
-#### batch-change-agents: batch_change_agent_store_error_rate +### Batch Changes: Workspace execution -

Worker store error rate over 5m by queue

+#### batch-changes: batch_changes_workspace_execution_queue_depth -Percentage of worker store operations that errored, per queue. A sustained nonzero rate usually points at database problems (contention, connection exhaustion, or migration drift) rather than the agent logic itself. +

Workspace execution jobs waiting in the queue

+ +Number of batch-spec workspace-execution jobs enqueued but not yet dequeued by an executor. Executors dequeue via the executor queue API rather than dbworker.NewWorker, so there is no src_workerutil_queue_depth for this queue; this is the executor queue-size gauge (src_executor_total{queue="batches"}), the same metric the Executor dashboard uses. This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/batch-change-agents/batch-change-agents?viewPanel=100401` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/batch-changes/batch-changes?viewPanel=100300` on your Sourcegraph instance. *Managed by the Sourcegraph Code Plane team.* @@ -35741,21 +37220,21 @@ To see this panel, visit `/-/debug/grafana/d/batch-change-agents/batch-change-ag Query: ``` -sum by (domain) (increase(src_workerutil_dbworker_store_errors_total{domain=~"^batch_change_agent.*_worker_store$"}[5m])) / (sum by (domain) (increase(src_workerutil_dbworker_store_total{domain=~"^batch_change_agent.*_worker_store$"}[5m])) + sum by (domain) (increase(src_workerutil_dbworker_store_errors_total{domain=~"^batch_change_agent.*_worker_store$"}[5m]))) * 100 +max(src_executor_total{queue="batches"}) ```
-#### batch-change-agents: batch_change_agent_store_p95_duration +#### batch-changes: batch_changes_workspace_execution_active_handlers -

95th percentile worker store operation duration by queue

+

Active executor handlers

-95th percentile duration of worker store operations, per queue. Elevated values indicate database latency affecting how quickly jobs are dequeued and finalized. +Number of workspace-execution jobs being processed concurrently across all executors assigned to the batches queue. This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/batch-change-agents/batch-change-agents?viewPanel=100402` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/batch-changes/batch-changes?viewPanel=100301` on your Sourcegraph instance. *Managed by the Sourcegraph Code Plane team.* @@ -35765,23 +37244,21 @@ To see this panel, visit `/-/debug/grafana/d/batch-change-agents/batch-change-ag Query: ``` -histogram_quantile(0.95, sum by (le, domain) (rate(src_workerutil_dbworker_store_duration_seconds_bucket{domain=~"^batch_change_agent.*_worker_store$"}[5m]))) +sum(src_executor_processor_handlers{queue="batches"}) ```
-### Batch Change Agents: Stalled job resetters - -#### batch-change-agents: batch_change_agent_records_reset +#### batch-changes: batch_changes_workspace_execution_processing_rate -

Stalled jobs reset to queued over 1h by queue

+

Workspace execution jobs processed per minute

-Number of stalled batch change agent jobs that the resetter moved back to the queued state, per queue. +Rate of successfully processed workspace-execution jobs on the batches queue. This counts only successful completions; failures appear in the error rate panel. -Refer to the [alerts reference](alerts#batch-change-agents-batch_change_agent_records_reset) for 1 alert related to this panel. +This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/batch-change-agents/batch-change-agents?viewPanel=100500` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/batch-changes/batch-changes?viewPanel=100310` on your Sourcegraph instance. *Managed by the Sourcegraph Code Plane team.* @@ -35791,21 +37268,21 @@ To see this panel, visit `/-/debug/grafana/d/batch-change-agents/batch-change-ag Query: ``` -sum by (domain) (increase(src_dbworker_resetter_record_resets_total{domain=~"^batch_change_agent_.*_resetter$"}[1h])) +sum(rate(src_executor_processor_total{queue="batches",op="Handle"}[5m])) * 60 ```
-#### batch-change-agents: batch_change_agent_record_reset_failures +#### batch-changes: batch_changes_workspace_execution_p95_duration -

Stalled jobs marked failed over 1h by queue

+

95th percentile workspace execution duration

-Number of stalled jobs that exhausted their retries and were marked as failed, per queue. A nonzero value means some agent messages or wakes were permanently dropped after repeated crashes. +95th percentile end-to-end time an executor spends running a single workspace-execution job (the full batch-spec step execution), on the batches queue. This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/batch-change-agents/batch-change-agents?viewPanel=100501` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/batch-changes/batch-changes?viewPanel=100311` on your Sourcegraph instance. *Managed by the Sourcegraph Code Plane team.* @@ -35815,21 +37292,21 @@ To see this panel, visit `/-/debug/grafana/d/batch-change-agents/batch-change-ag Query: ``` -sum by (domain) (increase(src_dbworker_resetter_record_reset_failures_total{domain=~"^batch_change_agent_.*_resetter$"}[1h])) +histogram_quantile(0.95, sum(rate(src_executor_processor_duration_seconds_bucket{queue="batches",op="Handle"}[15m])) by (le)) ```
-#### batch-change-agents: batch_change_agent_stall_duration +#### batch-changes: batch_changes_workspace_execution_error_rate -

95th percentile job stall duration before reset

+

Workspace execution error rate over 5m

-95th percentile time jobs spent stalled before the resetter recovered them, per queue. +Percentage of workspace-execution jobs that ended in an error, computed as errors / (total + errors) because the executor processor total counter excludes failures. Per-command (setup/exec/teardown) and executor resource usage breakdowns remain on the Executor dashboard`s "batches" queue. This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/batch-change-agents/batch-change-agents?viewPanel=100502` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/batch-changes/batch-changes?viewPanel=100320` on your Sourcegraph instance. *Managed by the Sourcegraph Code Plane team.* @@ -35839,23 +37316,23 @@ To see this panel, visit `/-/debug/grafana/d/batch-change-agents/batch-change-ag Query: ``` -histogram_quantile(0.95, sum by (le, domain) (rate(src_dbworker_resetter_stall_duration_seconds_bucket{domain=~"^batch_change_agent_.*_resetter$"}[1h]))) +sum(increase(src_executor_processor_errors_total{queue="batches",op="Handle"}[5m])) / (sum(increase(src_executor_processor_total{queue="batches",op="Handle"}[5m])) + sum(increase(src_executor_processor_errors_total{queue="batches",op="Handle"}[5m]))) * 100 ```
-### Batch Change Agents: Event streams (Redis pub/sub) +### Batch Changes: Job queue stores -#### batch-change-agents: batch_change_agent_message_stream_publish_rate +#### batch-changes: batch_changes_store_operation_rate -

Message stream events published per second by type

+

Worker store operations per second by queue

-Rate of per-message stream events (turn deltas, tool calls, completion, etc.) successfully published to Redis for live delivery to connected clients. +Rate of successful worker store operations (dequeue, heartbeat, mark-complete, etc.) for each batch changes queue. The batch_spec_workspace_execution_worker_store operations are emitted by the frontend executor queue handler rather than the worker, so their sg_job label differs from the other queues. This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/batch-change-agents/batch-change-agents?viewPanel=100600` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/batch-changes/batch-changes?viewPanel=100400` on your Sourcegraph instance. *Managed by the Sourcegraph Code Plane team.* @@ -35865,21 +37342,21 @@ To see this panel, visit `/-/debug/grafana/d/batch-change-agents/batch-change-ag Query: ``` -sum by (event_type) (rate(src_batch_change_agents_stream_publish_success_total[5m])) +sum by (domain) (rate(src_workerutil_dbworker_store_total{domain=~"^(batches_reconciler_worker|batches_bulk_worker|batch_changes_batch_spec_resolution_worker|batch_spec_workspace_execution_worker)_store$"}[5m])) ```
-#### batch-change-agents: batch_change_agent_message_stream_publish_errors +#### batch-changes: batch_changes_store_error_rate -

Message stream publish errors per second

+

Worker store error rate over 5m by queue

-Rate of per-message stream events that could not be published to Redis after retries. +Percentage of worker store operations that errored, per queue. A sustained nonzero rate usually points at database problems (contention, connection exhaustion, migration drift) rather than the batch changes logic itself. -Refer to the [alerts reference](alerts#batch-change-agents-batch_change_agent_message_stream_publish_errors) for 1 alert related to this panel. +This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/batch-change-agents/batch-change-agents?viewPanel=100601` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/batch-changes/batch-changes?viewPanel=100401` on your Sourcegraph instance. *Managed by the Sourcegraph Code Plane team.* @@ -35889,21 +37366,21 @@ To see this panel, visit `/-/debug/grafana/d/batch-change-agents/batch-change-ag Query: ``` -sum(rate(src_batch_change_agents_stream_publish_errors_total[5m])) +sum by (domain) (increase(src_workerutil_dbworker_store_errors_total{domain=~"^(batches_reconciler_worker|batches_bulk_worker|batch_changes_batch_spec_resolution_worker|batch_spec_workspace_execution_worker)_store$"}[5m])) / (sum by (domain) (increase(src_workerutil_dbworker_store_total{domain=~"^(batches_reconciler_worker|batches_bulk_worker|batch_changes_batch_spec_resolution_worker|batch_spec_workspace_execution_worker)_store$"}[5m])) + sum by (domain) (increase(src_workerutil_dbworker_store_errors_total{domain=~"^(batches_reconciler_worker|batches_bulk_worker|batch_changes_batch_spec_resolution_worker|batch_spec_workspace_execution_worker)_store$"}[5m]))) * 100 ```
-#### batch-change-agents: batch_change_agent_message_stream_transport_errors +#### batch-changes: batch_changes_store_p95_duration -

Message stream transport errors per second

+

95th percentile worker store operation duration by queue

-Rate of Redis subscription transport errors (a subscription died mid-stream). Subscribers reconnect, but clients may briefly stop receiving live updates when this is elevated. +95th percentile duration of worker store operations, per queue. Elevated values indicate database latency affecting how quickly jobs are dequeued and finalized. This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/batch-change-agents/batch-change-agents?viewPanel=100602` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/batch-changes/batch-changes?viewPanel=100402` on your Sourcegraph instance. *Managed by the Sourcegraph Code Plane team.* @@ -35913,21 +37390,23 @@ To see this panel, visit `/-/debug/grafana/d/batch-change-agents/batch-change-ag Query: ``` -sum(rate(src_batch_change_agents_stream_transport_errors_total[5m])) +histogram_quantile(0.95, sum by (le, domain) (rate(src_workerutil_dbworker_store_duration_seconds_bucket{domain=~"^(batches_reconciler_worker|batches_bulk_worker|batch_changes_batch_spec_resolution_worker|batch_spec_workspace_execution_worker)_store$"}[5m]))) ```
-#### batch-change-agents: batch_change_agent_thread_stream_publish_rate +### Batch Changes: Stalled job resetters -

Thread stream events published per second by type

+#### batch-changes: batch_changes_records_reset -Rate of thread-level stream events (new message created, title updated) successfully published to Redis. These prompt clients to refetch the thread. +

Stalled jobs reset to queued over 1h by queue

-This panel has no related alerts. +Number of stalled batch changes jobs that the resetter moved back to the queued state, per queue. -To see this panel, visit `/-/debug/grafana/d/batch-change-agents/batch-change-agents?viewPanel=100610` on your Sourcegraph instance. +Refer to the [alerts reference](alerts#batch-changes-batch_changes_records_reset) for 1 alert related to this panel. + +To see this panel, visit `/-/debug/grafana/d/batch-changes/batch-changes?viewPanel=100500` on your Sourcegraph instance. *Managed by the Sourcegraph Code Plane team.* @@ -35937,21 +37416,21 @@ To see this panel, visit `/-/debug/grafana/d/batch-change-agents/batch-change-ag Query: ``` -sum by (event_type) (rate(src_batch_change_agents_thread_stream_publish_success_total[5m])) +sum by (domain) (increase(src_dbworker_resetter_record_resets_total{domain=~"^(batches_reconciler_worker|batches_bulk_worker|batch_changes_batch_spec_resolution_worker|batch_spec_workspace_execution_worker)_resetter$"}[1h])) ```
-#### batch-change-agents: batch_change_agent_thread_stream_publish_errors +#### batch-changes: batch_changes_record_reset_failures -

Thread stream publish errors per second

+

Stalled jobs marked failed over 1h by queue

-Rate of thread-level stream events that could not be published to Redis after retries. Clients recover thread state on their next refetch. +Number of stalled jobs that exhausted their retries and were marked as failed, per queue. A nonzero value means some jobs were permanently dropped after repeated crashes. This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/batch-change-agents/batch-change-agents?viewPanel=100611` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/batch-changes/batch-changes?viewPanel=100501` on your Sourcegraph instance. *Managed by the Sourcegraph Code Plane team.* @@ -35961,21 +37440,21 @@ To see this panel, visit `/-/debug/grafana/d/batch-change-agents/batch-change-ag Query: ``` -sum(rate(src_batch_change_agents_thread_stream_publish_errors_total[5m])) +sum by (domain) (increase(src_dbworker_resetter_record_reset_failures_total{domain=~"^(batches_reconciler_worker|batches_bulk_worker|batch_changes_batch_spec_resolution_worker|batch_spec_workspace_execution_worker)_resetter$"}[1h])) ```
-#### batch-change-agents: batch_change_agent_thread_stream_transport_errors +#### batch-changes: batch_changes_stall_duration -

Thread stream transport errors per second

+

95th percentile job stall duration before reset

-Rate of Redis subscription transport errors on the thread-level stream. +95th percentile time jobs spent stalled before the resetter recovered them, per queue. This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/batch-change-agents/batch-change-agents?viewPanel=100612` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/batch-changes/batch-changes?viewPanel=100502` on your Sourcegraph instance. *Managed by the Sourcegraph Code Plane team.* @@ -35985,7 +37464,7 @@ To see this panel, visit `/-/debug/grafana/d/batch-change-agents/batch-change-ag Query: ``` -sum(rate(src_batch_change_agents_thread_stream_transport_errors_total[5m])) +histogram_quantile(0.95, sum by (le, domain) (rate(src_dbworker_resetter_stall_duration_seconds_bucket{domain=~"^(batches_reconciler_worker|batches_bulk_worker|batch_changes_batch_spec_resolution_worker|batch_spec_workspace_execution_worker)_resetter$"}[1h]))) ``` @@ -37143,4 +38622,4 @@ sum by (domain) (idelta(src_workerutil_queue_depth[10m])) / 600 ``` -
\ No newline at end of file +
From 2595aef21449cdaf4aa431aee9bf8155cfeebbdc Mon Sep 17 00:00:00 2001 From: Warren Gifford Date: Thu, 6 Aug 2026 10:55:48 -0700 Subject: [PATCH 156/217] Update docs latest version to 7.6 (#1831) ## Summary - Set DOCS_LATEST_VERSION to 7.6 - Add 7.5 to the version selector - Update the legacy versions page ## Test plan - Not run (config/navigation content change only) --- docs.config.js | 2 +- docs/legacy.mdx | 1 + src/data/versions.ts | 4 ++++ 3 files changed, 6 insertions(+), 1 deletion(-) diff --git a/docs.config.js b/docs.config.js index 5e11535c4..5448b6441 100644 --- a/docs.config.js +++ b/docs.config.js @@ -1,5 +1,5 @@ const config = { - DOCS_LATEST_VERSION: '7.5' + DOCS_LATEST_VERSION: '7.6' }; module.exports = config; diff --git a/docs/legacy.mdx b/docs/legacy.mdx index 91497e11e..06a66177c 100644 --- a/docs/legacy.mdx +++ b/docs/legacy.mdx @@ -6,6 +6,7 @@ +- [7.5](https://7.5.sourcegraph.com) - [7.4](https://7.4.sourcegraph.com) - [7.3](https://7.3.sourcegraph.com) - [7.2](https://7.2.sourcegraph.com) diff --git a/src/data/versions.ts b/src/data/versions.ts index 1cf4759c2..c026e0ac4 100644 --- a/src/data/versions.ts +++ b/src/data/versions.ts @@ -13,6 +13,10 @@ export const versions: VersionI[] = [ label: 'latest', url: '/docs' }, + { + name: 'v7.5', + url: 'https://7.5.sourcegraph.com' + }, { name: 'v7.4', url: 'https://7.4.sourcegraph.com' From 270999bef9d0c0a97e67d87325c805eeae4bbeb0 Mon Sep 17 00:00:00 2001 From: Erik Seliger Date: Fri, 7 Aug 2026 21:11:00 +0200 Subject: [PATCH 157/217] Update credits and billing notice (#1833) --- docs/beta-and-experimental/index.mdx | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/docs/beta-and-experimental/index.mdx b/docs/beta-and-experimental/index.mdx index c19750b1e..a83bdb39c 100644 --- a/docs/beta-and-experimental/index.mdx +++ b/docs/beta-and-experimental/index.mdx @@ -49,10 +49,11 @@ General points about [both beta and experimental features](#beta-and-experimenta Billing depends on the feature. -- **Experimental** and **Beta** features do _not_ consume credits without explicit opt-in from an administrator. - - Some Beta features may be free up to a limit, and with explicit opt-in, usage can be resumed with paid credits. -- Some **Beta** or **Experimental** features, when they graduate to general availability, may be billable with credits. - - Such features will have a **Beta** stage with messaging that identifies, if applicable, the upcoming credit cost and start date. Sourcegraph will provide at least 30 days notice before credits consumption begins. +- **Experimental** and **Beta** features do not consume credits without explicit opt-in from an administrator. + - Some **Beta** features may be free up to a limit, and with explicit opt-in, usage can be resumed with paid credits. +- Some **Experimental** and **Beta** features, when they graduate to general availability (GA), may be billable with credits. + - Before credit consumption begins for a given feature, Sourcegraph will provide advance notice identifying the applicable credit pricing and how usage will be measured against your credit pool. + - Your credit pool stays unchanged, except that any credit-billable GA features you use after receiving that notice will be billed against the pool at their then-current rates. - Admins can [configure limits](/admin/entitlements) on the use of credit-consuming features To learn more about credits and billing, please reach out to your account manager or [support@sourcegraph.com](mailto:support@sourcegraph.com). From 5899425a2f33d073ea620e266f63859fcd1e88a7 Mon Sep 17 00:00:00 2001 From: Erik Seliger Date: Fri, 7 Aug 2026 23:17:04 +0200 Subject: [PATCH 158/217] docs: remove outdated entitlement types (#1834) ## Summary - remove the outdated statement that entitlements only support Deep Search and smart hover summaries - retain the support contact information ## Testing - `git diff --check` --- docs/admin/entitlements.mdx | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/docs/admin/entitlements.mdx b/docs/admin/entitlements.mdx index 01b3e1fd0..07b101af6 100644 --- a/docs/admin/entitlements.mdx +++ b/docs/admin/entitlements.mdx @@ -11,10 +11,8 @@ Entitlements can be set as a global default: default entitlements are granted to Each entitlement has a detailed usage view to help administrators understand how users are using the entitlement, and reset entitlement usage for specific users. - Entitlements currently support [Deep Search](/deep-search) and [smart hover - summaries](/code-navigation/smart-hover). If you would like to request - entitlement support for a feature, please reach out at - support@sourcegraph.com. + If you would like to request entitlement support for a feature, please reach + out at support@sourcegraph.com. From 454137044720478a4210b0737b369178297a3571 Mon Sep 17 00:00:00 2001 From: Michael Bahr <1830132+bahrmichael@users.noreply.github.com> Date: Thu, 13 Aug 2026 08:52:43 +0200 Subject: [PATCH 159/217] Drop support for GitHub Enterprise Server versions below 3.2 (#1835) For CPL-693 Closes CPL-694 We're dropping support for GitHub Enterprise Server versions below 3.2. --- docs/admin/code-hosts/github.mdx | 6 +++++- docs/batch-changes/requirements.mdx | 6 +++++- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/docs/admin/code-hosts/github.mdx b/docs/admin/code-hosts/github.mdx index fc0144103..10a3fe2ea 100644 --- a/docs/admin/code-hosts/github.mdx +++ b/docs/admin/code-hosts/github.mdx @@ -15,7 +15,11 @@ There are 2 ways to connect with GitHub: ## Supported versions - GitHub.com -- GitHub Enterprise v2.10 and newer +- GitHub Enterprise Server 3.2 and later + + + Sourcegraph no longer supports GitHub Enterprise Server versions 3.1 and below, which have been discontinued since June 3, 2022. + ## Using a GitHub App diff --git a/docs/batch-changes/requirements.mdx b/docs/batch-changes/requirements.mdx index 2358cadc4..6d9963c68 100644 --- a/docs/batch-changes/requirements.mdx +++ b/docs/batch-changes/requirements.mdx @@ -15,7 +15,7 @@ While the latest version of the Sourcegraph server is always recommended, **vers Batch Changes is compatible with the following code hosts: - Github.com -- GitHub Enterprise 2.20 and later +- GitHub Enterprise Server 3.2 and later - GitLab 12.7 and later (burndown charts are only supported with 13.2 and later) - Bitbucket Server 5.7 and later, Bitbucket Data Center 7.6 and later - Bitbucket Cloud (bitbucket.org) @@ -25,6 +25,10 @@ Batch Changes is compatible with the following code hosts: For Sourcegraph to interface with these, admins and users must first [configure credentials](/batch-changes/configuring-credentials) for each relevant code host. + + Sourcegraph no longer supports GitHub Enterprise Server versions 3.1 and below, which have been discontinued since June 3, 2022. + + Currently, for customers on an instance of GitHub Enterprise Cloud that uses [SSH certificate From e3d5890102ea714d514530436b579a1fb517d00c Mon Sep 17 00:00:00 2001 From: Stefan Hengl Date: Fri, 14 Aug 2026 09:11:21 -0500 Subject: [PATCH 160/217] docs: add Diff Tour page (#1836) Adds a new doc page for diff tour. --- docs/diff-tour/index.mdx | 20 ++++++++++++++++++++ src/data/navigation.ts | 4 ++++ 2 files changed, 24 insertions(+) create mode 100644 docs/diff-tour/index.mdx diff --git a/docs/diff-tour/index.mdx b/docs/diff-tour/index.mdx new file mode 100644 index 000000000..966d1a59a --- /dev/null +++ b/docs/diff-tour/index.mdx @@ -0,0 +1,20 @@ +# Diff Tour + + + Diff Tour is a beta feature. It is not available on Sourcegraph.com and + requires acceptance of the [Sourcegraph AI + Terms](https://sourcegraph.com/terms/ai-terms). It does not consume credits + during beta. + + +Large diffs are hard to review. Unless you are familiar with the codebase, it is often not obvious where to start or which files contain only mechanical changes. Diff Tour turns a diff into a guided reading path. It places important files first, groups related files into sections, and explains the diff, each section, and individual files. + +## Open a Diff Tour + +Open a diff from the repository Compare page, by comparing branches on the Branches tab, or from a commit page. Select **Tour** next to **Changes**. + +For a diff on GitHub, use the [Sourcegraph browser extension](/integration/browser-extension) to open it in Sourcegraph. + +## Review a Diff Tour + +Read the tour from top to bottom. Open each file to review its changes and mark it as viewed as you go. Sourcegraph generates a tour once and caches the result. Other reviewers opening the same diff receive the cached tour. diff --git a/src/data/navigation.ts b/src/data/navigation.ts index 1280b43da..0c442ce6c 100644 --- a/src/data/navigation.ts +++ b/src/data/navigation.ts @@ -105,6 +105,10 @@ export const navigation: NavigationItem[] = [ } ] }, + { + title: 'Diff Tour', + href: '/diff-tour' + }, { title: 'Code Navigation', href: '/code-navigation', From 16caf979150a92bd5b747c8c871ba622432c24d2 Mon Sep 17 00:00:00 2001 From: Michael Bahr <1830132+bahrmichael@users.noreply.github.com> Date: Mon, 17 Aug 2026 10:05:34 +0200 Subject: [PATCH 161/217] Drop support for GitHub Enterprise Server versions 3.3 and below (#1837) Follow-up for https://github.com/sourcegraph/sourcegraph/pull/14656#discussion_r3794426606 --- docs/admin/code-hosts/github.mdx | 4 ++-- docs/batch-changes/requirements.mdx | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/admin/code-hosts/github.mdx b/docs/admin/code-hosts/github.mdx index 10a3fe2ea..c13555016 100644 --- a/docs/admin/code-hosts/github.mdx +++ b/docs/admin/code-hosts/github.mdx @@ -15,10 +15,10 @@ There are 2 ways to connect with GitHub: ## Supported versions - GitHub.com -- GitHub Enterprise Server 3.2 and later +- GitHub Enterprise Server 3.4 and later - Sourcegraph no longer supports GitHub Enterprise Server versions 3.1 and below, which have been discontinued since June 3, 2022. + Sourcegraph no longer supports GitHub Enterprise Server versions 3.3 and below, which have been discontinued since January 18, 2023. ## Using a GitHub App diff --git a/docs/batch-changes/requirements.mdx b/docs/batch-changes/requirements.mdx index 6d9963c68..8b2e711d6 100644 --- a/docs/batch-changes/requirements.mdx +++ b/docs/batch-changes/requirements.mdx @@ -15,7 +15,7 @@ While the latest version of the Sourcegraph server is always recommended, **vers Batch Changes is compatible with the following code hosts: - Github.com -- GitHub Enterprise Server 3.2 and later +- GitHub Enterprise Server 3.4 and later - GitLab 12.7 and later (burndown charts are only supported with 13.2 and later) - Bitbucket Server 5.7 and later, Bitbucket Data Center 7.6 and later - Bitbucket Cloud (bitbucket.org) @@ -26,7 +26,7 @@ Batch Changes is compatible with the following code hosts: For Sourcegraph to interface with these, admins and users must first [configure credentials](/batch-changes/configuring-credentials) for each relevant code host. - Sourcegraph no longer supports GitHub Enterprise Server versions 3.1 and below, which have been discontinued since June 3, 2022. + Sourcegraph no longer supports GitHub Enterprise Server versions 3.3 and below, which have been discontinued since January 18, 2023. From 50c6e9379ef24b969434747beaa53c6f99f87f2e Mon Sep 17 00:00:00 2001 From: Jan Hartman Date: Thu, 20 Aug 2026 11:00:32 +0200 Subject: [PATCH 162/217] Remove Code Finder MCP beta badge (#1838) GA launch is today, so the beta badge should be removed. --- docs/api/mcp/index.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/api/mcp/index.mdx b/docs/api/mcp/index.mdx index c13776fac..0136f10f8 100644 --- a/docs/api/mcp/index.mdx +++ b/docs/api/mcp/index.mdx @@ -328,7 +328,7 @@ The MCP server provides these tools for code exploration and analysis: -### Code Finder Beta +### Code Finder Code Finder is an agentic tool that sits between plain search and Deep Search: it runs its own internal search loop to locate the code relevant to a task, then returns the matching file paths and line ranges with a brief explanation. Unlike `deepsearch`, it runs synchronously and is designed for quickly finding relevant code in a repository you already know, rather than open-ended research across many repositories. From 3499c0874e74188094195130e6a57ad786457d16 Mon Sep 17 00:00:00 2001 From: Jan Hartman Date: Fri, 21 Aug 2026 16:03:02 +0200 Subject: [PATCH 163/217] Document changes to nls_search availability on default MCP endpoint (#1839) Docs change for https://github.com/sourcegraph/sourcegraph/pull/14750 --- docs/api/mcp/index.mdx | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/docs/api/mcp/index.mdx b/docs/api/mcp/index.mdx index 0136f10f8..88cc1635b 100644 --- a/docs/api/mcp/index.mdx +++ b/docs/api/mcp/index.mdx @@ -410,9 +410,11 @@ Use this matrix to choose the smallest endpoint that has the tools your MCP clie | `keyword_search` | ✓ | ✓ | | | `list_files` | ✓ | ✓ | | | `list_repos` | ✓ | ✓ | | -| `nls_search` | ✓ | ✓ | | +| `nls_search` | | ✓ | | | `read_file` | ✓ | ✓ | | +On `/.api/mcp`, `nls_search` is available as a fallback when `code_finder` is unavailable or disabled. + The default `/.api/mcp` endpoint can read existing Deep Search conversations with `deepsearch_read`, but it cannot create new Deep Search conversations. @@ -439,7 +441,7 @@ For OpenAI Codex specifically, set `scopes = ["mcp"]` in your `config.toml`. See ## Best Practices 1. **Repository Scoping:** Use `list_repos` first to find relevant repositories for better performance -2. **Progressive Search:** Start with broad searches (`nls_search`) then narrow with specific tools +2. **Progressive Search:** Use `code_finder` to locate code relevant to a task if available; otherwise, start with a broad `nls_search` and narrow with more specific tools like `keyword_search` 3. **File Verification:** Use `list_files` before `read_file` to verify file existence 4. **Pagination:** Use `after`/`before` cursors for large result sets 5. **Tool Combinations:** Chain tools together (e.g., `list_repos` → `commit_search`) From 2b49f2d97f1d7c18a06a547da0e674ce771f4377 Mon Sep 17 00:00:00 2001 From: julialeex Date: Mon, 24 Aug 2026 11:25:05 -0700 Subject: [PATCH 164/217] feat/deepsearch: Add documentation for context filters (#1840) Add a new doc page for context filters --------- Co-authored-by: Kalan <51868853+kalanchan@users.noreply.github.com> --- docs/context-filters.mdx | 103 +++++++++++++++++++++++++++++++++++++++ src/data/navigation.ts | 6 ++- 2 files changed, 108 insertions(+), 1 deletion(-) create mode 100644 docs/context-filters.mdx diff --git a/docs/context-filters.mdx b/docs/context-filters.mdx new file mode 100644 index 000000000..19935d541 --- /dev/null +++ b/docs/context-filters.mdx @@ -0,0 +1,103 @@ +# Deep Search Context Filters + + + Supported on [Enterprise](/pricing/plans/enterprise) plans. Configuring + context filters requires site-admin access. + + +Context filters are an admin-defined exclusion list for [Deep Search](/deep-search). Anything matched by a filter is invisible to the agent: it never appears in an answer, and it cannot be read, searched, diffed, or resolved by any Deep Search tool. + +## Why use context filters + +- **Keep secrets out of the agent's context.** Excluded content never leaves your instance, so it cannot be quoted, summarized, or forwarded to a third-party model provider. +- **Reduce noise.** Vendored dependencies, generated code, and archived repositories can be hidden so Deep Search spends its research on code that matters. + +## How context filters work + +Filtering happens before any content reaches the LLM and does not rely on prompting, so the model cannot reason it's way around the filters. + +To Deep Search, excluded content is indistinguishable from content that does not exist. + +## Configuring context filters + +A site admin configures filters under **Admin → Configuration → Advanced configuration**, inside the `experimentalFeatures` block of the site configuration. Each entry in `exclude` is an independent rule, and content is hidden if it matches any rule. + +```jsonc +"experimentalFeatures": { + "deepSearch.contextFilters": { + "exclude": [ + // Hide an entire repository. + { "repoNamePatterns": ["^github\\.com/acme/secrets$"] }, + // Hide secret-bearing files in every repository. + { "filePathPatterns": ["\\.env$", "\\.pem$"] }, + // Hide deployment config in certain repositories only. + { + "repoNamePatterns": ["^github\\.com/acme/backend$", "^github\\.com/acme/frontend$"], + "filePathPatterns": ["^deploy/", "^config/prod/"] + } + ] + } +} +``` + +Config changes apply to the next Deep Search run; no restart is required. A rule must set at least one of the two fields. + +## Pattern syntax + +Both `repoNamePatterns` and `filePathPatterns` take a list of Go [RE2](https://github.com/google/re2/wiki/Syntax) regular expressions. + +- **Patterns are unanchored.** `internal` matches `github.com/acme/internal-tools`. Use `^...$` when you mean the whole string. +- **`.` matches any character except a newline, including `/`.** Escape it as `github\.com`. The pattern `a.b` also matches the repository `a/b`. +- **Backslashes must be doubled in JSON.** The regex `\.env$` is written `"\\.env$"`. +- **Repository names and file paths match case-insensitively.** `README` also excludes `readme`. +- **RE2 does not support backreferences or lookaround assertions.** Patterns like `(a)\1` is rejected. +- **Patterns in a list are combined with OR** `["^a$", "^b$"]` matches either. + +### What the patterns are matched against + +`repoNamePatterns` is matched against the full repository name, including the code host: `github.com/acme/backend`. + +`filePathPatterns` is matched against the repository-root-relative path, with no leading slash: `internal/auth/token.go`. Directories are matched with a trailing slash, so write directory rules as `^deploy/` rather than `^deploy$`. The trailing-slash form hides both the files inside `deploy/` and the `deploy/` entry itself in a parent listing. + +## Combining repoNamePatterns and filePathPatterns + +Within a single rule the two fields are combined with AND, and an omitted field means "match anything". + +| Rule | What it hides | +| ----------------------- | ---------------------------------------------------- | +| `repoNamePatterns` only | The whole repository | +| `filePathPatterns` only | Matching paths in **every** repository | +| Both fields | Matching paths **only** inside matching repositories | + +### Repository only + +```jsonc +{"repoNamePatterns": ["^github\\.com/acme/secrets$"]} +``` + +`github.com/acme/secrets` disappears completely: it is dropped from repository lists and search results, its refs and revisions cannot be resolved, and every tool reports it as nonexistent. + +Anchoring matters here. `^github\.com/acme/secrets$` leaves `github.com/acme/secrets-docs` visible, while the unanchored `acme/secrets` hides both. + +### Files only + +```jsonc +{"filePathPatterns": ["\\.env$", "^secrets/"]} +``` + +Every `.env` file, and everything under a top-level `secrets/` directory, is hidden in all repositories. The repositories themselves stay searchable, only the matching files go missing. A files-only rule never hides a repository, so `github.com/acme/backend` still appears in repository lists even if all of its files are filtered. + +### Files within a repository + +```jsonc +{ + "repoNamePatterns": ["^github\\.com/acme/backend$"], + "filePathPatterns": ["^deploy/", "^config/prod/"] +} +``` + +`deploy/` and `config/prod/` are hidden in `github.com/acme/backend` only. The same paths in a different repo (e.g., `github.com/acme/frontend`) stay visible. + +## Verifying a filter + +Ask Deep Search a question that would require the excluded content, and @-mention the repository or file directly. A working filter produces an answer that does not reference the content, and the [list of sources](/deep-search) contains none of it. If you @-mention filtered content, Deep Search reports it as not found rather than acknowledging that it was excluded. diff --git a/src/data/navigation.ts b/src/data/navigation.ts index 0c442ce6c..e1937c11a 100644 --- a/src/data/navigation.ts +++ b/src/data/navigation.ts @@ -100,8 +100,12 @@ export const navigation: NavigationItem[] = [ href: '/deep-search', sections: [ { - title: 'Slack integration', + title: 'Slack Integration', href: '/slack-integration' + }, + { + title: 'Context Filters', + href: '/context-filters' } ] }, From ba8d393305ee9e88ba8c53f742bd1586764fe909 Mon Sep 17 00:00:00 2001 From: sourcegraph-buildkite <71296199+sourcegraph-buildkite@users.noreply.github.com> Date: Tue, 25 Aug 2026 19:42:56 -0400 Subject: [PATCH 165/217] =?UTF-8?q?=F0=9F=A4=96=20Sync=20generated=20docs?= =?UTF-8?q?=20from=20sourcegraph/sourcegraph=20(#1832)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This is an automated pull request, created by //doc:generated.push on sourcegraph/sourcegraph Co-authored-by: Buildkite --- docs/admin/code-hosts/aws-codecommit.mdx | 2 +- docs/admin/code-hosts/azuredevops.mdx | 2 +- docs/admin/code-hosts/bitbucket-cloud.mdx | 2 +- docs/admin/code-hosts/bitbucket-server.mdx | 2 +- docs/admin/code-hosts/gerrit.mdx | 2 +- docs/admin/code-hosts/github.mdx | 2 +- docs/admin/code-hosts/gitlab.mdx | 2 +- docs/admin/code-hosts/gitolite.mdx | 2 +- docs/admin/code-hosts/other.mdx | 2 +- docs/admin/code-hosts/phabricator.mdx | 2 +- docs/admin/config/settings.mdx | 2 +- docs/admin/config/site-config.mdx | 12 +- docs/admin/repo/perforce.mdx | 2 +- docs/cody/capabilities/supported-models.mdx | 31 +- docs/self-hosted/observability/alerts.mdx | 114 +- docs/self-hosted/observability/dashboards.mdx | 1182 +++++++++++------ 16 files changed, 926 insertions(+), 437 deletions(-) diff --git a/docs/admin/code-hosts/aws-codecommit.mdx b/docs/admin/code-hosts/aws-codecommit.mdx index 5f1666ebc..54b70f895 100644 --- a/docs/admin/code-hosts/aws-codecommit.mdx +++ b/docs/admin/code-hosts/aws-codecommit.mdx @@ -37,7 +37,7 @@ AWS CodeCommit connections support the following configuration options, which ar {/* SCHEMA_SYNC_START: admin/code_hosts/aws_codecommit.schema.json */} {/* WARNING: This section is auto-generated during releases. Do not edit manually. */} -{/* Last updated: 2026-08-05T21:41:22Z */} +{/* Last updated: 2026-08-25T23:40:39Z */} ```json { // REQUIRED: diff --git a/docs/admin/code-hosts/azuredevops.mdx b/docs/admin/code-hosts/azuredevops.mdx index 7695f459c..807a1af5b 100644 --- a/docs/admin/code-hosts/azuredevops.mdx +++ b/docs/admin/code-hosts/azuredevops.mdx @@ -69,7 +69,7 @@ Azure DevOps connections support the following configuration options, which are {/* SCHEMA_SYNC_START: admin/code_hosts/azuredevops.schema.json */} {/* WARNING: This section is auto-generated during releases. Do not edit manually. */} -{/* Last updated: 2026-08-05T21:41:22Z */} +{/* Last updated: 2026-08-25T23:40:39Z */} ```json // Authentication alternatives: token OR windowsPassword diff --git a/docs/admin/code-hosts/bitbucket-cloud.mdx b/docs/admin/code-hosts/bitbucket-cloud.mdx index 51070727f..3aa04e5cf 100644 --- a/docs/admin/code-hosts/bitbucket-cloud.mdx +++ b/docs/admin/code-hosts/bitbucket-cloud.mdx @@ -116,7 +116,7 @@ Bitbucket Cloud connections support the following configuration options, which a {/* SCHEMA_SYNC_START: admin/code_hosts/bitbucket_cloud.schema.json */} {/* WARNING: This section is auto-generated during releases. Do not edit manually. */} -{/* Last updated: 2026-08-05T21:41:22Z */} +{/* Last updated: 2026-08-25T23:40:39Z */} ```json { // The workspace access token to use when authenticating with Bitbucket Cloud. diff --git a/docs/admin/code-hosts/bitbucket-server.mdx b/docs/admin/code-hosts/bitbucket-server.mdx index 6775b7dbb..f6d34d502 100644 --- a/docs/admin/code-hosts/bitbucket-server.mdx +++ b/docs/admin/code-hosts/bitbucket-server.mdx @@ -202,7 +202,7 @@ Bitbucket Server / Bitbucket Data Center connections support the following confi {/* SCHEMA_SYNC_START: admin/code_hosts/bitbucket_server.schema.json */} {/* WARNING: This section is auto-generated during releases. Do not edit manually. */} -{/* Last updated: 2026-08-05T21:41:22Z */} +{/* Last updated: 2026-08-25T23:40:39Z */} ```json // Authentication alternatives: token OR password diff --git a/docs/admin/code-hosts/gerrit.mdx b/docs/admin/code-hosts/gerrit.mdx index f20e399f3..1daa1857a 100644 --- a/docs/admin/code-hosts/gerrit.mdx +++ b/docs/admin/code-hosts/gerrit.mdx @@ -113,7 +113,7 @@ Gerrit connections support the following configuration options, which are specif {/* SCHEMA_SYNC_START: admin/code_hosts/gerrit.schema.json */} {/* WARNING: This section is auto-generated during releases. Do not edit manually. */} -{/* Last updated: 2026-08-05T21:41:22Z */} +{/* Last updated: 2026-08-25T23:40:39Z */} ```json { // If non-null, enforces Gerrit repository permissions. This requires that there is an item in the [site configuration json](https://sourcegraph.com/docs/admin/config/site_config#auth-providers) `auth.providers` field, of type "gerrit" with the same `url` field as specified in this `GerritConnection`. diff --git a/docs/admin/code-hosts/github.mdx b/docs/admin/code-hosts/github.mdx index c13555016..394bdc81f 100644 --- a/docs/admin/code-hosts/github.mdx +++ b/docs/admin/code-hosts/github.mdx @@ -458,7 +458,7 @@ GitHub connections support the following configuration options, which are specif {/* SCHEMA_SYNC_START: admin/code_hosts/github.schema.json */} {/* WARNING: This section is auto-generated during releases. Do not edit manually. */} -{/* Last updated: 2026-08-05T21:41:22Z */} +{/* Last updated: 2026-08-25T23:40:39Z */} ```json // Authentication alternatives: token OR gitHubAppDetails OR externalAccount OR useRandomExternalAccount diff --git a/docs/admin/code-hosts/gitlab.mdx b/docs/admin/code-hosts/gitlab.mdx index 518ecea02..0522c4c83 100644 --- a/docs/admin/code-hosts/gitlab.mdx +++ b/docs/admin/code-hosts/gitlab.mdx @@ -189,7 +189,7 @@ See [Internal rate limits](/admin/code-hosts/rate-limits#internal-rate-limits). {/* SCHEMA_SYNC_START: admin/code_hosts/gitlab.schema.json */} {/* WARNING: This section is auto-generated during releases. Do not edit manually. */} -{/* Last updated: 2026-08-05T21:41:22Z */} +{/* Last updated: 2026-08-25T23:40:39Z */} ```json { // If non-null, enforces GitLab repository permissions. This requires that there be an item in the `auth.providers` field of type "gitlab" with the same `url` field as specified in this `GitLabConnection`. diff --git a/docs/admin/code-hosts/gitolite.mdx b/docs/admin/code-hosts/gitolite.mdx index f6837c8f2..516310245 100644 --- a/docs/admin/code-hosts/gitolite.mdx +++ b/docs/admin/code-hosts/gitolite.mdx @@ -25,7 +25,7 @@ To connect Gitolite to Sourcegraph: {/* SCHEMA_SYNC_START: admin/code_hosts/gitolite.schema.json */} {/* WARNING: This section is auto-generated during releases. Do not edit manually. */} -{/* Last updated: 2026-08-05T21:41:22Z */} +{/* Last updated: 2026-08-25T23:40:39Z */} ```json { // A list of repositories to never mirror from this Gitolite instance. Supports excluding by exact name ({"name": "foo"}). diff --git a/docs/admin/code-hosts/other.mdx b/docs/admin/code-hosts/other.mdx index f92d971c6..1539b5ef1 100644 --- a/docs/admin/code-hosts/other.mdx +++ b/docs/admin/code-hosts/other.mdx @@ -68,7 +68,7 @@ Repositories must be listed individually: {/* SCHEMA_SYNC_START: admin/code_hosts/other_external_service.schema.json */} {/* WARNING: This section is auto-generated during releases. Do not edit manually. */} -{/* Last updated: 2026-08-05T21:41:22Z */} +{/* Last updated: 2026-08-25T23:40:39Z */} ```json { // A list of repositories to never mirror by name after applying repositoryPathPattern. Supports excluding by exact name ({"name": "myrepo"}) or regular expression ({"pattern": ".*secret.*"}). diff --git a/docs/admin/code-hosts/phabricator.mdx b/docs/admin/code-hosts/phabricator.mdx index 3f1c489b8..38e40ad28 100644 --- a/docs/admin/code-hosts/phabricator.mdx +++ b/docs/admin/code-hosts/phabricator.mdx @@ -76,7 +76,7 @@ The Sourcegraph instance's site admin must [update the `corsOrigin` site config {/* SCHEMA_SYNC_START: admin/code_hosts/phabricator.schema.json */} {/* WARNING: This section is auto-generated during releases. Do not edit manually. */} -{/* Last updated: 2026-08-05T21:41:22Z */} +{/* Last updated: 2026-08-25T23:40:39Z */} ```json { // SSH cipher to use when cloning via SSH. Must be a valid choice from `ssh -Q cipher`. diff --git a/docs/admin/config/settings.mdx b/docs/admin/config/settings.mdx index 7fd8d1822..f2de32202 100644 --- a/docs/admin/config/settings.mdx +++ b/docs/admin/config/settings.mdx @@ -27,7 +27,7 @@ Settings options and their default values are shown below. {/* SCHEMA_SYNC_START: admin/config/settings.schema.json */} {/* WARNING: This section is auto-generated during releases. Do not edit manually. */} -{/* Last updated: 2026-08-05T21:41:22Z */} +{/* Last updated: 2026-08-25T23:40:39Z */} ```json { diff --git a/docs/admin/config/site-config.mdx b/docs/admin/config/site-config.mdx index 6904c12de..bf2f2e53e 100644 --- a/docs/admin/config/site-config.mdx +++ b/docs/admin/config/site-config.mdx @@ -21,7 +21,7 @@ All site configuration options and their default values are shown below. {/* SCHEMA_SYNC_START: admin/config/site.schema.json */} {/* WARNING: This section is auto-generated during releases. Do not edit manually. */} -{/* Last updated: 2026-08-05T21:41:22Z */} +{/* Last updated: 2026-08-25T23:40:39Z */} ```json { @@ -305,7 +305,7 @@ All site configuration options and their default values are shown below. "exclude": null }, "deepSearch.enabled": false, - "deepSearch.model": "anthropic::2024-10-22::claude-sonnet-4-6-latest", + "deepSearch.model": null, "deepSearch.sharing.enabled": false, "deepSearch.showCodyWeb": false, "enableGithubInternalRepoVisibility": false, @@ -313,7 +313,6 @@ All site configuration options and their default values are shown below. "eventLogging": "enabled", "gitServerPinnedRepos": null, "homepage": null, - "insightsAlternateLoadingStrategy": false, "insightsBackfillerV2": true, "insightsDataRetention": true, "languageDetection": { @@ -622,6 +621,13 @@ All site configuration options and their default values are shown below. "maxTimeoutSeconds": 60 }, + // A list of code host names to treat as literal, anchored prefixes in repository regular expression filters. This improves repository resolution performance when callers pass unescaped repository names. For example, configuring code.example.com rewrites repo patterns beginning with code.example.com to begin with ^code\.example\.com. + // Other example values: + // - [ + // "code.example.com" + // ] + "search.repoPatternLiteralHostnames": null, + // EXPERIMENTAL: Use content-based language detection for lang: filters (Zoekt only). "searchContentBasedLanguageDetection": false, diff --git a/docs/admin/repo/perforce.mdx b/docs/admin/repo/perforce.mdx index 5adb427f1..c76a948ad 100644 --- a/docs/admin/repo/perforce.mdx +++ b/docs/admin/repo/perforce.mdx @@ -228,7 +228,7 @@ With this setting, Sourcegraph will ignore any rules with a host other than `*`, {/* SCHEMA_SYNC_START: admin/code_hosts/perforce.schema.json */} {/* WARNING: This section is auto-generated during releases. Do not edit manually. */} -{/* Last updated: 2026-08-05T21:41:22Z */} +{/* Last updated: 2026-08-25T23:40:39Z */} ```json { // If non-null, enforces Perforce depot permissions. diff --git a/docs/cody/capabilities/supported-models.mdx b/docs/cody/capabilities/supported-models.mdx index b2d431cfe..9093c49f1 100644 --- a/docs/cody/capabilities/supported-models.mdx +++ b/docs/cody/capabilities/supported-models.mdx @@ -15,39 +15,16 @@ Cody supports a variety of cutting-edge large language models for use in chat an | **Provider** | **Model** | **Status** | **Vision Support** | | :----------- | :-------- | :--------- | :----------------- | | Anthropic | [Claude Opus 5](https://platform.claude.com/docs/en/about-claude/models/whats-new-opus-5) | ✅ | ✅ | -| Anthropic | [Claude Opus 4.8](https://platform.claude.com/docs/en/about-claude/models/overview) | ✅ | ✅ | -| Anthropic | [Claude Opus 4.7](https://platform.claude.com/docs/en/about-claude/models/overview) | ✅ | ✅ | -| Anthropic | [Claude Opus 4.6](https://platform.claude.com/docs/en/about-claude/models/overview) | ✅ | ✅ | | Anthropic | [Claude Sonnet 5](https://platform.claude.com/docs/en/about-claude/models/whats-new-sonnet-5) | ✅ | ✅ | -| Anthropic | [Claude Sonnet 4.6](https://platform.claude.com/docs/en/about-claude/models/overview) | ✅ | ✅ | -| Anthropic | [Claude Sonnet 4.6 with Thinking](https://platform.claude.com/docs/en/about-claude/models/overview) | ✅ | ✅ | -| Anthropic | [Claude Sonnet 4.5](https://platform.claude.com/docs/en/about-claude/models/overview) | ✅ | ✅ | -| Anthropic | [Claude Sonnet 4.5 with Thinking](https://platform.claude.com/docs/en/about-claude/models/overview) | ✅ | ✅ | -| Anthropic | [Claude Opus 4.5](https://platform.claude.com/docs/en/about-claude/models/overview) | ✅ | ✅ | -| Anthropic | [Claude Opus 4.5 with Thinking](https://platform.claude.com/docs/en/about-claude/models/overview) | ✅ | ✅ | | Anthropic | [Claude Haiku 4.5](https://platform.claude.com/docs/en/about-claude/models/overview) | ✅ | ✅ | | Anthropic | [Claude Haiku 4.5 with Thinking](https://platform.claude.com/docs/en/about-claude/models/overview) | ✅ | ✅ | -| Google | [Gemini 2.5 Flash](https://cloud.google.com/vertex-ai/generative-ai/docs/models/gemini/2-5-flash) | ✅ | ✅ | -| Google | [Gemini 2.5 Pro](https://cloud.google.com/vertex-ai/generative-ai/docs/models/gemini/2-5-pro) | ✅ | ✅ | -| Google | [Gemini 3.1 Flash Lite](https://docs.cloud.google.com/gemini-enterprise-agent-platform/models/gemini/3-1-flash-lite) | ✅ | ✅ | +| Google | [Gemini 3.7 Flash](https://docs.cloud.google.com/gemini-enterprise-agent-platform/models/gemini/3-7-flash) | ✅ | ✅ | +| Google | [Gemini 3.6 Flash](https://docs.cloud.google.com/gemini-enterprise-agent-platform/models/gemini/3-6-flash) | ✅ | ✅ | +| Google | [Gemini 3.5 Flash-Lite](https://docs.cloud.google.com/gemini-enterprise-agent-platform/models/gemini/3-5-flash-lite) | ✅ | ✅ | | Google | [Gemini 3.1 Pro](https://cloud.google.com/vertex-ai/generative-ai/docs/models/gemini/3-1-pro) | ✅ (beta) | ❌ | -| Google | [Gemini 3.5 Flash](https://docs.cloud.google.com/gemini-enterprise-agent-platform/models/gemini/3-5-flash) | ✅ | ✅ | | OpenAI | [GPT-5.6 Sol](https://developers.openai.com/api/docs/models/gpt-5.6-sol) | ✅ | ✅ | | OpenAI | [GPT-5.6 Terra](https://developers.openai.com/api/docs/models/gpt-5.6-terra) | ✅ | ✅ | | OpenAI | [GPT-5.6 Luna](https://developers.openai.com/api/docs/models/gpt-5.6-luna) | ✅ | ✅ | -| OpenAI | [GPT-5.4](https://developers.openai.com/api/docs/models/gpt-5.4) | ✅ | ✅ | -| OpenAI | [GPT-5.4 mini](https://developers.openai.com/api/docs/models/gpt-5.4-mini) | ✅ | ✅ | -| OpenAI | [GPT-5.4 nano](https://developers.openai.com/api/docs/models/gpt-5.4-nano) | ✅ | ✅ | -| OpenAI | [GPT-5.2](https://platform.openai.com/docs/models/gpt-5.2) | ✅ | ✅ | -| OpenAI | [GPT-5.1](https://platform.openai.com/docs/models/gpt-5.1) | ✅ | ✅ | -| OpenAI | [GPT-5](https://platform.openai.com/docs/models/gpt-5) | ✅ | ✅ | -| OpenAI | [GPT-5 mini](https://platform.openai.com/docs/models/gpt-5-mini) | ✅ | ✅ | -| OpenAI | [GPT-5 nano](https://platform.openai.com/docs/models/gpt-5-nano) | ✅ | ✅ | -| OpenAI | [GPT-4o](https://platform.openai.com/docs/models#gpt-4o) | ✅ | ✅ | -| OpenAI | [GPT-4.1](https://platform.openai.com/docs/models/gpt-4.1) | ✅ | ✅ | -| OpenAI | [GPT-4o-mini](https://platform.openai.com/docs/models#gpt-4o-mini) | ✅ | ✅ | -| OpenAI | [GPT-4.1-mini](https://platform.openai.com/docs/models/gpt-4.1-mini) | ✅ | ✅ | -| OpenAI | [o3](https://platform.openai.com/docs/models#o3) | ✅ | ❌ | While Gemini models support vision capabilities, Cody clients do not @@ -78,6 +55,6 @@ The following models are used by default for each feature when no specific model | **Feature** | **Default Model** | | :---------- | :---------------- | -| Chat | Claude Sonnet 4.5 | +| Chat | Claude Sonnet 5 | | Autocomplete | DeepSeek V2 Lite Base | | Fast Chat | Claude Haiku 4.5 | diff --git a/docs/self-hosted/observability/alerts.mdx b/docs/self-hosted/observability/alerts.mdx index db6679c77..6ab2447e8 100644 --- a/docs/self-hosted/observability/alerts.mdx +++ b/docs/self-hosted/observability/alerts.mdx @@ -3607,6 +3607,43 @@ Generated query for critical alert: `max((max(src_repoupdater_cleanup_failed_rep
+## worker: entitlements_usage_history_telemetry_queue_oldest_age + +

age of the oldest unexported entitlement usage history event

+ +**Descriptions** + +- warning worker: 1800s+ age of the oldest unexported entitlement usage history event for 30m0s +- critical worker: 7200s+ age of the oldest unexported entitlement usage history event for 2h0m0s + +**Next steps** + +- Check whether the entitlement usage history telemetry export job is failing or making no forward progress. +- Compare this panel with the exported events and export batch size panels above. +- Check worker logs for entitlements usage history telemetry exporter failures. +- More help interpreting this metric is available in the [dashboards reference](dashboards#worker-entitlements_usage_history_telemetry_queue_oldest_age). +- **Silence this alert:** If you are aware of this alert and want to silence notifications for it, add the following to your site configuration and set a reminder to re-evaluate the alert: + +```json +"observability.silenceAlerts": [ + "warning_worker_entitlements_usage_history_telemetry_queue_oldest_age", + "critical_worker_entitlements_usage_history_telemetry_queue_oldest_age" +] +``` + +*Managed by the Sourcegraph Services team.* + +
+Technical details + +Generated query for warning alert: `max(((max(src_entitlementstelemetry_usage_history_queue_oldest_age_seconds and on (instance, job) ((increase(src_entitlementstelemetry_usage_history_queue_metrics_total{job=~"^worker.*"\}[15m]) > 0) or on (instance, job) (increase(src_entitlementstelemetry_usage_history_queue_metrics_errors_total\{job=~"^worker.*"}[15m]) > 0)))) or on () vector(0)) > 1800)` + +Generated query for critical alert: `max(((max(src_entitlementstelemetry_usage_history_queue_oldest_age_seconds and on (instance, job) ((increase(src_entitlementstelemetry_usage_history_queue_metrics_total{job=~"^worker.*"\}[15m]) > 0) or on (instance, job) (increase(src_entitlementstelemetry_usage_history_queue_metrics_errors_total\{job=~"^worker.*"}[15m]) > 0)))) or on () vector(0)) > 7200)` + +
+ +
+ ## worker: src_repoupdater_external_services_total

the total number of external services

@@ -6335,7 +6372,8 @@ Generated query for warning alert: `max((max by (name, queue) (src_executors_man **Descriptions** -- critical executor: the codeintel executor queue has a backlog that is not being processed for 30m0s +- warning executor: the codeintel executor queue has a backlog that is not being processed for 30m0s +- critical executor: the codeintel executor queue has an aging backlog (oldest job waiting > 1h) that is not being processed for 30m0s **Next steps** @@ -6343,11 +6381,13 @@ Generated query for warning alert: `max((max by (name, queue) (src_executors_man - Check src_executors_managed_instance_groups_autoscaler_unhealthy for the same queue: if a managed instance group is unhealthy, GCP cannot provision VMs (stockout/quota) and no executor is available to process the backlog. - Check the Grafana dashboard section for APIClient — executors should be making frequent Dequeue and Heartbeat requests that must not fail. - A queue whose jobs are all failing (rather than not being picked up) still counts as processing here; investigate that via the executor error-rate alerts and job logs instead. +- A Warning that never escalates to Critical is usually a transient, self-healing gap (e.g. one spot-VM preemption); no action is typically needed unless it recurs frequently for the same queue. - More help interpreting this metric is available in the [dashboards reference](dashboards#executor-codeintel_queue_growing_but_not_processing). - **Silence this alert:** If you are aware of this alert and want to silence notifications for it, add the following to your site configuration and set a reminder to re-evaluate the alert: ```json "observability.silenceAlerts": [ + "warning_executor_codeintel_queue_growing_but_not_processing", "critical_executor_codeintel_queue_growing_but_not_processing" ] ``` @@ -6357,7 +6397,9 @@ Generated query for warning alert: `max((max by (name, queue) (src_executors_man
Technical details -Custom query for critical alert: `max(((max(src_workerutil_queue_depth{domain="executors_codeintel"\}) > 0) and (sum(rate(src_workerutil_dbworker_store_total\{domain="codeintel_index",op=~"MarkComplete\\|MarkErrored\\|MarkFailed"}[30m])) == 0)) > 0)` +Custom query for warning alert: `max(((max(src_workerutil_queue_depth{domain="executors_codeintel"\}) > 0) and (sum(rate(src_workerutil_dbworker_store_total\{domain="codeintel_index",op=~"MarkComplete\\|MarkErrored\\|MarkFailed"}[30m])) == 0)) > 0)` + +Custom query for critical alert: `max((((max(src_workerutil_queue_depth{domain="executors_codeintel"\}) > 0) and (sum(rate(src_workerutil_dbworker_store_total\{domain="codeintel_index",op=~"MarkComplete\\|MarkErrored\\|MarkFailed"\}[30m])) == 0)) and (max(src_workerutil_queue_duration_seconds\{domain="executors_codeintel"}) > 3600)) > 0)`
@@ -6369,7 +6411,8 @@ Custom query for critical alert: `max(((max(src_workerutil_queue_depth{domain="e **Descriptions** -- critical executor: the batches executor queue has a backlog that is not being processed for 30m0s +- warning executor: the batches executor queue has a backlog that is not being processed for 30m0s +- critical executor: the batches executor queue has an aging backlog (oldest job waiting > 1h) that is not being processed for 30m0s **Next steps** @@ -6377,11 +6420,13 @@ Custom query for critical alert: `max(((max(src_workerutil_queue_depth{domain="e - Check src_executors_managed_instance_groups_autoscaler_unhealthy for the same queue: if a managed instance group is unhealthy, GCP cannot provision VMs (stockout/quota) and no executor is available to process the backlog. - Check the Grafana dashboard section for APIClient — executors should be making frequent Dequeue and Heartbeat requests that must not fail. - A queue whose jobs are all failing (rather than not being picked up) still counts as processing here; investigate that via the executor error-rate alerts and job logs instead. +- A Warning that never escalates to Critical is usually a transient, self-healing gap (e.g. one spot-VM preemption); no action is typically needed unless it recurs frequently for the same queue. - More help interpreting this metric is available in the [dashboards reference](dashboards#executor-batches_queue_growing_but_not_processing). - **Silence this alert:** If you are aware of this alert and want to silence notifications for it, add the following to your site configuration and set a reminder to re-evaluate the alert: ```json "observability.silenceAlerts": [ + "warning_executor_batches_queue_growing_but_not_processing", "critical_executor_batches_queue_growing_but_not_processing" ] ``` @@ -6391,7 +6436,9 @@ Custom query for critical alert: `max(((max(src_workerutil_queue_depth{domain="e
Technical details -Custom query for critical alert: `max(((max(src_workerutil_queue_depth{domain="executors_batches"\}) > 0) and (sum(rate(src_workerutil_dbworker_store_total\{domain="batch_spec_workspace_execution_worker_store",op=~"MarkComplete\\|MarkErrored\\|MarkFailed"}[30m])) == 0)) > 0)` +Custom query for warning alert: `max(((max(src_workerutil_queue_depth{domain="executors_batches"\}) > 0) and (sum(rate(src_workerutil_dbworker_store_total\{domain="batch_spec_workspace_execution_worker_store",op=~"MarkComplete\\|MarkErrored\\|MarkFailed"}[30m])) == 0)) > 0)` + +Custom query for critical alert: `max((((max(src_workerutil_queue_depth{domain="executors_batches"\}) > 0) and (sum(rate(src_workerutil_dbworker_store_total\{domain="batch_spec_workspace_execution_worker_store",op=~"MarkComplete\\|MarkErrored\\|MarkFailed"\}[30m])) == 0)) and (max(src_workerutil_queue_duration_seconds\{domain="executors_batches"}) > 3600)) > 0)`
@@ -6524,6 +6571,42 @@ Generated query for warning alert: `max((max by (sg_instance) (go_gc_duration_se
+## codeintel-uploads: codeintel_uploads_janitor_scip_documents_oldest_dereference_log_age + +

approximate age of the oldest SCIP document dereference log record, based on the lowest-ID record

+ +**Descriptions** + +- warning codeintel-uploads: 604800s+ approximate age of the oldest SCIP document dereference log record, based on the lowest-ID record for 15m0s + +**Next steps** + +- Check the SCIP documents janitor error rate and duration panels for failures or slow cleanup queries. +- Check sum(rate(src_codeintel_uploads_janitor_scip_documents_records_scanned_total[5m])). A sustained non-zero rate means the janitor is processing eligible dereference logs. +- Check sum(rate(src_codeintel_uploads_janitor_scip_documents_records_altered_total[5m])) for the document deletion rate. This may legitimately be lower than the scanned rate because referenced documents are retained. +- Check codeintel-db CPU, I/O, locks, and table growth for codeintel_scip_documents_dereference_logs. +- If cleanup is healthy but cannot keep up with the volume of generated logs, increase CODEINTEL_UPLOADS_UNREFERENCED_DOCUMENT_MAX_BATCHES. +- If increasing the batch budget is insufficient and codeintel-db has capacity, increase CODEINTEL_UPLOADS_UNREFERENCED_DOCUMENT_MAX_CONCURRENT_BATCHES. +- Learn more about the related dashboard panel in the [dashboards reference](dashboards#codeintel-uploads-codeintel_uploads_janitor_scip_documents_oldest_dereference_log_age). +- **Silence this alert:** If you are aware of this alert and want to silence notifications for it, add the following to your site configuration and set a reminder to re-evaluate the alert: + +```json +"observability.silenceAlerts": [ + "warning_codeintel-uploads_codeintel_uploads_janitor_scip_documents_oldest_dereference_log_age" +] +``` + +*Managed by the Sourcegraph Code Understanding team.* + +
+Technical details + +Generated query for warning alert: `max(((time() - max(src_codeintel_uploads_janitor_scip_documents_oldest_dereference_log_timestamp_seconds)) and max(src_codeintel_uploads_janitor_scip_documents_oldest_dereference_log_timestamp_seconds) > 0) > 604800)` + +
+ +
+ ## telemetry: telemetry_gateway_exporter_queue_growth

rate of growth of events export queue over 30m

@@ -7354,27 +7437,26 @@ Generated query for critical alert: `max((sum(increase(src_deepsearch_question_p
-## deepsearch: deepsearch_response_truncated +## deepsearch: deepsearch_response_truncated_no_answer -

response truncated questions over 15m

+

truncated questions with no answer produced over 15m

**Descriptions** -- warning deepsearch: 3+ response truncated questions over 15m -- critical deepsearch: 10+ response truncated questions over 15m +- critical deepsearch: 3+ truncated questions with no answer produced over 15m **Next steps** -- Search frontend logs for: "answer truncated due to output token limit" to find affected questionIDs. -- This usually indicates model overthinking and spending all output tokens on thinking with no useful answer, or the user requested an extremely large output. -- Check if a recent model change may have caused increased thinking token usage. -- More help interpreting this metric is available in the [dashboards reference](dashboards#deepsearch-deepsearch_response_truncated). +- Search frontend logs for: "answer truncated due to output token limit with no response generated" to find affected questionIDs. +- The output token budget was consumed before any answer text was produced, usually by reasoning tokens, so affected users got nothing back. +- Check if a recent model change or reasoning effort change caused increased thinking token usage. +- Compare against `deepsearch_response_truncated`: elevated truncations alone are usually users requesting very large outputs and are not a regression. +- More help interpreting this metric is available in the [dashboards reference](dashboards#deepsearch-deepsearch_response_truncated_no_answer). - **Silence this alert:** If you are aware of this alert and want to silence notifications for it, add the following to your site configuration and set a reminder to re-evaluate the alert: ```json "observability.silenceAlerts": [ - "warning_deepsearch_deepsearch_response_truncated", - "critical_deepsearch_deepsearch_response_truncated" + "critical_deepsearch_deepsearch_response_truncated_no_answer" ] ``` @@ -7383,9 +7465,7 @@ Generated query for critical alert: `max((sum(increase(src_deepsearch_question_p
Technical details -Generated query for warning alert: `max((sum(increase(src_deepsearch_question_outcome_total{outcome="response_truncated"}[15m]))) > 3)` - -Generated query for critical alert: `max((sum(increase(src_deepsearch_question_outcome_total{outcome="response_truncated"}[15m]))) > 10)` +Generated query for critical alert: `max((sum(increase(src_deepsearch_question_outcome_total{outcome="response_truncated_no_answer"}[15m]))) > 3)`
diff --git a/docs/self-hosted/observability/dashboards.mdx b/docs/self-hosted/observability/dashboards.mdx index 6dc83214b..8bf6bb6a0 100644 --- a/docs/self-hosted/observability/dashboards.mdx +++ b/docs/self-hosted/observability/dashboards.mdx @@ -13598,6 +13598,186 @@ redis_up{app="redis-cache"}
+### Redis: Redis: store key-value operations + +#### redis: keyvalue_total + +

Store key-value operations every 5m

+ +This panel has no related alerts. + +To see this panel, visit `/-/debug/grafana/d/redis/redis?viewPanel=100200` on your Sourcegraph instance. + +*Managed by the Sourcegraph Platform team.* + +
+Technical details + +Query: + +``` +sum by (op)(increase(src_keyvalue_total{pool="store",job=~"^.*"}[5m])) +``` +
+ +
+ +#### redis: keyvalue_99th_percentile_duration + +

99th percentile successful store key-value operation duration over 5m

+ +This panel has no related alerts. + +To see this panel, visit `/-/debug/grafana/d/redis/redis?viewPanel=100201` on your Sourcegraph instance. + +*Managed by the Sourcegraph Platform team.* + +
+Technical details + +Query: + +``` +histogram_quantile(0.99, sum by (le,op)(rate(src_keyvalue_duration_seconds_bucket{pool="store",job=~"^.*"}[5m]))) +``` +
+ +
+ +#### redis: keyvalue_errors_total + +

Store key-value operation errors every 5m

+ +This panel has no related alerts. + +To see this panel, visit `/-/debug/grafana/d/redis/redis?viewPanel=100202` on your Sourcegraph instance. + +*Managed by the Sourcegraph Platform team.* + +
+Technical details + +Query: + +``` +sum by (op)(increase(src_keyvalue_errors_total{pool="store",job=~"^.*"}[5m])) +``` +
+ +
+ +#### redis: keyvalue_error_rate + +

Store key-value operation error rate over 5m

+ +This panel has no related alerts. + +To see this panel, visit `/-/debug/grafana/d/redis/redis?viewPanel=100203` on your Sourcegraph instance. + +*Managed by the Sourcegraph Platform team.* + +
+Technical details + +Query: + +``` +sum by (op)(increase(src_keyvalue_errors_total{pool="store",job=~"^.*"}[5m])) / (sum by (op)(increase(src_keyvalue_total{pool="store",job=~"^.*"}[5m])) + sum by (op)(increase(src_keyvalue_errors_total{pool="store",job=~"^.*"}[5m]))) * 100 +``` +
+ +
+ +### Redis: Redis: cache key-value operations + +#### redis: keyvalue_total + +

Cache key-value operations every 5m

+ +This panel has no related alerts. + +To see this panel, visit `/-/debug/grafana/d/redis/redis?viewPanel=100300` on your Sourcegraph instance. + +*Managed by the Sourcegraph Platform team.* + +
+Technical details + +Query: + +``` +sum by (op)(increase(src_keyvalue_total{pool="cache",job=~"^.*"}[5m])) +``` +
+ +
+ +#### redis: keyvalue_99th_percentile_duration + +

99th percentile successful cache key-value operation duration over 5m

+ +This panel has no related alerts. + +To see this panel, visit `/-/debug/grafana/d/redis/redis?viewPanel=100301` on your Sourcegraph instance. + +*Managed by the Sourcegraph Platform team.* + +
+Technical details + +Query: + +``` +histogram_quantile(0.99, sum by (le,op)(rate(src_keyvalue_duration_seconds_bucket{pool="cache",job=~"^.*"}[5m]))) +``` +
+ +
+ +#### redis: keyvalue_errors_total + +

Cache key-value operation errors every 5m

+ +This panel has no related alerts. + +To see this panel, visit `/-/debug/grafana/d/redis/redis?viewPanel=100302` on your Sourcegraph instance. + +*Managed by the Sourcegraph Platform team.* + +
+Technical details + +Query: + +``` +sum by (op)(increase(src_keyvalue_errors_total{pool="cache",job=~"^.*"}[5m])) +``` +
+ +
+ +#### redis: keyvalue_error_rate + +

Cache key-value operation error rate over 5m

+ +This panel has no related alerts. + +To see this panel, visit `/-/debug/grafana/d/redis/redis?viewPanel=100303` on your Sourcegraph instance. + +*Managed by the Sourcegraph Platform team.* + +
+Technical details + +Query: + +``` +sum by (op)(increase(src_keyvalue_errors_total{pool="cache",job=~"^.*"}[5m])) / (sum by (op)(increase(src_keyvalue_total{pool="cache",job=~"^.*"}[5m])) + sum by (op)(increase(src_keyvalue_errors_total{pool="cache",job=~"^.*"}[5m]))) * 100 +``` +
+ +
+ ### Redis: Provisioning indicators (not available on server) #### redis: provisioning_container_cpu_usage_long_term @@ -13606,7 +13786,7 @@ redis_up{app="redis-cache"} Refer to the [alerts reference](alerts#redis-provisioning_container_cpu_usage_long_term) for 1 alert related to this panel. -To see this panel, visit `/-/debug/grafana/d/redis/redis?viewPanel=100200` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/redis/redis?viewPanel=100400` on your Sourcegraph instance. *Managed by the Sourcegraph Platform team.* @@ -13628,7 +13808,7 @@ quantile_over_time(0.9, cadvisor_container_cpu_usage_percentage_total{name=~"^re Refer to the [alerts reference](alerts#redis-provisioning_container_memory_usage_long_term) for 1 alert related to this panel. -To see this panel, visit `/-/debug/grafana/d/redis/redis?viewPanel=100201` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/redis/redis?viewPanel=100401` on your Sourcegraph instance. *Managed by the Sourcegraph Platform team.* @@ -13650,7 +13830,7 @@ max_over_time(cadvisor_container_memory_usage_percentage_total{name=~"^redis-cac Refer to the [alerts reference](alerts#redis-provisioning_container_cpu_usage_short_term) for 1 alert related to this panel. -To see this panel, visit `/-/debug/grafana/d/redis/redis?viewPanel=100210` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/redis/redis?viewPanel=100410` on your Sourcegraph instance. *Managed by the Sourcegraph Platform team.* @@ -13672,7 +13852,7 @@ max_over_time(cadvisor_container_cpu_usage_percentage_total{name=~"^redis-cache. Refer to the [alerts reference](alerts#redis-provisioning_container_memory_usage_short_term) for 1 alert related to this panel. -To see this panel, visit `/-/debug/grafana/d/redis/redis?viewPanel=100211` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/redis/redis?viewPanel=100411` on your Sourcegraph instance. *Managed by the Sourcegraph Platform team.* @@ -13697,7 +13877,7 @@ When it occurs frequently, it is an indicator of underprovisioning. Refer to the [alerts reference](alerts#redis-container_oomkill_events_total) for 1 alert related to this panel. -To see this panel, visit `/-/debug/grafana/d/redis/redis?viewPanel=100212` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/redis/redis?viewPanel=100412` on your Sourcegraph instance. *Managed by the Sourcegraph Platform team.* @@ -13721,7 +13901,7 @@ max by (name) (container_oom_events_total{name=~"^redis-cache.*"}) Refer to the [alerts reference](alerts#redis-provisioning_container_cpu_usage_long_term) for 1 alert related to this panel. -To see this panel, visit `/-/debug/grafana/d/redis/redis?viewPanel=100300` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/redis/redis?viewPanel=100500` on your Sourcegraph instance. *Managed by the Sourcegraph Platform team.* @@ -13743,7 +13923,7 @@ quantile_over_time(0.9, cadvisor_container_cpu_usage_percentage_total{name=~"^re Refer to the [alerts reference](alerts#redis-provisioning_container_memory_usage_long_term) for 1 alert related to this panel. -To see this panel, visit `/-/debug/grafana/d/redis/redis?viewPanel=100301` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/redis/redis?viewPanel=100501` on your Sourcegraph instance. *Managed by the Sourcegraph Platform team.* @@ -13765,7 +13945,7 @@ max_over_time(cadvisor_container_memory_usage_percentage_total{name=~"^redis-sto Refer to the [alerts reference](alerts#redis-provisioning_container_cpu_usage_short_term) for 1 alert related to this panel. -To see this panel, visit `/-/debug/grafana/d/redis/redis?viewPanel=100310` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/redis/redis?viewPanel=100510` on your Sourcegraph instance. *Managed by the Sourcegraph Platform team.* @@ -13787,7 +13967,7 @@ max_over_time(cadvisor_container_cpu_usage_percentage_total{name=~"^redis-store. Refer to the [alerts reference](alerts#redis-provisioning_container_memory_usage_short_term) for 1 alert related to this panel. -To see this panel, visit `/-/debug/grafana/d/redis/redis?viewPanel=100311` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/redis/redis?viewPanel=100511` on your Sourcegraph instance. *Managed by the Sourcegraph Platform team.* @@ -13812,7 +13992,7 @@ When it occurs frequently, it is an indicator of underprovisioning. Refer to the [alerts reference](alerts#redis-container_oomkill_events_total) for 1 alert related to this panel. -To see this panel, visit `/-/debug/grafana/d/redis/redis?viewPanel=100312` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/redis/redis?viewPanel=100512` on your Sourcegraph instance. *Managed by the Sourcegraph Platform team.* @@ -13836,7 +14016,7 @@ max by (name) (container_oom_events_total{name=~"^redis-store.*"}) Refer to the [alerts reference](alerts#redis-pods_available_percentage) for 1 alert related to this panel. -To see this panel, visit `/-/debug/grafana/d/redis/redis?viewPanel=100400` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/redis/redis?viewPanel=100600` on your Sourcegraph instance. *Managed by the Sourcegraph Platform team.* @@ -13860,7 +14040,7 @@ sum by(app) (up{app=~".*redis-cache"}) / count by (app) (up{app=~".*redis-cache" Refer to the [alerts reference](alerts#redis-pods_available_percentage) for 1 alert related to this panel. -To see this panel, visit `/-/debug/grafana/d/redis/redis?viewPanel=100500` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/redis/redis?viewPanel=100700` on your Sourcegraph instance. *Managed by the Sourcegraph Platform team.* @@ -15145,13 +15325,85 @@ histogram_quantile(0.95, max by (le) (rate(src_repoupdater_source_duration_secon
+#### worker: default_branch_commit_discovery_latency_p90 + +

Estimated default-branch commit discovery latency p90

+ +This panel includes only valid changes to default-branch tips. Values use Git commit timestamps and can overestimate push-to-discovery latency when commits are pushed after they are created. A missing series means no qualifying observation occurred in the query window, not zero latency. Compare update-frequency cohorts instead of aggregating them into one percentile. + +This panel has no related alerts. + +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101020` on your Sourcegraph instance. + +*Managed by the Sourcegraph Services team.* + +
+Technical details + +Query: + +``` +histogram_quantile(0.90, sum by (le, update_frequency) (rate(src_repoupdater_default_branch_commit_age_at_discovery_seconds_bucket[1h]))) +``` +
+ +
+ +#### worker: default_branch_commit_discovery_latency_p95 + +

Estimated default-branch commit discovery latency p95

+ +This panel includes only valid changes to default-branch tips. Values use Git commit timestamps and can overestimate push-to-discovery latency when commits are pushed after they are created. A missing series means no qualifying observation occurred in the query window, not zero latency. Compare update-frequency cohorts instead of aggregating them into one percentile. + +This panel has no related alerts. + +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101021` on your Sourcegraph instance. + +*Managed by the Sourcegraph Services team.* + +
+Technical details + +Query: + +``` +histogram_quantile(0.95, sum by (le, update_frequency) (rate(src_repoupdater_default_branch_commit_age_at_discovery_seconds_bucket[1h]))) +``` +
+ +
+ +#### worker: default_branch_commit_discovery_latency_p99 + +

Estimated default-branch commit discovery latency p99

+ +This panel includes only valid changes to default-branch tips. Values use Git commit timestamps and can overestimate push-to-discovery latency when commits are pushed after they are created. A missing series means no qualifying observation occurred in the query window, not zero latency. Compare update-frequency cohorts instead of aggregating them into one percentile. + +This panel has no related alerts. + +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101022` on your Sourcegraph instance. + +*Managed by the Sourcegraph Services team.* + +
+Technical details + +Query: + +``` +histogram_quantile(0.99, sum by (le, update_frequency) (rate(src_repoupdater_default_branch_commit_age_at_discovery_seconds_bucket[1h]))) +``` +
+ +
+ #### worker: syncer_synced_repos

Repositories synced

Refer to the [alerts reference](alerts#worker-syncer_synced_repos) for 1 alert related to this panel. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101020` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101030` on your Sourcegraph instance. *Managed by the Sourcegraph Services team.* @@ -15173,7 +15425,7 @@ max(rate(src_repoupdater_syncer_synced_repos_total[1m])) Refer to the [alerts reference](alerts#worker-sourced_repos) for 1 alert related to this panel. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101021` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101031` on your Sourcegraph instance. *Managed by the Sourcegraph Services team.* @@ -15195,7 +15447,7 @@ max(rate(src_repoupdater_source_repos_total[1m])) Refer to the [alerts reference](alerts#worker-sched_auto_fetch) for 1 alert related to this panel. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101030` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101040` on your Sourcegraph instance. *Managed by the Sourcegraph Services team.* @@ -15220,7 +15472,7 @@ This does not indicate anything if there are no user added code hosts. This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101031` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101041` on your Sourcegraph instance. *Managed by the Sourcegraph Services team.* @@ -15242,7 +15494,7 @@ max(rate(src_repoupdater_sched_manual_fetch[1m])) Refer to the [alerts reference](alerts#worker-sched_loops) for 1 alert related to this panel. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101040` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101050` on your Sourcegraph instance. *Managed by the Sourcegraph Services team.* @@ -15264,7 +15516,7 @@ max(rate(src_repoupdater_sched_loops[1m])) Refer to the [alerts reference](alerts#worker-src_repoupdater_stale_repos) for 1 alert related to this panel. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101041` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101051` on your Sourcegraph instance. *Managed by the Sourcegraph Services team.* @@ -15286,7 +15538,7 @@ max(src_repoupdater_stale_repos) Refer to the [alerts reference](alerts#worker-sched_error) for 1 alert related to this panel. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101042` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101052` on your Sourcegraph instance. *Managed by the Sourcegraph Services team.* @@ -15308,7 +15560,7 @@ max(rate(src_repoupdater_sched_error[1m])) Refer to the [alerts reference](alerts#worker-src_repoupdater_cleanup_failed_repos) for 1 alert related to this panel. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101043` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101053` on your Sourcegraph instance. *Managed by the Sourcegraph Services team.* @@ -15428,6 +15680,157 @@ sum by (reason) (src_repo_statesyncer_repos_deleted{is_primary="false"})
+### Worker: Entitlements usage history telemetry: events export and queue metrics + +#### worker: entitlements_usage_history_telemetry_exported_events + +

Entitlement usage history events exported per hour

+ +The number of entitlement usage history events exported as telemetry over the last hour. + +This panel has no related alerts. + +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101200` on your Sourcegraph instance. + +*Managed by the Sourcegraph Services team.* + +
+Technical details + +Query: + +``` +sum(increase(src_entitlementstelemetry_usage_history_exported_events[1h])) +``` +
+ +
+ +#### worker: entitlements_usage_history_telemetry_batch_size + +

Number of entitlement usage history events exported per batch over 30m

+ +The number of entitlement usage history events exported in each batch. The largest bucket is the maximum number of events exported per batch. +If the distribution trends to the maximum bucket, export throughput is at or approaching saturation. + +This panel has no related alerts. + +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101201` on your Sourcegraph instance. + +*Managed by the Sourcegraph Services team.* + +
+Technical details + +Query: + +``` +sum by (le) (rate(src_entitlementstelemetry_usage_history_batch_size_bucket[30m])) +``` +
+ +
+ +#### worker: entitlements_usage_history_telemetry_pruned_events + +

Entitlement usage history events pruned per hour

+ +The number of already-exported entitlement usage history events pruned over the last hour. + +This panel has no related alerts. + +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101210` on your Sourcegraph instance. + +*Managed by the Sourcegraph Services team.* + +
+Technical details + +Query: + +``` +sum(increase(src_entitlementstelemetry_usage_history_events_pruned[1h])) +``` +
+ +
+ +#### worker: entitlements_usage_history_telemetry_queue_size + +

Entitlement usage history events pending telemetry export

+ +The number of entitlement usage history events waiting to be exported as telemetry. + +This panel has no related alerts. + +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101211` on your Sourcegraph instance. + +*Managed by the Sourcegraph Services team.* + +
+Technical details + +Query: + +``` +( + sum( + src_entitlementstelemetry_usage_history_queue_size + and on(instance, job) + ( + ( + increase(src_entitlementstelemetry_usage_history_queue_metrics_total{job=~"^worker.*"}[15m]) > 0 + ) + or on(instance, job) + ( + increase(src_entitlementstelemetry_usage_history_queue_metrics_errors_total{job=~"^worker.*"}[15m]) > 0 + ) + ) + ) + ) or on() vector(0) +``` +
+ +
+ +#### worker: entitlements_usage_history_telemetry_queue_oldest_age + +

Age of the oldest unexported entitlement usage history event

+ +The age in seconds of the oldest entitlement usage history event waiting to be exported as telemetry. + +Refer to the [alerts reference](alerts#worker-entitlements_usage_history_telemetry_queue_oldest_age) for 2 alerts related to this panel. + +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101220` on your Sourcegraph instance. + +*Managed by the Sourcegraph Services team.* + +
+Technical details + +Query: + +``` +( + max( + src_entitlementstelemetry_usage_history_queue_oldest_age_seconds + and on(instance, job) + ( + ( + increase(src_entitlementstelemetry_usage_history_queue_metrics_total{job=~"^worker.*"}[15m]) > 0 + ) + or on(instance, job) + ( + increase(src_entitlementstelemetry_usage_history_queue_metrics_errors_total{job=~"^worker.*"}[15m]) > 0 + ) + ) + ) + ) or on() vector(0) +``` +
+ +
+ ### Worker: External services #### worker: src_repoupdater_external_services_total @@ -15436,7 +15839,7 @@ sum by (reason) (src_repo_statesyncer_repos_deleted{is_primary="false"}) Refer to the [alerts reference](alerts#worker-src_repoupdater_external_services_total) for 1 alert related to this panel. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101200` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101300` on your Sourcegraph instance. *Managed by the Sourcegraph Services team.* @@ -15458,7 +15861,7 @@ max(src_repoupdater_external_services_total) Refer to the [alerts reference](alerts#worker-repoupdater_queued_sync_jobs_total) for 1 alert related to this panel. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101210` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101310` on your Sourcegraph instance. *Managed by the Sourcegraph Services team.* @@ -15480,7 +15883,7 @@ max(src_repoupdater_queued_sync_jobs_total) Refer to the [alerts reference](alerts#worker-repoupdater_completed_sync_jobs_total) for 1 alert related to this panel. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101211` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101311` on your Sourcegraph instance. *Managed by the Sourcegraph Services team.* @@ -15502,7 +15905,7 @@ max(src_repoupdater_completed_sync_jobs_total) Refer to the [alerts reference](alerts#worker-repoupdater_errored_sync_jobs_percentage) for 1 alert related to this panel. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101212` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101312` on your Sourcegraph instance. *Managed by the Sourcegraph Services team.* @@ -15524,7 +15927,7 @@ max(src_repoupdater_errored_sync_jobs_percentage) Refer to the [alerts reference](alerts#worker-github_graphql_rate_limit_remaining) for 1 alert related to this panel. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101220` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101320` on your Sourcegraph instance. *Managed by the Sourcegraph Services team.* @@ -15546,7 +15949,7 @@ max by (name) (src_github_rate_limit_remaining_v2{resource="graphql"}) Refer to the [alerts reference](alerts#worker-github_rest_rate_limit_remaining) for 1 alert related to this panel. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101221` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101321` on your Sourcegraph instance. *Managed by the Sourcegraph Services team.* @@ -15568,7 +15971,7 @@ max by (name) (src_github_rate_limit_remaining_v2{resource="rest"}) Refer to the [alerts reference](alerts#worker-github_search_rate_limit_remaining) for 1 alert related to this panel. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101222` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101322` on your Sourcegraph instance. *Managed by the Sourcegraph Services team.* @@ -15592,7 +15995,7 @@ Indicates how long we`re waiting on the rate limit once it has been exceeded This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101230` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101330` on your Sourcegraph instance. *Managed by the Sourcegraph Services team.* @@ -15616,7 +16019,7 @@ Indicates how long we`re waiting on the rate limit once it has been exceeded This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101231` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101331` on your Sourcegraph instance. *Managed by the Sourcegraph Services team.* @@ -15640,7 +16043,7 @@ Indicates how long we`re waiting on the rate limit once it has been exceeded This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101232` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101332` on your Sourcegraph instance. *Managed by the Sourcegraph Services team.* @@ -15662,7 +16065,7 @@ max by(name) (rate(src_github_rate_limit_wait_duration_seconds{resource="search" Refer to the [alerts reference](alerts#worker-gitlab_rest_rate_limit_remaining) for 1 alert related to this panel. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101240` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101340` on your Sourcegraph instance. *Managed by the Sourcegraph Services team.* @@ -15686,7 +16089,7 @@ Indicates how long we`re waiting on the rate limit once it has been exceeded This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101241` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101341` on your Sourcegraph instance. *Managed by the Sourcegraph Services team.* @@ -15710,7 +16113,7 @@ Indicates how long we`re waiting on our internal rate limiter when communicating This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101250` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101350` on your Sourcegraph instance. *Managed by the Sourcegraph Services team.* @@ -15734,7 +16137,7 @@ The rate at which we fail our internal rate limiter. This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101251` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101351` on your Sourcegraph instance. *Managed by the Sourcegraph Services team.* @@ -15760,7 +16163,7 @@ Indicates the total number of user permissions sync completed. This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101300` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101400` on your Sourcegraph instance. *Managed by the Sourcegraph Services team.* @@ -15784,7 +16187,7 @@ Indicates the number of users permissions syncs completed. This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101301` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101401` on your Sourcegraph instance. *Managed by the Sourcegraph Services team.* @@ -15808,7 +16211,7 @@ Indicates the number of permissions syncs done for the first time for the user. This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101302` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101402` on your Sourcegraph instance. *Managed by the Sourcegraph Services team.* @@ -15832,7 +16235,7 @@ Indicates the total number of repo permissions sync completed. This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101310` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101410` on your Sourcegraph instance. *Managed by the Sourcegraph Services team.* @@ -15856,7 +16259,7 @@ Indicates the number of repos permissions syncs completed. This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101311` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101411` on your Sourcegraph instance. *Managed by the Sourcegraph Services team.* @@ -15880,7 +16283,7 @@ Indicates the number of permissions syncs done for the first time for the repo. This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101312` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101412` on your Sourcegraph instance. *Managed by the Sourcegraph Services team.* @@ -15904,7 +16307,7 @@ Indicates the max delay between two consecutive permissions sync for a user duri This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101320` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101420` on your Sourcegraph instance. *Managed by the Sourcegraph Services team.* @@ -15928,7 +16331,7 @@ Indicates the max delay between two consecutive permissions sync for a repo duri This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101321` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101421` on your Sourcegraph instance. *Managed by the Sourcegraph Services team.* @@ -15952,7 +16355,7 @@ Indicates the max delay between user creation and their permissions sync This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101330` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101430` on your Sourcegraph instance. *Managed by the Sourcegraph Services team.* @@ -15976,7 +16379,7 @@ Indicates the max delay between repo creation and their permissions sync This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101331` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101431` on your Sourcegraph instance. *Managed by the Sourcegraph Services team.* @@ -16000,7 +16403,7 @@ Indicates the number permissions found during users/repos permissions sync. This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101340` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101440` on your Sourcegraph instance. *Managed by the Sourcegraph Services team.* @@ -16024,7 +16427,7 @@ Indicates the average number permissions found during permissions sync per user/ This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101341` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101441` on your Sourcegraph instance. *Managed by the Sourcegraph Services team.* @@ -16046,7 +16449,7 @@ avg by (type) (src_repo_perms_syncer_perms_found) Refer to the [alerts reference](alerts#worker-perms_syncer_outdated_perms) for 1 alert related to this panel. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101350` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101450` on your Sourcegraph instance. *Managed by the Sourcegraph Services team.* @@ -16068,7 +16471,7 @@ max by (type) (src_repo_perms_syncer_outdated_perms) Refer to the [alerts reference](alerts#worker-perms_syncer_sync_duration) for 1 alert related to this panel. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101360` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101460` on your Sourcegraph instance. *Managed by the Sourcegraph Services team.* @@ -16094,7 +16497,7 @@ Permissions sync errors are often transient and rarely actionable. This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101370` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101470` on your Sourcegraph instance. *Managed by the Sourcegraph Services team.* @@ -16119,7 +16522,7 @@ More about repository permissions synchronization [here](https://sourcegraph.com This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101371` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101471` on your Sourcegraph instance. *Managed by the Sourcegraph Services team.* @@ -16143,7 +16546,7 @@ sum by (type) (increase(src_repo_perms_syncer_schedule_total[1m])) This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101400` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101500` on your Sourcegraph instance. *Managed by the Sourcegraph Services team.* @@ -16165,7 +16568,7 @@ sum(increase(src_gitserver_client_total{job=~"^worker.*"}[5m])) This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101401` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101501` on your Sourcegraph instance. *Managed by the Sourcegraph Services team.* @@ -16187,7 +16590,7 @@ sum by (le)(rate(src_gitserver_client_duration_seconds_bucket{job=~"^worker.*"} This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101402` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101502` on your Sourcegraph instance. *Managed by the Sourcegraph Services team.* @@ -16209,7 +16612,7 @@ sum(increase(src_gitserver_client_errors_total{job=~"^worker.*"}[5m])) This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101403` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101503` on your Sourcegraph instance. *Managed by the Sourcegraph Services team.* @@ -16231,7 +16634,7 @@ sum(increase(src_gitserver_client_errors_total{job=~"^worker.*"}[5m])) / (sum(in This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101410` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101510` on your Sourcegraph instance. *Managed by the Sourcegraph Services team.* @@ -16253,7 +16656,7 @@ sum by (op,scope)(increase(src_gitserver_client_total{job=~"^worker.*"}[5m])) This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101411` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101511` on your Sourcegraph instance. *Managed by the Sourcegraph Services team.* @@ -16275,7 +16678,7 @@ histogram_quantile(0.99, sum by (le,op,scope)(rate(src_gitserver_client_duratio This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101412` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101512` on your Sourcegraph instance. *Managed by the Sourcegraph Services team.* @@ -16297,7 +16700,7 @@ sum by (op,scope)(increase(src_gitserver_client_errors_total{job=~"^worker.*"}[5 This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101413` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101513` on your Sourcegraph instance. *Managed by the Sourcegraph Services team.* @@ -16321,7 +16724,7 @@ sum by (op,scope)(increase(src_gitserver_client_errors_total{job=~"^worker.*"}[5 This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101500` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101600` on your Sourcegraph instance. *Managed by the Sourcegraph Services team.* @@ -16343,7 +16746,7 @@ sum(increase(src_gitserver_repositoryservice_client_total{job=~"^worker.*"}[5m]) This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101501` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101601` on your Sourcegraph instance. *Managed by the Sourcegraph Services team.* @@ -16365,7 +16768,7 @@ sum by (le)(rate(src_gitserver_repositoryservice_client_duration_seconds_bucket This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101502` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101602` on your Sourcegraph instance. *Managed by the Sourcegraph Services team.* @@ -16387,7 +16790,7 @@ sum(increase(src_gitserver_repositoryservice_client_errors_total{job=~"^worker.* This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101503` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101603` on your Sourcegraph instance. *Managed by the Sourcegraph Services team.* @@ -16409,7 +16812,7 @@ sum(increase(src_gitserver_repositoryservice_client_errors_total{job=~"^worker.* This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101510` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101610` on your Sourcegraph instance. *Managed by the Sourcegraph Services team.* @@ -16431,7 +16834,7 @@ sum by (op,scope)(increase(src_gitserver_repositoryservice_client_total{job=~"^w This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101511` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101611` on your Sourcegraph instance. *Managed by the Sourcegraph Services team.* @@ -16453,7 +16856,7 @@ histogram_quantile(0.99, sum by (le,op,scope)(rate(src_gitserver_repositoryserv This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101512` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101612` on your Sourcegraph instance. *Managed by the Sourcegraph Services team.* @@ -16475,7 +16878,7 @@ sum by (op,scope)(increase(src_gitserver_repositoryservice_client_errors_total{j This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101513` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101613` on your Sourcegraph instance. *Managed by the Sourcegraph Services team.* @@ -16499,7 +16902,7 @@ sum by (op,scope)(increase(src_gitserver_repositoryservice_client_errors_total{j This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101600` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101700` on your Sourcegraph instance. *Managed by the Sourcegraph Code Plane team.* @@ -16521,7 +16924,7 @@ sum(increase(src_batches_dbstore_total{job=~"^worker.*"}[5m])) This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101601` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101701` on your Sourcegraph instance. *Managed by the Sourcegraph Code Plane team.* @@ -16543,7 +16946,7 @@ sum by (le)(rate(src_batches_dbstore_duration_seconds_bucket{job=~"^worker.*"}[ This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101602` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101702` on your Sourcegraph instance. *Managed by the Sourcegraph Code Plane team.* @@ -16565,7 +16968,7 @@ sum(increase(src_batches_dbstore_errors_total{job=~"^worker.*"}[5m])) This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101603` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101703` on your Sourcegraph instance. *Managed by the Sourcegraph Code Plane team.* @@ -16587,7 +16990,7 @@ sum(increase(src_batches_dbstore_errors_total{job=~"^worker.*"}[5m])) / (sum(inc This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101610` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101710` on your Sourcegraph instance. *Managed by the Sourcegraph Code Plane team.* @@ -16609,7 +17012,7 @@ sum by (op)(increase(src_batches_dbstore_total{job=~"^worker.*"}[5m])) This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101611` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101711` on your Sourcegraph instance. *Managed by the Sourcegraph Code Plane team.* @@ -16631,7 +17034,7 @@ histogram_quantile(0.99, sum by (le,op)(rate(src_batches_dbstore_duration_secon This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101612` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101712` on your Sourcegraph instance. *Managed by the Sourcegraph Code Plane team.* @@ -16653,7 +17056,7 @@ sum by (op)(increase(src_batches_dbstore_errors_total{job=~"^worker.*"}[5m])) This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101613` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101713` on your Sourcegraph instance. *Managed by the Sourcegraph Code Plane team.* @@ -16677,7 +17080,7 @@ sum by (op)(increase(src_batches_dbstore_errors_total{job=~"^worker.*"}[5m])) / This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101700` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101800` on your Sourcegraph instance. *Managed by the Sourcegraph Code Plane team.* @@ -16699,7 +17102,7 @@ sum(increase(src_batches_service_total{job=~"^worker.*"}[5m])) This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101701` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101801` on your Sourcegraph instance. *Managed by the Sourcegraph Code Plane team.* @@ -16721,7 +17124,7 @@ sum by (le)(rate(src_batches_service_duration_seconds_bucket{job=~"^worker.*"}[ This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101702` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101802` on your Sourcegraph instance. *Managed by the Sourcegraph Code Plane team.* @@ -16743,7 +17146,7 @@ sum(increase(src_batches_service_errors_total{job=~"^worker.*"}[5m])) This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101703` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101803` on your Sourcegraph instance. *Managed by the Sourcegraph Code Plane team.* @@ -16765,7 +17168,7 @@ sum(increase(src_batches_service_errors_total{job=~"^worker.*"}[5m])) / (sum(inc This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101710` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101810` on your Sourcegraph instance. *Managed by the Sourcegraph Code Plane team.* @@ -16787,7 +17190,7 @@ sum by (op)(increase(src_batches_service_total{job=~"^worker.*"}[5m])) This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101711` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101811` on your Sourcegraph instance. *Managed by the Sourcegraph Code Plane team.* @@ -16809,7 +17212,7 @@ histogram_quantile(0.99, sum by (le,op)(rate(src_batches_service_duration_secon This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101712` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101812` on your Sourcegraph instance. *Managed by the Sourcegraph Code Plane team.* @@ -16831,7 +17234,7 @@ sum by (op)(increase(src_batches_service_errors_total{job=~"^worker.*"}[5m])) This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101713` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101813` on your Sourcegraph instance. *Managed by the Sourcegraph Code Plane team.* @@ -16855,7 +17258,7 @@ sum by (op)(increase(src_batches_service_errors_total{job=~"^worker.*"}[5m])) / This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101800` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101900` on your Sourcegraph instance. *Managed by the Sourcegraph Code Plane team.* @@ -16877,7 +17280,7 @@ sum(src_query_runner_worker_processor_handlers{job=~"^worker.*"}) This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101810` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101910` on your Sourcegraph instance. *Managed by the Sourcegraph Code Plane team.* @@ -16899,7 +17302,7 @@ sum(increase(src_query_runner_worker_processor_total{job=~"^worker.*"}[5m])) This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101811` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101911` on your Sourcegraph instance. *Managed by the Sourcegraph Code Plane team.* @@ -16921,7 +17324,7 @@ sum by (le)(rate(src_query_runner_worker_processor_duration_seconds_bucket{job= This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101812` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101912` on your Sourcegraph instance. *Managed by the Sourcegraph Code Plane team.* @@ -16943,7 +17346,7 @@ sum(increase(src_query_runner_worker_processor_errors_total{job=~"^worker.*"}[5m This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101813` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101913` on your Sourcegraph instance. *Managed by the Sourcegraph Code Plane team.* @@ -16967,7 +17370,7 @@ sum(increase(src_query_runner_worker_processor_errors_total{job=~"^worker.*"}[5m This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101900` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102000` on your Sourcegraph instance. *Managed by the Sourcegraph Code Plane team.* @@ -16989,7 +17392,7 @@ sum(increase(src_workerutil_dbworker_store_total{domain='insights_query_runner_j This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101901` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102001` on your Sourcegraph instance. *Managed by the Sourcegraph Code Plane team.* @@ -17011,7 +17414,7 @@ sum by (le)(rate(src_workerutil_dbworker_store_duration_seconds_bucket{domain=' This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101902` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102002` on your Sourcegraph instance. *Managed by the Sourcegraph Code Plane team.* @@ -17033,7 +17436,7 @@ sum(increase(src_workerutil_dbworker_store_errors_total{domain='insights_query_r This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101903` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102003` on your Sourcegraph instance. *Managed by the Sourcegraph Code Plane team.* @@ -17055,7 +17458,7 @@ sum(increase(src_workerutil_dbworker_store_errors_total{domain='insights_query_r This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101910` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102010` on your Sourcegraph instance. *Managed by the Sourcegraph Code Plane team.* @@ -17077,7 +17480,7 @@ sum by (op)(increase(src_workerutil_dbworker_store_total{domain='insights_query_ This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101911` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102011` on your Sourcegraph instance. *Managed by the Sourcegraph Code Plane team.* @@ -17099,7 +17502,7 @@ histogram_quantile(0.99, sum by (le,op)(rate(src_workerutil_dbworker_store_dura This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101912` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102012` on your Sourcegraph instance. *Managed by the Sourcegraph Code Plane team.* @@ -17121,7 +17524,7 @@ sum by (op)(increase(src_workerutil_dbworker_store_errors_total{domain='insights This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101913` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102013` on your Sourcegraph instance. *Managed by the Sourcegraph Code Plane team.* @@ -17148,7 +17551,7 @@ A value of 0 indicates the routine isn`t running currently, it awaits it`s next This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102000` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102100` on your Sourcegraph instance. *Managed by the Sourcegraph Platform team.* @@ -17173,7 +17576,7 @@ A low or zero value could indicate that a routine is stalled or encountering err This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102001` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102101` on your Sourcegraph instance. *Managed by the Sourcegraph Platform team.* @@ -17198,7 +17601,7 @@ A sustained high error rate may indicate a problem with the routine`s configurat Refer to the [alerts reference](alerts#worker-goroutine_error_rate) for 1 alert related to this panel. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102010` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102110` on your Sourcegraph instance. *Managed by the Sourcegraph Services team.* @@ -17223,7 +17626,7 @@ A value above 5% indicates that a significant portion of routine executions are Refer to the [alerts reference](alerts#worker-goroutine_error_percentage) for 1 alert related to this panel. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102011` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102111` on your Sourcegraph instance. *Managed by the Sourcegraph Services team.* @@ -17248,7 +17651,7 @@ Longer durations might indicate increased load or processing time. This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102020` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102120` on your Sourcegraph instance. *Managed by the Sourcegraph Platform team.* @@ -17273,7 +17676,7 @@ This represents how long a complete loop iteration takes before sleeping for the This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102021` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102121` on your Sourcegraph instance. *Managed by the Sourcegraph Platform team.* @@ -17298,7 +17701,7 @@ Higher values indicate that tenant processing is taking longer and may affect ov This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102030` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102130` on your Sourcegraph instance. *Managed by the Sourcegraph Platform team.* @@ -17323,7 +17726,7 @@ Consistently high values might indicate problematic tenants or inefficient proce This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102031` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102131` on your Sourcegraph instance. *Managed by the Sourcegraph Platform team.* @@ -17348,7 +17751,7 @@ Unexpected changes can indicate tenant configuration issues or scaling events. This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102040` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102140` on your Sourcegraph instance. *Managed by the Sourcegraph Platform team.* @@ -17373,7 +17776,7 @@ A healthy routine should maintain a consistent processing rate. This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102041` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102141` on your Sourcegraph instance. *Managed by the Sourcegraph Platform team.* @@ -17398,7 +17801,7 @@ Consistent errors indicate problems with specific tenants. This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102050` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102150` on your Sourcegraph instance. *Managed by the Sourcegraph Platform team.* @@ -17423,7 +17826,7 @@ Values above 5% indicate significant tenant processing problems. This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102051` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102151` on your Sourcegraph instance. *Managed by the Sourcegraph Platform team.* @@ -17447,7 +17850,7 @@ Query: This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102100` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102200` on your Sourcegraph instance. *Managed by the Sourcegraph Platform team.* @@ -17469,7 +17872,7 @@ sum by (app_name, db_name) (src_pgsql_conns_max_open{app_name="worker"}) This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102101` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102201` on your Sourcegraph instance. *Managed by the Sourcegraph Platform team.* @@ -17491,7 +17894,7 @@ sum by (app_name, db_name) (src_pgsql_conns_open{app_name="worker"}) This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102110` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102210` on your Sourcegraph instance. *Managed by the Sourcegraph Platform team.* @@ -17513,7 +17916,7 @@ sum by (app_name, db_name) (src_pgsql_conns_in_use{app_name="worker"}) This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102111` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102211` on your Sourcegraph instance. *Managed by the Sourcegraph Platform team.* @@ -17535,7 +17938,7 @@ sum by (app_name, db_name) (src_pgsql_conns_idle{app_name="worker"}) Refer to the [alerts reference](alerts#worker-mean_blocked_seconds_per_conn_request) for 2 alerts related to this panel. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102120` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102220` on your Sourcegraph instance. *Managed by the Sourcegraph Platform team.* @@ -17557,7 +17960,7 @@ sum by (app_name, db_name) (increase(src_pgsql_conns_blocked_seconds{app_name="w This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102130` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102230` on your Sourcegraph instance. *Managed by the Sourcegraph Platform team.* @@ -17579,7 +17982,7 @@ sum by (app_name, db_name) (increase(src_pgsql_conns_closed_max_idle{app_name="w This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102131` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102231` on your Sourcegraph instance. *Managed by the Sourcegraph Platform team.* @@ -17601,7 +18004,7 @@ sum by (app_name, db_name) (increase(src_pgsql_conns_closed_max_lifetime{app_nam This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102132` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102232` on your Sourcegraph instance. *Managed by the Sourcegraph Platform team.* @@ -17625,7 +18028,7 @@ sum by (app_name, db_name) (increase(src_pgsql_conns_closed_max_idle_time{app_na Refer to the [alerts reference](alerts#worker-cpu_usage_percentage) for 1 alert related to this panel. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102200` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102300` on your Sourcegraph instance. *Managed by the Sourcegraph Code Understanding team.* @@ -17649,7 +18052,7 @@ An estimate for the active memory in use, which includes anonymous memory, file This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102201` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102301` on your Sourcegraph instance. *Managed by the Sourcegraph Code Understanding team.* @@ -17673,7 +18076,7 @@ An estimate for the active memory in use in bytes, which includes anonymous memo This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102202` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102302` on your Sourcegraph instance. *Managed by the Sourcegraph Code Understanding team.* @@ -17697,7 +18100,7 @@ The total anonymous memory in use by the application, which includes Go stack an Refer to the [alerts reference](alerts#worker-memory_rss) for 1 alert related to this panel. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102210` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102310` on your Sourcegraph instance. *Managed by the Sourcegraph Code Understanding team.* @@ -17721,7 +18124,7 @@ This metric shows the total active file-backed memory currently in use by the ap This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102211` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102311` on your Sourcegraph instance. *Managed by the Sourcegraph Code Understanding team.* @@ -17745,7 +18148,7 @@ The kernel usage metric shows the amount of memory used by the kernel on behalf This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102212` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102312` on your Sourcegraph instance. *Managed by the Sourcegraph Code Understanding team.* @@ -17779,7 +18182,7 @@ value change independent of deployment events (such as an upgrade), it could ind This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102300` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102400` on your Sourcegraph instance. *Managed by the Sourcegraph Code Understanding team.* @@ -17801,7 +18204,7 @@ count by(name) ((time() - container_last_seen{name=~"^worker.*"}) > 60) Refer to the [alerts reference](alerts#worker-container_cpu_usage) for 1 alert related to this panel. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102301` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102401` on your Sourcegraph instance. *Managed by the Sourcegraph Code Understanding team.* @@ -17823,7 +18226,7 @@ cadvisor_container_cpu_usage_percentage_total{name=~"^worker.*"} Refer to the [alerts reference](alerts#worker-container_memory_usage) for 1 alert related to this panel. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102302` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102402` on your Sourcegraph instance. *Managed by the Sourcegraph Code Understanding team.* @@ -17848,7 +18251,7 @@ When extremely high, this can indicate a resource usage problem, or can cause pr This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102303` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102403` on your Sourcegraph instance. *Managed by the Sourcegraph Code Understanding team.* @@ -17872,7 +18275,7 @@ sum by(name) (rate(container_fs_reads_total{name=~"^worker.*"}[1h]) + rate(conta Refer to the [alerts reference](alerts#worker-provisioning_container_cpu_usage_long_term) for 1 alert related to this panel. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102400` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102500` on your Sourcegraph instance. *Managed by the Sourcegraph Code Plane team.* @@ -17894,7 +18297,7 @@ quantile_over_time(0.9, cadvisor_container_cpu_usage_percentage_total{name=~"^wo Refer to the [alerts reference](alerts#worker-provisioning_container_memory_usage_long_term) for 1 alert related to this panel. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102401` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102501` on your Sourcegraph instance. *Managed by the Sourcegraph Code Plane team.* @@ -17916,7 +18319,7 @@ max_over_time(cadvisor_container_memory_usage_percentage_total{name=~"^worker.*" Refer to the [alerts reference](alerts#worker-provisioning_container_cpu_usage_short_term) for 1 alert related to this panel. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102410` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102510` on your Sourcegraph instance. *Managed by the Sourcegraph Code Plane team.* @@ -17938,7 +18341,7 @@ max_over_time(cadvisor_container_cpu_usage_percentage_total{name=~"^worker.*"}[5 Refer to the [alerts reference](alerts#worker-provisioning_container_memory_usage_short_term) for 1 alert related to this panel. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102411` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102511` on your Sourcegraph instance. *Managed by the Sourcegraph Code Plane team.* @@ -17963,7 +18366,7 @@ When it occurs frequently, it is an indicator of underprovisioning. Refer to the [alerts reference](alerts#worker-container_oomkill_events_total) for 1 alert related to this panel. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102412` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102512` on your Sourcegraph instance. *Managed by the Sourcegraph Code Plane team.* @@ -17989,7 +18392,7 @@ A high value here indicates a possible goroutine leak. Refer to the [alerts reference](alerts#worker-go_goroutines) for 1 alert related to this panel. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102500` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102600` on your Sourcegraph instance. *Managed by the Sourcegraph Code Plane team.* @@ -18011,7 +18414,7 @@ max by(instance) (go_goroutines{job=~".*worker"}) Refer to the [alerts reference](alerts#worker-go_gc_duration_seconds) for 1 alert related to this panel. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102501` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102601` on your Sourcegraph instance. *Managed by the Sourcegraph Code Plane team.* @@ -18035,7 +18438,7 @@ max by(instance) (go_gc_duration_seconds{job=~".*worker"}) Refer to the [alerts reference](alerts#worker-pods_available_percentage) for 1 alert related to this panel. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102600` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102700` on your Sourcegraph instance. *Managed by the Sourcegraph Code Plane team.* @@ -18059,7 +18462,7 @@ sum by(app) (up{app=~".*worker"}) / count by (app) (up{app=~".*worker"}) * 100 This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102700` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102800` on your Sourcegraph instance. *Managed by the Sourcegraph Code Understanding team.* @@ -18081,7 +18484,7 @@ sum(increase(src_workerutil_dbworker_store_total{domain='own_background_worker_s This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102701` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102801` on your Sourcegraph instance. *Managed by the Sourcegraph Code Understanding team.* @@ -18103,7 +18506,7 @@ sum by (le)(rate(src_workerutil_dbworker_store_duration_seconds_bucket{domain=' This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102702` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102802` on your Sourcegraph instance. *Managed by the Sourcegraph Code Understanding team.* @@ -18125,7 +18528,7 @@ sum(increase(src_workerutil_dbworker_store_errors_total{domain='own_background_w This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102703` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102803` on your Sourcegraph instance. *Managed by the Sourcegraph Code Understanding team.* @@ -18147,7 +18550,7 @@ sum(increase(src_workerutil_dbworker_store_errors_total{domain='own_background_w This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102710` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102810` on your Sourcegraph instance. *Managed by the Sourcegraph Code Understanding team.* @@ -18169,7 +18572,7 @@ sum by (op)(increase(src_workerutil_dbworker_store_total{domain='own_background_ This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102711` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102811` on your Sourcegraph instance. *Managed by the Sourcegraph Code Understanding team.* @@ -18191,7 +18594,7 @@ histogram_quantile(0.99, sum by (le,op)(rate(src_workerutil_dbworker_store_dura This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102712` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102812` on your Sourcegraph instance. *Managed by the Sourcegraph Code Understanding team.* @@ -18213,7 +18616,7 @@ sum by (op)(increase(src_workerutil_dbworker_store_errors_total{domain='own_back This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102713` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102813` on your Sourcegraph instance. *Managed by the Sourcegraph Code Understanding team.* @@ -18237,7 +18640,7 @@ sum by (op)(increase(src_workerutil_dbworker_store_errors_total{domain='own_back This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102800` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102900` on your Sourcegraph instance. *Managed by the Sourcegraph Code Plane team.* @@ -18259,7 +18662,7 @@ sum(src_own_background_worker_processor_handlers{job=~"^worker.*"}) This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102810` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102910` on your Sourcegraph instance. *Managed by the Sourcegraph Code Plane team.* @@ -18281,7 +18684,7 @@ sum(increase(src_own_background_worker_processor_total{job=~"^worker.*"}[5m])) This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102811` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102911` on your Sourcegraph instance. *Managed by the Sourcegraph Code Plane team.* @@ -18303,7 +18706,7 @@ sum by (le)(rate(src_own_background_worker_processor_duration_seconds_bucket{jo This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102812` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102912` on your Sourcegraph instance. *Managed by the Sourcegraph Code Plane team.* @@ -18325,7 +18728,7 @@ sum(increase(src_own_background_worker_processor_errors_total{job=~"^worker.*"}[ This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102813` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102913` on your Sourcegraph instance. *Managed by the Sourcegraph Code Plane team.* @@ -18349,7 +18752,7 @@ sum(increase(src_own_background_worker_processor_errors_total{job=~"^worker.*"}[ This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102900` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=103000` on your Sourcegraph instance. *Managed by the Sourcegraph Code Understanding team.* @@ -18371,7 +18774,7 @@ sum by (op)(increase(src_own_background_index_scheduler_total{job=~"^worker.*"}[ This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102901` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=103001` on your Sourcegraph instance. *Managed by the Sourcegraph Code Understanding team.* @@ -18393,7 +18796,7 @@ histogram_quantile(0.99, sum by (le,op)(rate(src_own_background_index_scheduler This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102902` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=103002` on your Sourcegraph instance. *Managed by the Sourcegraph Code Understanding team.* @@ -18415,7 +18818,7 @@ sum by (op)(increase(src_own_background_index_scheduler_errors_total{job=~"^work This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102903` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=103003` on your Sourcegraph instance. *Managed by the Sourcegraph Code Understanding team.* @@ -18441,7 +18844,7 @@ The duration since the configuration client used by the "worker" service last su This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=103000` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=103100` on your Sourcegraph instance. *Managed by the Sourcegraph Platform team.* @@ -18463,7 +18866,7 @@ src_conf_client_time_since_last_successful_update_seconds{job=~`^worker.*`,insta Refer to the [alerts reference](alerts#worker-worker_site_configuration_duration_since_last_successful_update_by_instance) for 1 alert related to this panel. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=103001` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=103101` on your Sourcegraph instance. *Managed by the Sourcegraph Platform team.* @@ -26245,11 +26648,14 @@ max by (name, queue) (src_executors_managed_instance_groups_autoscaler_assigned_

Codeintel executor queue has a backlog that is not being processed

-Fires when the codeintel executor queue has a non-empty backlog (`src_workerutil_queue_depth{domain="executors_codeintel"} > 0`) while zero jobs have reached a terminal state over the last 30 minutes (`src_workerutil_dbworker_store_total{domain="codeintel_index"}`). With a backlog present, zero completions over 30m is already abnormal — the only benign zero-completion case (an empty queue) is excluded by the backlog guard. -This is the true "executors not draining" signal: it distinguishes stuck/broken executors from executors that are simply under-provisioned. An under-provisioned queue (backlog present but jobs still completing) has a non-zero terminal-transition rate and will NOT trip this alert — that case is a capacity-review signal, not a stall. -Both signals come from the worker/frontend (always scraped), not from the executor VMs, so this alert works on deployments where executors run outside the cluster (e.g. Sourcegraph Cloud). +Two severities on one signal: the codeintel executor queue has a non-empty backlog (`src_workerutil_queue_depth{domain="executors_codeintel"} > 0`) +while zero jobs have reached a terminal state over the last 30 minutes (`src_workerutil_dbworker_store_total{domain="codeintel_index"}`). With a backlog present, zero completions over 30m is already abnormal — the only benign zero-completion case (an empty queue) is excluded by the backlog guard. +Warning fires on any such 30m window. On a fleet of small, spot-backed queues most of these are transient (e.g. a single spot-VM preemption) and self-heal, so Warning is for visibility rather than paging. +Critical additionally requires the oldest queued job to have been waiting more than 1h (`src_workerutil_queue_duration_seconds{domain="executors_codeintel"} > 3600` — head-of-line wait time). Past the 60m maximum single-job runtime, zero completions can no longer be one long-running job and a transient preemption has had time to recover, so the queue is sustained-stuck. This is the paging tier. +Both tiers distinguish a stuck queue from an under-provisioned one: an under-provisioned queue (backlog present but jobs still completing) has a non-zero terminal-transition rate and trips neither tier — that is a capacity-review signal, not a stall. +All signals come from the worker/frontend (always scraped), not from the executor VMs, so this alert works on deployments where executors run outside the cluster (e.g. Sourcegraph Cloud). -Refer to the [alerts reference](alerts#executor-codeintel_queue_growing_but_not_processing) for 1 alert related to this panel. +Refer to the [alerts reference](alerts#executor-codeintel_queue_growing_but_not_processing) for 2 alerts related to this panel. To see this panel, visit `/-/debug/grafana/d/executor/executor?viewPanel=100110` on your Sourcegraph instance. @@ -26271,11 +26677,14 @@ sum(rate(src_workerutil_dbworker_store_total{domain="codeintel_index",op=~"MarkC

Batches executor queue has a backlog that is not being processed

-Fires when the batches executor queue has a non-empty backlog (`src_workerutil_queue_depth{domain="executors_batches"} > 0`) while zero jobs have reached a terminal state over the last 30 minutes (`src_workerutil_dbworker_store_total{domain="batch_spec_workspace_execution_worker_store"}`). With a backlog present, zero completions over 30m is already abnormal — the only benign zero-completion case (an empty queue) is excluded by the backlog guard. -This is the true "executors not draining" signal: it distinguishes stuck/broken executors from executors that are simply under-provisioned. An under-provisioned queue (backlog present but jobs still completing) has a non-zero terminal-transition rate and will NOT trip this alert — that case is a capacity-review signal, not a stall. -Both signals come from the worker/frontend (always scraped), not from the executor VMs, so this alert works on deployments where executors run outside the cluster (e.g. Sourcegraph Cloud). +Two severities on one signal: the batches executor queue has a non-empty backlog (`src_workerutil_queue_depth{domain="executors_batches"} > 0`) +while zero jobs have reached a terminal state over the last 30 minutes (`src_workerutil_dbworker_store_total{domain="batch_spec_workspace_execution_worker_store"}`). With a backlog present, zero completions over 30m is already abnormal — the only benign zero-completion case (an empty queue) is excluded by the backlog guard. +Warning fires on any such 30m window. On a fleet of small, spot-backed queues most of these are transient (e.g. a single spot-VM preemption) and self-heal, so Warning is for visibility rather than paging. +Critical additionally requires the oldest queued job to have been waiting more than 1h (`src_workerutil_queue_duration_seconds{domain="executors_batches"} > 3600` — head-of-line wait time). Past the 60m maximum single-job runtime, zero completions can no longer be one long-running job and a transient preemption has had time to recover, so the queue is sustained-stuck. This is the paging tier. +Both tiers distinguish a stuck queue from an under-provisioned one: an under-provisioned queue (backlog present but jobs still completing) has a non-zero terminal-transition rate and trips neither tier — that is a capacity-review signal, not a stall. +All signals come from the worker/frontend (always scraped), not from the executor VMs, so this alert works on deployments where executors run outside the cluster (e.g. Sourcegraph Cloud). -Refer to the [alerts reference](alerts#executor-batches_queue_growing_but_not_processing) for 1 alert related to this panel. +Refer to the [alerts reference](alerts#executor-batches_queue_growing_but_not_processing) for 2 alerts related to this panel. To see this panel, visit `/-/debug/grafana/d/executor/executor?viewPanel=100111` on your Sourcegraph instance. @@ -32823,6 +33232,28 @@ sum(increase(src_codeintel_uploads_janitor_scip_documents_records_altered_total{
+#### codeintel-uploads: codeintel_uploads_janitor_scip_documents_oldest_dereference_log_age + +

Approximate age of the oldest SCIP document dereference log record, based on the lowest-ID record

+ +Refer to the [alerts reference](alerts#codeintel-uploads-codeintel_uploads_janitor_scip_documents_oldest_dereference_log_age) for 1 alert related to this panel. + +To see this panel, visit `/-/debug/grafana/d/codeintel-uploads/codeintel-uploads?viewPanel=101302` on your Sourcegraph instance. + +*Managed by the Sourcegraph Code Understanding team.* + +
+Technical details + +Query: + +``` +(time() - max(src_codeintel_uploads_janitor_scip_documents_oldest_dereference_log_timestamp_seconds{job=~"^${source:regex}.*"})) and max(src_codeintel_uploads_janitor_scip_documents_oldest_dereference_log_timestamp_seconds{job=~"^${source:regex}.*"}) > 0 +``` +
+ +
+ #### codeintel-uploads: codeintel_uploads_janitor_scip_documents_total

Job invocation operations every 5m

@@ -34811,135 +35242,13 @@ label_replace(sum by (rpc_method, rpc_connect_rpc_error_code) (rate(rpc_client_d #### metering: metering_v1_connect_response_code_distribution -

Connect response code distribution per method over 2m

- -Rate of outbound Connect calls to enterpriseportal.metering.v1.MeteringService per method, broken down by rpc_connect_rpc_error_code. Successful calls (which carry no error-code attribute) are normalized to "ok". - -This panel has no related alerts. - -To see this panel, visit `/-/debug/grafana/d/metering/metering?viewPanel=100740` on your Sourcegraph instance. - -*Managed by the Sourcegraph Services team.* - -
-Technical details - -Query: - -``` -label_replace(sum by (rpc_method, rpc_connect_rpc_error_code) (rate(rpc_client_duration_milliseconds_count{rpc_service="enterpriseportal.metering.v1.MeteringService",rpc_method=~"${metering_v1_method:regex}",job=~"${caller:regex}"}[2m])), "rpc_connect_rpc_error_code", "ok", "rpc_connect_rpc_error_code", "") -``` -
- -
- -### Metering: Broadcast Messages V1 Connect client metrics - -#### metering: broadcast_messages_v1_success_p99_duration_per_method - -

99th percentile success connect client duration per method over 2m

- -99th percentile duration of success outbound Connect calls to enterpriseportal.broadcastmessages.v1.BroadcastMessagesService, per method. - -This panel has no related alerts. - -To see this panel, visit `/-/debug/grafana/d/metering/metering?viewPanel=100800` on your Sourcegraph instance. - -*Managed by the Sourcegraph Services team.* - -
-Technical details - -Query: - -``` -histogram_quantile(0.99, sum by (le, rpc_method) (rate(rpc_client_duration_milliseconds_bucket{rpc_service="enterpriseportal.broadcastmessages.v1.BroadcastMessagesService",rpc_method=~"${broadcast_messages_v1_method:regex}",job=~"${caller:regex}",rpc_connect_rpc_error_code=""}[2m]))) -``` -
- -
- -#### metering: broadcast_messages_v1_success_p95_duration_per_method - -

95th percentile success connect client duration per method over 2m

- -95th percentile duration of success outbound Connect calls to enterpriseportal.broadcastmessages.v1.BroadcastMessagesService, per method. - -This panel has no related alerts. - -To see this panel, visit `/-/debug/grafana/d/metering/metering?viewPanel=100801` on your Sourcegraph instance. - -*Managed by the Sourcegraph Services team.* - -
-Technical details - -Query: - -``` -histogram_quantile(0.95, sum by (le, rpc_method) (rate(rpc_client_duration_milliseconds_bucket{rpc_service="enterpriseportal.broadcastmessages.v1.BroadcastMessagesService",rpc_method=~"${broadcast_messages_v1_method:regex}",job=~"${caller:regex}",rpc_connect_rpc_error_code=""}[2m]))) -``` -
- -
- -#### metering: broadcast_messages_v1_success_p90_duration_per_method - -

90th percentile success connect client duration per method over 2m

- -90th percentile duration of success outbound Connect calls to enterpriseportal.broadcastmessages.v1.BroadcastMessagesService, per method. - -This panel has no related alerts. - -To see this panel, visit `/-/debug/grafana/d/metering/metering?viewPanel=100802` on your Sourcegraph instance. - -*Managed by the Sourcegraph Services team.* - -
-Technical details - -Query: - -``` -histogram_quantile(0.90, sum by (le, rpc_method) (rate(rpc_client_duration_milliseconds_bucket{rpc_service="enterpriseportal.broadcastmessages.v1.BroadcastMessagesService",rpc_method=~"${broadcast_messages_v1_method:regex}",job=~"${caller:regex}",rpc_connect_rpc_error_code=""}[2m]))) -``` -
- -
- -#### metering: broadcast_messages_v1_failure_p99_duration_per_method - -

99th percentile failure connect client duration per method over 2m

- -99th percentile duration of failure outbound Connect calls to enterpriseportal.broadcastmessages.v1.BroadcastMessagesService, per method. - -This panel has no related alerts. - -To see this panel, visit `/-/debug/grafana/d/metering/metering?viewPanel=100810` on your Sourcegraph instance. - -*Managed by the Sourcegraph Services team.* - -
-Technical details - -Query: - -``` -histogram_quantile(0.99, sum by (le, rpc_method) (rate(rpc_client_duration_milliseconds_bucket{rpc_service="enterpriseportal.broadcastmessages.v1.BroadcastMessagesService",rpc_method=~"${broadcast_messages_v1_method:regex}",job=~"${caller:regex}",rpc_connect_rpc_error_code!=""}[2m]))) -``` -
- -
- -#### metering: broadcast_messages_v1_failure_p95_duration_per_method - -

95th percentile failure connect client duration per method over 2m

+

Connect response code distribution per method over 2m

-95th percentile duration of failure outbound Connect calls to enterpriseportal.broadcastmessages.v1.BroadcastMessagesService, per method. +Rate of outbound Connect calls to enterpriseportal.metering.v1.MeteringService per method, broken down by rpc_connect_rpc_error_code. Successful calls (which carry no error-code attribute) are normalized to "ok". This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/metering/metering?viewPanel=100811` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/metering/metering?viewPanel=100740` on your Sourcegraph instance. *Managed by the Sourcegraph Services team.* @@ -34949,21 +35258,23 @@ To see this panel, visit `/-/debug/grafana/d/metering/metering?viewPanel=100811` Query: ``` -histogram_quantile(0.95, sum by (le, rpc_method) (rate(rpc_client_duration_milliseconds_bucket{rpc_service="enterpriseportal.broadcastmessages.v1.BroadcastMessagesService",rpc_method=~"${broadcast_messages_v1_method:regex}",job=~"${caller:regex}",rpc_connect_rpc_error_code!=""}[2m]))) +label_replace(sum by (rpc_method, rpc_connect_rpc_error_code) (rate(rpc_client_duration_milliseconds_count{rpc_service="enterpriseportal.metering.v1.MeteringService",rpc_method=~"${metering_v1_method:regex}",job=~"${caller:regex}"}[2m])), "rpc_connect_rpc_error_code", "ok", "rpc_connect_rpc_error_code", "") ```
-#### metering: broadcast_messages_v1_failure_p90_duration_per_method +### Metering: Broadcast Messages V1 Connect client metrics -

90th percentile failure connect client duration per method over 2m

+#### metering: broadcast_messages_v1_success_p99_duration_per_method -90th percentile duration of failure outbound Connect calls to enterpriseportal.broadcastmessages.v1.BroadcastMessagesService, per method. +

99th percentile success connect client duration per method over 2m

+ +99th percentile duration of success outbound Connect calls to enterpriseportal.broadcastmessages.v1.BroadcastMessagesService, per method. This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/metering/metering?viewPanel=100812` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/metering/metering?viewPanel=100800` on your Sourcegraph instance. *Managed by the Sourcegraph Services team.* @@ -34973,21 +35284,21 @@ To see this panel, visit `/-/debug/grafana/d/metering/metering?viewPanel=100812` Query: ``` -histogram_quantile(0.90, sum by (le, rpc_method) (rate(rpc_client_duration_milliseconds_bucket{rpc_service="enterpriseportal.broadcastmessages.v1.BroadcastMessagesService",rpc_method=~"${broadcast_messages_v1_method:regex}",job=~"${caller:regex}",rpc_connect_rpc_error_code!=""}[2m]))) +histogram_quantile(0.99, sum by (le, rpc_method) (rate(rpc_client_duration_milliseconds_bucket{rpc_service="enterpriseportal.broadcastmessages.v1.BroadcastMessagesService",rpc_method=~"${broadcast_messages_v1_method:regex}",job=~"${caller:regex}",rpc_connect_rpc_error_code=""}[2m]))) ```
-#### metering: broadcast_messages_v1_connect_request_rate_per_method +#### metering: broadcast_messages_v1_success_p95_duration_per_method -

Connect request rate per method over 5m

+

95th percentile success connect client duration per method over 2m

-Rate of outbound Connect calls to enterpriseportal.broadcastmessages.v1.BroadcastMessagesService, per method, over a 5 minute window. +95th percentile duration of success outbound Connect calls to enterpriseportal.broadcastmessages.v1.BroadcastMessagesService, per method. This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/metering/metering?viewPanel=100820` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/metering/metering?viewPanel=100801` on your Sourcegraph instance. *Managed by the Sourcegraph Services team.* @@ -34997,21 +35308,21 @@ To see this panel, visit `/-/debug/grafana/d/metering/metering?viewPanel=100820` Query: ``` -sum by (rpc_method) (rate(rpc_client_duration_milliseconds_count{rpc_service="enterpriseportal.broadcastmessages.v1.BroadcastMessagesService",rpc_method=~"${broadcast_messages_v1_method:regex}",job=~"${caller:regex}"}[5m])) +histogram_quantile(0.95, sum by (le, rpc_method) (rate(rpc_client_duration_milliseconds_bucket{rpc_service="enterpriseportal.broadcastmessages.v1.BroadcastMessagesService",rpc_method=~"${broadcast_messages_v1_method:regex}",job=~"${caller:regex}",rpc_connect_rpc_error_code=""}[2m]))) ```
-#### metering: broadcast_messages_v1_connect_error_rate_per_method +#### metering: broadcast_messages_v1_success_p90_duration_per_method -

Connect error percentage per method over 2m

+

90th percentile success connect client duration per method over 2m

-Percentage of outbound Connect calls to enterpriseportal.broadcastmessages.v1.BroadcastMessagesService that returned a non-OK code, per method. +90th percentile duration of success outbound Connect calls to enterpriseportal.broadcastmessages.v1.BroadcastMessagesService, per method. This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/metering/metering?viewPanel=100830` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/metering/metering?viewPanel=100802` on your Sourcegraph instance. *Managed by the Sourcegraph Services team.* @@ -35021,21 +35332,21 @@ To see this panel, visit `/-/debug/grafana/d/metering/metering?viewPanel=100830` Query: ``` -(100 * sum by (rpc_method) (rate(rpc_client_duration_milliseconds_count{rpc_service="enterpriseportal.broadcastmessages.v1.BroadcastMessagesService",rpc_method=~"${broadcast_messages_v1_method:regex}",job=~"${caller:regex}",rpc_connect_rpc_error_code!=""}[2m]))) / sum by (rpc_method) (rate(rpc_client_duration_milliseconds_count{rpc_service="enterpriseportal.broadcastmessages.v1.BroadcastMessagesService",rpc_method=~"${broadcast_messages_v1_method:regex}",job=~"${caller:regex}"}[2m])) +histogram_quantile(0.90, sum by (le, rpc_method) (rate(rpc_client_duration_milliseconds_bucket{rpc_service="enterpriseportal.broadcastmessages.v1.BroadcastMessagesService",rpc_method=~"${broadcast_messages_v1_method:regex}",job=~"${caller:regex}",rpc_connect_rpc_error_code=""}[2m]))) ```
-#### metering: broadcast_messages_v1_connect_error_rate_per_method_by_code +#### metering: broadcast_messages_v1_failure_p99_duration_per_method -

Connect error request rate per method and code over 2m

+

99th percentile failure connect client duration per method over 2m

-Rate of failing outbound Connect calls to enterpriseportal.broadcastmessages.v1.BroadcastMessagesService, broken down by method and connect error code. +99th percentile duration of failure outbound Connect calls to enterpriseportal.broadcastmessages.v1.BroadcastMessagesService, per method. This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/metering/metering?viewPanel=100831` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/metering/metering?viewPanel=100810` on your Sourcegraph instance. *Managed by the Sourcegraph Services team.* @@ -35045,21 +35356,21 @@ To see this panel, visit `/-/debug/grafana/d/metering/metering?viewPanel=100831` Query: ``` -label_replace(sum by (rpc_method, rpc_connect_rpc_error_code) (rate(rpc_client_duration_milliseconds_count{rpc_service="enterpriseportal.broadcastmessages.v1.BroadcastMessagesService",rpc_method=~"${broadcast_messages_v1_method:regex}",job=~"${caller:regex}",rpc_connect_rpc_error_code!=""}[2m])), "rpc_connect_rpc_error_code", "ok", "rpc_connect_rpc_error_code", "") +histogram_quantile(0.99, sum by (le, rpc_method) (rate(rpc_client_duration_milliseconds_bucket{rpc_service="enterpriseportal.broadcastmessages.v1.BroadcastMessagesService",rpc_method=~"${broadcast_messages_v1_method:regex}",job=~"${caller:regex}",rpc_connect_rpc_error_code!=""}[2m]))) ```
-#### metering: broadcast_messages_v1_connect_response_code_distribution +#### metering: broadcast_messages_v1_failure_p95_duration_per_method -

Connect response code distribution per method over 2m

+

95th percentile failure connect client duration per method over 2m

-Rate of outbound Connect calls to enterpriseportal.broadcastmessages.v1.BroadcastMessagesService per method, broken down by rpc_connect_rpc_error_code. Successful calls (which carry no error-code attribute) are normalized to "ok". +95th percentile duration of failure outbound Connect calls to enterpriseportal.broadcastmessages.v1.BroadcastMessagesService, per method. This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/metering/metering?viewPanel=100840` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/metering/metering?viewPanel=100811` on your Sourcegraph instance. *Managed by the Sourcegraph Services team.* @@ -35069,29 +35380,21 @@ To see this panel, visit `/-/debug/grafana/d/metering/metering?viewPanel=100840` Query: ``` -label_replace(sum by (rpc_method, rpc_connect_rpc_error_code) (rate(rpc_client_duration_milliseconds_count{rpc_service="enterpriseportal.broadcastmessages.v1.BroadcastMessagesService",rpc_method=~"${broadcast_messages_v1_method:regex}",job=~"${caller:regex}"}[2m])), "rpc_connect_rpc_error_code", "ok", "rpc_connect_rpc_error_code", "") +histogram_quantile(0.95, sum by (le, rpc_method) (rate(rpc_client_duration_milliseconds_bucket{rpc_service="enterpriseportal.broadcastmessages.v1.BroadcastMessagesService",rpc_method=~"${broadcast_messages_v1_method:regex}",job=~"${caller:regex}",rpc_connect_rpc_error_code!=""}[2m]))) ```
-## Entitlements usage history telemetry - -

Monitoring entitlement usage history telemetry export and queue health in Sourcegraph.

- -To see this dashboard, visit `/-/debug/grafana/d/entitlements-usage-history/entitlements-usage-history` on your Sourcegraph instance. - -### Entitlements usage history telemetry: Entitlements usage history telemetry: events export and queue metrics - -#### entitlements-usage-history: entitlements_usage_history_telemetry_exported_events +#### metering: broadcast_messages_v1_failure_p90_duration_per_method -

Entitlement usage history events exported per hour

+

90th percentile failure connect client duration per method over 2m

-The number of entitlement usage history events exported as telemetry over the last hour. +90th percentile duration of failure outbound Connect calls to enterpriseportal.broadcastmessages.v1.BroadcastMessagesService, per method. This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/entitlements-usage-history/entitlements-usage-history?viewPanel=100000` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/metering/metering?viewPanel=100812` on your Sourcegraph instance. *Managed by the Sourcegraph Services team.* @@ -35101,22 +35404,21 @@ To see this panel, visit `/-/debug/grafana/d/entitlements-usage-history/entitlem Query: ``` -sum(increase(src_entitlementstelemetry_usage_history_exported_events[1h])) +histogram_quantile(0.90, sum by (le, rpc_method) (rate(rpc_client_duration_milliseconds_bucket{rpc_service="enterpriseportal.broadcastmessages.v1.BroadcastMessagesService",rpc_method=~"${broadcast_messages_v1_method:regex}",job=~"${caller:regex}",rpc_connect_rpc_error_code!=""}[2m]))) ```
-#### entitlements-usage-history: entitlements_usage_history_telemetry_batch_size +#### metering: broadcast_messages_v1_connect_request_rate_per_method -

Number of entitlement usage history events exported per batch over 30m

+

Connect request rate per method over 5m

-The number of entitlement usage history events exported in each batch. The largest bucket is the maximum number of events exported per batch. -If the distribution trends to the maximum bucket, export throughput is at or approaching saturation. +Rate of outbound Connect calls to enterpriseportal.broadcastmessages.v1.BroadcastMessagesService, per method, over a 5 minute window. This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/entitlements-usage-history/entitlements-usage-history?viewPanel=100001` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/metering/metering?viewPanel=100820` on your Sourcegraph instance. *Managed by the Sourcegraph Services team.* @@ -35126,21 +35428,21 @@ To see this panel, visit `/-/debug/grafana/d/entitlements-usage-history/entitlem Query: ``` -sum by (le) (rate(src_entitlementstelemetry_usage_history_batch_size_bucket[30m])) +sum by (rpc_method) (rate(rpc_client_duration_milliseconds_count{rpc_service="enterpriseportal.broadcastmessages.v1.BroadcastMessagesService",rpc_method=~"${broadcast_messages_v1_method:regex}",job=~"${caller:regex}"}[5m])) ```
-#### entitlements-usage-history: entitlements_usage_history_telemetry_pruned_events +#### metering: broadcast_messages_v1_connect_error_rate_per_method -

Entitlement usage history events pruned per hour

+

Connect error percentage per method over 2m

-The number of already-exported entitlement usage history events pruned over the last hour. +Percentage of outbound Connect calls to enterpriseportal.broadcastmessages.v1.BroadcastMessagesService that returned a non-OK code, per method. This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/entitlements-usage-history/entitlements-usage-history?viewPanel=100010` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/metering/metering?viewPanel=100830` on your Sourcegraph instance. *Managed by the Sourcegraph Services team.* @@ -35150,21 +35452,21 @@ To see this panel, visit `/-/debug/grafana/d/entitlements-usage-history/entitlem Query: ``` -sum(increase(src_entitlementstelemetry_usage_history_events_pruned[1h])) +(100 * sum by (rpc_method) (rate(rpc_client_duration_milliseconds_count{rpc_service="enterpriseportal.broadcastmessages.v1.BroadcastMessagesService",rpc_method=~"${broadcast_messages_v1_method:regex}",job=~"${caller:regex}",rpc_connect_rpc_error_code!=""}[2m]))) / sum by (rpc_method) (rate(rpc_client_duration_milliseconds_count{rpc_service="enterpriseportal.broadcastmessages.v1.BroadcastMessagesService",rpc_method=~"${broadcast_messages_v1_method:regex}",job=~"${caller:regex}"}[2m])) ```
-#### entitlements-usage-history: entitlements_usage_history_telemetry_queue_size +#### metering: broadcast_messages_v1_connect_error_rate_per_method_by_code -

Entitlement usage history events pending telemetry export

+

Connect error request rate per method and code over 2m

-The number of entitlement usage history events waiting to be exported as telemetry. +Rate of failing outbound Connect calls to enterpriseportal.broadcastmessages.v1.BroadcastMessagesService, broken down by method and connect error code. This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/entitlements-usage-history/entitlements-usage-history?viewPanel=100011` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/metering/metering?viewPanel=100831` on your Sourcegraph instance. *Managed by the Sourcegraph Services team.* @@ -35174,35 +35476,21 @@ To see this panel, visit `/-/debug/grafana/d/entitlements-usage-history/entitlem Query: ``` -( - sum( - src_entitlementstelemetry_usage_history_queue_size - and on(instance, job) - ( - ( - increase(src_entitlementstelemetry_usage_history_queue_metrics_total{job=~"^worker.*"}[15m]) > 0 - ) - or on(instance, job) - ( - increase(src_entitlementstelemetry_usage_history_queue_metrics_errors_total{job=~"^worker.*"}[15m]) > 0 - ) - ) - ) - ) or on() vector(0) +label_replace(sum by (rpc_method, rpc_connect_rpc_error_code) (rate(rpc_client_duration_milliseconds_count{rpc_service="enterpriseportal.broadcastmessages.v1.BroadcastMessagesService",rpc_method=~"${broadcast_messages_v1_method:regex}",job=~"${caller:regex}",rpc_connect_rpc_error_code!=""}[2m])), "rpc_connect_rpc_error_code", "ok", "rpc_connect_rpc_error_code", "") ```
-#### entitlements-usage-history: entitlements_usage_history_telemetry_queue_oldest_age +#### metering: broadcast_messages_v1_connect_response_code_distribution -

Age of the oldest unexported entitlement usage history event

+

Connect response code distribution per method over 2m

-The age in seconds of the oldest entitlement usage history event waiting to be exported as telemetry. +Rate of outbound Connect calls to enterpriseportal.broadcastmessages.v1.BroadcastMessagesService per method, broken down by rpc_connect_rpc_error_code. Successful calls (which carry no error-code attribute) are normalized to "ok". This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/entitlements-usage-history/entitlements-usage-history?viewPanel=100020` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/metering/metering?viewPanel=100840` on your Sourcegraph instance. *Managed by the Sourcegraph Services team.* @@ -35212,21 +35500,7 @@ To see this panel, visit `/-/debug/grafana/d/entitlements-usage-history/entitlem Query: ``` -( - max( - src_entitlementstelemetry_usage_history_queue_oldest_age_seconds - and on(instance, job) - ( - ( - increase(src_entitlementstelemetry_usage_history_queue_metrics_total{job=~"^worker.*"}[15m]) > 0 - ) - or on(instance, job) - ( - increase(src_entitlementstelemetry_usage_history_queue_metrics_errors_total{job=~"^worker.*"}[15m]) > 0 - ) - ) - ) - ) or on() vector(0) +label_replace(sum by (rpc_method, rpc_connect_rpc_error_code) (rate(rpc_client_duration_milliseconds_count{rpc_service="enterpriseportal.broadcastmessages.v1.BroadcastMessagesService",rpc_method=~"${broadcast_messages_v1_method:regex}",job=~"${caller:regex}"}[2m])), "rpc_connect_rpc_error_code", "ok", "rpc_connect_rpc_error_code", "") ``` @@ -35692,6 +35966,134 @@ sum by (code)(irate(src_http_request_duration_seconds_count{route=~"^cody.comple
+## Agent tool calls + +

Shared tool execution across MCP, Deep Search, Batch Change Agents, and other agent workloads.

+ +To see this dashboard, visit `/-/debug/grafana/d/agent-tools/agent-tools` on your Sourcegraph instance. + +### Agent tool calls: Tool calls + +#### agent-tools: agent_tool_call_rate + +

Tool calls per minute by workload, tool, and terminal status

+ +Actual executions of registered agent tools. Workload identifies the product entrypoint; status distinguishes successful calls, errors, Sourcegraph-observed timeouts, and cancellations. + +This panel has no related alerts. + +To see this panel, visit `/-/debug/grafana/d/agent-tools/agent-tools?viewPanel=100000` on your Sourcegraph instance. + +*Managed by the Sourcegraph Code Understanding team.* + +
+Technical details + +Query: + +``` +sum by (workload, tool, status) (rate(src_agent_tool_calls_total{workload=~"$workload",tool=~"$tool"}[5m])) * 60 +``` +
+ +
+ +#### agent-tools: agent_tool_non_success_rate + +

Percentage of tool calls not completing successfully over 5m by workload and tool

+ +Share of each workload and tool`s calls ending in error, timeout, or cancellation. Compare the same tool across workloads to separate tool behavior from entrypoint-specific behavior. + +This panel has no related alerts. + +To see this panel, visit `/-/debug/grafana/d/agent-tools/agent-tools?viewPanel=100001` on your Sourcegraph instance. + +*Managed by the Sourcegraph Code Understanding team.* + +
+Technical details + +Query: + +``` +sum by (workload, tool) (rate(src_agent_tool_calls_total{workload=~"$workload",tool=~"$tool",status!="success"}[5m])) / sum by (workload, tool) (rate(src_agent_tool_calls_total{workload=~"$workload",tool=~"$tool"}[5m])) * 100 +``` +
+ +
+ +#### agent-tools: agent_tool_p50_duration + +

Median tool call duration over 5m by workload, tool, and terminal status

+ +Typical execution time. The shared histogram has fine sub-second buckets for normally fast tools and extends through 20 minutes for intentionally slow tools. + +This panel has no related alerts. + +To see this panel, visit `/-/debug/grafana/d/agent-tools/agent-tools?viewPanel=100010` on your Sourcegraph instance. + +*Managed by the Sourcegraph Code Understanding team.* + +
+Technical details + +Query: + +``` +histogram_quantile(0.50, sum by (le, workload, tool, status) (rate(src_agent_tool_call_duration_seconds_bucket{workload=~"$workload",tool=~"$tool"}[5m]))) +``` +
+ +
+ +#### agent-tools: agent_tool_p95_duration + +

95th percentile tool call duration over 5m by workload, tool, and terminal status

+ +Tail execution time. Buckets at 29s, 30s, 31s, 45s, 60s, 90s, and 120s expose common timeout boundaries, while longer buckets cover Deep Search and wait-style tools. + +This panel has no related alerts. + +To see this panel, visit `/-/debug/grafana/d/agent-tools/agent-tools?viewPanel=100011` on your Sourcegraph instance. + +*Managed by the Sourcegraph Code Understanding team.* + +
+Technical details + +Query: + +``` +histogram_quantile(0.95, sum by (le, workload, tool, status) (rate(src_agent_tool_call_duration_seconds_bucket{workload=~"$workload",tool=~"$tool"}[5m]))) +``` +
+ +
+ +#### agent-tools: agent_tool_timeout_and_cancellation_count + +

Tool calls timing out or being canceled every 5m

+ +Raw timeout and cancellation counts. A sharp duration boundary in canceled calls usually indicates a client or upstream deadline; timeout means the tool returned or observed a deadline exceeded error. + +This panel has no related alerts. + +To see this panel, visit `/-/debug/grafana/d/agent-tools/agent-tools?viewPanel=100020` on your Sourcegraph instance. + +*Managed by the Sourcegraph Code Understanding team.* + +
+Technical details + +Query: + +``` +sum by (workload, tool, status) (increase(src_agent_tool_calls_total{workload=~"$workload",tool=~"$tool",status=~"timeout|canceled"}[5m])) +``` +
+ +
+ ## Deep Search

Monitoring for Deep Search question processing.

@@ -36016,15 +36418,39 @@ sum by (outcome) (increase(src_deepsearch_question_outcome_total{billable="true"
+#### deepsearch: deepsearch_response_truncated_no_answer + +

Truncated questions with no answer produced over 15m

+ +Number of deep search questions that hit the output token limit before producing any answer text in the last 15 minutes. Affected users received nothing, so this is the class that indicates a model or prompt regression rather than an oversized user request. + +Refer to the [alerts reference](alerts#deepsearch-deepsearch_response_truncated_no_answer) for 1 alert related to this panel. + +To see this panel, visit `/-/debug/grafana/d/deepsearch/deepsearch?viewPanel=100220` on your Sourcegraph instance. + +*Managed by the Sourcegraph Code Understanding team.* + +
+Technical details + +Query: + +``` +sum(increase(src_deepsearch_question_outcome_total{outcome="response_truncated_no_answer"}[15m])) +``` +
+ +
+ #### deepsearch: deepsearch_response_truncated

Response truncated questions over 15m

-Number of deep search questions where the response was truncated due to hitting the output token limit in the last 15 minutes. +Number of deep search questions where the answer was cut off after usable text had already been produced, in the last 15 minutes. These users received an answer and can continue it with a follow-up question, so this is intentionally not alerted on: it tracks users requesting extremely large outputs. Review it on a schedule rather than in response to a page. Questions where no answer was produced at all are counted by `deepsearch_response_truncated_no_answer` instead. -Refer to the [alerts reference](alerts#deepsearch-deepsearch_response_truncated) for 2 alerts related to this panel. +This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/deepsearch/deepsearch?viewPanel=100220` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/deepsearch/deepsearch?viewPanel=100221` on your Sourcegraph instance. *Managed by the Sourcegraph Code Understanding team.* @@ -36048,7 +36474,7 @@ Number of deep search questions that exceeded the conversation token limit in th This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/deepsearch/deepsearch?viewPanel=100221` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/deepsearch/deepsearch?viewPanel=100222` on your Sourcegraph instance. *Managed by the Sourcegraph Code Understanding team.* @@ -38622,4 +39048,4 @@ sum by (domain) (idelta(src_workerutil_queue_depth[10m])) / 600 ``` -
+
\ No newline at end of file From a543b1dd232018a6b6787376e84b1ebc82fc5ecc Mon Sep 17 00:00:00 2001 From: Robert Lin Date: Tue, 25 Aug 2026 17:45:42 -0700 Subject: [PATCH 166/217] docs: Simplify inner-loop Agentic Batch Changes coding agent docs (#1841) --- docs/agentic-batch-changes/index.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/agentic-batch-changes/index.mdx b/docs/agentic-batch-changes/index.mdx index f8d71f282..54c12860b 100644 --- a/docs/agentic-batch-changes/index.mdx +++ b/docs/agentic-batch-changes/index.mdx @@ -77,7 +77,7 @@ Within a coding agent step, the agent has: We currently support [Claude Code](https://claude.com/product/claude-code) and [Codex](https://openai.com/codex) as native coding agent steps. -By default, coding agent LLM traffic is routed through the [Sourcegraph Model Provider](/model-provider). Site administrators can configure their own API keys to route traffic directly to Anthropic or OpenAI in **Administration → Batch Changes → Agents**. An optional `endpoint` field can be set for each agent to override the default provider URL. +By default, coding agent LLM traffic is routed through the [Sourcegraph Model Provider](/model-provider). Note that Agentic Batch Changes does not use coding agent steps for every task. For deterministic changes, the agent will opt to write a script - or even an entire program - to efficiently apply some, or all, of the target changes. From 1163d8c40960a41de40216ba791923256b4154a5 Mon Sep 17 00:00:00 2001 From: Robert Lin Date: Wed, 26 Aug 2026 16:29:00 -0700 Subject: [PATCH 167/217] docs: document RBAC credit usage controls (#1843) ## Summary - document RBAC as an alternative or complement to entitlements for credit-consuming features - separate Deep Search credit consumption from usage management guidance - link directly to the RBAC access control documentation ## Test plan - `./node_modules/.bin/prettier --check docs/deep-search/index.mdx docs/beta-and-experimental/index.mdx` - `node dev/check-links.mjs` - `git diff --check` --- docs/beta-and-experimental/index.mdx | 2 +- docs/deep-search/index.mdx | 18 +++++++----------- 2 files changed, 8 insertions(+), 12 deletions(-) diff --git a/docs/beta-and-experimental/index.mdx b/docs/beta-and-experimental/index.mdx index a83bdb39c..36101e238 100644 --- a/docs/beta-and-experimental/index.mdx +++ b/docs/beta-and-experimental/index.mdx @@ -54,6 +54,6 @@ Billing depends on the feature. - Some **Experimental** and **Beta** features, when they graduate to general availability (GA), may be billable with credits. - Before credit consumption begins for a given feature, Sourcegraph will provide advance notice identifying the applicable credit pricing and how usage will be measured against your credit pool. - Your credit pool stays unchanged, except that any credit-billable GA features you use after receiving that notice will be billed against the pool at their then-current rates. -- Admins can [configure limits](/admin/entitlements) on the use of credit-consuming features +- Admins will be able to restrict spend via [entitlements](/admin/entitlements), [role-based access control (RBAC)](/admin/access-control), or other authoritative methods. To learn more about credits and billing, please reach out to your account manager or [support@sourcegraph.com](mailto:support@sourcegraph.com). diff --git a/docs/deep-search/index.mdx b/docs/deep-search/index.mdx index ac7ffd7d8..54a4d0971 100644 --- a/docs/deep-search/index.mdx +++ b/docs/deep-search/index.mdx @@ -134,22 +134,18 @@ Deep Search streams its responses using [Server-Sent Events (SSE)](https://en.wi If your Sourcegraph instance sits behind a reverse proxy, load balancer, or ingress controller, you must ensure the timeout for connections to Sourcegraph is set to at least **5 minutes**. The default timeout for many proxies (often 30–60 seconds) will cause in-progress Deep Search responses to be cut off prematurely. -## Managing usage - -Deep Search usage is managed on two levels: +## Credit consumption -- **Quotas**, which refers to billed Deep Search usage. These are determined by the purchased Sourcegraph subscription. -- [**Entitlements**](/admin/entitlements), which refers to administrator-controlled limits on how much Deep Search users can consume. +Deep Search consumes credits from your Sourcegraph subscription's credit balance. -### Monitoring quota consumption +Customers can request access to [Enterprise Portal](/admin/enterprise-portal#deep-search-usage-monitoring) to monitor Deep Search credit consumption. -Customers can request access to [Enterprise Portal](/admin/enterprise-portal#deep-search-usage-monitoring) to monitor usage of Deep Search quota. - -### Entitlements +## Managing usage -Sourcegraph administrators can configure entitlements for their users, for example "60 Deep Search per hour", in `/site-admin/entitlements`. +Sourcegraph administrators can manage Deep Search usage with: -To learn more, refer to [Entitlements](/admin/entitlements) and the [Deep Search entitlements changelog post](https://sourcegraph.com/changelog/deep-search-entitlements). +- [**Entitlements**](/admin/entitlements), which set how much Deep Search users can consume. For example, administrators can configure "60 Deep Search per hour" in `/site-admin/entitlements`. To learn more, refer to the [Deep Search entitlements changelog post](https://sourcegraph.com/changelog/deep-search-entitlements). +- [**Role-based access control (RBAC)**](/admin/access-control), which restricts who can use Deep Search, either alongside entitlements or instead of them. ## Integrations and APIs From 4049388c236478c4e5469109a1b57143d828521a Mon Sep 17 00:00:00 2001 From: Taras Yemets Date: Thu, 27 Aug 2026 13:22:03 +0300 Subject: [PATCH 168/217] docs/docs: Fix notice style overrides example (#1844) The notices settings example currently nests `styleOverrides` inside another `styleOverrides` object, but the settings schema expects the style fields directly inside the first object. This could lead users to copy a configuration whose overrides are ignored. Remove the duplicate nesting so the example matches the supported settings shape. --- docs/admin/config/settings.mdx | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/docs/admin/config/settings.mdx b/docs/admin/config/settings.mdx index f2de32202..a372a89b1 100644 --- a/docs/admin/config/settings.mdx +++ b/docs/admin/config/settings.mdx @@ -208,11 +208,9 @@ Notices can be added in global, organization, or user settings. The `notices` se "dismissible": true, "variant": "danger", "styleOverrides": { - "styleOverrides": { - "backgroundColor": "#7f1d1d", - "textColor": "#fecaca", - "textCentered": true - } + "backgroundColor": "#7f1d1d", + "textColor": "#fecaca", + "textCentered": true } } ] From c21a8a50f779efe00d1e4281c57dc9729706deb7 Mon Sep 17 00:00:00 2001 From: Aditi Abhang <51350594+aditiabhang@users.noreply.github.com> Date: Thu, 27 Aug 2026 11:27:47 -0400 Subject: [PATCH 169/217] Update docs latest version to 7.7 (#1845) ## Summary - Set `DOCS_LATEST_VERSION` to 7.7 - Add 7.6 to the version selector - Add 7.6 to the legacy versions page ## Test plan - `git diff --check origin/main...HEAD` - Version metadata assertions --- docs.config.js | 2 +- docs/legacy.mdx | 1 + src/data/versions.ts | 4 ++++ 3 files changed, 6 insertions(+), 1 deletion(-) diff --git a/docs.config.js b/docs.config.js index 5448b6441..5fec13fd4 100644 --- a/docs.config.js +++ b/docs.config.js @@ -1,5 +1,5 @@ const config = { - DOCS_LATEST_VERSION: '7.6' + DOCS_LATEST_VERSION: '7.7' }; module.exports = config; diff --git a/docs/legacy.mdx b/docs/legacy.mdx index 06a66177c..623c04aa1 100644 --- a/docs/legacy.mdx +++ b/docs/legacy.mdx @@ -6,6 +6,7 @@ +- [7.6](https://7.6.sourcegraph.com) - [7.5](https://7.5.sourcegraph.com) - [7.4](https://7.4.sourcegraph.com) - [7.3](https://7.3.sourcegraph.com) diff --git a/src/data/versions.ts b/src/data/versions.ts index c026e0ac4..c8ae90f08 100644 --- a/src/data/versions.ts +++ b/src/data/versions.ts @@ -13,6 +13,10 @@ export const versions: VersionI[] = [ label: 'latest', url: '/docs' }, + { + name: 'v7.6', + url: 'https://7.6.sourcegraph.com' + }, { name: 'v7.5', url: 'https://7.5.sourcegraph.com' From aa45ca16d616e79d9f66273867f017d573568755 Mon Sep 17 00:00:00 2001 From: Robert Lin Date: Thu, 27 Aug 2026 12:43:16 -0700 Subject: [PATCH 170/217] docs: document API integration usage headers (#1846) ## Summary - document request headers that identify API integrations, features, and versions - explain how emitted telemetry events capture these values - link to the telemetry documentation ## Verification - cross-checked header parsing and telemetry behavior against the Sourcegraph implementation using Deep Search - `git diff --check` --- docs/api/index.mdx | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/docs/api/index.mdx b/docs/api/index.mdx index 447540eb1..f5e3ef353 100644 --- a/docs/api/index.mdx +++ b/docs/api/index.mdx @@ -30,3 +30,14 @@ For diagnostics use cases, the [Sourcegraph GraphQL debug API](/api/graphql/) is reach out at support@sourcegraph.com.

+ +## Tracking integration usage + +If you'd like our help breaking down and analyzing API usage across different integrations, include some or all of the following headers in your requests: + +- `X-Requested-With: /` — a stable identifier for the calling integration +- `X-Sourcegraph-API-Client-Name: ` — the caller's name, for example, `my-integration` +- `X-Sourcegraph-API-Client-Feature: ` — the feature or tool making the request, so that different call sites from the same integration are distinguishable +- `X-Sourcegraph-API-Client-Version: ` — the integration's build or version + +When an API request triggers a [telemetry](/admin/telemetry/) event, Sourcegraph includes the values of these headers in the event. From 94c634cbac8d576bfe55e93f5d11ab74b09277ad Mon Sep 17 00:00:00 2001 From: Kalan <51868853+kalanchan@users.noreply.github.com> Date: Mon, 31 Aug 2026 11:50:04 -0700 Subject: [PATCH 171/217] docs: document Code Finder revision parameter (#1848) ## Summary - document the optional MCP Code Finder `revision` parameter - describe accepted revisions, default behavior, and repository scoping requirement Supports sourcegraph/sourcegraph#15132. ## Validation - `node_modules/.bin/prettier --config ./prettier.config.js --check docs/api/mcp/index.mdx` - `git diff --check` --- docs/api/mcp/index.mdx | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/api/mcp/index.mdx b/docs/api/mcp/index.mdx index 88cc1635b..32ecd48d4 100644 --- a/docs/api/mcp/index.mdx +++ b/docs/api/mcp/index.mdx @@ -342,6 +342,7 @@ Code Finder usage is metered against your instance's entitlement. When the quota **Parameters:** - `task` - The task or query to research and answer (required) +- `revision` - Branch, tag, or commit to search (optional; defaults to the repository's default branch). When set, `task` must identify a repository. **Use cases:** Locating the files and line ranges relevant to a task before making changes, finding where a feature is implemented, gathering focused context for an AI agent From 7611c48a9e77b88fb3501cd1466c1948ee196523 Mon Sep 17 00:00:00 2001 From: Scott Ellison II Date: Mon, 31 Aug 2026 13:11:11 -0600 Subject: [PATCH 172/217] Keep version selectors current across legacy docs (#1847) ## Summary - expose the canonical `src/data/versions.ts` list at `/docs/api/versions` with CORS and short shared caching - load and validate that manifest in the current selector while retaining the bundled list as a fallback - distinguish the current page with an accessible `selected` badge and keep long menus scrollable - document the manifest and fallback behavior in the version-publishing skill The companion `docs-legacy-versions` PRs depend on this endpoint being deployed first. ## Test plan - `npx --yes pnpm@10.25.0 run build` - browser-verified the canonical response and selector states in the local production build Co-authored-by: Amp --- .../skills/publishing-docs-versions/SKILL.md | 20 +++- src/app/api/versions/route.ts | 19 +++ src/components/VersionSelector.tsx | 111 +++++++++++++----- 3 files changed, 118 insertions(+), 32 deletions(-) create mode 100644 src/app/api/versions/route.ts diff --git a/.agents/skills/publishing-docs-versions/SKILL.md b/.agents/skills/publishing-docs-versions/SKILL.md index 6dbd3abb9..55a5a7ac4 100644 --- a/.agents/skills/publishing-docs-versions/SKILL.md +++ b/.agents/skills/publishing-docs-versions/SKILL.md @@ -19,13 +19,19 @@ Use this skill for the Sourcegraph docs repo release-version workflow: cutting l - `docs.config.js` - `src/data/versions.ts` - `docs/legacy.mdx` +- `src/data/versions.ts` on `origin/main` is the canonical dropdown list. The + current site exposes it through `/docs/api/versions`, and legacy selectors + load that manifest at runtime. +- A legacy branch's bundled `src/data/versions.ts` is only a fallback. Its first + entry identifies the archived site and must not have the `latest` label. ## Standard workflow for a new release For a new release `X.Y`: 1. Archive the previous docs version `P.Q` in the `legacy` remote. -2. Ensure the legacy branch’s own config says it is version `P.Q` and lists older versions only. +2. Ensure the legacy branch’s own config says it is version `P.Q`, marks it as + selected rather than latest, and lists older fallback versions only. 3. Update `origin` so `X.Y` is latest and `P.Q` appears as a previous version. Example: when 7.4 is released, archive 7.3 as `legacy/v7_3`, then update `origin` with `DOCS_LATEST_VERSION: '7.4'` and add 7.3 to previous-version lists. @@ -63,12 +69,15 @@ git commit --allow-empty -m "Branch for docs version X.Y" git push -u legacy vX_Y ``` -Then update the legacy branch so it identifies itself as `X.Y` and lists only older versions. +Then update the legacy branch so it identifies itself as `X.Y` and lists only +older fallback versions. The runtime manifest supplies the current canonical +list when the current docs site is available. For `v7_3`, for example: - `docs.config.js`: `DOCS_LATEST_VERSION: '7.3'` -- `src/data/versions.ts`: first entry remains `latest`; previous entries should include `v7.2`, `v7.1`, `v7.0`, then 6.x. +- `src/data/versions.ts`: first entry identifies `v7.3` without a `latest` + label; fallback entries should include `v7.2`, `v7.1`, `v7.0`, then 6.x. - `docs/legacy.mdx`: `Sourcegraph 7.X` should include `7.2`, `7.1`, `7.0` (not 7.3 itself). Commit and push: @@ -125,6 +134,9 @@ git ls-remote --heads legacy 'v7_*' Confirm: - The legacy branch points to the pushed commit. -- The legacy branch lists only older previous versions. +- The legacy branch identifies itself without claiming to be latest and lists + only older fallback versions. - The origin PR branch sets the new latest version and includes the archived version in previous-version lists. +- The current manifest lists the new latest version first, and its URL points to + `https://sourcegraph.com/docs`. - Return the local workspace to clean `main` unless the user asked to stay on a release branch. diff --git a/src/app/api/versions/route.ts b/src/app/api/versions/route.ts new file mode 100644 index 000000000..1d059b75b --- /dev/null +++ b/src/app/api/versions/route.ts @@ -0,0 +1,19 @@ +import {versions} from '@/data/versions'; +import {NextResponse} from 'next/server'; + +export function GET() { + return NextResponse.json( + versions.map((version, index) => + index === 0 + ? {...version, url: 'https://sourcegraph.com/docs'} + : version + ), + { + headers: { + 'Access-Control-Allow-Origin': '*', + 'Cache-Control': + 'public, max-age=0, s-maxage=300, stale-while-revalidate=60' + } + } + ); +} diff --git a/src/components/VersionSelector.tsx b/src/components/VersionSelector.tsx index 5194c774e..90b34b93c 100644 --- a/src/components/VersionSelector.tsx +++ b/src/components/VersionSelector.tsx @@ -2,37 +2,78 @@ import {VersionI, versions} from '@/data/versions'; import {Menu, Transition} from '@headlessui/react'; -import {ArrowUpRightIcon, ChevronDownIcon} from '@heroicons/react/20/solid'; +import { + ArrowUpRightIcon, + CheckIcon, + ChevronDownIcon +} from '@heroicons/react/20/solid'; import clsx from 'clsx'; import Link from 'next/link'; import {usePathname} from 'next/navigation'; import {Fragment, useEffect, useState} from 'react'; +const versionsUrl = + process.env.NEXT_PUBLIC_DOCS_VERSIONS_URL ?? + 'https://sourcegraph.com/docs/api/versions'; + +function isVersion(value: unknown): value is VersionI { + if (typeof value !== 'object' || value === null) return false; + + const version = value as Partial; + return ( + typeof version.name === 'string' && + typeof version.url === 'string' && + (version.label === undefined || typeof version.label === 'string') + ); +} + export default function VersionSelector() { const path = usePathname(); + const [availableVersions, setAvailableVersions] = + useState(versions); - const [selectedVersion, setSelectedVersion] = useState( - versions[0] - ); + const segments = path.split('/'); + const versionIndex = segments.findIndex(segment => segment === 'v'); + const versionName = versionIndex >= 0 && segments[versionIndex + 1]; + const selectedVersionName = versionName + ? `v${versionName}` + : versions[0].name; + const selectedVersion = + availableVersions.find( + version => version.name === selectedVersionName + ) ?? versions[0]; useEffect(() => { - // Extract the version name from the URL path, if any - const segments = path.split('/'); - const versionIndex = segments.findIndex(segment => segment === 'v'); - // Versioned link example: - // docs/v/5.1.2/ where versionName = 5.1.2 - const versionName = versionIndex >= 0 && segments[versionIndex + 1]; - if (!versionName) { - setSelectedVersion(versions[0]); - return; - } + const controller = new AbortController(); + + void fetch(versionsUrl, {signal: controller.signal}) + .then(response => (response.ok ? response.json() : null)) + .then((remoteVersions: unknown) => { + if ( + !Array.isArray(remoteVersions) || + remoteVersions.length === 0 || + !remoteVersions.every(isVersion) + ) { + return; + } + + setAvailableVersions( + remoteVersions.some( + version => version.name === versions[0].name + ) + ? remoteVersions + : [ + ...remoteVersions, + {...versions[0], label: undefined} + ] + ); + }) + .catch(() => { + // Keep this build's version list if the current site is unavailable. + }); - // If version exists, select it - const matchedVersion = versions.find(version => - version.url.includes(versionName) - ); - if (matchedVersion) setSelectedVersion(matchedVersion); - }, [path]); + return () => controller.abort(); + }, []); return ( @@ -41,7 +82,9 @@ export default function VersionSelector() { className="inline-flex w-full items-center justify-center gap-x-1.5 rounded-md px-2 py-2 text-xs font-medium text-slate-500 shadow-sm ring-1 ring-inset ring-light-border-2 hover:bg-vermilion-08 hover:text-vermilion-11 dark:bg-dark-bg-2 dark:text-dark-paragraph-text dark:ring-inset dark:ring-dark-border" > - {selectedVersion.label === 'latest' ? 'Latest' : selectedVersion.name} + {selectedVersion.label === 'latest' + ? 'Latest' + : selectedVersion.name}
); diff --git a/src/app/providers.tsx b/src/app/providers.tsx index 652506092..65e874b09 100644 --- a/src/app/providers.tsx +++ b/src/app/providers.tsx @@ -1,5 +1,6 @@ 'use client'; +import {PreviousPathnameProvider} from '@/components/PreviousPathname'; import {ThemeProvider, useTheme} from 'next-themes'; import {useEffect} from 'react'; @@ -31,7 +32,7 @@ export function Providers({children}: {children: React.ReactNode}) { return ( - {children} + {children} ); } diff --git a/src/components/NotFoundLinks.tsx b/src/components/NotFoundLinks.tsx new file mode 100644 index 000000000..fefe9f714 --- /dev/null +++ b/src/components/NotFoundLinks.tsx @@ -0,0 +1,89 @@ +'use client'; + +import {usePreviousPathname} from '@/components/PreviousPathname'; +import Link from 'next/link'; +import {usePathname} from 'next/navigation'; +import {useEffect, useMemo, useState} from 'react'; + +const linkClassName = + 'text-sm font-medium text-slate-900 hover:underline dark:text-white'; + +// Closest ancestor of `pathname` that is a real docs page, excluding the root +// (the home link always covers that). +function nearestExistingAncestor( + pathname: string, + pagePaths: Set +): string | null { + const segments = pathname.split('/').filter(Boolean); + for (let depth = segments.length - 1; depth > 0; depth--) { + const candidate = `/${segments.slice(0, depth).join('/')}`; + if (pagePaths.has(candidate)) return candidate; + } + return null; +} + +// The page the user came from on a fresh page load, only when it is on this +// site. document.referrer does not change on client-side navigations, so +// those are covered by usePreviousPathname instead. +function sameOriginReferrer(): URL | null { + if (!document.referrer) return null; + const referrer = new URL(document.referrer); + return referrer.origin === window.location.origin ? referrer : null; +} + +export function NotFoundLinks({pagePaths}: {pagePaths: string[]}) { + const pathname = usePathname(); + const previousPathname = usePreviousPathname(); + const [ancestor, setAncestor] = useState(null); + const [referrer, setReferrer] = useState(null); + const pagePathSet = useMemo(() => new Set(pagePaths), [pagePaths]); + + // Both values depend on the browser URL, which the statically prerendered + // 404 page does not know, so resolve them after mount to avoid a hydration + // mismatch. + useEffect(() => { + setAncestor(nearestExistingAncestor(pathname, pagePathSet)); + setReferrer(sameOriginReferrer()); + }, [pathname, pagePathSet]); + + // The previous pathname may itself have been a 404. + const previousPage = + previousPathname && pagePathSet.has(previousPathname) + ? previousPathname + : null; + + // Prefer the in-app history over document.referrer, which goes stale on + // client-side navigations. + const backLink = previousPage + ? {href: previousPage, pathname: previousPage} + : referrer + ? { + href: referrer.pathname + referrer.search + referrer.hash, + pathname: referrer.pathname + } + : null; + + // Skip the up link when it would repeat the back link. + const upLink = + ancestor && ancestor !== backLink?.pathname.replace(/\/$/, '') + ? ancestor + : null; + + return ( +
+ {backLink && ( + + Go back to {backLink.pathname} + + )} + {upLink && ( + + Go up to {upLink} + + )} + + Go back home + +
+ ); +} diff --git a/src/components/PreviousPathname.tsx b/src/components/PreviousPathname.tsx new file mode 100644 index 000000000..f74852a90 --- /dev/null +++ b/src/components/PreviousPathname.tsx @@ -0,0 +1,66 @@ +'use client'; + +import {usePathname} from 'next/navigation'; +import {createContext, useContext, useEffect, useState} from 'react'; + +const PreviousPathnameContext = createContext(null); + +interface Visited { + current: string; + previous: string | null; +} + +// Kept in sessionStorage (per tab) so it survives full page loads, e.g. when +// the user edits the URL bar, which sends no referrer. +const storageKey = 'docs.visitedPathnames'; + +function readVisited(): Visited | null { + try { + const raw = window.sessionStorage.getItem(storageKey); + return raw ? (JSON.parse(raw) as Visited) : null; + } catch { + return null; + } +} + +function writeVisited(visited: Visited) { + try { + window.sessionStorage.setItem(storageKey, JSON.stringify(visited)); + } catch { + // Storage unavailable; the in-memory value still covers client-side navigations. + } +} + +// Remembers the pathname the user was on before the current one, so the 404 +// page can link back to the page whose link was broken. Lives in the root +// layout, which React keeps mounted across client-side navigations. Null when +// this tab has not visited another docs page. +export function PreviousPathnameProvider({ + children +}: { + children: React.ReactNode; +}) { + const pathname = usePathname(); + const [visited, setVisited] = useState({ + current: pathname, + previous: null + }); + + useEffect(() => { + const stored = readVisited() ?? {current: pathname, previous: null}; + const next = + stored.current === pathname + ? stored + : {current: pathname, previous: stored.current}; + writeVisited(next); + setVisited(next); + }, [pathname]); + + return ( + + {children} + + ); +} + +export const usePreviousPathname = () => useContext(PreviousPathnameContext); From 0e0feac23ecfb7f89fb933986ffc9f361edee013 Mon Sep 17 00:00:00 2001 From: Marc <7050295+marcleblanc2@users.noreply.github.com> Date: Thu, 10 Sep 2026 19:27:49 -0600 Subject: [PATCH 193/217] docs/observability: Remove stale log15 examples (#1884) Sourcegraph replaced \`inconshreveable/log15\` with [sourcegraph/log](https://github.com/sourcegraph/log) years ago, so nothing prints \`lvl=eror\` anymore. Three docs still show it. - **\`self-hosted/observability/logs.mdx\`**: list the canonical \`SRC_LOG_LEVEL\` values (\`debug\`, \`info\`, \`warn\`, \`error\`, \`none\`) per [levels.go](https://github.com/sourcegraph/log/blob/main/levels.go), and note that unknown values fall back to \`warn\`. The legacy \`dbug\`/\`eror\`/\`crit\` spellings are still accepted by the code but are no longer documented. - **\`self-hosted/observability/troubleshooting.mdx\`**: drop the 2020 log15 sample line. The \`syncer.sync.store.upsert-repos\` error string no longer exists either; keep the scenario and describe the \`driver: bad connection\` symptom in prose. - **\`admin/auth/index.mdx\`**: the \`Invalid Authorization header\` log15 error is gone. Per [\`cmd/frontend/internal/auth/accesstoken/auth.go\`](https://github.com/sourcegraph/sourcegraph/blob/main/cmd/frontend/internal/auth/accesstoken/auth.go), an unrecognized \`Authorization\` scheme is now ignored and recorded as an \`auth.accessToken\` / \`failed\` audit log entry with \`reason: "invalid Authorization header"\`. ## Amp threads - [Cspell word list review](https://ampcode.com/threads/T-01a082f4-e864-769b-8269-46847abcd228) --------- Co-authored-by: Amp --- docs/admin/auth/index.mdx | 2 +- docs/self-hosted/observability/logs.mdx | 8 +++++--- docs/self-hosted/observability/troubleshooting.mdx | 8 +------- 3 files changed, 7 insertions(+), 11 deletions(-) diff --git a/docs/admin/auth/index.mdx b/docs/admin/auth/index.mdx index 3b9f73667..1bcd330cd 100644 --- a/docs/admin/auth/index.mdx +++ b/docs/admin/auth/index.mdx @@ -517,7 +517,7 @@ To use an authentication proxy to authenticate users to Sourcegraph, add the fol Replace `X-Forwarded-User` with the name of the HTTP header added by the authentication proxy that contains the user's username. -Ensure that the HTTP proxy is not setting its own `Authorization` header on the request. Sourcegraph rejects requests with unrecognized `Authorization` headers and prints the error log `lvl=eror msg="Invalid Authorization header." err="unrecognized HTTP Authorization request header scheme (supported values: token, token-sudo)"`. +Ensure that the HTTP proxy is not setting its own `Authorization` header on the request. Sourcegraph ignores `Authorization` headers with an unrecognized scheme (anything other than `token`, `token-sudo`, or `Bearer`), and records an [audit log](/admin/audit-log) entry for the `auth.accessToken` entity with `action: "failed"` and `reason: "invalid Authorization header"`. For pusher/oauth2_proxy, use the `-pass-basic-auth false` option to prevent it from sending the `Authorization` header. diff --git a/docs/self-hosted/observability/logs.mdx b/docs/self-hosted/observability/logs.mdx index 810075df5..6e5302963 100644 --- a/docs/self-hosted/observability/logs.mdx +++ b/docs/self-hosted/observability/logs.mdx @@ -8,11 +8,13 @@ Note: For request logs, see [Outbound request log](/admin/outbound-request-log). A Sourcegraph service's log level is configured via the environment variable `SRC_LOG_LEVEL`. The valid values (from most to least verbose) are: -- `dbug`: Debug. Output all logs. Default in cluster deployments. +- `debug`: Output all logs. Default in cluster deployments. - `info`: Informational. - `warn`: Warning. Default in Docker deployments. -- `eror`: Error. -- `crit`: Critical. +- `error`: Errors only. +- `none`: Silence all log output. + +Unrecognized values fall back to `warn`. Learn more about how to apply these environment variables in [docker-compose](/self-hosted/deploy/docker-compose/#set-environment-variables) deployments. diff --git a/docs/self-hosted/observability/troubleshooting.mdx b/docs/self-hosted/observability/troubleshooting.mdx index 4b0fa957b..f990ceaab 100644 --- a/docs/self-hosted/observability/troubleshooting.mdx +++ b/docs/self-hosted/observability/troubleshooting.mdx @@ -41,13 +41,7 @@ environment. Observed state: Sourcegraph instance does not react to any updates to code hosts and no cloning is happening. The cause of this state could be worker queries that are too large for the limits of the running Postgres DB. -One symptom is seeing a line like the one below in the worker logs: - -```text -t=2020-05-28T18:41:02+0000 lvl=eror msg=Syncer error="syncer.sync.store.upsert-repos: delete: driver: bad connection -``` - -or seeing the same error in the "Code host status panel" (Clicking the cloud icon). +One symptom is seeing repo syncer errors ending in `driver: bad connection` in the worker logs, or the same error in the "Code host status panel" (Clicking the cloud icon). The fix is to increase the memory on Postgres DB which will increase certain Postgres-internal limits and will allow the queries from worker to go through. From 01c1baaf728d5f95e4dc134f4016453cfebe8e49 Mon Sep 17 00:00:00 2001 From: Marc <7050295+marcleblanc2@users.noreply.github.com> Date: Thu, 10 Sep 2026 19:36:57 -0600 Subject: [PATCH 194/217] ci/links: Add PR check for broken links (#1858) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Linear [FE-499: Fix doc site issues](https://linear.app/sourcegraph/issue/FE-499/fix-doc-site-issues) ## Problem - Our docs site has hundreds of broken links - `dev/check-links.mjs` finds broken internal links and anchors, but it isn't run automatically, so PRs can easily break links (renaming a heading, moving or deleting a page) without anyone noticing ## Solution - Updated the script to also work as a PR check, with additional functions beyond what's run when used as a CI test in Vercel builds - PR check to run the script and report if the PR breaks links - It runs the script (with `--check-anchors`) on both the PR head and its merge base, and diffs the findings - This catches both directions: - **Outbound**: a changed page links to a page or `#heading` that doesn't exist - **Inbound**: the PR renames a heading or removes/moves a page that other, unchanged pages link to — those show up as findings in files the PR didn't touch - Pre-existing broken links are ignored by the PR check - The comment is created / updated in place, and once the PR is fixed, the PR check passes and the comment is updated to say so - A PR that never broke anything gets no comment ## Verification PR check comment in test PR: https://github.com/sourcegraph/docs/pull/1895#issuecomment-5611164928 ### Broken links found Screenshot 2026-09-09 at 20 05 31 ### Broken links fixed Screenshot 2026-09-09 at 20 06 31 ## Absolute self-links and external links - Absolute links to this site (`https://sourcegraph.com/docs/…`, `http://…`, `//…`, `www.`, the legacy `https://docs.sourcegraph.com/…`) fail the check even when the target exists: they leave the Vercel preview and local dev, and hide moved pages behind redirects. The finding names the relative link, following `src/data/redirects.ts` when the page moved. Version-pinned links (`/@5.1/…`) stay external - External links on lines this PR added are requested (HEAD, then GET on an error status, following redirects); only 404 and 410 are findings, so rate limits, bot blocks, 5xx and network errors never fail a PR. Placeholder hosts (`*.example.com`, `localhost`, templated ``) are skipped - Findings with a fix become one suggested-change review comment per line, which the author can apply from the PR. Suggestions already on the PR are not posted again - #1899 clears the 67 existing absolute self-links so this check starts from zero Test PR: #1900 (report comment + one review suggestion; the `#sampling` anchor deliberately does not exist, so that link gets no suggestion; a second run posted nothing new) ## Related - Draft PR #1562 proposes a daily Slack digest with a separate reimplementation of this script - Instead, this PR improves on the existing script, and gates PRs - PR https://github.com/sourcegraph/docs/pull/1860 enabled external link checkers to find broken links again ## Amp threads - [Broken link PR check](https://ampcode.com/threads/T-01a0753f-0f4f-7478-b36c-87466e7c0261) - [Asset case mismatch](https://ampcode.com/threads/T-01a07597-43c0-751b-8c49-6e5809e714d2) - [Docs - Fix broken heading links](https://ampcode.com/threads/T-01a07623-9d65-7356-96b8-2bebb31ffa5a) - [Self-links and external links](https://ampcode.com/threads/T-01a08a01-44c1-775b-84d0-d67ff9501905) --------- Co-authored-by: Amp --- .github/workflows/check-links.yml | 121 ++++++ AGENTS.md | 2 + dev/check-links.mjs | 601 +++++++++++++++++++++++++----- dev/verify-links-live.mjs | 130 +++++++ 4 files changed, 755 insertions(+), 99 deletions(-) create mode 100644 .github/workflows/check-links.yml create mode 100644 dev/verify-links-live.mjs diff --git a/.github/workflows/check-links.yml b/.github/workflows/check-links.yml new file mode 100644 index 000000000..e0dab4ba3 --- /dev/null +++ b/.github/workflows/check-links.yml @@ -0,0 +1,121 @@ +name: Check links + +# Reports internal links and #anchors that this PR breaks, compared with the +# merge base, absolute links to this site, and external links on added lines +# that 404. Pre-existing broken links on the base branch are ignored. + +on: + pull_request: + +# A new push supersedes the run for the previous one +concurrency: + group: ${{ github.workflow }}-${{ github.event.pull_request.number }} + cancel-in-progress: true + +permissions: + contents: read + pull-requests: write + +jobs: + check-links: + name: Broken links introduced by this PR + runs-on: ubuntu-latest + steps: + - name: Check out pull request head + uses: actions/checkout@v4 + with: + ref: ${{ github.event.pull_request.head.sha }} + fetch-depth: 0 + + - name: Install github-slugger, the only dependency of dev/check-links.mjs + # Into a scratch prefix, not the repo: `npm install ` next to + # package.json would install every dependency of the site + run: | + npm install --prefix "$RUNNER_TEMP/deps" --no-package-lock --no-audit --no-fund \ + "github-slugger@$(node -p 'require("./package.json").dependencies["github-slugger"]')" + ln -s "$RUNNER_TEMP/deps/node_modules" node_modules + + - name: Check out merge base + env: + BASE_SHA: ${{ github.event.pull_request.base.sha }} + run: | + merge_base=$(git merge-base "$BASE_SHA" HEAD) + git worktree add "$RUNNER_TEMP/base" "$merge_base" + git diff -U0 "$merge_base" HEAD > "$RUNNER_TEMP/changes.diff" + + - name: Record broken links already present on the base branch + # Exit 1 means findings, which is expected here + run: | + node dev/check-links.mjs --check-anchors --check-self-links --format json \ + --root "$RUNNER_TEMP/base" > "$RUNNER_TEMP/base-links.json" \ + || [ $? -eq 1 ] + + - name: Find broken links introduced by this PR + id: check + env: + # File links in the report open the file on the PR branch + LINK_BASE: ${{ github.event.pull_request.head.repo.html_url }}/blob/${{ github.event.pull_request.head.ref }} + run: | + if node dev/check-links.mjs --check-anchors --check-self-links --check-external --format markdown \ + --baseline "$RUNNER_TEMP/base-links.json" \ + --diff "$RUNNER_TEMP/changes.diff" \ + --review "$RUNNER_TEMP/review.json" \ + --link-base "$LINK_BASE" > "$RUNNER_TEMP/report.md"; then + echo "broken=false" >> "$GITHUB_OUTPUT" + else + echo "broken=true" >> "$GITHUB_OUTPUT" + fi + cat "$RUNNER_TEMP/report.md" + + - name: Comment on the pull request + # Fork PRs get a read-only token; the report is still in the job log + if: github.event.pull_request.head.repo.full_name == github.repository + env: + GH_TOKEN: ${{ github.token }} + PR_NUMBER: ${{ github.event.pull_request.number }} + BROKEN: ${{ steps.check.outputs.broken }} + run: | + marker='' + existing_comment=$(gh api "repos/$GITHUB_REPOSITORY/issues/$PR_NUMBER/comments" \ + --paginate --jq ".[] | select(.body | startswith(\"$marker\")) | .id" | head -n 1) + + # Comment only when there is something to report, or an earlier report to resolve + if [ "$BROKEN" = true ]; then + { echo "$marker"; cat "$RUNNER_TEMP/report.md"; } > "$RUNNER_TEMP/comment.md" + elif [ -n "$existing_comment" ]; then + printf '%s\n### ✅ The broken links an earlier revision of this PR introduced are fixed\n' \ + "$marker" > "$RUNNER_TEMP/comment.md" + else + exit 0 + fi + + if [ -n "$existing_comment" ]; then + gh api --method PATCH "repos/$GITHUB_REPOSITORY/issues/comments/$existing_comment" \ + --field body=@"$RUNNER_TEMP/comment.md" + else + gh pr comment "$PR_NUMBER" --body-file "$RUNNER_TEMP/comment.md" + fi + + - name: Suggest fixes as review comments + # One suggested change per added line with a fix. Suggestions already on + # the PR (same file, line, and text) are not posted again. + if: steps.check.outputs.broken == 'true' && github.event.pull_request.head.repo.full_name == github.repository + env: + GH_TOKEN: ${{ github.token }} + PR_NUMBER: ${{ github.event.pull_request.number }} + run: | + gh api "repos/$GITHUB_REPOSITORY/pulls/$PR_NUMBER/comments" --paginate \ + --jq '.[] | {path, line, body}' | jq -s . > "$RUNNER_TEMP/posted.json" + jq --slurpfile posted "$RUNNER_TEMP/posted.json" \ + '.comments |= map(select(. as $comment | $posted[0] | index({path: $comment.path, line: $comment.line, body: $comment.body}) | not))' \ + "$RUNNER_TEMP/review.json" > "$RUNNER_TEMP/review-new.json" + + if [ "$(jq '.comments | length' "$RUNNER_TEMP/review-new.json")" -gt 0 ]; then + gh api --method POST "repos/$GITHUB_REPOSITORY/pulls/$PR_NUMBER/reviews" \ + --input "$RUNNER_TEMP/review-new.json" > /dev/null \ + || echo "::warning::Could not post the suggested fixes; they are in the report above" + fi + + - name: Fail when this PR introduces broken links + if: steps.check.outputs.broken == 'true' + run: exit 1 diff --git a/AGENTS.md b/AGENTS.md index 9a5e9b001..e0c1083c9 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -6,6 +6,8 @@ - **Build**: `npm run build` - **Dev**: `npm run dev` - **Lint**: `npm run lint` +- **Check links**: `npm run check-links -- --check-anchors --check-self-links` (CI comments on PRs that break links; see `dev/check-links.mjs`; `next build` runs it without flags, so only dead page links fail a deploy). When moving a page or renaming a heading, update every link to it; a redirect in `src/data/redirects.ts` does not satisfy the check. Link to this site with relative paths (`/admin/config/site-config`), never `https://sourcegraph.com/docs/…` or `https://docs.sourcegraph.com/…`. To also probe the external links you added: `npm run check-links -- --check-anchors --check-self-links --check-external --diff <(git diff -U0 origin/main)` +- **Prove changed links resolve on a deploy**: `node dev/verify-links-live.mjs --site ` prints a Markdown table for the PR description ## AI Chat Integration diff --git a/dev/check-links.mjs b/dev/check-links.mjs index 2a8b24093..e37c940f7 100644 --- a/dev/check-links.mjs +++ b/dev/check-links.mjs @@ -8,106 +8,248 @@ * * Checks for: * - Broken internal links (markdown and JSX/HTML style) + * - Links whose case differs from the real path (work on macOS, 404 on Linux) * - Missing anchor/heading references * - Invalid file paths - * - * Usage: node dev/check-links.mjs [--check-anchors] + * - With --check-self-links, absolute links to this site (https://sourcegraph.com/docs/..., + * the legacy https://docs.sourcegraph.com/... host, http://, //, www.), which + * should be relative links; the finding proposes one, following src/data/redirects.ts + * - With --check-external, external links on added lines that return 404 or 410 + * + * next.config.js runs this with no flags on every build, so only dead page links + * can fail a deploy; the flags below are for the pull request workflow. + * + * Usage: node dev/check-links.mjs [options] + * --check-anchors Also validate #anchors against headings + * --check-self-links Also report absolute links to this site + * --root
Repository to check (default: this repository) + * --format Output as text (default), json, or markdown + * --baseline Only report findings absent from this JSON file + * (produced by --format json on another revision) + * --link-base Markdown output links each file path to /, + * e.g. https://github.com/sourcegraph/docs/blob/ + * --diff Unified diff of the change under review, e.g. from + * `git diff -U0 origin/main`. Markdown output splits + * findings into outbound (in a file the diff touches) and + * inbound (elsewhere); the added lines scope the two flags below + * --check-external Request every external link on an added line and report + * 404s and 410s. Follows redirects; ignores #anchors, other + * statuses, and network errors. Requires --diff + * --review Write a GitHub pull request review (JSON body for + * POST /repos/{owner}/{repo}/pulls/{n}/reviews) with one + * suggested-change comment per added line that has a fix + * + * Exits 1 when any finding is reported. */ import fs from 'fs'; import path from 'path'; -import { glob } from 'glob'; import GithubSlugger from 'github-slugger'; -import { fileURLToPath } from 'url'; +import { fileURLToPath, pathToFileURL } from 'url'; const __filename = fileURLToPath(import.meta.url); const __dirname = path.dirname(__filename); -const DOCS_DIR = path.join(path.dirname(__dirname), 'docs'); - // Parse CLI flags const args = process.argv.slice(2); const CHECK_ANCHORS = args.includes('--check-anchors'); +const CHECK_SELF_LINKS = args.includes('--check-self-links'); +const ROOT_DIR = path.resolve(flagValue('--root') ?? path.dirname(__dirname)); +const FORMAT = flagValue('--format') ?? 'text'; +const BASELINE_FILE = flagValue('--baseline'); +const LINK_BASE = flagValue('--link-base')?.replace(/\/$/, ''); +const DIFF = parseDiff(flagValue('--diff')); +const CHECK_EXTERNAL = args.includes('--check-external'); +const REVIEW_FILE = flagValue('--review'); + +if (CHECK_EXTERNAL && !DIFF) { + throw new Error('--check-external needs --diff, to know which lines were added'); +} + +// Files and added lines of a unified diff, with paths relative to the repository: +// { files: Set<'docs/foo.mdx'>, addedLines: Map<'docs/foo.mdx', Set> }. +// Works with any amount of context, so `git diff` and `git diff -U0` both do. +function parseDiff(file) { + if (!file) return undefined; + const files = new Set(); + const addedLines = new Map(); + let currentFile; + let lineNumber; + for (const line of fs.readFileSync(file, 'utf-8').split('\n')) { + if (line.startsWith('diff --git ')) { + currentFile = undefined; + } else if (line.startsWith('+++ ') && !currentFile) { + // `+++ /dev/null` is a deleted file, which has no added lines + currentFile = line.slice(4).replace(/^b\//, ''); + if (currentFile === '/dev/null') continue; + files.add(currentFile); + addedLines.set(currentFile, new Set()); + } else if (line.startsWith('@@ ')) { + lineNumber = Number(line.match(/^@@ -\S+ \+(\d+)/)[1]); + } else if (line.startsWith('+') && currentFile) { + addedLines.get(currentFile).add(lineNumber++); + } else if (line.startsWith(' ')) { + lineNumber++; + } + } + return { files, addedLines }; +} + +const DOCS_DIR = path.join(ROOT_DIR, 'docs'); +// Files whose links are checked. Only .mdx files become site routes; see +// `filePathPattern` in contentlayer.config.ts. +const SOURCE_EXTENSIONS = ['.md', '.mdx']; +const ROUTE_EXTENSIONS = ['.mdx']; + +function flagValue(name) { + const index = args.indexOf(name); + return index === -1 ? undefined : args[index + 1]; +} + +// Sorted relative paths of every file under dir, optionally limited to some +// extensions. Sorted so foo.mdx precedes foo/index.mdx; when both exist the +// site serves the first match (allPosts.find), so the first file owns the route. +export function listFiles(dir, extensions) { + if (!fs.existsSync(dir)) return []; + return fs + .readdirSync(dir, { recursive: true, withFileTypes: true }) + .filter(entry => entry.isFile() && (!extensions || extensions.includes(path.extname(entry.name)))) + .map(entry => path.relative(dir, path.join(entry.parentPath, entry.name))) + .sort(); +} // Regex patterns for extracting links const MARKDOWN_LINK_REGEX = /\[([^\]]*)\]\(([^)]+)\)/g; const JSX_HREF_REGEX = /href=["']([^"']+)["']/g; const SRC_ATTR_REGEX = /src=["']([^"']+)["']/g; -// Extract headings from MDX content to build anchor map -function extractHeadings(content) { +// A fence opener/closer is a run of 3+ backticks or tildes at the start of a line. +const FENCE_LINE_REGEX = /^\s*(`{3,}|~{3,})/; + +// Blank out fenced code blocks, keeping line numbers intact, so `# comment` +// lines and example links inside them are ignored. Walks line by line: a naive +// /```[\s\S]*?```/ regex also matches inline backtick runs in prose (e.g. +// `"true```), which flips every later fence pairing. +function stripFencedCodeBlocks(content) { + let openFence; + return content.split('\n').map(line => { + const fence = line.match(FENCE_LINE_REGEX)?.[1]; + if (openFence) { + const closesOpenFence = + fence !== undefined && + fence[0] === openFence[0] && + fence.length >= openFence.length && + line.trim() === fence; + if (closesOpenFence) { + openFence = undefined; + } + return ''; + } + if (fence) { + openFence = fence; + return ''; + } + return line; + }).join('\n'); +} + +// Extract anchor targets from MDX content: heading slugs, plus explicit +// and id="..." attributes +export function extractHeadings(content) { const slugger = new GithubSlugger(); const headingRegex = /^#{1,6}\s+(.+)$/gm; + const explicitAnchorRegex = /<[a-zA-Z][^>]*\s(?:id|name)=["']([^"']+)["']/g; const headings = new Set(); - // Remove code blocks to avoid false positives - const contentWithoutCode = content.replace(/```[\s\S]*?```/g, ''); + const contentWithoutCode = stripFencedCodeBlocks(content); let match; while ((match = headingRegex.exec(contentWithoutCode)) !== null) { - // Handle headings with links: [Text](/path) -> Text - const linkMatch = match[1].match(/\[([^\]]+)\]\([^)]+\)/); - const title = linkMatch ? linkMatch[1] : match[1]; + // rehype-slug slugs the heading's full text, with links reduced to their text: + // "How can I use [GitHub expression syntax](url) literally" -> "How can I use GitHub expression syntax literally" + const title = match[1].replace(/\[([^\]]+)\]\([^)]+\)/g, '$1'); headings.add(slugger.slug(title.trim())); } + while ((match = explicitAnchorRegex.exec(contentWithoutCode)) !== null) { + headings.add(match[1]); + } + return headings; } +// Site route for a file under docs/: foo/bar.mdx -> /foo/bar, foo/index.mdx -> /foo, index.mdx -> / +export function routeFor(file) { + return '/' + file.replace(/\.mdx$/, '').replace(/(^|\/)index$/, ''); +} + // Get all MDX files and build a map of valid paths -async function buildPathMap() { - const files = await glob('**/*.mdx', { cwd: DOCS_DIR }); +function buildPathMap() { + const files = listFiles(DOCS_DIR, ROUTE_EXTENSIONS); const pathMap = new Map(); + // Lowercased route -> real route, to detect case mismatches + const routesByLowerCase = new Map(); const headingsMap = new Map(); + // Absolute file path -> headings, for same-page #anchor links + const headingsByFile = new Map(); for (const file of files) { const fullPath = path.join(DOCS_DIR, file); - const content = fs.readFileSync(fullPath, 'utf-8'); + const headings = extractHeadings(fs.readFileSync(fullPath, 'utf-8')); + headingsByFile.set(fullPath, headings); - // Route path (without .mdx extension) - const routePath = '/' + file.replace(/\.mdx$/, '').replace(/\/index$/, ''); + const routePath = routeFor(file); + if (pathMap.has(routePath)) continue; // Also allow trailing slash variant pathMap.set(routePath, fullPath); pathMap.set(routePath + '/', fullPath); - - // Handle index files - if (file.endsWith('index.mdx')) { - const dirPath = '/' + file.replace(/\/index\.mdx$/, ''); - pathMap.set(dirPath, fullPath); - pathMap.set(dirPath + '/', fullPath); - } - - // Extract headings for anchor validation - const headings = extractHeadings(content); + routesByLowerCase.set(routePath.toLowerCase(), routePath); headingsMap.set(routePath, headings); headingsMap.set(routePath + '/', headings); } - return { pathMap, headingsMap }; + return { + pathMap, + routesByLowerCase, + headingsMap, + headingsByFile, + assetsByLowerCase: buildAssetMap(), + redirects: loadRedirects() + }; } -// Check if a path exists in public directory -function checkPublicPath(linkPath) { - const publicPath = path.join(path.dirname(__dirname), 'public', linkPath); - return fs.existsSync(publicPath); +// Source route -> destination of src/data/redirects.ts. The middleware uses the +// first rule whose source equals the requested path, so first entry wins here too. +function loadRedirects() { + const redirects = new Map(); + const source = fs.readFileSync(path.join(ROOT_DIR, 'src/data/redirects.ts'), 'utf-8'); + const ruleRegex = /source:\s*(['"])(.*?)\1,\s*destination:\s*(['"])(.*?)\3/gs; + for (const [, , from, , to] of source.matchAll(ruleRegex)) { + if (!redirects.has(from)) redirects.set(from, to); + } + return redirects; } -// Check if a path exists in docs directory (for images in docs/) -function checkDocsPath(linkPath) { - const docsPath = path.join(DOCS_DIR, linkPath); - return fs.existsSync(docsPath); +// Lowercased link path -> real link path, for files under public/ and docs/ +// (images, PDFs, ...). An enumerated map rather than fs.existsSync, which is +// case-insensitive on macOS and would hide links that 404 on Linux. +function buildAssetMap() { + const assetsByLowerCase = new Map(); + for (const dir of ['public', 'docs']) { + for (const file of listFiles(path.join(ROOT_DIR, dir))) { + const linkPath = '/' + file; + assetsByLowerCase.set(linkPath.toLowerCase(), linkPath); + } + } + return assetsByLowerCase; } // Parse and validate links in a single file function extractLinks(content, filePath) { const links = []; - // Remove code blocks to avoid checking links in code examples - const contentWithoutCode = content.replace(/```[\s\S]*?```/g, (match) => { - // Replace with same number of newlines to preserve line numbers - return match.replace(/[^\n]/g, ' '); - }); + const contentWithoutCode = stripFencedCodeBlocks(content); // Extract markdown links [text](url) let match; @@ -136,12 +278,64 @@ function extractLinks(content, filePath) { return links; } -// Check if a link is valid -function validateLink(link, currentFile, pathMap, headingsMap) { +// Absolute links to this site, in every form the docs have used: http or https, +// scheme-relative, www., the legacy docs.sourcegraph.com host, or sourcegraph.com/docs. +// Links pinned to an old version (/@5.1/..., /v/5.1/...) are external: the +// middleware sends them to that version's own site (5.1.sourcegraph.com), whose +// pages are not in this repo, so only --check-external can validate them. +const SELF_LINK_REGEX = /^(?:https?:)?\/\/(?:www\.)?(?:docs\.sourcegraph\.com|sourcegraph\.com\/docs)(?=[/#?]|$)(?!\/@|\/v\/)/i; + +export function isSelfLink(url) { + return SELF_LINK_REGEX.test(url); +} + +// The relative form of an absolute self-link: https://sourcegraph.com/docs/a/b/#c -> /a/b#c. +// A ?query has no meaning on a docs page and is dropped. +function relativeSelfLink(url) { + const [pathAndQuery, anchor] = url.replace(SELF_LINK_REGEX, '').split('#'); + const route = pathAndQuery.split('?')[0].replace(/\/$/, '') || '/'; + return anchor ? `${route}#${anchor}` : route; +} + +// Absolute self-links break on preview deployments and local dev, and hide moved +// pages behind redirects, so they are findings even when the target exists. The +// fix is the relative link, following src/data/redirects.ts when the page moved. +// The redirect destination's own #anchor wins over the link's, like the middleware. +function validateSelfLink(url, currentFile, maps) { + const relative = relativeSelfLink(url); + const anchor = relative.split('#')[1]; + const visited = new Set(); + let candidate = relative; + while (true) { + const moved = candidate === relative ? '' : ' to a moved page'; + const problem = validateLink({ url: candidate }, currentFile, maps); + if (!problem) { + return { error: `Absolute self-link${moved}; use "${candidate}" instead`, fix: candidate }; + } + const destination = maps.redirects.get(candidate.split('#')[0]); + if (!destination || visited.has(destination)) { + const replaced = moved ? `; "${candidate}" replaced it, but` : ', and'; + return { error: `Absolute self-link${moved}${replaced} ${problem[0].toLowerCase()}${problem.slice(1)}` }; + } + visited.add(destination); + candidate = isSelfLink(destination) ? relativeSelfLink(destination) : destination; + if (anchor && !candidate.includes('#') && !/^https?:/.test(candidate)) { + candidate += `#${anchor}`; + } + } +} + +// Check if a link is valid. Returns null, an error string, or { error, fix }. +function validateLink(link, currentFile, maps) { + const { pathMap, routesByLowerCase, headingsMap, headingsByFile, assetsByLowerCase } = maps; const { url } = link; + + if (isSelfLink(url)) { + return CHECK_SELF_LINKS ? validateSelfLink(url, currentFile, maps) : null; + } // Skip external links, mailto, tel, javascript, etc. - if (url.startsWith('http://') || url.startsWith('https://') || + if (url.startsWith('http://') || url.startsWith('https://') || url.startsWith('//') || url.startsWith('mailto:') || url.startsWith('tel:') || url.startsWith('javascript:') || url.startsWith('data:') || url.startsWith('command:')) { @@ -164,10 +358,7 @@ function validateLink(link, currentFile, pathMap, headingsMap) { return null; } const anchor = url.substring(1); - const currentRoute = '/' + path.relative(DOCS_DIR, currentFile) - .replace(/\.mdx$/, '') - .replace(/\/index$/, ''); - const headings = headingsMap.get(currentRoute); + const headings = headingsByFile.get(currentFile); if (headings && !headings.has(anchor)) { return `Anchor "${anchor}" not found in current file`; @@ -211,80 +402,292 @@ function validateLink(link, currentFile, pathMap, headingsMap) { return null; } - // Check if it's a public asset - if (checkPublicPath(resolvedPath)) { + // Check if it's an asset under public/ or docs/ + const realAsset = assetsByLowerCase.get(resolvedPath.toLowerCase()); + if (realAsset === resolvedPath) { return null; } + // Same route or asset with different case: resolves on macOS, 404s on the Linux build + const realPath = realAsset ?? routesByLowerCase.get( + resolvedPath.replace(/\/$/, '').toLowerCase() + ); + if (realPath) { + return `Case mismatch: "${resolvedPath}" should be "${realPath}"`; + } + // Check if it's a file with extension (like .png, .pdf) if (path.extname(resolvedPath)) { - // Could be an asset - check public folder or docs folder - if (checkPublicPath(resolvedPath) || checkDocsPath(resolvedPath)) { - return null; - } return `File not found: "${resolvedPath}"`; } return `Page not found: "${resolvedPath}"`; } -async function main() { - console.log('🔍 Checking for dead links in MDX files...\n'); - - const { pathMap, headingsMap } = await buildPathMap(); - const files = await glob('**/*.mdx', { cwd: DOCS_DIR }); - - let totalErrors = 0; - const errors = []; +function isAddedLine(file, line) { + return DIFF?.addedLines.get(file)?.has(line) ?? false; +} + +// Find every broken link: [{ file, line, url, error, fix? }] +async function findBrokenLinks() { + const maps = buildPathMap(); + const findings = []; + const externalLinks = []; - for (const file of files) { + for (const file of listFiles(DOCS_DIR, SOURCE_EXTENSIONS)) { const fullPath = path.join(DOCS_DIR, file); const content = fs.readFileSync(fullPath, 'utf-8'); - const links = extractLinks(content, fullPath); - - const fileErrors = []; - for (const link of links) { - const error = validateLink(link, fullPath, pathMap, headingsMap); - if (error) { - fileErrors.push({ - line: link.lineNumber, - url: link.url, - error - }); + for (const link of extractLinks(content, fullPath)) { + const location = { file: `docs/${file}`, line: link.lineNumber, url: link.url }; + const problem = validateLink(link, fullPath, maps); + if (problem) { + findings.push({ ...location, ...(typeof problem === 'string' ? { error: problem } : problem) }); + } else if (CHECK_EXTERNAL && isExternalLink(link.url) && isAddedLine(location.file, location.line)) { + externalLinks.push(location); } } - - if (fileErrors.length > 0) { - errors.push({ - file: `docs/${file}`, - errors: fileErrors - }); - totalErrors += fileErrors.length; - } } - // Output results - if (errors.length === 0) { - console.log('✅ No dead links found!'); - process.exit(0); + return [...findings, ...(await findDeadExternalLinks(externalLinks))]; +} + +// Hosts reserved for examples and documentation (RFC 2606, RFC 6761), never requested +const PLACEHOLDER_HOST_REGEX = /(^|\.)(example\.(com|net|org)|example|test|invalid|localhost|local|internal)$/i; +// Templated URLs like https:/// or https://$HOST/, never requested +const PLACEHOLDER_URL_REGEX = /[<>{}$*]/; + +function isExternalLink(url) { + if (!/^https?:\/\//i.test(url) || PLACEHOLDER_URL_REGEX.test(url)) return false; + try { + return !PLACEHOLDER_HOST_REGEX.test(new URL(url).hostname); + } catch { + return false; + } +} + +// HTTP status of url after redirects, or undefined on a network error or timeout. +// HEAD first; some servers refuse or misreport HEAD, so an error status is +// confirmed with a GET whose body is not read. +async function probeUrl(url) { + const request = method => + fetch(url, { + method, + redirect: 'follow', + signal: AbortSignal.timeout(15_000), + headers: { 'user-agent': 'sourcegraph-docs-check-links (+https://github.com/sourcegraph/docs)' } + }); + try { + let response = await request('HEAD'); + if (response.status >= 400) { + response = await request('GET'); + await response.body?.cancel(); + } + return response.status; + } catch { + return undefined; + } +} + +// Findings for external links whose target is gone. Only 404 and 410 count: rate +// limits, bot blocks, server errors, and network failures are not the PR's fault. +async function findDeadExternalLinks(links) { + const urls = [...new Set(links.map(link => link.url.split('#')[0]))]; + const statusByUrl = new Map(); + const queue = [...urls]; + const worker = async () => { + for (let url = queue.shift(); url !== undefined; url = queue.shift()) { + statusByUrl.set(url, await probeUrl(url)); + } + }; + await Promise.all(Array.from({ length: 8 }, worker)); + + return links.flatMap(link => { + const status = statusByUrl.get(link.url.split('#')[0]); + return status === 404 || status === 410 ? [{ ...link, error: `External link returns HTTP ${status}` }] : []; + }); +} + +// Identity of a finding across revisions: line numbers shift, so ignore them +function findingKey({ file, url, error }) { + return `${file}\n${url}\n${error}`; +} + +function withoutBaseline(findings, baselineFile) { + const baseline = new Set( + JSON.parse(fs.readFileSync(baselineFile, 'utf-8')).map(findingKey) + ); + return findings.filter(finding => !baseline.has(findingKey(finding))); +} + +function groupByFile(findings) { + const byFile = new Map(); + for (const finding of findings) { + if (!byFile.has(finding.file)) { + byFile.set(finding.file, []); + } + byFile.get(finding.file).push(finding); + } + return byFile; +} + +function formatText(findings) { + const scope = BASELINE_FILE ? 'new ' : ''; + if (findings.length === 0) { + return `✅ No ${scope}dead links found!\n`; } - console.log(`❌ Found ${totalErrors} dead link(s) in ${errors.length} file(s):\n`); + const byFile = groupByFile(findings); + const lines = [ + `❌ Found ${findings.length} ${scope}dead link(s) in ${byFile.size} file(s):\n` + ]; + for (const [file, fileFindings] of byFile) { + lines.push(`\n📄 ${file}`); + for (const { line, url, error } of fileFindings) { + lines.push(` Line ${line}: ${url}`); + lines.push(` └─ ${error}`); + } + } + return lines.join('\n') + '\n'; +} + +function linkTo(text, url) { + return url ? `[${text}](${url})` : text; +} + +// Markdown list of findings grouped by file, linked to the source when --link-base is set +function markdownFindingList(findings) { + const lines = []; + for (const [file, fileFindings] of groupByFile(findings)) { + // ?plain=1 opens GitHub's code view, where #L anchors work; the rendered + // Markdown preview ignores them + const fileUrl = LINK_BASE && `${LINK_BASE}/${file}?plain=1`; + lines.push(linkTo(`**\`${file}\`**`, fileUrl)); + for (const { line, url, error } of fileFindings) { + lines.push(`- ${linkTo(`line ${line}`, fileUrl && `${fileUrl}#L${line}`)}: \`${url}\` — ${error}`); + } + lines.push(''); + } + return lines; +} + +// Body for a pull request comment. With --diff, findings are split into +// outbound (in a file this PR changed: the PR added or edited a bad link) and +// inbound (in a file it did not: the PR renamed or removed a link target). +function formatMarkdown(findings) { + if (findings.length === 0) { + return '### ✅ This PR introduces no broken links\n'; + } - for (const { file, errors: fileErrors } of errors) { - console.log(`\n📄 ${file}`); - for (const { line, url, error } of fileErrors) { - console.log(` Line ${line}: ${url}`); - console.log(` └─ ${error}`); + const lines = [`### ❌ This PR introduces ${findings.length} broken link(s)`, '']; + if (DIFF) { + const outbound = findings.filter(finding => DIFF.files.has(finding.file)); + const inbound = findings.filter(finding => !DIFF.files.has(finding.file)); + if (outbound.length > 0) { + lines.push( + '### Outbound', + '', + 'Your PR includes links to pages or anchors that do not exist, or absolute links to this site.', + '', + ...markdownFindingList(outbound) + ); } + if (inbound.length > 0) { + lines.push( + '### Inbound', + '', + 'A change your PR made broke inbound links from elsewhere. ' + + 'Please fix the inbound links on the other pages.', + '', + ...markdownFindingList(inbound) + ); + } + } else { + lines.push(...markdownFindingList(findings)); + } + if (findings.some(finding => isSelfLink(finding.url))) { + lines.push( + 'Write links to this site as relative paths (`/admin/config/site-config`), ' + + 'not `https://sourcegraph.com/docs/…` or `https://docs.sourcegraph.com/…`: ' + + 'absolute links leave the preview deployment and local dev server, and ' + + 'hide moved pages behind redirects.', + '' + ); + } + lines.push( + 'Reproduce locally with `pnpm check-links --check-anchors` ' + + '(see `dev/check-links.mjs`).', + '', + 'Adding a redirect in `src/data/redirects.ts` does not satisfy this ' + + 'check, because it’s a workaround instead of a fix.' + ); + return lines.join('\n') + '\n'; +} + +// Body for POST /repos/{owner}/{repo}/pulls/{n}/reviews: one suggested change per +// added line that has fixes, so the author can apply them from the PR. The comment +// lists every finding on the line, so the ones the suggestion cannot fix are not +// mistaken for accepted. Review comments must sit on a line of the diff, hence the +// added-line restriction. +function reviewRequest(findings) { + const findingsByLine = new Map(); + for (const finding of findings) { + if (!isAddedLine(finding.file, finding.line)) continue; + const key = `${finding.file}:${finding.line}`; + if (!findingsByLine.has(key)) findingsByLine.set(key, []); + findingsByLine.get(key).push(finding); + } + + const comments = [...findingsByLine.values()] + .filter(lineFindings => lineFindings.some(finding => finding.fix)) + .map(lineFindings => { + const { file, line } = lineFindings[0]; + const source = fs.readFileSync(path.join(ROOT_DIR, file), 'utf-8').split('\n')[line - 1]; + const fixed = lineFindings + .filter(finding => finding.fix) + .reduce((text, { url, fix }) => text.split(url).join(fix), source); + const notes = lineFindings.map( + ({ url, error, fix }) => `- \`${url}\`: ${error}${fix ? '' : ' (not fixed by this suggestion)'}` + ); + return { path: file, line, side: 'RIGHT', body: [...notes, '```suggestion', fixed, '```'].join('\n') }; + }); + return { + event: 'COMMENT', + body: 'Suggested fixes for the links this PR adds; details in the check-links comment.', + comments + }; +} + +const FORMATTERS = { + text: formatText, + json: findings => JSON.stringify(findings, null, '\t') + '\n', + markdown: formatMarkdown +}; + +async function main() { + const format = FORMATTERS[FORMAT]; + if (!format) { + throw new Error(`Unknown --format "${FORMAT}"; use text, json, or markdown`); } - console.log('\n'); - process.exit(1); + if (FORMAT === 'text') { + console.log('🔍 Checking for dead links in MDX files...\n'); + } + + let findings = await findBrokenLinks(); + if (BASELINE_FILE) { + findings = withoutBaseline(findings, BASELINE_FILE); + } + + if (REVIEW_FILE) { + fs.writeFileSync(REVIEW_FILE, JSON.stringify(reviewRequest(findings), null, '\t') + '\n'); + } + process.stdout.write(format(findings)); + process.exit(findings.length === 0 ? 0 : 1); } -main().catch(err => { - console.error('Error running link checker:', err); - process.exit(1); -}); +// Only run when executed directly; dev/verify-links-live.mjs and dev/check-redirects.mjs +// import the exported helpers. +if (process.argv[1] && import.meta.url === pathToFileURL(process.argv[1]).href) { + main(); +} diff --git a/dev/verify-links-live.mjs b/dev/verify-links-live.mjs new file mode 100644 index 000000000..7f4434a3e --- /dev/null +++ b/dev/verify-links-live.mjs @@ -0,0 +1,130 @@ +#!/usr/bin/env node +// Prove that the links a branch changed resolve on a deployed site. +// +// For every internal link that differs between a base ref and the working +// tree, fetch the target page on --site and check the rendered HTML, not the +// HTTP status: the docs site serves its not-found page with 200 (see the +// dynamicParams fix) and even real pages embed the not-found text in their +// RSC payload, so neither status nor page text proves anything. A link passes +// when +// - the target page's own first heading id (from its local MDX source) is an +// id in the HTML, which the not-found page never has, and +// - the link's #fragment, when present, is an id in the HTML. +// Prints a Markdown table to paste into a PR. Old links point at --old-site so +// reviewers can see the current breakage. +// +// node dev/verify-links-live.mjs --site https://.vercel.app [--old-site https://sourcegraph.com/docs] [--base origin/main] +// +// Production serves under https://sourcegraph.com/docs (basePath in +// next.config.js); Vercel previews serve at the root, so pass the full prefix +// in --site. +import { execSync } from 'node:child_process'; +import fs from 'node:fs'; +import path from 'node:path'; +import { extractHeadings } from './check-links.mjs'; + +const args = process.argv.slice(2); +const argValue = (flag, fallback) => { + const index = args.indexOf(flag); + return index === -1 ? fallback : args[index + 1]; +}; +const SITE = argValue('--site', 'https://sourcegraph.com/docs').replace(/\/$/, ''); +const OLD_SITE = argValue('--old-site', 'https://sourcegraph.com/docs').replace(/\/$/, ''); +const BASE_REF = argValue('--base', 'origin/main'); + +const LINK = /\]\(([^)\s]+)\)|href=["']([^"']+)["']/g; + +function routeFor(file) { + return '/' + file.replace(/^docs\//, '').replace(/\.mdx$/, '').replace(/\/index$/, ''); +} + +// Same precedence as the site (first glob match): foo.mdx before foo/index.mdx. +function sourceFileFor(route) { + const stem = route === '/' ? 'docs/index' : `docs${route}`; + return [`${stem}.mdx`, `${stem}/index.mdx`].find(candidate => fs.existsSync(candidate)); +} + +const firstHeadingCache = new Map(); +function firstHeadingId(route) { + if (!firstHeadingCache.has(route)) { + const file = sourceFileFor(route); + const [first] = file ? extractHeadings(fs.readFileSync(file, 'utf-8')) : []; + firstHeadingCache.set(route, first); + } + return firstHeadingCache.get(route); +} + +// Collect { file, oldUrl, newUrl } for every link that changed. +function changedLinks() { + const diff = execSync(`git diff -U0 ${BASE_REF}`, { encoding: 'utf-8' }); + const result = []; + let file, removed = [], added = []; + const flush = () => { + if (removed.length === added.length) removed.forEach((oldLine, index) => { + const oldLinks = [...oldLine.matchAll(LINK)].map(m => m[1] ?? m[2]); + const newLinks = [...added[index].matchAll(LINK)].map(m => m[1] ?? m[2]); + if (oldLinks.length !== newLinks.length) return; + oldLinks.forEach((oldUrl, i) => { + if (oldUrl !== newLinks[i]) result.push({ file, oldUrl, newUrl: newLinks[i] }); + }); + }); + removed = []; added = []; + }; + for (const line of diff.split('\n')) { + if (line.startsWith('+++ b/')) { flush(); file = line.slice(6); continue; } + if (line.startsWith('@@')) { flush(); continue; } + if (line.startsWith('---')) continue; + if (line.startsWith('-')) removed.push(line.slice(1)); + else if (line.startsWith('+')) added.push(line.slice(1)); + } + flush(); + return result; +} + +function resolveTarget(file, url) { + if (/^(https?:|mailto:|tel:)/.test(url)) return null; + const [pagePart, fragment] = url.split('#'); + let page; + if (pagePart === '') page = routeFor(file); + else if (pagePart.startsWith('/')) page = pagePart; + else page = path.posix.join(path.posix.dirname(routeFor(file)), pagePart); + page = page.replace(/\/$/, '') || '/'; + return { page, fragment, href: `${page}${fragment ? '#' + fragment : ''}` }; +} + +const pageCache = new Map(); +async function fetchPage(page) { + if (!pageCache.has(page)) { + pageCache.set(page, fetch(`${SITE}${page}`, { redirect: 'follow' }).then(response => response.text())); + } + return pageCache.get(page); +} + +function hasId(html, id) { + const escaped = id.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); + return new RegExp(`\\sid=["']${escaped}["']`).test(html); +} + +const links = changedLinks(); +const rows = []; +let failures = 0; +for (const { file, oldUrl, newUrl } of links) { + const target = resolveTarget(file, newUrl); + if (!target) continue; + const html = await fetchPage(target.page); + const heading = firstHeadingId(target.page); + // No local source file means no such page; a page with no headings cannot be verified either. + const pageOk = Boolean(heading) && hasId(html, heading); + const anchorOk = !target.fragment || hasId(html, target.fragment); + if (!pageOk || !anchorOk) failures++; + const oldTarget = resolveTarget(file, oldUrl); + const oldCell = oldTarget ? `[\`${oldUrl}\`](${OLD_SITE}${oldTarget.href})` : `\`${oldUrl}\``; + rows.push(`| \`${file}\` | ${oldCell} | [\`${newUrl}\`](${SITE}${target.href}) | ${pageOk ? '✅' : '❌'} | ${target.fragment ? (anchorOk ? '✅' : '❌') : '—'} |`); +} + +console.log(`Checked ${rows.length} changed links against ${SITE}: ${rows.length - failures} resolve, ${failures} fail.`); +console.log('Page rendered = the target page\'s first heading id is present (the 404 page never has it); Anchor = the #fragment is an id on the page. Old links point at the current site.\n'); +console.log('| File containing the link | Old link (broken today) | New link (preview) | Page rendered | Anchor found |'); +console.log('|--------------------------|-------------------------|--------------------|---------------|--------------|'); +console.log(rows.join('\n')); +process.exitCode = failures ? 1 : 0; From aa22ff4bb1ee23fe3240314afcb8d0befaef380a Mon Sep 17 00:00:00 2001 From: Marc <7050295+marcleblanc2@users.noreply.github.com> Date: Thu, 10 Sep 2026 19:39:55 -0600 Subject: [PATCH 195/217] fix/links: Replace absolute self-links with relative links (67 links) (#1899) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## What Rewrites every link to this site that was written as an absolute URL (`https://sourcegraph.com/docs/…`, `http://sourcegraph.com/docs/…`, `https://docs.sourcegraph.com/…`) as a relative link (`/admin/config/site-config`), in 15 files. - 32 pointed at the current route: prefix dropped. - 31 pointed at a moved page and only worked through `src/data/redirects.ts`: now link straight to the destination. - 4 needed a hand fix: the `commands#commands-id-mode` and `features#shard-merging` anchors no longer exist, `github#github-com-rate-limits` became `#rate-limits`, and the deleted gRPC guide now links to its archived 5.3 page. ## Why Absolute links leave the Vercel preview and the local dev server, and hide moved pages behind redirects. #1858 makes `dev/check-links.mjs` fail PRs that add them; this PR clears the backlog so that check starts from zero. ## Verification `node dev/check-links.mjs --check-anchors --root ` with the checker from #1858: 0 absolute self-links left, and no new findings against `main` (317 → 250 pre-existing findings; the 67 removed are all self-links). ## Notes for reviewers - Bare URLs in prose and code blocks (e.g. the `See https://docs.sourcegraph.com/admin/observability/tracing` cells in `docs/cli/references/*`) are not links and are untouched; #1851 covers those. - `docs/admin/repo/perforce.mdx`, `docs/self-hosted/observability/alerts.mdx` and `dashboards.mdx` are synced from sourcegraph/sourcegraph (#1883); the same links need the same fix upstream or the next sync reverts them. - `docs/technical-changelog.mdx` holds 31 of the links and is retired by #1888; if that lands first, take the deletion. Co-authored-by: Amp --- docs/admin/pings.mdx | 2 +- docs/admin/repo/auth.mdx | 2 +- docs/admin/repo/perforce.mdx | 2 +- docs/admin/search.mdx | 4 +- .../telemetry/private-metadata-allowlist.mdx | 4 +- docs/admin/telemetry/protocol.mdx | 2 +- ...private-maven-repository-configuration.mdx | 2 +- docs/code-search/queries/examples.mdx | 2 +- docs/cody/capabilities/auto-edit.mdx | 6 +-- docs/cody/prompts-guide.mdx | 2 +- docs/cody/use-cases/vsc-tutorial.mdx | 4 +- docs/self-hosted/observability/alerts.mdx | 34 ++++++------ docs/self-hosted/observability/dashboards.mdx | 8 +-- docs/self-hosted/updates/automatic.mdx | 2 +- docs/technical-changelog.mdx | 52 +++++++++---------- 15 files changed, 64 insertions(+), 64 deletions(-) diff --git a/docs/admin/pings.mdx b/docs/admin/pings.mdx index bbbb50b80..46e050a2e 100644 --- a/docs/admin/pings.mdx +++ b/docs/admin/pings.mdx @@ -241,7 +241,7 @@ Sourcegraph telemetry pings are handled by a goroutine running on Sourcegraph's ### Misconfigured update.channel -The most common scenario in which Sourcegraph stops sending pings is a change to the `update.channel` setting in an instance's [site config](https://sourcegraph.com/docs/admin/config/site-config) +The most common scenario in which Sourcegraph stops sending pings is a change to the `update.channel` setting in an instance's [site config](/admin/config/site-config) ``` "update.channel": "release", diff --git a/docs/admin/repo/auth.mdx b/docs/admin/repo/auth.mdx index 495585d9e..60a76dbf9 100644 --- a/docs/admin/repo/auth.mdx +++ b/docs/admin/repo/auth.mdx @@ -62,7 +62,7 @@ In Sourcegraph 5.1.0 and later, the insecure SSH rsa-sha1 signature algorithm is If you use an RSA SSH key to authenticate to your code host, you should ensure that your code host runs OpenSSL 7.2 or newer. -If it is not possible to update the code host, you should generate a new ed25519 SSH key to use for authentication. This can be achieved by running `ssh-keygen -t ed25519`, and [configuring Sourcegraph](https://sourcegraph.com/docs/admin/repo/git-config) to use this new key. +If it is not possible to update the code host, you should generate a new ed25519 SSH key to use for authentication. This can be achieved by running `ssh-keygen -t ed25519`, and [configuring Sourcegraph](/admin/repo/git-config) to use this new key. ### Error: `Host key verification failed` diff --git a/docs/admin/repo/perforce.mdx b/docs/admin/repo/perforce.mdx index 0122c8c0e..f6954fce4 100644 --- a/docs/admin/repo/perforce.mdx +++ b/docs/admin/repo/perforce.mdx @@ -178,7 +178,7 @@ To ensure Sourcegraph handles host rules according to your requirements, you hav ##### Enforcing host rules -If you want Sourcegraph to enforce host-specific permissions, you need to enable IP restriction enforcement in your [site configuration](https://sourcegraph.com/docs/admin/config/site-config): +If you want Sourcegraph to enforce host-specific permissions, you need to enable IP restriction enforcement in your [site configuration](/admin/config/site-config): ```json { diff --git a/docs/admin/search.mdx b/docs/admin/search.mdx index a616770db..9f7a3a455 100644 --- a/docs/admin/search.mdx +++ b/docs/admin/search.mdx @@ -76,9 +76,9 @@ Sourcegraph indexes the code on the default branch of each repository. This spee To view which files are skipped during indexing, visit the repository settings page and click on **Indexing**. -To force the indexer to include specific files (like `yarn.lock` or other large text files) that are otherwise skipped, add their file path or a glob pattern to the [search.largeFiles](https://sourcegraph.com/docs/admin/search#maximum-file-size) setting in your site configuration and reindex the repository. Note that files must still be valid UTF-8 to be indexed, even if added to `search.largeFiles`. +To force the indexer to include specific files (like `yarn.lock` or other large text files) that are otherwise skipped, add their file path or a glob pattern to the [search.largeFiles](/admin/search#maximum-file-size) setting in your site configuration and reindex the repository. Note that files must still be valid UTF-8 to be indexed, even if added to `search.largeFiles`. -For large deployments we recommend horizontally scaling indexed search. You can do this by adjusting the [number of replicas](https://sourcegraph.com/docs/admin/deploy/kubernetes/configure). Sourcegraph shards repository indexes across replicas. When the replica count changes Sourcegraph will slowly rebalance indexes to ensure availability of existing indexes. +For large deployments we recommend horizontally scaling indexed search. You can do this by adjusting the [number of replicas](/self-hosted/deploy/kubernetes/configure). Sourcegraph shards repository indexes across replicas. When the replica count changes Sourcegraph will slowly rebalance indexes to ensure availability of existing indexes. The resource requirements for indexed search vary considerably based on the text contents of your repositories, but a good estimate is that the node should have enough memory to hold the entire text contents of the default branch of each repository. diff --git a/docs/admin/telemetry/private-metadata-allowlist.mdx b/docs/admin/telemetry/private-metadata-allowlist.mdx index ebee6211e..38001417c 100644 --- a/docs/admin/telemetry/private-metadata-allowlist.mdx +++ b/docs/admin/telemetry/private-metadata-allowlist.mdx @@ -1,12 +1,12 @@ # Private metadata allowlist -This document lists all telemetry events that are allowed to export specific `privateMetadata` fields (from within [telemetry event parameters](https://sourcegraph.com/docs/admin/telemetry/protocol#telemetrygateway-v1-EventParameters)). +This document lists all telemetry events that are allowed to export specific `privateMetadata` fields (from within [telemetry event parameters](/admin/telemetry/protocol#telemetrygateway-v1-EventParameters)). By default, `privateMetadata` is **never** exported from customers because it can contain arbitrarily-shaped data that may accidentally include sensitive or private contents. The specific events and properties listed below have been individually reviewed and approved for export. The implementation of each is monitored to ensure they contain only categorized, enumerated information. The only `metadata` we collect by default are non-sensitive numeric values. -To learn more, refer to the [telemetry documentation](https://sourcegraph.com/docs/admin/telemetry). +To learn more, refer to the [telemetry documentation](/admin/telemetry). | **Event feature** | **Event action** | **Allowed `privateMetadata` fields** | | :---------------- | :--------------- | :----------------------------------- | diff --git a/docs/admin/telemetry/protocol.mdx b/docs/admin/telemetry/protocol.mdx index 8b25a7a42..e0b3a7fb6 100644 --- a/docs/admin/telemetry/protocol.mdx +++ b/docs/admin/telemetry/protocol.mdx @@ -3,7 +3,7 @@ This page contains the core schema for telemetry event data that gets exported from Sourcegraph. -To learn more, refer to our [telemetry documentation](https://sourcegraph.com/docs/admin/telemetry). +To learn more, refer to our [telemetry documentation](/admin/telemetry). ## Table of Contents diff --git a/docs/code-navigation/private-maven-repository-configuration.mdx b/docs/code-navigation/private-maven-repository-configuration.mdx index 71e9396a7..713ea992e 100644 --- a/docs/code-navigation/private-maven-repository-configuration.mdx +++ b/docs/code-navigation/private-maven-repository-configuration.mdx @@ -28,7 +28,7 @@ To test and validate the Maven configuration, modify a single repository’s aut ### Set Up Executor Secrets -Before triggering the indexing process, make sure the environment variables `$ARTIFACTORY_USER` and `$ARTIFACTORY_PASSWORD` are created as [Executor Secrets](https://sourcegraph.com/docs/admin/executors/executor-secrets). +Before triggering the indexing process, make sure the environment variables `$ARTIFACTORY_USER` and `$ARTIFACTORY_PASSWORD` are created as [Executor Secrets](/admin/executors/executor-secrets). ### Trigger Indexing diff --git a/docs/code-search/queries/examples.mdx b/docs/code-search/queries/examples.mdx index 320e5918e..7f0b29bc5 100644 --- a/docs/code-search/queries/examples.mdx +++ b/docs/code-search/queries/examples.mdx @@ -118,4 +118,4 @@ Regex searches are also useful when searching boundaries that are not delimited repo:^github\.com/sourcegraph/ \bbtn-secondary\b ``` -More examples of regex searches are available [here](https://sourcegraph.com/docs/code-search/queries#regular-expression-search) +More examples of regex searches are available [here](/code-search/queries#regular-expression-search) diff --git a/docs/cody/capabilities/auto-edit.mdx b/docs/cody/capabilities/auto-edit.mdx index 25ee81d6e..7982dee00 100644 --- a/docs/cody/capabilities/auto-edit.mdx +++ b/docs/cody/capabilities/auto-edit.mdx @@ -72,7 +72,7 @@ Site admins can opt their organization out of the auto-edit feature by disabling Auto-edit is available as default for Enterprise customers with [Sourcegraph Model Provider (Cody Gateway)](/model-provider) access. To configure auto-edit: -- Add `fireworks::*` as an [allowed provider](https://sourcegraph.com/docs/cody/enterprise/model-configuration#model-filters) +- Add `fireworks::*` as an [allowed provider](/cody/enterprise/model-configuration#model-filters) The following example demonstrates how to add Fireworks as an allowed LLM provider: @@ -125,7 +125,7 @@ Site admins can opt their organization out of the auto-edit feature by disabling Auto-edit is available as default for Enterprise customers with [Sourcegraph Model Provider (Cody Gateway)](/model-provider) access. To configure auto-edit: -- Add `fireworks::*` as an [allowed provider](https://sourcegraph.com/docs/cody/enterprise/model-configuration#model-filters) +- Add `fireworks::*` as an [allowed provider](/cody/enterprise/model-configuration#model-filters) The following example demonstrates how to add Fireworks as an allowed LLM provider: @@ -177,7 +177,7 @@ You can opt out and switch back to autocomplete by deselecting it from the Cody Auto-edit is available as default for Enterprise customers with [Sourcegraph Model Provider (Cody Gateway)](/model-provider) access. To configure auto-edit: -- Add `fireworks::*` as an [allowed provider](https://sourcegraph.com/docs/cody/enterprise/model-configuration#model-filters) +- Add `fireworks::*` as an [allowed provider](/cody/enterprise/model-configuration#model-filters) The following example demonstrates how to add Fireworks as an allowed LLM provider: diff --git a/docs/cody/prompts-guide.mdx b/docs/cody/prompts-guide.mdx index 70092aaf8..df3e993a9 100644 --- a/docs/cody/prompts-guide.mdx +++ b/docs/cody/prompts-guide.mdx @@ -104,7 +104,7 @@ You can learn more about context [here](/cody/core-concepts/context). @-mention local and current repositories are only available if you have your repository indexed. Enterprise and Enterprise Starter users can request their admins to add their local project for indexing to get access to @-mention context. -Repository indexing is only available to supported [Code Hosts](https://sourcegraph.com/docs/admin/code-hosts), please reach out to your admins if you require assistance with indexing. +Repository indexing is only available to supported [Code Hosts](/admin/code-hosts), please reach out to your admins if you require assistance with indexing. ## Selecting the right LLM diff --git a/docs/cody/use-cases/vsc-tutorial.mdx b/docs/cody/use-cases/vsc-tutorial.mdx index 829b58963..d32fbbc35 100644 --- a/docs/cody/use-cases/vsc-tutorial.mdx +++ b/docs/cody/use-cases/vsc-tutorial.mdx @@ -39,7 +39,7 @@ You can also use the [Cody: Commands Menu](command:cody.menu.commands) which has **✨ Pro-tips for using Cody commands** -- You can build your own [Custom Commands (Beta)](https://sourcegraph.com/docs/cody/custom-commands) with custom prompts, output into chat or perform code edits, and more. +- You can build your own [Custom Commands (Beta)](/cody/capabilities/prompts) with custom prompts, output into chat or perform code edits, and more. ## Edit Code @@ -53,7 +53,7 @@ You can also use the default keyboard shortcut of `Opt+K`/`Alt+K`. - You can open the 💡 menu, with an "Cody: Edit Code" option, by selecting any line of code and using the keyboard short `Command` `.` on macOS or `Ctrl` `.` on Windows & Linux. - If you start an empty line and open the 💡 menu (using the keyboard short `Command` `.` on macOS or `Ctrl` `.` on Windows & Linux) you can use "Cody: Generate Code" to generate new lines of code based on instructions. -- You define your own custom code editing commands using [Custom Commands (Beta)](https://sourcegraph.com/docs/cody/custom-commands), by setting the [`commands..mode` property](https://sourcegraph.com/docs/cody/capabilities/commands#commands-id-mode). +- You define your own custom code editing commands using [Custom Commands (Beta)](/cody/capabilities/prompts), by setting the [`commands..mode` property](/cody/capabilities/prompts). ## Explain Code diff --git a/docs/self-hosted/observability/alerts.mdx b/docs/self-hosted/observability/alerts.mdx index 3a881aa3b..12faaac77 100644 --- a/docs/self-hosted/observability/alerts.mdx +++ b/docs/self-hosted/observability/alerts.mdx @@ -5,7 +5,7 @@ This document contains a complete reference of all alerts in Sourcegraph's monitoring, and next steps for when you find alerts that are firing. If your alert isn't mentioned here, or if the next steps don't help, [contact us](mailto:support@sourcegraph.com) for assistance. -To learn more about Sourcegraph's alerting and how to set up alerts, see [our alerting guide](https://sourcegraph.com/docs/admin/observability/alerting). +To learn more about Sourcegraph's alerting and how to set up alerts, see [our alerting guide](/self-hosted/observability/alerting). ## frontend: 99th_percentile_search_request_duration @@ -244,7 +244,7 @@ Generated query for warning alert: `max((histogram_quantile(0.9, sum by (le) (ra - **Check that most repositories are indexed** by visiting https://sourcegraph.example.com/admin/repositories?filter=needs-index (it should show few or no results.) - **Kubernetes:** Check CPU usage of zoekt-webserver in the indexed-search pod, consider increasing CPU limits in the `indexed-search.Deployment.yaml` if regularly hitting max CPU utilization. - **Docker Compose:** Check CPU usage on the Zoekt Web Server dashboard, consider increasing `cpus:` of the zoekt-webserver container in `docker-compose.yml` if regularly hitting max CPU utilization. -- This alert may indicate that your instance is struggling to process symbols queries on a monorepo, [learn more here](https://sourcegraph.com/docs/admin/monorepo). +- This alert may indicate that your instance is struggling to process symbols queries on a monorepo, [learn more here](/admin/monorepo). - Learn more about the related dashboard panel in the [dashboards reference](dashboards#frontend-99th_percentile_search_codeintel_request_duration). - **Silence this alert:** If you are aware of this alert and want to silence notifications for it, add the following to your site configuration and set a reminder to re-evaluate the alert: @@ -279,7 +279,7 @@ Generated query for warning alert: `max((histogram_quantile(0.99, sum by (le) (r - **Check that most repositories are indexed** by visiting https://sourcegraph.example.com/admin/repositories?filter=needs-index (it should show few or no results.) - **Kubernetes:** Check CPU usage of zoekt-webserver in the indexed-search pod, consider increasing CPU limits in the `indexed-search.Deployment.yaml` if regularly hitting max CPU utilization. - **Docker Compose:** Check CPU usage on the Zoekt Web Server dashboard, consider increasing `cpus:` of the zoekt-webserver container in `docker-compose.yml` if regularly hitting max CPU utilization. -- This alert may indicate that your instance is struggling to process symbols queries on a monorepo, [learn more here](https://sourcegraph.com/docs/admin/monorepo). +- This alert may indicate that your instance is struggling to process symbols queries on a monorepo, [learn more here](/admin/monorepo). - Learn more about the related dashboard panel in the [dashboards reference](dashboards#frontend-90th_percentile_search_codeintel_request_duration). - **Silence this alert:** If you are aware of this alert and want to silence notifications for it, add the following to your site configuration and set a reminder to re-evaluate the alert: @@ -909,7 +909,7 @@ Generated query for warning alert: `max((sum by (name, job_name) (rate(src_perio **Next steps** - Increase SRC_PGSQL_MAX_OPEN together with giving more memory to the database if needed -- Scale up Postgres memory/cpus - [see our scaling guide](https://sourcegraph.com/docs/admin/config/postgres-conf) +- Scale up Postgres memory/cpus - [see our scaling guide](/self-hosted/postgres-conf) - If using GCP Cloud SQL, check for high lock waits or CPU usage in query insights - Learn more about the related dashboard panel in the [dashboards reference](dashboards#frontend-mean_blocked_seconds_per_conn_request). - **Silence this alert:** If you are aware of this alert and want to silence notifications for it, add the following to your site configuration and set a reminder to re-evaluate the alert: @@ -1397,7 +1397,7 @@ Generated query for critical alert: `min(((src_gitserver_disk_space_available / **Next steps** - **Single container deployments (removed in 7.0.0):** The single-container deployment mode has been sunset. [Migrate to Docker Compose](../deploy/docker-compose/migrate). -- **Kubernetes and Docker Compose:** Check that you are running a similar number of git server replicas and that their CPU/memory limits are allocated according to what is shown in the [Sourcegraph resource estimator](https://sourcegraph.com/docs/self-hosted/deploy/resource-estimator). +- **Kubernetes and Docker Compose:** Check that you are running a similar number of git server replicas and that their CPU/memory limits are allocated according to what is shown in the [Sourcegraph resource estimator](/self-hosted/deploy/resource-estimator). - If your persistent volume is slow, you may want to provision more IOPS, usually by increasing the volume size. - More help interpreting this metric is available in the [dashboards reference](dashboards#gitserver-echo_command_duration_test). - **Silence this alert:** If you are aware of this alert and want to silence notifications for it, add the following to your site configuration and set a reminder to re-evaluate the alert: @@ -1688,7 +1688,7 @@ Generated query for critical alert: `max((max(max_over_time(src_conf_client_time **Next steps** - Increase SRC_PGSQL_MAX_OPEN together with giving more memory to the database if needed -- Scale up Postgres memory/cpus - [see our scaling guide](https://sourcegraph.com/docs/admin/config/postgres-conf) +- Scale up Postgres memory/cpus - [see our scaling guide](/self-hosted/postgres-conf) - If using GCP Cloud SQL, check for high lock waits or CPU usage in query insights - Learn more about the related dashboard panel in the [dashboards reference](dashboards#gitserver-mean_blocked_seconds_per_conn_request). - **Silence this alert:** If you are aware of this alert and want to silence notifications for it, add the following to your site configuration and set a reminder to re-evaluate the alert: @@ -2006,7 +2006,7 @@ Generated query for warning alert: `min((sum by (job) (pg_stat_activity_count{da **Next steps** -- Consider increasing [max_connections](https://www.postgresql.org/docs/current/runtime-config-connection.html#GUC-MAX-CONNECTIONS) of the database instance, [learn more](https://sourcegraph.com/docs/admin/config/postgres-conf) +- Consider increasing [max_connections](https://www.postgresql.org/docs/current/runtime-config-connection.html#GUC-MAX-CONNECTIONS) of the database instance, [learn more](/self-hosted/postgres-conf) - Learn more about the related dashboard panel in the [dashboards reference](dashboards#postgres-usage_connections_percentage). - **Silence this alert:** If you are aware of this alert and want to silence notifications for it, add the following to your site configuration and set a reminder to re-evaluate the alert: @@ -2496,7 +2496,7 @@ Generated query for warning alert: `max((max by (instance) (clamp_min(time() - s **Next steps** - Increase SRC_PGSQL_MAX_OPEN together with giving more memory to the database if needed -- Scale up Postgres memory/cpus - [see our scaling guide](https://sourcegraph.com/docs/admin/config/postgres-conf) +- Scale up Postgres memory/cpus - [see our scaling guide](/self-hosted/postgres-conf) - If using GCP Cloud SQL, check for high lock waits or CPU usage in query insights - Learn more about the related dashboard panel in the [dashboards reference](dashboards#precise-code-intel-worker-mean_blocked_seconds_per_conn_request). - **Silence this alert:** If you are aware of this alert and want to silence notifications for it, add the following to your site configuration and set a reminder to re-evaluate the alert: @@ -2565,7 +2565,7 @@ Generated query for critical alert: `min((sum by (app) (up{app=~".*precise-code- **Next steps** - Increase SRC_PGSQL_MAX_OPEN together with giving more memory to the database if needed -- Scale up Postgres memory/cpus - [see our scaling guide](https://sourcegraph.com/docs/admin/config/postgres-conf) +- Scale up Postgres memory/cpus - [see our scaling guide](/self-hosted/postgres-conf) - If using GCP Cloud SQL, check for high lock waits or CPU usage in query insights - Learn more about the related dashboard panel in the [dashboards reference](dashboards#syntactic-indexing-mean_blocked_seconds_per_conn_request). - **Silence this alert:** If you are aware of this alert and want to silence notifications for it, add the following to your site configuration and set a reminder to re-evaluate the alert: @@ -3904,7 +3904,7 @@ Generated query for critical alert: `min((max by (name) (src_gitlab_rate_limit_r **Next steps** - **Enabled permissions for the first time:** Wait for few minutes and see if the number goes down. -- **Otherwise:** Increase the API rate limit to [GitHub](https://sourcegraph.com/docs/admin/code_hosts/github#github-com-rate-limits), [GitLab](https://sourcegraph.com/docs/admin/code_hosts/gitlab#internal-rate-limits) or [Bitbucket Server](https://sourcegraph.com/docs/admin/code_hosts/bitbucket_server#internal-rate-limits). +- **Otherwise:** Increase the API rate limit to [GitHub](/admin/code-hosts/github#rate-limits), [GitLab](/admin/code-hosts/gitlab#internal-rate-limits) or [Bitbucket Server](/admin/code-hosts/bitbucket-server#internal-rate-limits). - Learn more about the related dashboard panel in the [dashboards reference](dashboards#worker-perms_syncer_outdated_perms). - **Silence this alert:** If you are aware of this alert and want to silence notifications for it, add the following to your site configuration and set a reminder to re-evaluate the alert: @@ -4034,7 +4034,7 @@ Generated query for warning alert: `max((sum by (name, job_name) (rate(src_perio **Next steps** - Increase SRC_PGSQL_MAX_OPEN together with giving more memory to the database if needed -- Scale up Postgres memory/cpus - [see our scaling guide](https://sourcegraph.com/docs/admin/config/postgres-conf) +- Scale up Postgres memory/cpus - [see our scaling guide](/self-hosted/postgres-conf) - If using GCP Cloud SQL, check for high lock waits or CPU usage in query insights - Learn more about the related dashboard panel in the [dashboards reference](dashboards#worker-mean_blocked_seconds_per_conn_request). - **Silence this alert:** If you are aware of this alert and want to silence notifications for it, add the following to your site configuration and set a reminder to re-evaluate the alert: @@ -4648,7 +4648,7 @@ Generated query for warning alert: `max((sum by (name, job_name) (rate(src_perio **Next steps** - Increase SRC_PGSQL_MAX_OPEN together with giving more memory to the database if needed -- Scale up Postgres memory/cpus - [see our scaling guide](https://sourcegraph.com/docs/admin/config/postgres-conf) +- Scale up Postgres memory/cpus - [see our scaling guide](/self-hosted/postgres-conf) - If using GCP Cloud SQL, check for high lock waits or CPU usage in query insights - Learn more about the related dashboard panel in the [dashboards reference](dashboards#searcher-mean_blocked_seconds_per_conn_request). - **Silence this alert:** If you are aware of this alert and want to silence notifications for it, add the following to your site configuration and set a reminder to re-evaluate the alert: @@ -5575,7 +5575,7 @@ Generated query for warning alert: `max((max by (name) (container_memory_rss{nam - Enabling shard merging for Zoekt: Set SRC_ENABLE_SHARD_MERGING="1" for zoekt-indexserver. Use this option if your corpus of repositories has a high percentage of small, rarely updated repositories. See -[documentation](https://sourcegraph.com/docs/code-search/features#shard-merging). +[documentation](/admin/search#shard-merging). - Creating additional Zoekt replicas: This spreads all the shards out amongst more replicas, which means that each _individual_ replica will have fewer shards. This, in turn, decreases the amount of memory map areas that a _single_ replica can create (in order to load the shards into memory). @@ -5866,7 +5866,7 @@ Generated query for warning alert: `max((sum by (rule_group) (rate(prometheus_ru **Next steps** - Check the Container monitoring (not available on server) panels and try increasing resources for Prometheus if necessary. -- Ensure that your [`observability.alerts` configuration](https://sourcegraph.com/docs/admin/observability/alerting#setting-up-alerting) (in site configuration) is valid. +- Ensure that your [`observability.alerts` configuration](/self-hosted/observability/alerting#setting-up-alerting) (in site configuration) is valid. - Check if the relevant alert integration service is experiencing downtime or issues. - Learn more about the related dashboard panel in the [dashboards reference](dashboards#prometheus-alertmanager_notification_latency). - **Silence this alert:** If you are aware of this alert and want to silence notifications for it, add the following to your site configuration and set a reminder to re-evaluate the alert: @@ -5898,7 +5898,7 @@ Generated query for warning alert: `max((sum by (integration) (rate(alertmanager **Next steps** -- Ensure that your [`observability.alerts` configuration](https://sourcegraph.com/docs/admin/observability/alerting#setting-up-alerting) (in site configuration) is valid. +- Ensure that your [`observability.alerts` configuration](/self-hosted/observability/alerting#setting-up-alerting) (in site configuration) is valid. - Check if the relevant alert integration service is experiencing downtime or issues. - Learn more about the related dashboard panel in the [dashboards reference](dashboards#prometheus-alertmanager_notification_failures). - **Silence this alert:** If you are aware of this alert and want to silence notifications for it, add the following to your site configuration and set a reminder to re-evaluate the alert: @@ -5931,7 +5931,7 @@ Generated query for warning alert: `max((sum by (integration) (rate(alertmanager **Next steps** - Check Prometheus logs for messages related to configuration loading. -- Ensure any [custom configuration you have provided Prometheus](https://sourcegraph.com/docs/admin/observability/metrics#prometheus-configuration) is valid. +- Ensure any [custom configuration you have provided Prometheus](/self-hosted/observability/metrics#prometheus-configuration) is valid. - More help interpreting this metric is available in the [dashboards reference](dashboards#prometheus-prometheus_config_status). - **Silence this alert:** If you are aware of this alert and want to silence notifications for it, add the following to your site configuration and set a reminder to re-evaluate the alert: @@ -5962,7 +5962,7 @@ Generated query for warning alert: `min((prometheus_config_last_reload_successfu **Next steps** -- Ensure that your [`observability.alerts` configuration](https://sourcegraph.com/docs/admin/observability/alerting#setting-up-alerting) (in site configuration) is valid. +- Ensure that your [`observability.alerts` configuration](/self-hosted/observability/alerting#setting-up-alerting) (in site configuration) is valid. - More help interpreting this metric is available in the [dashboards reference](dashboards#prometheus-alertmanager_config_status). - **Silence this alert:** If you are aware of this alert and want to silence notifications for it, add the following to your site configuration and set a reminder to re-evaluate the alert: diff --git a/docs/self-hosted/observability/dashboards.mdx b/docs/self-hosted/observability/dashboards.mdx index d81992a0f..3de5a7d69 100644 --- a/docs/self-hosted/observability/dashboards.mdx +++ b/docs/self-hosted/observability/dashboards.mdx @@ -4,7 +4,7 @@ This document contains a complete reference on Sourcegraph's available dashboards, as well as details on how to interpret the panels and metrics. -To learn more about Sourcegraph's metrics and how to view these dashboards, see [our metrics guide](https://sourcegraph.com/docs/admin/observability/metrics). +To learn more about Sourcegraph's metrics and how to view these dashboards, see [our metrics guide](/self-hosted/observability/metrics). ## Frontend @@ -16542,7 +16542,7 @@ max by (type) (ceil(rate(src_repo_perms_syncer_sync_errors_total[1m])))

Rate of users/repos scheduled for permissions sync

Indicates the per-minute rate at which users/repositories are scheduled for a permissions sync. -More about repository permissions synchronization [here](https://sourcegraph.com/docs/admin/permissions/syncing#scheduling) +More about repository permissions synchronization [here](/admin/permissions/syncing#scheduling) This panel has no related alerts. @@ -26272,7 +26272,7 @@ sum by(job) (scrape_samples_post_metric_relabeling{job!=""}) A high value here indicates Prometheus rule evaluation is taking longer than expected. It might indicate that certain rule groups are taking too long to evaluate, or Prometheus is underprovisioned. -Rules that Sourcegraph ships with are grouped under `/sg_config_prometheus`. [Custom rules are grouped under `/sg_prometheus_addons`](https://sourcegraph.com/docs/admin/observability/metrics#prometheus-configuration). +Rules that Sourcegraph ships with are grouped under `/sg_config_prometheus`. [Custom rules are grouped under `/sg_prometheus_addons`](/self-hosted/observability/metrics#prometheus-configuration). Refer to the [alerts reference](alerts#prometheus-prometheus_rule_eval_duration) for 1 alert related to this panel. @@ -26296,7 +26296,7 @@ sum by(rule_group) (avg_over_time(prometheus_rule_group_last_duration_seconds[10

Failed prometheus rule evaluations over 5m by rule group

-Rules that Sourcegraph ships with are grouped under `/sg_config_prometheus`. [Custom rules are grouped under `/sg_prometheus_addons`](https://sourcegraph.com/docs/admin/observability/metrics#prometheus-configuration). +Rules that Sourcegraph ships with are grouped under `/sg_config_prometheus`. [Custom rules are grouped under `/sg_prometheus_addons`](/self-hosted/observability/metrics#prometheus-configuration). Refer to the [alerts reference](alerts#prometheus-prometheus_rule_eval_failures) for 1 alert related to this panel. diff --git a/docs/self-hosted/updates/automatic.mdx b/docs/self-hosted/updates/automatic.mdx index 61572b4b8..ff45473cc 100644 --- a/docs/self-hosted/updates/automatic.mdx +++ b/docs/self-hosted/updates/automatic.mdx @@ -10,7 +10,7 @@ The documentation below is preserved for users on Sourcegraph versions prior to ## Historical Documentation (Sourcegraph 5.1 - 6.11.x) -> Warning: Automatic upgrades to v5.10.0 will fail please upgrade to a v5.9.x version and perform a standard upgrade instead! See our [postgres 12 end of life](https://sourcegraph.com/docs/self-hosted/postgres12-end-of-life-notice#postgres-12-end-of-life) notice! This is one of the reasons the "Auto Upgrade" toggle is automatically turned off after a version change. This behavior is intentional—it’s designed to prevent users from unintentionally performing multi-version upgrades (MVUs) that span critical changes, such as major infrastructure updates like a PostgreSQL version upgrade. +> Warning: Automatic upgrades to v5.10.0 will fail please upgrade to a v5.9.x version and perform a standard upgrade instead! See our [postgres 12 end of life](/self-hosted/postgres12-end-of-life-notice#postgres-12-end-of-life) notice! This is one of the reasons the "Auto Upgrade" toggle is automatically turned off after a version change. This behavior is intentional—it’s designed to prevent users from unintentionally performing multi-version upgrades (MVUs) that span critical changes, such as major infrastructure updates like a PostgreSQL version upgrade. From **Sourcegraph 5.1 through 6.11.x**, multi-version upgrades could be performed **automatically** as if they were a standard upgrade for the same deployment type. Automatic multi-version upgrades took the following general form: diff --git a/docs/technical-changelog.mdx b/docs/technical-changelog.mdx index 0218273ae..3665a8016 100644 --- a/docs/technical-changelog.mdx +++ b/docs/technical-changelog.mdx @@ -5455,9 +5455,9 @@ There were no reverts for this release > If you are required to continue on 6.0 release series, please upgrade to 6.0 Patch 2. > Attention - Postgres 12 is no longer supported! If upgrading from Sourcegraph version 5.9 or earlier, this release will update our included database container images from Postgres 12 to Postgres 16. -> Customers are advised to have a database backup before upgrading. See our [postgres 12 end of life](https://sourcegraph.com/docs/self-hosted/postgres12-end-of-life-notice#postgres-12-end-of-life) notice for more information. +> Customers are advised to have a database backup before upgrading. See our [postgres 12 end of life](/self-hosted/postgres12-end-of-life-notice#postgres-12-end-of-life) notice for more information. > -> Also be sure to check your deployment type's [upgrade notes](http://sourcegraph.com/docs/admin/updates#instance-specific-procedures)! +> Also be sure to check your deployment type's [upgrade notes](/self-hosted/updates#instance-specific-procedures)! ## v6.0.0 @@ -6148,9 +6148,9 @@ The following PRs were merged onto the previous release branch but could not be # 5.11 Patch 5 > Attention - If upgrading from Sourcegraph version 5.9 or earlier, this release will update our included database container images from Postgres 12 to Postgres 16. -> Customers are advised to have a database backup before upgrading. See our [postgres 12 end of life](https://sourcegraph.com/docs/self-hosted/postgres12-end-of-life-notice#postgres-12-end-of-life) notice for more information. +> Customers are advised to have a database backup before upgrading. See our [postgres 12 end of life](/self-hosted/postgres12-end-of-life-notice#postgres-12-end-of-life) notice for more information. > -> Also be sure to check your deployment type's [upgrade notes](http://sourcegraph.com/docs/admin/updates#instance-specific-procedures)! +> Also be sure to check your deployment type's [upgrade notes](/self-hosted/updates#instance-specific-procedures)! ## v5.11.6271 @@ -6181,9 +6181,9 @@ There were no reverts for this release # 5.11 Patch 4 > Attention - If upgrading from Sourcegraph version 5.9 or earlier, this release will update our included database container images from Postgres 12 to Postgres 16. -> Customers are advised to have a database backup before upgrading. See our [postgres 12 end of life](https://sourcegraph.com/docs/self-hosted/postgres12-end-of-life-notice#postgres-12-end-of-life) notice for more information. +> Customers are advised to have a database backup before upgrading. See our [postgres 12 end of life](/self-hosted/postgres12-end-of-life-notice#postgres-12-end-of-life) notice for more information. > -> Also be sure to check your deployment type's [upgrade notes](http://sourcegraph.com/docs/admin/updates#instance-specific-procedures)! +> Also be sure to check your deployment type's [upgrade notes](/self-hosted/updates#instance-specific-procedures)! ## v5.11.5234 @@ -6223,9 +6223,9 @@ There were no reverts for this release # 5.11 Patch 3 > Attention - If upgrading from Sourcegraph version 5.9 or earlier, this release will update our included database container images from Postgres 12 to Postgres 16. -> Customers are advised to have a database backup before upgrading. See our [postgres 12 end of life](https://sourcegraph.com/docs/self-hosted/postgres12-end-of-life-notice#postgres-12-end-of-life) notice for more information. +> Customers are advised to have a database backup before upgrading. See our [postgres 12 end of life](/self-hosted/postgres12-end-of-life-notice#postgres-12-end-of-life) notice for more information. > -> Also be sure to check your deployment type's [upgrade notes](http://sourcegraph.com/docs/admin/updates#instance-specific-procedures)! +> Also be sure to check your deployment type's [upgrade notes](/self-hosted/updates#instance-specific-procedures)! ## v5.11.4013 @@ -6274,9 +6274,9 @@ There were no reverts for this release # 5.11 Patch 2 > Attention - If upgrading from Sourcegraph version 5.9 or earlier, this release will update our included database container images from Postgres 12 to Postgres 16. -> Customers are advised to have a database backup before upgrading. See our [postgres 12 end of life](https://sourcegraph.com/docs/self-hosted/postgres12-end-of-life-notice#postgres-12-end-of-life) notice for more information. +> Customers are advised to have a database backup before upgrading. See our [postgres 12 end of life](/self-hosted/postgres12-end-of-life-notice#postgres-12-end-of-life) notice for more information. > -> Also be sure to check your deployment type's [upgrade notes](http://sourcegraph.com/docs/admin/updates#instance-specific-procedures)! +> Also be sure to check your deployment type's [upgrade notes](/self-hosted/updates#instance-specific-procedures)! ## v5.11.3601 @@ -6303,9 +6303,9 @@ There were no reverts for this release # 5.11 Patch 1 > Attention - If upgrading from Sourcegraph version 5.9 or earlier, this release will update our included database container images from Postgres 12 to Postgres 16. -> Customers are advised to have a database backup before upgrading. See our [postgres 12 end of life](https://sourcegraph.com/docs/self-hosted/postgres12-end-of-life-notice#postgres-12-end-of-life) notice for more information. +> Customers are advised to have a database backup before upgrading. See our [postgres 12 end of life](/self-hosted/postgres12-end-of-life-notice#postgres-12-end-of-life) notice for more information. > -> Also be sure to check your deployment type's [upgrade notes](http://sourcegraph.com/docs/admin/updates#instance-specific-procedures)! +> Also be sure to check your deployment type's [upgrade notes](/self-hosted/updates#instance-specific-procedures)! ## v5.11.2732 @@ -6340,9 +6340,9 @@ There were no reverts for this release # 5.11 Patch 0 > Attention - If upgrading from Sourcegraph version 5.9 or earlier, this release will update our included database container images from Postgres 12 to Postgres 16. -> Customers are advised to have a database backup before upgrading. See our [postgres 12 end of life](https://sourcegraph.com/docs/self-hosted/postgres12-end-of-life-notice#postgres-12-end-of-life) notice for more information. +> Customers are advised to have a database backup before upgrading. See our [postgres 12 end of life](/self-hosted/postgres12-end-of-life-notice#postgres-12-end-of-life) notice for more information. > -> Also be sure to check your deployment type's [upgrade notes](http://sourcegraph.com/docs/admin/updates#instance-specific-procedures)! +> Also be sure to check your deployment type's [upgrade notes](/self-hosted/updates#instance-specific-procedures)! ## v5.11.0 @@ -6894,9 +6894,9 @@ The following PRs were merged onto the previous release branch but could not be # 5.10 Patch 3 -> Warning: This release updates the database container images from Postgres 12 to Postgres 16, and begins using Wolfi based images. Customers are advised to have a database backup before upgrading! See our [postgres 12 end of life](https://sourcegraph.com/docs/self-hosted/postgres12-end-of-life-notice#postgres-12-end-of-life) notice! +> Warning: This release updates the database container images from Postgres 12 to Postgres 16, and begins using Wolfi based images. Customers are advised to have a database backup before upgrading! See our [postgres 12 end of life](/self-hosted/postgres12-end-of-life-notice#postgres-12-end-of-life) notice! > -> Also be sure to check your deployment type's [upgrade notes](http://sourcegraph.com/docs/admin/updates#instance-specific-procedures)! +> Also be sure to check your deployment type's [upgrade notes](/self-hosted/updates#instance-specific-procedures)! ## v5.10.3940 @@ -6931,9 +6931,9 @@ There were no reverts for this release # 5.10 Patch 2 -> Warning: This release updates the database container images from Postgres 12 to Postgres 16, and begins using Wolfi based images. Customers are advised to have a database backup before upgrading! See our [postgres 12 end of life](https://sourcegraph.com/docs/self-hosted/postgres12-end-of-life-notice#postgres-12-end-of-life) notice! +> Warning: This release updates the database container images from Postgres 12 to Postgres 16, and begins using Wolfi based images. Customers are advised to have a database backup before upgrading! See our [postgres 12 end of life](/self-hosted/postgres12-end-of-life-notice#postgres-12-end-of-life) notice! > -> Also be sure to check your deployment type's [upgrade notes](http://sourcegraph.com/docs/admin/updates#instance-specific-procedures)! +> Also be sure to check your deployment type's [upgrade notes](/self-hosted/updates#instance-specific-procedures)! ## v5.10.2832 @@ -6995,11 +6995,11 @@ There were no reverts for this release # 5.10 Patch 1 -> Warning: This release updates the database container images from Postgres 12 to Postgres 16, and begins using Wolfi based images. Customers are advised to take a database backup before upgrading! See our [Postgres 12 end of life](https://sourcegraph.com/docs/self-hosted/postgres12-end-of-life-notice#postgres-12-end-of-life) notice! +> Warning: This release updates the database container images from Postgres 12 to Postgres 16, and begins using Wolfi based images. Customers are advised to take a database backup before upgrading! See our [Postgres 12 end of life](/self-hosted/postgres12-end-of-life-notice#postgres-12-end-of-life) notice! > > Warning: `automatic` upgrades will require setting the environment variable `SRC_AUTOUPGRADE_IGNORE_DRIFT=true` on the `sourcegraph-frontend` deployment/container. > -> Also be sure to check your deployment type's [upgrade notes](http://sourcegraph.com/docs/admin/updates#instance-specific-procedures)! +> Also be sure to check your deployment type's [upgrade notes](/self-hosted/updates#instance-specific-procedures)! ## v5.10.1164 @@ -7039,11 +7039,11 @@ There were no reverts for this release > Warning: Admins are advised to upgrade directly to v5.10.1164 circumventing this release. > -> Warning: This release updates the database container images from Postgres 12 to Postgres 16, and begins using Wolfi based images. Customers are advised to have a database backup before upgrading! See our [postgres 12 end of life](https://sourcegraph.com/docs/self-hosted/postgres12-end-of-life-notice#postgres-12-end-of-life) notice! +> Warning: This release updates the database container images from Postgres 12 to Postgres 16, and begins using Wolfi based images. Customers are advised to have a database backup before upgrading! See our [postgres 12 end of life](/self-hosted/postgres12-end-of-life-notice#postgres-12-end-of-life) notice! > > Warning: `automatic` and migrator `upgrade` command will not work for this release, please upgrade directly to `v5.10.1164`, or to a 5.9 version and conduct a standard upgrade using migrator's default `up` command! > -> Also be sure to check your deployment type's [upgrade notes](http://sourcegraph.com/docs/admin/updates#instance-specific-procedures)! +> Also be sure to check your deployment type's [upgrade notes](/self-hosted/updates#instance-specific-procedures)! ## v5.10.0 @@ -9700,7 +9700,7 @@ The following PRs were merged onto the previous release branch but could not be - Search: remove smart search logic [#64215](https://github.com/sourcegraph/sourcegraph-public-snapshot/pull/64215)Smart search is no longer supported in the Sourcegraph backend. Old searches that specify 'smart search' mode will be run in the default 'precise' mode. If your query now doesn't behave as expected, you can update it to use the new `patterntype:keyword`. - Search: update Zoekt [#64238](https://github.com/sourcegraph/sourcegraph-public-snapshot/pull/64238) - Added support for all Apex language extensions - - Shard merging for Zoekt is now enabled by default. This reduces MEM requirements for Zoekt webserver and improves performance for some queries. See our [documentation](https://sourcegraph.com/docs/admin/search#shard-merging) for more information. + - Shard merging for Zoekt is now enabled by default. This reduces MEM requirements for Zoekt webserver and improves performance for some queries. See our [documentation](/admin/search#shard-merging) for more information. - Search: Add support to all Apex language extensions [#64194](https://github.com/sourcegraph/sourcegraph-public-snapshot/pull/64194) - Search: Enable improved symbol parsing for large repos (when using Rockskip) [#63988](https://github.com/sourcegraph/sourcegraph-public-snapshot/pull/63988) @@ -9928,7 +9928,7 @@ The following PRs were merged onto the previous release branch but could not be - Consolidate mocks for dbworker/store.Store type [#64294](https://github.com/sourcegraph/sourcegraph-public-snapshot/pull/64294) - Consolidate mocks for uploads's Store type [#64286](https://github.com/sourcegraph/sourcegraph-public-snapshot/pull/64286) - Move cmd/frontend/oneclickexport to cmd/frontend/internal/oneclickexport [#64069](https://github.com/sourcegraph/sourcegraph-public-snapshot/pull/64069) -- Move authn into cmd/frontend [#63648](https://github.com/sourcegraph/sourcegraph-public-snapshot/pull/63648)GitLab code host connections were [able to sync permissions by mapping Sourcegraph users to GitLab users via the username property of an external OIDC or SAML provider](https://sourcegraph.com/docs/admin/code-hosts/gitlab#administrator-sudo-level-access-token) that is shared across Sourcegraph and GitLab. This integration stopped working a long time ago, and it has been removed in this release. +- Move authn into cmd/frontend [#63648](https://github.com/sourcegraph/sourcegraph-public-snapshot/pull/63648)GitLab code host connections were [able to sync permissions by mapping Sourcegraph users to GitLab users via the username property of an external OIDC or SAML provider](/admin/code-hosts/gitlab#administrator-sudo-level-access-token) that is shared across Sourcegraph and GitLab. This integration stopped working a long time ago, and it has been removed in this release. - Replace calls to deprecated ioutil.TempFile [#64177](https://github.com/sourcegraph/sourcegraph-public-snapshot/pull/64177) #### Svelte @@ -10616,7 +10616,7 @@ The following PRs were merged onto the previous release branch but could not be - For perforce depots, support searching within a specific changelist by specifying a ref like `context:global repo:^repo/name$@changelist/83854` - Introduce database fields for github apps - Batch changes integration, and update database layer [#63577](https://github.com/sourcegraph/sourcegraph-public-snapshot/pull/63577) - Sg: sqlite-backed local store for sg analytics [#63578](https://github.com/sourcegraph/sourcegraph-public-snapshot/pull/63578) -- Search: remove keyword toggle [#63584](https://github.com/sourcegraph/sourcegraph-public-snapshot/pull/63584)The keyword search toggle has been removed from the search results page. [Keyword search](https://sourcegraph.com/docs/code-search/queries#keyword-search-default) is now enabled by default for all searches in the Sourcegraph web app. +- Search: remove keyword toggle [#63584](https://github.com/sourcegraph/sourcegraph-public-snapshot/pull/63584)The keyword search toggle has been removed from the search results page. [Keyword search](/code-search/queries#keyword-search-default) is now enabled by default for all searches in the Sourcegraph web app. - Sg: one-time oauth login to persist user email for analytics [#63603](https://github.com/sourcegraph/sourcegraph-public-snapshot/pull/63603) - Cody: Expose Sg modelconfig data via HTTP REST API [#63604](https://github.com/sourcegraph/sourcegraph-public-snapshot/pull/63604)Sourcegraph instances how expose an HTTP endpoint that authenticated users can call to get a list of LLM models supported by the Sourcegraph instance. In the future this will be used to allow Cody users to select the LLM model dynamically, based on what is currently available. - Batches: use "keyword" as default pattern type [#63613](https://github.com/sourcegraph/sourcegraph-public-snapshot/pull/63613) @@ -11765,7 +11765,7 @@ The following PRs were merged onto the previous release branch but could not be - Search Jobs switches the format of downloaded results from CSV to JSON. [#59619](https://github.com/sourcegraph/sourcegraph-public-snapshot/pull/59619) - [Search Jobs](/code-search/types/search-jobs) is now in beta and enabled by default. It can be disabled in the site configuration by setting `experimentalFeatures.searchJobs: false`. - The search input on the search homepage is now automatically focused when the page loads. -- GRPC is now the only method for our internal APIs, and can not be disabled. All of corresponding the REST implementations have been removed. The vast majority of customers upgrading to 5.3 don't need to take any action - The change should be invisible. However, if you have restrictions on Sourcegraph’s internal (service to service) traffic, some firewall or security configurations may be necessary. You can downgrade to Sourcegraph 5.2 and disable gRPC while you troubleshoot / reach out to our customer support team. See [https://sourcegraph.com/docs/admin/updates/grpc](https://sourcegraph.com/docs/admin/updates/grpc) for more details. [#59093](https://github.com/sourcegraph/sourcegraph-public-snapshot/pull/59093) +- GRPC is now the only method for our internal APIs, and can not be disabled. All of corresponding the REST implementations have been removed. The vast majority of customers upgrading to 5.3 don't need to take any action - The change should be invisible. However, if you have restrictions on Sourcegraph’s internal (service to service) traffic, some firewall or security configurations may be necessary. You can downgrade to Sourcegraph 5.2 and disable gRPC while you troubleshoot / reach out to our customer support team. See the [Sourcegraph 5.3 gRPC configuration guide](https://5.3.sourcegraph.com/admin/updates/grpc) for more details. [#59093](https://github.com/sourcegraph/sourcegraph-public-snapshot/pull/59093) - The default `count:` for search has been increased to 10000, significantly increasing the number of searches that are exhaustive by default. [#60114](https://github.com/sourcegraph/sourcegraph-public-snapshot/pull/60114) ### Fixed From 3a62b139585f2f9165ac558d000c0027e51169bc Mon Sep 17 00:00:00 2001 From: Marc <7050295+marcleblanc2@users.noreply.github.com> Date: Thu, 10 Sep 2026 19:46:38 -0600 Subject: [PATCH 196/217] chore: Remove unused dependencies and bump vulnerable packages (#1898) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit `pnpm audit` on `main`: **184 advisories** (4 critical, 71 high). After this PR: **40** (2 critical, 17 high), all of which are pinned by `next` 14 or `contentlayer` 0.3.4. ## Changes - **Remove `baseai` / `@baseai/core`**, the `baseai/` memory config, `docs-chatbot.md`, and the `pnpm sync` script. The Langbase chatbot was replaced by runLLM and nothing imports these. They alone pulled in `hono` (34 advisories), `tar` (12, incl. 1 critical), `xlsx` (2 high, no fix available), `form-data`, `yaml`, `uuid`, and most of the `minimatch` / `brace-expansion` hits. - **Remove `js-yaml`** from direct dependencies: never imported by `src/` or `dev/`. - **`mermaid` 11.12 → 11.16**: carries the `dompurify` XSS fixes, the only vulnerable code that actually ships to visitors' browsers. - **`sharp` 0.32 → 0.35** (devDep, build only): libvips / libheif CVEs. - Re-resolve vulnerable transitives within their existing semver ranges (`minimatch`, `brace-expansion`, `picomatch`, `nanoid`, `protobufjs`, `@grpc/grpc-js`, ...). Lockfile loses ~2,000 lines. - `.gitignore`: add `/logs` for script output, drop the stale `**/.baseai/` entry. ## Verification - Clicked through Vercel preview, checked Mermaid diagrams, search, nav menu, it all works With `node 20.20` / `pnpm 10.25` (per `.tool-versions`): - `npx tsc --noEmit` clean, `pnpm lint` clean - `pnpm build`: 521 documents, 526 static pages, `dev/check-links` / `check-filenames` / `check-images` / `generate-mermaid-icons` all pass; route table unchanged - Both pages with Mermaid diagrams (`admin/architecture`, `self-hosted/sourcegraph-nginx-mermaid`) render correctly under `next start` in headless Chrome - `pnpm why baseai hono tar xlsx` → not found; `rg baseai` → only the AGENTS.md history note --------- Co-authored-by: Amp --- .gitignore | 4 +- AGENTS.md | 9 +- baseai/baseai.config.ts | 18 - baseai/memory/memory-sg-docs-live/index.ts | 27 - docs-chatbot.md | 11 - package.json | 9 +- pnpm-lock.yaml | 2528 +++++--------------- 7 files changed, 540 insertions(+), 2066 deletions(-) delete mode 100644 baseai/baseai.config.ts delete mode 100644 baseai/memory/memory-sg-docs-live/index.ts delete mode 100644 docs-chatbot.md diff --git a/.gitignore b/.gitignore index ff9bc8266..17667a58c 100644 --- a/.gitignore +++ b/.gitignore @@ -46,8 +46,8 @@ next-env.d.ts # We ignore the generated file as it should always be generated public/changelog.rss -# baseai -**/.baseai/ +# script output +/logs # env file .env diff --git a/AGENTS.md b/AGENTS.md index e0c1083c9..6c6ea676e 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -41,14 +41,7 @@ To update the runLLM assistant ID or other settings, modify the Script component /> ``` -### Previous Integration - -Previously used **Langbase** with custom React components. This has been completely removed: - -- Removed `@langbase/components` and `langbase` packages -- Removed custom chat components (`src/app/chat.tsx`, `src/components/ChatBot/`) -- Removed API routes (`src/app/api/chat/`) -- Removed memory creation scripts +The previous **Langbase** / `baseai` chatbot integration has been fully removed (packages, components, API routes, `baseai/` memory config, and the `pnpm sync` script). ## Important Notes diff --git a/baseai/baseai.config.ts b/baseai/baseai.config.ts deleted file mode 100644 index 41bcc3979..000000000 --- a/baseai/baseai.config.ts +++ /dev/null @@ -1,18 +0,0 @@ -import type {BaseAIConfig} from 'baseai'; - -export const config: BaseAIConfig = { - log: { - isEnabled: true, - logSensitiveData: false, - pipe: true, - 'pipe.completion': true, - 'pipe.request': true, - 'pipe.response': true, - tool: true, - memory: true - }, - memory: { - useLocalEmbeddings: false - }, - envFilePath: '.env' -}; diff --git a/baseai/memory/memory-sg-docs-live/index.ts b/baseai/memory/memory-sg-docs-live/index.ts deleted file mode 100644 index ba412823f..000000000 --- a/baseai/memory/memory-sg-docs-live/index.ts +++ /dev/null @@ -1,27 +0,0 @@ -import {MemoryI} from '@baseai/core'; - -const memoryDocs = (): MemoryI => ({ - name: 'memory-sg-docs-live', - description: 'An AI memory storing all Sourcegraph docs.', - git: { - enabled: true, - include: ['**/*.mdx'], - gitignore: true, - embeddedAt: '', - deployedAt: '2506bf08459286cb0fe9f1bdebb6c73f0e19d765' - }, - documents: { - meta: doc => { - const url = `https://sourcegraph.com/docs/${doc.path}`; - return { - url, - name: doc.name - }; - } - } -}); - -export default memoryDocs; - -// Old -// deployedAt: '5f3fec8530280d01a783aadcdeb0ccc3f9cd8b70', diff --git a/docs-chatbot.md b/docs-chatbot.md deleted file mode 100644 index fc0eacc95..000000000 --- a/docs-chatbot.md +++ /dev/null @@ -1,11 +0,0 @@ -# How we use Docs Chatbot? - -Contact the docs team for any more questions on this. - -## To sync all the latest docs changes in the `main` branch check out to the `main` branch and run - -```sh -pnpm sync -``` - -This will verify all the changes since the last sync, update these files, and then write the commit hash to `baseai/memory/docs/index.ts` file which you should commit to keep track. diff --git a/package.json b/package.json index 93900c805..389346a57 100644 --- a/package.json +++ b/package.json @@ -11,15 +11,12 @@ "check-filenames": "node dev/check-filenames.mjs", "check-images": "node dev/check-images.mjs", "generate-mermaid-logos": "node dev/generate-aws-icons.mjs", - "baseai": "baseai", - "sync": "npx baseai@latest deploy -m memory-sg-docs-live", "format": "prettier --config ./prettier.config.js --cache --cache-strategy metadata --write=true '**/{*.{js?(on),ts?(x),md,mdx,s?css},.*.js?(on)}'" }, "browserslist": "defaults, not ie <= 11", "dependencies": { "@algolia/autocomplete-core": "^1.13.0", "@algolia/client-search": "^4.22.1", - "@baseai/core": "^0.9.41", "@docsearch/react": "^3.5.2", "@headlessui/react": "^1.7.17", "@heroicons/react": "^2.1.1", @@ -43,11 +40,10 @@ "fast-glob": "^3.3.2", "feed": "^4.2.2", "github-slugger": "^2.0.0", - "js-yaml": "^4.1.0", "kbar": "0.1.0-beta.44", "lucide-react": "^0.372.0", "mdx": "^0.3.1", - "mermaid": "^11.12.2", + "mermaid": "^11.16.1", "next": "^14.2.23", "next-contentlayer": "^0.3.4", "next-themes": "^0.2.1", @@ -71,13 +67,12 @@ "unist-util-visit": "^5.0.0" }, "devDependencies": { - "baseai": "^0.9.41", "dotenv": "^16.4.7", "eslint": "8.45.0", "eslint-config-next": "13.4.16", "glob": "^11.0.3", "prettier": "^3.1.1", "prettier-plugin-tailwindcss": "^0.5.9", - "sharp": "^0.32.6" + "sharp": "^0.35.4" } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 26f546597..c71d9b930 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -14,9 +14,6 @@ importers: '@algolia/client-search': specifier: ^4.22.1 version: 4.25.3 - '@baseai/core': - specifier: ^0.9.41 - version: 0.9.43(react@18.3.1)(zod@3.25.76) '@docsearch/react': specifier: ^3.5.2 version: 3.9.0(@algolia/client-search@4.25.3)(@types/react@18.2.20)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(search-insights@2.17.3) @@ -46,7 +43,7 @@ importers: version: 1.2.4(@types/react@18.2.20)(react@18.3.1) '@tailwindcss/typography': specifier: ^0.5.10 - version: 0.5.19(tailwindcss@3.4.19(yaml@2.8.2)) + version: 0.5.19(tailwindcss@3.4.19(yaml@2.9.0)) '@types/node': specifier: 20.4.9 version: 20.4.9 @@ -64,7 +61,7 @@ importers: version: 4.25.3 autoprefixer: specifier: ^10.4.16 - version: 10.4.24(postcss@8.5.6) + version: 10.4.24(postcss@8.5.28) class-variance-authority: specifier: ^0.7.0 version: 0.7.1 @@ -86,9 +83,6 @@ importers: github-slugger: specifier: ^2.0.0 version: 2.0.0 - js-yaml: - specifier: ^4.1.0 - version: 4.1.1 kbar: specifier: 0.1.0-beta.44 version: 0.1.0-beta.44(@types/react-dom@18.2.7)(@types/react@18.2.20)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) @@ -99,8 +93,8 @@ importers: specifier: ^0.3.1 version: 0.3.1 mermaid: - specifier: ^11.12.2 - version: 11.12.2 + specifier: ^11.16.1 + version: 11.17.2 next: specifier: ^14.2.23 version: 14.2.35(@opentelemetry/api@1.9.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) @@ -154,10 +148,10 @@ importers: version: 2.6.1 tailwindcss: specifier: ^3.4.0 - version: 3.4.19(yaml@2.8.2) + version: 3.4.19(yaml@2.9.0) tailwindcss-animate: specifier: ^1.0.7 - version: 1.0.7(tailwindcss@3.4.19(yaml@2.8.2)) + version: 1.0.7(tailwindcss@3.4.19(yaml@2.9.0)) typescript: specifier: 5.1.6 version: 5.1.6 @@ -165,9 +159,6 @@ importers: specifier: ^5.0.0 version: 5.1.0 devDependencies: - baseai: - specifier: ^0.9.41 - version: 0.9.44(@types/node@20.4.9)(react@18.3.1)(typescript@5.1.6) dotenv: specifier: ^16.4.7 version: 16.6.1 @@ -187,8 +178,8 @@ importers: specifier: ^0.5.9 version: 0.5.14(prettier@3.8.1) sharp: - specifier: ^0.32.6 - version: 0.32.6 + specifier: ^0.35.4 + version: 0.35.4(@types/node@20.4.9) packages: @@ -334,68 +325,15 @@ packages: '@antfu/install-pkg@1.1.0': resolution: {integrity: sha512-MGQsmw10ZyI+EJo45CdSER4zEb+p31LpDAFp2Z3gkSd1yqVZGi0Ebx++YTEMonJy4oChEMLsxZ64j8FH6sSqtQ==} - '@antfu/ni@0.23.2': - resolution: {integrity: sha512-FSEVWXvwroExDXUu8qV6Wqp2X3D1nJ0Li4LFymCyvCVrm7I3lNfG0zZWSWvGU1RE7891eTnFTyh31L3igOwNKQ==} - hasBin: true - - '@asteasolutions/zod-to-openapi@7.3.4': - resolution: {integrity: sha512-/2rThQ5zPi9OzVwes6U7lK1+Yvug0iXu25olp7S0XsYmOqnyMfxH7gdSQjn/+DSOHRg7wnotwGJSyL+fBKdnEA==} - peerDependencies: - zod: ^3.20.2 - - '@babel/code-frame@7.29.0': - resolution: {integrity: sha512-9NhCeYjq9+3uxgdtp20LSiJXJvN0FeCtNGpJxuMFZ1Kv3cWUNb6DOhJwUvcVCzKGR66cw4njwM6hrJLqgOwbcw==} - engines: {node: '>=6.9.0'} - - '@babel/helper-validator-identifier@7.28.5': - resolution: {integrity: sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==} - engines: {node: '>=6.9.0'} - '@babel/runtime@7.28.6': resolution: {integrity: sha512-05WQkdpL9COIMz4LjTxGpPNCdlpyimKppYNoJ5Di5EUObifl8t4tuLuUBBZEpoLYOmfvIWrsp9fCl0HoPRVTdA==} engines: {node: '>=6.9.0'} - '@baseai/core@0.9.43': - resolution: {integrity: sha512-jb0EUJjWqvvqq6Kh7xKTdCwgez4/hoJH3B8VaoWYLXYquOpCsGmVe7hgtt22bgJ2r6LPucglLShGz5uv9DbbKA==} - engines: {node: '>=18'} - peerDependencies: - react: ^18 || ^19 - zod: ^3.0.0 - peerDependenciesMeta: - react: - optional: true - zod: - optional: true - '@braintree/sanitize-url@7.1.2': resolution: {integrity: sha512-jigsZK+sMF/cuiB7sERuo9V7N9jx+dhmHHnQyDSVdpZwVutaBu7WvNYqMDLSgFgfB30n452TP3vjDAvFC973mA==} - '@chevrotain/cst-dts-gen@11.0.3': - resolution: {integrity: sha512-BvIKpRLeS/8UbfxXxgC33xOumsacaeCKAjAeLyOn7Pcp95HiRbrpl14S+9vaZLolnbssPIUuiUd8IvgkRyt6NQ==} - - '@chevrotain/gast@11.0.3': - resolution: {integrity: sha512-+qNfcoNk70PyS/uxmj3li5NiECO+2YKZZQMbmjTqRI3Qchu8Hig/Q9vgkHpI3alNjr7M+a2St5pw5w5F6NL5/Q==} - - '@chevrotain/regexp-to-ast@11.0.3': - resolution: {integrity: sha512-1fMHaBZxLFvWI067AVbGJav1eRY7N8DDvYCTwGBiE/ytKBgP8azTdgyrKyWZ9Mfh09eHWb5PgTSO8wi7U824RA==} - - '@chevrotain/types@11.0.3': - resolution: {integrity: sha512-gsiM3G8b58kZC2HaWR50gu6Y1440cHiJ+i3JUvcp/35JchYejb2+5MVeJK0iKThYpAa/P2PYFV4hoi44HD+aHQ==} - - '@chevrotain/utils@11.0.3': - resolution: {integrity: sha512-YslZMgtJUyuMbZ+aKvfF3x1f5liK4mWNxghFRv7jqRR9C3R3fAOGTTKvxXDa2Y1s9zSbcpuO0cAxDYsc9SrXoQ==} - - '@clack/core@0.3.5': - resolution: {integrity: sha512-5cfhQNH+1VQ2xLQlmzXMqUoiaH0lRBq9/CLW9lTyMbuKLC3+xEK01tHVvyut++mLOn5urSHmkm6I0Lg9MaJSTQ==} - - '@clack/prompts@0.7.0': - resolution: {integrity: sha512-0MhX9/B4iL6Re04jPrttDm+BsP8y6mS7byuv0BvXgdXhbV5PdlsHt55dvNsuBCPZ7xq1oTAOOuotR9NFbQyMSA==} - bundledDependencies: - - is-unicode-supported - - '@colors/colors@1.5.0': - resolution: {integrity: sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==} - engines: {node: '>=0.1.90'} + '@chevrotain/types@11.1.2': + resolution: {integrity: sha512-U+HFai5+zmJCkK86QsaJtoITlboZHBqrVketcO2ROv865xfCMSFpELQoz1GkX5GzME8pTa+3kbKrZHQtI0gdbw==} '@contentlayer/cli@0.3.4': resolution: {integrity: sha512-vNDwgLuhYNu+m70NZ3XK9kexKNguuxPXg7Yvzj3B34cEilQjjzSrcTY/i+AIQm9V7uT5GGshx9ukzPf+SmoszQ==} @@ -483,6 +421,9 @@ packages: '@emnapi/core@1.8.1': resolution: {integrity: sha512-AvT9QFpxK0Zd8J0jopedNm+w/2fIzvtPKPjqyw9jwvBaReTTqPBk9Hixaz7KbjimP+QNz605/XnjFcDAL2pqBg==} + '@emnapi/runtime@1.11.3': + resolution: {integrity: sha512-Xz4Tpyki7XyrpbUK1jR1AhdAdaXyhhY4lZ3neLodmhpuWfy2PAQN5B46sAiU4liOXGLkHypn/qU+jvfWSCYYLA==} + '@emnapi/runtime@1.8.1': resolution: {integrity: sha512-mehfKSMWjjNol8659Z8KxEMrdSJDDot5SXMq00dM8BN4o+CLNXQ0xH2V7EchNHV4RmbZLmmPdEaXZc5H2FXmDg==} @@ -662,8 +603,8 @@ packages: '@floating-ui/utils@0.2.10': resolution: {integrity: sha512-aGTxbpbg8/b5JfU1HXSrbH3wXZuLPJcNEcZQFMxLs3oSzgtVu6nFPkbbGGUvBcUjKV2YyB9Wxxabo+HEH9tcRQ==} - '@grpc/grpc-js@1.14.3': - resolution: {integrity: sha512-Iq8QQQ/7X3Sac15oB6p0FmUg/klxQvXLeileoqrTRGJYLV+/9tubbr9ipz0GKHjmXVsgFPo/+W+2cA8eNcR+XA==} + '@grpc/grpc-js@1.14.4': + resolution: {integrity: sha512-k9Dj3DV/itK9D06Y8f190Qgop7/Ui+D0njFV3LHMPwPT75DpXLQohE9Wmz0QElrJnzsjB7KPWiKJbOl7IPDArQ==} engines: {node: '>=12.10.0'} '@grpc/proto-loader@0.8.0': @@ -683,25 +624,6 @@ packages: peerDependencies: react: '>= 16 || ^19.0.0-rc' - '@hono/node-server@1.19.9': - resolution: {integrity: sha512-vHL6w3ecZsky+8P5MD+eFfaGTyCeOHUIFYMGpQGbrBTSmNNoxv0if69rEZ5giu36weC5saFuznL411gRX7bJDw==} - engines: {node: '>=18.14.1'} - peerDependencies: - hono: ^4 - - '@hono/zod-openapi@0.16.4': - resolution: {integrity: sha512-mnF6GthBaKex0D5PsY/4lYNtkaGJNE38bjeUI//EUqq7Ee4TNm2su35IUiFH4HcmJp5fWYMLyOJOpjnkClzEGw==} - engines: {node: '>=16.0.0'} - peerDependencies: - hono: '>=4.3.6' - zod: 3.* - - '@hono/zod-validator@0.3.0': - resolution: {integrity: sha512-7XcTk3yYyk6ldrO/VuqsroE7stvDZxHJQcpATRAyha8rUxJNBPV3+6waDrARfgEqxOVlzIadm3/6sE/dPseXgQ==} - peerDependencies: - hono: '>=3.9.0' - zod: ^3.19.1 - '@humanwhocodes/config-array@0.11.14': resolution: {integrity: sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==} engines: {node: '>=10.10.0'} @@ -724,13 +646,151 @@ packages: '@iconify/utils@3.1.0': resolution: {integrity: sha512-Zlzem1ZXhI1iHeeERabLNzBHdOa4VhQbqAcOQaMKuTuyZCpwKbC2R4Dd0Zo3g9EAc+Y4fiarO8HIHRAth7+skw==} - '@isaacs/balanced-match@4.0.1': - resolution: {integrity: sha512-yzMTt9lEb8Gv7zRioUilSglI0c0smZ9k5D65677DLWLtWJaXIS3CqcGyUFByYKlnUj6TkjLVs54fBl6+TiGQDQ==} - engines: {node: 20 || >=22} + '@img/colour@1.1.0': + resolution: {integrity: sha512-Td76q7j57o/tLVdgS746cYARfSyxk8iEfRxewL9h4OMzYhbW4TAcppl0mT4eyqXddh6L/jwoM75mo7ixa/pCeQ==} + engines: {node: '>=18'} - '@isaacs/brace-expansion@5.0.1': - resolution: {integrity: sha512-WMz71T1JS624nWj2n2fnYAuPovhv7EUhk69R6i9dsVyzxt5eM3bjwvgk9L+APE1TRscGysAVMANkB0jh0LQZrQ==} - engines: {node: 20 || >=22} + '@img/sharp-darwin-arm64@0.35.4': + resolution: {integrity: sha512-Uhfl4V4lhP2nbUVF9+hyH1+luj86f1gUFeo8ALYxFoULoU+G87D43BfeMP8XHsk9boxAnCY/bf2EHwhA7MuGsA==} + engines: {node: '>=20.9.0'} + cpu: [arm64] + os: [darwin] + + '@img/sharp-darwin-x64@0.35.4': + resolution: {integrity: sha512-hWniXY3bG5qKpkKrAwPe4y+VTPmf086YQAnkxWh7uA1YrlRouWGa0M0Mxj3ZjnXFkv7/TD1bTy9lGUK26vRvWw==} + engines: {node: '>=20.9.0'} + cpu: [x64] + os: [darwin] + + '@img/sharp-freebsd-wasm32@0.35.4': + resolution: {integrity: sha512-lIsKw/BU+kjB4eZjxrYrZmwOJYi3Ajrv66iAlBmUPyKc3HpnloevB1g3wxGD9P/5BbQ1brBGl65VRRrCvQDEqA==} + engines: {node: '>=20.9.0'} + os: [freebsd] + + '@img/sharp-libvips-darwin-arm64@1.3.3': + resolution: {integrity: sha512-suTBPTDGrI9WodccaDdwZItTSaBYASlBk1NSfElSHrUfzu3szG6lvIF58+WiFvnfzuK8ZBFS5zE00PxqxnRiPg==} + cpu: [arm64] + os: [darwin] + + '@img/sharp-libvips-darwin-x64@1.3.3': + resolution: {integrity: sha512-FVJZ5mITMobmXIz/hPDTw0EintTW5H3WfrxwLqEqjiIihlu+hVRyGrFQ60xl0Lxn7Bt3zdpevPaQi0HEzqz9fw==} + cpu: [x64] + os: [darwin] + + '@img/sharp-libvips-linux-arm64@1.3.3': + resolution: {integrity: sha512-0DaL0A6Xu6sQSQFwe4iVCrKWU2cCTItnRsYsCdxAMm9NF6twAA9BKnoqy4hqz4+azQ0JHuA26qiUKsf1XJ/v5A==} + cpu: [arm64] + os: [linux] + + '@img/sharp-libvips-linux-arm@1.3.3': + resolution: {integrity: sha512-3rbU4vqXXc3hY/OiXdl52xZvT0F1yEngWfvqudtPJg/KkyiaQw2DRsFrNzpmLvfavbwOq3qXn36GP8obHRULQA==} + cpu: [arm] + os: [linux] + + '@img/sharp-libvips-linux-ppc64@1.3.3': + resolution: {integrity: sha512-cdn1OvUBwsXhbC0zSzJnNzf5MZ/mTrobawDvNXBTxe8VtqKAm0sRuEY2Evzovb/w9JMk4TvRxqt1mekSuJz64w==} + cpu: [ppc64] + os: [linux] + + '@img/sharp-libvips-linux-riscv64@1.3.3': + resolution: {integrity: sha512-HjPVx7yKz+0lqdhDlTw1tt90wamBoxhiXpvl1XZpJLiHH4RCJ5yDTqH+VlYPv2fwFs89JFw4c1IexYOcQUi4IQ==} + cpu: [riscv64] + os: [linux] + + '@img/sharp-libvips-linux-s390x@1.3.3': + resolution: {integrity: sha512-neWLh+3yCNThxnfy3c4BbVBeGgt9aftno+XbT56iK28RgeDs3UOFWviLWlUu0bArYVYJaFDK+RRohbicUNCm8Q==} + cpu: [s390x] + os: [linux] + + '@img/sharp-libvips-linux-x64@1.3.3': + resolution: {integrity: sha512-4vKmvAst9nrowcqquKFAyZJUDolUaIp8uRiN0mWFguJ1IplC9/pitXtlnnlU4aa/eJw3J7i67V+pwUL+wZGdsA==} + cpu: [x64] + os: [linux] + + '@img/sharp-libvips-linuxmusl-arm64@1.3.3': + resolution: {integrity: sha512-Y9kQaLMuNoB0bPYOOdcZMaseNrFpPodIWWMrx+CZyydf2xn68j9WYc6sWWRrDwNkzCQjKYfc68L7jKjGlHMibw==} + cpu: [arm64] + os: [linux] + + '@img/sharp-libvips-linuxmusl-x64@1.3.3': + resolution: {integrity: sha512-fj8Mv0HHfD1Rr+4I68+3agJynxDWtBFgicTbSOb9Bke6pIwzGcJ+RX/yHjmiEGFMCavY/dxvem7MyNaJF+wDiw==} + cpu: [x64] + os: [linux] + + '@img/sharp-linux-arm64@0.35.4': + resolution: {integrity: sha512-De4jpEnAU8Hd5oT0j1G3uL4ZvTuipVMn7YC6vPaJhy6/7EwEae0SVAoBrUMYQbkLGDm85taVWwuPc1a44LTzCQ==} + engines: {node: '>=20.9.0'} + cpu: [arm64] + os: [linux] + + '@img/sharp-linux-arm@0.35.4': + resolution: {integrity: sha512-7OAS8gI0EReKGVN2HssHlM6umJgxF5VI3xN0p9FA91p/YO+ou5hiNghLdZ5BEHztwaaK5+bLKRf8x/o2L2nk9A==} + engines: {node: '>=20.9.0'} + cpu: [arm] + os: [linux] + + '@img/sharp-linux-ppc64@0.35.4': + resolution: {integrity: sha512-2oYZJeIl4kCcMGk4ouZVjnkCtFrpQFlNEtJ6GbxzhHQchwH0NH/qEb9ykmOl29dqwMq+JhFdZn+1ak2FKhI9fQ==} + engines: {node: '>=20.9.0'} + cpu: [ppc64] + os: [linux] + + '@img/sharp-linux-riscv64@0.35.4': + resolution: {integrity: sha512-cPbNChoRURAWdebDIHSenxRpgEdy7JkPydSnUxRm9VvKD7m0/xVaR/8Fzlu81pk5nHEvHH87UZUA7cTtwnbJSA==} + engines: {node: '>=20.9.0'} + cpu: [riscv64] + os: [linux] + + '@img/sharp-linux-s390x@0.35.4': + resolution: {integrity: sha512-RY0JFY8Fd6RonCBtHz+DvadaPkXDSI1AUn6yWL9TipqkZ1vY8w8evqdgyDFnkm4/K1ve1TvZiaePP5oSd4+WVQ==} + engines: {node: '>=20.9.0'} + cpu: [s390x] + os: [linux] + + '@img/sharp-linux-x64@0.35.4': + resolution: {integrity: sha512-9qvvEAuk8k89TfWUoX2htWjbAMX8p+NxCppjpcg5k6xMsjhBQPTsoIh36h9Qde4WRuGpJeYnOjdosDn/cnv+OA==} + engines: {node: '>=20.9.0'} + cpu: [x64] + os: [linux] + + '@img/sharp-linuxmusl-arm64@0.35.4': + resolution: {integrity: sha512-KB5jxpfWQTr0nc3xdHtWChdbifHrBGsd2SM62Eyxrl8afikm+f5qGBU75SJIZBT/S1MC8XyacdlXBMSWq6OURA==} + engines: {node: '>=20.9.0'} + cpu: [arm64] + os: [linux] + + '@img/sharp-linuxmusl-x64@0.35.4': + resolution: {integrity: sha512-f+eZJZIQNEEd26RPSW+76chwOf1XtA2Y/O+5ocVyLliHkeih3e+jhLVBdNTd2rS3IbNXK8+ug93Vf5ZXtF5Lxg==} + engines: {node: '>=20.9.0'} + cpu: [x64] + os: [linux] + + '@img/sharp-wasm32@0.35.4': + resolution: {integrity: sha512-zQnl4Kwp7Q6NHsENtU2T/00Zi+w3AQNwz3+UaTyVBy2FpXrzXzGjndpK61onhZjRtRpQXxCTeqw19bVyXOh7jA==} + engines: {node: '>=20.9.0'} + + '@img/sharp-webcontainers-wasm32@0.35.4': + resolution: {integrity: sha512-ESfNkywmCfPNyaZjxooddJQiQ+l/nTpGEOGthxiLnIHXC/CmcBixnfwUleX9mCz9ovrUUvKMap/pm8RYbzfwaA==} + engines: {node: '>=20.9.0'} + cpu: [wasm32] + + '@img/sharp-win32-arm64@0.35.4': + resolution: {integrity: sha512-iNdlBX9gLVvqe2I3uIJSIKTq6wckP/DYxZtcqxm09x5Gi24DnFBmPAWZmr60ZyYMG0xlzo6goG3670ar+RXvRw==} + engines: {node: '>=20.9.0'} + cpu: [arm64] + os: [win32] + + '@img/sharp-win32-ia32@0.35.4': + resolution: {integrity: sha512-kqRsbaa5CS6KHlpxnN7WhE6vAAugXyZButpRdvDWetlv6Qv4N9WTcrWzF7tXfB9T7MsoadqdI8hmwLq6UlLvtw==} + engines: {node: ^20.9.0} + cpu: [ia32] + os: [win32] + + '@img/sharp-win32-x64@0.35.4': + resolution: {integrity: sha512-XtmnYhBcrORsJ4XJngyzr/EWP0hRZLAZRFaApdKuviyqF78+ylxh2y06ZmtULAMOnObJ3ucpN0AcwSWnMowTRg==} + engines: {node: '>=20.9.0'} + cpu: [x64] + os: [win32] '@isaacs/cliui@9.0.0': resolution: {integrity: sha512-AokJm4tuBHillT+FpMtxQ60n8ObyXBatq7jD2/JA9dxbDDokKQm8KMht5ibGzLVU9IJDIKK4TPKgMHEYMn3lMg==} @@ -760,10 +820,6 @@ packages: resolution: {integrity: sha512-n5JEf16Wr4mdkRMZ8wMP/wN9/sHmTjRPbouXjJH371mZ2LEGDl72t8tEsMRNFerQN/QJtivOxqK1frdGa4QK5Q==} engines: {node: '>=10'} - '@mapbox/node-pre-gyp@1.0.11': - resolution: {integrity: sha512-Yhlar6v9WQgUp/He7BdgzOz8lqMQ8sU+jkCq7Wx8Myc5YFJLbEe7lgui/V7G1qB1DJykHSGwreceSaD60Y0PUQ==} - hasBin: true - '@mdx-js/esbuild@2.3.0': resolution: {integrity: sha512-r/vsqsM0E+U4Wr0DK+0EfmABE/eg+8ITW4DjvYdh3ve/tK2safaqHArNnaqbOk1DjYGrhxtoXoGaM3BY8fGBTA==} peerDependencies: @@ -775,8 +831,8 @@ packages: '@mdx-js/mdx@3.1.1': resolution: {integrity: sha512-f6ZO2ifpwAQIpzGWaBQT2TXxPv6z3RBzQKpVftEWN78Vl/YweF1uwussDx8ECAXVtr3Rs89fKyG9YlzUs9DyGQ==} - '@mermaid-js/parser@0.6.3': - resolution: {integrity: sha512-lnjOhe7zyHjc+If7yT4zoedx2vo4sHaTmtkl1+or8BRTnCtDmcTpAjpzDSfCZrshM5bCoz0GyidzadJAH1xobA==} + '@mermaid-js/parser@1.2.1': + resolution: {integrity: sha512-n12NohV3mrUyUL2o93IgG/ifeW9FTyeJn3zDxkhwa8MJ9Fxg3HQMlA3RiGmD/3UnJvheztkjjQAjA2T4LmUcpw==} '@napi-rs/wasm-runtime@0.2.12': resolution: {integrity: sha512-ZVWUcfwY4E/yPitQJl481FjFo3K22D6qF0DuFH6Y/nbnE11GY5uguDxZMGXPQ8WQ0128MXQD7TnfHyK4oWoIJQ==} @@ -980,29 +1036,26 @@ packages: '@protobufjs/base64@1.1.2': resolution: {integrity: sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==} - '@protobufjs/codegen@2.0.4': - resolution: {integrity: sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg==} + '@protobufjs/codegen@2.0.5': + resolution: {integrity: sha512-zgXFLzW3Ap33e6d0Wlj4MGIm6Ce8O89n/apUaGNB/jx+hw+ruWEp7EwGUshdLKVRCxZW12fp9r40E1mQrf/34g==} - '@protobufjs/eventemitter@1.1.0': - resolution: {integrity: sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q==} + '@protobufjs/eventemitter@1.1.1': + resolution: {integrity: sha512-vW1GmwMZNnL+gMRaovlh9yZX74kc+TTU3FObkkurpMaRtBfLP3ldjS9KQWlwZgraRE0+dheEEoAxdzcJQ8eXZg==} - '@protobufjs/fetch@1.1.0': - resolution: {integrity: sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ==} + '@protobufjs/fetch@1.1.1': + resolution: {integrity: sha512-GpptLrs57adMSuHi3VNj0mAF8dwh36LMaYF6XyJ6JMWlVsc+t42tm1HSEDmOs3A8fC9yyeisgLhsTVQokOZ0zw==} '@protobufjs/float@1.0.2': resolution: {integrity: sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ==} - '@protobufjs/inquire@1.1.0': - resolution: {integrity: sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q==} - '@protobufjs/path@1.1.2': resolution: {integrity: sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA==} '@protobufjs/pool@1.1.0': resolution: {integrity: sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw==} - '@protobufjs/utf8@1.1.0': - resolution: {integrity: sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==} + '@protobufjs/utf8@1.1.2': + resolution: {integrity: sha512-b1UQwcEZ4yCnMCD8DAL1VlbvBJE9/IX4FTIp7BG1xYpf29SLazLSrqUkj4w7Y5y7cCVP6E5tcqqcI0xemPkHug==} '@radix-ui/number@1.1.1': resolution: {integrity: sha512-MkKCwxlXTgz6CFoJx3pCwn07GKp36+aZyu/u2Ln2VrA5DcdyCZkASEDBTd8x5whTQQL5CiYf4prXKLcgQdv29g==} @@ -1326,21 +1379,6 @@ packages: '@rushstack/eslint-patch@1.15.0': resolution: {integrity: sha512-ojSshQPKwVvSMR8yT2L/QtUkV5SXi/IfDiJ4/8d6UbTPjiHVmxZzUAzGD8Tzks1b9+qQkZa0isUOvYObedITaw==} - '@sec-ant/readable-stream@0.4.1': - resolution: {integrity: sha512-831qok9r2t8AlxLko40y2ebgSDhenenCatLVeW/uBtnHPyhHOvG0C7TvfgecV+wHzIm5KUICgzmVpWS+IMEAeg==} - - '@sindresorhus/merge-streams@4.0.0': - resolution: {integrity: sha512-tlqY9xq5ukxTUZBmoOp+m61cqwQD5pHJtFY3Mn8CA8ps6yghLH/Hw8UPdqg4OLmFW3IFlcXnQNmo/dh8HzXYIQ==} - engines: {node: '>=18'} - - '@sindresorhus/slugify@2.2.1': - resolution: {integrity: sha512-MkngSCRZ8JdSOCHRaYd+D01XhvU3Hjy6MGl06zhOk614hp9EOAp5gIkBeQg7wtmxpitU6eAL4kdiRMcJa2dlrw==} - engines: {node: '>=12'} - - '@sindresorhus/transliterate@1.6.0': - resolution: {integrity: sha512-doH1gimEu3A46VX6aVxpHTeHrytJAG6HgdxntYnCFiIFHEM/ZGpG8KiZGBChchjQmG0XFIBL552kBTjVcMZXwQ==} - engines: {node: '>=12'} - '@swc/counter@0.1.3': resolution: {integrity: sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==} @@ -1493,12 +1531,6 @@ packages: '@types/ms@2.1.0': resolution: {integrity: sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==} - '@types/node-fetch@2.6.13': - resolution: {integrity: sha512-QGpRVpzSaUs30JBSGPjOg4Uveu384erbHBoT1zeONvyCfwQxIkUshLAOqN/k9EjGviPRmWTTe6aH2qySWKTVSw==} - - '@types/node@18.19.130': - resolution: {integrity: sha512-GRaXQx6jGfL8sKfaIDD6OupbIHBr9jv7Jnaml9tB7l4v068PAOXqfcujMMo5PhbIs6ggR1XODELqahT2R8v0fg==} - '@types/node@20.4.9': resolution: {integrity: sha512-8e2HYcg7ohnTUbHk8focoklEQYvemQmu9M/f43DZVx43kHn0tE3BY/6gSDxS7k0SprtS0NHvj+L80cGLnoOUcQ==} @@ -1664,12 +1696,8 @@ packages: cpu: [x64] os: [win32] - abbrev@1.1.1: - resolution: {integrity: sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==} - - abort-controller@3.0.0: - resolution: {integrity: sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==} - engines: {node: '>=6.5'} + '@upsetjs/venn.js@2.0.0': + resolution: {integrity: sha512-WbBhLrooyePuQ1VZxrJjtLvTc4NVfpOyKx0sKqioq9bX1C1m7Jgykkn8gLrtwumBioXIqam8DLxp88Adbue6Hw==} acorn-jsx@5.3.2: resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} @@ -1681,20 +1709,8 @@ packages: engines: {node: '>=0.4.0'} hasBin: true - adler-32@1.3.1: - resolution: {integrity: sha512-ynZ4w/nUUv5rrsR8UUGoe1VC9hZj6V5hU9Qw1HlMDJGEJw5S7TfTErWTjMys6M7vr0YWcPqs3qAr4ss0nDfP+A==} - engines: {node: '>=0.8'} - - agent-base@6.0.2: - resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==} - engines: {node: '>= 6.0.0'} - - agentkeepalive@4.6.0: - resolution: {integrity: sha512-kja8j7PjmncONqaTsB8fQ+wE2mSU2DJ9D4XKoJ5PFWIdRMa6SLSN1ff4mOr4jCbfRSsxR4keIiySJU0N9T5hIQ==} - engines: {node: '>= 8.0.0'} - - ajv@6.12.6: - resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} + ajv@6.15.0: + resolution: {integrity: sha512-fgFx7Hfoq60ytK2c7DhnF8jIvzYgOMxfugjLOSMHjLIPgenqa7S7oaagATUq99mV6IYvN2tRmC0wnTYX6iPbMw==} algoliasearch@4.25.3: resolution: {integrity: sha512-kgeIixgDiB+FbH1cHDFUtTNkxdJadHryF8lSPIHHQkEeUrzZA1Hi3PLL+EgNubO0dch4ALNb5G4rw+FDCv3Vbw==} @@ -1710,10 +1726,6 @@ packages: ansi-sequence-parser@1.1.3: resolution: {integrity: sha512-+fksAx9eG3Ab6LDnLs3ZqZa8KVJ/jYnX+D4Qe1azX+LFGFAXqynCQLOdLpNYN/l9e7l6hMWwZbrnctqr6eSQSw==} - ansi-styles@3.2.1: - resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} - engines: {node: '>=4'} - ansi-styles@4.3.0: resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} engines: {node: '>=8'} @@ -1725,14 +1737,6 @@ packages: resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} engines: {node: '>= 8'} - aproba@2.1.0: - resolution: {integrity: sha512-tLIEcj5GuR2RSTnxNKdkK0dJ/GrC7P38sUkiDmDuHfsHmbagTFAxDVIBltoklXEVIQ/f14IL8IMJ5pn9Hez1Ew==} - - are-we-there-yet@2.0.0: - resolution: {integrity: sha512-Ci/qENmwHnsYo9xKIcUJN5LeDKdJ6R1Z1j9V/J5wyq8nh/mYPEpIKJbBZXtZjG04HiK7zV/p6Vs9952MrMeUIw==} - engines: {node: '>=10'} - deprecated: This package is no longer supported. - arg@5.0.2: resolution: {integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==} @@ -1804,9 +1808,6 @@ packages: resolution: {integrity: sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA==} engines: {node: '>= 0.4'} - asynckit@0.4.0: - resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} - autoprefixer@10.4.24: resolution: {integrity: sha512-uHZg7N9ULTVbutaIsDRoUkoS8/h3bdsmVJYZ5l3wv8Cp/6UIIoRDm90hZ+BwxUj/hGBEzLxdHNSKuFpn8WOyZw==} engines: {node: ^10 || ^12 || >=14} @@ -1826,67 +1827,19 @@ packages: resolution: {integrity: sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==} engines: {node: '>= 0.4'} - b4a@1.7.3: - resolution: {integrity: sha512-5Q2mfq2WfGuFp3uS//0s6baOJLMoVduPYVeNmDYxu5OUA1/cBfvr2RIS7vi62LdNj/urk1hfmj867I3qt6uZ7Q==} - peerDependencies: - react-native-b4a: '*' - peerDependenciesMeta: - react-native-b4a: - optional: true - bail@2.0.2: resolution: {integrity: sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==} balanced-match@1.0.2: resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} - bare-events@2.8.2: - resolution: {integrity: sha512-riJjyv1/mHLIPX4RwiK+oW9/4c3TEUeORHKefKAKnZ5kyslbN+HXowtbaVEqt4IMUB7OXlfixcs6gsFeo/jhiQ==} - peerDependencies: - bare-abort-controller: '*' - peerDependenciesMeta: - bare-abort-controller: - optional: true - - bare-fs@4.5.3: - resolution: {integrity: sha512-9+kwVx8QYvt3hPWnmb19tPnh38c6Nihz8Lx3t0g9+4GoIf3/fTgYwM4Z6NxgI+B9elLQA7mLE9PpqcWtOMRDiQ==} - engines: {bare: '>=1.16.0'} - peerDependencies: - bare-buffer: '*' - peerDependenciesMeta: - bare-buffer: - optional: true - - bare-os@3.6.2: - resolution: {integrity: sha512-T+V1+1srU2qYNBmJCXZkUY5vQ0B4FSlL3QDROnKQYOqeiQR8UbjNHlPa+TIbM4cuidiN9GaTaOZgSEgsvPbh5A==} - engines: {bare: '>=1.14.0'} - - bare-path@3.0.0: - resolution: {integrity: sha512-tyfW2cQcB5NN8Saijrhqn0Zh7AnFNsnczRcuWODH0eYAXBsJ5gVxAUuNr7tsHSC6IZ77cA0SitzT+s47kot8Mw==} - - bare-stream@2.7.0: - resolution: {integrity: sha512-oyXQNicV1y8nc2aKffH+BUHFRXmx6VrPzlnaEvMhram0nPBrKcEdcyBg5r08D0i8VxngHFAiVyn1QKXpSG0B8A==} - peerDependencies: - bare-buffer: '*' - bare-events: '*' - peerDependenciesMeta: - bare-buffer: - optional: true - bare-events: - optional: true - - bare-url@2.3.2: - resolution: {integrity: sha512-ZMq4gd9ngV5aTMa5p9+UfY0b3skwhHELaDkhEHetMdX0LRkW9kzaym4oo/Eh+Ghm0CCDuMTsRIGM/ytUc1ZYmw==} - - base64-js@1.5.1: - resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} + balanced-match@4.0.4: + resolution: {integrity: sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==} + engines: {node: 18 || 20 || >=22} - baseai@0.9.44: - resolution: {integrity: sha512-NhRxhWEBW/pmaODcCMFAXNZgM0XVQHrUsEeUkmXuHV4UXSfiJPg/W1r6yDwGq9bCz/pqPNXdHlU9vy0+0GsOTw==} - hasBin: true - - baseline-browser-mapping@2.9.19: - resolution: {integrity: sha512-ipDqC8FrAl/76p2SSWKSI+H9tFwm7vYqXQrItCuiVPt26Km0jS+NzSsBWAaBusvSbQcfJG+JitdMm+wZAgTYqg==} + baseline-browser-mapping@2.11.21: + resolution: {integrity: sha512-uh8vpY/1/YyFkunIDFH/12p7/7VdPKA1hejMVEbdkEaWnUz0Hesvx5EbiU6XxjyHZIOju+ZMbQJkRh+es3/spQ==} + engines: {node: '>=6.0.0'} hasBin: true big.js@5.2.2: @@ -1896,34 +1849,28 @@ packages: resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==} engines: {node: '>=8'} - bl@4.1.0: - resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==} + brace-expansion@1.1.18: + resolution: {integrity: sha512-Edep/X9fGqVNmzKBVsDYIOtD+z1tuezV70LBjdCst9Tqu76lsnvRiZ6oTic1n+/BIwX6QDGAO94PN4N2SADvtw==} - brace-expansion@1.1.12: - resolution: {integrity: sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==} + brace-expansion@2.1.4: + resolution: {integrity: sha512-hGfVzPxthbf3+2yjg/RBs60cB0FhqBS/zvdV/4wn4/BmN0bNMMHPc4V/BbFieqf1TKAGGAHnY4eSjajCl0f2Xg==} - brace-expansion@2.0.2: - resolution: {integrity: sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==} + brace-expansion@5.0.9: + resolution: {integrity: sha512-ScQ4IuvIEF1TMlP7Zt+vjJ//9zlPb2SDcxWxM3bk8s6t6GGdJ7KO1dCcTidOPJKePW30LE/2cT7wCyPho9/Wxg==} + engines: {node: 20 || >=22} braces@3.0.3: resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} engines: {node: '>=8'} - browserslist@4.28.1: - resolution: {integrity: sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA==} + browserslist@4.28.9: + resolution: {integrity: sha512-EWazOblFYUvlGZcfGhPUPmYh3nikUxBVb+y9MJun5f3hBi812X+8MSQTujLBtgK3cf51fJWbWfOjyeO954d+Eg==} engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true buffer-from@1.1.2: resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} - buffer@5.7.1: - resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==} - - bundle-name@4.1.0: - resolution: {integrity: sha512-tjwM5exMg6BGRI+kNmTntNsvdZS1X8BFYS6tnJ2hdH0kVxM6/eVZ2xy+FqStSWvYmtfFMDLIxurorHwDKfDz5Q==} - engines: {node: '>=18'} - busboy@1.6.0: resolution: {integrity: sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==} engines: {node: '>=10.16.0'} @@ -1959,44 +1906,19 @@ packages: resolution: {integrity: sha512-DLIsRzJVBQu72meAKPkWQOLcujdXT32hwdfnkI1frSiSRMK1MofjKHf+MEx0SB6fjEFXL8fBDv1dKymBlOp4Qw==} engines: {node: '>=0.10.0'} - camelcase@8.0.0: - resolution: {integrity: sha512-8WB3Jcas3swSvjIeA2yvCJ+Miyz5l1ZmB6HFb9R1317dt9LCQoswg/BGrmAmkWVEszSrrg4RwmO46qIm2OEnSA==} - engines: {node: '>=16'} - caniuse-lite@1.0.30001769: resolution: {integrity: sha512-BCfFL1sHijQlBGWBMuJyhZUhzo7wer5sVj9hqekB/7xn0Ypy+pER/edCYQm4exbXj4WiySGp40P8UuTh6w1srg==} - canvas@2.11.2: - resolution: {integrity: sha512-ItanGBMrmRV7Py2Z+Xhs7cT+FNt5K0vPL4p9EZ/UX/Mu7hFbkxSjKF2KVtPwX7UYWp7dRKnrTvReflgrItJbdw==} - engines: {node: '>=6'} + caniuse-lite@1.0.30001810: + resolution: {integrity: sha512-TITQPUkaz+aVk5GL6NhOdwk1aEaNTSDPsGFWrTuhKGtjTF70jL/Oht2W4c6rXUe5fu7Ie19VIahAXHIIiWWNeg==} ccount@2.0.1: resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==} - cfb@1.2.2: - resolution: {integrity: sha512-KfdUZsSOw19/ObEWasvBP/Ac4reZvAGauZhs6S/gqNhXhI7cKwvlH7ulj+dOEYnca4bm4SGo8C1bTAQvnTjgQA==} - engines: {node: '>=0.8'} - - chalk-template@1.1.2: - resolution: {integrity: sha512-2bxTP2yUH7AJj/VAXfcA+4IcWGdQ87HwBANLt5XxGTeomo8yG0y95N1um9i5StvhT/Bl0/2cARA5v1PpPXUxUA==} - engines: {node: '>=14.16'} - - chalk@2.4.2: - resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} - engines: {node: '>=4'} - - chalk@3.0.0: - resolution: {integrity: sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==} - engines: {node: '>=8'} - chalk@4.1.2: resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} engines: {node: '>=10'} - chalk@5.6.0: - resolution: {integrity: sha512-46QrSQFyVSEyYAgQ22hQ+zDa60YHA4fBstHmtSApj1Y5vKtG27fWowW03jCk5KcbXEWPZUIR894aARCA/G1kfQ==} - engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} - character-entities-html4@2.1.0: resolution: {integrity: sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==} @@ -2018,50 +1940,13 @@ packages: character-reference-invalid@2.0.1: resolution: {integrity: sha512-iBZ4F4wRbyORVsu0jPV7gXkOsGYjGHPmAyv+HiHG8gi5PtC9KI2j1+v8/tlibRvjoWX027ypmG/n0HtO5t7unw==} - chevrotain-allstar@0.3.1: - resolution: {integrity: sha512-b7g+y9A0v4mxCW1qUhf3BSVPg+/NvGErk/dOkrDaHA0nQIQGAtrOjlX//9OQtRlSCy+x9rfB5N8yC71lH1nvMw==} - peerDependencies: - chevrotain: ^11.0.0 - - chevrotain@11.0.3: - resolution: {integrity: sha512-ci2iJH6LeIkvP9eJW6gpueU8cnZhv85ELY8w8WiFtNjMHA5ad6pQLaJo9mEly/9qUyCpvqX8/POVUTf18/HFdw==} - chokidar@3.6.0: resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==} engines: {node: '>= 8.10.0'} - chownr@1.1.4: - resolution: {integrity: sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==} - - chownr@2.0.0: - resolution: {integrity: sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==} - engines: {node: '>=10'} - class-variance-authority@0.7.1: resolution: {integrity: sha512-Ka+9Trutv7G8M6WT6SeiRWz792K5qEqIGEGzXKhAE6xOWAY6pPH8U+9IY3oCMv6kqTmLsv7Xh/2w2RigkePMsg==} - clear-any-console@1.16.3: - resolution: {integrity: sha512-x174l55a86DGVU0KvnLITsXhRgqwd/xNDTy16OyKKOiJU+1pXF9DrV9YvlepfMc/JuJ3a7CMNLEF4O7qwk0mEw==} - - cli-alerts@2.0.0: - resolution: {integrity: sha512-/ji87OdmThQfNeHo2VSh40/qllw/UN58l5M7JwsGPVt7KfHvyazpy/LRSWuMQ4S7OpCdcTT03JsFXYCtnkJKKA==} - - cli-handle-error@4.4.1: - resolution: {integrity: sha512-tl4YzQL+7X7vgTFfDH2sWdhLztvNfpPqPOR0YwUMmmAc6UmfFJ1HHZqfv8L7k7/dD0ZDTfsVFDiEJjaaxmqMWA==} - - cli-handle-unhandled@1.1.2: - resolution: {integrity: sha512-tLOdMkEfs4k2bSxQlpvCjnHSm5b78Jv3HJ/o14mPibr6IWoHZL0IZdGa0Nih9iY85pNwOFoUzD5T++T8PL4Wjw==} - - cli-meow-help@4.0.0: - resolution: {integrity: sha512-kQybi0SBFQU2+P+GolMG2/BTLjStQzv7zWnJUAmT4AUxyWfv8weCLlUJT7Po0pPSl7+N3y8UieQz/Pq87c9uWA==} - - cli-table3@0.6.5: - resolution: {integrity: sha512-+W/5efTR7y5HRD7gACw9yQjqMVvEMLBHmboM/kPWam+H+Hmyrgjh6YncVKK122YZkXrLudzTuAukUw9FnMf7IQ==} - engines: {node: 10.* || >= 12.*} - - cli-welcome@3.0.1: - resolution: {integrity: sha512-93xW5MvkeODHvIrbYGObRjQkwTS4QCxyvDH0RaJNwtP/SUBDnXe8FZe70u5NxWXi7eUFVJl5R7sr19qOwRzAgA==} - client-only@0.0.1: resolution: {integrity: sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==} @@ -2082,41 +1967,16 @@ packages: resolution: {integrity: sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==} engines: {node: '>=6'} - codepage@1.15.0: - resolution: {integrity: sha512-3g6NUTPd/YtuuGrhMnOMRjFc+LJw/bnMp3+0r/Wcz3IXUuCosKRJvMphm5+Q+bvTVGcJJuRvVLuYba+WojaFaA==} - engines: {node: '>=0.8'} - collapse-white-space@2.1.0: resolution: {integrity: sha512-loKTxY1zCOuG4j9f6EPnuyyYkf58RnhhWTvRoZEokgB+WbdXehfjFviyOVYkqzEWz1Q5kRiZdBYS5SwxbQYwzw==} - color-convert@1.9.3: - resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} - color-convert@2.0.1: resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} engines: {node: '>=7.0.0'} - color-name@1.1.3: - resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} - color-name@1.1.4: resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} - color-string@1.9.1: - resolution: {integrity: sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==} - - color-support@1.1.3: - resolution: {integrity: sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==} - hasBin: true - - color@4.2.3: - resolution: {integrity: sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==} - engines: {node: '>=12.5.0'} - - combined-stream@1.0.8: - resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} - engines: {node: '>= 0.8'} - comma-separated-tokens@1.0.8: resolution: {integrity: sha512-GHuDRO12Sypu2cV70d1dkA2EUmXHgntrzbpvOB+Qy+49ypNfGgFQIC2fhhXbnyrJRynDCAARsT7Ou0M6hirpfw==} @@ -2139,24 +1999,12 @@ packages: resolution: {integrity: sha512-taEtr3ozUmOB7it68Jll7s0Pwm+aoiHyXKrEC8SEodL4rNpdfDLqa7PfBlrgFoCNNdR8ImL+muti5IGvktJAAg==} engines: {node: '>= 6'} - compute-cosine-similarity@1.1.0: - resolution: {integrity: sha512-FXhNx0ILLjGi9Z9+lglLzM12+0uoTnYkHm7GiadXDAr0HGVLm25OivUS1B/LPkbzzvlcXz/1EvWg9ZYyJSdhTw==} - - compute-dot@1.1.0: - resolution: {integrity: sha512-L5Ocet4DdMrXboss13K59OK23GXjiSia7+7Ukc7q4Bl+RVpIXK2W9IHMbWDZkh+JUEvJAwOKRaJDiFUa1LTnJg==} - - compute-l2norm@1.1.0: - resolution: {integrity: sha512-6EHh1Elj90eU28SXi+h2PLnTQvZmkkHWySpoFz+WOlVNLz3DQoC4ISUHSV9n5jMxPHtKGJ01F4uu2PsXBB8sSg==} - concat-map@0.0.1: resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} confbox@0.1.8: resolution: {integrity: sha512-RMtmw0iFkeR4YV+fUOSucriAQNb9g8zFR52MWCtl+cCZOFRNL6zeB395vPzFhEjjn4fMxXudmELnl/KF/WrK6w==} - console-control-strings@1.1.0: - resolution: {integrity: sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==} - contentlayer@0.3.4: resolution: {integrity: sha512-FYDdTUFaN4yqep0waswrhcXjmMJnPD5iXDTtxcUCGdklfuIrXM2xLx51xl748cHmGA6IsC+27YZFxU6Ym13QIA==} engines: {node: '>=14.18'} @@ -2171,28 +2019,6 @@ packages: cose-base@2.2.0: resolution: {integrity: sha512-AzlgcsCbUMymkADOJtQm3wO9S3ltPfYOFD5033keQn9NJzIbtnZj+UdBJe7DYml/8TdbtHJW3j58SOnKhWY/5g==} - cosmiconfig-typescript-loader@5.1.0: - resolution: {integrity: sha512-7PtBB+6FdsOvZyJtlF3hEPpACq7RQX6BVGsgC7/lfVXnKMvNCu/XY3ykreqG5w/rBNdu2z8LCIKoF3kpHHdHlA==} - engines: {node: '>=v16'} - peerDependencies: - '@types/node': '*' - cosmiconfig: '>=8.2' - typescript: '>=4' - - cosmiconfig@9.0.0: - resolution: {integrity: sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg==} - engines: {node: '>=14'} - peerDependencies: - typescript: '>=4.9.5' - peerDependenciesMeta: - typescript: - optional: true - - crc-32@1.2.2: - resolution: {integrity: sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ==} - engines: {node: '>=0.8'} - hasBin: true - cross-spawn@7.0.6: resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} engines: {node: '>= 8'} @@ -2219,8 +2045,8 @@ packages: peerDependencies: cytoscape: ^3.2.0 - cytoscape@3.33.1: - resolution: {integrity: sha512-iJc4TwyANnOGR1OmWhsS9ayRS3s+XQ185FmuHObThD+5AeJCakAAbWv8KimMTt08xCCLNgneQwFp+JRJOr9qGQ==} + cytoscape@3.34.3: + resolution: {integrity: sha512-yfYGhRcGAntq6YBD583j4n0Eg3jIxvWmZtz/5uz9UYkeIStSlMxuUja+ec5j3iBD8nv1rwaOAYMW09tBdkSeaQ==} engines: {node: '>=0.10'} d3-array@2.12.1: @@ -2362,8 +2188,8 @@ packages: resolution: {integrity: sha512-e1U46jVP+w7Iut8Jt8ri1YsPOvFpg46k+K8TpCb0P+zjCkjkPnV7WzfDJzMHy1LnA+wj5pLT1wjO901gLXeEhA==} engines: {node: '>=12'} - dagre-d3-es@7.0.13: - resolution: {integrity: sha512-efEhnxpSuwpYOKRm/L5KbqoZmNNukHa/Flty4Wp62JRvgH2ojwVgPgdYyr4twpieZnyRDdIH7PY2mopX26+j2Q==} + dagre-d3-es@7.0.14: + resolution: {integrity: sha512-P4rFMVq9ESWqmOgK+dlXvOtLwYg0i7u0HBGJER0LZDJT2VHIPAMZ/riPxqJceWMStH5+E61QxFra9kIS3AqdMg==} damerau-levenshtein@1.0.8: resolution: {integrity: sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==} @@ -2388,8 +2214,8 @@ packages: resolution: {integrity: sha512-fnULvOpxnC5/Vg3NCiWelDsLiUc9bRwAPs/+LfTLNvetFCtCTN+yQz15C/fs4AwX1R9K5GLtLfn8QW+dWisaAw==} engines: {node: '>=0.11'} - dayjs@1.11.19: - resolution: {integrity: sha512-t5EcLVS6QPBNqM2z8fakk/NKel+Xzshgt8FFKAn+qwlD1pzZWxh0nVCrvFK7ZDb6XucZeF9z8C7CBWTRIVApAw==} + dayjs@1.11.23: + resolution: {integrity: sha512-QDTCU0M0MxR3hQfnlDJfwekQiaanm1ubOD231u73WBckQ/fsamwRLiE2GBz6D3a/xF1NgfiDLJjXBa1hYOYTtQ==} debug@3.2.7: resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==} @@ -2411,37 +2237,13 @@ packages: decode-named-character-reference@1.3.0: resolution: {integrity: sha512-GtpQYB283KrPp6nRw50q3U9/VfOutZOe103qlN7BPP6Ad27xYnOIWv4lPzo8HCAL+mMZofJ9KEy30fq6MfaK6Q==} - decompress-response@4.2.1: - resolution: {integrity: sha512-jOSne2qbyE+/r8G1VU+G/82LBs2Fs4LAsTiLSHOCOMZQl2OKZ6i8i4IyHemTe+/yIXOtTcRQMzPcgyhoFlqPkw==} - engines: {node: '>=8'} - - decompress-response@6.0.0: - resolution: {integrity: sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==} - engines: {node: '>=10'} - - deep-extend@0.6.0: - resolution: {integrity: sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==} - engines: {node: '>=4.0.0'} - deep-is@0.1.4: resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} - default-browser-id@5.0.1: - resolution: {integrity: sha512-x1VCxdX4t+8wVfd1so/9w+vQ4vx7lKd2Qp5tDRutErwmR85OgmfX7RlLRMWafRMY7hbEiXIbudNrjOAPa/hL8Q==} - engines: {node: '>=18'} - - default-browser@5.5.0: - resolution: {integrity: sha512-H9LMLr5zwIbSxrmvikGuI/5KGhZ8E2zH3stkMgM5LpOWDutGM2JZaj460Udnf1a+946zc7YBgrqEWwbk7zHvGw==} - engines: {node: '>=18'} - define-data-property@1.1.4: resolution: {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==} engines: {node: '>= 0.4'} - define-lazy-prop@3.0.0: - resolution: {integrity: sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==} - engines: {node: '>=12'} - define-properties@1.2.1: resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==} engines: {node: '>= 0.4'} @@ -2449,13 +2251,6 @@ packages: delaunator@5.0.1: resolution: {integrity: sha512-8nvh+XBe96aCESrGOqMp/84b13H9cdKbG5P2ejQCh4d4sK9RL4371qou9drQjMhvnPmhWl5hnmqbEE0fXr9Xnw==} - delayed-stream@1.0.0: - resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} - engines: {node: '>=0.4.0'} - - delegates@1.0.0: - resolution: {integrity: sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==} - dequal@2.0.3: resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} engines: {node: '>=6'} @@ -2492,8 +2287,8 @@ packages: resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==} engines: {node: '>=6.0.0'} - dompurify@3.3.1: - resolution: {integrity: sha512-qkdCKzLNtrgPFP1Vo+98FRzJnBRGe4ffyCea9IwHB1fyxPOeNTHpLKYGd4Uk9xvNoH0ZoOjwZxNptyMwqrId1Q==} + dompurify@3.4.15: + resolution: {integrity: sha512-EUBjM+B+lkDE41iE82DDSCfkoPGfXx8IxFxPMjNzm/Uk4xDet77rTN9wqlxlVg71kK7XGuUMv6wUxJUwwv+Xyw==} dotenv@16.6.1: resolution: {integrity: sha512-uBq4egWHTcTt33a72vpSG0z3HnPuIl6NqYcTrKEg2azoEyl2hpW0zqlxysq2pK9HlDIHyHyakeYaYnSAwd8bow==} @@ -2503,8 +2298,8 @@ packages: resolution: {integrity: sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==} engines: {node: '>= 0.4'} - electron-to-chromium@1.5.286: - resolution: {integrity: sha512-9tfDXhJ4RKFNerfjdCcZfufu49vg620741MNs26a9+bhLThdB+plgMeou98CAaHu/WATj2iHOOHTp1hWtABj2A==} + electron-to-chromium@1.5.425: + resolution: {integrity: sha512-QvPtl41EUOnuT1HBvMKgxXRIaHNcagBPs50u7VULzhZXaGfqTbZyE16LQsctZ/RQHlGu+FOWeDTR4mY6YbeF1g==} emoji-regex@8.0.0: resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} @@ -2516,13 +2311,6 @@ packages: resolution: {integrity: sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==} engines: {node: '>= 4'} - end-of-stream@1.4.5: - resolution: {integrity: sha512-ooEGc6HP26xXq/N+GCGOT0JKCLDGrq2bQUZrQ7gyrJiZANJ/8YDTxTpQBXGMn+WbIQXNVpyWymm7KYVICQnyOg==} - - env-paths@2.2.1: - resolution: {integrity: sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==} - engines: {node: '>=6'} - error-ex@1.3.4: resolution: {integrity: sha512-sqQamAnR14VgCr1A618A3sGrygcpK+HEbenA/HiEAkkUwcZIIB/tgWqHFxWgOyDh4nB4JCRimh79dR5Ywc9MDQ==} @@ -2558,6 +2346,9 @@ packages: resolution: {integrity: sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g==} engines: {node: '>= 0.4'} + es-toolkit@1.52.0: + resolution: {integrity: sha512-XTNEJQh1tY1ZJVcf6ayP/2n4ZPyaHlW2FWs7xvw5ddPuhUVjLD3olQVQS7kf58JbAB48iL0uL/jerTrjtV3lDA==} + esast-util-from-estree@2.0.0: resolution: {integrity: sha512-4CyanoAudUSBAn5K13H4JhsMH6L9ZP7XbLVe/dKybkxMO7eDyLsT8UHl9TRNrU2Gr9nz+FovfSIjuXWJ81uVwQ==} @@ -2573,10 +2364,6 @@ packages: resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} engines: {node: '>=6'} - escape-string-regexp@1.0.5: - resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} - engines: {node: '>=0.8.0'} - escape-string-regexp@4.0.0: resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} engines: {node: '>=10'} @@ -2741,21 +2528,6 @@ packages: resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} engines: {node: '>=0.10.0'} - event-target-shim@5.0.1: - resolution: {integrity: sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==} - engines: {node: '>=6'} - - events-universal@1.0.1: - resolution: {integrity: sha512-LUd5euvbMLpwOF8m6ivPCbhQeSiYVNb8Vs0fQ8QjXo0JTkEHpz8pxdQf0gStltaPpw0Cca8b39KxvK9cfKRiAw==} - - execa@9.6.1: - resolution: {integrity: sha512-9Be3ZoN4LmYR90tUoVu2te2BsbzHfhJyfEiAVfz7N5/zv+jduIfLrV2xdQXOHbaD6KgpGdO9PRPM1Y4Q9QkPkA==} - engines: {node: ^18.19.0 || >=20.5.0} - - expand-template@2.0.3: - resolution: {integrity: sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==} - engines: {node: '>=6'} - extend-shallow@2.0.1: resolution: {integrity: sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==} engines: {node: '>=0.10.0'} @@ -2769,9 +2541,6 @@ packages: fast-equals@2.0.4: resolution: {integrity: sha512-caj/ZmjHljPrZtbzJ3kfH5ia/k4mTJe/qSiXAGzxZWRZgsgDV0cvNaQULqUX8t0/JVlzzEdYOwCN5DmzTxoD4w==} - fast-fifo@1.3.2: - resolution: {integrity: sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==} - fast-glob@3.3.3: resolution: {integrity: sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==} engines: {node: '>=8.6.0'} @@ -2782,6 +2551,9 @@ packages: fast-levenshtein@2.0.6: resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} + fastdom@1.0.12: + resolution: {integrity: sha512-LB+xjSTEbjHE1cWsxu+tN2Xqr1kpi+V9aADI7sVM5ZMaXyYGPHULQMzpJMYqOTULK/73pUkWVzzObFRBkPr+hg==} + fastq@1.20.1: resolution: {integrity: sha512-GGToxJ/w1x32s/D2EKND7kTil4n8OVk/9mycTc4VDza13lOvpUZTGX3mFSCtV9ksdGBVzvsyAVLM6mHFThxXxw==} @@ -2808,10 +2580,6 @@ packages: resolution: {integrity: sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==} engines: {node: ^12.20 || >= 14.13} - figures@6.1.0: - resolution: {integrity: sha512-d+l3qxjSesT4V7v2fh+QnmFnUWv9lSpjarhShNTgBOfA0ttejbQUAlHLitbjkoRiDulW0OPoQPYIGhIC8ohejg==} - engines: {node: '>=18'} - file-entry-cache@6.0.1: resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} engines: {node: ^10.12.0 || >=12.0.0} @@ -2832,8 +2600,8 @@ packages: resolution: {integrity: sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==} engines: {node: ^10.12.0 || >=12.0.0} - flatted@3.3.3: - resolution: {integrity: sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==} + flatted@3.4.4: + resolution: {integrity: sha512-5+ybhBZANEJxaH3X5evAFatUxLfEHSr7n6kYJ+1Qd0mUqr4eu9gIf6GDbWHf8RJijHrjjO8G+la14SlL2SeS1Q==} for-each@0.3.5: resolution: {integrity: sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==} @@ -2843,39 +2611,17 @@ packages: resolution: {integrity: sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==} engines: {node: '>=14'} - form-data-encoder@1.7.2: - resolution: {integrity: sha512-qfqtYan3rxrnCk1VYaA4H+Ms9xdpPqvLZa6xmMgFvhO32x7/3J/ExcTd6qpxM0vH2GdMI+poehyBZvqfMTto8A==} - - form-data@4.0.5: - resolution: {integrity: sha512-8RipRLol37bNs2bhoV67fiTEvdTrbMUYcFTiy3+wuuOnUog2QBHCZWXDRijWQfAkhBj2Uf5UnVaiWwA5vdd82w==} - engines: {node: '>= 6'} - format@0.2.2: resolution: {integrity: sha512-wzsgA6WOq+09wrU1tsJ09udeR/YZRaeArL9e1wPbFg3GG2yDnC2ldKpxs4xunpFF9DgqCqOIra3bc1HWrJ37Ww==} engines: {node: '>=0.4.x'} - formdata-node@4.4.1: - resolution: {integrity: sha512-0iirZp3uVDjVGt9p49aTaqjk84TrglENEDuqfdlZQ1roC9CWlPk6Avf8EEnZNcAqPonwkG35x4n3ww/1THYAeQ==} - engines: {node: '>= 12.20'} - formdata-polyfill@4.0.10: resolution: {integrity: sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==} engines: {node: '>=12.20.0'} - frac@1.1.2: - resolution: {integrity: sha512-w/XBfkibaTl3YDqASwfDUqkna4Z2p9cFSr1aHDt0WoMTECnRfBOv2WArlZILlqgWlmdIlALXGpM2AOhEk5W3IA==} - engines: {node: '>=0.8'} - fraction.js@5.3.4: resolution: {integrity: sha512-1X1NTtiJphryn/uLQz3whtY6jK3fTqoE3ohKs0tT+Ujr1W59oopxmoEh7Lu5p6vBaPbgoM0bzveAW4Qi5RyWDQ==} - fs-constants@1.0.0: - resolution: {integrity: sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==} - - fs-minipass@2.1.0: - resolution: {integrity: sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==} - engines: {node: '>= 8'} - fs-monkey@1.1.0: resolution: {integrity: sha512-QMUezzXWII9EV5aTFXW1UBVUO77wYPpjqIF8/AviUCThNeSYZykpoTixUeaNNBwmCev0AMDWMAni+f8Hxb1IFw==} @@ -2901,11 +2647,6 @@ packages: resolution: {integrity: sha512-cJaJkxCCxC8qIIcPBF9yGxY0W/tVZS3uEISDxhYIdtk8OL93pe+6Zj7LjCqVV4dzbqcriOZ+kQ/NE4RXZHsIGA==} engines: {node: '>=10'} - gauge@3.0.2: - resolution: {integrity: sha512-+5J6MS/5XksCuXq++uFRsnUd7Ovu1XenbeuIuNRJxYWjgQbPuFhT14lAvsWfqfAmnwluf1OwMjz39HjfLPci0Q==} - engines: {node: '>=10'} - deprecated: This package is no longer supported. - generator-function@2.0.1: resolution: {integrity: sha512-SFdFmIJi+ybC0vjlHN0ZGVGHc3lgE0DxPAT0djjVg+kjOnSqclqmj0KQ7ykTOLP6YxoqOvuAODGdcHJn+43q3g==} engines: {node: '>= 0.4'} @@ -2922,9 +2663,6 @@ packages: resolution: {integrity: sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q==} engines: {node: '>=6'} - get-package-json-file@2.0.0: - resolution: {integrity: sha512-wYp53p0kSrVCREWu3XGXyG9crUTDzPSE1Cc5eUXAf/2mR46Jn7byqplFBEw5YtBGTbfqXoGm0bJL1CBVqLV91A==} - get-proto@1.0.1: resolution: {integrity: sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==} engines: {node: '>= 0.4'} @@ -2933,10 +2671,6 @@ packages: resolution: {integrity: sha512-F5aQMywwJ2n85s4hJPTT9RPxGmubonuB10MNYo17/xph174n2MIR33HRguhzVag10O/npM7SPk73LMZNP+FaWw==} engines: {node: '>=0.10.0'} - get-stream@9.0.1: - resolution: {integrity: sha512-kVCxPF3vQM/N0B1PmoqVUqgHP+EeVjmZSQn+1oCRPxd2P21P2F19lIgbR3HBosbB1PUhOAoctJnfEn2GbN2eZA==} - engines: {node: '>=18'} - get-symbol-description@1.1.0: resolution: {integrity: sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==} engines: {node: '>= 0.4'} @@ -2944,9 +2678,6 @@ packages: get-tsconfig@4.13.6: resolution: {integrity: sha512-shZT/QMiSHc/YBLxxOkMtgSid5HFoauqCE3/exfsEcwg1WkeqjG+V40yBbBrsD+jW2HDXcs28xOfcbm2jI8Ddw==} - github-from-package@0.0.0: - resolution: {integrity: sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw==} - github-slugger@2.0.0: resolution: {integrity: sha512-IaOQ9puYtjrkq7Y0Ygl9KDZnrf/aiUJYUpVf89y8kyaxbRG7Y1SrX/jaumrv81vc61+kiMempujsM3Yw7w5qcw==} @@ -3005,10 +2736,6 @@ packages: resolution: {integrity: sha512-R3pbpkcIqv2Pm3dUwgjclDRVmWpTJW2DcMzcIhEXEx1oh/CEMObMm3KLmRJOdvhM7o4uQBnwr8pzRK2sJWIqfg==} engines: {node: '>= 0.4'} - has-flag@3.0.0: - resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} - engines: {node: '>=4'} - has-flag@4.0.0: resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} engines: {node: '>=8'} @@ -3028,9 +2755,6 @@ packages: resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==} engines: {node: '>= 0.4'} - has-unicode@2.0.1: - resolution: {integrity: sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==} - hash-obj@4.0.0: resolution: {integrity: sha512-FwO1BUVWkyHasWDW4S8o0ssQXjvyghLV2rfVhnN36b2bbcj45eGiuzdn9XOvOpjV3TKQD7Gm2BWNXdE9V4KKYg==} engines: {node: '>=12'} @@ -3102,34 +2826,16 @@ packages: highlightjs-vue@1.0.0: resolution: {integrity: sha512-PDEfEF102G23vHmPhLyPboFCD+BkMGu+GuJe2d9/eH4FsCwvgBpnc9n0pGE+ffKdph38s6foEZiEjdgHdzp+IA==} - hono@4.11.9: - resolution: {integrity: sha512-Eaw2YTGM6WOxA6CXbckaEvslr2Ne4NFsKrvc0v97JD5awbmeBLO5w9Ho9L9kmKonrwF9RJlW6BxT1PVv/agBHQ==} - engines: {node: '>=16.9.0'} - hosted-git-info@2.8.9: resolution: {integrity: sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==} html-void-elements@2.0.1: resolution: {integrity: sha512-0quDb7s97CfemeJAnW9wC0hw78MtW7NU3hqtCD75g2vFlDLt36llsYD7uB7SUzojLMP24N5IatXf7ylGXiGG9A==} - https-proxy-agent@5.0.1: - resolution: {integrity: sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==} - engines: {node: '>= 6'} - - human-signals@8.0.1: - resolution: {integrity: sha512-eKCa6bwnJhvxj14kZk5NCPc6Hb6BdsU9DZcOnmQKSnO1VKrfV0zCvtttPZUsBvjmNDn8rpcJfpwSYnHBjc95MQ==} - engines: {node: '>=18.18.0'} - - humanize-ms@1.2.1: - resolution: {integrity: sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==} - iconv-lite@0.6.3: resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==} engines: {node: '>=0.10.0'} - ieee754@1.2.1: - resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} - ignore@5.3.2: resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==} engines: {node: '>= 4'} @@ -3161,9 +2867,6 @@ packages: inherits@2.0.4: resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} - ini@1.3.8: - resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==} - inline-style-parser@0.1.1: resolution: {integrity: sha512-7NXolsK4CAS5+xvdj5OMMbI962hU/wvwoxk+LWR9Ek9bVtyuuYScDN6eS0rUm6TxApFpw7CX1o4uJzcd4AyD3Q==} @@ -3200,9 +2903,6 @@ packages: is-arrayish@0.2.1: resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} - is-arrayish@0.3.4: - resolution: {integrity: sha512-m6UrgzFVUYawGBh1dUsWR5M2Clqic9RVXC/9f8ceNlv2IcO9j9J/z8UoCLPqtsPBFNzEpfR3xftohbfqDx8EQA==} - is-async-function@2.1.1: resolution: {integrity: sha512-9dgM/cZBnNvjzaMYHVoxxfPj2QXt22Ev7SuuPrs+xav0ukGB0S6d4ydZdEiM48kLx5kDV+QBPrpVnFyefL8kkQ==} engines: {node: '>= 0.4'} @@ -3248,11 +2948,6 @@ packages: is-decimal@2.0.1: resolution: {integrity: sha512-AAB9hiomQs5DXWcRB1rqsxGUstbRroFOPPVAomNk/3XHR5JyEZChOyTWe2oayKnsSsr/kcGqF+z6yuH6HHpN0A==} - is-docker@3.0.0: - resolution: {integrity: sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - hasBin: true - is-extendable@0.1.1: resolution: {integrity: sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==} engines: {node: '>=0.10.0'} @@ -3287,11 +2982,6 @@ packages: is-hexadecimal@2.0.1: resolution: {integrity: sha512-DgZQp241c8oO6cA1SbTEWiXeoxV42vlcJxgH+B3hi1AiqqKruZR3ZGF8In3fj4+/y/7rHvlOZLZtgJ/4ttYGZg==} - is-inside-container@1.0.0: - resolution: {integrity: sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==} - engines: {node: '>=14.16'} - hasBin: true - is-map@2.0.3: resolution: {integrity: sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==} engines: {node: '>= 0.4'} @@ -3339,10 +3029,6 @@ packages: resolution: {integrity: sha512-ISWac8drv4ZGfwKl5slpHG9OwPNty4jOWPRIhBpxOoD+hqITiwuipOQ2bNthAzwA3B4fIjO4Nln74N0S9byq8A==} engines: {node: '>= 0.4'} - is-stream@4.0.1: - resolution: {integrity: sha512-Dnz92NInDqYckGEUJv689RbRiTSEHCQ7wOVeALbkOz999YpqT46yMRIGtSNl2iCL1waAZSx40+h59NV/EwzV/A==} - engines: {node: '>=18'} - is-string@1.1.1: resolution: {integrity: sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA==} engines: {node: '>= 0.4'} @@ -3355,14 +3041,6 @@ packages: resolution: {integrity: sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==} engines: {node: '>= 0.4'} - is-unicode-supported@0.1.0: - resolution: {integrity: sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==} - engines: {node: '>=10'} - - is-unicode-supported@2.1.0: - resolution: {integrity: sha512-mE00Gnza5EEB3Ds0HfMyllZzbBrmLOX3vfWoj9A9PEnTfratQ/BcaJOuMhnkhjXvb2+FkY3VuHqtAGpTPmglFQ==} - engines: {node: '>=18'} - is-utf8@0.2.1: resolution: {integrity: sha512-rMYPYvCzsXywIsldgLaSoPlw5PfoB/ssr7hY4pLfcodrA5M/eArza1a9VmTiNIBNMjOGr1Ow9mTyU2o69U6U9Q==} @@ -3378,10 +3056,6 @@ packages: resolution: {integrity: sha512-mfcwb6IzQyOKTs84CQMrOwW4gQcaTOAWJ0zzJCl2WSPDrWk/OzDaImWFH3djXhb24g4eudZfLRozAvPGw4d9hQ==} engines: {node: '>= 0.4'} - is-wsl@3.1.0: - resolution: {integrity: sha512-UcVfVfaK4Sc4m7X3dUSoHoozQGBEFeDC+zVo06t98xe8CzHSZZBekNXH+tu0NalHolcJ/QAGqS46Hef7QXBIMw==} - engines: {node: '>=16'} - isarray@2.0.5: resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==} @@ -3400,18 +3074,15 @@ packages: resolution: {integrity: sha512-/imKNG4EbWNrVjoNC/1H5/9GFy+tqjGBHCaSsN+P2RnPqjsLmv6UD3Ej+Kj8nBWaRAwyk7kK5ZUc+OEatnTR3A==} hasBin: true - js-tiktoken@1.0.21: - resolution: {integrity: sha512-biOj/6M5qdgx5TKjDnFT1ymSpM5tbd3ylwDtrQvFQSu0Z7bBYko2dF+W/aUkXUPuk6IVpRxk/3Q2sHOzGlS36g==} - js-tokens@4.0.0: resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} - js-yaml@3.14.2: - resolution: {integrity: sha512-PMSmkqxr106Xa156c2M265Z+FTrPl+oxd/rgOQy2tijQeK5TxQ43psO1ZCwhVOSdnn+RzkzlRz/eY4BgJBYVpg==} + js-yaml@3.15.2: + resolution: {integrity: sha512-6EuL879VkRA+1Cz578mKMiKvjPNEuk6+r1JaFzoSWejZmtf7xWbIyw1e3KkxlkzTIt9Taw6JBhEppG7utc1P+w==} hasBin: true - js-yaml@4.1.1: - resolution: {integrity: sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==} + js-yaml@4.3.2: + resolution: {integrity: sha512-SFNOvSJ+Dgf/9An904Yx+CgSlIPCkIpao4qo51lpee25TIRejdH3rhR4EZMGoNx3/TP3O+wzWuiTFl4sqbltzA==} hasBin: true jsbi@4.3.2: @@ -3420,9 +3091,6 @@ packages: json-buffer@3.0.1: resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} - json-parse-even-better-errors@2.3.1: - resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} - json-schema-traverse@0.4.1: resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} @@ -3445,8 +3113,8 @@ packages: resolution: {integrity: sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==} engines: {node: '>=4.0'} - katex@0.16.28: - resolution: {integrity: sha512-YHzO7721WbmAL6Ov1uzN/l5mY5WWWhJBSW+jq4tkfZfsxmo1hu6frS0EOswvjBUnWE6NtjEs48SFn5CQESRLZg==} + katex@0.16.47: + resolution: {integrity: sha512-Eeo8Ys1doU1z+x8AZsPpQu+p/QcZBI5PeOo7QGQdy2x2m0MU/hYagBbGOmXwr5KVbEfVuWv9LpnQWeehogurjg==} hasBin: true kbar@0.1.0-beta.44: @@ -3469,19 +3137,6 @@ packages: resolution: {integrity: sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==} engines: {node: '>=6'} - langbase@1.2.4: - resolution: {integrity: sha512-bbZ3n79mWlQw6Gp+Vg9b/8nVJg4WF28PmZD70mq0X9K+F8lA5wdI5sIyBRkV3Jj1jqv3OXJFu4I5l6gVzRh51g==} - engines: {node: '>=18'} - peerDependencies: - react: ^18 || ^19 - peerDependenciesMeta: - react: - optional: true - - langium@3.3.1: - resolution: {integrity: sha512-QJv/h939gDpvT+9SiLVlY7tZC3xB2qK57v0J04Sh9wpMb6MP1q8gB21L3WIo8T5P1MSMg3Ep14L7KkDCFG3y4w==} - engines: {node: '>=16.0.0'} - language-subtag-registry@0.3.23: resolution: {integrity: sha512-0K65Lea881pHotoGEa5gDlMxt3pctLi2RplBb7Ezh4rRdLEOtgi7n4EwK9lamnUCkKBqaeKRVebTq6BAxSkpXQ==} @@ -3518,11 +3173,8 @@ packages: resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} engines: {node: '>=10'} - lodash-es@4.17.21: - resolution: {integrity: sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==} - - lodash-es@4.17.23: - resolution: {integrity: sha512-kVI48u3PZr38HdYz98UmfPnXl2DXrpdctLrFLCd3kOx1xUkOmpFPx7gCWWM5MPkL/fD8zb+Ph0QzjGFs4+hHWg==} + lodash-es@4.18.1: + resolution: {integrity: sha512-J8xewKD/Gk22OZbhpOVSwcs60zhd95ESDwezOFuA3/099925PdHJ7OFHNTGtajL3AlZkykD32HykiMo+BIBI8A==} lodash.camelcase@4.3.0: resolution: {integrity: sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==} @@ -3530,18 +3182,6 @@ packages: lodash.merge@4.6.2: resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} - log-symbols@3.0.0: - resolution: {integrity: sha512-dSkNGuI7iG3mfvDzUuYZyvk5dD9ocYCYzNU6CYDE6+Xqd+gwme6Z00NS3dUh8mq/73HaEtT7m6W+yUPtU6BZnQ==} - engines: {node: '>=8'} - - log-symbols@4.1.0: - resolution: {integrity: sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==} - engines: {node: '>=10'} - - log-symbols@7.0.1: - resolution: {integrity: sha512-ja1E3yCr9i/0hmBVaM0bfwDjnGy8I/s6PP4DFp+yP+a+mrHO4Rm7DtmnqROTUkHIkqffC84YY7AeqX6oFk0WFg==} - engines: {node: '>=18'} - long@5.3.2: resolution: {integrity: sha512-mNAgZ1GmyNhD7AuqnTG3/VQ26o760+ZYBPKjPvugO8+nLbYfX6TVpJPseBvopbdY+qpZ/lKUnmEc1LeZYS3QAA==} @@ -3556,10 +3196,6 @@ packages: resolution: {integrity: sha512-RPNliZOFkqFumDhvYqOaNY4Uz9oJM2K9tC6JWsJJsNdhuONW4LQHRBpb0qf4pJApVffI5N39SwzWZJuEhfd7eQ==} engines: {node: '>=0.10.0'} - lowdb@7.0.1: - resolution: {integrity: sha512-neJAj8GwF0e8EpycYIDFqEPcx9Qz4GUho20jWFR7YiFeXzF1YMLdxB36PypcTSPMA+4+LvgyMacYhlr18Zlymw==} - engines: {node: '>=18'} - lower-case@2.0.2: resolution: {integrity: sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==} @@ -3575,10 +3211,6 @@ packages: peerDependencies: react: ^16.5.1 || ^17.0.0 || ^18.0.0 - make-dir@3.1.0: - resolution: {integrity: sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==} - engines: {node: '>=8'} - map-obj@1.0.1: resolution: {integrity: sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg==} engines: {node: '>=0.10.0'} @@ -3701,10 +3333,6 @@ packages: memoize-one@4.0.3: resolution: {integrity: sha512-QmpUu4KqDmX0plH4u+tf0riMc1KHE1+lw95cMrLlXQAFOx/xnBtwhZ52XJxd9X2O6kwKBqX32kmhbhlobD0cuw==} - meow@13.2.0: - resolution: {integrity: sha512-pxQJQzB6djGPXh08dacEloMFopsOqGVRKFPYvPOt9XDZ1HasbgDZA74CJGreSU4G3Ak7EFJGoiH2auq+yXISgA==} - engines: {node: '>=18'} - meow@3.6.0: resolution: {integrity: sha512-1zRGO8C/2QD8uBxZbwwKbIQHrHKANzVnlK/3Gj7xro+ks4HLmayvETy+BnCV+wm68PE6dYcfgyTDMVG2mjlQwg==} engines: {node: '>=0.10.0'} @@ -3713,8 +3341,8 @@ packages: resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} engines: {node: '>= 8'} - mermaid@11.12.2: - resolution: {integrity: sha512-n34QPDPEKmaeCG4WDMGy0OT6PSyxKCfy2pJgShP+Qow2KLrvWjclwbc3yXfSIf4BanqWEhQEpngWwNp/XhZt6w==} + mermaid@11.17.2: + resolution: {integrity: sha512-V6K3C8EBdEsPFZXSKMJe6ppQOENxuHARr9GvHX4hh47lAbhMRD9qf4oEK7LoaRQxULMa80/qt5gHO73aCleBBg==} micromark-core-commonmark@1.1.0: resolution: {integrity: sha512-BgHO1aRbolh2hcrzL2d1La37V0Aoz73ymF8rAcKnohLy93titmv62E0gP8Hrx9PKcKrqCZ1BbLGbP3bEhoXYlw==} @@ -3912,28 +3540,12 @@ packages: resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==} engines: {node: '>=8.6'} - mime-db@1.52.0: - resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} - engines: {node: '>= 0.6'} - - mime-types@2.1.35: - resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} - engines: {node: '>= 0.6'} - - mimic-response@2.1.0: - resolution: {integrity: sha512-wXqjST+SLt7R009ySCglWBCFpjUygmCIfD790/kVbiGmUgfYGuB14PiTd5DwVxSV4NcYHjzMkoj5LjQZwTQLEA==} - engines: {node: '>=8'} - - mimic-response@3.1.0: - resolution: {integrity: sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==} - engines: {node: '>=10'} + minimatch@10.2.6: + resolution: {integrity: sha512-vpLQEs+VLCr1nU0BXS07maYoFwlDAH0gngQuuttxIwutDFEMHq2blX+8vpgxDdK3J1PwjCJiep77OitTZ4Ll1A==} + engines: {node: 18 || 20 || >=22} - minimatch@10.1.2: - resolution: {integrity: sha512-fu656aJ0n2kcXwsnwnv9g24tkU5uSmOlTjd6WyyaKm2Z+h1qmY6bAjrcaIxF/BslFqbZ8UBtbJi7KgQOZD2PTw==} - engines: {node: 20 || >=22} - - minimatch@3.1.2: - resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} + minimatch@3.1.5: + resolution: {integrity: sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==} minimatch@9.0.3: resolution: {integrity: sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==} @@ -3942,30 +3554,10 @@ packages: minimist@1.2.8: resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} - minipass@3.3.6: - resolution: {integrity: sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==} - engines: {node: '>=8'} - - minipass@5.0.0: - resolution: {integrity: sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==} - engines: {node: '>=8'} - minipass@7.1.2: resolution: {integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==} engines: {node: '>=16 || 14 >=14.17'} - minizlib@2.1.2: - resolution: {integrity: sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==} - engines: {node: '>= 8'} - - mkdirp-classic@0.5.3: - resolution: {integrity: sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==} - - mkdirp@1.0.4: - resolution: {integrity: sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==} - engines: {node: '>=10'} - hasBin: true - mlly@1.8.0: resolution: {integrity: sha512-l8D9ODSRWLe2KHJSifWGwBqpTZXIXTeo8mlKjY+E2HAakaTeNpqAyBZ8GSqLzHgw4XmHmC8whvpjJNMbFZN7/g==} @@ -3984,17 +3576,11 @@ packages: mz@2.7.0: resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==} - nan@2.25.0: - resolution: {integrity: sha512-0M90Ag7Xn5KMLLZ7zliPWP3rT90P6PN+IzVFS0VqmnPktBk3700xUVv8Ikm9EUaUE5SDWdp/BIxdENzVznpm1g==} - - nanoid@3.3.11: - resolution: {integrity: sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==} + nanoid@3.3.18: + resolution: {integrity: sha512-DTg4MJbGMWkfi6VZFdNt2/caMbQy4Ou+Op/hJQvGEWcnVfoA1QA+xzRKAzw9jD6+GVOOeYr/mIcuDSdug6F6+w==} engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} hasBin: true - napi-build-utils@2.0.0: - resolution: {integrity: sha512-GEbrYkbfF7MoNaoh2iGG84Mnf/WZfB0GdGEsM8wz7Expx/LlWf5U8t9nvJKXSp3qr5IsEbK04cBGhol/KwOsWA==} - napi-postinstall@0.3.4: resolution: {integrity: sha512-PHI5f1O0EP5xJ9gQmFGMS6IZcrVvTjpXjz7Na41gTE7eE2hK11lg04CECCYEEjdc17EV4DO+fkGEtt7TpTaTiQ==} engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} @@ -4039,38 +3625,18 @@ packages: no-case@3.0.4: resolution: {integrity: sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==} - node-abi@3.87.0: - resolution: {integrity: sha512-+CGM1L1CgmtheLcBuleyYOn7NWPVu0s0EJH2C4puxgEZb9h8QpR9G2dBfZJOAUhi7VQxuBPMd0hiISWcTyiYyQ==} - engines: {node: '>=10'} - - node-addon-api@6.1.0: - resolution: {integrity: sha512-+eawOlIgy680F0kBzPUNFhMZGtJ1YmqM6l4+Crf4IkImjYrO/mqPwRMh352g23uIaQKFItcQ64I7KMaJxHgAVA==} - node-domexception@1.0.0: resolution: {integrity: sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==} engines: {node: '>=10.5.0'} deprecated: Use your platform's native DOMException instead - node-fetch@2.7.0: - resolution: {integrity: sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==} - engines: {node: 4.x || >=6.0.0} - peerDependencies: - encoding: ^0.1.0 - peerDependenciesMeta: - encoding: - optional: true - node-fetch@3.3.2: resolution: {integrity: sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - node-releases@2.0.27: - resolution: {integrity: sha512-nmh3lCkYZ3grZvqcCH+fjmQ7X+H0OeZgP40OierEaAptX4XofMh5kwNbWh7lBduUzCcV/8kZ+NDLCwm2iorIlA==} - - nopt@5.0.0: - resolution: {integrity: sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==} - engines: {node: '>=6'} - hasBin: true + node-releases@2.0.55: + resolution: {integrity: sha512-mIrE/Cw9y+9Au6dS5vDKDhQza9YvG6w+ZrS6X+ZzA7yFW/soAeaups4Qzn1bL6g5FVy8WtP79+0j82oPIbqRjQ==} + engines: {node: '>=18'} normalize-package-data@2.5.0: resolution: {integrity: sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==} @@ -4079,14 +3645,6 @@ packages: resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} engines: {node: '>=0.10.0'} - npm-run-path@6.0.0: - resolution: {integrity: sha512-9qny7Z9DsQU8Ou39ERsPU4OZQlSTP47ShQzuKZ6PRXpYLtIFgl/DEBYEXKlvcEa+9tHVcK8CF81Y2V72qaZhWA==} - engines: {node: '>=18'} - - npmlog@5.0.1: - resolution: {integrity: sha512-AqZtDUWOMKs1G/8lwylVjrdYgqA4d9nu8hc+0gzRxlDb1I10+FHBGMXs6aiQHFdCUUlqH99MUMuLfzWDNDtfxw==} - deprecated: This package is no longer supported. - object-assign@4.0.1: resolution: {integrity: sha512-c6legOHWepAbWnp3j5SRUMpxCXBKI4rD7A5Osn9IzZ8w4O/KccXdW0lqdkQKbpk0eHGjNgKihgzY6WuEq99Tfw==} engines: {node: '>=0.10.0'} @@ -4134,25 +3692,6 @@ packages: resolution: {integrity: sha512-EebBYPzBN8H/j+6sMB5IxAvulsffQuMaPn4ZQeiDKYy1uqTT5t50inNN/tn61wwCs7IZ2jUb1sCEkyh2iwkHlA==} engines: {node: '>= 14.17.0'} - open@10.2.0: - resolution: {integrity: sha512-YgBpdJHPyQ2UE5x+hlSXcnejzAvD0b22U2OuAP+8OnlJT+PjWPxtgmGqKKc+RgTM63U9gN0YzrYc71R2WT/hTA==} - engines: {node: '>=18'} - - openai@4.104.0: - resolution: {integrity: sha512-p99EFNsA/yX6UhVO93f5kJsDRLAg+CTA2RBqdHK4RtK8u5IJw32Hyb2dTGKbnnFmnuoBv5r7Z2CURI9sGZpSuA==} - hasBin: true - peerDependencies: - ws: ^8.18.0 - zod: ^3.23.8 - peerDependenciesMeta: - ws: - optional: true - zod: - optional: true - - openapi3-ts@4.5.0: - resolution: {integrity: sha512-jaL+HgTq2Gj5jRcfdutgRGLosCy/hT8sQf6VOy+P+g36cZOjI1iukdPnijC+4CmeRzg/jEllJUboEic2FhxhtQ==} - optionator@0.9.4: resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==} engines: {node: '>= 0.8.0'} @@ -4169,10 +3708,6 @@ packages: resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} engines: {node: '>=10'} - p-map@7.0.4: - resolution: {integrity: sha512-tkAQEw8ysMzmkhgw8k+1U/iPhWNhykKnSk4Rd5zLoPJCuJaGRPo6YposrZgaxHKzDHdDWWZvE/Sk7hsL2X/CpQ==} - engines: {node: '>=18'} - package-json-from-dist@1.0.1: resolution: {integrity: sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==} @@ -4193,14 +3728,6 @@ packages: resolution: {integrity: sha512-QR/GGaKCkhwk1ePQNYDRKYZ3mwU9ypsKhB0XyFnLQdomyEqk3e8wpW3V5Jp88zbxK4n5ST1nqo+g9juTpownhQ==} engines: {node: '>=0.10.0'} - parse-json@5.2.0: - resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} - engines: {node: '>=8'} - - parse-ms@4.0.0: - resolution: {integrity: sha512-TXfryirbmq34y8QBwgqCVLi+8oA3oWx2eAnSn62ITyEhEYaWRlVZ2DvMM9eZbMs/RfxPu/PK/aBLyGj4IrqMHw==} - engines: {node: '>=18'} - parse-numeric-range@1.3.0: resolution: {integrity: sha512-twN+njEipszzlMJd4ONUYgSfZPDxgHhT9Ahed5uTigpQn90FggW4SA/AIPq/6a149fTbE9qBEcSwE3FAEp6wQQ==} @@ -4229,10 +3756,6 @@ packages: resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} engines: {node: '>=8'} - path-key@4.0.0: - resolution: {integrity: sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==} - engines: {node: '>=12'} - path-parse@1.0.7: resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} @@ -4257,12 +3780,12 @@ packages: picocolors@1.1.1: resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} - picomatch@2.3.1: - resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} + picomatch@2.3.2: + resolution: {integrity: sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA==} engines: {node: '>=8.6'} - picomatch@4.0.3: - resolution: {integrity: sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==} + picomatch@4.0.7: + resolution: {integrity: sha512-qcJu88Q2IWqJsDD529JKMdwGm/dvInW4HvQnRwiH9JtihJvzGOscDtHE3x1pBKeUOTysQ8kVmLnJ2kJu7yhcGA==} engines: {node: '>=12'} pify@2.3.0: @@ -4334,8 +3857,8 @@ packages: resolution: {integrity: sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w==} engines: {node: '>=4'} - postcss-selector-parser@6.1.2: - resolution: {integrity: sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==} + postcss-selector-parser@6.1.4: + resolution: {integrity: sha512-bIoJLOmjCO1S9XdY/DcnR5hJxvrDir1PbGChrzXG3vw0/FOliy/fA3dmdhQ441kah4gKv+TwckGzex6wNS5cnQ==} engines: {node: '>=4'} postcss-value-parser@4.2.0: @@ -4345,15 +3868,10 @@ packages: resolution: {integrity: sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==} engines: {node: ^10 || ^12 || >=14} - postcss@8.5.6: - resolution: {integrity: sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==} + postcss@8.5.28: + resolution: {integrity: sha512-RRuzqDtt5Y9h3quz5hWhK+TPnsmVs6WwSU6LkJMeY4HstUEDuYTG8UJSdawMRzmzAtV+KEoG8N3Qg2qLy5vM/A==} engines: {node: ^10 || ^12 || >=14} - prebuild-install@7.1.3: - resolution: {integrity: sha512-8Mf2cbV7x1cXPUILADGI3wuhfqWvtiLA1iclTDbFRZkgRQS0NqsPZphna9V+HyTEadheuPmjaJMsbzKQFOzLug==} - engines: {node: '>=10'} - hasBin: true - prelude-ls@1.2.1: resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} engines: {node: '>= 0.8.0'} @@ -4415,10 +3933,6 @@ packages: engines: {node: '>=14'} hasBin: true - pretty-ms@9.3.0: - resolution: {integrity: sha512-gjVS5hOP+M3wMm5nmNOucbIrqudzs9v/57bWRHQWLYklXqoXKrVfYW2W9+glfGsqtPgpiz5WwyEEB+ksXIx3gQ==} - engines: {node: '>=18'} - prism-react-renderer@2.4.1: resolution: {integrity: sha512-ey8Ls/+Di31eqzUxC46h8MksNuGx/n0AAC8uKpwFau4RPDYLuE3EXTp8N8G2vX2N7UC/+IXeNUnlWBGGcAG+Ig==} peerDependencies: @@ -4444,13 +3958,10 @@ packages: property-information@7.1.0: resolution: {integrity: sha512-TwEZ+X+yCJmYfL7TPUOcvBZ4QfoT5YenQiJuX//0th53DE6w0xxLEtfK3iyryQFddXuvkIk51EEgrJQ0WJkOmQ==} - protobufjs@7.5.4: - resolution: {integrity: sha512-CvexbZtbov6jW2eXAvLukXjXUW1TzFaivC46BpWc/3BpcCysb5Vffu+B3XHMm8lVEuy2Mm4XGex8hBSg1yapPg==} + protobufjs@7.6.6: + resolution: {integrity: sha512-dYDWdjSl5RNb7SgPxGQcRU+GtvP7s2fpkrY0r432PcOIaZ0/rBcxEZnQN67iJhFuQiVw754JDoPruPCNdGsbjg==} engines: {node: '>=12.0.0'} - pump@3.0.3: - resolution: {integrity: sha512-todwxLMY7/heScKmntwQG8CXVkWUOdYxIvY2s0VWAAMh/nd8SoYiRaKjlr7+iCs984f2P8zvrfWcDDYVb73NfA==} - punycode@2.3.1: resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} engines: {node: '>=6'} @@ -4458,10 +3969,6 @@ packages: queue-microtask@1.2.3: resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} - rc@1.2.8: - resolution: {integrity: sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==} - hasBin: true - react-dom@18.3.1: resolution: {integrity: sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==} peerDependencies: @@ -4533,10 +4040,6 @@ packages: resolution: {integrity: sha512-7BGwRHqt4s/uVbuyoeejRn4YmFnYZiFl4AuaeXHlgZf3sONF0SOGlxs2Pw8g6hCKupo08RafIO5YXFNOKTfwsQ==} engines: {node: '>=0.10.0'} - readable-stream@3.6.2: - resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==} - engines: {node: '>= 6'} - readdirp@3.6.0: resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} engines: {node: '>=8.10.0'} @@ -4662,10 +4165,6 @@ packages: roughjs@4.6.6: resolution: {integrity: sha512-ZUz/69+SYpFN/g/lUlo2FXcIjRkSu3nDarreVdGGndHEBJ6cXPdKguS8JGxwj5HA5xIbVKSmLgr5b3AWxtRfvQ==} - run-applescript@7.1.0: - resolution: {integrity: sha512-DPe5pVFaAsinSaV6QjQ6gdiedWDcRCbUuiQfQa2wmWV7+xC9bGulGI8+TdRmoFkAPaBXk8CrAbnlY2ISniJ47Q==} - engines: {node: '>=18'} - run-parallel@1.2.0: resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} @@ -4680,9 +4179,6 @@ packages: resolution: {integrity: sha512-AURm5f0jYEOydBj7VQlVvDrjeFgthDdEF5H1dP+6mNpoXOMo1quQqJ4wvJDyRZ9+pO3kGWoOdmV08cSv2aJV6Q==} engines: {node: '>=0.4'} - safe-buffer@5.2.1: - resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} - safe-push-apply@1.0.0: resolution: {integrity: sha512-iKE9w/Z7xCzUMIZqdBsp6pEQvwuEebH4vdpjcDWnyzaI6yl6O9FHvVpmGelvEHNsoY6wGblkxR6Zty/h00WiSA==} engines: {node: '>= 0.4'} @@ -4721,8 +4217,10 @@ packages: engines: {node: '>=10'} hasBin: true - set-blocking@2.0.0: - resolution: {integrity: sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==} + semver@7.8.5: + resolution: {integrity: sha512-Y7/KDsb8LjooZpwaqGyulO6DQlksgCncchHGk+sZIY4SBvUocMBEFH5Ur1fI4dV+Jvl0w6cjvucaIi40puRioA==} + engines: {node: '>=10'} + hasBin: true set-function-length@1.2.2: resolution: {integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==} @@ -4736,9 +4234,14 @@ packages: resolution: {integrity: sha512-RJRdvCo6IAnPdsvP/7m6bsQqNnn1FCBX5ZNtFL98MmFF/4xAIJTIg1YbHW5DC2W5SKZanrC6i4HsJqlajw/dZw==} engines: {node: '>= 0.4'} - sharp@0.32.6: - resolution: {integrity: sha512-KyLTWwgcR9Oe4d9HwCwNM2l7+J0dUQwn/yf7S0EnTtb0eVS4RxO0eUSvxPtzT4F3SY+C4K6fqdv/DO27sJ/v/w==} - engines: {node: '>=14.15.0'} + sharp@0.35.4: + resolution: {integrity: sha512-n++8XWcj+jCOr2IOl7h8LbKnGBDY4aPbmprMONBNFdn0ImXqpGVv5zliDs0V9HbmbCQLpbuo2ej9rAoOQTvMDA==} + engines: {node: '>=20.9.0'} + peerDependencies: + '@types/node': '*' + peerDependenciesMeta: + '@types/node': + optional: true shebang-command@2.0.0: resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} @@ -4774,24 +4277,9 @@ packages: resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} engines: {node: '>=14'} - simple-concat@1.0.1: - resolution: {integrity: sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==} - simple-functional-loader@1.2.1: resolution: {integrity: sha512-GPDrxrQkE7ijm35QlfPFVp5hBHR6ZcaUq42TEDgf1U5iTL3IDLFvKAbHE/ODqpdfJJ7Xn4cr/slBn12jjNPkaQ==} - simple-get@3.1.1: - resolution: {integrity: sha512-CQ5LTKGfCpvE1K0n2us+kuMPbk/q0EKl82s4aheV9oXjFEz6W/Y7oQFVJuU6QG77hRT4Ghb5RURteF5vnWjupA==} - - simple-get@4.0.1: - resolution: {integrity: sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA==} - - simple-swizzle@0.2.4: - resolution: {integrity: sha512-nAu1WFPQSMNr2Zn9PGSZK9AGn4t/y97lEm+MXTtUDwfP0ksAIX4nO+6ruD9Jwut4C49SB1Ws+fbXsm/yScWOHw==} - - sisteransi@1.0.5: - resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==} - slash@3.0.0: resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} engines: {node: '>=8'} @@ -4836,17 +4324,9 @@ packages: sprintf-js@1.0.3: resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} - ssf@0.11.2: - resolution: {integrity: sha512-+idbmIXoYET47hH+d7dfm2epdOMUDjqcB4648sTZ+t2JwoyBFL/insLfB/racrDmsKB3diwsDA696pZMieAC5g==} - engines: {node: '>=0.8'} - stable-hash@0.0.5: resolution: {integrity: sha512-+L3ccpzibovGXFK+Ap/f8LOS0ahMrHTf3xu7mMLSpEGU0EO9ucaysSylKo9eRDFNhWve/y275iPmIZ4z39a9iA==} - steno@4.0.2: - resolution: {integrity: sha512-yhPIQXjrlt1xv7dyPQg2P17URmXbuM5pdGkpiMB3RenprfiBlvK415Lctfe0eshk90oA7/tNq7WEiMK8RSP39A==} - engines: {node: '>=18'} - stop-iteration-iterator@1.1.0: resolution: {integrity: sha512-eLoXW/DHyl62zxY4SCaIgnRhuMr6ri4juEYARS8E6sCEqzKpOiE521Ucofdx+KnDZl5xmvGYaaKCk5FEOxJCoQ==} engines: {node: '>= 0.4'} @@ -4855,8 +4335,8 @@ packages: resolution: {integrity: sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==} engines: {node: '>=10.0.0'} - streamx@2.23.0: - resolution: {integrity: sha512-kn+e44esVfn2Fa/O0CPFcex27fjIL6MkVae0Mm6q+E6f0hWv578YCERbv+4m02cjxvDsPKLnmxral/rR6lBMAg==} + strictdom@1.0.1: + resolution: {integrity: sha512-cEmp9QeXXRmjj/rVp9oyiqcvyocWab/HaoN4+bwFeZ7QzykJD6L3yD4v12K1x0tHpqRqVpJevN3gW7kyM39Bqg==} string-width@4.2.3: resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} @@ -4885,9 +4365,6 @@ packages: resolution: {integrity: sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==} engines: {node: '>= 0.4'} - string_decoder@1.3.0: - resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} - stringify-entities@4.0.4: resolution: {integrity: sha512-IwfBptatlO+QCJUo19AqvrPNqlVMpW9YEL2LIVY+Rpv2qsjCGxaDLNRgeGsQWJhfItebuJhsGSLjaBbNSQ+ieg==} @@ -4907,19 +4384,11 @@ packages: resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} engines: {node: '>=4'} - strip-final-newline@4.0.0: - resolution: {integrity: sha512-aulFJcD6YK8V1G7iRB5tigAP4TsHBZZrOV8pjV++zdUwmeV8uzbY7yn6h9MswN62adStNZFuCIx4haBnRuMDaw==} - engines: {node: '>=18'} - strip-indent@1.0.1: resolution: {integrity: sha512-I5iQq6aFMM62fBEAIB/hXzwJD6EEZ0xEGCX2t7oXqaKPIRgt4WruAQ285BISgdkP+HLGWyeGmNJcpIwFeRYRUA==} engines: {node: '>=0.10.0'} hasBin: true - strip-json-comments@2.0.1: - resolution: {integrity: sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==} - engines: {node: '>=0.10.0'} - strip-json-comments@3.1.1: resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} engines: {node: '>=8'} @@ -4954,10 +4423,6 @@ packages: engines: {node: '>=16 || 14 >=14.17'} hasBin: true - supports-color@5.5.0: - resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} - engines: {node: '>=4'} - supports-color@7.2.0: resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} engines: {node: '>=8'} @@ -4982,27 +4447,6 @@ packages: engines: {node: '>=14.0.0'} hasBin: true - tar-fs@2.1.4: - resolution: {integrity: sha512-mDAjwmZdh7LTT6pNleZ05Yt65HC3E+NiQzl672vQG38jIrehtJk/J3mNwIg+vShQPcLF/LV7CMnDW6vjj6sfYQ==} - - tar-fs@3.1.1: - resolution: {integrity: sha512-LZA0oaPOc2fVo82Txf3gw+AkEd38szODlptMYejQUhndHMLQ9M059uXR+AfS7DNo0NpINvSqDsvyaCrBVkptWg==} - - tar-stream@2.2.0: - resolution: {integrity: sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==} - engines: {node: '>=6'} - - tar-stream@3.1.7: - resolution: {integrity: sha512-qJj60CXt7IU1Ffyc3NJMjh6EkuCFej46zUqJ4J7pqYlThyd9bO0XBTmcOIhSzZJVWfsLks0+nle/j538YAW9RQ==} - - tar@6.2.1: - resolution: {integrity: sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==} - engines: {node: '>=10'} - deprecated: Old versions of tar are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me - - text-decoder@1.2.3: - resolution: {integrity: sha512-3/o9z3X0X0fTupwsYvR03pJ/DjWuqqrfwBgTQzdWDiQSm9KitAyz/9WqsT2JQW7KV2m+bC2ol/zqpW37NHxLaA==} - text-table@0.2.0: resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} @@ -5031,9 +4475,6 @@ packages: toml@3.0.0: resolution: {integrity: sha512-y/mWCZinnvxjTKYhJ+pYxwD0mRLVvOtdS2Awbgxln6iEnt4rk0yBxeSBHkGJcPucRiG0e55mwWp+g/05rsrd6w==} - tr46@0.0.3: - resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} - trim-lines@3.0.1: resolution: {integrity: sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==} @@ -5066,9 +4507,6 @@ packages: tslib@2.8.1: resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} - tunnel-agent@0.6.0: - resolution: {integrity: sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==} - typanion@3.14.0: resolution: {integrity: sha512-ZW/lVMRabETuYCd9O9ZvMhAh8GslSqaUjxmK/JLPCh6l73CvLBiuXswj/+7LdnWOgYsQ130FqLzFz5aGT4I3Ug==} @@ -5116,13 +4554,6 @@ packages: resolution: {integrity: sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw==} engines: {node: '>= 0.4'} - undici-types@5.26.5: - resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==} - - unicorn-magic@0.3.0: - resolution: {integrity: sha512-+QBBXBCvifc56fsbuxZQ6Sic3wqqc3WWaqxs58gvJrcOuN83HGTCwz3oS5phzU9LthRNE9VrJCFCLUgHeeFnfA==} - engines: {node: '>=18'} - unified@10.1.2: resolution: {integrity: sha512-pUSWAi/RAnVy1Pif2kAoeWNBa3JVrx0MId2LASj8G+7AiHWoKZNTomq6LG326T68U7/e263X6fTdcXIy7XnF7Q==} @@ -5171,14 +4602,11 @@ packages: unist-util-visit@5.1.0: resolution: {integrity: sha512-m+vIdyeCOpdr/QeQCu2EzxX/ohgS8KbnPDgFni4dQsfSCtpz8UqDyY5GjRru8PDKuYn7Fq19j1CQ+nJSsGKOzg==} - unpdf@0.11.0: - resolution: {integrity: sha512-SScdGQl6uTMt4+872d7YwQxMFnvxM6XtrfKLR0Q1DPTIGpsbbg7b11J73sz4s6R5mMID+KYtoMnjH+OQX4Iiyg==} - unrs-resolver@1.11.1: resolution: {integrity: sha512-bSjt9pjaEBnNiGgc9rUiHGKv5l4/TGzDmYw3RhnkJGtLhbnnA/5qJj7x3dNDCRx/PJxu774LlH8lCOlB4hEfKg==} - update-browserslist-db@1.2.3: - resolution: {integrity: sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w==} + update-browserslist-db@1.3.2: + resolution: {integrity: sha512-UQ+MSxlhRm1bzjhU+DcuXfjFO1FzNtqhK5+9Yvlp90ItDLk5vT932A0rFu619nf7RVS+Y/VeaUW1jaRDqZ8VJw==} hasBin: true peerDependencies: browserslist: '>= 4.21.0' @@ -5209,16 +4637,13 @@ packages: util-deprecate@1.0.2: resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} - uuid@10.0.0: - resolution: {integrity: sha512-8XkAphELsDnEGrDxUOHB3RGvXz6TeuYSGEZBOjtTtPm2lwhGBjLgOzLHB63IUWfBpNucQjND6d3AOudO+H3RWQ==} - hasBin: true - - uuid@11.1.0: - resolution: {integrity: sha512-0/A9rDy9P7cJ+8w1c9WD9V//9Wj15Ce2MPz8Ri6032usz+NfePxx5AcN3bN+r6ZL6jEo066/yNYB3tn4pQEx+A==} + uuid@14.0.2: + resolution: {integrity: sha512-xZe/16rV4aa+HGSOCiY2YeLT1OybRLrrkL/Rqaq7p7GMVXjFh+6wN4oMYgjFmnSnhY8t6Xpdl2l9qmnHYuMHwQ==} hasBin: true uuid@8.3.2: resolution: {integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==} + deprecated: uuid@10 and below is no longer supported. For ESM codebases, update to uuid@latest. For CommonJS codebases, use uuid@11 (but be aware this version will likely be deprecated in 2028). hasBin: true uvu@0.5.6: @@ -5229,12 +4654,6 @@ packages: validate-npm-package-license@3.0.4: resolution: {integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==} - validate.io-array@1.0.6: - resolution: {integrity: sha512-DeOy7CnPEziggrOO5CZhVKJw6S3Yi7e9e65R1Nl/RTN1vTQKnzjfvks0/8kQ40FP/dsjRAOd4hxmJ7uLa6vxkg==} - - validate.io-function@1.0.2: - resolution: {integrity: sha512-LlFybRJEriSuBnUhQyG5bwglhh50EpTL2ul23MPIuR1odjO7XaMLFV8vHGwp7AZciFxtYOeiSCT5st+XSPONiQ==} - vfile-location@4.1.0: resolution: {integrity: sha512-YF23YMyASIIJXpktBa4vIGLJ5Gs88UB/XePgqPmTa7cDA+JeO3yclbpheQYCHjVHBn/yePzrXuygIL+xbvRYHw==} @@ -5250,32 +4669,12 @@ packages: vfile@6.0.3: resolution: {integrity: sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q==} - vscode-jsonrpc@8.2.0: - resolution: {integrity: sha512-C+r0eKJUIfiDIfwJhria30+TYWPtuHJXHtI7J0YlOmKAo7ogxP20T0zxB7HZQIFhIyvoBPwWskjxrvAtfjyZfA==} - engines: {node: '>=14.0.0'} - - vscode-languageserver-protocol@3.17.5: - resolution: {integrity: sha512-mb1bvRJN8SVznADSGWM9u/b07H7Ecg0I3OgXDuLdn307rl/J3A9YD6/eYOssqhecL27hK1IPZAsaqh00i/Jljg==} - - vscode-languageserver-textdocument@1.0.12: - resolution: {integrity: sha512-cxWNPesCnQCcMPeenjKKsOCKQZ/L6Tv19DTRIGuLWe32lyzWhihGVJ/rcckZXJxfdKCFvRLS3fpBIsV/ZGX4zA==} - - vscode-languageserver-types@3.17.5: - resolution: {integrity: sha512-Ld1VelNuX9pdF39h2Hgaeb5hEZM2Z3jUrrMgWQAu82jMtZp7p3vJT3BzToKtZI7NgQssZje5o0zryOrhQvzQAg==} - - vscode-languageserver@9.0.1: - resolution: {integrity: sha512-woByF3PDpkHFUreUa7Hos7+pUWdeWMXRd26+ZX2A8cFx6v/JPTtd4/uN0/jB6XQHYaOlHbio03NTHCqrgG5n7g==} - hasBin: true - vscode-oniguruma@1.7.0: resolution: {integrity: sha512-L9WMGRfrjOhgHSdOYgCt/yRMsXzLDJSL7BPrOZt73gU0iWO4mpqzqQzOz5srxqTvMBaR0XZTSrVWo4j55Rc6cA==} vscode-textmate@8.0.0: resolution: {integrity: sha512-AFbieoL7a5LMqcnOF04ji+rpXadgOXnZsxQr//r83kLPr7biP7am3g9zbaZIaBGwBRWeSvoMD4mgPdX3e4NWBg==} - vscode-uri@3.0.8: - resolution: {integrity: sha512-AyFQ0EVmsOZOlAnxoFOGOq1SQDWAB7C6aqMGS23svWAllfOaxbuFvcT8D1i8z3Gyn8fraVeZNNmN6e9bxxXkKw==} - web-namespaces@2.0.1: resolution: {integrity: sha512-bKr1DkiNa2krS7qxNtdrtHAmzuYGFQLiQ13TsorsdT6ULTkPLKuu5+GsFpDlg6JFjUTwX2DyhMPG2be8uPrqsQ==} @@ -5283,16 +4682,6 @@ packages: resolution: {integrity: sha512-d2JWLCivmZYTSIoge9MsgFCZrt571BikcWGYkjC1khllbTeDlGqZ2D8vD8E/lJa8WGWbb7Plm8/XJYV7IJHZZw==} engines: {node: '>= 8'} - web-streams-polyfill@4.0.0-beta.3: - resolution: {integrity: sha512-QW95TCTaHmsYfHDybGMwO5IJIM93I/6vTRk+daHTWFPhwh+C8Cg7j7XyKrwrj8Ib6vYXe0ocYNrmzY4xAAN6ug==} - engines: {node: '>= 14'} - - webidl-conversions@3.0.1: - resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} - - whatwg-url@5.0.0: - resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} - which-boxed-primitive@1.1.1: resolution: {integrity: sha512-TbX3mj8n0odCBFVlY8AxkqcHASw3L60jIuF8jFP78az3C2YhmGvqbHBpAjTRH2/xqYunrJ9g1jSyjCjpoWzIAA==} engines: {node: '>= 0.4'} @@ -5314,21 +4703,10 @@ packages: engines: {node: '>= 8'} hasBin: true - wide-align@1.1.5: - resolution: {integrity: sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==} - - wmf@1.0.2: - resolution: {integrity: sha512-/p9K7bEh0Dj6WbXg4JG0xvLQmIadrner1bi45VMJTfnbVHsc7yIajZyoSoK60/dtVBs12Fm6WkUI5/3WAVsNMw==} - engines: {node: '>=0.8'} - word-wrap@1.2.5: resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==} engines: {node: '>=0.10.0'} - word@0.3.0: - resolution: {integrity: sha512-OELeY0Q61OXpdUfTp+oweA/vtLVg5VDOXh+3he3PNzLGG/y0oylSOC1xRVj0+l4vQ3tj/bB1HVHv1ocXkQceFA==} - engines: {node: '>=0.8'} - wrap-ansi@7.0.0: resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} engines: {node: '>=10'} @@ -5336,15 +4714,6 @@ packages: wrappy@1.0.2: resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} - wsl-utils@0.1.0: - resolution: {integrity: sha512-h3Fbisa2nKGPxCpm89Hk33lBLsnaGBvctQopaBSOW/uIs6FTe1ATyAnKFJrzVs9vpGdsTe73WF3V4lIsk4Gacw==} - engines: {node: '>=18'} - - xlsx@0.18.5: - resolution: {integrity: sha512-dmg3LCjBPHZnQp5/F/+nnTa+miPJxUXB6vtk42YjBBKayDNagxGEeIdWApkYPOf3Z3pm3k62Knjzp7lMeTEtFQ==} - engines: {node: '>=0.8'} - hasBin: true - xml-js@1.6.11: resolution: {integrity: sha512-7rVi2KMfwfWFl+GpPg6m80IVMWXLRjO+PxTq7V2CDhoGak0wzYzFgUY2m4XJ47OGdXd8eLE8EmwfAmdjw7lC1g==} hasBin: true @@ -5357,11 +4726,8 @@ packages: resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} engines: {node: '>=10'} - yallist@4.0.0: - resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} - - yaml@2.8.2: - resolution: {integrity: sha512-mplynKqc1C2hTVYxd0PU2xQAc22TI1vShAYGksCCfxbn/dFwnHTNi1bvYsBTkhdUNtGIf5xNOg938rrSSYvS9A==} + yaml@2.9.0: + resolution: {integrity: sha512-2AvhNX3mb8zd6Zy7INTtSpl1F15HW6Wnqj0srWlkKLcpYl/gMIMJiyuGq2KeI2YFxUPjdlB+3Lc10seMLtL4cA==} engines: {node: '>= 14.6'} hasBin: true @@ -5377,19 +4743,6 @@ packages: resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} engines: {node: '>=10'} - yoctocolors@2.1.2: - resolution: {integrity: sha512-CzhO+pFNo8ajLM2d2IW/R93ipy99LWjtwblvC1RsoSUMZgyLbYFr221TnSNT7GjGdYui6P459mw9JH/g/zW2ug==} - engines: {node: '>=18'} - - zod-error@1.5.0: - resolution: {integrity: sha512-zzopKZ/skI9iXpqCEPj+iLCKl9b88E43ehcU+sbRoHuwGd9F1IDVGQ70TyO6kmfiRL1g4IXkjsXK+g1gLYl4WQ==} - - zod-validation-error@3.5.4: - resolution: {integrity: sha512-+hEiRIiPobgyuFlEojnqjJnhFvg4r/i3cqgcm67eehZf/WBaK3g6cD02YU9mtdVxZjv8CzCA9n/Rhrs3yAAvAw==} - engines: {node: '>=18.0.0'} - peerDependencies: - zod: ^3.24.4 - zod@3.25.76: resolution: {integrity: sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==} @@ -5615,65 +4968,11 @@ snapshots: package-manager-detector: 1.6.0 tinyexec: 1.0.2 - '@antfu/ni@0.23.2': {} - - '@asteasolutions/zod-to-openapi@7.3.4(zod@3.25.76)': - dependencies: - openapi3-ts: 4.5.0 - zod: 3.25.76 - - '@babel/code-frame@7.29.0': - dependencies: - '@babel/helper-validator-identifier': 7.28.5 - js-tokens: 4.0.0 - picocolors: 1.1.1 - - '@babel/helper-validator-identifier@7.28.5': {} - '@babel/runtime@7.28.6': {} - '@baseai/core@0.9.43(react@18.3.1)(zod@3.25.76)': - dependencies: - openai: 4.104.0(zod@3.25.76) - optionalDependencies: - react: 18.3.1 - zod: 3.25.76 - transitivePeerDependencies: - - encoding - - ws - '@braintree/sanitize-url@7.1.2': {} - '@chevrotain/cst-dts-gen@11.0.3': - dependencies: - '@chevrotain/gast': 11.0.3 - '@chevrotain/types': 11.0.3 - lodash-es: 4.17.21 - - '@chevrotain/gast@11.0.3': - dependencies: - '@chevrotain/types': 11.0.3 - lodash-es: 4.17.21 - - '@chevrotain/regexp-to-ast@11.0.3': {} - - '@chevrotain/types@11.0.3': {} - - '@chevrotain/utils@11.0.3': {} - - '@clack/core@0.3.5': - dependencies: - picocolors: 1.1.1 - sisteransi: 1.0.5 - - '@clack/prompts@0.7.0': - dependencies: - '@clack/core': 0.3.5 - picocolors: 1.1.1 - sisteransi: 1.0.5 - - '@colors/colors@1.5.0': - optional: true + '@chevrotain/types@11.1.2': {} '@contentlayer/cli@0.3.4(esbuild@0.18.20)': dependencies: @@ -5727,7 +5026,7 @@ snapshots: micromatch: 4.0.8 ts-pattern: 4.3.0 unified: 10.1.2 - yaml: 2.8.2 + yaml: 2.9.0 zod: 3.25.76 transitivePeerDependencies: - '@effect-ts/otel-node' @@ -5821,6 +5120,11 @@ snapshots: tslib: 2.8.1 optional: true + '@emnapi/runtime@1.11.3': + dependencies: + tslib: 2.8.1 + optional: true + '@emnapi/runtime@1.8.1': dependencies: tslib: 2.8.1 @@ -5916,14 +5220,14 @@ snapshots: '@eslint/eslintrc@2.1.4': dependencies: - ajv: 6.12.6 + ajv: 6.15.0 debug: 4.4.3 espree: 9.6.1 globals: 13.24.0 ignore: 5.3.2 import-fresh: 3.3.1 - js-yaml: 4.1.1 - minimatch: 3.1.2 + js-yaml: 4.3.2 + minimatch: 3.1.5 strip-json-comments: 3.1.1 transitivePeerDependencies: - supports-color @@ -5949,7 +5253,7 @@ snapshots: '@floating-ui/utils@0.2.10': {} - '@grpc/grpc-js@1.14.3': + '@grpc/grpc-js@1.14.4': dependencies: '@grpc/proto-loader': 0.8.0 '@js-sdsl/ordered-map': 4.4.2 @@ -5958,7 +5262,7 @@ snapshots: dependencies: lodash.camelcase: 4.3.0 long: 5.3.2 - protobufjs: 7.5.4 + protobufjs: 7.6.6 yargs: 17.7.2 '@headlessui/react@1.7.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': @@ -5972,27 +5276,11 @@ snapshots: dependencies: react: 18.3.1 - '@hono/node-server@1.19.9(hono@4.11.9)': - dependencies: - hono: 4.11.9 - - '@hono/zod-openapi@0.16.4(hono@4.11.9)(zod@3.25.76)': - dependencies: - '@asteasolutions/zod-to-openapi': 7.3.4(zod@3.25.76) - '@hono/zod-validator': 0.3.0(hono@4.11.9)(zod@3.25.76) - hono: 4.11.9 - zod: 3.25.76 - - '@hono/zod-validator@0.3.0(hono@4.11.9)(zod@3.25.76)': - dependencies: - hono: 4.11.9 - zod: 3.25.76 - '@humanwhocodes/config-array@0.11.14': dependencies: '@humanwhocodes/object-schema': 2.0.3 debug: 4.4.3 - minimatch: 3.1.2 + minimatch: 3.1.5 transitivePeerDependencies: - supports-color @@ -6012,11 +5300,111 @@ snapshots: '@iconify/types': 2.0.0 mlly: 1.8.0 - '@isaacs/balanced-match@4.0.1': {} + '@img/colour@1.1.0': {} - '@isaacs/brace-expansion@5.0.1': + '@img/sharp-darwin-arm64@0.35.4': + optionalDependencies: + '@img/sharp-libvips-darwin-arm64': 1.3.3 + optional: true + + '@img/sharp-darwin-x64@0.35.4': + optionalDependencies: + '@img/sharp-libvips-darwin-x64': 1.3.3 + optional: true + + '@img/sharp-freebsd-wasm32@0.35.4': dependencies: - '@isaacs/balanced-match': 4.0.1 + '@img/sharp-wasm32': 0.35.4 + optional: true + + '@img/sharp-libvips-darwin-arm64@1.3.3': + optional: true + + '@img/sharp-libvips-darwin-x64@1.3.3': + optional: true + + '@img/sharp-libvips-linux-arm64@1.3.3': + optional: true + + '@img/sharp-libvips-linux-arm@1.3.3': + optional: true + + '@img/sharp-libvips-linux-ppc64@1.3.3': + optional: true + + '@img/sharp-libvips-linux-riscv64@1.3.3': + optional: true + + '@img/sharp-libvips-linux-s390x@1.3.3': + optional: true + + '@img/sharp-libvips-linux-x64@1.3.3': + optional: true + + '@img/sharp-libvips-linuxmusl-arm64@1.3.3': + optional: true + + '@img/sharp-libvips-linuxmusl-x64@1.3.3': + optional: true + + '@img/sharp-linux-arm64@0.35.4': + optionalDependencies: + '@img/sharp-libvips-linux-arm64': 1.3.3 + optional: true + + '@img/sharp-linux-arm@0.35.4': + optionalDependencies: + '@img/sharp-libvips-linux-arm': 1.3.3 + optional: true + + '@img/sharp-linux-ppc64@0.35.4': + optionalDependencies: + '@img/sharp-libvips-linux-ppc64': 1.3.3 + optional: true + + '@img/sharp-linux-riscv64@0.35.4': + optionalDependencies: + '@img/sharp-libvips-linux-riscv64': 1.3.3 + optional: true + + '@img/sharp-linux-s390x@0.35.4': + optionalDependencies: + '@img/sharp-libvips-linux-s390x': 1.3.3 + optional: true + + '@img/sharp-linux-x64@0.35.4': + optionalDependencies: + '@img/sharp-libvips-linux-x64': 1.3.3 + optional: true + + '@img/sharp-linuxmusl-arm64@0.35.4': + optionalDependencies: + '@img/sharp-libvips-linuxmusl-arm64': 1.3.3 + optional: true + + '@img/sharp-linuxmusl-x64@0.35.4': + optionalDependencies: + '@img/sharp-libvips-linuxmusl-x64': 1.3.3 + optional: true + + '@img/sharp-wasm32@0.35.4': + dependencies: + '@emnapi/runtime': 1.11.3 + optional: true + + '@img/sharp-webcontainers-wasm32@0.35.4': + dependencies: + '@img/sharp-wasm32': 0.35.4 + optional: true + + '@img/sharp-win32-arm64@0.35.4': + optional: true + + '@img/sharp-win32-ia32@0.35.4': + optional: true + + '@img/sharp-win32-x64@0.35.4': + optional: true '@isaacs/cliui@9.0.0': {} @@ -6043,22 +5431,6 @@ snapshots: '@jsdevtools/rehype-toc@3.0.2': {} - '@mapbox/node-pre-gyp@1.0.11': - dependencies: - detect-libc: 2.1.2 - https-proxy-agent: 5.0.1 - make-dir: 3.1.0 - node-fetch: 2.7.0 - nopt: 5.0.0 - npmlog: 5.0.1 - rimraf: 3.0.2 - semver: 7.7.4 - tar: 6.2.1 - transitivePeerDependencies: - - encoding - - supports-color - optional: true - '@mdx-js/esbuild@2.3.0(esbuild@0.18.20)': dependencies: '@mdx-js/mdx': 2.3.0 @@ -6120,9 +5492,9 @@ snapshots: transitivePeerDependencies: - supports-color - '@mermaid-js/parser@0.6.3': + '@mermaid-js/parser@1.2.1': dependencies: - langium: 3.3.1 + '@chevrotain/types': 11.1.2 '@napi-rs/wasm-runtime@0.2.12': dependencies: @@ -6200,7 +5572,7 @@ snapshots: '@opentelemetry/exporter-trace-otlp-grpc@0.39.1(@opentelemetry/api@1.9.0)': dependencies: - '@grpc/grpc-js': 1.14.3 + '@grpc/grpc-js': 1.14.4 '@opentelemetry/api': 1.9.0 '@opentelemetry/core': 1.13.0(@opentelemetry/api@1.9.0) '@opentelemetry/otlp-grpc-exporter-base': 0.39.1(@opentelemetry/api@1.9.0) @@ -6215,11 +5587,11 @@ snapshots: '@opentelemetry/otlp-grpc-exporter-base@0.39.1(@opentelemetry/api@1.9.0)': dependencies: - '@grpc/grpc-js': 1.14.3 + '@grpc/grpc-js': 1.14.4 '@opentelemetry/api': 1.9.0 '@opentelemetry/core': 1.13.0(@opentelemetry/api@1.9.0) '@opentelemetry/otlp-exporter-base': 0.39.1(@opentelemetry/api@1.9.0) - protobufjs: 7.5.4 + protobufjs: 7.6.6 '@opentelemetry/otlp-transformer@0.39.1(@opentelemetry/api@1.9.0)': dependencies: @@ -6301,24 +5673,21 @@ snapshots: '@protobufjs/base64@1.1.2': {} - '@protobufjs/codegen@2.0.4': {} + '@protobufjs/codegen@2.0.5': {} - '@protobufjs/eventemitter@1.1.0': {} + '@protobufjs/eventemitter@1.1.1': {} - '@protobufjs/fetch@1.1.0': + '@protobufjs/fetch@1.1.1': dependencies: '@protobufjs/aspromise': 1.1.2 - '@protobufjs/inquire': 1.1.0 '@protobufjs/float@1.0.2': {} - '@protobufjs/inquire@1.1.0': {} - '@protobufjs/path@1.1.2': {} '@protobufjs/pool@1.1.0': {} - '@protobufjs/utf8@1.1.0': {} + '@protobufjs/utf8@1.1.2': {} '@radix-ui/number@1.1.1': {} @@ -6597,19 +5966,6 @@ snapshots: '@rushstack/eslint-patch@1.15.0': {} - '@sec-ant/readable-stream@0.4.1': {} - - '@sindresorhus/merge-streams@4.0.0': {} - - '@sindresorhus/slugify@2.2.1': - dependencies: - '@sindresorhus/transliterate': 1.6.0 - escape-string-regexp: 5.0.0 - - '@sindresorhus/transliterate@1.6.0': - dependencies: - escape-string-regexp: 5.0.0 - '@swc/counter@0.1.3': {} '@swc/helpers@0.5.5': @@ -6617,10 +5973,10 @@ snapshots: '@swc/counter': 0.1.3 tslib: 2.8.1 - '@tailwindcss/typography@0.5.19(tailwindcss@3.4.19(yaml@2.8.2))': + '@tailwindcss/typography@0.5.19(tailwindcss@3.4.19(yaml@2.9.0))': dependencies: postcss-selector-parser: 6.0.10 - tailwindcss: 3.4.19(yaml@2.8.2) + tailwindcss: 3.4.19(yaml@2.9.0) '@tanstack/react-virtual@3.13.18(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: @@ -6790,15 +6146,6 @@ snapshots: '@types/ms@2.1.0': {} - '@types/node-fetch@2.6.13': - dependencies: - '@types/node': 20.4.9 - form-data: 4.0.5 - - '@types/node@18.19.130': - dependencies: - undici-types: 5.26.5 - '@types/node@20.4.9': {} '@types/parse5@6.0.3': {} @@ -6933,12 +6280,10 @@ snapshots: '@unrs/resolver-binding-win32-x64-msvc@1.11.1': optional: true - abbrev@1.1.1: - optional: true - - abort-controller@3.0.0: - dependencies: - event-target-shim: 5.0.1 + '@upsetjs/venn.js@2.0.0': + optionalDependencies: + d3-selection: 3.0.0 + d3-transition: 3.0.1(d3-selection@3.0.0) acorn-jsx@5.3.2(acorn@8.15.0): dependencies: @@ -6946,20 +6291,7 @@ snapshots: acorn@8.15.0: {} - adler-32@1.3.1: {} - - agent-base@6.0.2: - dependencies: - debug: 4.4.3 - transitivePeerDependencies: - - supports-color - optional: true - - agentkeepalive@4.6.0: - dependencies: - humanize-ms: 1.2.1 - - ajv@6.12.6: + ajv@6.15.0: dependencies: fast-deep-equal: 3.1.3 fast-json-stable-stringify: 2.1.0 @@ -7005,10 +6337,6 @@ snapshots: ansi-sequence-parser@1.1.3: {} - ansi-styles@3.2.1: - dependencies: - color-convert: 1.9.3 - ansi-styles@4.3.0: dependencies: color-convert: 2.0.1 @@ -7018,16 +6346,7 @@ snapshots: anymatch@3.1.3: dependencies: normalize-path: 3.0.0 - picomatch: 2.3.1 - - aproba@2.1.0: - optional: true - - are-we-there-yet@2.0.0: - dependencies: - delegates: 1.0.0 - readable-stream: 3.6.2 - optional: true + picomatch: 2.3.2 arg@5.0.2: {} @@ -7122,15 +6441,13 @@ snapshots: async-function@1.0.0: {} - asynckit@0.4.0: {} - - autoprefixer@10.4.24(postcss@8.5.6): + autoprefixer@10.4.24(postcss@8.5.28): dependencies: - browserslist: 4.28.1 + browserslist: 4.28.9 caniuse-lite: 1.0.30001769 fraction.js: 5.3.4 picocolors: 1.1.1 - postcss: 8.5.6 + postcss: 8.5.28 postcss-value-parser: 4.2.0 available-typed-arrays@1.0.7: @@ -7141,145 +6458,45 @@ snapshots: axobject-query@4.1.0: {} - b4a@1.7.3: {} - bail@2.0.2: {} balanced-match@1.0.2: {} - bare-events@2.8.2: {} + balanced-match@4.0.4: {} - bare-fs@4.5.3: - dependencies: - bare-events: 2.8.2 - bare-path: 3.0.0 - bare-stream: 2.7.0(bare-events@2.8.2) - bare-url: 2.3.2 - fast-fifo: 1.3.2 - transitivePeerDependencies: - - bare-abort-controller - - react-native-b4a - optional: true - - bare-os@3.6.2: - optional: true - - bare-path@3.0.0: - dependencies: - bare-os: 3.6.2 - optional: true - - bare-stream@2.7.0(bare-events@2.8.2): - dependencies: - streamx: 2.23.0 - optionalDependencies: - bare-events: 2.8.2 - transitivePeerDependencies: - - bare-abort-controller - - react-native-b4a - optional: true - - bare-url@2.3.2: - dependencies: - bare-path: 3.0.0 - optional: true - - base64-js@1.5.1: {} - - baseai@0.9.44(@types/node@20.4.9)(react@18.3.1)(typescript@5.1.6): - dependencies: - '@antfu/ni': 0.23.2 - '@clack/core': 0.3.5 - '@clack/prompts': 0.7.0 - '@hono/node-server': 1.19.9(hono@4.11.9) - '@hono/zod-openapi': 0.16.4(hono@4.11.9)(zod@3.25.76) - '@sindresorhus/slugify': 2.2.1 - camelcase: 8.0.0 - chalk: 5.6.0 - cli-alerts: 2.0.0 - cli-handle-error: 4.4.1(react@18.3.1) - cli-handle-unhandled: 1.1.2(react@18.3.1) - cli-meow-help: 4.0.0 - cli-table3: 0.6.5 - cli-welcome: 3.0.1(react@18.3.1) - compute-cosine-similarity: 1.1.0 - cosmiconfig: 9.0.0(typescript@5.1.6) - cosmiconfig-typescript-loader: 5.1.0(@types/node@20.4.9)(cosmiconfig@9.0.0(typescript@5.1.6))(typescript@5.1.6) - dotenv: 16.6.1 - execa: 9.6.1 - fast-glob: 3.3.3 - figures: 6.1.0 - get-package-json-file: 2.0.0 - hono: 4.11.9 - js-tiktoken: 1.0.21 - log-symbols: 7.0.1 - lowdb: 7.0.1 - meow: 13.2.0 - node-fetch: 3.3.2 - open: 10.2.0 - openai: 4.104.0(zod@3.25.76) - p-map: 7.0.4 - picocolors: 1.1.1 - prettier: 3.8.1 - source-map-support: 0.5.21 - unpdf: 0.11.0 - uuid: 10.0.0 - xlsx: 0.18.5 - zod: 3.25.76 - zod-error: 1.5.0 - zod-validation-error: 3.5.4(zod@3.25.76) - transitivePeerDependencies: - - '@types/node' - - encoding - - react - - supports-color - - typescript - - ws - - baseline-browser-mapping@2.9.19: {} + baseline-browser-mapping@2.11.21: {} big.js@5.2.2: {} binary-extensions@2.3.0: {} - bl@4.1.0: - dependencies: - buffer: 5.7.1 - inherits: 2.0.4 - readable-stream: 3.6.2 - - brace-expansion@1.1.12: + brace-expansion@1.1.18: dependencies: balanced-match: 1.0.2 concat-map: 0.0.1 - brace-expansion@2.0.2: + brace-expansion@2.1.4: dependencies: balanced-match: 1.0.2 + brace-expansion@5.0.9: + dependencies: + balanced-match: 4.0.4 + braces@3.0.3: dependencies: fill-range: 7.1.1 - browserslist@4.28.1: + browserslist@4.28.9: dependencies: - baseline-browser-mapping: 2.9.19 - caniuse-lite: 1.0.30001769 - electron-to-chromium: 1.5.286 - node-releases: 2.0.27 - update-browserslist-db: 1.2.3(browserslist@4.28.1) + baseline-browser-mapping: 2.11.21 + caniuse-lite: 1.0.30001810 + electron-to-chromium: 1.5.425 + node-releases: 2.0.55 + update-browserslist-db: 1.3.2(browserslist@4.28.9) buffer-from@1.1.2: {} - buffer@5.7.1: - dependencies: - base64-js: 1.5.1 - ieee754: 1.2.1 - - bundle-name@4.1.0: - dependencies: - run-applescript: 7.1.0 - busboy@1.6.0: dependencies: streamsearch: 1.1.0 @@ -7317,49 +6534,17 @@ snapshots: camelcase@2.1.1: {} - camelcase@8.0.0: {} - caniuse-lite@1.0.30001769: {} - canvas@2.11.2: - dependencies: - '@mapbox/node-pre-gyp': 1.0.11 - nan: 2.25.0 - simple-get: 3.1.1 - transitivePeerDependencies: - - encoding - - supports-color - optional: true + caniuse-lite@1.0.30001810: {} ccount@2.0.1: {} - cfb@1.2.2: - dependencies: - adler-32: 1.3.1 - crc-32: 1.2.2 - - chalk-template@1.1.2: - dependencies: - chalk: 5.6.0 - - chalk@2.4.2: - dependencies: - ansi-styles: 3.2.1 - escape-string-regexp: 1.0.5 - supports-color: 5.5.0 - - chalk@3.0.0: - dependencies: - ansi-styles: 4.3.0 - supports-color: 7.2.0 - chalk@4.1.2: dependencies: ansi-styles: 4.3.0 supports-color: 7.2.0 - chalk@5.6.0: {} - character-entities-html4@2.1.0: {} character-entities-legacy@1.1.4: {} @@ -7374,20 +6559,6 @@ snapshots: character-reference-invalid@2.0.1: {} - chevrotain-allstar@0.3.1(chevrotain@11.0.3): - dependencies: - chevrotain: 11.0.3 - lodash-es: 4.17.23 - - chevrotain@11.0.3: - dependencies: - '@chevrotain/cst-dts-gen': 11.0.3 - '@chevrotain/gast': 11.0.3 - '@chevrotain/regexp-to-ast': 11.0.3 - '@chevrotain/types': 11.0.3 - '@chevrotain/utils': 11.0.3 - lodash-es: 4.17.21 - chokidar@3.6.0: dependencies: anymatch: 3.1.3 @@ -7400,69 +6571,10 @@ snapshots: optionalDependencies: fsevents: 2.3.3 - chownr@1.1.4: {} - - chownr@2.0.0: - optional: true - class-variance-authority@0.7.1: dependencies: clsx: 2.1.1 - clear-any-console@1.16.3(react@18.3.1): - dependencies: - langbase: 1.2.4(react@18.3.1) - transitivePeerDependencies: - - encoding - - react - - ws - - cli-alerts@2.0.0: - dependencies: - chalk: 4.1.2 - log-symbols: 4.1.0 - - cli-handle-error@4.4.1(react@18.3.1): - dependencies: - chalk: 3.0.0 - langbase: 1.2.4(react@18.3.1) - log-symbols: 3.0.0 - transitivePeerDependencies: - - encoding - - react - - ws - - cli-handle-unhandled@1.1.2(react@18.3.1): - dependencies: - cli-handle-error: 4.4.1(react@18.3.1) - langbase: 1.2.4(react@18.3.1) - transitivePeerDependencies: - - encoding - - react - - ws - - cli-meow-help@4.0.0: - dependencies: - chalk: 5.6.0 - chalk-template: 1.1.2 - cli-table3: 0.6.5 - - cli-table3@0.6.5: - dependencies: - string-width: 4.2.3 - optionalDependencies: - '@colors/colors': 1.5.0 - - cli-welcome@3.0.1(react@18.3.1): - dependencies: - chalk: 5.6.0 - clear-any-console: 1.16.3(react@18.3.1) - langbase: 1.2.4(react@18.3.1) - transitivePeerDependencies: - - encoding - - react - - ws - client-only@0.0.1: {} clipanion@3.2.1(typanion@3.14.0): @@ -7479,39 +6591,14 @@ snapshots: clsx@2.1.1: {} - codepage@1.15.0: {} - collapse-white-space@2.1.0: {} - color-convert@1.9.3: - dependencies: - color-name: 1.1.3 - color-convert@2.0.1: dependencies: color-name: 1.1.4 - color-name@1.1.3: {} - color-name@1.1.4: {} - color-string@1.9.1: - dependencies: - color-name: 1.1.4 - simple-swizzle: 0.2.4 - - color-support@1.1.3: - optional: true - - color@4.2.3: - dependencies: - color-convert: 2.0.1 - color-string: 1.9.1 - - combined-stream@1.0.8: - dependencies: - delayed-stream: 1.0.0 - comma-separated-tokens@1.0.8: {} comma-separated-tokens@2.0.3: {} @@ -7528,30 +6615,10 @@ snapshots: core-util-is: 1.0.3 esprima: 4.0.1 - compute-cosine-similarity@1.1.0: - dependencies: - compute-dot: 1.1.0 - compute-l2norm: 1.1.0 - validate.io-array: 1.0.6 - validate.io-function: 1.0.2 - - compute-dot@1.1.0: - dependencies: - validate.io-array: 1.0.6 - validate.io-function: 1.0.2 - - compute-l2norm@1.1.0: - dependencies: - validate.io-array: 1.0.6 - validate.io-function: 1.0.2 - concat-map@0.0.1: {} confbox@0.1.8: {} - console-control-strings@1.1.0: - optional: true - contentlayer@0.3.4(esbuild@0.18.20): dependencies: '@contentlayer/cli': 0.3.4(esbuild@0.18.20) @@ -7576,24 +6643,6 @@ snapshots: dependencies: layout-base: 2.0.1 - cosmiconfig-typescript-loader@5.1.0(@types/node@20.4.9)(cosmiconfig@9.0.0(typescript@5.1.6))(typescript@5.1.6): - dependencies: - '@types/node': 20.4.9 - cosmiconfig: 9.0.0(typescript@5.1.6) - jiti: 1.21.7 - typescript: 5.1.6 - - cosmiconfig@9.0.0(typescript@5.1.6): - dependencies: - env-paths: 2.2.1 - import-fresh: 3.3.1 - js-yaml: 4.1.1 - parse-json: 5.2.0 - optionalDependencies: - typescript: 5.1.6 - - crc-32@1.2.2: {} - cross-spawn@7.0.6: dependencies: path-key: 3.1.1 @@ -7608,17 +6657,17 @@ snapshots: dependencies: array-find-index: 1.0.2 - cytoscape-cose-bilkent@4.1.0(cytoscape@3.33.1): + cytoscape-cose-bilkent@4.1.0(cytoscape@3.34.3): dependencies: cose-base: 1.0.3 - cytoscape: 3.33.1 + cytoscape: 3.34.3 - cytoscape-fcose@2.2.0(cytoscape@3.33.1): + cytoscape-fcose@2.2.0(cytoscape@3.34.3): dependencies: cose-base: 2.2.0 - cytoscape: 3.33.1 + cytoscape: 3.34.3 - cytoscape@3.33.1: {} + cytoscape@3.34.3: {} d3-array@2.12.1: dependencies: @@ -7787,10 +6836,10 @@ snapshots: d3-transition: 3.0.1(d3-selection@3.0.0) d3-zoom: 3.0.0 - dagre-d3-es@7.0.13: + dagre-d3-es@7.0.14: dependencies: d3: 7.9.0 - lodash-es: 4.17.23 + lodash-es: 4.18.1 damerau-levenshtein@1.0.8: {} @@ -7818,7 +6867,7 @@ snapshots: dependencies: '@babel/runtime': 7.28.6 - dayjs@1.11.19: {} + dayjs@1.11.23: {} debug@3.2.7: dependencies: @@ -7832,34 +6881,14 @@ snapshots: dependencies: character-entities: 2.0.2 - decompress-response@4.2.1: - dependencies: - mimic-response: 2.1.0 - optional: true - - decompress-response@6.0.0: - dependencies: - mimic-response: 3.1.0 - - deep-extend@0.6.0: {} - deep-is@0.1.4: {} - default-browser-id@5.0.1: {} - - default-browser@5.5.0: - dependencies: - bundle-name: 4.1.0 - default-browser-id: 5.0.1 - define-data-property@1.1.4: dependencies: es-define-property: 1.0.1 es-errors: 1.3.0 gopd: 1.2.0 - define-lazy-prop@3.0.0: {} - define-properties@1.2.1: dependencies: define-data-property: 1.1.4 @@ -7870,11 +6899,6 @@ snapshots: dependencies: robust-predicates: 3.0.2 - delayed-stream@1.0.0: {} - - delegates@1.0.0: - optional: true - dequal@2.0.3: {} detect-libc@2.1.2: {} @@ -7903,7 +6927,7 @@ snapshots: dependencies: esutils: 2.0.3 - dompurify@3.3.1: + dompurify@3.4.15: optionalDependencies: '@types/trusted-types': 2.0.7 @@ -7915,7 +6939,7 @@ snapshots: es-errors: 1.3.0 gopd: 1.2.0 - electron-to-chromium@1.5.286: {} + electron-to-chromium@1.5.425: {} emoji-regex@8.0.0: {} @@ -7923,12 +6947,6 @@ snapshots: emojis-list@3.0.0: {} - end-of-stream@1.4.5: - dependencies: - once: 1.4.0 - - env-paths@2.2.1: {} - error-ex@1.3.4: dependencies: is-arrayish: 0.2.1 @@ -8034,6 +7052,8 @@ snapshots: is-date-object: 1.1.0 is-symbol: 1.1.1 + es-toolkit@1.52.0: {} + esast-util-from-estree@2.0.0: dependencies: '@types/estree-jsx': 1.0.5 @@ -8075,8 +7095,6 @@ snapshots: escalade@3.2.0: {} - escape-string-regexp@1.0.5: {} - escape-string-regexp@4.0.0: {} escape-string-regexp@5.0.0: {} @@ -8149,7 +7167,7 @@ snapshots: hasown: 2.0.2 is-core-module: 2.16.1 is-glob: 4.0.3 - minimatch: 3.1.2 + minimatch: 3.1.5 object.fromentries: 2.0.8 object.groupby: 1.0.3 object.values: 1.2.1 @@ -8177,7 +7195,7 @@ snapshots: hasown: 2.0.2 jsx-ast-utils: 3.3.5 language-tags: 1.0.9 - minimatch: 3.1.2 + minimatch: 3.1.5 object.fromentries: 2.0.8 safe-regex-test: 1.1.0 string.prototype.includes: 2.0.1 @@ -8198,7 +7216,7 @@ snapshots: estraverse: 5.3.0 hasown: 2.0.2 jsx-ast-utils: 3.3.5 - minimatch: 3.1.2 + minimatch: 3.1.5 object.entries: 1.1.9 object.fromentries: 2.0.8 object.values: 1.2.1 @@ -8224,7 +7242,7 @@ snapshots: '@humanwhocodes/config-array': 0.11.14 '@humanwhocodes/module-importer': 1.0.1 '@nodelib/fs.walk': 1.2.8 - ajv: 6.12.6 + ajv: 6.15.0 chalk: 4.1.2 cross-spawn: 7.0.6 debug: 4.4.3 @@ -8245,11 +7263,11 @@ snapshots: imurmurhash: 0.1.4 is-glob: 4.0.3 is-path-inside: 3.0.3 - js-yaml: 4.1.1 + js-yaml: 4.3.2 json-stable-stringify-without-jsonify: 1.0.1 levn: 0.4.1 lodash.merge: 4.6.2 - minimatch: 3.1.2 + minimatch: 3.1.5 natural-compare: 1.4.0 optionator: 0.9.4 strip-ansi: 6.0.1 @@ -8339,31 +7357,6 @@ snapshots: esutils@2.0.3: {} - event-target-shim@5.0.1: {} - - events-universal@1.0.1: - dependencies: - bare-events: 2.8.2 - transitivePeerDependencies: - - bare-abort-controller - - execa@9.6.1: - dependencies: - '@sindresorhus/merge-streams': 4.0.0 - cross-spawn: 7.0.6 - figures: 6.1.0 - get-stream: 9.0.1 - human-signals: 8.0.1 - is-plain-obj: 4.1.0 - is-stream: 4.0.1 - npm-run-path: 6.0.0 - pretty-ms: 9.3.0 - signal-exit: 4.1.0 - strip-final-newline: 4.0.0 - yoctocolors: 2.1.2 - - expand-template@2.0.3: {} - extend-shallow@2.0.1: dependencies: is-extendable: 0.1.1 @@ -8374,8 +7367,6 @@ snapshots: fast-equals@2.0.4: {} - fast-fifo@1.3.2: {} - fast-glob@3.3.3: dependencies: '@nodelib/fs.stat': 2.0.5 @@ -8388,6 +7379,10 @@ snapshots: fast-levenshtein@2.0.6: {} + fastdom@1.0.12: + dependencies: + strictdom: 1.0.1 + fastq@1.20.1: dependencies: reusify: 1.1.0 @@ -8400,9 +7395,9 @@ snapshots: dependencies: format: 0.2.2 - fdir@6.5.0(picomatch@4.0.3): + fdir@6.5.0(picomatch@4.0.7): optionalDependencies: - picomatch: 4.0.3 + picomatch: 4.0.7 feed@4.2.2: dependencies: @@ -8413,10 +7408,6 @@ snapshots: node-domexception: 1.0.0 web-streams-polyfill: 3.3.3 - figures@6.1.0: - dependencies: - is-unicode-supported: 2.1.0 - file-entry-cache@6.0.1: dependencies: flat-cache: 3.2.0 @@ -8437,11 +7428,11 @@ snapshots: flat-cache@3.2.0: dependencies: - flatted: 3.3.3 + flatted: 3.4.4 keyv: 4.5.4 rimraf: 3.0.2 - flatted@3.3.3: {} + flatted@3.4.4: {} for-each@0.3.5: dependencies: @@ -8452,38 +7443,14 @@ snapshots: cross-spawn: 7.0.6 signal-exit: 4.1.0 - form-data-encoder@1.7.2: {} - - form-data@4.0.5: - dependencies: - asynckit: 0.4.0 - combined-stream: 1.0.8 - es-set-tostringtag: 2.1.0 - hasown: 2.0.2 - mime-types: 2.1.35 - format@0.2.2: {} - formdata-node@4.4.1: - dependencies: - node-domexception: 1.0.0 - web-streams-polyfill: 4.0.0-beta.3 - formdata-polyfill@4.0.10: dependencies: fetch-blob: 3.2.0 - frac@1.1.2: {} - fraction.js@5.3.4: {} - fs-constants@1.0.0: {} - - fs-minipass@2.1.0: - dependencies: - minipass: 3.3.6 - optional: true - fs-monkey@1.1.0: {} fs.realpath@1.0.0: {} @@ -8506,19 +7473,6 @@ snapshots: fuse.js@6.6.2: {} - gauge@3.0.2: - dependencies: - aproba: 2.1.0 - color-support: 1.1.3 - console-control-strings: 1.1.0 - has-unicode: 2.0.1 - object-assign: 4.1.1 - signal-exit: 3.0.7 - string-width: 4.2.3 - strip-ansi: 6.0.1 - wide-align: 1.1.5 - optional: true - generator-function@2.0.1: {} get-caller-file@2.0.5: {} @@ -8538,8 +7492,6 @@ snapshots: get-nonce@1.0.1: {} - get-package-json-file@2.0.0: {} - get-proto@1.0.1: dependencies: dunder-proto: 1.0.1 @@ -8547,11 +7499,6 @@ snapshots: get-stdin@4.0.1: {} - get-stream@9.0.1: - dependencies: - '@sec-ant/readable-stream': 0.4.1 - is-stream: 4.0.1 - get-symbol-description@1.1.0: dependencies: call-bound: 1.0.4 @@ -8562,8 +7509,6 @@ snapshots: dependencies: resolve-pkg-maps: 1.0.0 - github-from-package@0.0.0: {} - github-slugger@2.0.0: {} glob-parent@5.1.2: @@ -8578,7 +7523,7 @@ snapshots: dependencies: foreground-child: 3.3.1 jackspeak: 4.2.3 - minimatch: 10.1.2 + minimatch: 10.2.6 minipass: 7.1.2 package-json-from-dist: 1.0.1 path-scurry: 2.0.1 @@ -8588,7 +7533,7 @@ snapshots: fs.realpath: 1.0.0 inflight: 1.0.6 inherits: 2.0.4 - minimatch: 3.1.2 + minimatch: 3.1.5 once: 1.4.0 path-is-absolute: 1.0.1 @@ -8597,7 +7542,7 @@ snapshots: fs.realpath: 1.0.0 inflight: 1.0.6 inherits: 2.0.4 - minimatch: 3.1.2 + minimatch: 3.1.5 once: 1.4.0 path-is-absolute: 1.0.1 @@ -8627,7 +7572,7 @@ snapshots: gray-matter@4.0.3: dependencies: - js-yaml: 3.14.2 + js-yaml: 3.15.2 kind-of: 6.0.3 section-matter: 1.0.0 strip-bom-string: 1.0.0 @@ -8636,8 +7581,6 @@ snapshots: has-bigints@1.1.0: {} - has-flag@3.0.0: {} - has-flag@4.0.0: {} has-property-descriptors@1.0.2: @@ -8654,9 +7597,6 @@ snapshots: dependencies: has-symbols: 1.1.0 - has-unicode@2.0.1: - optional: true - hash-obj@4.0.0: dependencies: is-obj: 3.0.0 @@ -8827,32 +7767,14 @@ snapshots: highlightjs-vue@1.0.0: {} - hono@4.11.9: {} - hosted-git-info@2.8.9: {} html-void-elements@2.0.1: {} - https-proxy-agent@5.0.1: - dependencies: - agent-base: 6.0.2 - debug: 4.4.3 - transitivePeerDependencies: - - supports-color - optional: true - - human-signals@8.0.1: {} - - humanize-ms@1.2.1: - dependencies: - ms: 2.1.3 - iconv-lite@0.6.3: dependencies: safer-buffer: 2.1.2 - ieee754@1.2.1: {} - ignore@5.3.2: {} imagescript@1.3.1: {} @@ -8877,8 +7799,6 @@ snapshots: inherits@2.0.4: {} - ini@1.3.8: {} - inline-style-parser@0.1.1: {} inline-style-parser@0.2.7: {} @@ -8915,8 +7835,6 @@ snapshots: is-arrayish@0.2.1: {} - is-arrayish@0.3.4: {} - is-async-function@2.1.1: dependencies: async-function: 1.0.0 @@ -8965,8 +7883,6 @@ snapshots: is-decimal@2.0.1: {} - is-docker@3.0.0: {} - is-extendable@0.1.1: {} is-extglob@2.1.1: {} @@ -8995,10 +7911,6 @@ snapshots: is-hexadecimal@2.0.1: {} - is-inside-container@1.0.0: - dependencies: - is-docker: 3.0.0 - is-map@2.0.3: {} is-negative-zero@2.0.3: {} @@ -9035,8 +7947,6 @@ snapshots: dependencies: call-bound: 1.0.4 - is-stream@4.0.1: {} - is-string@1.1.1: dependencies: call-bound: 1.0.4 @@ -9052,10 +7962,6 @@ snapshots: dependencies: which-typed-array: 1.1.20 - is-unicode-supported@0.1.0: {} - - is-unicode-supported@2.1.0: {} - is-utf8@0.2.1: {} is-weakmap@2.0.2: {} @@ -9069,10 +7975,6 @@ snapshots: call-bound: 1.0.4 get-intrinsic: 1.3.0 - is-wsl@3.1.0: - dependencies: - is-inside-container: 1.0.0 - isarray@2.0.5: {} isexe@2.0.0: {} @@ -9092,18 +7994,14 @@ snapshots: jiti@1.21.7: {} - js-tiktoken@1.0.21: - dependencies: - base64-js: 1.5.1 - js-tokens@4.0.0: {} - js-yaml@3.14.2: + js-yaml@3.15.2: dependencies: argparse: 1.0.10 esprima: 4.0.1 - js-yaml@4.1.1: + js-yaml@4.3.2: dependencies: argparse: 2.0.1 @@ -9111,8 +8009,6 @@ snapshots: json-buffer@3.0.1: {} - json-parse-even-better-errors@2.3.1: {} - json-schema-traverse@0.4.1: {} json-stable-stringify-without-jsonify@1.0.1: {} @@ -9132,7 +8028,7 @@ snapshots: object.assign: 4.1.7 object.values: 1.2.1 - katex@0.16.28: + katex@0.16.47: dependencies: commander: 8.3.0 @@ -9159,26 +8055,6 @@ snapshots: kleur@4.1.5: {} - langbase@1.2.4(react@18.3.1): - dependencies: - dotenv: 16.6.1 - openai: 4.104.0(zod@3.25.76) - zod: 3.25.76 - zod-validation-error: 3.5.4(zod@3.25.76) - optionalDependencies: - react: 18.3.1 - transitivePeerDependencies: - - encoding - - ws - - langium@3.3.1: - dependencies: - chevrotain: 11.0.3 - chevrotain-allstar: 0.3.1(chevrotain@11.0.3) - vscode-languageserver: 9.0.1 - vscode-languageserver-textdocument: 1.0.12 - vscode-uri: 3.0.8 - language-subtag-registry@0.3.23: {} language-tags@1.0.9: @@ -9216,28 +8092,12 @@ snapshots: dependencies: p-locate: 5.0.0 - lodash-es@4.17.21: {} - - lodash-es@4.17.23: {} + lodash-es@4.18.1: {} lodash.camelcase@4.3.0: {} lodash.merge@4.6.2: {} - log-symbols@3.0.0: - dependencies: - chalk: 2.4.2 - - log-symbols@4.1.0: - dependencies: - chalk: 4.1.2 - is-unicode-supported: 0.1.0 - - log-symbols@7.0.1: - dependencies: - is-unicode-supported: 2.1.0 - yoctocolors: 2.1.2 - long@5.3.2: {} longest-streak@3.1.0: {} @@ -9251,10 +8111,6 @@ snapshots: currently-unhandled: 0.4.1 signal-exit: 3.0.7 - lowdb@7.0.1: - dependencies: - steno: 4.0.2 - lower-case@2.0.2: dependencies: tslib: 2.8.1 @@ -9270,11 +8126,6 @@ snapshots: dependencies: react: 18.3.1 - make-dir@3.1.0: - dependencies: - semver: 6.3.1 - optional: true - map-obj@1.0.1: {} markdown-extensions@1.1.1: {} @@ -9572,8 +8423,6 @@ snapshots: memoize-one@4.0.3: {} - meow@13.2.0: {} - meow@3.6.0: dependencies: camelcase-keys: 2.1.0 @@ -9587,28 +8436,30 @@ snapshots: merge2@1.4.1: {} - mermaid@11.12.2: + mermaid@11.17.2: dependencies: '@braintree/sanitize-url': 7.1.2 '@iconify/utils': 3.1.0 - '@mermaid-js/parser': 0.6.3 + '@mermaid-js/parser': 1.2.1 '@types/d3': 7.4.3 - cytoscape: 3.33.1 - cytoscape-cose-bilkent: 4.1.0(cytoscape@3.33.1) - cytoscape-fcose: 2.2.0(cytoscape@3.33.1) + '@upsetjs/venn.js': 2.0.0 + cytoscape: 3.34.3 + cytoscape-cose-bilkent: 4.1.0(cytoscape@3.34.3) + cytoscape-fcose: 2.2.0(cytoscape@3.34.3) d3: 7.9.0 d3-sankey: 0.12.3 - dagre-d3-es: 7.0.13 - dayjs: 1.11.19 - dompurify: 3.3.1 - katex: 0.16.28 + dagre-d3-es: 7.0.14 + dayjs: 1.11.23 + dompurify: 3.4.15 + es-toolkit: 1.52.0 + fastdom: 1.0.12 + katex: 0.16.47 khroma: 2.1.0 - lodash-es: 4.17.23 marked: 16.4.2 roughjs: 4.6.6 stylis: 4.3.6 ts-dedent: 2.2.0 - uuid: 11.1.0 + uuid: 14.0.2 micromark-core-commonmark@1.1.0: dependencies: @@ -10090,54 +8941,24 @@ snapshots: micromatch@4.0.8: dependencies: braces: 3.0.3 - picomatch: 2.3.1 - - mime-db@1.52.0: {} - - mime-types@2.1.35: - dependencies: - mime-db: 1.52.0 - - mimic-response@2.1.0: - optional: true - - mimic-response@3.1.0: {} + picomatch: 2.3.2 - minimatch@10.1.2: + minimatch@10.2.6: dependencies: - '@isaacs/brace-expansion': 5.0.1 + brace-expansion: 5.0.9 - minimatch@3.1.2: + minimatch@3.1.5: dependencies: - brace-expansion: 1.1.12 + brace-expansion: 1.1.18 minimatch@9.0.3: dependencies: - brace-expansion: 2.0.2 + brace-expansion: 2.1.4 minimist@1.2.8: {} - minipass@3.3.6: - dependencies: - yallist: 4.0.0 - optional: true - - minipass@5.0.0: - optional: true - minipass@7.1.2: {} - minizlib@2.1.2: - dependencies: - minipass: 3.3.6 - yallist: 4.0.0 - optional: true - - mkdirp-classic@0.5.3: {} - - mkdirp@1.0.4: - optional: true - mlly@1.8.0: dependencies: acorn: 8.15.0 @@ -10157,12 +8978,7 @@ snapshots: object-assign: 4.1.1 thenify-all: 1.6.0 - nan@2.25.0: - optional: true - - nanoid@3.3.11: {} - - napi-build-utils@2.0.0: {} + nanoid@3.3.18: {} napi-postinstall@0.3.4: {} @@ -10219,30 +9035,15 @@ snapshots: lower-case: 2.0.2 tslib: 2.8.1 - node-abi@3.87.0: - dependencies: - semver: 7.7.4 - - node-addon-api@6.1.0: {} - node-domexception@1.0.0: {} - node-fetch@2.7.0: - dependencies: - whatwg-url: 5.0.0 - node-fetch@3.3.2: dependencies: data-uri-to-buffer: 4.0.1 fetch-blob: 3.2.0 formdata-polyfill: 4.0.10 - node-releases@2.0.27: {} - - nopt@5.0.0: - dependencies: - abbrev: 1.1.1 - optional: true + node-releases@2.0.55: {} normalize-package-data@2.5.0: dependencies: @@ -10253,19 +9054,6 @@ snapshots: normalize-path@3.0.0: {} - npm-run-path@6.0.0: - dependencies: - path-key: 4.0.0 - unicorn-magic: 0.3.0 - - npmlog@5.0.1: - dependencies: - are-we-there-yet: 2.0.0 - console-control-strings: 1.1.0 - gauge: 3.0.2 - set-blocking: 2.0.0 - optional: true - object-assign@4.0.1: {} object-assign@4.1.1: {} @@ -10318,31 +9106,6 @@ snapshots: oo-ascii-tree@1.126.0: {} - open@10.2.0: - dependencies: - default-browser: 5.5.0 - define-lazy-prop: 3.0.0 - is-inside-container: 1.0.0 - wsl-utils: 0.1.0 - - openai@4.104.0(zod@3.25.76): - dependencies: - '@types/node': 18.19.130 - '@types/node-fetch': 2.6.13 - abort-controller: 3.0.0 - agentkeepalive: 4.6.0 - form-data-encoder: 1.7.2 - formdata-node: 4.4.1 - node-fetch: 2.7.0 - optionalDependencies: - zod: 3.25.76 - transitivePeerDependencies: - - encoding - - openapi3-ts@4.5.0: - dependencies: - yaml: 2.8.2 - optionator@0.9.4: dependencies: deep-is: 0.1.4 @@ -10366,8 +9129,6 @@ snapshots: dependencies: p-limit: 3.1.0 - p-map@7.0.4: {} - package-json-from-dist@1.0.1: {} package-manager-detector@1.6.0: {} @@ -10399,15 +9160,6 @@ snapshots: dependencies: error-ex: 1.3.4 - parse-json@5.2.0: - dependencies: - '@babel/code-frame': 7.29.0 - error-ex: 1.3.4 - json-parse-even-better-errors: 2.3.1 - lines-and-columns: 1.2.4 - - parse-ms@4.0.0: {} - parse-numeric-range@1.3.0: {} parse5@6.0.1: {} @@ -10429,8 +9181,6 @@ snapshots: path-key@3.1.1: {} - path-key@4.0.0: {} - path-parse@1.0.7: {} path-scurry@2.0.1: @@ -10456,9 +9206,9 @@ snapshots: picocolors@1.1.1: {} - picomatch@2.3.1: {} + picomatch@2.3.2: {} - picomatch@4.0.3: {} + picomatch@4.0.7: {} pify@2.3.0: {} @@ -10485,37 +9235,37 @@ snapshots: possible-typed-array-names@1.1.0: {} - postcss-import@15.1.0(postcss@8.5.6): + postcss-import@15.1.0(postcss@8.5.28): dependencies: - postcss: 8.5.6 + postcss: 8.5.28 postcss-value-parser: 4.2.0 read-cache: 1.0.0 resolve: 1.22.11 - postcss-js@4.1.0(postcss@8.5.6): + postcss-js@4.1.0(postcss@8.5.28): dependencies: camelcase-css: 2.0.1 - postcss: 8.5.6 + postcss: 8.5.28 - postcss-load-config@6.0.1(jiti@1.21.7)(postcss@8.5.6)(yaml@2.8.2): + postcss-load-config@6.0.1(jiti@1.21.7)(postcss@8.5.28)(yaml@2.9.0): dependencies: lilconfig: 3.1.3 optionalDependencies: jiti: 1.21.7 - postcss: 8.5.6 - yaml: 2.8.2 + postcss: 8.5.28 + yaml: 2.9.0 - postcss-nested@6.2.0(postcss@8.5.6): + postcss-nested@6.2.0(postcss@8.5.28): dependencies: - postcss: 8.5.6 - postcss-selector-parser: 6.1.2 + postcss: 8.5.28 + postcss-selector-parser: 6.1.4 postcss-selector-parser@6.0.10: dependencies: cssesc: 3.0.0 util-deprecate: 1.0.2 - postcss-selector-parser@6.1.2: + postcss-selector-parser@6.1.4: dependencies: cssesc: 3.0.0 util-deprecate: 1.0.2 @@ -10524,31 +9274,16 @@ snapshots: postcss@8.4.31: dependencies: - nanoid: 3.3.11 + nanoid: 3.3.18 picocolors: 1.1.1 source-map-js: 1.2.1 - postcss@8.5.6: + postcss@8.5.28: dependencies: - nanoid: 3.3.11 + nanoid: 3.3.18 picocolors: 1.1.1 source-map-js: 1.2.1 - prebuild-install@7.1.3: - dependencies: - detect-libc: 2.1.2 - expand-template: 2.0.3 - github-from-package: 0.0.0 - minimist: 1.2.8 - mkdirp-classic: 0.5.3 - napi-build-utils: 2.0.0 - node-abi: 3.87.0 - pump: 3.0.3 - rc: 1.2.8 - simple-get: 4.0.1 - tar-fs: 2.1.4 - tunnel-agent: 0.6.0 - prelude-ls@1.2.1: {} prettier-plugin-tailwindcss@0.5.14(prettier@3.8.1): @@ -10557,10 +9292,6 @@ snapshots: prettier@3.8.1: {} - pretty-ms@9.3.0: - dependencies: - parse-ms: 4.0.0 - prism-react-renderer@2.4.1(react@18.3.1): dependencies: '@types/prismjs': 1.26.6 @@ -10585,37 +9316,24 @@ snapshots: property-information@7.1.0: {} - protobufjs@7.5.4: + protobufjs@7.6.6: dependencies: '@protobufjs/aspromise': 1.1.2 '@protobufjs/base64': 1.1.2 - '@protobufjs/codegen': 2.0.4 - '@protobufjs/eventemitter': 1.1.0 - '@protobufjs/fetch': 1.1.0 + '@protobufjs/codegen': 2.0.5 + '@protobufjs/eventemitter': 1.1.1 + '@protobufjs/fetch': 1.1.1 '@protobufjs/float': 1.0.2 - '@protobufjs/inquire': 1.1.0 '@protobufjs/path': 1.1.2 '@protobufjs/pool': 1.1.0 - '@protobufjs/utf8': 1.1.0 + '@protobufjs/utf8': 1.1.2 '@types/node': 20.4.9 long: 5.3.2 - pump@3.0.3: - dependencies: - end-of-stream: 1.4.5 - once: 1.4.0 - punycode@2.3.1: {} queue-microtask@1.2.3: {} - rc@1.2.8: - dependencies: - deep-extend: 0.6.0 - ini: 1.3.8 - minimist: 1.2.8 - strip-json-comments: 2.0.1 - react-dom@18.3.1(react@18.3.1): dependencies: loose-envify: 1.4.0 @@ -10694,15 +9412,9 @@ snapshots: normalize-package-data: 2.5.0 path-type: 1.1.0 - readable-stream@3.6.2: - dependencies: - inherits: 2.0.4 - string_decoder: 1.3.0 - util-deprecate: 1.0.2 - readdirp@3.6.0: dependencies: - picomatch: 2.3.1 + picomatch: 2.3.2 recma-build-jsx@1.0.0: dependencies: @@ -10836,7 +9548,7 @@ snapshots: dependencies: estree-util-is-identifier-name: 1.1.0 estree-util-value-to-estree: 1.3.0 - js-yaml: 4.1.1 + js-yaml: 4.3.2 toml: 3.0.0 remark-mdx@2.3.0: @@ -10922,8 +9634,6 @@ snapshots: points-on-curve: 0.2.0 points-on-path: 0.2.1 - run-applescript@7.1.0: {} - run-parallel@1.2.0: dependencies: queue-microtask: 1.2.3 @@ -10942,8 +9652,6 @@ snapshots: has-symbols: 1.1.0 isarray: 2.0.5 - safe-buffer@5.2.1: {} - safe-push-apply@1.0.0: dependencies: es-errors: 1.3.0 @@ -10976,8 +9684,7 @@ snapshots: semver@7.7.4: {} - set-blocking@2.0.0: - optional: true + semver@7.8.5: {} set-function-length@1.2.2: dependencies: @@ -11001,20 +9708,38 @@ snapshots: es-errors: 1.3.0 es-object-atoms: 1.1.1 - sharp@0.32.6: + sharp@0.35.4(@types/node@20.4.9): dependencies: - color: 4.2.3 + '@img/colour': 1.1.0 detect-libc: 2.1.2 - node-addon-api: 6.1.0 - prebuild-install: 7.1.3 - semver: 7.7.4 - simple-get: 4.0.1 - tar-fs: 3.1.1 - tunnel-agent: 0.6.0 - transitivePeerDependencies: - - bare-abort-controller - - bare-buffer - - react-native-b4a + semver: 7.8.5 + optionalDependencies: + '@img/sharp-darwin-arm64': 0.35.4 + '@img/sharp-darwin-x64': 0.35.4 + '@img/sharp-freebsd-wasm32': 0.35.4 + '@img/sharp-libvips-darwin-arm64': 1.3.3 + '@img/sharp-libvips-darwin-x64': 1.3.3 + '@img/sharp-libvips-linux-arm': 1.3.3 + '@img/sharp-libvips-linux-arm64': 1.3.3 + '@img/sharp-libvips-linux-ppc64': 1.3.3 + '@img/sharp-libvips-linux-riscv64': 1.3.3 + '@img/sharp-libvips-linux-s390x': 1.3.3 + '@img/sharp-libvips-linux-x64': 1.3.3 + '@img/sharp-libvips-linuxmusl-arm64': 1.3.3 + '@img/sharp-libvips-linuxmusl-x64': 1.3.3 + '@img/sharp-linux-arm': 0.35.4 + '@img/sharp-linux-arm64': 0.35.4 + '@img/sharp-linux-ppc64': 0.35.4 + '@img/sharp-linux-riscv64': 0.35.4 + '@img/sharp-linux-s390x': 0.35.4 + '@img/sharp-linux-x64': 0.35.4 + '@img/sharp-linuxmusl-arm64': 0.35.4 + '@img/sharp-linuxmusl-x64': 0.35.4 + '@img/sharp-webcontainers-wasm32': 0.35.4 + '@img/sharp-win32-arm64': 0.35.4 + '@img/sharp-win32-ia32': 0.35.4 + '@img/sharp-win32-x64': 0.35.4 + '@types/node': 20.4.9 shebang-command@2.0.0: dependencies: @@ -11061,31 +9786,10 @@ snapshots: signal-exit@4.1.0: {} - simple-concat@1.0.1: {} - simple-functional-loader@1.2.1: dependencies: loader-utils: 2.0.4 - simple-get@3.1.1: - dependencies: - decompress-response: 4.2.1 - once: 1.4.0 - simple-concat: 1.0.1 - optional: true - - simple-get@4.0.1: - dependencies: - decompress-response: 6.0.0 - once: 1.4.0 - simple-concat: 1.0.1 - - simple-swizzle@0.2.4: - dependencies: - is-arrayish: 0.3.4 - - sisteransi@1.0.5: {} - slash@3.0.0: {} sort-keys@5.1.0: @@ -11123,14 +9827,8 @@ snapshots: sprintf-js@1.0.3: {} - ssf@0.11.2: - dependencies: - frac: 1.1.2 - stable-hash@0.0.5: {} - steno@4.0.2: {} - stop-iteration-iterator@1.1.0: dependencies: es-errors: 1.3.0 @@ -11138,14 +9836,7 @@ snapshots: streamsearch@1.1.0: {} - streamx@2.23.0: - dependencies: - events-universal: 1.0.1 - fast-fifo: 1.3.2 - text-decoder: 1.2.3 - transitivePeerDependencies: - - bare-abort-controller - - react-native-b4a + strictdom@1.0.1: {} string-width@4.2.3: dependencies: @@ -11203,10 +9894,6 @@ snapshots: define-properties: 1.2.1 es-object-atoms: 1.1.1 - string_decoder@1.3.0: - dependencies: - safe-buffer: 5.2.1 - stringify-entities@4.0.4: dependencies: character-entities-html4: 2.1.0 @@ -11224,14 +9911,10 @@ snapshots: strip-bom@3.0.0: {} - strip-final-newline@4.0.0: {} - strip-indent@1.0.1: dependencies: get-stdin: 4.0.1 - strip-json-comments@2.0.1: {} - strip-json-comments@3.1.1: {} style-to-js@1.1.21: @@ -11263,10 +9946,6 @@ snapshots: tinyglobby: 0.2.15 ts-interface-checker: 0.1.13 - supports-color@5.5.0: - dependencies: - has-flag: 3.0.0 - supports-color@7.2.0: dependencies: has-flag: 4.0.0 @@ -11277,11 +9956,11 @@ snapshots: tailwind-merge@2.6.1: {} - tailwindcss-animate@1.0.7(tailwindcss@3.4.19(yaml@2.8.2)): + tailwindcss-animate@1.0.7(tailwindcss@3.4.19(yaml@2.9.0)): dependencies: - tailwindcss: 3.4.19(yaml@2.8.2) + tailwindcss: 3.4.19(yaml@2.9.0) - tailwindcss@3.4.19(yaml@2.8.2): + tailwindcss@3.4.19(yaml@2.9.0): dependencies: '@alloc/quick-lru': 5.2.0 arg: 5.0.2 @@ -11297,70 +9976,18 @@ snapshots: normalize-path: 3.0.0 object-hash: 3.0.0 picocolors: 1.1.1 - postcss: 8.5.6 - postcss-import: 15.1.0(postcss@8.5.6) - postcss-js: 4.1.0(postcss@8.5.6) - postcss-load-config: 6.0.1(jiti@1.21.7)(postcss@8.5.6)(yaml@2.8.2) - postcss-nested: 6.2.0(postcss@8.5.6) - postcss-selector-parser: 6.1.2 + postcss: 8.5.28 + postcss-import: 15.1.0(postcss@8.5.28) + postcss-js: 4.1.0(postcss@8.5.28) + postcss-load-config: 6.0.1(jiti@1.21.7)(postcss@8.5.28)(yaml@2.9.0) + postcss-nested: 6.2.0(postcss@8.5.28) + postcss-selector-parser: 6.1.4 resolve: 1.22.11 sucrase: 3.35.1 transitivePeerDependencies: - tsx - yaml - tar-fs@2.1.4: - dependencies: - chownr: 1.1.4 - mkdirp-classic: 0.5.3 - pump: 3.0.3 - tar-stream: 2.2.0 - - tar-fs@3.1.1: - dependencies: - pump: 3.0.3 - tar-stream: 3.1.7 - optionalDependencies: - bare-fs: 4.5.3 - bare-path: 3.0.0 - transitivePeerDependencies: - - bare-abort-controller - - bare-buffer - - react-native-b4a - - tar-stream@2.2.0: - dependencies: - bl: 4.1.0 - end-of-stream: 1.4.5 - fs-constants: 1.0.0 - inherits: 2.0.4 - readable-stream: 3.6.2 - - tar-stream@3.1.7: - dependencies: - b4a: 1.7.3 - fast-fifo: 1.3.2 - streamx: 2.23.0 - transitivePeerDependencies: - - bare-abort-controller - - react-native-b4a - - tar@6.2.1: - dependencies: - chownr: 2.0.0 - fs-minipass: 2.1.0 - minipass: 5.0.0 - minizlib: 2.1.2 - mkdirp: 1.0.4 - yallist: 4.0.0 - optional: true - - text-decoder@1.2.3: - dependencies: - b4a: 1.7.3 - transitivePeerDependencies: - - react-native-b4a - text-table@0.2.0: {} thenify-all@1.6.0: @@ -11377,8 +10004,8 @@ snapshots: tinyglobby@0.2.15: dependencies: - fdir: 6.5.0(picomatch@4.0.3) - picomatch: 4.0.3 + fdir: 6.5.0(picomatch@4.0.7) + picomatch: 4.0.7 to-regex-range@5.0.1: dependencies: @@ -11386,8 +10013,6 @@ snapshots: toml@3.0.0: {} - tr46@0.0.3: {} - trim-lines@3.0.1: {} trim-newlines@1.0.0: {} @@ -11413,10 +10038,6 @@ snapshots: tslib@2.8.1: {} - tunnel-agent@0.6.0: - dependencies: - safe-buffer: 5.2.1 - typanion@3.14.0: {} type-check@0.4.0: @@ -11473,10 +10094,6 @@ snapshots: has-symbols: 1.1.0 which-boxed-primitive: 1.1.1 - undici-types@5.26.5: {} - - unicorn-magic@0.3.0: {} - unified@10.1.2: dependencies: '@types/unist': 2.0.11 @@ -11558,13 +10175,6 @@ snapshots: unist-util-is: 6.0.1 unist-util-visit-parents: 6.0.2 - unpdf@0.11.0: - optionalDependencies: - canvas: 2.11.2 - transitivePeerDependencies: - - encoding - - supports-color - unrs-resolver@1.11.1: dependencies: napi-postinstall: 0.3.4 @@ -11589,9 +10199,9 @@ snapshots: '@unrs/resolver-binding-win32-ia32-msvc': 1.11.1 '@unrs/resolver-binding-win32-x64-msvc': 1.11.1 - update-browserslist-db@1.2.3(browserslist@4.28.1): + update-browserslist-db@1.3.2(browserslist@4.28.9): dependencies: - browserslist: 4.28.1 + browserslist: 4.28.9 escalade: 3.2.0 picocolors: 1.1.1 @@ -11616,9 +10226,7 @@ snapshots: util-deprecate@1.0.2: {} - uuid@10.0.0: {} - - uuid@11.1.0: {} + uuid@14.0.2: {} uuid@8.3.2: {} @@ -11634,10 +10242,6 @@ snapshots: spdx-correct: 3.2.0 spdx-expression-parse: 3.0.1 - validate.io-array@1.0.6: {} - - validate.io-function@1.0.2: {} - vfile-location@4.1.0: dependencies: '@types/unist': 2.0.11 @@ -11665,40 +10269,14 @@ snapshots: '@types/unist': 3.0.3 vfile-message: 4.0.3 - vscode-jsonrpc@8.2.0: {} - - vscode-languageserver-protocol@3.17.5: - dependencies: - vscode-jsonrpc: 8.2.0 - vscode-languageserver-types: 3.17.5 - - vscode-languageserver-textdocument@1.0.12: {} - - vscode-languageserver-types@3.17.5: {} - - vscode-languageserver@9.0.1: - dependencies: - vscode-languageserver-protocol: 3.17.5 - vscode-oniguruma@1.7.0: {} vscode-textmate@8.0.0: {} - vscode-uri@3.0.8: {} - web-namespaces@2.0.1: {} web-streams-polyfill@3.3.3: {} - web-streams-polyfill@4.0.0-beta.3: {} - - webidl-conversions@3.0.1: {} - - whatwg-url@5.0.0: - dependencies: - tr46: 0.0.3 - webidl-conversions: 3.0.1 - which-boxed-primitive@1.1.1: dependencies: is-bigint: 1.1.0 @@ -11744,17 +10322,8 @@ snapshots: dependencies: isexe: 2.0.0 - wide-align@1.1.5: - dependencies: - string-width: 4.2.3 - optional: true - - wmf@1.0.2: {} - word-wrap@1.2.5: {} - word@0.3.0: {} - wrap-ansi@7.0.0: dependencies: ansi-styles: 4.3.0 @@ -11763,20 +10332,6 @@ snapshots: wrappy@1.0.2: {} - wsl-utils@0.1.0: - dependencies: - is-wsl: 3.1.0 - - xlsx@0.18.5: - dependencies: - adler-32: 1.3.1 - cfb: 1.2.2 - codepage: 1.15.0 - crc-32: 1.2.2 - ssf: 0.11.2 - wmf: 1.0.2 - word: 0.3.0 - xml-js@1.6.11: dependencies: sax: 1.4.4 @@ -11785,10 +10340,7 @@ snapshots: y18n@5.0.8: {} - yallist@4.0.0: - optional: true - - yaml@2.8.2: {} + yaml@2.9.0: {} yargs-parser@21.1.1: {} @@ -11804,16 +10356,6 @@ snapshots: yocto-queue@0.1.0: {} - yoctocolors@2.1.2: {} - - zod-error@1.5.0: - dependencies: - zod: 3.25.76 - - zod-validation-error@3.5.4(zod@3.25.76): - dependencies: - zod: 3.25.76 - zod@3.25.76: {} zwitch@2.0.4: {} From c89ef4173933f110d3e6fca3b143fd450f6dc5c9 Mon Sep 17 00:00:00 2001 From: Marc <7050295+marcleblanc2@users.noreply.github.com> Date: Thu, 10 Sep 2026 19:54:31 -0600 Subject: [PATCH 197/217] ci/spelling: Add spelling PR check (#1853) Linear [FE-499: Fix doc site issues](https://linear.app/sourcegraph/issue/FE-499/fix-doc-site-issues) ## Summary - Install CSpell 10 in CI only (not a project dependency); `npx cspell@10 --no-progress --dot '**/*'` runs the full-repository check locally - Add a custom dictionary file to allowlist needed words - On pull requests, report only spelling errors on lines added by the PR, so existing repository findings are ignored - Create / update one PR summary comment containing grouped file, line, column, word, and context details, plus an inline review comment per flagged line with a one-click GitHub suggestion for the best candidate - Every comment links to `cspell-allow-list.txt` on the PR branch, to allowlist false positives - Resolve the comment after fixes - Initially roll out the PR check as non-blocking, while preserving the local command's failing exit code ## Verification - Simulated an added typo: the diff checker exited 1 and reported exactly that word, line, column, and context - Reverted the typo: the diff checker exited 0 despite pre-existing repository findings - Prettier checks passed for the script, package/config, and workflow - Workflow YAML parsed successfully and every shell `run` block passed `bash -n` - `node --check dev/check-spelling.mjs` - `git diff --check` ## Exclusions - CSpell honors `.gitignore`, so dependency, cache, and build output remain excluded - The full local check additionally skips: - Binary image/font formats - `pnpm-lock.yaml` - CSpell's own config/dictionary - Checked-in generated outputs (`docs/technical-changelog.mdx`, generated observability alert/dashboard references, and the generated AWS icon module) ## Screenshots From demo PRs #1892 and #1893: Summary comment ![CSpell summary comment](https://ampcode.com/user-content/artifacts/7a53381b97a7dd82302e234b173ad5334d249915f967eeb86f35f3cfc9beaf89-file.png) Inline review comment ![CSpell inline review comment](https://ampcode.com/user-content/artifacts/18e0509bc77a41a96ca4d91b3ce3a0df1da598576708214fabd1664964c757cd-file.png) ## Amp threads - [Spelling PR check](https://ampcode.com/threads/T-01a06e27-8097-7461-8d90-eef25db09feb) - [CSpell PR check](https://ampcode.com/threads/T-01a06e21-70c8-77bb-aa01-9a6fa75488bd) - [Inline spelling comments](https://ampcode.com/threads/T-01a0837b-04dc-7559-831d-ba3b35c75489) - [Clean cspell dictionary](https://ampcode.com/threads/T-01a07e67-73b3-779f-8880-7ba770fe7ade) - [Cspell word list review](https://ampcode.com/threads/T-01a082f4-e864-769b-8269-46847abcd228) - [Link to allow list in comments](https://ampcode.com/threads/T-01a085a6-bee2-73a7-a3d4-49683789fc84) --------- Co-authored-by: Amp --- .github/workflows/spellcheck.yml | 54 +++ .gitignore | 2 + README.md | 2 + cspell-allow-list.txt | 598 +++++++++++++++++++++++++++++++ cspell-block-list.txt | 112 ++++++ cspell.json | 35 ++ dev/check-spelling.mjs | 143 ++++++++ dev/post-spelling-review.mjs | 267 ++++++++++++++ src/data/redirects.ts | 2 + 9 files changed, 1215 insertions(+) create mode 100644 .github/workflows/spellcheck.yml create mode 100644 cspell-allow-list.txt create mode 100644 cspell-block-list.txt create mode 100644 cspell.json create mode 100644 dev/check-spelling.mjs create mode 100644 dev/post-spelling-review.mjs diff --git a/.github/workflows/spellcheck.yml b/.github/workflows/spellcheck.yml new file mode 100644 index 000000000..5e67db872 --- /dev/null +++ b/.github/workflows/spellcheck.yml @@ -0,0 +1,54 @@ +name: Spell check + +# Reports spelling errors on lines added by a pull request, as a summary comment +# plus inline review comments on the flagged lines. Existing spelling errors and +# errors on unchanged lines are not included. + +on: + pull_request: + +permissions: + contents: read + pull-requests: write + +jobs: + spellcheck: + name: CSpell (advisory) + runs-on: ubuntu-latest + steps: + - name: Check out pull request head + uses: actions/checkout@v4 + with: + ref: ${{ github.event.pull_request.head.sha }} + fetch-depth: 0 + + # Node 24 is pre-cached on ubuntu-latest, avoiding the download + # incurred by node-version: latest. + - name: Set up Node.js + uses: actions/setup-node@v4 + with: + node-version: 24 + + # Install only CSpell instead of the site's full dependency tree. + - name: Install CSpell + run: npm install --global cspell@10 + + - name: Find spelling errors introduced by this PR + env: + BASE_SHA: ${{ github.event.pull_request.base.sha }} + run: | + base=$(git merge-base "$BASE_SHA" HEAD) + # Exit 1 means findings; anything else is an operational error + node dev/check-spelling.mjs --base "$base" --format json \ + > "$RUNNER_TEMP/spelling.json" || [ "$?" -eq 1 ] + cat "$RUNNER_TEMP/spelling.json" + + - name: Report on the pull request + # Fork PRs get a read-only token; the findings are still in the job log + if: github.event.pull_request.head.repo.full_name == github.repository + env: + GH_TOKEN: ${{ github.token }} + PR_NUMBER: ${{ github.event.pull_request.number }} + HEAD_SHA: ${{ github.event.pull_request.head.sha }} + HEAD_REF: ${{ github.event.pull_request.head.ref }} + run: node dev/post-spelling-review.mjs --findings "$RUNNER_TEMP/spelling.json" diff --git a/.gitignore b/.gitignore index 17667a58c..5b5f39851 100644 --- a/.gitignore +++ b/.gitignore @@ -56,3 +56,5 @@ public/changelog.rss .amp/portals/ public/technical-changelog.rss + +logs/ diff --git a/README.md b/README.md index e2b1eea27..3323b01e0 100644 --- a/README.md +++ b/README.md @@ -36,6 +36,8 @@ Now that the base requirements of the project have been satisfied, we can instal pnpm install ``` +Spell checking is not part of the project dependencies. To run it locally: `npx cspell@10 --no-progress --dot '**/*'` + Next, run the development server: ```sh diff --git a/cspell-allow-list.txt b/cspell-allow-list.txt new file mode 100644 index 000000000..e5d99ffcd --- /dev/null +++ b/cspell-allow-list.txt @@ -0,0 +1,598 @@ +# Words CSpell should accept +# Matching is case- and accent-insensitive + +# Sourcegraph Chrome extension ID +dgjhfomjieaadpoljlnidmbgkdffpack + +# Base64-encoded GraphQL ID "User:1" +VXNlcjox + +# Algolia application ID +0EBA2NRQU3 + +# Base64-encoded GraphQL ID "SearchJob:1" +U2VhcmNoSm9iOjY5 + +# base64 for `RegistryExtension:` in synced / generated file `docs/cli/references/extensions/delete.mdx` +# The twist is that the command it documents doesn't exist anymore +# TODO: Delete docs for commands which no longer exist +# TODO: Remove after merging +UmVnaXN0cnlFeHRlbnNpb246 + +# Fragments of truncated shell output in examples +actr +autol +eror # TODO: Remove after merging 1884 +functio # TODO: Remove after merging 1885 +ified +mtok +pousr +sourcegr +stabili + +# Words +acmeco +ADFS +advisements +airgapped +Aiven +algoliasearch +allkeys +amcheck +amname +ampcode +anotherproject +anotherrepo +apidocs +appendonly +appengine +appgw +ARGF +atoburl +atoi +attnum +attrelid +autocompletions +autoedit +autoedits +autoindexing +automations +autoscalers +autoupgrade +autovacuum +Awais +awscli +awsrepos +azuredevops +backfiller +baseai +batchchange +batchchanges +batcheshelper +batchignore +batchutils +behaviour +behaviours +beyang +bgwriter +binutils +bitbucketcloud +bitbucketserver +bitmapscan +Bitwarden +blkid +blobstore +blurple +browsable +buildconfig +Burkina +burndown +BYOK +BYOLLM +Cabo +cacerts +cadvisor +callsign +callsigns +callsites +camdentest +CAROOT +Certbot +certonly +changesettemplate +changesettemplatebody +changesettemplatebranch +changesettemplatecommit +changesettemplatecommitauthor +changesettemplatecommitmessage +changesettemplatefork +changesettemplatepublished +changesettemplatetitle +chatbots +cheatsheet +checkhealth +citext +Citus +clickjacking +clientauthconfig +cloneproxy +cloudasset +cloudkms +cloudnotifications +cloudtrace +clusterrole +clusterrolebinding +cmdline +codecompletions +codegraph +codehost +codehosts +codeinsights +codeintel +codellama +codemod +codemonitors +codesearch +collatable +colordiff +combinatorially +comby +commitgraph +committerdate +configmap +conntrack +Consolas +contentlayer +Côte +crashloop +crashloopbackoff +createdat +cstring +ctid +ctstate +CUDA +customcert +customising +d'Ivoire +daemonset +darkhold +datalake +datcollversion +datname +dbname +dbstore +dbug +decrypter +deepsearch +deepseek +demopasswordchangeme +DEVMINOR +DEVPATCH +devrel +dgrijalva +diffstat +dind +distros +dmsetup +dockerfiles +docsite +docstrings +doombot +downto +dport +drilldown +drilldowns +drwxr +dshm +dumpall +eastus +eksctl +ELEC +emailaddress +encrypter +Enry +entrycommand +envsubst +errgroup +errorf +esbenp +Eswatini +etcdctl +euxo +EVICTEDPOD +exfiltration +explorable +externalapi +extsvc +Falco +Faso +favorited +favoriting +favourite +federationmetadata +Filippo +finetuning +finishedat +fmtlib +forrester +frontmatter +FSTYPE +fullchain +fullpath +gifs +gitdir +gitea +githost +Gitolite +gitserver +gnachman +gobwas +gofmt +goimports +GOMAXPROCS +googlecloud +gopkg +goreleaser +goroutines +graphbook +graphd +graphqlbackend +gsuite +healthcheck +healthz +HELO +horsegraph +horsten +hostmatcher +hostpath +HSTS +httptest +huggingface +Iconify +IDPSSO +imagepullsecrets +importchangesets +importchangesetsexternalids +importchangesetsrepository +incidentio +inconshreveable +indclass +indcollation +indexability +indexrelid +indexroot +indexscan +indisready +indisvalid +indkey +indnkeyatts +indrelid +intarray +intelli +isopen +istari +itable +iterm +itoa +JCEF +jiapantw +journalctl +Jsonnet +jsonschemadoc +Kaspersky +kbar +keegancsmith +keymap +keymappings +keypair +killall +Kitts +kubeconfig +kubelet +kustomization +Langbase +languagemodels +Laravel +latencytest +latveria +lefthand +Leste +letsencrypt +libsecret +logfmt +logpush +logtost +logurl +lookarounds +losetup +lsif +Luhansk +maedahbatool +Marino +maxage +maxmemory +maxpages +megarepo +Memorystore +Menlo +migops +mixtral +mktemp +mmap +modelconfig +mountpoint +mpim +multiplicatively +multiqueue +multiversion +mycompany +myconfig +mydockerhub +myext +myextension +mygroup +mykey +myorg +myotherrepo +mypassword +myproject +myregistry +myrepo +mysqli +mystring +mytag +myteam +myvalue +nameid +nameopt +NETRC +nodeport +noeviction +nofail +noheadings +nonexistenturl +nonprivileged +noout +NOSYSTEM +nslookup +nspname +numpy +nvim +oauthconfig +objectname +oidvectorin +oldtbl +Ollama +omnibox +oneclick +onelogin +onrepositoriesmatchingquery +onrepository +OOBMIGRATION +opclass +opcmethod +openaicompatible +opencode +openctx +opengrok +openidconnect +optim +organisation +organisations +ORGID +orgpolicy +overcounted +oyaml +pagure +Parsely +parsewithclaims +patterntype +PCIW +PCRE +pekko +persistentvolumeclaims +pgbouncer +pgcrypto +PGDATABASE +PGDATASOURCE +PGHOST +PGPASSWORD +PGPORT +pgsql +PGSSLMODE +PGUSER +phpdoc +pipefail +PKCE +PKEY +plpgsql +PODNAME +polysans +pooler +PREEMPTIBLE +preg +premade +Príncipe +privkey +projectname +protoc +pubout +pullrequest +pvcs +pykafka +quicklinks +Qwen +rbacs +readwrite +reclone +recloning +reexecuting +refreshable +registryurl +reindexdb +reindexing +relid +relkind +relname +relnamespace +relpages +relpersistence +repogroup +repohasfile +reponame +requestclient +requirepass +rescope +resourcemanager +Rica +Rockskip +rootfs +rstrip +runllm +ruplacer +samltool +sams +sandboxing +sboms +SCIM +scip +SCIW +seccomp +secretmanager +secretname +Sectigo +Sendgrid +serde +serilog +setext +settingsjson +setx +sgdev +sggray +sgquery +sgtest +sgviolet +Shadcn +shellsession +shiki +showcerts +SIEM +sigalg +SLES +Snek +snekpm +somerandom +Sourcegraph +sourcegraphcloud +sourcegraphcom +spacebar +specialised +spectaql +SQLSTATE +srcgraph +ssbc +sshuttle +sslmode +stackexchange +standardly +starcoder +Starlark +startedat +statefulsets +stepscontainer +stepsenv +stepsfiles +stepsif +stepsmount +stepsoutputs +stepsoutputsnameformat +stepsoutputsnamevalue +stepsrun +storageaccounttype +STORAGECLASS +Strato +strconv +subchart +subcharts +subexpression +subnetworks +subpackages +subsubgroup +subteam +subteams +subwords +sunsetting +symf +syncer +syncers +synchronised +Syntect +Talkhouse +TARGETGROUP +testroute +testsourcegraph +testusers +Textualize +theirrepo +thorsten +thorstens +threadcreate +timedout +timemachine +tini +tjdevries +tolerations +Tomé +toolcall +topk +topsecretorg +topsecretproject +transactionally +transformchanges +transformchangesgroup +transformchangesgroupbranch +transformchangesgroupdirectory +transformchangesgrouprepository +trgm +triaging +trialling +Türkiye +typesafe +typescriptjavascript +unarchived +unarchiving +uncordon +underallocated +undercount +undercounted +underprovisioned +unibeautify +unindexed +unioned +unmigrated +untar +updatecheck +upperand +urlencode +urlsafe +userprincipalname +USERTRUST +Valsorda +vegeta +vercel +Verilog +VHDL +vscodesourcegraph +waitlist +Weaveworks +winsize +workspacesin +workspacesonlyfetchworkspace +workspacesrootatlocationof +XGET +xlarge +yourorgname +YOURUSERNAME +Zaporizhzhia +Zoekt +zoomable diff --git a/cspell-block-list.txt b/cspell-block-list.txt new file mode 100644 index 000000000..a21c45e61 --- /dev/null +++ b/cspell-block-list.txt @@ -0,0 +1,112 @@ +# Words CSpell should flag +# Matching is case- and accent-insensitive +accomodate +acepted +activites +alignemnt +authentitcation +authroized +autoiondex +compatability +comphrensive +composit +conection +configuredimageimage +consule +contiainer +contraint +crtl +custmoize +databse +dedupliacte +defininition +depdendencies +determinstic +documenta +eclispe +embeeddings +emtpy +endable +exector +executon +exernal +exisiting +explictly +fetchinig +fulfiill +fulfuill +gatway +gemin +gitab +gitgnore +gomft +guarauntees +hopefull +horizonal +identitfier +ingore +insufficent +intterupt +invididual +jeager +limitting +managmeent +matadata +migtrator +mulitenant +necesarily +occured +occurence +occuring +opean +optimisitic +optimizated +ordererd +owernship +paramter +peforce +percaution +permanant +permanentaly +permisisons +postgress +prerequisit +privileized +privisioning +promotheus +pugins +pumbling +puslishing +reapplyed +repliacas +rermoved +reveiver +santizes +screeen +scret +seach +searcg +searchs +searhces +seperate +serch +simiply +simpify +sitiched +sorucegraph +soucegraph +soureces +specifiy +stablility +stiched +sufficiantly +symbos +synchronizzation +tailling +targetting +teamates +telemetery +tetsted +unmarsha +unsued +workpsaces diff --git a/cspell.json b/cspell.json new file mode 100644 index 000000000..749ab8131 --- /dev/null +++ b/cspell.json @@ -0,0 +1,35 @@ +{ + "$schema": "https://raw.githubusercontent.com/streetsidesoftware/cspell/main/cspell.schema.json", + "version": "0.2", + "useGitignore": true, + "dictionaryDefinitions": [ + { + "name": "sourcegraph-docs", + "path": "./cspell-allow-list.txt", + "addWords": true + }, + { + "name": "sourcegraph-docs-block-list", + "path": "./cspell-block-list.txt", + "kind": "flag-words" + } + ], + "dictionaries": ["sourcegraph-docs", "sourcegraph-docs-block-list"], + "ignoreRegExpList": [ + "/\\\\[nrt]/g", + "/(? [--format text|json] + * + * The json format feeds dev/post-spelling-review.mjs. + * Exits 1 when spelling issues are found and 2 for operational errors. + */ + +import {execFileSync, spawnSync} from 'child_process'; +import path from 'path'; +import {fileURLToPath} from 'url'; + +const args = process.argv.slice(2); +const BASE = flagValue('--base'); +const FORMAT = flagValue('--format') ?? 'text'; + +function flagValue(name) { + const index = args.indexOf(name); + return index === -1 ? undefined : args[index + 1]; +} + +function addedLineRanges(base) { + const diff = execFileSync( + 'git', + ['diff', '--unified=0', '--no-color', '--find-renames', base, '--'], + {encoding: 'utf8', maxBuffer: 50 * 1024 * 1024} + ); + const ranges = new Map(); + let file; + + for (const line of diff.split('\n')) { + const fileMatch = line.match(/^\+\+\+ b\/(.+)$/); + if (fileMatch) { + file = fileMatch[1]; + if (!ranges.has(file)) { + ranges.set(file, []); + } + continue; + } + + const hunkMatch = line.match(/^@@ -\d+(?:,\d+)? \+(\d+)(?:,(\d+))? @@/); + if (file && hunkMatch) { + const start = Number(hunkMatch[1]); + const count = hunkMatch[2] === undefined ? 1 : Number(hunkMatch[2]); + if (count > 0) { + ranges.get(file).push([start, start + count - 1]); + } + } + } + + return ranges; +} + +function runCSpell(files) { + if (files.length === 0) { + return []; + } + + const result = spawnSync( + 'cspell', + [ + '--no-progress', + '--show-suggestions', + '--reporter', + '@cspell/cspell-json-reporter', + '--file', + ...files + ], + {encoding: 'utf8', maxBuffer: 50 * 1024 * 1024} + ); + + if (result.error) { + throw result.error; + } + + const report = JSON.parse(result.stdout); + if (![0, 1].includes(result.status) || report.error.length > 0) { + throw new Error(result.stderr || JSON.stringify(report.error)); + } + + return report.issues.map(issue => ({ + file: path.relative(process.cwd(), fileURLToPath(issue.uri)), + line: issue.row, + column: issue.col, + word: issue.text, + suggestions: issue.suggestions?.slice(0, 3) ?? [], + text: issue.line.text.replace(/\r?\n$/, ''), + context: issue.context?.text.trim() ?? issue.line.text.trim() + })); +} + +function findingsOnAddedLines(ranges, issues) { + return issues.filter(issue => + (ranges.get(issue.file) ?? []).some( + ([start, end]) => issue.line >= start && issue.line <= end + ) + ); +} + +function formatText(findings) { + if (findings.length === 0) { + return 'No spelling errors found in added lines.\n'; + } + + const lines = [ + `Found ${findings.length} spelling error(s) in added lines:` + ]; + for (const finding of findings) { + lines.push( + `${finding.file}:${finding.line}:${finding.column} - Unknown word (${finding.word})` + ); + } + return lines.join('\n') + '\n'; +} + +async function main() { + if (!BASE) { + throw new Error('Missing required --base '); + } + if (!['text', 'json'].includes(FORMAT)) { + throw new Error(`Unknown --format "${FORMAT}"; use text or json`); + } + + const ranges = addedLineRanges(BASE); + const findings = findingsOnAddedLines( + ranges, + runCSpell([...ranges.keys()]) + ); + process.stdout.write( + FORMAT === 'json' + ? JSON.stringify(findings, null, '\t') + '\n' + : formatText(findings) + ); + process.exit(findings.length === 0 ? 0 : 1); +} + +main().catch(error => { + console.error(error); + process.exit(2); +}); diff --git a/dev/post-spelling-review.mjs b/dev/post-spelling-review.mjs new file mode 100644 index 000000000..467fbb12b --- /dev/null +++ b/dev/post-spelling-review.mjs @@ -0,0 +1,267 @@ +#!/usr/bin/env node + +/** + * Reports CSpell findings on a pull request: one summary comment in the + * discussion, plus an inline review comment on each flagged line. + * + * Usage: node dev/post-spelling-review.mjs --findings [--dry-run] + * + * Reads the JSON written by `dev/check-spelling.mjs --format json`. + * Requires GH_TOKEN, GITHUB_REPOSITORY, PR_NUMBER, HEAD_SHA and HEAD_REF. + */ + +import {readFileSync} from 'fs'; + +const args = process.argv.slice(2); +const FINDINGS_FILE = args[args.indexOf('--findings') + 1]; +const DRY_RUN = args.includes('--dry-run'); +const MAX_INLINE_COMMENTS = 25; + +const API_URL = process.env.GITHUB_API_URL ?? 'https://api.github.com'; +const REPOSITORY = process.env.GITHUB_REPOSITORY; +const PR_NUMBER = process.env.PR_NUMBER; +const HEAD_SHA = process.env.HEAD_SHA; +const HEAD_REF = process.env.HEAD_REF; + +// Link to the PR branch, not the commit, so GitHub's edit button works from it +const ALLOW_LIST_LINK = `[\`cspell-allow-list.txt\`](https://github.com/${REPOSITORY}/blob/${HEAD_REF}/cspell-allow-list.txt)`; + +const SUMMARY_MARKER = ''; +const INLINE_MARKER = '/)?.[1]; + return word && findingKey({file: comment.path, line: comment.line, word}); +} + +// CSpell suggests case-insensitively, so prefer a suggestion whose first +// letter matches the case of the flagged word. +function bestSuggestion({word, suggestions}) { + const isUpper = letter => letter === letter.toUpperCase(); + return ( + suggestions.find( + suggestion => isUpper(suggestion[0]) === isUpper(word[0]) + ) ?? suggestions[0] + ); +} + +// One GitHub suggestion block with an apply button. A four-backtick fence so +// lines containing ``` cannot break out of the block. +function suggestionBlock(finding) { + const suggestion = bestSuggestion(finding); + if (!suggestion) { + return []; + } + const {text, column, word} = finding; + const start = column - 1; + return [ + `Did you mean \`${suggestion}\`?`, + '', + '````suggestion', + text.slice(0, start) + suggestion + text.slice(start + word.length), + '````', + '' + ]; +} + +function inlineBody(finding) { + return [ + `${INLINE_MARKER} ${finding.word} -->`, + `\`${finding.word}\` is not in the dictionary.`, + '', + ...suggestionBlock(finding), + `Please correct the spelling, or add the word to ${ALLOW_LIST_LINK} if it is correct.` + ].join('\n'); +} + +function reviewBody(shown, total) { + const summary = `CSpell found ${total} spelling error(s) on lines added by this PR. Please correct them, or add them to ${ALLOW_LIST_LINK} if they are correct.`; + return shown < total + ? `${summary} The first ${shown} are commented inline; the summary comment lists them all.` + : summary; +} + +async function syncInlineComments(findings) { + const wanted = new Map( + findings.map(finding => [findingKey(finding), finding]) + ); + const comments = await githubList( + `/repos/${REPOSITORY}/pulls/${PR_NUMBER}/comments` + ); + + for (const comment of comments) { + const key = existingCommentKey(comment); + if (!key) { + continue; + } + if (wanted.has(key)) { + wanted.delete(key); + } else { + await githubWrite( + 'DELETE', + `/repos/${REPOSITORY}/pulls/comments/${comment.id}` + ); + } + } + + const fresh = [...wanted.values()]; + if (fresh.length === 0) { + return; + } + const shown = fresh.slice(0, MAX_INLINE_COMMENTS); + await githubWrite( + 'POST', + `/repos/${REPOSITORY}/pulls/${PR_NUMBER}/reviews`, + { + commit_id: HEAD_SHA, + event: 'COMMENT', + body: reviewBody(shown.length, fresh.length), + comments: shown.map(finding => ({ + path: finding.file, + line: finding.line, + side: 'RIGHT', + body: inlineBody(finding) + })) + } + ); +} + +async function main() { + for (const name of [ + 'GH_TOKEN', + 'GITHUB_REPOSITORY', + 'PR_NUMBER', + 'HEAD_SHA', + 'HEAD_REF' + ]) { + if (!process.env[name]) { + throw new Error(`Missing required environment variable ${name}`); + } + } + if (!FINDINGS_FILE) { + throw new Error('Missing required --findings '); + } + + const findings = JSON.parse(readFileSync(FINDINGS_FILE, 'utf8')); + console.log(`${findings.length} finding(s) to report`); + await upsertSummaryComment(findings); + await syncInlineComments(findings); +} + +main().catch(error => { + console.error(error); + process.exit(2); +}); diff --git a/src/data/redirects.ts b/src/data/redirects.ts index e480a4195..c1a548241 100644 --- a/src/data/redirects.ts +++ b/src/data/redirects.ts @@ -1670,6 +1670,7 @@ const redirectsData = [ '/cody/embeddings/usage-and-limits#configure-global-policy-match-limit' }, { + // cspell:disable-next-line source: '/cody/explanations/code_graph_context#limitting-the-number-of-embeddings-that-can-be-generated', destination: '/cody/embeddings/usage-and-limits#limit-the-number-of-embeddings-that-can-be-generated' @@ -3771,6 +3772,7 @@ const redirectsData = [ '/cody/embeddings/usage-and-limits#configure-global-policy-match-limit' }, { + // cspell:disable-next-line source: '/cody/explanations/code_graph_context#limitting-the-number-of-embeddings-that-can-be-generated', destination: '/cody/embeddings/usage-and-limits#limit-the-number-of-embeddings-that-can-be-generated' From 9be5abc48593aef966fc7eea695268944e2d428c Mon Sep 17 00:00:00 2001 From: Marc <7050295+marcleblanc2@users.noreply.github.com> Date: Thu, 10 Sep 2026 19:59:07 -0600 Subject: [PATCH 198/217] fix/spelling: Fix remaining spelling errors found in CSpell dictionary (#1873) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Linear [FE-499: Fix doc site issues](https://linear.app/sourcegraph/issue/FE-499/fix-doc-site-issues) ## Summary Follow-up to #1855. While reviewing the ~1100-word dictionary in #1853 for misspellings, these five were the only ones still present in non-generated docs: - `$LINTER_ERRROS` → `$LINTER_ERRORS` in the batch spec templating example (the step's `env` defines `LINTER_ERRORS`, so the example was referencing an unset variable) - `gorelaserConfig` → `goreleaserConfig` - ````sguqery` → ````sgquery` code fence language (2 occurrences) - `lobal` → `Global` in an image alt text - `imedout` → `timedout` in the `src search -get-curl` GraphQL example (moved here from #1853) All other misspellings in the dictionary were either already fixed by #1855 or appear only in generated files that CSpell ignores (`docs/technical-changelog.mdx`, observability alerts/dashboards). Also moved from #1853: seven example placeholders that CSpell flagged as gibberish (a fake commit hash, tmp filename, pod name, TLS cert blobs, an ARN, and base64 IDs), replaced with realistic-looking placeholders that pass the check. #1853 will drop these words from `cspell-allow-list.txt`. ## Verification - `git diff --check` - `rg` for each fixed word returns no hits outside generated files ## Amp threads - [Clean cspell dictionary](https://ampcode.com/threads/T-01a07e67-73b3-779f-8880-7ba770fe7ade) --------- Co-authored-by: Amp --- docs/admin/config/batch-changes.mdx | 6 +++--- docs/batch-changes/batch-spec-templating.mdx | 4 ++-- docs/batch-changes/troubleshooting.mdx | 2 +- docs/cli/explanations/env.mdx | 2 +- .../references/search-aggregations-use-cases.mdx | 4 ++-- docs/code-monitoring/index.mdx | 4 ++-- docs/code-navigation/auto-indexing.mdx | 2 +- docs/code-search/compare-file-filtering.mdx | 2 +- docs/cody/enterprise/model-config-examples.mdx | 2 +- docs/self-hosted/advanced-config-file.mdx | 2 +- docs/self-hosted/deploy/kubernetes/index.mdx | 8 ++++---- 11 files changed, 19 insertions(+), 19 deletions(-) diff --git a/docs/admin/config/batch-changes.mdx b/docs/admin/config/batch-changes.mdx index f87655a59..442da3d67 100644 --- a/docs/admin/config/batch-changes.mdx +++ b/docs/admin/config/batch-changes.mdx @@ -369,11 +369,11 @@ createBatchSpecLibraryRecord(name: "example", spec: "version: 2\nname: example") id } -updateBatchSpecLibraryRecord(id: "QmF0Y2hTcGVjTGlicmFyeVJlY29yZDo4", name: "example-2", spec: "version: 2\nname: example-2") { +updateBatchSpecLibraryRecord(id: "QmF0Y2hTcGVjTGlicmFyeVJlY29yZDoxMA==", name: "example-2", spec: "version: 2\nname: example-2") { id } -deleteBatchSpecLibraryRecord(id: "QmF0Y2hTcGVjTGlicmFyeVJlY29yZDo4") { +deleteBatchSpecLibraryRecord(id: "QmF0Y2hTcGVjTGlicmFyeVJlY29yZDoxMA==") { alwaysNil } @@ -403,7 +403,7 @@ createBatchSpecLibraryRecord(name: "example", spec: "version: 2\nname: example", labels } -updateBatchSpecLibraryRecord(id: "QmF0Y2hTcGVjTGlicmFyeVJlY29yZDo4", name: "example-2", spec: "version: 2\nname: example-2", labels: ["featured"]) { +updateBatchSpecLibraryRecord(id: "QmF0Y2hTcGVjTGlicmFyeVJlY29yZDoxMA==", name: "example-2", spec: "version: 2\nname: example-2", labels: ["featured"]) { id labels } diff --git a/docs/batch-changes/batch-spec-templating.mdx b/docs/batch-changes/batch-spec-templating.mdx index 09c6e3fe7..c0cec5a32 100644 --- a/docs/batch-changes/batch-spec-templating.mdx +++ b/docs/batch-changes/batch-spec-templating.mdx @@ -179,7 +179,7 @@ Put information in environment variables, based on the output of previous step ` ```yaml steps: - - run: echo $LINTER_ERRROS >> linter_errors.txt + - run: echo $LINTER_ERRORS >> linter_errors.txt container: alpine:3 env: LINTER_ERRORS: ${{ previous_step.stdout }} @@ -240,7 +240,7 @@ changesetTemplate: # Since templating fields use Go's `text/template` and `goreleaserConfig` was # parsed as YAML we can iterate over every field: body: | - This repository has a `gorelaserConfig`: ${{ outputs.goreleaserConfigExists.exists }}. + This repository has a `goreleaserConfig`: ${{ outputs.goreleaserConfigExists.exists }}. The `goreleaser.yml` defines the following `before.hooks`: diff --git a/docs/batch-changes/troubleshooting.mdx b/docs/batch-changes/troubleshooting.mdx index f87b6d79d..69c3981d2 100644 --- a/docs/batch-changes/troubleshooting.mdx +++ b/docs/batch-changes/troubleshooting.mdx @@ -151,7 +151,7 @@ Make sure that you put your `steps.run` command in `/tmp-script` (or any other l If executing the `steps` in the batch spec fails with a message that looks similar to this one (i.e., permission error). ```bash -/bin/sh: can't open '/tmp/tmp.IbdkiA': Permission denied +/bin/sh: can't open '/tmp/tmp.X9k2Tq': Permission denied ``` Or if you are in a locked-down environment, it's possible that Docker bind mounts won't work. diff --git a/docs/cli/explanations/env.mdx b/docs/cli/explanations/env.mdx index 574ed609c..3e8add5bd 100644 --- a/docs/cli/explanations/env.mdx +++ b/docs/cli/explanations/env.mdx @@ -93,6 +93,6 @@ src search -get-curl 'repogroup:swarm' curl \ -H 'Authorization: token ' \ -H 'authorization: Bearer What did the judge say to the dentist? Do you swear to pull the tooth, the whole tooth and nothing but the tooth?' \ - -d '{"query":"fragment FileMatchFields on FileMatch {\n\t\t\t\trepository {\n\t\t\t\t\tname\n\t\t\t\t\turl\n\t\t\t\t}\n\t\t\t\tfile {\n\t\t\t\t\tname\n\t\t\t\t\tpath\n\t\t\t\t\turl\n\t\t\t\t\tcontent\n\t\t\t\t\tcommit {\n\t\t\t\t\t\toid\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tlineMatches {\n\t\t\t\t\tpreview\n\t\t\t\t\tlineNumber\n\t\t\t\t\toffsetAndLengths\n\t\t\t\t\tlimitHit\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfragment CommitSearchResultFields on CommitSearchResult {\n\t\t\t\tmessagePreview {\n\t\t\t\t\tvalue\n\t\t\t\t\thighlights{\n\t\t\t\t\t\tline\n\t\t\t\t\t\tcharacter\n\t\t\t\t\t\tlength\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tdiffPreview {\n\t\t\t\t\tvalue\n\t\t\t\t\thighlights {\n\t\t\t\t\t\tline\n\t\t\t\t\t\tcharacter\n\t\t\t\t\t\tlength\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tlabel {\n\t\t\t\t\thtml\n\t\t\t\t}\n\t\t\t\turl\n\t\t\t\tmatches {\n\t\t\t\t\turl\n\t\t\t\t\tbody {\n\t\t\t\t\t\thtml\n\t\t\t\t\t\ttext\n\t\t\t\t\t}\n\t\t\t\t\thighlights {\n\t\t\t\t\t\tcharacter\n\t\t\t\t\t\tline\n\t\t\t\t\t\tlength\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tcommit {\n\t\t\t\t\trepository {\n\t\t\t\t\t\tname\n\t\t\t\t\t}\n\t\t\t\t\toid\n\t\t\t\t\turl\n\t\t\t\t\tsubject\n\t\t\t\t\tauthor {\n\t\t\t\t\t\tdate\n\t\t\t\t\t\tperson {\n\t\t\t\t\t\t\tdisplayName\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t fragment RepositoryFields on Repository {\n\t\t\tname\n\t\t\turl\n\t\t\texternalURLs {\n\t\t\t serviceType\n\t\t\t url\n\t\t\t}\n\t\t\tlabel {\n\t\t\t\thtml\n\t\t\t}\n\t\t }\n\n\t\t query ($query: String!) {\n\t\t\tsite {\n\t\t\t\tbuildVersion\n\t\t\t}\n\t\t\tsearch(query: $query) {\n\t\t\t results {\n\t\t\t\tresults{\n\t\t\t\t __typename\n\t\t\t\t ... on FileMatch {\n\t\t\t\t\t...FileMatchFields\n\t\t\t\t }\n\t\t\t\t ... on CommitSearchResult {\n\t\t\t\t\t...CommitSearchResultFields\n\t\t\t\t }\n\t\t\t\t ... on Repository {\n\t\t\t\t\t...RepositoryFields\n\t\t\t\t }\n\t\t\t\t}\n\t\t\t\tlimitHit\n\t\t\t\tcloning {\n\t\t\t\t name\n\t\t\t\t}\n\t\t\t\tmissing {\n\t\t\t\t name\n\t\t\t\t}\n\t\t\t\timedout {\n\t\t\t\t name\n\t\t\t\t}\n\t\t\t\tmatchCount\n\t\t\t\telapsedMilliseconds\n\t\t\t\t...SearchResultsAlertFields\n\t\t\t }\n\t\t\t}\n\t\t }\n\t\t\n\tfragment SearchResultsAlertFields on SearchResults {\n\t\talert {\n\t\t\ttitle\n\t\t\tdescription\n\t\t\tproposedQueries {\n\t\t\t\tdescription\n\t\t\t\tquery\n\t\t\t}\n\t\t}\n\t}\n","variables":{"query":"repogroup:swarm"}}' \ + -d '{"query":"fragment FileMatchFields on FileMatch {\n\t\t\t\trepository {\n\t\t\t\t\tname\n\t\t\t\t\turl\n\t\t\t\t}\n\t\t\t\tfile {\n\t\t\t\t\tname\n\t\t\t\t\tpath\n\t\t\t\t\turl\n\t\t\t\t\tcontent\n\t\t\t\t\tcommit {\n\t\t\t\t\t\toid\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tlineMatches {\n\t\t\t\t\tpreview\n\t\t\t\t\tlineNumber\n\t\t\t\t\toffsetAndLengths\n\t\t\t\t\tlimitHit\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfragment CommitSearchResultFields on CommitSearchResult {\n\t\t\t\tmessagePreview {\n\t\t\t\t\tvalue\n\t\t\t\t\thighlights{\n\t\t\t\t\t\tline\n\t\t\t\t\t\tcharacter\n\t\t\t\t\t\tlength\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tdiffPreview {\n\t\t\t\t\tvalue\n\t\t\t\t\thighlights {\n\t\t\t\t\t\tline\n\t\t\t\t\t\tcharacter\n\t\t\t\t\t\tlength\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tlabel {\n\t\t\t\t\thtml\n\t\t\t\t}\n\t\t\t\turl\n\t\t\t\tmatches {\n\t\t\t\t\turl\n\t\t\t\t\tbody {\n\t\t\t\t\t\thtml\n\t\t\t\t\t\ttext\n\t\t\t\t\t}\n\t\t\t\t\thighlights {\n\t\t\t\t\t\tcharacter\n\t\t\t\t\t\tline\n\t\t\t\t\t\tlength\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tcommit {\n\t\t\t\t\trepository {\n\t\t\t\t\t\tname\n\t\t\t\t\t}\n\t\t\t\t\toid\n\t\t\t\t\turl\n\t\t\t\t\tsubject\n\t\t\t\t\tauthor {\n\t\t\t\t\t\tdate\n\t\t\t\t\t\tperson {\n\t\t\t\t\t\t\tdisplayName\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t fragment RepositoryFields on Repository {\n\t\t\tname\n\t\t\turl\n\t\t\texternalURLs {\n\t\t\t serviceType\n\t\t\t url\n\t\t\t}\n\t\t\tlabel {\n\t\t\t\thtml\n\t\t\t}\n\t\t }\n\n\t\t query ($query: String!) {\n\t\t\tsite {\n\t\t\t\tbuildVersion\n\t\t\t}\n\t\t\tsearch(query: $query) {\n\t\t\t results {\n\t\t\t\tresults{\n\t\t\t\t __typename\n\t\t\t\t ... on FileMatch {\n\t\t\t\t\t...FileMatchFields\n\t\t\t\t }\n\t\t\t\t ... on CommitSearchResult {\n\t\t\t\t\t...CommitSearchResultFields\n\t\t\t\t }\n\t\t\t\t ... on Repository {\n\t\t\t\t\t...RepositoryFields\n\t\t\t\t }\n\t\t\t\t}\n\t\t\t\tlimitHit\n\t\t\t\tcloning {\n\t\t\t\t name\n\t\t\t\t}\n\t\t\t\tmissing {\n\t\t\t\t name\n\t\t\t\t}\n\t\t\t\ttimedout {\n\t\t\t\t name\n\t\t\t\t}\n\t\t\t\tmatchCount\n\t\t\t\telapsedMilliseconds\n\t\t\t\t...SearchResultsAlertFields\n\t\t\t }\n\t\t\t}\n\t\t }\n\t\t\n\tfragment SearchResultsAlertFields on SearchResults {\n\t\talert {\n\t\t\ttitle\n\t\t\tdescription\n\t\t\tproposedQueries {\n\t\t\t\tdescription\n\t\t\t\tquery\n\t\t\t}\n\t\t}\n\t}\n","variables":{"query":"repogroup:swarm"}}' \ https://cse-k8s.sgdev.org/.api/graphql ``` diff --git a/docs/code-insights/references/search-aggregations-use-cases.mdx b/docs/code-insights/references/search-aggregations-use-cases.mdx index a5be72370..0aa10928e 100644 --- a/docs/code-insights/references/search-aggregations-use-cases.mdx +++ b/docs/code-insights/references/search-aggregations-use-cases.mdx @@ -24,7 +24,7 @@ file:package.json /"license":\s(.*),/ See which repositories import a library (group by repository) -```sguqery +```sgquery from '@sourcegraph/wildcard' ``` @@ -84,7 +84,7 @@ See all your tracer calls to track the growth of, or minimize spend on, tools li See which repositories import a library -```sguqery +```sgquery /from\s'\@sourcegraph\/wildcard/ ``` diff --git a/docs/code-monitoring/index.mdx b/docs/code-monitoring/index.mdx index c811b4faf..9e98b3d4d 100644 --- a/docs/code-monitoring/index.mdx +++ b/docs/code-monitoring/index.mdx @@ -145,7 +145,7 @@ The HTTP POST request sent to the receiver will have a JSON-encoded body with th "results": [ { "repository": "github.com/test/test", - "commit": "7815187511872asbasdfgasd", + "commit": "7815187511872f3a6c9e0b4d2a8f1c5e7b9d3a01", "diff": "file1.go file2.go\n@ -97,5 +97,5 @ func Test() {\n leading context\n+matched added\n-matched removed\n trailing context\n", "matchedDiffRanges": [ [66, 73], @@ -154,7 +154,7 @@ The HTTP POST request sent to the receiver will have a JSON-encoded body with th }, { "repository": "github.com/test/test", - "commit": "7815187511872asbasdfgasd", + "commit": "7815187511872f3a6c9e0b4d2a8f1c5e7b9d3a01", "message": "summary line\n\nsample\ncommit\nmessage\n", "matchedMessageRanges": [[15, 19]] } diff --git a/docs/code-navigation/auto-indexing.mdx b/docs/code-navigation/auto-indexing.mdx index 25647f9c8..2a2fe0b28 100644 --- a/docs/code-navigation/auto-indexing.mdx +++ b/docs/code-navigation/auto-indexing.mdx @@ -86,7 +86,7 @@ New policies can also be created to apply to the HEAD of the default branch, or ![Global auto-indexing policy configuration edit page](https://storage.googleapis.com/sourcegraph-assets/docs/images/code-intelligence/renamed/global-create-indexing.png) -![lobal auto-indexing policy configuration created confirmation](https://storage.googleapis.com/sourcegraph-assets/docs/images/code-intelligence/renamed/post-create.png) +![Global auto-indexing policy configuration created confirmation](https://storage.googleapis.com/sourcegraph-assets/docs/images/code-intelligence/renamed/post-create.png) New policies can be created to apply to a set of repositories that are matched by name. For example, you may want to enable indexing for a particular set of repositories (in this example, repositories in the `sourcegraph` organization). diff --git a/docs/code-search/compare-file-filtering.mdx b/docs/code-search/compare-file-filtering.mdx index c49056d4f..b456b213c 100644 --- a/docs/code-search/compare-file-filtering.mdx +++ b/docs/code-search/compare-file-filtering.mdx @@ -114,7 +114,7 @@ The file filtering system uses a specialized file metadata query that is faster 3. Use a compressed file list for many files: ```bash - ?compressedFileList=H4sIAAAAAAAAA2NgYGBg... + ?compressedFileList=eJwrLkrW... ``` This flexible filtering system allows you to create customized views of repository comparisons, making reviewing changes in large projects easier. diff --git a/docs/cody/enterprise/model-config-examples.mdx b/docs/cody/enterprise/model-config-examples.mdx index 3a4735f69..3d51f7ead 100644 --- a/docs/cody/enterprise/model-config-examples.mdx +++ b/docs/cody/enterprise/model-config-examples.mdx @@ -696,7 +696,7 @@ In the configuration above, "modelName": "anthropic.claude-3-7-sonnet-20250219-v1:0", "serverSideConfig": { "type": "awsBedrockProvisionedThroughput", - "arn": "" // e.g., arn:aws:bedrock:us-west-2:537452198621:provisioned-model/57z3lgkt1cx2 + "arn": "" // e.g., arn:aws:bedrock:us-west-2:537452198621:provisioned-model/2k4z7m9x3q8t }, "contextWindow": { "maxInputTokens": 132000, diff --git a/docs/self-hosted/advanced-config-file.mdx b/docs/self-hosted/advanced-config-file.mdx index 010ef7fa5..6a88d343b 100644 --- a/docs/self-hosted/advanced-config-file.mdx +++ b/docs/self-hosted/advanced-config-file.mdx @@ -241,7 +241,7 @@ And similarly under the `volume` section: Now upon re-running `kubectl-apply-all.sh` Kubernetes should mount your `ConfigMap` into the container as files on disk and you should see them: ``` -$ kubectl exec -it sourcegraph-frontend-57dcb4d7db-6bclj -- ls /mnt/ +$ kubectl exec -it sourcegraph-frontend-57dcb4d7db-9tk4z -- ls /mnt/ global-settings.json extsvc.json site.json diff --git a/docs/self-hosted/deploy/kubernetes/index.mdx b/docs/self-hosted/deploy/kubernetes/index.mdx index a517c408d..433bdc8fb 100644 --- a/docs/self-hosted/deploy/kubernetes/index.mdx +++ b/docs/self-hosted/deploy/kubernetes/index.mdx @@ -586,9 +586,9 @@ type: kubernetes.io/tls data: # the data is abbreviated in this example tls.crt: | - MIIC2DCCAcCgAwIBAgIBATANBgkqh ... + LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCg== ... tls.key: | - MIIEpgIBAAKCAQEA7yn3bRHQ5FHMQ ... + LS0tLS1CRUdJTiBSU0EgUFJJVkFURSBLRVktLS0tLQo= ... ``` ```sh @@ -912,9 +912,9 @@ type: kubernetes.io/tls data: # the data is abbreviated in this example tls.crt: | - MIIC2DCCAcCgAwIBAgIBATANBgkqh ... + LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCg== ... tls.key: | - MIIEpgIBAAKCAQEA7yn3bRHQ5FHMQ ... + LS0tLS1CRUdJTiBSU0EgUFJJVkFURSBLRVktLS0tLQo= ... ``` ```sh From 62afa3782379d49dd38d53777644450de55cfcd5 Mon Sep 17 00:00:00 2001 From: Marc <7050295+marcleblanc2@users.noreply.github.com> Date: Thu, 10 Sep 2026 20:02:52 -0600 Subject: [PATCH 199/217] docs/migrator: Update schema-drift page with current migrator output (#1885) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## Summary Brings `docs/self-hosted/updates/migrator/schema-drift.mdx` in line with what `migrator` prints today (`internal/database/migration/drift/` and `lib/output/emoji.go` in sourcegraph/sourcegraph). **Removed** the `lsif_data_docs_search_private_delete` example: - The drift it shows cannot be reported anymore. Since sourcegraph/sourcegraph@f9b273e2b021f33179ee300fb929cb752c26c7df (#51237, May 2023) `normalizeFunction` collapses all whitespace in function definitions before comparison, so a space-vs-newline difference is no longer drift. - Its pasted `cmp.Diff` output was hard-wrapped mid-token (`$functio"` / `"n$`), which is also what produced the `functio` fragment in the spellcheck word list. **Refreshed** the remaining examples: - `EmojiFailure` is now ` ⨯` (was `❌`); the migrator banner uses `✱`. - Column drift with a targeted fix says `Suggested action: alter the column.` and prints only the `ALTER` statement, no go-cmp struct diff (`compare_columns.go` + `ColumnDescription.AlterToTarget`). The old `change the column nullability constraint` and `replace the function definition` wordings were dropped in sourcegraph/sourcegraph@5fbbcdafd46cda11da80dcc120d0f2a39e2be84d (#50207). - The drift command prints one ` ⨯ Drift detected!` preamble before the summaries (`drift/util.go`). - The upgrade-time hint now ends with the docs link migrator actually prints (`multiversion/drift.go`). - Unwrapped the hard-wrapped SQL so statements match migrator output. ## Test plan - Compared each line against the current source files named above. - Page reads cleanly: the "Then check the database again..." paragraph flows straight into the support / `-skip-drift-check` paragraph. ## Amp threads - [Drop old migrator example](https://ampcode.com/threads/T-01a08426-e0ec-71d9-a4b9-bcf3deaa2890) --------- Co-authored-by: Amp --- .../updates/migrator/schema-drift.mdx | 67 +++---------------- 1 file changed, 10 insertions(+), 57 deletions(-) diff --git a/docs/self-hosted/updates/migrator/schema-drift.mdx b/docs/self-hosted/updates/migrator/schema-drift.mdx index cba2fc882..34abbdab2 100644 --- a/docs/self-hosted/updates/migrator/schema-drift.mdx +++ b/docs/self-hosted/updates/migrator/schema-drift.mdx @@ -5,9 +5,9 @@ During an upgrade you may run into the following message. ``` -* Sourcegraph migrator v4.1.3 -❌ Schema drift detected for frontend -💡 Before continuing with this operation, run the migrator's drift command and follow instructions to repair the schema to the expected current state. +✱ Sourcegraph migrator 7.7.359 + ⨯ Schema drift detected for frontend +💡 Before continuing with this operation, run the migrator's drift command and follow instructions to repair the schema to the expected current state. See https://sourcegraph.com/docs/admin/updates/migrator/schema-drift for additional instructions. ``` This error indicates that `migrator` has detected some difference between the state of the schema in your database and the expected schema for the database in the `-from` or current version of your Sourcegraph instance. @@ -15,32 +15,15 @@ This error indicates that `migrator` has detected some difference between the st When the schema [drift](/self-hosted/updates/migrator/migrator-operations#drift) command is run you'll see a set of diffs representing the areas where your instance schema has diverged from the expected state as well as the SQL operations to fix these examples of drift. For example: ``` -❌ Missing index "external_service_repos"."external_service_repos_repo_id_external_service_id_unique" -💡 Suggested action: define the index. - -ALTER TABLE external_service_repos ADD CONSTRAINT -external_service_repos_repo_id_external_service_id_unique UNIQUE -(repo_id, external_service_id); -``` - -``` -❌ Unexpected properties of column "batch_spec_resolution_jobs"."batch_spec_id" - -schemas.ColumnDescription{ - Name: "batch_spec_id", - Index: -1, - TypeName: "integer", -- IsNullable: false, -+ IsNullable: true, - Default: "", - CharacterMaximumLength: 0, - ... // 5 identical fields - } + ⨯ Drift detected! -💡 Suggested action: change the column nullability constraint. + ⨯ Missing index "external_service_repos"."external_service_repos_repo_id_external_service_id_unique" +💡 Suggested action: define the index. +ALTER TABLE external_service_repos ADD CONSTRAINT external_service_repos_repo_id_external_service_id_unique UNIQUE (repo_id, external_service_id); -ALTER TABLE batch_spec_resolution_jobs ALTER COLUMN -batch_spec_id SET NOT NULL; + ⨯ Unexpected properties of column batch_spec_resolution_jobs."batch_spec_id" +💡 Suggested action: alter the column. +ALTER TABLE batch_spec_resolution_jobs ALTER COLUMN batch_spec_id SET NOT NULL; ``` To correct these errors in the database run the suggested SQL queries via `psql` in internal databases, or via the tools provided by your cloud database provider. @@ -59,34 +42,4 @@ kubectl -n ns-sourcegraph exec -it pgsql -- psql -U sg -c 'ALTER TABLE external_ Then check the database again with the `drift` command and proceed with your multiversion upgrade. -> Note: It is possible for the drift command to detect diffs which will not prevent upgrades. For example the following drift output picked up formatting differences `\n` vs `""`: - -``` -❌ Unexpected definition of function "lsif_data_docs_search_private_delete" -strings.Join({ - "CREATE OR REPLACE FUNCTION -public.lsif_data_docs_search_private_", - "delete()\n RETURNS trigger\n LANGUAGE plpgsql\nAS -$function$\nBEGIN\n", - "UPDATE lsif_data_apidocs_num_search_results_private SET -count =", -- " ", -+ "\n", - "count - (select count(*) from oldtbl);\nRETURN NULL;\nEND -$functio", - "n$\n", - }, "") -💡 Suggested action: replace the function definition. -CREATE OR REPLACE FUNCTION -public.lsif_data_docs_search_private_delete() - RETURNS trigger - LANGUAGE plpgsql -AS $function$ -BEGIN -UPDATE lsif_data_apidocs_num_search_results_private SET count = -count - (select count(*) from oldtbl); -RETURN NULL; -END $function$; -``` - If migrator drift suggests SQL queries which don't make sense please report to support@sourcegraph.com. You may proceed with a migrator `upgrade` command using the `-skip-drift-check=true` flag. From 2f8832aa8fa6976f8dc490dd2716fed5cb39ff25 Mon Sep 17 00:00:00 2001 From: Marc <7050295+marcleblanc2@users.noreply.github.com> Date: Thu, 10 Sep 2026 20:05:46 -0600 Subject: [PATCH 200/217] docs/cli: Remove doc pages for removed src-cli commands (#1886) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## Why The docs sync from `sourcegraph/sourcegraph` ([`doc/_generated.push.sh`](https://github.com/sourcegraph/sourcegraph/blob/main/doc/_generated.push.sh)) does `cp -R -L doc/cli/** _clone/docs/cli/` — it only adds and updates pages, never deletes. So when a command is removed from src-cli, its reference page lingers here forever. Replaying the sync against `main` shows zero drift in the 62 generated pages, but 36 files under `docs/cli/references/` are never written by it. This PR deletes the 28 that are stale. No redirects are added; none of these pages are linked from anywhere in the site. ## Removed (28 files) **Command removed from src-cli** | Pages | Removal | |---|---| | `extensions/{index,copy,delete,get,list,publish}` | sourcegraph/src-cli#1173 (extensions platform sunset) | | `lsif` | sourcegraph/src-cli#1147 (→ `src code-intel upload`) | | `scout` | sourcegraph/src-cli#1196 | | `sbom`, `signature` | sourcegraph/src-cli#1273 (SBOMs/signatures no longer published as of 7.0.2852; the how-tos already carry deprecation notices) | | `admin` | sourcegraph/src-cli#1309 (built for the appliance, which never launched) | | `validate` | sourcegraph/src-cli#1310 | **Command never shipped** `prompts` + 13 subcommand pages (#1155) documented sourcegraph/src-cli#1168, which was closed unmerged. **Stale duplicates shadowing generated pages** `auth.mdx` and `codeowners.mdx` collide with `auth/index.mdx` / `codeowners/index.mdx`: contentlayer flattens both to `cli/references/auth`, and `allPosts.find` returned the stale flat file. After this change `/cli/references/auth` and `/cli/references/codeowners` render the generated group pages (verified with `contentlayer build`). ## Kept `search-jobs/{cancel,create,delete,get,list,logs,restart,results}` — the subcommands exist, but `src doc` only emits a single `search-jobs.md` because `searchJobsCommands` isn't in the `commanders` map in [`cmd/src/doc.go`](https://github.com/sourcegraph/src-cli/blob/main/cmd/src/doc.go#L59-L66). Fix belongs upstream. ## Verification - `npx tsc --noEmit` passes - `npx contentlayer build` generates 493 docs; `cli/references/auth` and `cli/references/codeowners` now resolve to the `index.mdx` files - No remaining links to the deleted slugs anywhere in `docs/` or `src/` ## Follow-up (upstream) To stop this recurring, `_generated.push.sh` should mirror `docs/cli/references/` (delete-then-copy) instead of copying over it. Done in sourcegraph/sourcegraph#15529 (merge after sourcegraph/sourcegraph#15528 and #1889). ## Amp threads - [Stale command docs](https://ampcode.com/threads/T-01a08410-86ca-72be-9928-2810e837fae1) Co-authored-by: Amp --- docs/cli/references/admin.mdx | 22 ------ docs/cli/references/auth.mdx | 22 ------ docs/cli/references/codeowners.mdx | 25 ------- docs/cli/references/extensions/copy.mdx | 40 ---------- docs/cli/references/extensions/delete.mdx | 46 ------------ docs/cli/references/extensions/get.mdx | 46 ------------ docs/cli/references/extensions/index.mdx | 11 --- docs/cli/references/extensions/list.mdx | 56 -------------- docs/cli/references/extensions/publish.mdx | 69 ------------------ docs/cli/references/lsif.mdx | 14 ---- docs/cli/references/prompts.mdx | 40 ---------- docs/cli/references/prompts/create.mdx | 81 --------------------- docs/cli/references/prompts/delete.mdx | 32 -------- docs/cli/references/prompts/export.mdx | 46 ------------ docs/cli/references/prompts/get.mdx | 28 ------- docs/cli/references/prompts/import.mdx | 47 ------------ docs/cli/references/prompts/list.mdx | 79 -------------------- docs/cli/references/prompts/tags.mdx | 31 -------- docs/cli/references/prompts/tags/create.mdx | 38 ---------- docs/cli/references/prompts/tags/delete.mdx | 32 -------- docs/cli/references/prompts/tags/get.mdx | 31 -------- docs/cli/references/prompts/tags/list.mdx | 51 ------------- docs/cli/references/prompts/tags/update.mdx | 35 --------- docs/cli/references/prompts/update.mdx | 69 ------------------ docs/cli/references/sbom.mdx | 20 ----- docs/cli/references/scout.mdx | 27 ------- docs/cli/references/signature.mdx | 20 ----- docs/cli/references/validate.mdx | 27 ------- 28 files changed, 1085 deletions(-) delete mode 100644 docs/cli/references/admin.mdx delete mode 100644 docs/cli/references/auth.mdx delete mode 100644 docs/cli/references/codeowners.mdx delete mode 100644 docs/cli/references/extensions/copy.mdx delete mode 100644 docs/cli/references/extensions/delete.mdx delete mode 100644 docs/cli/references/extensions/get.mdx delete mode 100644 docs/cli/references/extensions/index.mdx delete mode 100644 docs/cli/references/extensions/list.mdx delete mode 100644 docs/cli/references/extensions/publish.mdx delete mode 100644 docs/cli/references/lsif.mdx delete mode 100644 docs/cli/references/prompts.mdx delete mode 100644 docs/cli/references/prompts/create.mdx delete mode 100644 docs/cli/references/prompts/delete.mdx delete mode 100644 docs/cli/references/prompts/export.mdx delete mode 100644 docs/cli/references/prompts/get.mdx delete mode 100644 docs/cli/references/prompts/import.mdx delete mode 100644 docs/cli/references/prompts/list.mdx delete mode 100644 docs/cli/references/prompts/tags.mdx delete mode 100644 docs/cli/references/prompts/tags/create.mdx delete mode 100644 docs/cli/references/prompts/tags/delete.mdx delete mode 100644 docs/cli/references/prompts/tags/get.mdx delete mode 100644 docs/cli/references/prompts/tags/list.mdx delete mode 100644 docs/cli/references/prompts/tags/update.mdx delete mode 100644 docs/cli/references/prompts/update.mdx delete mode 100644 docs/cli/references/sbom.mdx delete mode 100644 docs/cli/references/scout.mdx delete mode 100644 docs/cli/references/signature.mdx delete mode 100644 docs/cli/references/validate.mdx diff --git a/docs/cli/references/admin.mdx b/docs/cli/references/admin.mdx deleted file mode 100644 index 54d7a2ee9..000000000 --- a/docs/cli/references/admin.mdx +++ /dev/null @@ -1,22 +0,0 @@ -# `src admin` - - - -## Usage - -``` -'src admin' is a tool that manages an initial admin user on a new Sourcegraph instance. - -Usage: - - src admin create [command options] - -The commands are: - - create create an initial admin user - -Use "src admin [command] -h" for more information about a command. - - -``` - \ No newline at end of file diff --git a/docs/cli/references/auth.mdx b/docs/cli/references/auth.mdx deleted file mode 100644 index eb5d3834e..000000000 --- a/docs/cli/references/auth.mdx +++ /dev/null @@ -1,22 +0,0 @@ -# `src auth` - - - -## Usage - -``` -'src auth' provides authentication-related helper commands. - -Usage: - - src auth command [command options] - -The commands are: - - token prints the current authentication token - -Use "src auth [command] -h" for more information about a command. - - -``` - \ No newline at end of file diff --git a/docs/cli/references/codeowners.mdx b/docs/cli/references/codeowners.mdx deleted file mode 100644 index 2ef49362e..000000000 --- a/docs/cli/references/codeowners.mdx +++ /dev/null @@ -1,25 +0,0 @@ -# `src codeowners` - - - -## Usage - -``` -'src codeowners' is a tool that manages ingested code ownership data in a Sourcegraph instance. - -Usage: - - src codeowners command [command options] - -The commands are: - - get returns the codeowners file for a repository, if exists - create create a codeowners file - update update a codeowners file - delete delete a codeowners file - -Use "src codeowners [command] -h" for more information about a command. - - -``` - \ No newline at end of file diff --git a/docs/cli/references/extensions/copy.mdx b/docs/cli/references/extensions/copy.mdx deleted file mode 100644 index 069d8d042..000000000 --- a/docs/cli/references/extensions/copy.mdx +++ /dev/null @@ -1,40 +0,0 @@ -# `src extensions copy` - - -## Flags - -| Name | Description | Default Value | -|------|-------------|---------------| -| `-current-user` | The current user | | -| `-dump-requests` | Log GraphQL requests and responses to stdout | `false` | -| `-extension-id` | The <extID> in https://sourcegraph.com/extensions/<extID> (e.g. sourcegraph/java) | | -| `-get-curl` | Print the curl command for executing this query and exit (WARNING: includes printing your access token!) | `false` | -| `-insecure-skip-verify` | Skip validation of TLS certificates against trusted chains | `false` | -| `-trace` | Log the trace ID for requests. See https://docs.sourcegraph.com/admin/observability/tracing | `false` | -| `-user-agent-telemetry` | Include the operating system and architecture in the User-Agent sent with requests to Sourcegraph | `true` | - - -## Usage - -``` -Usage of 'src extensions copy': - -current-user string - The current user - -dump-requests - Log GraphQL requests and responses to stdout - -extension-id string - The in https://sourcegraph.com/extensions/ (e.g. sourcegraph/java) - -get-curl - Print the curl command for executing this query and exit (WARNING: includes printing your access token!) - -insecure-skip-verify - Skip validation of TLS certificates against trusted chains - -trace - Log the trace ID for requests. See https://docs.sourcegraph.com/admin/observability/tracing - -user-agent-telemetry - Include the operating system and architecture in the User-Agent sent with requests to Sourcegraph (default true) - -Copy an extension from Sourcegraph.com to your private registry. - - -``` - \ No newline at end of file diff --git a/docs/cli/references/extensions/delete.mdx b/docs/cli/references/extensions/delete.mdx deleted file mode 100644 index 2222034c8..000000000 --- a/docs/cli/references/extensions/delete.mdx +++ /dev/null @@ -1,46 +0,0 @@ -# `src extensions delete` - - -## Flags - -| Name | Description | Default Value | -|------|-------------|---------------| -| `-dump-requests` | Log GraphQL requests and responses to stdout | `false` | -| `-get-curl` | Print the curl command for executing this query and exit (WARNING: includes printing your access token!) | `false` | -| `-id` | The ID (GraphQL API ID, not extension ID) of the extension to delete. | | -| `-insecure-skip-verify` | Skip validation of TLS certificates against trusted chains | `false` | -| `-trace` | Log the trace ID for requests. See https://docs.sourcegraph.com/admin/observability/tracing | `false` | -| `-user-agent-telemetry` | Include the operating system and architecture in the User-Agent sent with requests to Sourcegraph | `true` | - - -## Usage - -``` -Usage of 'src extensions delete': - -dump-requests - Log GraphQL requests and responses to stdout - -get-curl - Print the curl command for executing this query and exit (WARNING: includes printing your access token!) - -id string - The ID (GraphQL API ID, not extension ID) of the extension to delete. - -insecure-skip-verify - Skip validation of TLS certificates against trusted chains - -trace - Log the trace ID for requests. See https://docs.sourcegraph.com/admin/observability/tracing - -user-agent-telemetry - Include the operating system and architecture in the User-Agent sent with requests to Sourcegraph (default true) - -Examples: - - Delete the extension by ID (GraphQL API ID, not extension ID): - - $ src extensions delete -id=UmVnaXN0cnlFeHRlbnNpb246... - - Delete the extension with extension ID "alice/myextension": - - $ src extensions delete -id=$(src extensions get -f '{{.ID}}' -extension-id=alice/myextension) - - - -``` - \ No newline at end of file diff --git a/docs/cli/references/extensions/get.mdx b/docs/cli/references/extensions/get.mdx deleted file mode 100644 index 935ce9ffd..000000000 --- a/docs/cli/references/extensions/get.mdx +++ /dev/null @@ -1,46 +0,0 @@ -# `src extensions get` - - -## Flags - -| Name | Description | Default Value | -|------|-------------|---------------| -| `-dump-requests` | Log GraphQL requests and responses to stdout | `false` | -| `-extension-id` | Look up extension by extension ID. (e.g. "alice/myextension") | | -| `-f` | Format for the output, using the syntax of Go package text/template. (e.g. "\{\{.ExtensionID\}\}: \{\{.Manifest.Title\}\} (\{\{.RemoteURL\}\})" or "\{\{.\|json\}\}") | `{{.\|json}}` | -| `-get-curl` | Print the curl command for executing this query and exit (WARNING: includes printing your access token!) | `false` | -| `-insecure-skip-verify` | Skip validation of TLS certificates against trusted chains | `false` | -| `-trace` | Log the trace ID for requests. See https://docs.sourcegraph.com/admin/observability/tracing | `false` | -| `-user-agent-telemetry` | Include the operating system and architecture in the User-Agent sent with requests to Sourcegraph | `true` | - - -## Usage - -``` -Usage of 'src extensions get': - -dump-requests - Log GraphQL requests and responses to stdout - -extension-id string - Look up extension by extension ID. (e.g. "alice/myextension") - -f string - Format for the output, using the syntax of Go package text/template. (e.g. "{{.ExtensionID}}: {{.Manifest.Title}} ({{.RemoteURL}})" or "{{.|json}}") (default "{{.|json}}") - -get-curl - Print the curl command for executing this query and exit (WARNING: includes printing your access token!) - -insecure-skip-verify - Skip validation of TLS certificates against trusted chains - -trace - Log the trace ID for requests. See https://docs.sourcegraph.com/admin/observability/tracing - -user-agent-telemetry - Include the operating system and architecture in the User-Agent sent with requests to Sourcegraph (default true) - -Examples: - - Get extension with extension ID "alice/myextension": - - $ src extensions get alice/myextension - $ src extensions get -extension-id=alice/myextension - - - -``` - \ No newline at end of file diff --git a/docs/cli/references/extensions/index.mdx b/docs/cli/references/extensions/index.mdx deleted file mode 100644 index ff9d8ff68..000000000 --- a/docs/cli/references/extensions/index.mdx +++ /dev/null @@ -1,11 +0,0 @@ -# `src extensions` - -## Subcommands - - -* [`copy`](extensions/copy) -* [`delete`](extensions/delete) -* [`get`](extensions/get) -* [`list`](extensions/list) -* [`publish`](extensions/publish) - \ No newline at end of file diff --git a/docs/cli/references/extensions/list.mdx b/docs/cli/references/extensions/list.mdx deleted file mode 100644 index 093295a01..000000000 --- a/docs/cli/references/extensions/list.mdx +++ /dev/null @@ -1,56 +0,0 @@ -# `src extensions list` - - -## Flags - -| Name | Description | Default Value | -|------|-------------|---------------| -| `-dump-requests` | Log GraphQL requests and responses to stdout | `false` | -| `-f` | Format for the output, using the syntax of Go package text/template. (e.g. "\{\{.ExtensionID\}\}: \{\{.Manifest.Description\}\} (\{\{.RemoteURL\}\})" or "\{\{.\|json\}\}") | `{{.ExtensionID}}` | -| `-first` | Returns the first n extensions from the list. (use -1 for unlimited) | `1000` | -| `-get-curl` | Print the curl command for executing this query and exit (WARNING: includes printing your access token!) | `false` | -| `-insecure-skip-verify` | Skip validation of TLS certificates against trusted chains | `false` | -| `-query` | Returns extensions whose extension IDs match the query. (e.g. "myextension") | | -| `-trace` | Log the trace ID for requests. See https://docs.sourcegraph.com/admin/observability/tracing | `false` | -| `-user-agent-telemetry` | Include the operating system and architecture in the User-Agent sent with requests to Sourcegraph | `true` | - - -## Usage - -``` -Usage of 'src extensions list': - -dump-requests - Log GraphQL requests and responses to stdout - -f string - Format for the output, using the syntax of Go package text/template. (e.g. "{{.ExtensionID}}: {{.Manifest.Description}} ({{.RemoteURL}})" or "{{.|json}}") (default "{{.ExtensionID}}") - -first int - Returns the first n extensions from the list. (use -1 for unlimited) (default 1000) - -get-curl - Print the curl command for executing this query and exit (WARNING: includes printing your access token!) - -insecure-skip-verify - Skip validation of TLS certificates against trusted chains - -query string - Returns extensions whose extension IDs match the query. (e.g. "myextension") - -trace - Log the trace ID for requests. See https://docs.sourcegraph.com/admin/observability/tracing - -user-agent-telemetry - Include the operating system and architecture in the User-Agent sent with requests to Sourcegraph (default true) - -Examples: - - List extensions: - - $ src extensions list - - List extensions whose names match the query: - - $ src extensions list -query='myquery' - - List *all* extensions (may be slow!): - - $ src extensions list -first='-1' - - - -``` - \ No newline at end of file diff --git a/docs/cli/references/extensions/publish.mdx b/docs/cli/references/extensions/publish.mdx deleted file mode 100644 index 938695278..000000000 --- a/docs/cli/references/extensions/publish.mdx +++ /dev/null @@ -1,69 +0,0 @@ -# `src extensions publish` - - -## Flags - -| Name | Description | Default Value | -|------|-------------|---------------| -| `-dump-requests` | Log GraphQL requests and responses to stdout | `false` | -| `-extension-id` | Override the extension ID in the manifest. (default: read from -manifest file) | | -| `-force` | Force publish the extension, even if there are validation problems or other warnings. | `false` | -| `-get-curl` | Print the curl command for executing this query and exit (WARNING: includes printing your access token!) | `false` | -| `-git-head` | Override the current git commit for the bundle. (default: uses `git rev-parse head`) | | -| `-insecure-skip-verify` | Skip validation of TLS certificates against trusted chains | `false` | -| `-manifest` | The extension manifest file. | `package.json` | -| `-trace` | Log the trace ID for requests. See https://docs.sourcegraph.com/admin/observability/tracing | `false` | -| `-url` | Override the URL for the bundle. (example: set to http://localhost:1234/myext.js for local dev with parcel) | | -| `-user-agent-telemetry` | Include the operating system and architecture in the User-Agent sent with requests to Sourcegraph | `true` | - - -## Usage - -``` -Usage of 'src extensions publish': - -dump-requests - Log GraphQL requests and responses to stdout - -extension-id string - Override the extension ID in the manifest. (default: read from -manifest file) - -force - Force publish the extension, even if there are validation problems or other warnings. - -get-curl - Print the curl command for executing this query and exit (WARNING: includes printing your access token!) - -git-head git rev-parse head - Override the current git commit for the bundle. (default: uses git rev-parse head) - -insecure-skip-verify - Skip validation of TLS certificates against trusted chains - -manifest string - The extension manifest file. (default "package.json") - -trace - Log the trace ID for requests. See https://docs.sourcegraph.com/admin/observability/tracing - -url string - Override the URL for the bundle. (example: set to http://localhost:1234/myext.js for local dev with parcel) - -user-agent-telemetry - Include the operating system and architecture in the User-Agent sent with requests to Sourcegraph (default true) - -Publish an extension to Sourcegraph, creating it (if necessary). - -Examples: - - Publish the "alice/myextension" extension described by package.json in the current directory: - - $ cat package.json - { - "name": "myextension", - "publisher": "alice", - "title": "My Extension", - "main": "dist/myext.js", - "scripts": {"sourcegraph:prepublish": "parcel build --out-file dist/myext.js src/myext.ts"} - } - $ src extensions publish - -Notes: - - Source maps are supported (for easier debugging of extensions). If the main JavaScript bundle is "dist/myext.js", - it looks for a source map in "dist/myext.map". - - - -``` - \ No newline at end of file diff --git a/docs/cli/references/lsif.mdx b/docs/cli/references/lsif.mdx deleted file mode 100644 index 4a49de9c2..000000000 --- a/docs/cli/references/lsif.mdx +++ /dev/null @@ -1,14 +0,0 @@ -# `src lsif` - - - -## Usage - -``` -[DEPRECATED] 'src lsif' is a tool that manages LSIF data on a Sourcegraph instance. - -Use 'src code-intel' instead. - - -``` - \ No newline at end of file diff --git a/docs/cli/references/prompts.mdx b/docs/cli/references/prompts.mdx deleted file mode 100644 index 0dbcd27c0..000000000 --- a/docs/cli/references/prompts.mdx +++ /dev/null @@ -1,40 +0,0 @@ -# src prompts - -

- `src prompts` is a tool that manages prompt library prompts and tags in a - Sourcegraph instance. -

- -## Usage - -``` -'src prompts' is a tool that manages prompt library prompts and tags in a Sourcegraph instance. - -Usage: - - src prompts command [command options] - -The commands are: - - list lists prompts - get get a prompt by ID - create create a prompt - update update a prompt - delete delete a prompt - export export prompts to a JSON file - import import prompts from a JSON file - tags manage prompt tags (use "src prompts tags [command] -h" for more info) - -Use "src prompts [command] -h" for more information about a command. -``` - -## Sub-commands - -- [list](prompts/list) -- [get](prompts/get) -- [create](prompts/create) -- [update](prompts/update) -- [delete](prompts/delete) -- [export](prompts/export) -- [import](prompts/import) -- [tags](prompts/tags) diff --git a/docs/cli/references/prompts/create.mdx b/docs/cli/references/prompts/create.mdx deleted file mode 100644 index a68d6e23c..000000000 --- a/docs/cli/references/prompts/create.mdx +++ /dev/null @@ -1,81 +0,0 @@ -# src prompts create - -Create a new prompt in your Sourcegraph instance. - -## Usage - -```bash -src prompts create [flags] -``` - -## Examples - -```bash -# Create a basic prompt (uses current user as owner) -src prompts create \ - -name="go-error-handling" \ - -description="Best practices for Go error handling" \ - -content="Write a Go function that properly handles errors..." - -# Create a prompt with tags -src prompts create \ - -name="python-optimization" \ - -description="Python performance optimization tips" \ - -content="Optimize this Python code for better performance..." \ - -tags="UHJvbXB0VGFnOjE=,UHJvbXB0VGFnOjI=" - -# Create a draft prompt -src prompts create \ - -name="draft-prompt" \ - -description="Work in progress prompt" \ - -content="This prompt is still being developed..." \ - -draft - -# Create a recommended prompt with auto-submit -src prompts create \ - -name="recommended-prompt" \ - -description="A recommended prompt for common use" \ - -content="This is a recommended prompt..." \ - -recommended \ - -auto-submit - -# Create a secret prompt for INSERT mode -src prompts create \ - -name="secret-insert-prompt" \ - -description="Secret prompt for code insertion" \ - -content="Insert code here..." \ - -visibility="SECRET" \ - -mode="INSERT" - -# Create a prompt with explicit owner (optional) -src prompts create \ - -name="team-shared-prompt" \ - -description="A prompt shared with a specific owner" \ - -content="This prompt has an explicit owner..." \ - -owner="VXNlcjox" -``` - -## Flags - -| Flag | Description | -| -------------- | --------------------------------------------------------------------------------- | -| `-name` | The prompt name (required) | -| `-description` | Description of the prompt (required) | -| `-content` | The prompt template text content (required) | -| `-owner` | The ID of the owner (user or organization) (optional, defaults to current user) | -| `-tags` | Comma-separated list of tag IDs | -| `-draft` | Whether the prompt is a draft (default: false) | -| `-visibility` | Visibility of the prompt: PUBLIC or SECRET (default: "PUBLIC") | -| `-auto-submit` | Whether the prompt should be automatically executed in one click (default: false) | -| `-mode` | Mode to execute prompt: CHAT, EDIT, or INSERT (default: "CHAT") | -| `-recommended` | Whether the prompt is recommended (default: false) | - -### API flags - -| Flag | Description | -| ----------------------- | ----------------------------------------------------------------------------------------------------------------- | -| `-dump-requests` | Log GraphQL requests and responses to stdout | -| `-get-curl` | Print the curl command for executing this query and exit (WARNING: includes printing your access token!) | -| `-insecure-skip-verify` | Skip validation of TLS certificates against trusted chains | -| `-trace` | Log the trace ID for requests. See https://docs.sourcegraph.com/admin/observability/tracing | -| `-user-agent-telemetry` | Include the operating system and architecture in the User-Agent sent with requests to Sourcegraph (default: true) | diff --git a/docs/cli/references/prompts/delete.mdx b/docs/cli/references/prompts/delete.mdx deleted file mode 100644 index c7fb02446..000000000 --- a/docs/cli/references/prompts/delete.mdx +++ /dev/null @@ -1,32 +0,0 @@ -# src prompts delete - -Delete a prompt from your Sourcegraph instance. - -## Usage - -```bash -src prompts delete -``` - -## Examples - -```bash -# Delete a prompt by ID -src prompts delete UHJvbXB0OjE= - -# The command will confirm successful deletion -src prompts delete UHJvbXB0OjE= -# Output: Prompt deleted successfully. -``` - -## Flags - -### API flags - -| Flag | Description | -| ----------------------- | ----------------------------------------------------------------------------------------------------------------- | -| `-dump-requests` | Log GraphQL requests and responses to stdout | -| `-get-curl` | Print the curl command for executing this query and exit (WARNING: includes printing your access token!) | -| `-insecure-skip-verify` | Skip validation of TLS certificates against trusted chains | -| `-trace` | Log the trace ID for requests. See https://docs.sourcegraph.com/admin/observability/tracing | -| `-user-agent-telemetry` | Include the operating system and architecture in the User-Agent sent with requests to Sourcegraph (default: true) | diff --git a/docs/cli/references/prompts/export.mdx b/docs/cli/references/prompts/export.mdx deleted file mode 100644 index 0d97b69f6..000000000 --- a/docs/cli/references/prompts/export.mdx +++ /dev/null @@ -1,46 +0,0 @@ -# src prompts export - -Export prompts to a JSON file. - -## Usage - -```bash -src prompts export [flags] -``` - -## Examples - -```bash -# Export all prompts to stdout -src prompts export - -# Export all prompts to a file -src prompts export -o prompts-backup.json - -# Export with pretty formatting -src prompts export -o prompts-backup.json -format=pretty - -# Export prompts with specific tags -src prompts export -o go-prompts.json -tags="go,golang" - -# Export prompts with multiple tag filters -src prompts export -o filtered-prompts.json -tags="python,data-science,ml" -``` - -## Flags - -| Flag | Description | -| --------- | ------------------------------------------------------- | -| `-o` | Output file path (defaults to stdout if not specified) | -| `-tags` | Comma-separated list of tag names to filter by | -| `-format` | JSON format: 'pretty' or 'compact' (default: 'compact') | - -### API flags - -| Flag | Description | -| ----------------------- | ----------------------------------------------------------------------------------------------------------------- | -| `-dump-requests` | Log GraphQL requests and responses to stdout | -| `-get-curl` | Print the curl command for executing this query and exit (WARNING: includes printing your access token!) | -| `-insecure-skip-verify` | Skip validation of TLS certificates against trusted chains | -| `-trace` | Log the trace ID for requests. See https://docs.sourcegraph.com/admin/observability/tracing | -| `-user-agent-telemetry` | Include the operating system and architecture in the User-Agent sent with requests to Sourcegraph (default: true) | diff --git a/docs/cli/references/prompts/get.mdx b/docs/cli/references/prompts/get.mdx deleted file mode 100644 index 0d2a5f1c2..000000000 --- a/docs/cli/references/prompts/get.mdx +++ /dev/null @@ -1,28 +0,0 @@ -# src prompts get - -Get details about a specific prompt by ID. - -## Usage - -```bash -src prompts get -``` - -## Examples - -```bash -# Get prompt by ID -src prompts get UHJvbXB0OjE= -``` - -## Flags - -### API flags - -| Flag | Description | -| ----------------------- | ----------------------------------------------------------------------------------------------------------------- | -| `-dump-requests` | Log GraphQL requests and responses to stdout | -| `-get-curl` | Print the curl command for executing this query and exit (WARNING: includes printing your access token!) | -| `-insecure-skip-verify` | Skip validation of TLS certificates against trusted chains | -| `-trace` | Log the trace ID for requests. See https://docs.sourcegraph.com/admin/observability/tracing | -| `-user-agent-telemetry` | Include the operating system and architecture in the User-Agent sent with requests to Sourcegraph (default: true) | diff --git a/docs/cli/references/prompts/import.mdx b/docs/cli/references/prompts/import.mdx deleted file mode 100644 index f6ae4af3e..000000000 --- a/docs/cli/references/prompts/import.mdx +++ /dev/null @@ -1,47 +0,0 @@ -# src prompts import - -Import prompts from a JSON file. - -## Usage - -```bash -src prompts import [flags] -``` - -## Examples - -```bash -# Import prompts from a file (uses current user as owner) -src prompts import -i prompts.json - -# Import prompts with a specific owner -src prompts import -i prompts.json -owner="VXNlcjox" - -# Perform a dry run without creating any prompts -src prompts import -i prompts.json -dry-run - -# Skip existing prompts with the same name -src prompts import -i prompts.json -skip-existing - -# Combine flags for validation and skipping -src prompts import -i prompts.json -dry-run -skip-existing -``` - -## Flags - -| Flag | Description | -| ---------------- | ----------------------------------------------------------------------- | -| `-i` | Input file path (required) | -| `-owner` | The ID of the owner for all imported prompts (defaults to current user) | -| `-dry-run` | Validate without importing | -| `-skip-existing` | Skip prompts that already exist (based on name) | - -### API flags - -| Flag | Description | -| ----------------------- | ----------------------------------------------------------------------------------------------------------------- | -| `-dump-requests` | Log GraphQL requests and responses to stdout | -| `-get-curl` | Print the curl command for executing this query and exit (WARNING: includes printing your access token!) | -| `-insecure-skip-verify` | Skip validation of TLS certificates against trusted chains | -| `-trace` | Log the trace ID for requests. See https://docs.sourcegraph.com/admin/observability/tracing | -| `-user-agent-telemetry` | Include the operating system and architecture in the User-Agent sent with requests to Sourcegraph (default: true) | diff --git a/docs/cli/references/prompts/list.mdx b/docs/cli/references/prompts/list.mdx deleted file mode 100644 index a8ae516ec..000000000 --- a/docs/cli/references/prompts/list.mdx +++ /dev/null @@ -1,79 +0,0 @@ -# src prompts list - -List all prompts in your Sourcegraph instance. - -## Usage - -```bash -src prompts list [flags] -``` - -## Examples - -```bash -# List all prompts -src prompts list - -# Search prompts by name, description, or content -src prompts list -query="error handling" - -# Filter prompts by tag IDs -src prompts list -tags="UHJvbXB0VGFnOjE=,UHJvbXB0VGFnOjI=" - -# List prompts for a specific owner -src prompts list -owner="VXNlcjox" - -# List only recommended prompts -src prompts list -recommended-only - -# List built-in prompts only -src prompts list -builtin-only - -# Include built-in prompts with user prompts -src prompts list -include-builtin - -# Exclude draft prompts -src prompts list -include-drafts=false - -# List prompts owned by viewer or their organizations -src prompts list -affiliated - -# Paginate through results -src prompts list -limit=10 -after="cursor" - -# Select specific columns to display -src prompts list -c id,name,description,visibility - -# Output results as JSON -src prompts list -json - -# Complex filtering example -src prompts list -query="Go" -recommended-only -include-drafts=false -json -``` - -## Flags - -| Flag | Description | -| ------------------- | ------------------------------------------------------------------------------------------------------------------------------------------ | -| `-query` | Search prompts by name, description, or content | -| `-owner` | Filter by prompt owner (a namespace, either a user or organization) | -| `-tags` | Comma-separated list of tag IDs to filter by | -| `-affiliated` | Filter to only prompts owned by the viewer or viewer's organizations | -| `-recommended-only` | Whether to include only recommended prompts | -| `-builtin-only` | Whether to include only builtin prompts | -| `-include-builtin` | Whether to include builtin prompts | -| `-include-drafts` | Whether to include draft prompts (default: true) | -| `-limit` | Maximum number of prompts to list (default: 100) | -| `-after` | Cursor for pagination (from previous page's endCursor) | -| `-c` | Comma-separated list of columns to display. Available: id,name,description,draft,visibility,mode,tags (default: "id,name,visibility,tags") | -| `-json` | Output results as JSON for programmatic access | - -### API flags - -| Flag | Description | -| ----------------------- | ----------------------------------------------------------------------------------------------------------------- | -| `-dump-requests` | Log GraphQL requests and responses to stdout | -| `-get-curl` | Print the curl command for executing this query and exit (WARNING: includes printing your access token!) | -| `-insecure-skip-verify` | Skip validation of TLS certificates against trusted chains | -| `-trace` | Log the trace ID for requests. See https://docs.sourcegraph.com/admin/observability/tracing | -| `-user-agent-telemetry` | Include the operating system and architecture in the User-Agent sent with requests to Sourcegraph (default: true) | diff --git a/docs/cli/references/prompts/tags.mdx b/docs/cli/references/prompts/tags.mdx deleted file mode 100644 index b2ce98d7a..000000000 --- a/docs/cli/references/prompts/tags.mdx +++ /dev/null @@ -1,31 +0,0 @@ -# src prompts tags - -`src prompts tags` is a tool that manages prompt tags in a Sourcegraph instance. - -## Usage - -``` -'src prompts tags' is a tool that manages prompt tags in a Sourcegraph instance. - -Usage: - - src prompts tags command [command options] - -The commands are: - - list lists prompt tags - get get a prompt tag by name - create create a prompt tag - update update a prompt tag - delete delete a prompt tag - -Use "src prompts tags [command] -h" for more information about a command. -``` - -## Available Commands - -- [`src prompts tags list`](./tags/list) - lists prompt tags -- [`src prompts tags get`](./tags/get) - get a prompt tag by name -- [`src prompts tags create`](./tags/create) - create a prompt tag -- [`src prompts tags update`](./tags/update) - update a prompt tag -- [`src prompts tags delete`](./tags/delete) - delete a prompt tag diff --git a/docs/cli/references/prompts/tags/create.mdx b/docs/cli/references/prompts/tags/create.mdx deleted file mode 100644 index b6d618ec4..000000000 --- a/docs/cli/references/prompts/tags/create.mdx +++ /dev/null @@ -1,38 +0,0 @@ -# src prompts tags create - -Create a new tag for prompts. - -## Usage - -```bash -src prompts tags create -``` - -## Examples - -```bash -# Create a new tag -src prompts tags create go - -# Create a tag with hyphen -src prompts tags create machine-learning - -# Create a tag for Python -src prompts tags create python -``` - -## Flags - -### API flags - -| Flag | Description | -| ----------------------- | ----------------------------------------------------------------------------------------------------------------- | -| `-dump-requests` | Log GraphQL requests and responses to stdout | -| `-get-curl` | Print the curl command for executing this query and exit (WARNING: includes printing your access token!) | -| `-insecure-skip-verify` | Skip validation of TLS certificates against trusted chains | -| `-trace` | Log the trace ID for requests. See https://docs.sourcegraph.com/admin/observability/tracing | -| `-user-agent-telemetry` | Include the operating system and architecture in the User-Agent sent with requests to Sourcegraph (default: true) | - -## Notes - -If a tag with this name already exists, the command will return the existing tag's ID. diff --git a/docs/cli/references/prompts/tags/delete.mdx b/docs/cli/references/prompts/tags/delete.mdx deleted file mode 100644 index 66b1b19b0..000000000 --- a/docs/cli/references/prompts/tags/delete.mdx +++ /dev/null @@ -1,32 +0,0 @@ -# src prompts tags delete - -Delete a tag from your Sourcegraph instance. - -## Usage - -```bash -src prompts tags delete -``` - -## Examples - -```bash -# Delete a tag by ID -src prompts tags delete UHJvbXB0VGFnOjE= - -# The command will confirm successful deletion -src prompts tags delete UHJvbXB0VGFnOjE= -# Output: Prompt tag deleted successfully. -``` - -## Flags - -### API flags - -| Flag | Description | -| ----------------------- | ----------------------------------------------------------------------------------------------------------------- | -| `-dump-requests` | Log GraphQL requests and responses to stdout | -| `-get-curl` | Print the curl command for executing this query and exit (WARNING: includes printing your access token!) | -| `-insecure-skip-verify` | Skip validation of TLS certificates against trusted chains | -| `-trace` | Log the trace ID for requests. See https://docs.sourcegraph.com/admin/observability/tracing | -| `-user-agent-telemetry` | Include the operating system and architecture in the User-Agent sent with requests to Sourcegraph (default: true) | diff --git a/docs/cli/references/prompts/tags/get.mdx b/docs/cli/references/prompts/tags/get.mdx deleted file mode 100644 index f6acfdafd..000000000 --- a/docs/cli/references/prompts/tags/get.mdx +++ /dev/null @@ -1,31 +0,0 @@ -# src prompts tags get - -Get details about a specific tag by name. - -## Usage - -```bash -src prompts tags get -``` - -## Examples - -```bash -# Get tag by name -src prompts tags get go - -# Get tag details for machine learning -src prompts tags get machine-learning -``` - -## Flags - -### API flags - -| Flag | Description | -| ----------------------- | ----------------------------------------------------------------------------------------------------------------- | -| `-dump-requests` | Log GraphQL requests and responses to stdout | -| `-get-curl` | Print the curl command for executing this query and exit (WARNING: includes printing your access token!) | -| `-insecure-skip-verify` | Skip validation of TLS certificates against trusted chains | -| `-trace` | Log the trace ID for requests. See https://docs.sourcegraph.com/admin/observability/tracing | -| `-user-agent-telemetry` | Include the operating system and architecture in the User-Agent sent with requests to Sourcegraph (default: true) | diff --git a/docs/cli/references/prompts/tags/list.mdx b/docs/cli/references/prompts/tags/list.mdx deleted file mode 100644 index f73fb7467..000000000 --- a/docs/cli/references/prompts/tags/list.mdx +++ /dev/null @@ -1,51 +0,0 @@ -# src prompts tags list - -List all tags in your Sourcegraph instance. - -## Usage - -```bash -src prompts tags list [flags] -``` - -## Examples - -```bash -# List all tags -src prompts tags list - -# Search for tags by name -src prompts tags list -query="go" - -# Paginate through results -src prompts tags list -limit=10 -after="cursor" - -# Select specific columns to display -src prompts tags list -c id,name - -# Output results as JSON -src prompts tags list -json - -# Combine search and pagination -src prompts tags list -query="python" -limit=5 -``` - -## Flags - -| Flag | Description | -| -------- | ----------------------------------------------------------------------------------- | -| `-query` | Search prompt tags by name | -| `-limit` | Maximum number of tags to list (default: 100) | -| `-after` | Cursor for pagination (from previous page's endCursor) | -| `-c` | Comma-separated list of columns to display. Available: id,name (default: "id,name") | -| `-json` | Output results as JSON for programmatic access | - -### API flags - -| Flag | Description | -| ----------------------- | ----------------------------------------------------------------------------------------------------------------- | -| `-dump-requests` | Log GraphQL requests and responses to stdout | -| `-get-curl` | Print the curl command for executing this query and exit (WARNING: includes printing your access token!) | -| `-insecure-skip-verify` | Skip validation of TLS certificates against trusted chains | -| `-trace` | Log the trace ID for requests. See https://docs.sourcegraph.com/admin/observability/tracing | -| `-user-agent-telemetry` | Include the operating system and architecture in the User-Agent sent with requests to Sourcegraph (default: true) | diff --git a/docs/cli/references/prompts/tags/update.mdx b/docs/cli/references/prompts/tags/update.mdx deleted file mode 100644 index c47ce8c9e..000000000 --- a/docs/cli/references/prompts/tags/update.mdx +++ /dev/null @@ -1,35 +0,0 @@ -# src prompts tags update - -Update an existing tag in your Sourcegraph instance. - -## Usage - -```bash -src prompts tags update [flags] -``` - -## Examples - -```bash -# Update a tag's name -src prompts tags update -name="updated-tag-name" UHJvbXB0VGFnOjE= - -# Update to a different name -src prompts tags update -name="golang-updated" UHJvbXB0VGFnOjE= -``` - -## Flags - -| Flag | Description | -| ------- | ------------------------ | -| `-name` | The new name for the tag | - -### API flags - -| Flag | Description | -| ----------------------- | ----------------------------------------------------------------------------------------------------------------- | -| `-dump-requests` | Log GraphQL requests and responses to stdout | -| `-get-curl` | Print the curl command for executing this query and exit (WARNING: includes printing your access token!) | -| `-insecure-skip-verify` | Skip validation of TLS certificates against trusted chains | -| `-trace` | Log the trace ID for requests. See https://docs.sourcegraph.com/admin/observability/tracing | -| `-user-agent-telemetry` | Include the operating system and architecture in the User-Agent sent with requests to Sourcegraph (default: true) | diff --git a/docs/cli/references/prompts/update.mdx b/docs/cli/references/prompts/update.mdx deleted file mode 100644 index fd609bc5f..000000000 --- a/docs/cli/references/prompts/update.mdx +++ /dev/null @@ -1,69 +0,0 @@ -# src prompts update - -Update an existing prompt in your Sourcegraph instance. - -## Usage - -```bash -src prompts update [flags] -``` - -## Examples - -```bash -# Update a prompt's basic information -src prompts update \ - -name="updated-prompt-name" \ - -description="Updated description" \ - -content="Updated prompt content" \ - UHJvbXB0OjE= - -# Update a prompt with new tags -src prompts update \ - -name="prompt-with-new-tags" \ - -description="Updated description" \ - -content="Updated content" \ - -tags="UHJvbXB0VGFnOjE=,UHJvbXB0VGFnOjI=" \ - UHJvbXB0OjE= - -# Update prompt to draft status -src prompts update \ - -name="draft-prompt" \ - -description="Now a draft" \ - -content="Work in progress content" \ - -draft \ - UHJvbXB0OjE= - -# Update prompt settings -src prompts update \ - -name="auto-submit-prompt" \ - -description="Auto-submit enabled" \ - -content="This prompt auto-submits" \ - -auto-submit \ - -recommended \ - -mode="EDIT" \ - UHJvbXB0OjE= -``` - -## Flags - -| Flag | Description | -| -------------- | ---------------------------------------------------------------- | -| `-name` | The updated prompt name | -| `-description` | Updated description of the prompt | -| `-content` | The updated prompt template text content | -| `-tags` | Comma-separated list of tag IDs (replaces existing tags) | -| `-draft` | Whether the prompt is a draft | -| `-auto-submit` | Whether the prompt should be automatically executed in one click | -| `-mode` | Mode to execute prompt: CHAT, EDIT, or INSERT (default: "CHAT") | -| `-recommended` | Whether the prompt is recommended | - -### API flags - -| Flag | Description | -| ----------------------- | ----------------------------------------------------------------------------------------------------------------- | -| `-dump-requests` | Log GraphQL requests and responses to stdout | -| `-get-curl` | Print the curl command for executing this query and exit (WARNING: includes printing your access token!) | -| `-insecure-skip-verify` | Skip validation of TLS certificates against trusted chains | -| `-trace` | Log the trace ID for requests. See https://docs.sourcegraph.com/admin/observability/tracing | -| `-user-agent-telemetry` | Include the operating system and architecture in the User-Agent sent with requests to Sourcegraph (default: true) | diff --git a/docs/cli/references/sbom.mdx b/docs/cli/references/sbom.mdx deleted file mode 100644 index 76dd910b3..000000000 --- a/docs/cli/references/sbom.mdx +++ /dev/null @@ -1,20 +0,0 @@ -# `src sbom` - - - -## Usage - -``` -'src sbom' fetches and verifies SBOM (Software Bill of Materials) data for Sourcegraph containers. - -Usage: - - src sbom command [command options] - -The commands are: - - fetch fetch SBOMs for a released version of Sourcegraph - - -``` - \ No newline at end of file diff --git a/docs/cli/references/scout.mdx b/docs/cli/references/scout.mdx deleted file mode 100644 index 3932162c7..000000000 --- a/docs/cli/references/scout.mdx +++ /dev/null @@ -1,27 +0,0 @@ -# `src scout` - - - -## Usage - -``` -'src scout' is a tool that provides monitoring for Sourcegraph resources - - EXPERIMENTAL: 'scout' is an experimental command in the 'src' tool. To use, you must - point your .kube config to your Sourcegraph instance. - - Usage: - - src scout command [command options] - - The commands are: - - resource print all known sourcegraph resources and their allocations - usage get CPU, memory and current disk usage - advise recommend lowering or raising resource allocations based on actual usage - - Use "src scout [command] -h" for more information about a command. - - -``` - \ No newline at end of file diff --git a/docs/cli/references/signature.mdx b/docs/cli/references/signature.mdx deleted file mode 100644 index a335f9ca9..000000000 --- a/docs/cli/references/signature.mdx +++ /dev/null @@ -1,20 +0,0 @@ -# `src signature` - - - -## Usage - -``` -'src signature' verifies published signatures for Sourcegraph containers. - -Usage: - - src signature command [command options] - -The commands are: - - verify verify signatures for a Sourcegraph release - - -``` - \ No newline at end of file diff --git a/docs/cli/references/validate.mdx b/docs/cli/references/validate.mdx deleted file mode 100644 index 47cc1d4f3..000000000 --- a/docs/cli/references/validate.mdx +++ /dev/null @@ -1,27 +0,0 @@ -# `src validate` - - - -## Usage - -``` -'src validate' is a tool that validates a Sourcegraph instance. - -EXPERIMENTAL: 'validate' is an experimental command in the 'src' tool. - -Please visit https://docs.sourcegraph.com/admin/validation for documentation of the validate command. - -Usage: - - src validate command [command options] - -The commands are: - - install validates a Sourcegraph installation - kube validates a Sourcegraph deployment on a Kubernetes cluster - -Use "src validate [command] -h" for more information about a command. - - -``` - \ No newline at end of file From b6a21bb440c08dd33068e6d21ba39f0240a9674d Mon Sep 17 00:00:00 2001 From: Marc <7050295+marcleblanc2@users.noreply.github.com> Date: Thu, 10 Sep 2026 20:09:25 -0600 Subject: [PATCH 201/217] docs/cli: Add missing doc pages for src-cli commands (#1889) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Part of [FE-502](https://linear.app/sourcegraph/issue/FE-502). **Step 4 of 4** in a cross-repo stack, but **mergeable now** — it pre-seeds what the generated-docs sync will eventually write, so the live reference gets fixed without waiting on a src-cli release. ## Why The `src` CLI reference is generated by `src doc` and synced here by sourcegraph/sourcegraph's `sync/generated-docs` job. Two generator bugs (fixed in sourcegraph/src-cli#1375) left this reference incomplete: - `search-jobs`, `debug` and `snapshot` were never registered in the generator's `commanders` map, so each is a single page with only the group help; their 16 subcommands have no reference pages. (The 8 `search-jobs/*.mdx` pages here were hand-written by Travis Lyons in May 2025 to paper over this; nothing links to them.) - `index.mdx` lists only the 8 urfave/cli commands (`abc`, `api`, `auth`, `codeowners`, `login`, `orgs`, `users`, `version`) — `batch`, `repos`, `search`, `config`, etc. are missing from https://sourcegraph.com/docs/cli/references today. ## What - `index.mdx`: lists all 19 top-level commands. - `debug/{index,compose,kube,server}.mdx`, `snapshot/{index,databases,restore,summary,test,upload}.mdx`: new. - `search-jobs/index.mdx`: new; `search-jobs/{cancel,create,delete,get,list,logs,restart,results}.mdx`: hand-written pages replaced by generated ones (same usage text, plus a flags table; the `

` blurbs go away since the generator doesn't emit them). - Deleted `debug.mdx`, `search-jobs.mdx`, `snapshot.mdx`. - Deleted `teams.mdx` and dropped `teams` from `index.mdx`: teams were removed in Sourcegraph 7.0 and sourcegraph/src-cli#1376 removes the command, so the generator no longer emits this page. No redirect (same call as #1886). The sync job never deletes files, and in contentlayer routing a flat `foo.mdx` shadows `foo/index.mdx` (the same bug #1886 fixed for `auth.mdx`/`codeowners.mdx`), so these have to go by hand for the new index pages to be reachable. Content was produced by running the patched generator (src-cli `main` + #1375) and the same `tools/md2mdx` conversion the sync uses, so the sync PR that follows sourcegraph/sourcegraph#15528 should be a no-op for these paths. No redirects: the three deleted URLs (`/cli/references/{debug,search-jobs,snapshot}`) keep resolving, now to the new index pages. ## Stack 1. sourcegraph/src-cli#1375 — generator fix + tests; sourcegraph/src-cli#1376 (stacked) — remove `src teams`; sourcegraph/src-cli#1377 (stacked) — `src help` generated from registered commands, tests help == docs 2. src-cli 7.7.0 release (none since 7.6.0; blocks 3) 3. sourcegraph/sourcegraph#15528 — pin bump + `OUTPUT_FILES` + regenerate (draft until 2) 4. **this PR** 5. sourcegraph/sourcegraph#15529 — make the docs sync mirror `docs/cli/references/` so removed commands disappear automatically (merge after 3 and this PR) Related: #1886 (removed 28 stale pages for commands that no longer exist). ## Test plan `npx contentlayer build` → 528 documents; routes resolve to the intended files: ``` /cli/references/debug <- cli/references/debug/index.mdx /cli/references/search-jobs <- cli/references/search-jobs/index.mdx /cli/references/snapshot <- cli/references/snapshot/index.mdx ``` plus the 16 subcommand routes. (The `ERR_INVALID_ARG_TYPE`/clipanion stack trace during the build is pre-existing on `main`.) ## Amp threads - [Stale command docs](https://ampcode.com/threads/T-01a08410-86ca-72be-9928-2810e837fae1) --------- Co-authored-by: Amp --- docs/cli/references/debug.mdx | 27 ----- docs/cli/references/debug/compose.mdx | 37 +++++++ docs/cli/references/debug/index.mdx | 9 ++ docs/cli/references/debug/kube.mdx | 40 +++++++ docs/cli/references/debug/server.mdx | 38 +++++++ docs/cli/references/index.mdx | 11 ++ docs/cli/references/search-jobs.mdx | 33 ------ docs/cli/references/search-jobs/cancel.mdx | 58 ++++++---- docs/cli/references/search-jobs/create.mdx | 70 +++++++----- docs/cli/references/search-jobs/delete.mdx | 58 ++++++---- docs/cli/references/search-jobs/get.mdx | 70 +++++++----- docs/cli/references/search-jobs/index.mdx | 14 +++ docs/cli/references/search-jobs/list.mdx | 111 +++++++++++--------- docs/cli/references/search-jobs/logs.mdx | 59 +++++++---- docs/cli/references/search-jobs/restart.mdx | 70 +++++++----- docs/cli/references/search-jobs/results.mdx | 61 ++++++----- docs/cli/references/snapshot.mdx | 27 ----- docs/cli/references/snapshot/databases.mdx | 38 +++++++ docs/cli/references/snapshot/index.mdx | 11 ++ docs/cli/references/snapshot/restore.mdx | 38 +++++++ docs/cli/references/snapshot/summary.mdx | 28 +++++ docs/cli/references/snapshot/test.mdx | 38 +++++++ docs/cli/references/snapshot/upload.mdx | 52 +++++++++ docs/cli/references/teams.mdx | 26 ----- 24 files changed, 684 insertions(+), 340 deletions(-) delete mode 100644 docs/cli/references/debug.mdx create mode 100644 docs/cli/references/debug/compose.mdx create mode 100644 docs/cli/references/debug/index.mdx create mode 100644 docs/cli/references/debug/kube.mdx create mode 100644 docs/cli/references/debug/server.mdx delete mode 100644 docs/cli/references/search-jobs.mdx create mode 100644 docs/cli/references/search-jobs/index.mdx delete mode 100644 docs/cli/references/snapshot.mdx create mode 100644 docs/cli/references/snapshot/databases.mdx create mode 100644 docs/cli/references/snapshot/index.mdx create mode 100644 docs/cli/references/snapshot/restore.mdx create mode 100644 docs/cli/references/snapshot/summary.mdx create mode 100644 docs/cli/references/snapshot/test.mdx create mode 100644 docs/cli/references/snapshot/upload.mdx delete mode 100644 docs/cli/references/teams.mdx diff --git a/docs/cli/references/debug.mdx b/docs/cli/references/debug.mdx deleted file mode 100644 index 07cd0797b..000000000 --- a/docs/cli/references/debug.mdx +++ /dev/null @@ -1,27 +0,0 @@ -# `src debug` - - - -## Usage - -``` -'src debug' gathers and bundles debug data from a Sourcegraph deployment for troubleshooting. - -Usage: - - src debug command [command options] - -The commands are: - - kube dumps context from k8s deployments - compose dumps context from docker-compose deployments - server dumps context from single-container deployments - - -Use "src debug command -h" for more information about a subcommands. -src debug has access to flags on src -- Ex: src -v kube -o foo.zip - - - -``` - \ No newline at end of file diff --git a/docs/cli/references/debug/compose.mdx b/docs/cli/references/debug/compose.mdx new file mode 100644 index 000000000..2000a4d70 --- /dev/null +++ b/docs/cli/references/debug/compose.mdx @@ -0,0 +1,37 @@ +# `src debug compose` + + +## Flags + +| Name | Description | Default Value | +|------|-------------|---------------| +| `-no-configs` | If true, exclude Sourcegraph configuration files. Defaults to false. | `false` | +| `-o` | The name of the output zip archive | `debug.zip` | + + +## Usage + +``` + +'src debug compose' invokes docker cli diagnostic commands targeting a set of containers that are members of a docker-compose network, +writing an archive file from their returns. + +Usage: + + src debug compose [command options] + +Flags: + + -o Specify the name of the output zip archive. + --no-configs Don't include Sourcegraph configuration json. + +Examples: + + $ src debug compose -o debug.zip + + $ src -v debug compose -no-configs -o foo.zip + + + +``` + \ No newline at end of file diff --git a/docs/cli/references/debug/index.mdx b/docs/cli/references/debug/index.mdx new file mode 100644 index 000000000..d2fdcaac4 --- /dev/null +++ b/docs/cli/references/debug/index.mdx @@ -0,0 +1,9 @@ +# `src debug` + +## Subcommands + + +* [`compose`](debug/compose) +* [`kube`](debug/kube) +* [`server`](debug/server) + \ No newline at end of file diff --git a/docs/cli/references/debug/kube.mdx b/docs/cli/references/debug/kube.mdx new file mode 100644 index 000000000..5c8203d1b --- /dev/null +++ b/docs/cli/references/debug/kube.mdx @@ -0,0 +1,40 @@ +# `src debug kube` + + +## Flags + +| Name | Description | Default Value | +|------|-------------|---------------| +| `-n` | The namespace passed to kubectl commands, if not specified the 'default' namespace is used | `default` | +| `-no-configs` | If true, exclude Sourcegraph configuration files. Defaults to false. | `false` | +| `-o` | The name of the output zip archive | `debug.zip` | + + +## Usage + +``` + +'src debug kube' invokes kubectl diagnostic commands targeting kubectl's current-context, writing returns to an archive. + +Usage: + + src debug kube [command options] + +Flags: + + -o Specify the name of the output zip archive. + -n Specify the namespace passed to kubectl commands. If not specified the 'default' namespace is used. + --no-config Don't include Sourcegraph configuration json. + +Examples: + + $ src debug kube -o debug.zip + + $ src -v debug kube -n ns-sourcegraph -o foo + + $ src debug kube -no-configs -o bar.zip + + + +``` + \ No newline at end of file diff --git a/docs/cli/references/debug/server.mdx b/docs/cli/references/debug/server.mdx new file mode 100644 index 000000000..caf960806 --- /dev/null +++ b/docs/cli/references/debug/server.mdx @@ -0,0 +1,38 @@ +# `src debug server` + + +## Flags + +| Name | Description | Default Value | +|------|-------------|---------------| +| `-c` | The container to target | | +| `-no-configs` | If true, exclude Sourcegraph configuration files. Defaults to false. | `false` | +| `-o` | The name of the output zip archive | `debug.zip` | + + +## Usage + +``` + +'src debug server' invokes docker cli diagnostic commands targeting a Sourcegraph server container, +and writes an archive file from their returns. + +Usage: + + src debug server [command options] + +Flags: + + -o Specify the name of the output zip archive. + -no-config Don't include Sourcegraph configuration json. + +Examples: + + $ src debug server -c foo -o debug.zip + + $ src -v debug server --no-configs -c ViktorVaughn -o foo.zip + + + +``` + \ No newline at end of file diff --git a/docs/cli/references/index.mdx b/docs/cli/references/index.mdx index fb7a86720..ce45deb1d 100644 --- a/docs/cli/references/index.mdx +++ b/docs/cli/references/index.mdx @@ -6,9 +6,20 @@ * [`abc`](references/abc) * [`api`](references/api) * [`auth`](references/auth) +* [`batch`](references/batch) +* [`code-intel`](references/code-intel) * [`codeowners`](references/codeowners) +* [`config`](references/config) +* [`debug`](references/debug) +* [`extsvc`](references/extsvc) * [`login`](references/login) +* [`lsp`](references/lsp) * [`orgs`](references/orgs) +* [`repos`](references/repos) +* [`search`](references/search) +* [`search-jobs`](references/search-jobs) +* [`serve-git`](references/serve-git) +* [`snapshot`](references/snapshot) * [`users`](references/users) * [`version`](references/version) \ No newline at end of file diff --git a/docs/cli/references/search-jobs.mdx b/docs/cli/references/search-jobs.mdx deleted file mode 100644 index 1cfb311bb..000000000 --- a/docs/cli/references/search-jobs.mdx +++ /dev/null @@ -1,33 +0,0 @@ -# `src search-jobs` - - - -## Usage - -``` -'src search-jobs' is a tool that manages search jobs on a Sourcegraph instance. - - Usage: - - src search-jobs command [command options] - - The commands are: - - cancel cancels a search job by ID - create creates a search job - delete deletes a search job by ID - get gets a search job by ID - list lists search jobs - logs fetches logs for a search job by ID - restart restarts a search job by ID - results fetches results for a search job by ID - - Common options for all commands: - -c Select columns to display (e.g., -c id,query,state,username) - -json Output results in JSON format - - Use "src search-jobs [command] -h" for more information about a command. - - -``` - \ No newline at end of file diff --git a/docs/cli/references/search-jobs/cancel.mdx b/docs/cli/references/search-jobs/cancel.mdx index f8a9dded8..5f39fd539 100644 --- a/docs/cli/references/search-jobs/cancel.mdx +++ b/docs/cli/references/search-jobs/cancel.mdx @@ -1,37 +1,49 @@ -# src search-jobs cancel +# `src search-jobs cancel` + + +## Flags + +| Name | Description | Default Value | +|------|-------------|---------------| +| `-c` | Comma-separated list of columns to display. Available: id,query,state,username,createdat,startedat,finishedat,url,logurl,total,completed,failed,inprogress | `id,username,state,query` | +| `-dump-requests` | Log GraphQL requests and responses to stdout | `false` | +| `-get-curl` | Print the curl command for executing this query and exit (WARNING: includes printing your access token!) | `false` | +| `-insecure-skip-verify` | Skip validation of TLS certificates against trusted chains | `false` | +| `-json` | Output results as JSON for programmatic access | `false` | +| `-trace` | Log the trace ID for requests. See https://sourcegraph.com/docs/admin/observability/tracing | `false` | +| `-user-agent-telemetry` | Include the operating system and architecture in the User-Agent sent with requests to Sourcegraph | `true` | -

- `src search-jobs cancel` is a tool that cancels a search job on a - Sourcegraph instance. -

## Usage -```bash +``` Usage of 'src search-jobs cancel': -c string - Comma-separated list of columns to display. Available: id,query,state,username,createdat,startedat,finishedat,url,logurl,total,completed,failed,inprogress (default "id,username,state,query") + Comma-separated list of columns to display. Available: id,query,state,username,createdat,startedat,finishedat,url,logurl,total,completed,failed,inprogress (default "id,username,state,query") -dump-requests - Log GraphQL requests and responses to stdout + Log GraphQL requests and responses to stdout -get-curl - Print the curl command for executing this query and exit (WARNING: includes printing your access token!) + Print the curl command for executing this query and exit (WARNING: includes printing your access token!) -insecure-skip-verify - Skip validation of TLS certificates against trusted chains + Skip validation of TLS certificates against trusted chains -json - Output results as JSON for programmatic access + Output results as JSON for programmatic access -trace - Log the trace ID for requests. See https://docs.sourcegraph.com/admin/observability/tracing + Log the trace ID for requests. See https://sourcegraph.com/docs/admin/observability/tracing -user-agent-telemetry - Include the operating system and architecture in the User-Agent sent with requests to Sourcegraph (default true) - - Examples: - - Cancel a search job by ID: - - $ src search-jobs cancel U2VhcmNoSm9iOjY5 - - Arguments: - The ID of the search job to cancel. + Include the operating system and architecture in the User-Agent sent with requests to Sourcegraph (default true) + + Examples: + + Cancel a search job by ID: + + $ src search-jobs cancel U2VhcmNoSm9iOjY5 + + Arguments: + The ID of the search job to cancel. + + The cancel command stops a running search job and outputs a confirmation message. + - The cancel command stops a running search job and outputs a confirmation message. ``` + \ No newline at end of file diff --git a/docs/cli/references/search-jobs/create.mdx b/docs/cli/references/search-jobs/create.mdx index b63fb061f..098a6e442 100644 --- a/docs/cli/references/search-jobs/create.mdx +++ b/docs/cli/references/search-jobs/create.mdx @@ -1,43 +1,55 @@ -# src search-jobs create +# `src search-jobs create` + + +## Flags + +| Name | Description | Default Value | +|------|-------------|---------------| +| `-c` | Comma-separated list of columns to display. Available: id,query,state,username,createdat,startedat,finishedat,url,logurl,total,completed,failed,inprogress | `id,username,state,query` | +| `-dump-requests` | Log GraphQL requests and responses to stdout | `false` | +| `-get-curl` | Print the curl command for executing this query and exit (WARNING: includes printing your access token!) | `false` | +| `-insecure-skip-verify` | Skip validation of TLS certificates against trusted chains | `false` | +| `-json` | Output results as JSON for programmatic access | `false` | +| `-trace` | Log the trace ID for requests. See https://sourcegraph.com/docs/admin/observability/tracing | `false` | +| `-user-agent-telemetry` | Include the operating system and architecture in the User-Agent sent with requests to Sourcegraph | `true` | -

- `src search-jobs create` is a tool that creates a search job on a - Sourcegraph instance. -

## Usage -```bash +``` Usage of 'src search-jobs create': -c string - Comma-separated list of columns to display. Available: id,query,state,username,createdat,startedat,finishedat,url,logurl,total,completed,failed,inprogress (default "id,username,state,query") + Comma-separated list of columns to display. Available: id,query,state,username,createdat,startedat,finishedat,url,logurl,total,completed,failed,inprogress (default "id,username,state,query") -dump-requests - Log GraphQL requests and responses to stdout + Log GraphQL requests and responses to stdout -get-curl - Print the curl command for executing this query and exit (WARNING: includes printing your access token!) + Print the curl command for executing this query and exit (WARNING: includes printing your access token!) -insecure-skip-verify - Skip validation of TLS certificates against trusted chains + Skip validation of TLS certificates against trusted chains -json - Output results as JSON for programmatic access + Output results as JSON for programmatic access -trace - Log the trace ID for requests. See https://docs.sourcegraph.com/admin/observability/tracing + Log the trace ID for requests. See https://sourcegraph.com/docs/admin/observability/tracing -user-agent-telemetry - Include the operating system and architecture in the User-Agent sent with requests to Sourcegraph (default true) - - Examples: - - Create a search job: - - $ src search-jobs create "repo:^github\.com/sourcegraph/sourcegraph$ sort:indexed-desc" - - Create a search job and display specific columns: - - $ src search-jobs create "repo:sourcegraph" -c id,state,username - - Create a search job and output in JSON format: - - $ src search-jobs create "repo:sourcegraph" -json + Include the operating system and architecture in the User-Agent sent with requests to Sourcegraph (default true) + + Examples: + + Create a search job: + + $ src search-jobs create "repo:^github\.com/sourcegraph/sourcegraph$ sort:indexed-desc" + + Create a search job and display specific columns: + + $ src search-jobs create "repo:sourcegraph" -c id,state,username + + Create a search job and output in JSON format: + + $ src search-jobs create "repo:sourcegraph" -json + + Available columns are: id, query, state, username, createdat, startedat, finishedat, + url, logurl, total, completed, failed, inprogress + - Available columns are: id, query, state, username, createdat, startedat, finishedat, - url, logurl, total, completed, failed, inprogress ``` + \ No newline at end of file diff --git a/docs/cli/references/search-jobs/delete.mdx b/docs/cli/references/search-jobs/delete.mdx index dfd48683b..14032f563 100644 --- a/docs/cli/references/search-jobs/delete.mdx +++ b/docs/cli/references/search-jobs/delete.mdx @@ -1,35 +1,49 @@ -# src search-jobs delete +# `src search-jobs delete` -

- `src search-jobs delete` is a tool that deletes a search job on a - Sourcegraph instance. -

-```bash +## Flags + +| Name | Description | Default Value | +|------|-------------|---------------| +| `-c` | Comma-separated list of columns to display. Available: id,query,state,username,createdat,startedat,finishedat,url,logurl,total,completed,failed,inprogress | `id,username,state,query` | +| `-dump-requests` | Log GraphQL requests and responses to stdout | `false` | +| `-get-curl` | Print the curl command for executing this query and exit (WARNING: includes printing your access token!) | `false` | +| `-insecure-skip-verify` | Skip validation of TLS certificates against trusted chains | `false` | +| `-json` | Output results as JSON for programmatic access | `false` | +| `-trace` | Log the trace ID for requests. See https://sourcegraph.com/docs/admin/observability/tracing | `false` | +| `-user-agent-telemetry` | Include the operating system and architecture in the User-Agent sent with requests to Sourcegraph | `true` | + + +## Usage + +``` Usage of 'src search-jobs delete': -c string - Comma-separated list of columns to display. Available: id,query,state,username,createdat,startedat,finishedat,url,logurl,total,completed,failed,inprogress (default "id,username,state,query") + Comma-separated list of columns to display. Available: id,query,state,username,createdat,startedat,finishedat,url,logurl,total,completed,failed,inprogress (default "id,username,state,query") -dump-requests - Log GraphQL requests and responses to stdout + Log GraphQL requests and responses to stdout -get-curl - Print the curl command for executing this query and exit (WARNING: includes printing your access token!) + Print the curl command for executing this query and exit (WARNING: includes printing your access token!) -insecure-skip-verify - Skip validation of TLS certificates against trusted chains + Skip validation of TLS certificates against trusted chains -json - Output results as JSON for programmatic access + Output results as JSON for programmatic access -trace - Log the trace ID for requests. See https://docs.sourcegraph.com/admin/observability/tracing + Log the trace ID for requests. See https://sourcegraph.com/docs/admin/observability/tracing -user-agent-telemetry - Include the operating system and architecture in the User-Agent sent with requests to Sourcegraph (default true) - - Examples: - - Delete a search job by ID: - - $ src search-jobs delete U2VhcmNoSm9iOjY5 + Include the operating system and architecture in the User-Agent sent with requests to Sourcegraph (default true) - Arguments: - The ID of the search job to delete. + Examples: + + Delete a search job by ID: + + $ src search-jobs delete U2VhcmNoSm9iOjY5 + + Arguments: + The ID of the search job to delete. + + The delete command permanently removes a search job and outputs a confirmation message. + - The delete command permanently removes a search job and outputs a confirmation message. ``` + \ No newline at end of file diff --git a/docs/cli/references/search-jobs/get.mdx b/docs/cli/references/search-jobs/get.mdx index 17db0d0a4..4d1301b8e 100644 --- a/docs/cli/references/search-jobs/get.mdx +++ b/docs/cli/references/search-jobs/get.mdx @@ -1,43 +1,55 @@ -# src search-jobs get +# `src search-jobs get` + + +## Flags + +| Name | Description | Default Value | +|------|-------------|---------------| +| `-c` | Comma-separated list of columns to display. Available: id,query,state,username,createdat,startedat,finishedat,url,logurl,total,completed,failed,inprogress | `id,username,state,query` | +| `-dump-requests` | Log GraphQL requests and responses to stdout | `false` | +| `-get-curl` | Print the curl command for executing this query and exit (WARNING: includes printing your access token!) | `false` | +| `-insecure-skip-verify` | Skip validation of TLS certificates against trusted chains | `false` | +| `-json` | Output results as JSON for programmatic access | `false` | +| `-trace` | Log the trace ID for requests. See https://sourcegraph.com/docs/admin/observability/tracing | `false` | +| `-user-agent-telemetry` | Include the operating system and architecture in the User-Agent sent with requests to Sourcegraph | `true` | -

- `src search-jobs get` is a tool that gets details of a single search job on - a Sourcegraph instance. -

## Usage -```bash +``` Usage of 'src search-jobs get': -c string - Comma-separated list of columns to display. Available: id,query,state,username,createdat,startedat,finishedat,url,logurl,total,completed,failed,inprogress (default "id,username,state,query") + Comma-separated list of columns to display. Available: id,query,state,username,createdat,startedat,finishedat,url,logurl,total,completed,failed,inprogress (default "id,username,state,query") -dump-requests - Log GraphQL requests and responses to stdout + Log GraphQL requests and responses to stdout -get-curl - Print the curl command for executing this query and exit (WARNING: includes printing your access token!) + Print the curl command for executing this query and exit (WARNING: includes printing your access token!) -insecure-skip-verify - Skip validation of TLS certificates against trusted chains + Skip validation of TLS certificates against trusted chains -json - Output results as JSON for programmatic access + Output results as JSON for programmatic access -trace - Log the trace ID for requests. See https://docs.sourcegraph.com/admin/observability/tracing + Log the trace ID for requests. See https://sourcegraph.com/docs/admin/observability/tracing -user-agent-telemetry - Include the operating system and architecture in the User-Agent sent with requests to Sourcegraph (default true) - - Examples: - - Get a search job by ID: - - $ src search-jobs get U2VhcmNoSm9iOjY5 - - Get a search job with specific columns: - - $ src search-jobs get U2VhcmNoSm9iOjY5 -c id,state,username - - Get a search job in JSON format: - - $ src search-jobs get U2VhcmNoSm9iOjY5 -json + Include the operating system and architecture in the User-Agent sent with requests to Sourcegraph (default true) + + Examples: + + Get a search job by ID: + + $ src search-jobs get U2VhcmNoSm9iOjY5 + + Get a search job with specific columns: + + $ src search-jobs get U2VhcmNoSm9iOjY5 -c id,state,username + + Get a search job in JSON format: + + $ src search-jobs get U2VhcmNoSm9iOjY5 -json + + Available columns are: id, query, state, username, createdat, startedat, finishedat, + url, logurl, total, completed, failed, inprogress + - Available columns are: id, query, state, username, createdat, startedat, finishedat, - url, logurl, total, completed, failed, inprogress ``` + \ No newline at end of file diff --git a/docs/cli/references/search-jobs/index.mdx b/docs/cli/references/search-jobs/index.mdx new file mode 100644 index 000000000..c4aad2c9c --- /dev/null +++ b/docs/cli/references/search-jobs/index.mdx @@ -0,0 +1,14 @@ +# `src search-jobs` + +## Subcommands + + +* [`cancel`](search-jobs/cancel) +* [`create`](search-jobs/create) +* [`delete`](search-jobs/delete) +* [`get`](search-jobs/get) +* [`list`](search-jobs/list) +* [`logs`](search-jobs/logs) +* [`restart`](search-jobs/restart) +* [`results`](search-jobs/results) + \ No newline at end of file diff --git a/docs/cli/references/search-jobs/list.mdx b/docs/cli/references/search-jobs/list.mdx index 3e959717f..9075168a6 100644 --- a/docs/cli/references/search-jobs/list.mdx +++ b/docs/cli/references/search-jobs/list.mdx @@ -1,65 +1,80 @@ -# src search-jobs list +# `src search-jobs list` + + +## Flags + +| Name | Description | Default Value | +|------|-------------|---------------| +| `-asc` | Sort search jobs in ascending order | `false` | +| `-c` | Comma-separated list of columns to display. Available: id,query,state,username,createdat,startedat,finishedat,url,logurl,total,completed,failed,inprogress | `id,username,state,query` | +| `-dump-requests` | Log GraphQL requests and responses to stdout | `false` | +| `-get-curl` | Print the curl command for executing this query and exit (WARNING: includes printing your access token!) | `false` | +| `-insecure-skip-verify` | Skip validation of TLS certificates against trusted chains | `false` | +| `-json` | Output results as JSON for programmatic access | `false` | +| `-limit` | Limit the number of search jobs returned | `10` | +| `-order-by` | Sort search jobs by a sortable field (QUERY, CREATED_AT, STATE) | `CREATED_AT` | +| `-trace` | Log the trace ID for requests. See https://sourcegraph.com/docs/admin/observability/tracing | `false` | +| `-user-agent-telemetry` | Include the operating system and architecture in the User-Agent sent with requests to Sourcegraph | `true` | -

- `src search-jobs list` is a tool that lists search jobs on a Sourcegraph - instance. -

## Usage -```bash +``` Usage of 'src search-jobs list': -asc - Sort search jobs in ascending order + Sort search jobs in ascending order -c string - Comma-separated list of columns to display. Available: id,query,state,username,createdat,startedat,finishedat,url,logurl,total,completed,failed,inprogress (default "id,username,state,query") + Comma-separated list of columns to display. Available: id,query,state,username,createdat,startedat,finishedat,url,logurl,total,completed,failed,inprogress (default "id,username,state,query") -dump-requests - Log GraphQL requests and responses to stdout + Log GraphQL requests and responses to stdout -get-curl - Print the curl command for executing this query and exit (WARNING: includes printing your access token!) + Print the curl command for executing this query and exit (WARNING: includes printing your access token!) -insecure-skip-verify - Skip validation of TLS certificates against trusted chains + Skip validation of TLS certificates against trusted chains -json - Output results as JSON for programmatic access + Output results as JSON for programmatic access -limit int - Limit the number of search jobs returned (default 10) + Limit the number of search jobs returned (default 10) -order-by string - Sort search jobs by a sortable field (QUERY, CREATED_AT, STATE) (default "CREATED_AT") + Sort search jobs by a sortable field (QUERY, CREATED_AT, STATE) (default "CREATED_AT") -trace - Log the trace ID for requests. See https://docs.sourcegraph.com/admin/observability/tracing + Log the trace ID for requests. See https://sourcegraph.com/docs/admin/observability/tracing -user-agent-telemetry - Include the operating system and architecture in the User-Agent sent with requests to Sourcegraph (default true) - - Examples: - - List all search jobs: - - $ src search-jobs list - - List all search jobs in ascending order: - - $ src search-jobs list --asc - - Limit the number of search jobs returned: - - $ src search-jobs list --limit 5 - - Order search jobs by a field (must be one of: QUERY, CREATED_AT, STATE): - - $ src search-jobs list --order-by QUERY - - Select specific columns to display: - - $ src search-jobs list -c id,state,username,createdat - - Output results as JSON: - - $ src search-jobs list -json - - Combine options: - - $ src search-jobs list --limit 10 --order-by STATE --asc -c id,query,state + Include the operating system and architecture in the User-Agent sent with requests to Sourcegraph (default true) + + Examples: + + List all search jobs: + + $ src search-jobs list + + List all search jobs in ascending order: + + $ src search-jobs list --asc + + Limit the number of search jobs returned: + + $ src search-jobs list --limit 5 + + Order search jobs by a field (must be one of: QUERY, CREATED_AT, STATE): + + $ src search-jobs list --order-by QUERY + + Select specific columns to display: + + $ src search-jobs list -c id,state,username,createdat + + Output results as JSON: + + $ src search-jobs list -json + + Combine options: + + $ src search-jobs list --limit 10 --order-by STATE --asc -c id,query,state + + Available columns are: id, query, state, username, createdat, startedat, finishedat, + url, logurl, total, completed, failed, inprogress + - Available columns are: id, query, state, username, createdat, startedat, finishedat, - url, logurl, total, completed, failed, inprogress ``` + \ No newline at end of file diff --git a/docs/cli/references/search-jobs/logs.mdx b/docs/cli/references/search-jobs/logs.mdx index 95898a47e..caaf1025f 100644 --- a/docs/cli/references/search-jobs/logs.mdx +++ b/docs/cli/references/search-jobs/logs.mdx @@ -1,39 +1,52 @@ -# src search-jobs logs +# `src search-jobs logs` + + +## Flags + +| Name | Description | Default Value | +|------|-------------|---------------| +| `-c` | Comma-separated list of columns to display. Available: id,query,state,username,createdat,startedat,finishedat,url,logurl,total,completed,failed,inprogress | `id,username,state,query` | +| `-dump-requests` | Log GraphQL requests and responses to stdout | `false` | +| `-get-curl` | Print the curl command for executing this query and exit (WARNING: includes printing your access token!) | `false` | +| `-insecure-skip-verify` | Skip validation of TLS certificates against trusted chains | `false` | +| `-json` | Output results as JSON for programmatic access | `false` | +| `-out` | File path to save the logs (optional) | | +| `-trace` | Log the trace ID for requests. See https://sourcegraph.com/docs/admin/observability/tracing | `false` | +| `-user-agent-telemetry` | Include the operating system and architecture in the User-Agent sent with requests to Sourcegraph | `true` | -

- `src search-jobs logs` is a tool that gets the logs of a search job on a - Sourcegraph instance. -

## Usage -```bash +``` Usage of 'src search-jobs logs': -c string - Comma-separated list of columns to display. Available: id,query,state,username,createdat,startedat,finishedat,url,logurl,total,completed,failed,inprogress (default "id,username,state,query") + Comma-separated list of columns to display. Available: id,query,state,username,createdat,startedat,finishedat,url,logurl,total,completed,failed,inprogress (default "id,username,state,query") -dump-requests - Log GraphQL requests and responses to stdout + Log GraphQL requests and responses to stdout -get-curl - Print the curl command for executing this query and exit (WARNING: includes printing your access token!) + Print the curl command for executing this query and exit (WARNING: includes printing your access token!) -insecure-skip-verify - Skip validation of TLS certificates against trusted chains + Skip validation of TLS certificates against trusted chains -json - Output results as JSON for programmatic access + Output results as JSON for programmatic access -out string - File path to save the logs (optional) + File path to save the logs (optional) -trace - Log the trace ID for requests. See https://docs.sourcegraph.com/admin/observability/tracing + Log the trace ID for requests. See https://sourcegraph.com/docs/admin/observability/tracing -user-agent-telemetry - Include the operating system and architecture in the User-Agent sent with requests to Sourcegraph (default true) - - Examples: - - View the logs of a search job: - $ src search-jobs logs U2VhcmNoSm9iOjY5 + Include the operating system and architecture in the User-Agent sent with requests to Sourcegraph (default true) - Save the logs to a file: - $ src search-jobs logs U2VhcmNoSm9iOjY5 -out logs.csv + Examples: + + View the logs of a search job: + $ src search-jobs logs U2VhcmNoSm9iOjY5 + + Save the logs to a file: + $ src search-jobs logs U2VhcmNoSm9iOjY5 -out logs.csv + + The logs command retrieves the raw log data in CSV format. The data will be + displayed on stdout or written to the file specified with -out. + - The logs command retrieves the raw log data in CSV format. The data will be - displayed on stdout or written to the file specified with -out. ``` + \ No newline at end of file diff --git a/docs/cli/references/search-jobs/restart.mdx b/docs/cli/references/search-jobs/restart.mdx index 45298a7e6..d42bf17c4 100644 --- a/docs/cli/references/search-jobs/restart.mdx +++ b/docs/cli/references/search-jobs/restart.mdx @@ -1,43 +1,55 @@ -# src search-jobs restart +# `src search-jobs restart` + + +## Flags + +| Name | Description | Default Value | +|------|-------------|---------------| +| `-c` | Comma-separated list of columns to display. Available: id,query,state,username,createdat,startedat,finishedat,url,logurl,total,completed,failed,inprogress | `id,username,state,query` | +| `-dump-requests` | Log GraphQL requests and responses to stdout | `false` | +| `-get-curl` | Print the curl command for executing this query and exit (WARNING: includes printing your access token!) | `false` | +| `-insecure-skip-verify` | Skip validation of TLS certificates against trusted chains | `false` | +| `-json` | Output results as JSON for programmatic access | `false` | +| `-trace` | Log the trace ID for requests. See https://sourcegraph.com/docs/admin/observability/tracing | `false` | +| `-user-agent-telemetry` | Include the operating system and architecture in the User-Agent sent with requests to Sourcegraph | `true` | -

- `src search-jobs restart` is a tool that restarts a search job on a - Sourcegraph instance. -

## Usage -```bash +``` Usage of 'src search-jobs restart': -c string - Comma-separated list of columns to display. Available: id,query,state,username,createdat,startedat,finishedat,url,logurl,total,completed,failed,inprogress (default "id,username,state,query") + Comma-separated list of columns to display. Available: id,query,state,username,createdat,startedat,finishedat,url,logurl,total,completed,failed,inprogress (default "id,username,state,query") -dump-requests - Log GraphQL requests and responses to stdout + Log GraphQL requests and responses to stdout -get-curl - Print the curl command for executing this query and exit (WARNING: includes printing your access token!) + Print the curl command for executing this query and exit (WARNING: includes printing your access token!) -insecure-skip-verify - Skip validation of TLS certificates against trusted chains + Skip validation of TLS certificates against trusted chains -json - Output results as JSON for programmatic access + Output results as JSON for programmatic access -trace - Log the trace ID for requests. See https://docs.sourcegraph.com/admin/observability/tracing + Log the trace ID for requests. See https://sourcegraph.com/docs/admin/observability/tracing -user-agent-telemetry - Include the operating system and architecture in the User-Agent sent with requests to Sourcegraph (default true) - - Examples: - - Restart a search job by ID: - - $ src search-jobs restart U2VhcmNoSm9iOjY5 - - Restart a search job and display specific columns: - - $ src search-jobs restart U2VhcmNoSm9iOjY5 -c id,state,query - - Restart a search job and output in JSON format: - - $ src search-jobs restart U2VhcmNoSm9iOjY5 -json + Include the operating system and architecture in the User-Agent sent with requests to Sourcegraph (default true) + + Examples: + + Restart a search job by ID: + + $ src search-jobs restart U2VhcmNoSm9iOjY5 + + Restart a search job and display specific columns: + + $ src search-jobs restart U2VhcmNoSm9iOjY5 -c id,state,query + + Restart a search job and output in JSON format: + + $ src search-jobs restart U2VhcmNoSm9iOjY5 -json + + Available columns are: id, query, state, username, createdat, startedat, finishedat, + url, logurl, total, completed, failed, inprogress + - Available columns are: id, query, state, username, createdat, startedat, finishedat, - url, logurl, total, completed, failed, inprogress ``` + \ No newline at end of file diff --git a/docs/cli/references/search-jobs/results.mdx b/docs/cli/references/search-jobs/results.mdx index bf440909f..bbe049bd9 100644 --- a/docs/cli/references/search-jobs/results.mdx +++ b/docs/cli/references/search-jobs/results.mdx @@ -1,40 +1,53 @@ -# src search-jobs results +# `src search-jobs results` + + +## Flags + +| Name | Description | Default Value | +|------|-------------|---------------| +| `-c` | Comma-separated list of columns to display. Available: id,query,state,username,createdat,startedat,finishedat,url,logurl,total,completed,failed,inprogress | `id,username,state,query` | +| `-dump-requests` | Log GraphQL requests and responses to stdout | `false` | +| `-get-curl` | Print the curl command for executing this query and exit (WARNING: includes printing your access token!) | `false` | +| `-insecure-skip-verify` | Skip validation of TLS certificates against trusted chains | `false` | +| `-json` | Output results as JSON for programmatic access | `false` | +| `-out` | File path to save the results (optional) | | +| `-trace` | Log the trace ID for requests. See https://sourcegraph.com/docs/admin/observability/tracing | `false` | +| `-user-agent-telemetry` | Include the operating system and architecture in the User-Agent sent with requests to Sourcegraph | `true` | -

- `src search-jobs results` is a tool that gets the results of a search job on - a Sourcegraph instance. -

## Usage -```bash +``` Usage of 'src search-jobs results': -c string - Comma-separated list of columns to display. Available: id,query,state,username,createdat,startedat,finishedat,url,logurl,total,completed,failed,inprogress (default "id,username,state,query") + Comma-separated list of columns to display. Available: id,query,state,username,createdat,startedat,finishedat,url,logurl,total,completed,failed,inprogress (default "id,username,state,query") -dump-requests - Log GraphQL requests and responses to stdout + Log GraphQL requests and responses to stdout -get-curl - Print the curl command for executing this query and exit (WARNING: includes printing your access token!) + Print the curl command for executing this query and exit (WARNING: includes printing your access token!) -insecure-skip-verify - Skip validation of TLS certificates against trusted chains + Skip validation of TLS certificates against trusted chains -json - Output results as JSON for programmatic access + Output results as JSON for programmatic access -out string - File path to save the results (optional) + File path to save the results (optional) -trace - Log the trace ID for requests. See https://docs.sourcegraph.com/admin/observability/tracing + Log the trace ID for requests. See https://sourcegraph.com/docs/admin/observability/tracing -user-agent-telemetry - Include the operating system and architecture in the User-Agent sent with requests to Sourcegraph (default true) - - Examples: - - Get the results of a search job: - $ src search-jobs results U2VhcmNoSm9iOjY5 + Include the operating system and architecture in the User-Agent sent with requests to Sourcegraph (default true) - Save search results to a file: - $ src search-jobs results U2VhcmNoSm9iOjY5 -out results.jsonl + Examples: + + Get the results of a search job: + $ src search-jobs results U2VhcmNoSm9iOjY5 + + Save search results to a file: + $ src search-jobs results U2VhcmNoSm9iOjY5 -out results.jsonl + + The results command retrieves the raw search results in JSON Lines format. + Each line contains a single JSON object representing a search result. The data + will be displayed on stdout or written to the file specified with -out. + - The results command retrieves the raw search results in JSON Lines format. - Each line contains a single JSON object representing a search result. The data - will be displayed on stdout or written to the file specified with -out. ``` + \ No newline at end of file diff --git a/docs/cli/references/snapshot.mdx b/docs/cli/references/snapshot.mdx deleted file mode 100644 index b4e7228a8..000000000 --- a/docs/cli/references/snapshot.mdx +++ /dev/null @@ -1,27 +0,0 @@ -# `src snapshot` - - - -## Usage - -``` -'src snapshot' manages snapshots of Sourcegraph instance databases. All subcommands are currently EXPERIMENTAL. - -Usage: - - src snapshot - -The commands are: - - databases export databases from a Sourcegraph instance - restore restore databases from an export - upload upload exported databases and summary file when migrating to Sourcegraph Cloud - - summary export summary data about an instance for acceptance testing of a restored Sourcegraph instance - test use exported summary data and instance health indicators to validate a restored and upgraded instance - -Use "src snapshot [command] -h" for more information about a command. - - -``` - \ No newline at end of file diff --git a/docs/cli/references/snapshot/databases.mdx b/docs/cli/references/snapshot/databases.mdx new file mode 100644 index 000000000..add94ff5c --- /dev/null +++ b/docs/cli/references/snapshot/databases.mdx @@ -0,0 +1,38 @@ +# `src snapshot databases` + + +## Flags + +| Name | Description | Default Value | +|------|-------------|---------------| +| `-run` | Automatically run the commands | `false` | +| `-targets` | predefined targets ('docker' or 'k8s'), or a custom targets.yaml file | `auto` | + + +## Usage + +``` +'src snapshot databases' generates commands to export Sourcegraph database dumps. +Note that these commands are intended for use as reference - you may need to adjust the commands for your deployment. + +USAGE + src [-v] snapshot databases [--targets=] [--run] + +TARGETS FILES + Predefined targets are available based on default Sourcegraph configurations ('docker', 'k8s'). + Custom targets configuration can be provided in YAML format with '--targets=target.yaml', e.g. + + pgsql: + target: ... # the DSN of the database deployment, e.g. in docker, the name of the database container + dbname: ... # name of database + username: ... # username for database access + password: ... # password for database access - only include password if it is non-sensitive + codeintel: + # same as above + codeinsights: + # same as above + + See the pgdump.Targets type for more details. + +``` + \ No newline at end of file diff --git a/docs/cli/references/snapshot/index.mdx b/docs/cli/references/snapshot/index.mdx new file mode 100644 index 000000000..2800134e6 --- /dev/null +++ b/docs/cli/references/snapshot/index.mdx @@ -0,0 +1,11 @@ +# `src snapshot` + +## Subcommands + + +* [`databases`](snapshot/databases) +* [`restore`](snapshot/restore) +* [`summary`](snapshot/summary) +* [`test`](snapshot/test) +* [`upload`](snapshot/upload) + \ No newline at end of file diff --git a/docs/cli/references/snapshot/restore.mdx b/docs/cli/references/snapshot/restore.mdx new file mode 100644 index 000000000..27e3d7c3b --- /dev/null +++ b/docs/cli/references/snapshot/restore.mdx @@ -0,0 +1,38 @@ +# `src snapshot restore` + + +## Flags + +| Name | Description | Default Value | +|------|-------------|---------------| +| `-run` | Automatically run the commands | `false` | +| `-targets` | predefined targets ('docker' or 'k8s'), or a custom targets.yaml file | `auto` | + + +## Usage + +``` +'src snapshot restore' restores a Sourcegraph instance using Sourcegraph database dumps. +Note that these commands are intended for use as reference - you may need to adjust the commands for your deployment. + +USAGE + src [-v] snapshot restore [--targets] [--run] + +TARGETS FILES + Predefined targets are available based on default Sourcegraph configurations ('docker', 'k8s'). + Custom targets configuration can be provided in YAML format with '--targets=target.yaml', e.g. + + pgsql: + target: ... # the DSN of the database deployment, e.g. in docker, the name of the database container + dbname: ... # name of database + username: ... # username for database access + password: ... # password for database access - only include password if it is non-sensitive + codeintel: + # same as above + codeinsights: + # same as above + + See the pgdump.Targets type for more details. + +``` + \ No newline at end of file diff --git a/docs/cli/references/snapshot/summary.mdx b/docs/cli/references/snapshot/summary.mdx new file mode 100644 index 000000000..db568e9ac --- /dev/null +++ b/docs/cli/references/snapshot/summary.mdx @@ -0,0 +1,28 @@ +# `src snapshot summary` + + +## Flags + +| Name | Description | Default Value | +|------|-------------|---------------| +| `-dump-requests` | Log GraphQL requests and responses to stdout | `false` | +| `-get-curl` | Print the curl command for executing this query and exit (WARNING: includes printing your access token!) | `false` | +| `-insecure-skip-verify` | Skip validation of TLS certificates against trusted chains | `false` | +| `-trace` | Log the trace ID for requests. See https://sourcegraph.com/docs/admin/observability/tracing | `false` | +| `-user-agent-telemetry` | Include the operating system and architecture in the User-Agent sent with requests to Sourcegraph | `true` | + + +## Usage + +``` +'src snapshot summary' generates summary data for acceptance testing of a restored Sourcegraph instance with 'src snapshot test'. + +USAGE + src login # site-admin authentication required + src [-v] snapshot summary + +SUMMARY DATA + Use '-dump-requests' to see what data is requested, or open the generated summary at "src-snapshot/summary.json". + +``` + \ No newline at end of file diff --git a/docs/cli/references/snapshot/test.mdx b/docs/cli/references/snapshot/test.mdx new file mode 100644 index 000000000..333790a4e --- /dev/null +++ b/docs/cli/references/snapshot/test.mdx @@ -0,0 +1,38 @@ +# `src snapshot test` + + +## Flags + +| Name | Description | Default Value | +|------|-------------|---------------| +| `-dump-requests` | Log GraphQL requests and responses to stdout | `false` | +| `-get-curl` | Print the curl command for executing this query and exit (WARNING: includes printing your access token!) | `false` | +| `-insecure-skip-verify` | Skip validation of TLS certificates against trusted chains | `false` | +| `-since` | duration ago to look for healthcheck data | `1h0m0s` | +| `-summary-path` | path to read snapshot summary from | `src-snapshot/summary.json` | +| `-trace` | Log the trace ID for requests. See https://sourcegraph.com/docs/admin/observability/tracing | `false` | +| `-user-agent-telemetry` | Include the operating system and architecture in the User-Agent sent with requests to Sourcegraph | `true` | + + +## Usage + +``` +'src snapshot test' uses exported summary data to validate a restored and upgraded instance. + +USAGE + src login # site-admin authentication required + src [-v] snapshot test [-summary-path="./src-snapshot-summary.json"] + +ASSESSING RESULTS + The outputs of the test is supposed to be used only as a reference indicator of whether or not the instance is in a healthy state. + + It generally does not give a definitive result, though if an issue is found that the test deems may be critical, the command will exit with status 1. + +SNAPSHOT SUMMARY + The snapshot summary to assert against ('-summary-path') should be generated by 'src snapshot summary'. + +TEST DATA + Use '-dump-requests' to see what data is requested to perform tests. + +``` + \ No newline at end of file diff --git a/docs/cli/references/snapshot/upload.mdx b/docs/cli/references/snapshot/upload.mdx new file mode 100644 index 000000000..99c945565 --- /dev/null +++ b/docs/cli/references/snapshot/upload.mdx @@ -0,0 +1,52 @@ +# `src snapshot upload` + + +## Flags + +| Name | Description | Default Value | +|------|-------------|---------------| +| `-bucket` | Name of the Google Cloud Storage bucket provided by Sourcegraph | | +| `-credentials` | File path to the credentials file provided by Sourcegraph | | +| `-file` | Specify which files from the ./src-snapshot directory to upload | `codeinsights.sql,codeintel.sql,pgsql.sql,summary.json` | +| `-filter-sql` | Filter incompatible SQL statements from database snapshots which break the import into Google Cloud SQL | `true` | + + +## Usage + +``` +'src snapshot upload' uploads the files generated by 'src snapshot databases' and 'src snapshot summary' to the specified GCS bucket, for self-hosted Sourcegraph customers migrating to Sourcegraph Cloud. + +Usage: + + src snapshot upload -bucket=$MIGRATION_BUCKET_NAME -credentials=$CREDENTIALS_FILE_PATH [-file] + +Examples: + + src snapshot upload -bucket=example-bucket-name -credentials=path/to/migration_private_key.json + + src snapshot upload -bucket=example-bucket-name -credentials=./migration_private_key.json -file=pgsql.sql + + src snapshot upload -bucket=example-bucket-name -credentials=./migration_private_key.json -file="codeinsights.sql, codeintel.sql, pgsql.sql" + +Args: + + -bucket + Name of the Google Cloud Storage bucket provided by Sourcegraph + Required + Type: string + + -credentials + File path to the credentials file provided by Sourcegraph + Required + Type: file path, as string + + -file + Specify which files from the ./src-snapshot directory to upload + Optional + Type: comma-delimited list of file names, with file-type extensions, as a string + Valid values: codeinsights.sql, codeintel.sql, pgsql.sql, summary.json + Default: All valid values + + +``` + \ No newline at end of file diff --git a/docs/cli/references/teams.mdx b/docs/cli/references/teams.mdx deleted file mode 100644 index 5abc51d07..000000000 --- a/docs/cli/references/teams.mdx +++ /dev/null @@ -1,26 +0,0 @@ -# `src teams` - - - -## Usage - -``` -'src teams' is a tool that manages teams in a Sourcegraph instance. - -Usage: - - src teams command [command options] - -The commands are: - - list lists teams - create create a team - update update a team - delete delete a team - members manage team members, use "src teams members [command] -h" for more information. - -Use "src teams [command] -h" for more information about a command. - - -``` - \ No newline at end of file From b31fbaa98c9d72f1fd69c6159cbcb30063aad83c Mon Sep 17 00:00:00 2001 From: Marc <7050295+marcleblanc2@users.noreply.github.com> Date: Fri, 11 Sep 2026 01:44:08 -0600 Subject: [PATCH 202/217] cspell: drop resolved allow-list entries, allow words that escaped the PR check (#1911) --- .gitignore | 4 +--- cspell-allow-list.txt | 16 ++++++++-------- 2 files changed, 9 insertions(+), 11 deletions(-) diff --git a/.gitignore b/.gitignore index 5b5f39851..4fb487043 100644 --- a/.gitignore +++ b/.gitignore @@ -46,9 +46,6 @@ next-env.d.ts # We ignore the generated file as it should always be generated public/changelog.rss -# script output -/logs - # env file .env @@ -57,4 +54,5 @@ public/changelog.rss public/technical-changelog.rss +# script output logs/ diff --git a/cspell-allow-list.txt b/cspell-allow-list.txt index e5d99ffcd..30f46c08f 100644 --- a/cspell-allow-list.txt +++ b/cspell-allow-list.txt @@ -13,17 +13,9 @@ VXNlcjox # Base64-encoded GraphQL ID "SearchJob:1" U2VhcmNoSm9iOjY5 -# base64 for `RegistryExtension:` in synced / generated file `docs/cli/references/extensions/delete.mdx` -# The twist is that the command it documents doesn't exist anymore -# TODO: Delete docs for commands which no longer exist -# TODO: Remove after merging -UmVnaXN0cnlFeHRlbnNpb246 - # Fragments of truncated shell output in examples actr autol -eror # TODO: Remove after merging 1884 -functio # TODO: Remove after merging 1885 ified mtok pousr @@ -188,6 +180,7 @@ dumpall eastus eksctl ELEC +elif emailaddress encrypter Enry @@ -345,6 +338,7 @@ myteam myvalue nameid nameopt +navigations NETRC nodeport noeviction @@ -395,6 +389,7 @@ pgbouncer pgcrypto PGDATABASE PGDATASOURCE +pgdump PGHOST PGPASSWORD PGPORT @@ -412,6 +407,7 @@ pooler PREEMPTIBLE preg premade +prerendered Príncipe privkey projectname @@ -479,6 +475,7 @@ showcerts SIEM sigalg SLES +slurpfile Snek snekpm somerandom @@ -498,6 +495,7 @@ standardly starcoder Starlark startedat +startswith statefulsets stepscontainer stepsenv @@ -582,6 +580,7 @@ vegeta vercel Verilog VHDL +Viktor vscodesourcegraph waitlist Weaveworks @@ -589,6 +588,7 @@ winsize workspacesin workspacesonlyfetchworkspace workspacesrootatlocationof +worktree XGET xlarge yourorgname From ac3dc45bc364065519ccc608d006552bcf3919cb Mon Sep 17 00:00:00 2001 From: Marc <7050295+marcleblanc2@users.noreply.github.com> Date: Fri, 11 Sep 2026 02:05:09 -0600 Subject: [PATCH 203/217] Pin pnpm 10.25.0 and Node 20.x in package.json (#1906) --- package.json | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/package.json b/package.json index 389346a57..0649e4657 100644 --- a/package.json +++ b/package.json @@ -2,6 +2,10 @@ "name": "sourcegraph-docs", "version": "0.1.0", "private": true, + "packageManager": "pnpm@10.25.0", + "engines": { + "node": "20.x" + }, "scripts": { "dev": "next dev", "build": "next build", From 5ff2322d93a1628cc4a26d205e1d2f7782cc1408 Mon Sep 17 00:00:00 2001 From: Marc <7050295+marcleblanc2@users.noreply.github.com> Date: Fri, 11 Sep 2026 02:40:51 -0600 Subject: [PATCH 204/217] Remove duplicated docs build check executions (#1908) --- AGENTS.md | 3 ++- dev/checks.mjs | 59 ++++++++++++++++++++++++++++++++++++++++++++++++++ next.config.js | 10 +-------- package.json | 8 +++---- 4 files changed, 65 insertions(+), 15 deletions(-) create mode 100644 dev/checks.mjs diff --git a/AGENTS.md b/AGENTS.md index 6c6ea676e..580711718 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -6,7 +6,8 @@ - **Build**: `npm run build` - **Dev**: `npm run dev` - **Lint**: `npm run lint` -- **Check links**: `npm run check-links -- --check-anchors --check-self-links` (CI comments on PRs that break links; see `dev/check-links.mjs`; `next build` runs it without flags, so only dead page links fail a deploy). When moving a page or renaming a heading, update every link to it; a redirect in `src/data/redirects.ts` does not satisfy the check. Link to this site with relative paths (`/admin/config/site-config`), never `https://sourcegraph.com/docs/…` or `https://docs.sourcegraph.com/…`. To also probe the external links you added: `npm run check-links -- --check-anchors --check-self-links --check-external --diff <(git diff -U0 origin/main)` +- **Checks**: `npm run check` runs every `dev/check-*.mjs` (links, filenames, images); `npm run build` runs them first, so any finding fails a deploy +- **Check links**: `npm run check -- links --check-anchors --check-self-links` (CI comments on PRs that break links; see `dev/check-links.mjs`; the build runs it without flags, so only dead page links fail a deploy). When moving a page or renaming a heading, update every link to it; a redirect in `src/data/redirects.ts` does not satisfy the check. Link to this site with relative paths (`/admin/config/site-config`), never `https://sourcegraph.com/docs/…` or `https://docs.sourcegraph.com/…`. To also probe the external links you added: `npm run check -- links --check-anchors --check-self-links --check-external --diff <(git diff -U0 origin/main)` - **Prove changed links resolve on a deploy**: `node dev/verify-links-live.mjs --site ` prints a Markdown table for the PR description ## AI Chat Integration diff --git a/dev/checks.mjs b/dev/checks.mjs new file mode 100644 index 000000000..c947a9521 --- /dev/null +++ b/dev/checks.mjs @@ -0,0 +1,59 @@ +#!/usr/bin/env node + +/** + * Runs the docs checks in dev/check-*.mjs. `npm run build` runs them all + * before `next build`. + * + * Usage: node dev/checks.mjs [check ...] [flags] + * node dev/checks.mjs every check + * node dev/checks.mjs links filenames only those + * node dev/checks.mjs links --check-anchors flags go to that one check + * + * Every check runs even when an earlier one fails; exits 1 if any failed. + */ + +import {spawnSync} from 'child_process'; +import path from 'path'; +import {fileURLToPath} from 'url'; + +const __dirname = path.dirname(fileURLToPath(import.meta.url)); + +const CHECKS = { + links: 'check-links.mjs', + filenames: 'check-filenames.mjs', + images: 'check-images.mjs' +}; + +const args = process.argv.slice(2); +const names = []; +while (args.length > 0 && CHECKS[args[0]]) { + names.push(args.shift()); +} +const flags = args; + +if (flags.length > 0 && !flags[0].startsWith('-')) { + console.error( + `Unknown check "${flags[0]}"; use ${Object.keys(CHECKS).join(', ')}` + ); + process.exit(1); +} +if (flags.length > 0 && names.length !== 1) { + console.error( + `Flags ${flags.join(' ')} need exactly one check to apply to` + ); + process.exit(1); +} + +const failed = []; +for (const name of names.length > 0 ? names : Object.keys(CHECKS)) { + const script = path.join(__dirname, CHECKS[name]); + const {status} = spawnSync(process.execPath, [script, ...flags], { + stdio: 'inherit' + }); + if (status !== 0) failed.push(name); +} + +if (failed.length > 0) { + console.error(`\n❌ Failed checks: ${failed.join(', ')}`); + process.exit(1); +} diff --git a/next.config.js b/next.config.js index 8e71169ab..caaefd0a2 100644 --- a/next.config.js +++ b/next.config.js @@ -1,5 +1,4 @@ const {withContentlayer} = require('next-contentlayer'); -const {execSync} = require('child_process'); /** @type {import('next').NextConfig} */ const nextConfig = { @@ -18,11 +17,4 @@ const nextConfig = { } }; -module.exports = async () => { - // placing this here so its part of nextjs's build process - execSync('node dev/check-links.mjs', {stdio: 'inherit'}); - execSync('node dev/check-filenames.mjs', {stdio: 'inherit'}); - execSync('node dev/check-images.mjs', {stdio: 'inherit'}); - execSync('node dev/generate-mermaid-icons.mjs', {stdio: 'inherit'}); - return withContentlayer(nextConfig); -}; +module.exports = withContentlayer(nextConfig); diff --git a/package.json b/package.json index 0649e4657..44114c96e 100644 --- a/package.json +++ b/package.json @@ -8,13 +8,11 @@ }, "scripts": { "dev": "next dev", - "build": "next build", + "build": "node dev/checks.mjs && node dev/generate-mermaid-icons.mjs && next build", "start": "next start", "lint": "next lint", - "check-links": "node dev/check-links.mjs", - "check-filenames": "node dev/check-filenames.mjs", - "check-images": "node dev/check-images.mjs", - "generate-mermaid-logos": "node dev/generate-aws-icons.mjs", + "check": "node dev/checks.mjs", + "generate-mermaid-logos": "node dev/generate-mermaid-icons.mjs", "format": "prettier --config ./prettier.config.js --cache --cache-strategy metadata --write=true '**/{*.{js?(on),ts?(x),md,mdx,s?css},.*.js?(on)}'" }, "browserslist": "defaults, not ie <= 11", From 3b6a4f85179a41e3b4eebd2653b301f3ec732aee Mon Sep 17 00:00:00 2001 From: Marc <7050295+marcleblanc2@users.noreply.github.com> Date: Fri, 11 Sep 2026 03:29:48 -0600 Subject: [PATCH 205/217] CSpell review: leave no orphaned review body once findings are fixed (#1903) --- cspell-allow-list.txt | 1 + dev/post-spelling-review.mjs | 85 +++++++++++++++++++++++------------- 2 files changed, 55 insertions(+), 31 deletions(-) diff --git a/cspell-allow-list.txt b/cspell-allow-list.txt index 30f46c08f..9b26c3c7c 100644 --- a/cspell-allow-list.txt +++ b/cspell-allow-list.txt @@ -568,6 +568,7 @@ unibeautify unindexed unioned unmigrated +unminimize untar updatecheck upperand diff --git a/dev/post-spelling-review.mjs b/dev/post-spelling-review.mjs index 467fbb12b..38d18a88e 100644 --- a/dev/post-spelling-review.mjs +++ b/dev/post-spelling-review.mjs @@ -2,7 +2,10 @@ /** * Reports CSpell findings on a pull request: one summary comment in the - * discussion, plus an inline review comment on each flagged line. + * discussion, plus an inline review comment on each flagged line. Once the + * findings are fixed, the summary is minimized as resolved and the inline + * comments are deleted; the review that carried them has no body, so nothing + * of it remains visible. * * Usage: node dev/post-spelling-review.mjs --findings [--dry-run] * @@ -66,6 +69,26 @@ async function githubWrite(method, route, body) { } } +// Minimizing a comment is GraphQL-only. Both mutations are idempotent. +async function setCommentMinimized(nodeId, minimized) { + const mutation = minimized + ? 'minimizeComment(input: {subjectId: $id, classifier: RESOLVED}) { clientMutationId }' + : 'unminimizeComment(input: {subjectId: $id}) { clientMutationId }'; + console.log( + `${DRY_RUN ? '[dry-run] ' : ''}${minimized ? 'minimize' : 'unminimize'} comment ${nodeId}` + ); + if (DRY_RUN) { + return; + } + const result = await github('POST', '/graphql', { + query: `mutation ($id: ID!) { ${mutation} }`, + variables: {id: nodeId} + }); + if (result.errors) { + throw new Error(`GraphQL failed: ${JSON.stringify(result.errors)}`); + } +} + function groupByFile(findings) { const grouped = new Map(); for (const finding of findings) { @@ -83,6 +106,11 @@ function summaryBody(findings) { `### ⚠️ CSpell found ${findings.length} spelling error(s) in this PR`, '', 'Only findings on lines added by this PR are shown.', + ...(findings.length > MAX_INLINE_COMMENTS + ? [ + `Up to ${MAX_INLINE_COMMENTS} of them are also commented inline.` + ] + : []), '' ]; for (const [file, fileFindings] of groupByFile(findings)) { @@ -111,29 +139,30 @@ async function upsertSummaryComment(findings) { comment.body.startsWith(SUMMARY_MARKER) ); - // Comment only when there is something to report, or an earlier report to resolve - let body; - if (findings.length > 0) { - body = summaryBody(findings); - } else if (existing) { - body = `${SUMMARY_MARKER}\n### ✅ The spelling errors reported on an earlier revision are fixed\n`; - } else { + if (!existing) { + if (findings.length > 0) { + await githubWrite( + 'POST', + `/repos/${REPOSITORY}/issues/${PR_NUMBER}/comments`, + {body: summaryBody(findings)} + ); + } return; } - if (existing) { - await githubWrite( - 'PATCH', - `/repos/${REPOSITORY}/issues/comments/${existing.id}`, - {body} - ); - } else { - await githubWrite( - 'POST', - `/repos/${REPOSITORY}/issues/${PR_NUMBER}/comments`, - {body} - ); - } + // Keep the earlier report, collapsed as resolved, so the discussion still + // shows what was flagged and fixed. Reopen it when new findings appear. + const resolved = findings.length === 0; + await githubWrite( + 'PATCH', + `/repos/${REPOSITORY}/issues/comments/${existing.id}`, + { + body: resolved + ? `${SUMMARY_MARKER}\n### ✅ The spelling errors reported on an earlier revision are fixed\n` + : summaryBody(findings) + } + ); + await setCommentMinimized(existing.node_id, resolved); } function findingKey({file, line, word}) { @@ -187,13 +216,6 @@ function inlineBody(finding) { ].join('\n'); } -function reviewBody(shown, total) { - const summary = `CSpell found ${total} spelling error(s) on lines added by this PR. Please correct them, or add them to ${ALLOW_LIST_LINK} if they are correct.`; - return shown < total - ? `${summary} The first ${shown} are commented inline; the summary comment lists them all.` - : summary; -} - async function syncInlineComments(findings) { const wanted = new Map( findings.map(finding => [findingKey(finding), finding]) @@ -221,15 +243,16 @@ async function syncInlineComments(findings) { if (fresh.length === 0) { return; } - const shown = fresh.slice(0, MAX_INLINE_COMMENTS); + // No review body: the inline comments say it all, and a submitted review + // cannot be deleted, so a body would outlive the comments once fixed. await githubWrite( 'POST', `/repos/${REPOSITORY}/pulls/${PR_NUMBER}/reviews`, { commit_id: HEAD_SHA, event: 'COMMENT', - body: reviewBody(shown.length, fresh.length), - comments: shown.map(finding => ({ + body: '', + comments: fresh.slice(0, MAX_INLINE_COMMENTS).map(finding => ({ path: finding.file, line: finding.line, side: 'RIGHT', From fdb83237a7ac751082614dbad948b18a226405c7 Mon Sep 17 00:00:00 2001 From: Marc <7050295+marcleblanc2@users.noreply.github.com> Date: Fri, 11 Sep 2026 05:54:16 -0600 Subject: [PATCH 206/217] spell check: link summary items to the source, shorten them, flag unsorted dictionary entries (#1917) --- dev/check-spelling.mjs | 70 +++++++++++++++++++++++++++++------- dev/post-spelling-review.mjs | 50 ++++++++++++++++++++------ 2 files changed, 96 insertions(+), 24 deletions(-) diff --git a/dev/check-spelling.mjs b/dev/check-spelling.mjs index 733949636..cf07ab1c9 100644 --- a/dev/check-spelling.mjs +++ b/dev/check-spelling.mjs @@ -1,7 +1,8 @@ #!/usr/bin/env node /** - * Reports CSpell findings on lines added by a Git diff. + * Reports CSpell findings on lines added by a Git diff, and dictionary entries + * added out of alphabetical order. * * Usage: node dev/check-spelling.mjs --base [--format text|json] * @@ -10,6 +11,7 @@ */ import {execFileSync, spawnSync} from 'child_process'; +import {readFileSync} from 'fs'; import path from 'path'; import {fileURLToPath} from 'url'; @@ -87,11 +89,51 @@ function runCSpell(files) { column: issue.col, word: issue.text, suggestions: issue.suggestions?.slice(0, 3) ?? [], - text: issue.line.text.replace(/\r?\n$/, ''), - context: issue.context?.text.trim() ?? issue.line.text.trim() + text: issue.line.text.replace(/\r?\n$/, '') })); } +// Entries in the dictionary files must be sorted, so duplicates stand out and +// merges are clean. Sorted the way CSpell matches: case- and accent-insensitive. +// Blank lines and comments start a new sorted run, so the lists can be sectioned. +const DICTIONARY_FILES = ['cspell-allow-list.txt', 'cspell-block-list.txt']; +const collator = new Intl.Collator('en', {sensitivity: 'base'}); + +function unsortedDictionaryEntries(files) { + const findings = []; + for (const file of files.filter(file => DICTIONARY_FILES.includes(file))) { + let run = []; // [{word, line}] of the current sorted run + readFileSync(file, 'utf8') + .split('\n') + .forEach((text, index) => { + if (/^\s*(#|$)/.test(text)) { + run = []; + return; + } + const word = text.replace(/\s*#.*/, '').trim(); + const line = index + 1; + const belongsBefore = run.find( + entry => collator.compare(word, entry.word) < 0 + ); + if (belongsBefore) { + findings.push({ + file, + line, + column: 1, + word, + suggestions: [], + text, + message: `\`${word}\` is out of alphabetical order: move it above \`${belongsBefore.word}\``, + relatedLine: belongsBefore.line // rendered as a link after the message + }); + } else { + run.push({word, line}); + } + }); + } + return findings; +} + function findingsOnAddedLines(ranges, issues) { return issues.filter(issue => (ranges.get(issue.file) ?? []).some( @@ -102,16 +144,17 @@ function findingsOnAddedLines(ranges, issues) { function formatText(findings) { if (findings.length === 0) { - return 'No spelling errors found in added lines.\n'; + return 'No issues found in added lines.\n'; } const lines = [ - `Found ${findings.length} spelling error(s) in added lines:` + `Found ${findings.length} issue(s) in added lines:` ]; - for (const finding of findings) { - lines.push( - `${finding.file}:${finding.line}:${finding.column} - Unknown word (${finding.word})` - ); + for (const {file, line, column, word, message, relatedLine} of findings) { + const detail = message + ? `${message}${relatedLine ? ` on line ${relatedLine}` : ''}` + : `Unknown word (${word})`; + lines.push(`${file}:${line}:${column} - ${detail}`); } return lines.join('\n') + '\n'; } @@ -125,10 +168,11 @@ async function main() { } const ranges = addedLineRanges(BASE); - const findings = findingsOnAddedLines( - ranges, - runCSpell([...ranges.keys()]) - ); + const files = [...ranges.keys()]; + const findings = findingsOnAddedLines(ranges, [ + ...runCSpell(files), + ...unsortedDictionaryEntries(files) + ]); process.stdout.write( FORMAT === 'json' ? JSON.stringify(findings, null, '\t') + '\n' diff --git a/dev/post-spelling-review.mjs b/dev/post-spelling-review.mjs index 38d18a88e..94eacb399 100644 --- a/dev/post-spelling-review.mjs +++ b/dev/post-spelling-review.mjs @@ -100,10 +100,35 @@ function groupByFile(findings) { return grouped; } +// Source view (?plain=1, so Markdown is not rendered) with the word highlighted +function sourceLink(finding) { + const {file, line, column, word} = finding; + const end = column + word.length; + return `https://github.com/${REPOSITORY}/blob/${HEAD_REF}/${file}?plain=1#L${line}C${column}-L${line}C${end}`; +} + +// A non-spelling finding's own message, e.g. an unsorted dictionary entry, +// pointing at its `relatedLine` when it has one +function messageText(finding) { + const {file, message, relatedLine} = finding; + if (!relatedLine) return `${message}.`; + const url = `https://github.com/${REPOSITORY}/blob/${HEAD_REF}/${file}?plain=1#L${relatedLine}`; + return `${message} on [line ${relatedLine}](${url}).`; +} + +// `word` → `suggestion`, or the finding's own message +function summaryItem(finding) { + if (finding.message) { + return messageText(finding); + } + const suggestion = bestSuggestion(finding); + return `\`${finding.word}\`${suggestion ? ` → \`${suggestion}\`` : ''}`; +} + function summaryBody(findings) { const lines = [ SUMMARY_MARKER, - `### ⚠️ CSpell found ${findings.length} spelling error(s) in this PR`, + `### ⚠️ Spell check found ${findings.length} issue(s) in this PR`, '', 'Only findings on lines added by this PR are shown.', ...(findings.length > MAX_INLINE_COMMENTS @@ -115,10 +140,11 @@ function summaryBody(findings) { ]; for (const [file, fileFindings] of groupByFile(findings)) { lines.push(`**\`${file}\`**`); - for (const {line, column, word, context} of fileFindings) { - const excerpt = context.replaceAll('`', "'").slice(0, 160); + for (const finding of fileFindings) { + const {line, column} = finding; lines.push( - `- line ${line}, column ${column}: \`${word}\` — \`${excerpt}\`` + `- [line ${line}, column ${column}](${sourceLink(finding)})`, + ` - ${summaryItem(finding)}` ); } lines.push(''); @@ -207,13 +233,15 @@ function suggestionBlock(finding) { } function inlineBody(finding) { - return [ - `${INLINE_MARKER} ${finding.word} -->`, - `\`${finding.word}\` is not in the dictionary.`, - '', - ...suggestionBlock(finding), - `Please correct the spelling, or add the word to ${ALLOW_LIST_LINK} if it is correct.` - ].join('\n'); + const explanation = finding.message + ? [messageText(finding)] + : [ + `\`${finding.word}\` is not in the dictionary.`, + '', + ...suggestionBlock(finding), + `Please correct the spelling, or add the word to ${ALLOW_LIST_LINK} if it is correct.` + ]; + return [`${INLINE_MARKER} ${finding.word} -->`, ...explanation].join('\n'); } async function syncInlineComments(findings) { From d94b4603787bb1d36c083ceb715033e5c7459aba Mon Sep 17 00:00:00 2001 From: Marc <7050295+marcleblanc2@users.noreply.github.com> Date: Fri, 11 Sep 2026 08:48:56 -0600 Subject: [PATCH 207/217] Stop bundling the docs corpus into the client JS (24 MB chunk) (#1915) --- src/app/[...slug]/page.tsx | 1 + src/components/ContentTabs.jsx | 68 -------------------------------- src/components/MdxComponents.tsx | 3 -- src/components/Toc.tsx | 25 ++---------- 4 files changed, 5 insertions(+), 92 deletions(-) delete mode 100644 src/components/ContentTabs.jsx diff --git a/src/app/[...slug]/page.tsx b/src/app/[...slug]/page.tsx index 4128dc0d5..ada2a241d 100644 --- a/src/app/[...slug]/page.tsx +++ b/src/app/[...slug]/page.tsx @@ -68,6 +68,7 @@ const PostLayout = ({params}: Props) => { ); diff --git a/src/components/ContentTabs.jsx b/src/components/ContentTabs.jsx deleted file mode 100644 index 81c2b0381..000000000 --- a/src/components/ContentTabs.jsx +++ /dev/null @@ -1,68 +0,0 @@ -'use client'; - -import { useState, useEffect } from 'react'; -import { getMDXComponent } from 'next-contentlayer/hooks'; -import clsx from 'clsx'; -import { useParams, useRouter } from 'next/navigation'; -import { allPosts } from 'contentlayer/generated'; -import MdxComponents from '@/components/MdxComponents'; - -export function ContentTabs({ children, name }) { - const params = useParams(); - const router = useRouter(); - const [onTab, setOnTab] = useState(true) - const [selectedTab, setSelectedTab] = useState(null); - const [postContent, setPostContent] = useState(null); - - useEffect(() => { - updateTabFromURL(); - }, []); - - const updateTabFromURL = () => { - - const path = `/${params.slug.join('/')}`; - const allPaths = children.map(child => child.props.href) - - if (!allPaths.includes(path)) { - setSelectedTab(allPaths[0]) - const selectedPost = allPosts.find(post => `/${post._raw.flattenedPath}` === allPaths[0] && name == 'main'); - - if (selectedPost) { - const Content = getMDXComponent(selectedPost.body.code); - setPostContent(); - setOnTab(false) - - const url = new URL(window.location.href); - url.pathname = allPaths[0]; - window.history.replaceState(null, null, url.toString()); - console.log('allPaths__', allPaths[0]) - } - } else setSelectedTab(path) - }; - - if (!onTab) return
{postContent}
- - return ( -
-
- {children.map((child, index) => ( - - ))} -
-
{postContent}
-
- ); -} - -export function ContentTab({ title, href, selected }) { - return null; -} diff --git a/src/components/MdxComponents.tsx b/src/components/MdxComponents.tsx index c7f2fed10..b898d58a0 100644 --- a/src/components/MdxComponents.tsx +++ b/src/components/MdxComponents.tsx @@ -1,5 +1,4 @@ import AWSOneClickLaunchForm from './AWSOneClickLaunchForm'; -import {ContentTab, ContentTabs} from './ContentTabs'; import FeatureParity from './FeatureParity'; import Accordion from './mdx/Accordion'; import {Callout} from './mdx/Callout'; @@ -23,8 +22,6 @@ const MdxComponents = (version?: string) => { ResourceEstimator, AWSOneClickLaunchForm, Accordion, - ContentTabs: (props: any) => , - ContentTab: (props: any) => , Tabs: (props: any) => , Tab: (props: any) => , QuickLinks, diff --git a/src/components/Toc.tsx b/src/components/Toc.tsx index b97adb983..9d037c197 100644 --- a/src/components/Toc.tsx +++ b/src/components/Toc.tsx @@ -1,7 +1,6 @@ 'use client'; import clsx from 'clsx'; -import {allPosts} from 'contentlayer/generated'; import Link from 'next/link'; import {useParams} from 'next/navigation'; import {useCallback, useEffect, useState} from 'react'; @@ -18,16 +17,16 @@ interface Heading { interface Props { headings: Heading[]; rawMarkdown?: string; + /** Source file path under docs/, for the "Edit this page" link. */ + editPath: string; } type ParamsType = { - version?: string; slug: string[]; }; -export function TableOfContents({headings, rawMarkdown}: Props) { +export function TableOfContents({headings, rawMarkdown, editPath}: Props) { let [currentSection, setCurrentSection] = useState(headings[0]?.id); - const [path, setPath] = useState(''); const [copied, setCopied] = useState(false); const params: ParamsType = useParams(); const basePath = process.env.NEXT_PUBLIC_DOCS_BASE_PATH || ''; @@ -63,22 +62,6 @@ export function TableOfContents({headings, rawMarkdown}: Props) { .filter((x): x is {id: string; top: number} => x !== null); }, []); - useEffect(() => { - const path = params.slug.join('/'); - - if (allPosts) { - const post = allPosts.find( - post => post._raw.flattenedPath === path - ); - if (post) { - let currentPath = post._id; - if (params?.version) - currentPath = `versioned/${params.version}/${currentPath}`; - setPath(currentPath); - } - } - }, [params]); - useEffect(() => { if (headings.length === 0) return; @@ -165,7 +148,7 @@ export function TableOfContents({headings, rawMarkdown}: Props) {
Date: Fri, 11 Sep 2026 08:57:56 -0600 Subject: [PATCH 208/217] fix/site: Strip basePath from 404 page referrer link (#1902) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Follow-up to #1887, found while smoke-testing production after today's merges. ## Problem On production the 404 page's "Go back to" link (built from `document.referrer`) rendered as **Go back to /docs/cli** with href **/docs/docs/cli**. `document.referrer` keeps the `/docs` basePath and `next/link` adds it again. The same code would also link a same-origin non-docs referrer (`sourcegraph.com/pricing`) into the docs. Vercel previews serve at the root with an empty basePath, so #1887's preview could not show this. ## Fix Strip `NEXT_PUBLIC_DOCS_BASE_PATH` from the referrer pathname; ignore referrers outside the docs and the docs root (the home link already covers it). ## Verification Local production build (`VERCEL_ENV=production pnpm build && pnpm start`, Node 20) checked with headless Chrome on `/docs/cli/references/prompts` (a removed page): | Referrer | Before | After | |---|---|---| | `/docs/cli` | Go back to /docs/cli → `/docs/docs/cli` | Go back to /cli → `/docs/cli` | | `/docs/cli?x=1` | – | Go back to /cli → `/docs/cli?x=1` | | `/pricing` (same origin, not docs) | Go back to /pricing → `/docs/pricing` | no back link | | `/docs/` (root) | Go back to /docs/ → `/docs/docs/` | no back link | | none | no back link | no back link | "Go up to /cli/references" and "Go back home" unchanged in every case. Client-side navigation to a 404 (which uses `usePreviousPathname`, not the referrer) was already correct on production and is untouched. `npx tsc --noEmit` (my file clean; pre-existing `contentlayer/generated` errors before a build), `next lint`, and prettier pass. ## Amp thread - [Merge PRs in series and smoke-test production](https://ampcode.com/threads/T-01a08e26-0c39-723b-95ad-65455002f541) Co-authored-by: Amp --------- Co-authored-by: Amp Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> --- src/components/NotFoundLinks.tsx | 38 ++++++++++++++++++++------------ 1 file changed, 24 insertions(+), 14 deletions(-) diff --git a/src/components/NotFoundLinks.tsx b/src/components/NotFoundLinks.tsx index fefe9f714..9d532cb7b 100644 --- a/src/components/NotFoundLinks.tsx +++ b/src/components/NotFoundLinks.tsx @@ -22,20 +22,35 @@ function nearestExistingAncestor( return null; } -// The page the user came from on a fresh page load, only when it is on this -// site. document.referrer does not change on client-side navigations, so -// those are covered by usePreviousPathname instead. -function sameOriginReferrer(): URL | null { +// Production serves the docs under /docs (basePath in next.config.js). +const basePath = process.env.NEXT_PUBLIC_DOCS_BASE_PATH || ''; + +interface PageLink { + href: string; + pathname: string; +} + +// The docs page the user came from on a fresh page load. document.referrer +// keeps the basePath, which next/link adds again, so strip it here; pages on +// the same origin outside the docs (sourcegraph.com/pricing) do not count. +// document.referrer does not change on client-side navigation, so those are +// covered by usePreviousPathname instead. +function docsReferrer(): PageLink | null { if (!document.referrer) return null; const referrer = new URL(document.referrer); - return referrer.origin === window.location.origin ? referrer : null; + if (referrer.origin !== window.location.origin) return null; + if (!referrer.pathname.startsWith(`${basePath}/`)) return null; + const pathname = referrer.pathname.slice(basePath.length); + // The home link already covers the root. + if (pathname === '/') return null; + return {href: pathname + referrer.search + referrer.hash, pathname}; } export function NotFoundLinks({pagePaths}: {pagePaths: string[]}) { const pathname = usePathname(); const previousPathname = usePreviousPathname(); const [ancestor, setAncestor] = useState(null); - const [referrer, setReferrer] = useState(null); + const [referrer, setReferrer] = useState(null); const pagePathSet = useMemo(() => new Set(pagePaths), [pagePaths]); // Both values depend on the browser URL, which the statically prerendered @@ -43,7 +58,7 @@ export function NotFoundLinks({pagePaths}: {pagePaths: string[]}) { // mismatch. useEffect(() => { setAncestor(nearestExistingAncestor(pathname, pagePathSet)); - setReferrer(sameOriginReferrer()); + setReferrer(docsReferrer()); }, [pathname, pagePathSet]); // The previous pathname may itself have been a 404. @@ -54,14 +69,9 @@ export function NotFoundLinks({pagePaths}: {pagePaths: string[]}) { // Prefer the in-app history over document.referrer, which goes stale on // client-side navigations. - const backLink = previousPage + const backLink: PageLink | null = previousPage ? {href: previousPage, pathname: previousPage} - : referrer - ? { - href: referrer.pathname + referrer.search + referrer.hash, - pathname: referrer.pathname - } - : null; + : referrer; // Skip the up link when it would repeat the back link. const upLink = From c73a86183b36624dd8a142e0639ce43a693c4667 Mon Sep 17 00:00:00 2001 From: Enrique Gonzalez Date: Fri, 11 Sep 2026 09:41:43 -0700 Subject: [PATCH 209/217] chore: upgrade docs build to Node 24 (#1922) Amp-Thread-ID: https://ampcode.com/threads/T-01a0913e-aa86-722e-9fa4-ca067d802b46 ## Summary * Upgrades node version to 24 * moves from contentlayer to [contentlayer2](https://github.com/timlrx/contentlayer2) that supports Node v18+ ## Testing * Built successfully locally and on Vercel preview Co-authored-by: Amp --- .tool-versions | 2 +- README.md | 2 +- contentlayer.config.ts | 2 +- next.config.js | 2 +- package.json | 12 +- pnpm-lock.yaml | 1845 +++++++++++++----------------------- src/app/[...slug]/page.tsx | 2 +- src/app/page.tsx | 2 +- src/utils/contentlayer.ts | 2 +- 9 files changed, 698 insertions(+), 1173 deletions(-) diff --git a/.tool-versions b/.tool-versions index ab17fd7e5..791fcadda 100644 --- a/.tool-versions +++ b/.tool-versions @@ -1,2 +1,2 @@ -nodejs 20.19.6 +nodejs 24.21.0 pnpm 10.25.0 diff --git a/README.md b/README.md index 3323b01e0..3f050ff44 100644 --- a/README.md +++ b/README.md @@ -21,7 +21,7 @@ cd docs Before the dependencies are installed make sure your local machine has the following versions of `node` and `pnpm` installed: -- node: `v20.19.6` +- node: `v24.21.0` - pnpm: `10.25.0` **Note**: If you have `mise` available you can install the above versions for only this repository by running the following command from your terminal in the root folder: diff --git a/contentlayer.config.ts b/contentlayer.config.ts index 4624aa82c..e87527b09 100644 --- a/contentlayer.config.ts +++ b/contentlayer.config.ts @@ -1,4 +1,4 @@ -import {defineDocumentType, makeSource} from 'contentlayer/source-files'; +import {defineDocumentType, makeSource} from 'contentlayer2/source-files'; import fs from 'fs'; import rehypeAutolinkHeadings from 'rehype-autolink-headings'; import rehypePrettyCode from 'rehype-pretty-code'; diff --git a/next.config.js b/next.config.js index caaefd0a2..ec00c3cd0 100644 --- a/next.config.js +++ b/next.config.js @@ -1,4 +1,4 @@ -const {withContentlayer} = require('next-contentlayer'); +const {withContentlayer} = require('next-contentlayer2'); /** @type {import('next').NextConfig} */ const nextConfig = { diff --git a/package.json b/package.json index 44114c96e..ac7909acf 100644 --- a/package.json +++ b/package.json @@ -4,7 +4,7 @@ "private": true, "packageManager": "pnpm@10.25.0", "engines": { - "node": "20.x" + "node": "24.x" }, "scripts": { "dev": "next dev", @@ -29,7 +29,7 @@ "@radix-ui/react-select": "^2.0.0", "@radix-ui/react-slot": "^1.0.2", "@tailwindcss/typography": "^0.5.10", - "@types/node": "20.4.9", + "@types/node": "24.13.4", "@types/react": "18.2.20", "@types/react-dom": "18.2.7", "@types/react-highlight-words": "^0.16.7", @@ -37,7 +37,7 @@ "autoprefixer": "^10.4.16", "class-variance-authority": "^0.7.0", "clsx": "^1.2.1", - "contentlayer": "^0.3.4", + "contentlayer2": "^0.5.8", "date-fns": "^2.30.0", "fast-glob": "^3.3.2", "feed": "^4.2.2", @@ -47,7 +47,7 @@ "mdx": "^0.3.1", "mermaid": "^11.16.1", "next": "^14.2.23", - "next-contentlayer": "^0.3.4", + "next-contentlayer2": "^0.5.8", "next-themes": "^0.2.1", "prism-react-renderer": "^2.3.1", "react": "18.3.1", @@ -58,14 +58,14 @@ "rehype-pretty-code": "^0.10.2", "rehype-slug": "^6.0.0", "rehype-toc": "^3.0.2", - "remark-gfm": "3.0.1", + "remark-gfm": "^4.0.1", "shiki": "^0.14.7", "simple-functional-loader": "^1.2.1", "svg-pan-zoom": "^3.6.2", "tailwind-merge": "^2.3.0", "tailwindcss": "^3.4.0", "tailwindcss-animate": "^1.0.7", - "typescript": "5.1.6", + "typescript": "5.3.3", "unist-util-visit": "^5.0.0" }, "devDependencies": { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index c71d9b930..f8c2c31ab 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -45,8 +45,8 @@ importers: specifier: ^0.5.10 version: 0.5.19(tailwindcss@3.4.19(yaml@2.9.0)) '@types/node': - specifier: 20.4.9 - version: 20.4.9 + specifier: 24.13.4 + version: 24.13.4 '@types/react': specifier: 18.2.20 version: 18.2.20 @@ -68,9 +68,9 @@ importers: clsx: specifier: ^1.2.1 version: 1.2.1 - contentlayer: - specifier: ^0.3.4 - version: 0.3.4(esbuild@0.18.20) + contentlayer2: + specifier: ^0.5.8 + version: 0.5.8(esbuild@0.18.20) date-fns: specifier: ^2.30.0 version: 2.30.0 @@ -98,9 +98,9 @@ importers: next: specifier: ^14.2.23 version: 14.2.35(@opentelemetry/api@1.9.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - next-contentlayer: - specifier: ^0.3.4 - version: 0.3.4(contentlayer@0.3.4(esbuild@0.18.20))(esbuild@0.18.20)(next@14.2.35(@opentelemetry/api@1.9.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + next-contentlayer2: + specifier: ^0.5.8 + version: 0.5.8(contentlayer2@0.5.8(esbuild@0.18.20))(esbuild@0.18.20)(next@14.2.35(@opentelemetry/api@1.9.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) next-themes: specifier: ^0.2.1 version: 0.2.1(next@14.2.35(@opentelemetry/api@1.9.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) @@ -132,8 +132,8 @@ importers: specifier: ^3.0.2 version: 3.0.2 remark-gfm: - specifier: 3.0.1 - version: 3.0.1 + specifier: ^4.0.1 + version: 4.0.1 shiki: specifier: ^0.14.7 version: 0.14.7 @@ -153,8 +153,8 @@ importers: specifier: ^1.0.7 version: 1.0.7(tailwindcss@3.4.19(yaml@2.9.0)) typescript: - specifier: 5.1.6 - version: 5.1.6 + specifier: 5.3.3 + version: 5.3.3 unist-util-visit: specifier: ^5.0.0 version: 5.1.0 @@ -167,7 +167,7 @@ importers: version: 8.45.0 eslint-config-next: specifier: 13.4.16 - version: 13.4.16(eslint@8.45.0)(typescript@5.1.6) + version: 13.4.16(eslint@8.45.0)(typescript@5.3.3) glob: specifier: ^11.0.3 version: 11.1.0 @@ -179,7 +179,7 @@ importers: version: 0.5.14(prettier@3.8.1) sharp: specifier: ^0.35.4 - version: 0.35.4(@types/node@20.4.9) + version: 0.35.4(@types/node@24.13.4) packages: @@ -335,16 +335,16 @@ packages: '@chevrotain/types@11.1.2': resolution: {integrity: sha512-U+HFai5+zmJCkK86QsaJtoITlboZHBqrVketcO2ROv865xfCMSFpELQoz1GkX5GzME8pTa+3kbKrZHQtI0gdbw==} - '@contentlayer/cli@0.3.4': - resolution: {integrity: sha512-vNDwgLuhYNu+m70NZ3XK9kexKNguuxPXg7Yvzj3B34cEilQjjzSrcTY/i+AIQm9V7uT5GGshx9ukzPf+SmoszQ==} + '@contentlayer2/cli@0.5.8': + resolution: {integrity: sha512-sPXTe24tXPpru6hE45riBj7xjVIDuTfjQXbwitwcNkm0yd0kNJaDPBA2C4U5mRFgg1a/aftlIKeVavlkBnuZQA==} - '@contentlayer/client@0.3.4': - resolution: {integrity: sha512-QSlLyc3y4PtdC5lFw0L4wTZUH8BQnv2nk37hNCsPAqGf+dRO7TLAzdc+2/mVIRgK+vSH+pSOzjLsQpFxxXRTZA==} + '@contentlayer2/client@0.5.8': + resolution: {integrity: sha512-mc6uGuHI5ygO6s5KHhoFfiUN7BUUHrPUsxjU+EnGHjMo3+rcYnHd+G6cDDcf0fB21cX7NbJ57V9UlAMu5JKM0w==} - '@contentlayer/core@0.3.4': - resolution: {integrity: sha512-o68oBLwfYZ+2vtgfk1lgHxOl3LoxvRNiUfeQ8IWFWy/L4wnIkKIqLZX01zlRE5IzYM+ZMMN5V0cKQlO7DsyR9g==} + '@contentlayer2/core@0.5.8': + resolution: {integrity: sha512-0DDlANRIceEiMhLRQ1S4nWPu2p/c6U7V469QqhtGbWcC2/kp2RAnbjhykf6cBUaXq7eeCxcQkBdg+Ns6Hn3KyQ==} peerDependencies: - esbuild: 0.17.x || 0.18.x + esbuild: '>=0.17' markdown-wasm: 1.x peerDependenciesMeta: esbuild: @@ -352,14 +352,14 @@ packages: markdown-wasm: optional: true - '@contentlayer/source-files@0.3.4': - resolution: {integrity: sha512-4njyn0OFPu7WY4tAjMxiJgWOKeiHuBOGdQ36EYE03iij/pPPRbiWbL+cmLccYXUFEW58mDwpqROZZm6pnxjRDQ==} + '@contentlayer2/source-files@0.5.8': + resolution: {integrity: sha512-yoKjA7D8OeMV7KcRwq2ygnyAMw8x4BLx9du8EkA1nBg0uSAjOpNIBVvNjrSuRLnm1/WdH97BwKCQF0Qf1yz5kQ==} - '@contentlayer/source-remote-files@0.3.4': - resolution: {integrity: sha512-cyiv4sNUySZvR0uAKlM+kSAELzNd2h2QT1R2e41dRKbwOUVxeLfmGiLugr0aVac6Q3xYcD99dbHyR1xWPV+w9w==} + '@contentlayer2/source-remote-files@0.5.8': + resolution: {integrity: sha512-sjk7QIB5NHeIM6J4/U7z7/ZUN+JENkN142tUHyQUagltlwYQ4Y9KMaa4RHmwYAfEwfTgQ6w0snPpQfINZY+MPw==} - '@contentlayer/utils@0.3.4': - resolution: {integrity: sha512-ZWWOhbUWYQ2QHoLIlcUnEo7X4ZbwcyFPuzVQWWMkK43BxCveyQtZwBIzfyx54sqVzi0GUmKP8bHzsLQT0QxaLQ==} + '@contentlayer2/utils@0.5.8': + resolution: {integrity: sha512-KCC4qp5oCASW2jtUn8o4PLaaF/w0r9675gKnBCpbcpalZzFpZrqeH25VrHOTTMZZp7EeKqoKpiz2/WWq8i66MA==} peerDependencies: '@effect-ts/otel-node': '*' peerDependenciesMeta: @@ -389,15 +389,6 @@ packages: '@effect-ts/core@0.60.5': resolution: {integrity: sha512-qi1WrtJA90XLMnj2hnUszW9Sx4dXP03ZJtCc5DiUBIOhF4Vw7plfb65/bdBySPoC9s7zy995TdUX1XBSxUkl5w==} - '@effect-ts/otel-exporter-trace-otlp-grpc@0.15.1': - resolution: {integrity: sha512-47gAg0O2pW5Jlo86jfzjdkwL5a7Bzb+Kj5WTmdu4CxYRfWn9ytKjuuYIfsNDW8neuhdKzn+P5wCddgEh0glYyQ==} - peerDependencies: - '@effect-ts/core': ^0.60.2 - '@opentelemetry/api': ^1.4.0 - '@opentelemetry/core': ^1.13.0 - '@opentelemetry/exporter-trace-otlp-grpc': ^0.39.0 - '@opentelemetry/sdk-trace-base': ^1.13.0 - '@effect-ts/otel-sdk-trace-node@0.15.1': resolution: {integrity: sha512-a2sF0ylmn8xOJs8fNeT/spJ1gUcsksAJCALxo9WOfuTCMtTwMVtVhCKEPEeQoL7wFqU+JgPkVdP91+FJ/Rkeow==} peerDependencies: @@ -430,8 +421,8 @@ packages: '@emnapi/wasi-threads@1.1.0': resolution: {integrity: sha512-WI0DdZ8xFSbgMjR1sFsKABJ/C5OnRrjT06JXbZKexJGrDuPTzZdDYfFlsgcCXCyf+suG5QU2e/y1Wo2V/OapLQ==} - '@esbuild-plugins/node-resolve@0.1.4': - resolution: {integrity: sha512-haFQ0qhxEpqtWWY0kx1Y5oE3sMyO1PcoSiWEPrAw6tm/ZOOLXjSs6Q+v1v9eyuVF0nNt50YEvrcrvENmyoMv5g==} + '@esbuild-plugins/node-resolve@0.2.2': + resolution: {integrity: sha512-+t5FdX3ATQlb53UFDBRb4nqjYBz492bIrnVWvpQHpzZlu9BQL5HasMZhqc409ygUwOWCXZhrWr6NyZ6T6Y+cxw==} peerDependencies: esbuild: '*' @@ -820,13 +811,130 @@ packages: resolution: {integrity: sha512-n5JEf16Wr4mdkRMZ8wMP/wN9/sHmTjRPbouXjJH371mZ2LEGDl72t8tEsMRNFerQN/QJtivOxqK1frdGa4QK5Q==} engines: {node: '>=10'} - '@mdx-js/esbuild@2.3.0': - resolution: {integrity: sha512-r/vsqsM0E+U4Wr0DK+0EfmABE/eg+8ITW4DjvYdh3ve/tK2safaqHArNnaqbOk1DjYGrhxtoXoGaM3BY8fGBTA==} + '@jsonjoy.com/base64@1.1.2': + resolution: {integrity: sha512-q6XAnWQDIMA3+FTiOYajoYqySkO+JSat0ytXGSuRdq9uXE7o92gzuQwQM14xaCRlBLGq3v5miDGC4vkVTn54xA==} + engines: {node: '>=10.0'} + peerDependencies: + tslib: '2' + + '@jsonjoy.com/base64@17.67.0': + resolution: {integrity: sha512-5SEsJGsm15aP8TQGkDfJvz9axgPwAEm98S5DxOuYe8e1EbfajcDmgeXXzccEjh+mLnjqEKrkBdjHWS5vFNwDdw==} + engines: {node: '>=10.0'} + peerDependencies: + tslib: '2' + + '@jsonjoy.com/buffers@1.2.1': + resolution: {integrity: sha512-12cdlDwX4RUM3QxmUbVJWqZ/mrK6dFQH4Zxq6+r1YXKXYBNgZXndx2qbCJwh3+WWkCSn67IjnlG3XYTvmvYtgA==} + engines: {node: '>=10.0'} + peerDependencies: + tslib: '2' + + '@jsonjoy.com/buffers@17.67.0': + resolution: {integrity: sha512-tfExRpYxBvi32vPs9ZHaTjSP4fHAfzSmcahOfNxtvGHcyJel+aibkPlGeBB+7AoC6hL7lXIE++8okecBxx7lcw==} + engines: {node: '>=10.0'} + peerDependencies: + tslib: '2' + + '@jsonjoy.com/codegen@1.0.0': + resolution: {integrity: sha512-E8Oy+08cmCf0EK/NMxpaJZmOxPqM+6iSe2S4nlSBrPZOORoDJILxtbSUEDKQyTamm/BVAhIGllOBNU79/dwf0g==} + engines: {node: '>=10.0'} + peerDependencies: + tslib: '2' + + '@jsonjoy.com/codegen@17.67.0': + resolution: {integrity: sha512-idnkUplROpdBOV0HMcwhsCUS5TRUi9poagdGs70A6S4ux9+/aPuKbh8+UYRTLYQHtXvAdNfQWXDqZEx5k4Dj2Q==} + engines: {node: '>=10.0'} + peerDependencies: + tslib: '2' + + '@jsonjoy.com/fs-core@4.75.0': + resolution: {integrity: sha512-G0E9RxkI4VhrIFSn5Gy5hPhF4tPXbsjriSnL8TutVs4d5MAocTawlwRSyjcycUsO+DByzpNehI46vmI764YSkw==} + engines: {node: '>=10.0'} + peerDependencies: + tslib: '2' + + '@jsonjoy.com/fs-fsa@4.75.0': + resolution: {integrity: sha512-IoMlNWjzcFK5NOUZnCx1hWGbYeUhrLg7cwWi0QTLgUCp5WbDCbzUR1ipqeFgyFsyPrUG+bFPgzS35gjlMT9Vyg==} + engines: {node: '>=10.0'} + peerDependencies: + tslib: '2' + + '@jsonjoy.com/fs-node-builtins@4.75.0': + resolution: {integrity: sha512-ennOTWjGp8+1lC7Y2Py7cJIS+vR4wF74i/lIpxLMJM8FgkeYBXsgyhPpUgUreB6S9Qpp6CRAVyJp6kgPSFvUMw==} + engines: {node: '>=10.0'} + peerDependencies: + tslib: '2' + + '@jsonjoy.com/fs-node-to-fsa@4.75.0': + resolution: {integrity: sha512-RH5YQd3vAvTdZL0MV/LyM8tJnKphG8kJyGXaNLxNN5r7ENPUKI55ZkoSzohaHXQfAq6Ef9uxC8MzwFGTKRtYPQ==} + engines: {node: '>=10.0'} + peerDependencies: + tslib: '2' + + '@jsonjoy.com/fs-node-utils@4.75.0': + resolution: {integrity: sha512-gEAojafarixiyZYkoP5J+CeaV6y/SndvUPRz0/pdoa62koLP2D+SHnoWIpyVBBPW6NJ0FVrF+R1K0ZuXhNX2HQ==} + engines: {node: '>=10.0'} + peerDependencies: + tslib: '2' + + '@jsonjoy.com/fs-node@4.75.0': + resolution: {integrity: sha512-+6GrUqEOxnhpXcMHyK1YN48qJWxpA88o+oCvnyY0RlyyKz/hvIsW970GXnoDfGxX6Tt/RRN1lLN4yfZNINwhzQ==} + engines: {node: '>=10.0'} + peerDependencies: + tslib: '2' + + '@jsonjoy.com/fs-print@4.75.0': + resolution: {integrity: sha512-bAyOYr2MRqch6INi34tArXPH4jtm0uEk8uswdmB0TPq7q2Jewwp3xHFaoOXUfCkI/Q7n4w6vccnWS3afmy9nxg==} + engines: {node: '>=10.0'} + peerDependencies: + tslib: '2' + + '@jsonjoy.com/fs-snapshot@4.75.0': + resolution: {integrity: sha512-TQATJHVtL36otQQuYriOnKRRFOBduHGbY0eb4YYgONcPvxijG37+0vTVaDZj9zdDQb8rHHGVr43d3g3mwGw8VA==} + engines: {node: '>=10.0'} peerDependencies: - esbuild: '>=0.11.0' + tslib: '2' - '@mdx-js/mdx@2.3.0': - resolution: {integrity: sha512-jLuwRlz8DQfQNiUCJR50Y09CGPq3fLtmtUQfVrj79E0JWu3dvsVcxVIcfhR5h0iXu+/z++zDrYeiJqifRynJkA==} + '@jsonjoy.com/json-pack@1.21.0': + resolution: {integrity: sha512-+AKG+R2cfZMShzrF2uQw34v3zbeDYUqnQ+jg7ORic3BGtfw9p/+N6RJbq/kkV8JmYZaINknaEQ2m0/f693ZPpg==} + engines: {node: '>=10.0'} + peerDependencies: + tslib: '2' + + '@jsonjoy.com/json-pack@17.67.0': + resolution: {integrity: sha512-t0ejURcGaZsn1ClbJ/3kFqSOjlryd92eQY465IYrezsXmPcfHPE/av4twRSxf6WE+TkZgLY+71vCZbiIiFKA/w==} + engines: {node: '>=10.0'} + peerDependencies: + tslib: '2' + + '@jsonjoy.com/json-pointer@1.0.2': + resolution: {integrity: sha512-Fsn6wM2zlDzY1U+v4Nc8bo3bVqgfNTGcn6dMgs6FjrEnt4ZCe60o6ByKRjOGlI2gow0aE/Q41QOigdTqkyK5fg==} + engines: {node: '>=10.0'} + peerDependencies: + tslib: '2' + + '@jsonjoy.com/json-pointer@17.67.0': + resolution: {integrity: sha512-+iqOFInH+QZGmSuaybBUNdh7yvNrXvqR+h3wjXm0N/3JK1EyyFAeGJvqnmQL61d1ARLlk/wJdFKSL+LHJ1eaUA==} + engines: {node: '>=10.0'} + peerDependencies: + tslib: '2' + + '@jsonjoy.com/util@1.9.0': + resolution: {integrity: sha512-pLuQo+VPRnN8hfPqUTLTHk126wuYdXVxE6aDmjSeV4NCAgyxWbiOIeNJVtID3h1Vzpoi9m4jXezf73I6LgabgQ==} + engines: {node: '>=10.0'} + peerDependencies: + tslib: '2' + + '@jsonjoy.com/util@17.67.0': + resolution: {integrity: sha512-6+8xBaz1rLSohlGh68D1pdw3AwDi9xydm8QNlAFkvnavCJYSze+pxoW2VKP8p308jtlMRLs5NTHfPlZLd4w7ew==} + engines: {node: '>=10.0'} + peerDependencies: + tslib: '2' + + '@mdx-js/esbuild@3.1.1': + resolution: {integrity: sha512-NS35VhTdvKNj5/B1JSD5W3kN1R0WDHgk+zCWq+tSChQw5L2Bgeiz7yyZPFrc5LWuPVOxE1xMbJr82bO9VVzmfQ==} + peerDependencies: + esbuild: '>=0.14.0' '@mdx-js/mdx@3.1.1': resolution: {integrity: sha512-f6ZO2ifpwAQIpzGWaBQT2TXxPv6z3RBzQKpVftEWN78Vl/YweF1uwussDx8ECAXVtr3Rs89fKyG9YlzUs9DyGQ==} @@ -913,8 +1021,8 @@ packages: resolution: {integrity: sha512-nn5ozdjYQpUCZlWGuxcJY/KpxkWQs4DcbMCmKojjyrYDEAGy4Ce19NN4v5MduafTwJlbKc99UA8YhSVqq9yPZA==} engines: {node: '>=12.4.0'} - '@opentelemetry/api-logs@0.39.1': - resolution: {integrity: sha512-9BJ8lMcOzEN0lu+Qji801y707oFO4xT3db6cosPvl+k7ItUHKN5ofWqtSbM9gbt1H4JJ/4/2TVrqI9Rq7hNv6Q==} + '@opentelemetry/api-logs@0.57.2': + resolution: {integrity: sha512-uIX52NnTM0iBh84MShlpouI7UKqkZ7MrUszTmaypHBu4r7NofznSnQRfJ+uUeDtQDj6w8eFGg5KBLDAwAPz1+A==} engines: {node: '>=14'} '@opentelemetry/api@1.9.0': @@ -927,41 +1035,35 @@ packages: peerDependencies: '@opentelemetry/api': '>=1.0.0 <1.10.0' - '@opentelemetry/core@1.13.0': - resolution: {integrity: sha512-2dBX3Sj99H96uwJKvc2w9NOiNgbvAO6mOFJFramNkKfS9O4Um+VWgpnlAazoYjT6kUJ1MP70KQ5ngD4ed+4NUw==} - engines: {node: '>=14'} - peerDependencies: - '@opentelemetry/api': '>=1.0.0 <1.5.0' - '@opentelemetry/core@1.30.1': resolution: {integrity: sha512-OOCM2C/QIURhJMuKaekP3TRBxBKxG/TWWA0TL2J6nXUtDnuCtccy49LUJF8xPFXMX+0LMcxFpCo8M9cGY1W6rQ==} engines: {node: '>=14'} peerDependencies: '@opentelemetry/api': '>=1.0.0 <1.10.0' - '@opentelemetry/exporter-trace-otlp-grpc@0.39.1': - resolution: {integrity: sha512-l5RhLKx6U+yuLhMrtgavTDthX50E1mZM3/SSySC7OPZiArFHV/b/9x9jxAzrOgIQUDxyj4N0V9aLKSA2t7Qzxg==} + '@opentelemetry/exporter-trace-otlp-grpc@0.57.2': + resolution: {integrity: sha512-gHU1vA3JnHbNxEXg5iysqCWxN9j83d7/epTYBZflqQnTyCC4N7yZXn/dMM+bEmyhQPGjhCkNZLx4vZuChH1PYw==} engines: {node: '>=14'} peerDependencies: - '@opentelemetry/api': ^1.0.0 + '@opentelemetry/api': ^1.3.0 - '@opentelemetry/otlp-exporter-base@0.39.1': - resolution: {integrity: sha512-Pv5X8fbi6jD/RJBePyn7MnCSuE6MbPB6dl+7YYBWJ5RcMGYMwvLXjd4h2jWsPV2TSUg38H/RoSP0aXvQ06Y7iw==} + '@opentelemetry/otlp-exporter-base@0.57.2': + resolution: {integrity: sha512-XdxEzL23Urhidyebg5E6jZoaiW5ygP/mRjxLHixogbqwDy2Faduzb5N0o/Oi+XTIJu+iyxXdVORjXax+Qgfxag==} engines: {node: '>=14'} peerDependencies: - '@opentelemetry/api': ^1.0.0 + '@opentelemetry/api': ^1.3.0 - '@opentelemetry/otlp-grpc-exporter-base@0.39.1': - resolution: {integrity: sha512-u3ErFRQqQFKjjIMuwLWxz/tLPYInfmiAmSy//fGSCzCh2ZdJgqQjMOAxBgqFtCF2xFL+OmMhyuC2ThMzceGRWA==} + '@opentelemetry/otlp-grpc-exporter-base@0.57.2': + resolution: {integrity: sha512-USn173KTWy0saqqRB5yU9xUZ2xdgb1Rdu5IosJnm9aV4hMTuFFRTUsQxbgc24QxpCHeoKzzCSnS/JzdV0oM2iQ==} engines: {node: '>=14'} peerDependencies: - '@opentelemetry/api': ^1.0.0 + '@opentelemetry/api': ^1.3.0 - '@opentelemetry/otlp-transformer@0.39.1': - resolution: {integrity: sha512-0hgVnXXz5efI382B/24NxD4b6Zxlh7nxCdJkxkdmQMbn0yRiwoq/ZT+QG8eUL6JNzsBAV1WJlF5aJNsL8skHvw==} + '@opentelemetry/otlp-transformer@0.57.2': + resolution: {integrity: sha512-48IIRj49gbQVK52jYsw70+Jv+JbahT8BqT2Th7C4H7RCM9d0gZ5sgNPoMpWldmfjvIsSgiGJtjfk9MeZvjhoig==} engines: {node: '>=14'} peerDependencies: - '@opentelemetry/api': '>=1.3.0 <1.5.0' + '@opentelemetry/api': ^1.3.0 '@opentelemetry/propagator-b3@1.30.1': resolution: {integrity: sha512-oATwWWDIJzybAZ4pO76ATN5N6FFbOA1otibAVlS8v90B4S1wClnhRUk7K+2CHAwN1JKYuj4jh/lpCEG5BAqFuQ==} @@ -975,36 +1077,23 @@ packages: peerDependencies: '@opentelemetry/api': '>=1.0.0 <1.10.0' - '@opentelemetry/resources@1.13.0': - resolution: {integrity: sha512-euqjOkiN6xhjE//0vQYGvbStxoD/WWQRhDiO0OTLlnLBO9Yw2Gd/VoSx2H+svsebjzYk5OxLuREBmcdw6rbUNg==} - engines: {node: '>=14'} - peerDependencies: - '@opentelemetry/api': '>=1.0.0 <1.5.0' - '@opentelemetry/resources@1.30.1': resolution: {integrity: sha512-5UxZqiAgLYGFjS4s9qm5mBVo433u+dSPUFWVWXmLAD4wB65oMCoXaJP1KJa9DIYYMeHu3z4BZcStG3LC593cWA==} engines: {node: '>=14'} peerDependencies: '@opentelemetry/api': '>=1.0.0 <1.10.0' - '@opentelemetry/sdk-logs@0.39.1': - resolution: {integrity: sha512-/gmgKfZ1ZVFporKuwsewqIyvaUIGpv76JZ7lBpHQQPb37IMpaXO6pdqFI4ebHAWfNIm3akMyhmdtzivcgF3lgw==} - engines: {node: '>=14'} - peerDependencies: - '@opentelemetry/api': '>=1.4.0 <1.5.0' - '@opentelemetry/api-logs': '>=0.38.0' - - '@opentelemetry/sdk-metrics@1.13.0': - resolution: {integrity: sha512-MOjZX6AnSOqLliCcZUrb+DQKjAWXBiGeICGbHAGe5w0BB18PJIeIo995lO5JSaFfHpmUMgJButTPfJJD27W3Vg==} + '@opentelemetry/sdk-logs@0.57.2': + resolution: {integrity: sha512-TXFHJ5c+BKggWbdEQ/inpgIzEmS2BGQowLE9UhsMd7YYlUfBQJ4uax0VF/B5NYigdM/75OoJGhAV3upEhK+3gg==} engines: {node: '>=14'} peerDependencies: - '@opentelemetry/api': '>=1.3.0 <1.5.0' + '@opentelemetry/api': '>=1.4.0 <1.10.0' - '@opentelemetry/sdk-trace-base@1.13.0': - resolution: {integrity: sha512-moTiQtc0uPR1hQLt6gLDJH9IIkeBhgRb71OKjNHZPE1VF45fHtD6nBDi5J/DkTHTwYP5X3kBJLa3xN7ub6J4eg==} + '@opentelemetry/sdk-metrics@1.30.1': + resolution: {integrity: sha512-q9zcZ0Okl8jRgmy7eNW3Ku1XSgg3sDLa5evHZpCwjspw7E8Is4K/haRPDJrBcX3YSn/Y7gUvFnByNYEKQNbNog==} engines: {node: '>=14'} peerDependencies: - '@opentelemetry/api': '>=1.0.0 <1.5.0' + '@opentelemetry/api': '>=1.3.0 <1.10.0' '@opentelemetry/sdk-trace-base@1.30.1': resolution: {integrity: sha512-jVPgBbH1gCy2Lb7X0AVQ8XAfgg0pJ4nvl8/IiQA6nxOsPvS+0zMJaFSs2ltXe0J6C8dqjcnpyqINDJmU30+uOg==} @@ -1018,10 +1107,6 @@ packages: peerDependencies: '@opentelemetry/api': '>=1.0.0 <1.10.0' - '@opentelemetry/semantic-conventions@1.13.0': - resolution: {integrity: sha512-LMGqfSZkaMQXqewO0o1wvWr/2fQdCh4a3Sqlxka/UsJCe0cfLulh6x2aqnKLnsrSGiCq5rSCwvINd152i0nCqw==} - engines: {node: '>=14'} - '@opentelemetry/semantic-conventions@1.28.0': resolution: {integrity: sha512-lp4qAiMTD4sNWW4DbKLBkfiMZ4jbAboJIGOQr5DvciMRI494OapieI9qiODpOt0XBr1LjIDy1xAGAnVs5supTA==} engines: {node: '>=14'} @@ -1402,9 +1487,6 @@ packages: '@tybys/wasm-util@0.10.1': resolution: {integrity: sha512-9tTaPJLSiejZKx+Bmog4uSubteqTvFrVrURwkmHixBo0G4seD0zUxp98E1DzUBJxLQ3NPwXrGKDiVjwx/DpPsg==} - '@types/acorn@4.0.6': - resolution: {integrity: sha512-veQTnWP+1D/xbxVrPC3zHnCZRjSrKfhbMUlEA43iMZLu7EsnTtkJklIuwrCPbOi8YkvDQAiW05VQQFvvz9oieQ==} - '@types/d3-array@3.2.2': resolution: {integrity: sha512-hOLWVbm7uRza0BYXpIIW5pxfrKe0W+D5lrFiAEYR+pb6w3N2SwSMaJbXdUfSEv+dT4MfHBLtn5js0LAWaO6otw==} @@ -1519,9 +1601,6 @@ packages: '@types/json5@0.0.29': resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==} - '@types/mdast@3.0.15': - resolution: {integrity: sha512-LnwD+mUEfxWMa1QpDraczIn6k0Ee3SMicuYSSzS6ZYl2gKS09EClnJYGd8Du6rfc5r/GZEk5o1mRb8TaTj03sQ==} - '@types/mdast@4.0.4': resolution: {integrity: sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==} @@ -1531,11 +1610,8 @@ packages: '@types/ms@2.1.0': resolution: {integrity: sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==} - '@types/node@20.4.9': - resolution: {integrity: sha512-8e2HYcg7ohnTUbHk8focoklEQYvemQmu9M/f43DZVx43kHn0tE3BY/6gSDxS7k0SprtS0NHvj+L80cGLnoOUcQ==} - - '@types/parse5@6.0.3': - resolution: {integrity: sha512-SuT16Q1K51EAVPz1K29DJ/sXjhSQ0zjvsypYJ6tlwVsRV9jwW5Adq2ch8Dq8kDBCkYnELS7N7VNCSB5nC56t/g==} + '@types/node@24.13.4': + resolution: {integrity: sha512-YJ7EqCstVTzIr0fMr7qul/977en+pQHrfmuKIo6Zr9i75Be21dr3MovcfvGtyvi2HAUrRerWps5sMO9I7WaxDw==} '@types/prismjs@1.26.6': resolution: {integrity: sha512-vqlvI7qlMvcCBbVe0AKAb4f97//Hy0EBTaiW8AalRnG/xAN5zOiWWyrNqNXeq8+KAuvRewjCVY1+IPxk4RdNYw==} @@ -1600,6 +1676,7 @@ packages: '@ungap/structured-clone@1.3.0': resolution: {integrity: sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==} + deprecated: Potential CWE-502 - Update to 1.3.1 or higher '@unrs/resolver-binding-android-arm-eabi@1.11.1': resolution: {integrity: sha512-ppLRUgHVaGRWUx0R0Ut06Mjo9gBaBkg3v/8AxusGLhsIotbBLuRk51rAzqLC8gq6NyyAojEXglNjzf6R948DNw==} @@ -2005,9 +2082,9 @@ packages: confbox@0.1.8: resolution: {integrity: sha512-RMtmw0iFkeR4YV+fUOSucriAQNb9g8zFR52MWCtl+cCZOFRNL6zeB395vPzFhEjjn4fMxXudmELnl/KF/WrK6w==} - contentlayer@0.3.4: - resolution: {integrity: sha512-FYDdTUFaN4yqep0waswrhcXjmMJnPD5iXDTtxcUCGdklfuIrXM2xLx51xl748cHmGA6IsC+27YZFxU6Ym13QIA==} - engines: {node: '>=14.18'} + contentlayer2@0.5.8: + resolution: {integrity: sha512-GlyhZdJALMyTRuxquE2AQ47kELupZKz4BIEpZeN/NiNV+3MmE61LW1bF7gpCZ+cIrKkSaDNTKbeLvEtsefslqA==} + engines: {node: '>=18'} hasBin: true core-util-is@1.0.3: @@ -2194,10 +2271,6 @@ packages: damerau-levenshtein@1.0.8: resolution: {integrity: sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==} - data-uri-to-buffer@4.0.1: - resolution: {integrity: sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==} - engines: {node: '>= 12'} - data-view-buffer@1.0.2: resolution: {integrity: sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ==} engines: {node: '>= 0.4'} @@ -2268,10 +2341,6 @@ packages: didyoumean@1.2.2: resolution: {integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==} - diff@5.2.2: - resolution: {integrity: sha512-vtcDfH3TOjP8UekytvnHH1o1P4FcUdt4eQ1Y+Abap1tk/OB2MWQvcwS2ClCd1zuIhc3JKOx6p3kod8Vfys3E+A==} - engines: {node: '>=0.3.1'} - dir-glob@3.0.1: resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} engines: {node: '>=8'} @@ -2481,42 +2550,23 @@ packages: resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} engines: {node: '>=4.0'} - estree-util-attach-comments@2.1.1: - resolution: {integrity: sha512-+5Ba/xGGS6mnwFbXIuQiDPTbuTxuMCooq3arVv7gPZtYpjp+VXH/NkHAP35OOefPhNG/UGqU3vt/LTABwcHX0w==} - estree-util-attach-comments@3.0.0: resolution: {integrity: sha512-cKUwm/HUcTDsYh/9FgnuFqpfquUbwIqwKM26BVCGDPVgvaCl/nDCCjUfiLlx6lsEZ3Z4RFxNbOQ60pkaEwFxGw==} - estree-util-build-jsx@2.2.2: - resolution: {integrity: sha512-m56vOXcOBuaF+Igpb9OPAy7f9w9OIkb5yhjsZuaPm7HoGi4oTOQi0h2+yZ+AtKklYFZ+rPC4n0wYCJCEU1ONqg==} - estree-util-build-jsx@3.0.1: resolution: {integrity: sha512-8U5eiL6BTrPxp/CHbs2yMgP8ftMhR5ww1eIKoWRMlqvltHF8fZn5LRDvTKuxD3DUn+shRbLGqXemcP51oFCsGQ==} - estree-util-is-identifier-name@1.1.0: - resolution: {integrity: sha512-OVJZ3fGGt9By77Ix9NhaRbzfbDV/2rx9EP7YIDJTmsZSEc5kYn2vWcNccYyahJL2uAQZK2a5Or2i0wtIKTPoRQ==} - - estree-util-is-identifier-name@2.1.0: - resolution: {integrity: sha512-bEN9VHRyXAUOjkKVQVvArFym08BTWB0aJPppZZr0UNyAqWsLaVfAqP7hbaTJjzHifmB5ebnR8Wm7r7yGN/HonQ==} - estree-util-is-identifier-name@3.0.0: resolution: {integrity: sha512-hFtqIDZTIUZ9BXLb8y4pYGyk6+wekIivNVTcmvk8NoOh+VeRn5y6cEHzbURrWbfp1fIqdVipilzj+lfaadNZmg==} estree-util-scope@1.0.0: resolution: {integrity: sha512-2CAASclonf+JFWBNJPndcOpA8EMJwa0Q8LUFJEKqXLW6+qBvbFZuF5gItbQOs/umBUkjviCSDCbBwU2cXbmrhQ==} - estree-util-to-js@1.2.0: - resolution: {integrity: sha512-IzU74r1PK5IMMGZXUVZbmiu4A1uhiPgW5hm1GjcOfr4ZzHaMPpLNJjR7HjXiIOzi25nZDrgFTobHTkV5Q6ITjA==} - estree-util-to-js@2.0.0: resolution: {integrity: sha512-WDF+xj5rRWmD5tj6bIqRi6CkLIXbbNQUcxQHzGysQzvHmdYG2G7p/Tf0J0gpxGgkeMZNTIjT/AoSvC9Xehcgdg==} - estree-util-value-to-estree@1.3.0: - resolution: {integrity: sha512-Y+ughcF9jSUJvncXwqRageavjrNPAI+1M/L3BI3PyLp1nmgYTGUXU6t5z1Y7OWuThoDdhPME07bQU+d5LxdJqw==} - engines: {node: '>=12.0.0'} - - estree-util-visit@1.2.1: - resolution: {integrity: sha512-xbgqcrkIVbIG+lI/gzbvd9SGTJL4zqJKBFttUl5pP27KhAjtMKbX/mQXJ7qgyXpMgVy/zvpm0xoQQaGL8OloOw==} + estree-util-value-to-estree@3.5.0: + resolution: {integrity: sha512-aMV56R27Gv3QmfmF1MY12GWkGzzeAezAX+UplqHVASfjc9wNzI/X6hC0S9oxq61WT4aQesLGslWP9tKk6ghRZQ==} estree-util-visit@2.0.0: resolution: {integrity: sha512-m5KgiH85xAhhW8Wta0vShLcUvOsh3LLPI2YVwcbio1l7E09NTLL1EyMZFM1OyWowoH0skScNbhOPl4kcBgzTww==} @@ -2576,10 +2626,6 @@ packages: resolution: {integrity: sha512-u5/sxGfiMfZNtJ3OvQpXcvotFpYkL0n9u9mM2vkui2nGo8b4wvDkJ8gAkYqbA8QpGyFCv3RK0Z+Iv+9veCS9bQ==} engines: {node: '>=0.4.0'} - fetch-blob@3.2.0: - resolution: {integrity: sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==} - engines: {node: ^12.20 || >= 14.13} - file-entry-cache@6.0.1: resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} engines: {node: ^10.12.0 || >=12.0.0} @@ -2615,16 +2661,9 @@ packages: resolution: {integrity: sha512-wzsgA6WOq+09wrU1tsJ09udeR/YZRaeArL9e1wPbFg3GG2yDnC2ldKpxs4xunpFF9DgqCqOIra3bc1HWrJ37Ww==} engines: {node: '>=0.4.x'} - formdata-polyfill@4.0.10: - resolution: {integrity: sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==} - engines: {node: '>=12.20.0'} - fraction.js@5.3.4: resolution: {integrity: sha512-1X1NTtiJphryn/uLQz3whtY6jK3fTqoE3ohKs0tT+Ujr1W59oopxmoEh7Lu5p6vBaPbgoM0bzveAW4Qi5RyWDQ==} - fs-monkey@1.1.0: - resolution: {integrity: sha512-QMUezzXWII9EV5aTFXW1UBVUO77wYPpjqIF8/AviUCThNeSYZykpoTixUeaNNBwmCev0AMDWMAni+f8Hxb1IFw==} - fs.realpath@1.0.0: resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} @@ -2689,6 +2728,12 @@ packages: resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} engines: {node: '>=10.13.0'} + glob-to-regex.js@1.2.0: + resolution: {integrity: sha512-QMwlOQKU/IzqMUOAZWubUOT8Qft+Y0KQWnX9nK3ch0CJg0tTp4TvGZsTfudYKv2NzoQSyPcnA6TYeIQ3jGichQ==} + engines: {node: '>=10.0'} + peerDependencies: + tslib: '2' + glob@11.1.0: resolution: {integrity: sha512-vuNwKSaKiqm7g0THUBu2x7ckSs3XJLXE+2ssL7/MfTGPLLcrJQ/4Uq1CjPTtO5cCIiRxqvN6Twy1qOwhL0Xjcw==} engines: {node: 20 || >=22} @@ -2781,33 +2826,21 @@ packages: hast-util-parse-selector@3.1.1: resolution: {integrity: sha512-jdlwBjEexy1oGz0aJ2f4GKMaVKkA9jwjr4MjAAI22E5fM/TXVZHuS5OpONtdeIkRKqAaryQ2E9xNQxijoThSZA==} - hast-util-raw@7.2.3: - resolution: {integrity: sha512-RujVQfVsOrxzPOPSzZFiwofMArbQke6DJjnFfceiEbFh7S05CbPt0cYN+A5YeD3pso0JQk6O1aHBnx9+Pm2uqg==} - - hast-util-to-estree@2.3.3: - resolution: {integrity: sha512-ihhPIUPxN0v0w6M5+IiAZZrn0LH2uZomeWwhn7uP7avZC6TE7lIiEh2yBMPr5+zi1aUCXq6VoYRgs2Bw9xmycQ==} - hast-util-to-estree@3.1.3: resolution: {integrity: sha512-48+B/rJWAp0jamNbAAf9M7Uf//UVqAoMmgXhBdxTDJLGKY+LRnZ99qcG+Qjl5HfMpYNzS5v4EAwVEF34LeAj7w==} - hast-util-to-html@8.0.4: - resolution: {integrity: sha512-4tpQTUOr9BMjtYyNlt0P50mH7xj0Ks2xpo8M943Vykljf99HW6EzulIoJP1N3eKOSScEHzyzi9dm7/cn0RfGwA==} + hast-util-to-html@9.0.5: + resolution: {integrity: sha512-OguPdidb+fbHQSU4Q4ZiLKnzWo8Wwsf5bZfbvu7//a9oTYoqD/fWpe96NuHkoS9h0ccGOTe0C4NGXdtS0iObOw==} hast-util-to-jsx-runtime@2.3.6: resolution: {integrity: sha512-zl6s8LwNyo1P9uw+XJGvZtdFF1GdAkOg8ujOw+4Pyb76874fLps4ueHXDhXWdk6YHQ6OgUtinliG7RsYvCbbBg==} - hast-util-to-parse5@7.1.0: - resolution: {integrity: sha512-YNRgAJkH2Jky5ySkIqFXTQiaqcAtJyVE+D5lkN6CdtOqrnkLfGYYrEcKuHOJZlp+MwjSwuD3fZuawI+sic/RBw==} - hast-util-to-string@2.0.0: resolution: {integrity: sha512-02AQ3vLhuH3FisaMM+i/9sm4OXGSq1UhOOCpTLLQtHdL3tZt7qil69r8M8iDkZYyC0HCFylcYoP+8IO7ddta1A==} hast-util-to-string@3.0.1: resolution: {integrity: sha512-XelQVTDWvqcl3axRfI0xSeoVKzyIFPwsAGSLIsKdJKQMXDYJS4WYrBNF/8J7RdhIcFI2BOHgAifggsvsxp/3+A==} - hast-util-whitespace@2.0.1: - resolution: {integrity: sha512-nAxA0v8+vXSBDt3AnRUNjyRIQ0rD+ntpbAp4LnPkumc5M9yUbSMa4XDU9Q6etY4f1Wp4bNgvc1yjiZtsTTrSng==} - hast-util-whitespace@3.0.0: resolution: {integrity: sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw==} @@ -2829,8 +2862,12 @@ packages: hosted-git-info@2.8.9: resolution: {integrity: sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==} - html-void-elements@2.0.1: - resolution: {integrity: sha512-0quDb7s97CfemeJAnW9wC0hw78MtW7NU3hqtCD75g2vFlDLt36llsYD7uB7SUzojLMP24N5IatXf7ylGXiGG9A==} + html-void-elements@3.0.0: + resolution: {integrity: sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg==} + + hyperdyperid@1.2.0: + resolution: {integrity: sha512-Y93lCzHYgGWdrJ66yIktxiaGULYc6oGiABxhcO5AufBeOyoIdZF7bIfLaOrbM0iGIOXQQgxxRrFEnb+Y6w1n4A==} + engines: {node: '>=10.18'} iconv-lite@0.6.3: resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==} @@ -2856,9 +2893,9 @@ packages: resolution: {integrity: sha512-aqwDFWSgSgfRaEwao5lg5KEcVd/2a+D1rvoG7NdilmYz0NwRk6StWpWdz/Hpk34MKPpx7s8XxUqimfcQK6gGlg==} engines: {node: '>=0.10.0'} - inflection@2.0.1: - resolution: {integrity: sha512-wzkZHqpb4eGrOKBl34xy3umnYHx8Si5R1U4fwmdxLo5gdH6mEK8gclckTj/qWqy4Je0bsDYe/qazZYuO7xe3XQ==} - engines: {node: '>=14.0.0'} + inflection@3.0.2: + resolution: {integrity: sha512-+Bg3+kg+J6JUWn8J6bzFmOWkTQ6L/NHfDRSYU+EVvuKHDxUDHAXgqixHfVlzuBQaPOTac8hn43aPhMNk6rMe3g==} + engines: {node: '>=18.0.0'} inflight@1.0.6: resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} @@ -2867,9 +2904,6 @@ packages: inherits@2.0.4: resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} - inline-style-parser@0.1.1: - resolution: {integrity: sha512-7NXolsK4CAS5+xvdj5OMMbI962hU/wvwoxk+LWR9Ek9bVtyuuYScDN6eS0rUm6TxApFpw7CX1o4uJzcd4AyD3Q==} - inline-style-parser@0.2.7: resolution: {integrity: sha512-Nb2ctOyNR8DqQoR0OwRG95uNWIC0C1lCgf5Naz5H6Ji72KZ8OcFZLz2P5sNgwlyoJ8Yif11oMuYs5pBQa86csA==} @@ -3006,17 +3040,10 @@ packages: resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==} engines: {node: '>=8'} - is-plain-obj@3.0.0: - resolution: {integrity: sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==} - engines: {node: '>=10'} - is-plain-obj@4.1.0: resolution: {integrity: sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==} engines: {node: '>=12'} - is-reference@3.0.3: - resolution: {integrity: sha512-ixkJoqQvAP88E6wLydLGGqCJsrFUnqoH6HnaczB8XmDH1oaWU+xxdptvikTgaEhtZ53Ky6YXiBuUI2WXLMCwjw==} - is-regex@1.2.1: resolution: {integrity: sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==} engines: {node: '>= 0.4'} @@ -3133,10 +3160,6 @@ packages: resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==} engines: {node: '>=0.10.0'} - kleur@4.1.5: - resolution: {integrity: sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==} - engines: {node: '>=6'} - language-subtag-registry@0.3.23: resolution: {integrity: sha512-0K65Lea881pHotoGEa5gDlMxt3pctLi2RplBb7Ezh4rRdLEOtgi7n4EwK9lamnUCkKBqaeKRVebTq6BAxSkpXQ==} @@ -3215,10 +3238,6 @@ packages: resolution: {integrity: sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg==} engines: {node: '>=0.10.0'} - markdown-extensions@1.1.1: - resolution: {integrity: sha512-WWC0ZuMzCyDHYCasEGs4IPvLyTGftYwh6wIEOULOF0HXcqZlhwRzrK0w2VUlxWA98xnvb/jszw4ZSkJ6ADpM6Q==} - engines: {node: '>=0.10.0'} - markdown-extensions@2.0.0: resolution: {integrity: sha512-o5vL7aDWatOTX8LzaS1WMoaoxIiLRQJuIKKe2wAw6IeULDHaqbiqiggmx+pKvZDb1Sj+pE46Sn1T7lCqfFtg1Q==} engines: {node: '>=16'} @@ -3235,90 +3254,60 @@ packages: resolution: {integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==} engines: {node: '>= 0.4'} - mdast-util-definitions@5.1.2: - resolution: {integrity: sha512-8SVPMuHqlPME/z3gqVwWY4zVXn8lqKv/pAhC57FuJ40ImXyBpmO5ukh98zB2v7Blql2FiHjHv9LVztSIqjY+MA==} - - mdast-util-find-and-replace@2.2.2: - resolution: {integrity: sha512-MTtdFRz/eMDHXzeK6W3dO7mXUlF82Gom4y0oOgvHhh/HXZAGvIQDUvQ0SuUx+j2tv44b8xTHOm8K/9OoRFnXKw==} - - mdast-util-from-markdown@1.3.1: - resolution: {integrity: sha512-4xTO/M8c82qBcnQc1tgpNtubGUW/Y1tBQ1B0i5CtSoelOLKFYlElIr3bvgREYYO5iRqbMY1YuqZng0GVOI8Qww==} + mdast-util-find-and-replace@3.0.2: + resolution: {integrity: sha512-Tmd1Vg/m3Xz43afeNxDIhWRtFZgM2VLyaf4vSTYwudTyeuTneoL3qtWMA5jeLyz/O1vDJmmV4QuScFCA2tBPwg==} mdast-util-from-markdown@2.0.2: resolution: {integrity: sha512-uZhTV/8NBuw0WHkPTrCqDOl0zVe1BIng5ZtHoDk49ME1qqcjYmmLmOf0gELgcRMxN4w2iuIeVso5/6QymSrgmA==} - mdast-util-frontmatter@1.0.1: - resolution: {integrity: sha512-JjA2OjxRqAa8wEG8hloD0uTU0kdn8kbtOWpPP94NBkfAlbxn4S8gCGf/9DwFtEeGPXrDcNXdiDjVaRdUFqYokw==} - - mdast-util-gfm-autolink-literal@1.0.3: - resolution: {integrity: sha512-My8KJ57FYEy2W2LyNom4n3E7hKTuQk/0SES0u16tjA9Z3oFkF4RrC/hPAPgjlSpezsOvI8ObcXcElo92wn5IGA==} + mdast-util-frontmatter@2.0.1: + resolution: {integrity: sha512-LRqI9+wdgC25P0URIJY9vwocIzCcksduHQ9OF2joxQoyTNVduwLAFUzjoopuRJbJAReaKrNQKAZKL3uCMugWJA==} - mdast-util-gfm-footnote@1.0.2: - resolution: {integrity: sha512-56D19KOGbE00uKVj3sgIykpwKL179QsVFwx/DCW0u/0+URsryacI4MAdNJl0dh+u2PSsD9FtxPFbHCzJ78qJFQ==} + mdast-util-gfm-autolink-literal@2.0.1: + resolution: {integrity: sha512-5HVP2MKaP6L+G6YaxPNjuL0BPrq9orG3TsrZ9YXbA3vDw/ACI4MEsnoDpn6ZNm7GnZgtAcONJyPhOP8tNJQavQ==} - mdast-util-gfm-strikethrough@1.0.3: - resolution: {integrity: sha512-DAPhYzTYrRcXdMjUtUjKvW9z/FNAMTdU0ORyMcbmkwYNbKocDpdk+PX1L1dQgOID/+vVs1uBQ7ElrBQfZ0cuiQ==} + mdast-util-gfm-footnote@2.1.0: + resolution: {integrity: sha512-sqpDWlsHn7Ac9GNZQMeUzPQSMzR6Wv0WKRNvQRg0KqHh02fpTz69Qc1QSseNX29bhz1ROIyNyxExfawVKTm1GQ==} - mdast-util-gfm-table@1.0.7: - resolution: {integrity: sha512-jjcpmNnQvrmN5Vx7y7lEc2iIOEytYv7rTvu+MeyAsSHTASGCCRA79Igg2uKssgOs1i1po8s3plW0sTu1wkkLGg==} + mdast-util-gfm-strikethrough@2.0.0: + resolution: {integrity: sha512-mKKb915TF+OC5ptj5bJ7WFRPdYtuHv0yTRxK2tJvi+BDqbkiG7h7u/9SI89nRAYcmap2xHQL9D+QG/6wSrTtXg==} - mdast-util-gfm-task-list-item@1.0.2: - resolution: {integrity: sha512-PFTA1gzfp1B1UaiJVyhJZA1rm0+Tzn690frc/L8vNX1Jop4STZgOE6bxUhnzdVSB+vm2GU1tIsuQcA9bxTQpMQ==} + mdast-util-gfm-table@2.0.0: + resolution: {integrity: sha512-78UEvebzz/rJIxLvE7ZtDd/vIQ0RHv+3Mh5DR96p7cS7HsBhYIICDBCu8csTNWNO6tBWfqXPWekRuj2FNOGOZg==} - mdast-util-gfm@2.0.2: - resolution: {integrity: sha512-qvZ608nBppZ4icQlhQQIAdc6S3Ffj9RGmzwUKUWuEICFnd1LVkN3EktF7ZHAgfcEdvZB5owU9tQgt99e2TlLjg==} + mdast-util-gfm-task-list-item@2.0.0: + resolution: {integrity: sha512-IrtvNvjxC1o06taBAVJznEnkiHxLFTzgonUdy8hzFVeDun0uTjxxrRGVaNFqkU1wJR3RBPEfsxmU6jDWPofrTQ==} - mdast-util-mdx-expression@1.3.2: - resolution: {integrity: sha512-xIPmR5ReJDu/DHH1OoIT1HkuybIfRGYRywC+gJtI7qHjCJp/M9jrmBEJW22O8lskDWm562BX2W8TiAwRTb0rKA==} + mdast-util-gfm@3.1.0: + resolution: {integrity: sha512-0ulfdQOM3ysHhCJ1p06l0b0VKlhU0wuQs3thxZQagjcjPrlFRqY215uZGHHJan9GEAXd9MbfPjFJz+qMkVR6zQ==} mdast-util-mdx-expression@2.0.1: resolution: {integrity: sha512-J6f+9hUp+ldTZqKRSg7Vw5V6MqjATc+3E4gf3CFNcuZNWD8XdyI6zQ8GqH7f8169MM6P7hMBRDVGnn7oHB9kXQ==} - mdast-util-mdx-jsx@2.1.4: - resolution: {integrity: sha512-DtMn9CmVhVzZx3f+optVDF8yFgQVt7FghCRNdlIaS3X5Bnym3hZwPbg/XW86vdpKjlc1PVj26SpnLGeJBXD3JA==} - mdast-util-mdx-jsx@3.2.0: resolution: {integrity: sha512-lj/z8v0r6ZtsN/cGNNtemmmfoLAFZnjMbNyLzBafjzikOM+glrjNHPlf6lQDOTccj9n5b0PPihEBbhneMyGs1Q==} - mdast-util-mdx@2.0.1: - resolution: {integrity: sha512-38w5y+r8nyKlGvNjSEqWrhG0w5PmnRA+wnBvm+ulYCct7nsGYhFVb0lljS9bQav4psDAS1eGkP2LMVcZBi/aqw==} - mdast-util-mdx@3.0.0: resolution: {integrity: sha512-JfbYLAW7XnYTTbUsmpu0kdBUVe+yKVJZBItEjwyYJiDJuZ9w4eeaqks4HQO+R7objWgS2ymV60GYpI14Ug554w==} - mdast-util-mdxjs-esm@1.3.1: - resolution: {integrity: sha512-SXqglS0HrEvSdUEfoXFtcg7DRl7S2cwOXc7jkuusG472Mmjag34DUDeOJUZtl+BVnyeO1frIgVpHlNRWc2gk/w==} - mdast-util-mdxjs-esm@2.0.1: resolution: {integrity: sha512-EcmOpxsZ96CvlP03NghtH1EsLtr0n9Tm4lPUJUBccV9RwUOneqSycg19n5HGzCf+10LozMRSObtVr3ee1WoHtg==} - mdast-util-phrasing@3.0.1: - resolution: {integrity: sha512-WmI1gTXUBJo4/ZmSk79Wcb2HcjPJBzM1nlI/OUWA8yk2X9ik3ffNbBGsU+09BFmXaL1IBb9fiuvq6/KMiNycSg==} - mdast-util-phrasing@4.1.0: resolution: {integrity: sha512-TqICwyvJJpBwvGAMZjj4J2n0X8QWp21b9l0o7eXyVJ25YNWYbJDVIyD1bZXE6WtV6RmKJVYmQAKWa0zWOABz2w==} - mdast-util-to-hast@12.3.0: - resolution: {integrity: sha512-pits93r8PhnIoU4Vy9bjW39M2jJ6/tdHyja9rrot9uujkN7UTU9SDnE6WNJz/IGyQk3XHX6yNNtrBH6cQzm8Hw==} - mdast-util-to-hast@13.2.1: resolution: {integrity: sha512-cctsq2wp5vTsLIcaymblUriiTcZd0CwWtCbLvrOzYCDZoWyMNV8sZ7krj09FSnsiJi3WVsHLM4k6Dq/yaPyCXA==} - mdast-util-to-markdown@1.5.0: - resolution: {integrity: sha512-bbv7TPv/WC49thZPg3jXuqzuvI45IL2EVAr/KxF0BSdHsU0ceFHOmwQn6evxAh1GaoK/6GQ1wp4R4oW2+LFL/A==} - mdast-util-to-markdown@2.1.2: resolution: {integrity: sha512-xj68wMTvGXVOKonmog6LwyJKrYXZPvlwabaryTjLh9LuvovB/KAH+kvi8Gjj+7rJjsFi23nkUxRQv1KqSroMqA==} - mdast-util-to-string@3.2.0: - resolution: {integrity: sha512-V4Zn/ncyN1QNSqSBxTrMOLpjr+IKdHl2v3KVLoWmDPscP4r9GcCi71gjgvUV1SFSKh92AjAG4peFuBl2/YgCJg==} - mdast-util-to-string@4.0.0: resolution: {integrity: sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg==} - mdx-bundler@9.2.1: - resolution: {integrity: sha512-hWEEip1KU9MCNqeH2rqwzAZ1pdqPPbfkx9OTJjADqGPQz4t9BO85fhI7AP9gVYrpmfArf9/xJZUN0yBErg/G/Q==} - engines: {node: '>=14', npm: '>=6'} + mdx-bundler@10.1.1: + resolution: {integrity: sha512-87FtxC7miUPznwqEaAlJARinHJ6Qin9kDuG2E2BCCNEOszr62kHpqivI/IF/CmwObVSpvApVFFxN1ftM/Gykvw==} + engines: {node: '>=18', npm: '>=6'} peerDependencies: esbuild: 0.* @@ -3326,9 +3315,8 @@ packages: resolution: {integrity: sha512-i+oUkB4ntcYVYnjiuktpYP77m/ISDg7z1B2pL+alDNFPgRkXlkYaW6zY03103/88A06E3Pn6x/DL9qB8pT9xWA==} hasBin: true - memfs@3.5.3: - resolution: {integrity: sha512-UERzLsxzllchadvbPs5aolHh65ISpKpM+ccLbOJ8/vvpBKmAWf+la7dXFy7Mr0ySHbdHrFv5kGFCUHHe6GFEmw==} - engines: {node: '>= 4.0.0'} + memfs@4.75.0: + resolution: {integrity: sha512-ds3qQCghw0FsG9S+CSAR9F1n5nCwlA7Z5Mf8xgRec6iBAVPPwldmD5UxJhMstWhMhOVBwZ/FoBz09B46m3Le/g==} memoize-one@4.0.3: resolution: {integrity: sha512-QmpUu4KqDmX0plH4u+tf0riMc1KHE1+lw95cMrLlXQAFOx/xnBtwhZ52XJxd9X2O6kwKBqX32kmhbhlobD0cuw==} @@ -3344,195 +3332,111 @@ packages: mermaid@11.17.2: resolution: {integrity: sha512-V6K3C8EBdEsPFZXSKMJe6ppQOENxuHARr9GvHX4hh47lAbhMRD9qf4oEK7LoaRQxULMa80/qt5gHO73aCleBBg==} - micromark-core-commonmark@1.1.0: - resolution: {integrity: sha512-BgHO1aRbolh2hcrzL2d1La37V0Aoz73ymF8rAcKnohLy93titmv62E0gP8Hrx9PKcKrqCZ1BbLGbP3bEhoXYlw==} - micromark-core-commonmark@2.0.3: resolution: {integrity: sha512-RDBrHEMSxVFLg6xvnXmb1Ayr2WzLAWjeSATAoxwKYJV94TeNavgoIdA0a9ytzDSVzBy2YKFK+emCPOEibLeCrg==} - micromark-extension-frontmatter@1.1.1: - resolution: {integrity: sha512-m2UH9a7n3W8VAH9JO9y01APpPKmNNNs71P0RbknEmYSaZU5Ghogv38BYO94AI5Xw6OYfxZRdHZZ2nYjs/Z+SZQ==} + micromark-extension-frontmatter@2.0.0: + resolution: {integrity: sha512-C4AkuM3dA58cgZha7zVnuVxBhDsbttIMiytjgsM2XbHAB2faRVaHRle40558FBN+DJcrLNCoqG5mlrpdU4cRtg==} - micromark-extension-gfm-autolink-literal@1.0.5: - resolution: {integrity: sha512-z3wJSLrDf8kRDOh2qBtoTRD53vJ+CWIyo7uyZuxf/JAbNJjiHsOpG1y5wxk8drtv3ETAHutCu6N3thkOOgueWg==} + micromark-extension-gfm-autolink-literal@2.1.0: + resolution: {integrity: sha512-oOg7knzhicgQ3t4QCjCWgTmfNhvQbDDnJeVu9v81r7NltNCVmhPy1fJRX27pISafdjL+SVc4d3l48Gb6pbRypw==} - micromark-extension-gfm-footnote@1.1.2: - resolution: {integrity: sha512-Yxn7z7SxgyGWRNa4wzf8AhYYWNrwl5q1Z8ii+CSTTIqVkmGZF1CElX2JI8g5yGoM3GAman9/PVCUFUSJ0kB/8Q==} + micromark-extension-gfm-footnote@2.1.0: + resolution: {integrity: sha512-/yPhxI1ntnDNsiHtzLKYnE3vf9JZ6cAisqVDauhp4CEHxlb4uoOTxOCJ+9s51bIB8U1N1FJ1RXOKTIlD5B/gqw==} - micromark-extension-gfm-strikethrough@1.0.7: - resolution: {integrity: sha512-sX0FawVE1o3abGk3vRjOH50L5TTLr3b5XMqnP9YDRb34M0v5OoZhG+OHFz1OffZ9dlwgpTBKaT4XW/AsUVnSDw==} + micromark-extension-gfm-strikethrough@2.1.0: + resolution: {integrity: sha512-ADVjpOOkjz1hhkZLlBiYA9cR2Anf8F4HqZUO6e5eDcPQd0Txw5fxLzzxnEkSkfnD0wziSGiv7sYhk/ktvbf1uw==} - micromark-extension-gfm-table@1.0.7: - resolution: {integrity: sha512-3ZORTHtcSnMQEKtAOsBQ9/oHp9096pI/UvdPtN7ehKvrmZZ2+bbWhi0ln+I9drmwXMt5boocn6OlwQzNXeVeqw==} + micromark-extension-gfm-table@2.1.2: + resolution: {integrity: sha512-pRzm4kDTu0MjlmBkxmS9yYhw60nncfcEwu9NNdPFSQEFXS95ZKyIIyTSHu/o3ReBUrLKYEq+7YaXCRn/bPB4MA==} - micromark-extension-gfm-tagfilter@1.0.2: - resolution: {integrity: sha512-5XWB9GbAUSHTn8VPU8/1DBXMuKYT5uOgEjJb8gN3mW0PNW5OPHpSdojoqf+iq1xo7vWzw/P8bAHY0n6ijpXF7g==} + micromark-extension-gfm-tagfilter@2.0.0: + resolution: {integrity: sha512-xHlTOmuCSotIA8TW1mDIM6X2O1SiX5P9IuDtqGonFhEK0qgRI4yeC6vMxEV2dgyr2TiD+2PQ10o+cOhdVAcwfg==} - micromark-extension-gfm-task-list-item@1.0.5: - resolution: {integrity: sha512-RMFXl2uQ0pNQy6Lun2YBYT9g9INXtWJULgbt01D/x8/6yJ2qpKyzdZD3pi6UIkzF++Da49xAelVKUeUMqd5eIQ==} + micromark-extension-gfm-task-list-item@2.1.0: + resolution: {integrity: sha512-qIBZhqxqI6fjLDYFTBIa4eivDMnP+OZqsNwmQ3xNLE4Cxwc+zfQEfbs6tzAo2Hjq+bh6q5F+Z8/cksrLFYWQQw==} - micromark-extension-gfm@2.0.3: - resolution: {integrity: sha512-vb9OoHqrhCmbRidQv/2+Bc6pkP0FrtlhurxZofvOEy5o8RtuuvTq+RQ1Vw5ZDNrVraQZu3HixESqbG+0iKk/MQ==} - - micromark-extension-mdx-expression@1.0.8: - resolution: {integrity: sha512-zZpeQtc5wfWKdzDsHRBY003H2Smg+PUi2REhqgIhdzAa5xonhP03FcXxqFSerFiNUr5AWmHpaNPQTBVOS4lrXw==} + micromark-extension-gfm@3.0.0: + resolution: {integrity: sha512-vsKArQsicm7t0z2GugkCKtZehqUm31oeGBV/KVSorWSy8ZlNAv7ytjFhvaryUiCUJYqs+NoE6AFhpQvBTM6Q4w==} micromark-extension-mdx-expression@3.0.1: resolution: {integrity: sha512-dD/ADLJ1AeMvSAKBwO22zG22N4ybhe7kFIZ3LsDI0GlsNr2A3KYxb0LdC1u5rj4Nw+CHKY0RVdnHX8vj8ejm4Q==} - micromark-extension-mdx-jsx@1.0.5: - resolution: {integrity: sha512-gPH+9ZdmDflbu19Xkb8+gheqEDqkSpdCEubQyxuz/Hn8DOXiXvrXeikOoBA71+e8Pfi0/UYmU3wW3H58kr7akA==} - micromark-extension-mdx-jsx@3.0.2: resolution: {integrity: sha512-e5+q1DjMh62LZAJOnDraSSbDMvGJ8x3cbjygy2qFEi7HCeUT4BDKCvMozPozcD6WmOt6sVvYDNBKhFSz3kjOVQ==} - micromark-extension-mdx-md@1.0.1: - resolution: {integrity: sha512-7MSuj2S7xjOQXAjjkbjBsHkMtb+mDGVW6uI2dBL9snOBCbZmoNgDAeZ0nSn9j3T42UE/g2xVNMn18PJxZvkBEA==} - micromark-extension-mdx-md@2.0.0: resolution: {integrity: sha512-EpAiszsB3blw4Rpba7xTOUptcFeBFi+6PY8VnJ2hhimH+vCQDirWgsMpz7w1XcZE7LVrSAUGb9VJpG9ghlYvYQ==} - micromark-extension-mdxjs-esm@1.0.5: - resolution: {integrity: sha512-xNRBw4aoURcyz/S69B19WnZAkWJMxHMT5hE36GtDAyhoyn/8TuAeqjFJQlwk+MKQsUD7b3l7kFX+vlfVWgcX1w==} - micromark-extension-mdxjs-esm@3.0.0: resolution: {integrity: sha512-DJFl4ZqkErRpq/dAPyeWp15tGrcrrJho1hKK5uBS70BCtfrIFg81sqcTVu3Ta+KD1Tk5vAtBNElWxtAa+m8K9A==} - micromark-extension-mdxjs@1.0.1: - resolution: {integrity: sha512-7YA7hF6i5eKOfFUzZ+0z6avRG52GpWR8DL+kN47y3f2KhxbBZMhmxe7auOeaTBrW2DenbbZTf1ea9tA2hDpC2Q==} - micromark-extension-mdxjs@3.0.0: resolution: {integrity: sha512-A873fJfhnJ2siZyUrJ31l34Uqwy4xIFmvPY1oj+Ean5PHcPBYzEsvqvWGaWcfEIr11O5Dlw3p2y0tZWpKHDejQ==} - micromark-factory-destination@1.1.0: - resolution: {integrity: sha512-XaNDROBgx9SgSChd69pjiGKbV+nfHGDPVYFs5dOoDd7ZnMAE+Cuu91BCpsY8RT2NP9vo/B8pds2VQNCLiu0zhg==} - micromark-factory-destination@2.0.1: resolution: {integrity: sha512-Xe6rDdJlkmbFRExpTOmRj9N3MaWmbAgdpSrBQvCFqhezUn4AHqJHbaEnfbVYYiexVSs//tqOdY/DxhjdCiJnIA==} - micromark-factory-label@1.1.0: - resolution: {integrity: sha512-OLtyez4vZo/1NjxGhcpDSbHQ+m0IIGnT8BoPamh+7jVlzLJBH98zzuCoUeMxvM6WsNeh8wx8cKvqLiPHEACn0w==} - micromark-factory-label@2.0.1: resolution: {integrity: sha512-VFMekyQExqIW7xIChcXn4ok29YE3rnuyveW3wZQWWqF4Nv9Wk5rgJ99KzPvHjkmPXF93FXIbBp6YdW3t71/7Vg==} - micromark-factory-mdx-expression@1.0.9: - resolution: {integrity: sha512-jGIWzSmNfdnkJq05c7b0+Wv0Kfz3NJ3N4cBjnbO4zjXIlxJr+f8lk+5ZmwFvqdAbUy2q6B5rCY//g0QAAaXDWA==} - micromark-factory-mdx-expression@2.0.3: resolution: {integrity: sha512-kQnEtA3vzucU2BkrIa8/VaSAsP+EJ3CKOvhMuJgOEGg9KDC6OAY6nSnNDVRiVNRqj7Y4SlSzcStaH/5jge8JdQ==} - micromark-factory-space@1.1.0: - resolution: {integrity: sha512-cRzEj7c0OL4Mw2v6nwzttyOZe8XY/Z8G0rzmWQZTBi/jjwyw/U4uqKtUORXQrR5bAZZnbTI/feRV/R7hc4jQYQ==} - micromark-factory-space@2.0.1: resolution: {integrity: sha512-zRkxjtBxxLd2Sc0d+fbnEunsTj46SWXgXciZmHq0kDYGnck/ZSGj9/wULTV95uoeYiK5hRXP2mJ98Uo4cq/LQg==} - micromark-factory-title@1.1.0: - resolution: {integrity: sha512-J7n9R3vMmgjDOCY8NPw55jiyaQnH5kBdV2/UXCtZIpnHH3P6nHUKaH7XXEYuWwx/xUJcawa8plLBEjMPU24HzQ==} - micromark-factory-title@2.0.1: resolution: {integrity: sha512-5bZ+3CjhAd9eChYTHsjy6TGxpOFSKgKKJPJxr293jTbfry2KDoWkhBb6TcPVB4NmzaPhMs1Frm9AZH7OD4Cjzw==} - micromark-factory-whitespace@1.1.0: - resolution: {integrity: sha512-v2WlmiymVSp5oMg+1Q0N1Lxmt6pMhIHD457whWM7/GUlEks1hI9xj5w3zbc4uuMKXGisksZk8DzP2UyGbGqNsQ==} - micromark-factory-whitespace@2.0.1: resolution: {integrity: sha512-Ob0nuZ3PKt/n0hORHyvoD9uZhr+Za8sFoP+OnMcnWK5lngSzALgQYKMr9RJVOWLqQYuyn6ulqGWSXdwf6F80lQ==} - micromark-util-character@1.2.0: - resolution: {integrity: sha512-lXraTwcX3yH/vMDaFWCQJP1uIszLVebzUa3ZHdrgxr7KEU/9mL4mVgCpGbyhvNLNlauROiNUq7WN5u7ndbY6xg==} - micromark-util-character@2.1.1: resolution: {integrity: sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==} - micromark-util-chunked@1.1.0: - resolution: {integrity: sha512-Ye01HXpkZPNcV6FiyoW2fGZDUw4Yc7vT0E9Sad83+bEDiCJ1uXu0S3mr8WLpsz3HaG3x2q0HM6CTuPdcZcluFQ==} - micromark-util-chunked@2.0.1: resolution: {integrity: sha512-QUNFEOPELfmvv+4xiNg2sRYeS/P84pTW0TCgP5zc9FpXetHY0ab7SxKyAQCNCc1eK0459uoLI1y5oO5Vc1dbhA==} - micromark-util-classify-character@1.1.0: - resolution: {integrity: sha512-SL0wLxtKSnklKSUplok1WQFoGhUdWYKggKUiqhX+Swala+BtptGCu5iPRc+xvzJ4PXE/hwM3FNXsfEVgoZsWbw==} - micromark-util-classify-character@2.0.1: resolution: {integrity: sha512-K0kHzM6afW/MbeWYWLjoHQv1sgg2Q9EccHEDzSkxiP/EaagNzCm7T/WMKZ3rjMbvIpvBiZgwR3dKMygtA4mG1Q==} - micromark-util-combine-extensions@1.1.0: - resolution: {integrity: sha512-Q20sp4mfNf9yEqDL50WwuWZHUrCO4fEyeDCnMGmG5Pr0Cz15Uo7KBs6jq+dq0EgX4DPwwrh9m0X+zPV1ypFvUA==} - micromark-util-combine-extensions@2.0.1: resolution: {integrity: sha512-OnAnH8Ujmy59JcyZw8JSbK9cGpdVY44NKgSM7E9Eh7DiLS2E9RNQf0dONaGDzEG9yjEl5hcqeIsj4hfRkLH/Bg==} - micromark-util-decode-numeric-character-reference@1.1.0: - resolution: {integrity: sha512-m9V0ExGv0jB1OT21mrWcuf4QhP46pH1KkfWy9ZEezqHKAxkj4mPCy3nIH1rkbdMlChLHX531eOrymlwyZIf2iw==} - micromark-util-decode-numeric-character-reference@2.0.2: resolution: {integrity: sha512-ccUbYk6CwVdkmCQMyr64dXz42EfHGkPQlBj5p7YVGzq8I7CtjXZJrubAYezf7Rp+bjPseiROqe7G6foFd+lEuw==} - micromark-util-decode-string@1.1.0: - resolution: {integrity: sha512-YphLGCK8gM1tG1bd54azwyrQRjCFcmgj2S2GoJDNnh4vYtnL38JS8M4gpxzOPNyHdNEpheyWXCTnnTDY3N+NVQ==} - micromark-util-decode-string@2.0.1: resolution: {integrity: sha512-nDV/77Fj6eH1ynwscYTOsbK7rR//Uj0bZXBwJZRfaLEJ1iGBR6kIfNmlNqaqJf649EP0F3NWNdeJi03elllNUQ==} - micromark-util-encode@1.1.0: - resolution: {integrity: sha512-EuEzTWSTAj9PA5GOAs992GzNh2dGQO52UvAbtSOMvXTxv3Criqb6IOzJUBCmEqrrXSblJIJBbFFv6zPxpreiJw==} - micromark-util-encode@2.0.1: resolution: {integrity: sha512-c3cVx2y4KqUnwopcO9b/SCdo2O67LwJJ/UyqGfbigahfegL9myoEFoDYZgkT7f36T0bLrM9hZTAaAyH+PCAXjw==} - micromark-util-events-to-acorn@1.2.3: - resolution: {integrity: sha512-ij4X7Wuc4fED6UoLWkmo0xJQhsktfNh1J0m8g4PbIMPlx+ek/4YdW5mvbye8z/aZvAPUoxgXHrwVlXAPKMRp1w==} - micromark-util-events-to-acorn@2.0.3: resolution: {integrity: sha512-jmsiEIiZ1n7X1Rr5k8wVExBQCg5jy4UXVADItHmNk1zkwEVhBuIUKRu3fqv+hs4nxLISi2DQGlqIOGiFxgbfHg==} - micromark-util-html-tag-name@1.2.0: - resolution: {integrity: sha512-VTQzcuQgFUD7yYztuQFKXT49KghjtETQ+Wv/zUjGSGBioZnkA4P1XXZPT1FHeJA6RwRXSF47yvJ1tsJdoxwO+Q==} - micromark-util-html-tag-name@2.0.1: resolution: {integrity: sha512-2cNEiYDhCWKI+Gs9T0Tiysk136SnR13hhO8yW6BGNyhOC4qYFnwF1nKfD3HFAIXA5c45RrIG1ub11GiXeYd1xA==} - micromark-util-normalize-identifier@1.1.0: - resolution: {integrity: sha512-N+w5vhqrBihhjdpM8+5Xsxy71QWqGn7HYNUvch71iV2PM7+E3uWGox1Qp90loa1ephtCxG2ftRV/Conitc6P2Q==} - micromark-util-normalize-identifier@2.0.1: resolution: {integrity: sha512-sxPqmo70LyARJs0w2UclACPUUEqltCkJ6PhKdMIDuJ3gSf/Q+/GIe3WKl0Ijb/GyH9lOpUkRAO2wp0GVkLvS9Q==} - micromark-util-resolve-all@1.1.0: - resolution: {integrity: sha512-b/G6BTMSg+bX+xVCshPTPyAu2tmA0E4X98NSR7eIbeC6ycCqCeE7wjfDIgzEbkzdEVJXRtOG4FbEm/uGbCRouA==} - micromark-util-resolve-all@2.0.1: resolution: {integrity: sha512-VdQyxFWFT2/FGJgwQnJYbe1jjQoNTS4RjglmSjTUlpUMa95Htx9NHeYW4rGDJzbjvCsl9eLjMQwGeElsqmzcHg==} - micromark-util-sanitize-uri@1.2.0: - resolution: {integrity: sha512-QO4GXv0XZfWey4pYFndLUKEAktKkG5kZTdUNaTAkzbuJxn2tNBOr+QtxR2XpWaMhbImT2dPzyLrPXLlPhph34A==} - micromark-util-sanitize-uri@2.0.1: resolution: {integrity: sha512-9N9IomZ/YuGGZZmQec1MbgxtlgougxTodVwDzzEouPKo3qFWvymFHWcnDi2vzV1ff6kas9ucW+o3yzJK9YB1AQ==} - micromark-util-subtokenize@1.1.0: - resolution: {integrity: sha512-kUQHyzRoxvZO2PuLzMt2P/dwVsTiivCK8icYTeR+3WgbuPqfHgPPy7nFKbeqRivBvn/3N3GBiNC+JRTMSxEC7A==} - micromark-util-subtokenize@2.1.0: resolution: {integrity: sha512-XQLu552iSctvnEcgXw6+Sx75GflAPNED1qx7eBJ+wydBb2KCbRZe+NwvIEEMM83uml1+2WSXpBAcp9IUCgCYWA==} - micromark-util-symbol@1.1.0: - resolution: {integrity: sha512-uEjpEYY6KMs1g7QfJ2eX1SQEV+ZT4rUD3UcF6l57acZvLNK7PBZL+ty82Z1qhK1/yXIY4bdx04FKMgR0g4IAag==} - micromark-util-symbol@2.0.1: resolution: {integrity: sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==} - micromark-util-types@1.1.0: - resolution: {integrity: sha512-ukRBgie8TIAcacscVHSiddHjO4k/q3pnedmzMQ4iwDcK0FtFCohKOlFbaOL/mPgfnPsL3C1ZyxJa4sbWrBl3jg==} - micromark-util-types@2.0.2: resolution: {integrity: sha512-Yw0ECSpJoViF1qTU4DC6NwtC4aWGt1EkzaQB8KPPyCRR8z9TWeV0HbEFGTO+ZY1wB22zmxnJqhPyTpOVCpeHTA==} - micromark@3.2.0: - resolution: {integrity: sha512-uD66tJj54JLYq0De10AhWycZWGQNUvDI55xPgk2sQM5kn1JYlhbCMTtEeT27+vAhW2FBQxLlOmS3pmA7/2z4aA==} - micromark@4.0.2: resolution: {integrity: sha512-zpe98Q6kvavpCr1NPVSCMebCKfD7CA2NqZ+rykeNhONIJBpc1tFKt9hucLGwha3jNTNI8lHpctWJWoimVF4PfA==} @@ -3561,10 +3465,6 @@ packages: mlly@1.8.0: resolution: {integrity: sha512-l8D9ODSRWLe2KHJSifWGwBqpTZXIXTeo8mlKjY+E2HAakaTeNpqAyBZ8GSqLzHgw4XmHmC8whvpjJNMbFZN7/g==} - mri@1.2.0: - resolution: {integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==} - engines: {node: '>=4'} - ms@2.1.3: resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} @@ -3589,13 +3489,13 @@ packages: natural-compare@1.4.0: resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} - next-contentlayer@0.3.4: - resolution: {integrity: sha512-UtUCwgAl159KwfhNaOwyiI7Lg6sdioyKMeh+E7jxx0CJ29JuXGxBEYmCI6+72NxFGIFZKx8lvttbbQhbnYWYSw==} + next-contentlayer2@0.5.8: + resolution: {integrity: sha512-3Xh8quPCFmg/QGa4qTnOwSsT3oNYCtmm+Ii0UlbOHxX59gHYVX9M5mTzkdUKiKC1aJfiGIPPGQXhKNfc6qvWZg==} peerDependencies: - contentlayer: 0.3.4 - next: ^12 || ^13 - react: '*' - react-dom: '*' + contentlayer2: 0.5.8 + next: '>=12.0.0' + react: ^18 || ^19 || ^19.0.0-rc + react-dom: ^18 || ^19 || ^19.0.0-rc next-themes@0.2.1: resolution: {integrity: sha512-B+AKNfYNIzh0vqQQKqQItTS8evEouKD7H5Hj3kmuPERwddR2TxvDSFZuTj6T7Jfn1oyeUyJMydPl1Bkxkh0W7A==} @@ -3625,15 +3525,6 @@ packages: no-case@3.0.4: resolution: {integrity: sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==} - node-domexception@1.0.0: - resolution: {integrity: sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==} - engines: {node: '>=10.5.0'} - deprecated: Use your platform's native DOMException instead - - node-fetch@3.3.2: - resolution: {integrity: sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - node-releases@2.0.55: resolution: {integrity: sha512-mIrE/Cw9y+9Au6dS5vDKDhQza9YvG6w+ZrS6X+ZzA7yFW/soAeaups4Qzn1bL6g5FVy8WtP79+0j82oPIbqRjQ==} engines: {node: '>=18'} @@ -3774,9 +3665,6 @@ packages: pathe@2.0.3: resolution: {integrity: sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==} - periscopic@3.1.0: - resolution: {integrity: sha512-vKiQ8RRtkl9P+r/+oefh25C3fhybptkHKCZSPlcXiJux2tJF55GnEj3BVn4A5gKfq9NWWXXrxkHBwVPUfH0opw==} - picocolors@1.1.1: resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} @@ -4091,41 +3979,34 @@ packages: rehype-slug@6.0.0: resolution: {integrity: sha512-lWyvf/jwu+oS5+hL5eClVd3hNdmwM1kAC0BUvEGD19pajQMIzcNUd/k9GsfQ+FfECvX+JE+e9/btsKH0EjJT6A==} - rehype-stringify@9.0.4: - resolution: {integrity: sha512-Uk5xu1YKdqobe5XpSskwPvo1XeHUUucWEQSl8hTrXt5selvca1e8K1EZ37E6YoZ4BT8BCqCdVfQW7OfHfthtVQ==} + rehype-stringify@10.0.1: + resolution: {integrity: sha512-k9ecfXHmIPuFVI61B9DeLPN0qFHfawM6RsuX48hoqlaKSF61RskNjSm1lI8PhBEM0MRdLxVVm4WmTqJQccH9mA==} rehype-toc@3.0.2: resolution: {integrity: sha512-DMt376+4i1KJGgHJL7Ezd65qKkJ7Eqp6JSB47BJ90ReBrohI9ufrornArM6f4oJjP2E2DVZZHufWucv/9t7GUQ==} engines: {node: '>=10'} - remark-frontmatter@4.0.1: - resolution: {integrity: sha512-38fJrB0KnmD3E33a5jZC/5+gGAC2WKNiPw1/fdXJvijBlhA7RCsvJklrYJakS0HedninvaCYW8lQGf9C918GfA==} + remark-frontmatter@5.0.0: + resolution: {integrity: sha512-XTFYvNASMe5iPN0719nPrdItC9aU0ssC4v14mH1BCi1u0n1gAocqcujWUrByftZTbLhRtiKRyjYTSIOcr69UVQ==} - remark-gfm@3.0.1: - resolution: {integrity: sha512-lEFDoi2PICJyNrACFOfDD3JlLkuSbOa5Wd8EPt06HUdptv8Gn0bxYTdbU/XXQ3swAPkEaGxxPN9cbnMHvVu1Ig==} + remark-gfm@4.0.1: + resolution: {integrity: sha512-1quofZ2RQ9EWdeN34S79+KExV1764+wCUGop5CPL1WGdD0ocPpu91lzPGbwWMECpEpd42kJGQwzRfyov9j4yNg==} - remark-mdx-frontmatter@1.1.1: - resolution: {integrity: sha512-7teX9DW4tI2WZkXS4DBxneYSY7NHiXl4AKdWDO9LXVweULlCT8OPWsOjLEnMIXViN1j+QcY8mfbq3k0EK6x3uA==} - engines: {node: '>=12.2.0'} - - remark-mdx@2.3.0: - resolution: {integrity: sha512-g53hMkpM0I98MU266IzDFMrTD980gNF3BJnkyFcmN+dD873mQeD5rdMO3Y2X+x8umQfbSE0PcoEDl7ledSA+2g==} + remark-mdx-frontmatter@4.0.0: + resolution: {integrity: sha512-PZzAiDGOEfv1Ua7exQ8S5kKxkD8CDaSb4nM+1Mprs6u8dyvQifakh+kCj6NovfGXW+bTvrhjaR3srzjS2qJHKg==} remark-mdx@3.1.1: resolution: {integrity: sha512-Pjj2IYlUY3+D8x00UJsIOg5BEvfMyeI+2uLPn9VO9Wg4MEtN/VTIq2NEJQfde9PnX15KgtHyl9S0BcTnWrIuWg==} - remark-parse@10.0.2: - resolution: {integrity: sha512-3ydxgHa/ZQzG8LvC7jTXccARYDcRld3VfcgIIFs7bI6vbRSxJJmzgLEIIoYKyrfhaY+ujuWaf/PJiMZXoiCXgw==} - remark-parse@11.0.0: resolution: {integrity: sha512-FCxlKLNGknS5ba/1lmpYijMUzX2esxW5xQqjWxw2eHFfS2MSdaHVINFmhjo+qN1WhZhNimq0dZATN9pH0IDrpA==} - remark-rehype@10.1.0: - resolution: {integrity: sha512-EFmR5zppdBp0WQeDVZ/b66CWJipB2q2VLNFMabzDSGR66Z2fQii83G5gTBbgGEnEEA0QRussvrFHxk1HWGJskw==} - remark-rehype@11.1.2: resolution: {integrity: sha512-Dh7l57ianaEoIpzbp0PC9UKAdCSVklD8E5Rpw7ETfbTl3FqcOOgq5q2LVDhgGCkaBv7p24JXikPdvhhmHvKMsw==} + remark-stringify@11.0.0: + resolution: {integrity: sha512-1OSmLd3awB/t8qdoEOMazZkNsfVTeY4fTsgzcQFdXNq8ToTN4ZGwrMnlda4K6smTFKD+GRV6O48i6Z4iKgPPpw==} + repeating@2.0.1: resolution: {integrity: sha512-ZqtSMuVybkISo2OWvqvm7iHSWngvdaW3IpsT9/uP8v4gMi591LY6h35wdOfvQdWCKFWZWm2Y1Opp4kV7vQKT6A==} engines: {node: '>=0.10.0'} @@ -4171,10 +4052,6 @@ packages: rw@1.3.3: resolution: {integrity: sha512-PdhdWy89SiZogBLaw42zdeqtRJ//zFd2PgQavcICDUgJT5oW10QCRKbJ6bg4r0/UY2M6BWd5tkxuGFRvCkgfHQ==} - sade@1.8.1: - resolution: {integrity: sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==} - engines: {node: '>=6'} - safe-array-concat@1.1.3: resolution: {integrity: sha512-AURm5f0jYEOydBj7VQlVvDrjeFgthDdEF5H1dP+6mNpoXOMo1quQqJ4wvJDyRZ9+pO3kGWoOdmV08cSv2aJV6Q==} engines: {node: '>=0.4'} @@ -4396,9 +4273,6 @@ packages: style-to-js@1.1.21: resolution: {integrity: sha512-RjQetxJrrUJLQPHbLku6U/ocGtzyjbJMP9lCNK7Ag0CNh690nSH8woqWH9u16nMjYBAok+i7JO1NP2pOy8IsPQ==} - style-to-object@0.4.4: - resolution: {integrity: sha512-HYNoHZa2GorYNyqiCaBgsxvcJIn7OHq6inEga+E6Ke3m5JkoqpQbnFssk4jwe+K7AhGa2fcha4wSOf1Kn01dMg==} - style-to-object@1.0.14: resolution: {integrity: sha512-LIN7rULI0jBscWQYaSswptyderlarFkjQ+t79nzty8tcIAceVomEVlLzH5VP4Cmsv6MtKhs7qaAiwlcp+Mgaxw==} @@ -4457,6 +4331,12 @@ packages: thenify@3.3.1: resolution: {integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==} + thingies@2.6.1: + resolution: {integrity: sha512-cV/CMGTK3M4MlnJ/0At6ismOw/A0EEniDNScajjz/Br3c1sqE72YD01rGpPTKwd27wAxI5Pr+6+0w8yofzFRYw==} + engines: {node: '>=10.18'} + peerDependencies: + tslib: ^2 + tiny-invariant@1.3.3: resolution: {integrity: sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg==} @@ -4475,6 +4355,12 @@ packages: toml@3.0.0: resolution: {integrity: sha512-y/mWCZinnvxjTKYhJ+pYxwD0mRLVvOtdS2Awbgxln6iEnt4rk0yBxeSBHkGJcPucRiG0e55mwWp+g/05rsrd6w==} + tree-dump@1.1.0: + resolution: {integrity: sha512-rMuvhU4MCDbcbnleZTFezWsaZXRFemSqAM+7jPnzUl1fo9w3YEKOxAeui0fz3OI4EU4hf23iyA7uQRVko+UaBA==} + engines: {node: '>=10.0'} + peerDependencies: + tslib: '2' + trim-lines@3.0.1: resolution: {integrity: sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==} @@ -4498,8 +4384,8 @@ packages: ts-interface-checker@0.1.13: resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==} - ts-pattern@4.3.0: - resolution: {integrity: sha512-pefrkcd4lmIVR0LA49Imjf9DYLK8vtWhqBPA3Ya1ir8xCW0O2yjL9dsCVvI7pCodLC5q7smNpEtDR2yVulQxOg==} + ts-pattern@5.9.0: + resolution: {integrity: sha512-6s5V71mX8qBUmlgbrfL33xDUwO0fq48rxAu2LBE11WBeGdpCPOsXksQbZJHvHwhrd3QjUusd3mAOM5Gg0mFBLg==} tsconfig-paths@3.15.0: resolution: {integrity: sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==} @@ -4522,9 +4408,9 @@ packages: resolution: {integrity: sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==} engines: {node: '>=10'} - type-fest@3.13.1: - resolution: {integrity: sha512-tLq3bSNx+xSpwvAJnzrK0Ep5CLNWjvFTOp71URMaAEWBfRb9nnJiBoUe0tF8bI4ZFO3omgBR6NvnbzVUT3Ly4g==} - engines: {node: '>=14.16'} + type-fest@4.41.0: + resolution: {integrity: sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA==} + engines: {node: '>=16'} typed-array-buffer@1.0.3: resolution: {integrity: sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==} @@ -4542,8 +4428,8 @@ packages: resolution: {integrity: sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg==} engines: {node: '>= 0.4'} - typescript@5.1.6: - resolution: {integrity: sha512-zaWCozRZ6DLEWAWFrVDz1H6FVXzUSfTy5FUMWsQlU8Ym5JP9eO4xkTIROFCQvhQf61z6O/G6ugw3SgAnvvm+HA==} + typescript@5.3.3: + resolution: {integrity: sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw==} engines: {node: '>=14.17'} hasBin: true @@ -4554,36 +4440,27 @@ packages: resolution: {integrity: sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw==} engines: {node: '>= 0.4'} + undici-types@7.18.2: + resolution: {integrity: sha512-AsuCzffGHJybSaRrmr5eHr81mwJU3kjw6M+uprWvCXiNeN9SOGwQ3Jn8jb8m3Z6izVgknn1R0FTCEAP2QrLY/w==} + unified@10.1.2: resolution: {integrity: sha512-pUSWAi/RAnVy1Pif2kAoeWNBa3JVrx0MId2LASj8G+7AiHWoKZNTomq6LG326T68U7/e263X6fTdcXIy7XnF7Q==} unified@11.0.5: resolution: {integrity: sha512-xKvGhPWw3k84Qjh8bI3ZeJjqnyadK+GEFtazSfZv/rKeTkTjOJho6mFqh2SM96iIcZokxiOpg78GazTSg8+KHA==} - unist-util-generated@2.0.1: - resolution: {integrity: sha512-qF72kLmPxAw0oN2fwpWIqbXAVyEqUzDHMsbtPvOudIlUzXYFIeQIuxXQCRCFh22B7cixvU0MG7m3MW8FTq/S+A==} - unist-util-is@5.2.1: resolution: {integrity: sha512-u9njyyfEh43npf1M+yGKDGVPbY/JWEemg5nH05ncKPfi+kBbKBJoTdsogMu33uhytuLlv9y0O7GH7fEdwLdLQw==} unist-util-is@6.0.1: resolution: {integrity: sha512-LsiILbtBETkDz8I9p1dQ0uyRUWuaQzd/cuEeS1hoRSyW5E5XGmTzlwY1OrNzzakGowI9Dr/I8HVaw4hTtnxy8g==} - unist-util-position-from-estree@1.1.2: - resolution: {integrity: sha512-poZa0eXpS+/XpoQwGwl79UUdea4ol2ZuCYguVaJS4qzIOMDzbqz8a3erUCOmubSZkaOuGamb3tX790iwOIROww==} - unist-util-position-from-estree@2.0.0: resolution: {integrity: sha512-KaFVRjoqLyF6YXCbVLNad/eS4+OfPQQn2yOd7zF/h5T/CSL2v8NpN6a5TPvtbXthAGw5nG+PuTtq+DdIZr+cRQ==} - unist-util-position@4.0.4: - resolution: {integrity: sha512-kUBE91efOWfIVBo8xzh/uZQ7p9ffYRtUbMRZBNFYwf0RK8koUMx6dGUfwylLOKmaT2cs4wSW96QoYUSXAyEtpg==} - unist-util-position@5.0.0: resolution: {integrity: sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==} - unist-util-remove-position@4.0.2: - resolution: {integrity: sha512-TkBb0HABNmxzAcfLf4qsIbFbaPDvMO6wa3b3j4VcEzFVaw1LBKwnW4/sRJ/atSLSzoIg41JWEdnE7N6DIhGDGQ==} - unist-util-stringify-position@3.0.3: resolution: {integrity: sha512-k5GzIBZ/QatR8N5X2y+drfpWG8IDBzdnVj6OInRNWm1oXrzydiaAT2OQiA8DPRRZyAKb9b6I2a6PxYklZD0gKg==} @@ -4641,16 +4518,11 @@ packages: resolution: {integrity: sha512-xZe/16rV4aa+HGSOCiY2YeLT1OybRLrrkL/Rqaq7p7GMVXjFh+6wN4oMYgjFmnSnhY8t6Xpdl2l9qmnHYuMHwQ==} hasBin: true - uuid@8.3.2: - resolution: {integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==} + uuid@9.0.1: + resolution: {integrity: sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==} deprecated: uuid@10 and below is no longer supported. For ESM codebases, update to uuid@latest. For CommonJS codebases, use uuid@11 (but be aware this version will likely be deprecated in 2028). hasBin: true - uvu@0.5.6: - resolution: {integrity: sha512-+g8ENReyr8YsOc6fv/NVJs2vFdHBnBNdfE49rshrTzDWOlUx4Gq7KOS2GD8eqhy2j+Ejq29+SbKH8yjkAqXqoA==} - engines: {node: '>=8'} - hasBin: true - validate-npm-package-license@3.0.4: resolution: {integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==} @@ -4678,10 +4550,6 @@ packages: web-namespaces@2.0.1: resolution: {integrity: sha512-bKr1DkiNa2krS7qxNtdrtHAmzuYGFQLiQ13TsorsdT6ULTkPLKuu5+GsFpDlg6JFjUTwX2DyhMPG2be8uPrqsQ==} - web-streams-polyfill@3.3.3: - resolution: {integrity: sha512-d2JWLCivmZYTSIoge9MsgFCZrt571BikcWGYkjC1khllbTeDlGqZ2D8vD8E/lJa8WGWbb7Plm8/XJYV7IJHZZw==} - engines: {node: '>= 8'} - which-boxed-primitive@1.1.1: resolution: {integrity: sha512-TbX3mj8n0odCBFVlY8AxkqcHASw3L60jIuF8jFP78az3C2YhmGvqbHBpAjTRH2/xqYunrJ9g1jSyjCjpoWzIAA==} engines: {node: '>= 0.4'} @@ -4974,10 +4842,10 @@ snapshots: '@chevrotain/types@11.1.2': {} - '@contentlayer/cli@0.3.4(esbuild@0.18.20)': + '@contentlayer2/cli@0.5.8(esbuild@0.18.20)': dependencies: - '@contentlayer/core': 0.3.4(esbuild@0.18.20) - '@contentlayer/utils': 0.3.4 + '@contentlayer2/core': 0.5.8(esbuild@0.18.20) + '@contentlayer2/utils': 0.5.8 clipanion: 3.2.1(typanion@3.14.0) typanion: 3.14.0 transitivePeerDependencies: @@ -4986,46 +4854,46 @@ snapshots: - markdown-wasm - supports-color - '@contentlayer/client@0.3.4(esbuild@0.18.20)': + '@contentlayer2/client@0.5.8(esbuild@0.18.20)': dependencies: - '@contentlayer/core': 0.3.4(esbuild@0.18.20) + '@contentlayer2/core': 0.5.8(esbuild@0.18.20) transitivePeerDependencies: - '@effect-ts/otel-node' - esbuild - markdown-wasm - supports-color - '@contentlayer/core@0.3.4(esbuild@0.18.20)': + '@contentlayer2/core@0.5.8(esbuild@0.18.20)': dependencies: - '@contentlayer/utils': 0.3.4 + '@contentlayer2/utils': 0.5.8 camel-case: 4.1.2 comment-json: 4.5.1 gray-matter: 4.0.3 - mdx-bundler: 9.2.1(esbuild@0.18.20) - rehype-stringify: 9.0.4 - remark-frontmatter: 4.0.1 - remark-parse: 10.0.2 - remark-rehype: 10.1.0 + mdx-bundler: 10.1.1(esbuild@0.18.20) + rehype-stringify: 10.0.1 + remark-frontmatter: 5.0.0 + remark-parse: 11.0.0 + remark-rehype: 11.1.2 source-map-support: 0.5.21 - type-fest: 3.13.1 - unified: 10.1.2 + type-fest: 4.41.0 + unified: 11.0.5 optionalDependencies: esbuild: 0.18.20 transitivePeerDependencies: - '@effect-ts/otel-node' - supports-color - '@contentlayer/source-files@0.3.4(esbuild@0.18.20)': + '@contentlayer2/source-files@0.5.8(esbuild@0.18.20)': dependencies: - '@contentlayer/core': 0.3.4(esbuild@0.18.20) - '@contentlayer/utils': 0.3.4 + '@contentlayer2/core': 0.5.8(esbuild@0.18.20) + '@contentlayer2/utils': 0.5.8 chokidar: 3.6.0 fast-glob: 3.3.3 gray-matter: 4.0.3 imagescript: 1.3.1 micromatch: 4.0.8 - ts-pattern: 4.3.0 - unified: 10.1.2 + ts-pattern: 5.9.0 + unified: 11.0.5 yaml: 2.9.0 zod: 3.25.76 transitivePeerDependencies: @@ -5034,38 +4902,37 @@ snapshots: - markdown-wasm - supports-color - '@contentlayer/source-remote-files@0.3.4(esbuild@0.18.20)': + '@contentlayer2/source-remote-files@0.5.8(esbuild@0.18.20)': dependencies: - '@contentlayer/core': 0.3.4(esbuild@0.18.20) - '@contentlayer/source-files': 0.3.4(esbuild@0.18.20) - '@contentlayer/utils': 0.3.4 + '@contentlayer2/core': 0.5.8(esbuild@0.18.20) + '@contentlayer2/source-files': 0.5.8(esbuild@0.18.20) + '@contentlayer2/utils': 0.5.8 transitivePeerDependencies: - '@effect-ts/otel-node' - esbuild - markdown-wasm - supports-color - '@contentlayer/utils@0.3.4': + '@contentlayer2/utils@0.5.8': dependencies: '@effect-ts/core': 0.60.5 '@effect-ts/otel': 0.15.1(@effect-ts/core@0.60.5)(@opentelemetry/api@1.9.0)(@opentelemetry/core@1.30.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0)) - '@effect-ts/otel-exporter-trace-otlp-grpc': 0.15.1(@effect-ts/core@0.60.5)(@opentelemetry/api@1.9.0)(@opentelemetry/core@1.30.1(@opentelemetry/api@1.9.0))(@opentelemetry/exporter-trace-otlp-grpc@0.39.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0)) '@effect-ts/otel-sdk-trace-node': 0.15.1(@effect-ts/core@0.60.5)(@opentelemetry/api@1.9.0)(@opentelemetry/core@1.30.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@1.30.1(@opentelemetry/api@1.9.0)) '@js-temporal/polyfill': 0.4.4 '@opentelemetry/api': 1.9.0 '@opentelemetry/core': 1.30.1(@opentelemetry/api@1.9.0) - '@opentelemetry/exporter-trace-otlp-grpc': 0.39.1(@opentelemetry/api@1.9.0) + '@opentelemetry/exporter-trace-otlp-grpc': 0.57.2(@opentelemetry/api@1.9.0) '@opentelemetry/resources': 1.30.1(@opentelemetry/api@1.9.0) '@opentelemetry/sdk-trace-base': 1.30.1(@opentelemetry/api@1.9.0) '@opentelemetry/sdk-trace-node': 1.30.1(@opentelemetry/api@1.9.0) '@opentelemetry/semantic-conventions': 1.39.0 chokidar: 3.6.0 hash-wasm: 4.12.0 - inflection: 2.0.1 - memfs: 3.5.3 + inflection: 3.0.2 + memfs: 4.75.0 oo-ascii-tree: 1.126.0 - ts-pattern: 4.3.0 - type-fest: 3.13.1 + ts-pattern: 5.9.0 + type-fest: 4.41.0 '@docsearch/css@3.9.0': {} @@ -5087,15 +4954,6 @@ snapshots: dependencies: '@effect-ts/system': 0.57.5 - '@effect-ts/otel-exporter-trace-otlp-grpc@0.15.1(@effect-ts/core@0.60.5)(@opentelemetry/api@1.9.0)(@opentelemetry/core@1.30.1(@opentelemetry/api@1.9.0))(@opentelemetry/exporter-trace-otlp-grpc@0.39.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0))': - dependencies: - '@effect-ts/core': 0.60.5 - '@effect-ts/otel': 0.15.1(@effect-ts/core@0.60.5)(@opentelemetry/api@1.9.0)(@opentelemetry/core@1.30.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0)) - '@opentelemetry/api': 1.9.0 - '@opentelemetry/core': 1.30.1(@opentelemetry/api@1.9.0) - '@opentelemetry/exporter-trace-otlp-grpc': 0.39.1(@opentelemetry/api@1.9.0) - '@opentelemetry/sdk-trace-base': 1.30.1(@opentelemetry/api@1.9.0) - '@effect-ts/otel-sdk-trace-node@0.15.1(@effect-ts/core@0.60.5)(@opentelemetry/api@1.9.0)(@opentelemetry/core@1.30.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@1.30.1(@opentelemetry/api@1.9.0))': dependencies: '@effect-ts/core': 0.60.5 @@ -5135,7 +4993,7 @@ snapshots: tslib: 2.8.1 optional: true - '@esbuild-plugins/node-resolve@0.1.4(esbuild@0.18.20)': + '@esbuild-plugins/node-resolve@0.2.2(esbuild@0.18.20)': dependencies: '@types/resolve': 1.20.6 debug: 4.4.3 @@ -5431,34 +5289,142 @@ snapshots: '@jsdevtools/rehype-toc@3.0.2': {} - '@mdx-js/esbuild@2.3.0(esbuild@0.18.20)': + '@jsonjoy.com/base64@1.1.2(tslib@2.8.1)': dependencies: - '@mdx-js/mdx': 2.3.0 - esbuild: 0.18.20 - node-fetch: 3.3.2 - vfile: 5.3.7 - transitivePeerDependencies: - - supports-color + tslib: 2.8.1 - '@mdx-js/mdx@2.3.0': + '@jsonjoy.com/base64@17.67.0(tslib@2.8.1)': dependencies: - '@types/estree-jsx': 1.0.5 - '@types/mdx': 2.0.13 - estree-util-build-jsx: 2.2.2 - estree-util-is-identifier-name: 2.1.0 - estree-util-to-js: 1.2.0 - estree-walker: 3.0.3 - hast-util-to-estree: 2.3.3 - markdown-extensions: 1.1.1 - periscopic: 3.1.0 - remark-mdx: 2.3.0 - remark-parse: 10.0.2 - remark-rehype: 10.1.0 - unified: 10.1.2 - unist-util-position-from-estree: 1.1.2 - unist-util-stringify-position: 3.0.3 - unist-util-visit: 4.1.2 - vfile: 5.3.7 + tslib: 2.8.1 + + '@jsonjoy.com/buffers@1.2.1(tslib@2.8.1)': + dependencies: + tslib: 2.8.1 + + '@jsonjoy.com/buffers@17.67.0(tslib@2.8.1)': + dependencies: + tslib: 2.8.1 + + '@jsonjoy.com/codegen@1.0.0(tslib@2.8.1)': + dependencies: + tslib: 2.8.1 + + '@jsonjoy.com/codegen@17.67.0(tslib@2.8.1)': + dependencies: + tslib: 2.8.1 + + '@jsonjoy.com/fs-core@4.75.0(tslib@2.8.1)': + dependencies: + '@jsonjoy.com/fs-node-builtins': 4.75.0(tslib@2.8.1) + '@jsonjoy.com/fs-node-utils': 4.75.0(tslib@2.8.1) + thingies: 2.6.1(tslib@2.8.1) + tslib: 2.8.1 + + '@jsonjoy.com/fs-fsa@4.75.0(tslib@2.8.1)': + dependencies: + '@jsonjoy.com/fs-core': 4.75.0(tslib@2.8.1) + '@jsonjoy.com/fs-node-builtins': 4.75.0(tslib@2.8.1) + '@jsonjoy.com/fs-node-utils': 4.75.0(tslib@2.8.1) + thingies: 2.6.1(tslib@2.8.1) + tslib: 2.8.1 + + '@jsonjoy.com/fs-node-builtins@4.75.0(tslib@2.8.1)': + dependencies: + tslib: 2.8.1 + + '@jsonjoy.com/fs-node-to-fsa@4.75.0(tslib@2.8.1)': + dependencies: + '@jsonjoy.com/fs-fsa': 4.75.0(tslib@2.8.1) + '@jsonjoy.com/fs-node-builtins': 4.75.0(tslib@2.8.1) + '@jsonjoy.com/fs-node-utils': 4.75.0(tslib@2.8.1) + tslib: 2.8.1 + + '@jsonjoy.com/fs-node-utils@4.75.0(tslib@2.8.1)': + dependencies: + '@jsonjoy.com/fs-node-builtins': 4.75.0(tslib@2.8.1) + glob-to-regex.js: 1.2.0(tslib@2.8.1) + tslib: 2.8.1 + + '@jsonjoy.com/fs-node@4.75.0(tslib@2.8.1)': + dependencies: + '@jsonjoy.com/fs-core': 4.75.0(tslib@2.8.1) + '@jsonjoy.com/fs-node-builtins': 4.75.0(tslib@2.8.1) + '@jsonjoy.com/fs-node-utils': 4.75.0(tslib@2.8.1) + '@jsonjoy.com/fs-print': 4.75.0(tslib@2.8.1) + '@jsonjoy.com/fs-snapshot': 4.75.0(tslib@2.8.1) + glob-to-regex.js: 1.2.0(tslib@2.8.1) + thingies: 2.6.1(tslib@2.8.1) + tslib: 2.8.1 + + '@jsonjoy.com/fs-print@4.75.0(tslib@2.8.1)': + dependencies: + '@jsonjoy.com/fs-node-utils': 4.75.0(tslib@2.8.1) + tree-dump: 1.1.0(tslib@2.8.1) + tslib: 2.8.1 + + '@jsonjoy.com/fs-snapshot@4.75.0(tslib@2.8.1)': + dependencies: + '@jsonjoy.com/buffers': 17.67.0(tslib@2.8.1) + '@jsonjoy.com/fs-node-utils': 4.75.0(tslib@2.8.1) + '@jsonjoy.com/json-pack': 17.67.0(tslib@2.8.1) + '@jsonjoy.com/util': 17.67.0(tslib@2.8.1) + tslib: 2.8.1 + + '@jsonjoy.com/json-pack@1.21.0(tslib@2.8.1)': + dependencies: + '@jsonjoy.com/base64': 1.1.2(tslib@2.8.1) + '@jsonjoy.com/buffers': 1.2.1(tslib@2.8.1) + '@jsonjoy.com/codegen': 1.0.0(tslib@2.8.1) + '@jsonjoy.com/json-pointer': 1.0.2(tslib@2.8.1) + '@jsonjoy.com/util': 1.9.0(tslib@2.8.1) + hyperdyperid: 1.2.0 + thingies: 2.6.1(tslib@2.8.1) + tree-dump: 1.1.0(tslib@2.8.1) + tslib: 2.8.1 + + '@jsonjoy.com/json-pack@17.67.0(tslib@2.8.1)': + dependencies: + '@jsonjoy.com/base64': 17.67.0(tslib@2.8.1) + '@jsonjoy.com/buffers': 17.67.0(tslib@2.8.1) + '@jsonjoy.com/codegen': 17.67.0(tslib@2.8.1) + '@jsonjoy.com/json-pointer': 17.67.0(tslib@2.8.1) + '@jsonjoy.com/util': 17.67.0(tslib@2.8.1) + hyperdyperid: 1.2.0 + thingies: 2.6.1(tslib@2.8.1) + tree-dump: 1.1.0(tslib@2.8.1) + tslib: 2.8.1 + + '@jsonjoy.com/json-pointer@1.0.2(tslib@2.8.1)': + dependencies: + '@jsonjoy.com/codegen': 1.0.0(tslib@2.8.1) + '@jsonjoy.com/util': 1.9.0(tslib@2.8.1) + tslib: 2.8.1 + + '@jsonjoy.com/json-pointer@17.67.0(tslib@2.8.1)': + dependencies: + '@jsonjoy.com/util': 17.67.0(tslib@2.8.1) + tslib: 2.8.1 + + '@jsonjoy.com/util@1.9.0(tslib@2.8.1)': + dependencies: + '@jsonjoy.com/buffers': 1.2.1(tslib@2.8.1) + '@jsonjoy.com/codegen': 1.0.0(tslib@2.8.1) + tslib: 2.8.1 + + '@jsonjoy.com/util@17.67.0(tslib@2.8.1)': + dependencies: + '@jsonjoy.com/buffers': 17.67.0(tslib@2.8.1) + '@jsonjoy.com/codegen': 17.67.0(tslib@2.8.1) + tslib: 2.8.1 + + '@mdx-js/esbuild@3.1.1(esbuild@0.18.20)': + dependencies: + '@mdx-js/mdx': 3.1.1 + '@types/unist': 3.0.3 + esbuild: 0.18.20 + source-map: 0.7.6 + vfile: 6.0.3 + vfile-message: 4.0.3 transitivePeerDependencies: - supports-color @@ -5550,7 +5516,7 @@ snapshots: '@nolyfill/is-core-module@1.0.39': {} - '@opentelemetry/api-logs@0.39.1': + '@opentelemetry/api-logs@0.57.2': dependencies: '@opentelemetry/api': 1.9.0 @@ -5560,48 +5526,46 @@ snapshots: dependencies: '@opentelemetry/api': 1.9.0 - '@opentelemetry/core@1.13.0(@opentelemetry/api@1.9.0)': - dependencies: - '@opentelemetry/api': 1.9.0 - '@opentelemetry/semantic-conventions': 1.13.0 - '@opentelemetry/core@1.30.1(@opentelemetry/api@1.9.0)': dependencies: '@opentelemetry/api': 1.9.0 '@opentelemetry/semantic-conventions': 1.28.0 - '@opentelemetry/exporter-trace-otlp-grpc@0.39.1(@opentelemetry/api@1.9.0)': + '@opentelemetry/exporter-trace-otlp-grpc@0.57.2(@opentelemetry/api@1.9.0)': dependencies: '@grpc/grpc-js': 1.14.4 '@opentelemetry/api': 1.9.0 - '@opentelemetry/core': 1.13.0(@opentelemetry/api@1.9.0) - '@opentelemetry/otlp-grpc-exporter-base': 0.39.1(@opentelemetry/api@1.9.0) - '@opentelemetry/otlp-transformer': 0.39.1(@opentelemetry/api@1.9.0) - '@opentelemetry/resources': 1.13.0(@opentelemetry/api@1.9.0) - '@opentelemetry/sdk-trace-base': 1.13.0(@opentelemetry/api@1.9.0) + '@opentelemetry/core': 1.30.1(@opentelemetry/api@1.9.0) + '@opentelemetry/otlp-exporter-base': 0.57.2(@opentelemetry/api@1.9.0) + '@opentelemetry/otlp-grpc-exporter-base': 0.57.2(@opentelemetry/api@1.9.0) + '@opentelemetry/otlp-transformer': 0.57.2(@opentelemetry/api@1.9.0) + '@opentelemetry/resources': 1.30.1(@opentelemetry/api@1.9.0) + '@opentelemetry/sdk-trace-base': 1.30.1(@opentelemetry/api@1.9.0) - '@opentelemetry/otlp-exporter-base@0.39.1(@opentelemetry/api@1.9.0)': + '@opentelemetry/otlp-exporter-base@0.57.2(@opentelemetry/api@1.9.0)': dependencies: '@opentelemetry/api': 1.9.0 - '@opentelemetry/core': 1.13.0(@opentelemetry/api@1.9.0) + '@opentelemetry/core': 1.30.1(@opentelemetry/api@1.9.0) + '@opentelemetry/otlp-transformer': 0.57.2(@opentelemetry/api@1.9.0) - '@opentelemetry/otlp-grpc-exporter-base@0.39.1(@opentelemetry/api@1.9.0)': + '@opentelemetry/otlp-grpc-exporter-base@0.57.2(@opentelemetry/api@1.9.0)': dependencies: '@grpc/grpc-js': 1.14.4 '@opentelemetry/api': 1.9.0 - '@opentelemetry/core': 1.13.0(@opentelemetry/api@1.9.0) - '@opentelemetry/otlp-exporter-base': 0.39.1(@opentelemetry/api@1.9.0) - protobufjs: 7.6.6 + '@opentelemetry/core': 1.30.1(@opentelemetry/api@1.9.0) + '@opentelemetry/otlp-exporter-base': 0.57.2(@opentelemetry/api@1.9.0) + '@opentelemetry/otlp-transformer': 0.57.2(@opentelemetry/api@1.9.0) - '@opentelemetry/otlp-transformer@0.39.1(@opentelemetry/api@1.9.0)': + '@opentelemetry/otlp-transformer@0.57.2(@opentelemetry/api@1.9.0)': dependencies: '@opentelemetry/api': 1.9.0 - '@opentelemetry/api-logs': 0.39.1 - '@opentelemetry/core': 1.13.0(@opentelemetry/api@1.9.0) - '@opentelemetry/resources': 1.13.0(@opentelemetry/api@1.9.0) - '@opentelemetry/sdk-logs': 0.39.1(@opentelemetry/api-logs@0.39.1)(@opentelemetry/api@1.9.0) - '@opentelemetry/sdk-metrics': 1.13.0(@opentelemetry/api@1.9.0) - '@opentelemetry/sdk-trace-base': 1.13.0(@opentelemetry/api@1.9.0) + '@opentelemetry/api-logs': 0.57.2 + '@opentelemetry/core': 1.30.1(@opentelemetry/api@1.9.0) + '@opentelemetry/resources': 1.30.1(@opentelemetry/api@1.9.0) + '@opentelemetry/sdk-logs': 0.57.2(@opentelemetry/api@1.9.0) + '@opentelemetry/sdk-metrics': 1.30.1(@opentelemetry/api@1.9.0) + '@opentelemetry/sdk-trace-base': 1.30.1(@opentelemetry/api@1.9.0) + protobufjs: 7.6.6 '@opentelemetry/propagator-b3@1.30.1(@opentelemetry/api@1.9.0)': dependencies: @@ -5613,38 +5577,24 @@ snapshots: '@opentelemetry/api': 1.9.0 '@opentelemetry/core': 1.30.1(@opentelemetry/api@1.9.0) - '@opentelemetry/resources@1.13.0(@opentelemetry/api@1.9.0)': - dependencies: - '@opentelemetry/api': 1.9.0 - '@opentelemetry/core': 1.13.0(@opentelemetry/api@1.9.0) - '@opentelemetry/semantic-conventions': 1.13.0 - '@opentelemetry/resources@1.30.1(@opentelemetry/api@1.9.0)': dependencies: '@opentelemetry/api': 1.9.0 '@opentelemetry/core': 1.30.1(@opentelemetry/api@1.9.0) '@opentelemetry/semantic-conventions': 1.28.0 - '@opentelemetry/sdk-logs@0.39.1(@opentelemetry/api-logs@0.39.1)(@opentelemetry/api@1.9.0)': - dependencies: - '@opentelemetry/api': 1.9.0 - '@opentelemetry/api-logs': 0.39.1 - '@opentelemetry/core': 1.13.0(@opentelemetry/api@1.9.0) - '@opentelemetry/resources': 1.13.0(@opentelemetry/api@1.9.0) - - '@opentelemetry/sdk-metrics@1.13.0(@opentelemetry/api@1.9.0)': + '@opentelemetry/sdk-logs@0.57.2(@opentelemetry/api@1.9.0)': dependencies: '@opentelemetry/api': 1.9.0 - '@opentelemetry/core': 1.13.0(@opentelemetry/api@1.9.0) - '@opentelemetry/resources': 1.13.0(@opentelemetry/api@1.9.0) - lodash.merge: 4.6.2 + '@opentelemetry/api-logs': 0.57.2 + '@opentelemetry/core': 1.30.1(@opentelemetry/api@1.9.0) + '@opentelemetry/resources': 1.30.1(@opentelemetry/api@1.9.0) - '@opentelemetry/sdk-trace-base@1.13.0(@opentelemetry/api@1.9.0)': + '@opentelemetry/sdk-metrics@1.30.1(@opentelemetry/api@1.9.0)': dependencies: '@opentelemetry/api': 1.9.0 - '@opentelemetry/core': 1.13.0(@opentelemetry/api@1.9.0) - '@opentelemetry/resources': 1.13.0(@opentelemetry/api@1.9.0) - '@opentelemetry/semantic-conventions': 1.13.0 + '@opentelemetry/core': 1.30.1(@opentelemetry/api@1.9.0) + '@opentelemetry/resources': 1.30.1(@opentelemetry/api@1.9.0) '@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0)': dependencies: @@ -5661,9 +5611,7 @@ snapshots: '@opentelemetry/propagator-b3': 1.30.1(@opentelemetry/api@1.9.0) '@opentelemetry/propagator-jaeger': 1.30.1(@opentelemetry/api@1.9.0) '@opentelemetry/sdk-trace-base': 1.30.1(@opentelemetry/api@1.9.0) - semver: 7.7.4 - - '@opentelemetry/semantic-conventions@1.13.0': {} + semver: 7.8.5 '@opentelemetry/semantic-conventions@1.28.0': {} @@ -5991,10 +5939,6 @@ snapshots: tslib: 2.8.1 optional: true - '@types/acorn@4.0.6': - dependencies: - '@types/estree': 1.0.8 - '@types/d3-array@3.2.2': {} '@types/d3-axis@3.0.6': @@ -6134,10 +6078,6 @@ snapshots: '@types/json5@0.0.29': {} - '@types/mdast@3.0.15': - dependencies: - '@types/unist': 2.0.11 - '@types/mdast@4.0.4': dependencies: '@types/unist': 3.0.3 @@ -6146,9 +6086,9 @@ snapshots: '@types/ms@2.1.0': {} - '@types/node@20.4.9': {} - - '@types/parse5@6.0.3': {} + '@types/node@24.13.4': + dependencies: + undici-types: 7.18.2 '@types/prismjs@1.26.6': {} @@ -6179,16 +6119,16 @@ snapshots: '@types/unist@3.0.3': {} - '@typescript-eslint/parser@6.21.0(eslint@8.45.0)(typescript@5.1.6)': + '@typescript-eslint/parser@6.21.0(eslint@8.45.0)(typescript@5.3.3)': dependencies: '@typescript-eslint/scope-manager': 6.21.0 '@typescript-eslint/types': 6.21.0 - '@typescript-eslint/typescript-estree': 6.21.0(typescript@5.1.6) + '@typescript-eslint/typescript-estree': 6.21.0(typescript@5.3.3) '@typescript-eslint/visitor-keys': 6.21.0 debug: 4.4.3 eslint: 8.45.0 optionalDependencies: - typescript: 5.1.6 + typescript: 5.3.3 transitivePeerDependencies: - supports-color @@ -6199,7 +6139,7 @@ snapshots: '@typescript-eslint/types@6.21.0': {} - '@typescript-eslint/typescript-estree@6.21.0(typescript@5.1.6)': + '@typescript-eslint/typescript-estree@6.21.0(typescript@5.3.3)': dependencies: '@typescript-eslint/types': 6.21.0 '@typescript-eslint/visitor-keys': 6.21.0 @@ -6208,9 +6148,9 @@ snapshots: is-glob: 4.0.3 minimatch: 9.0.3 semver: 7.7.4 - ts-api-utils: 1.4.3(typescript@5.1.6) + ts-api-utils: 1.4.3(typescript@5.3.3) optionalDependencies: - typescript: 5.1.6 + typescript: 5.3.3 transitivePeerDependencies: - supports-color @@ -6619,14 +6559,14 @@ snapshots: confbox@0.1.8: {} - contentlayer@0.3.4(esbuild@0.18.20): + contentlayer2@0.5.8(esbuild@0.18.20): dependencies: - '@contentlayer/cli': 0.3.4(esbuild@0.18.20) - '@contentlayer/client': 0.3.4(esbuild@0.18.20) - '@contentlayer/core': 0.3.4(esbuild@0.18.20) - '@contentlayer/source-files': 0.3.4(esbuild@0.18.20) - '@contentlayer/source-remote-files': 0.3.4(esbuild@0.18.20) - '@contentlayer/utils': 0.3.4 + '@contentlayer2/cli': 0.5.8(esbuild@0.18.20) + '@contentlayer2/client': 0.5.8(esbuild@0.18.20) + '@contentlayer2/core': 0.5.8(esbuild@0.18.20) + '@contentlayer2/source-files': 0.5.8(esbuild@0.18.20) + '@contentlayer2/source-remote-files': 0.5.8(esbuild@0.18.20) + '@contentlayer2/utils': 0.5.8 transitivePeerDependencies: - '@effect-ts/otel-node' - esbuild @@ -6843,8 +6783,6 @@ snapshots: damerau-levenshtein@1.0.8: {} - data-uri-to-buffer@4.0.1: {} - data-view-buffer@1.0.2: dependencies: call-bound: 1.0.4 @@ -6911,8 +6849,6 @@ snapshots: didyoumean@1.2.2: {} - diff@5.2.2: {} - dir-glob@3.0.1: dependencies: path-type: 4.0.0 @@ -7099,20 +7035,20 @@ snapshots: escape-string-regexp@5.0.0: {} - eslint-config-next@13.4.16(eslint@8.45.0)(typescript@5.1.6): + eslint-config-next@13.4.16(eslint@8.45.0)(typescript@5.3.3): dependencies: '@next/eslint-plugin-next': 13.4.16 '@rushstack/eslint-patch': 1.15.0 - '@typescript-eslint/parser': 6.21.0(eslint@8.45.0)(typescript@5.1.6) + '@typescript-eslint/parser': 6.21.0(eslint@8.45.0)(typescript@5.3.3) eslint: 8.45.0 eslint-import-resolver-node: 0.3.9 eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0(eslint@8.45.0))(eslint@8.45.0) - eslint-plugin-import: 2.32.0(@typescript-eslint/parser@6.21.0(eslint@8.45.0)(typescript@5.1.6))(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0(eslint@8.45.0))(eslint@8.45.0))(eslint@8.45.0) + eslint-plugin-import: 2.32.0(@typescript-eslint/parser@6.21.0(eslint@8.45.0)(typescript@5.3.3))(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0(eslint@8.45.0))(eslint@8.45.0))(eslint@8.45.0) eslint-plugin-jsx-a11y: 6.10.2(eslint@8.45.0) eslint-plugin-react: 7.37.5(eslint@8.45.0) eslint-plugin-react-hooks: 5.0.0-canary-7118f5dd7-20230705(eslint@8.45.0) optionalDependencies: - typescript: 5.1.6 + typescript: 5.3.3 transitivePeerDependencies: - eslint-import-resolver-webpack - eslint-plugin-import-x @@ -7137,22 +7073,22 @@ snapshots: tinyglobby: 0.2.15 unrs-resolver: 1.11.1 optionalDependencies: - eslint-plugin-import: 2.32.0(@typescript-eslint/parser@6.21.0(eslint@8.45.0)(typescript@5.1.6))(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0(eslint@8.45.0))(eslint@8.45.0))(eslint@8.45.0) + eslint-plugin-import: 2.32.0(@typescript-eslint/parser@6.21.0(eslint@8.45.0)(typescript@5.3.3))(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0(eslint@8.45.0))(eslint@8.45.0))(eslint@8.45.0) transitivePeerDependencies: - supports-color - eslint-module-utils@2.12.1(@typescript-eslint/parser@6.21.0(eslint@8.45.0)(typescript@5.1.6))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0(eslint@8.45.0))(eslint@8.45.0))(eslint@8.45.0): + eslint-module-utils@2.12.1(@typescript-eslint/parser@6.21.0(eslint@8.45.0)(typescript@5.3.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0(eslint@8.45.0))(eslint@8.45.0))(eslint@8.45.0): dependencies: debug: 3.2.7 optionalDependencies: - '@typescript-eslint/parser': 6.21.0(eslint@8.45.0)(typescript@5.1.6) + '@typescript-eslint/parser': 6.21.0(eslint@8.45.0)(typescript@5.3.3) eslint: 8.45.0 eslint-import-resolver-node: 0.3.9 eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0(eslint@8.45.0))(eslint@8.45.0) transitivePeerDependencies: - supports-color - eslint-plugin-import@2.32.0(@typescript-eslint/parser@6.21.0(eslint@8.45.0)(typescript@5.1.6))(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0(eslint@8.45.0))(eslint@8.45.0))(eslint@8.45.0): + eslint-plugin-import@2.32.0(@typescript-eslint/parser@6.21.0(eslint@8.45.0)(typescript@5.3.3))(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0(eslint@8.45.0))(eslint@8.45.0))(eslint@8.45.0): dependencies: '@rtsao/scc': 1.1.0 array-includes: 3.1.9 @@ -7163,7 +7099,7 @@ snapshots: doctrine: 2.1.0 eslint: 8.45.0 eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.12.1(@typescript-eslint/parser@6.21.0(eslint@8.45.0)(typescript@5.1.6))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0(eslint@8.45.0))(eslint@8.45.0))(eslint@8.45.0) + eslint-module-utils: 2.12.1(@typescript-eslint/parser@6.21.0(eslint@8.45.0)(typescript@5.3.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0(eslint@8.45.0))(eslint@8.45.0))(eslint@8.45.0) hasown: 2.0.2 is-core-module: 2.16.1 is-glob: 4.0.3 @@ -7175,7 +7111,7 @@ snapshots: string.prototype.trimend: 1.0.9 tsconfig-paths: 3.15.0 optionalDependencies: - '@typescript-eslint/parser': 6.21.0(eslint@8.45.0)(typescript@5.1.6) + '@typescript-eslint/parser': 6.21.0(eslint@8.45.0)(typescript@5.3.3) transitivePeerDependencies: - eslint-import-resolver-typescript - eslint-import-resolver-webpack @@ -7293,20 +7229,10 @@ snapshots: estraverse@5.3.0: {} - estree-util-attach-comments@2.1.1: - dependencies: - '@types/estree': 1.0.8 - estree-util-attach-comments@3.0.0: dependencies: '@types/estree': 1.0.8 - estree-util-build-jsx@2.2.2: - dependencies: - '@types/estree-jsx': 1.0.5 - estree-util-is-identifier-name: 2.1.0 - estree-walker: 3.0.3 - estree-util-build-jsx@3.0.1: dependencies: '@types/estree-jsx': 1.0.5 @@ -7314,10 +7240,6 @@ snapshots: estree-util-is-identifier-name: 3.0.0 estree-walker: 3.0.3 - estree-util-is-identifier-name@1.1.0: {} - - estree-util-is-identifier-name@2.1.0: {} - estree-util-is-identifier-name@3.0.0: {} estree-util-scope@1.0.0: @@ -7325,26 +7247,15 @@ snapshots: '@types/estree': 1.0.8 devlop: 1.1.0 - estree-util-to-js@1.2.0: - dependencies: - '@types/estree-jsx': 1.0.5 - astring: 1.9.0 - source-map: 0.7.6 - estree-util-to-js@2.0.0: dependencies: '@types/estree-jsx': 1.0.5 astring: 1.9.0 source-map: 0.7.6 - estree-util-value-to-estree@1.3.0: + estree-util-value-to-estree@3.5.0: dependencies: - is-plain-obj: 3.0.0 - - estree-util-visit@1.2.1: - dependencies: - '@types/estree-jsx': 1.0.5 - '@types/unist': 2.0.11 + '@types/estree': 1.0.8 estree-util-visit@2.0.0: dependencies: @@ -7403,11 +7314,6 @@ snapshots: dependencies: xml-js: 1.6.11 - fetch-blob@3.2.0: - dependencies: - node-domexception: 1.0.0 - web-streams-polyfill: 3.3.3 - file-entry-cache@6.0.1: dependencies: flat-cache: 3.2.0 @@ -7445,14 +7351,8 @@ snapshots: format@0.2.2: {} - formdata-polyfill@4.0.10: - dependencies: - fetch-blob: 3.2.0 - fraction.js@5.3.4: {} - fs-monkey@1.1.0: {} - fs.realpath@1.0.0: {} fsevents@2.3.3: @@ -7519,6 +7419,10 @@ snapshots: dependencies: is-glob: 4.0.3 + glob-to-regex.js@1.2.0(tslib@2.8.1): + dependencies: + tslib: 2.8.1 + glob@11.1.0: dependencies: foreground-child: 3.3.1 @@ -7633,40 +7537,6 @@ snapshots: dependencies: '@types/hast': 2.3.10 - hast-util-raw@7.2.3: - dependencies: - '@types/hast': 2.3.10 - '@types/parse5': 6.0.3 - hast-util-from-parse5: 7.1.2 - hast-util-to-parse5: 7.1.0 - html-void-elements: 2.0.1 - parse5: 6.0.1 - unist-util-position: 4.0.4 - unist-util-visit: 4.1.2 - vfile: 5.3.7 - web-namespaces: 2.0.1 - zwitch: 2.0.4 - - hast-util-to-estree@2.3.3: - dependencies: - '@types/estree': 1.0.8 - '@types/estree-jsx': 1.0.5 - '@types/hast': 2.3.10 - '@types/unist': 2.0.11 - comma-separated-tokens: 2.0.3 - estree-util-attach-comments: 2.1.1 - estree-util-is-identifier-name: 2.1.0 - hast-util-whitespace: 2.0.1 - mdast-util-mdx-expression: 1.3.2 - mdast-util-mdxjs-esm: 1.3.1 - property-information: 6.5.0 - space-separated-tokens: 2.0.2 - style-to-object: 0.4.4 - unist-util-position: 4.0.4 - zwitch: 2.0.4 - transitivePeerDependencies: - - supports-color - hast-util-to-estree@3.1.3: dependencies: '@types/estree': 1.0.8 @@ -7688,16 +7558,16 @@ snapshots: transitivePeerDependencies: - supports-color - hast-util-to-html@8.0.4: + hast-util-to-html@9.0.5: dependencies: - '@types/hast': 2.3.10 - '@types/unist': 2.0.11 + '@types/hast': 3.0.4 + '@types/unist': 3.0.3 ccount: 2.0.1 comma-separated-tokens: 2.0.3 - hast-util-raw: 7.2.3 - hast-util-whitespace: 2.0.1 - html-void-elements: 2.0.1 - property-information: 6.5.0 + hast-util-whitespace: 3.0.0 + html-void-elements: 3.0.0 + mdast-util-to-hast: 13.2.1 + property-information: 7.1.0 space-separated-tokens: 2.0.2 stringify-entities: 4.0.4 zwitch: 2.0.4 @@ -7722,15 +7592,6 @@ snapshots: transitivePeerDependencies: - supports-color - hast-util-to-parse5@7.1.0: - dependencies: - '@types/hast': 2.3.10 - comma-separated-tokens: 2.0.3 - property-information: 6.5.0 - space-separated-tokens: 2.0.2 - web-namespaces: 2.0.1 - zwitch: 2.0.4 - hast-util-to-string@2.0.0: dependencies: '@types/hast': 2.3.10 @@ -7739,8 +7600,6 @@ snapshots: dependencies: '@types/hast': 3.0.4 - hast-util-whitespace@2.0.1: {} - hast-util-whitespace@3.0.0: dependencies: '@types/hast': 3.0.4 @@ -7769,7 +7628,9 @@ snapshots: hosted-git-info@2.8.9: {} - html-void-elements@2.0.1: {} + html-void-elements@3.0.0: {} + + hyperdyperid@1.2.0: {} iconv-lite@0.6.3: dependencies: @@ -7790,7 +7651,7 @@ snapshots: dependencies: repeating: 2.0.1 - inflection@2.0.1: {} + inflection@3.0.2: {} inflight@1.0.6: dependencies: @@ -7799,8 +7660,6 @@ snapshots: inherits@2.0.4: {} - inline-style-parser@0.1.1: {} - inline-style-parser@0.2.7: {} internal-slot@1.1.0: @@ -7926,14 +7785,8 @@ snapshots: is-path-inside@3.0.3: {} - is-plain-obj@3.0.0: {} - is-plain-obj@4.1.0: {} - is-reference@3.0.3: - dependencies: - '@types/estree': 1.0.8 - is-regex@1.2.1: dependencies: call-bound: 1.0.4 @@ -8053,8 +7906,6 @@ snapshots: kind-of@6.0.3: {} - kleur@4.1.5: {} - language-subtag-registry@0.3.23: {} language-tags@1.0.9: @@ -8128,8 +7979,6 @@ snapshots: map-obj@1.0.1: {} - markdown-extensions@1.1.1: {} - markdown-extensions@2.0.0: {} markdown-table@3.0.4: {} @@ -8138,35 +7987,12 @@ snapshots: math-intrinsics@1.1.0: {} - mdast-util-definitions@5.1.2: - dependencies: - '@types/mdast': 3.0.15 - '@types/unist': 2.0.11 - unist-util-visit: 4.1.2 - - mdast-util-find-and-replace@2.2.2: + mdast-util-find-and-replace@3.0.2: dependencies: - '@types/mdast': 3.0.15 + '@types/mdast': 4.0.4 escape-string-regexp: 5.0.0 - unist-util-is: 5.2.1 - unist-util-visit-parents: 5.1.3 - - mdast-util-from-markdown@1.3.1: - dependencies: - '@types/mdast': 3.0.15 - '@types/unist': 2.0.11 - decode-named-character-reference: 1.3.0 - mdast-util-to-string: 3.2.0 - micromark: 3.2.0 - micromark-util-decode-numeric-character-reference: 1.1.0 - micromark-util-decode-string: 1.1.0 - micromark-util-normalize-identifier: 1.1.0 - micromark-util-symbol: 1.1.0 - micromark-util-types: 1.1.0 - unist-util-stringify-position: 3.0.3 - uvu: 0.5.6 - transitivePeerDependencies: - - supports-color + unist-util-is: 6.0.1 + unist-util-visit-parents: 6.0.2 mdast-util-from-markdown@2.0.2: dependencies: @@ -8185,63 +8011,71 @@ snapshots: transitivePeerDependencies: - supports-color - mdast-util-frontmatter@1.0.1: + mdast-util-frontmatter@2.0.1: dependencies: - '@types/mdast': 3.0.15 - mdast-util-to-markdown: 1.5.0 - micromark-extension-frontmatter: 1.1.1 + '@types/mdast': 4.0.4 + devlop: 1.1.0 + escape-string-regexp: 5.0.0 + mdast-util-from-markdown: 2.0.2 + mdast-util-to-markdown: 2.1.2 + micromark-extension-frontmatter: 2.0.0 + transitivePeerDependencies: + - supports-color - mdast-util-gfm-autolink-literal@1.0.3: + mdast-util-gfm-autolink-literal@2.0.1: dependencies: - '@types/mdast': 3.0.15 + '@types/mdast': 4.0.4 ccount: 2.0.1 - mdast-util-find-and-replace: 2.2.2 - micromark-util-character: 1.2.0 + devlop: 1.1.0 + mdast-util-find-and-replace: 3.0.2 + micromark-util-character: 2.1.1 - mdast-util-gfm-footnote@1.0.2: + mdast-util-gfm-footnote@2.1.0: dependencies: - '@types/mdast': 3.0.15 - mdast-util-to-markdown: 1.5.0 - micromark-util-normalize-identifier: 1.1.0 + '@types/mdast': 4.0.4 + devlop: 1.1.0 + mdast-util-from-markdown: 2.0.2 + mdast-util-to-markdown: 2.1.2 + micromark-util-normalize-identifier: 2.0.1 + transitivePeerDependencies: + - supports-color - mdast-util-gfm-strikethrough@1.0.3: + mdast-util-gfm-strikethrough@2.0.0: dependencies: - '@types/mdast': 3.0.15 - mdast-util-to-markdown: 1.5.0 + '@types/mdast': 4.0.4 + mdast-util-from-markdown: 2.0.2 + mdast-util-to-markdown: 2.1.2 + transitivePeerDependencies: + - supports-color - mdast-util-gfm-table@1.0.7: + mdast-util-gfm-table@2.0.0: dependencies: - '@types/mdast': 3.0.15 + '@types/mdast': 4.0.4 + devlop: 1.1.0 markdown-table: 3.0.4 - mdast-util-from-markdown: 1.3.1 - mdast-util-to-markdown: 1.5.0 + mdast-util-from-markdown: 2.0.2 + mdast-util-to-markdown: 2.1.2 transitivePeerDependencies: - supports-color - mdast-util-gfm-task-list-item@1.0.2: - dependencies: - '@types/mdast': 3.0.15 - mdast-util-to-markdown: 1.5.0 - - mdast-util-gfm@2.0.2: + mdast-util-gfm-task-list-item@2.0.0: dependencies: - mdast-util-from-markdown: 1.3.1 - mdast-util-gfm-autolink-literal: 1.0.3 - mdast-util-gfm-footnote: 1.0.2 - mdast-util-gfm-strikethrough: 1.0.3 - mdast-util-gfm-table: 1.0.7 - mdast-util-gfm-task-list-item: 1.0.2 - mdast-util-to-markdown: 1.5.0 + '@types/mdast': 4.0.4 + devlop: 1.1.0 + mdast-util-from-markdown: 2.0.2 + mdast-util-to-markdown: 2.1.2 transitivePeerDependencies: - supports-color - mdast-util-mdx-expression@1.3.2: + mdast-util-gfm@3.1.0: dependencies: - '@types/estree-jsx': 1.0.5 - '@types/hast': 2.3.10 - '@types/mdast': 3.0.15 - mdast-util-from-markdown: 1.3.1 - mdast-util-to-markdown: 1.5.0 + mdast-util-from-markdown: 2.0.2 + mdast-util-gfm-autolink-literal: 2.0.1 + mdast-util-gfm-footnote: 2.1.0 + mdast-util-gfm-strikethrough: 2.0.0 + mdast-util-gfm-table: 2.0.0 + mdast-util-gfm-task-list-item: 2.0.0 + mdast-util-to-markdown: 2.1.2 transitivePeerDependencies: - supports-color @@ -8256,23 +8090,6 @@ snapshots: transitivePeerDependencies: - supports-color - mdast-util-mdx-jsx@2.1.4: - dependencies: - '@types/estree-jsx': 1.0.5 - '@types/hast': 2.3.10 - '@types/mdast': 3.0.15 - '@types/unist': 2.0.11 - ccount: 2.0.1 - mdast-util-from-markdown: 1.3.1 - mdast-util-to-markdown: 1.5.0 - parse-entities: 4.0.2 - stringify-entities: 4.0.4 - unist-util-remove-position: 4.0.2 - unist-util-stringify-position: 3.0.3 - vfile-message: 3.1.4 - transitivePeerDependencies: - - supports-color - mdast-util-mdx-jsx@3.2.0: dependencies: '@types/estree-jsx': 1.0.5 @@ -8290,16 +8107,6 @@ snapshots: transitivePeerDependencies: - supports-color - mdast-util-mdx@2.0.1: - dependencies: - mdast-util-from-markdown: 1.3.1 - mdast-util-mdx-expression: 1.3.2 - mdast-util-mdx-jsx: 2.1.4 - mdast-util-mdxjs-esm: 1.3.1 - mdast-util-to-markdown: 1.5.0 - transitivePeerDependencies: - - supports-color - mdast-util-mdx@3.0.0: dependencies: mdast-util-from-markdown: 2.0.2 @@ -8310,16 +8117,6 @@ snapshots: transitivePeerDependencies: - supports-color - mdast-util-mdxjs-esm@1.3.1: - dependencies: - '@types/estree-jsx': 1.0.5 - '@types/hast': 2.3.10 - '@types/mdast': 3.0.15 - mdast-util-from-markdown: 1.3.1 - mdast-util-to-markdown: 1.5.0 - transitivePeerDependencies: - - supports-color - mdast-util-mdxjs-esm@2.0.1: dependencies: '@types/estree-jsx': 1.0.5 @@ -8331,27 +8128,11 @@ snapshots: transitivePeerDependencies: - supports-color - mdast-util-phrasing@3.0.1: - dependencies: - '@types/mdast': 3.0.15 - unist-util-is: 5.2.1 - mdast-util-phrasing@4.1.0: dependencies: '@types/mdast': 4.0.4 unist-util-is: 6.0.1 - mdast-util-to-hast@12.3.0: - dependencies: - '@types/hast': 2.3.10 - '@types/mdast': 3.0.15 - mdast-util-definitions: 5.1.2 - micromark-util-sanitize-uri: 1.2.0 - trim-lines: 3.0.1 - unist-util-generated: 2.0.1 - unist-util-position: 4.0.4 - unist-util-visit: 4.1.2 - mdast-util-to-hast@13.2.1: dependencies: '@types/hast': 3.0.4 @@ -8364,17 +8145,6 @@ snapshots: unist-util-visit: 5.1.0 vfile: 6.0.3 - mdast-util-to-markdown@1.5.0: - dependencies: - '@types/mdast': 3.0.15 - '@types/unist': 2.0.11 - longest-streak: 3.1.0 - mdast-util-phrasing: 3.0.1 - mdast-util-to-string: 3.2.0 - micromark-util-decode-string: 1.1.0 - unist-util-visit: 4.1.2 - zwitch: 2.0.4 - mdast-util-to-markdown@2.1.2: dependencies: '@types/mdast': 4.0.4 @@ -8387,26 +8157,22 @@ snapshots: unist-util-visit: 5.1.0 zwitch: 2.0.4 - mdast-util-to-string@3.2.0: - dependencies: - '@types/mdast': 3.0.15 - mdast-util-to-string@4.0.0: dependencies: '@types/mdast': 4.0.4 - mdx-bundler@9.2.1(esbuild@0.18.20): + mdx-bundler@10.1.1(esbuild@0.18.20): dependencies: '@babel/runtime': 7.28.6 - '@esbuild-plugins/node-resolve': 0.1.4(esbuild@0.18.20) + '@esbuild-plugins/node-resolve': 0.2.2(esbuild@0.18.20) '@fal-works/esbuild-plugin-global-externals': 2.1.2 - '@mdx-js/esbuild': 2.3.0(esbuild@0.18.20) + '@mdx-js/esbuild': 3.1.1(esbuild@0.18.20) esbuild: 0.18.20 gray-matter: 4.0.3 - remark-frontmatter: 4.0.1 - remark-mdx-frontmatter: 1.1.1 - uuid: 8.3.2 - vfile: 5.3.7 + remark-frontmatter: 5.0.0 + remark-mdx-frontmatter: 4.0.0 + uuid: 9.0.1 + vfile: 6.0.3 transitivePeerDependencies: - supports-color @@ -8417,9 +8183,22 @@ snapshots: object-assign: 4.0.1 read-input: 0.3.1 - memfs@3.5.3: - dependencies: - fs-monkey: 1.1.0 + memfs@4.75.0: + dependencies: + '@jsonjoy.com/fs-core': 4.75.0(tslib@2.8.1) + '@jsonjoy.com/fs-fsa': 4.75.0(tslib@2.8.1) + '@jsonjoy.com/fs-node': 4.75.0(tslib@2.8.1) + '@jsonjoy.com/fs-node-builtins': 4.75.0(tslib@2.8.1) + '@jsonjoy.com/fs-node-to-fsa': 4.75.0(tslib@2.8.1) + '@jsonjoy.com/fs-node-utils': 4.75.0(tslib@2.8.1) + '@jsonjoy.com/fs-print': 4.75.0(tslib@2.8.1) + '@jsonjoy.com/fs-snapshot': 4.75.0(tslib@2.8.1) + '@jsonjoy.com/json-pack': 1.21.0(tslib@2.8.1) + '@jsonjoy.com/util': 1.9.0(tslib@2.8.1) + glob-to-regex.js: 1.2.0(tslib@2.8.1) + thingies: 2.6.1(tslib@2.8.1) + tree-dump: 1.1.0(tslib@2.8.1) + tslib: 2.8.1 memoize-one@4.0.3: {} @@ -8461,25 +8240,6 @@ snapshots: ts-dedent: 2.2.0 uuid: 14.0.2 - micromark-core-commonmark@1.1.0: - dependencies: - decode-named-character-reference: 1.3.0 - micromark-factory-destination: 1.1.0 - micromark-factory-label: 1.1.0 - micromark-factory-space: 1.1.0 - micromark-factory-title: 1.1.0 - micromark-factory-whitespace: 1.1.0 - micromark-util-character: 1.2.0 - micromark-util-chunked: 1.1.0 - micromark-util-classify-character: 1.1.0 - micromark-util-html-tag-name: 1.2.0 - micromark-util-normalize-identifier: 1.1.0 - micromark-util-resolve-all: 1.1.0 - micromark-util-subtokenize: 1.1.0 - micromark-util-symbol: 1.1.0 - micromark-util-types: 1.1.0 - uvu: 0.5.6 - micromark-core-commonmark@2.0.3: dependencies: decode-named-character-reference: 1.3.0 @@ -8499,81 +8259,70 @@ snapshots: micromark-util-symbol: 2.0.1 micromark-util-types: 2.0.2 - micromark-extension-frontmatter@1.1.1: + micromark-extension-frontmatter@2.0.0: dependencies: fault: 2.0.1 - micromark-util-character: 1.2.0 - micromark-util-symbol: 1.1.0 - micromark-util-types: 1.1.0 - - micromark-extension-gfm-autolink-literal@1.0.5: - dependencies: - micromark-util-character: 1.2.0 - micromark-util-sanitize-uri: 1.2.0 - micromark-util-symbol: 1.1.0 - micromark-util-types: 1.1.0 + micromark-util-character: 2.1.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 - micromark-extension-gfm-footnote@1.1.2: + micromark-extension-gfm-autolink-literal@2.1.0: dependencies: - micromark-core-commonmark: 1.1.0 - micromark-factory-space: 1.1.0 - micromark-util-character: 1.2.0 - micromark-util-normalize-identifier: 1.1.0 - micromark-util-sanitize-uri: 1.2.0 - micromark-util-symbol: 1.1.0 - micromark-util-types: 1.1.0 - uvu: 0.5.6 + micromark-util-character: 2.1.1 + micromark-util-sanitize-uri: 2.0.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 - micromark-extension-gfm-strikethrough@1.0.7: + micromark-extension-gfm-footnote@2.1.0: dependencies: - micromark-util-chunked: 1.1.0 - micromark-util-classify-character: 1.1.0 - micromark-util-resolve-all: 1.1.0 - micromark-util-symbol: 1.1.0 - micromark-util-types: 1.1.0 - uvu: 0.5.6 + devlop: 1.1.0 + micromark-core-commonmark: 2.0.3 + micromark-factory-space: 2.0.1 + micromark-util-character: 2.1.1 + micromark-util-normalize-identifier: 2.0.1 + micromark-util-sanitize-uri: 2.0.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 - micromark-extension-gfm-table@1.0.7: + micromark-extension-gfm-strikethrough@2.1.0: dependencies: - micromark-factory-space: 1.1.0 - micromark-util-character: 1.2.0 - micromark-util-symbol: 1.1.0 - micromark-util-types: 1.1.0 - uvu: 0.5.6 + devlop: 1.1.0 + micromark-util-chunked: 2.0.1 + micromark-util-classify-character: 2.0.1 + micromark-util-resolve-all: 2.0.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 - micromark-extension-gfm-tagfilter@1.0.2: + micromark-extension-gfm-table@2.1.2: dependencies: - micromark-util-types: 1.1.0 + devlop: 1.1.0 + micromark-factory-space: 2.0.1 + micromark-util-character: 2.1.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 - micromark-extension-gfm-task-list-item@1.0.5: + micromark-extension-gfm-tagfilter@2.0.0: dependencies: - micromark-factory-space: 1.1.0 - micromark-util-character: 1.2.0 - micromark-util-symbol: 1.1.0 - micromark-util-types: 1.1.0 - uvu: 0.5.6 + micromark-util-types: 2.0.2 - micromark-extension-gfm@2.0.3: + micromark-extension-gfm-task-list-item@2.1.0: dependencies: - micromark-extension-gfm-autolink-literal: 1.0.5 - micromark-extension-gfm-footnote: 1.1.2 - micromark-extension-gfm-strikethrough: 1.0.7 - micromark-extension-gfm-table: 1.0.7 - micromark-extension-gfm-tagfilter: 1.0.2 - micromark-extension-gfm-task-list-item: 1.0.5 - micromark-util-combine-extensions: 1.1.0 - micromark-util-types: 1.1.0 + devlop: 1.1.0 + micromark-factory-space: 2.0.1 + micromark-util-character: 2.1.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 - micromark-extension-mdx-expression@1.0.8: + micromark-extension-gfm@3.0.0: dependencies: - '@types/estree': 1.0.8 - micromark-factory-mdx-expression: 1.0.9 - micromark-factory-space: 1.1.0 - micromark-util-character: 1.2.0 - micromark-util-events-to-acorn: 1.2.3 - micromark-util-symbol: 1.1.0 - micromark-util-types: 1.1.0 - uvu: 0.5.6 + micromark-extension-gfm-autolink-literal: 2.1.0 + micromark-extension-gfm-footnote: 2.1.0 + micromark-extension-gfm-strikethrough: 2.1.0 + micromark-extension-gfm-table: 2.1.2 + micromark-extension-gfm-tagfilter: 2.0.0 + micromark-extension-gfm-task-list-item: 2.1.0 + micromark-util-combine-extensions: 2.0.1 + micromark-util-types: 2.0.2 micromark-extension-mdx-expression@3.0.1: dependencies: @@ -8586,19 +8335,6 @@ snapshots: micromark-util-symbol: 2.0.1 micromark-util-types: 2.0.2 - micromark-extension-mdx-jsx@1.0.5: - dependencies: - '@types/acorn': 4.0.6 - '@types/estree': 1.0.8 - estree-util-is-identifier-name: 2.1.0 - micromark-factory-mdx-expression: 1.0.9 - micromark-factory-space: 1.1.0 - micromark-util-character: 1.2.0 - micromark-util-symbol: 1.1.0 - micromark-util-types: 1.1.0 - uvu: 0.5.6 - vfile-message: 3.1.4 - micromark-extension-mdx-jsx@3.0.2: dependencies: '@types/estree': 1.0.8 @@ -8612,26 +8348,10 @@ snapshots: micromark-util-types: 2.0.2 vfile-message: 4.0.3 - micromark-extension-mdx-md@1.0.1: - dependencies: - micromark-util-types: 1.1.0 - micromark-extension-mdx-md@2.0.0: dependencies: micromark-util-types: 2.0.2 - micromark-extension-mdxjs-esm@1.0.5: - dependencies: - '@types/estree': 1.0.8 - micromark-core-commonmark: 1.1.0 - micromark-util-character: 1.2.0 - micromark-util-events-to-acorn: 1.2.3 - micromark-util-symbol: 1.1.0 - micromark-util-types: 1.1.0 - unist-util-position-from-estree: 1.1.2 - uvu: 0.5.6 - vfile-message: 3.1.4 - micromark-extension-mdxjs-esm@3.0.0: dependencies: '@types/estree': 1.0.8 @@ -8644,17 +8364,6 @@ snapshots: unist-util-position-from-estree: 2.0.0 vfile-message: 4.0.3 - micromark-extension-mdxjs@1.0.1: - dependencies: - acorn: 8.15.0 - acorn-jsx: 5.3.2(acorn@8.15.0) - micromark-extension-mdx-expression: 1.0.8 - micromark-extension-mdx-jsx: 1.0.5 - micromark-extension-mdx-md: 1.0.1 - micromark-extension-mdxjs-esm: 1.0.5 - micromark-util-combine-extensions: 1.1.0 - micromark-util-types: 1.1.0 - micromark-extension-mdxjs@3.0.0: dependencies: acorn: 8.15.0 @@ -8666,25 +8375,12 @@ snapshots: micromark-util-combine-extensions: 2.0.1 micromark-util-types: 2.0.2 - micromark-factory-destination@1.1.0: - dependencies: - micromark-util-character: 1.2.0 - micromark-util-symbol: 1.1.0 - micromark-util-types: 1.1.0 - micromark-factory-destination@2.0.1: dependencies: micromark-util-character: 2.1.1 micromark-util-symbol: 2.0.1 micromark-util-types: 2.0.2 - micromark-factory-label@1.1.0: - dependencies: - micromark-util-character: 1.2.0 - micromark-util-symbol: 1.1.0 - micromark-util-types: 1.1.0 - uvu: 0.5.6 - micromark-factory-label@2.0.1: dependencies: devlop: 1.1.0 @@ -8692,17 +8388,6 @@ snapshots: micromark-util-symbol: 2.0.1 micromark-util-types: 2.0.2 - micromark-factory-mdx-expression@1.0.9: - dependencies: - '@types/estree': 1.0.8 - micromark-util-character: 1.2.0 - micromark-util-events-to-acorn: 1.2.3 - micromark-util-symbol: 1.1.0 - micromark-util-types: 1.1.0 - unist-util-position-from-estree: 1.1.2 - uvu: 0.5.6 - vfile-message: 3.1.4 - micromark-factory-mdx-expression@2.0.3: dependencies: '@types/estree': 1.0.8 @@ -8715,23 +8400,11 @@ snapshots: unist-util-position-from-estree: 2.0.0 vfile-message: 4.0.3 - micromark-factory-space@1.1.0: - dependencies: - micromark-util-character: 1.2.0 - micromark-util-types: 1.1.0 - micromark-factory-space@2.0.1: dependencies: micromark-util-character: 2.1.1 micromark-util-types: 2.0.2 - micromark-factory-title@1.1.0: - dependencies: - micromark-factory-space: 1.1.0 - micromark-util-character: 1.2.0 - micromark-util-symbol: 1.1.0 - micromark-util-types: 1.1.0 - micromark-factory-title@2.0.1: dependencies: micromark-factory-space: 2.0.1 @@ -8739,13 +8412,6 @@ snapshots: micromark-util-symbol: 2.0.1 micromark-util-types: 2.0.2 - micromark-factory-whitespace@1.1.0: - dependencies: - micromark-factory-space: 1.1.0 - micromark-util-character: 1.2.0 - micromark-util-symbol: 1.1.0 - micromark-util-types: 1.1.0 - micromark-factory-whitespace@2.0.1: dependencies: micromark-factory-space: 2.0.1 @@ -8753,61 +8419,30 @@ snapshots: micromark-util-symbol: 2.0.1 micromark-util-types: 2.0.2 - micromark-util-character@1.2.0: - dependencies: - micromark-util-symbol: 1.1.0 - micromark-util-types: 1.1.0 - micromark-util-character@2.1.1: dependencies: micromark-util-symbol: 2.0.1 micromark-util-types: 2.0.2 - micromark-util-chunked@1.1.0: - dependencies: - micromark-util-symbol: 1.1.0 - micromark-util-chunked@2.0.1: dependencies: micromark-util-symbol: 2.0.1 - micromark-util-classify-character@1.1.0: - dependencies: - micromark-util-character: 1.2.0 - micromark-util-symbol: 1.1.0 - micromark-util-types: 1.1.0 - micromark-util-classify-character@2.0.1: dependencies: micromark-util-character: 2.1.1 micromark-util-symbol: 2.0.1 micromark-util-types: 2.0.2 - micromark-util-combine-extensions@1.1.0: - dependencies: - micromark-util-chunked: 1.1.0 - micromark-util-types: 1.1.0 - micromark-util-combine-extensions@2.0.1: dependencies: micromark-util-chunked: 2.0.1 micromark-util-types: 2.0.2 - micromark-util-decode-numeric-character-reference@1.1.0: - dependencies: - micromark-util-symbol: 1.1.0 - micromark-util-decode-numeric-character-reference@2.0.2: dependencies: micromark-util-symbol: 2.0.1 - micromark-util-decode-string@1.1.0: - dependencies: - decode-named-character-reference: 1.3.0 - micromark-util-character: 1.2.0 - micromark-util-decode-numeric-character-reference: 1.1.0 - micromark-util-symbol: 1.1.0 - micromark-util-decode-string@2.0.1: dependencies: decode-named-character-reference: 1.3.0 @@ -8815,21 +8450,8 @@ snapshots: micromark-util-decode-numeric-character-reference: 2.0.2 micromark-util-symbol: 2.0.1 - micromark-util-encode@1.1.0: {} - micromark-util-encode@2.0.1: {} - micromark-util-events-to-acorn@1.2.3: - dependencies: - '@types/acorn': 4.0.6 - '@types/estree': 1.0.8 - '@types/unist': 2.0.11 - estree-util-visit: 1.2.1 - micromark-util-symbol: 1.1.0 - micromark-util-types: 1.1.0 - uvu: 0.5.6 - vfile-message: 3.1.4 - micromark-util-events-to-acorn@2.0.3: dependencies: '@types/estree': 1.0.8 @@ -8840,45 +8462,22 @@ snapshots: micromark-util-types: 2.0.2 vfile-message: 4.0.3 - micromark-util-html-tag-name@1.2.0: {} - micromark-util-html-tag-name@2.0.1: {} - micromark-util-normalize-identifier@1.1.0: - dependencies: - micromark-util-symbol: 1.1.0 - micromark-util-normalize-identifier@2.0.1: dependencies: micromark-util-symbol: 2.0.1 - micromark-util-resolve-all@1.1.0: - dependencies: - micromark-util-types: 1.1.0 - micromark-util-resolve-all@2.0.1: dependencies: micromark-util-types: 2.0.2 - micromark-util-sanitize-uri@1.2.0: - dependencies: - micromark-util-character: 1.2.0 - micromark-util-encode: 1.1.0 - micromark-util-symbol: 1.1.0 - micromark-util-sanitize-uri@2.0.1: dependencies: micromark-util-character: 2.1.1 micromark-util-encode: 2.0.1 micromark-util-symbol: 2.0.1 - micromark-util-subtokenize@1.1.0: - dependencies: - micromark-util-chunked: 1.1.0 - micromark-util-symbol: 1.1.0 - micromark-util-types: 1.1.0 - uvu: 0.5.6 - micromark-util-subtokenize@2.1.0: dependencies: devlop: 1.1.0 @@ -8886,36 +8485,10 @@ snapshots: micromark-util-symbol: 2.0.1 micromark-util-types: 2.0.2 - micromark-util-symbol@1.1.0: {} - micromark-util-symbol@2.0.1: {} - micromark-util-types@1.1.0: {} - micromark-util-types@2.0.2: {} - micromark@3.2.0: - dependencies: - '@types/debug': 4.1.12 - debug: 4.4.3 - decode-named-character-reference: 1.3.0 - micromark-core-commonmark: 1.1.0 - micromark-factory-space: 1.1.0 - micromark-util-character: 1.2.0 - micromark-util-chunked: 1.1.0 - micromark-util-combine-extensions: 1.1.0 - micromark-util-decode-numeric-character-reference: 1.1.0 - micromark-util-encode: 1.1.0 - micromark-util-normalize-identifier: 1.1.0 - micromark-util-resolve-all: 1.1.0 - micromark-util-sanitize-uri: 1.2.0 - micromark-util-subtokenize: 1.1.0 - micromark-util-symbol: 1.1.0 - micromark-util-types: 1.1.0 - uvu: 0.5.6 - transitivePeerDependencies: - - supports-color - micromark@4.0.2: dependencies: '@types/debug': 4.1.12 @@ -8966,8 +8539,6 @@ snapshots: pkg-types: 1.3.1 ufo: 1.6.3 - mri@1.2.0: {} - ms@2.1.3: {} mustache@2.2.1: {} @@ -8984,11 +8555,11 @@ snapshots: natural-compare@1.4.0: {} - next-contentlayer@0.3.4(contentlayer@0.3.4(esbuild@0.18.20))(esbuild@0.18.20)(next@14.2.35(@opentelemetry/api@1.9.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + next-contentlayer2@0.5.8(contentlayer2@0.5.8(esbuild@0.18.20))(esbuild@0.18.20)(next@14.2.35(@opentelemetry/api@1.9.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1): dependencies: - '@contentlayer/core': 0.3.4(esbuild@0.18.20) - '@contentlayer/utils': 0.3.4 - contentlayer: 0.3.4(esbuild@0.18.20) + '@contentlayer2/core': 0.5.8(esbuild@0.18.20) + '@contentlayer2/utils': 0.5.8 + contentlayer2: 0.5.8(esbuild@0.18.20) next: 14.2.35(@opentelemetry/api@1.9.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) react: 18.3.1 react-dom: 18.3.1(react@18.3.1) @@ -9035,14 +8606,6 @@ snapshots: lower-case: 2.0.2 tslib: 2.8.1 - node-domexception@1.0.0: {} - - node-fetch@3.3.2: - dependencies: - data-uri-to-buffer: 4.0.1 - fetch-blob: 3.2.0 - formdata-polyfill: 4.0.10 - node-releases@2.0.55: {} normalize-package-data@2.5.0: @@ -9198,12 +8761,6 @@ snapshots: pathe@2.0.3: {} - periscopic@3.1.0: - dependencies: - '@types/estree': 1.0.8 - estree-walker: 3.0.3 - is-reference: 3.0.3 - picocolors@1.1.1: {} picomatch@2.3.2: {} @@ -9327,7 +8884,7 @@ snapshots: '@protobufjs/path': 1.1.2 '@protobufjs/pool': 1.1.0 '@protobufjs/utf8': 1.1.2 - '@types/node': 20.4.9 + '@types/node': 24.13.4 long: 5.3.2 punycode@2.3.1: {} @@ -9518,45 +9075,44 @@ snapshots: hast-util-to-string: 3.0.1 unist-util-visit: 5.1.0 - rehype-stringify@9.0.4: + rehype-stringify@10.0.1: dependencies: - '@types/hast': 2.3.10 - hast-util-to-html: 8.0.4 - unified: 10.1.2 + '@types/hast': 3.0.4 + hast-util-to-html: 9.0.5 + unified: 11.0.5 rehype-toc@3.0.2: dependencies: '@jsdevtools/rehype-toc': 3.0.2 - remark-frontmatter@4.0.1: + remark-frontmatter@5.0.0: dependencies: - '@types/mdast': 3.0.15 - mdast-util-frontmatter: 1.0.1 - micromark-extension-frontmatter: 1.1.1 - unified: 10.1.2 + '@types/mdast': 4.0.4 + mdast-util-frontmatter: 2.0.1 + micromark-extension-frontmatter: 2.0.0 + unified: 11.0.5 + transitivePeerDependencies: + - supports-color - remark-gfm@3.0.1: + remark-gfm@4.0.1: dependencies: - '@types/mdast': 3.0.15 - mdast-util-gfm: 2.0.2 - micromark-extension-gfm: 2.0.3 - unified: 10.1.2 + '@types/mdast': 4.0.4 + mdast-util-gfm: 3.1.0 + micromark-extension-gfm: 3.0.0 + remark-parse: 11.0.0 + remark-stringify: 11.0.0 + unified: 11.0.5 transitivePeerDependencies: - supports-color - remark-mdx-frontmatter@1.1.1: + remark-mdx-frontmatter@4.0.0: dependencies: - estree-util-is-identifier-name: 1.1.0 - estree-util-value-to-estree: 1.3.0 - js-yaml: 4.3.2 + '@types/mdast': 4.0.4 + estree-util-is-identifier-name: 3.0.0 + estree-util-value-to-estree: 3.5.0 toml: 3.0.0 - - remark-mdx@2.3.0: - dependencies: - mdast-util-mdx: 2.0.1 - micromark-extension-mdxjs: 1.0.1 - transitivePeerDependencies: - - supports-color + unified: 11.0.5 + yaml: 2.9.0 remark-mdx@3.1.1: dependencies: @@ -9565,14 +9121,6 @@ snapshots: transitivePeerDependencies: - supports-color - remark-parse@10.0.2: - dependencies: - '@types/mdast': 3.0.15 - mdast-util-from-markdown: 1.3.1 - unified: 10.1.2 - transitivePeerDependencies: - - supports-color - remark-parse@11.0.0: dependencies: '@types/mdast': 4.0.4 @@ -9582,13 +9130,6 @@ snapshots: transitivePeerDependencies: - supports-color - remark-rehype@10.1.0: - dependencies: - '@types/hast': 2.3.10 - '@types/mdast': 3.0.15 - mdast-util-to-hast: 12.3.0 - unified: 10.1.2 - remark-rehype@11.1.2: dependencies: '@types/hast': 3.0.4 @@ -9597,6 +9138,12 @@ snapshots: unified: 11.0.5 vfile: 6.0.3 + remark-stringify@11.0.0: + dependencies: + '@types/mdast': 4.0.4 + mdast-util-to-markdown: 2.1.2 + unified: 11.0.5 + repeating@2.0.1: dependencies: is-finite: 1.1.0 @@ -9640,10 +9187,6 @@ snapshots: rw@1.3.3: {} - sade@1.8.1: - dependencies: - mri: 1.2.0 - safe-array-concat@1.1.3: dependencies: call-bind: 1.0.8 @@ -9708,7 +9251,7 @@ snapshots: es-errors: 1.3.0 es-object-atoms: 1.1.1 - sharp@0.35.4(@types/node@20.4.9): + sharp@0.35.4(@types/node@24.13.4): dependencies: '@img/colour': 1.1.0 detect-libc: 2.1.2 @@ -9739,7 +9282,7 @@ snapshots: '@img/sharp-win32-arm64': 0.35.4 '@img/sharp-win32-ia32': 0.35.4 '@img/sharp-win32-x64': 0.35.4 - '@types/node': 20.4.9 + '@types/node': 24.13.4 shebang-command@2.0.0: dependencies: @@ -9921,10 +9464,6 @@ snapshots: dependencies: style-to-object: 1.0.14 - style-to-object@0.4.4: - dependencies: - inline-style-parser: 0.1.1 - style-to-object@1.0.14: dependencies: inline-style-parser: 0.2.7 @@ -9998,6 +9537,10 @@ snapshots: dependencies: any-promise: 1.3.0 + thingies@2.6.1(tslib@2.8.1): + dependencies: + tslib: 2.8.1 + tiny-invariant@1.3.3: {} tinyexec@1.0.2: {} @@ -10013,21 +9556,25 @@ snapshots: toml@3.0.0: {} + tree-dump@1.1.0(tslib@2.8.1): + dependencies: + tslib: 2.8.1 + trim-lines@3.0.1: {} trim-newlines@1.0.0: {} trough@2.2.0: {} - ts-api-utils@1.4.3(typescript@5.1.6): + ts-api-utils@1.4.3(typescript@5.3.3): dependencies: - typescript: 5.1.6 + typescript: 5.3.3 ts-dedent@2.2.0: {} ts-interface-checker@0.1.13: {} - ts-pattern@4.3.0: {} + ts-pattern@5.9.0: {} tsconfig-paths@3.15.0: dependencies: @@ -10048,7 +9595,7 @@ snapshots: type-fest@1.4.0: {} - type-fest@3.13.1: {} + type-fest@4.41.0: {} typed-array-buffer@1.0.3: dependencies: @@ -10083,7 +9630,7 @@ snapshots: possible-typed-array-names: 1.1.0 reflect.getprototypeof: 1.0.10 - typescript@5.1.6: {} + typescript@5.3.3: {} ufo@1.6.3: {} @@ -10094,6 +9641,8 @@ snapshots: has-symbols: 1.1.0 which-boxed-primitive: 1.1.1 + undici-types@7.18.2: {} + unified@10.1.2: dependencies: '@types/unist': 2.0.11 @@ -10114,8 +9663,6 @@ snapshots: trough: 2.2.0 vfile: 6.0.3 - unist-util-generated@2.0.1: {} - unist-util-is@5.2.1: dependencies: '@types/unist': 2.0.11 @@ -10124,27 +9671,14 @@ snapshots: dependencies: '@types/unist': 3.0.3 - unist-util-position-from-estree@1.1.2: - dependencies: - '@types/unist': 2.0.11 - unist-util-position-from-estree@2.0.0: dependencies: '@types/unist': 3.0.3 - unist-util-position@4.0.4: - dependencies: - '@types/unist': 2.0.11 - unist-util-position@5.0.0: dependencies: '@types/unist': 3.0.3 - unist-util-remove-position@4.0.2: - dependencies: - '@types/unist': 2.0.11 - unist-util-visit: 4.1.2 - unist-util-stringify-position@3.0.3: dependencies: '@types/unist': 2.0.11 @@ -10228,14 +9762,7 @@ snapshots: uuid@14.0.2: {} - uuid@8.3.2: {} - - uvu@0.5.6: - dependencies: - dequal: 2.0.3 - diff: 5.2.2 - kleur: 4.1.5 - sade: 1.8.1 + uuid@9.0.1: {} validate-npm-package-license@3.0.4: dependencies: @@ -10275,8 +9802,6 @@ snapshots: web-namespaces@2.0.1: {} - web-streams-polyfill@3.3.3: {} - which-boxed-primitive@1.1.1: dependencies: is-bigint: 1.1.0 diff --git a/src/app/[...slug]/page.tsx b/src/app/[...slug]/page.tsx index ada2a241d..172fec1b2 100644 --- a/src/app/[...slug]/page.tsx +++ b/src/app/[...slug]/page.tsx @@ -5,7 +5,7 @@ import {PrevNextLinks} from '@/components/PrevNextLinks'; import {Prose} from '@/components/Prose'; import {TableOfContents} from '@/components/Toc'; import {allPosts} from 'contentlayer/generated'; -import {getMDXComponent} from 'next-contentlayer/hooks'; +import {getMDXComponent} from 'next-contentlayer2/hooks'; import {notFound} from 'next/navigation'; import {Suspense} from 'react'; diff --git a/src/app/page.tsx b/src/app/page.tsx index 5bc45cccb..ab6f7e380 100644 --- a/src/app/page.tsx +++ b/src/app/page.tsx @@ -1,7 +1,7 @@ import MdxComponents from '@/components/MdxComponents'; import {Prose} from '@/components/Prose'; import {allPosts} from 'contentlayer/generated'; -import {getMDXComponent} from 'next-contentlayer/hooks'; +import {getMDXComponent} from 'next-contentlayer2/hooks'; import {notFound} from 'next/navigation'; export const generateMetadata = () => { diff --git a/src/utils/contentlayer.ts b/src/utils/contentlayer.ts index d096ea1f9..47ccf2bbd 100644 --- a/src/utils/contentlayer.ts +++ b/src/utils/contentlayer.ts @@ -1,4 +1,4 @@ -import type {Document, MDX} from 'contentlayer/core'; +import type {Document, MDX} from 'contentlayer2/core'; const isProduction = process.env.NODE_ENV === 'production'; From f2a5d021736e8b933bd71a38ad38700c638e543e Mon Sep 17 00:00:00 2001 From: Marc <7050295+marcleblanc2@users.noreply.github.com> Date: Fri, 11 Sep 2026 16:19:04 -0600 Subject: [PATCH 210/217] check-links: one suggestion per fix, synced with findings; one fact per line in reports (#1916) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Follow-ups from testing the PR checks on #1913 / #1914. - Review comments: one suggested change per finding (not one per line), no review body. Each comment starts with an HTML marker; the workflow deletes suggestions whose finding is gone (or that GitHub could no longer place, `line: null`) and skips ones already posted, so resolved suggestions disappear like the spell check's do. - Summary comment and review comments put line, link, problem, and fix each on their own line. - Absolute links to this site get their own **Absolute links** section instead of being lumped into Outbound. - Case-mismatch findings now come with a fix (`/Code-Search/queries` → `/code-search/queries`). - Wording: "Write links on this site as relative paths", "fix the inbound links on these other pages", dropped `https://docs.sourcegraph.com/…`; reproduce command matches `package.json` (`pnpm check links …`). Tested locally against the `test-pr-checks-broken` branch with the CI recipe (baseline from `origin/main`, `--diff`, `--review`); build-mode run (`node dev/check-links.mjs`) still clean. Trade-off: when several fixes sit on one line, applying one suggestion outdates the others until the next run re-posts them, because GitHub will not batch overlapping suggestions. ## Merge order for the PR-check stack Trial-merged onto `main` in this order with no conflicts: 1. #1946 Vercel build log comment — independent; first so the other PRs' Vercel failures get a readable log 2. #1916 check-links report format — adds `dev/sync-review-comments.sh`, which #1935 calls 3. #1935 redirect check — needs #1916 merged first 4. #1947 spell check comment updates — independent 5. #1944 check-links, generated-docs sync PR — conflicts with #1916 on `dev/check-links.mjs`; rebase after #1916 merges Squash-merge each, then rebase the next onto `main`. #1948 (broken) and #1949 (fixed) are the example PRs that exercise every check; never merge, close them once the stack has landed. --------- Co-authored-by: Amp --- .github/workflows/check-links.yml | 19 +---- cspell-allow-list.txt | 2 + dev/check-links.mjs | 137 ++++++++++++++---------------- dev/sync-review-comments.sh | 40 +++++++++ 4 files changed, 112 insertions(+), 86 deletions(-) create mode 100755 dev/sync-review-comments.sh diff --git a/.github/workflows/check-links.yml b/.github/workflows/check-links.yml index e0dab4ba3..c5e4d7503 100644 --- a/.github/workflows/check-links.yml +++ b/.github/workflows/check-links.yml @@ -97,24 +97,13 @@ jobs: fi - name: Suggest fixes as review comments - # One suggested change per added line with a fix. Suggestions already on - # the PR (same file, line, and text) are not posted again. - if: steps.check.outputs.broken == 'true' && github.event.pull_request.head.repo.full_name == github.repository + # One suggested change per finding with a fix, kept in sync with the + # findings; see dev/sync-review-comments.sh + if: github.event.pull_request.head.repo.full_name == github.repository env: GH_TOKEN: ${{ github.token }} PR_NUMBER: ${{ github.event.pull_request.number }} - run: | - gh api "repos/$GITHUB_REPOSITORY/pulls/$PR_NUMBER/comments" --paginate \ - --jq '.[] | {path, line, body}' | jq -s . > "$RUNNER_TEMP/posted.json" - jq --slurpfile posted "$RUNNER_TEMP/posted.json" \ - '.comments |= map(select(. as $comment | $posted[0] | index({path: $comment.path, line: $comment.line, body: $comment.body}) | not))' \ - "$RUNNER_TEMP/review.json" > "$RUNNER_TEMP/review-new.json" - - if [ "$(jq '.comments | length' "$RUNNER_TEMP/review-new.json")" -gt 0 ]; then - gh api --method POST "repos/$GITHUB_REPOSITORY/pulls/$PR_NUMBER/reviews" \ - --input "$RUNNER_TEMP/review-new.json" > /dev/null \ - || echo "::warning::Could not post the suggested fixes; they are in the report above" - fi + run: dev/sync-review-comments.sh '`, + `Link: \`${url}\``, + `Problem: ${error}`, + `Fix: \`${fix}\``, + '````suggestion', + source.split(url).join(fix), + '````' + ]; + return { path: file, line, side: 'RIGHT', body: body.join('\n') }; }); - return { - event: 'COMMENT', - body: 'Suggested fixes for the links this PR adds; details in the check-links comment.', - comments - }; + return { event: 'COMMENT', body: '', comments }; } const FORMATTERS = { diff --git a/dev/sync-review-comments.sh b/dev/sync-review-comments.sh new file mode 100755 index 000000000..6ecd7b806 --- /dev/null +++ b/dev/sync-review-comments.sh @@ -0,0 +1,40 @@ +#!/usr/bin/env sh +# Make a check's suggested-change review comments on a PR match a review.json +# ({comments: [{path, line, start_line?, body}]}): post the new ones, update +# the ones whose text changed, and delete the ones whose finding is gone. +# GitHub sets line to null on comments it could not carry to the new revision, +# so those are deleted too. Comments are matched by file, line, and the +# marker comment on their first line, e.g. "". +# +# Usage: dev/sync-review-comments.sh ' ## Merge order for the PR-check stack Trial-merged onto `main` in this order with no conflicts: 1. #1946 Vercel build log comment — independent; first so the other PRs' Vercel failures get a readable log 2. #1916 check-links report format — adds `dev/sync-review-comments.sh`, which #1935 calls 3. #1935 redirect check — needs #1916 merged first 4. #1947 spell check comment updates — independent 5. #1944 check-links, generated-docs sync PR — conflicts with #1916 on `dev/check-links.mjs`; rebase after #1916 merges Squash-merge each, then rebase the next onto `main`. #1948 (broken) and #1949 (fixed) are the example PRs that exercise every check; never merge, close them once the stack has landed. --------- Co-authored-by: Amp --- .github/workflows/vercel-build-report.yml | 91 ++++ AGENTS.md | 1 + dev/report-vercel-build.mjs | 500 ++++++++++++++++++++++ dev/slack-app-vercel-build-report.json | 22 + 4 files changed, 614 insertions(+) create mode 100644 .github/workflows/vercel-build-report.yml create mode 100644 dev/report-vercel-build.mjs create mode 100644 dev/slack-app-vercel-build-report.json diff --git a/.github/workflows/vercel-build-report.yml b/.github/workflows/vercel-build-report.yml new file mode 100644 index 000000000..91a64f6f1 --- /dev/null +++ b/.github/workflows/vercel-build-report.yml @@ -0,0 +1,91 @@ +name: Vercel build report + +# Vercel only shows build logs to members of its team. When a PR's Vercel +# build fails, this comments the end of the build log on the PR, with the +# full log as a workflow artifact when the comment cannot hold it all; when a +# later revision builds, the comment is updated to say so and the artifact +# is deleted. The full log is also attached to the Vercel Slack app's "failed +# to deploy" post when the SLACK_BOT_TOKEN secret and SLACK_CHANNEL_ID +# variable are set (see dev/slack-app-vercel-build-report.json). +# +# GitHub only delivers repository_dispatch (and finds workflow_dispatch +# workflows) once the workflow file is on the default branch, so before merge +# run dev/report-vercel-build.mjs locally instead. After merge, re-run on a PR +# by hand with the same payload fields as inputs: +# gh workflow run vercel-build-report.yml \ +# -f id=dpl_... -f state=error -f sha= +on: + repository_dispatch: + types: [vercel.deployment.error, vercel.deployment.success] + workflow_dispatch: + inputs: + id: + description: Vercel deployment ID (client_payload.id) + required: true + state: + description: Deployment state (client_payload.state.type) + required: true + type: choice + options: [error, success] + sha: + description: Full commit SHA of the PR head (client_payload.git.sha) + required: true + +permissions: + contents: read + pull-requests: write + # To delete the full-log artifact once the build passes + actions: write + +env: + DEPLOYMENT_ID: ${{ github.event.client_payload.id || inputs.id }} + DEPLOYMENT_STATE: ${{ github.event.client_payload.state.type || inputs.state }} + COMMIT_SHA: ${{ github.event.client_payload.git.sha || inputs.sha }} + GH_TOKEN: ${{ github.token }} + LOG_FILE: ${{ github.workspace }}/vercel-build.log + +jobs: + report: + if: github.event.client_payload.environment != 'production' + runs-on: ubuntu-latest + steps: + - name: Check out dev/report-vercel-build.mjs + uses: actions/checkout@v4 + with: + sparse-checkout: dev/report-vercel-build.mjs + sparse-checkout-cone-mode: false + + - name: Fetch the build log from Vercel + # Vercel is only contacted when the build failed + if: env.DEPLOYMENT_STATE == 'error' + id: log + env: + # Scoped to the sourcegraph-docs project, so it needs no team ID + VERCEL_TOKEN: ${{ secrets.VERCEL_TOKEN }} + run: node dev/report-vercel-build.mjs fetch-log "$LOG_FILE" + + - name: Attach the full log when the comment cannot hold it all + if: steps.log.outputs.truncated == 'true' + id: artifact + uses: actions/upload-artifact@v4 + with: + name: vercel-build-log-${{ env.COMMIT_SHA }} + path: ${{ env.LOG_FILE }} + retention-days: 30 + + - name: Comment on the pull request + env: + PR_NUMBER: ${{ steps.log.outputs.pull_request }} + ARTIFACT_ID: ${{ steps.artifact.outputs.artifact-id }} + ARTIFACT_URL: ${{ steps.artifact.outputs.artifact-url }} + run: node dev/report-vercel-build.mjs comment "$LOG_FILE" + + - name: Attach the log to the Vercel app's Slack post + if: env.DEPLOYMENT_STATE == 'error' + # The PR comment is the record; a Slack problem must not fail it + continue-on-error: true + env: + PR_NUMBER: ${{ steps.log.outputs.pull_request }} + SLACK_BOT_TOKEN: ${{ secrets.SLACK_BOT_TOKEN }} + SLACK_CHANNEL_ID: ${{ vars.SLACK_CHANNEL_ID }} + run: node dev/report-vercel-build.mjs slack "$LOG_FILE" diff --git a/AGENTS.md b/AGENTS.md index 580711718..674ff4307 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -9,6 +9,7 @@ - **Checks**: `npm run check` runs every `dev/check-*.mjs` (links, filenames, images); `npm run build` runs them first, so any finding fails a deploy - **Check links**: `npm run check -- links --check-anchors --check-self-links` (CI comments on PRs that break links; see `dev/check-links.mjs`; the build runs it without flags, so only dead page links fail a deploy). When moving a page or renaming a heading, update every link to it; a redirect in `src/data/redirects.ts` does not satisfy the check. Link to this site with relative paths (`/admin/config/site-config`), never `https://sourcegraph.com/docs/…` or `https://docs.sourcegraph.com/…`. To also probe the external links you added: `npm run check -- links --check-anchors --check-self-links --check-external --diff <(git diff -U0 origin/main)` - **Prove changed links resolve on a deploy**: `node dev/verify-links-live.mjs --site ` prints a Markdown table for the PR description +- **Vercel build failures**: Vercel shows build logs only to its team members, so `.github/workflows/vercel-build-report.yml` comments the log tail on the PR (see `dev/report-vercel-build.mjs`). It reads Vercel with the `VERCEL_TOKEN` repo secret, a token scoped to the `sourcegraph-docs` project that expires 2026-12-10; mint a new one with `POST /v3/user/tokens?teamId=` and `projectId` in the body. It also attaches the full log to the Vercel Slack app's "failed to deploy" post in `#alerts-vercel-doc-site`, using the `SLACK_BOT_TOKEN` repo secret and `SLACK_CHANNEL_ID` repo variable. The bot is the Slack app in `dev/slack-app-vercel-build-report.json`; to recreate it, paste that manifest at (From a manifest), install it, copy its Bot User OAuth Token into the secret, and `/invite @Vercel build log` to the channel ## AI Chat Integration diff --git a/dev/report-vercel-build.mjs b/dev/report-vercel-build.mjs new file mode 100644 index 000000000..50f419687 --- /dev/null +++ b/dev/report-vercel-build.mjs @@ -0,0 +1,500 @@ +#!/usr/bin/env node + +/** + * Reports a failed Vercel build on its pull request, since Vercel only shows + * build logs to members of the Vercel team. When a later revision builds, the + * same comment is updated to say so. + * + * Usage: + * node dev/report-vercel-build.mjs fetch-log + * node dev/report-vercel-build.mjs comment [--dry-run] + * node dev/report-vercel-build.mjs slack [--dry-run] + * + * fetch-log writes the build log to , and to GITHUB_OUTPUT `truncated`, + * so the workflow can upload the full log as an artifact when the comment + * cannot hold all of it, and `pull_request`, the PR Vercel built the + * deployment for. It needs VERCEL_TOKEN, and VERCEL_TEAM_ID unless the token + * is scoped to the project. + * + * comment posts the tail of on PR_NUMBER, the PR Vercel built the + * deployment for. When unset (the success path, or a deployment Vercel + * recorded no PR for) it falls back to every open PR at COMMIT_SHA. It links + * the artifact from ARTIFACT_ID and ARTIFACT_URL when set, and deletes the + * artifact an earlier comment linked. With --dry-run the comment is printed + * instead, and nothing is deleted. + * + * slack uploads into the thread of the Vercel Slack app's "failed to + * deploy" post for the commit in SLACK_CHANNEL_ID, looking back 30 minutes + * and waiting up to 5 more for the post to appear. It needs SLACK_BOT_TOKEN + * (see dev/slack-app-vercel-build-report.json) and does nothing when that or + * SLACK_CHANNEL_ID is unset. With --dry-run the post is found but nothing is + * uploaded. + * + * All need DEPLOYMENT_ID, DEPLOYMENT_STATE (error or success), COMMIT_SHA, + * GH_TOKEN and GITHUB_REPOSITORY. + */ + +import {appendFileSync, readFileSync, writeFileSync} from 'fs'; + +const [command, logFile] = process.argv + .slice(2) + .filter(argument => !argument.startsWith('--')); +const DRY_RUN = process.argv.includes('--dry-run'); +const MAX_LOG_LINES = 100; +const MAX_LOG_CHARS = 30_000; +const ARTIFACT_RETENTION_DAYS = 30; +const SLACK_HISTORY_MINUTES = 30; +const SLACK_WAIT_MINUTES = 5; +const SLACK_POLL_SECONDS = 15; + +const API_URL = process.env.GITHUB_API_URL ?? 'https://api.github.com'; +const REPOSITORY = process.env.GITHUB_REPOSITORY; +const {DEPLOYMENT_ID, DEPLOYMENT_STATE, COMMIT_SHA, SLACK_CHANNEL_ID} = + process.env; + +// The artifact ID rides along in the marker so a later run can delete it +const MARKER = '/; + +async function fetchJson(url, headers) { + const response = await fetch(url, {headers}); + if (!response.ok) { + throw new Error( + `GET ${url} failed: ${response.status} ${await response.text()}` + ); + } + return response.json(); +} + +async function github(method, route, body) { + const response = await fetch(`${API_URL}${route}`, { + method, + headers: { + authorization: `Bearer ${process.env.GH_TOKEN}`, + accept: 'application/vnd.github+json', + 'x-github-api-version': '2022-11-28', + ...(body && {'content-type': 'application/json'}) + }, + body: body && JSON.stringify(body) + }); + if (!response.ok) { + throw new Error( + `${method} ${route} failed: ${response.status} ${await response.text()}` + ); + } + return response.status === 204 ? undefined : response.json(); +} + +async function githubList(route) { + const items = []; + for (let page = 1; ; page++) { + const batch = await github('GET', `${route}?per_page=100&page=${page}`); + items.push(...batch); + if (batch.length < 100) { + return items; + } + } +} + +// Vercel records which PR a deployment was built for. Empty when the branch +// was deployed before its PR was opened. +async function fetchDeploymentPullRequestNumber() { + const url = new URL( + `https://api.vercel.com/v13/deployments/${DEPLOYMENT_ID}` + ); + if (process.env.VERCEL_TEAM_ID) { + url.searchParams.set('teamId', process.env.VERCEL_TEAM_ID); + } + const deployment = await fetchJson(url, { + authorization: `Bearer ${process.env.VERCEL_TOKEN}` + }); + return deployment.meta?.githubPrId; +} + +// The dispatch payload has no PR number. The failure path gets it from the +// deployment; the success path only knows the commit, so it looks up the PRs +// at that head. Either way a stale event for a commit a PR has moved past is +// ignored, and so are fork PRs. +async function findPullRequests(pullRequestNumber) { + const pulls = pullRequestNumber + ? [ + await github( + 'GET', + `/repos/${REPOSITORY}/pulls/${pullRequestNumber}` + ) + ] + : await github( + 'GET', + `/repos/${REPOSITORY}/commits/${COMMIT_SHA}/pulls` + ); + const open = pulls.filter(pull => { + if (pull.state !== 'open' || pull.head.sha !== COMMIT_SHA) { + return false; + } + // head.repo is null when the fork was deleted + if (pull.head.repo?.full_name !== REPOSITORY) { + console.log(`PR #${pull.number} is from a fork; not reporting`); + return false; + } + return true; + }); + if (open.length === 0) { + console.log(`No open PR with head ${COMMIT_SHA}; nothing to do`); + } + return open; +} + +// Build log lines, oldest first. Vercel keeps them as events; only the ones +// with text are log lines. +async function fetchBuildLog() { + const url = new URL( + `https://api.vercel.com/v3/deployments/${DEPLOYMENT_ID}/events` + ); + url.searchParams.set('limit', '-1'); + url.searchParams.set('direction', 'forward'); + if (process.env.VERCEL_TEAM_ID) { + url.searchParams.set('teamId', process.env.VERCEL_TEAM_ID); + } + const events = await fetchJson(url, { + authorization: `Bearer ${process.env.VERCEL_TOKEN}` + }); + return events + .map(event => event.payload?.text ?? event.text) + .filter(text => typeof text === 'string') + .flatMap(text => text.replace(/\n$/, '').split('\n')) + .map(redact); +} + +// Credential shapes a build might print. The comment and artifact are public, +// and the build gets VERCEL_OIDC_TOKEN and friends, so a left-in +// `console.log(process.env)` must not publish them. Not a complete list. +// cspell:disable -- token prefixes, not words +const REDACTION_PATTERNS = [ + [/\beyJ[\w-]{10,}\.[\w-]{10,}\.[\w-]+/g, '[redacted-jwt]'], + [ + /\b(?:vcp_|gh[pousr]_|github_pat_|sk-|xox[abpr]-)[\w-]{16,}|\bAKIA[0-9A-Z]{16}\b/g, + '[redacted-token]' + ], + [/(\bBearer\s+)\S+/gi, '$1[redacted]'], + [ + /(\w*(?:TOKEN|SECRET|PASSW(?:OR)?D|CREDENTIALS?|API_?KEY|PRIVATE_KEY|ENC_KEY|DEPLOYMENT_KEY)\w*["']?\s*[=:]\s*["']?)\S+/gi, + '$1[redacted]' + ] +]; +// cspell:enable + +function redact(line) { + return REDACTION_PATTERNS.reduce( + (text, [pattern, replacement]) => text.replace(pattern, replacement), + line + ); +} + +// The failure is at the end of the log; keep the tail within GitHub's +// comment size limit +function tailOf(logLines) { + let tail = logLines.slice(-MAX_LOG_LINES); + while (tail.length > 1 && tail.join('\n').length > MAX_LOG_CHARS) { + tail = tail.slice(1); + } + return tail; +} + +async function fetchLog() { + if (!process.env.VERCEL_TOKEN) { + throw new Error('VERCEL_TOKEN is required to read the build log'); + } + // Ask GitHub before Vercel, so the Vercel token is only ever used for a + // commit that an open PR from this repository is at, i.e. pushed by + // someone who can already push here + if ((await findPullRequests()).length === 0) { + return; + } + const pullRequestNumber = await fetchDeploymentPullRequestNumber(); + const logLines = await fetchBuildLog(); + writeFileSync(logFile, logLines.join('\n') + '\n'); + const truncated = tailOf(logLines).length < logLines.length; + console.log( + `Wrote ${logLines.length} log lines to ${logFile}${truncated ? '; the comment will show the tail' : ''}` + ); + if (process.env.GITHUB_OUTPUT) { + appendFileSync( + process.env.GITHUB_OUTPUT, + `truncated=${truncated}\npull_request=${pullRequestNumber ?? ''}\n` + ); + } +} + +// A fence longer than any run of backticks in the log, so no log line can +// close it and inject Markdown into the comment +function fenceFor(lines) { + const longestRun = Math.max( + 2, + ...lines.flatMap(line => + (line.match(/`+/g) ?? []).map(run => run.length) + ) + ); + return '`'.repeat(longestRun + 1); +} + +function failureBody(logLines, artifact) { + const tail = tailOf(logLines); + const fence = fenceFor(tail); + const intro = + 'Vercel paywalls build logs to authorized users in its web UI, so'; + const message = artifact + ? `${intro} we tailed the last ${tail.length} lines of the build log for you here. The full log is ${logLines.length} lines, attached as a [workflow artifact](${artifact.url}); downloading it needs a GitHub login, and it expires in ${ARTIFACT_RETENTION_DAYS} days.` + : `${intro} here is the build log.`; + return [ + `${MARKER}${artifact ? ` artifact=${artifact.id}` : ''} -->`, + '### ❌ The Vercel build failed for this PR', + '', + message, + '', + '
', + 'Build log', + '', + fence, + ...tail, + fence, + '', + '
', + '' + ].join('\n'); +} + +async function deleteArtifact(id) { + console.log(`${DRY_RUN ? '[dry-run] ' : ''}Deleting artifact ${id}`); + if (DRY_RUN) { + return; + } + try { + await github('DELETE', `/repos/${REPOSITORY}/actions/artifacts/${id}`); + } catch (error) { + // Already expired or deleted + if (!error.message.includes(' 404 ')) { + throw error; + } + } +} + +async function comment() { + const pulls = await findPullRequests(process.env.PR_NUMBER); + if (pulls.length === 0) { + return; + } + let logLines; + if (DEPLOYMENT_STATE === 'error') { + logLines = readFileSync(logFile, 'utf8').replace(/\n$/, '').split('\n'); + } + for (const pull of pulls) { + await report(pull, logLines); + } +} + +// Comment only when the build failed, or an earlier failure is resolved +async function report(pull, logLines) { + const comments = await githubList( + `/repos/${REPOSITORY}/issues/${pull.number}/comments` + ); + const existing = comments.find(comment => + MARKER_PATTERN.test(comment.body) + ); + const previousArtifact = existing?.body.match(MARKER_PATTERN)[1]; + + let body; + if (logLines) { + const {ARTIFACT_ID, ARTIFACT_URL} = process.env; + body = failureBody( + logLines, + ARTIFACT_ID && {id: ARTIFACT_ID, url: ARTIFACT_URL} + ); + } else if (existing) { + body = `${MARKER} -->\n### ✅ The Vercel build that failed on an earlier revision of this PR passes\n`; + } else { + console.log(`PR #${pull.number} has no failed build to resolve`); + return; + } + + if (previousArtifact) { + await deleteArtifact(previousArtifact); + } + + if (DRY_RUN) { + console.log( + `[dry-run] would ${existing ? 'update' : 'create'} comment on PR #${pull.number}:\n` + ); + console.log(body); + } else if (existing) { + console.log(`Updating comment ${existing.id} on PR #${pull.number}`); + await github( + 'PATCH', + `/repos/${REPOSITORY}/issues/comments/${existing.id}`, + {body} + ); + } else { + console.log(`Commenting on PR #${pull.number}`); + await github( + 'POST', + `/repos/${REPOSITORY}/issues/${pull.number}/comments`, + {body} + ); + } +} + +// Every method used here takes form encoding, including the file one +async function slackApi(method, parameters) { + const response = await fetch(`https://slack.com/api/${method}`, { + method: 'POST', + headers: { + authorization: `Bearer ${process.env.SLACK_BOT_TOKEN}`, + 'content-type': 'application/x-www-form-urlencoded' + }, + body: new URLSearchParams(parameters) + }); + const result = await response.json(); + if (!result.ok) { + throw new Error(`Slack ${method} failed: ${result.error}`); + } + return result; +} + +// The Vercel Slack app posts " failed to deploy … | +// " for each failed deployment. It and this workflow are triggered +// by the same event, so its post can land after this runs; keep looking for a +// while before giving up. +async function findVercelFailurePost() { + const shortSha = COMMIT_SHA.slice(0, 7); + const oldest = Date.now() / 1000 - SLACK_HISTORY_MINUTES * 60; + const deadline = Date.now() + SLACK_WAIT_MINUTES * 60_000; + for (;;) { + const {messages} = await slackApi('conversations.history', { + channel: SLACK_CHANNEL_ID, + oldest, + limit: 200 + }); + const post = messages.find( + message => + message.bot_id && + message.text?.includes('failed to deploy') && + message.text.includes(shortSha) + ); + if (post) { + return post; + } + if (Date.now() >= deadline) { + console.log( + `No Vercel "failed to deploy" post for ${shortSha} in the last ${SLACK_HISTORY_MINUTES} minutes; giving up` + ); + return undefined; + } + console.log( + `No Vercel post for ${shortSha} yet; checking again in ${SLACK_POLL_SECONDS}s` + ); + await new Promise(resolve => + setTimeout(resolve, SLACK_POLL_SECONDS * 1000) + ); + } +} + +// Slack takes files in three steps: ask for an upload URL, POST the bytes to +// it, then say which channel and thread to share the file in +async function uploadLogToThread(post, pulls) { + const log = readFileSync(logFile); + const shortSha = COMMIT_SHA.slice(0, 7); + const filename = `vercel-build-${shortSha}.log`; + const links = pulls + .map(pull => `<${pull.html_url}|#${pull.number}>`) + .join(', '); + const initialComment = `Build log attached; its tail is also commented on PR ${links}.`; + + if (DRY_RUN) { + console.log( + `[dry-run] would upload ${filename} (${log.length} bytes) to thread ${post.ts} in ${SLACK_CHANNEL_ID}:\n${initialComment}` + ); + return; + } + const {upload_url: uploadUrl, file_id: fileId} = await slackApi( + 'files.getUploadURLExternal', + {filename, length: log.length} + ); + const upload = await fetch(uploadUrl, {method: 'POST', body: log}); + if (!upload.ok) { + throw new Error( + `Uploading ${filename} to Slack failed: ${upload.status} ${await upload.text()}` + ); + } + await slackApi('files.completeUploadExternal', { + files: JSON.stringify([ + {id: fileId, title: `Vercel build log for ${shortSha}`} + ]), + channel_id: SLACK_CHANNEL_ID, + thread_ts: post.ts, + initial_comment: initialComment + }); + console.log( + `Uploaded ${filename} to thread ${post.ts} in ${SLACK_CHANNEL_ID}` + ); +} + +async function slack() { + if (!process.env.SLACK_BOT_TOKEN || !SLACK_CHANNEL_ID) { + console.log( + 'SLACK_BOT_TOKEN or SLACK_CHANNEL_ID unset; not posting to Slack' + ); + return; + } + if (DEPLOYMENT_STATE !== 'error') { + console.log('The build passed; Vercel already posts that to Slack'); + return; + } + // The same guard as fetch-log and comment, so Slack only ever gets logs + // the PR comment also shows + const pulls = await findPullRequests(process.env.PR_NUMBER); + if (pulls.length === 0) { + return; + } + const post = await findVercelFailurePost(); + if (post) { + await uploadLogToThread(post, pulls); + } +} + +async function main() { + for (const name of [ + 'DEPLOYMENT_ID', + 'DEPLOYMENT_STATE', + 'COMMIT_SHA', + 'GH_TOKEN', + 'GITHUB_REPOSITORY' + ]) { + if (!process.env[name]) { + throw new Error(`Missing required environment variable ${name}`); + } + } + if (!['error', 'success'].includes(DEPLOYMENT_STATE)) { + throw new Error(`Unexpected DEPLOYMENT_STATE ${DEPLOYMENT_STATE}`); + } + if (!logFile) { + throw new Error( + 'Usage: node dev/report-vercel-build.mjs fetch-log|comment|slack ' + ); + } + + if (command === 'fetch-log') { + await fetchLog(); + } else if (command === 'comment') { + await comment(); + } else if (command === 'slack') { + await slack(); + } else { + throw new Error( + `Unknown command ${command}; use fetch-log, comment or slack` + ); + } +} + +main().catch(error => { + console.error(error); + process.exit(2); +}); diff --git a/dev/slack-app-vercel-build-report.json b/dev/slack-app-vercel-build-report.json new file mode 100644 index 000000000..ebdfc7c3b --- /dev/null +++ b/dev/slack-app-vercel-build-report.json @@ -0,0 +1,22 @@ +{ + "display_information": { + "name": "Vercel build log", + "description": "Attaches failed Vercel build logs to the Vercel app's posts" + }, + "features": { + "bot_user": { + "display_name": "Vercel build log", + "always_online": false + } + }, + "oauth_config": { + "scopes": { + "bot": ["channels:history", "files:write"] + } + }, + "settings": { + "org_deploy_enabled": false, + "socket_mode_enabled": false, + "token_rotation_enabled": false + } +} From f0addc6fb033bc9bdea6ebb789d2f0ea9b8bdebc Mon Sep 17 00:00:00 2001 From: sourcegraph-buildkite <71296199+sourcegraph-buildkite@users.noreply.github.com> Date: Mon, 14 Sep 2026 04:52:10 -0400 Subject: [PATCH 214/217] =?UTF-8?q?=F0=9F=A4=96=20Sync=20generated=20docs?= =?UTF-8?q?=20from=20sourcegraph/sourcegraph=20(#1883)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/admin/code-hosts/aws-codecommit.mdx | 2 +- docs/admin/code-hosts/azuredevops.mdx | 2 +- docs/admin/code-hosts/bitbucket-cloud.mdx | 2 +- docs/admin/code-hosts/bitbucket-server.mdx | 2 +- docs/admin/code-hosts/gerrit.mdx | 2 +- docs/admin/code-hosts/github.mdx | 2 +- docs/admin/code-hosts/gitlab.mdx | 2 +- docs/admin/code-hosts/gitolite.mdx | 2 +- docs/admin/code-hosts/other.mdx | 2 +- docs/admin/code-hosts/phabricator.mdx | 2 +- docs/admin/config/settings.mdx | 2 +- docs/admin/config/site-config.mdx | 16 +- docs/admin/repo/perforce.mdx | 2 +- .../telemetry/private-metadata-allowlist.mdx | 4 +- docs/admin/telemetry/protocol.mdx | 2 +- docs/cli/references/debug.mdx | 27 + docs/cli/references/index.mdx | 11 - docs/cli/references/search-jobs.mdx | 33 + docs/cli/references/snapshot.mdx | 27 + docs/cli/references/teams.mdx | 26 + docs/self-hosted/observability/alerts.mdx | 34 +- docs/self-hosted/observability/dashboards.mdx | 852 +++++++++++++----- 22 files changed, 757 insertions(+), 299 deletions(-) create mode 100644 docs/cli/references/debug.mdx create mode 100644 docs/cli/references/search-jobs.mdx create mode 100644 docs/cli/references/snapshot.mdx create mode 100644 docs/cli/references/teams.mdx diff --git a/docs/admin/code-hosts/aws-codecommit.mdx b/docs/admin/code-hosts/aws-codecommit.mdx index b02109f21..525b9cee8 100644 --- a/docs/admin/code-hosts/aws-codecommit.mdx +++ b/docs/admin/code-hosts/aws-codecommit.mdx @@ -37,7 +37,7 @@ AWS CodeCommit connections support the following configuration options, which ar {/* SCHEMA_SYNC_START: admin/code_hosts/aws_codecommit.schema.json */} {/* WARNING: This section is auto-generated during releases. Do not edit manually. */} -{/* Last updated: 2026-09-08T17:20:44Z */} +{/* Last updated: 2026-09-14T08:37:54Z */} ```json { // REQUIRED: diff --git a/docs/admin/code-hosts/azuredevops.mdx b/docs/admin/code-hosts/azuredevops.mdx index cd09884ab..a76509177 100644 --- a/docs/admin/code-hosts/azuredevops.mdx +++ b/docs/admin/code-hosts/azuredevops.mdx @@ -69,7 +69,7 @@ Azure DevOps connections support the following configuration options, which are {/* SCHEMA_SYNC_START: admin/code_hosts/azuredevops.schema.json */} {/* WARNING: This section is auto-generated during releases. Do not edit manually. */} -{/* Last updated: 2026-09-08T17:20:44Z */} +{/* Last updated: 2026-09-14T08:37:54Z */} ```json // Authentication alternatives: token OR windowsPassword diff --git a/docs/admin/code-hosts/bitbucket-cloud.mdx b/docs/admin/code-hosts/bitbucket-cloud.mdx index bfdb7f7ac..a6d1fe084 100644 --- a/docs/admin/code-hosts/bitbucket-cloud.mdx +++ b/docs/admin/code-hosts/bitbucket-cloud.mdx @@ -116,7 +116,7 @@ Bitbucket Cloud connections support the following configuration options, which a {/* SCHEMA_SYNC_START: admin/code_hosts/bitbucket_cloud.schema.json */} {/* WARNING: This section is auto-generated during releases. Do not edit manually. */} -{/* Last updated: 2026-09-08T17:20:44Z */} +{/* Last updated: 2026-09-14T08:37:54Z */} ```json { // The workspace access token to use when authenticating with Bitbucket Cloud. diff --git a/docs/admin/code-hosts/bitbucket-server.mdx b/docs/admin/code-hosts/bitbucket-server.mdx index cb4cc7dd0..31118d96e 100644 --- a/docs/admin/code-hosts/bitbucket-server.mdx +++ b/docs/admin/code-hosts/bitbucket-server.mdx @@ -202,7 +202,7 @@ Bitbucket Server / Bitbucket Data Center connections support the following confi {/* SCHEMA_SYNC_START: admin/code_hosts/bitbucket_server.schema.json */} {/* WARNING: This section is auto-generated during releases. Do not edit manually. */} -{/* Last updated: 2026-09-08T17:20:44Z */} +{/* Last updated: 2026-09-14T08:37:54Z */} ```json // Authentication alternatives: token OR password diff --git a/docs/admin/code-hosts/gerrit.mdx b/docs/admin/code-hosts/gerrit.mdx index fc6d3673a..5f21fd1fc 100644 --- a/docs/admin/code-hosts/gerrit.mdx +++ b/docs/admin/code-hosts/gerrit.mdx @@ -113,7 +113,7 @@ Gerrit connections support the following configuration options, which are specif {/* SCHEMA_SYNC_START: admin/code_hosts/gerrit.schema.json */} {/* WARNING: This section is auto-generated during releases. Do not edit manually. */} -{/* Last updated: 2026-09-08T17:20:44Z */} +{/* Last updated: 2026-09-14T08:37:54Z */} ```json { // If non-null, enforces Gerrit repository permissions. This requires that there is an item in the [site configuration json](https://sourcegraph.com/docs/admin/config/site_config#auth-providers) `auth.providers` field, of type "gerrit" with the same `url` field as specified in this `GerritConnection`. diff --git a/docs/admin/code-hosts/github.mdx b/docs/admin/code-hosts/github.mdx index 55d588998..a95bafe69 100644 --- a/docs/admin/code-hosts/github.mdx +++ b/docs/admin/code-hosts/github.mdx @@ -458,7 +458,7 @@ GitHub connections support the following configuration options, which are specif {/* SCHEMA_SYNC_START: admin/code_hosts/github.schema.json */} {/* WARNING: This section is auto-generated during releases. Do not edit manually. */} -{/* Last updated: 2026-09-08T17:20:44Z */} +{/* Last updated: 2026-09-14T08:37:54Z */} ```json // Authentication alternatives: token OR gitHubAppDetails OR externalAccount OR useRandomExternalAccount diff --git a/docs/admin/code-hosts/gitlab.mdx b/docs/admin/code-hosts/gitlab.mdx index d717725e1..426f0c02f 100644 --- a/docs/admin/code-hosts/gitlab.mdx +++ b/docs/admin/code-hosts/gitlab.mdx @@ -189,7 +189,7 @@ See [Internal rate limits](/admin/code-hosts/rate-limits#internal-rate-limits). {/* SCHEMA_SYNC_START: admin/code_hosts/gitlab.schema.json */} {/* WARNING: This section is auto-generated during releases. Do not edit manually. */} -{/* Last updated: 2026-09-08T17:20:44Z */} +{/* Last updated: 2026-09-14T08:37:54Z */} ```json { // If non-null, enforces GitLab repository permissions. This requires that there be an item in the `auth.providers` field of type "gitlab" with the same `url` field as specified in this `GitLabConnection`. diff --git a/docs/admin/code-hosts/gitolite.mdx b/docs/admin/code-hosts/gitolite.mdx index d098421cc..c08292fae 100644 --- a/docs/admin/code-hosts/gitolite.mdx +++ b/docs/admin/code-hosts/gitolite.mdx @@ -25,7 +25,7 @@ To connect Gitolite to Sourcegraph: {/* SCHEMA_SYNC_START: admin/code_hosts/gitolite.schema.json */} {/* WARNING: This section is auto-generated during releases. Do not edit manually. */} -{/* Last updated: 2026-09-08T17:20:44Z */} +{/* Last updated: 2026-09-14T08:37:54Z */} ```json { // A list of repositories to never mirror from this Gitolite instance. Supports excluding by exact name ({"name": "foo"}). diff --git a/docs/admin/code-hosts/other.mdx b/docs/admin/code-hosts/other.mdx index 9add78b39..f8d58626f 100644 --- a/docs/admin/code-hosts/other.mdx +++ b/docs/admin/code-hosts/other.mdx @@ -68,7 +68,7 @@ Repositories must be listed individually: {/* SCHEMA_SYNC_START: admin/code_hosts/other_external_service.schema.json */} {/* WARNING: This section is auto-generated during releases. Do not edit manually. */} -{/* Last updated: 2026-09-08T17:20:44Z */} +{/* Last updated: 2026-09-14T08:37:54Z */} ```json { // A list of repositories to never mirror by name after applying repositoryPathPattern. Supports excluding by exact name ({"name": "myrepo"}) or regular expression ({"pattern": ".*secret.*"}). diff --git a/docs/admin/code-hosts/phabricator.mdx b/docs/admin/code-hosts/phabricator.mdx index de2e8ba8c..0f53fd04e 100644 --- a/docs/admin/code-hosts/phabricator.mdx +++ b/docs/admin/code-hosts/phabricator.mdx @@ -76,7 +76,7 @@ The Sourcegraph instance's site admin must [update the `corsOrigin` site config {/* SCHEMA_SYNC_START: admin/code_hosts/phabricator.schema.json */} {/* WARNING: This section is auto-generated during releases. Do not edit manually. */} -{/* Last updated: 2026-09-08T17:20:44Z */} +{/* Last updated: 2026-09-14T08:37:54Z */} ```json { // SSH cipher to use when cloning via SSH. Must be a valid choice from `ssh -Q cipher`. diff --git a/docs/admin/config/settings.mdx b/docs/admin/config/settings.mdx index 5ebe8930b..575de89f9 100644 --- a/docs/admin/config/settings.mdx +++ b/docs/admin/config/settings.mdx @@ -27,7 +27,7 @@ Settings options and their default values are shown below. {/* SCHEMA_SYNC_START: admin/config/settings.schema.json */} {/* WARNING: This section is auto-generated during releases. Do not edit manually. */} -{/* Last updated: 2026-09-08T17:20:44Z */} +{/* Last updated: 2026-09-14T08:37:54Z */} ```json { diff --git a/docs/admin/config/site-config.mdx b/docs/admin/config/site-config.mdx index ccd1e8a32..d9777b72e 100644 --- a/docs/admin/config/site-config.mdx +++ b/docs/admin/config/site-config.mdx @@ -21,7 +21,7 @@ All site configuration options and their default values are shown below. {/* SCHEMA_SYNC_START: admin/config/site.schema.json */} {/* WARNING: This section is auto-generated during releases. Do not edit manually. */} -{/* Last updated: 2026-09-08T17:20:44Z */} +{/* Last updated: 2026-09-14T08:37:54Z */} ```json { @@ -45,8 +45,8 @@ All site configuration options and their default values are shown below. // Valid options: "permissive", "enforced" "attribution.mode": "permissive", - // Enables/disables Agentic Batch Changes. Before September 14, 2026 at 12:00 UTC, the feature is disabled when unset. At and after that time, the feature is enabled when unset. An explicit value overrides the timed default. Agentic Batch Changes are enabled only if Batch Changes is licensed and the license includes AI Terms 2025. - "batchChanges.agenticBatchChanges.enabled": false, + // Enables/disables Agentic Batch Changes. Enabled by default. Agentic Batch Changes are enabled only if Batch Changes is licensed and the license includes AI Terms 2025. + "batchChanges.agenticBatchChanges.enabled": true, // Automatically delete branches created for Batch Changes changesets when the changeset is merged or closed, for supported code hosts. Overrides any setting on the repository on the code host itself. "batchChanges.autoDeleteBranch": false, @@ -419,7 +419,7 @@ All site configuration options and their default values are shown below. // Number of concurrent executions of a code insight query on a worker node // Other example values: // - 10 - "insights.query.worker.concurrency": 1, + "insights.query.worker.concurrency": 5, // Maximum number of Code Insights queries initiated per second on a worker node. // Other example values: @@ -530,7 +530,7 @@ All site configuration options and their default values are shown below. // Don't sync a repo's permissions if it has synced within the last n seconds. "permissions.syncReposBackoffSeconds": 900, - // The maximum number of repo-centric permissions syncing jobs that can be spawned concurrently. Service restart is required to take effect for changes. + // The maximum number of repo-centric permissions syncing jobs that can be spawned concurrently. "permissions.syncReposMaxConcurrency": 5, // Time interval (in seconds) of how often each component picks up authorization changes in external services. @@ -539,7 +539,7 @@ All site configuration options and their default values are shown below. // Don't sync a user's permissions if they have synced within the last n seconds. "permissions.syncUsersBackoffSeconds": 900, - // The maximum number of user-centric permissions syncing jobs that can be spawned concurrently. Service restart is required to take effect for changes. + // The maximum number of user-centric permissions syncing jobs that can be spawned concurrently. "permissions.syncUsersMaxConcurrency": 5, // Settings for Sourcegraph explicit permissions, which allow the site admin to explicitly manage repository permissions via the GraphQL API. This will mark repositories as restricted by default. @@ -1016,10 +1016,10 @@ All site configuration options and their default values are shown below. // Maximum number of git operations (e.g. clone or ls-remote) to be run against code hosts, per second. Fractional rates are rounded to the nearest hourly quota, with positive rates below that resolution enforced as one request per hour. Rate limit is shared across all instances of gitserver, and all code hosts. Default is -1, which is unlimited. "gitMaxCodehostRequestsPerSecond": -1, - // Maximum number of git clone processes that will be run concurrently per gitserver to update repositories. <= 0 means disabled. + // Maximum number of repository cleanup jobs that can run concurrently. Values less than or equal to 0 disable cleanup without interrupting jobs that are already running. "gitMaxConcurrentCleanups": 5, - // Maximum number of git clone processes that will be run concurrently per gitserver to update repositories. Note: the global git update scheduler respects gitMaxConcurrentClones. Changes to this setting require restarting the worker instance (the worker pod in Kubernetes) before the global scheduler uses the new value. However, we allow each gitserver to run up to gitMaxConcurrentClones to allow for urgent fetches. Urgent fetches are used when a user is browsing a PR and we do not have the commit yet. + // Maximum number of git clone processes that will be run concurrently per gitserver to update repositories. Note: the global git update scheduler respects gitMaxConcurrentClones. We allow each gitserver to run up to gitMaxConcurrentClones to allow for urgent fetches. Urgent fetches are used when a user is browsing a PR and we do not have the commit yet. "gitMaxConcurrentClones": 5, // Record git operations that are executed on configured repositories. diff --git a/docs/admin/repo/perforce.mdx b/docs/admin/repo/perforce.mdx index f6954fce4..d36901582 100644 --- a/docs/admin/repo/perforce.mdx +++ b/docs/admin/repo/perforce.mdx @@ -228,7 +228,7 @@ With this setting, Sourcegraph will ignore any rules with a host other than `*`, {/* SCHEMA_SYNC_START: admin/code_hosts/perforce.schema.json */} {/* WARNING: This section is auto-generated during releases. Do not edit manually. */} -{/* Last updated: 2026-09-08T17:20:44Z */} +{/* Last updated: 2026-09-14T08:37:54Z */} ```json { // If non-null, enforces Perforce depot permissions. diff --git a/docs/admin/telemetry/private-metadata-allowlist.mdx b/docs/admin/telemetry/private-metadata-allowlist.mdx index 38001417c..ebee6211e 100644 --- a/docs/admin/telemetry/private-metadata-allowlist.mdx +++ b/docs/admin/telemetry/private-metadata-allowlist.mdx @@ -1,12 +1,12 @@ # Private metadata allowlist -This document lists all telemetry events that are allowed to export specific `privateMetadata` fields (from within [telemetry event parameters](/admin/telemetry/protocol#telemetrygateway-v1-EventParameters)). +This document lists all telemetry events that are allowed to export specific `privateMetadata` fields (from within [telemetry event parameters](https://sourcegraph.com/docs/admin/telemetry/protocol#telemetrygateway-v1-EventParameters)). By default, `privateMetadata` is **never** exported from customers because it can contain arbitrarily-shaped data that may accidentally include sensitive or private contents. The specific events and properties listed below have been individually reviewed and approved for export. The implementation of each is monitored to ensure they contain only categorized, enumerated information. The only `metadata` we collect by default are non-sensitive numeric values. -To learn more, refer to the [telemetry documentation](/admin/telemetry). +To learn more, refer to the [telemetry documentation](https://sourcegraph.com/docs/admin/telemetry). | **Event feature** | **Event action** | **Allowed `privateMetadata` fields** | | :---------------- | :--------------- | :----------------------------------- | diff --git a/docs/admin/telemetry/protocol.mdx b/docs/admin/telemetry/protocol.mdx index e0b3a7fb6..8b25a7a42 100644 --- a/docs/admin/telemetry/protocol.mdx +++ b/docs/admin/telemetry/protocol.mdx @@ -3,7 +3,7 @@ This page contains the core schema for telemetry event data that gets exported from Sourcegraph. -To learn more, refer to our [telemetry documentation](/admin/telemetry). +To learn more, refer to our [telemetry documentation](https://sourcegraph.com/docs/admin/telemetry). ## Table of Contents diff --git a/docs/cli/references/debug.mdx b/docs/cli/references/debug.mdx new file mode 100644 index 000000000..07cd0797b --- /dev/null +++ b/docs/cli/references/debug.mdx @@ -0,0 +1,27 @@ +# `src debug` + + + +## Usage + +``` +'src debug' gathers and bundles debug data from a Sourcegraph deployment for troubleshooting. + +Usage: + + src debug command [command options] + +The commands are: + + kube dumps context from k8s deployments + compose dumps context from docker-compose deployments + server dumps context from single-container deployments + + +Use "src debug command -h" for more information about a subcommands. +src debug has access to flags on src -- Ex: src -v kube -o foo.zip + + + +``` + \ No newline at end of file diff --git a/docs/cli/references/index.mdx b/docs/cli/references/index.mdx index ce45deb1d..fb7a86720 100644 --- a/docs/cli/references/index.mdx +++ b/docs/cli/references/index.mdx @@ -6,20 +6,9 @@ * [`abc`](references/abc) * [`api`](references/api) * [`auth`](references/auth) -* [`batch`](references/batch) -* [`code-intel`](references/code-intel) * [`codeowners`](references/codeowners) -* [`config`](references/config) -* [`debug`](references/debug) -* [`extsvc`](references/extsvc) * [`login`](references/login) -* [`lsp`](references/lsp) * [`orgs`](references/orgs) -* [`repos`](references/repos) -* [`search`](references/search) -* [`search-jobs`](references/search-jobs) -* [`serve-git`](references/serve-git) -* [`snapshot`](references/snapshot) * [`users`](references/users) * [`version`](references/version) \ No newline at end of file diff --git a/docs/cli/references/search-jobs.mdx b/docs/cli/references/search-jobs.mdx new file mode 100644 index 000000000..1cfb311bb --- /dev/null +++ b/docs/cli/references/search-jobs.mdx @@ -0,0 +1,33 @@ +# `src search-jobs` + + + +## Usage + +``` +'src search-jobs' is a tool that manages search jobs on a Sourcegraph instance. + + Usage: + + src search-jobs command [command options] + + The commands are: + + cancel cancels a search job by ID + create creates a search job + delete deletes a search job by ID + get gets a search job by ID + list lists search jobs + logs fetches logs for a search job by ID + restart restarts a search job by ID + results fetches results for a search job by ID + + Common options for all commands: + -c Select columns to display (e.g., -c id,query,state,username) + -json Output results in JSON format + + Use "src search-jobs [command] -h" for more information about a command. + + +``` + \ No newline at end of file diff --git a/docs/cli/references/snapshot.mdx b/docs/cli/references/snapshot.mdx new file mode 100644 index 000000000..b4e7228a8 --- /dev/null +++ b/docs/cli/references/snapshot.mdx @@ -0,0 +1,27 @@ +# `src snapshot` + + + +## Usage + +``` +'src snapshot' manages snapshots of Sourcegraph instance databases. All subcommands are currently EXPERIMENTAL. + +Usage: + + src snapshot + +The commands are: + + databases export databases from a Sourcegraph instance + restore restore databases from an export + upload upload exported databases and summary file when migrating to Sourcegraph Cloud + + summary export summary data about an instance for acceptance testing of a restored Sourcegraph instance + test use exported summary data and instance health indicators to validate a restored and upgraded instance + +Use "src snapshot [command] -h" for more information about a command. + + +``` + \ No newline at end of file diff --git a/docs/cli/references/teams.mdx b/docs/cli/references/teams.mdx new file mode 100644 index 000000000..5abc51d07 --- /dev/null +++ b/docs/cli/references/teams.mdx @@ -0,0 +1,26 @@ +# `src teams` + + + +## Usage + +``` +'src teams' is a tool that manages teams in a Sourcegraph instance. + +Usage: + + src teams command [command options] + +The commands are: + + list lists teams + create create a team + update update a team + delete delete a team + members manage team members, use "src teams members [command] -h" for more information. + +Use "src teams [command] -h" for more information about a command. + + +``` + \ No newline at end of file diff --git a/docs/self-hosted/observability/alerts.mdx b/docs/self-hosted/observability/alerts.mdx index 12faaac77..3a881aa3b 100644 --- a/docs/self-hosted/observability/alerts.mdx +++ b/docs/self-hosted/observability/alerts.mdx @@ -5,7 +5,7 @@ This document contains a complete reference of all alerts in Sourcegraph's monitoring, and next steps for when you find alerts that are firing. If your alert isn't mentioned here, or if the next steps don't help, [contact us](mailto:support@sourcegraph.com) for assistance. -To learn more about Sourcegraph's alerting and how to set up alerts, see [our alerting guide](/self-hosted/observability/alerting). +To learn more about Sourcegraph's alerting and how to set up alerts, see [our alerting guide](https://sourcegraph.com/docs/admin/observability/alerting). ## frontend: 99th_percentile_search_request_duration @@ -244,7 +244,7 @@ Generated query for warning alert: `max((histogram_quantile(0.9, sum by (le) (ra - **Check that most repositories are indexed** by visiting https://sourcegraph.example.com/admin/repositories?filter=needs-index (it should show few or no results.) - **Kubernetes:** Check CPU usage of zoekt-webserver in the indexed-search pod, consider increasing CPU limits in the `indexed-search.Deployment.yaml` if regularly hitting max CPU utilization. - **Docker Compose:** Check CPU usage on the Zoekt Web Server dashboard, consider increasing `cpus:` of the zoekt-webserver container in `docker-compose.yml` if regularly hitting max CPU utilization. -- This alert may indicate that your instance is struggling to process symbols queries on a monorepo, [learn more here](/admin/monorepo). +- This alert may indicate that your instance is struggling to process symbols queries on a monorepo, [learn more here](https://sourcegraph.com/docs/admin/monorepo). - Learn more about the related dashboard panel in the [dashboards reference](dashboards#frontend-99th_percentile_search_codeintel_request_duration). - **Silence this alert:** If you are aware of this alert and want to silence notifications for it, add the following to your site configuration and set a reminder to re-evaluate the alert: @@ -279,7 +279,7 @@ Generated query for warning alert: `max((histogram_quantile(0.99, sum by (le) (r - **Check that most repositories are indexed** by visiting https://sourcegraph.example.com/admin/repositories?filter=needs-index (it should show few or no results.) - **Kubernetes:** Check CPU usage of zoekt-webserver in the indexed-search pod, consider increasing CPU limits in the `indexed-search.Deployment.yaml` if regularly hitting max CPU utilization. - **Docker Compose:** Check CPU usage on the Zoekt Web Server dashboard, consider increasing `cpus:` of the zoekt-webserver container in `docker-compose.yml` if regularly hitting max CPU utilization. -- This alert may indicate that your instance is struggling to process symbols queries on a monorepo, [learn more here](/admin/monorepo). +- This alert may indicate that your instance is struggling to process symbols queries on a monorepo, [learn more here](https://sourcegraph.com/docs/admin/monorepo). - Learn more about the related dashboard panel in the [dashboards reference](dashboards#frontend-90th_percentile_search_codeintel_request_duration). - **Silence this alert:** If you are aware of this alert and want to silence notifications for it, add the following to your site configuration and set a reminder to re-evaluate the alert: @@ -909,7 +909,7 @@ Generated query for warning alert: `max((sum by (name, job_name) (rate(src_perio **Next steps** - Increase SRC_PGSQL_MAX_OPEN together with giving more memory to the database if needed -- Scale up Postgres memory/cpus - [see our scaling guide](/self-hosted/postgres-conf) +- Scale up Postgres memory/cpus - [see our scaling guide](https://sourcegraph.com/docs/admin/config/postgres-conf) - If using GCP Cloud SQL, check for high lock waits or CPU usage in query insights - Learn more about the related dashboard panel in the [dashboards reference](dashboards#frontend-mean_blocked_seconds_per_conn_request). - **Silence this alert:** If you are aware of this alert and want to silence notifications for it, add the following to your site configuration and set a reminder to re-evaluate the alert: @@ -1397,7 +1397,7 @@ Generated query for critical alert: `min(((src_gitserver_disk_space_available / **Next steps** - **Single container deployments (removed in 7.0.0):** The single-container deployment mode has been sunset. [Migrate to Docker Compose](../deploy/docker-compose/migrate). -- **Kubernetes and Docker Compose:** Check that you are running a similar number of git server replicas and that their CPU/memory limits are allocated according to what is shown in the [Sourcegraph resource estimator](/self-hosted/deploy/resource-estimator). +- **Kubernetes and Docker Compose:** Check that you are running a similar number of git server replicas and that their CPU/memory limits are allocated according to what is shown in the [Sourcegraph resource estimator](https://sourcegraph.com/docs/self-hosted/deploy/resource-estimator). - If your persistent volume is slow, you may want to provision more IOPS, usually by increasing the volume size. - More help interpreting this metric is available in the [dashboards reference](dashboards#gitserver-echo_command_duration_test). - **Silence this alert:** If you are aware of this alert and want to silence notifications for it, add the following to your site configuration and set a reminder to re-evaluate the alert: @@ -1688,7 +1688,7 @@ Generated query for critical alert: `max((max(max_over_time(src_conf_client_time **Next steps** - Increase SRC_PGSQL_MAX_OPEN together with giving more memory to the database if needed -- Scale up Postgres memory/cpus - [see our scaling guide](/self-hosted/postgres-conf) +- Scale up Postgres memory/cpus - [see our scaling guide](https://sourcegraph.com/docs/admin/config/postgres-conf) - If using GCP Cloud SQL, check for high lock waits or CPU usage in query insights - Learn more about the related dashboard panel in the [dashboards reference](dashboards#gitserver-mean_blocked_seconds_per_conn_request). - **Silence this alert:** If you are aware of this alert and want to silence notifications for it, add the following to your site configuration and set a reminder to re-evaluate the alert: @@ -2006,7 +2006,7 @@ Generated query for warning alert: `min((sum by (job) (pg_stat_activity_count{da **Next steps** -- Consider increasing [max_connections](https://www.postgresql.org/docs/current/runtime-config-connection.html#GUC-MAX-CONNECTIONS) of the database instance, [learn more](/self-hosted/postgres-conf) +- Consider increasing [max_connections](https://www.postgresql.org/docs/current/runtime-config-connection.html#GUC-MAX-CONNECTIONS) of the database instance, [learn more](https://sourcegraph.com/docs/admin/config/postgres-conf) - Learn more about the related dashboard panel in the [dashboards reference](dashboards#postgres-usage_connections_percentage). - **Silence this alert:** If you are aware of this alert and want to silence notifications for it, add the following to your site configuration and set a reminder to re-evaluate the alert: @@ -2496,7 +2496,7 @@ Generated query for warning alert: `max((max by (instance) (clamp_min(time() - s **Next steps** - Increase SRC_PGSQL_MAX_OPEN together with giving more memory to the database if needed -- Scale up Postgres memory/cpus - [see our scaling guide](/self-hosted/postgres-conf) +- Scale up Postgres memory/cpus - [see our scaling guide](https://sourcegraph.com/docs/admin/config/postgres-conf) - If using GCP Cloud SQL, check for high lock waits or CPU usage in query insights - Learn more about the related dashboard panel in the [dashboards reference](dashboards#precise-code-intel-worker-mean_blocked_seconds_per_conn_request). - **Silence this alert:** If you are aware of this alert and want to silence notifications for it, add the following to your site configuration and set a reminder to re-evaluate the alert: @@ -2565,7 +2565,7 @@ Generated query for critical alert: `min((sum by (app) (up{app=~".*precise-code- **Next steps** - Increase SRC_PGSQL_MAX_OPEN together with giving more memory to the database if needed -- Scale up Postgres memory/cpus - [see our scaling guide](/self-hosted/postgres-conf) +- Scale up Postgres memory/cpus - [see our scaling guide](https://sourcegraph.com/docs/admin/config/postgres-conf) - If using GCP Cloud SQL, check for high lock waits or CPU usage in query insights - Learn more about the related dashboard panel in the [dashboards reference](dashboards#syntactic-indexing-mean_blocked_seconds_per_conn_request). - **Silence this alert:** If you are aware of this alert and want to silence notifications for it, add the following to your site configuration and set a reminder to re-evaluate the alert: @@ -3904,7 +3904,7 @@ Generated query for critical alert: `min((max by (name) (src_gitlab_rate_limit_r **Next steps** - **Enabled permissions for the first time:** Wait for few minutes and see if the number goes down. -- **Otherwise:** Increase the API rate limit to [GitHub](/admin/code-hosts/github#rate-limits), [GitLab](/admin/code-hosts/gitlab#internal-rate-limits) or [Bitbucket Server](/admin/code-hosts/bitbucket-server#internal-rate-limits). +- **Otherwise:** Increase the API rate limit to [GitHub](https://sourcegraph.com/docs/admin/code_hosts/github#github-com-rate-limits), [GitLab](https://sourcegraph.com/docs/admin/code_hosts/gitlab#internal-rate-limits) or [Bitbucket Server](https://sourcegraph.com/docs/admin/code_hosts/bitbucket_server#internal-rate-limits). - Learn more about the related dashboard panel in the [dashboards reference](dashboards#worker-perms_syncer_outdated_perms). - **Silence this alert:** If you are aware of this alert and want to silence notifications for it, add the following to your site configuration and set a reminder to re-evaluate the alert: @@ -4034,7 +4034,7 @@ Generated query for warning alert: `max((sum by (name, job_name) (rate(src_perio **Next steps** - Increase SRC_PGSQL_MAX_OPEN together with giving more memory to the database if needed -- Scale up Postgres memory/cpus - [see our scaling guide](/self-hosted/postgres-conf) +- Scale up Postgres memory/cpus - [see our scaling guide](https://sourcegraph.com/docs/admin/config/postgres-conf) - If using GCP Cloud SQL, check for high lock waits or CPU usage in query insights - Learn more about the related dashboard panel in the [dashboards reference](dashboards#worker-mean_blocked_seconds_per_conn_request). - **Silence this alert:** If you are aware of this alert and want to silence notifications for it, add the following to your site configuration and set a reminder to re-evaluate the alert: @@ -4648,7 +4648,7 @@ Generated query for warning alert: `max((sum by (name, job_name) (rate(src_perio **Next steps** - Increase SRC_PGSQL_MAX_OPEN together with giving more memory to the database if needed -- Scale up Postgres memory/cpus - [see our scaling guide](/self-hosted/postgres-conf) +- Scale up Postgres memory/cpus - [see our scaling guide](https://sourcegraph.com/docs/admin/config/postgres-conf) - If using GCP Cloud SQL, check for high lock waits or CPU usage in query insights - Learn more about the related dashboard panel in the [dashboards reference](dashboards#searcher-mean_blocked_seconds_per_conn_request). - **Silence this alert:** If you are aware of this alert and want to silence notifications for it, add the following to your site configuration and set a reminder to re-evaluate the alert: @@ -5575,7 +5575,7 @@ Generated query for warning alert: `max((max by (name) (container_memory_rss{nam - Enabling shard merging for Zoekt: Set SRC_ENABLE_SHARD_MERGING="1" for zoekt-indexserver. Use this option if your corpus of repositories has a high percentage of small, rarely updated repositories. See -[documentation](/admin/search#shard-merging). +[documentation](https://sourcegraph.com/docs/code-search/features#shard-merging). - Creating additional Zoekt replicas: This spreads all the shards out amongst more replicas, which means that each _individual_ replica will have fewer shards. This, in turn, decreases the amount of memory map areas that a _single_ replica can create (in order to load the shards into memory). @@ -5866,7 +5866,7 @@ Generated query for warning alert: `max((sum by (rule_group) (rate(prometheus_ru **Next steps** - Check the Container monitoring (not available on server) panels and try increasing resources for Prometheus if necessary. -- Ensure that your [`observability.alerts` configuration](/self-hosted/observability/alerting#setting-up-alerting) (in site configuration) is valid. +- Ensure that your [`observability.alerts` configuration](https://sourcegraph.com/docs/admin/observability/alerting#setting-up-alerting) (in site configuration) is valid. - Check if the relevant alert integration service is experiencing downtime or issues. - Learn more about the related dashboard panel in the [dashboards reference](dashboards#prometheus-alertmanager_notification_latency). - **Silence this alert:** If you are aware of this alert and want to silence notifications for it, add the following to your site configuration and set a reminder to re-evaluate the alert: @@ -5898,7 +5898,7 @@ Generated query for warning alert: `max((sum by (integration) (rate(alertmanager **Next steps** -- Ensure that your [`observability.alerts` configuration](/self-hosted/observability/alerting#setting-up-alerting) (in site configuration) is valid. +- Ensure that your [`observability.alerts` configuration](https://sourcegraph.com/docs/admin/observability/alerting#setting-up-alerting) (in site configuration) is valid. - Check if the relevant alert integration service is experiencing downtime or issues. - Learn more about the related dashboard panel in the [dashboards reference](dashboards#prometheus-alertmanager_notification_failures). - **Silence this alert:** If you are aware of this alert and want to silence notifications for it, add the following to your site configuration and set a reminder to re-evaluate the alert: @@ -5931,7 +5931,7 @@ Generated query for warning alert: `max((sum by (integration) (rate(alertmanager **Next steps** - Check Prometheus logs for messages related to configuration loading. -- Ensure any [custom configuration you have provided Prometheus](/self-hosted/observability/metrics#prometheus-configuration) is valid. +- Ensure any [custom configuration you have provided Prometheus](https://sourcegraph.com/docs/admin/observability/metrics#prometheus-configuration) is valid. - More help interpreting this metric is available in the [dashboards reference](dashboards#prometheus-prometheus_config_status). - **Silence this alert:** If you are aware of this alert and want to silence notifications for it, add the following to your site configuration and set a reminder to re-evaluate the alert: @@ -5962,7 +5962,7 @@ Generated query for warning alert: `min((prometheus_config_last_reload_successfu **Next steps** -- Ensure that your [`observability.alerts` configuration](/self-hosted/observability/alerting#setting-up-alerting) (in site configuration) is valid. +- Ensure that your [`observability.alerts` configuration](https://sourcegraph.com/docs/admin/observability/alerting#setting-up-alerting) (in site configuration) is valid. - More help interpreting this metric is available in the [dashboards reference](dashboards#prometheus-alertmanager_config_status). - **Silence this alert:** If you are aware of this alert and want to silence notifications for it, add the following to your site configuration and set a reminder to re-evaluate the alert: diff --git a/docs/self-hosted/observability/dashboards.mdx b/docs/self-hosted/observability/dashboards.mdx index 3de5a7d69..74e5f2187 100644 --- a/docs/self-hosted/observability/dashboards.mdx +++ b/docs/self-hosted/observability/dashboards.mdx @@ -4,7 +4,7 @@ This document contains a complete reference on Sourcegraph's available dashboards, as well as details on how to interpret the panels and metrics. -To learn more about Sourcegraph's metrics and how to view these dashboards, see [our metrics guide](/self-hosted/observability/metrics). +To learn more about Sourcegraph's metrics and how to view these dashboards, see [our metrics guide](https://sourcegraph.com/docs/admin/observability/metrics). ## Frontend @@ -15188,6 +15188,184 @@ sum by (op)(increase(src_gitserver_client_errors_total{job=~"^worker.*"}[5m])) /
+### Worker: Codeintel: Symbols object store + +#### worker: sourcegraphobjects_symbol_indexes_total + +

Aggregate object store operations every 5m

+ +This panel has no related alerts. + +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101000` on your Sourcegraph instance. + +*Managed by the Sourcegraph Code Understanding team.* + +
+Technical details + +Query: + +``` +sum(increase(src_sourcegraphobjects_symbol_indexes_total{job=~"^worker.*"}[5m])) +``` +
+ +
+ +#### worker: sourcegraphobjects_symbol_indexes_99th_percentile_duration + +

Aggregate successful object store operation duration distribution over 5m

+ +This panel has no related alerts. + +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101001` on your Sourcegraph instance. + +*Managed by the Sourcegraph Code Understanding team.* + +
+Technical details + +Query: + +``` +sum by (le)(rate(src_sourcegraphobjects_symbol_indexes_duration_seconds_bucket{job=~"^worker.*"}[5m])) +``` +
+ +
+ +#### worker: sourcegraphobjects_symbol_indexes_errors_total + +

Aggregate object store operation errors every 5m

+ +This panel has no related alerts. + +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101002` on your Sourcegraph instance. + +*Managed by the Sourcegraph Code Understanding team.* + +
+Technical details + +Query: + +``` +sum(increase(src_sourcegraphobjects_symbol_indexes_errors_total{job=~"^worker.*"}[5m])) +``` +
+ +
+ +#### worker: sourcegraphobjects_symbol_indexes_error_rate + +

Aggregate object store operation error rate over 5m

+ +This panel has no related alerts. + +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101003` on your Sourcegraph instance. + +*Managed by the Sourcegraph Code Understanding team.* + +
+Technical details + +Query: + +``` +sum(increase(src_sourcegraphobjects_symbol_indexes_errors_total{job=~"^worker.*"}[5m])) / (sum(increase(src_sourcegraphobjects_symbol_indexes_total{job=~"^worker.*"}[5m])) + sum(increase(src_sourcegraphobjects_symbol_indexes_errors_total{job=~"^worker.*"}[5m]))) * 100 +``` +
+ +
+ +#### worker: sourcegraphobjects_symbol_indexes_total + +

Object store operations every 5m

+ +This panel has no related alerts. + +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101010` on your Sourcegraph instance. + +*Managed by the Sourcegraph Code Understanding team.* + +
+Technical details + +Query: + +``` +sum by (op)(increase(src_sourcegraphobjects_symbol_indexes_total{job=~"^worker.*"}[5m])) +``` +
+ +
+ +#### worker: sourcegraphobjects_symbol_indexes_99th_percentile_duration + +

99th percentile successful object store operation duration over 5m

+ +This panel has no related alerts. + +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101011` on your Sourcegraph instance. + +*Managed by the Sourcegraph Code Understanding team.* + +
+Technical details + +Query: + +``` +histogram_quantile(0.99, sum by (le,op)(rate(src_sourcegraphobjects_symbol_indexes_duration_seconds_bucket{job=~"^worker.*"}[5m]))) +``` +
+ +
+ +#### worker: sourcegraphobjects_symbol_indexes_errors_total + +

Object store operation errors every 5m

+ +This panel has no related alerts. + +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101012` on your Sourcegraph instance. + +*Managed by the Sourcegraph Code Understanding team.* + +
+Technical details + +Query: + +``` +sum by (op)(increase(src_sourcegraphobjects_symbol_indexes_errors_total{job=~"^worker.*"}[5m])) +``` +
+ +
+ +#### worker: sourcegraphobjects_symbol_indexes_error_rate + +

Object store operation error rate over 5m

+ +This panel has no related alerts. + +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101013` on your Sourcegraph instance. + +*Managed by the Sourcegraph Code Understanding team.* + +
+Technical details + +Query: + +``` +sum by (op)(increase(src_sourcegraphobjects_symbol_indexes_errors_total{job=~"^worker.*"}[5m])) / (sum by (op)(increase(src_sourcegraphobjects_symbol_indexes_total{job=~"^worker.*"}[5m])) + sum by (op)(increase(src_sourcegraphobjects_symbol_indexes_errors_total{job=~"^worker.*"}[5m]))) * 100 +``` +
+ +
+ ### Worker: Repositories #### worker: syncer_sync_last_time @@ -15199,7 +15377,7 @@ If the value is persistently high, make sure all external services have valid to This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101000` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101100` on your Sourcegraph instance. *Managed by the Sourcegraph Services team.* @@ -15221,7 +15399,7 @@ max(timestamp(vector(time()))) - max(src_repoupdater_syncer_sync_last_time) Refer to the [alerts reference](alerts#worker-src_repoupdater_max_sync_backoff) for 1 alert related to this panel. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101001` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101101` on your Sourcegraph instance. *Managed by the Sourcegraph Services team.* @@ -15243,7 +15421,7 @@ max(src_repoupdater_max_sync_backoff) Refer to the [alerts reference](alerts#worker-src_repoupdater_syncer_sync_errors_total) for 2 alerts related to this panel. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101002` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101102` on your Sourcegraph instance. *Managed by the Sourcegraph Services team.* @@ -15265,7 +15443,7 @@ max by (family) (rate(src_repoupdater_syncer_sync_errors_total{owner!="user",rea Refer to the [alerts reference](alerts#worker-syncer_sync_start) for 1 alert related to this panel. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101010` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101110` on your Sourcegraph instance. *Managed by the Sourcegraph Services team.* @@ -15287,7 +15465,7 @@ max by (family) (rate(src_repoupdater_syncer_start_sync{family="Syncer.SyncExter Refer to the [alerts reference](alerts#worker-syncer_sync_duration) for 1 alert related to this panel. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101011` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101111` on your Sourcegraph instance. *Managed by the Sourcegraph Services team.* @@ -15309,7 +15487,7 @@ histogram_quantile(0.95, max by (le, family, success) (rate(src_repoupdater_sync Refer to the [alerts reference](alerts#worker-source_duration) for 1 alert related to this panel. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101012` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101112` on your Sourcegraph instance. *Managed by the Sourcegraph Services team.* @@ -15333,7 +15511,7 @@ This panel includes only valid changes to default-branch tips. Values use Git co This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101020` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101120` on your Sourcegraph instance. *Managed by the Sourcegraph Services team.* @@ -15357,7 +15535,7 @@ This panel includes only valid changes to default-branch tips. Values use Git co This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101021` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101121` on your Sourcegraph instance. *Managed by the Sourcegraph Services team.* @@ -15381,7 +15559,7 @@ This panel includes only valid changes to default-branch tips. Values use Git co This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101022` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101122` on your Sourcegraph instance. *Managed by the Sourcegraph Services team.* @@ -15403,7 +15581,7 @@ histogram_quantile(0.99, sum by (le, update_frequency) (rate(src_repoupdater_def Refer to the [alerts reference](alerts#worker-syncer_synced_repos) for 1 alert related to this panel. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101030` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101130` on your Sourcegraph instance. *Managed by the Sourcegraph Services team.* @@ -15425,7 +15603,7 @@ max(rate(src_repoupdater_syncer_synced_repos_total[1m])) Refer to the [alerts reference](alerts#worker-sourced_repos) for 1 alert related to this panel. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101031` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101131` on your Sourcegraph instance. *Managed by the Sourcegraph Services team.* @@ -15447,7 +15625,7 @@ max(rate(src_repoupdater_source_repos_total[1m])) Refer to the [alerts reference](alerts#worker-sched_auto_fetch) for 1 alert related to this panel. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101040` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101140` on your Sourcegraph instance. *Managed by the Sourcegraph Services team.* @@ -15472,7 +15650,7 @@ This does not indicate anything if there are no user added code hosts. This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101041` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101141` on your Sourcegraph instance. *Managed by the Sourcegraph Services team.* @@ -15494,7 +15672,7 @@ max(rate(src_repoupdater_sched_manual_fetch[1m])) Refer to the [alerts reference](alerts#worker-sched_loops) for 1 alert related to this panel. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101050` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101150` on your Sourcegraph instance. *Managed by the Sourcegraph Services team.* @@ -15516,7 +15694,7 @@ max(rate(src_repoupdater_sched_loops[1m])) Refer to the [alerts reference](alerts#worker-src_repoupdater_stale_repos) for 1 alert related to this panel. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101051` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101151` on your Sourcegraph instance. *Managed by the Sourcegraph Services team.* @@ -15538,7 +15716,7 @@ max(src_repoupdater_stale_repos) Refer to the [alerts reference](alerts#worker-sched_error) for 1 alert related to this panel. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101052` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101152` on your Sourcegraph instance. *Managed by the Sourcegraph Services team.* @@ -15562,7 +15740,7 @@ Repository fetches that failed due to an externally classified code-host access This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101053` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101153` on your Sourcegraph instance. *Managed by the Sourcegraph Services team.* @@ -15584,7 +15762,7 @@ max(rate(src_repoupdater_sched_external_error[1m])) Refer to the [alerts reference](alerts#worker-src_repoupdater_cleanup_failed_repos) for 1 alert related to this panel. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101060` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101160` on your Sourcegraph instance. *Managed by the Sourcegraph Services team.* @@ -15610,7 +15788,7 @@ max(src_repoupdater_cleanup_failed_repos) This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101100` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101200` on your Sourcegraph instance. *Managed by the Sourcegraph Services team.* @@ -15638,7 +15816,7 @@ were correct. This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101101` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101201` on your Sourcegraph instance. *Managed by the Sourcegraph Services team.* @@ -15663,7 +15841,7 @@ Check the reasons for why they were deleted. This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101102` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101202` on your Sourcegraph instance. *Managed by the Sourcegraph Services team.* @@ -15688,7 +15866,7 @@ Check the reasons for why they were deleted. This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101103` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101203` on your Sourcegraph instance. *Managed by the Sourcegraph Services team.* @@ -15714,7 +15892,7 @@ The number of entitlement usage history events exported as telemetry over the la This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101200` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101300` on your Sourcegraph instance. *Managed by the Sourcegraph Services team.* @@ -15739,7 +15917,7 @@ If the distribution trends to the maximum bucket, export throughput is at or app This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101201` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101301` on your Sourcegraph instance. *Managed by the Sourcegraph Services team.* @@ -15763,7 +15941,7 @@ The number of already-exported entitlement usage history events pruned over the This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101210` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101310` on your Sourcegraph instance. *Managed by the Sourcegraph Services team.* @@ -15787,7 +15965,7 @@ The number of entitlement usage history events waiting to be exported as telemet This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101211` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101311` on your Sourcegraph instance. *Managed by the Sourcegraph Services team.* @@ -15825,7 +16003,7 @@ The age in seconds of the oldest entitlement usage history event waiting to be e Refer to the [alerts reference](alerts#worker-entitlements_usage_history_telemetry_queue_oldest_age) for 2 alerts related to this panel. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101220` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101320` on your Sourcegraph instance. *Managed by the Sourcegraph Services team.* @@ -15863,7 +16041,7 @@ Query: Refer to the [alerts reference](alerts#worker-src_repoupdater_external_services_total) for 1 alert related to this panel. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101300` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101400` on your Sourcegraph instance. *Managed by the Sourcegraph Services team.* @@ -15885,7 +16063,7 @@ max(src_repoupdater_external_services_total) Refer to the [alerts reference](alerts#worker-repoupdater_queued_sync_jobs_total) for 1 alert related to this panel. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101310` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101410` on your Sourcegraph instance. *Managed by the Sourcegraph Services team.* @@ -15907,7 +16085,7 @@ max(src_repoupdater_queued_sync_jobs_total) Refer to the [alerts reference](alerts#worker-repoupdater_completed_sync_jobs_total) for 1 alert related to this panel. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101311` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101411` on your Sourcegraph instance. *Managed by the Sourcegraph Services team.* @@ -15929,7 +16107,7 @@ max(src_repoupdater_completed_sync_jobs_total) Refer to the [alerts reference](alerts#worker-repoupdater_errored_sync_jobs_percentage) for 1 alert related to this panel. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101312` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101412` on your Sourcegraph instance. *Managed by the Sourcegraph Services team.* @@ -15951,7 +16129,7 @@ max(src_repoupdater_errored_sync_jobs_percentage) Refer to the [alerts reference](alerts#worker-github_graphql_rate_limit_remaining) for 1 alert related to this panel. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101320` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101420` on your Sourcegraph instance. *Managed by the Sourcegraph Services team.* @@ -15973,7 +16151,7 @@ max by (name) (src_github_rate_limit_remaining_v2{resource="graphql"}) Refer to the [alerts reference](alerts#worker-github_rest_rate_limit_remaining) for 1 alert related to this panel. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101321` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101421` on your Sourcegraph instance. *Managed by the Sourcegraph Services team.* @@ -15995,7 +16173,7 @@ max by (name) (src_github_rate_limit_remaining_v2{resource="rest"}) Refer to the [alerts reference](alerts#worker-github_search_rate_limit_remaining) for 1 alert related to this panel. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101322` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101422` on your Sourcegraph instance. *Managed by the Sourcegraph Services team.* @@ -16019,7 +16197,7 @@ Indicates how long we`re waiting on the rate limit once it has been exceeded This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101330` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101430` on your Sourcegraph instance. *Managed by the Sourcegraph Services team.* @@ -16043,7 +16221,7 @@ Indicates how long we`re waiting on the rate limit once it has been exceeded This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101331` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101431` on your Sourcegraph instance. *Managed by the Sourcegraph Services team.* @@ -16067,7 +16245,7 @@ Indicates how long we`re waiting on the rate limit once it has been exceeded This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101332` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101432` on your Sourcegraph instance. *Managed by the Sourcegraph Services team.* @@ -16089,7 +16267,7 @@ max by(name) (rate(src_github_rate_limit_wait_duration_seconds{resource="search" Refer to the [alerts reference](alerts#worker-gitlab_rest_rate_limit_remaining) for 1 alert related to this panel. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101340` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101440` on your Sourcegraph instance. *Managed by the Sourcegraph Services team.* @@ -16113,7 +16291,7 @@ Indicates how long we`re waiting on the rate limit once it has been exceeded This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101341` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101441` on your Sourcegraph instance. *Managed by the Sourcegraph Services team.* @@ -16137,7 +16315,7 @@ Indicates how long we`re waiting on our internal rate limiter when communicating This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101350` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101450` on your Sourcegraph instance. *Managed by the Sourcegraph Services team.* @@ -16161,7 +16339,7 @@ The rate at which we fail our internal rate limiter. This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101351` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101451` on your Sourcegraph instance. *Managed by the Sourcegraph Services team.* @@ -16187,7 +16365,7 @@ Indicates the total number of user permissions sync completed. This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101400` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101500` on your Sourcegraph instance. *Managed by the Sourcegraph Services team.* @@ -16211,7 +16389,7 @@ Indicates the number of users permissions syncs completed. This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101401` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101501` on your Sourcegraph instance. *Managed by the Sourcegraph Services team.* @@ -16235,7 +16413,7 @@ Indicates the number of permissions syncs done for the first time for the user. This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101402` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101502` on your Sourcegraph instance. *Managed by the Sourcegraph Services team.* @@ -16259,7 +16437,7 @@ Indicates the total number of repo permissions sync completed. This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101410` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101510` on your Sourcegraph instance. *Managed by the Sourcegraph Services team.* @@ -16283,7 +16461,7 @@ Indicates the number of repos permissions syncs completed. This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101411` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101511` on your Sourcegraph instance. *Managed by the Sourcegraph Services team.* @@ -16307,7 +16485,7 @@ Indicates the number of permissions syncs done for the first time for the repo. This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101412` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101512` on your Sourcegraph instance. *Managed by the Sourcegraph Services team.* @@ -16331,7 +16509,7 @@ Indicates the max delay between two consecutive permissions sync for a user duri This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101420` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101520` on your Sourcegraph instance. *Managed by the Sourcegraph Services team.* @@ -16355,7 +16533,7 @@ Indicates the max delay between two consecutive permissions sync for a repo duri This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101421` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101521` on your Sourcegraph instance. *Managed by the Sourcegraph Services team.* @@ -16379,7 +16557,7 @@ Indicates the max delay between user creation and their permissions sync This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101430` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101530` on your Sourcegraph instance. *Managed by the Sourcegraph Services team.* @@ -16403,7 +16581,7 @@ Indicates the max delay between repo creation and their permissions sync This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101431` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101531` on your Sourcegraph instance. *Managed by the Sourcegraph Services team.* @@ -16427,7 +16605,7 @@ Indicates the number permissions found during users/repos permissions sync. This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101440` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101540` on your Sourcegraph instance. *Managed by the Sourcegraph Services team.* @@ -16451,7 +16629,7 @@ Indicates the average number permissions found during permissions sync per user/ This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101441` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101541` on your Sourcegraph instance. *Managed by the Sourcegraph Services team.* @@ -16473,7 +16651,7 @@ avg by (type) (src_repo_perms_syncer_perms_found) Refer to the [alerts reference](alerts#worker-perms_syncer_outdated_perms) for 1 alert related to this panel. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101450` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101550` on your Sourcegraph instance. *Managed by the Sourcegraph Services team.* @@ -16495,7 +16673,7 @@ max by (type) (src_repo_perms_syncer_outdated_perms) Refer to the [alerts reference](alerts#worker-perms_syncer_sync_duration) for 1 alert related to this panel. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101460` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101560` on your Sourcegraph instance. *Managed by the Sourcegraph Services team.* @@ -16521,7 +16699,7 @@ Permissions sync errors are often transient and rarely actionable. This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101470` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101570` on your Sourcegraph instance. *Managed by the Sourcegraph Services team.* @@ -16542,11 +16720,11 @@ max by (type) (ceil(rate(src_repo_perms_syncer_sync_errors_total[1m])))

Rate of users/repos scheduled for permissions sync

Indicates the per-minute rate at which users/repositories are scheduled for a permissions sync. -More about repository permissions synchronization [here](/admin/permissions/syncing#scheduling) +More about repository permissions synchronization [here](https://sourcegraph.com/docs/admin/permissions/syncing#scheduling) This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101471` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101571` on your Sourcegraph instance. *Managed by the Sourcegraph Services team.* @@ -16570,7 +16748,7 @@ sum by (type) (increase(src_repo_perms_syncer_schedule_total[1m])) This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101500` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101600` on your Sourcegraph instance. *Managed by the Sourcegraph Services team.* @@ -16592,7 +16770,7 @@ sum(increase(src_gitserver_client_total{job=~"^worker.*"}[5m])) This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101501` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101601` on your Sourcegraph instance. *Managed by the Sourcegraph Services team.* @@ -16614,7 +16792,7 @@ sum by (le)(rate(src_gitserver_client_duration_seconds_bucket{job=~"^worker.*"} This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101502` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101602` on your Sourcegraph instance. *Managed by the Sourcegraph Services team.* @@ -16636,7 +16814,7 @@ sum(increase(src_gitserver_client_errors_total{job=~"^worker.*"}[5m])) This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101503` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101603` on your Sourcegraph instance. *Managed by the Sourcegraph Services team.* @@ -16658,7 +16836,7 @@ sum(increase(src_gitserver_client_errors_total{job=~"^worker.*"}[5m])) / (sum(in This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101510` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101610` on your Sourcegraph instance. *Managed by the Sourcegraph Services team.* @@ -16680,7 +16858,7 @@ sum by (op,scope)(increase(src_gitserver_client_total{job=~"^worker.*"}[5m])) This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101511` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101611` on your Sourcegraph instance. *Managed by the Sourcegraph Services team.* @@ -16702,7 +16880,7 @@ histogram_quantile(0.99, sum by (le,op,scope)(rate(src_gitserver_client_duratio This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101512` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101612` on your Sourcegraph instance. *Managed by the Sourcegraph Services team.* @@ -16724,7 +16902,7 @@ sum by (op,scope)(increase(src_gitserver_client_errors_total{job=~"^worker.*"}[5 This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101513` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101613` on your Sourcegraph instance. *Managed by the Sourcegraph Services team.* @@ -16748,7 +16926,7 @@ sum by (op,scope)(increase(src_gitserver_client_errors_total{job=~"^worker.*"}[5 This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101600` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101700` on your Sourcegraph instance. *Managed by the Sourcegraph Services team.* @@ -16770,7 +16948,7 @@ sum(increase(src_gitserver_repositoryservice_client_total{job=~"^worker.*"}[5m]) This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101601` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101701` on your Sourcegraph instance. *Managed by the Sourcegraph Services team.* @@ -16792,7 +16970,7 @@ sum by (le)(rate(src_gitserver_repositoryservice_client_duration_seconds_bucket This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101602` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101702` on your Sourcegraph instance. *Managed by the Sourcegraph Services team.* @@ -16814,7 +16992,7 @@ sum(increase(src_gitserver_repositoryservice_client_errors_total{job=~"^worker.* This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101603` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101703` on your Sourcegraph instance. *Managed by the Sourcegraph Services team.* @@ -16836,7 +17014,7 @@ sum(increase(src_gitserver_repositoryservice_client_errors_total{job=~"^worker.* This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101610` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101710` on your Sourcegraph instance. *Managed by the Sourcegraph Services team.* @@ -16858,7 +17036,7 @@ sum by (op,scope)(increase(src_gitserver_repositoryservice_client_total{job=~"^w This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101611` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101711` on your Sourcegraph instance. *Managed by the Sourcegraph Services team.* @@ -16880,7 +17058,7 @@ histogram_quantile(0.99, sum by (le,op,scope)(rate(src_gitserver_repositoryserv This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101612` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101712` on your Sourcegraph instance. *Managed by the Sourcegraph Services team.* @@ -16902,7 +17080,7 @@ sum by (op,scope)(increase(src_gitserver_repositoryservice_client_errors_total{j This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101613` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101713` on your Sourcegraph instance. *Managed by the Sourcegraph Services team.* @@ -16926,7 +17104,7 @@ sum by (op,scope)(increase(src_gitserver_repositoryservice_client_errors_total{j This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101700` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101800` on your Sourcegraph instance. *Managed by the Sourcegraph Code Plane team.* @@ -16948,7 +17126,7 @@ sum(increase(src_batches_dbstore_total{job=~"^worker.*"}[5m])) This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101701` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101801` on your Sourcegraph instance. *Managed by the Sourcegraph Code Plane team.* @@ -16970,7 +17148,7 @@ sum by (le)(rate(src_batches_dbstore_duration_seconds_bucket{job=~"^worker.*"}[ This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101702` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101802` on your Sourcegraph instance. *Managed by the Sourcegraph Code Plane team.* @@ -16992,7 +17170,7 @@ sum(increase(src_batches_dbstore_errors_total{job=~"^worker.*"}[5m])) This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101703` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101803` on your Sourcegraph instance. *Managed by the Sourcegraph Code Plane team.* @@ -17014,7 +17192,7 @@ sum(increase(src_batches_dbstore_errors_total{job=~"^worker.*"}[5m])) / (sum(inc This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101710` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101810` on your Sourcegraph instance. *Managed by the Sourcegraph Code Plane team.* @@ -17036,7 +17214,7 @@ sum by (op)(increase(src_batches_dbstore_total{job=~"^worker.*"}[5m])) This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101711` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101811` on your Sourcegraph instance. *Managed by the Sourcegraph Code Plane team.* @@ -17058,7 +17236,7 @@ histogram_quantile(0.99, sum by (le,op)(rate(src_batches_dbstore_duration_secon This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101712` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101812` on your Sourcegraph instance. *Managed by the Sourcegraph Code Plane team.* @@ -17080,7 +17258,7 @@ sum by (op)(increase(src_batches_dbstore_errors_total{job=~"^worker.*"}[5m])) This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101713` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101813` on your Sourcegraph instance. *Managed by the Sourcegraph Code Plane team.* @@ -17104,7 +17282,7 @@ sum by (op)(increase(src_batches_dbstore_errors_total{job=~"^worker.*"}[5m])) / This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101800` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101900` on your Sourcegraph instance. *Managed by the Sourcegraph Code Plane team.* @@ -17126,7 +17304,7 @@ sum(increase(src_batches_service_total{job=~"^worker.*"}[5m])) This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101801` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101901` on your Sourcegraph instance. *Managed by the Sourcegraph Code Plane team.* @@ -17148,7 +17326,7 @@ sum by (le)(rate(src_batches_service_duration_seconds_bucket{job=~"^worker.*"}[ This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101802` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101902` on your Sourcegraph instance. *Managed by the Sourcegraph Code Plane team.* @@ -17170,7 +17348,7 @@ sum(increase(src_batches_service_errors_total{job=~"^worker.*"}[5m])) This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101803` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101903` on your Sourcegraph instance. *Managed by the Sourcegraph Code Plane team.* @@ -17192,7 +17370,7 @@ sum(increase(src_batches_service_errors_total{job=~"^worker.*"}[5m])) / (sum(inc This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101810` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101910` on your Sourcegraph instance. *Managed by the Sourcegraph Code Plane team.* @@ -17214,7 +17392,7 @@ sum by (op)(increase(src_batches_service_total{job=~"^worker.*"}[5m])) This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101811` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101911` on your Sourcegraph instance. *Managed by the Sourcegraph Code Plane team.* @@ -17236,7 +17414,7 @@ histogram_quantile(0.99, sum by (le,op)(rate(src_batches_service_duration_secon This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101812` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101912` on your Sourcegraph instance. *Managed by the Sourcegraph Code Plane team.* @@ -17258,7 +17436,7 @@ sum by (op)(increase(src_batches_service_errors_total{job=~"^worker.*"}[5m])) This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101813` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101913` on your Sourcegraph instance. *Managed by the Sourcegraph Code Plane team.* @@ -17282,7 +17460,7 @@ sum by (op)(increase(src_batches_service_errors_total{job=~"^worker.*"}[5m])) / This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101900` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102000` on your Sourcegraph instance. *Managed by the Sourcegraph Code Plane team.* @@ -17304,7 +17482,7 @@ sum(src_query_runner_worker_processor_handlers{job=~"^worker.*"}) This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101910` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102010` on your Sourcegraph instance. *Managed by the Sourcegraph Code Plane team.* @@ -17326,7 +17504,7 @@ sum(increase(src_query_runner_worker_processor_total{job=~"^worker.*"}[5m])) This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101911` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102011` on your Sourcegraph instance. *Managed by the Sourcegraph Code Plane team.* @@ -17348,7 +17526,7 @@ sum by (le)(rate(src_query_runner_worker_processor_duration_seconds_bucket{job= This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101912` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102012` on your Sourcegraph instance. *Managed by the Sourcegraph Code Plane team.* @@ -17370,7 +17548,7 @@ sum(increase(src_query_runner_worker_processor_errors_total{job=~"^worker.*"}[5m This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=101913` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102013` on your Sourcegraph instance. *Managed by the Sourcegraph Code Plane team.* @@ -17394,7 +17572,7 @@ sum(increase(src_query_runner_worker_processor_errors_total{job=~"^worker.*"}[5m This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102000` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102100` on your Sourcegraph instance. *Managed by the Sourcegraph Code Plane team.* @@ -17416,7 +17594,7 @@ sum(increase(src_workerutil_dbworker_store_total{domain='insights_query_runner_j This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102001` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102101` on your Sourcegraph instance. *Managed by the Sourcegraph Code Plane team.* @@ -17438,7 +17616,7 @@ sum by (le)(rate(src_workerutil_dbworker_store_duration_seconds_bucket{domain=' This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102002` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102102` on your Sourcegraph instance. *Managed by the Sourcegraph Code Plane team.* @@ -17460,7 +17638,7 @@ sum(increase(src_workerutil_dbworker_store_errors_total{domain='insights_query_r This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102003` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102103` on your Sourcegraph instance. *Managed by the Sourcegraph Code Plane team.* @@ -17482,7 +17660,7 @@ sum(increase(src_workerutil_dbworker_store_errors_total{domain='insights_query_r This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102010` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102110` on your Sourcegraph instance. *Managed by the Sourcegraph Code Plane team.* @@ -17504,7 +17682,7 @@ sum by (op)(increase(src_workerutil_dbworker_store_total{domain='insights_query_ This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102011` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102111` on your Sourcegraph instance. *Managed by the Sourcegraph Code Plane team.* @@ -17526,7 +17704,7 @@ histogram_quantile(0.99, sum by (le,op)(rate(src_workerutil_dbworker_store_dura This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102012` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102112` on your Sourcegraph instance. *Managed by the Sourcegraph Code Plane team.* @@ -17548,7 +17726,7 @@ sum by (op)(increase(src_workerutil_dbworker_store_errors_total{domain='insights This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102013` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102113` on your Sourcegraph instance. *Managed by the Sourcegraph Code Plane team.* @@ -17575,7 +17753,7 @@ A value of 0 indicates the routine isn`t running currently, it awaits it`s next This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102100` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102200` on your Sourcegraph instance. *Managed by the Sourcegraph Platform team.* @@ -17600,7 +17778,7 @@ A low or zero value could indicate that a routine is stalled or encountering err This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102101` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102201` on your Sourcegraph instance. *Managed by the Sourcegraph Platform team.* @@ -17625,7 +17803,7 @@ A sustained high error rate may indicate a problem with the routine`s configurat Refer to the [alerts reference](alerts#worker-goroutine_error_rate) for 1 alert related to this panel. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102110` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102210` on your Sourcegraph instance. *Managed by the Sourcegraph Services team.* @@ -17650,7 +17828,7 @@ A value above 5% indicates that a significant portion of routine executions are Refer to the [alerts reference](alerts#worker-goroutine_error_percentage) for 1 alert related to this panel. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102111` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102211` on your Sourcegraph instance. *Managed by the Sourcegraph Services team.* @@ -17675,7 +17853,7 @@ Longer durations might indicate increased load or processing time. This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102120` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102220` on your Sourcegraph instance. *Managed by the Sourcegraph Platform team.* @@ -17700,7 +17878,7 @@ This represents how long a complete loop iteration takes before sleeping for the This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102121` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102221` on your Sourcegraph instance. *Managed by the Sourcegraph Platform team.* @@ -17725,7 +17903,7 @@ Higher values indicate that tenant processing is taking longer and may affect ov This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102130` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102230` on your Sourcegraph instance. *Managed by the Sourcegraph Platform team.* @@ -17750,7 +17928,7 @@ Consistently high values might indicate problematic tenants or inefficient proce This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102131` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102231` on your Sourcegraph instance. *Managed by the Sourcegraph Platform team.* @@ -17775,7 +17953,7 @@ Unexpected changes can indicate tenant configuration issues or scaling events. This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102140` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102240` on your Sourcegraph instance. *Managed by the Sourcegraph Platform team.* @@ -17800,7 +17978,7 @@ A healthy routine should maintain a consistent processing rate. This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102141` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102241` on your Sourcegraph instance. *Managed by the Sourcegraph Platform team.* @@ -17825,7 +18003,7 @@ Consistent errors indicate problems with specific tenants. This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102150` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102250` on your Sourcegraph instance. *Managed by the Sourcegraph Platform team.* @@ -17850,7 +18028,7 @@ Values above 5% indicate significant tenant processing problems. This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102151` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102251` on your Sourcegraph instance. *Managed by the Sourcegraph Platform team.* @@ -17874,7 +18052,7 @@ Query: This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102200` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102300` on your Sourcegraph instance. *Managed by the Sourcegraph Platform team.* @@ -17896,7 +18074,7 @@ sum by (app_name, db_name) (src_pgsql_conns_max_open{app_name="worker"}) This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102201` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102301` on your Sourcegraph instance. *Managed by the Sourcegraph Platform team.* @@ -17918,7 +18096,7 @@ sum by (app_name, db_name) (src_pgsql_conns_open{app_name="worker"}) This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102210` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102310` on your Sourcegraph instance. *Managed by the Sourcegraph Platform team.* @@ -17940,7 +18118,7 @@ sum by (app_name, db_name) (src_pgsql_conns_in_use{app_name="worker"}) This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102211` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102311` on your Sourcegraph instance. *Managed by the Sourcegraph Platform team.* @@ -17962,7 +18140,7 @@ sum by (app_name, db_name) (src_pgsql_conns_idle{app_name="worker"}) Refer to the [alerts reference](alerts#worker-mean_blocked_seconds_per_conn_request) for 2 alerts related to this panel. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102220` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102320` on your Sourcegraph instance. *Managed by the Sourcegraph Platform team.* @@ -17984,7 +18162,7 @@ sum by (app_name, db_name) (increase(src_pgsql_conns_blocked_seconds{app_name="w This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102230` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102330` on your Sourcegraph instance. *Managed by the Sourcegraph Platform team.* @@ -18006,7 +18184,7 @@ sum by (app_name, db_name) (increase(src_pgsql_conns_closed_max_idle{app_name="w This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102231` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102331` on your Sourcegraph instance. *Managed by the Sourcegraph Platform team.* @@ -18028,7 +18206,7 @@ sum by (app_name, db_name) (increase(src_pgsql_conns_closed_max_lifetime{app_nam This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102232` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102332` on your Sourcegraph instance. *Managed by the Sourcegraph Platform team.* @@ -18052,7 +18230,7 @@ sum by (app_name, db_name) (increase(src_pgsql_conns_closed_max_idle_time{app_na Refer to the [alerts reference](alerts#worker-cpu_usage_percentage) for 1 alert related to this panel. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102300` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102400` on your Sourcegraph instance. *Managed by the Sourcegraph Code Understanding team.* @@ -18076,7 +18254,7 @@ An estimate for the active memory in use, which includes anonymous memory, file This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102301` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102401` on your Sourcegraph instance. *Managed by the Sourcegraph Code Understanding team.* @@ -18100,7 +18278,7 @@ An estimate for the active memory in use in bytes, which includes anonymous memo This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102302` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102402` on your Sourcegraph instance. *Managed by the Sourcegraph Code Understanding team.* @@ -18124,7 +18302,7 @@ The total anonymous memory in use by the application, which includes Go stack an Refer to the [alerts reference](alerts#worker-memory_rss) for 1 alert related to this panel. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102310` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102410` on your Sourcegraph instance. *Managed by the Sourcegraph Code Understanding team.* @@ -18148,7 +18326,7 @@ This metric shows the total active file-backed memory currently in use by the ap This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102311` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102411` on your Sourcegraph instance. *Managed by the Sourcegraph Code Understanding team.* @@ -18172,7 +18350,7 @@ The kernel usage metric shows the amount of memory used by the kernel on behalf This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102312` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102412` on your Sourcegraph instance. *Managed by the Sourcegraph Code Understanding team.* @@ -18206,7 +18384,7 @@ value change independent of deployment events (such as an upgrade), it could ind This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102400` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102500` on your Sourcegraph instance. *Managed by the Sourcegraph Code Understanding team.* @@ -18228,7 +18406,7 @@ count by(name) ((time() - container_last_seen{name=~"^worker.*"}) > 60) Refer to the [alerts reference](alerts#worker-container_cpu_usage) for 1 alert related to this panel. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102401` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102501` on your Sourcegraph instance. *Managed by the Sourcegraph Code Understanding team.* @@ -18250,7 +18428,7 @@ cadvisor_container_cpu_usage_percentage_total{name=~"^worker.*"} Refer to the [alerts reference](alerts#worker-container_memory_usage) for 1 alert related to this panel. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102402` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102502` on your Sourcegraph instance. *Managed by the Sourcegraph Code Understanding team.* @@ -18275,7 +18453,7 @@ When extremely high, this can indicate a resource usage problem, or can cause pr This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102403` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102503` on your Sourcegraph instance. *Managed by the Sourcegraph Code Understanding team.* @@ -18299,7 +18477,7 @@ sum by(name) (rate(container_fs_reads_total{name=~"^worker.*"}[1h]) + rate(conta Refer to the [alerts reference](alerts#worker-provisioning_container_cpu_usage_long_term) for 1 alert related to this panel. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102500` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102600` on your Sourcegraph instance. *Managed by the Sourcegraph Code Plane team.* @@ -18321,7 +18499,7 @@ quantile_over_time(0.9, cadvisor_container_cpu_usage_percentage_total{name=~"^wo Refer to the [alerts reference](alerts#worker-provisioning_container_memory_usage_long_term) for 1 alert related to this panel. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102501` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102601` on your Sourcegraph instance. *Managed by the Sourcegraph Code Plane team.* @@ -18343,7 +18521,7 @@ max_over_time(cadvisor_container_memory_usage_percentage_total{name=~"^worker.*" Refer to the [alerts reference](alerts#worker-provisioning_container_cpu_usage_short_term) for 1 alert related to this panel. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102510` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102610` on your Sourcegraph instance. *Managed by the Sourcegraph Code Plane team.* @@ -18365,7 +18543,7 @@ max_over_time(cadvisor_container_cpu_usage_percentage_total{name=~"^worker.*"}[5 Refer to the [alerts reference](alerts#worker-provisioning_container_memory_usage_short_term) for 1 alert related to this panel. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102511` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102611` on your Sourcegraph instance. *Managed by the Sourcegraph Code Plane team.* @@ -18390,7 +18568,7 @@ When it occurs frequently, it is an indicator of underprovisioning. Refer to the [alerts reference](alerts#worker-container_oomkill_events_total) for 1 alert related to this panel. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102512` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102612` on your Sourcegraph instance. *Managed by the Sourcegraph Code Plane team.* @@ -18416,7 +18594,7 @@ A high value here indicates a possible goroutine leak. Refer to the [alerts reference](alerts#worker-go_goroutines) for 1 alert related to this panel. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102600` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102700` on your Sourcegraph instance. *Managed by the Sourcegraph Code Plane team.* @@ -18438,7 +18616,7 @@ max by(instance) (go_goroutines{job=~".*worker"}) Refer to the [alerts reference](alerts#worker-go_gc_duration_seconds) for 1 alert related to this panel. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102601` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102701` on your Sourcegraph instance. *Managed by the Sourcegraph Code Plane team.* @@ -18462,7 +18640,7 @@ max by(instance) (go_gc_duration_seconds{job=~".*worker"}) Refer to the [alerts reference](alerts#worker-pods_available_percentage) for 1 alert related to this panel. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102700` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102800` on your Sourcegraph instance. *Managed by the Sourcegraph Code Plane team.* @@ -18486,7 +18664,7 @@ sum by(app) (up{app=~".*worker"}) / count by (app) (up{app=~".*worker"}) * 100 This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102800` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102900` on your Sourcegraph instance. *Managed by the Sourcegraph Code Understanding team.* @@ -18508,7 +18686,7 @@ sum(increase(src_workerutil_dbworker_store_total{domain='own_background_worker_s This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102801` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102901` on your Sourcegraph instance. *Managed by the Sourcegraph Code Understanding team.* @@ -18530,7 +18708,7 @@ sum by (le)(rate(src_workerutil_dbworker_store_duration_seconds_bucket{domain=' This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102802` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102902` on your Sourcegraph instance. *Managed by the Sourcegraph Code Understanding team.* @@ -18552,7 +18730,7 @@ sum(increase(src_workerutil_dbworker_store_errors_total{domain='own_background_w This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102803` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102903` on your Sourcegraph instance. *Managed by the Sourcegraph Code Understanding team.* @@ -18574,7 +18752,7 @@ sum(increase(src_workerutil_dbworker_store_errors_total{domain='own_background_w This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102810` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102910` on your Sourcegraph instance. *Managed by the Sourcegraph Code Understanding team.* @@ -18596,7 +18774,7 @@ sum by (op)(increase(src_workerutil_dbworker_store_total{domain='own_background_ This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102811` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102911` on your Sourcegraph instance. *Managed by the Sourcegraph Code Understanding team.* @@ -18618,7 +18796,7 @@ histogram_quantile(0.99, sum by (le,op)(rate(src_workerutil_dbworker_store_dura This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102812` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102912` on your Sourcegraph instance. *Managed by the Sourcegraph Code Understanding team.* @@ -18640,7 +18818,7 @@ sum by (op)(increase(src_workerutil_dbworker_store_errors_total{domain='own_back This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102813` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102913` on your Sourcegraph instance. *Managed by the Sourcegraph Code Understanding team.* @@ -18664,7 +18842,7 @@ sum by (op)(increase(src_workerutil_dbworker_store_errors_total{domain='own_back This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102900` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=103000` on your Sourcegraph instance. *Managed by the Sourcegraph Code Plane team.* @@ -18686,7 +18864,7 @@ sum(src_own_background_worker_processor_handlers{job=~"^worker.*"}) This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102910` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=103010` on your Sourcegraph instance. *Managed by the Sourcegraph Code Plane team.* @@ -18708,7 +18886,7 @@ sum(increase(src_own_background_worker_processor_total{job=~"^worker.*"}[5m])) This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102911` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=103011` on your Sourcegraph instance. *Managed by the Sourcegraph Code Plane team.* @@ -18730,7 +18908,7 @@ sum by (le)(rate(src_own_background_worker_processor_duration_seconds_bucket{jo This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102912` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=103012` on your Sourcegraph instance. *Managed by the Sourcegraph Code Plane team.* @@ -18752,7 +18930,7 @@ sum(increase(src_own_background_worker_processor_errors_total{job=~"^worker.*"}[ This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=102913` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=103013` on your Sourcegraph instance. *Managed by the Sourcegraph Code Plane team.* @@ -18776,7 +18954,7 @@ sum(increase(src_own_background_worker_processor_errors_total{job=~"^worker.*"}[ This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=103000` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=103100` on your Sourcegraph instance. *Managed by the Sourcegraph Code Understanding team.* @@ -18798,7 +18976,7 @@ sum by (op)(increase(src_own_background_index_scheduler_total{job=~"^worker.*"}[ This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=103001` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=103101` on your Sourcegraph instance. *Managed by the Sourcegraph Code Understanding team.* @@ -18820,7 +18998,7 @@ histogram_quantile(0.99, sum by (le,op)(rate(src_own_background_index_scheduler This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=103002` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=103102` on your Sourcegraph instance. *Managed by the Sourcegraph Code Understanding team.* @@ -18842,7 +19020,7 @@ sum by (op)(increase(src_own_background_index_scheduler_errors_total{job=~"^work This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=103003` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=103103` on your Sourcegraph instance. *Managed by the Sourcegraph Code Understanding team.* @@ -18868,7 +19046,7 @@ The duration since the configuration client used by the "worker" service last su This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=103100` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=103200` on your Sourcegraph instance. *Managed by the Sourcegraph Platform team.* @@ -18890,7 +19068,7 @@ src_conf_client_time_since_last_successful_update_seconds{job=~`^worker.*`,insta Refer to the [alerts reference](alerts#worker-worker_site_configuration_duration_since_last_successful_update_by_instance) for 1 alert related to this panel. -To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=103101` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/worker/worker?viewPanel=103201` on your Sourcegraph instance. *Managed by the Sourcegraph Platform team.* @@ -20625,6 +20803,184 @@ sum by (op,parseAmount)(increase(src_codeintel_symbols_api_errors_total{job=~"^s
+### Searcher: Codeintel: Symbols object store + +#### searcher: sourcegraphobjects_symbol_indexes_total + +

Aggregate object store operations every 5m

+ +This panel has no related alerts. + +To see this panel, visit `/-/debug/grafana/d/searcher/searcher?viewPanel=100900` on your Sourcegraph instance. + +*Managed by the Sourcegraph Code Understanding team.* + +
+Technical details + +Query: + +``` +sum(increase(src_sourcegraphobjects_symbol_indexes_total{job=~"^searcher.*"}[5m])) +``` +
+ +
+ +#### searcher: sourcegraphobjects_symbol_indexes_99th_percentile_duration + +

Aggregate successful object store operation duration distribution over 5m

+ +This panel has no related alerts. + +To see this panel, visit `/-/debug/grafana/d/searcher/searcher?viewPanel=100901` on your Sourcegraph instance. + +*Managed by the Sourcegraph Code Understanding team.* + +
+Technical details + +Query: + +``` +sum by (le)(rate(src_sourcegraphobjects_symbol_indexes_duration_seconds_bucket{job=~"^searcher.*"}[5m])) +``` +
+ +
+ +#### searcher: sourcegraphobjects_symbol_indexes_errors_total + +

Aggregate object store operation errors every 5m

+ +This panel has no related alerts. + +To see this panel, visit `/-/debug/grafana/d/searcher/searcher?viewPanel=100902` on your Sourcegraph instance. + +*Managed by the Sourcegraph Code Understanding team.* + +
+Technical details + +Query: + +``` +sum(increase(src_sourcegraphobjects_symbol_indexes_errors_total{job=~"^searcher.*"}[5m])) +``` +
+ +
+ +#### searcher: sourcegraphobjects_symbol_indexes_error_rate + +

Aggregate object store operation error rate over 5m

+ +This panel has no related alerts. + +To see this panel, visit `/-/debug/grafana/d/searcher/searcher?viewPanel=100903` on your Sourcegraph instance. + +*Managed by the Sourcegraph Code Understanding team.* + +
+Technical details + +Query: + +``` +sum(increase(src_sourcegraphobjects_symbol_indexes_errors_total{job=~"^searcher.*"}[5m])) / (sum(increase(src_sourcegraphobjects_symbol_indexes_total{job=~"^searcher.*"}[5m])) + sum(increase(src_sourcegraphobjects_symbol_indexes_errors_total{job=~"^searcher.*"}[5m]))) * 100 +``` +
+ +
+ +#### searcher: sourcegraphobjects_symbol_indexes_total + +

Object store operations every 5m

+ +This panel has no related alerts. + +To see this panel, visit `/-/debug/grafana/d/searcher/searcher?viewPanel=100910` on your Sourcegraph instance. + +*Managed by the Sourcegraph Code Understanding team.* + +
+Technical details + +Query: + +``` +sum by (op)(increase(src_sourcegraphobjects_symbol_indexes_total{job=~"^searcher.*"}[5m])) +``` +
+ +
+ +#### searcher: sourcegraphobjects_symbol_indexes_99th_percentile_duration + +

99th percentile successful object store operation duration over 5m

+ +This panel has no related alerts. + +To see this panel, visit `/-/debug/grafana/d/searcher/searcher?viewPanel=100911` on your Sourcegraph instance. + +*Managed by the Sourcegraph Code Understanding team.* + +
+Technical details + +Query: + +``` +histogram_quantile(0.99, sum by (le,op)(rate(src_sourcegraphobjects_symbol_indexes_duration_seconds_bucket{job=~"^searcher.*"}[5m]))) +``` +
+ +
+ +#### searcher: sourcegraphobjects_symbol_indexes_errors_total + +

Object store operation errors every 5m

+ +This panel has no related alerts. + +To see this panel, visit `/-/debug/grafana/d/searcher/searcher?viewPanel=100912` on your Sourcegraph instance. + +*Managed by the Sourcegraph Code Understanding team.* + +
+Technical details + +Query: + +``` +sum by (op)(increase(src_sourcegraphobjects_symbol_indexes_errors_total{job=~"^searcher.*"}[5m])) +``` +
+ +
+ +#### searcher: sourcegraphobjects_symbol_indexes_error_rate + +

Object store operation error rate over 5m

+ +This panel has no related alerts. + +To see this panel, visit `/-/debug/grafana/d/searcher/searcher?viewPanel=100913` on your Sourcegraph instance. + +*Managed by the Sourcegraph Code Understanding team.* + +
+Technical details + +Query: + +``` +sum by (op)(increase(src_sourcegraphobjects_symbol_indexes_errors_total{job=~"^searcher.*"}[5m])) / (sum by (op)(increase(src_sourcegraphobjects_symbol_indexes_total{job=~"^searcher.*"}[5m])) + sum by (op)(increase(src_sourcegraphobjects_symbol_indexes_errors_total{job=~"^searcher.*"}[5m]))) * 100 +``` +
+ +
+ ### Searcher: Codeintel: Symbols parser #### searcher: searcher @@ -20633,7 +20989,7 @@ sum by (op,parseAmount)(increase(src_codeintel_symbols_api_errors_total{job=~"^s This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/searcher/searcher?viewPanel=100900` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/searcher/searcher?viewPanel=101000` on your Sourcegraph instance. *Managed by the Sourcegraph Code Understanding team.* @@ -20655,7 +21011,7 @@ max(src_codeintel_symbols_parsing{job=~"^searcher.*"}) This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/searcher/searcher?viewPanel=100901` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/searcher/searcher?viewPanel=101001` on your Sourcegraph instance. *Managed by the Sourcegraph Code Understanding team.* @@ -20677,7 +21033,7 @@ max(src_codeintel_symbols_parse_queue_size{job=~"^searcher.*"}) This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/searcher/searcher?viewPanel=100902` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/searcher/searcher?viewPanel=101002` on your Sourcegraph instance. *Managed by the Sourcegraph Code Understanding team.* @@ -20699,7 +21055,7 @@ max(src_codeintel_symbols_parse_queue_timeouts_total{job=~"^searcher.*"}) This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/searcher/searcher?viewPanel=100903` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/searcher/searcher?viewPanel=101003` on your Sourcegraph instance. *Managed by the Sourcegraph Code Understanding team.* @@ -20721,7 +21077,7 @@ rate(src_codeintel_symbols_parse_failed_total{job=~"^searcher.*"}[5m]) This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/searcher/searcher?viewPanel=100910` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/searcher/searcher?viewPanel=101010` on your Sourcegraph instance. *Managed by the Sourcegraph Code Understanding team.* @@ -20743,7 +21099,7 @@ sum(increase(src_codeintel_symbols_parser_total{job=~"^searcher.*"}[5m])) This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/searcher/searcher?viewPanel=100911` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/searcher/searcher?viewPanel=101011` on your Sourcegraph instance. *Managed by the Sourcegraph Code Understanding team.* @@ -20765,7 +21121,7 @@ sum by (le)(rate(src_codeintel_symbols_parser_duration_seconds_bucket{job=~"^se This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/searcher/searcher?viewPanel=100912` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/searcher/searcher?viewPanel=101012` on your Sourcegraph instance. *Managed by the Sourcegraph Code Understanding team.* @@ -20787,7 +21143,7 @@ sum(increase(src_codeintel_symbols_parser_errors_total{job=~"^searcher.*"}[5m])) This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/searcher/searcher?viewPanel=100913` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/searcher/searcher?viewPanel=101013` on your Sourcegraph instance. *Managed by the Sourcegraph Code Understanding team.* @@ -20809,7 +21165,7 @@ sum(increase(src_codeintel_symbols_parser_errors_total{job=~"^searcher.*"}[5m])) This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/searcher/searcher?viewPanel=100920` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/searcher/searcher?viewPanel=101020` on your Sourcegraph instance. *Managed by the Sourcegraph Code Understanding team.* @@ -20831,7 +21187,7 @@ sum by (op)(increase(src_codeintel_symbols_parser_total{job=~"^searcher.*"}[5m]) This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/searcher/searcher?viewPanel=100921` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/searcher/searcher?viewPanel=101021` on your Sourcegraph instance. *Managed by the Sourcegraph Code Understanding team.* @@ -20853,7 +21209,7 @@ histogram_quantile(0.99, sum by (le,op)(rate(src_codeintel_symbols_parser_durat This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/searcher/searcher?viewPanel=100922` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/searcher/searcher?viewPanel=101022` on your Sourcegraph instance. *Managed by the Sourcegraph Code Understanding team.* @@ -20875,7 +21231,7 @@ sum by (op)(increase(src_codeintel_symbols_parser_errors_total{job=~"^searcher.* This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/searcher/searcher?viewPanel=100923` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/searcher/searcher?viewPanel=101023` on your Sourcegraph instance. *Managed by the Sourcegraph Code Understanding team.* @@ -20901,7 +21257,7 @@ no This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/searcher/searcher?viewPanel=101000` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/searcher/searcher?viewPanel=101100` on your Sourcegraph instance. *Managed by the Sourcegraph Code Understanding team.* @@ -20925,7 +21281,7 @@ no This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/searcher/searcher?viewPanel=101001` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/searcher/searcher?viewPanel=101101` on your Sourcegraph instance. *Managed by the Sourcegraph Code Understanding team.* @@ -20949,7 +21305,7 @@ no This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/searcher/searcher?viewPanel=101002` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/searcher/searcher?viewPanel=101102` on your Sourcegraph instance. *Managed by the Sourcegraph Code Understanding team.* @@ -20973,7 +21329,7 @@ rate(src_diskcache_store_symbols_errors_total[5m]) This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/searcher/searcher?viewPanel=101100` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/searcher/searcher?viewPanel=101200` on your Sourcegraph instance. *Managed by the Sourcegraph Code Understanding team.* @@ -20995,7 +21351,7 @@ src_codeintel_symbols_fetching This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/searcher/searcher?viewPanel=101101` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/searcher/searcher?viewPanel=101201` on your Sourcegraph instance. *Managed by the Sourcegraph Code Understanding team.* @@ -21017,7 +21373,7 @@ max(src_codeintel_symbols_fetch_queue_size{job=~"^searcher.*"}) This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/searcher/searcher?viewPanel=101110` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/searcher/searcher?viewPanel=101210` on your Sourcegraph instance. *Managed by the Sourcegraph Code Understanding team.* @@ -21039,7 +21395,7 @@ sum(increase(src_codeintel_symbols_repository_fetcher_total{job=~"^searcher.*"}[ This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/searcher/searcher?viewPanel=101111` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/searcher/searcher?viewPanel=101211` on your Sourcegraph instance. *Managed by the Sourcegraph Code Understanding team.* @@ -21061,7 +21417,7 @@ sum by (le)(rate(src_codeintel_symbols_repository_fetcher_duration_seconds_buck This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/searcher/searcher?viewPanel=101112` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/searcher/searcher?viewPanel=101212` on your Sourcegraph instance. *Managed by the Sourcegraph Code Understanding team.* @@ -21083,7 +21439,7 @@ sum(increase(src_codeintel_symbols_repository_fetcher_errors_total{job=~"^search This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/searcher/searcher?viewPanel=101113` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/searcher/searcher?viewPanel=101213` on your Sourcegraph instance. *Managed by the Sourcegraph Code Understanding team.* @@ -21105,7 +21461,7 @@ sum(increase(src_codeintel_symbols_repository_fetcher_errors_total{job=~"^search This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/searcher/searcher?viewPanel=101120` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/searcher/searcher?viewPanel=101220` on your Sourcegraph instance. *Managed by the Sourcegraph Code Understanding team.* @@ -21127,7 +21483,7 @@ sum by (op)(increase(src_codeintel_symbols_repository_fetcher_total{job=~"^searc This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/searcher/searcher?viewPanel=101121` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/searcher/searcher?viewPanel=101221` on your Sourcegraph instance. *Managed by the Sourcegraph Code Understanding team.* @@ -21149,7 +21505,7 @@ histogram_quantile(0.99, sum by (le,op)(rate(src_codeintel_symbols_repository_f This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/searcher/searcher?viewPanel=101122` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/searcher/searcher?viewPanel=101222` on your Sourcegraph instance. *Managed by the Sourcegraph Code Understanding team.* @@ -21171,7 +21527,7 @@ sum by (op)(increase(src_codeintel_symbols_repository_fetcher_errors_total{job=~ This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/searcher/searcher?viewPanel=101123` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/searcher/searcher?viewPanel=101223` on your Sourcegraph instance. *Managed by the Sourcegraph Code Understanding team.* @@ -21195,7 +21551,7 @@ sum by (op)(increase(src_codeintel_symbols_repository_fetcher_errors_total{job=~ This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/searcher/searcher?viewPanel=101200` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/searcher/searcher?viewPanel=101300` on your Sourcegraph instance. *Managed by the Sourcegraph Code Understanding team.* @@ -21217,7 +21573,7 @@ sum(increase(src_codeintel_symbols_gitserver_total{job=~"^searcher.*"}[5m])) This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/searcher/searcher?viewPanel=101201` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/searcher/searcher?viewPanel=101301` on your Sourcegraph instance. *Managed by the Sourcegraph Code Understanding team.* @@ -21239,7 +21595,7 @@ sum by (le)(rate(src_codeintel_symbols_gitserver_duration_seconds_bucket{job=~" This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/searcher/searcher?viewPanel=101202` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/searcher/searcher?viewPanel=101302` on your Sourcegraph instance. *Managed by the Sourcegraph Code Understanding team.* @@ -21261,7 +21617,7 @@ sum(increase(src_codeintel_symbols_gitserver_errors_total{job=~"^searcher.*"}[5m This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/searcher/searcher?viewPanel=101203` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/searcher/searcher?viewPanel=101303` on your Sourcegraph instance. *Managed by the Sourcegraph Code Understanding team.* @@ -21283,7 +21639,7 @@ sum(increase(src_codeintel_symbols_gitserver_errors_total{job=~"^searcher.*"}[5m This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/searcher/searcher?viewPanel=101210` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/searcher/searcher?viewPanel=101310` on your Sourcegraph instance. *Managed by the Sourcegraph Code Understanding team.* @@ -21305,7 +21661,7 @@ sum by (op)(increase(src_codeintel_symbols_gitserver_total{job=~"^searcher.*"}[5 This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/searcher/searcher?viewPanel=101211` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/searcher/searcher?viewPanel=101311` on your Sourcegraph instance. *Managed by the Sourcegraph Code Understanding team.* @@ -21327,7 +21683,7 @@ histogram_quantile(0.99, sum by (le,op)(rate(src_codeintel_symbols_gitserver_du This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/searcher/searcher?viewPanel=101212` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/searcher/searcher?viewPanel=101312` on your Sourcegraph instance. *Managed by the Sourcegraph Code Understanding team.* @@ -21349,7 +21705,7 @@ sum by (op)(increase(src_codeintel_symbols_gitserver_errors_total{job=~"^searche This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/searcher/searcher?viewPanel=101213` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/searcher/searcher?viewPanel=101313` on your Sourcegraph instance. *Managed by the Sourcegraph Code Understanding team.* @@ -21375,7 +21731,7 @@ The 95th percentile duration of search requests to Rockskip in seconds. Lower is This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/searcher/searcher?viewPanel=101300` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/searcher/searcher?viewPanel=101400` on your Sourcegraph instance. *Managed by the Sourcegraph Code Understanding team.* @@ -21401,7 +21757,7 @@ The number of search requests currently being processed by Rockskip. This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/searcher/searcher?viewPanel=101301` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/searcher/searcher?viewPanel=101401` on your Sourcegraph instance. *Managed by the Sourcegraph Code Understanding team.* @@ -21427,7 +21783,7 @@ The number of search requests that returned an error in the last 5 minutes. This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/searcher/searcher?viewPanel=101302` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/searcher/searcher?viewPanel=101402` on your Sourcegraph instance. *Managed by the Sourcegraph Code Understanding team.* @@ -21453,7 +21809,7 @@ The 95th percentile duration of index jobs in seconds. This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/searcher/searcher?viewPanel=101310` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/searcher/searcher?viewPanel=101410` on your Sourcegraph instance. *Managed by the Sourcegraph Code Understanding team.* @@ -21478,7 +21834,7 @@ The number of index jobs currently being processed by Rockskip. This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/searcher/searcher?viewPanel=101311` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/searcher/searcher?viewPanel=101411` on your Sourcegraph instance. *Managed by the Sourcegraph Code Understanding team.* @@ -21505,7 +21861,7 @@ The number of index jobs that returned an error in the last 5 minutes. This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/searcher/searcher?viewPanel=101312` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/searcher/searcher?viewPanel=101412` on your Sourcegraph instance. *Managed by the Sourcegraph Code Understanding team.* @@ -21532,7 +21888,7 @@ The number of repositories indexed by Rockskip. This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/searcher/searcher?viewPanel=101320` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/searcher/searcher?viewPanel=101420` on your Sourcegraph instance. *Managed by the Sourcegraph Code Understanding team.* @@ -21558,7 +21914,7 @@ The 95th percentile age of index jobs in seconds. This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/searcher/searcher?viewPanel=101321` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/searcher/searcher?viewPanel=101421` on your Sourcegraph instance. *Managed by the Sourcegraph Code Understanding team.* @@ -21583,7 +21939,7 @@ The number of search requests in the last 5 minutes that were handled by parsing This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/searcher/searcher?viewPanel=101322` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/searcher/searcher?viewPanel=101422` on your Sourcegraph instance. *Managed by the Sourcegraph Code Understanding team.* @@ -21609,7 +21965,7 @@ The duration since the configuration client used by the "searcher" service last This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/searcher/searcher?viewPanel=101400` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/searcher/searcher?viewPanel=101500` on your Sourcegraph instance. *Managed by the Sourcegraph Platform team.* @@ -21631,7 +21987,7 @@ src_conf_client_time_since_last_successful_update_seconds{job=~`.*searcher`,inst Refer to the [alerts reference](alerts#searcher-searcher_site_configuration_duration_since_last_successful_update_by_instance) for 1 alert related to this panel. -To see this panel, visit `/-/debug/grafana/d/searcher/searcher?viewPanel=101401` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/searcher/searcher?viewPanel=101501` on your Sourcegraph instance. *Managed by the Sourcegraph Platform team.* @@ -21658,7 +22014,7 @@ A value of 0 indicates the routine isn`t running currently, it awaits it`s next This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/searcher/searcher?viewPanel=101500` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/searcher/searcher?viewPanel=101600` on your Sourcegraph instance. *Managed by the Sourcegraph Platform team.* @@ -21683,7 +22039,7 @@ A low or zero value could indicate that a routine is stalled or encountering err This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/searcher/searcher?viewPanel=101501` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/searcher/searcher?viewPanel=101601` on your Sourcegraph instance. *Managed by the Sourcegraph Platform team.* @@ -21708,7 +22064,7 @@ A sustained high error rate may indicate a problem with the routine`s configurat Refer to the [alerts reference](alerts#searcher-goroutine_error_rate) for 1 alert related to this panel. -To see this panel, visit `/-/debug/grafana/d/searcher/searcher?viewPanel=101510` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/searcher/searcher?viewPanel=101610` on your Sourcegraph instance. *Managed by the Sourcegraph Services team.* @@ -21733,7 +22089,7 @@ A value above 5% indicates that a significant portion of routine executions are Refer to the [alerts reference](alerts#searcher-goroutine_error_percentage) for 1 alert related to this panel. -To see this panel, visit `/-/debug/grafana/d/searcher/searcher?viewPanel=101511` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/searcher/searcher?viewPanel=101611` on your Sourcegraph instance. *Managed by the Sourcegraph Services team.* @@ -21758,7 +22114,7 @@ Longer durations might indicate increased load or processing time. This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/searcher/searcher?viewPanel=101520` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/searcher/searcher?viewPanel=101620` on your Sourcegraph instance. *Managed by the Sourcegraph Platform team.* @@ -21783,7 +22139,7 @@ This represents how long a complete loop iteration takes before sleeping for the This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/searcher/searcher?viewPanel=101521` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/searcher/searcher?viewPanel=101621` on your Sourcegraph instance. *Managed by the Sourcegraph Platform team.* @@ -21808,7 +22164,7 @@ Higher values indicate that tenant processing is taking longer and may affect ov This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/searcher/searcher?viewPanel=101530` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/searcher/searcher?viewPanel=101630` on your Sourcegraph instance. *Managed by the Sourcegraph Platform team.* @@ -21833,7 +22189,7 @@ Consistently high values might indicate problematic tenants or inefficient proce This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/searcher/searcher?viewPanel=101531` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/searcher/searcher?viewPanel=101631` on your Sourcegraph instance. *Managed by the Sourcegraph Platform team.* @@ -21858,7 +22214,7 @@ Unexpected changes can indicate tenant configuration issues or scaling events. This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/searcher/searcher?viewPanel=101540` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/searcher/searcher?viewPanel=101640` on your Sourcegraph instance. *Managed by the Sourcegraph Platform team.* @@ -21883,7 +22239,7 @@ A healthy routine should maintain a consistent processing rate. This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/searcher/searcher?viewPanel=101541` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/searcher/searcher?viewPanel=101641` on your Sourcegraph instance. *Managed by the Sourcegraph Platform team.* @@ -21908,7 +22264,7 @@ Consistent errors indicate problems with specific tenants. This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/searcher/searcher?viewPanel=101550` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/searcher/searcher?viewPanel=101650` on your Sourcegraph instance. *Managed by the Sourcegraph Platform team.* @@ -21933,7 +22289,7 @@ Values above 5% indicate significant tenant processing problems. This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/searcher/searcher?viewPanel=101551` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/searcher/searcher?viewPanel=101651` on your Sourcegraph instance. *Managed by the Sourcegraph Platform team.* @@ -21957,7 +22313,7 @@ Query: This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/searcher/searcher?viewPanel=101600` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/searcher/searcher?viewPanel=101700` on your Sourcegraph instance. *Managed by the Sourcegraph Code Understanding team.* @@ -21979,7 +22335,7 @@ sum by (app_name, db_name) (src_pgsql_conns_max_open{app_name="searcher"}) This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/searcher/searcher?viewPanel=101601` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/searcher/searcher?viewPanel=101701` on your Sourcegraph instance. *Managed by the Sourcegraph Code Understanding team.* @@ -22001,7 +22357,7 @@ sum by (app_name, db_name) (src_pgsql_conns_open{app_name="searcher"}) This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/searcher/searcher?viewPanel=101610` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/searcher/searcher?viewPanel=101710` on your Sourcegraph instance. *Managed by the Sourcegraph Code Understanding team.* @@ -22023,7 +22379,7 @@ sum by (app_name, db_name) (src_pgsql_conns_in_use{app_name="searcher"}) This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/searcher/searcher?viewPanel=101611` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/searcher/searcher?viewPanel=101711` on your Sourcegraph instance. *Managed by the Sourcegraph Code Understanding team.* @@ -22045,7 +22401,7 @@ sum by (app_name, db_name) (src_pgsql_conns_idle{app_name="searcher"}) Refer to the [alerts reference](alerts#searcher-mean_blocked_seconds_per_conn_request) for 2 alerts related to this panel. -To see this panel, visit `/-/debug/grafana/d/searcher/searcher?viewPanel=101620` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/searcher/searcher?viewPanel=101720` on your Sourcegraph instance. *Managed by the Sourcegraph Code Understanding team.* @@ -22067,7 +22423,7 @@ sum by (app_name, db_name) (increase(src_pgsql_conns_blocked_seconds{app_name="s This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/searcher/searcher?viewPanel=101630` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/searcher/searcher?viewPanel=101730` on your Sourcegraph instance. *Managed by the Sourcegraph Code Understanding team.* @@ -22089,7 +22445,7 @@ sum by (app_name, db_name) (increase(src_pgsql_conns_closed_max_idle{app_name="s This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/searcher/searcher?viewPanel=101631` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/searcher/searcher?viewPanel=101731` on your Sourcegraph instance. *Managed by the Sourcegraph Code Understanding team.* @@ -22111,7 +22467,7 @@ sum by (app_name, db_name) (increase(src_pgsql_conns_closed_max_lifetime{app_nam This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/searcher/searcher?viewPanel=101632` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/searcher/searcher?viewPanel=101732` on your Sourcegraph instance. *Managed by the Sourcegraph Code Understanding team.* @@ -22135,7 +22491,7 @@ sum by (app_name, db_name) (increase(src_pgsql_conns_closed_max_idle_time{app_na Refer to the [alerts reference](alerts#searcher-cpu_usage_percentage) for 1 alert related to this panel. -To see this panel, visit `/-/debug/grafana/d/searcher/searcher?viewPanel=101700` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/searcher/searcher?viewPanel=101800` on your Sourcegraph instance. *Managed by the Sourcegraph Code Understanding team.* @@ -22159,7 +22515,7 @@ An estimate for the active memory in use, which includes anonymous memory, file This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/searcher/searcher?viewPanel=101701` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/searcher/searcher?viewPanel=101801` on your Sourcegraph instance. *Managed by the Sourcegraph Code Understanding team.* @@ -22183,7 +22539,7 @@ An estimate for the active memory in use in bytes, which includes anonymous memo This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/searcher/searcher?viewPanel=101702` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/searcher/searcher?viewPanel=101802` on your Sourcegraph instance. *Managed by the Sourcegraph Code Understanding team.* @@ -22207,7 +22563,7 @@ The total anonymous memory in use by the application, which includes Go stack an Refer to the [alerts reference](alerts#searcher-memory_rss) for 1 alert related to this panel. -To see this panel, visit `/-/debug/grafana/d/searcher/searcher?viewPanel=101710` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/searcher/searcher?viewPanel=101810` on your Sourcegraph instance. *Managed by the Sourcegraph Code Understanding team.* @@ -22231,7 +22587,7 @@ This metric shows the total active file-backed memory currently in use by the ap This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/searcher/searcher?viewPanel=101711` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/searcher/searcher?viewPanel=101811` on your Sourcegraph instance. *Managed by the Sourcegraph Code Understanding team.* @@ -22255,7 +22611,7 @@ The kernel usage metric shows the amount of memory used by the kernel on behalf This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/searcher/searcher?viewPanel=101712` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/searcher/searcher?viewPanel=101812` on your Sourcegraph instance. *Managed by the Sourcegraph Code Understanding team.* @@ -22289,7 +22645,7 @@ value change independent of deployment events (such as an upgrade), it could ind This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/searcher/searcher?viewPanel=101800` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/searcher/searcher?viewPanel=101900` on your Sourcegraph instance. *Managed by the Sourcegraph Code Understanding team.* @@ -22311,7 +22667,7 @@ count by(name) ((time() - container_last_seen{name=~"^searcher.*"}) > 60) Refer to the [alerts reference](alerts#searcher-container_cpu_usage) for 1 alert related to this panel. -To see this panel, visit `/-/debug/grafana/d/searcher/searcher?viewPanel=101801` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/searcher/searcher?viewPanel=101901` on your Sourcegraph instance. *Managed by the Sourcegraph Code Understanding team.* @@ -22333,7 +22689,7 @@ cadvisor_container_cpu_usage_percentage_total{name=~"^searcher.*"} Refer to the [alerts reference](alerts#searcher-container_memory_usage) for 1 alert related to this panel. -To see this panel, visit `/-/debug/grafana/d/searcher/searcher?viewPanel=101802` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/searcher/searcher?viewPanel=101902` on your Sourcegraph instance. *Managed by the Sourcegraph Code Understanding team.* @@ -22358,7 +22714,7 @@ When extremely high, this can indicate a resource usage problem, or can cause pr This panel has no related alerts. -To see this panel, visit `/-/debug/grafana/d/searcher/searcher?viewPanel=101803` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/searcher/searcher?viewPanel=101903` on your Sourcegraph instance. *Managed by the Sourcegraph Code Understanding team.* @@ -22382,7 +22738,7 @@ sum by(name) (rate(container_fs_reads_total{name=~"^searcher.*"}[1h]) + rate(con Refer to the [alerts reference](alerts#searcher-provisioning_container_cpu_usage_long_term) for 1 alert related to this panel. -To see this panel, visit `/-/debug/grafana/d/searcher/searcher?viewPanel=101900` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/searcher/searcher?viewPanel=102000` on your Sourcegraph instance. *Managed by the Sourcegraph Code Understanding team.* @@ -22404,7 +22760,7 @@ quantile_over_time(0.9, cadvisor_container_cpu_usage_percentage_total{name=~"^se Refer to the [alerts reference](alerts#searcher-provisioning_container_memory_usage_long_term) for 1 alert related to this panel. -To see this panel, visit `/-/debug/grafana/d/searcher/searcher?viewPanel=101901` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/searcher/searcher?viewPanel=102001` on your Sourcegraph instance. *Managed by the Sourcegraph Code Understanding team.* @@ -22426,7 +22782,7 @@ max_over_time(cadvisor_container_memory_usage_percentage_total{name=~"^searcher. Refer to the [alerts reference](alerts#searcher-provisioning_container_cpu_usage_short_term) for 1 alert related to this panel. -To see this panel, visit `/-/debug/grafana/d/searcher/searcher?viewPanel=101910` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/searcher/searcher?viewPanel=102010` on your Sourcegraph instance. *Managed by the Sourcegraph Code Understanding team.* @@ -22448,7 +22804,7 @@ max_over_time(cadvisor_container_cpu_usage_percentage_total{name=~"^searcher.*"} Refer to the [alerts reference](alerts#searcher-provisioning_container_memory_usage_short_term) for 1 alert related to this panel. -To see this panel, visit `/-/debug/grafana/d/searcher/searcher?viewPanel=101911` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/searcher/searcher?viewPanel=102011` on your Sourcegraph instance. *Managed by the Sourcegraph Code Understanding team.* @@ -22473,7 +22829,7 @@ When it occurs frequently, it is an indicator of underprovisioning. Refer to the [alerts reference](alerts#searcher-container_oomkill_events_total) for 1 alert related to this panel. -To see this panel, visit `/-/debug/grafana/d/searcher/searcher?viewPanel=101912` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/searcher/searcher?viewPanel=102012` on your Sourcegraph instance. *Managed by the Sourcegraph Code Understanding team.* @@ -22499,7 +22855,7 @@ A high value here indicates a possible goroutine leak. Refer to the [alerts reference](alerts#searcher-go_goroutines) for 1 alert related to this panel. -To see this panel, visit `/-/debug/grafana/d/searcher/searcher?viewPanel=102000` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/searcher/searcher?viewPanel=102100` on your Sourcegraph instance. *Managed by the Sourcegraph Code Understanding team.* @@ -22521,7 +22877,7 @@ max by(instance) (go_goroutines{job=~".*searcher"}) Refer to the [alerts reference](alerts#searcher-go_gc_duration_seconds) for 1 alert related to this panel. -To see this panel, visit `/-/debug/grafana/d/searcher/searcher?viewPanel=102001` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/searcher/searcher?viewPanel=102101` on your Sourcegraph instance. *Managed by the Sourcegraph Code Understanding team.* @@ -22545,7 +22901,7 @@ max by(instance) (go_gc_duration_seconds{job=~".*searcher"}) Refer to the [alerts reference](alerts#searcher-pods_available_percentage) for 1 alert related to this panel. -To see this panel, visit `/-/debug/grafana/d/searcher/searcher?viewPanel=102100` on your Sourcegraph instance. +To see this panel, visit `/-/debug/grafana/d/searcher/searcher?viewPanel=102200` on your Sourcegraph instance. *Managed by the Sourcegraph Code Understanding team.* @@ -26272,7 +26628,7 @@ sum by(job) (scrape_samples_post_metric_relabeling{job!=""}) A high value here indicates Prometheus rule evaluation is taking longer than expected. It might indicate that certain rule groups are taking too long to evaluate, or Prometheus is underprovisioned. -Rules that Sourcegraph ships with are grouped under `/sg_config_prometheus`. [Custom rules are grouped under `/sg_prometheus_addons`](/self-hosted/observability/metrics#prometheus-configuration). +Rules that Sourcegraph ships with are grouped under `/sg_config_prometheus`. [Custom rules are grouped under `/sg_prometheus_addons`](https://sourcegraph.com/docs/admin/observability/metrics#prometheus-configuration). Refer to the [alerts reference](alerts#prometheus-prometheus_rule_eval_duration) for 1 alert related to this panel. @@ -26296,7 +26652,7 @@ sum by(rule_group) (avg_over_time(prometheus_rule_group_last_duration_seconds[10

Failed prometheus rule evaluations over 5m by rule group

-Rules that Sourcegraph ships with are grouped under `/sg_config_prometheus`. [Custom rules are grouped under `/sg_prometheus_addons`](/self-hosted/observability/metrics#prometheus-configuration). +Rules that Sourcegraph ships with are grouped under `/sg_config_prometheus`. [Custom rules are grouped under `/sg_prometheus_addons`](https://sourcegraph.com/docs/admin/observability/metrics#prometheus-configuration). Refer to the [alerts reference](alerts#prometheus-prometheus_rule_eval_failures) for 1 alert related to this panel. @@ -37005,9 +37361,9 @@ sum(src_batch_change_agent_wake_handlers) #### batch-change-agents: batch_change_agent_wake_processing_rate -

Wake jobs processed per minute

+

Wake job outcomes per minute

-Rate of successfully processed wake jobs that re-activate idle threads with unread inbox items. +Rate of wake jobs by result: woken created an automated turn, empty found no unread items, busy scheduled another attempt, and gone found that the agent or thread no longer exists. This panel has no related alerts. @@ -37021,7 +37377,7 @@ To see this panel, visit `/-/debug/grafana/d/batch-change-agents/batch-change-ag Query: ``` -sum(rate(src_batch_change_agent_wake_total{op="Handle"}[5m])) * 60 +sum by (outcome) (rate(src_batch_change_agent_wake_outcomes_total[5m])) * 60 ``` From ab14b15c0606156c948f3d9a25416672253435e1 Mon Sep 17 00:00:00 2001 From: Daniel Marques Date: Mon, 14 Sep 2026 13:48:38 +0100 Subject: [PATCH 215/217] docs: prepare Agentic Batch Changes documentation for GA (#1958) Updates the Agentic Batch Changes guide for GA and splits it into Getting started, Writing prompts, and Configuration and administration. Keeps the existing prompt examples and incorporates the documentation review feedback and code-backed clarifications. The guide distinguishes CI status reporting from log access and repair hooks, explains rollout revisions and merging, and clarifies guidance scope, secrets, ownership, and web-search controls. It omits internal agent-management details and customer-provided model credentials that are not offered at GA. Also updates sidebar navigation and the orb preview service configuration used to review these pages. ## Validation - `pnpm check`: no dead page links, filename violations, or raw image tags. - `pnpm exec prettier --check docs/agentic-batch-changes/*.mdx`: passed. - `git diff --check origin/main...HEAD`: passed. - All three pages returned HTTP 200 during local preview checks; rendered pages, navigation, and affected sections were inspected. - Live-link verification against the branch merge base: both detected changed links resolve. This check does not cover every link added by the page split. - No production build was run. | Link target on the branch preview | Page rendered | Anchor found | | --- | --- | --- | | [/deep-search](https://sourcegraph-docs-git-docs-agentic-b-d7ea61-sourcegraph-f8c71130.vercel.app/deep-search) | Yes | Not applicable | | [/agentic-batch-changes/writing-prompts#during-the-conversation](https://sourcegraph-docs-git-docs-agentic-b-d7ea61-sourcegraph-f8c71130.vercel.app/agentic-batch-changes/writing-prompts#during-the-conversation) | Yes | Yes | --------- Co-authored-by: Amp --- .amp/services.yaml | 14 +- cspell-allow-list.txt | 2 + docs/agentic-batch-changes/configuration.mdx | 157 ++++++++++++++++++ docs/agentic-batch-changes/index.mdx | 124 ++++---------- .../agentic-batch-changes/writing-prompts.mdx | 86 ++++++++++ src/data/navigation.ts | 16 +- 6 files changed, 302 insertions(+), 97 deletions(-) create mode 100644 docs/agentic-batch-changes/configuration.mdx create mode 100644 docs/agentic-batch-changes/writing-prompts.mdx diff --git a/.amp/services.yaml b/.amp/services.yaml index 21f5955f3..87e947eb5 100644 --- a/.amp/services.yaml +++ b/.amp/services.yaml @@ -1,6 +1,10 @@ services: - docs: - command: pnpm dev --hostname 0.0.0.0 --port "$PORT" - portal: - url: / - title: Sourcegraph Docs + docs: + command: pnpm dev --hostname 0.0.0.0 + port: 31420 + env: + NODE_OPTIONS: --max-old-space-size=3072 + health: /agentic-batch-changes + portal: + url: /agentic-batch-changes + title: Sourcegraph Docs diff --git a/cspell-allow-list.txt b/cspell-allow-list.txt index 4df15e327..abe1a0e1a 100644 --- a/cspell-allow-list.txt +++ b/cspell-allow-list.txt @@ -293,6 +293,7 @@ lefthand Leste letsencrypt libsecret +lockfiles logfmt logpush logtost @@ -319,6 +320,7 @@ mpim multiplicatively multiqueue multiversion +mvnw mycompany myconfig mydockerhub diff --git a/docs/agentic-batch-changes/configuration.mdx b/docs/agentic-batch-changes/configuration.mdx new file mode 100644 index 000000000..3fa27cbec --- /dev/null +++ b/docs/agentic-batch-changes/configuration.mdx @@ -0,0 +1,157 @@ +# Configuration and administration + +## Customizing the agent + +The agent discovers a lot on its own through Deep Search: which package manager a repository uses, how CI is wired, and where similar migrations have been done before. But internal policies may not be written in the code: which base images you allow, how you name branches, which approvals a dependency bump needs, or what a good commit message looks like in your organization. + +You can add guidance on the **Agents** page of your Batch Changes settings, at `/users//settings/batch-changes/agents`. Site administrators add instance-wide guidance at `/admin/batch-changes/agents`, and organizations can carry shared guidance in their settings. Entries from all three levels combine. + +### Guidance and skills + +Guidance and skills configured here apply only to the coordinating agent you talk to directly, which researches your codebase, writes the plan, and manages the rollout. + +**Guidance** is [`AGENTS.md`](https://agents.md)-style text the agent sees on every run, before it reads your first message. Use it for rules that should always apply: house style, forbidden actions, default tools, and how to phrase changeset descriptions. Keep it short. Everything in guidance competes for the agent's attention on every turn, and the combined guidance is truncated at 32 KiB. + +A [**skill**](https://agentskills.io) is a named document the agent loads on demand when a task matches its description. Skills suit procedures that only matter some of the time: how to run your internal CI, how to upgrade a particular framework, or how your monorepo is laid out. A skill's content only uses context when it is loaded. + +Repository-backed skills can include supporting files, such as references, assets, or scripts. The coordinating agent can read these files when their source is accessible, but it does not execute bundled scripts directly. To run code, it must put that work in an execution step. + +### Loading guidance from a repository + +To load repository-backed guidance or skills, configure a repository source in your **Agents** settings. The coordinating agent reads these configured sources; it does not automatically load guidance from every repository in the batch change. + +The source repository must be available through Sourcegraph, but it does not need to be search-indexed. The agent reads the configured source path on the selected branch. If no branch is specified, it uses the repository's default branch. + +Keeping guidance in a repository lets changes go through code review and lets teams share guidance without sharing settings. The agent reloads configured sources when it processes a message, so changes on the configured branch take effect on the next turn. It does not reload them between individual tool calls within that turn. + +### Precedence + +Guidance loads in settings order: site, then organization, then user, so your own guidance appears after your administrator's. If you belong to multiple organizations, their settings load in organization ID order. + +Skills with distinct names are combined. Skill names are case-insensitive. When two skills share a name, the last one loaded wins: your skill overrides an organization's, which overrides the site's, and any of them can override a Sourcegraph default. + +### What to put in guidance + +Write guidance the way you'd brief a new colleague who is very capable and knows nothing about your organization. The most useful entries are the ones the agent can't infer from code: + +- **Image policy.** Which base images to prefer, whether the agent may build images or should stick to stock ones. +- **Publication conventions.** Branch name patterns, changeset title format, required labels or reviewers, and whether to open drafts or ready-for-review changesets by default. +- **Verification.** Which commands count as "tests pass" for each ecosystem, and which are too slow to run before publishing. +- **CI.** How to fetch logs for a failed build and what to try first. This is what the agent uses when it sets up CI handling for you. +- **Boundaries.** Repositories or directories the agent should never modify, and changes that always need a human to sign off. + +**Avoid restating the agent's own defaults.** It already researches before planning, tests on one repository before expanding, and asks before publishing, so guidance that repeats those rules adds length without changing behavior. + +### Changeset hooks + +Agentic Batch Changes introduces **changeset hooks**, which allow programmable responses to events like CI failures and merge conflicts. For example: + +- When CI fails, the agent can prepare a script to fetch CI logs for you. This data can be used to amend the agent's plan, or be handed off to a coding agent to fix immediately. +- When a merge conflict is encountered, the agent can ask a coding agent to address it. + +To get set up, ask the agent for it in your agentic batch change. Fetching CI logs requires a hook step that uses your CI credential; attempting fixes automatically also requires a coding agent step in that hook. Detecting a failed check does not configure either action automatically. Encode processes that work for your organization in [guidance or skills](#guidance-and-skills). + +### Coding agent steps + +The coding agent step is a native step type for Agentic Batch Changes that lets the agent delegate non-deterministic or context-dependent changes to another coding agent. Coding agent steps are automatically pre-configured with the [Sourcegraph MCP](/api/mcp). + +Within a coding agent step, the agent has: + +- **Full MCP access under your identity.** The Sourcegraph MCP tools are available and authenticated as you, so the agent operates with your permissions. +- **Access to the code being worked on.** The workspace's repository checkout is available to the agent as it makes changes. + +We currently support [Claude Code](https://claude.com/product/claude-code) and [Codex](https://openai.com/codex) as native coding agent steps. + +Codex is the default. You can request either agent in your prompt or [guidance](#guidance-and-skills); the coordinating agent selects it in the plan. + +Coding agent LLM traffic is routed through the [Sourcegraph Model Provider](/model-provider). + +Agentic Batch Changes does not use coding agent steps for every task. For deterministic changes, the agent will opt to write a script, or even an entire program, to efficiently apply some or all of the target changes. + +## Security and secrets + +The agent acts as you. Everything it reads, it reads with your [repository permissions](/admin/permissions), so it can't scope a change to a repository you can't see. Everything it publishes, it publishes with your [Batch Changes credential](/batch-changes/configuring-credentials), or the global credential your administrator configured. Your code host's branch protection, required checks, and review rules apply unchanged. + +### Approvals + +The agent researches, plans, and revises freely without publishing changes to your code host. Running the plan for the first time usually takes an explicit yes or instructions from you. Publishing, expanding the rollout, and fanning out to everything that remains may each need a reply, unless you authorized them up front in your prompt. + +When a new or changed step uses a secret, the agent shows you that step and waits for your approval before running it with your credential. You choose how far the approval extends: this run only, this agent, or all of your agents. + +### Secrets + +Some steps need credentials: a package registry token for private dependencies or an API key for reading CI logs. These are managed on two settings pages: + +- Your own secrets live under **Secrets** in your Batch Changes settings, at `/users//settings/batch-changes/secrets`. +- Site administrators manage global secrets, available to every user, at `/admin/batch-changes/secrets`. + +Your own secret takes precedence over a global one with the same name. + + + Organization-level secrets aren't available to Agentic Batch Changes. Use a + user or global secret instead. + + +A step references a secret by name. Sourcegraph injects the value when the step runs and redacts it from logs; the value never appears in the plan, in the conversation, or in anything the agent reads. The agent never asks you to paste a secret into the conversation: when a step needs a credential that doesn't exist yet, it points you to the settings page and the least-privilege scope the token needs, then waits until you confirm it's there. + +### Isolation + +All code-modifying work runs in isolated containers on [Sourcegraph executors](/admin/executors), one per repository. A container sees the repository and the secrets its steps reference. It has no direct access to code host credentials, other users' secrets, or other repository checkouts. [Coding agent steps](#coding-agent-steps) can still use Sourcegraph MCP to access code with your permissions. Containers can't publish. Publication happens inside Sourcegraph. + +### Audit log + +Agent activity is recorded in the Sourcegraph audit log under the `batchChangeAgents` entity, with identifiers and no URLs, links, or tokens. On self-hosted instances, route it as you route the rest of the audit log. + +## Administration + +### Access + +Users need two permission pairs from the Batch Changes namespace in [role-based access control](/admin/access-control): + +- `Batch Changes: Read` together with `Batch Changes: Agent Read` to view agents and their conversations. +- `Batch Changes: Write` together with `Batch Changes: Agent Write` to create and run them. + +Both halves of a pair are required. All four are part of the built-in User role, so every user has access once the feature is enabled. To roll it out gradually, remove the agent permissions from the User role and grant them through a role of your own. + +### Ownership + +Each agentic batch change has one owner, the user who created it, and only the owner can send messages, approve actions, and publish. Others can follow along through a shared read link, which lets any user on the instance read the conversation, the plan, and the results without changing anything. There is no co-ownership and no transfer. If the owner is unavailable, start a new agentic batch change to continue the work. Because the agent acts as its owner, the owner's repository permissions bound what it can touch. + +### Code hosts + +The agent publishes through [Batch Changes](/batch-changes) using your configured Batch Changes credentials. Reacting to CI failures and merge conflicts depends on what the code host reports back to Sourcegraph. + +Fork enforcement, rollout windows, commit signing, and branch auto-deletion apply unchanged. + +### Executors + +Make sure [code host connections](/admin/code-hosts) are configured for the repositories users want the agent to search and modify. + +All code-modifying work runs on executors: + +- [Sourcegraph Cloud](/cloud) customers have managed executors with no additional setup required. +- Self-hosted customers need [executors deployed](/self-hosted/executors) and registered against both the `batches` and `batches-hooks` [queues](/self-hosted/executors/executors-config#queues), running a version that matches the instance. Without an executor on `batches-hooks`, batch changes can execute and publish, but CI and merge-conflict hook automations never run. + +### Usage limits + +Coding agent runs are metered per user through the **Batch Changes coding agent step runs** [entitlement](/admin/entitlements), managed under **Site admin → Users & auth → Entitlements**. Each coding agent run in a repository consumes one unit. A default entitlement applies to every user, and an explicit grant replaces the default for a specific user: + +- Users without an entitlement have unlimited usage. +- A positive limit blocks further runs once reached until its window resets. +- A limit of zero blocks coding agent runs entirely. + +Blocked runs tell the user which limit was hit and when it resets. + +Model usage, for both the agent's own conversation and its coding agent runs, draws on your instance's [Sourcegraph Model Provider](/model-provider) credits. + +### Web search + +Web search is enabled by default for the coordinating agent and its coding agents. To disable it for both, set `batchChanges.disableAgentWebSearch` to `true` in [site configuration](/admin/config/site-config). + +This setting disables web search tools. It does not block outbound network access from executor containers, including commands run by scripts or coding agents. Restrict that access separately through your executor network policy. + +### Images + +Steps run in container images the agent picks, preferring small public images that already carry the needed tools. You can restrict where images come from with `batchChanges.containerRegistryAllowlist` or `batchChanges.containerRegistryDenylist` in site configuration; the two are mutually exclusive, and an empty list allows every registry. + +When no public image fits, the agent can build one on the fly and reuse it across the batch change. Custom-built images are hosted directly in Sourcegraph. Image building is available on Sourcegraph Cloud by default and requires additional setup on self-hosted instances. diff --git a/docs/agentic-batch-changes/index.mdx b/docs/agentic-batch-changes/index.mdx index db6c9c3b7..237f689c3 100644 --- a/docs/agentic-batch-changes/index.mdx +++ b/docs/agentic-batch-changes/index.mdx @@ -4,120 +4,62 @@ seoPriority: 1.0 # Agentic Batch Changes -[Agentic Batch Changes](http://sourcegraph.com/agentic-batch-changes) lets you describe a change in plain language: then, the agent scopes it, applies it across every repo, and tracks it through to merge. +Agentic Batch Changes turns a description of a change into changesets across your codebase. You tell the agent what should be different. It researches your repositories with [Deep Search](/deep-search), proposes a plan, previews the change on one repository, and rolls it out in stages you control. After it opens pull requests, it can keep watching them: when CI fails or a merge conflict appears, it can iterate to fix the problem and report back. - - Agentic Batch Changes is currently a [Beta feature](/beta-and-experimental). - The Beta is currently only available upon request: **[schedule a - demo](https://sourcegraph.com/contact) or reach out to your account manager - to get started.** - +You can use it for: -Agentic Batch Changes is built on top of [Batch Changes](/batch-changes), our precision tool for applying code changes at scale. Paired with [Deep Search](/deep-search), our code understanding agent, these two tools form the foundation of an agent harness specialized for operating across your entire codebase: from thousands of repositories, to the largest monorepos. +- Dependency upgrades and CVE remediation, including upgrades with breaking changes, transitive dependencies, and lockfiles. +- Language and framework migrations, such as replacing deprecated APIs across every service. +- Generating or refreshing repository documentation and `AGENTS.md` guidance for coding agents. +- Splitting one large change in a monorepo into a separate pull request per team. - +The agent also handles changes that need judgment in each repository, reading the surrounding code before it edits rather than applying one pattern everywhere. -## Getting started - -Agentic Batch Changes is currently a [Beta feature](/beta-and-experimental). The Beta is currently only available upon request: **[schedule a demo](https://sourcegraph.com/contact) or reach out to your account manager to get started.** - -Once Agentic Batch Changes is enabled, you can find it in the Sourcegraph navigation bar. - -### Setup - -Before creating an Agentic Batch Change, make sure your Sourcegraph instance can access the repositories and publish changes back to your code host: - -- [Configure code host connections](/admin/code-hosts) for the repositories you want the agent to search and modify. -- [Configure Batch Changes credentials](/batch-changes/configuring-credentials) for each code host where the agent should publish pull requests or merge requests. -- Ensure [Sourcegraph executors](/admin/executors) are set up so Agentic Batch Changes can run code-modification jobs in isolated workspaces. [Sourcegraph Cloud](/cloud) includes Sourcegraph-managed executors by default, so Cloud customers using them do not need to deploy executor infrastructure. Otherwise, you will need to [deploy Sourcegraph executors](/self-hosted/executors) that serve both the `batches` and `batches-hooks` [queues](/self-hosted/executors/executors-config#queues). - -### Prompting - -Each Agentic Batch Change starts with a prompt. Like any agent, specificity and a clear success criteria can dramatically improve results. The agent works particularly well with detailed migration plans, which you can upload for the agent to consume. However, you can also start with some fairly simple requests to see how the agent responds: - -- "Generate documentation for these repositories to describe the purpose of the repository." -- "Generate `AGENTS.md` guidance for these repositories to help coding agents." -- "Identify usage of primitive wrapper constructors in Java projects, like `new Boolean(true)`, and replace them with the recommended `.valueOf()` factory method `Boolean.valueOf(true)`." -- "In our Go 1.16+ code, remove `ioutil` imports, replacing them with the appropriate modern methods in packages like `io` and `os`." -- "Find repositories affected by CVE-2025-55182. Prioritize repositories that have execution paths to vulnerable code. If the application’s React code does not use a server, it is not affected by this vulnerability. If the app does not use a framework, bundler, or bundler plugin that supports React Server Components, the app is not affected by this vulnerability." - -We recommend encoding guidance that works for your organization via [agent customization](#customization). - -## Capabilities +Some terms used in this documentation: -### Customization +- A **code host** is the service that hosts your repositories and reviews, such as GitHub, GitLab, Bitbucket, or Azure DevOps. +- A **changeset** is one proposed change on a code host: a pull request on GitHub, a merge request on GitLab. One agentic batch change can span several code hosts, so this documentation uses the neutral word. +- The **plan** is what the agent proposes before it runs: the repositories in scope, what will change in each one, and the branch, title, and commit message for the resulting changesets. -Most organizations will also have specific conventions, technologies, and preferences. The agent may discover some of these conventions in its research, but you can also improve performance by customizing the agent with skills and `AGENTS.md`-style guidance, available on a per-user, per-organization, or global level in settings: - -- **User settings → Batch Changes → Agent** -- **Administration → Batch Changes → Agent** - -### Changeset hooks - -Agentic Batch Changes introduces a new batch changes concept, "changeset hooks". These allow programmable responses to events like CI failures and merge conflicts. For example: - -- When CI fails, the agent can prepare a script to fetch CI logs for you. This data can be used to amend the agent's plan, or even be handed off to a coding agent to fix immediately. -- When a merge conflict is encountered, the agent can ask a coding agent to address it. - -To get set up, just ask the agent for it in your agentic batch change. We recommend encoding processes that work for your organization via [agent customization](#customization). - -### Coding agent steps - -The coding agent step is a new native step type for Agentic Batch Changes that allows the agent to delegate non-deterministic or context-dependent changes for another coding agent to handle. Coding agent steps are automatically pre-configured with the [Sourcegraph MCP](/api/mcp). - -Within a coding agent step, the agent has: - -- **Full MCP access under your actor** — the [Sourcegraph MCP](/api/mcp) tools are available and authenticated as you, so the agent operates with your permissions. -- **Access to the code being worked on** — the workspace's repository checkout is available to the agent as it makes changes. - -We currently support [Claude Code](https://claude.com/product/claude-code) and [Codex](https://openai.com/codex) as native coding agent steps. +## Getting started -By default, coding agent LLM traffic is routed through the [Sourcegraph Model Provider](/model-provider). +### Before you start -Note that Agentic Batch Changes does not use coding agent steps for every task. For deterministic changes, the agent will opt to write a script - or even an entire program - to efficiently apply some, or all, of the target changes. +Agentic Batch Changes should be on by default. If it isn't available, contact your Sourcegraph administrator; see [Administration](/agentic-batch-changes/configuration#administration) for access and setup requirements. -### Building images for steps +As a user, you need: -Just like any agent, Agentic Batch Changes and [its coding agents](#coding-agent-steps) benefits from having tools tailored for specific tasks. To support this, the agent can build a tailor-made image with all the tools it needs for a specific task that it can reuse across an agentic batch change. Custom-built images are hosted directly in Sourcegraph. +- A [Batch Changes credential](/batch-changes/configuring-credentials) for each code host where the agent should publish, added under **Code hosts** in your Batch Changes settings. +- If you want the agent to react to CI failures, CI must report check results to your code host so Sourcegraph can detect them. Fetching CI logs also requires a token that can read them, stored under [**Secrets**](/admin/executors/executor-secrets#creating-a-new-secret) in the same settings area. See [Security and secrets](/agentic-batch-changes/configuration#security-and-secrets). -If you prefer, you can guide the agent to an image of your choice instead, or encourage the agent to build on top of particular images. We recommend encoding processes that work for your organization via [agent customization](#customization). +### Write the prompt -Note that the agent's image-building capability is only available in [Sourcegraph Cloud](/cloud) by default. +Open **Agentic Batch Changes** from the navigation and describe the change: the outcome you want and where to look. -### Batch Changes capabilities +For example, for a Go codebase: -All [batch changes capabilities](/batch-changes/batch-spec-yaml-reference) are available to the agent. +> Across the repositories in our acme-platform organization, replace calls to `ioutil.ReadFile` with `os.ReadFile` and remove imports that become unused. Run `gofmt` afterwards. Don't touch anything under `vendor/`. Publish drafts so I can see CI. -For example, the agent can write conditional steps, template changeset titles and descriptions, and split changes in one repository into multiple changesets. +See [Writing prompts](/agentic-batch-changes/writing-prompts) for more examples. -Administration options like rollout windows and commit signing also carry over. See [Administration](#administration) for details. +### Review the plan -## Administration +The agent researches your codebase and comes back with a plan: the repositories in scope, what will change in each one, the branch and title for the changesets, and which repository it wants to test on first (also called a **canary**). The agent might ask clarifying questions when the scope is ambiguous. -Most Batch Changes configuration options, such as rollout windows and commit signing, still apply in Agentic Batch Changes unless otherwise noted. To learn more, refer to [Batch Changes configuration](/admin/config/batch-changes). +At any time, you can ask the agent to show you the plan or adjust it in plain language, including after publication. You can ask for corrective code changes to existing changesets; see [During the conversation](/agentic-batch-changes/writing-prompts#during-the-conversation) for how revisions affect completed work. -### Access control +### Watch the test run -Access to Agentic Batch Changes can be managed through [role-based access control](/admin/access-control). Users will need both of: +After you approve, the agent runs the change in one repository and shows you the diff. Review the proposed changes and assess the agent's suggested solution. If the diff has a problem, tell the agent. You can also highlight and comment on lines in the diff itself. The agent will then revise the plan and adjust the next changes as well. -- Batch Changes permissions `Batch Changes: Read` or `Batch Changes: Write` -- Agentic Batch Changes permissions `Batch Changes: Agent Read` or `Batch Changes: Agent Write` +### Publish a draft -### Entitlements +Where your code host supports drafts, tell the agent to publish the test result as a draft changeset to get CI, code owner checks, and reviewer comments on one changeset before the rollout goes any wider. If the agent needs a secret to read CI logs, it might ask you to [configure one](/agentic-batch-changes/configuration#security-and-secrets). -[Entitlements](/admin/entitlements/) are currently only available for [coding agent steps](#coding-agent-steps). +### Expand the rollout -## Security +If everything goes well, the agent might ask if it can continue. By default, the agent runs the next stage and pauses again when it's done. Each pause is a checkpoint where you can inspect a diff, skip a repository, or adjust a title. When you trust the change, "run everything else" fans out the remainder. -Agentic Batch Changes uses the same security model as Batch Changes, with additional safeguards for agent-generated work: +### Let the agent finish -- [Repository permissions](/admin/permissions/) are enforced when users view, create, update, or publish changes, so users can only act on repositories they are allowed to access. -- [Batch Changes credentials](/batch-changes/configuring-credentials) control which code host identity publishes pull requests or merge requests. -- Code host protections, including CI checks, branch protections, and review requirements, continue to apply to pull requests or merge requests created by Agentic Batch Changes. -- [Executors](/admin/executors/) run code-modification jobs in isolated workspaces. Executors do not access code host credentials directly. -- [Executor secrets](/admin/executors/executor-secrets) are scoped by user, organization, or globally, and are redacted in logs. Agentic Batch Changes will ask you for approval on any agent-generated actions that reference your secrets before those actions run. +When configured to handle CI failures, the agent fetches the logs, iterates to fix the problem, and updates the changeset. You can step away and ask "what happened while I was away?" when you return for a summary of everything that changed. When reviewers approve and CI is green, merge on the code host or use **Merge** in Sourcegraph's changeset view, where available. The agent cannot merge changesets from the conversation. diff --git a/docs/agentic-batch-changes/writing-prompts.mdx b/docs/agentic-batch-changes/writing-prompts.mdx new file mode 100644 index 000000000..b8968104d --- /dev/null +++ b/docs/agentic-batch-changes/writing-prompts.mdx @@ -0,0 +1,86 @@ +# Writing prompts + +The agent starts every batch change from your first message. It reads the message, researches the codebase with Deep Search, and comes back with a plan: which repositories are in scope, what will change, and which repository it wants to test on first. You can correct the plan before anything runs, so a prompt doesn't have to be perfect. It does have to be clear about the outcome you want. + +## What the agent needs from you + +Prompts can be flexible, but these principles help: + +- **State the outcome clearly.** For example, "Every service should read its database URL from the `DATABASE_URL` environment variable instead of the `config/db.yaml` file" gives the agent a success condition it can check. +- **Give the scope, or explain how to find it.** Name the repositories, an organization, a language, or a signal the agent can search for: "every repository with a `go.mod` that imports `github.com/pkg/errors`". The agent uses Deep Search to turn that into a list and ranks the results, then confirms the list with you. If you don't know the scope, say so and describe the symptom instead. The agent will investigate and propose one. +- **Set the boundaries.** Specify anything the agent must not touch, any change that needs a human, and any verification you expect before a changeset is published: "don't modify anything under `vendor/`", "run `make test` and skip repositories where it fails". + +## Attach the plan you already have + +If you have a migration guide, an upgrade runbook, an advisory, or a design doc, upload it with your message. The agent reads uploaded files before planning, and a written plan with steps, gotchas, and examples produces a better result. This is the single most effective way to improve results for a complex migration. + +## Say how you want it rolled out + +By default, the agent starts with one test repository, then expands in stages, pausing after each. These pauses are part of the agent's instructions, not a server-enforced approval gate. You can shape the rollout in the prompt: + +- Name the test repository: "start with billing-api, it has the best test coverage". +- Set the publication strategy: "publish drafts so I can see CI before we go wider", or "don't touch the code host until I've reviewed the diffs". +- Say whether the agent should fetch CI logs, attempt fixes automatically, or handle merge conflicts: "if CI fails on a changeset, fetch the logs and try to fix it", or "rebase on merge conflicts". Name the CI system and the secret that holds its token. The agent must configure [changeset hooks](/agentic-batch-changes/configuration#changeset-hooks) for these actions; detecting a failed check does not enable them automatically. +- Ask for ready-for-review changesets rather than drafts when you want the final stage to be ready for review. + +## Tell it which tools to use + +The agent decides between scripts and coding agents based on how deterministic the change is, and picks container images to match. When you have a preference, state it: + +- "Use ast-grep for the rewrite; here's the pattern." +- "Use a coding agent for the call-site changes, the transformation is too context-dependent for a script." +- "Use our internal `tools/migrator` image from `registry.example.com`." +- "Don't build images; use stock images only." + +If you need the coding agent to follow conventions, put them in the prompt too, or point at a file in the repository. Coding agents working inside a repository don't receive the [direct guidance configured in settings](/agentic-batch-changes/configuration#guidance-and-skills), but the coordinating agent usually transfers what is relevant. + +## Encode what repeats + +If you find yourself writing the same instructions in every prompt, they belong in guidance or a skill rather than in the prompt. Branch naming, changeset description format, which CI system you use and how to read its logs, image policy, and verification commands are all better set once; see [Customizing the agent](/agentic-batch-changes/configuration#customizing-the-agent). Prompts should then contain only what's specific to this change. + +## Examples + +Each example below is a complete first message. They range from simple to complex. + +### Documentation for repositories without any + +> For every repository in the acme-platform GitHub organization that has no `README.md` or whose README is under 20 lines, write a README describing what the service does, how to run it locally, and who owns it (from CODEOWNERS). Use a coding agent for the writing. Publish as drafts. + +### A mechanical language cleanup + +> Across our Go repositories, remove imports of `io/ioutil` and replace each call with its modern equivalent: `ioutil.ReadFile` → `os.ReadFile`, `ioutil.WriteFile` → `os.WriteFile`, `ioutil.ReadAll` → `io.ReadAll`, `ioutil.NopCloser` → `io.NopCloser`, `ioutil.TempDir` → `os.MkdirTemp`, `ioutil.TempFile` → `os.CreateTemp`. Replace `ioutil.Discard` with `io.Discard`. Run `gofmt` and `go build ./...` afterwards. Skip repositories still on Go 1.15 or earlier per their `go.mod`. + +### A dependency upgrade with verification + +> Upgrade lodash to at least 4.17.21 in every JavaScript and TypeScript repository we have, including where it's a transitive dependency. Update lockfiles with the repository's own package manager. Run the repository's test command if one is defined in `package.json` and don't publish changesets where tests fail; list them for me instead. Start with web-dashboard as the canary and publish drafts so I can see CI. + +### A vulnerability triage with a conditional scope + +> Find repositories affected by CVE-2025-55182. Prioritize repositories with an execution path to the vulnerable code. A React application that doesn't render on a server is not affected. An application that doesn't use a framework, bundler, or bundler plugin supporting React Server Components is not affected. Produce a report of affected repositories with the evidence for each before proposing any change, then wait for me. + +### A monorepo change split by owner + +> In acme/monorepo, replace `LegacyLogger` with `slog` under every directory in `services/`. Create one changeset per top-level directory under `services/` so each team reviews its own. Title each changeset `services/: migrate to slog`. Follow the logging conventions in `docs/logging.md`. Run the canary on `services/auth`. + +### A multi-step migration with an uploaded plan + +> Attached is our Spring Boot 2 → 3 migration runbook. Apply it to every Java repository on Spring Boot 2.x. Use the OpenRewrite recipe from section 2 as a script step, then a coding agent step to fix what the recipe leaves behind following sections 3 and 4. Run `./mvnw -q verify` and fix compile errors before finishing each workspace. If CI fails on a published changeset, fetch the logs and attempt a fix. Publish drafts and pause after each stage. + +## During the conversation + +The agent asks questions while it plans, pauses between stages by default, and reports CI results as they arrive. + +You can also ask it to change course or explain what's happening: + +- "Show me the plan" to read the current plan before confirming. +- "Skip legacy-gateway" to remove a repository from scope without stopping the rollout. +- "Change the commit message to ..." to update titles, descriptions, or commit messages. This republishes without re-running the work. +- "Also add this ..." to extend the plan. The agent prefers additions over edits to existing steps, so finished work stays valid. +- "Continue" to run the next stage, or "run everything else" to fan out the remainder. +- "What happened while I was away?" after CI has run, to get a summary. + +You can revise the plan after publication and ask the agent to push corrective changes to existing changesets. Changing an execution step invalidates cached results for that step and later steps; unchanged earlier steps can reuse their cached results. Changes to titles, descriptions, or hooks do not by themselves require execution steps to run again. + +Changing a branch is different from editing a title or description. Changesets are matched by repository and branch, so a branch change can create a new changeset and close or detach the old one, even when execution results are reused. + +The agent has an overview of the change and the procedures behind it. If something is unclear or you need to proceed in a specific way, ask in plain language. diff --git a/src/data/navigation.ts b/src/data/navigation.ts index e1937c11a..c103b7bbd 100644 --- a/src/data/navigation.ts +++ b/src/data/navigation.ts @@ -280,7 +280,21 @@ export const navigation: NavigationItem[] = [ topics: [ { title: 'Agentic Batch Changes', - href: '/agentic-batch-changes' + href: '/agentic-batch-changes', + sections: [ + { + title: 'Getting started', + href: '/agentic-batch-changes' + }, + { + title: 'Writing prompts', + href: '/agentic-batch-changes/writing-prompts' + }, + { + title: 'Configuration and administration', + href: '/agentic-batch-changes/configuration' + } + ] }, { title: 'Batch Changes', From d3ee4378b55338a3bb586da8928525627fdf1435 Mon Sep 17 00:00:00 2001 From: Marc <7050295+marcleblanc2@users.noreply.github.com> Date: Mon, 14 Sep 2026 16:04:15 -0600 Subject: [PATCH 216/217] ci: Attach Vercel build logs to Slack post on failures (#1956) Fixing the GitHub action's filter to find the Vercel post in Slack, to attach the build logs in Slack instead of PRs on a public repo, just in case anything sensitive makes it way into the build, and out of the logs. Follow-up to #1946, found by re-triggering the build on #1948 after merging #1946 ## Tested - Build failure logs posted in [Slack](https://sourcegraph.slack.com/archives/C0C25K5RHRN/p1789188631974869?thread_ts=1789185584.403469&cid=C0C25K5RHRN) - Build failure PR comment https://github.com/sourcegraph/docs/pull/1948#issuecomment-5638459287 links to the Slack post, instead of posting build logs publicly ## Amp thread - [Vercel build report security review](https://ampcode.com/threads/T-01a093c3-a827-71ba-af20-c13e851c9a77) --------- Co-authored-by: Amp --- .github/workflows/vercel-build-report.yml | 58 ++-- AGENTS.md | 2 +- dev/report-vercel-build.mjs | 310 +++++++++++----------- 3 files changed, 182 insertions(+), 188 deletions(-) diff --git a/.github/workflows/vercel-build-report.yml b/.github/workflows/vercel-build-report.yml index 91a64f6f1..624bec91f 100644 --- a/.github/workflows/vercel-build-report.yml +++ b/.github/workflows/vercel-build-report.yml @@ -1,22 +1,24 @@ name: Vercel build report # Vercel only shows build logs to members of its team. When a PR's Vercel -# build fails, this comments the end of the build log on the PR, with the -# full log as a workflow artifact when the comment cannot hold it all; when a -# later revision builds, the comment is updated to say so and the artifact -# is deleted. The full log is also attached to the Vercel Slack app's "failed -# to deploy" post when the SLACK_BOT_TOKEN secret and SLACK_CHANNEL_ID -# variable are set (see dev/slack-app-vercel-build-report.json). +# build fails, this attaches the build log to the Vercel Slack app's "failed +# to deploy" post (SLACK_BOT_TOKEN secret and SLACK_CHANNEL_ID variable; see +# dev/slack-app-vercel-build-report.json) and comments a link to it on the +# PR; when a later revision builds, the comment is updated to say so. The log +# never goes on the PR itself, so anything sensitive a build prints stays in +# Slack instead of a public repository. # # GitHub only delivers repository_dispatch (and finds workflow_dispatch # workflows) once the workflow file is on the default branch, so before merge # run dev/report-vercel-build.mjs locally instead. After merge, re-run on a PR # by hand with the same payload fields as inputs: # gh workflow run vercel-build-report.yml \ -# -f id=dpl_... -f state=error -f sha= +# -f id=dpl_... -f state=failed -f sha= on: repository_dispatch: - types: [vercel.deployment.error, vercel.deployment.success] + # A build that exits non-zero is `failed`; `error` is only sent for + # deleted deployments, which have no log + types: [vercel.deployment.failed, vercel.deployment.success] workflow_dispatch: inputs: id: @@ -26,7 +28,7 @@ on: description: Deployment state (client_payload.state.type) required: true type: choice - options: [error, success] + options: [failed, success] sha: description: Full commit SHA of the PR head (client_payload.git.sha) required: true @@ -34,8 +36,6 @@ on: permissions: contents: read pull-requests: write - # To delete the full-log artifact once the build passes - actions: write env: DEPLOYMENT_ID: ${{ github.event.client_payload.id || inputs.id }} @@ -46,7 +46,12 @@ env: jobs: report: - if: github.event.client_payload.environment != 'production' + # `failed` is also sent for checks_failed, aliasing_failed and account + # problems, where the build log shows a build that passed + if: >- + github.event.client_payload.environment != 'production' + && (github.event.client_payload.state.type != 'failed' + || github.event.client_payload.state.detail == 'deployment_failed') runs-on: ubuntu-latest steps: - name: Check out dev/report-vercel-build.mjs @@ -57,35 +62,26 @@ jobs: - name: Fetch the build log from Vercel # Vercel is only contacted when the build failed - if: env.DEPLOYMENT_STATE == 'error' + if: env.DEPLOYMENT_STATE == 'failed' id: log env: # Scoped to the sourcegraph-docs project, so it needs no team ID VERCEL_TOKEN: ${{ secrets.VERCEL_TOKEN }} run: node dev/report-vercel-build.mjs fetch-log "$LOG_FILE" - - name: Attach the full log when the comment cannot hold it all - if: steps.log.outputs.truncated == 'true' - id: artifact - uses: actions/upload-artifact@v4 - with: - name: vercel-build-log-${{ env.COMMIT_SHA }} - path: ${{ env.LOG_FILE }} - retention-days: 30 - - - name: Comment on the pull request - env: - PR_NUMBER: ${{ steps.log.outputs.pull_request }} - ARTIFACT_ID: ${{ steps.artifact.outputs.artifact-id }} - ARTIFACT_URL: ${{ steps.artifact.outputs.artifact-url }} - run: node dev/report-vercel-build.mjs comment "$LOG_FILE" - - name: Attach the log to the Vercel app's Slack post - if: env.DEPLOYMENT_STATE == 'error' - # The PR comment is the record; a Slack problem must not fail it + if: env.DEPLOYMENT_STATE == 'failed' + id: slack + # The PR should still hear about the failure when Slack is down continue-on-error: true env: PR_NUMBER: ${{ steps.log.outputs.pull_request }} SLACK_BOT_TOKEN: ${{ secrets.SLACK_BOT_TOKEN }} SLACK_CHANNEL_ID: ${{ vars.SLACK_CHANNEL_ID }} run: node dev/report-vercel-build.mjs slack "$LOG_FILE" + + - name: Comment on the pull request + env: + PR_NUMBER: ${{ steps.log.outputs.pull_request }} + SLACK_PERMALINK: ${{ steps.slack.outputs.permalink }} + run: node dev/report-vercel-build.mjs comment diff --git a/AGENTS.md b/AGENTS.md index 674ff4307..ddb33dcd9 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -9,7 +9,7 @@ - **Checks**: `npm run check` runs every `dev/check-*.mjs` (links, filenames, images); `npm run build` runs them first, so any finding fails a deploy - **Check links**: `npm run check -- links --check-anchors --check-self-links` (CI comments on PRs that break links; see `dev/check-links.mjs`; the build runs it without flags, so only dead page links fail a deploy). When moving a page or renaming a heading, update every link to it; a redirect in `src/data/redirects.ts` does not satisfy the check. Link to this site with relative paths (`/admin/config/site-config`), never `https://sourcegraph.com/docs/…` or `https://docs.sourcegraph.com/…`. To also probe the external links you added: `npm run check -- links --check-anchors --check-self-links --check-external --diff <(git diff -U0 origin/main)` - **Prove changed links resolve on a deploy**: `node dev/verify-links-live.mjs --site ` prints a Markdown table for the PR description -- **Vercel build failures**: Vercel shows build logs only to its team members, so `.github/workflows/vercel-build-report.yml` comments the log tail on the PR (see `dev/report-vercel-build.mjs`). It reads Vercel with the `VERCEL_TOKEN` repo secret, a token scoped to the `sourcegraph-docs` project that expires 2026-12-10; mint a new one with `POST /v3/user/tokens?teamId=` and `projectId` in the body. It also attaches the full log to the Vercel Slack app's "failed to deploy" post in `#alerts-vercel-doc-site`, using the `SLACK_BOT_TOKEN` repo secret and `SLACK_CHANNEL_ID` repo variable. The bot is the Slack app in `dev/slack-app-vercel-build-report.json`; to recreate it, paste that manifest at (From a manifest), install it, copy its Bot User OAuth Token into the secret, and `/invite @Vercel build log` to the channel +- **Vercel build failures**: Vercel shows build logs only to its team members, so `.github/workflows/vercel-build-report.yml` attaches the log to the Vercel Slack app's "failed to deploy" post in `#alerts-vercel-doc-site` and comments a link to it on the PR (see `dev/report-vercel-build.mjs`). The log itself never goes on the PR, since the repository is public. It reads Vercel with the `VERCEL_TOKEN` repo secret, a token scoped to the `sourcegraph-docs` project that expires 2026-12-10; mint a new one with `POST /v3/user/tokens?teamId=` and `projectId` in the body. Slack needs the `SLACK_BOT_TOKEN` repo secret and `SLACK_CHANNEL_ID` repo variable. The bot is the Slack app in `dev/slack-app-vercel-build-report.json`; to recreate it, paste that manifest at (From a manifest), install it, copy its Bot User OAuth Token into the secret, and `/invite @Vercel build log` to the channel ## AI Chat Integration diff --git a/dev/report-vercel-build.mjs b/dev/report-vercel-build.mjs index 50f419687..caddf06d7 100644 --- a/dev/report-vercel-build.mjs +++ b/dev/report-vercel-build.mjs @@ -2,35 +2,35 @@ /** * Reports a failed Vercel build on its pull request, since Vercel only shows - * build logs to members of the Vercel team. When a later revision builds, the - * same comment is updated to say so. + * build logs to members of the Vercel team. The log itself goes to Slack, so + * anything sensitive a build prints stays inside the workspace instead of a + * public PR; the PR comment only links to it. When a later revision builds, + * the same comment is updated to say so. * * Usage: * node dev/report-vercel-build.mjs fetch-log - * node dev/report-vercel-build.mjs comment [--dry-run] * node dev/report-vercel-build.mjs slack [--dry-run] + * node dev/report-vercel-build.mjs comment [--dry-run] * - * fetch-log writes the build log to , and to GITHUB_OUTPUT `truncated`, - * so the workflow can upload the full log as an artifact when the comment - * cannot hold all of it, and `pull_request`, the PR Vercel built the - * deployment for. It needs VERCEL_TOKEN, and VERCEL_TEAM_ID unless the token - * is scoped to the project. - * - * comment posts the tail of on PR_NUMBER, the PR Vercel built the - * deployment for. When unset (the success path, or a deployment Vercel - * recorded no PR for) it falls back to every open PR at COMMIT_SHA. It links - * the artifact from ARTIFACT_ID and ARTIFACT_URL when set, and deletes the - * artifact an earlier comment linked. With --dry-run the comment is printed - * instead, and nothing is deleted. + * fetch-log writes the build log to , and `pull_request`, the PR Vercel + * built the deployment for, to GITHUB_OUTPUT. It needs VERCEL_TOKEN, and + * VERCEL_TEAM_ID unless the token is scoped to the project. * * slack uploads into the thread of the Vercel Slack app's "failed to - * deploy" post for the commit in SLACK_CHANNEL_ID, looking back 30 minutes - * and waiting up to 5 more for the post to appear. It needs SLACK_BOT_TOKEN - * (see dev/slack-app-vercel-build-report.json) and does nothing when that or - * SLACK_CHANNEL_ID is unset. With --dry-run the post is found but nothing is - * uploaded. + * deploy" post for the deployment in SLACK_CHANNEL_ID, looking back a week (so + * a re-run by hand still finds it) and waiting up to 5 minutes for the post + * to appear, then writes the reply's `permalink` to GITHUB_OUTPUT. It needs + * SLACK_BOT_TOKEN (see dev/slack-app-vercel-build-report.json) and does + * nothing when that or SLACK_CHANNEL_ID is unset. With --dry-run the post is + * found but nothing is uploaded. + * + * comment posts on PR_NUMBER, the PR Vercel built the deployment for. When + * unset (the success path, or a deployment Vercel recorded no PR for) it falls + * back to every open PR at COMMIT_SHA. A failure comment links + * SLACK_PERMALINK, or the channel when the upload did not happen. With + * --dry-run the comment is printed instead. * - * All need DEPLOYMENT_ID, DEPLOYMENT_STATE (error or success), COMMIT_SHA, + * All need DEPLOYMENT_ID, DEPLOYMENT_STATE (failed or success), COMMIT_SHA, * GH_TOKEN and GITHUB_REPOSITORY. */ @@ -40,10 +40,9 @@ const [command, logFile] = process.argv .slice(2) .filter(argument => !argument.startsWith('--')); const DRY_RUN = process.argv.includes('--dry-run'); -const MAX_LOG_LINES = 100; -const MAX_LOG_CHARS = 30_000; -const ARTIFACT_RETENTION_DAYS = 30; -const SLACK_HISTORY_MINUTES = 30; +// A week, so a re-run by hand finds the post; the deployment ID match is +// exact, so the wider window cannot pick a wrong post +const SLACK_HISTORY_DAYS = 7; const SLACK_WAIT_MINUTES = 5; const SLACK_POLL_SECONDS = 15; @@ -52,9 +51,9 @@ const REPOSITORY = process.env.GITHUB_REPOSITORY; const {DEPLOYMENT_ID, DEPLOYMENT_STATE, COMMIT_SHA, SLACK_CHANNEL_ID} = process.env; -// The artifact ID rides along in the marker so a later run can delete it -const MARKER = '/; +// Comments from before the log moved to Slack carry an artifact ID here +const MARKER = ''; +const MARKER_PATTERN = /^/; async function fetchJson(url, headers) { const response = await fetch(url, {headers}); @@ -108,6 +107,15 @@ async function fetchDeploymentPullRequestNumber() { const deployment = await fetchJson(url, { authorization: `Bearer ${process.env.VERCEL_TOKEN}` }); + // The deployment ID and commit arrive as separate inputs; only publish + // the log of the deployment Vercel built from that commit + const builtSha = + deployment.meta?.githubCommitSha ?? deployment.gitSource?.sha; + if (builtSha !== COMMIT_SHA) { + throw new Error( + `Deployment ${DEPLOYMENT_ID} was built from ${builtSha}, not ${COMMIT_SHA}` + ); + } return deployment.meta?.githubPrId; } @@ -165,9 +173,10 @@ async function fetchBuildLog() { .map(redact); } -// Credential shapes a build might print. The comment and artifact are public, -// and the build gets VERCEL_OIDC_TOKEN and friends, so a left-in -// `console.log(process.env)` must not publish them. Not a complete list. +// Credential shapes a build might print. The log only goes to Slack, but the +// build gets VERCEL_OIDC_TOKEN and friends, so a left-in +// `console.log(process.env)` should still not hand them to the whole channel. +// Not a complete list. // cspell:disable -- token prefixes, not words const REDACTION_PATTERNS = [ [/\beyJ[\w-]{10,}\.[\w-]{10,}\.[\w-]+/g, '[redacted-jwt]'], @@ -190,14 +199,10 @@ function redact(line) { ); } -// The failure is at the end of the log; keep the tail within GitHub's -// comment size limit -function tailOf(logLines) { - let tail = logLines.slice(-MAX_LOG_LINES); - while (tail.length > 1 && tail.join('\n').length > MAX_LOG_CHARS) { - tail = tail.slice(1); +function writeOutput(name, value) { + if (process.env.GITHUB_OUTPUT) { + appendFileSync(process.env.GITHUB_OUTPUT, `${name}=${value}\n`); } - return tail; } async function fetchLog() { @@ -213,113 +218,52 @@ async function fetchLog() { const pullRequestNumber = await fetchDeploymentPullRequestNumber(); const logLines = await fetchBuildLog(); writeFileSync(logFile, logLines.join('\n') + '\n'); - const truncated = tailOf(logLines).length < logLines.length; - console.log( - `Wrote ${logLines.length} log lines to ${logFile}${truncated ? '; the comment will show the tail' : ''}` - ); - if (process.env.GITHUB_OUTPUT) { - appendFileSync( - process.env.GITHUB_OUTPUT, - `truncated=${truncated}\npull_request=${pullRequestNumber ?? ''}\n` - ); - } -} - -// A fence longer than any run of backticks in the log, so no log line can -// close it and inject Markdown into the comment -function fenceFor(lines) { - const longestRun = Math.max( - 2, - ...lines.flatMap(line => - (line.match(/`+/g) ?? []).map(run => run.length) - ) - ); - return '`'.repeat(longestRun + 1); + console.log(`Wrote ${logLines.length} log lines to ${logFile}`); + writeOutput('pull_request', pullRequestNumber ?? ''); } -function failureBody(logLines, artifact) { - const tail = tailOf(logLines); - const fence = fenceFor(tail); - const intro = - 'Vercel paywalls build logs to authorized users in its web UI, so'; - const message = artifact - ? `${intro} we tailed the last ${tail.length} lines of the build log for you here. The full log is ${logLines.length} lines, attached as a [workflow artifact](${artifact.url}); downloading it needs a GitHub login, and it expires in ${ARTIFACT_RETENTION_DAYS} days.` - : `${intro} here is the build log.`; +// The log stays in Slack, where only the workspace can read it; the public +// comment says where to look +function failureBody() { + const {SLACK_PERMALINK} = process.env; + const where = SLACK_PERMALINK + ? `[attached to its Slack post](${SLACK_PERMALINK})` + : 'in Slack'; return [ - `${MARKER}${artifact ? ` artifact=${artifact.id}` : ''} -->`, + MARKER, '### ❌ The Vercel build failed for this PR', '', - message, - '', - '
', - 'Build log', - '', - fence, - ...tail, - fence, - '', - '
', + `Vercel only shows build logs to members of its team, so the build log is ${where} in #alerts-vercel-doc-site.`, '' ].join('\n'); } -async function deleteArtifact(id) { - console.log(`${DRY_RUN ? '[dry-run] ' : ''}Deleting artifact ${id}`); - if (DRY_RUN) { - return; - } - try { - await github('DELETE', `/repos/${REPOSITORY}/actions/artifacts/${id}`); - } catch (error) { - // Already expired or deleted - if (!error.message.includes(' 404 ')) { - throw error; - } - } -} - async function comment() { const pulls = await findPullRequests(process.env.PR_NUMBER); - if (pulls.length === 0) { - return; - } - let logLines; - if (DEPLOYMENT_STATE === 'error') { - logLines = readFileSync(logFile, 'utf8').replace(/\n$/, '').split('\n'); - } for (const pull of pulls) { - await report(pull, logLines); + await report(pull); } } // Comment only when the build failed, or an earlier failure is resolved -async function report(pull, logLines) { +async function report(pull) { const comments = await githubList( `/repos/${REPOSITORY}/issues/${pull.number}/comments` ); const existing = comments.find(comment => MARKER_PATTERN.test(comment.body) ); - const previousArtifact = existing?.body.match(MARKER_PATTERN)[1]; let body; - if (logLines) { - const {ARTIFACT_ID, ARTIFACT_URL} = process.env; - body = failureBody( - logLines, - ARTIFACT_ID && {id: ARTIFACT_ID, url: ARTIFACT_URL} - ); + if (DEPLOYMENT_STATE === 'failed') { + body = failureBody(); } else if (existing) { - body = `${MARKER} -->\n### ✅ The Vercel build that failed on an earlier revision of this PR passes\n`; + body = `${MARKER}\n### ✅ The Vercel build that failed on an earlier revision of this PR passes\n`; } else { console.log(`PR #${pull.number} has no failed build to resolve`); return; } - if (previousArtifact) { - await deleteArtifact(previousArtifact); - } - if (DRY_RUN) { console.log( `[dry-run] would ${existing ? 'update' : 'create'} comment on PR #${pull.number}:\n` @@ -359,37 +303,75 @@ async function slackApi(method, parameters) { return result; } -// The Vercel Slack app posts " failed to deploy … | -// " for each failed deployment. It and this workflow are triggered -// by the same event, so its post can land after this runs; keep looking for a -// while before giving up. +// Every string in a Slack message: the top-level text, plus legacy +// attachments and Block Kit blocks, where apps often put the real content +function slackMessageText(message) { + const strings = []; + const collect = value => { + if (typeof value === 'string') { + strings.push(value); + } else if (Array.isArray(value)) { + value.forEach(collect); + } else if (value && typeof value === 'object') { + Object.values(value).forEach(collect); + } + }; + collect([message.text, message.attachments, message.blocks]); + return strings.join('\n'); +} + +// The Vercel Slack app posts " failed to deploy" for each +// failed deployment, with the short SHA in a context block and an Inspect +// button whose URL ends in the deployment ID. The ID is matched, since two +// PRs at one commit get two deployments and two posts. The app and this +// workflow are triggered by the same event, so its post can land after this +// runs; keep looking for a while before giving up. async function findVercelFailurePost() { - const shortSha = COMMIT_SHA.slice(0, 7); - const oldest = Date.now() / 1000 - SLACK_HISTORY_MINUTES * 60; + const deploymentId = DEPLOYMENT_ID.replace(/^dpl_/, ''); + const oldest = Date.now() / 1000 - SLACK_HISTORY_DAYS * 24 * 60 * 60; const deadline = Date.now() + SLACK_WAIT_MINUTES * 60_000; for (;;) { - const {messages} = await slackApi('conversations.history', { - channel: SLACK_CHANNEL_ID, - oldest, - limit: 200 - }); - const post = messages.find( - message => - message.bot_id && - message.text?.includes('failed to deploy') && - message.text.includes(shortSha) - ); - if (post) { - return post; + // Newest first, a page at a time + const seen = []; + for (let cursor; ; ) { + const {messages, response_metadata: metadata} = await slackApi( + 'conversations.history', + { + channel: SLACK_CHANNEL_ID, + oldest, + limit: 200, + ...(cursor && {cursor}) + } + ); + const post = messages.find(message => { + const text = slackMessageText(message); + return ( + text.includes('failed to deploy') && + text.includes(deploymentId) + ); + }); + if (post) { + return post; + } + seen.push(...messages); + cursor = metadata?.next_cursor; + if (!cursor) { + break; + } } if (Date.now() >= deadline) { console.log( - `No Vercel "failed to deploy" post for ${shortSha} in the last ${SLACK_HISTORY_MINUTES} minutes; giving up` + `No Vercel "failed to deploy" post for ${DEPLOYMENT_ID} in the last ${SLACK_HISTORY_DAYS} days; giving up. Newest messages seen:` ); + for (const message of seen.slice(0, 20)) { + console.log( + ` ${message.ts} bot_id=${message.bot_id ?? '-'} user=${message.user ?? '-'} subtype=${message.subtype ?? '-'} ${JSON.stringify(slackMessageText(message).slice(0, 120))}` + ); + } return undefined; } console.log( - `No Vercel post for ${shortSha} yet; checking again in ${SLACK_POLL_SECONDS}s` + `No Vercel post for ${DEPLOYMENT_ID} yet; checking again in ${SLACK_POLL_SECONDS}s` ); await new Promise(resolve => setTimeout(resolve, SLACK_POLL_SECONDS * 1000) @@ -398,21 +380,23 @@ async function findVercelFailurePost() { } // Slack takes files in three steps: ask for an upload URL, POST the bytes to -// it, then say which channel and thread to share the file in +// it, then say which channel and thread to share the file in. Returns the +// permalink of the reply carrying the file, for the PR comment. async function uploadLogToThread(post, pulls) { const log = readFileSync(logFile); const shortSha = COMMIT_SHA.slice(0, 7); - const filename = `vercel-build-${shortSha}.log`; + // .txt, so Slack shows it inline instead of offering a download + const filename = `vercel-build-${shortSha}.txt`; const links = pulls .map(pull => `<${pull.html_url}|#${pull.number}>`) .join(', '); - const initialComment = `Build log attached; its tail is also commented on PR ${links}.`; + const initialComment = `Build log attached; PR ${links} links here.`; if (DRY_RUN) { console.log( `[dry-run] would upload ${filename} (${log.length} bytes) to thread ${post.ts} in ${SLACK_CHANNEL_ID}:\n${initialComment}` ); - return; + return undefined; } const {upload_url: uploadUrl, file_id: fileId} = await slackApi( 'files.getUploadURLExternal', @@ -435,6 +419,21 @@ async function uploadLogToThread(post, pulls) { console.log( `Uploaded ${filename} to thread ${post.ts} in ${SLACK_CHANNEL_ID}` ); + + // The upload response names only the file, so find the reply it made; + // fall back to the post itself rather than leave the PR without a link + const {messages} = await slackApi('conversations.replies', { + channel: SLACK_CHANNEL_ID, + ts: post.ts + }); + const reply = messages.find(message => + message.files?.some(file => file.id === fileId) + ); + const {permalink} = await slackApi('chat.getPermalink', { + channel: SLACK_CHANNEL_ID, + message_ts: reply?.ts ?? post.ts + }); + return permalink; } async function slack() { @@ -444,19 +443,22 @@ async function slack() { ); return; } - if (DEPLOYMENT_STATE !== 'error') { + if (DEPLOYMENT_STATE !== 'failed') { console.log('The build passed; Vercel already posts that to Slack'); return; } // The same guard as fetch-log and comment, so Slack only ever gets logs - // the PR comment also shows + // for commits an open PR from this repository is at const pulls = await findPullRequests(process.env.PR_NUMBER); if (pulls.length === 0) { return; } const post = await findVercelFailurePost(); if (post) { - await uploadLogToThread(post, pulls); + const permalink = await uploadLogToThread(post, pulls); + if (permalink) { + writeOutput('permalink', permalink); + } } } @@ -472,25 +474,21 @@ async function main() { throw new Error(`Missing required environment variable ${name}`); } } - if (!['error', 'success'].includes(DEPLOYMENT_STATE)) { + if (!['failed', 'success'].includes(DEPLOYMENT_STATE)) { throw new Error(`Unexpected DEPLOYMENT_STATE ${DEPLOYMENT_STATE}`); } - if (!logFile) { - throw new Error( - 'Usage: node dev/report-vercel-build.mjs fetch-log|comment|slack ' - ); - } - - if (command === 'fetch-log') { - await fetchLog(); - } else if (command === 'comment') { + const usage = + 'Usage: node dev/report-vercel-build.mjs fetch-log|slack , or comment'; + if (command === 'comment') { await comment(); + } else if (!logFile) { + throw new Error(usage); + } else if (command === 'fetch-log') { + await fetchLog(); } else if (command === 'slack') { await slack(); } else { - throw new Error( - `Unknown command ${command}; use fetch-log, comment or slack` - ); + throw new Error(usage); } } From 1104286809b152507b064e20033ea437cfc3765f Mon Sep 17 00:00:00 2001 From: carrascomalany42-lgtm Date: Mon, 14 Sep 2026 16:37:08 -0600 Subject: [PATCH 217/217] Fix formatting in resume file --- .agents/resume | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.agents/resume b/.agents/resume index 2eff8e6a5..24e302916 100755 --- a/.agents/resume +++ b/.agents/resume @@ -6,4 +6,4 @@ set -euo pipefail repo_root="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)" eval "$("$HOME/.local/bin/mise" -C "$repo_root" env -s bash)" node --version -pnpm --version +pnpm --version