diff --git a/.github/dependabot.yml b/.github/dependabot.yml
index 60364b2da..220d871c6 100644
--- a/.github/dependabot.yml
+++ b/.github/dependabot.yml
@@ -12,7 +12,6 @@ updates:
interval: "monthly"
commit-message:
prefix: "build"
- target-branch: "dependabotchanges"
open-pull-requests-limit: 10
groups:
all-actions:
@@ -26,7 +25,6 @@ updates:
interval: "monthly"
commit-message:
prefix: "build"
- target-branch: "dependabotchanges"
open-pull-requests-limit: 10
groups:
langchain:
@@ -38,12 +36,11 @@ updates:
# Grouped frontend npm dependencies (main app)
- package-ecosystem: "npm"
- directory: "/code/frontend"
+ directory: "/src/frontend"
schedule:
interval: "monthly"
commit-message:
prefix: "build"
- target-branch: "dependabotchanges"
open-pull-requests-limit: 10
groups:
frontend-deps:
@@ -52,12 +49,11 @@ updates:
# Grouped frontend npm dependencies (UI tests)
- package-ecosystem: "npm"
- directory: "/tests/integration/ui"
+ directory: "/tests/frontend"
schedule:
interval: "monthly"
commit-message:
prefix: "build"
- target-branch: "dependabotchanges"
open-pull-requests-limit: 10
groups:
frontend-deps:
diff --git a/README.md b/README.md
index 9dd50a23f..8638cfdba 100644
--- a/README.md
+++ b/README.md
@@ -99,32 +99,19 @@ You ask a question in natural language. The backend retrieves the most relevant
-## Quick deploy
+The "Deploy to Azure" button offers a one-click deployment where you don’t have to clone the code. If you would like a developer experience instead, follow the [local deployment instructions](./docs/LOCAL_DEPLOYMENT.md)
-### How to install or deploy
+Once you deploy to Azure, you will have the option to select PostgreSQL or Cosmos DB, see screenshot below.
-Follow the quick deploy steps on the deployment guide to deploy this solution to your own Azure subscription. [Click here to launch the deployment guide](docs/DeploymentGuide.md)
+[](https://portal.azure.com/#create/Microsoft.Template/uri/https%3A%2F%2Fraw.githubusercontent.com%2FAzure-Samples%2Fchat-with-your-data-solution-accelerator%2Frefs%2Fheads%2Fmain%2Finfra%2Fmain.json)
-| [](https://codespaces.new/Azure-Samples/chat-with-your-data-solution-accelerator) | [](https://vscode.dev/redirect?url=vscode://ms-vscode-remote.remote-containers/cloneInVolume?url=https://github.com/Azure-Samples/chat-with-your-data-solution-accelerator) | [](https://vscode.dev/github/Azure-Samples/chat-with-your-data-solution-accelerator) |
-|---|---|---|
+Select either "PostgreSQL" or "Cosmos DB":
+
-> [!NOTE]
-> Some tenants may have additional security restrictions that run periodically and could impact the application (for example, blocking public network access). If you experience issues or the application stops working, check if these restrictions are the cause. Consider deploying the WAF-supported version to ensure compliance. To configure, see the [post-deployment hardening guide](docs/AVMPostDeploymentGuide.md).
-
-> [!IMPORTANT]
-> Check Azure OpenAI quota availability before deploying. Follow the [quota check instructions guide](docs/QuotaCheck.md) to confirm sufficient capacity in your subscription.
-
-### After you deploy
-
-Once `azd up` finishes, it prints the web app URL. Open it, then:
-
-1. Go to the [admin experience](docs/admin.md) to upload documents or index web pages so the assistant has content to ground on.
-2. Wait for ingestion to finish, then return to the chat page and ask a question about your data.
-3. Confirm answers include inline citations that link back to the source documents.
-### Clean up
+**When Deployment is complete:**
-Remove every resource this accelerator created:
+1. Run the post-deployment setup script to configure the Function App client key and create PostgreSQL tables (if applicable). Open [Azure Cloud Shell](https://shell.azure.com) (Bash) and run:
```bash
azd down
diff --git a/docs/DeploymentGuide.md b/docs/DeploymentGuide.md
index 99262274e..e69de29bb 100644
--- a/docs/DeploymentGuide.md
+++ b/docs/DeploymentGuide.md
@@ -1,541 +0,0 @@
----
-title: Deployment Guide
-description: Step-by-step guide to deploy the Chat with Your Data solution accelerator to Azure using the Azure Developer CLI.
-ms.date: 2026-07-23
-ms.topic: how-to
----
-
-[Back to *Chat with your data* README](../README.md)
-
-# Deployment Guide
-
-## Overview
-
-This guide walks you through deploying Chat with Your Data to Azure. The deployment takes approximately 25-30 minutes for the default configuration and includes infrastructure provisioning, container image builds, and application setup.
-
-> [!TIP]
-> If you encounter any issues during deployment, check the [Troubleshooting Guide](./TroubleShootingSteps.md) for solutions to common problems.
-
-> [!NOTE]
-> Some tenants may have additional security restrictions that run periodically and could impact the application (for example, blocking public network access). If you experience issues or the application stops working, check if these restrictions are the cause. Consider deploying the WAF-supported version to ensure compliance. To configure, see [Section 3.1](#31-choose-deployment-type-optional).
-
-## Step 1: Prerequisites & Setup
-
-### 1.1 Azure account requirements
-
-Ensure you have access to an [Azure subscription](https://azure.microsoft.com/free/) with the following permissions:
-
-| Required permission/role | Scope | Purpose |
-|--------------------------|-------|---------|
-| Contributor | Subscription level | Create and manage Azure resources |
-| User Access Administrator | Subscription level | Manage user access and role assignments |
-| Role Based Access Control Admin | Subscription/Resource Group level | Configure RBAC permissions |
-
-For detailed setup instructions, follow [Azure Account Set Up](./azure_account_setup.md).
-
-### 1.2 Check service availability & quota
-
-Before proceeding, ensure your chosen region has all required services available:
-
-**Required Azure services:**
-
-- [Azure AI Foundry](https://learn.microsoft.com/azure/ai-foundry/)
-- [Azure OpenAI Service](https://learn.microsoft.com/azure/ai-services/openai/)
-- [Azure AI Search](https://learn.microsoft.com/azure/search/)
-- [Azure Container Apps](https://learn.microsoft.com/azure/container-apps/)
-- [Azure Container Registry](https://learn.microsoft.com/azure/container-registry/)
-- [Azure Functions](https://learn.microsoft.com/azure/azure-functions/)
-- [Azure Document Intelligence](https://learn.microsoft.com/azure/ai-services/document-intelligence/)
-- [Azure Cosmos DB](https://learn.microsoft.com/azure/cosmos-db/) (`cosmosdb` mode)
-- [Azure Database for PostgreSQL](https://learn.microsoft.com/azure/postgresql/) (`postgresql` mode)
-
-**Recommended regions:** East US, East US 2, Australia East, UK South, France Central
-
-Check the [Azure Products by Region](https://azure.microsoft.com/explore/global-infrastructure/products-by-region/?products=all®ions=all) page to verify service availability in your target region.
-
-### 1.3 Quota check (recommended)
-
-Check your Azure OpenAI quota availability before deployment. Follow the [Quota Check Instructions](./QuotaCheck.md) to ensure sufficient model capacity, then review [Azure OpenAI Model Quota Settings](./azure_openai_model_quota_settings.md) to adjust if needed.
-
-## Step 2: Choose Your Deployment Environment
-
-Select one of the following options to set up your deployment environment:
-
-### Environment comparison
-
-| Option | Best for | Prerequisites | Setup time |
-|--------|----------|---------------|------------|
-| GitHub Codespaces | Quick deployment, no local setup required | GitHub account | 3-5 minutes |
-| VS Code Dev Containers | Fast deployment with local tools | Docker Desktop, VS Code | 5-10 minutes |
-| Visual Studio Code (Web) | Quick deployment, no local setup required | Azure account | 2-4 minutes |
-| Local environment | Enterprise environments, full control | All tools individually | 15-30 minutes |
-
-> [!TIP]
-> For the fastest deployment, start with **GitHub Codespaces** — no local installation required.
-
----
-
-
-Option A: GitHub Codespaces (Easiest)
-
-[](https://codespaces.new/Azure-Samples/chat-with-your-data-solution-accelerator)
-
-1. Click the badge above (may take several minutes to load)
-2. Accept default values on the Codespaces creation page
-3. Wait for the environment to initialize (includes all deployment tools)
-4. Proceed to [Step 3: Configure Deployment Settings](#step-3-configure-deployment-settings)
-
-
-
-
-Option B: VS Code Dev Containers
-
-[](https://vscode.dev/redirect?url=vscode://ms-vscode-remote.remote-containers/cloneInVolume?url=https://github.com/Azure-Samples/chat-with-your-data-solution-accelerator)
-
-> [!NOTE]
-> macOS developers on Apple Silicon (ARM64): the Dev Container will **not** work due to a limitation with the Azure Functions Core Tools ([see issue](https://github.com/Azure/azure-functions-core-tools/issues/3112)). Use Option D (Local Environment) instead.
-
-**Prerequisites:**
-
-- [Docker Desktop](https://www.docker.com/products/docker-desktop/) installed and running
-- [VS Code](https://code.visualstudio.com/) with the [Dev Containers extension](https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.remote-containers)
-
-**Steps:**
-
-1. Start Docker Desktop
-2. Click the badge above to open in Dev Containers
-3. Wait for the container to build and start (includes all deployment tools)
-4. Proceed to [Step 3: Configure Deployment Settings](#step-3-configure-deployment-settings)
-
-> [!TIP]
-> VS Code should recognize the available dev container and prompt you to reopen the folder in it. For more details, see [Open an existing folder in a container](https://code.visualstudio.com/docs/remote/containers#_quick-start-open-an-existing-folder-in-a-container).
-
-
-
-
-Option C: Visual Studio Code (Web)
-
-[](https://vscode.dev/github/Azure-Samples/chat-with-your-data-solution-accelerator)
-
-1. Click the badge above (may take a few minutes to load)
-2. Sign in with your Azure account when prompted
-3. Wait for the environment to initialize
-4. Authenticate with Azure using device code authentication:
-
- ```shell
- az login --use-device-code
- ```
-
- > [!NOTE]
- > In VS Code Web, the regular `az login` command may fail. Use the `--use-device-code` flag to authenticate via browser device code flow.
-
-5. Proceed to [Step 3: Configure Deployment Settings](#step-3-configure-deployment-settings)
-
-
-
-
-Option D: Local Environment
-
-**Required tools:**
-
-- [VS Code](https://code.visualstudio.com/) with extensions:
- - [Azure Functions](https://marketplace.visualstudio.com/items?itemName=ms-azuretools.vscode-azurefunctions)
- - [Azure Tools](https://marketplace.visualstudio.com/items?itemName=ms-vscode.vscode-node-azure-pack)
- - [Bicep](https://marketplace.visualstudio.com/items?itemName=ms-azuretools.vscode-bicep)
- - [Pylance](https://marketplace.visualstudio.com/items?itemName=ms-python.vscode-pylance)
- - [Python](https://marketplace.visualstudio.com/items?itemName=ms-python.python)
-- [Python 3.11](https://www.python.org/downloads/release/python-3119/)
-- [Node.js LTS](https://nodejs.org/en)
-- [Azure Developer CLI](https://learn.microsoft.com/azure/developer/azure-developer-cli/install-azd) (v1.18.0+, not v1.23.9)
-- [Azure CLI](https://learn.microsoft.com/cli/azure/install-azure-cli) (v2.87.0+ required for post-deployment scripts)
-- [Bicep CLI](https://learn.microsoft.com/azure/azure-resource-manager/bicep/install) (v0.33.0+)
-- [Azure Functions Core Tools](https://docs.microsoft.com/azure/azure-functions/functions-run-local)
-- [Git](https://git-scm.com/downloads)
-- [PowerShell 7.0+](https://learn.microsoft.com/powershell/scripting/install/installing-powershell)
-
-**Setup steps:**
-
-1. Install all required tools listed above
-2. Clone the repository:
-
- ```shell
- azd init -t chat-with-your-data-solution-accelerator
- ```
-
-3. Open the project folder in your terminal
-4. Run the environment setup script:
-
- ```bash
- .devcontainer/setupEnv.sh
- ```
-
-5. Select the Python interpreter in VS Code:
- - Open the command palette (`Ctrl+Shift+P`)
- - Type `Python: Select Interpreter`
- - Select the Python 3.11 environment created by `uv`
-6. Proceed to [Step 3: Configure Deployment Settings](#step-3-configure-deployment-settings)
-
-**PowerShell users:** If you encounter script execution issues, run:
-
-```powershell
-Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass
-```
-
-
-
-## Step 3: Configure Deployment Settings
-
-Review the configuration options below. You can customize any settings that meet your needs, or leave them as defaults to proceed with a standard deployment.
-
-### 3.1 Choose Deployment Type (Optional)
-
-| Aspect | Development/Testing (Default) | Production |
-|--------|-------------------------------|------------|
-| Configuration file | `main.parameters.json` (sandbox) | Copy `main.waf.parameters.json` to `main.parameters.json` |
-| Security controls | Minimal (for rapid iteration) | Enhanced (production best practices) |
-| Cost | Lower costs | Cost optimized |
-| Use case | POCs, development, testing | Production workloads |
-| Framework | Basic configuration | [Well-Architected Framework](https://learn.microsoft.com/azure/well-architected/) |
-| Features | Core functionality | Reliability, security, operational excellence |
-
-**To use production configuration:**
-
-1. Navigate to the `infra` folder in your project
-2. Open `main.waf.parameters.json` in a text editor
-3. Select all content and copy it
-4. Open `main.parameters.json` in the same editor
-5. Replace all existing content with the copied content
-6. Save the file
-
-### 3.2 Set VM credentials (Optional — production only)
-
-> [!NOTE]
-> This section only applies if you selected **Production** deployment type in section 3.1. VMs are not deployed in the default Development/Testing configuration.
-
-By default, random GUIDs are generated for VM credentials. To set custom credentials:
-
-```shell
-azd env set AZURE_ENV_VM_ADMIN_USERNAME
-azd env set AZURE_ENV_VM_ADMIN_PASSWORD
-```
-
-### 3.3 Advanced configuration (Optional)
-
-
-Configurable parameters
-
-You can customize various deployment settings before running `azd up`, including Azure regions, AI model configurations (deployment type, version, capacity), container registry settings, and resource names.
-
-See [Parameter Customization Guide](./customizing_azd_parameters.md) for the full list of available parameters and their usage.
-
-`azd up` also accepts the following key parameters at the prompt:
-
-| Parameter | Values | Notes |
-|-----------|--------|-------|
-| `databaseType` | `cosmosdb` (default), `postgresql` | Retrieval index and chat history platform. Locked after deployment. |
-| `azureAiServiceLocation` | Azure region | Region for Azure AI Foundry models. Defaults to `eastus2`. |
-| `enableMonitoring` | `true`, `false` | Adds Log Analytics and Application Insights. Defaults to `false`. |
-| `enableScalability` | `true`, `false` | Reliability and scale flag. Defaults to `false`. |
-| `enableRedundancy` | `true`, `false` | Redundancy flag. Defaults to `false`. |
-| `enablePrivateNetworking` | `true`, `false` | Adds a virtual network, private DNS, and a bastion host. Defaults to `false`. |
-
-
-
-
-Reuse existing resources
-
-To optimize costs and integrate with your existing Azure infrastructure, you can configure the solution to reuse compatible resources already deployed in your subscription.
-
-**Supported resources for reuse:**
-
-- Log Analytics Workspace: integrate with your existing monitoring infrastructure by reusing an established Log Analytics workspace for centralized logging and monitoring.
-- Resource Group: leverage an existing resource group to organize resources within your current Azure infrastructure. Follow the [setup steps here](./re-use-resource-group.md) before running `azd up`.
-
-**Key benefits:**
-
-- Eliminate duplicate resource charges by reusing existing services.
-- Maintain unified monitoring across your Azure infrastructure.
-- Skip resource creation for existing compatible services to speed up provisioning.
-- Reduce the number of resources to manage and monitor.
-
-**Important considerations:**
-
-- Ensure existing resources meet the solution's requirements and are in compatible regions.
-- Review access permissions and configurations before reusing resources.
-- Consider the impact on existing workloads when sharing resources.
-
-
-
-## Step 4: Deploy the Solution
-
-> [!TIP]
-> If you encounter any issues during deployment, check the [Troubleshooting Guide](./TroubleShootingSteps.md) for common solutions.
-
-### 4.1 Authenticate with Azure
-
-```shell
-azd auth login
-```
-
-**For specific tenants:**
-
-```shell
-azd auth login --tenant-id
-```
-
-> [!TIP]
-> To find your Tenant ID: open the [Azure Portal](https://portal.azure.com/), navigate to **Microsoft Entra ID**, and copy the **Tenant ID** from the Overview page.
-
-### 4.2 Start deployment
-
-> [!NOTE]
-> If you are running azd version 1.23.9, run the following command first:
->
-> ```bash
-> azd config set provision.preflight off
-> ```
-
-```shell
-azd up
-```
-
-**During deployment, you will be prompted for:**
-
-1. Environment name (e.g., `cwyd`) — must be 3-16 characters, alphanumeric only
-2. Azure subscription selection
-3. Location — the region where your infrastructure resources will be deployed
-4. Resource group selection (create new or use existing)
-
-**Expected duration:** 25-30 minutes for the default configuration
-
-> [!NOTE]
-> If you encounter errors or timeouts, try a different region as there may be capacity constraints. For detailed error solutions, see the [Troubleshooting Guide](./TroubleShootingSteps.md).
-
-**What `azd up` does:**
-
-```mermaid
-flowchart TD
- A[azd auth login] --> B[azd up]
- B --> C[Provision infra via Bicep]
- C --> D[Print post-deployment steps]
- D --> E[Application URL printed]
-```
-
-`azd up` provisions the Azure infrastructure only. It does not build the application images or ingest data — those are manual steps you complete in [Step 5](#step-5-post-deployment-configuration).
-
-1. Provisions the resource group contents described in [Architecture overview](architecture.md) using Bicep — Container Apps, container registry, Azure OpenAI, the search or database resources, and supporting services.
-2. Creates the three Container Apps (frontend, backend, ingestion) running a temporary placeholder image.
-3. Prints the post-deployment commands you run next to build the application images and configure the data plane.
-
-### 4.3 Get application URL
-
-After successful deployment, `azd` prints the application URL in the terminal. You can also locate it manually:
-
-1. Open the [Azure Portal](https://portal.azure.com/)
-2. Navigate to your resource group
-3. Find the **Container Apps** — you will see the frontend, backend, and ingestion (function) services
-4. Click the frontend Container App and copy its **Application URL** from the overview page
-
-> [!IMPORTANT]
-> Complete [Post-Deployment Steps](#step-5-post-deployment-configuration) before accessing the application.
-
-### 4.4 Redeploy the application images
-
-`azd up` provisions infrastructure only, so there is no `azd deploy` step for this accelerator. To rebuild the application images and roll out new revisions to all three Container Apps after code changes, re-run the container workflow described in [Step 5.1](#51-build-push-and-update-container-images-required).
-
-## Step 5: Post-Deployment Configuration
-
-### 5.1 Run post-deployment setup script (Required)
-
-Run the post-deployment script to configure the Function App client key and create the PostgreSQL tables (when `databaseType=postgresql`).
-
-> [!IMPORTANT]
-> The post-deployment script requires **Azure CLI version 2.87.0 or later**. Check your installed version with `az version`. If it is earlier than 2.87.0, upgrade first with `az upgrade`.
-
-**PowerShell (Windows):**
-
-```powershell
-.\infra\scripts\post-provision\post_deployment_setup.ps1 -ResourceGroupName ""
-```
-
-**Bash (Linux/macOS/WSL):**
-
-```bash
-bash infra/scripts/post-provision/post_deployment_setup.sh ""
-```
-
-> [!NOTE]
-> The script auto-discovers all resources in the resource group. It handles private networking (WAF) deployments by temporarily enabling public access, performing the setup, then restoring the original state.
-
-### 5.2 Build, push, and update container images (Required)
-
-`azd up` provisions the Container Apps with a temporary placeholder image. Run the combined container workflow to build the application images, push them to your Azure Container Registry, and roll out new revisions to all three Container Apps (frontend, backend, ingestion).
-
-**Login to Azure CLI:**
-
-```shell
-az login
-```
-
-**For specific tenants:**
-
-```shell
-az login --tenant-id
-```
-
-**PowerShell (Windows):**
-
-```powershell
-.\infra\scripts\post-provision\acr_build_push_update.ps1 -ResourceGroupName ""
-```
-
-**Bash (Linux/macOS/WSL):**
-
-```bash
-bash infra/scripts/post-provision/acr_build_push_update.sh -g ""
-```
-
-This script builds and pushes the images to your ACR using ACR Tasks (remote build — no local Docker required), updates each Container App to pull its image from your private ACR using managed-identity authentication, and restarts all services. It works for both standard and private-networking (WAF) deployments by temporarily unlocking the registry for the build and re-locking it afterwards.
-
-> [!TIP]
-> Pass a custom image tag with `-Tag ` in PowerShell or `-t ` in Bash (default: `latest`).
-
-> [!NOTE]
-> If you re-run `azd provision`, run this script again to restore the correct container images.
-
-### 5.3 Configure authentication (Required for chat application)
-
-Authentication is mandatory for the chat application to be accessible:
-
-1. Follow [App Authentication Configuration](./authentication_setup.md)
-2. Wait up to 10 minutes for authentication changes to take effect
-
-### 5.4 Verify deployment
-
-1. Access your application using the URL from Step 4.3
-2. Confirm the application loads successfully
-3. Verify you can sign in with your authenticated account
-
-### 5.5 Test the application
-
-1. Navigate to the admin experience at `/admin` on your application URL, upload documents via **Ingest Data**, and add your data. Sample data is available in the [`data/`](../data) directory.
-2. Navigate to the chat application and start chatting on top of your data.
-
-## Step 6: Clean Up (Optional)
-
-### Remove all resources
-
-```shell
-azd down
-```
-
-> [!WARNING]
-> `azd down` permanently deletes all deployed resources and ingested data. Export anything you need before running this command.
-
-> [!NOTE]
-> If you deployed with `enableRedundancy=true` and Log Analytics workspace replication is enabled, you must first disable replication before running `azd down`, otherwise the resource group delete will fail. Follow the steps in [Handling Log Analytics Workspace Deletion with Replication Enabled](./LogAnalyticsReplicationDisable.md), wait until replication returns `false`, then run `azd down`.
-
-### Manual cleanup (if needed)
-
-If deployment fails or you need to clean up manually, follow the [Delete Resource Group Guide](./delete_resource_group.md).
-
-## Managing Multiple Environments
-
-### Recover from failed deployment
-
-
-Recover from failed deployment
-
-If your deployment failed or encountered errors:
-
-1. Try a different region by creating a new environment and selecting a different Azure region during deployment.
-2. Clean up and retry: use `azd down` to remove failed resources, then `azd up` to redeploy.
-3. Create a completely new environment with a different name for a fresh start.
-
-**Example recovery workflow:**
-
-```shell
-# Remove failed deployment (optional)
-azd down
-
-# Create new environment (3-16 chars, alphanumeric only)
-azd env new cwydretry
-
-# Deploy with different settings/region
-azd up
-```
-
-
-
-### Create a new environment
-
-
-Create a new environment
-
-If you need to deploy to a different region, test different configurations, or create additional environments:
-
-```shell
-# Create a new named environment (3-16 characters, alphanumeric only)
-azd env new
-
-# Select the new environment
-azd env select
-
-# Deploy to the new environment
-azd up
-```
-
-> **Environment name requirements:**
-> - Length: 3-16 characters
-> - Characters: alphanumeric only (letters and numbers)
-> - Valid examples: `cwyd`, `test123`, `myappdev`, `prod2024`
-> - Invalid examples: `cd` (too short), `my-very-long-environment-name` (too long), `test_env` (underscore not allowed), `myapp-dev` (hyphen not allowed)
-
-
-
-### Switch between environments
-
-
-Switch between environments
-
-```shell
-# List all environments
-azd env list
-
-# Switch to a different environment
-azd env select
-
-# View current environment variables
-azd env get-values
-```
-
-
-
-### Best practices for multiple environments
-
-- Use descriptive names such as `cwyddev`, `cwydprod`, `cwydtest` (3-16 chars, alphanumeric only).
-- Deploy to multiple regions for testing quota availability.
-- Each environment can have different parameter settings.
-- Use `azd down` to remove environments you no longer need and avoid unnecessary costs.
-
-## Deploy using Bicep directly
-
-If you prefer not to use `azd`, you can deploy using the Bicep file directly. A [Bicep file](../infra/main.bicep) is used to generate the [ARM template](../infra/main.json).
-
-```sh
-az deployment sub create --template-file ./infra/main.bicep --subscription {your_azure_subscription_id} --location {your_preferred_location}
-```
-
-## Next steps
-
-- [Architecture overview](./architecture.md) — understand the system design and components
-- [Admin and configuration](./admin.md) — ingest documents and configure prompts
-- [Local development setup](./LocalDevelopmentSetup.md) — set up your local environment for debugging
-- [Customize azd parameters](./customizing_azd_parameters.md) — advanced parameter customization
-- [Troubleshooting](./TroubleShootingSteps.md) — common issues and fixes
-
-## Need help?
-
-- Check the [Troubleshooting Guide](./TroubleShootingSteps.md) for common issues.
-- Open an issue in the [GitHub repository](https://github.com/Azure-Samples/chat-with-your-data-solution-accelerator/issues).
-- Review the [Contributing Guide](../CONTRIBUTING.md) for development guidance.
diff --git a/docs/authentication_setup.md b/docs/authentication_setup.md
index 9d8ce6285..a64b176c0 100644
--- a/docs/authentication_setup.md
+++ b/docs/authentication_setup.md
@@ -1,6 +1,6 @@
---
title: Set up authentication
-description: Sign users in to Chat with Your Data with Microsoft Entra ID through Azure Container Apps built-in authentication, and control who can reach the admin area.
+description: Sign users in to Chat with Your Data with Microsoft Entra ID through Azure Container Apps built-in authentication.
ms.date: 2026-07-03
ms.topic: how-to
---
@@ -9,56 +9,36 @@ ms.topic: how-to

-## Overview
+# Set Up Authentication in Azure Container Apps
-Chat with Your Data signs users in with Microsoft Entra ID through the built-in authentication of Azure Container Apps (Easy Auth). Sign-in is enforced at the platform, before a request reaches the app, so the application never handles passwords or tokens of its own. The workload authenticates to Azure with a managed identity, so there are no application secrets to store or rotate. See [Managed identity and RBAC](managed_identity.md) for that side of the identity model.
-
-When authentication is enabled, three things follow:
-
-- Users must sign in before they can open the web app.
-- Each signed-in user sees only their own chat history, because the app reads the caller's identity from the platform and partitions history on it.
-- You choose which users can reach the admin area, where documents and application settings are managed.
-
-Sign-in is optional for local development. With no identity provider configured, the app runs as a single shared default user and every feature still works.
+This document provides step-by-step instructions to enable Microsoft Entra ID authentication on the frontend Container App (`ca-frontend-`), the public web UI.
## Prerequisites
-- Access to Microsoft Entra ID, with permission to create and manage app registrations.
-- A deployed environment. Follow [Deploy with azd](LOCAL_DEPLOYMENT.md) first, and note the web app's public URL (its fully qualified domain name).
-
-## Step 1: Register an application in Microsoft Entra ID
-
-An app registration represents Chat with Your Data to Microsoft Entra ID. The built-in authentication uses it to sign users in.
+- Access to **Microsoft Entra ID**
+- Necessary permissions to create and manage **App Registrations**
-1. In the Azure portal, go to **Microsoft Entra ID** > **App registrations** > **New registration**.
-2. Enter a name for the application.
-3. Under **Supported account types**, select **Accounts in this organizational directory only (single tenant)**.
-4. Under **Redirect URI**, select the **Web** platform and enter the sign-in callback for your deployment: `https:///.auth/login/aad/callback`.
-5. Select **Register**.
+## Step 1: Add Authentication in the frontend Container App
-To add or change the redirect URI later, open the app registration, go to **Authentication** > **Add a platform** > **Web**, enter the same callback URL, and select **Save**.
+1. Open the frontend Container App (`ca-frontend-`) and click on `Authentication` from the left menu.
-Note the **Application (client) ID** and **Directory (tenant) ID** from the overview page. You need them in the next step. Treat these as environment-specific values and keep them out of source control.
+ 
-## Step 2: Turn on authentication for the web app
+2. Click on `+ Add identity provider` to see a list of identity providers.
-1. In the Azure portal, open the web app's Container App and select **Settings** > **Authentication** > **Add identity provider**.
-2. Choose **Microsoft** as the identity provider.
-3. Select **Pick an existing app registration in this directory** and choose the application you registered in Step 1.
-4. Under **Restrict access**, select **Require authentication** so unauthenticated visitors are redirected to sign in.
-5. Select **Add**.
+ 
-Visitors are now prompted to sign in with Microsoft Entra ID before the web app loads.
+3. Click on `Identity Provider` dropdown to see a list of identity providers.
-## Step 3: Choose who can reach the admin area
+ 
-Any signed-in user can open the chat experience and see only their own history. The admin pages (where documents are ingested, removed, and application settings are changed) are meant for a smaller group. Because the platform attests each caller's identity before the request reaches the app, you control admin access at the identity provider rather than inside the application. Choose one of these approaches:
+4. Select the first option `Microsoft Entra Id` from the drop-down list and select `client secret expiration` under App registration.
+> NOTE: If `Create new app registration` is disabled, then go to [Create new app registration](create_new_app_registration.md) and come back to this step to complete the app authentication.
-- **Require an app role or group.** Define an app role (for example, `Admin`) on the app registration, assign it to your administrators, and require that role or a security group at the identity provider so only its members can sign in. Only members of that role or group can sign in and reach the app, including its admin pages, so the admin surface stays closed to everyone else. The app does not vary what it renders by role; access is enforced entirely at the identity provider.
-- **Restrict how the backend is reached.** Keep the backend reachable only from the web app's own origin or a private network, so the admin routes cannot be called directly by arbitrary clients.
+ 
-Use either approach on its own or both together. Both keep the admin surface closed to the general audience while leaving chat open to every signed-in user.
+5. Accept the default values and click on `Add` button to go back to the previous page with the identity provider added.
-## How sign-in works
+ 
-Once an identity provider is configured, the platform signs the user in and exposes the signed-in principal to the web app at the `/.auth/me` endpoint on the app's own origin. The app reads the user's stable identifier from that principal and forwards it on every API call, which is how each person's chat history stays isolated. That forwarded identifier is a partition key for history, not a security boundary; the real check is the identity provider at the platform, which attests and injects the caller's identity before any request reaches the app. When no identity provider is present, the app falls back to a shared default user, which is why local development needs no sign-in setup.
+6. You have successfully added app authentication, and now required to log in to access the application.
\ No newline at end of file
diff --git a/docs/create_new_app_registration.md b/docs/create_new_app_registration.md
new file mode 100644
index 000000000..c7ddc2fde
--- /dev/null
+++ b/docs/create_new_app_registration.md
@@ -0,0 +1,35 @@
+# Creating a new App Registration
+
+1. Click on `Home` and select `Microsoft Entra ID`.
+
+
+
+2. Click on `App registrations`.
+
+
+
+3. Click on `+ New registration`.
+
+
+
+4. Provide the `Name`, select supported account types as `Accounts in this organizational directory only(Contoso only - Single tenant)`, select platform as `Web`, enter/select the `URL` and register.
+
+
+
+5. After application is created successfully, then click on `Add a Redirect URL`.
+
+
+
+6. Click on `+ Add redirect URI`.
+
+
+
+7. Click on `Web`.
+
+
+
+8. Enter the frontend Container App's callback `URL` and Save. Then go back to [Set Up Authentication in Azure Container Apps](authentication_setup.md) Step 1 and follow from _Point 4_: choose `Pick an existing app registration in this directory` from the Add an identity provider page and provide the newly registered App Name.
+
+E.g. `https:///.auth/login/aad/callback`
+
+
diff --git a/docs/images/AddDetails.png b/docs/images/AddDetails.png
new file mode 100644
index 000000000..f5946c6db
Binary files /dev/null and b/docs/images/AddDetails.png differ
diff --git a/docs/images/AddPlatform.png b/docs/images/AddPlatform.png
new file mode 100644
index 000000000..2424f2a8f
Binary files /dev/null and b/docs/images/AddPlatform.png differ
diff --git a/docs/images/AddRedirectURL.png b/docs/images/AddRedirectURL.png
new file mode 100644
index 000000000..d5cbcfac4
Binary files /dev/null and b/docs/images/AddRedirectURL.png differ
diff --git a/docs/images/AppAuthIdentityProvider.png b/docs/images/AppAuthIdentityProvider.png
new file mode 100644
index 000000000..29b538c89
Binary files /dev/null and b/docs/images/AppAuthIdentityProvider.png differ
diff --git a/docs/images/AppAuthIdentityProviderAdd.png b/docs/images/AppAuthIdentityProviderAdd.png
new file mode 100644
index 000000000..0d0262f09
Binary files /dev/null and b/docs/images/AppAuthIdentityProviderAdd.png differ
diff --git a/docs/images/AppAuthIdentityProviderAdded.png b/docs/images/AppAuthIdentityProviderAdded.png
new file mode 100644
index 000000000..04cf84615
Binary files /dev/null and b/docs/images/AppAuthIdentityProviderAdded.png differ
diff --git a/docs/images/AppAuthentication.png b/docs/images/AppAuthentication.png
new file mode 100644
index 000000000..d542c1be2
Binary files /dev/null and b/docs/images/AppAuthentication.png differ
diff --git a/docs/images/AppAuthenticationIdentity.png b/docs/images/AppAuthenticationIdentity.png
new file mode 100644
index 000000000..6ebb59866
Binary files /dev/null and b/docs/images/AppAuthenticationIdentity.png differ
diff --git a/docs/images/Appregistrations.png b/docs/images/Appregistrations.png
new file mode 100644
index 000000000..af2d3ae44
Binary files /dev/null and b/docs/images/Appregistrations.png differ
diff --git a/docs/images/MicrosoftEntraID.png b/docs/images/MicrosoftEntraID.png
new file mode 100644
index 000000000..1f24b89d0
Binary files /dev/null and b/docs/images/MicrosoftEntraID.png differ
diff --git a/docs/images/NewRegistration.png b/docs/images/NewRegistration.png
new file mode 100644
index 000000000..288f9af5a
Binary files /dev/null and b/docs/images/NewRegistration.png differ
diff --git a/docs/images/Web.png b/docs/images/Web.png
new file mode 100644
index 000000000..d997cbd3a
Binary files /dev/null and b/docs/images/Web.png differ
diff --git a/docs/images/WebAppURL.png b/docs/images/WebAppURL.png
new file mode 100644
index 000000000..40c6740e9
Binary files /dev/null and b/docs/images/WebAppURL.png differ
diff --git a/infra/vscode_web/.gitignore b/infra/vscode_web/.gitignore
new file mode 100644
index 000000000..12dfb2399
--- /dev/null
+++ b/infra/vscode_web/.gitignore
@@ -0,0 +1,26 @@
+# ========== Python ========== #
+__pycache__/
+*.py[cod]
+*$py.class
+env/
+venv/
+ENV/
+.venv/
+.env*
+dist/
+build/
+*.spec
+.ipynb_checkpoints/
+
+# ========== General ========== #
+*.log
+.DS_Store
+Thumbs.db
+ehthumbs.db
+Desktop.ini
+*.swp
+*.swo
+*.bak
+*.tmp
+*.old
+node_modules/
diff --git a/infra/vscode_web/README.md b/infra/vscode_web/README.md
new file mode 100644
index 000000000..1ff33b7a3
--- /dev/null
+++ b/infra/vscode_web/README.md
@@ -0,0 +1,33 @@
+# Chat with Your Data — VS Code for the Web
+
+This is a lightweight environment for deploying **Chat with Your Data** to your own Azure subscription directly from the browser. A terminal has opened with the solution already cloned via `azd init`.
+
+Follow the steps below to get started.
+
+## Deploy the solution
+
+Provision the Azure infrastructure with:
+
+```bash
+azd up
+```
+
+You are prompted for an environment name, an Azure subscription, and a region. When it finishes, `azd` prints the application URL.
+
+> **Important:** `azd up` provisions the infrastructure only. Before the application works, complete the post-deployment steps — build and push the container images and run the setup script — as described in [Step 5 of the Deployment Guide](https://github.com/Azure-Samples/chat-with-your-data-solution-accelerator/blob/main/docs/DeploymentGuide.md#step-5-post-deployment-configuration).
+
+## Tear down
+
+To delete the deployment and stop incurring charges, run:
+
+```bash
+azd down
+```
+
+## Continue on your desktop
+
+You can keep working locally on VS Code Desktop by clicking **Continue On Desktop...** at the bottom-left of this screen. Take the `.env` file with you first:
+
+- Right-click the `.env` file and select **Download**.
+- Move the file from your Downloads folder into the cloned repository directory.
+- On Windows, rename it back to `.env` (right-click > **Rename...**).
diff --git a/infra/vscode_web/codeSample.py b/infra/vscode_web/codeSample.py
new file mode 100644
index 000000000..b44bd2384
--- /dev/null
+++ b/infra/vscode_web/codeSample.py
@@ -0,0 +1,24 @@
+"""Minimal Azure AI Foundry project client sample for Chat with Your Data.
+
+After `azd up` provisions the solution, the deployed Azure AI Foundry project
+endpoint becomes available. This snippet connects to it with your Azure
+credentials so you can start building on top of the project from code. Set
+AZURE_EXISTING_AIPROJECT_ENDPOINT in the .env file to the project endpoint
+printed by the deployment before running it.
+"""
+
+import os
+
+from azure.ai.projects import AIProjectClient
+from azure.identity import DefaultAzureCredential
+
+endpoint = os.environ["AZURE_EXISTING_AIPROJECT_ENDPOINT"]
+
+project = AIProjectClient(
+ credential=DefaultAzureCredential(),
+ endpoint=endpoint,
+)
+
+# List the agents defined on the project as a connectivity check.
+for agent in project.agents.list_agents():
+ print(f"{agent.id}: {agent.name}")
diff --git a/infra/vscode_web/endpoint-requirements.txt b/infra/vscode_web/endpoint-requirements.txt
new file mode 100644
index 000000000..63d9abf7d
--- /dev/null
+++ b/infra/vscode_web/endpoint-requirements.txt
@@ -0,0 +1,4 @@
+azure-ai-projects==1.0.0b12
+azure-identity==1.20.0
+ansible-core~=2.17.0
+packaging
diff --git a/infra/vscode_web/env.sample b/infra/vscode_web/env.sample
new file mode 100644
index 000000000..f2914bfd9
--- /dev/null
+++ b/infra/vscode_web/env.sample
@@ -0,0 +1,5 @@
+AZURE_ENV_NAME="<%= playgroundName %>"
+# AZURE_LOCATION="<%= location %>"
+AZURE_SUBSCRIPTION_ID="<%= subscriptionId %>"
+# AZURE_EXISTING_AIPROJECT_ENDPOINT="<%= endpoint %>"
+AZD_ALLOW_NON_EMPTY_FOLDER=true
diff --git a/infra/vscode_web/index.json b/infra/vscode_web/index.json
new file mode 100644
index 000000000..364b35e3c
--- /dev/null
+++ b/infra/vscode_web/index.json
@@ -0,0 +1,40 @@
+{
+ "ai-projects-sdk": {
+ "python": {
+ "default-azure-auth": {
+ "endpoint": [
+ {
+ "name": "run_agent.py",
+ "type": "code",
+ "path": "/codeSample.py"
+ },
+ {
+ "name": "INSTRUCTIONS.md",
+ "type": "readme",
+ "path": "/README.md"
+ },
+ {
+ "name": "requirements.txt",
+ "type": "dependencies",
+ "path": "/endpoint-requirements.txt"
+ },
+ {
+ "name": ".env",
+ "type": "env",
+ "path": "/env.sample"
+ },
+ {
+ "name": "install.sh",
+ "type": "install",
+ "path": "/install.sh"
+ },
+ {
+ "name": ".gitignore",
+ "type": "code",
+ "path": "/.gitignore"
+ }
+ ]
+ }
+ }
+ }
+}
diff --git a/infra/vscode_web/install.sh b/infra/vscode_web/install.sh
new file mode 100644
index 000000000..7edf5ba63
--- /dev/null
+++ b/infra/vscode_web/install.sh
@@ -0,0 +1,3 @@
+pip install -r requirements.txt --user -q
+
+azd init -t Azure-Samples/chat-with-your-data-solution-accelerator
diff --git a/package-lock.json b/package-lock.json
index 08d592c33..076103162 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -3297,6 +3297,17 @@
"@babel/types": "^7.28.2"
}
},
+ "node_modules/@types/chai": {
+ "version": "5.2.3",
+ "resolved": "https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@types/chai/-/chai-5.2.3.tgz",
+ "integrity": "sha1-jpzZ4cNYH6azQaWu1ViOsoW+C0o=",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@types/deep-eql": "*",
+ "assertion-error": "^2.0.1"
+ }
+ },
"node_modules/@types/debug": {
"version": "4.1.13",
"resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.13.tgz",
@@ -3306,6 +3317,13 @@
"@types/ms": "*"
}
},
+ "node_modules/@types/deep-eql": {
+ "version": "4.0.2",
+ "resolved": "https://ms-feed-2.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@types/deep-eql/-/deep-eql-4.0.2.tgz",
+ "integrity": "sha1-M0MRlx06BxIefrkbaEpgXn7qnL0=",
+ "dev": true,
+ "license": "MIT"
+ },
"node_modules/@types/estree": {
"version": "1.0.9",
"resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.9.tgz",
@@ -3719,86 +3737,115 @@
}
},
"node_modules/@vitest/expect": {
- "version": "2.1.9",
- "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-2.1.9.tgz",
- "integrity": "sha512-UJCIkTBenHeKT1TTlKMJWy1laZewsRIzYighyYiJKZreqtdxSos/S1t+ktRMQWu2CKqaarrkeszJx1cgC5tGZw==",
+ "version": "3.2.7",
+ "resolved": "https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@vitest/expect/-/expect-3.2.7.tgz",
+ "integrity": "sha1-cKNBWDg9AIw79dgC4mQzF/Cd9tg=",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@types/chai": "^5.2.2",
+ "@vitest/spy": "3.2.7",
+ "@vitest/utils": "3.2.7",
+ "chai": "^5.2.0",
+ "tinyrainbow": "^2.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/vitest"
+ }
+ },
+ "node_modules/@vitest/mocker": {
+ "version": "3.2.7",
+ "resolved": "https://ms-feed-12.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@vitest/mocker/-/mocker-3.2.7.tgz",
+ "integrity": "sha1-MxvpRMt4PGQt1CvXQ0EayiTqBGY=",
"dev": true,
"license": "MIT",
"dependencies": {
- "@vitest/spy": "2.1.9",
- "@vitest/utils": "2.1.9",
- "chai": "^5.1.2",
- "tinyrainbow": "^1.2.0"
+ "@vitest/spy": "3.2.7",
+ "estree-walker": "^3.0.3",
+ "magic-string": "^0.30.17"
},
"funding": {
"url": "https://opencollective.com/vitest"
+ },
+ "peerDependencies": {
+ "msw": "^2.4.9",
+ "vite": "^5.0.0 || ^6.0.0 || ^7.0.0-0"
+ },
+ "peerDependenciesMeta": {
+ "msw": {
+ "optional": true
+ },
+ "vite": {
+ "optional": true
+ }
}
},
"node_modules/@vitest/pretty-format": {
- "version": "2.1.9",
- "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-2.1.9.tgz",
- "integrity": "sha512-KhRIdGV2U9HOUzxfiHmY8IFHTdqtOhIzCpd8WRdJiE7D/HUcZVD0EgQCVjm+Q9gkUXWgBvMmTtZgIG48wq7sOQ==",
+ "version": "3.2.7",
+ "resolved": "https://ms-feed-12.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@vitest/pretty-format/-/pretty-format-3.2.7.tgz",
+ "integrity": "sha1-KntZP44Afp2O9+c0OqMOxz/eryk=",
"dev": true,
"license": "MIT",
"dependencies": {
- "tinyrainbow": "^1.2.0"
+ "tinyrainbow": "^2.0.0"
},
"funding": {
"url": "https://opencollective.com/vitest"
}
},
"node_modules/@vitest/runner": {
- "version": "2.1.9",
- "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-2.1.9.tgz",
- "integrity": "sha512-ZXSSqTFIrzduD63btIfEyOmNcBmQvgOVsPNPe0jYtESiXkhd8u2erDLnMxmGrDCwHCCHE7hxwRDCT3pt0esT4g==",
+ "version": "3.2.7",
+ "resolved": "https://ms-feed-2.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@vitest/runner/-/runner-3.2.7.tgz",
+ "integrity": "sha1-wMCAIoGJ8fps2kD1m+CddGsKylE=",
"dev": true,
"license": "MIT",
"dependencies": {
- "@vitest/utils": "2.1.9",
- "pathe": "^1.1.2"
+ "@vitest/utils": "3.2.7",
+ "pathe": "^2.0.3",
+ "strip-literal": "^3.0.0"
},
"funding": {
"url": "https://opencollective.com/vitest"
}
},
"node_modules/@vitest/snapshot": {
- "version": "2.1.9",
- "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-2.1.9.tgz",
- "integrity": "sha512-oBO82rEjsxLNJincVhLhaxxZdEtV0EFHMK5Kmx5sJ6H9L183dHECjiefOAdnqpIgT5eZwT04PoggUnW88vOBNQ==",
+ "version": "3.2.7",
+ "resolved": "https://ms-feed-2.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@vitest/snapshot/-/snapshot-3.2.7.tgz",
+ "integrity": "sha1-o6fhlQzpnsTPAjleIN3KQDtsgY4=",
"dev": true,
"license": "MIT",
"dependencies": {
- "@vitest/pretty-format": "2.1.9",
- "magic-string": "^0.30.12",
- "pathe": "^1.1.2"
+ "@vitest/pretty-format": "3.2.7",
+ "magic-string": "^0.30.17",
+ "pathe": "^2.0.3"
},
"funding": {
"url": "https://opencollective.com/vitest"
}
},
"node_modules/@vitest/spy": {
- "version": "2.1.9",
- "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-2.1.9.tgz",
- "integrity": "sha512-E1B35FwzXXTs9FHNK6bDszs7mtydNi5MIfUWpceJ8Xbfb1gBMscAnwLbEu+B44ed6W3XjL9/ehLPHR1fkf1KLQ==",
+ "version": "3.2.7",
+ "resolved": "https://ms-feed-12.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@vitest/spy/-/spy-3.2.7.tgz",
+ "integrity": "sha1-yn++5EAZUjykUDldmiKEzp7OHzE=",
"dev": true,
"license": "MIT",
"dependencies": {
- "tinyspy": "^3.0.2"
+ "tinyspy": "^4.0.3"
},
"funding": {
"url": "https://opencollective.com/vitest"
}
},
"node_modules/@vitest/utils": {
- "version": "2.1.9",
- "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-2.1.9.tgz",
- "integrity": "sha512-v0psaMSkNJ3A2NMrUEHFRzJtDPFn+/VWZ5WxImB21T9fjucJRmS7xCS3ppEnARb9y11OAzaD+P2Ps+b+BGX5iQ==",
+ "version": "3.2.7",
+ "resolved": "https://ms-feed-12.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@vitest/utils/-/utils-3.2.7.tgz",
+ "integrity": "sha1-MCyBJiEaxN/qh7O1CFwJjW0i6J4=",
"dev": true,
"license": "MIT",
"dependencies": {
- "@vitest/pretty-format": "2.1.9",
- "loupe": "^3.1.2",
- "tinyrainbow": "^1.2.0"
+ "@vitest/pretty-format": "3.2.7",
+ "loupe": "^3.1.4",
+ "tinyrainbow": "^2.0.0"
},
"funding": {
"url": "https://opencollective.com/vitest"
@@ -4037,8 +4084,8 @@
},
"node_modules/assertion-error": {
"version": "2.0.1",
- "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-2.0.1.tgz",
- "integrity": "sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==",
+ "resolved": "https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/assertion-error/-/assertion-error-2.0.1.tgz",
+ "integrity": "sha1-9kGhlrM1aQsQcL8AtudZP+wZC/c=",
"dev": true,
"license": "MIT",
"engines": {
@@ -4172,8 +4219,8 @@
},
"node_modules/cac": {
"version": "6.7.14",
- "resolved": "https://registry.npmjs.org/cac/-/cac-6.7.14.tgz",
- "integrity": "sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==",
+ "resolved": "https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/cac/-/cac-6.7.14.tgz",
+ "integrity": "sha1-gE4eb1Bu42PLDjzLsJytXdmHCVk=",
"dev": true,
"license": "MIT",
"engines": {
@@ -4279,8 +4326,8 @@
},
"node_modules/chai": {
"version": "5.3.3",
- "resolved": "https://registry.npmjs.org/chai/-/chai-5.3.3.tgz",
- "integrity": "sha512-4zNhdJD/iOjSH0A05ea+Ke6MU5mmpQcbQsSOkgdaUMJ9zTlDTD/GYlwohmIE2u0gaxHYiVHEn1Fw9mZ/ktJWgw==",
+ "resolved": "https://ms-feed-2.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/chai/-/chai-5.3.3.tgz",
+ "integrity": "sha1-3T2pVeJwkWpL0/Yl9LkZmWrafgY=",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -4353,8 +4400,8 @@
},
"node_modules/check-error": {
"version": "2.1.3",
- "resolved": "https://registry.npmjs.org/check-error/-/check-error-2.1.3.tgz",
- "integrity": "sha512-PAJdDJusoxnwm1VwW07VWwUN1sl7smmC3OKggvndJFadxxDRyFJBX/ggnu/KE4kQAB7a3Dp8f/YXC1FlUprWmA==",
+ "resolved": "https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/check-error/-/check-error-2.1.3.tgz",
+ "integrity": "sha1-JCc2ERe3DMqNyJaA6tMrFXAZyvU=",
"dev": true,
"license": "MIT",
"engines": {
@@ -4595,8 +4642,8 @@
},
"node_modules/deep-eql": {
"version": "5.0.2",
- "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-5.0.2.tgz",
- "integrity": "sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q==",
+ "resolved": "https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/deep-eql/-/deep-eql-5.0.2.tgz",
+ "integrity": "sha1-S3VtjXcKklcwCCXVKiws/5nDo0E=",
"dev": true,
"license": "MIT",
"engines": {
@@ -4896,8 +4943,8 @@
},
"node_modules/es-module-lexer": {
"version": "1.7.0",
- "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.7.0.tgz",
- "integrity": "sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA==",
+ "resolved": "https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/es-module-lexer/-/es-module-lexer-1.7.0.tgz",
+ "integrity": "sha1-kVlgFWGICoXyc0VgqQmbLDHlNyo=",
"dev": true,
"license": "MIT"
},
@@ -5257,8 +5304,8 @@
},
"node_modules/estree-walker": {
"version": "3.0.3",
- "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz",
- "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==",
+ "resolved": "https://ms-feed-12.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/estree-walker/-/estree-walker-3.0.3.tgz",
+ "integrity": "sha1-Z8PlSexAKkh7T8GT0ZU6UkdSNA0=",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -6587,8 +6634,8 @@
},
"node_modules/loupe": {
"version": "3.2.1",
- "resolved": "https://registry.npmjs.org/loupe/-/loupe-3.2.1.tgz",
- "integrity": "sha512-CdzqowRJCeLU72bHvWqwRBBlLcMEtIvGrlvef74kMnV2AolS9Y8xUv1I0U/MNAWMhBlKIoyuEgoJ0t/bbwHbLQ==",
+ "resolved": "https://ms-feed-2.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/loupe/-/loupe-3.2.1.tgz",
+ "integrity": "sha1-AJXPVtxbepp8CP9bGoeW7IrRfnY=",
"dev": true,
"license": "MIT"
},
@@ -6615,8 +6662,8 @@
},
"node_modules/magic-string": {
"version": "0.30.21",
- "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.21.tgz",
- "integrity": "sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==",
+ "resolved": "https://ms-feed-2.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/magic-string/-/magic-string-0.30.21.tgz",
+ "integrity": "sha1-VnY+wJoPqAkd8nh5/ZTRkHjADZE=",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -7906,16 +7953,16 @@
"license": "MIT"
},
"node_modules/pathe": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/pathe/-/pathe-1.1.2.tgz",
- "integrity": "sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==",
+ "version": "2.0.3",
+ "resolved": "https://ms-feed-2.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/pathe/-/pathe-2.0.3.tgz",
+ "integrity": "sha1-PsvsVUIWhbcKnahyss/z4cvtFxY=",
"dev": true,
"license": "MIT"
},
"node_modules/pathval": {
"version": "2.0.1",
- "resolved": "https://registry.npmjs.org/pathval/-/pathval-2.0.1.tgz",
- "integrity": "sha512-//nshmD55c46FuFw26xV/xFAaB5HF9Xdap7HJBBnrKdAd6/GxDBaNA1870O79+9ueg61cZLSVc+OaFlfmObYVQ==",
+ "resolved": "https://ms-feed-12.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/pathval/-/pathval-2.0.1.tgz",
+ "integrity": "sha1-iFXFooma8HLWrAXRHkYEWtDcYF0=",
"dev": true,
"license": "MIT",
"engines": {
@@ -8893,6 +8940,26 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
+ "node_modules/strip-literal": {
+ "version": "3.1.0",
+ "resolved": "https://ms-feed-2.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/strip-literal/-/strip-literal-3.1.0.tgz",
+ "integrity": "sha1-IiskPdLUnAvNDeiQatvYQXcZYDI=",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "js-tokens": "^9.0.1"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/antfu"
+ }
+ },
+ "node_modules/strip-literal/node_modules/js-tokens": {
+ "version": "9.0.1",
+ "resolved": "https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/js-tokens/-/js-tokens-9.0.1.tgz",
+ "integrity": "sha1-LsQ5ZGWENSlvZ2GzThBnHC2VJ/Q=",
+ "dev": true,
+ "license": "MIT"
+ },
"node_modules/style-to-js": {
"version": "1.1.21",
"resolved": "https://registry.npmjs.org/style-to-js/-/style-to-js-1.1.21.tgz",
@@ -9002,9 +9069,9 @@
}
},
"node_modules/tinyrainbow": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/tinyrainbow/-/tinyrainbow-1.2.0.tgz",
- "integrity": "sha512-weEDEq7Z5eTHPDh4xjX789+fHfF+P8boiFB+0vbWzpbnbsEr/GRaohi/uMKxg8RZMXnl1ItAi/IUHWMsjDV7kQ==",
+ "version": "2.0.0",
+ "resolved": "https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/tinyrainbow/-/tinyrainbow-2.0.0.tgz",
+ "integrity": "sha1-lQmyFiQ2MV6A4+7g/M5EdNJEQpQ=",
"dev": true,
"license": "MIT",
"engines": {
@@ -9012,9 +9079,9 @@
}
},
"node_modules/tinyspy": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/tinyspy/-/tinyspy-3.0.2.tgz",
- "integrity": "sha512-n1cw8k1k0x4pgA2+9XrOkFydTerNcJ1zWCO5Nn9scWHTD+5tp8dghT2x1uduQePZTZgd3Tupf+x9BxJjeJi77Q==",
+ "version": "4.0.4",
+ "resolved": "https://ms-feed-2.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/tinyspy/-/tinyspy-4.0.4.tgz",
+ "integrity": "sha1-13oAL7U6iKoUKbQZwckkkuDIH3g=",
"dev": true,
"license": "MIT",
"engines": {
@@ -9509,560 +9576,74 @@
}
},
"node_modules/vite-node": {
- "version": "2.1.9",
- "resolved": "https://registry.npmjs.org/vite-node/-/vite-node-2.1.9.tgz",
- "integrity": "sha512-AM9aQ/IPrW/6ENLQg3AGY4K1N2TGZdR5e4gu/MmmR2xR3Ll1+dib+nook92g4TV3PXVyeyxdWwtaCAiUL0hMxA==",
+ "version": "3.2.4",
+ "resolved": "https://ms-feed-2.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/vite-node/-/vite-node-3.2.4.tgz",
+ "integrity": "sha1-82dtlMSvHnaJjBYsknKLymX3uwc=",
"dev": true,
"license": "MIT",
"dependencies": {
"cac": "^6.7.14",
- "debug": "^4.3.7",
- "es-module-lexer": "^1.5.4",
- "pathe": "^1.1.2",
- "vite": "^5.0.0"
+ "debug": "^4.4.1",
+ "es-module-lexer": "^1.7.0",
+ "pathe": "^2.0.3",
+ "vite": "^5.0.0 || ^6.0.0 || ^7.0.0-0"
},
"bin": {
"vite-node": "vite-node.mjs"
},
"engines": {
- "node": "^18.0.0 || >=20.0.0"
+ "node": "^18.0.0 || ^20.0.0 || >=22.0.0"
},
"funding": {
"url": "https://opencollective.com/vitest"
}
},
- "node_modules/vite-node/node_modules/@esbuild/aix-ppc64": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.21.5.tgz",
- "integrity": "sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==",
- "cpu": [
- "ppc64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "aix"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/vite-node/node_modules/@esbuild/android-arm": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.21.5.tgz",
- "integrity": "sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==",
- "cpu": [
- "arm"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "android"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/vite-node/node_modules/@esbuild/android-arm64": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.21.5.tgz",
- "integrity": "sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==",
- "cpu": [
- "arm64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "android"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/vite-node/node_modules/@esbuild/android-x64": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.21.5.tgz",
- "integrity": "sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==",
- "cpu": [
- "x64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "android"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/vite-node/node_modules/@esbuild/darwin-arm64": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.21.5.tgz",
- "integrity": "sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==",
- "cpu": [
- "arm64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "darwin"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/vite-node/node_modules/@esbuild/darwin-x64": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.21.5.tgz",
- "integrity": "sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==",
- "cpu": [
- "x64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "darwin"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/vite-node/node_modules/@esbuild/freebsd-arm64": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.21.5.tgz",
- "integrity": "sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==",
- "cpu": [
- "arm64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "freebsd"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/vite-node/node_modules/@esbuild/freebsd-x64": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.21.5.tgz",
- "integrity": "sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==",
- "cpu": [
- "x64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "freebsd"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/vite-node/node_modules/@esbuild/linux-arm": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.21.5.tgz",
- "integrity": "sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==",
- "cpu": [
- "arm"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/vite-node/node_modules/@esbuild/linux-arm64": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.21.5.tgz",
- "integrity": "sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==",
- "cpu": [
- "arm64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/vite-node/node_modules/@esbuild/linux-ia32": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.21.5.tgz",
- "integrity": "sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==",
- "cpu": [
- "ia32"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/vite-node/node_modules/@esbuild/linux-loong64": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.21.5.tgz",
- "integrity": "sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==",
- "cpu": [
- "loong64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/vite-node/node_modules/@esbuild/linux-mips64el": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.21.5.tgz",
- "integrity": "sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==",
- "cpu": [
- "mips64el"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/vite-node/node_modules/@esbuild/linux-ppc64": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.21.5.tgz",
- "integrity": "sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==",
- "cpu": [
- "ppc64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/vite-node/node_modules/@esbuild/linux-riscv64": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.21.5.tgz",
- "integrity": "sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==",
- "cpu": [
- "riscv64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "linux"
- ],
+ "node_modules/vitest": {
+ "version": "3.2.7",
+ "resolved": "https://ms-feed-12.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/vitest/-/vitest-3.2.7.tgz",
+ "integrity": "sha1-GUS27QE6Jf0mpz0Y4a+SwQpXr2w=",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@types/chai": "^5.2.2",
+ "@vitest/expect": "3.2.7",
+ "@vitest/mocker": "3.2.7",
+ "@vitest/pretty-format": "^3.2.7",
+ "@vitest/runner": "3.2.7",
+ "@vitest/snapshot": "3.2.7",
+ "@vitest/spy": "3.2.7",
+ "@vitest/utils": "3.2.7",
+ "chai": "^5.2.0",
+ "debug": "^4.4.1",
+ "expect-type": "^1.2.1",
+ "magic-string": "^0.30.17",
+ "pathe": "^2.0.3",
+ "picomatch": "^4.0.2",
+ "std-env": "^3.9.0",
+ "tinybench": "^2.9.0",
+ "tinyexec": "^0.3.2",
+ "tinyglobby": "^0.2.14",
+ "tinypool": "^1.1.1",
+ "tinyrainbow": "^2.0.0",
+ "vite": "^5.0.0 || ^6.0.0 || ^7.0.0-0",
+ "vite-node": "3.2.4",
+ "why-is-node-running": "^2.3.0"
+ },
+ "bin": {
+ "vitest": "vitest.mjs"
+ },
"engines": {
- "node": ">=12"
- }
- },
- "node_modules/vite-node/node_modules/@esbuild/linux-s390x": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.21.5.tgz",
- "integrity": "sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==",
- "cpu": [
- "s390x"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/vite-node/node_modules/@esbuild/linux-x64": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.21.5.tgz",
- "integrity": "sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==",
- "cpu": [
- "x64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/vite-node/node_modules/@esbuild/netbsd-x64": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.21.5.tgz",
- "integrity": "sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==",
- "cpu": [
- "x64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "netbsd"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/vite-node/node_modules/@esbuild/openbsd-x64": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.21.5.tgz",
- "integrity": "sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==",
- "cpu": [
- "x64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "openbsd"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/vite-node/node_modules/@esbuild/sunos-x64": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.21.5.tgz",
- "integrity": "sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==",
- "cpu": [
- "x64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "sunos"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/vite-node/node_modules/@esbuild/win32-arm64": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.21.5.tgz",
- "integrity": "sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==",
- "cpu": [
- "arm64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "win32"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/vite-node/node_modules/@esbuild/win32-ia32": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.21.5.tgz",
- "integrity": "sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==",
- "cpu": [
- "ia32"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "win32"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/vite-node/node_modules/@esbuild/win32-x64": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.21.5.tgz",
- "integrity": "sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==",
- "cpu": [
- "x64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "win32"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/vite-node/node_modules/esbuild": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.21.5.tgz",
- "integrity": "sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==",
- "dev": true,
- "hasInstallScript": true,
- "license": "MIT",
- "bin": {
- "esbuild": "bin/esbuild"
- },
- "engines": {
- "node": ">=12"
- },
- "optionalDependencies": {
- "@esbuild/aix-ppc64": "0.21.5",
- "@esbuild/android-arm": "0.21.5",
- "@esbuild/android-arm64": "0.21.5",
- "@esbuild/android-x64": "0.21.5",
- "@esbuild/darwin-arm64": "0.21.5",
- "@esbuild/darwin-x64": "0.21.5",
- "@esbuild/freebsd-arm64": "0.21.5",
- "@esbuild/freebsd-x64": "0.21.5",
- "@esbuild/linux-arm": "0.21.5",
- "@esbuild/linux-arm64": "0.21.5",
- "@esbuild/linux-ia32": "0.21.5",
- "@esbuild/linux-loong64": "0.21.5",
- "@esbuild/linux-mips64el": "0.21.5",
- "@esbuild/linux-ppc64": "0.21.5",
- "@esbuild/linux-riscv64": "0.21.5",
- "@esbuild/linux-s390x": "0.21.5",
- "@esbuild/linux-x64": "0.21.5",
- "@esbuild/netbsd-x64": "0.21.5",
- "@esbuild/openbsd-x64": "0.21.5",
- "@esbuild/sunos-x64": "0.21.5",
- "@esbuild/win32-arm64": "0.21.5",
- "@esbuild/win32-ia32": "0.21.5",
- "@esbuild/win32-x64": "0.21.5"
- }
- },
- "node_modules/vite-node/node_modules/vite": {
- "version": "5.4.21",
- "resolved": "https://registry.npmjs.org/vite/-/vite-5.4.21.tgz",
- "integrity": "sha512-o5a9xKjbtuhY6Bi5S3+HvbRERmouabWbyUcpXXUA1u+GNUKoROi9byOJ8M0nHbHYHkYICiMlqxkg1KkYmm25Sw==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "esbuild": "^0.21.3",
- "postcss": "^8.4.43",
- "rollup": "^4.20.0"
- },
- "bin": {
- "vite": "bin/vite.js"
- },
- "engines": {
- "node": "^18.0.0 || >=20.0.0"
- },
- "funding": {
- "url": "https://github.com/vitejs/vite?sponsor=1"
- },
- "optionalDependencies": {
- "fsevents": "~2.3.3"
- },
- "peerDependencies": {
- "@types/node": "^18.0.0 || >=20.0.0",
- "less": "*",
- "lightningcss": "^1.21.0",
- "sass": "*",
- "sass-embedded": "*",
- "stylus": "*",
- "sugarss": "*",
- "terser": "^5.4.0"
- },
- "peerDependenciesMeta": {
- "@types/node": {
- "optional": true
- },
- "less": {
- "optional": true
- },
- "lightningcss": {
- "optional": true
- },
- "sass": {
- "optional": true
- },
- "sass-embedded": {
- "optional": true
- },
- "stylus": {
- "optional": true
- },
- "sugarss": {
- "optional": true
- },
- "terser": {
- "optional": true
- }
- }
- },
- "node_modules/vitest": {
- "version": "2.1.9",
- "resolved": "https://registry.npmjs.org/vitest/-/vitest-2.1.9.tgz",
- "integrity": "sha512-MSmPM9REYqDGBI8439mA4mWhV5sKmDlBKWIYbA3lRb2PTHACE0mgKwA8yQ2xq9vxDTuk4iPrECBAEW2aoFXY0Q==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@vitest/expect": "2.1.9",
- "@vitest/mocker": "2.1.9",
- "@vitest/pretty-format": "^2.1.9",
- "@vitest/runner": "2.1.9",
- "@vitest/snapshot": "2.1.9",
- "@vitest/spy": "2.1.9",
- "@vitest/utils": "2.1.9",
- "chai": "^5.1.2",
- "debug": "^4.3.7",
- "expect-type": "^1.1.0",
- "magic-string": "^0.30.12",
- "pathe": "^1.1.2",
- "std-env": "^3.8.0",
- "tinybench": "^2.9.0",
- "tinyexec": "^0.3.1",
- "tinypool": "^1.0.1",
- "tinyrainbow": "^1.2.0",
- "vite": "^5.0.0",
- "vite-node": "2.1.9",
- "why-is-node-running": "^2.3.0"
- },
- "bin": {
- "vitest": "vitest.mjs"
- },
- "engines": {
- "node": "^18.0.0 || >=20.0.0"
+ "node": "^18.0.0 || ^20.0.0 || >=22.0.0"
},
"funding": {
"url": "https://opencollective.com/vitest"
},
"peerDependencies": {
"@edge-runtime/vm": "*",
- "@types/node": "^18.0.0 || >=20.0.0",
- "@vitest/browser": "2.1.9",
- "@vitest/ui": "2.1.9",
+ "@types/debug": "^4.1.12",
+ "@types/node": "^18.0.0 || ^20.0.0 || >=22.0.0",
+ "@vitest/browser": "3.2.7",
+ "@vitest/ui": "3.2.7",
"happy-dom": "*",
"jsdom": "*"
},
@@ -10070,6 +9651,9 @@
"@edge-runtime/vm": {
"optional": true
},
+ "@types/debug": {
+ "optional": true
+ },
"@types/node": {
"optional": true
},
@@ -10087,523 +9671,6 @@
}
}
},
- "node_modules/vitest/node_modules/@esbuild/aix-ppc64": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.21.5.tgz",
- "integrity": "sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==",
- "cpu": [
- "ppc64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "aix"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/vitest/node_modules/@esbuild/android-arm": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.21.5.tgz",
- "integrity": "sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==",
- "cpu": [
- "arm"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "android"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/vitest/node_modules/@esbuild/android-arm64": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.21.5.tgz",
- "integrity": "sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==",
- "cpu": [
- "arm64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "android"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/vitest/node_modules/@esbuild/android-x64": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.21.5.tgz",
- "integrity": "sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==",
- "cpu": [
- "x64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "android"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/vitest/node_modules/@esbuild/darwin-arm64": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.21.5.tgz",
- "integrity": "sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==",
- "cpu": [
- "arm64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "darwin"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/vitest/node_modules/@esbuild/darwin-x64": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.21.5.tgz",
- "integrity": "sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==",
- "cpu": [
- "x64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "darwin"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/vitest/node_modules/@esbuild/freebsd-arm64": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.21.5.tgz",
- "integrity": "sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==",
- "cpu": [
- "arm64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "freebsd"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/vitest/node_modules/@esbuild/freebsd-x64": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.21.5.tgz",
- "integrity": "sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==",
- "cpu": [
- "x64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "freebsd"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/vitest/node_modules/@esbuild/linux-arm": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.21.5.tgz",
- "integrity": "sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==",
- "cpu": [
- "arm"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/vitest/node_modules/@esbuild/linux-arm64": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.21.5.tgz",
- "integrity": "sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==",
- "cpu": [
- "arm64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/vitest/node_modules/@esbuild/linux-ia32": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.21.5.tgz",
- "integrity": "sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==",
- "cpu": [
- "ia32"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/vitest/node_modules/@esbuild/linux-loong64": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.21.5.tgz",
- "integrity": "sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==",
- "cpu": [
- "loong64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/vitest/node_modules/@esbuild/linux-mips64el": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.21.5.tgz",
- "integrity": "sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==",
- "cpu": [
- "mips64el"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/vitest/node_modules/@esbuild/linux-ppc64": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.21.5.tgz",
- "integrity": "sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==",
- "cpu": [
- "ppc64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/vitest/node_modules/@esbuild/linux-riscv64": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.21.5.tgz",
- "integrity": "sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==",
- "cpu": [
- "riscv64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/vitest/node_modules/@esbuild/linux-s390x": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.21.5.tgz",
- "integrity": "sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==",
- "cpu": [
- "s390x"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/vitest/node_modules/@esbuild/linux-x64": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.21.5.tgz",
- "integrity": "sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==",
- "cpu": [
- "x64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/vitest/node_modules/@esbuild/netbsd-x64": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.21.5.tgz",
- "integrity": "sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==",
- "cpu": [
- "x64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "netbsd"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/vitest/node_modules/@esbuild/openbsd-x64": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.21.5.tgz",
- "integrity": "sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==",
- "cpu": [
- "x64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "openbsd"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/vitest/node_modules/@esbuild/sunos-x64": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.21.5.tgz",
- "integrity": "sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==",
- "cpu": [
- "x64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "sunos"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/vitest/node_modules/@esbuild/win32-arm64": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.21.5.tgz",
- "integrity": "sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==",
- "cpu": [
- "arm64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "win32"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/vitest/node_modules/@esbuild/win32-ia32": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.21.5.tgz",
- "integrity": "sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==",
- "cpu": [
- "ia32"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "win32"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/vitest/node_modules/@esbuild/win32-x64": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.21.5.tgz",
- "integrity": "sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==",
- "cpu": [
- "x64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "win32"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/vitest/node_modules/@vitest/mocker": {
- "version": "2.1.9",
- "resolved": "https://registry.npmjs.org/@vitest/mocker/-/mocker-2.1.9.tgz",
- "integrity": "sha512-tVL6uJgoUdi6icpxmdrn5YNo3g3Dxv+IHJBr0GXHaEdTcw3F+cPKnsXFhli6nO+f/6SDKPHEK1UN+k+TQv0Ehg==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@vitest/spy": "2.1.9",
- "estree-walker": "^3.0.3",
- "magic-string": "^0.30.12"
- },
- "funding": {
- "url": "https://opencollective.com/vitest"
- },
- "peerDependencies": {
- "msw": "^2.4.9",
- "vite": "^5.0.0"
- },
- "peerDependenciesMeta": {
- "msw": {
- "optional": true
- },
- "vite": {
- "optional": true
- }
- }
- },
- "node_modules/vitest/node_modules/esbuild": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.21.5.tgz",
- "integrity": "sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==",
- "dev": true,
- "hasInstallScript": true,
- "license": "MIT",
- "bin": {
- "esbuild": "bin/esbuild"
- },
- "engines": {
- "node": ">=12"
- },
- "optionalDependencies": {
- "@esbuild/aix-ppc64": "0.21.5",
- "@esbuild/android-arm": "0.21.5",
- "@esbuild/android-arm64": "0.21.5",
- "@esbuild/android-x64": "0.21.5",
- "@esbuild/darwin-arm64": "0.21.5",
- "@esbuild/darwin-x64": "0.21.5",
- "@esbuild/freebsd-arm64": "0.21.5",
- "@esbuild/freebsd-x64": "0.21.5",
- "@esbuild/linux-arm": "0.21.5",
- "@esbuild/linux-arm64": "0.21.5",
- "@esbuild/linux-ia32": "0.21.5",
- "@esbuild/linux-loong64": "0.21.5",
- "@esbuild/linux-mips64el": "0.21.5",
- "@esbuild/linux-ppc64": "0.21.5",
- "@esbuild/linux-riscv64": "0.21.5",
- "@esbuild/linux-s390x": "0.21.5",
- "@esbuild/linux-x64": "0.21.5",
- "@esbuild/netbsd-x64": "0.21.5",
- "@esbuild/openbsd-x64": "0.21.5",
- "@esbuild/sunos-x64": "0.21.5",
- "@esbuild/win32-arm64": "0.21.5",
- "@esbuild/win32-ia32": "0.21.5",
- "@esbuild/win32-x64": "0.21.5"
- }
- },
- "node_modules/vitest/node_modules/vite": {
- "version": "5.4.21",
- "resolved": "https://registry.npmjs.org/vite/-/vite-5.4.21.tgz",
- "integrity": "sha512-o5a9xKjbtuhY6Bi5S3+HvbRERmouabWbyUcpXXUA1u+GNUKoROi9byOJ8M0nHbHYHkYICiMlqxkg1KkYmm25Sw==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "esbuild": "^0.21.3",
- "postcss": "^8.4.43",
- "rollup": "^4.20.0"
- },
- "bin": {
- "vite": "bin/vite.js"
- },
- "engines": {
- "node": "^18.0.0 || >=20.0.0"
- },
- "funding": {
- "url": "https://github.com/vitejs/vite?sponsor=1"
- },
- "optionalDependencies": {
- "fsevents": "~2.3.3"
- },
- "peerDependencies": {
- "@types/node": "^18.0.0 || >=20.0.0",
- "less": "*",
- "lightningcss": "^1.21.0",
- "sass": "*",
- "sass-embedded": "*",
- "stylus": "*",
- "sugarss": "*",
- "terser": "^5.4.0"
- },
- "peerDependenciesMeta": {
- "@types/node": {
- "optional": true
- },
- "less": {
- "optional": true
- },
- "lightningcss": {
- "optional": true
- },
- "sass": {
- "optional": true
- },
- "sass-embedded": {
- "optional": true
- },
- "stylus": {
- "optional": true
- },
- "sugarss": {
- "optional": true
- },
- "terser": {
- "optional": true
- }
- }
- },
"node_modules/w3c-xmlserializer": {
"version": "5.0.0",
"resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-5.0.0.tgz",
@@ -10916,7 +9983,7 @@
"typescript": "^5.7.0",
"typescript-eslint": "^8.60.1",
"vite": "^7.0.0",
- "vitest": "^2.1.0"
+ "vitest": "^3.2.6"
}
}
}
diff --git a/src/backend/services/admin.py b/src/backend/services/admin.py
index 217629bf3..165ed44c5 100644
--- a/src/backend/services/admin.py
+++ b/src/backend/services/admin.py
@@ -36,7 +36,7 @@
logger = logging.getLogger(__name__)
-# Operator-facing reason string returned when the RAI classifier
+# Operator facing reason string returned when the RAI classifier
# rejects a submitted prompt. Single sentence so the FE can surface
# it inline next to the field without truncation; intentionally
# generic (no per-category enumeration) because `RAI_AGENT` is a
diff --git a/tests/frontend/package.json b/tests/frontend/package.json
index e0ab0812b..cc30f621b 100644
--- a/tests/frontend/package.json
+++ b/tests/frontend/package.json
@@ -27,6 +27,6 @@
"typescript": "^5.7.0",
"typescript-eslint": "^8.60.1",
"vite": "^7.0.0",
- "vitest": "^2.1.0"
+ "vitest": "^3.2.6"
}
}