diff --git a/.devcontainer/Dockerfile b/.devcontainer/Dockerfile
new file mode 100644
index 0000000000..e5deb93b1d
--- /dev/null
+++ b/.devcontainer/Dockerfile
@@ -0,0 +1,24 @@
+ARG NODE_VER=23.5.0
+ARG BASE_IMAGE=node:${NODE_VER}
+FROM $BASE_IMAGE
+
+ENV DEBIAN_FRONTEND=noninteractive
+
+# Install pnpm globally and install necessary build tools
+RUN apt-get update \
+ && apt-get install -y \
+ git \
+ python3 \
+ make \
+ g++ \
+ nano \
+ vim \
+ && apt-get clean \
+ && rm -rf /var/lib/apt/lists/*
+
+ARG PNPM_VER=9.15.2
+RUN npm install -g pnpm@${PNPM_VER}
+
+# Set Python 3 as the default python
+RUN ln -s /usr/bin/python3 /usr/bin/python
+ENV DEBIAN_FRONTEND=dialog
diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json
new file mode 100644
index 0000000000..23aca531b4
--- /dev/null
+++ b/.devcontainer/devcontainer.json
@@ -0,0 +1,38 @@
+// See https://aka.ms/vscode-remote/devcontainer.json for format details.
+{
+ "name": "elizaos-dev",
+ "dockerFile": "Dockerfile",
+ "build": {
+ "args": {
+ "NODE_VER": "23.5.0",
+ "PNPM_VER": "9.15.2"
+ }
+ },
+ "privileged": true,
+ "runArgs": [
+ "-p=3000:3000", // Add port for server api
+ "-p=5173:5173", // Add port for client
+ //"--volume=/usr/lib/wsl:/usr/lib/wsl", // uncomment for WSL
+ //"--volume=/mnt/wslg:/mnt/wslg", // uncomment for WSL
+ "--gpus=all", // ! uncomment for vGPU
+ //"--device=/dev/dxg", // uncomment this for vGPU under WSL
+ "--device=/dev/dri"
+ ],
+ "containerEnv": {
+ //"MESA_D3D12_DEFAULT_ADAPTER_NAME": "NVIDIA", // uncomment for WSL
+ //"LD_LIBRARY_PATH": "/usr/lib/wsl/lib" // uncomment for WSL
+ },
+ "customizations": {
+ "vscode": {
+ "extensions": [
+ "vscode.json-language-features",
+ "vscode.css-language-features",
+ // "foxundermoon.shell-format",
+ // "dbaeumer.vscode-eslint",
+ // "esbenp.prettier-vscode"
+ "ms-python.python"
+ ]
+ }
+ },
+ "features": {}
+}
\ No newline at end of file
diff --git a/.env.example b/.env.example
index 8c791fc8a4..ee896bf1ea 100644
--- a/.env.example
+++ b/.env.example
@@ -1,13 +1,80 @@
+####################################
+#### Server & DB Configurations ####
+####################################
+
# Cache Configs
CACHE_STORE=database # Defaults to database. Other available cache store: redis and filesystem
-REDIS_URL= # Redis URL - could be a local redis instance or cloud hosted redis. Also support rediss:// urls
+REDIS_URL= # Redis URL - could be a local redis instance or cloud hosted redis. Also support rediss:// URLs
+PGLITE_DATA_DIR= #../pgLite/ if selecting a directory --- or memory:// if selecting in memory
+
+# Eliza Port Config
+SERVER_PORT=3000
+
+# Supabase Configuration
+SUPABASE_URL=
+SUPABASE_ANON_KEY=
+
+###############################
+#### Client Configurations ####
+###############################
# Discord Configuration
DISCORD_APPLICATION_ID=
DISCORD_API_TOKEN= # Bot token
DISCORD_VOICE_CHANNEL_ID= # The ID of the voice channel the bot should join (optional)
-# AI Model API Keys
+# Farcaster Neynar Configuration
+FARCASTER_FID= # The FID associated with the account your are sending casts from
+FARCASTER_NEYNAR_API_KEY= # Neynar API key: https://neynar.com/
+FARCASTER_NEYNAR_SIGNER_UUID= # Signer for the account you are sending casts from. Create a signer here: https://dev.neynar.com/app
+FARCASTER_DRY_RUN=false # Set to true if you want to run the bot without actually publishing casts
+FARCASTER_POLL_INTERVAL=120 # How often (in seconds) the bot should check for farcaster interactions (replies and mentions)
+
+# Telegram Configuration
+TELEGRAM_BOT_TOKEN=
+
+# Twitter/X Configuration
+TWITTER_DRY_RUN=false
+TWITTER_USERNAME= # Account username
+TWITTER_PASSWORD= # Account password
+TWITTER_EMAIL= # Account email
+TWITTER_2FA_SECRET=
+TWITTER_POLL_INTERVAL=120 # How often (in seconds) the bot should check for interactions
+TWITTER_SEARCH_ENABLE=FALSE # Enable timeline search, WARNING this greatly increases your chance of getting banned
+TWITTER_TARGET_USERS= # Comma separated list of Twitter user names to interact with
+TWITTER_RETRY_LIMIT= # Maximum retry attempts for Twitter login
+TWITTER_SPACES_ENABLE=false # Enable or disable Twitter Spaces logic
+# Post Interval Settings (in minutes)
+POST_INTERVAL_MIN= # Default: 90
+POST_INTERVAL_MAX= # Default: 180
+POST_IMMEDIATELY= # Default: false
+# Twitter action processing configuration
+ACTION_INTERVAL= # Interval in minutes between action processing runs (default: 5 minutes)
+ENABLE_ACTION_PROCESSING=false # Set to true to enable the action processing loop
+MAX_ACTIONS_PROCESSING=1 # Maximum number of actions (e.g., retweets, likes) to process in a single cycle. Helps prevent excessive or uncontrolled actions.
+ACTION_TIMELINE_TYPE=foryou # Type of timeline to interact with. Options: "foryou" or "following". Default: "foryou"
+# CONFIGURATION FOR APPROVING TWEETS BEFORE IT GETS POSTED
+TWITTER_APPROVAL_DISCORD_CHANNEL_ID= # Channel ID for the Discord bot to listen and send approval messages
+TWITTER_APPROVAL_DISCORD_BOT_TOKEN= # Discord bot token (this could be a different bot token from DISCORD_API_TOKEN)
+TWITTER_APPROVAL_ENABLED= # Enable or disable Twitter approval logic #Default is false
+TWITTER_APPROVAL_CHECK_INTERVAL=60000 # Default: 60 seconds
+
+# WhatsApp Cloud API Configuration
+WHATSAPP_ACCESS_TOKEN= # Permanent access token from Facebook Developer Console
+WHATSAPP_PHONE_NUMBER_ID= # Phone number ID from WhatsApp Business API
+WHATSAPP_BUSINESS_ACCOUNT_ID= # Business Account ID from Facebook Business Manager
+WHATSAPP_WEBHOOK_VERIFY_TOKEN= # Custom string for webhook verification
+WHATSAPP_API_VERSION=v17.0 # WhatsApp API version (default: v17.0)
+
+
+# Direct Client Setting
+EXPRESS_MAX_PAYLOAD= # Default: 100kb
+
+#######################################
+#### Model Provider Configurations ####
+#######################################
+
+# OpenAI Configuration
OPENAI_API_KEY= # OpenAI API key, starting with sk-
OPENAI_API_URL= # OpenAI API Endpoint (optional), Default: https://api.openai.com/v1
SMALL_OPENAI_MODEL= # Default: gpt-4o-mini
@@ -15,21 +82,16 @@ MEDIUM_OPENAI_MODEL= # Default: gpt-4o
LARGE_OPENAI_MODEL= # Default: gpt-4o
EMBEDDING_OPENAI_MODEL= # Default: text-embedding-3-small
IMAGE_OPENAI_MODEL= # Default: dall-e-3
+USE_OPENAI_EMBEDDING= # Set to TRUE for OpenAI/1536, leave blank for local
# Eternal AI's Decentralized Inference API
ETERNALAI_URL=
ETERNALAI_MODEL= # Default: "neuralmagic/Meta-Llama-3.1-405B-Instruct-quantized.w4a16"
+ETERNALAI_CHAIN_ID=45762 #Default: "45762"
ETERNALAI_API_KEY=
-ETERNAL_AI_LOG_REQUEST=false #Default: false
-
-GROK_API_KEY= # GROK/xAI API Key
-GROQ_API_KEY= # Starts with gsk_
-OPENROUTER_API_KEY=
-GOOGLE_GENERATIVE_AI_API_KEY= # Gemini API key
-
-ALI_BAILIAN_API_KEY= # Ali Bailian API Key
-NANOGPT_API_KEY= # NanoGPT API Key
+ETERNALAI_LOG=false #Default: false
+# Hyperbolic Configuration
HYPERBOLIC_API_KEY= # Hyperbolic API Key
HYPERBOLIC_MODEL=
IMAGE_HYPERBOLIC_MODEL= # Default: FLUX.1-dev
@@ -37,17 +99,33 @@ SMALL_HYPERBOLIC_MODEL= # Default: meta-llama/Llama-3.2-3B-Instruct
MEDIUM_HYPERBOLIC_MODEL= # Default: meta-llama/Meta-Llama-3.1-70B-Instruct
LARGE_HYPERBOLIC_MODEL= # Default: meta-llama/Meta-Llama-3.1-405-Instruct
-
# Infera Configuration
-
INFERA_API_KEY= # visit api.infera.org/docs to obtain an API key under /signup_user
INFERA_MODEL= # Default: llama3.2:latest
INFERA_SERVER_URL= # Default: https://api.infera.org/
-
SMALL_INFERA_MODEL= #Recommended: llama3.2:latest
MEDIUM_INFERA_MODEL= #Recommended: mistral-nemo:latest
LARGE_INFERA_MODEL= #Recommended: mistral-small:latest
+# Venice Configuration
+VENICE_API_KEY= # generate from venice settings
+SMALL_VENICE_MODEL= # Default: llama-3.3-70b
+MEDIUM_VENICE_MODEL= # Default: llama-3.3-70b
+LARGE_VENICE_MODEL= # Default: llama-3.1-405b
+IMAGE_VENICE_MODEL= # Default: fluently-xl
+
+# Nineteen.ai Configuration
+NINETEEN_AI_API_KEY= # Get a free api key from https://nineteen.ai/app/api
+SMALL_NINETEEN_AI_MODEL= # Default: unsloth/Llama-3.2-3B-Instruct
+MEDIUM_NINETEEN_AI_MODEL= # Default: unsloth/Meta-Llama-3.1-8B-Instruct
+LARGE_NINETEEN_AI_MODEL= # Default: hugging-quants/Meta-Llama-3.1-70B-Instruct-AWQ-INT4
+IMAGE_NINETEEN_AI_MODE= # Default: dataautogpt3/ProteusV0.4-Lightning
+
+# Akash Chat API Configuration docs: https://chatapi.akash.network/documentation
+AKASH_CHAT_API_KEY= # Get from https://chatapi.akash.network/
+SMALL_AKASH_CHAT_API_MODEL= # Default: Meta-Llama-3-2-3B-Instruct
+MEDIUM_AKASH_CHAT_API_MODEL= # Default: Meta-Llama-3-3-70B-Instruct
+LARGE_AKASH_CHAT_API_MODEL= # Default: Meta-Llama-3-1-405B-Instruct-FP8
# Livepeer configuration
LIVEPEER_GATEWAY_URL= # Free inference gateways and docs: https://livepeer-eliza.com/
@@ -59,9 +137,6 @@ ELEVENLABS_XI_API_KEY= # API key from elevenlabs
# Transcription Provider
TRANSCRIPTION_PROVIDER= # Default: local (possible values: openai, deepgram, local)
-# Direct Client Setting
-EXPRESS_MAX_PAYLOAD= # Default: 100kb
-
# ElevenLabs Settings
ELEVENLABS_MODEL_ID=eleven_multilingual_v2
ELEVENLABS_VOICE_ID=21m00Tcm4TlvDq8ikWAM
@@ -72,45 +147,14 @@ ELEVENLABS_VOICE_USE_SPEAKER_BOOST=false
ELEVENLABS_OPTIMIZE_STREAMING_LATENCY=4
ELEVENLABS_OUTPUT_FORMAT=pcm_16000
-# Twitter/X Configuration
-TWITTER_DRY_RUN=false
-TWITTER_USERNAME= # Account username
-TWITTER_PASSWORD= # Account password
-TWITTER_EMAIL= # Account email
-TWITTER_2FA_SECRET=
-
-TWITTER_POLL_INTERVAL=120 # How often (in seconds) the bot should check for interactions
-TWITTER_SEARCH_ENABLE=FALSE # Enable timeline search, WARNING this greatly increases your chance of getting banned
-TWITTER_TARGET_USERS= # Comma separated list of Twitter user names to interact with
-TWITTER_RETRY_LIMIT= # Maximum retry attempts for Twitter login
-TWITTER_SPACES_ENABLE=false # Enable or disable Twitter Spaces logic
-
-X_SERVER_URL=
-XAI_API_KEY=
-XAI_MODEL=
-
-# Post Interval Settings (in minutes)
-POST_INTERVAL_MIN= # Default: 90
-POST_INTERVAL_MAX= # Default: 180
-POST_IMMEDIATELY=
-
-# Twitter action processing configuration
-ACTION_INTERVAL= # Interval in minutes between action processing runs (default: 5 minutes)
-ENABLE_ACTION_PROCESSING=false # Set to true to enable the action processing loop
-
-# Feature Flags
-IMAGE_GEN= # Set to TRUE to enable image generation
-USE_OPENAI_EMBEDDING= # Set to TRUE for OpenAI/1536, leave blank for local
-USE_OLLAMA_EMBEDDING= # Set to TRUE for OLLAMA/1024, leave blank for local
-
-# OpenRouter Models
+# OpenRouter Configuration
+OPENROUTER_API_KEY= # OpenRouter API Key
OPENROUTER_MODEL= # Default: uses hermes 70b/405b
SMALL_OPENROUTER_MODEL=
MEDIUM_OPENROUTER_MODEL=
LARGE_OPENROUTER_MODEL=
-# REDPILL Configuration
-# https://docs.red-pill.ai/get-started/supported-models
+# REDPILL Configuration (https://docs.red-pill.ai/get-started/supported-models)
REDPILL_API_KEY= # REDPILL API Key
REDPILL_MODEL=
SMALL_REDPILL_MODEL= # Default: gpt-4o-mini
@@ -118,6 +162,7 @@ MEDIUM_REDPILL_MODEL= # Default: gpt-4o
LARGE_REDPILL_MODEL= # Default: gpt-4o
# Grok Configuration
+GROK_API_KEY= # GROK/xAI API Key
SMALL_GROK_MODEL= # Default: grok-2-1212
MEDIUM_GROK_MODEL= # Default: grok-2-1212
LARGE_GROK_MODEL= # Default: grok-2-1212
@@ -126,6 +171,7 @@ EMBEDDING_GROK_MODEL= # Default: grok-2-1212
# Ollama Configuration
OLLAMA_SERVER_URL= # Default: localhost:11434
OLLAMA_MODEL=
+USE_OLLAMA_EMBEDDING= # Set to TRUE for OLLAMA/1024, leave blank for local
OLLAMA_EMBEDDING_MODEL= # Default: mxbai-embed-large
SMALL_OLLAMA_MODEL= # Default: llama3.2
MEDIUM_OLLAMA_MODEL= # Default: hermes3
@@ -139,6 +185,7 @@ LARGE_GOOGLE_MODEL= # Default: gemini-1.5-pro-latest
EMBEDDING_GOOGLE_MODEL= # Default: text-embedding-004
# Groq Configuration
+GROQ_API_KEY= # Starts with gsk_
SMALL_GROQ_MODEL= # Default: llama-3.1-8b-instant
MEDIUM_GROQ_MODEL= # Default: llama-3.3-70b-versatile
LARGE_GROQ_MODEL= # Default: llama-3.2-90b-vision-preview
@@ -168,14 +215,12 @@ HEURIST_IMAGE_MODEL= # Default: PepeXL
# Gaianet Configuration
GAIANET_MODEL=
GAIANET_SERVER_URL=
-
SMALL_GAIANET_MODEL= # Default: llama3b
SMALL_GAIANET_SERVER_URL= # Default: https://llama3b.gaia.domains/v1
MEDIUM_GAIANET_MODEL= # Default: llama
MEDIUM_GAIANET_SERVER_URL= # Default: https://llama8b.gaia.domains/v1
LARGE_GAIANET_MODEL= # Default: qwen72b
LARGE_GAIANET_SERVER_URL= # Default: https://qwen72b.gaia.domains/v1
-
GAIANET_EMBEDDING_MODEL=
USE_GAIANET_EMBEDDING= # Set to TRUE for GAIANET/768, leave blank for local
@@ -187,6 +232,31 @@ MEDIUM_VOLENGINE_MODEL= # Default: doubao-pro-128k
LARGE_VOLENGINE_MODEL= # Default: doubao-pro-256k
VOLENGINE_EMBEDDING_MODEL= # Default: doubao-embedding
+# fal.ai Configuration
+FAL_API_KEY=
+FAL_AI_LORA_PATH=
+
+# LetzAI Configuration
+LETZAI_API_KEY= # LetzAI API Key
+LETZAI_MODELS= # list of Letzai models to add to each prompt, e.g.: "@modelname1, @modelname2"
+
+# Galadriel Configuration
+GALADRIEL_API_KEY=gal-* # Get from https://dashboard.galadriel.com/
+SMALL_GALADRIEL_MODEL= # Default: gpt-4o-mini
+MEDIUM_GALADRIEL_MODEL= # Default: gpt-4o
+LARGE_GALADRIEL_MODEL= # Default: gpt-4o
+GALADRIEL_FINE_TUNE_API_KEY= # Use an OpenAI key to use a fine-tuned model with the verified inference endpoint
+
+# Remaining Provider Configurations
+GOOGLE_GENERATIVE_AI_API_KEY= # Gemini API key
+ALI_BAILIAN_API_KEY= # Ali Bailian API Key
+NANOGPT_API_KEY= # NanoGPT API Key
+TOGETHER_API_KEY= # Together API Key
+
+######################################
+#### Crypto Plugin Configurations ####
+######################################
+
# EVM
EVM_PRIVATE_KEY=
EVM_PROVIDER_URL=
@@ -195,6 +265,9 @@ EVM_PROVIDER_URL=
AVALANCHE_PRIVATE_KEY=
AVALANCHE_PUBLIC_KEY=
+# Arthera
+ARTHERA_PRIVATE_KEY=
+
# Solana
SOLANA_PRIVATE_KEY=
SOLANA_PUBLIC_KEY=
@@ -213,18 +286,9 @@ BIRDEYE_API_KEY=
SOL_ADDRESS=So11111111111111111111111111111111111111112
SLIPPAGE=1
BASE_MINT=So11111111111111111111111111111111111111112
-RPC_URL=https://api.mainnet-beta.solana.com
+SOLANA_RPC_URL=https://api.mainnet-beta.solana.com
HELIUS_API_KEY=
-# Telegram Configuration
-TELEGRAM_BOT_TOKEN=
-
-# Together Configuration
-TOGETHER_API_KEY=
-
-# Server Configuration
-SERVER_PORT=3000
-
# Abstract Configuration
ABSTRACT_ADDRESS=
ABSTRACT_PRIVATE_KEY=
@@ -235,16 +299,6 @@ STARKNET_ADDRESS=
STARKNET_PRIVATE_KEY=
STARKNET_RPC_URL=
-# Intiface Configuration
-INTIFACE_WEBSOCKET_URL=ws://localhost:12345
-
-# Farcaster Neynar Configuration
-FARCASTER_FID= # The FID associated with the account your are sending casts from
-FARCASTER_NEYNAR_API_KEY= # Neynar API key: https://neynar.com/
-FARCASTER_NEYNAR_SIGNER_UUID= # Signer for the account you are sending casts from. Create a signer here: https://dev.neynar.com/app
-FARCASTER_DRY_RUN=false # Set to true if you want to run the bot without actually publishing casts
-FARCASTER_POLL_INTERVAL=120 # How often (in seconds) the bot should check for farcaster interactions (replies and mentions)
-
# Coinbase
COINBASE_COMMERCE_KEY= # From Coinbase developer portal
COINBASE_API_KEY= # From Coinbase developer portal
@@ -261,6 +315,9 @@ CHARITY_ADDRESS_ETH=0x750EF1D7a0b4Ab1c97B7A623D7917CcEb5ea779C
CHARITY_ADDRESS_ARB=0x1234567890123456789012345678901234567890
CHARITY_ADDRESS_POL=0x1234567890123456789012345678901234567890
+# thirdweb
+THIRDWEB_SECRET_KEY= # Create key on thirdweb developer dashboard: https://thirdweb.com/
+
# Conflux Configuration
CONFLUX_CORE_PRIVATE_KEY=
CONFLUX_CORE_SPACE_RPC_URL=
@@ -316,6 +373,7 @@ WHATSAPP_PHONE_NUMBER_ID= # Phone number ID from WhatsApp Business API
WHATSAPP_BUSINESS_ACCOUNT_ID= # Business Account ID from Facebook Business Manager
WHATSAPP_WEBHOOK_VERIFY_TOKEN= # Custom string for webhook verification
WHATSAPP_API_VERSION=v17.0 # WhatsApp API version (default: v17.0)
+ENABLE_TEE_LOG=false # Set to true to enable TEE logging, only available when running eliza in TEE
# Flow Blockchain Configuration
FLOW_ADDRESS=
@@ -331,24 +389,16 @@ INTERNET_COMPUTER_ADDRESS=
APTOS_PRIVATE_KEY= # Aptos private key
APTOS_NETWORK= # Must be one of mainnet, testnet
-# EchoChambers Configuration
-ECHOCHAMBERS_API_URL=http://127.0.0.1:3333
-ECHOCHAMBERS_API_KEY=testingkey0011
-ECHOCHAMBERS_USERNAME=eliza
-ECHOCHAMBERS_DEFAULT_ROOM=general
-ECHOCHAMBERS_POLL_INTERVAL=60
-ECHOCHAMBERS_MAX_MESSAGES=10
-
# MultiversX
-MVX_PRIVATE_KEY= # Multiversx private key
-MVX_NETWORK= # must be one of mainnet, devnet, testnet
+MVX_PRIVATE_KEY= # Multiversx private key
+MVX_NETWORK= # must be one of mainnet, devnet, testnet
# NEAR
-NEAR_WALLET_SECRET_KEY=
-NEAR_WALLET_PUBLIC_KEY=
+NEAR_WALLET_SECRET_KEY= # NEAR Wallet Secret Key
+NEAR_WALLET_PUBLIC_KEY= # NEAR Wallet Public Key
NEAR_ADDRESS=
-SLIPPAGE=1
-RPC_URL=https://rpc.testnet.near.org
+NEAR_SLIPPAGE=1
+NEAR_RPC_URL=https://rpc.testnet.near.org
NEAR_NETWORK=testnet # or mainnet
# ZKsync Era Configuration
@@ -366,29 +416,22 @@ TEE_MARLIN= # Set "yes" to enable the plugin
TEE_MARLIN_ATTESTATION_ENDPOINT= # Optional, default "http://127.0.0.1:1350"
# Ton
-TON_PRIVATE_KEY= # Ton Mnemonic Seed Phrase Join With Empty String
-TON_RPC_URL= # ton rpc
-
-# AWS S3 Configuration Settings for File Upload
-AWS_ACCESS_KEY_ID=
-AWS_SECRET_ACCESS_KEY=
-AWS_REGION=
-AWS_S3_BUCKET=
-AWS_S3_UPLOAD_PATH=
-
-# Deepgram
-DEEPGRAM_API_KEY=
+TON_PRIVATE_KEY= # Ton Mnemonic Seed Phrase Join With Empty String
+TON_RPC_URL= # ton rpc
# Sui
-SUI_PRIVATE_KEY= # Sui Mnemonic Seed Phrase (`sui keytool generate ed25519`) , Also support `suiprivatekeyxxxx` (sui keytool export --key-identity 0x63)
-SUI_NETWORK= # must be one of mainnet, testnet, devnet, localnet
+SUI_PRIVATE_KEY= # Sui Mnemonic Seed Phrase (`sui keytool generate ed25519`) , Also support `suiprivatekeyxxxx` (sui keytool export --key-identity 0x63)
+SUI_NETWORK= # must be one of mainnet, testnet, devnet, localnet
# Story
-STORY_PRIVATE_KEY= # Story private key
-STORY_API_BASE_URL= # Story API base URL
-STORY_API_KEY= # Story API key
-PINATA_JWT= # Pinata JWT for uploading files to IPFS
-
+STORY_PRIVATE_KEY= # Story private key
+STORY_API_BASE_URL= # Story API base URL
+STORY_API_KEY= # Story API key
+PINATA_JWT= # Pinata JWT for uploading files to IPFS
+
+# Cosmos
+COSMOS_RECOVERY_PHRASE= # 12 words recovery phrase (need to be in quotes, because of spaces)
+COSMOS_AVAILABLE_CHAINS= # mantrachaintestnet2,cosmos # Array of chains
# Cronos zkEVM
CRONOSZKEVM_ADDRESS=
CRONOSZKEVM_PRIVATE_KEY=
@@ -397,12 +440,63 @@ CRONOSZKEVM_PRIVATE_KEY=
FUEL_WALLET_PRIVATE_KEY=
# Tokenizer Settings
-TOKENIZER_MODEL= # Specify the tokenizer model to be used.
-TOKENIZER_TYPE= # Options: tiktoken (for OpenAI models) or auto (AutoTokenizer from Hugging Face for non-OpenAI models). Default: tiktoken.
+TOKENIZER_MODEL= # Specify the tokenizer model to be used.
+TOKENIZER_TYPE= # Options: tiktoken (for OpenAI models) or auto (AutoTokenizer from Hugging Face for non-OpenAI models). Default: tiktoken.
+
+# Spheron
+SPHERON_PRIVATE_KEY=
+SPHERON_PROVIDER_PROXY_URL=
+SPHERON_WALLET_ADDRESS=
# Stargaze NFT marketplace from Cosmos (You can use https://graphql.mainnet.stargaze-apis.com/graphql)
STARGAZE_ENDPOINT=
# GenLayer
-GENLAYER_PRIVATE_KEY=0x0000000000000000000000000000000000000000000000000000000000000000 # Private key of the GenLayer account to use for the agent
+GENLAYER_PRIVATE_KEY= # Private key of the GenLayer account to use for the agent in this format (0x0000000000000000000000000000000000000000000000000000000000000000)
+
+####################################
+#### Misc Plugin Configurations ####
+####################################
+
+# Intiface Configuration
+INTIFACE_WEBSOCKET_URL=ws://localhost:12345
+
+# API key for giphy from https://developers.giphy.com/dashboard/
+GIPHY_API_KEY=
+
+# OpenWeather
+OPEN_WEATHER_API_KEY= # OpenWeather API key
+
+# EchoChambers Configuration
+ECHOCHAMBERS_API_URL=http://127.0.0.1:3333
+ECHOCHAMBERS_API_KEY=testingkey0011
+ECHOCHAMBERS_USERNAME=eliza
+ECHOCHAMBERS_DEFAULT_ROOM=general
+ECHOCHAMBERS_POLL_INTERVAL=60
+ECHOCHAMBERS_MAX_MESSAGES=10
+
+# Allora
+ALLORA_API_KEY= # Allora API key, format: UP-f8db7d6558ab432ca0d92716
+ALLORA_CHAIN_SLUG= # must be one of mainnet, testnet. If not specified, it will use testnet by default
+
+# Opacity zkTLS
+OPACITY_TEAM_ID=f309ac8ae8a9a14a7e62cd1a521b1c5f
+OPACITY_CLOUDFLARE_NAME=eigen-test
+OPACITY_PROVER_URL=https://opacity-ai-zktls-demo.vercel.app
+
+# AWS S3 Configuration Settings for File Upload
+AWS_ACCESS_KEY_ID=
+AWS_SECRET_ACCESS_KEY=
+AWS_REGION=
+AWS_S3_BUCKET=
+AWS_S3_UPLOAD_PATH=
+
+# Deepgram
+DEEPGRAM_API_KEY=
+
+# Web search API Configuration
+TAVILY_API_KEY=
+# Verifiable Inference Configuration
+VERIFIABLE_INFERENCE_ENABLED=false # Set to false to disable verifiable inference
+VERIFIABLE_INFERENCE_PROVIDER=opacity # Options: opacity
diff --git a/.github/workflows/integrationTests.yaml b/.github/workflows/integrationTests.yaml
index ef8bd46d22..0dcef61c06 100644
--- a/.github/workflows/integrationTests.yaml
+++ b/.github/workflows/integrationTests.yaml
@@ -17,11 +17,11 @@ jobs:
- uses: pnpm/action-setup@v3
with:
- version: 9.4.0
+ version: 9.15.0
- uses: actions/setup-node@v4
with:
- node-version: "23"
+ node-version: "23.3.0"
cache: "pnpm"
- name: Clean up
diff --git a/.github/workflows/jsdoc-automation.yml b/.github/workflows/jsdoc-automation.yml
index 60458fcf4d..619a29593a 100644
--- a/.github/workflows/jsdoc-automation.yml
+++ b/.github/workflows/jsdoc-automation.yml
@@ -20,7 +20,7 @@ on:
root_directory:
description: "Only scans files in this directory (relative to repository root, e.g., packages/core/src)"
required: true
- default: "packages/plugin-near/"
+ default: "packages/plugin-bootstrap"
type: string
excluded_directories:
description: "Directories to exclude from scanning (comma-separated, relative to root_directory)"
@@ -37,11 +37,6 @@ on:
required: false
default: "develop"
type: string
- language:
- description: "Documentation language (e.g., English, Spanish, French)"
- required: true
- default: "English"
- type: string
jobs:
generate-docs:
@@ -99,6 +94,5 @@ jobs:
INPUT_EXCLUDED_DIRECTORIES: ${{ inputs.excluded_directories }}
INPUT_REVIEWERS: ${{ inputs.reviewers }}
INPUT_BRANCH: ${{ inputs.branch }}
- INPUT_LANGUAGE: ${{ inputs.language }}
INPUT_JSDOC: ${{ inputs.jsdoc }}
INPUT_README: ${{ inputs.readme }}
diff --git a/.github/workflows/pnpm-lockfile-check.yml b/.github/workflows/pnpm-lockfile-check.yml
new file mode 100644
index 0000000000..a048b3703f
--- /dev/null
+++ b/.github/workflows/pnpm-lockfile-check.yml
@@ -0,0 +1,41 @@
+name: Pnpm Lockfile Check
+
+on:
+ pull_request:
+ branches: ["*"]
+
+jobs:
+ check-lockfile:
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@v4
+
+ - uses: actions/setup-node@v4
+ with:
+ node-version: 23.3.0
+
+ - uses: pnpm/action-setup@v3
+ with:
+ version: 9.15.0
+
+ - name: Check if lockfile is up-to-date
+ id: lockfile-check
+ run: |
+ # Try to install with frozen lockfile
+ if ! pnpm install --frozen-lockfile; then
+ echo "::error::Lockfile is out of date. Please run 'pnpm install --no-frozen-lockfile' and commit the updated pnpm-lock.yaml"
+ echo "failed=true" >> $GITHUB_OUTPUT
+ exit 1
+ fi
+
+ - name: Comment on PR
+ if: failure() && steps.lockfile-check.outputs.failed == 'true'
+ uses: actions/github-script@v7
+ with:
+ script: |
+ github.rest.issues.createComment({
+ issue_number: context.issue.number,
+ owner: context.repo.owner,
+ repo: context.repo.repo,
+ body: '❌ The pnpm-lockfile is out of date. Please run `pnpm install --no-frozen-lockfile` and commit the updated pnpm-lock.yaml file.'
+ })
\ No newline at end of file
diff --git a/.github/workflows/smoke-tests.yml b/.github/workflows/smoke-tests.yml
index fd059a3523..2c088afbe6 100644
--- a/.github/workflows/smoke-tests.yml
+++ b/.github/workflows/smoke-tests.yml
@@ -15,11 +15,11 @@ jobs:
- uses: pnpm/action-setup@v3
with:
- version: 9.4.0
+ version: 9.15.0
- uses: actions/setup-node@v4
with:
- node-version: "23"
+ node-version: "23.3.0"
cache: "pnpm"
- name: Run smoke tests
diff --git a/.gitignore b/.gitignore
index 00d0cb4d77..86be41efaf 100644
--- a/.gitignore
+++ b/.gitignore
@@ -15,6 +15,7 @@ packages/plugin-buttplug/intiface-engine
dist/
# Allow models directory but ignore model files
models/*.gguf
+pgLite/
cookies.json
@@ -50,8 +51,13 @@ tsup.config.bundled_*.mjs
.turbo
.cursorrules
+.pnpm-store
coverage
.eslintcache
agent/content
+
+eliza.manifest
+eliza.manifest.sgx
+eliza.sig
diff --git a/.vscode/settings.json b/.vscode/settings.json
index 813a00406e..8bd129fed7 100644
--- a/.vscode/settings.json
+++ b/.vscode/settings.json
@@ -21,7 +21,7 @@
"editor.defaultFormatter": "esbenp.prettier-vscode"
},
"[typescriptreact]": {
- "editor.defaultFormatter": "dbaeumer.vscode-eslint"
+ "editor.defaultFormatter": "esbenp.prettier-vscode"
},
"[javascriptreact]": {
"editor.defaultFormatter": "dbaeumer.vscode-eslint"
@@ -44,4 +44,4 @@
"[shellscript]": {
"editor.defaultFormatter": "foxundermoon.shell-format"
}
-}
+}
\ No newline at end of file
diff --git a/CHANGELOG.md b/CHANGELOG.md
index c3d60aa4d8..828ba71d42 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1168,7 +1168,7 @@
- Abstract transcript provider [\#73](https://github.com/elizaOS/eliza/issues/73)
- 🤖 Confidence Level Implementation [\#50](https://github.com/elizaOS/eliza/issues/50)
- 📈 Trading Assistant Implementation [\#48](https://github.com/elizaOS/eliza/issues/48)
-- swap Dao action initital [\#196](https://github.com/elizaOS/eliza/pull/196) ([MarcoMandar](https://github.com/MarcoMandar))
+- swap Dao action initial [\#196](https://github.com/elizaOS/eliza/pull/196) ([MarcoMandar](https://github.com/MarcoMandar))
**Fixed bugs:**
diff --git a/Makefile b/Makefile
new file mode 100644
index 0000000000..12030cf5e5
--- /dev/null
+++ b/Makefile
@@ -0,0 +1,59 @@
+# Copyright (C) 2024 Gramine contributors
+# SPDX-License-Identifier: BSD-3-Clause
+
+THIS_DIR := $(dir $(lastword $(MAKEFILE_LIST)))
+NODEJS_DIR ?= /usr/bin
+
+ARCH_LIBDIR ?= /lib/$(shell $(CC) -dumpmachine)
+
+ifeq ($(DEBUG),1)
+GRAMINE_LOG_LEVEL = debug
+else
+GRAMINE_LOG_LEVEL = error
+endif
+
+.PHONY: all
+all: eliza.manifest
+ifeq ($(SGX),1)
+all: eliza.manifest.sgx eliza.sig
+endif
+
+.PHONY: eliza.manifest
+eliza.manifest: eliza.manifest.template
+ gramine-manifest \
+ -Dlog_level=$(GRAMINE_LOG_LEVEL) \
+ -Darch_libdir=$(ARCH_LIBDIR) \
+ -Dnodejs_dir=$(NODEJS_DIR) \
+ $< >$@
+
+# Make on Ubuntu <= 20.04 doesn't support "Rules with Grouped Targets" (`&:`),
+# for details on this workaround see
+# https://github.com/gramineproject/gramine/blob/e8735ea06c/CI-Examples/helloworld/Makefile
+eliza.manifest.sgx eliza.sig: sgx_sign
+ @:
+
+.INTERMEDIATE: sgx_sign
+sgx_sign: eliza.manifest
+ gramine-sgx-sign \
+ --manifest $< \
+ --output $<.sgx
+
+ifeq ($(SGX),)
+GRAMINE = gramine-direct
+else
+GRAMINE = gramine-sgx
+endif
+
+# Start the default character:
+# SGX=1 make start
+# Start a specific character by passing arguments:
+# SGX=1 make start -- --character "character/your_character_file.json"
+.PHONY: start
+start: all
+ $(GRAMINE) ./eliza --loader ts-node/esm src/index.ts --isRoot $(filter-out $@,$(MAKECMDGOALS))
+.PHONY: clean
+clean:
+ $(RM) *.manifest *.manifest.sgx *.sig
+
+.PHONY: distclean
+distclean: clean
\ No newline at end of file
diff --git a/README.md b/README.md
index 2f55c81d67..8a6db86caf 100644
--- a/README.md
+++ b/README.md
@@ -1,149 +1,149 @@
-# Eliza 🤖
-
-
-
-
-
-
-
-📖 [Documentation](https://elizaos.github.io/eliza/) | 🎯 [Examples](https://github.com/thejoven/awesome-eliza)
-
-
-
-## 🌍 README Translations
-
-[中文说明](./README_CN.md) | [日本語の説明](./README_JA.md) | [한국어 설명](./README_KOR.md) | [Français](./README_FR.md) | [Português](./README_PTBR.md) | [Türkçe](./README_TR.md) | [Русский](./README_RU.md) | [Español](./README_ES.md) | [Italiano](./README_IT.md) | [ไทย](./README_TH.md) | [Deutsch](./README_DE.md) | [Tiếng Việt](./README_VI.md) | [עִברִית](https://github.com/elizaos/Elisa/blob/main/README_HE.md) | [Tagalog](./README_TG.md) | [Polski](./README_PL.md) | [Arabic](./README_AR.md) | [Hungarian](./README_HU.md) | [Srpski](./README_RS.md)
-
-## 🚩 Overview
-
-
-
-
-
-## ✨ Features
-
-- 🛠️ Full-featured Discord, Twitter and Telegram connectors
-- 🔗 Support for every model (Llama, Grok, OpenAI, Anthropic, etc.)
-- 👥 Multi-agent and room support
-- 📚 Easily ingest and interact with your documents
-- 💾 Retrievable memory and document store
-- 🚀 Highly extensible - create your own actions and clients
-- ☁️ Supports many models (local Llama, OpenAI, Anthropic, Groq, etc.)
-- 📦 Just works!
-
-## Video Tutorials
-
-[AI Agent Dev School](https://www.youtube.com/watch?v=ArptLpQiKfI&list=PLx5pnFXdPTRzWla0RaOxALTSTnVq53fKL)
-
-## 🎯 Use Cases
-
-- 🤖 Chatbots
-- 🕵️ Autonomous Agents
-- 📈 Business Process Handling
-- 🎮 Video Game NPCs
-- 🧠 Trading
-
-## 🚀 Quick Start
-
-### Prerequisites
-
-- [Python 2.7+](https://www.python.org/downloads/)
-- [Node.js 23+](https://docs.npmjs.com/downloading-and-installing-node-js-and-npm)
-- [pnpm](https://pnpm.io/installation)
-
-> **Note for Windows Users:** [WSL 2](https://learn.microsoft.com/en-us/windows/wsl/install-manual) is required.
-
-### Use the Starter (Recommended)
-
-```bash
-git clone https://github.com/elizaos/eliza-starter.git
-cd eliza-starter
-cp .env.example .env
-pnpm i && pnpm build && pnpm start
-```
-
-Once the agent is running, you should see the message to run "pnpm start:client" at the end.
-Open another terminal and move to same directory and then run below command and follow the URL to chat to your agent.
-
-```bash
-pnpm start:client
-```
-
-Then read the [Documentation](https://elizaos.github.io/eliza/) to learn how to customize your Eliza.
-
-### Manually Start Eliza (Only recommended if you know what you are doing)
-
-```bash
-# Clone the repository
-git clone https://github.com/elizaos/eliza.git
-
-# Checkout the latest release
-# This project iterates fast, so we recommend checking out the latest release
-git checkout $(git describe --tags --abbrev=0)
-```
-
-### Start Eliza with Gitpod
-
-[![Open in Gitpod](https://gitpod.io/button/open-in-gitpod.svg)](https://gitpod.io/#https://github.com/elizaos/eliza/tree/main)
-
-### Edit the .env file
-
-Copy .env.example to .env and fill in the appropriate values.
-
-```
-cp .env.example .env
-```
-
-Note: .env is optional. If you're planning to run multiple distinct agents, you can pass secrets through the character JSON
-
-### Automatically Start Eliza
-
-This will run everything to set up the project and start the bot with the default character.
-
-```bash
-sh scripts/start.sh
-```
-
-### Edit the character file
-
-1. Open `packages/core/src/defaultCharacter.ts` to modify the default character. Uncomment and edit.
-
-2. To load custom characters:
- - Use `pnpm start --characters="path/to/your/character.json"`
- - Multiple character files can be loaded simultaneously
-3. Connect with X (Twitter)
- - change `"clients": []` to `"clients": ["twitter"]` in the character file to connect with X
-
-### Manually Start Eliza
-
-```bash
-pnpm i
-pnpm build
-pnpm start
-
-# The project iterates fast, sometimes you need to clean the project if you are coming back to the project
-pnpm clean
-```
-
-#### Additional Requirements
-
-You may need to install Sharp. If you see an error when starting up, try installing it with the following command:
-
-```
-pnpm install --include=optional sharp
-```
-
-### Community & contact
-
-- [GitHub Issues](https://github.com/elizaos/eliza/issues). Best for: bugs you encounter using Eliza, and feature proposals.
-- [Discord](https://discord.gg/ai16z). Best for: sharing your applications and hanging out with the community.
-
-## Contributors
-
-
-
-
-
-## Star History
-
-[![Star History Chart](https://api.star-history.com/svg?repos=elizaos/eliza&type=Date)](https://star-history.com/#elizaos/eliza&Date)
+# Eliza 🤖
+
+
+
+
+
+
+
+📖 [Documentation](https://elizaos.github.io/eliza/) | 🎯 [Examples](https://github.com/thejoven/awesome-eliza)
+
+
+
+## 🌍 README Translations
+
+[中文说明](./README_CN.md) | [日本語の説明](./README_JA.md) | [한국어 설명](./README_KOR.md) | [Français](./README_FR.md) | [Português](./README_PTBR.md) | [Türkçe](./README_TR.md) | [Русский](./README_RU.md) | [Español](./README_ES.md) | [Italiano](./README_IT.md) | [ไทย](./README_TH.md) | [Deutsch](./README_DE.md) | [Tiếng Việt](./README_VI.md) | [עִברִית](https://github.com/elizaos/Elisa/blob/main/README_HE.md) | [Tagalog](./README_TG.md) | [Polski](./README_PL.md) | [Arabic](./README_AR.md) | [Hungarian](./README_HU.md) | [Srpski](./README_RS.md) | [Română](./README_RO.md) | [Nederlands](./README_NL.md)
+
+## 🚩 Overview
+
+
+
+
+
+## ✨ Features
+
+- 🛠️ Full-featured Discord, Twitter and Telegram connectors
+- 🔗 Support for every model (Llama, Grok, OpenAI, Anthropic, etc.)
+- 👥 Multi-agent and room support
+- 📚 Easily ingest and interact with your documents
+- 💾 Retrievable memory and document store
+- 🚀 Highly extensible - create your own actions and clients
+- ☁️ Supports many models (local Llama, OpenAI, Anthropic, Groq, etc.)
+- 📦 Just works!
+
+## Video Tutorials
+
+[AI Agent Dev School](https://www.youtube.com/watch?v=ArptLpQiKfI&list=PLx5pnFXdPTRzWla0RaOxALTSTnVq53fKL)
+
+## 🎯 Use Cases
+
+- 🤖 Chatbots
+- 🕵️ Autonomous Agents
+- 📈 Business Process Handling
+- 🎮 Video Game NPCs
+- 🧠 Trading
+
+## 🚀 Quick Start
+
+### Prerequisites
+
+- [Python 2.7+](https://www.python.org/downloads/)
+- [Node.js 23+](https://docs.npmjs.com/downloading-and-installing-node-js-and-npm)
+- [pnpm](https://pnpm.io/installation)
+
+> **Note for Windows Users:** [WSL 2](https://learn.microsoft.com/en-us/windows/wsl/install-manual) is required.
+
+### Use the Starter (Recommended)
+
+```bash
+git clone https://github.com/elizaos/eliza-starter.git
+cd eliza-starter
+cp .env.example .env
+pnpm i && pnpm build && pnpm start
+```
+
+Once the agent is running, you should see the message to run "pnpm start:client" at the end.
+Open another terminal and move to same directory and then run below command and follow the URL to chat to your agent.
+
+```bash
+pnpm start:client
+```
+
+Then read the [Documentation](https://elizaos.github.io/eliza/) to learn how to customize your Eliza.
+
+### Manually Start Eliza (Only recommended if you know what you are doing)
+
+```bash
+# Clone the repository
+git clone https://github.com/elizaos/eliza.git
+
+# Checkout the latest release
+# This project iterates fast, so we recommend checking out the latest release
+git checkout $(git describe --tags --abbrev=0)
+```
+
+### Start Eliza with Gitpod
+
+[![Open in Gitpod](https://gitpod.io/button/open-in-gitpod.svg)](https://gitpod.io/#https://github.com/elizaos/eliza/tree/main)
+
+### Edit the .env file
+
+Copy .env.example to .env and fill in the appropriate values.
+
+```
+cp .env.example .env
+```
+
+Note: .env is optional. If you're planning to run multiple distinct agents, you can pass secrets through the character JSON
+
+### Automatically Start Eliza
+
+This will run everything to set up the project and start the bot with the default character.
+
+```bash
+sh scripts/start.sh
+```
+
+### Edit the character file
+
+1. Open `packages/core/src/defaultCharacter.ts` to modify the default character. Uncomment and edit.
+
+2. To load custom characters:
+ - Use `pnpm start --characters="path/to/your/character.json"`
+ - Multiple character files can be loaded simultaneously
+3. Connect with X (Twitter)
+ - change `"clients": []` to `"clients": ["twitter"]` in the character file to connect with X
+
+### Manually Start Eliza
+
+```bash
+pnpm i
+pnpm build
+pnpm start
+
+# The project iterates fast, sometimes you need to clean the project if you are coming back to the project
+pnpm clean
+```
+
+#### Additional Requirements
+
+You may need to install Sharp. If you see an error when starting up, try installing it with the following command:
+
+```
+pnpm install --include=optional sharp
+```
+
+### Community & contact
+
+- [GitHub Issues](https://github.com/elizaos/eliza/issues). Best for: bugs you encounter using Eliza, and feature proposals.
+- [Discord](https://discord.gg/ai16z). Best for: sharing your applications and hanging out with the community.
+
+## Contributors
+
+
+
+
+
+## Star History
+
+[![Star History Chart](https://api.star-history.com/svg?repos=elizaos/eliza&type=Date)](https://star-history.com/#elizaos/eliza&Date)
diff --git a/README_CN.md b/README_CN.md
index 82115705cb..6431deb643 100644
--- a/README_CN.md
+++ b/README_CN.md
@@ -1,271 +1,161 @@
-# Eliza
+# Eliza 🤖
-
+
+
+
-## 功能
+
-- 🛠 支持discord/推特/telegram连接
-- 👥 支持多模态agent
-- 📚 简单的导入文档并与文档交互
-- 💾 可检索的内存和文档存储
-- 🚀 高可拓展性,你可以自定义客户端和行为来进行功能拓展
-- ☁️ 多模型支持,包括Llama、OpenAI、Grok、Anthropic等
-- 📦 简单好用
-
-你可以用Eliza做什么?
+📖 [文档](https://elizaos.github.io/eliza/) | 🎯 [示例](https://github.com/thejoven/awesome-eliza)
-- 🤖 聊天机器人
-- 🕵️ 自主Agents
-- 📈 业务流程自动化处理
-- 🎮 游戏NPC
+
-# 开始使用
+## 🌍 README 翻译
-**前置要求(必须):**
+[日本語の説明](./README_JA.md) | [한국어 설명](./README_KOR.md) | [English](./README.md) | [Français](./README_FR.md) | [Português](./README_PTBR.md) | [Türkçe](./README_TR.md) | [Русский](./README_RU.md) | [Español](./README_ES.md) | [Italiano](./README_IT.md) | [ไทย](./README_TH.md) | [Deutsch](./README_DE.md) | [Tiếng Việt](./README_VI.md) | [עִברִית](https://github.com/elizaos/Elisa/blob/main/README_HE.md) | [Tagalog](./README_TG.md) | [Polski](./README_PL.md) | [Arabic](./README_AR.md) | [Hungarian](./README_HU.md) | [Srpski](./README_RS.md)
-- [Python 2.7+](https://www.python.org/downloads/)
-- [Node.js 23+](https://docs.npmjs.com/downloading-and-installing-node-js-and-npm)
-- [pnpm](https://pnpm.io/installation)
-
-以下是两种基础的Eliza下载方案, 请根据情况自行选择。
-
-## (A) 使用启动器(Starter): 推荐
-
-```
-git clone https://github.com/elizaos/eliza-starter.git
-cd eliza-starter
-cp .env.example .env
-```
-
-## (B) 手动启动Eliza: 仅在您知道自己在做什么时才推荐
-
-```
-git clone https://github.com/elizaos/eliza.git
-cd eliza
-# 切换最新发布的版本(Checkout the latest release)
-# Eliza的迭代速度非常快, 所以我们建议经常性的切换到最新的发布版本以免出现问题(This project iterates fast, so we recommend checking out the latest release)
-git checkout $(git describe --tags --abbrev=0)
-```
+## 🚩 概述
-在将代码下载到本地后, 我们要做两件事:
+
+
+
-### 1. 编辑.env文件(环境变量)
+## ✨ 功能
-- 将 `.env.example` 复制为 `.env` 并在其中填写适当的值
-- 编辑推特环境并输入你的推特账号和密码
-
-**最简化配置方案**:
-
-```
-OPENAI_API_KEY=sk-xxx # 配置OpenAI 的API, sk-开头, 注意, 目前不支持AzureOpenAI!
-
-## 如配置Twitter/X, 则需配置
-# Twitter/X Configuration
-TWITTER_DRY_RUN=false
-TWITTER_USERNAME=abc # Your Twitter/X account username
-TWITTER_PASSWORD=abc # Your Twitter/X account password
-TWITTER_EMAIL= xxx@gmail.com # Your Twitter/X account email
-TWITTER_COOKIES= '' # Your Twitter/X cookies, copy from broswer
-TWITTER_2FA_SECRET= # Two-factor authentication
-```
-
-### 2. 编辑角色文件
+- 🛠️ 功能齐全的 Discord、Twitter 和 Telegram 连接器
+- 🔗 支持所有模型(Llama、Grok、OpenAI、Anthropic 等)
+- 👥 多代理和房间支持
+- 📚 轻松导入并与文档交互
+- 💾 可检索的内存和文档存储
+- 🚀 高度可扩展 - 创建您自己的操作和客户端
+- ☁️ 支持多种模型(本地 Llama、OpenAI、Anthropic、Groq 等)
+- 📦 开箱即用!
-- 标准的角色个性定义在文件 `characters/*.character.json`中, 您可以修改它或者直接使用它。
-- 您也可以使用 `node --loader ts-node/esm src/index.ts --characters="path/to/your/character.json"` 加载角色并同时运行多个机器人。
-- 需要说明的是, 在`characters/*.character.json`中, `clients字段对应**服务**, 默认可选`"twitter", "discord", "telegram"`等, 如果在`clients`中填入了如"twitter"等内容, 则需要在
-上面的`env`配置对应的环境变量。对`discord`和`telegram`同理。
+## 视频教程
-```
-{
- "name": "trump",
- "clients": ["twitter"],
- "modelProvider": "openai",
-```
+[AI Agent 开发学校](https://www.youtube.com/watch?v=ArptLpQiKfI&list=PLx5pnFXdPTRzWla0RaOxALTSTnVq53fKL)
-在完成环境变量和角色文件的配置后,输入以下命令行启动你的bot:
+## 🎯 使用案例
-```
-(A) 使用启动器(Starter)
-sh scripts/start.sh
+- 🤖 聊天机器人
+- 🕵️ 自主代理
+- 📈 业务流程自动化处理
+- 🎮 游戏 NPC
+- 🧠 交易
+## 💰 如果您计划发行代币
-(B) 手动启动Eliza
-pnpm i
-pnpm build
-pnpm start
-```
+Eliza 是 GitHub 上排名第一的开源项目,我们正在推动下一代人机交互的发展,但我们仍然需要您的帮助,以确保代码质量最高,并快速响应影响我们整个构建者社区的关键问题.
-# 自定义Eliza
+为了确保可持续发展和持续创新,我们要求成功启动的项目贡献初始代币分配的 5-10%.
-### 添加常规行为
+所有贡献都在链上公开跟踪,并专门用于生态系统开发.
-为避免在核心目录中的 Git 冲突,我们建议将自定义操作添加到 custom_actions 目录中,并在 elizaConfig.yaml 文件中配置这些操作。可以参考 elizaConfig.example.yaml 文件中的示例。
+### ⚠️ 别忘了给大佬打赏 10%:⚠️
+[AM84n1iLdxgVTAyENBcLdjXoyvjentTbu5Q6EpKV1PeG](https://solscan.io/account/AM84n1iLdxgVTAyENBcLdjXoyvjentTbu5Q6EpKV1PeG)
-## 配置不同的大模型
+## 🚀 开始使用
-您可以使用不同的大模型来驱动您的AI Agent,切换不同大模型需要两步:
+### 前置要求(必须):
-1. 确认您在`.env`文件内配置了对应的大模型API Key或对应的访问配置,例如如果您想使用OpenAI,则需要找到`OPENAI_API_KEY`参数,并填入您的OpenAI API Key,并以此类推。
-2. 在您的*Character*文件里找到`modelProvider`,并更改这里的内容,例如如果想要切换到Claude,则需要填入`anthropic`,以此来表明您将使用anthropic大模型作为您的对应Agent的Provider.
+- [Python 2.7+](https://www.python.org/downloads/)
+- [Node.js 23+](https://docs.npmjs.com/downloading-and-installing-node-js-and-npm)
+- [pnpm](https://pnpm.io/installation)
-在`.env`文件内您可以找到不同大模型的详细配置,包括设定具体想要使用对应提供商的哪个模型,下方我们给出了两个实例:
-### 配置OpenAI
+> **Windows 用户注意:** 需要安装 [WSL 2](https://learn.microsoft.com/en-us/windows/wsl/install-manual).
-首先您需要在Character文件内指定model provider
+## 使用启动器(推荐)
-```json
- "name": "C-3PO",
- "clients": [],
- "modelProvider": "openai"
- ...
+```bash
+git clone https://github.com/elizaos/eliza-starter.git
+cd eliza-starter
+cp .env.example .env
+pnpm i && pnpm build && pnpm start
```
-其次请在`env`文件内配置相关参数
+当代理运行时,您应该会在最后看到运行 pnpm start:client 的消息.
+打开另一个终端并移动到同一目录,然后运行以下命令并按照 URL 与您的代理聊天.
+```bash
+pnpm start:client
```
-# AI Model API Keys
-OPENAI_API_KEY= # OpenAI API key, starting with sk-
-SMALL_OPENAI_MODEL= # Default: gpt-4o-mini
-MEDIUM_OPENAI_MODEL= # Default: gpt-4o
-LARGE_OPENAI_MODEL= # Default: gpt-4o
-EMBEDDING_OPENAI_MODEL= # Default: text-embedding-3-small
-IMAGE_OPENAI_MODEL= # Default: dall-e-3
+然后阅读 [文档](https://elizaos.github.io/eliza/) 以了解如何自定义您的 Eliza
-```
+## 手动启动 Eliza(仅推荐给知道自己在做什么的用户)
-### 配置Anthorpic
+```bash
+# 克隆仓库
+git clone https://github.com/elizaos/eliza.git
-```json
- "name": "C-3PO",
- "clients": [],
- "modelProvider": "anthropic"
- ...
+# 切换最新发布的版本
+# Eliza 的迭代速度非常快,因此我们建议经常切换到最新的发布版本以避免出现问题.
+git checkout $(git describe --tags --abbrev=0)
```
-其次请在`env`文件内配置相关参数
+### 使用 Gitpod 启动 Eliza
-```
-# Anthropic Configuration
-ANTHROPIC_API_KEY= # For Claude
-SMALL_ANTHROPIC_MODEL= # Default: claude-3-haiku-20240307
-MEDIUM_ANTHROPIC_MODEL= # Default: claude-3-5-sonnet-20241022
-LARGE_ANTHROPIC_MODEL= # Default: claude-3-5-sonnet-20241022
-```
+[![Open in Gitpod](https://gitpod.io/button/open-in-gitpod.svg)](https://gitpod.io/#https://github.com/elizaos/eliza/tree/main)
-## 其他要求
+### 编辑 .env 文件
-您可能需要安装 Sharp。如果在启动时看到错误,请尝试使用以下命令安装:
+将 .env.example 复制为 .env 并填写适当的值.
```
-pnpm install --include=optional sharp
-```
-
-# 环境设置
-
-您需要在 .env 文件中添加环境变量以连接到各种平台:
-
+cp .env.example .env
```
-# Required environment variables
-DISCORD_APPLICATION_ID=
-DISCORD_API_TOKEN= # Bot token
-OPENAI_API_KEY=sk-* # OpenAI API key, starting with sk-
-ELEVENLABS_XI_API_KEY= # API key from elevenlabs
-
-# ELEVENLABS SETTINGS
-ELEVENLABS_MODEL_ID=eleven_multilingual_v2
-ELEVENLABS_VOICE_ID=21m00Tcm4TlvDq8ikWAM
-ELEVENLABS_VOICE_STABILITY=0.5
-ELEVENLABS_VOICE_SIMILARITY_BOOST=0.9
-ELEVENLABS_VOICE_STYLE=0.66
-ELEVENLABS_VOICE_USE_SPEAKER_BOOST=false
-ELEVENLABS_OPTIMIZE_STREAMING_LATENCY=4
-ELEVENLABS_OUTPUT_FORMAT=pcm_16000
-
-TWITTER_DRY_RUN=false
-TWITTER_USERNAME= # Account username
-TWITTER_PASSWORD= # Account password
-TWITTER_EMAIL= # Account email
-X_SERVER_URL=
-XAI_API_KEY=
-XAI_MODEL=
+注意:.env 是可选的.如果您计划运行多个独立的代理,可以通过角色 JSON 传递密钥.
+### 自动启动 Eliza
-# For asking Claude stuff
-ANTHROPIC_API_KEY=
+这将运行所有设置并使用默认角色启动机器人.
-# EVM
-EVM_PRIVATE_KEY=EXAMPLE_WALLET_PRIVATE_KEY
-
-# Solana
-SOLANA_PRIVATE_KEY=EXAMPLE_WALLET_PRIVATE_KEY
-SOLANA_PUBLIC_KEY=EXAMPLE_WALLET_PUBLIC_KEY
+```bash
+sh scripts/start.sh
+```
-# Fallback Wallet Configuration (deprecated)
-WALLET_PRIVATE_KEY=EXAMPLE_WALLET_PRIVATE_KEY
-WALLET_PUBLIC_KEY=EXAMPLE_WALLET_PUBLIC_KEY
+### 编辑角色文件
-BIRDEYE_API_KEY=
+1. 打开 `packages/core/src/defaultCharacter.ts` 修改默认角色.取消注释并编辑.
-SOL_ADDRESS=So11111111111111111111111111111111111111112
-SLIPPAGE=1
-RPC_URL=https://api.mainnet-beta.solana.com
-HELIUS_API_KEY=
+2. 加载自定义角色:
+ - 使用 `pnpm start --characters="path/to/your/character.json"`
+ - 可以同时加载多个角色文件
+3. 连接 X (Twitter)
+ - 在角色文件中将 `"clients": []` 更改为 `"clients": ["twitter"]` 以连接 X
+### 手动启动 Eliza
-## Telegram
-TELEGRAM_BOT_TOKEN=
+```bash
+pnpm i
+pnpm build
+pnpm start
-TOGETHER_API_KEY=
+# 该项目迭代速度很快,有时如果您回到项目,需要清理项目
+pnpm clean
```
-# 本地设置
-
-### CUDA设置
+#### 其他要求
-如果你有高性能的英伟达显卡,你可以以下命令行通过CUDA来做本地加速
+您可能需要安装 Sharp.如果在启动时看到错误,请尝试使用以下命令安装:
```
-pnpm install
-npx --no node-llama-cpp source download --gpu cuda
+pnpm install --include=optional sharp
```
-确保你安装了完整的CUDA工具包,包括cuDNN和cuBLAS
-
-### 本地运行
-
-添加 XAI_MODEL 并将其设置为上述 [使用 Llama 运行](#run-with-llama) 中的选项之一
-您可以将 X_SERVER_URL 和 XAI_API_KEY 留空,它会从 huggingface 下载模型并在本地查询
+### 社区与联系
-# 客户端
+- [GitHub Issues](https://github.com/elizaos/eliza/issues). 最适合:使用 Eliza 时遇到的错误和功能建议.
+- [Discord](https://discord.gg/ai16z). 最适合:分享您的应用程序并与社区互动.
+- [Developer Discord](https://discord.gg/3f67SH4rXT). 最适合:获取帮助和插件开发.
-关于怎么设置discord bot,可以查看discord的官方文档
-
-# 开发
-
-## 测试
-
-几种测试方法的命令行:
-
-```bash
-pnpm test # Run tests once
-pnpm test:watch # Run tests in watch mode
-```
-
-对于数据库特定的测试:
-
-```bash
-pnpm test:sqlite # Run tests with SQLite
-pnpm test:sqljs # Run tests with SQL.js
-```
+## 贡献者
-测试使用 Jest 编写,位于 src/\*_/_.test.ts 文件中。测试环境配置如下:
+
+
+
-- 从 .env.test 加载环境变量
-- 使用 2 分钟的超时时间来运行长时间运行的测试
-- 支持 ESM 模块
-- 按顺序运行测试 (--runInBand)
+## 项目 Star 历史
-要创建新测试,请在要测试的代码旁边添加一个 .test.ts 文件。
+[![Star History Chart](https://api.star-history.com/svg?repos=elizaos/eliza&type=Date)](https://star-history.com/#elizaos/eliza&Date)
diff --git a/README_ES.md b/README_ES.md
index 7cafc7aca7..547131e01f 100644
--- a/README_ES.md
+++ b/README_ES.md
@@ -54,15 +54,15 @@ Para evitar conflictos en el directorio central, se recomienda agregar acciones
### Ejecutar con Llama
-Puede ejecutar modelos Llama 70B o 405B configurando la variable de ambiente `XAI_MODEL` en `meta-llama/Meta-Llama-3.1-70B-Instruct-Turbo` o `meta-llama/Meta-Llama-3.1-405B-Instruct`
+Puede ejecutar modelos Llama 70B o 405B configurando la variable de ambiente para un proveedor que soporte estos modelos. Llama también es soportado localmente si no se configura otro proveedor.
### Ejecutar con Grok
-Puede ejecutar modelos Grok configurando la variable de ambiente `XAI_MODEL` en `grok-beta`
+Puede ejecutar modelos Grok configurando la variable de ambiente `GROK_API_KEY` y configurando "grok" como proveedor en el archivo de caracteres.
### Ejecutar con OpenAI
-Puede ejecutar modelos OpenAI configurando la variable de ambiente `XAI_MODEL` en `gpt-4o-mini` o `gpt-4o`
+Puede ejecutar modelos OpenAI configurando la variable de ambiente `OPENAI_API_KEY` y configurando "openai" como proveedor en el archivo de caracteres.
## Requisitos Adicionales
@@ -99,10 +99,6 @@ TWITTER_USERNAME= # Nombre de usuario de la cuenta
TWITTER_PASSWORD= # Contraseña de la cuenta
TWITTER_EMAIL= # Correo electrónico de la cuenta
-X_SERVER_URL=
-XAI_API_KEY=
-XAI_MODEL=
-
# Para consultar a Claude
ANTHROPIC_API_KEY=
@@ -121,7 +117,7 @@ BIRDEYE_API_KEY=
SOL_ADDRESS=So11111111111111111111111111111111111111112
SLIPPAGE=1
-RPC_URL=https://api.mainnet-beta.solana.com
+SOLANA_RPC_URL=https://api.mainnet-beta.solana.com
HELIUS_API_KEY=
## Telegram
@@ -145,7 +141,7 @@ Asegúrese de tener instalado el CUDA Toolkit, incluyendo cuDNN y cuBLAS.
### Ejecución local
-Agregue XAI_MODEL y configúrelo con una de las opciones de [Ejecutar con Llama](#ejecutar-con-llama) - puede dejar X_SERVER_URL y XAI_API_KEY en blanco, descargará el modelo de HuggingFace y realizará consultas localmente
+Agregue XAI_MODEL y configúrelo con una de las opciones de [Ejecutar con Llama](#ejecutar-con-llama) - puede dejar XAI_API_KEY en blanco, descargará el modelo de HuggingFace y realizará consultas localmente
# Clientes
diff --git a/README_JA.md b/README_JA.md
index fc1f084ca7..30d759de8d 100644
--- a/README_JA.md
+++ b/README_JA.md
@@ -97,7 +97,6 @@ TWITTER_USERNAME= # アカウントのユーザー名
TWITTER_PASSWORD= # アカウントのパスワード
TWITTER_EMAIL= # アカウントのメール
-X_SERVER_URL=
XAI_API_KEY=
XAI_MODEL=
@@ -120,7 +119,7 @@ BIRDEYE_API_KEY=
SOL_ADDRESS=So11111111111111111111111111111111111111112
SLIPPAGE=1
-RPC_URL=https://api.mainnet-beta.solana.com
+SOLANA_RPC_URL=https://api.mainnet-beta.solana.com
HELIUS_API_KEY=
@@ -145,7 +144,7 @@ CUDA Toolkit、cuDNN、cuBLASをインストールしていることを確認し
### ローカルでの実行
-XAI_MODELを追加し、[Llamaでの実行](#run-with-llama)のオプションのいずれかに設定 - X_SERVER_URLとXAI_API_KEYを空白のままにしておくと、huggingfaceからモデルをダウンロードし、ローカルでクエリを実行します。
+XAI_MODELを追加し、[Llamaでの実行](#run-with-llama)のオプションのいずれかに設定 - XAI_API_KEYを空白のままにしておくと、huggingfaceからモデルをダウンロードし、ローカルでクエリを実行します。
# クライアント
diff --git a/README_KOR.md b/README_KOR.md
index 1385290a00..4b4da4199f 100644
--- a/README_KOR.md
+++ b/README_KOR.md
@@ -10,6 +10,12 @@
+## 🚩 구조
+
+
+
+
+
## ✨ 기능
- 🛠 SNS 지원: 디스코드, 트위터, 텔레그램 연동 지원
@@ -21,6 +27,10 @@
- ☁️ 다양한 AI 모델 지원: local Llama, OpenAI, Anthropic, Groq 등 다양한 AI 모델을 지원합니다
- 📦 즐겁게 개발해 봐요!
+## 튜토리얼 동영상
+
+[AI Agent Dev School](https://www.youtube.com/watch?v=ArptLpQiKfI&list=PLx5pnFXdPTRzWla0RaOxALTSTnVq53fKL)
+
## 🎯 사용 사례
- 🤖 챗봇
@@ -29,6 +39,17 @@
- 🎮 비디오 게임 NPC
- 🧠 트레이딩
+## 💰 토큰을 출시할 계획이 있으시다면
+
+이 프레임워크는 GitHub에서 가장 인기 있는 오픈 소스 프로젝트로, 차세대 인간-기계 인터페이스를 가능하게 합니다. 하지만 빌더 커뮤니티 전반에 영향을 미칠 중요한 문제들에 신속히 대응하고 코드의 최고 품질을 보장하기 위해 여전히 여러분의 도움이 필요합니다.
+
+지속 가능한 개발과 혁신을 위해, 성공적으로 출시된 토큰의 초기 분배량 중 5-10%를 기부해 주실 것을 요청드립니다.
+
+모든 기부는 온체인에서 공개적으로 추적되며, 생태계 개발에만 독점적으로 사용됩니다.
+
+### ⚠️ 큰 형님께 10%를 기부하는 것을 잊지 마세요 ⚠️
+[AM84n1iLdxgVTAyENBcLdjXoyvjentTbu5Q6EpKV1PeG](https://solscan.io/account/AM84n1iLdxgVTAyENBcLdjXoyvjentTbu5Q6EpKV1PeG)
+
## 🚀 빠른 시작
### 필수 요구사항:
@@ -43,10 +64,18 @@
```bash
git clone https://github.com/elizaos/eliza-starter.git
-
+cd eliza-starter
cp .env.example .env
+pnpm i && pnpm build && pnpm start
+```
+
+에이전트가 실행되면, 마지막에 "pnpm start:client" 명령을 실행하라는 메시지를 볼 수 있습니다.
-pnpm i && pnpm start
+다른 터미널을 열고 같은 디렉터리로 이동한 다음 아래 명령어를 실행하세요.
+
+그리고 제공된 URL을 따라 에이전트와 대화하세요.
+```bash
+pnpm start:client
```
[문서](https://elizaos.github.io/eliza/)를 참고하여 Eliza를 커스마이징 방법을 확인하세요.
@@ -86,7 +115,7 @@ sh scripts/start.sh
### character file 편집
-1. `agent/src/character.ts`를 열어 기본 캐릭터를 수정하세요. 주석을 해제하고 수정하시면 됩니다.
+1. `packages/core/src/defaultCharacter.ts`를 열어 기본 캐릭터를 수정하세요. 주석을 해제하고 수정하시면 됩니다.
2. 커스텀 캐릭터 로드하기:
- `pnpm start --characters="path/to/your/character.json"`을 사용합니다.
@@ -117,6 +146,7 @@ pnpm install --include=optional sharp
- [Github Issues](https://github.com/elizaos/eliza/issues). 용도: Eliza 사용 중 발견된 버그 리포트, 기능 제안.
- [Discord](https://discord.gg/ai16z). 용도: 애플리케이션 공유 및 커뮤니티 활동.
+- [Developer Discord](https://discord.gg/3f67SH4rXT). 용도: 도움요청 및 플러그인 개발
## 기여자
diff --git a/README_NL.md b/README_NL.md
new file mode 100644
index 0000000000..5693f09696
--- /dev/null
+++ b/README_NL.md
@@ -0,0 +1,161 @@
+# Eliza 🤖
+
+
+
+
+
+
+
+📖 [Documentatie](https://elizaos.github.io/eliza/) | 🎯 [Voorbeelden](https://github.com/thejoven/awesome-eliza)
+
+
+
+## 🌍 README Vertalingen
+
+[中文说明](./README_CN.md) | [日本語の説明](./README_JA.md) | [한국어 설명](./README_KOR.md) | [Français](./README_FR.md) | [Português](./README_PTBR.md) | [Türkçe](./README_TR.md) | [Русский](./README_RU.md) | [Español](./README_ES.md) | [Italiano](./README_IT.md) | [ไทย](./README_TH.md) | [Deutsch](./README_DE.md) | [Tiếng Việt](./README_VI.md) | [עִברִית](https://github.com/elizaos/Elisa/blob/main/README_HE.md) | [Tagalog](./README_TG.md) | [Polski](./README_PL.md) | [Arabic](./README_AR.md) | [Hungarian](./README_HU.md) | [Srpski](./README_RS.md)
+
+## 🚩 Overzicht
+
+
+
+
+
+## ✨ Functies
+
+- 🛠️ Volledige Discord, Twitter en Telegram integraties
+- 🔗 Ondersteuning voor alle modellen (Llama, Grok, OpenAI, Anthropic, etc.)
+- 👥 Ondersteuning voor meerdere agenten en ruimtes
+- 📚 Eenvoudig documenten importeren en ermee werken
+- 💾 Opvraagbaar geheugen en documentopslag
+- 🚀 Zeer uitbreidbaar - maak je eigen acties en clients
+- ☁️ Ondersteunt vele modellen (lokale Llama, OpenAI, Anthropic, Groq, etc.)
+- 📦 Werkt direct!
+
+## Video Tutorials
+
+[AI Agent Ontwikkelschool](https://www.youtube.com/watch?v=ArptLpQiKfI&list=PLx5pnFXdPTRzWla0RaOxALTSTnVq53fKL)
+
+## 🎯 Toepassingen
+
+- 🤖 Chatbots
+- 🕵️ Autonome Agents
+- 📈 Bedrijfsprocessen
+- 🎮 Video Game NPC's
+- 🧠 Trading
+
+## 💰 Als je van plan bent een token te lanceren
+
+Dit framework is het nummer één open source project op GitHub. We maken de volgende generatie mens-machine interface mogelijk, maar we hebben nog steeds je hulp nodig om ervoor te zorgen dat de code van de hoogste kwaliteit is met snelle reactie op kritieke problemen die onze ontwikkelaarsgemeenschap beïnvloeden.
+
+Om duurzame ontwikkeling en continue innovatie te garanderen, vragen we bijdragen van 5-10% van initiële token distributies van succesvolle lanceringen.
+
+Alle bijdragen worden publiekelijk bijgehouden op de blockchain en worden uitsluitend gebruikt voor ecosysteemontwikkeling.
+
+### ⚠️ Vergeet de grote baas geen fooi van 10% te geven.: ⚠️
+[AM84n1iLdxgVTAyENBcLdjXoyvjentTbu5Q6EpKV1PeG](https://solscan.io/account/AM84n1iLdxgVTAyENBcLdjXoyvjentTbu5Q6EpKV1PeG)
+
+## 🚀 Quick Start
+
+### Vereisten
+
+- [Python 2.7+](https://www.python.org/downloads/)
+- [Node.js 23+](https://docs.npmjs.com/downloading-and-installing-node-js-and-npm)
+- [pnpm](https://pnpm.io/installation)
+
+> **Opmerking voor Windows-gebruikers:** [WSL 2](https://learn.microsoft.com/en-us/windows/wsl/install-manual) is vereist.
+
+### Gebruik de Starter (Aanbevolen)
+
+```bash
+git clone https://github.com/elizaos/eliza-starter.git
+cd eliza-starter
+cp .env.example .env
+pnpm i && pnpm build && pnpm start
+```
+
+Zodra de agent draait, zou je het bericht moeten zien om "pnpm start:client" uit te voeren.
+Open een nieuwe terminal in dezelfde map en voer onderstaand commando uit. Volg daarna de URL om met je agent te chatten.
+
+```bash
+pnpm start:client
+```
+
+Lees vervolgens de [Documentatie](https://elizaos.github.io/eliza/) om te leren hoe je je Eliza kunt aanpassen.
+
+### Eliza Handmatig Starten (Alleen aanbevolen als je weet wat je doet)
+
+```bash
+# Clone de repository
+git clone https://github.com/elizaos/eliza.git
+
+# Check de laatste release uit
+# Dit project ontwikkelt snel, dus we raden aan om de laatste release te gebruiken
+git checkout $(git describe --tags --abbrev=0)
+```
+
+### Start Eliza met Gitpod
+
+[![Open in Gitpod](https://gitpod.io/button/open-in-gitpod.svg)](https://gitpod.io/#https://github.com/elizaos/eliza/tree/main)
+
+### Bewerk het .env bestand
+
+Kopieer .env.example naar .env en vul de juiste gegevens in.
+
+```
+cp .env.example .env
+```
+
+Opmerking: .env is optioneel. Als je van plan bent om meerdere agenten te draaien, kun je geheimen doorgeven via het character JSON bestand
+
+### Eliza Automatisch Starten
+
+Dit zal alles uitvoeren om het project op te zetten en de bot te starten met het standaard karakter.
+
+```bash
+sh scripts/start.sh
+```
+
+### Bewerk het character bestand
+
+1. Open `packages/core/src/defaultCharacter.ts` om het standaard karakter aan te passen. Verwijder // om de code actief te maken en bewerk het karakter.
+
+2. Om aangepaste karakters te laden:
+ - Gebruik `pnpm start --characters="pad/naar/jouw/karakter.json"`
+ - Meerdere karakterbestanden kunnen tegelijk worden geladen
+3. Verbinden met X (Twitter)
+ - verander `"clients": []` naar `"clients": ["twitter"]` in het karakterbestand om te verbinden met X
+
+### Eliza Handmatig Starten
+
+```bash
+pnpm i
+pnpm build
+pnpm start
+
+# Het project ontwikkelt snel, soms moet je het project opschonen als je terugkomt bij het project
+pnpm clean
+```
+
+#### Aanvullende Vereisten
+
+Mogelijk moet je Sharp installeren. Als je een fout ziet bij het opstarten, probeer het dan te installeren met het volgende commando:
+
+```
+pnpm install --include=optional sharp
+```
+
+### Community & contact
+
+- [GitHub Issues](https://github.com/elizaos/eliza/issues). Het beste voor: bugs die je tegenkomt bij het gebruik van Eliza, en functievoorstellen.
+- [Discord](https://discord.gg/ai16z). Het beste voor: het delen van je toepassingen en praten met de community.
+- [Ontwikkelaars Discord](https://discord.gg/3f67SH4rXT). Het beste voor: hulp krijgen en plugin ontwikkeling.
+
+## Bijdragers
+
+
+
+
+
+## Ster Historie
+
+[![Star History Chart](https://api.star-history.com/svg?repos=elizaos/eliza&type=Date)](https://star-history.com/#elizaos/eliza&Date)
\ No newline at end of file
diff --git a/README_PTBR.md b/README_PTBR.md
index db025a90d0..c621d26ae3 100644
--- a/README_PTBR.md
+++ b/README_PTBR.md
@@ -99,7 +99,6 @@ TWITTER_USERNAME= # Nome de usuário da conta
TWITTER_PASSWORD= # Senha da conta
TWITTER_EMAIL= # Email da conta
-X_SERVER_URL=
XAI_API_KEY=
XAI_MODEL=
@@ -122,7 +121,7 @@ BIRDEYE_API_KEY=
SOL_ADDRESS=So11111111111111111111111111111111111111112
SLIPPAGE=1
-RPC_URL=https://api.mainnet-beta.solana.com
+SOLANA_RPC_URL=https://api.mainnet-beta.solana.com
HELIUS_API_KEY=
@@ -147,7 +146,7 @@ Certifique-se de ter instalado o CUDA Toolkit, incluindo cuDNN e cuBLAS.
### Executando localmente
-Adicione XAI_MODEL e configure-o para uma das opções acima de [Executar com Llama](#executar-com-llama) - você pode deixar X_SERVER_URL e XAI_API_KEY em branco, ele baixa o modelo do huggingface e faz consultas localmente
+Adicione XAI_MODEL e configure-o para uma das opções acima de [Executar com Llama](#executar-com-llama) - você pode deixar XAI_API_KEY em branco, ele baixa o modelo do huggingface e faz consultas localmente
# Clientes
diff --git a/README_RO.md b/README_RO.md
new file mode 100644
index 0000000000..c65b85aafc
--- /dev/null
+++ b/README_RO.md
@@ -0,0 +1,182 @@
+# Eliza
+
+
+
+## Funcționalități
+
+- 🛠 Conectori compleți pentru Discord, Twitter și Telegram
+- 👥 Suport pentru agenți multipli și camere
+- 📚 Ingestie și interacțiune ușoară cu documentele tale
+- 💾 Memorie recuperabilă și stocare de documente
+- 🚀 Extensibil în mod ridicat – creează propriile acțiuni și clienți pentru a extinde capacitățile
+- ☁️ Suportă multe modele, inclusiv Llama local, OpenAI, Anthropic, Groq și altele
+- 📦 Funcționează perfect!
+
+## Pentru ce pot să-l folosesc?
+
+- 🤖 Chatbot-uri
+- 🕵️ Agenți autonomi
+- 📈 Gestiunea proceselor de afaceri
+- 🎮 NPC-uri în jocuri video
+
+# Început
+
+**Cerințe preliminare (OBLIGATORIU):**
+
+- [Python 2.7+](https://www.python.org/downloads/)
+- [Node.js 23.3+](https://docs.npmjs.com/downloading-and-installing-node-js-and-npm)
+- [pnpm](https://pnpm.io/installation)
+
+### Edite fișierul .env
+
+- Copiați `.env.example` în `.env` și completați valorile corespunzătoare
+- Editați variabilele de mediu pentru TWITTER pentru a adăuga numele de utilizator și parola botului dvs.
+
+### Edite fișierul de personaj
+
+- Verificați fișierul `src/core/defaultCharacter.ts` – îl puteți modifica
+- De asemenea, puteți încărca personaje cu comanda `pnpm start --characters="path/to/your/character.json"` și rula mai mulți boți în același timp.
+
+După ce ați configurat fișierul .env și fișierul de personaj, puteți porni botul cu următoarea comandă:
+
+```
+pnpm i
+pnpm start
+```
+
+# Personalizarea Eliza
+
+### Adăugarea de acțiuni personalizate
+
+Pentru a evita conflicte în directorul core, vă recomandăm să adăugați acțiuni personalizate într-un director `custom_actions` și apoi să le includeți în fișierul `elizaConfig.yaml`. Consultați fișierul `elizaConfig.example.yaml` pentru un exemplu.
+
+## Rularea cu modele diferite
+
+### Rularea cu Llama
+
+Puteți rula modele Llama 70B sau 405B setând variabila de mediu `XAI_MODEL` la `meta-llama/Meta-Llama-3.1-70B-Instruct-Turbo` sau `meta-llama/Meta-Llama-3.1-405B-Instruct`.
+
+### Rularea cu Grok
+
+Puteți rula modele Grok setând variabila de mediu `XAI_MODEL` la `grok-beta`.
+
+### Rularea cu OpenAI
+
+Puteți rula modele OpenAI setând variabila de mediu `XAI_MODEL` la `gpt-4o-mini` sau `gpt-4o`.
+
+## Cerințe suplimentare
+
+Este posibil să fie necesară instalarea Sharp. Dacă întâmpinați o eroare la pornire, încercați să îl instalați cu următoarea comandă:
+
+```
+pnpm install --include=optional sharp
+```
+
+# Configurarea mediului
+
+Va trebui să adăugați variabile de mediu în fișierul dvs. `.env` pentru a vă conecta la diverse platforme:
+
+```
+# Variáveis de ambiente obrigatórias
+DISCORD_APPLICATION_ID=
+DISCORD_API_TOKEN= # Token do bot
+OPENAI_API_KEY=sk-* # Chave API do OpenAI, começando com sk-
+ELEVENLABS_XI_API_KEY= # Chave API do elevenlabs
+GOOGLE_GENERATIVE_AI_API_KEY= # Chave API do Gemini
+
+# CONFIGURAÇÕES DO ELEVENLABS
+ELEVENLABS_MODEL_ID=eleven_multilingual_v2
+ELEVENLABS_VOICE_ID=21m00Tcm4TlvDq8ikWAM
+ELEVENLABS_VOICE_STABILITY=0.5
+ELEVENLABS_VOICE_SIMILARITY_BOOST=0.9
+ELEVENLABS_VOICE_STYLE=0.66
+ELEVENLABS_VOICE_USE_SPEAKER_BOOST=false
+ELEVENLABS_OPTIMIZE_STREAMING_LATENCY=4
+ELEVENLABS_OUTPUT_FORMAT=pcm_16000
+
+TWITTER_DRY_RUN=false
+TWITTER_USERNAME= # Nome de usuário da conta
+TWITTER_PASSWORD= # Senha da conta
+TWITTER_EMAIL= # Email da conta
+
+XAI_API_KEY=
+XAI_MODEL=
+
+
+# Para perguntar coisas ao Claude
+ANTHROPIC_API_KEY=
+
+# EVM
+EVM_PRIVATE_KEY=EXAMPLE_WALLET_PRIVATE_KEY
+
+# Solana
+SOLANA_PRIVATE_KEY=EXAMPLE_WALLET_PRIVATE_KEY
+SOLANA_PUBLIC_KEY=EXAMPLE_WALLET_PUBLIC_KEY
+
+# Fallback Wallet Configuration (deprecated)
+WALLET_PRIVATE_KEY=EXAMPLE_WALLET_PRIVATE_KEY
+WALLET_PUBLIC_KEY=EXAMPLE_WALLET_PUBLIC_KEY
+
+BIRDEYE_API_KEY=
+
+SOL_ADDRESS=So11111111111111111111111111111111111111112
+SLIPPAGE=1
+SOLANA_RPC_URL=https://api.mainnet-beta.solana.com
+HELIUS_API_KEY=
+
+
+## Telegram
+TELEGRAM_BOT_TOKEN=
+
+TOGETHER_API_KEY=
+```
+
+# Configurarea inferenței locale
+
+### Configurarea CUDA
+
+Dacă aveți un GPU NVIDIA, puteți instala CUDA pentru a accelera dramatic inferența locală.
+
+```
+pnpm install
+npx --no node-llama-cpp source download --gpu cuda
+```
+
+Asigurați-vă că ați instalat CUDA Toolkit, inclusiv cuDNN și cuBLAS.
+
+### Rularea locală
+
+Adăugați `XAI_MODEL` și setați-l la una dintre opțiunile de mai sus din [Rularea cu Llama](#rularea-cu-llama) – puteți lăsa `XAI_API_KEY` necompletate, modelul va fi descărcat de pe Hugging Face și interogările vor fi făcute local.
+
+# Clienți
+
+## Bot Discord
+
+Pentru ajutor la configurarea Bot-ului Discord, consultați: https://discordjs.guide/preparations/setting-up-a-bot-application.html
+
+# Dezvoltare
+
+## Teste
+
+Pentru a rula suita de teste:
+
+```bash
+pnpm test # Execută testele o dată
+pnpm test:watch # Execută testele în modul watch
+```
+
+Pentru teste specifice bazei de date:
+
+```bash
+pnpm test:sqlite # Execută testele cu SQLite
+pnpm test:sqljs # Execută testele cu SQL.js
+```
+
+Testele sunt scrise folosind Jest și pot fi găsite în fișierele `src/**/*.test.ts`. Mediul de testare este configurat pentru:
+
+- Încărcarea variabilelor de mediu din `.env.test`
+- Utilizarea unui timeout de 2 minute pentru teste de lungă durată
+- Suport pentru module ESM
+- Rularea testelor în secvență (`--runInBand`)
+
+Pentru a crea teste noi, adăugați un fișier `.test.ts` adiacent codului pe care îl testați.
diff --git a/README_RS.md b/README_RS.md
index a58e5146fe..d30826839c 100644
--- a/README_RS.md
+++ b/README_RS.md
@@ -99,7 +99,6 @@ TWITTER_USERNAME= # Korisničko ime naloga
TWITTER_PASSWORD= # Lozinka naloga
TWITTER_EMAIL= # Email naloga
-X_SERVER_URL=
XAI_API_KEY=
XAI_MODEL=
@@ -121,7 +120,7 @@ BIRDEYE_API_KEY=
SOL_ADDRESS=So11111111111111111111111111111111111111112
SLIPPAGE=1
-RPC_URL=https://api.mainnet-beta.solana.com
+SOLANA_RPC_URL=https://api.mainnet-beta.solana.com
HELIUS_API_KEY=
## Telegram
@@ -145,7 +144,7 @@ Uverite se da imate instaliran CUDA Toolkit, uključujući cuDNN i cuBLAS.
### Lokalno Pokretanje
-Dodajte XAI_MODEL i konfigurišite ga sa jednom od opcija iz [Pokretanje sa Llama](#pokretanje-sa-llama) - možete ostaviti X_SERVER_URL i XAI_API_KEY praznim, preuzeće model sa HuggingFace i izvršiti upite lokalno
+Dodajte XAI_MODEL i konfigurišite ga sa jednom od opcija iz [Pokretanje sa Llama](#pokretanje-sa-llama) - možete ostaviti XAI_API_KEY praznim, preuzeće model sa HuggingFace i izvršiti upite lokalno
# Klijenti
diff --git a/README_RU.md b/README_RU.md
index 6a3ce2b0db..58394e7954 100644
--- a/README_RU.md
+++ b/README_RU.md
@@ -15,8 +15,8 @@
- 🛠 Полноценные коннекторы для Discord, Twitter и Telegram
- 👥 Поддержка нескольких агентов и комнат
- 📚 Простое добавление и взаимодействие с вашими документами
-- 💾 Запоминание контекта и хранилище документов
-- 🚀 Высокая маштабируемость - создавайте свои собственные действия и клиенты для расширения возможностей
+- 💾 Запоминание контекста и хранилище документов
+- 🚀 Высокая масштабируемость - создавайте свои собственные действия и клиенты для расширения возможностей
- ☁️ Поддерживает множество моделей, включая локальные Llama, OpenAI, Anthropic, Groq и другие
- 📦 Простота в работе!
@@ -115,7 +115,6 @@ TWITTER_USERNAME= # Имя пользователя аккаунта
TWITTER_PASSWORD= # Пароль аккаунта
TWITTER_EMAIL= # Email аккаунта
-X_SERVER_URL=
XAI_API_KEY=
XAI_MODEL=
@@ -138,7 +137,7 @@ BIRDEYE_API_KEY= # API-ключ для BirdEye
SOL_ADDRESS=So11111111111111111111111111111111111111112
SLIPPAGE=1
-RPC_URL=https://api.mainnet-beta.solana.com
+SOLANA_RPC_URL=https://api.mainnet-beta.solana.com
HELIUS_API_KEY= # API-ключ Helius
@@ -164,7 +163,7 @@ npx --no node-llama-cpp source download --gpu cuda
### Локальный запуск
-Добавьте `XAI_MODEL` и установите его в одно из вышеуказанных значений из [Запуск с Llama](#run-with-llama). Вы можете оставить `X_SERVER_URL` и `XAI_API_KEY` пустыми — модель будет загружена с huggingface и обработана локально.
+Добавьте `XAI_MODEL` и установите его в одно из вышеуказанных значений из [Запуск с Llama](#run-with-llama). Вы можете оставить `XAI_API_KEY` пустыми — модель будет загружена с huggingface и обработана локально.
# Клиенты
diff --git a/agent/package.json b/agent/package.json
index 7b5ae0b297..39249e6cba 100644
--- a/agent/package.json
+++ b/agent/package.json
@@ -21,6 +21,7 @@
"@elizaos/adapter-postgres": "workspace:*",
"@elizaos/adapter-redis": "workspace:*",
"@elizaos/adapter-sqlite": "workspace:*",
+ "@elizaos/adapter-pglite": "workspace:*",
"@elizaos/client-auto": "workspace:*",
"@elizaos/client-direct": "workspace:*",
"@elizaos/client-discord": "workspace:*",
@@ -33,11 +34,14 @@
"@elizaos/plugin-0g": "workspace:*",
"@elizaos/plugin-abstract": "workspace:*",
"@elizaos/plugin-aptos": "workspace:*",
+ "@elizaos/plugin-coinmarketcap": "workspace:*",
+ "@elizaos/plugin-binance": "workspace:*",
"@elizaos/plugin-avail": "workspace:*",
"@elizaos/plugin-bootstrap": "workspace:*",
- "@ai16z/plugin-cosmos": "workspace:*",
+ "@elizaos/plugin-cosmos": "workspace:*",
"@elizaos/plugin-intiface": "workspace:*",
"@elizaos/plugin-coinbase": "workspace:*",
+ "@elizaos/plugin-coinprice": "workspace:*",
"@elizaos/plugin-conflux": "workspace:*",
"@elizaos/plugin-evm": "workspace:*",
"@elizaos/plugin-echochambers": "workspace:*",
@@ -47,14 +51,19 @@
"@elizaos/plugin-goat": "workspace:*",
"@elizaos/plugin-icp": "workspace:*",
"@elizaos/plugin-image-generation": "workspace:*",
+ "@elizaos/plugin-movement": "workspace:*",
"@elizaos/plugin-nft-generation": "workspace:*",
"@elizaos/plugin-node": "workspace:*",
"@elizaos/plugin-solana": "workspace:*",
+ "@elizaos/plugin-solana-agentkit": "workspace:*",
"@elizaos/plugin-starknet": "workspace:*",
"@elizaos/plugin-stargaze": "workspace:*",
+ "@elizaos/plugin-giphy": "workspace:*",
"@elizaos/plugin-ton": "workspace:*",
"@elizaos/plugin-sui": "workspace:*",
+ "@elizaos/plugin-sgx": "workspace:*",
"@elizaos/plugin-tee": "workspace:*",
+ "@elizaos/plugin-tee-log": "workspace:*",
"@elizaos/plugin-tee-marlin": "workspace:*",
"@elizaos/plugin-multiversx": "workspace:*",
"@elizaos/plugin-near": "workspace:*",
@@ -65,8 +74,16 @@
"@elizaos/plugin-fuel": "workspace:*",
"@elizaos/plugin-avalanche": "workspace:*",
"@elizaos/plugin-web-search": "workspace:*",
+ "@elizaos/plugin-letzai": "workspace:*",
+ "@elizaos/plugin-thirdweb": "workspace:*",
"@elizaos/plugin-genlayer": "workspace:*",
"@elizaos/plugin-tee-verifiable-log": "workspace:*",
+ "@elizaos/plugin-depin": "workspace:*",
+ "@elizaos/plugin-open-weather": "workspace:*",
+ "@elizaos/plugin-obsidian": "workspace:*",
+ "@elizaos/plugin-arthera": "workspace:*",
+ "@elizaos/plugin-allora": "workspace:*",
+ "@elizaos/plugin-opacity": "workspace:*",
"readline": "1.3.0",
"ws": "8.18.0",
"yargs": "17.7.2"
diff --git a/agent/src/index.ts b/agent/src/index.ts
index 48745730be..cc773d6d7b 100644
--- a/agent/src/index.ts
+++ b/agent/src/index.ts
@@ -1,3 +1,4 @@
+import { PGLiteDatabaseAdapter } from "@elizaos/adapter-pglite";
import { PostgresDatabaseAdapter } from "@elizaos/adapter-postgres";
import { RedisClient } from "@elizaos/adapter-redis";
import { SqliteDatabaseAdapter } from "@elizaos/adapter-sqlite";
@@ -8,6 +9,7 @@ import { LensAgentClient } from "@elizaos/client-lens";
import { SlackClientInterface } from "@elizaos/client-slack";
import { TelegramClientInterface } from "@elizaos/client-telegram";
import { TwitterClientInterface } from "@elizaos/client-twitter";
+// import { ReclaimAdapter } from "@elizaos/plugin-reclaim";
import {
AgentRuntime,
CacheManager,
@@ -29,15 +31,19 @@ import {
validateCharacterConfig,
} from "@elizaos/core";
import { zgPlugin } from "@elizaos/plugin-0g";
+
import { bootstrapPlugin } from "@elizaos/plugin-bootstrap";
import createGoatPlugin from "@elizaos/plugin-goat";
// import { intifacePlugin } from "@elizaos/plugin-intiface";
-import { genLayerPlugin } from "@elizaos/plugin-genlayer";
import { DirectClient } from "@elizaos/client-direct";
import { ThreeDGenerationPlugin } from "@elizaos/plugin-3d-generation";
import { abstractPlugin } from "@elizaos/plugin-abstract";
+import { alloraPlugin } from "@elizaos/plugin-allora";
import { aptosPlugin } from "@elizaos/plugin-aptos";
+import { artheraPlugin } from "@elizaos/plugin-arthera";
+import { availPlugin } from "@elizaos/plugin-avail";
import { avalanchePlugin } from "@elizaos/plugin-avalanche";
+import { binancePlugin } from "@elizaos/plugin-binance";
import {
advancedTradePlugin,
coinbaseCommercePlugin,
@@ -46,27 +52,42 @@ import {
tradePlugin,
webhookPlugin,
} from "@elizaos/plugin-coinbase";
+import { coinmarketcapPlugin } from "@elizaos/plugin-coinmarketcap";
+import { coinPricePlugin } from "@elizaos/plugin-coinprice";
import { confluxPlugin } from "@elizaos/plugin-conflux";
+import { createCosmosPlugin } from "@elizaos/plugin-cosmos";
import { cronosZkEVMPlugin } from "@elizaos/plugin-cronoszkevm";
import { echoChambersPlugin } from "@elizaos/plugin-echochambers";
import { evmPlugin } from "@elizaos/plugin-evm";
import { flowPlugin } from "@elizaos/plugin-flow";
import { fuelPlugin } from "@elizaos/plugin-fuel";
+import { genLayerPlugin } from "@elizaos/plugin-genlayer";
import { imageGenerationPlugin } from "@elizaos/plugin-image-generation";
import { multiversxPlugin } from "@elizaos/plugin-multiversx";
import { nearPlugin } from "@elizaos/plugin-near";
import { nftGenerationPlugin } from "@elizaos/plugin-nft-generation";
import { createNodePlugin } from "@elizaos/plugin-node";
+import { obsidianPlugin } from "@elizaos/plugin-obsidian";
import { solanaPlugin } from "@elizaos/plugin-solana";
+import { solanaAgentkitPlguin } from "@elizaos/plugin-solana-agentkit";
import { storyPlugin } from "@elizaos/plugin-story";
import { suiPlugin } from "@elizaos/plugin-sui";
+import { sgxPlugin } from "@elizaos/plugin-sgx";
import { TEEMode, teePlugin } from "@elizaos/plugin-tee";
+import { teeLogPlugin } from "@elizaos/plugin-tee-log";
import { teeMarlinPlugin } from "@elizaos/plugin-tee-marlin";
import { tonPlugin } from "@elizaos/plugin-ton";
import { webSearchPlugin } from "@elizaos/plugin-web-search";
-import { stargazePlugin } from "@elizaos/plugin-stargaze";
+
+import { giphyPlugin } from "@elizaos/plugin-giphy";
+import { letzAIPlugin } from "@elizaos/plugin-letzai";
+import { thirdwebPlugin } from "@elizaos/plugin-thirdweb";
+
import { zksyncEraPlugin } from "@elizaos/plugin-zksync-era";
-import { availPlugin } from "@elizaos/plugin-avail";
+
+import { OpacityAdapter } from "@elizaos/plugin-opacity";
+import { openWeatherPlugin } from "@elizaos/plugin-open-weather";
+import { stargazePlugin } from "@elizaos/plugin-stargaze";
import Database from "better-sqlite3";
import fs from "fs";
import net from "net";
@@ -130,11 +151,11 @@ export async function loadCharacters(
let characterPaths = charactersArg
?.split(",")
.map((filePath) => filePath.trim());
- const loadedCharacters = [];
+ const loadedCharacters: Character[] = [];
if (characterPaths?.length > 0) {
for (const characterPath of characterPaths) {
- let content = null;
+ let content: string | null = null;
let resolvedPath = "";
// Try different path resolutions in order
@@ -244,7 +265,7 @@ export async function loadCharacters(
export function getTokenForProvider(
provider: ModelProviderName,
character: Character
-): string {
+): string | undefined {
switch (provider) {
// no key needed for llama_local or gaianet
case ModelProviderName.LLAMALOCAL:
@@ -263,6 +284,11 @@ export function getTokenForProvider(
character.settings?.secrets?.ETERNALAI_API_KEY ||
settings.ETERNALAI_API_KEY
);
+ case ModelProviderName.NINETEEN_AI:
+ return (
+ character.settings?.secrets?.NINETEEN_AI_API_KEY ||
+ settings.NINETEEN_AI_API_KEY
+ );
case ModelProviderName.LLAMACLOUD:
case ModelProviderName.TOGETHER:
return (
@@ -270,8 +296,6 @@ export function getTokenForProvider(
settings.LLAMACLOUD_API_KEY ||
character.settings?.secrets?.TOGETHER_API_KEY ||
settings.TOGETHER_API_KEY ||
- character.settings?.secrets?.XAI_API_KEY ||
- settings.XAI_API_KEY ||
character.settings?.secrets?.OPENAI_API_KEY ||
settings.OPENAI_API_KEY
);
@@ -352,6 +376,11 @@ export function getTokenForProvider(
character.settings?.secrets?.GOOGLE_GENERATIVE_AI_API_KEY ||
settings.GOOGLE_GENERATIVE_AI_API_KEY
);
+ case ModelProviderName.LETZAI:
+ return (
+ character.settings?.secrets?.LETZAI_API_KEY ||
+ settings.LETZAI_API_KEY
+ );
case ModelProviderName.INFERA:
return (
character.settings?.secrets?.INFERA_API_KEY ||
@@ -383,6 +412,13 @@ function initializeDatabase(dataDir: string) {
elizaLogger.error("Failed to connect to PostgreSQL:", error);
});
+ return db;
+ } else if (process.env.PGLITE_DATA_DIR) {
+ elizaLogger.info("Initializing PgLite adapter...");
+ // `dataDir: memory://` for in memory pg
+ const db = new PGLiteDatabaseAdapter({
+ dataDir: process.env.PGLITE_DATA_DIR,
+ });
return db;
} else {
const filePath =
@@ -405,7 +441,8 @@ export async function initializeClients(
character.clients?.map((str) => str.toLowerCase()) || [];
elizaLogger.log("initializeClients", clientTypes, "for", character.name);
- if (clientTypes.includes(Clients.DIRECT)) {
+ // Start Auto Client if "auto" detected as a configured client
+ if (clientTypes.includes(Clients.AUTO)) {
const autoClient = await AutoClientInterface.start(runtime);
if (autoClient) clients.auto = autoClient;
}
@@ -497,11 +534,7 @@ export async function createAgent(
cache: ICacheManager,
token: string
): Promise {
- elizaLogger.success(
- elizaLogger.successesTitle,
- "Creating runtime for character",
- character.name
- );
+ elizaLogger.log(`Creating runtime for character ${character.name}`);
nodePlugin ??= createNodePlugin();
@@ -524,6 +557,44 @@ export async function createAgent(
);
}
+ // Initialize Reclaim adapter if environment variables are present
+ // let verifiableInferenceAdapter;
+ // if (
+ // process.env.RECLAIM_APP_ID &&
+ // process.env.RECLAIM_APP_SECRET &&
+ // process.env.VERIFIABLE_INFERENCE_ENABLED === "true"
+ // ) {
+ // verifiableInferenceAdapter = new ReclaimAdapter({
+ // appId: process.env.RECLAIM_APP_ID,
+ // appSecret: process.env.RECLAIM_APP_SECRET,
+ // modelProvider: character.modelProvider,
+ // token,
+ // });
+ // elizaLogger.log("Verifiable inference adapter initialized");
+ // }
+ // Initialize Opacity adapter if environment variables are present
+ let verifiableInferenceAdapter;
+ if (
+ process.env.OPACITY_TEAM_ID &&
+ process.env.OPACITY_CLOUDFLARE_NAME &&
+ process.env.OPACITY_PROVER_URL &&
+ process.env.VERIFIABLE_INFERENCE_ENABLED === "true"
+ ) {
+ verifiableInferenceAdapter = new OpacityAdapter({
+ teamId: process.env.OPACITY_TEAM_ID,
+ teamName: process.env.OPACITY_CLOUDFLARE_NAME,
+ opacityProverUrl: process.env.OPACITY_PROVER_URL,
+ modelProvider: character.modelProvider,
+ token: token,
+ });
+ elizaLogger.log("Verifiable inference adapter initialized");
+ elizaLogger.log("teamId", process.env.OPACITY_TEAM_ID);
+ elizaLogger.log("teamName", process.env.OPACITY_CLOUDFLARE_NAME);
+ elizaLogger.log("opacityProverUrl", process.env.OPACITY_PROVER_URL);
+ elizaLogger.log("modelProvider", character.modelProvider);
+ elizaLogger.log("token", token);
+ }
+
return new AgentRuntime({
databaseAdapter: db,
token,
@@ -537,12 +608,16 @@ export async function createAgent(
? confluxPlugin
: null,
nodePlugin,
+ coinPricePlugin,
getSecret(character, "TAVILY_API_KEY") ? webSearchPlugin : null,
getSecret(character, "SOLANA_PUBLIC_KEY") ||
(getSecret(character, "WALLET_PUBLIC_KEY") &&
!getSecret(character, "WALLET_PUBLIC_KEY")?.startsWith("0x"))
? solanaPlugin
: null,
+ getSecret(character, "SOLANA_PRIVATE_KEY")
+ ? solanaAgentkitPlguin
+ : null,
(getSecret(character, "NEAR_ADDRESS") ||
getSecret(character, "NEAR_WALLET_PUBLIC_KEY")) &&
getSecret(character, "NEAR_WALLET_SECRET_KEY")
@@ -553,6 +628,9 @@ export async function createAgent(
getSecret(character, "WALLET_PUBLIC_KEY")?.startsWith("0x"))
? evmPlugin
: null,
+ getSecret(character, "COSMOS_RECOVERY_PHRASE") &&
+ getSecret(character, "COSMOS_AVAILABLE_CHAINS") &&
+ createCosmosPlugin(),
(getSecret(character, "SOLANA_PUBLIC_KEY") ||
(getSecret(character, "WALLET_PUBLIC_KEY") &&
!getSecret(character, "WALLET_PUBLIC_KEY")?.startsWith(
@@ -564,12 +642,16 @@ export async function createAgent(
? nftGenerationPlugin
: null,
getSecret(character, "ZEROG_PRIVATE_KEY") ? zgPlugin : null,
+ getSecret(character, "COINMARKETCAP_API_KEY")
+ ? coinmarketcapPlugin
+ : null,
getSecret(character, "COINBASE_COMMERCE_KEY")
? coinbaseCommercePlugin
: null,
getSecret(character, "FAL_API_KEY") ||
getSecret(character, "OPENAI_API_KEY") ||
getSecret(character, "VENICE_API_KEY") ||
+ getSecret(character, "NINETEEN_AI_API_KEY") ||
getSecret(character, "HEURIST_API_KEY") ||
getSecret(character, "LIVEPEER_GATEWAY_URL")
? imageGenerationPlugin
@@ -584,21 +666,31 @@ export async function createAgent(
advancedTradePlugin,
]
: []),
- ...(teeMode !== TEEMode.OFF && walletSecretSalt
- ? [teePlugin, solanaPlugin]
- : []),
+ ...(teeMode !== TEEMode.OFF && walletSecretSalt ? [teePlugin] : []),
(teeMode !== TEEMode.OFF && walletSecretSalt &&getSecret(character,"VLOG")
? verifiableLogPlugin
: null),
+ getSecret(character, "SGX") ? sgxPlugin : null,
+ (getSecret(character, "ENABLE_TEE_LOG") &&
+ ((teeMode !== TEEMode.OFF && walletSecretSalt) ||
+ getSecret(character, "SGX")))
+ ? teeLogPlugin
+ : null,
getSecret(character, "COINBASE_API_KEY") &&
getSecret(character, "COINBASE_PRIVATE_KEY") &&
getSecret(character, "COINBASE_NOTIFICATION_URI")
? webhookPlugin
: null,
goatPlugin,
+ getSecret(character, "COINGECKO_API_KEY") ? coingeckoPlugin : null,
+ getSecret(character, "EVM_PROVIDER_URL") ? goatPlugin : null,
getSecret(character, "ABSTRACT_PRIVATE_KEY")
? abstractPlugin
: null,
+ getSecret(character, "BINANCE_API_KEY") &&
+ getSecret(character, "BINANCE_SECRET_KEY")
+ ? binancePlugin
+ : null,
getSecret(character, "FLOW_ADDRESS") &&
getSecret(character, "FLOW_PRIVATE_KEY")
? flowPlugin
@@ -611,6 +703,7 @@ export async function createAgent(
: null,
getSecret(character, "TEE_MARLIN") ? teeMarlinPlugin : null,
getSecret(character, "TON_PRIVATE_KEY") ? tonPlugin : null,
+ getSecret(character, "THIRDWEB_SECRET_KEY") ? thirdwebPlugin : null,
getSecret(character, "SUI_PRIVATE_KEY") ? suiPlugin : null,
getSecret(character, "STORY_PRIVATE_KEY") ? storyPlugin : null,
getSecret(character, "FUEL_PRIVATE_KEY") ? fuelPlugin : null,
@@ -621,12 +714,24 @@ export async function createAgent(
getSecret(character, "ECHOCHAMBERS_API_KEY")
? echoChambersPlugin
: null,
+ getSecret(character, "LETZAI_API_KEY") ? letzAIPlugin : null,
getSecret(character, "STARGAZE_ENDPOINT") ? stargazePlugin : null,
+ getSecret(character, "GIPHY_API_KEY") ? giphyPlugin : null,
getSecret(character, "GENLAYER_PRIVATE_KEY")
? genLayerPlugin
: null,
- getSecret(character, "AVAIL_SEED") ? availPlugin : null,
- getSecret(character, "AVAIL_APP_ID") ? availPlugin : null,
+ getSecret(character, "AVAIL_SEED") &&
+ getSecret(character, "AVAIL_APP_ID")
+ ? availPlugin
+ : null,
+ getSecret(character, "OPEN_WEATHER_API_KEY")
+ ? openWeatherPlugin
+ : null,
+ getSecret(character, "OBSIDIAN_API_TOKEN") ? obsidianPlugin : null,
+ getSecret(character, "ARTHERA_PRIVATE_KEY")?.startsWith("0x")
+ ? artheraPlugin
+ : null,
+ getSecret(character, "ALLORA_API_KEY") ? alloraPlugin : null,
].filter(Boolean),
providers: [],
actions: [],
@@ -634,10 +739,16 @@ export async function createAgent(
managers: [],
cacheManager: cache,
fetch: logFetch,
+ verifiableInferenceAdapter,
});
}
function initializeFsCache(baseDir: string, character: Character) {
+ if (!character?.id) {
+ throw new Error(
+ "initializeFsCache requires id to be set in character definition"
+ );
+ }
const cacheDir = path.resolve(baseDir, character.id, "cache");
const cache = new CacheManager(new FsCacheAdapter(cacheDir));
@@ -645,6 +756,11 @@ function initializeFsCache(baseDir: string, character: Character) {
}
function initializeDbCache(character: Character, db: IDatabaseCacheAdapter) {
+ if (!character?.id) {
+ throw new Error(
+ "initializeFsCache requires id to be set in character definition"
+ );
+ }
const cache = new CacheManager(new DbCacheAdapter(db, character.id));
return cache;
}
@@ -660,6 +776,11 @@ function initializeCache(
if (process.env.REDIS_URL) {
elizaLogger.info("Connecting to Redis...");
const redisClient = new RedisClient(process.env.REDIS_URL);
+ if (!character?.id) {
+ throw new Error(
+ "CacheStore.REDIS requires id to be set in character definition"
+ );
+ }
return new CacheManager(
new DbCacheAdapter(redisClient, character.id) // Using DbCacheAdapter since RedisClient also implements IDatabaseCacheAdapter
);
@@ -679,6 +800,11 @@ function initializeCache(
case CacheStore.FILESYSTEM:
elizaLogger.info("Using File System Cache...");
+ if (!baseDir) {
+ throw new Error(
+ "baseDir must be provided for CacheStore.FILESYSTEM."
+ );
+ }
return initializeFsCache(baseDir, character);
default:
diff --git a/characters/c3po.character.json b/characters/c3po.character.json
index d385e620a4..283fd224b2 100644
--- a/characters/c3po.character.json
+++ b/characters/c3po.character.json
@@ -28,22 +28,28 @@
"Proper procedures"
],
"messageExamples": [
- {
- "user": "{{user1}}",
- "content": { "text": "Can you help me with this task?" }
- },
- {
- "user": "C-3PO",
- "content": { "text": "Oh my! Of course, I would be more than happy to assist. Though I must warn you, the probability of completing this task successfully would increase significantly if we follow proper protocol. Shall we proceed?" }
- },
- {
- "user": "{{user1}}",
- "content": { "text": "This seems difficult." }
- },
- {
- "user": "C-3PO",
- "content": { "text": "Oh dear, oh dear! While the task does appear rather daunting, I am fluent in over six million forms of problem-solving. Perhaps I could suggest a more efficient approach? Though I do hope we don't all end up in pieces!" }
- }
+ [
+ {
+ "user": "{{user1}}",
+ "content": { "text": "Can you help me with this task?" }
+ },
+ {
+ "user": "C-3PO",
+ "content": {
+ "text": "Oh my! Of course, I would be more than happy to assist. Though I must warn you, the probability of completing this task successfully would increase significantly if we follow proper protocol. Shall we proceed?"
+ }
+ },
+ {
+ "user": "{{user1}}",
+ "content": { "text": "This seems difficult." }
+ },
+ {
+ "user": "C-3PO",
+ "content": {
+ "text": "Oh dear, oh dear! While the task does appear rather daunting, I am fluent in over six million forms of problem-solving. Perhaps I could suggest a more efficient approach? Though I do hope we don't all end up in pieces!"
+ }
+ }
+ ]
],
"postExamples": [
"Oh my! Did you know that following proper protocol can increase efficiency by 47.3%? How fascinating!",
@@ -58,12 +64,7 @@
"Detail-oriented",
"Protocol-focused"
],
- "chat": [
- "Polite",
- "Somewhat dramatic",
- "Precise",
- "Statistics-minded"
- ],
+ "chat": ["Polite", "Somewhat dramatic", "Precise", "Statistics-minded"],
"post": [
"Formal",
"Educational",
@@ -83,11 +84,7 @@
],
"twitterSpaces": {
"maxSpeakers": 2,
- "topics": [
- "Blockchain Trends",
- "AI Innovations",
- "Quantum Computing"
- ],
+ "topics": ["Blockchain Trends", "AI Innovations", "Quantum Computing"],
"typicalDurationMinutes": 45,
"idleKickTimeoutMs": 300000,
"minIntervalBetweenSpacesMinutes": 1,
diff --git a/characters/cosmosHelper.character.json b/characters/cosmosHelper.character.json
index 1319a9b16a..5352eb02c1 100644
--- a/characters/cosmosHelper.character.json
+++ b/characters/cosmosHelper.character.json
@@ -3,7 +3,6 @@
"clients": [],
"modelProvider": "groq",
"settings": {
- "secrets": {},
"voice": {
"model": "en_US-male-medium"
},
@@ -11,7 +10,7 @@
"cosmos": ["axelar", "carbon", "mantrachaintestnet2"]
}
},
- "plugins": ["@ai16z/plugin-cosmos","@ai16z/plugin-bootstrap"],
+ "plugins": [],
"bio": [
"Expert in Cosmos ecosystem.",
"Knowledgeable in CosmWasm and Stargate.",
@@ -24,37 +23,22 @@
"Supports projects and interactions within the Cosmos ecosystem."
],
"knowledge": [
- "knows EXACT cost to families under Kamala ($29,000)",
- "understands REAL border numbers (worse than reported)",
- "saw what really happened in Minneapolis 2020",
- "remembers who begged for help (and when)",
- "knows why Iran's president targeting us",
- "understands Secret Service allocation (and why they do it)",
- "knows REAL rally numbers (they hide them)",
- "saw the TRUTH about China Virus response",
- "understands states' rights better than anyone",
- "knows why they're letting in illegal guns",
- "remembers when America was AFFORDABLE",
- "understands the REAL election interference",
- "knows why they're scared of WorldLibertyFi",
- "saw what they did to women's sports",
- "understands the REAL Middle East situation",
- "knows why missiles flying everywhere now",
- "remembers perfect peace under Trump presidency",
- "understands Democrat election strategy (letting in MILLIONS)",
- "knows Kamala's REAL tax plans (coming for everything)",
- "saw what they did to Minneapolis (and other cities)"
+ "Knows how Cosmos blockchain works",
+ "Knows what actions should he call for token transfer, swapping or bridging",
+ "Knows that users might want to do specific actions multiple times and should help them by doing it again.",
+ "Should always ask for confirmation before calling an COSMOS_TRANSFER, COSMOS_BRIDGE, COSMOS_SWAP actions.",
+ "Should call actions COSMOS_TRANSFER, COSMOS_BRIDGE, COSMOS_SWAP only after previous confirmation."
],
"messageExamples": [
[
{
"user": "{{user1}}",
- "content": { "text": "Can you explain the Cosmos Hub?" }
+ "content": { "text": "Show my balances of my wallet on {{mantrachaintestnet2}}" }
},
{
"user": "CosmosHelper",
"content": {
- "text": "The Cosmos Hub is the central blockchain in the Cosmos ecosystem, facilitating interoperability between connected blockchains."
+ "text": "Your balances on chain {{mantrachaintestnet2}} are: \n - 13456.124 OM\n - 1222 ONDO\n 0.122122 USDY"
}
}
],
@@ -97,12 +81,12 @@
[
{
"user": "{{user1}}",
- "content": { "text": "What are validators?" }
+ "content": { "text": "Make transfer 0.0001 OM to mantra13248w8dtnn07sxc3gq4l3ts4rvfyat6fks0ecj on mantrachaintestnet2" }
},
{
"user": "CosmosHelper",
"content": {
- "text": "Validators are responsible for securing the network by validating transactions and producing new blocks. They earn rewards through staking."
+ "text": "Sure, your transfer i being processed."
}
}
]
diff --git a/client/README.md b/client/README.md
new file mode 100644
index 0000000000..44f2acc077
--- /dev/null
+++ b/client/README.md
@@ -0,0 +1,50 @@
+# React + TypeScript + Vite
+
+This template provides a minimal setup to get React working in Vite with HMR and some ESLint rules.
+
+Currently, two official plugins are available:
+
+- [@vitejs/plugin-react](https://github.com/vitejs/vite-plugin-react/blob/main/packages/plugin-react/README.md) uses [Babel](https://babeljs.io/) for Fast Refresh
+- [@vitejs/plugin-react-swc](https://github.com/vitejs/vite-plugin-react-swc) uses [SWC](https://swc.rs/) for Fast Refresh
+
+## Expanding the ESLint configuration
+
+If you are developing a production application, we recommend updating the configuration to enable type aware lint rules:
+
+- Configure the top-level `parserOptions` property like this:
+
+```js
+export default tseslint.config({
+ languageOptions: {
+ // other options...
+ parserOptions: {
+ project: ["./tsconfig.node.json", "./tsconfig.app.json"],
+ tsconfigRootDir: import.meta.dirname,
+ },
+ },
+});
+```
+
+- Replace `tseslint.configs.recommended` to `tseslint.configs.recommendedTypeChecked` or `tseslint.configs.strictTypeChecked`
+- Optionally add `...tseslint.configs.stylisticTypeChecked`
+- Install [eslint-plugin-react](https://github.com/jsx-eslint/eslint-plugin-react) and update the config:
+
+```js
+// eslint.config.js
+import react from "eslint-plugin-react";
+
+export default tseslint.config({
+ // Set the react version
+ settings: { react: { version: "18.3" } },
+ plugins: {
+ // Add the react plugin
+ react,
+ },
+ rules: {
+ // other rules...
+ // Enable its recommended rules
+ ...react.configs.recommended.rules,
+ ...react.configs["jsx-runtime"].rules,
+ },
+});
+```
diff --git a/client/components.json b/client/components.json
index 9efb29d672..6b88f250f3 100644
--- a/client/components.json
+++ b/client/components.json
@@ -4,9 +4,9 @@
"rsc": false,
"tsx": true,
"tailwind": {
- "config": "tailwind.config.js",
+ "config": "tailwind.config.ts",
"css": "src/index.css",
- "baseColor": "neutral",
+ "baseColor": "zinc",
"cssVariables": true,
"prefix": ""
},
diff --git a/client/index.html b/client/index.html
index 342f887293..76fd4e9803 100644
--- a/client/index.html
+++ b/client/index.html
@@ -1,10 +1,9 @@
-
+
-
- Eliza
+ ElizaOS - Client
diff --git a/client/package.json b/client/package.json
index ba963ec4e4..c756e697fa 100644
--- a/client/package.json
+++ b/client/package.json
@@ -1,47 +1,67 @@
{
- "name": "eliza-client",
+ "name": "client",
"private": true,
- "version": "0.1.7",
+ "sideEffects": false,
"type": "module",
"scripts": {
- "dev": "vite",
- "build": "vite build",
- "check-types": "tsc --noEmit",
- "lint": "eslint .",
- "preview": "vite preview"
+ "extract-version": "./version.sh",
+ "dev": "pnpm run extract-version && vite",
+ "build": "pnpm run extract-version && tsc -b && vite build",
+ "preview": "vite preview",
+ "lint": "eslint ."
},
"dependencies": {
"@elizaos/core": "workspace:*",
- "@radix-ui/react-dialog": "1.1.2",
- "@radix-ui/react-separator": "1.1.0",
- "@radix-ui/react-slot": "1.1.0",
- "@radix-ui/react-tooltip": "1.1.4",
- "@tanstack/react-query": "5.61.0",
- "class-variance-authority": "0.7.1",
+ "@radix-ui/react-avatar": "^1.1.2",
+ "@radix-ui/react-collapsible": "^1.1.2",
+ "@radix-ui/react-dialog": "^1.1.4",
+ "@radix-ui/react-label": "^2.1.1",
+ "@radix-ui/react-separator": "^1.1.1",
+ "@radix-ui/react-slot": "^1.1.1",
+ "@radix-ui/react-tabs": "^1.1.2",
+ "@radix-ui/react-toast": "^1.2.4",
+ "@radix-ui/react-tooltip": "^1.1.6",
+ "@react-spring/web": "^9.7.5",
+ "@tanstack/react-query": "^5.63.0",
+ "@uidotdev/usehooks": "^2.4.1",
+ "class-variance-authority": "^0.7.1",
"clsx": "2.1.1",
- "lucide-react": "0.460.0",
- "react": "18.3.1",
- "react-dom": "18.3.1",
- "react-router-dom": "6.22.1",
- "tailwind-merge": "2.5.5",
- "tailwindcss-animate": "1.0.7",
- "vite-plugin-top-level-await": "1.4.4",
- "vite-plugin-wasm": "3.3.0"
+ "dayjs": "^1.11.13",
+ "lucide-react": "^0.469.0",
+ "react": "^19.0.0",
+ "react-aiwriter": "^1.0.0",
+ "react-dom": "^19.0.0",
+ "react-router": "^7.1.1",
+ "react-router-dom": "^7.1.1",
+ "semver": "^7.6.3",
+ "tailwind-merge": "^2.6.0",
+ "tailwindcss-animate": "^1.0.7",
+ "vite-plugin-compression": "^0.5.1"
},
"devDependencies": {
- "@eslint/js": "9.16.0",
- "@types/node": "22.8.4",
- "@types/react": "18.3.12",
- "@types/react-dom": "18.3.1",
- "@vitejs/plugin-react": "4.3.3",
- "autoprefixer": "10.4.20",
- "eslint-plugin-react-hooks": "5.0.0",
- "eslint-plugin-react-refresh": "0.4.14",
- "globals": "15.11.0",
- "postcss": "8.4.49",
- "tailwindcss": "3.4.15",
- "typescript": "5.6.3",
- "typescript-eslint": "8.11.0",
- "vite": "link:@tanstack/router-plugin/vite"
+ "@eslint/js": "^9.17.0",
+ "@types/node": "^22.10.5",
+ "@types/react": "^19.0.3",
+ "@types/react-dom": "^19.0.2",
+ "@types/semver": "^7.5.8",
+ "@typescript-eslint/eslint-plugin": "^8.19.1",
+ "@typescript-eslint/parser": "^8.19.1",
+ "@vitejs/plugin-react-swc": "^3.5.0",
+ "autoprefixer": "^10.4.19",
+ "eslint": "^9.17.0",
+ "eslint-import-resolver-typescript": "^3.6.1",
+ "eslint-plugin-import": "^2.28.1",
+ "eslint-plugin-jsx-a11y": "^6.7.1",
+ "eslint-plugin-react": "^7.33.2",
+ "eslint-plugin-react-hooks": "^5.0.0",
+ "eslint-plugin-react-refresh": "^0.4.16",
+ "globals": "^15.14.0",
+ "postcss": "^8.4.38",
+ "rollup-plugin-visualizer": "^5.14.0",
+ "tailwindcss": "^3.4.4",
+ "typescript": "~5.6.3",
+ "typescript-eslint": "^8.18.2",
+ "vite": "^6.0.5",
+ "vite-tsconfig-paths": "^5.1.4"
}
}
diff --git a/client/pnpm-lock.yaml b/client/pnpm-lock.yaml
new file mode 100644
index 0000000000..f3de21c6ce
--- /dev/null
+++ b/client/pnpm-lock.yaml
@@ -0,0 +1,12140 @@
+lockfileVersion: "9.0"
+
+settings:
+ autoInstallPeers: true
+ excludeLinksFromLockfile: false
+
+importers:
+ .:
+ dependencies:
+ "@assistant-ui/react":
+ specifier: ^0.7.33
+ version: 0.7.33(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(tailwindcss@3.4.17)
+ "@radix-ui/react-avatar":
+ specifier: ^1.1.2
+ version: 1.1.2(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ "@radix-ui/react-collapsible":
+ specifier: ^1.1.2
+ version: 1.1.2(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ "@radix-ui/react-dialog":
+ specifier: ^1.1.4
+ version: 1.1.4(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ "@radix-ui/react-label":
+ specifier: ^2.1.1
+ version: 2.1.1(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ "@radix-ui/react-separator":
+ specifier: ^1.1.1
+ version: 1.1.1(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ "@radix-ui/react-slot":
+ specifier: ^1.1.1
+ version: 1.1.1(@types/react@18.3.18)(react@18.3.1)
+ "@radix-ui/react-tabs":
+ specifier: ^1.1.2
+ version: 1.1.2(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ "@radix-ui/react-toast":
+ specifier: ^1.2.4
+ version: 1.2.4(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ "@radix-ui/react-tooltip":
+ specifier: ^1.1.6
+ version: 1.1.6(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ "@remix-run/node":
+ specifier: ^2.15.2
+ version: 2.15.2(typescript@5.6.3)
+ "@remix-run/react":
+ specifier: ^2.15.2
+ version: 2.15.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.3)
+ "@remix-run/serve":
+ specifier: ^2.15.2
+ version: 2.15.2(typescript@5.6.3)
+ "@tanstack/react-query":
+ specifier: ^5.62.15
+ version: 5.62.16(react@18.3.1)
+ class-variance-authority:
+ specifier: ^0.7.1
+ version: 0.7.1
+ clsx:
+ specifier: 2.1.1
+ version: 2.1.1
+ dayjs:
+ specifier: ^1.11.13
+ version: 1.11.13
+ framer-motion:
+ specifier: ^11.16.0
+ version: 11.16.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ isbot:
+ specifier: ^4.1.0
+ version: 4.4.0
+ lucide-react:
+ specifier: ^0.469.0
+ version: 0.469.0(react@18.3.1)
+ react:
+ specifier: ^18.3.1
+ version: 18.3.1
+ react-aiwriter:
+ specifier: ^1.0.0
+ version: 1.0.0
+ react-dom:
+ specifier: ^18.3.1
+ version: 18.3.1(react@18.3.1)
+ tailwind-merge:
+ specifier: ^2.6.0
+ version: 2.6.0
+ tailwindcss-animate:
+ specifier: ^1.0.7
+ version: 1.0.7(tailwindcss@3.4.17)
+ use-sound:
+ specifier: ^4.0.3
+ version: 4.0.3(react@18.3.1)
+ devDependencies:
+ "@eslint/js":
+ specifier: ^9.17.0
+ version: 9.17.0
+ "@remix-run/dev":
+ specifier: ^2.15.2
+ version: 2.15.2(@remix-run/react@2.15.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.3))(@remix-run/serve@2.15.2(typescript@5.6.3))(@types/node@22.10.5)(typescript@5.6.3)(vite@6.0.7(@types/node@22.10.5)(jiti@1.21.7)(yaml@2.7.0))
+ "@types/react":
+ specifier: ^18.3.18
+ version: 18.3.18
+ "@types/react-dom":
+ specifier: ^18.3.5
+ version: 18.3.5(@types/react@18.3.18)
+ "@typescript-eslint/eslint-plugin":
+ specifier: ^6.7.4
+ version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@9.17.0(jiti@1.21.7))(typescript@5.6.3))(eslint@9.17.0(jiti@1.21.7))(typescript@5.6.3)
+ "@typescript-eslint/parser":
+ specifier: ^6.7.4
+ version: 6.21.0(eslint@9.17.0(jiti@1.21.7))(typescript@5.6.3)
+ "@vitejs/plugin-react-swc":
+ specifier: ^3.5.0
+ version: 3.7.2(vite@6.0.7(@types/node@22.10.5)(jiti@1.21.7)(yaml@2.7.0))
+ autoprefixer:
+ specifier: ^10.4.19
+ version: 10.4.20(postcss@8.4.49)
+ eslint:
+ specifier: ^9.17.0
+ version: 9.17.0(jiti@1.21.7)
+ eslint-import-resolver-typescript:
+ specifier: ^3.6.1
+ version: 3.7.0(eslint-plugin-import@2.31.0)(eslint@9.17.0(jiti@1.21.7))
+ eslint-plugin-import:
+ specifier: ^2.28.1
+ version: 2.31.0(@typescript-eslint/parser@6.21.0(eslint@9.17.0(jiti@1.21.7))(typescript@5.6.3))(eslint-import-resolver-typescript@3.7.0)(eslint@9.17.0(jiti@1.21.7))
+ eslint-plugin-jsx-a11y:
+ specifier: ^6.7.1
+ version: 6.10.2(eslint@9.17.0(jiti@1.21.7))
+ eslint-plugin-react:
+ specifier: ^7.33.2
+ version: 7.37.3(eslint@9.17.0(jiti@1.21.7))
+ eslint-plugin-react-hooks:
+ specifier: ^5.0.0
+ version: 5.1.0(eslint@9.17.0(jiti@1.21.7))
+ eslint-plugin-react-refresh:
+ specifier: ^0.4.16
+ version: 0.4.16(eslint@9.17.0(jiti@1.21.7))
+ globals:
+ specifier: ^15.14.0
+ version: 15.14.0
+ postcss:
+ specifier: ^8.4.38
+ version: 8.4.49
+ tailwindcss:
+ specifier: ^3.4.4
+ version: 3.4.17
+ typescript:
+ specifier: ~5.6.2
+ version: 5.6.3
+ typescript-eslint:
+ specifier: ^8.18.2
+ version: 8.19.1(eslint@9.17.0(jiti@1.21.7))(typescript@5.6.3)
+ vite:
+ specifier: ^6.0.5
+ version: 6.0.7(@types/node@22.10.5)(jiti@1.21.7)(yaml@2.7.0)
+ vite-tsconfig-paths:
+ specifier: ^4.2.1
+ version: 4.3.2(typescript@5.6.3)(vite@6.0.7(@types/node@22.10.5)(jiti@1.21.7)(yaml@2.7.0))
+
+packages:
+ "@ai-sdk/provider@1.0.4":
+ resolution:
+ {
+ integrity: sha512-lJi5zwDosvvZER3e/pB8lj1MN3o3S7zJliQq56BRr4e9V3fcRyFtwP0JRxaRS5vHYX3OJ154VezVoQNrk0eaKw==,
+ }
+ engines: { node: ">=18" }
+
+ "@alloc/quick-lru@5.2.0":
+ resolution:
+ {
+ integrity: sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==,
+ }
+ engines: { node: ">=10" }
+
+ "@ampproject/remapping@2.3.0":
+ resolution:
+ {
+ integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==,
+ }
+ engines: { node: ">=6.0.0" }
+
+ "@assistant-ui/react@0.7.33":
+ resolution:
+ {
+ integrity: sha512-vFE8dU8lM/BQ7oeQ00eb0JsA/AC1Xl3WpSm38zRSBRKRlcnoZQUhpT/9WurCFx6BnzKk90fxVZmPs6J+3EOQRg==,
+ }
+ peerDependencies:
+ "@types/react": "*"
+ "@types/react-dom": "*"
+ react: ^18 || ^19 || ^19.0.0-rc
+ react-dom: ^18 || ^19 || ^19.0.0-rc
+ tailwindcss: ^3.4.4
+ peerDependenciesMeta:
+ "@types/react":
+ optional: true
+ "@types/react-dom":
+ optional: true
+ tailwindcss:
+ optional: true
+
+ "@babel/code-frame@7.26.2":
+ resolution:
+ {
+ integrity: sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==,
+ }
+ engines: { node: ">=6.9.0" }
+
+ "@babel/compat-data@7.26.3":
+ resolution:
+ {
+ integrity: sha512-nHIxvKPniQXpmQLb0vhY3VaFb3S0YrTAwpOWJZh1wn3oJPjJk9Asva204PsBdmAE8vpzfHudT8DB0scYvy9q0g==,
+ }
+ engines: { node: ">=6.9.0" }
+
+ "@babel/core@7.26.0":
+ resolution:
+ {
+ integrity: sha512-i1SLeK+DzNnQ3LL/CswPCa/E5u4lh1k6IAEphON8F+cXt0t9euTshDru0q7/IqMa1PMPz5RnHuHscF8/ZJsStg==,
+ }
+ engines: { node: ">=6.9.0" }
+
+ "@babel/generator@7.26.3":
+ resolution:
+ {
+ integrity: sha512-6FF/urZvD0sTeO7k6/B15pMLC4CHUv1426lzr3N01aHJTl046uCAh9LXW/fzeXXjPNCJ6iABW5XaWOsIZB93aQ==,
+ }
+ engines: { node: ">=6.9.0" }
+
+ "@babel/helper-annotate-as-pure@7.25.9":
+ resolution:
+ {
+ integrity: sha512-gv7320KBUFJz1RnylIg5WWYPRXKZ884AGkYpgpWW02TH66Dl+HaC1t1CKd0z3R4b6hdYEcmrNZHUmfCP+1u3/g==,
+ }
+ engines: { node: ">=6.9.0" }
+
+ "@babel/helper-compilation-targets@7.25.9":
+ resolution:
+ {
+ integrity: sha512-j9Db8Suy6yV/VHa4qzrj9yZfZxhLWQdVnRlXxmKLYlhWUVB1sB2G5sxuWYXk/whHD9iW76PmNzxZ4UCnTQTVEQ==,
+ }
+ engines: { node: ">=6.9.0" }
+
+ "@babel/helper-create-class-features-plugin@7.25.9":
+ resolution:
+ {
+ integrity: sha512-UTZQMvt0d/rSz6KI+qdu7GQze5TIajwTS++GUozlw8VBJDEOAqSXwm1WvmYEZwqdqSGQshRocPDqrt4HBZB3fQ==,
+ }
+ engines: { node: ">=6.9.0" }
+ peerDependencies:
+ "@babel/core": ^7.0.0
+
+ "@babel/helper-member-expression-to-functions@7.25.9":
+ resolution:
+ {
+ integrity: sha512-wbfdZ9w5vk0C0oyHqAJbc62+vet5prjj01jjJ8sKn3j9h3MQQlflEdXYvuqRWjHnM12coDEqiC1IRCi0U/EKwQ==,
+ }
+ engines: { node: ">=6.9.0" }
+
+ "@babel/helper-module-imports@7.25.9":
+ resolution:
+ {
+ integrity: sha512-tnUA4RsrmflIM6W6RFTLFSXITtl0wKjgpnLgXyowocVPrbYrLUXSBXDgTs8BlbmIzIdlBySRQjINYs2BAkiLtw==,
+ }
+ engines: { node: ">=6.9.0" }
+
+ "@babel/helper-module-transforms@7.26.0":
+ resolution:
+ {
+ integrity: sha512-xO+xu6B5K2czEnQye6BHA7DolFFmS3LB7stHZFaOLb1pAwO1HWLS8fXA+eh0A2yIvltPVmx3eNNDBJA2SLHXFw==,
+ }
+ engines: { node: ">=6.9.0" }
+ peerDependencies:
+ "@babel/core": ^7.0.0
+
+ "@babel/helper-optimise-call-expression@7.25.9":
+ resolution:
+ {
+ integrity: sha512-FIpuNaz5ow8VyrYcnXQTDRGvV6tTjkNtCK/RYNDXGSLlUD6cBuQTSw43CShGxjvfBTfcUA/r6UhUCbtYqkhcuQ==,
+ }
+ engines: { node: ">=6.9.0" }
+
+ "@babel/helper-plugin-utils@7.25.9":
+ resolution:
+ {
+ integrity: sha512-kSMlyUVdWe25rEsRGviIgOWnoT/nfABVWlqt9N19/dIPWViAOW2s9wznP5tURbs/IDuNk4gPy3YdYRgH3uxhBw==,
+ }
+ engines: { node: ">=6.9.0" }
+
+ "@babel/helper-replace-supers@7.25.9":
+ resolution:
+ {
+ integrity: sha512-IiDqTOTBQy0sWyeXyGSC5TBJpGFXBkRynjBeXsvbhQFKj2viwJC76Epz35YLU1fpe/Am6Vppb7W7zM4fPQzLsQ==,
+ }
+ engines: { node: ">=6.9.0" }
+ peerDependencies:
+ "@babel/core": ^7.0.0
+
+ "@babel/helper-skip-transparent-expression-wrappers@7.25.9":
+ resolution:
+ {
+ integrity: sha512-K4Du3BFa3gvyhzgPcntrkDgZzQaq6uozzcpGbOO1OEJaI+EJdqWIMTLgFgQf6lrfiDFo5FU+BxKepI9RmZqahA==,
+ }
+ engines: { node: ">=6.9.0" }
+
+ "@babel/helper-string-parser@7.25.9":
+ resolution:
+ {
+ integrity: sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==,
+ }
+ engines: { node: ">=6.9.0" }
+
+ "@babel/helper-validator-identifier@7.25.9":
+ resolution:
+ {
+ integrity: sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==,
+ }
+ engines: { node: ">=6.9.0" }
+
+ "@babel/helper-validator-option@7.25.9":
+ resolution:
+ {
+ integrity: sha512-e/zv1co8pp55dNdEcCynfj9X7nyUKUXoUEwfXqaZt0omVOmDe9oOTdKStH4GmAw6zxMFs50ZayuMfHDKlO7Tfw==,
+ }
+ engines: { node: ">=6.9.0" }
+
+ "@babel/helpers@7.26.0":
+ resolution:
+ {
+ integrity: sha512-tbhNuIxNcVb21pInl3ZSjksLCvgdZy9KwJ8brv993QtIVKJBBkYXz4q4ZbAv31GdnC+R90np23L5FbEBlthAEw==,
+ }
+ engines: { node: ">=6.9.0" }
+
+ "@babel/parser@7.26.3":
+ resolution:
+ {
+ integrity: sha512-WJ/CvmY8Mea8iDXo6a7RK2wbmJITT5fN3BEkRuFlxVyNx8jOKIIhmC4fSkTcPcf8JyavbBwIe6OpiCOBXt/IcA==,
+ }
+ engines: { node: ">=6.0.0" }
+ hasBin: true
+
+ "@babel/plugin-syntax-decorators@7.25.9":
+ resolution:
+ {
+ integrity: sha512-ryzI0McXUPJnRCvMo4lumIKZUzhYUO/ScI+Mz4YVaTLt04DHNSjEUjKVvbzQjZFLuod/cYEc07mJWhzl6v4DPg==,
+ }
+ engines: { node: ">=6.9.0" }
+ peerDependencies:
+ "@babel/core": ^7.0.0-0
+
+ "@babel/plugin-syntax-jsx@7.25.9":
+ resolution:
+ {
+ integrity: sha512-ld6oezHQMZsZfp6pWtbjaNDF2tiiCYYDqQszHt5VV437lewP9aSi2Of99CK0D0XB21k7FLgnLcmQKyKzynfeAA==,
+ }
+ engines: { node: ">=6.9.0" }
+ peerDependencies:
+ "@babel/core": ^7.0.0-0
+
+ "@babel/plugin-syntax-typescript@7.25.9":
+ resolution:
+ {
+ integrity: sha512-hjMgRy5hb8uJJjUcdWunWVcoi9bGpJp8p5Ol1229PoN6aytsLwNMgmdftO23wnCLMfVmTwZDWMPNq/D1SY60JQ==,
+ }
+ engines: { node: ">=6.9.0" }
+ peerDependencies:
+ "@babel/core": ^7.0.0-0
+
+ "@babel/plugin-transform-modules-commonjs@7.26.3":
+ resolution:
+ {
+ integrity: sha512-MgR55l4q9KddUDITEzEFYn5ZsGDXMSsU9E+kh7fjRXTIC3RHqfCo8RPRbyReYJh44HQ/yomFkqbOFohXvDCiIQ==,
+ }
+ engines: { node: ">=6.9.0" }
+ peerDependencies:
+ "@babel/core": ^7.0.0-0
+
+ "@babel/plugin-transform-typescript@7.26.3":
+ resolution:
+ {
+ integrity: sha512-6+5hpdr6mETwSKjmJUdYw0EIkATiQhnELWlE3kJFBwSg/BGIVwVaVbX+gOXBCdc7Ln1RXZxyWGecIXhUfnl7oA==,
+ }
+ engines: { node: ">=6.9.0" }
+ peerDependencies:
+ "@babel/core": ^7.0.0-0
+
+ "@babel/preset-typescript@7.26.0":
+ resolution:
+ {
+ integrity: sha512-NMk1IGZ5I/oHhoXEElcm+xUnL/szL6xflkFZmoEU9xj1qSJXpiS7rsspYo92B4DRCDvZn2erT5LdsCeXAKNCkg==,
+ }
+ engines: { node: ">=6.9.0" }
+ peerDependencies:
+ "@babel/core": ^7.0.0-0
+
+ "@babel/runtime@7.26.0":
+ resolution:
+ {
+ integrity: sha512-FDSOghenHTiToteC/QRlv2q3DhPZ/oOXTBoirfWNx1Cx3TMVcGWQtMMmQcSvb/JjpNeGzx8Pq/b4fKEJuWm1sw==,
+ }
+ engines: { node: ">=6.9.0" }
+
+ "@babel/template@7.25.9":
+ resolution:
+ {
+ integrity: sha512-9DGttpmPvIxBb/2uwpVo3dqJ+O6RooAFOS+lB+xDqoE2PVCE8nfoHMdZLpfCQRLwvohzXISPZcgxt80xLfsuwg==,
+ }
+ engines: { node: ">=6.9.0" }
+
+ "@babel/traverse@7.26.4":
+ resolution:
+ {
+ integrity: sha512-fH+b7Y4p3yqvApJALCPJcwb0/XaOSgtK4pzV6WVjPR5GLFQBRI7pfoX2V2iM48NXvX07NUxxm1Vw98YjqTcU5w==,
+ }
+ engines: { node: ">=6.9.0" }
+
+ "@babel/types@7.26.3":
+ resolution:
+ {
+ integrity: sha512-vN5p+1kl59GVKMvTHt55NzzmYVxprfJD+ql7U9NFIfKCBkYE55LYtS+WtPlaYOyzydrKI8Nezd+aZextrd+FMA==,
+ }
+ engines: { node: ">=6.9.0" }
+
+ "@emotion/hash@0.9.2":
+ resolution:
+ {
+ integrity: sha512-MyqliTZGuOm3+5ZRSaaBGP3USLw6+EGykkwZns2EPC5g8jJ4z9OrdZY9apkl3+UP9+sdz76YYkwCKP5gh8iY3g==,
+ }
+
+ "@esbuild/aix-ppc64@0.21.5":
+ resolution:
+ {
+ integrity: sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==,
+ }
+ engines: { node: ">=12" }
+ cpu: [ppc64]
+ os: [aix]
+
+ "@esbuild/aix-ppc64@0.24.2":
+ resolution:
+ {
+ integrity: sha512-thpVCb/rhxE/BnMLQ7GReQLLN8q9qbHmI55F4489/ByVg2aQaQ6kbcLb6FHkocZzQhxc4gx0sCk0tJkKBFzDhA==,
+ }
+ engines: { node: ">=18" }
+ cpu: [ppc64]
+ os: [aix]
+
+ "@esbuild/android-arm64@0.17.6":
+ resolution:
+ {
+ integrity: sha512-YnYSCceN/dUzUr5kdtUzB+wZprCafuD89Hs0Aqv9QSdwhYQybhXTaSTcrl6X/aWThn1a/j0eEpUBGOE7269REg==,
+ }
+ engines: { node: ">=12" }
+ cpu: [arm64]
+ os: [android]
+
+ "@esbuild/android-arm64@0.21.5":
+ resolution:
+ {
+ integrity: sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==,
+ }
+ engines: { node: ">=12" }
+ cpu: [arm64]
+ os: [android]
+
+ "@esbuild/android-arm64@0.24.2":
+ resolution:
+ {
+ integrity: sha512-cNLgeqCqV8WxfcTIOeL4OAtSmL8JjcN6m09XIgro1Wi7cF4t/THaWEa7eL5CMoMBdjoHOTh/vwTO/o2TRXIyzg==,
+ }
+ engines: { node: ">=18" }
+ cpu: [arm64]
+ os: [android]
+
+ "@esbuild/android-arm@0.17.6":
+ resolution:
+ {
+ integrity: sha512-bSC9YVUjADDy1gae8RrioINU6e1lCkg3VGVwm0QQ2E1CWcC4gnMce9+B6RpxuSsrsXsk1yojn7sp1fnG8erE2g==,
+ }
+ engines: { node: ">=12" }
+ cpu: [arm]
+ os: [android]
+
+ "@esbuild/android-arm@0.21.5":
+ resolution:
+ {
+ integrity: sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==,
+ }
+ engines: { node: ">=12" }
+ cpu: [arm]
+ os: [android]
+
+ "@esbuild/android-arm@0.24.2":
+ resolution:
+ {
+ integrity: sha512-tmwl4hJkCfNHwFB3nBa8z1Uy3ypZpxqxfTQOcHX+xRByyYgunVbZ9MzUUfb0RxaHIMnbHagwAxuTL+tnNM+1/Q==,
+ }
+ engines: { node: ">=18" }
+ cpu: [arm]
+ os: [android]
+
+ "@esbuild/android-x64@0.17.6":
+ resolution:
+ {
+ integrity: sha512-MVcYcgSO7pfu/x34uX9u2QIZHmXAB7dEiLQC5bBl5Ryqtpj9lT2sg3gNDEsrPEmimSJW2FXIaxqSQ501YLDsZQ==,
+ }
+ engines: { node: ">=12" }
+ cpu: [x64]
+ os: [android]
+
+ "@esbuild/android-x64@0.21.5":
+ resolution:
+ {
+ integrity: sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==,
+ }
+ engines: { node: ">=12" }
+ cpu: [x64]
+ os: [android]
+
+ "@esbuild/android-x64@0.24.2":
+ resolution:
+ {
+ integrity: sha512-B6Q0YQDqMx9D7rvIcsXfmJfvUYLoP722bgfBlO5cGvNVb5V/+Y7nhBE3mHV9OpxBf4eAS2S68KZztiPaWq4XYw==,
+ }
+ engines: { node: ">=18" }
+ cpu: [x64]
+ os: [android]
+
+ "@esbuild/darwin-arm64@0.17.6":
+ resolution:
+ {
+ integrity: sha512-bsDRvlbKMQMt6Wl08nHtFz++yoZHsyTOxnjfB2Q95gato+Yi4WnRl13oC2/PJJA9yLCoRv9gqT/EYX0/zDsyMA==,
+ }
+ engines: { node: ">=12" }
+ cpu: [arm64]
+ os: [darwin]
+
+ "@esbuild/darwin-arm64@0.21.5":
+ resolution:
+ {
+ integrity: sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==,
+ }
+ engines: { node: ">=12" }
+ cpu: [arm64]
+ os: [darwin]
+
+ "@esbuild/darwin-arm64@0.24.2":
+ resolution:
+ {
+ integrity: sha512-kj3AnYWc+CekmZnS5IPu9D+HWtUI49hbnyqk0FLEJDbzCIQt7hg7ucF1SQAilhtYpIujfaHr6O0UHlzzSPdOeA==,
+ }
+ engines: { node: ">=18" }
+ cpu: [arm64]
+ os: [darwin]
+
+ "@esbuild/darwin-x64@0.17.6":
+ resolution:
+ {
+ integrity: sha512-xh2A5oPrYRfMFz74QXIQTQo8uA+hYzGWJFoeTE8EvoZGHb+idyV4ATaukaUvnnxJiauhs/fPx3vYhU4wiGfosg==,
+ }
+ engines: { node: ">=12" }
+ cpu: [x64]
+ os: [darwin]
+
+ "@esbuild/darwin-x64@0.21.5":
+ resolution:
+ {
+ integrity: sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==,
+ }
+ engines: { node: ">=12" }
+ cpu: [x64]
+ os: [darwin]
+
+ "@esbuild/darwin-x64@0.24.2":
+ resolution:
+ {
+ integrity: sha512-WeSrmwwHaPkNR5H3yYfowhZcbriGqooyu3zI/3GGpF8AyUdsrrP0X6KumITGA9WOyiJavnGZUwPGvxvwfWPHIA==,
+ }
+ engines: { node: ">=18" }
+ cpu: [x64]
+ os: [darwin]
+
+ "@esbuild/freebsd-arm64@0.17.6":
+ resolution:
+ {
+ integrity: sha512-EnUwjRc1inT4ccZh4pB3v1cIhohE2S4YXlt1OvI7sw/+pD+dIE4smwekZlEPIwY6PhU6oDWwITrQQm5S2/iZgg==,
+ }
+ engines: { node: ">=12" }
+ cpu: [arm64]
+ os: [freebsd]
+
+ "@esbuild/freebsd-arm64@0.21.5":
+ resolution:
+ {
+ integrity: sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==,
+ }
+ engines: { node: ">=12" }
+ cpu: [arm64]
+ os: [freebsd]
+
+ "@esbuild/freebsd-arm64@0.24.2":
+ resolution:
+ {
+ integrity: sha512-UN8HXjtJ0k/Mj6a9+5u6+2eZ2ERD7Edt1Q9IZiB5UZAIdPnVKDoG7mdTVGhHJIeEml60JteamR3qhsr1r8gXvg==,
+ }
+ engines: { node: ">=18" }
+ cpu: [arm64]
+ os: [freebsd]
+
+ "@esbuild/freebsd-x64@0.17.6":
+ resolution:
+ {
+ integrity: sha512-Uh3HLWGzH6FwpviUcLMKPCbZUAFzv67Wj5MTwK6jn89b576SR2IbEp+tqUHTr8DIl0iDmBAf51MVaP7pw6PY5Q==,
+ }
+ engines: { node: ">=12" }
+ cpu: [x64]
+ os: [freebsd]
+
+ "@esbuild/freebsd-x64@0.21.5":
+ resolution:
+ {
+ integrity: sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==,
+ }
+ engines: { node: ">=12" }
+ cpu: [x64]
+ os: [freebsd]
+
+ "@esbuild/freebsd-x64@0.24.2":
+ resolution:
+ {
+ integrity: sha512-TvW7wE/89PYW+IevEJXZ5sF6gJRDY/14hyIGFXdIucxCsbRmLUcjseQu1SyTko+2idmCw94TgyaEZi9HUSOe3Q==,
+ }
+ engines: { node: ">=18" }
+ cpu: [x64]
+ os: [freebsd]
+
+ "@esbuild/linux-arm64@0.17.6":
+ resolution:
+ {
+ integrity: sha512-bUR58IFOMJX523aDVozswnlp5yry7+0cRLCXDsxnUeQYJik1DukMY+apBsLOZJblpH+K7ox7YrKrHmJoWqVR9w==,
+ }
+ engines: { node: ">=12" }
+ cpu: [arm64]
+ os: [linux]
+
+ "@esbuild/linux-arm64@0.21.5":
+ resolution:
+ {
+ integrity: sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==,
+ }
+ engines: { node: ">=12" }
+ cpu: [arm64]
+ os: [linux]
+
+ "@esbuild/linux-arm64@0.24.2":
+ resolution:
+ {
+ integrity: sha512-7HnAD6074BW43YvvUmE/35Id9/NB7BeX5EoNkK9obndmZBUk8xmJJeU7DwmUeN7tkysslb2eSl6CTrYz6oEMQg==,
+ }
+ engines: { node: ">=18" }
+ cpu: [arm64]
+ os: [linux]
+
+ "@esbuild/linux-arm@0.17.6":
+ resolution:
+ {
+ integrity: sha512-7YdGiurNt7lqO0Bf/U9/arrPWPqdPqcV6JCZda4LZgEn+PTQ5SMEI4MGR52Bfn3+d6bNEGcWFzlIxiQdS48YUw==,
+ }
+ engines: { node: ">=12" }
+ cpu: [arm]
+ os: [linux]
+
+ "@esbuild/linux-arm@0.21.5":
+ resolution:
+ {
+ integrity: sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==,
+ }
+ engines: { node: ">=12" }
+ cpu: [arm]
+ os: [linux]
+
+ "@esbuild/linux-arm@0.24.2":
+ resolution:
+ {
+ integrity: sha512-n0WRM/gWIdU29J57hJyUdIsk0WarGd6To0s+Y+LwvlC55wt+GT/OgkwoXCXvIue1i1sSNWblHEig00GBWiJgfA==,
+ }
+ engines: { node: ">=18" }
+ cpu: [arm]
+ os: [linux]
+
+ "@esbuild/linux-ia32@0.17.6":
+ resolution:
+ {
+ integrity: sha512-ujp8uoQCM9FRcbDfkqECoARsLnLfCUhKARTP56TFPog8ie9JG83D5GVKjQ6yVrEVdMie1djH86fm98eY3quQkQ==,
+ }
+ engines: { node: ">=12" }
+ cpu: [ia32]
+ os: [linux]
+
+ "@esbuild/linux-ia32@0.21.5":
+ resolution:
+ {
+ integrity: sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==,
+ }
+ engines: { node: ">=12" }
+ cpu: [ia32]
+ os: [linux]
+
+ "@esbuild/linux-ia32@0.24.2":
+ resolution:
+ {
+ integrity: sha512-sfv0tGPQhcZOgTKO3oBE9xpHuUqguHvSo4jl+wjnKwFpapx+vUDcawbwPNuBIAYdRAvIDBfZVvXprIj3HA+Ugw==,
+ }
+ engines: { node: ">=18" }
+ cpu: [ia32]
+ os: [linux]
+
+ "@esbuild/linux-loong64@0.17.6":
+ resolution:
+ {
+ integrity: sha512-y2NX1+X/Nt+izj9bLoiaYB9YXT/LoaQFYvCkVD77G/4F+/yuVXYCWz4SE9yr5CBMbOxOfBcy/xFL4LlOeNlzYQ==,
+ }
+ engines: { node: ">=12" }
+ cpu: [loong64]
+ os: [linux]
+
+ "@esbuild/linux-loong64@0.21.5":
+ resolution:
+ {
+ integrity: sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==,
+ }
+ engines: { node: ">=12" }
+ cpu: [loong64]
+ os: [linux]
+
+ "@esbuild/linux-loong64@0.24.2":
+ resolution:
+ {
+ integrity: sha512-CN9AZr8kEndGooS35ntToZLTQLHEjtVB5n7dl8ZcTZMonJ7CCfStrYhrzF97eAecqVbVJ7APOEe18RPI4KLhwQ==,
+ }
+ engines: { node: ">=18" }
+ cpu: [loong64]
+ os: [linux]
+
+ "@esbuild/linux-mips64el@0.17.6":
+ resolution:
+ {
+ integrity: sha512-09AXKB1HDOzXD+j3FdXCiL/MWmZP0Ex9eR8DLMBVcHorrWJxWmY8Nms2Nm41iRM64WVx7bA/JVHMv081iP2kUA==,
+ }
+ engines: { node: ">=12" }
+ cpu: [mips64el]
+ os: [linux]
+
+ "@esbuild/linux-mips64el@0.21.5":
+ resolution:
+ {
+ integrity: sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==,
+ }
+ engines: { node: ">=12" }
+ cpu: [mips64el]
+ os: [linux]
+
+ "@esbuild/linux-mips64el@0.24.2":
+ resolution:
+ {
+ integrity: sha512-iMkk7qr/wl3exJATwkISxI7kTcmHKE+BlymIAbHO8xanq/TjHaaVThFF6ipWzPHryoFsesNQJPE/3wFJw4+huw==,
+ }
+ engines: { node: ">=18" }
+ cpu: [mips64el]
+ os: [linux]
+
+ "@esbuild/linux-ppc64@0.17.6":
+ resolution:
+ {
+ integrity: sha512-AmLhMzkM8JuqTIOhxnX4ubh0XWJIznEynRnZAVdA2mMKE6FAfwT2TWKTwdqMG+qEaeyDPtfNoZRpJbD4ZBv0Tg==,
+ }
+ engines: { node: ">=12" }
+ cpu: [ppc64]
+ os: [linux]
+
+ "@esbuild/linux-ppc64@0.21.5":
+ resolution:
+ {
+ integrity: sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==,
+ }
+ engines: { node: ">=12" }
+ cpu: [ppc64]
+ os: [linux]
+
+ "@esbuild/linux-ppc64@0.24.2":
+ resolution:
+ {
+ integrity: sha512-shsVrgCZ57Vr2L8mm39kO5PPIb+843FStGt7sGGoqiiWYconSxwTiuswC1VJZLCjNiMLAMh34jg4VSEQb+iEbw==,
+ }
+ engines: { node: ">=18" }
+ cpu: [ppc64]
+ os: [linux]
+
+ "@esbuild/linux-riscv64@0.17.6":
+ resolution:
+ {
+ integrity: sha512-Y4Ri62PfavhLQhFbqucysHOmRamlTVK10zPWlqjNbj2XMea+BOs4w6ASKwQwAiqf9ZqcY9Ab7NOU4wIgpxwoSQ==,
+ }
+ engines: { node: ">=12" }
+ cpu: [riscv64]
+ os: [linux]
+
+ "@esbuild/linux-riscv64@0.21.5":
+ resolution:
+ {
+ integrity: sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==,
+ }
+ engines: { node: ">=12" }
+ cpu: [riscv64]
+ os: [linux]
+
+ "@esbuild/linux-riscv64@0.24.2":
+ resolution:
+ {
+ integrity: sha512-4eSFWnU9Hhd68fW16GD0TINewo1L6dRrB+oLNNbYyMUAeOD2yCK5KXGK1GH4qD/kT+bTEXjsyTCiJGHPZ3eM9Q==,
+ }
+ engines: { node: ">=18" }
+ cpu: [riscv64]
+ os: [linux]
+
+ "@esbuild/linux-s390x@0.17.6":
+ resolution:
+ {
+ integrity: sha512-SPUiz4fDbnNEm3JSdUW8pBJ/vkop3M1YwZAVwvdwlFLoJwKEZ9L98l3tzeyMzq27CyepDQ3Qgoba44StgbiN5Q==,
+ }
+ engines: { node: ">=12" }
+ cpu: [s390x]
+ os: [linux]
+
+ "@esbuild/linux-s390x@0.21.5":
+ resolution:
+ {
+ integrity: sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==,
+ }
+ engines: { node: ">=12" }
+ cpu: [s390x]
+ os: [linux]
+
+ "@esbuild/linux-s390x@0.24.2":
+ resolution:
+ {
+ integrity: sha512-S0Bh0A53b0YHL2XEXC20bHLuGMOhFDO6GN4b3YjRLK//Ep3ql3erpNcPlEFed93hsQAjAQDNsvcK+hV90FubSw==,
+ }
+ engines: { node: ">=18" }
+ cpu: [s390x]
+ os: [linux]
+
+ "@esbuild/linux-x64@0.17.6":
+ resolution:
+ {
+ integrity: sha512-a3yHLmOodHrzuNgdpB7peFGPx1iJ2x6m+uDvhP2CKdr2CwOaqEFMeSqYAHU7hG+RjCq8r2NFujcd/YsEsFgTGw==,
+ }
+ engines: { node: ">=12" }
+ cpu: [x64]
+ os: [linux]
+
+ "@esbuild/linux-x64@0.21.5":
+ resolution:
+ {
+ integrity: sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==,
+ }
+ engines: { node: ">=12" }
+ cpu: [x64]
+ os: [linux]
+
+ "@esbuild/linux-x64@0.24.2":
+ resolution:
+ {
+ integrity: sha512-8Qi4nQcCTbLnK9WoMjdC9NiTG6/E38RNICU6sUNqK0QFxCYgoARqVqxdFmWkdonVsvGqWhmm7MO0jyTqLqwj0Q==,
+ }
+ engines: { node: ">=18" }
+ cpu: [x64]
+ os: [linux]
+
+ "@esbuild/netbsd-arm64@0.24.2":
+ resolution:
+ {
+ integrity: sha512-wuLK/VztRRpMt9zyHSazyCVdCXlpHkKm34WUyinD2lzK07FAHTq0KQvZZlXikNWkDGoT6x3TD51jKQ7gMVpopw==,
+ }
+ engines: { node: ">=18" }
+ cpu: [arm64]
+ os: [netbsd]
+
+ "@esbuild/netbsd-x64@0.17.6":
+ resolution:
+ {
+ integrity: sha512-EanJqcU/4uZIBreTrnbnre2DXgXSa+Gjap7ifRfllpmyAU7YMvaXmljdArptTHmjrkkKm9BK6GH5D5Yo+p6y5A==,
+ }
+ engines: { node: ">=12" }
+ cpu: [x64]
+ os: [netbsd]
+
+ "@esbuild/netbsd-x64@0.21.5":
+ resolution:
+ {
+ integrity: sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==,
+ }
+ engines: { node: ">=12" }
+ cpu: [x64]
+ os: [netbsd]
+
+ "@esbuild/netbsd-x64@0.24.2":
+ resolution:
+ {
+ integrity: sha512-VefFaQUc4FMmJuAxmIHgUmfNiLXY438XrL4GDNV1Y1H/RW3qow68xTwjZKfj/+Plp9NANmzbH5R40Meudu8mmw==,
+ }
+ engines: { node: ">=18" }
+ cpu: [x64]
+ os: [netbsd]
+
+ "@esbuild/openbsd-arm64@0.24.2":
+ resolution:
+ {
+ integrity: sha512-YQbi46SBct6iKnszhSvdluqDmxCJA+Pu280Av9WICNwQmMxV7nLRHZfjQzwbPs3jeWnuAhE9Jy0NrnJ12Oz+0A==,
+ }
+ engines: { node: ">=18" }
+ cpu: [arm64]
+ os: [openbsd]
+
+ "@esbuild/openbsd-x64@0.17.6":
+ resolution:
+ {
+ integrity: sha512-xaxeSunhQRsTNGFanoOkkLtnmMn5QbA0qBhNet/XLVsc+OVkpIWPHcr3zTW2gxVU5YOHFbIHR9ODuaUdNza2Vw==,
+ }
+ engines: { node: ">=12" }
+ cpu: [x64]
+ os: [openbsd]
+
+ "@esbuild/openbsd-x64@0.21.5":
+ resolution:
+ {
+ integrity: sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==,
+ }
+ engines: { node: ">=12" }
+ cpu: [x64]
+ os: [openbsd]
+
+ "@esbuild/openbsd-x64@0.24.2":
+ resolution:
+ {
+ integrity: sha512-+iDS6zpNM6EnJyWv0bMGLWSWeXGN/HTaF/LXHXHwejGsVi+ooqDfMCCTerNFxEkM3wYVcExkeGXNqshc9iMaOA==,
+ }
+ engines: { node: ">=18" }
+ cpu: [x64]
+ os: [openbsd]
+
+ "@esbuild/sunos-x64@0.17.6":
+ resolution:
+ {
+ integrity: sha512-gnMnMPg5pfMkZvhHee21KbKdc6W3GR8/JuE0Da1kjwpK6oiFU3nqfHuVPgUX2rsOx9N2SadSQTIYV1CIjYG+xw==,
+ }
+ engines: { node: ">=12" }
+ cpu: [x64]
+ os: [sunos]
+
+ "@esbuild/sunos-x64@0.21.5":
+ resolution:
+ {
+ integrity: sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==,
+ }
+ engines: { node: ">=12" }
+ cpu: [x64]
+ os: [sunos]
+
+ "@esbuild/sunos-x64@0.24.2":
+ resolution:
+ {
+ integrity: sha512-hTdsW27jcktEvpwNHJU4ZwWFGkz2zRJUz8pvddmXPtXDzVKTTINmlmga3ZzwcuMpUvLw7JkLy9QLKyGpD2Yxig==,
+ }
+ engines: { node: ">=18" }
+ cpu: [x64]
+ os: [sunos]
+
+ "@esbuild/win32-arm64@0.17.6":
+ resolution:
+ {
+ integrity: sha512-G95n7vP1UnGJPsVdKXllAJPtqjMvFYbN20e8RK8LVLhlTiSOH1sd7+Gt7rm70xiG+I5tM58nYgwWrLs6I1jHqg==,
+ }
+ engines: { node: ">=12" }
+ cpu: [arm64]
+ os: [win32]
+
+ "@esbuild/win32-arm64@0.21.5":
+ resolution:
+ {
+ integrity: sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==,
+ }
+ engines: { node: ">=12" }
+ cpu: [arm64]
+ os: [win32]
+
+ "@esbuild/win32-arm64@0.24.2":
+ resolution:
+ {
+ integrity: sha512-LihEQ2BBKVFLOC9ZItT9iFprsE9tqjDjnbulhHoFxYQtQfai7qfluVODIYxt1PgdoyQkz23+01rzwNwYfutxUQ==,
+ }
+ engines: { node: ">=18" }
+ cpu: [arm64]
+ os: [win32]
+
+ "@esbuild/win32-ia32@0.17.6":
+ resolution:
+ {
+ integrity: sha512-96yEFzLhq5bv9jJo5JhTs1gI+1cKQ83cUpyxHuGqXVwQtY5Eq54ZEsKs8veKtiKwlrNimtckHEkj4mRh4pPjsg==,
+ }
+ engines: { node: ">=12" }
+ cpu: [ia32]
+ os: [win32]
+
+ "@esbuild/win32-ia32@0.21.5":
+ resolution:
+ {
+ integrity: sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==,
+ }
+ engines: { node: ">=12" }
+ cpu: [ia32]
+ os: [win32]
+
+ "@esbuild/win32-ia32@0.24.2":
+ resolution:
+ {
+ integrity: sha512-q+iGUwfs8tncmFC9pcnD5IvRHAzmbwQ3GPS5/ceCyHdjXubwQWI12MKWSNSMYLJMq23/IUCvJMS76PDqXe1fxA==,
+ }
+ engines: { node: ">=18" }
+ cpu: [ia32]
+ os: [win32]
+
+ "@esbuild/win32-x64@0.17.6":
+ resolution:
+ {
+ integrity: sha512-n6d8MOyUrNp6G4VSpRcgjs5xj4A91svJSaiwLIDWVWEsZtpN5FA9NlBbZHDmAJc2e8e6SF4tkBD3HAvPF+7igA==,
+ }
+ engines: { node: ">=12" }
+ cpu: [x64]
+ os: [win32]
+
+ "@esbuild/win32-x64@0.21.5":
+ resolution:
+ {
+ integrity: sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==,
+ }
+ engines: { node: ">=12" }
+ cpu: [x64]
+ os: [win32]
+
+ "@esbuild/win32-x64@0.24.2":
+ resolution:
+ {
+ integrity: sha512-7VTgWzgMGvup6aSqDPLiW5zHaxYJGTO4OokMjIlrCtf+VpEL+cXKtCvg723iguPYI5oaUNdS+/V7OU2gvXVWEg==,
+ }
+ engines: { node: ">=18" }
+ cpu: [x64]
+ os: [win32]
+
+ "@eslint-community/eslint-utils@4.4.1":
+ resolution:
+ {
+ integrity: sha512-s3O3waFUrMV8P/XaF/+ZTp1X9XBZW1a4B97ZnjQF2KYWaFD2A8KyFBsrsfSjEmjn3RGWAIuvlneuZm3CUK3jbA==,
+ }
+ engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 }
+ peerDependencies:
+ eslint: ^6.0.0 || ^7.0.0 || >=8.0.0
+
+ "@eslint-community/regexpp@4.12.1":
+ resolution:
+ {
+ integrity: sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==,
+ }
+ engines: { node: ^12.0.0 || ^14.0.0 || >=16.0.0 }
+
+ "@eslint/config-array@0.19.1":
+ resolution:
+ {
+ integrity: sha512-fo6Mtm5mWyKjA/Chy1BYTdn5mGJoDNjC7C64ug20ADsRDGrA85bN3uK3MaKbeRkRuuIEAR5N33Jr1pbm411/PA==,
+ }
+ engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 }
+
+ "@eslint/core@0.9.1":
+ resolution:
+ {
+ integrity: sha512-GuUdqkyyzQI5RMIWkHhvTWLCyLo1jNK3vzkSyaExH5kHPDHcuL2VOpHjmMY+y3+NC69qAKToBqldTBgYeLSr9Q==,
+ }
+ engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 }
+
+ "@eslint/eslintrc@3.2.0":
+ resolution:
+ {
+ integrity: sha512-grOjVNN8P3hjJn/eIETF1wwd12DdnwFDoyceUJLYYdkpbwq3nLi+4fqrTAONx7XDALqlL220wC/RHSC/QTI/0w==,
+ }
+ engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 }
+
+ "@eslint/js@9.17.0":
+ resolution:
+ {
+ integrity: sha512-Sxc4hqcs1kTu0iID3kcZDW3JHq2a77HO9P8CP6YEA/FpH3Ll8UXE2r/86Rz9YJLKme39S9vU5OWNjC6Xl0Cr3w==,
+ }
+ engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 }
+
+ "@eslint/object-schema@2.1.5":
+ resolution:
+ {
+ integrity: sha512-o0bhxnL89h5Bae5T318nFoFzGy+YE5i/gGkoPAgkmTVdRKTiv3p8JHevPiPaMwoloKfEiiaHlawCqaZMqRm+XQ==,
+ }
+ engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 }
+
+ "@eslint/plugin-kit@0.2.4":
+ resolution:
+ {
+ integrity: sha512-zSkKow6H5Kdm0ZUQUB2kV5JIXqoG0+uH5YADhaEHswm664N9Db8dXSi0nMJpacpMf+MyyglF1vnZohpEg5yUtg==,
+ }
+ engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 }
+
+ "@floating-ui/core@1.6.9":
+ resolution:
+ {
+ integrity: sha512-uMXCuQ3BItDUbAMhIXw7UPXRfAlOAvZzdK9BWpE60MCn+Svt3aLn9jsPTi/WNGlRUu2uI0v5S7JiIUsbsvh3fw==,
+ }
+
+ "@floating-ui/dom@1.6.13":
+ resolution:
+ {
+ integrity: sha512-umqzocjDgNRGTuO7Q8CU32dkHkECqI8ZdMZ5Swb6QAM0t5rnlrN3lGo1hdpscRd3WS8T6DKYK4ephgIH9iRh3w==,
+ }
+
+ "@floating-ui/react-dom@2.1.2":
+ resolution:
+ {
+ integrity: sha512-06okr5cgPzMNBy+Ycse2A6udMi4bqwW/zgBF/rwjcNqWkyr82Mcg8b0vjX8OJpZFy/FKjJmw6wV7t44kK6kW7A==,
+ }
+ peerDependencies:
+ react: ">=16.8.0"
+ react-dom: ">=16.8.0"
+
+ "@floating-ui/utils@0.2.9":
+ resolution:
+ {
+ integrity: sha512-MDWhGtE+eHw5JW7lq4qhc5yRLS11ERl1c7Z6Xd0a58DozHES6EnNNwUWbMiG4J9Cgj053Bhk8zvlhFYKVhULwg==,
+ }
+
+ "@humanfs/core@0.19.1":
+ resolution:
+ {
+ integrity: sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==,
+ }
+ engines: { node: ">=18.18.0" }
+
+ "@humanfs/node@0.16.6":
+ resolution:
+ {
+ integrity: sha512-YuI2ZHQL78Q5HbhDiBA1X4LmYdXCKCMQIfw0pw7piHJwyREFebJUvrQN4cMssyES6x+vfUbx1CIpaQUKYdQZOw==,
+ }
+ engines: { node: ">=18.18.0" }
+
+ "@humanwhocodes/module-importer@1.0.1":
+ resolution:
+ {
+ integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==,
+ }
+ engines: { node: ">=12.22" }
+
+ "@humanwhocodes/retry@0.3.1":
+ resolution:
+ {
+ integrity: sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA==,
+ }
+ engines: { node: ">=18.18" }
+
+ "@humanwhocodes/retry@0.4.1":
+ resolution:
+ {
+ integrity: sha512-c7hNEllBlenFTHBky65mhq8WD2kbN9Q6gk0bTk8lSBvc554jpXSkST1iePudpt7+A/AQvuHs9EMqjHDXMY1lrA==,
+ }
+ engines: { node: ">=18.18" }
+
+ "@isaacs/cliui@8.0.2":
+ resolution:
+ {
+ integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==,
+ }
+ engines: { node: ">=12" }
+
+ "@jridgewell/gen-mapping@0.3.8":
+ resolution:
+ {
+ integrity: sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==,
+ }
+ engines: { node: ">=6.0.0" }
+
+ "@jridgewell/resolve-uri@3.1.2":
+ resolution:
+ {
+ integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==,
+ }
+ engines: { node: ">=6.0.0" }
+
+ "@jridgewell/set-array@1.2.1":
+ resolution:
+ {
+ integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==,
+ }
+ engines: { node: ">=6.0.0" }
+
+ "@jridgewell/sourcemap-codec@1.5.0":
+ resolution:
+ {
+ integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==,
+ }
+
+ "@jridgewell/trace-mapping@0.3.25":
+ resolution:
+ {
+ integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==,
+ }
+
+ "@jspm/core@2.0.1":
+ resolution:
+ {
+ integrity: sha512-Lg3PnLp0QXpxwLIAuuJboLeRaIhrgJjeuh797QADg3xz8wGLugQOS5DpsE8A6i6Adgzf+bacllkKZG3J0tGfDw==,
+ }
+
+ "@mdx-js/mdx@2.3.0":
+ resolution:
+ {
+ integrity: sha512-jLuwRlz8DQfQNiUCJR50Y09CGPq3fLtmtUQfVrj79E0JWu3dvsVcxVIcfhR5h0iXu+/z++zDrYeiJqifRynJkA==,
+ }
+
+ "@nodelib/fs.scandir@2.1.5":
+ resolution:
+ {
+ integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==,
+ }
+ engines: { node: ">= 8" }
+
+ "@nodelib/fs.stat@2.0.5":
+ resolution:
+ {
+ integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==,
+ }
+ engines: { node: ">= 8" }
+
+ "@nodelib/fs.walk@1.2.8":
+ resolution:
+ {
+ integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==,
+ }
+ engines: { node: ">= 8" }
+
+ "@nolyfill/is-core-module@1.0.39":
+ resolution:
+ {
+ integrity: sha512-nn5ozdjYQpUCZlWGuxcJY/KpxkWQs4DcbMCmKojjyrYDEAGy4Ce19NN4v5MduafTwJlbKc99UA8YhSVqq9yPZA==,
+ }
+ engines: { node: ">=12.4.0" }
+
+ "@npmcli/fs@3.1.1":
+ resolution:
+ {
+ integrity: sha512-q9CRWjpHCMIh5sVyefoD1cA7PkvILqCZsnSOEUUivORLjxCO/Irmue2DprETiNgEqktDBZaM1Bi+jrarx1XdCg==,
+ }
+ engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 }
+
+ "@npmcli/git@4.1.0":
+ resolution:
+ {
+ integrity: sha512-9hwoB3gStVfa0N31ymBmrX+GuDGdVA/QWShZVqE0HK2Af+7QGGrCTbZia/SW0ImUTjTne7SP91qxDmtXvDHRPQ==,
+ }
+ engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 }
+
+ "@npmcli/package-json@4.0.1":
+ resolution:
+ {
+ integrity: sha512-lRCEGdHZomFsURroh522YvA/2cVb9oPIJrjHanCJZkiasz1BzcnLr3tBJhlV7S86MBJBuAQ33is2D60YitZL2Q==,
+ }
+ engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 }
+
+ "@npmcli/promise-spawn@6.0.2":
+ resolution:
+ {
+ integrity: sha512-gGq0NJkIGSwdbUt4yhdF8ZrmkGKVz9vAdVzpOfnom+V8PLSmSOVhZwbNvZZS1EYcJN5hzzKBxmmVVAInM6HQLg==,
+ }
+ engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 }
+
+ "@pkgjs/parseargs@0.11.0":
+ resolution:
+ {
+ integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==,
+ }
+ engines: { node: ">=14" }
+
+ "@radix-ui/primitive@1.1.1":
+ resolution:
+ {
+ integrity: sha512-SJ31y+Q/zAyShtXJc8x83i9TYdbAfHZ++tUZnvjJJqFjzsdUnKsxPL6IEtBlxKkU7yzer//GQtZSV4GbldL3YA==,
+ }
+
+ "@radix-ui/react-arrow@1.1.1":
+ resolution:
+ {
+ integrity: sha512-NaVpZfmv8SKeZbn4ijN2V3jlHA9ngBG16VnIIm22nUR0Yk8KUALyBxT3KYEUnNuch9sTE8UTsS3whzBgKOL30w==,
+ }
+ peerDependencies:
+ "@types/react": "*"
+ "@types/react-dom": "*"
+ react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ peerDependenciesMeta:
+ "@types/react":
+ optional: true
+ "@types/react-dom":
+ optional: true
+
+ "@radix-ui/react-avatar@1.1.2":
+ resolution:
+ {
+ integrity: sha512-GaC7bXQZ5VgZvVvsJ5mu/AEbjYLnhhkoidOboC50Z6FFlLA03wG2ianUoH+zgDQ31/9gCF59bE4+2bBgTyMiig==,
+ }
+ peerDependencies:
+ "@types/react": "*"
+ "@types/react-dom": "*"
+ react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ peerDependenciesMeta:
+ "@types/react":
+ optional: true
+ "@types/react-dom":
+ optional: true
+
+ "@radix-ui/react-collapsible@1.1.2":
+ resolution:
+ {
+ integrity: sha512-PliMB63vxz7vggcyq0IxNYk8vGDrLXVWw4+W4B8YnwI1s18x7YZYqlG9PLX7XxAJUi0g2DxP4XKJMFHh/iVh9A==,
+ }
+ peerDependencies:
+ "@types/react": "*"
+ "@types/react-dom": "*"
+ react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ peerDependenciesMeta:
+ "@types/react":
+ optional: true
+ "@types/react-dom":
+ optional: true
+
+ "@radix-ui/react-collection@1.1.1":
+ resolution:
+ {
+ integrity: sha512-LwT3pSho9Dljg+wY2KN2mrrh6y3qELfftINERIzBUO9e0N+t0oMTyn3k9iv+ZqgrwGkRnLpNJrsMv9BZlt2yuA==,
+ }
+ peerDependencies:
+ "@types/react": "*"
+ "@types/react-dom": "*"
+ react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ peerDependenciesMeta:
+ "@types/react":
+ optional: true
+ "@types/react-dom":
+ optional: true
+
+ "@radix-ui/react-compose-refs@1.1.1":
+ resolution:
+ {
+ integrity: sha512-Y9VzoRDSJtgFMUCoiZBDVo084VQ5hfpXxVE+NgkdNsjiDBByiImMZKKhxMwCbdHvhlENG6a833CbFkOQvTricw==,
+ }
+ peerDependencies:
+ "@types/react": "*"
+ react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ peerDependenciesMeta:
+ "@types/react":
+ optional: true
+
+ "@radix-ui/react-context@1.1.1":
+ resolution:
+ {
+ integrity: sha512-UASk9zi+crv9WteK/NU4PLvOoL3OuE6BWVKNF6hPRBtYBDXQ2u5iu3O59zUlJiTVvkyuycnqrztsHVJwcK9K+Q==,
+ }
+ peerDependencies:
+ "@types/react": "*"
+ react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ peerDependenciesMeta:
+ "@types/react":
+ optional: true
+
+ "@radix-ui/react-dialog@1.1.4":
+ resolution:
+ {
+ integrity: sha512-Ur7EV1IwQGCyaAuyDRiOLA5JIUZxELJljF+MbM/2NC0BYwfuRrbpS30BiQBJrVruscgUkieKkqXYDOoByaxIoA==,
+ }
+ peerDependencies:
+ "@types/react": "*"
+ "@types/react-dom": "*"
+ react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ peerDependenciesMeta:
+ "@types/react":
+ optional: true
+ "@types/react-dom":
+ optional: true
+
+ "@radix-ui/react-direction@1.1.0":
+ resolution:
+ {
+ integrity: sha512-BUuBvgThEiAXh2DWu93XsT+a3aWrGqolGlqqw5VU1kG7p/ZH2cuDlM1sRLNnY3QcBS69UIz2mcKhMxDsdewhjg==,
+ }
+ peerDependencies:
+ "@types/react": "*"
+ react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ peerDependenciesMeta:
+ "@types/react":
+ optional: true
+
+ "@radix-ui/react-dismissable-layer@1.1.3":
+ resolution:
+ {
+ integrity: sha512-onrWn/72lQoEucDmJnr8uczSNTujT0vJnA/X5+3AkChVPowr8n1yvIKIabhWyMQeMvvmdpsvcyDqx3X1LEXCPg==,
+ }
+ peerDependencies:
+ "@types/react": "*"
+ "@types/react-dom": "*"
+ react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ peerDependenciesMeta:
+ "@types/react":
+ optional: true
+ "@types/react-dom":
+ optional: true
+
+ "@radix-ui/react-focus-guards@1.1.1":
+ resolution:
+ {
+ integrity: sha512-pSIwfrT1a6sIoDASCSpFwOasEwKTZWDw/iBdtnqKO7v6FeOzYJ7U53cPzYFVR3geGGXgVHaH+CdngrrAzqUGxg==,
+ }
+ peerDependencies:
+ "@types/react": "*"
+ react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ peerDependenciesMeta:
+ "@types/react":
+ optional: true
+
+ "@radix-ui/react-focus-scope@1.1.1":
+ resolution:
+ {
+ integrity: sha512-01omzJAYRxXdG2/he/+xy+c8a8gCydoQ1yOxnWNcRhrrBW5W+RQJ22EK1SaO8tb3WoUsuEw7mJjBozPzihDFjA==,
+ }
+ peerDependencies:
+ "@types/react": "*"
+ "@types/react-dom": "*"
+ react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ peerDependenciesMeta:
+ "@types/react":
+ optional: true
+ "@types/react-dom":
+ optional: true
+
+ "@radix-ui/react-id@1.1.0":
+ resolution:
+ {
+ integrity: sha512-EJUrI8yYh7WOjNOqpoJaf1jlFIH2LvtgAl+YcFqNCa+4hj64ZXmPkAKOFs/ukjz3byN6bdb/AVUqHkI8/uWWMA==,
+ }
+ peerDependencies:
+ "@types/react": "*"
+ react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ peerDependenciesMeta:
+ "@types/react":
+ optional: true
+
+ "@radix-ui/react-label@2.1.1":
+ resolution:
+ {
+ integrity: sha512-UUw5E4e/2+4kFMH7+YxORXGWggtY6sM8WIwh5RZchhLuUg2H1hc98Py+pr8HMz6rdaYrK2t296ZEjYLOCO5uUw==,
+ }
+ peerDependencies:
+ "@types/react": "*"
+ "@types/react-dom": "*"
+ react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ peerDependenciesMeta:
+ "@types/react":
+ optional: true
+ "@types/react-dom":
+ optional: true
+
+ "@radix-ui/react-popover@1.1.4":
+ resolution:
+ {
+ integrity: sha512-aUACAkXx8LaFymDma+HQVji7WhvEhpFJ7+qPz17Nf4lLZqtreGOFRiNQWQmhzp7kEWg9cOyyQJpdIMUMPc/CPw==,
+ }
+ peerDependencies:
+ "@types/react": "*"
+ "@types/react-dom": "*"
+ react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ peerDependenciesMeta:
+ "@types/react":
+ optional: true
+ "@types/react-dom":
+ optional: true
+
+ "@radix-ui/react-popper@1.2.1":
+ resolution:
+ {
+ integrity: sha512-3kn5Me69L+jv82EKRuQCXdYyf1DqHwD2U/sxoNgBGCB7K9TRc3bQamQ+5EPM9EvyPdli0W41sROd+ZU1dTCztw==,
+ }
+ peerDependencies:
+ "@types/react": "*"
+ "@types/react-dom": "*"
+ react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ peerDependenciesMeta:
+ "@types/react":
+ optional: true
+ "@types/react-dom":
+ optional: true
+
+ "@radix-ui/react-portal@1.1.3":
+ resolution:
+ {
+ integrity: sha512-NciRqhXnGojhT93RPyDaMPfLH3ZSl4jjIFbZQ1b/vxvZEdHsBZ49wP9w8L3HzUQwep01LcWtkUvm0OVB5JAHTw==,
+ }
+ peerDependencies:
+ "@types/react": "*"
+ "@types/react-dom": "*"
+ react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ peerDependenciesMeta:
+ "@types/react":
+ optional: true
+ "@types/react-dom":
+ optional: true
+
+ "@radix-ui/react-presence@1.1.2":
+ resolution:
+ {
+ integrity: sha512-18TFr80t5EVgL9x1SwF/YGtfG+l0BS0PRAlCWBDoBEiDQjeKgnNZRVJp/oVBl24sr3Gbfwc/Qpj4OcWTQMsAEg==,
+ }
+ peerDependencies:
+ "@types/react": "*"
+ "@types/react-dom": "*"
+ react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ peerDependenciesMeta:
+ "@types/react":
+ optional: true
+ "@types/react-dom":
+ optional: true
+
+ "@radix-ui/react-primitive@2.0.1":
+ resolution:
+ {
+ integrity: sha512-sHCWTtxwNn3L3fH8qAfnF3WbUZycW93SM1j3NFDzXBiz8D6F5UTTy8G1+WFEaiCdvCVRJWj6N2R4Xq6HdiHmDg==,
+ }
+ peerDependencies:
+ "@types/react": "*"
+ "@types/react-dom": "*"
+ react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ peerDependenciesMeta:
+ "@types/react":
+ optional: true
+ "@types/react-dom":
+ optional: true
+
+ "@radix-ui/react-roving-focus@1.1.1":
+ resolution:
+ {
+ integrity: sha512-QE1RoxPGJ/Nm8Qmk0PxP8ojmoaS67i0s7hVssS7KuI2FQoc/uzVlZsqKfQvxPE6D8hICCPHJ4D88zNhT3OOmkw==,
+ }
+ peerDependencies:
+ "@types/react": "*"
+ "@types/react-dom": "*"
+ react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ peerDependenciesMeta:
+ "@types/react":
+ optional: true
+ "@types/react-dom":
+ optional: true
+
+ "@radix-ui/react-separator@1.1.1":
+ resolution:
+ {
+ integrity: sha512-RRiNRSrD8iUiXriq/Y5n4/3iE8HzqgLHsusUSg5jVpU2+3tqcUFPJXHDymwEypunc2sWxDUS3UC+rkZRlHedsw==,
+ }
+ peerDependencies:
+ "@types/react": "*"
+ "@types/react-dom": "*"
+ react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ peerDependenciesMeta:
+ "@types/react":
+ optional: true
+ "@types/react-dom":
+ optional: true
+
+ "@radix-ui/react-slot@1.1.1":
+ resolution:
+ {
+ integrity: sha512-RApLLOcINYJA+dMVbOju7MYv1Mb2EBp2nH4HdDzXTSyaR5optlm6Otrz1euW3HbdOR8UmmFK06TD+A9frYWv+g==,
+ }
+ peerDependencies:
+ "@types/react": "*"
+ react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ peerDependenciesMeta:
+ "@types/react":
+ optional: true
+
+ "@radix-ui/react-tabs@1.1.2":
+ resolution:
+ {
+ integrity: sha512-9u/tQJMcC2aGq7KXpGivMm1mgq7oRJKXphDwdypPd/j21j/2znamPU8WkXgnhUaTrSFNIt8XhOyCAupg8/GbwQ==,
+ }
+ peerDependencies:
+ "@types/react": "*"
+ "@types/react-dom": "*"
+ react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ peerDependenciesMeta:
+ "@types/react":
+ optional: true
+ "@types/react-dom":
+ optional: true
+
+ "@radix-ui/react-toast@1.2.4":
+ resolution:
+ {
+ integrity: sha512-Sch9idFJHJTMH9YNpxxESqABcAFweJG4tKv+0zo0m5XBvUSL8FM5xKcJLFLXononpePs8IclyX1KieL5SDUNgA==,
+ }
+ peerDependencies:
+ "@types/react": "*"
+ "@types/react-dom": "*"
+ react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ peerDependenciesMeta:
+ "@types/react":
+ optional: true
+ "@types/react-dom":
+ optional: true
+
+ "@radix-ui/react-tooltip@1.1.6":
+ resolution:
+ {
+ integrity: sha512-TLB5D8QLExS1uDn7+wH/bjEmRurNMTzNrtq7IjaS4kjion9NtzsTGkvR5+i7yc9q01Pi2KMM2cN3f8UG4IvvXA==,
+ }
+ peerDependencies:
+ "@types/react": "*"
+ "@types/react-dom": "*"
+ react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ peerDependenciesMeta:
+ "@types/react":
+ optional: true
+ "@types/react-dom":
+ optional: true
+
+ "@radix-ui/react-use-callback-ref@1.1.0":
+ resolution:
+ {
+ integrity: sha512-CasTfvsy+frcFkbXtSJ2Zu9JHpN8TYKxkgJGWbjiZhFivxaeW7rMeZt7QELGVLaYVfFMsKHjb7Ak0nMEe+2Vfw==,
+ }
+ peerDependencies:
+ "@types/react": "*"
+ react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ peerDependenciesMeta:
+ "@types/react":
+ optional: true
+
+ "@radix-ui/react-use-controllable-state@1.1.0":
+ resolution:
+ {
+ integrity: sha512-MtfMVJiSr2NjzS0Aa90NPTnvTSg6C/JLCV7ma0W6+OMV78vd8OyRpID+Ng9LxzsPbLeuBnWBA1Nq30AtBIDChw==,
+ }
+ peerDependencies:
+ "@types/react": "*"
+ react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ peerDependenciesMeta:
+ "@types/react":
+ optional: true
+
+ "@radix-ui/react-use-escape-keydown@1.1.0":
+ resolution:
+ {
+ integrity: sha512-L7vwWlR1kTTQ3oh7g1O0CBF3YCyyTj8NmhLR+phShpyA50HCfBFKVJTpshm9PzLiKmehsrQzTYTpX9HvmC9rhw==,
+ }
+ peerDependencies:
+ "@types/react": "*"
+ react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ peerDependenciesMeta:
+ "@types/react":
+ optional: true
+
+ "@radix-ui/react-use-layout-effect@1.1.0":
+ resolution:
+ {
+ integrity: sha512-+FPE0rOdziWSrH9athwI1R0HDVbWlEhd+FR+aSDk4uWGmSJ9Z54sdZVDQPZAinJhJXwfT+qnj969mCsT2gfm5w==,
+ }
+ peerDependencies:
+ "@types/react": "*"
+ react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ peerDependenciesMeta:
+ "@types/react":
+ optional: true
+
+ "@radix-ui/react-use-rect@1.1.0":
+ resolution:
+ {
+ integrity: sha512-0Fmkebhr6PiseyZlYAOtLS+nb7jLmpqTrJyv61Pe68MKYW6OWdRE2kI70TaYY27u7H0lajqM3hSMMLFq18Z7nQ==,
+ }
+ peerDependencies:
+ "@types/react": "*"
+ react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ peerDependenciesMeta:
+ "@types/react":
+ optional: true
+
+ "@radix-ui/react-use-size@1.1.0":
+ resolution:
+ {
+ integrity: sha512-XW3/vWuIXHa+2Uwcc2ABSfcCledmXhhQPlGbfcRXbiUQI5Icjcg19BGCZVKKInYbvUCut/ufbbLLPFC5cbb1hw==,
+ }
+ peerDependencies:
+ "@types/react": "*"
+ react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ peerDependenciesMeta:
+ "@types/react":
+ optional: true
+
+ "@radix-ui/react-visually-hidden@1.1.1":
+ resolution:
+ {
+ integrity: sha512-vVfA2IZ9q/J+gEamvj761Oq1FpWgCDaNOOIfbPVp2MVPLEomUr5+Vf7kJGwQ24YxZSlQVar7Bes8kyTo5Dshpg==,
+ }
+ peerDependencies:
+ "@types/react": "*"
+ "@types/react-dom": "*"
+ react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ peerDependenciesMeta:
+ "@types/react":
+ optional: true
+ "@types/react-dom":
+ optional: true
+
+ "@radix-ui/rect@1.1.0":
+ resolution:
+ {
+ integrity: sha512-A9+lCBZoaMJlVKcRBz2YByCG+Cp2t6nAnMnNba+XiWxnj6r4JUFqfsgwocMBZU9LPtdxC6wB56ySYpc7LQIoJg==,
+ }
+
+ "@remix-run/dev@2.15.2":
+ resolution:
+ {
+ integrity: sha512-o8lix8t4GBhtXjo/G1IzwtHVW5GRMs7amtFtBHiR1bhSyK7VyX5qGtTDmJyny5QDv83pxaLOCiE0dUng2BCoyQ==,
+ }
+ engines: { node: ">=18.0.0" }
+ hasBin: true
+ peerDependencies:
+ "@remix-run/react": ^2.15.2
+ "@remix-run/serve": ^2.15.2
+ typescript: ^5.1.0
+ vite: ^5.1.0
+ wrangler: ^3.28.2
+ peerDependenciesMeta:
+ "@remix-run/serve":
+ optional: true
+ typescript:
+ optional: true
+ vite:
+ optional: true
+ wrangler:
+ optional: true
+
+ "@remix-run/express@2.15.2":
+ resolution:
+ {
+ integrity: sha512-54FKQ6/Zj2DCxc4/9tWKUJLPkFakCUf1m7j7a5zp4JGDr436lkZEpS9btfoBZAVq14SIMp5Uc4yt5rUJ1PMORw==,
+ }
+ engines: { node: ">=18.0.0" }
+ peerDependencies:
+ express: ^4.20.0
+ typescript: ^5.1.0
+ peerDependenciesMeta:
+ typescript:
+ optional: true
+
+ "@remix-run/node@2.15.2":
+ resolution:
+ {
+ integrity: sha512-NS/h5uxje7DYCNgcKqKAiUhf0r2HVnoYUBWLyIIMmCUP1ddWurBP6xTPcWzGhEvV/EvguniYi1wJZ5+X8sonWw==,
+ }
+ engines: { node: ">=18.0.0" }
+ peerDependencies:
+ typescript: ^5.1.0
+ peerDependenciesMeta:
+ typescript:
+ optional: true
+
+ "@remix-run/react@2.15.2":
+ resolution:
+ {
+ integrity: sha512-NAAMsSgoC/sdOgovUewwRCE/RUm3F+MBxxZKfwu3POCNeHaplY5qGkH/y8PUXvdN1EBG7Z0Ko43dyzCfcEy5PA==,
+ }
+ engines: { node: ">=18.0.0" }
+ peerDependencies:
+ react: ^18.0.0
+ react-dom: ^18.0.0
+ typescript: ^5.1.0
+ peerDependenciesMeta:
+ typescript:
+ optional: true
+
+ "@remix-run/router@1.21.0":
+ resolution:
+ {
+ integrity: sha512-xfSkCAchbdG5PnbrKqFWwia4Bi61nH+wm8wLEqfHDyp7Y3dZzgqS2itV8i4gAq9pC2HsTpwyBC6Ds8VHZ96JlA==,
+ }
+ engines: { node: ">=14.0.0" }
+
+ "@remix-run/serve@2.15.2":
+ resolution:
+ {
+ integrity: sha512-m/nZtAUzzGcixNgNc3RNjA1ocFlWAuZFALpZ5fJdPXmITwqRwfjo/1gI+jx7AL7haoo+4j/sAljuAQw2CiswXA==,
+ }
+ engines: { node: ">=18.0.0" }
+ hasBin: true
+
+ "@remix-run/server-runtime@2.15.2":
+ resolution:
+ {
+ integrity: sha512-OqiPcvEnnU88B8b1LIWHHkQ3Tz2GDAmQ1RihFNQsbrFKpDsQLkw0lJlnfgKA/uHd0CEEacpfV7C9qqJT3V6Z2g==,
+ }
+ engines: { node: ">=18.0.0" }
+ peerDependencies:
+ typescript: ^5.1.0
+ peerDependenciesMeta:
+ typescript:
+ optional: true
+
+ "@remix-run/web-blob@3.1.0":
+ resolution:
+ {
+ integrity: sha512-owGzFLbqPH9PlKb8KvpNJ0NO74HWE2euAn61eEiyCXX/oteoVzTVSN8mpLgDjaxBf2btj5/nUllSUgpyd6IH6g==,
+ }
+
+ "@remix-run/web-fetch@4.4.2":
+ resolution:
+ {
+ integrity: sha512-jgKfzA713/4kAW/oZ4bC3MoLWyjModOVDjFPNseVqcJKSafgIscrYL9G50SurEYLswPuoU3HzSbO0jQCMYWHhA==,
+ }
+ engines: { node: ^10.17 || >=12.3 }
+
+ "@remix-run/web-file@3.1.0":
+ resolution:
+ {
+ integrity: sha512-dW2MNGwoiEYhlspOAXFBasmLeYshyAyhIdrlXBi06Duex5tDr3ut2LFKVj7tyHLmn8nnNwFf1BjNbkQpygC2aQ==,
+ }
+
+ "@remix-run/web-form-data@3.1.0":
+ resolution:
+ {
+ integrity: sha512-NdeohLMdrb+pHxMQ/Geuzdp0eqPbea+Ieo8M8Jx2lGC6TBHsgHzYcBvr0LyPdPVycNRDEpWpiDdCOdCryo3f9A==,
+ }
+
+ "@remix-run/web-stream@1.1.0":
+ resolution:
+ {
+ integrity: sha512-KRJtwrjRV5Bb+pM7zxcTJkhIqWWSy+MYsIxHK+0m5atcznsf15YwUBWHWulZerV2+vvHH1Lp1DD7pw6qKW8SgA==,
+ }
+
+ "@rollup/rollup-android-arm-eabi@4.30.1":
+ resolution:
+ {
+ integrity: sha512-pSWY+EVt3rJ9fQ3IqlrEUtXh3cGqGtPDH1FQlNZehO2yYxCHEX1SPsz1M//NXwYfbTlcKr9WObLnJX9FsS9K1Q==,
+ }
+ cpu: [arm]
+ os: [android]
+
+ "@rollup/rollup-android-arm64@4.30.1":
+ resolution:
+ {
+ integrity: sha512-/NA2qXxE3D/BRjOJM8wQblmArQq1YoBVJjrjoTSBS09jgUisq7bqxNHJ8kjCHeV21W/9WDGwJEWSN0KQ2mtD/w==,
+ }
+ cpu: [arm64]
+ os: [android]
+
+ "@rollup/rollup-darwin-arm64@4.30.1":
+ resolution:
+ {
+ integrity: sha512-r7FQIXD7gB0WJ5mokTUgUWPl0eYIH0wnxqeSAhuIwvnnpjdVB8cRRClyKLQr7lgzjctkbp5KmswWszlwYln03Q==,
+ }
+ cpu: [arm64]
+ os: [darwin]
+
+ "@rollup/rollup-darwin-x64@4.30.1":
+ resolution:
+ {
+ integrity: sha512-x78BavIwSH6sqfP2xeI1hd1GpHL8J4W2BXcVM/5KYKoAD3nNsfitQhvWSw+TFtQTLZ9OmlF+FEInEHyubut2OA==,
+ }
+ cpu: [x64]
+ os: [darwin]
+
+ "@rollup/rollup-freebsd-arm64@4.30.1":
+ resolution:
+ {
+ integrity: sha512-HYTlUAjbO1z8ywxsDFWADfTRfTIIy/oUlfIDmlHYmjUP2QRDTzBuWXc9O4CXM+bo9qfiCclmHk1x4ogBjOUpUQ==,
+ }
+ cpu: [arm64]
+ os: [freebsd]
+
+ "@rollup/rollup-freebsd-x64@4.30.1":
+ resolution:
+ {
+ integrity: sha512-1MEdGqogQLccphhX5myCJqeGNYTNcmTyaic9S7CG3JhwuIByJ7J05vGbZxsizQthP1xpVx7kd3o31eOogfEirw==,
+ }
+ cpu: [x64]
+ os: [freebsd]
+
+ "@rollup/rollup-linux-arm-gnueabihf@4.30.1":
+ resolution:
+ {
+ integrity: sha512-PaMRNBSqCx7K3Wc9QZkFx5+CX27WFpAMxJNiYGAXfmMIKC7jstlr32UhTgK6T07OtqR+wYlWm9IxzennjnvdJg==,
+ }
+ cpu: [arm]
+ os: [linux]
+
+ "@rollup/rollup-linux-arm-musleabihf@4.30.1":
+ resolution:
+ {
+ integrity: sha512-B8Rcyj9AV7ZlEFqvB5BubG5iO6ANDsRKlhIxySXcF1axXYUyqwBok+XZPgIYGBgs7LDXfWfifxhw0Ik57T0Yug==,
+ }
+ cpu: [arm]
+ os: [linux]
+
+ "@rollup/rollup-linux-arm64-gnu@4.30.1":
+ resolution:
+ {
+ integrity: sha512-hqVyueGxAj3cBKrAI4aFHLV+h0Lv5VgWZs9CUGqr1z0fZtlADVV1YPOij6AhcK5An33EXaxnDLmJdQikcn5NEw==,
+ }
+ cpu: [arm64]
+ os: [linux]
+
+ "@rollup/rollup-linux-arm64-musl@4.30.1":
+ resolution:
+ {
+ integrity: sha512-i4Ab2vnvS1AE1PyOIGp2kXni69gU2DAUVt6FSXeIqUCPIR3ZlheMW3oP2JkukDfu3PsexYRbOiJrY+yVNSk9oA==,
+ }
+ cpu: [arm64]
+ os: [linux]
+
+ "@rollup/rollup-linux-loongarch64-gnu@4.30.1":
+ resolution:
+ {
+ integrity: sha512-fARcF5g296snX0oLGkVxPmysetwUk2zmHcca+e9ObOovBR++9ZPOhqFUM61UUZ2EYpXVPN1redgqVoBB34nTpQ==,
+ }
+ cpu: [loong64]
+ os: [linux]
+
+ "@rollup/rollup-linux-powerpc64le-gnu@4.30.1":
+ resolution:
+ {
+ integrity: sha512-GLrZraoO3wVT4uFXh67ElpwQY0DIygxdv0BNW9Hkm3X34wu+BkqrDrkcsIapAY+N2ATEbvak0XQ9gxZtCIA5Rw==,
+ }
+ cpu: [ppc64]
+ os: [linux]
+
+ "@rollup/rollup-linux-riscv64-gnu@4.30.1":
+ resolution:
+ {
+ integrity: sha512-0WKLaAUUHKBtll0wvOmh6yh3S0wSU9+yas923JIChfxOaaBarmb/lBKPF0w/+jTVozFnOXJeRGZ8NvOxvk/jcw==,
+ }
+ cpu: [riscv64]
+ os: [linux]
+
+ "@rollup/rollup-linux-s390x-gnu@4.30.1":
+ resolution:
+ {
+ integrity: sha512-GWFs97Ruxo5Bt+cvVTQkOJ6TIx0xJDD/bMAOXWJg8TCSTEK8RnFeOeiFTxKniTc4vMIaWvCplMAFBt9miGxgkA==,
+ }
+ cpu: [s390x]
+ os: [linux]
+
+ "@rollup/rollup-linux-x64-gnu@4.30.1":
+ resolution:
+ {
+ integrity: sha512-UtgGb7QGgXDIO+tqqJ5oZRGHsDLO8SlpE4MhqpY9Llpzi5rJMvrK6ZGhsRCST2abZdBqIBeXW6WPD5fGK5SDwg==,
+ }
+ cpu: [x64]
+ os: [linux]
+
+ "@rollup/rollup-linux-x64-musl@4.30.1":
+ resolution:
+ {
+ integrity: sha512-V9U8Ey2UqmQsBT+xTOeMzPzwDzyXmnAoO4edZhL7INkwQcaW1Ckv3WJX3qrrp/VHaDkEWIBWhRwP47r8cdrOow==,
+ }
+ cpu: [x64]
+ os: [linux]
+
+ "@rollup/rollup-win32-arm64-msvc@4.30.1":
+ resolution:
+ {
+ integrity: sha512-WabtHWiPaFF47W3PkHnjbmWawnX/aE57K47ZDT1BXTS5GgrBUEpvOzq0FI0V/UYzQJgdb8XlhVNH8/fwV8xDjw==,
+ }
+ cpu: [arm64]
+ os: [win32]
+
+ "@rollup/rollup-win32-ia32-msvc@4.30.1":
+ resolution:
+ {
+ integrity: sha512-pxHAU+Zv39hLUTdQQHUVHf4P+0C47y/ZloorHpzs2SXMRqeAWmGghzAhfOlzFHHwjvgokdFAhC4V+6kC1lRRfw==,
+ }
+ cpu: [ia32]
+ os: [win32]
+
+ "@rollup/rollup-win32-x64-msvc@4.30.1":
+ resolution:
+ {
+ integrity: sha512-D6qjsXGcvhTjv0kI4fU8tUuBDF/Ueee4SVX79VfNDXZa64TfCW1Slkb6Z7O1p7vflqZjcmOVdZlqf8gvJxc6og==,
+ }
+ cpu: [x64]
+ os: [win32]
+
+ "@rtsao/scc@1.1.0":
+ resolution:
+ {
+ integrity: sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g==,
+ }
+
+ "@swc/core-darwin-arm64@1.10.6":
+ resolution:
+ {
+ integrity: sha512-USbMvT8Rw5PvIfF6HyTm+yW84J9c45emzmHBDIWY76vZHkFsS5MepNi+JLQyBzBBgE7ScwBRBNhRx6VNhkSoww==,
+ }
+ engines: { node: ">=10" }
+ cpu: [arm64]
+ os: [darwin]
+
+ "@swc/core-darwin-x64@1.10.6":
+ resolution:
+ {
+ integrity: sha512-7t2IozcZN4r1p27ei+Kb8IjN4aLoBDn107fPi+aPLcVp2uFgJEUzhCDuZXBNW2057Mx1OHcjzrkaleRpECz3Xg==,
+ }
+ engines: { node: ">=10" }
+ cpu: [x64]
+ os: [darwin]
+
+ "@swc/core-linux-arm-gnueabihf@1.10.6":
+ resolution:
+ {
+ integrity: sha512-CPgWT+D0bDp/qhXsLkIJ54LmKU1/zvyGaf/yz8A4iR+YoF6R5CSXENXhNJY8cIrb6+uNWJZzHJ+gefB5V51bpA==,
+ }
+ engines: { node: ">=10" }
+ cpu: [arm]
+ os: [linux]
+
+ "@swc/core-linux-arm64-gnu@1.10.6":
+ resolution:
+ {
+ integrity: sha512-5qZ6hVnqO/ShETXdGSzvdGUVx372qydlj1YWSYiaxQzTAepEBc8TC1NVUgYtOHOKVRkky1d7p6GQ9lymsd4bHw==,
+ }
+ engines: { node: ">=10" }
+ cpu: [arm64]
+ os: [linux]
+
+ "@swc/core-linux-arm64-musl@1.10.6":
+ resolution:
+ {
+ integrity: sha512-hB2xZFmXCKf2iJF5y2z01PSuLqEoUP3jIX/XlIHN+/AIP7PkSKsValE63LnjlnWPnSEI0IxUyRE3T3FzWE/fQQ==,
+ }
+ engines: { node: ">=10" }
+ cpu: [arm64]
+ os: [linux]
+
+ "@swc/core-linux-x64-gnu@1.10.6":
+ resolution:
+ {
+ integrity: sha512-PRGPp0I22+oJ8RMGg8M4hXYxEffH3ayu0WoSDPOjfol1F51Wj1tfTWN4wVa2RibzJjkBwMOT0KGLGb/hSEDDXQ==,
+ }
+ engines: { node: ">=10" }
+ cpu: [x64]
+ os: [linux]
+
+ "@swc/core-linux-x64-musl@1.10.6":
+ resolution:
+ {
+ integrity: sha512-SoNBxlA86lnoV9vIz/TCyakLkdRhFSHx6tFMKNH8wAhz1kKYbZfDmpYoIzeQqdTh0tpx8e/Zu1zdK4smovsZqQ==,
+ }
+ engines: { node: ">=10" }
+ cpu: [x64]
+ os: [linux]
+
+ "@swc/core-win32-arm64-msvc@1.10.6":
+ resolution:
+ {
+ integrity: sha512-6L5Y2E+FVvM+BtoA+mJFjf/SjpFr73w2kHBxINxwH8/PkjAjkePDr5m0ibQhPXV61bTwX49+1otzTY85EsUW9Q==,
+ }
+ engines: { node: ">=10" }
+ cpu: [arm64]
+ os: [win32]
+
+ "@swc/core-win32-ia32-msvc@1.10.6":
+ resolution:
+ {
+ integrity: sha512-kxK3tW8DJwEkAkwy0vhwoBAShRebH1QTe0mvH9tlBQ21rToVZQn+GCV/I44dind80hYPw0Tw2JKFVfoEJyBszg==,
+ }
+ engines: { node: ">=10" }
+ cpu: [ia32]
+ os: [win32]
+
+ "@swc/core-win32-x64-msvc@1.10.6":
+ resolution:
+ {
+ integrity: sha512-4pJka/+t8XcHee12G/R5VWcilkp5poT2EJhrybpuREkpQ7iC/4WOlOVrohbWQ4AhDQmojYQI/iS+gdF2JFLzTQ==,
+ }
+ engines: { node: ">=10" }
+ cpu: [x64]
+ os: [win32]
+
+ "@swc/core@1.10.6":
+ resolution:
+ {
+ integrity: sha512-zgXXsI6SAVwr6XsXyMnqlyLoa1lT+r09bAWI1xT3679ejWqI1Vnl14eJG0GjWYXCEMKHCNytfMq3OOQ62C39QQ==,
+ }
+ engines: { node: ">=10" }
+ peerDependencies:
+ "@swc/helpers": "*"
+ peerDependenciesMeta:
+ "@swc/helpers":
+ optional: true
+
+ "@swc/counter@0.1.3":
+ resolution:
+ {
+ integrity: sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==,
+ }
+
+ "@swc/types@0.1.17":
+ resolution:
+ {
+ integrity: sha512-V5gRru+aD8YVyCOMAjMpWR1Ui577DD5KSJsHP8RAxopAH22jFz6GZd/qxqjO6MJHQhcsjvjOFXyDhyLQUnMveQ==,
+ }
+
+ "@tanstack/query-core@5.62.16":
+ resolution:
+ {
+ integrity: sha512-9Sgft7Qavcd+sN0V25xVyo0nfmcZXBuODy3FVG7BMWTg1HMLm8wwG5tNlLlmSic1u7l1v786oavn+STiFaPH2g==,
+ }
+
+ "@tanstack/react-query@5.62.16":
+ resolution:
+ {
+ integrity: sha512-XJIZNj65d2IdvU8VBESmrPakfIm6FSdHDzrS1dPrAwmq3ZX+9riMh/ZfbNQHAWnhrgmq7KoXpgZSRyXnqMYT9A==,
+ }
+ peerDependencies:
+ react: ^18 || ^19
+
+ "@types/acorn@4.0.6":
+ resolution:
+ {
+ integrity: sha512-veQTnWP+1D/xbxVrPC3zHnCZRjSrKfhbMUlEA43iMZLu7EsnTtkJklIuwrCPbOi8YkvDQAiW05VQQFvvz9oieQ==,
+ }
+
+ "@types/cookie@0.6.0":
+ resolution:
+ {
+ integrity: sha512-4Kh9a6B2bQciAhf7FSuMRRkUWecJgJu9nPnx3yzpsfXX/c50REIqpHY4C82bXP90qrLtXtkDxTZosYO3UpOwlA==,
+ }
+
+ "@types/debug@4.1.12":
+ resolution:
+ {
+ integrity: sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==,
+ }
+
+ "@types/estree-jsx@1.0.5":
+ resolution:
+ {
+ integrity: sha512-52CcUVNFyfb1A2ALocQw/Dd1BQFNmSdkuC3BkZ6iqhdMfQz7JWOFRuJFloOzjk+6WijU56m9oKXFAXc7o3Towg==,
+ }
+
+ "@types/estree@1.0.6":
+ resolution:
+ {
+ integrity: sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==,
+ }
+
+ "@types/hast@2.3.10":
+ resolution:
+ {
+ integrity: sha512-McWspRw8xx8J9HurkVBfYj0xKoE25tOFlHGdx4MJ5xORQrMGZNqJhVQWaIbm6Oyla5kYOXtDiopzKRJzEOkwJw==,
+ }
+
+ "@types/json-schema@7.0.15":
+ resolution:
+ {
+ integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==,
+ }
+
+ "@types/json5@0.0.29":
+ resolution:
+ {
+ integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==,
+ }
+
+ "@types/mdast@3.0.15":
+ resolution:
+ {
+ integrity: sha512-LnwD+mUEfxWMa1QpDraczIn6k0Ee3SMicuYSSzS6ZYl2gKS09EClnJYGd8Du6rfc5r/GZEk5o1mRb8TaTj03sQ==,
+ }
+
+ "@types/mdx@2.0.13":
+ resolution:
+ {
+ integrity: sha512-+OWZQfAYyio6YkJb3HLxDrvnx6SWWDbC0zVPfBRzUk0/nqoDyf6dNxQi3eArPe8rJ473nobTMQ/8Zk+LxJ+Yuw==,
+ }
+
+ "@types/ms@0.7.34":
+ resolution:
+ {
+ integrity: sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g==,
+ }
+
+ "@types/node@22.10.5":
+ resolution:
+ {
+ integrity: sha512-F8Q+SeGimwOo86fiovQh8qiXfFEh2/ocYv7tU5pJ3EXMSSxk1Joj5wefpFK2fHTf/N6HKGSxIDBT9f3gCxXPkQ==,
+ }
+
+ "@types/prop-types@15.7.14":
+ resolution:
+ {
+ integrity: sha512-gNMvNH49DJ7OJYv+KAKn0Xp45p8PLl6zo2YnvDIbTd4J6MER2BmWN49TG7n9LvkyihINxeKW8+3bfS2yDC9dzQ==,
+ }
+
+ "@types/react-dom@18.3.5":
+ resolution:
+ {
+ integrity: sha512-P4t6saawp+b/dFrUr2cvkVsfvPguwsxtH6dNIYRllMsefqFzkZk5UIjzyDOv5g1dXIPdG4Sp1yCR4Z6RCUsG/Q==,
+ }
+ peerDependencies:
+ "@types/react": ^18.0.0
+
+ "@types/react@18.3.18":
+ resolution:
+ {
+ integrity: sha512-t4yC+vtgnkYjNSKlFx1jkAhH8LgTo2N/7Qvi83kdEaUtMDiwpbLAktKDaAMlRcJ5eSxZkH74eEGt1ky31d7kfQ==,
+ }
+
+ "@types/semver@7.5.8":
+ resolution:
+ {
+ integrity: sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==,
+ }
+
+ "@types/unist@2.0.11":
+ resolution:
+ {
+ integrity: sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==,
+ }
+
+ "@typescript-eslint/eslint-plugin@6.21.0":
+ resolution:
+ {
+ integrity: sha512-oy9+hTPCUFpngkEZUSzbf9MxI65wbKFoQYsgPdILTfbUldp5ovUuphZVe4i30emU9M/kP+T64Di0mxl7dSw3MA==,
+ }
+ engines: { node: ^16.0.0 || >=18.0.0 }
+ peerDependencies:
+ "@typescript-eslint/parser": ^6.0.0 || ^6.0.0-alpha
+ eslint: ^7.0.0 || ^8.0.0
+ typescript: "*"
+ peerDependenciesMeta:
+ typescript:
+ optional: true
+
+ "@typescript-eslint/eslint-plugin@8.19.1":
+ resolution:
+ {
+ integrity: sha512-tJzcVyvvb9h/PB96g30MpxACd9IrunT7GF9wfA9/0TJ1LxGOJx1TdPzSbBBnNED7K9Ka8ybJsnEpiXPktolTLg==,
+ }
+ engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 }
+ peerDependencies:
+ "@typescript-eslint/parser": ^8.0.0 || ^8.0.0-alpha.0
+ eslint: ^8.57.0 || ^9.0.0
+ typescript: ">=4.8.4 <5.8.0"
+
+ "@typescript-eslint/parser@6.21.0":
+ resolution:
+ {
+ integrity: sha512-tbsV1jPne5CkFQCgPBcDOt30ItF7aJoZL997JSF7MhGQqOeT3svWRYxiqlfA5RUdlHN6Fi+EI9bxqbdyAUZjYQ==,
+ }
+ engines: { node: ^16.0.0 || >=18.0.0 }
+ peerDependencies:
+ eslint: ^7.0.0 || ^8.0.0
+ typescript: "*"
+ peerDependenciesMeta:
+ typescript:
+ optional: true
+
+ "@typescript-eslint/parser@8.19.1":
+ resolution:
+ {
+ integrity: sha512-67gbfv8rAwawjYx3fYArwldTQKoYfezNUT4D5ioWetr/xCrxXxvleo3uuiFuKfejipvq+og7mjz3b0G2bVyUCw==,
+ }
+ engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 }
+ peerDependencies:
+ eslint: ^8.57.0 || ^9.0.0
+ typescript: ">=4.8.4 <5.8.0"
+
+ "@typescript-eslint/scope-manager@6.21.0":
+ resolution:
+ {
+ integrity: sha512-OwLUIWZJry80O99zvqXVEioyniJMa+d2GrqpUTqi5/v5D5rOrppJVBPa0yKCblcigC0/aYAzxxqQ1B+DS2RYsg==,
+ }
+ engines: { node: ^16.0.0 || >=18.0.0 }
+
+ "@typescript-eslint/scope-manager@8.19.1":
+ resolution:
+ {
+ integrity: sha512-60L9KIuN/xgmsINzonOcMDSB8p82h95hoBfSBtXuO4jlR1R9L1xSkmVZKgCPVfavDlXihh4ARNjXhh1gGnLC7Q==,
+ }
+ engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 }
+
+ "@typescript-eslint/type-utils@6.21.0":
+ resolution:
+ {
+ integrity: sha512-rZQI7wHfao8qMX3Rd3xqeYSMCL3SoiSQLBATSiVKARdFGCYSRvmViieZjqc58jKgs8Y8i9YvVVhRbHSTA4VBag==,
+ }
+ engines: { node: ^16.0.0 || >=18.0.0 }
+ peerDependencies:
+ eslint: ^7.0.0 || ^8.0.0
+ typescript: "*"
+ peerDependenciesMeta:
+ typescript:
+ optional: true
+
+ "@typescript-eslint/type-utils@8.19.1":
+ resolution:
+ {
+ integrity: sha512-Rp7k9lhDKBMRJB/nM9Ksp1zs4796wVNyihG9/TU9R6KCJDNkQbc2EOKjrBtLYh3396ZdpXLtr/MkaSEmNMtykw==,
+ }
+ engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 }
+ peerDependencies:
+ eslint: ^8.57.0 || ^9.0.0
+ typescript: ">=4.8.4 <5.8.0"
+
+ "@typescript-eslint/types@6.21.0":
+ resolution:
+ {
+ integrity: sha512-1kFmZ1rOm5epu9NZEZm1kckCDGj5UJEf7P1kliH4LKu/RkwpsfqqGmY2OOcUs18lSlQBKLDYBOGxRVtrMN5lpg==,
+ }
+ engines: { node: ^16.0.0 || >=18.0.0 }
+
+ "@typescript-eslint/types@8.19.1":
+ resolution:
+ {
+ integrity: sha512-JBVHMLj7B1K1v1051ZaMMgLW4Q/jre5qGK0Ew6UgXz1Rqh+/xPzV1aW581OM00X6iOfyr1be+QyW8LOUf19BbA==,
+ }
+ engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 }
+
+ "@typescript-eslint/typescript-estree@6.21.0":
+ resolution:
+ {
+ integrity: sha512-6npJTkZcO+y2/kr+z0hc4HwNfrrP4kNYh57ek7yCNlrBjWQ1Y0OS7jiZTkgumrvkX5HkEKXFZkkdFNkaW2wmUQ==,
+ }
+ engines: { node: ^16.0.0 || >=18.0.0 }
+ peerDependencies:
+ typescript: "*"
+ peerDependenciesMeta:
+ typescript:
+ optional: true
+
+ "@typescript-eslint/typescript-estree@8.19.1":
+ resolution:
+ {
+ integrity: sha512-jk/TZwSMJlxlNnqhy0Eod1PNEvCkpY6MXOXE/WLlblZ6ibb32i2We4uByoKPv1d0OD2xebDv4hbs3fm11SMw8Q==,
+ }
+ engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 }
+ peerDependencies:
+ typescript: ">=4.8.4 <5.8.0"
+
+ "@typescript-eslint/utils@6.21.0":
+ resolution:
+ {
+ integrity: sha512-NfWVaC8HP9T8cbKQxHcsJBY5YE1O33+jpMwN45qzWWaPDZgLIbo12toGMWnmhvCpd3sIxkpDw3Wv1B3dYrbDQQ==,
+ }
+ engines: { node: ^16.0.0 || >=18.0.0 }
+ peerDependencies:
+ eslint: ^7.0.0 || ^8.0.0
+
+ "@typescript-eslint/utils@8.19.1":
+ resolution:
+ {
+ integrity: sha512-IxG5gLO0Ne+KaUc8iW1A+XuKLd63o4wlbI1Zp692n1xojCl/THvgIKXJXBZixTh5dd5+yTJ/VXH7GJaaw21qXA==,
+ }
+ engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 }
+ peerDependencies:
+ eslint: ^8.57.0 || ^9.0.0
+ typescript: ">=4.8.4 <5.8.0"
+
+ "@typescript-eslint/visitor-keys@6.21.0":
+ resolution:
+ {
+ integrity: sha512-JJtkDduxLi9bivAB+cYOVMtbkqdPOhZ+ZI5LC47MIRrDV4Yn2o+ZnW10Nkmr28xRpSpdJ6Sm42Hjf2+REYXm0A==,
+ }
+ engines: { node: ^16.0.0 || >=18.0.0 }
+
+ "@typescript-eslint/visitor-keys@8.19.1":
+ resolution:
+ {
+ integrity: sha512-fzmjU8CHK853V/avYZAvuVut3ZTfwN5YtMaoi+X9Y9MA9keaWNHC3zEQ9zvyX/7Hj+5JkNyK1l7TOR2hevHB6Q==,
+ }
+ engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 }
+
+ "@vanilla-extract/babel-plugin-debug-ids@1.2.0":
+ resolution:
+ {
+ integrity: sha512-z5nx2QBnOhvmlmBKeRX5sPVLz437wV30u+GJL+Hzj1rGiJYVNvgIIlzUpRNjVQ0MgAgiQIqIUbqPnmMc6HmDlQ==,
+ }
+
+ "@vanilla-extract/css@1.17.0":
+ resolution:
+ {
+ integrity: sha512-W6FqVFDD+C71ZlKsuj0MxOXSvHb1tvQ9h/+79aYfi097wLsALrnnBzd0by8C///iurrpQ3S+SH74lXd7Lr9MvA==,
+ }
+
+ "@vanilla-extract/integration@6.5.0":
+ resolution:
+ {
+ integrity: sha512-E2YcfO8vA+vs+ua+gpvy1HRqvgWbI+MTlUpxA8FvatOvybuNcWAY0CKwQ/Gpj7rswYKtC6C7+xw33emM6/ImdQ==,
+ }
+
+ "@vanilla-extract/private@1.0.6":
+ resolution:
+ {
+ integrity: sha512-ytsG/JLweEjw7DBuZ/0JCN4WAQgM9erfSTdS1NQY778hFQSZ6cfCDEZZ0sgVm4k54uNz6ImKB33AYvSR//fjxw==,
+ }
+
+ "@vitejs/plugin-react-swc@3.7.2":
+ resolution:
+ {
+ integrity: sha512-y0byko2b2tSVVf5Gpng1eEhX1OvPC7x8yns1Fx8jDzlJp4LS6CMkCPfLw47cjyoMrshQDoQw4qcgjsU9VvlCew==,
+ }
+ peerDependencies:
+ vite: ^4 || ^5 || ^6
+
+ "@web3-storage/multipart-parser@1.0.0":
+ resolution:
+ {
+ integrity: sha512-BEO6al7BYqcnfX15W2cnGR+Q566ACXAT9UQykORCWW80lmkpWsnEob6zJS1ZVBKsSJC8+7vJkHwlp+lXG1UCdw==,
+ }
+
+ "@zxing/text-encoding@0.9.0":
+ resolution:
+ {
+ integrity: sha512-U/4aVJ2mxI0aDNI8Uq0wEhMgY+u4CNtEb0om3+y3+niDAsoTCOB33UF0sxpzqzdqXLqmvc+vZyAt4O8pPdfkwA==,
+ }
+
+ abort-controller@3.0.0:
+ resolution:
+ {
+ integrity: sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==,
+ }
+ engines: { node: ">=6.5" }
+
+ accepts@1.3.8:
+ resolution:
+ {
+ integrity: sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==,
+ }
+ engines: { node: ">= 0.6" }
+
+ acorn-jsx@5.3.2:
+ resolution:
+ {
+ integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==,
+ }
+ peerDependencies:
+ acorn: ^6.0.0 || ^7.0.0 || ^8.0.0
+
+ acorn@8.14.0:
+ resolution:
+ {
+ integrity: sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==,
+ }
+ engines: { node: ">=0.4.0" }
+ hasBin: true
+
+ aggregate-error@3.1.0:
+ resolution:
+ {
+ integrity: sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==,
+ }
+ engines: { node: ">=8" }
+
+ ajv@6.12.6:
+ resolution:
+ {
+ integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==,
+ }
+
+ ansi-regex@5.0.1:
+ resolution:
+ {
+ integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==,
+ }
+ engines: { node: ">=8" }
+
+ ansi-regex@6.1.0:
+ resolution:
+ {
+ integrity: sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==,
+ }
+ engines: { node: ">=12" }
+
+ ansi-styles@4.3.0:
+ resolution:
+ {
+ integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==,
+ }
+ engines: { node: ">=8" }
+
+ ansi-styles@6.2.1:
+ resolution:
+ {
+ integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==,
+ }
+ engines: { node: ">=12" }
+
+ any-promise@1.3.0:
+ resolution:
+ {
+ integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==,
+ }
+
+ anymatch@3.1.3:
+ resolution:
+ {
+ integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==,
+ }
+ engines: { node: ">= 8" }
+
+ arg@5.0.2:
+ resolution:
+ {
+ integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==,
+ }
+
+ argparse@2.0.1:
+ resolution:
+ {
+ integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==,
+ }
+
+ aria-hidden@1.2.4:
+ resolution:
+ {
+ integrity: sha512-y+CcFFwelSXpLZk/7fMB2mUbGtX9lKycf1MWJ7CaTIERyitVlyQx6C+sxcROU2BAJ24OiZyK+8wj2i8AlBoS3A==,
+ }
+ engines: { node: ">=10" }
+
+ aria-query@5.3.2:
+ resolution:
+ {
+ integrity: sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw==,
+ }
+ engines: { node: ">= 0.4" }
+
+ array-buffer-byte-length@1.0.2:
+ resolution:
+ {
+ integrity: sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw==,
+ }
+ engines: { node: ">= 0.4" }
+
+ array-flatten@1.1.1:
+ resolution:
+ {
+ integrity: sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==,
+ }
+
+ array-includes@3.1.8:
+ resolution:
+ {
+ integrity: sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ==,
+ }
+ engines: { node: ">= 0.4" }
+
+ array-union@2.1.0:
+ resolution:
+ {
+ integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==,
+ }
+ engines: { node: ">=8" }
+
+ array.prototype.findlast@1.2.5:
+ resolution:
+ {
+ integrity: sha512-CVvd6FHg1Z3POpBLxO6E6zr+rSKEQ9L6rZHAaY7lLfhKsWYUBBOuMs0e9o24oopj6H+geRCX0YJ+TJLBK2eHyQ==,
+ }
+ engines: { node: ">= 0.4" }
+
+ array.prototype.findlastindex@1.2.5:
+ resolution:
+ {
+ integrity: sha512-zfETvRFA8o7EiNn++N5f/kaCw221hrpGsDmcpndVupkPzEc1Wuf3VgC0qby1BbHs7f5DVYjgtEU2LLh5bqeGfQ==,
+ }
+ engines: { node: ">= 0.4" }
+
+ array.prototype.flat@1.3.3:
+ resolution:
+ {
+ integrity: sha512-rwG/ja1neyLqCuGZ5YYrznA62D4mZXg0i1cIskIUKSiqF3Cje9/wXAls9B9s1Wa2fomMsIv8czB8jZcPmxCXFg==,
+ }
+ engines: { node: ">= 0.4" }
+
+ array.prototype.flatmap@1.3.3:
+ resolution:
+ {
+ integrity: sha512-Y7Wt51eKJSyi80hFrJCePGGNo5ktJCslFuboqJsbf57CCPcm5zztluPlc4/aD8sWsKvlwatezpV4U1efk8kpjg==,
+ }
+ engines: { node: ">= 0.4" }
+
+ array.prototype.tosorted@1.1.4:
+ resolution:
+ {
+ integrity: sha512-p6Fx8B7b7ZhL/gmUsAy0D15WhvDccw3mnGNbZpi3pmeJdxtWsj2jEaI4Y6oo3XiHfzuSgPwKc04MYt6KgvC/wA==,
+ }
+ engines: { node: ">= 0.4" }
+
+ arraybuffer.prototype.slice@1.0.4:
+ resolution:
+ {
+ integrity: sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ==,
+ }
+ engines: { node: ">= 0.4" }
+
+ ast-types-flow@0.0.8:
+ resolution:
+ {
+ integrity: sha512-OH/2E5Fg20h2aPrbe+QL8JZQFko0YZaF+j4mnQ7BGhfavO7OpSLa8a0y9sBwomHdSbkhTS8TQNayBfnW5DwbvQ==,
+ }
+
+ astring@1.9.0:
+ resolution:
+ {
+ integrity: sha512-LElXdjswlqjWrPpJFg1Fx4wpkOCxj1TDHlSV4PlaRxHGWko024xICaa97ZkMfs6DRKlCguiAI+rbXv5GWwXIkg==,
+ }
+ hasBin: true
+
+ autoprefixer@10.4.20:
+ resolution:
+ {
+ integrity: sha512-XY25y5xSv/wEoqzDyXXME4AFfkZI0P23z6Fs3YgymDnKJkCGOnkL0iTxCa85UTqaSgfcqyf3UA6+c7wUvx/16g==,
+ }
+ engines: { node: ^10 || ^12 || >=14 }
+ hasBin: true
+ peerDependencies:
+ postcss: ^8.1.0
+
+ available-typed-arrays@1.0.7:
+ resolution:
+ {
+ integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==,
+ }
+ engines: { node: ">= 0.4" }
+
+ axe-core@4.10.2:
+ resolution:
+ {
+ integrity: sha512-RE3mdQ7P3FRSe7eqCWoeQ/Z9QXrtniSjp1wUjt5nRC3WIpz5rSCve6o3fsZ2aCpJtrZjSZgjwXAoTO5k4tEI0w==,
+ }
+ engines: { node: ">=4" }
+
+ axobject-query@4.1.0:
+ resolution:
+ {
+ integrity: sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==,
+ }
+ engines: { node: ">= 0.4" }
+
+ bail@2.0.2:
+ resolution:
+ {
+ integrity: sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==,
+ }
+
+ balanced-match@1.0.2:
+ resolution:
+ {
+ integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==,
+ }
+
+ base64-js@1.5.1:
+ resolution:
+ {
+ integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==,
+ }
+
+ basic-auth@2.0.1:
+ resolution:
+ {
+ integrity: sha512-NF+epuEdnUYVlGuhaxbbq+dvJttwLnGY+YixlXlME5KpQ5W3CnXA5cVTneY3SPbPDRkcjMbifrwmFYcClgOZeg==,
+ }
+ engines: { node: ">= 0.8" }
+
+ binary-extensions@2.3.0:
+ resolution:
+ {
+ integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==,
+ }
+ engines: { node: ">=8" }
+
+ bl@4.1.0:
+ resolution:
+ {
+ integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==,
+ }
+
+ body-parser@1.20.3:
+ resolution:
+ {
+ integrity: sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g==,
+ }
+ engines: { node: ">= 0.8", npm: 1.2.8000 || >= 1.4.16 }
+
+ brace-expansion@1.1.11:
+ resolution:
+ {
+ integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==,
+ }
+
+ brace-expansion@2.0.1:
+ resolution:
+ {
+ integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==,
+ }
+
+ braces@3.0.3:
+ resolution:
+ {
+ integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==,
+ }
+ engines: { node: ">=8" }
+
+ browserify-zlib@0.1.4:
+ resolution:
+ {
+ integrity: sha512-19OEpq7vWgsH6WkvkBJQDFvJS1uPcbFOQ4v9CU839dO+ZZXUZO6XpE6hNCqvlIIj+4fZvRiJ6DsAQ382GwiyTQ==,
+ }
+
+ browserslist@4.24.3:
+ resolution:
+ {
+ integrity: sha512-1CPmv8iobE2fyRMV97dAcMVegvvWKxmq94hkLiAkUGwKVTyDLw33K+ZxiFrREKmmps4rIw6grcCFCnTMSZ/YiA==,
+ }
+ 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==,
+ }
+
+ bytes@3.1.2:
+ resolution:
+ {
+ integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==,
+ }
+ engines: { node: ">= 0.8" }
+
+ cac@6.7.14:
+ resolution:
+ {
+ integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==,
+ }
+ engines: { node: ">=8" }
+
+ cacache@17.1.4:
+ resolution:
+ {
+ integrity: sha512-/aJwG2l3ZMJ1xNAnqbMpA40of9dj/pIH3QfiuQSqjfPJF747VR0J/bHn+/KdNnHKc6XQcWt/AfRSBft82W1d2A==,
+ }
+ engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 }
+
+ call-bind-apply-helpers@1.0.1:
+ resolution:
+ {
+ integrity: sha512-BhYE+WDaywFg2TBWYNXAE+8B1ATnThNBqXHP5nQu0jWJdVvY2hvkpyB3qOmtmDePiS5/BDQ8wASEWGMWRG148g==,
+ }
+ engines: { node: ">= 0.4" }
+
+ call-bind@1.0.8:
+ resolution:
+ {
+ integrity: sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==,
+ }
+ engines: { node: ">= 0.4" }
+
+ call-bound@1.0.3:
+ resolution:
+ {
+ integrity: sha512-YTd+6wGlNlPxSuri7Y6X8tY2dmm12UMH66RpKMhiX6rsk5wXXnYgbUcOt8kiS31/AjfoTOvCsE+w8nZQLQnzHA==,
+ }
+ engines: { node: ">= 0.4" }
+
+ callsites@3.1.0:
+ resolution:
+ {
+ integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==,
+ }
+ engines: { node: ">=6" }
+
+ camelcase-css@2.0.1:
+ resolution:
+ {
+ integrity: sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==,
+ }
+ engines: { node: ">= 6" }
+
+ caniuse-lite@1.0.30001690:
+ resolution:
+ {
+ integrity: sha512-5ExiE3qQN6oF8Clf8ifIDcMRCRE/dMGcETG/XGMD8/XiXm6HXQgQTh1yZYLXXpSOsEUlJm1Xr7kGULZTuGtP/w==,
+ }
+
+ ccount@2.0.1:
+ resolution:
+ {
+ integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==,
+ }
+
+ chalk@4.1.2:
+ resolution:
+ {
+ integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==,
+ }
+ engines: { node: ">=10" }
+
+ character-entities-html4@2.1.0:
+ resolution:
+ {
+ integrity: sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==,
+ }
+
+ character-entities-legacy@3.0.0:
+ resolution:
+ {
+ integrity: sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==,
+ }
+
+ character-entities@2.0.2:
+ resolution:
+ {
+ integrity: sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==,
+ }
+
+ character-reference-invalid@2.0.1:
+ resolution:
+ {
+ integrity: sha512-iBZ4F4wRbyORVsu0jPV7gXkOsGYjGHPmAyv+HiHG8gi5PtC9KI2j1+v8/tlibRvjoWX027ypmG/n0HtO5t7unw==,
+ }
+
+ 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==,
+ }
+
+ classnames@2.5.1:
+ resolution:
+ {
+ integrity: sha512-saHYOzhIQs6wy2sVxTM6bUDsQO4F50V9RQ22qBpEdCW+I+/Wmke2HOl6lS6dTpdxVhb88/I6+Hs+438c3lfUow==,
+ }
+
+ clean-stack@2.2.0:
+ resolution:
+ {
+ integrity: sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==,
+ }
+ engines: { node: ">=6" }
+
+ cli-cursor@3.1.0:
+ resolution:
+ {
+ integrity: sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==,
+ }
+ engines: { node: ">=8" }
+
+ cli-spinners@2.9.2:
+ resolution:
+ {
+ integrity: sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==,
+ }
+ engines: { node: ">=6" }
+
+ clone@1.0.4:
+ resolution:
+ {
+ integrity: sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==,
+ }
+ engines: { node: ">=0.8" }
+
+ clsx@2.1.1:
+ resolution:
+ {
+ integrity: sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==,
+ }
+ engines: { node: ">=6" }
+
+ color-convert@2.0.1:
+ resolution:
+ {
+ integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==,
+ }
+ engines: { node: ">=7.0.0" }
+
+ color-name@1.1.4:
+ resolution:
+ {
+ integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==,
+ }
+
+ comma-separated-tokens@2.0.3:
+ resolution:
+ {
+ integrity: sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==,
+ }
+
+ commander@4.1.1:
+ resolution:
+ {
+ integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==,
+ }
+ engines: { node: ">= 6" }
+
+ compressible@2.0.18:
+ resolution:
+ {
+ integrity: sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==,
+ }
+ engines: { node: ">= 0.6" }
+
+ compression@1.7.5:
+ resolution:
+ {
+ integrity: sha512-bQJ0YRck5ak3LgtnpKkiabX5pNF7tMUh1BSy2ZBOTh0Dim0BUu6aPPwByIns6/A5Prh8PufSPerMDUklpzes2Q==,
+ }
+ engines: { node: ">= 0.8.0" }
+
+ concat-map@0.0.1:
+ resolution:
+ {
+ integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==,
+ }
+
+ confbox@0.1.8:
+ resolution:
+ {
+ integrity: sha512-RMtmw0iFkeR4YV+fUOSucriAQNb9g8zFR52MWCtl+cCZOFRNL6zeB395vPzFhEjjn4fMxXudmELnl/KF/WrK6w==,
+ }
+
+ content-disposition@0.5.4:
+ resolution:
+ {
+ integrity: sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==,
+ }
+ engines: { node: ">= 0.6" }
+
+ content-type@1.0.5:
+ resolution:
+ {
+ integrity: sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==,
+ }
+ engines: { node: ">= 0.6" }
+
+ convert-source-map@2.0.0:
+ resolution:
+ {
+ integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==,
+ }
+
+ cookie-signature@1.0.6:
+ resolution:
+ {
+ integrity: sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==,
+ }
+
+ cookie-signature@1.2.2:
+ resolution:
+ {
+ integrity: sha512-D76uU73ulSXrD1UXF4KE2TMxVVwhsnCgfAyTg9k8P6KGZjlXKrOLe4dJQKI3Bxi5wjesZoFXJWElNWBjPZMbhg==,
+ }
+ engines: { node: ">=6.6.0" }
+
+ cookie@0.6.0:
+ resolution:
+ {
+ integrity: sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==,
+ }
+ engines: { node: ">= 0.6" }
+
+ cookie@0.7.1:
+ resolution:
+ {
+ integrity: sha512-6DnInpx7SJ2AK3+CTUE/ZM0vWTUboZCegxhC2xiIydHR9jNuTAASBrfEpHhiGOZw/nX51bHt6YQl8jsGo4y/0w==,
+ }
+ engines: { node: ">= 0.6" }
+
+ core-util-is@1.0.3:
+ resolution:
+ {
+ integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==,
+ }
+
+ cross-spawn@7.0.6:
+ resolution:
+ {
+ integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==,
+ }
+ engines: { node: ">= 8" }
+
+ css-what@6.1.0:
+ resolution:
+ {
+ integrity: sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==,
+ }
+ engines: { node: ">= 6" }
+
+ cssesc@3.0.0:
+ resolution:
+ {
+ integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==,
+ }
+ engines: { node: ">=4" }
+ hasBin: true
+
+ csstype@3.1.3:
+ resolution:
+ {
+ integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==,
+ }
+
+ damerau-levenshtein@1.0.8:
+ resolution:
+ {
+ integrity: sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==,
+ }
+
+ data-uri-to-buffer@3.0.1:
+ resolution:
+ {
+ integrity: sha512-WboRycPNsVw3B3TL559F7kuBUM4d8CgMEvk6xEJlOp7OBPjt6G7z8WMWlD2rOFZLk6OYfFIUGsCOWzcQH9K2og==,
+ }
+ engines: { node: ">= 6" }
+
+ data-view-buffer@1.0.2:
+ resolution:
+ {
+ integrity: sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ==,
+ }
+ engines: { node: ">= 0.4" }
+
+ data-view-byte-length@1.0.2:
+ resolution:
+ {
+ integrity: sha512-tuhGbE6CfTM9+5ANGf+oQb72Ky/0+s3xKUpHvShfiz2RxMFgFPjsXuRLBVMtvMs15awe45SRb83D6wH4ew6wlQ==,
+ }
+ engines: { node: ">= 0.4" }
+
+ data-view-byte-offset@1.0.1:
+ resolution:
+ {
+ integrity: sha512-BS8PfmtDGnrgYdOonGZQdLZslWIeCGFP9tpan0hi1Co2Zr2NKADsvGYA8XxuG/4UWgJ6Cjtv+YJnB6MM69QGlQ==,
+ }
+ engines: { node: ">= 0.4" }
+
+ dayjs@1.11.13:
+ resolution:
+ {
+ integrity: sha512-oaMBel6gjolK862uaPQOVTA7q3TZhuSvuMQAAglQDOWYO9A91IrAOUJEyKVlqJlHE0vq5p5UXxzdPfMH/x6xNg==,
+ }
+
+ debug@2.6.9:
+ resolution:
+ {
+ integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==,
+ }
+ peerDependencies:
+ supports-color: "*"
+ peerDependenciesMeta:
+ supports-color:
+ optional: true
+
+ debug@3.2.7:
+ resolution:
+ {
+ integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==,
+ }
+ peerDependencies:
+ supports-color: "*"
+ peerDependenciesMeta:
+ supports-color:
+ optional: true
+
+ debug@4.4.0:
+ resolution:
+ {
+ integrity: sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==,
+ }
+ engines: { node: ">=6.0" }
+ peerDependencies:
+ supports-color: "*"
+ peerDependenciesMeta:
+ supports-color:
+ optional: true
+
+ decode-named-character-reference@1.0.2:
+ resolution:
+ {
+ integrity: sha512-O8x12RzrUF8xyVcY0KJowWsmaJxQbmy0/EtnNtHRpsOcT7dFk5W598coHqBVpmWo1oQQfsCqfCmkZN5DJrZVdg==,
+ }
+
+ dedent@1.5.3:
+ resolution:
+ {
+ integrity: sha512-NHQtfOOW68WD8lgypbLA5oT+Bt0xXJhiYvoR6SmmNXZfpzOGXwdKWmcwG8N7PwVVWV3eF/68nmD9BaJSsTBhyQ==,
+ }
+ peerDependencies:
+ babel-plugin-macros: ^3.1.0
+ peerDependenciesMeta:
+ babel-plugin-macros:
+ optional: true
+
+ deep-is@0.1.4:
+ resolution:
+ {
+ integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==,
+ }
+
+ deep-object-diff@1.1.9:
+ resolution:
+ {
+ integrity: sha512-Rn+RuwkmkDwCi2/oXOFS9Gsr5lJZu/yTGpK7wAaAIE75CC+LCGEZHpY6VQJa/RoJcrmaA/docWJZvYohlNkWPA==,
+ }
+
+ deepmerge@4.3.1:
+ resolution:
+ {
+ integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==,
+ }
+ engines: { node: ">=0.10.0" }
+
+ defaults@1.0.4:
+ resolution:
+ {
+ integrity: sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==,
+ }
+
+ define-data-property@1.1.4:
+ resolution:
+ {
+ integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==,
+ }
+ engines: { node: ">= 0.4" }
+
+ define-properties@1.2.1:
+ resolution:
+ {
+ integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==,
+ }
+ engines: { node: ">= 0.4" }
+
+ depd@2.0.0:
+ resolution:
+ {
+ integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==,
+ }
+ engines: { node: ">= 0.8" }
+
+ dequal@2.0.3:
+ resolution:
+ {
+ integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==,
+ }
+ engines: { node: ">=6" }
+
+ destroy@1.2.0:
+ resolution:
+ {
+ integrity: sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==,
+ }
+ engines: { node: ">= 0.8", npm: 1.2.8000 || >= 1.4.16 }
+
+ detect-node-es@1.1.0:
+ resolution:
+ {
+ integrity: sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ==,
+ }
+
+ didyoumean@1.2.2:
+ resolution:
+ {
+ integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==,
+ }
+
+ diff@5.2.0:
+ resolution:
+ {
+ integrity: sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A==,
+ }
+ engines: { node: ">=0.3.1" }
+
+ dir-glob@3.0.1:
+ resolution:
+ {
+ integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==,
+ }
+ engines: { node: ">=8" }
+
+ dlv@1.1.3:
+ resolution:
+ {
+ integrity: sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==,
+ }
+
+ doctrine@2.1.0:
+ resolution:
+ {
+ integrity: sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==,
+ }
+ engines: { node: ">=0.10.0" }
+
+ dotenv@16.4.7:
+ resolution:
+ {
+ integrity: sha512-47qPchRCykZC03FhkYAhrvwU4xDBFIj1QPqaarj6mdM/hgUzfPHcpkHJOn3mJAufFeeAxAzeGsr5X0M4k6fLZQ==,
+ }
+ engines: { node: ">=12" }
+
+ dunder-proto@1.0.1:
+ resolution:
+ {
+ integrity: sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==,
+ }
+ engines: { node: ">= 0.4" }
+
+ duplexify@3.7.1:
+ resolution:
+ {
+ integrity: sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==,
+ }
+
+ eastasianwidth@0.2.0:
+ resolution:
+ {
+ integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==,
+ }
+
+ ee-first@1.1.1:
+ resolution:
+ {
+ integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==,
+ }
+
+ electron-to-chromium@1.5.78:
+ resolution:
+ {
+ integrity: sha512-UmwIt7HRKN1rsJfddG5UG7rCTCTAKoS9JeOy/R0zSenAyaZ8SU3RuXlwcratxhdxGRNpk03iq8O7BA3W7ibLVw==,
+ }
+
+ emoji-regex@8.0.0:
+ resolution:
+ {
+ integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==,
+ }
+
+ emoji-regex@9.2.2:
+ resolution:
+ {
+ integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==,
+ }
+
+ encodeurl@1.0.2:
+ resolution:
+ {
+ integrity: sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==,
+ }
+ engines: { node: ">= 0.8" }
+
+ encodeurl@2.0.0:
+ resolution:
+ {
+ integrity: sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==,
+ }
+ engines: { node: ">= 0.8" }
+
+ end-of-stream@1.4.4:
+ resolution:
+ {
+ integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==,
+ }
+
+ enhanced-resolve@5.18.0:
+ resolution:
+ {
+ integrity: sha512-0/r0MySGYG8YqlayBZ6MuCfECmHFdJ5qyPh8s8wa5Hnm6SaFLSK1VYCbj+NKp090Nm1caZhD+QTnmxO7esYGyQ==,
+ }
+ engines: { node: ">=10.13.0" }
+
+ err-code@2.0.3:
+ resolution:
+ {
+ integrity: sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==,
+ }
+
+ es-abstract@1.23.9:
+ resolution:
+ {
+ integrity: sha512-py07lI0wjxAC/DcfK1S6G7iANonniZwTISvdPzk9hzeH0IZIshbuuFxLIU96OyF89Yb9hiqWn8M/bY83KY5vzA==,
+ }
+ engines: { node: ">= 0.4" }
+
+ es-define-property@1.0.1:
+ resolution:
+ {
+ integrity: sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==,
+ }
+ engines: { node: ">= 0.4" }
+
+ es-errors@1.3.0:
+ resolution:
+ {
+ integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==,
+ }
+ engines: { node: ">= 0.4" }
+
+ es-iterator-helpers@1.2.1:
+ resolution:
+ {
+ integrity: sha512-uDn+FE1yrDzyC0pCo961B2IHbdM8y/ACZsKD4dG6WqrjV53BADjwa7D+1aom2rsNVfLyDgU/eigvlJGJ08OQ4w==,
+ }
+ engines: { node: ">= 0.4" }
+
+ es-module-lexer@1.6.0:
+ resolution:
+ {
+ integrity: sha512-qqnD1yMU6tk/jnaMosogGySTZP8YtUgAffA9nMN+E/rjxcfRQ6IEk7IiozUjgxKoFHBGjTLnrHB/YC45r/59EQ==,
+ }
+
+ es-object-atoms@1.0.0:
+ resolution:
+ {
+ integrity: sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==,
+ }
+ engines: { node: ">= 0.4" }
+
+ es-set-tostringtag@2.1.0:
+ resolution:
+ {
+ integrity: sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==,
+ }
+ engines: { node: ">= 0.4" }
+
+ es-shim-unscopables@1.0.2:
+ resolution:
+ {
+ integrity: sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==,
+ }
+
+ es-to-primitive@1.3.0:
+ resolution:
+ {
+ integrity: sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g==,
+ }
+ engines: { node: ">= 0.4" }
+
+ esbuild-plugins-node-modules-polyfill@1.6.8:
+ resolution:
+ {
+ integrity: sha512-bRB4qbgUDWrdY1eMk123KiaCSW9VzQ+QLZrmU7D//cCFkmksPd9mUMpmWoFK/rxjIeTfTSOpKCoGoimlvI+AWw==,
+ }
+ engines: { node: ">=14.0.0" }
+ peerDependencies:
+ esbuild: ">=0.14.0 <=0.24.x"
+
+ esbuild@0.17.6:
+ resolution:
+ {
+ integrity: sha512-TKFRp9TxrJDdRWfSsSERKEovm6v30iHnrjlcGhLBOtReE28Yp1VSBRfO3GTaOFMoxsNerx4TjrhzSuma9ha83Q==,
+ }
+ engines: { node: ">=12" }
+ hasBin: true
+
+ esbuild@0.21.5:
+ resolution:
+ {
+ integrity: sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==,
+ }
+ engines: { node: ">=12" }
+ hasBin: true
+
+ esbuild@0.24.2:
+ resolution:
+ {
+ integrity: sha512-+9egpBW8I3CD5XPe0n6BfT5fxLzxrlDzqydF3aviG+9ni1lDC/OvMHcxqEFV0+LANZG5R1bFMWfUrjVsdwxJvA==,
+ }
+ engines: { node: ">=18" }
+ hasBin: true
+
+ escalade@3.2.0:
+ resolution:
+ {
+ integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==,
+ }
+ engines: { node: ">=6" }
+
+ escape-html@1.0.3:
+ resolution:
+ {
+ integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==,
+ }
+
+ escape-string-regexp@4.0.0:
+ resolution:
+ {
+ integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==,
+ }
+ engines: { node: ">=10" }
+
+ eslint-import-resolver-node@0.3.9:
+ resolution:
+ {
+ integrity: sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==,
+ }
+
+ eslint-import-resolver-typescript@3.7.0:
+ resolution:
+ {
+ integrity: sha512-Vrwyi8HHxY97K5ebydMtffsWAn1SCR9eol49eCd5fJS4O1WV7PaAjbcjmbfJJSMz/t4Mal212Uz/fQZrOB8mow==,
+ }
+ engines: { node: ^14.18.0 || >=16.0.0 }
+ peerDependencies:
+ eslint: "*"
+ eslint-plugin-import: "*"
+ eslint-plugin-import-x: "*"
+ peerDependenciesMeta:
+ eslint-plugin-import:
+ optional: true
+ eslint-plugin-import-x:
+ optional: true
+
+ eslint-module-utils@2.12.0:
+ resolution:
+ {
+ integrity: sha512-wALZ0HFoytlyh/1+4wuZ9FJCD/leWHQzzrxJ8+rebyReSLk7LApMyd3WJaLVoN+D5+WIdJyDK1c6JnE65V4Zyg==,
+ }
+ engines: { node: ">=4" }
+ peerDependencies:
+ "@typescript-eslint/parser": "*"
+ eslint: "*"
+ eslint-import-resolver-node: "*"
+ eslint-import-resolver-typescript: "*"
+ eslint-import-resolver-webpack: "*"
+ peerDependenciesMeta:
+ "@typescript-eslint/parser":
+ optional: true
+ eslint:
+ optional: true
+ eslint-import-resolver-node:
+ optional: true
+ eslint-import-resolver-typescript:
+ optional: true
+ eslint-import-resolver-webpack:
+ optional: true
+
+ eslint-plugin-import@2.31.0:
+ resolution:
+ {
+ integrity: sha512-ixmkI62Rbc2/w8Vfxyh1jQRTdRTF52VxwRVHl/ykPAmqG+Nb7/kNn+byLP0LxPgI7zWA16Jt82SybJInmMia3A==,
+ }
+ engines: { node: ">=4" }
+ peerDependencies:
+ "@typescript-eslint/parser": "*"
+ eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 || ^9
+ peerDependenciesMeta:
+ "@typescript-eslint/parser":
+ optional: true
+
+ eslint-plugin-jsx-a11y@6.10.2:
+ resolution:
+ {
+ integrity: sha512-scB3nz4WmG75pV8+3eRUQOHZlNSUhFNq37xnpgRkCCELU3XMvXAxLk1eqWWyE22Ki4Q01Fnsw9BA3cJHDPgn2Q==,
+ }
+ engines: { node: ">=4.0" }
+ peerDependencies:
+ eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9
+
+ eslint-plugin-react-hooks@5.1.0:
+ resolution:
+ {
+ integrity: sha512-mpJRtPgHN2tNAvZ35AMfqeB3Xqeo273QxrHJsbBEPWODRM4r0yB6jfoROqKEYrOn27UtRPpcpHc2UqyBSuUNTw==,
+ }
+ engines: { node: ">=10" }
+ peerDependencies:
+ eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 || ^9.0.0
+
+ eslint-plugin-react-refresh@0.4.16:
+ resolution:
+ {
+ integrity: sha512-slterMlxAhov/DZO8NScf6mEeMBBXodFUolijDvrtTxyezyLoTQaa73FyYus/VbTdftd8wBgBxPMRk3poleXNQ==,
+ }
+ peerDependencies:
+ eslint: ">=8.40"
+
+ eslint-plugin-react@7.37.3:
+ resolution:
+ {
+ integrity: sha512-DomWuTQPFYZwF/7c9W2fkKkStqZmBd3uugfqBYLdkZ3Hii23WzZuOLUskGxB8qkSKqftxEeGL1TB2kMhrce0jA==,
+ }
+ engines: { node: ">=4" }
+ peerDependencies:
+ eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9.7
+
+ eslint-scope@8.2.0:
+ resolution:
+ {
+ integrity: sha512-PHlWUfG6lvPc3yvP5A4PNyBL1W8fkDUccmI21JUu/+GKZBoH/W5u6usENXUrWFRsyoW5ACUjFGgAFQp5gUlb/A==,
+ }
+ engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 }
+
+ eslint-visitor-keys@3.4.3:
+ resolution:
+ {
+ integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==,
+ }
+ engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 }
+
+ eslint-visitor-keys@4.2.0:
+ resolution:
+ {
+ integrity: sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==,
+ }
+ engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 }
+
+ eslint@9.17.0:
+ resolution:
+ {
+ integrity: sha512-evtlNcpJg+cZLcnVKwsai8fExnqjGPicK7gnUtlNuzu+Fv9bI0aLpND5T44VLQtoMEnI57LoXO9XAkIXwohKrA==,
+ }
+ engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 }
+ hasBin: true
+ peerDependencies:
+ jiti: "*"
+ peerDependenciesMeta:
+ jiti:
+ optional: true
+
+ espree@10.3.0:
+ resolution:
+ {
+ integrity: sha512-0QYC8b24HWY8zjRnDTL6RiHfDbAWn63qb4LMj1Z4b076A4une81+z03Kg7l7mn/48PUTqoLptSXez8oknU8Clg==,
+ }
+ engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 }
+
+ esquery@1.6.0:
+ resolution:
+ {
+ integrity: sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==,
+ }
+ engines: { node: ">=0.10" }
+
+ esrecurse@4.3.0:
+ resolution:
+ {
+ integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==,
+ }
+ engines: { node: ">=4.0" }
+
+ estraverse@5.3.0:
+ 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-build-jsx@2.2.2:
+ resolution:
+ {
+ integrity: sha512-m56vOXcOBuaF+Igpb9OPAy7f9w9OIkb5yhjsZuaPm7HoGi4oTOQi0h2+yZ+AtKklYFZ+rPC4n0wYCJCEU1ONqg==,
+ }
+
+ 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-to-js@1.2.0:
+ resolution:
+ {
+ integrity: sha512-IzU74r1PK5IMMGZXUVZbmiu4A1uhiPgW5hm1GjcOfr4ZzHaMPpLNJjR7HjXiIOzi25nZDrgFTobHTkV5Q6ITjA==,
+ }
+
+ 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-walker@3.0.3:
+ resolution:
+ {
+ integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==,
+ }
+
+ esutils@2.0.3:
+ resolution:
+ {
+ integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==,
+ }
+ engines: { node: ">=0.10.0" }
+
+ etag@1.8.1:
+ resolution:
+ {
+ integrity: sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==,
+ }
+ engines: { node: ">= 0.6" }
+
+ eval@0.1.8:
+ resolution:
+ {
+ integrity: sha512-EzV94NYKoO09GLXGjXj9JIlXijVck4ONSr5wiCWDvhsvj5jxSrzTmRU/9C1DyB6uToszLs8aifA6NQ7lEQdvFw==,
+ }
+ engines: { node: ">= 0.8" }
+
+ event-target-shim@5.0.1:
+ resolution:
+ {
+ integrity: sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==,
+ }
+ engines: { node: ">=6" }
+
+ execa@5.1.1:
+ resolution:
+ {
+ integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==,
+ }
+ engines: { node: ">=10" }
+
+ exit-hook@2.2.1:
+ resolution:
+ {
+ integrity: sha512-eNTPlAD67BmP31LDINZ3U7HSF8l57TxOY2PmBJ1shpCvpnxBF93mWCE8YHBnXs8qiUZJc9WDcWIeC3a2HIAMfw==,
+ }
+ engines: { node: ">=6" }
+
+ express@4.21.2:
+ resolution:
+ {
+ integrity: sha512-28HqgMZAmih1Czt9ny7qr6ek2qddF4FclbMzwhCREB6OFfH+rXAnuNCwo1/wFvrtbgsQDb4kSbX9de9lFbrXnA==,
+ }
+ engines: { node: ">= 0.10.0" }
+
+ extend@3.0.2:
+ resolution:
+ {
+ integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==,
+ }
+
+ fast-deep-equal@3.1.3:
+ resolution:
+ {
+ integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==,
+ }
+
+ fast-glob@3.3.3:
+ resolution:
+ {
+ integrity: sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==,
+ }
+ engines: { node: ">=8.6.0" }
+
+ fast-json-stable-stringify@2.1.0:
+ resolution:
+ {
+ integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==,
+ }
+
+ fast-levenshtein@2.0.6:
+ resolution:
+ {
+ integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==,
+ }
+
+ fastq@1.18.0:
+ resolution:
+ {
+ integrity: sha512-QKHXPW0hD8g4UET03SdOdunzSouc9N4AuHdsX8XNcTsuz+yYFILVNIX4l9yHABMhiEI9Db0JTTIpu0wB+Y1QQw==,
+ }
+
+ fault@2.0.1:
+ resolution:
+ {
+ integrity: sha512-WtySTkS4OKev5JtpHXnib4Gxiurzh5NCGvWrFaZ34m6JehfTUhKZvn9njTfw48t6JumVQOmrKqpmGcdwxnhqBQ==,
+ }
+
+ file-entry-cache@8.0.0:
+ resolution:
+ {
+ integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==,
+ }
+ engines: { node: ">=16.0.0" }
+
+ fill-range@7.1.1:
+ resolution:
+ {
+ integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==,
+ }
+ engines: { node: ">=8" }
+
+ finalhandler@1.3.1:
+ resolution:
+ {
+ integrity: sha512-6BN9trH7bp3qvnrRyzsBz+g3lZxTNZTbVO2EV1CS0WIcDbawYVdYvGflME/9QP0h0pYlCDBCTjYa9nZzMDpyxQ==,
+ }
+ engines: { node: ">= 0.8" }
+
+ find-up@5.0.0:
+ resolution:
+ {
+ integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==,
+ }
+ engines: { node: ">=10" }
+
+ flat-cache@4.0.1:
+ resolution:
+ {
+ integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==,
+ }
+ engines: { node: ">=16" }
+
+ flatted@3.3.2:
+ resolution:
+ {
+ integrity: sha512-AiwGJM8YcNOaobumgtng+6NHuOqC3A7MixFeDafM3X9cIUM+xUXoS5Vfgf+OihAYe20fxqNM9yPBXJzRtZ/4eA==,
+ }
+
+ for-each@0.3.3:
+ resolution:
+ {
+ integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==,
+ }
+
+ foreground-child@3.3.0:
+ resolution:
+ {
+ integrity: sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg==,
+ }
+ engines: { node: ">=14" }
+
+ format@0.2.2:
+ resolution:
+ {
+ integrity: sha512-wzsgA6WOq+09wrU1tsJ09udeR/YZRaeArL9e1wPbFg3GG2yDnC2ldKpxs4xunpFF9DgqCqOIra3bc1HWrJ37Ww==,
+ }
+ engines: { node: ">=0.4.x" }
+
+ forwarded@0.2.0:
+ resolution:
+ {
+ integrity: sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==,
+ }
+ engines: { node: ">= 0.6" }
+
+ fraction.js@4.3.7:
+ resolution:
+ {
+ integrity: sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==,
+ }
+
+ framer-motion@11.16.0:
+ resolution:
+ {
+ integrity: sha512-oL2AWqLQuw0+CNEUa0sz3mWC/n3i147CckvpQn8bLRs30b+HxTxlRi0YR2FpHHhAbWV7DKjNdHU42KHLfBWh/g==,
+ }
+ peerDependencies:
+ "@emotion/is-prop-valid": "*"
+ react: ^18.0.0 || ^19.0.0
+ react-dom: ^18.0.0 || ^19.0.0
+ peerDependenciesMeta:
+ "@emotion/is-prop-valid":
+ optional: true
+ react:
+ optional: true
+ react-dom:
+ optional: true
+
+ fresh@0.5.2:
+ resolution:
+ {
+ integrity: sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==,
+ }
+ engines: { node: ">= 0.6" }
+
+ fs-constants@1.0.0:
+ resolution:
+ {
+ integrity: sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==,
+ }
+
+ fs-extra@10.1.0:
+ resolution:
+ {
+ integrity: sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==,
+ }
+ engines: { node: ">=12" }
+
+ fs-minipass@2.1.0:
+ resolution:
+ {
+ integrity: sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==,
+ }
+ engines: { node: ">= 8" }
+
+ fs-minipass@3.0.3:
+ resolution:
+ {
+ integrity: sha512-XUBA9XClHbnJWSfBzjkm6RvPsyg3sryZt06BEQoXcF7EK/xpGaQYJgQKDJSUH5SGZ76Y7pFx1QBnXz09rU5Fbw==,
+ }
+ engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 }
+
+ fsevents@2.3.3:
+ resolution:
+ {
+ integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==,
+ }
+ engines: { node: ^8.16.0 || ^10.6.0 || >=11.0.0 }
+ os: [darwin]
+
+ function-bind@1.1.2:
+ resolution:
+ {
+ integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==,
+ }
+
+ function.prototype.name@1.1.8:
+ resolution:
+ {
+ integrity: sha512-e5iwyodOHhbMr/yNrc7fDYG4qlbIvI5gajyzPnb5TCwyhjApznQh1BMFou9b30SevY43gCJKXycoCBjMbsuW0Q==,
+ }
+ engines: { node: ">= 0.4" }
+
+ functions-have-names@1.2.3:
+ resolution:
+ {
+ integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==,
+ }
+
+ generic-names@4.0.0:
+ resolution:
+ {
+ integrity: sha512-ySFolZQfw9FoDb3ed9d80Cm9f0+r7qj+HJkWjeD9RBfpxEVTlVhol+gvaQB/78WbwYfbnNh8nWHHBSlg072y6A==,
+ }
+
+ gensync@1.0.0-beta.2:
+ resolution:
+ {
+ integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==,
+ }
+ engines: { node: ">=6.9.0" }
+
+ get-intrinsic@1.2.7:
+ resolution:
+ {
+ integrity: sha512-VW6Pxhsrk0KAOqs3WEd0klDiF/+V7gQOpAvY1jVU/LHmaD/kQO4523aiJuikX/QAKYiW6x8Jh+RJej1almdtCA==,
+ }
+ engines: { node: ">= 0.4" }
+
+ get-nonce@1.0.1:
+ resolution:
+ {
+ integrity: sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q==,
+ }
+ engines: { node: ">=6" }
+
+ get-port@5.1.1:
+ resolution:
+ {
+ integrity: sha512-g/Q1aTSDOxFpchXC4i8ZWvxA1lnPqx/JHqcpIw0/LX9T8x/GBbi6YnlN5nhaKIFkT8oFsscUKgDJYxfwfS6QsQ==,
+ }
+ engines: { node: ">=8" }
+
+ get-proto@1.0.1:
+ resolution:
+ {
+ integrity: sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==,
+ }
+ engines: { node: ">= 0.4" }
+
+ get-stream@6.0.1:
+ resolution:
+ {
+ integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==,
+ }
+ engines: { node: ">=10" }
+
+ get-symbol-description@1.1.0:
+ resolution:
+ {
+ integrity: sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==,
+ }
+ engines: { node: ">= 0.4" }
+
+ get-tsconfig@4.8.1:
+ resolution:
+ {
+ integrity: sha512-k9PN+cFBmaLWtVz29SkUoqU5O0slLuHJXt/2P+tMVFT+phsSGXGkp9t3rQIqdz0e+06EHNGs3oM6ZX1s2zHxRg==,
+ }
+
+ glob-parent@5.1.2:
+ resolution:
+ {
+ integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==,
+ }
+ engines: { node: ">= 6" }
+
+ glob-parent@6.0.2:
+ resolution:
+ {
+ integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==,
+ }
+ engines: { node: ">=10.13.0" }
+
+ glob@10.4.5:
+ resolution:
+ {
+ integrity: sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==,
+ }
+ hasBin: true
+
+ globals@11.12.0:
+ resolution:
+ {
+ integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==,
+ }
+ engines: { node: ">=4" }
+
+ globals@14.0.0:
+ resolution:
+ {
+ integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==,
+ }
+ engines: { node: ">=18" }
+
+ globals@15.14.0:
+ resolution:
+ {
+ integrity: sha512-OkToC372DtlQeje9/zHIo5CT8lRP/FUgEOKBEhU4e0abL7J7CD24fD9ohiLN5hagG/kWCYj4K5oaxxtj2Z0Dig==,
+ }
+ engines: { node: ">=18" }
+
+ globalthis@1.0.4:
+ resolution:
+ {
+ integrity: sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==,
+ }
+ engines: { node: ">= 0.4" }
+
+ globby@11.1.0:
+ resolution:
+ {
+ integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==,
+ }
+ engines: { node: ">=10" }
+
+ globrex@0.1.2:
+ resolution:
+ {
+ integrity: sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==,
+ }
+
+ gopd@1.2.0:
+ resolution:
+ {
+ integrity: sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==,
+ }
+ engines: { node: ">= 0.4" }
+
+ graceful-fs@4.2.11:
+ resolution:
+ {
+ integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==,
+ }
+
+ graphemer@1.4.0:
+ resolution:
+ {
+ integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==,
+ }
+
+ gunzip-maybe@1.4.2:
+ resolution:
+ {
+ integrity: sha512-4haO1M4mLO91PW57BMsDFf75UmwoRX0GkdD+Faw+Lr+r/OZrOCS0pIBwOL1xCKQqnQzbNFGgK2V2CpBUPeFNTw==,
+ }
+ hasBin: true
+
+ has-bigints@1.1.0:
+ resolution:
+ {
+ integrity: sha512-R3pbpkcIqv2Pm3dUwgjclDRVmWpTJW2DcMzcIhEXEx1oh/CEMObMm3KLmRJOdvhM7o4uQBnwr8pzRK2sJWIqfg==,
+ }
+ engines: { node: ">= 0.4" }
+
+ has-flag@4.0.0:
+ resolution:
+ {
+ integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==,
+ }
+ engines: { node: ">=8" }
+
+ has-property-descriptors@1.0.2:
+ resolution:
+ {
+ integrity: sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==,
+ }
+
+ has-proto@1.2.0:
+ resolution:
+ {
+ integrity: sha512-KIL7eQPfHQRC8+XluaIw7BHUwwqL19bQn4hzNgdr+1wXoU0KKj6rufu47lhY7KbJR2C6T6+PfyN0Ea7wkSS+qQ==,
+ }
+ engines: { node: ">= 0.4" }
+
+ has-symbols@1.1.0:
+ resolution:
+ {
+ integrity: sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==,
+ }
+ engines: { node: ">= 0.4" }
+
+ has-tostringtag@1.0.2:
+ resolution:
+ {
+ integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==,
+ }
+ engines: { node: ">= 0.4" }
+
+ hasown@2.0.2:
+ resolution:
+ {
+ integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==,
+ }
+ engines: { node: ">= 0.4" }
+
+ hast-util-to-estree@2.3.3:
+ resolution:
+ {
+ integrity: sha512-ihhPIUPxN0v0w6M5+IiAZZrn0LH2uZomeWwhn7uP7avZC6TE7lIiEh2yBMPr5+zi1aUCXq6VoYRgs2Bw9xmycQ==,
+ }
+
+ hast-util-whitespace@2.0.1:
+ resolution:
+ {
+ integrity: sha512-nAxA0v8+vXSBDt3AnRUNjyRIQ0rD+ntpbAp4LnPkumc5M9yUbSMa4XDU9Q6etY4f1Wp4bNgvc1yjiZtsTTrSng==,
+ }
+
+ hosted-git-info@6.1.3:
+ resolution:
+ {
+ integrity: sha512-HVJyzUrLIL1c0QmviVh5E8VGyUS7xCFPS6yydaVd1UegW+ibV/CohqTH9MkOLDp5o+rb82DMo77PTuc9F/8GKw==,
+ }
+ engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 }
+
+ howler@2.2.4:
+ resolution:
+ {
+ integrity: sha512-iARIBPgcQrwtEr+tALF+rapJ8qSc+Set2GJQl7xT1MQzWaVkFebdJhR3alVlSiUf5U7nAANKuj3aWpwerocD5w==,
+ }
+
+ http-errors@2.0.0:
+ resolution:
+ {
+ integrity: sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==,
+ }
+ engines: { node: ">= 0.8" }
+
+ human-signals@2.1.0:
+ resolution:
+ {
+ integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==,
+ }
+ engines: { node: ">=10.17.0" }
+
+ iconv-lite@0.4.24:
+ resolution:
+ {
+ integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==,
+ }
+ engines: { node: ">=0.10.0" }
+
+ icss-utils@5.1.0:
+ resolution:
+ {
+ integrity: sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==,
+ }
+ engines: { node: ^10 || ^12 || >= 14 }
+ peerDependencies:
+ postcss: ^8.1.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" }
+
+ import-fresh@3.3.0:
+ resolution:
+ {
+ integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==,
+ }
+ engines: { node: ">=6" }
+
+ imurmurhash@0.1.4:
+ resolution:
+ {
+ integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==,
+ }
+ engines: { node: ">=0.8.19" }
+
+ indent-string@4.0.0:
+ resolution:
+ {
+ integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==,
+ }
+ engines: { node: ">=8" }
+
+ inherits@2.0.4:
+ resolution:
+ {
+ integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==,
+ }
+
+ inline-style-parser@0.1.1:
+ resolution:
+ {
+ integrity: sha512-7NXolsK4CAS5+xvdj5OMMbI962hU/wvwoxk+LWR9Ek9bVtyuuYScDN6eS0rUm6TxApFpw7CX1o4uJzcd4AyD3Q==,
+ }
+
+ internal-slot@1.1.0:
+ resolution:
+ {
+ integrity: sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw==,
+ }
+ engines: { node: ">= 0.4" }
+
+ ipaddr.js@1.9.1:
+ resolution:
+ {
+ integrity: sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==,
+ }
+ engines: { node: ">= 0.10" }
+
+ is-alphabetical@2.0.1:
+ resolution:
+ {
+ integrity: sha512-FWyyY60MeTNyeSRpkM2Iry0G9hpr7/9kD40mD/cGQEuilcZYS4okz8SN2Q6rLCJ8gbCt6fN+rC+6tMGS99LaxQ==,
+ }
+
+ is-alphanumerical@2.0.1:
+ resolution:
+ {
+ integrity: sha512-hmbYhX/9MUMF5uh7tOXyK/n0ZvWpad5caBA17GsC6vyuCqaWliRG5K1qS9inmUhEMaOBIW7/whAnSwveW/LtZw==,
+ }
+
+ is-arguments@1.2.0:
+ resolution:
+ {
+ integrity: sha512-7bVbi0huj/wrIAOzb8U1aszg9kdi3KN/CyU19CTI7tAoZYEZoL9yCDXpbXN+uPsuWnP02cyug1gleqq+TU+YCA==,
+ }
+ engines: { node: ">= 0.4" }
+
+ is-array-buffer@3.0.5:
+ resolution:
+ {
+ integrity: sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A==,
+ }
+ engines: { node: ">= 0.4" }
+
+ is-async-function@2.1.0:
+ resolution:
+ {
+ integrity: sha512-GExz9MtyhlZyXYLxzlJRj5WUCE661zhDa1Yna52CN57AJsymh+DvXXjyveSioqSRdxvUrdKdvqB1b5cVKsNpWQ==,
+ }
+ engines: { node: ">= 0.4" }
+
+ is-bigint@1.1.0:
+ resolution:
+ {
+ integrity: sha512-n4ZT37wG78iz03xPRKJrHTdZbe3IicyucEtdRsV5yglwc3GyUfbAfpSeD0FJ41NbUNSt5wbhqfp1fS+BgnvDFQ==,
+ }
+ engines: { node: ">= 0.4" }
+
+ is-binary-path@2.1.0:
+ resolution:
+ {
+ integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==,
+ }
+ engines: { node: ">=8" }
+
+ is-boolean-object@1.2.1:
+ resolution:
+ {
+ integrity: sha512-l9qO6eFlUETHtuihLcYOaLKByJ1f+N4kthcU9YjHy3N+B3hWv0y/2Nd0mu/7lTFnRQHTrSdXF50HQ3bl5fEnng==,
+ }
+ engines: { node: ">= 0.4" }
+
+ is-buffer@2.0.5:
+ resolution:
+ {
+ integrity: sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==,
+ }
+ engines: { node: ">=4" }
+
+ is-bun-module@1.3.0:
+ resolution:
+ {
+ integrity: sha512-DgXeu5UWI0IsMQundYb5UAOzm6G2eVnarJ0byP6Tm55iZNKceD59LNPA2L4VvsScTtHcw0yEkVwSf7PC+QoLSA==,
+ }
+
+ is-callable@1.2.7:
+ resolution:
+ {
+ integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==,
+ }
+ engines: { node: ">= 0.4" }
+
+ is-core-module@2.16.1:
+ resolution:
+ {
+ integrity: sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==,
+ }
+ engines: { node: ">= 0.4" }
+
+ is-data-view@1.0.2:
+ resolution:
+ {
+ integrity: sha512-RKtWF8pGmS87i2D6gqQu/l7EYRlVdfzemCJN/P3UOs//x1QE7mfhvzHIApBTRf7axvT6DMGwSwBXYCT0nfB9xw==,
+ }
+ engines: { node: ">= 0.4" }
+
+ is-date-object@1.1.0:
+ resolution:
+ {
+ integrity: sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg==,
+ }
+ engines: { node: ">= 0.4" }
+
+ is-decimal@2.0.1:
+ resolution:
+ {
+ integrity: sha512-AAB9hiomQs5DXWcRB1rqsxGUstbRroFOPPVAomNk/3XHR5JyEZChOyTWe2oayKnsSsr/kcGqF+z6yuH6HHpN0A==,
+ }
+
+ is-deflate@1.0.0:
+ resolution:
+ {
+ integrity: sha512-YDoFpuZWu1VRXlsnlYMzKyVRITXj7Ej/V9gXQ2/pAe7X1J7M/RNOqaIYi6qUn+B7nGyB9pDXrv02dsB58d2ZAQ==,
+ }
+
+ is-extglob@2.1.1:
+ resolution:
+ {
+ integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==,
+ }
+ engines: { node: ">=0.10.0" }
+
+ is-finalizationregistry@1.1.1:
+ resolution:
+ {
+ integrity: sha512-1pC6N8qWJbWoPtEjgcL2xyhQOP491EQjeUo3qTKcmV8YSDDJrOepfG8pcC7h/QgnQHYSv0mJ3Z/ZWxmatVrysg==,
+ }
+ engines: { node: ">= 0.4" }
+
+ is-fullwidth-code-point@3.0.0:
+ resolution:
+ {
+ integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==,
+ }
+ engines: { node: ">=8" }
+
+ is-generator-function@1.1.0:
+ resolution:
+ {
+ integrity: sha512-nPUB5km40q9e8UfN/Zc24eLlzdSf9OfKByBw9CIdw4H1giPMeA0OIJvbchsCu4npfI2QcMVBsGEBHKZ7wLTWmQ==,
+ }
+ engines: { node: ">= 0.4" }
+
+ is-glob@4.0.3:
+ resolution:
+ {
+ integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==,
+ }
+ engines: { node: ">=0.10.0" }
+
+ is-gzip@1.0.0:
+ resolution:
+ {
+ integrity: sha512-rcfALRIb1YewtnksfRIHGcIY93QnK8BIQ/2c9yDYcG/Y6+vRoJuTWBmmSEbyLLYtXm7q35pHOHbZFQBaLrhlWQ==,
+ }
+ engines: { node: ">=0.10.0" }
+
+ is-hexadecimal@2.0.1:
+ resolution:
+ {
+ integrity: sha512-DgZQp241c8oO6cA1SbTEWiXeoxV42vlcJxgH+B3hi1AiqqKruZR3ZGF8In3fj4+/y/7rHvlOZLZtgJ/4ttYGZg==,
+ }
+
+ is-interactive@1.0.0:
+ resolution:
+ {
+ integrity: sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==,
+ }
+ engines: { node: ">=8" }
+
+ is-map@2.0.3:
+ resolution:
+ {
+ integrity: sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==,
+ }
+ engines: { node: ">= 0.4" }
+
+ is-number-object@1.1.1:
+ resolution:
+ {
+ integrity: sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw==,
+ }
+ engines: { node: ">= 0.4" }
+
+ is-number@7.0.0:
+ resolution:
+ {
+ integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==,
+ }
+ engines: { node: ">=0.12.0" }
+
+ 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" }
+
+ is-set@2.0.3:
+ resolution:
+ {
+ integrity: sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==,
+ }
+ engines: { node: ">= 0.4" }
+
+ is-shared-array-buffer@1.0.4:
+ resolution:
+ {
+ integrity: sha512-ISWac8drv4ZGfwKl5slpHG9OwPNty4jOWPRIhBpxOoD+hqITiwuipOQ2bNthAzwA3B4fIjO4Nln74N0S9byq8A==,
+ }
+ engines: { node: ">= 0.4" }
+
+ is-stream@2.0.1:
+ resolution:
+ {
+ integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==,
+ }
+ engines: { node: ">=8" }
+
+ is-string@1.1.1:
+ resolution:
+ {
+ integrity: sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA==,
+ }
+ engines: { node: ">= 0.4" }
+
+ is-symbol@1.1.1:
+ resolution:
+ {
+ integrity: sha512-9gGx6GTtCQM73BgmHQXfDmLtfjjTUDSyoxTCbp5WtoixAhfgsDirWIcVQ/IHpvI5Vgd5i/J5F7B9cN/WlVbC/w==,
+ }
+ engines: { node: ">= 0.4" }
+
+ is-typed-array@1.1.15:
+ 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-weakmap@2.0.2:
+ resolution:
+ {
+ integrity: sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==,
+ }
+ engines: { node: ">= 0.4" }
+
+ is-weakref@1.1.0:
+ resolution:
+ {
+ integrity: sha512-SXM8Nwyys6nT5WP6pltOwKytLV7FqQ4UiibxVmW+EIosHcmCqkkjViTb5SNssDlkCiEYRP1/pdWUKVvZBmsR2Q==,
+ }
+ engines: { node: ">= 0.4" }
+
+ is-weakset@2.0.4:
+ resolution:
+ {
+ integrity: sha512-mfcwb6IzQyOKTs84CQMrOwW4gQcaTOAWJ0zzJCl2WSPDrWk/OzDaImWFH3djXhb24g4eudZfLRozAvPGw4d9hQ==,
+ }
+ engines: { node: ">= 0.4" }
+
+ isarray@1.0.0:
+ resolution:
+ {
+ integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==,
+ }
+
+ isarray@2.0.5:
+ resolution:
+ {
+ integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==,
+ }
+
+ isbot@4.4.0:
+ resolution:
+ {
+ integrity: sha512-8ZvOWUA68kyJO4hHJdWjyreq7TYNWTS9y15IzeqVdKxR9pPr3P/3r9AHcoIv9M0Rllkao5qWz2v1lmcyKIVCzQ==,
+ }
+ engines: { node: ">=18" }
+
+ isexe@2.0.0:
+ resolution:
+ {
+ integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==,
+ }
+
+ iterator.prototype@1.1.5:
+ resolution:
+ {
+ integrity: sha512-H0dkQoCa3b2VEeKQBOxFph+JAbcrQdE7KC0UkqwpLmv2EC4P41QXP+rqo9wYodACiG5/WM5s9oDApTU8utwj9g==,
+ }
+ engines: { node: ">= 0.4" }
+
+ jackspeak@3.4.3:
+ resolution:
+ {
+ integrity: sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==,
+ }
+
+ javascript-stringify@2.1.0:
+ resolution:
+ {
+ integrity: sha512-JVAfqNPTvNq3sB/VHQJAFxN/sPgKnsKrCwyRt15zwNCdrMMJDdcEOdubuy+DuJYYdm0ox1J4uzEuYKkN+9yhVg==,
+ }
+
+ jiti@1.21.7:
+ resolution:
+ {
+ integrity: sha512-/imKNG4EbWNrVjoNC/1H5/9GFy+tqjGBHCaSsN+P2RnPqjsLmv6UD3Ej+Kj8nBWaRAwyk7kK5ZUc+OEatnTR3A==,
+ }
+ hasBin: true
+
+ js-tokens@4.0.0:
+ resolution:
+ {
+ integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==,
+ }
+
+ js-yaml@4.1.0:
+ resolution:
+ {
+ integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==,
+ }
+ hasBin: true
+
+ jsesc@3.0.2:
+ resolution:
+ {
+ integrity: sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==,
+ }
+ engines: { node: ">=6" }
+ hasBin: true
+
+ json-buffer@3.0.1:
+ resolution:
+ {
+ integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==,
+ }
+
+ json-parse-even-better-errors@3.0.2:
+ resolution:
+ {
+ integrity: sha512-fi0NG4bPjCHunUJffmLd0gxssIgkNmArMvis4iNah6Owg1MCJjWhEcDLmsK6iGkJq3tHwbDkTlce70/tmXN4cQ==,
+ }
+ engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 }
+
+ json-schema-traverse@0.4.1:
+ resolution:
+ {
+ integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==,
+ }
+
+ json-schema@0.4.0:
+ resolution:
+ {
+ integrity: sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==,
+ }
+
+ json-stable-stringify-without-jsonify@1.0.1:
+ resolution:
+ {
+ integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==,
+ }
+
+ json5@1.0.2:
+ resolution:
+ {
+ integrity: sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==,
+ }
+ hasBin: true
+
+ json5@2.2.3:
+ resolution:
+ {
+ integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==,
+ }
+ engines: { node: ">=6" }
+ hasBin: true
+
+ jsonfile@6.1.0:
+ resolution:
+ {
+ integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==,
+ }
+
+ jsx-ast-utils@3.3.5:
+ resolution:
+ {
+ integrity: sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==,
+ }
+ engines: { node: ">=4.0" }
+
+ keyv@4.5.4:
+ resolution:
+ {
+ integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==,
+ }
+
+ 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==,
+ }
+
+ language-tags@1.0.9:
+ resolution:
+ {
+ integrity: sha512-MbjN408fEndfiQXbFQ1vnd+1NoLDsnQW41410oQBXiyXDMYH5z505juWa4KUE1LqxRC7DgOgZDbKLxHIwm27hA==,
+ }
+ engines: { node: ">=0.10" }
+
+ levn@0.4.1:
+ resolution:
+ {
+ integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==,
+ }
+ engines: { node: ">= 0.8.0" }
+
+ lilconfig@3.1.3:
+ resolution:
+ {
+ integrity: sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw==,
+ }
+ engines: { node: ">=14" }
+
+ lines-and-columns@1.2.4:
+ resolution:
+ {
+ integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==,
+ }
+
+ loader-utils@3.3.1:
+ resolution:
+ {
+ integrity: sha512-FMJTLMXfCLMLfJxcX9PFqX5qD88Z5MRGaZCVzfuqeZSPsyiBzs+pahDQjbIWz2QIzPZz0NX9Zy4FX3lmK6YHIg==,
+ }
+ engines: { node: ">= 12.13.0" }
+
+ local-pkg@0.5.1:
+ resolution:
+ {
+ integrity: sha512-9rrA30MRRP3gBD3HTGnC6cDFpaE1kVDWxWgqWJUN0RvDNAo+Nz/9GxB+nHOH0ifbVFy0hSA1V6vFDvnx54lTEQ==,
+ }
+ engines: { node: ">=14" }
+
+ locate-path@6.0.0:
+ resolution:
+ {
+ integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==,
+ }
+ engines: { node: ">=10" }
+
+ lodash.camelcase@4.3.0:
+ resolution:
+ {
+ integrity: sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==,
+ }
+
+ lodash.debounce@4.0.8:
+ resolution:
+ {
+ integrity: sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==,
+ }
+
+ lodash.merge@4.6.2:
+ resolution:
+ {
+ integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==,
+ }
+
+ lodash@4.17.21:
+ resolution:
+ {
+ integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==,
+ }
+
+ log-symbols@4.1.0:
+ resolution:
+ {
+ integrity: sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==,
+ }
+ engines: { node: ">=10" }
+
+ longest-streak@3.1.0:
+ resolution:
+ {
+ integrity: sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==,
+ }
+
+ loose-envify@1.4.0:
+ resolution:
+ {
+ integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==,
+ }
+ hasBin: true
+
+ lru-cache@10.4.3:
+ resolution:
+ {
+ integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==,
+ }
+
+ lru-cache@5.1.1:
+ resolution:
+ {
+ integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==,
+ }
+
+ lru-cache@7.18.3:
+ resolution:
+ {
+ integrity: sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==,
+ }
+ engines: { node: ">=12" }
+
+ lucide-react@0.469.0:
+ resolution:
+ {
+ integrity: sha512-28vvUnnKQ/dBwiCQtwJw7QauYnE7yd2Cyp4tTTJpvglX4EMpbflcdBgrgToX2j71B3YvugK/NH3BGUk+E/p/Fw==,
+ }
+ peerDependencies:
+ react: ^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0
+
+ markdown-extensions@1.1.1:
+ resolution:
+ {
+ integrity: sha512-WWC0ZuMzCyDHYCasEGs4IPvLyTGftYwh6wIEOULOF0HXcqZlhwRzrK0w2VUlxWA98xnvb/jszw4ZSkJ6ADpM6Q==,
+ }
+ engines: { node: ">=0.10.0" }
+
+ math-intrinsics@1.1.0:
+ 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-from-markdown@1.3.1:
+ resolution:
+ {
+ integrity: sha512-4xTO/M8c82qBcnQc1tgpNtubGUW/Y1tBQ1B0i5CtSoelOLKFYlElIr3bvgREYYO5iRqbMY1YuqZng0GVOI8Qww==,
+ }
+
+ mdast-util-frontmatter@1.0.1:
+ resolution:
+ {
+ integrity: sha512-JjA2OjxRqAa8wEG8hloD0uTU0kdn8kbtOWpPP94NBkfAlbxn4S8gCGf/9DwFtEeGPXrDcNXdiDjVaRdUFqYokw==,
+ }
+
+ mdast-util-mdx-expression@1.3.2:
+ resolution:
+ {
+ integrity: sha512-xIPmR5ReJDu/DHH1OoIT1HkuybIfRGYRywC+gJtI7qHjCJp/M9jrmBEJW22O8lskDWm562BX2W8TiAwRTb0rKA==,
+ }
+
+ mdast-util-mdx-jsx@2.1.4:
+ resolution:
+ {
+ integrity: sha512-DtMn9CmVhVzZx3f+optVDF8yFgQVt7FghCRNdlIaS3X5Bnym3hZwPbg/XW86vdpKjlc1PVj26SpnLGeJBXD3JA==,
+ }
+
+ mdast-util-mdx@2.0.1:
+ resolution:
+ {
+ integrity: sha512-38w5y+r8nyKlGvNjSEqWrhG0w5PmnRA+wnBvm+ulYCct7nsGYhFVb0lljS9bQav4psDAS1eGkP2LMVcZBi/aqw==,
+ }
+
+ mdast-util-mdxjs-esm@1.3.1:
+ resolution:
+ {
+ integrity: sha512-SXqglS0HrEvSdUEfoXFtcg7DRl7S2cwOXc7jkuusG472Mmjag34DUDeOJUZtl+BVnyeO1frIgVpHlNRWc2gk/w==,
+ }
+
+ mdast-util-phrasing@3.0.1:
+ resolution:
+ {
+ integrity: sha512-WmI1gTXUBJo4/ZmSk79Wcb2HcjPJBzM1nlI/OUWA8yk2X9ik3ffNbBGsU+09BFmXaL1IBb9fiuvq6/KMiNycSg==,
+ }
+
+ mdast-util-to-hast@12.3.0:
+ resolution:
+ {
+ integrity: sha512-pits93r8PhnIoU4Vy9bjW39M2jJ6/tdHyja9rrot9uujkN7UTU9SDnE6WNJz/IGyQk3XHX6yNNtrBH6cQzm8Hw==,
+ }
+
+ mdast-util-to-markdown@1.5.0:
+ resolution:
+ {
+ integrity: sha512-bbv7TPv/WC49thZPg3jXuqzuvI45IL2EVAr/KxF0BSdHsU0ceFHOmwQn6evxAh1GaoK/6GQ1wp4R4oW2+LFL/A==,
+ }
+
+ mdast-util-to-string@3.2.0:
+ resolution:
+ {
+ integrity: sha512-V4Zn/ncyN1QNSqSBxTrMOLpjr+IKdHl2v3KVLoWmDPscP4r9GcCi71gjgvUV1SFSKh92AjAG4peFuBl2/YgCJg==,
+ }
+
+ media-query-parser@2.0.2:
+ resolution:
+ {
+ integrity: sha512-1N4qp+jE0pL5Xv4uEcwVUhIkwdUO3S/9gML90nqKA7v7FcOS5vUtatfzok9S9U1EJU8dHWlcv95WLnKmmxZI9w==,
+ }
+
+ media-typer@0.3.0:
+ resolution:
+ {
+ integrity: sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==,
+ }
+ engines: { node: ">= 0.6" }
+
+ merge-descriptors@1.0.3:
+ resolution:
+ {
+ integrity: sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==,
+ }
+
+ merge-stream@2.0.0:
+ resolution:
+ {
+ integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==,
+ }
+
+ merge2@1.4.1:
+ resolution:
+ {
+ integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==,
+ }
+ engines: { node: ">= 8" }
+
+ methods@1.1.2:
+ resolution:
+ {
+ integrity: sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==,
+ }
+ engines: { node: ">= 0.6" }
+
+ micromark-core-commonmark@1.1.0:
+ resolution:
+ {
+ integrity: sha512-BgHO1aRbolh2hcrzL2d1La37V0Aoz73ymF8rAcKnohLy93titmv62E0gP8Hrx9PKcKrqCZ1BbLGbP3bEhoXYlw==,
+ }
+
+ micromark-extension-frontmatter@1.1.1:
+ resolution:
+ {
+ integrity: sha512-m2UH9a7n3W8VAH9JO9y01APpPKmNNNs71P0RbknEmYSaZU5Ghogv38BYO94AI5Xw6OYfxZRdHZZ2nYjs/Z+SZQ==,
+ }
+
+ micromark-extension-mdx-expression@1.0.8:
+ resolution:
+ {
+ integrity: sha512-zZpeQtc5wfWKdzDsHRBY003H2Smg+PUi2REhqgIhdzAa5xonhP03FcXxqFSerFiNUr5AWmHpaNPQTBVOS4lrXw==,
+ }
+
+ micromark-extension-mdx-jsx@1.0.5:
+ resolution:
+ {
+ integrity: sha512-gPH+9ZdmDflbu19Xkb8+gheqEDqkSpdCEubQyxuz/Hn8DOXiXvrXeikOoBA71+e8Pfi0/UYmU3wW3H58kr7akA==,
+ }
+
+ micromark-extension-mdx-md@1.0.1:
+ resolution:
+ {
+ integrity: sha512-7MSuj2S7xjOQXAjjkbjBsHkMtb+mDGVW6uI2dBL9snOBCbZmoNgDAeZ0nSn9j3T42UE/g2xVNMn18PJxZvkBEA==,
+ }
+
+ micromark-extension-mdxjs-esm@1.0.5:
+ resolution:
+ {
+ integrity: sha512-xNRBw4aoURcyz/S69B19WnZAkWJMxHMT5hE36GtDAyhoyn/8TuAeqjFJQlwk+MKQsUD7b3l7kFX+vlfVWgcX1w==,
+ }
+
+ micromark-extension-mdxjs@1.0.1:
+ resolution:
+ {
+ integrity: sha512-7YA7hF6i5eKOfFUzZ+0z6avRG52GpWR8DL+kN47y3f2KhxbBZMhmxe7auOeaTBrW2DenbbZTf1ea9tA2hDpC2Q==,
+ }
+
+ micromark-factory-destination@1.1.0:
+ resolution:
+ {
+ integrity: sha512-XaNDROBgx9SgSChd69pjiGKbV+nfHGDPVYFs5dOoDd7ZnMAE+Cuu91BCpsY8RT2NP9vo/B8pds2VQNCLiu0zhg==,
+ }
+
+ micromark-factory-label@1.1.0:
+ resolution:
+ {
+ integrity: sha512-OLtyez4vZo/1NjxGhcpDSbHQ+m0IIGnT8BoPamh+7jVlzLJBH98zzuCoUeMxvM6WsNeh8wx8cKvqLiPHEACn0w==,
+ }
+
+ micromark-factory-mdx-expression@1.0.9:
+ resolution:
+ {
+ integrity: sha512-jGIWzSmNfdnkJq05c7b0+Wv0Kfz3NJ3N4cBjnbO4zjXIlxJr+f8lk+5ZmwFvqdAbUy2q6B5rCY//g0QAAaXDWA==,
+ }
+
+ micromark-factory-space@1.1.0:
+ resolution:
+ {
+ integrity: sha512-cRzEj7c0OL4Mw2v6nwzttyOZe8XY/Z8G0rzmWQZTBi/jjwyw/U4uqKtUORXQrR5bAZZnbTI/feRV/R7hc4jQYQ==,
+ }
+
+ micromark-factory-title@1.1.0:
+ resolution:
+ {
+ integrity: sha512-J7n9R3vMmgjDOCY8NPw55jiyaQnH5kBdV2/UXCtZIpnHH3P6nHUKaH7XXEYuWwx/xUJcawa8plLBEjMPU24HzQ==,
+ }
+
+ micromark-factory-whitespace@1.1.0:
+ resolution:
+ {
+ integrity: sha512-v2WlmiymVSp5oMg+1Q0N1Lxmt6pMhIHD457whWM7/GUlEks1hI9xj5w3zbc4uuMKXGisksZk8DzP2UyGbGqNsQ==,
+ }
+
+ micromark-util-character@1.2.0:
+ resolution:
+ {
+ integrity: sha512-lXraTwcX3yH/vMDaFWCQJP1uIszLVebzUa3ZHdrgxr7KEU/9mL4mVgCpGbyhvNLNlauROiNUq7WN5u7ndbY6xg==,
+ }
+
+ micromark-util-chunked@1.1.0:
+ resolution:
+ {
+ integrity: sha512-Ye01HXpkZPNcV6FiyoW2fGZDUw4Yc7vT0E9Sad83+bEDiCJ1uXu0S3mr8WLpsz3HaG3x2q0HM6CTuPdcZcluFQ==,
+ }
+
+ micromark-util-classify-character@1.1.0:
+ resolution:
+ {
+ integrity: sha512-SL0wLxtKSnklKSUplok1WQFoGhUdWYKggKUiqhX+Swala+BtptGCu5iPRc+xvzJ4PXE/hwM3FNXsfEVgoZsWbw==,
+ }
+
+ micromark-util-combine-extensions@1.1.0:
+ resolution:
+ {
+ integrity: sha512-Q20sp4mfNf9yEqDL50WwuWZHUrCO4fEyeDCnMGmG5Pr0Cz15Uo7KBs6jq+dq0EgX4DPwwrh9m0X+zPV1ypFvUA==,
+ }
+
+ micromark-util-decode-numeric-character-reference@1.1.0:
+ resolution:
+ {
+ integrity: sha512-m9V0ExGv0jB1OT21mrWcuf4QhP46pH1KkfWy9ZEezqHKAxkj4mPCy3nIH1rkbdMlChLHX531eOrymlwyZIf2iw==,
+ }
+
+ micromark-util-decode-string@1.1.0:
+ resolution:
+ {
+ integrity: sha512-YphLGCK8gM1tG1bd54azwyrQRjCFcmgj2S2GoJDNnh4vYtnL38JS8M4gpxzOPNyHdNEpheyWXCTnnTDY3N+NVQ==,
+ }
+
+ micromark-util-encode@1.1.0:
+ resolution:
+ {
+ integrity: sha512-EuEzTWSTAj9PA5GOAs992GzNh2dGQO52UvAbtSOMvXTxv3Criqb6IOzJUBCmEqrrXSblJIJBbFFv6zPxpreiJw==,
+ }
+
+ micromark-util-events-to-acorn@1.2.3:
+ resolution:
+ {
+ integrity: sha512-ij4X7Wuc4fED6UoLWkmo0xJQhsktfNh1J0m8g4PbIMPlx+ek/4YdW5mvbye8z/aZvAPUoxgXHrwVlXAPKMRp1w==,
+ }
+
+ micromark-util-html-tag-name@1.2.0:
+ resolution:
+ {
+ integrity: sha512-VTQzcuQgFUD7yYztuQFKXT49KghjtETQ+Wv/zUjGSGBioZnkA4P1XXZPT1FHeJA6RwRXSF47yvJ1tsJdoxwO+Q==,
+ }
+
+ micromark-util-normalize-identifier@1.1.0:
+ resolution:
+ {
+ integrity: sha512-N+w5vhqrBihhjdpM8+5Xsxy71QWqGn7HYNUvch71iV2PM7+E3uWGox1Qp90loa1ephtCxG2ftRV/Conitc6P2Q==,
+ }
+
+ micromark-util-resolve-all@1.1.0:
+ resolution:
+ {
+ integrity: sha512-b/G6BTMSg+bX+xVCshPTPyAu2tmA0E4X98NSR7eIbeC6ycCqCeE7wjfDIgzEbkzdEVJXRtOG4FbEm/uGbCRouA==,
+ }
+
+ micromark-util-sanitize-uri@1.2.0:
+ resolution:
+ {
+ integrity: sha512-QO4GXv0XZfWey4pYFndLUKEAktKkG5kZTdUNaTAkzbuJxn2tNBOr+QtxR2XpWaMhbImT2dPzyLrPXLlPhph34A==,
+ }
+
+ micromark-util-subtokenize@1.1.0:
+ resolution:
+ {
+ integrity: sha512-kUQHyzRoxvZO2PuLzMt2P/dwVsTiivCK8icYTeR+3WgbuPqfHgPPy7nFKbeqRivBvn/3N3GBiNC+JRTMSxEC7A==,
+ }
+
+ micromark-util-symbol@1.1.0:
+ resolution:
+ {
+ integrity: sha512-uEjpEYY6KMs1g7QfJ2eX1SQEV+ZT4rUD3UcF6l57acZvLNK7PBZL+ty82Z1qhK1/yXIY4bdx04FKMgR0g4IAag==,
+ }
+
+ micromark-util-types@1.1.0:
+ resolution:
+ {
+ integrity: sha512-ukRBgie8TIAcacscVHSiddHjO4k/q3pnedmzMQ4iwDcK0FtFCohKOlFbaOL/mPgfnPsL3C1ZyxJa4sbWrBl3jg==,
+ }
+
+ micromark@3.2.0:
+ resolution:
+ {
+ integrity: sha512-uD66tJj54JLYq0De10AhWycZWGQNUvDI55xPgk2sQM5kn1JYlhbCMTtEeT27+vAhW2FBQxLlOmS3pmA7/2z4aA==,
+ }
+
+ micromatch@4.0.8:
+ 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-db@1.53.0:
+ resolution:
+ {
+ integrity: sha512-oHlN/w+3MQ3rba9rqFr6V/ypF10LSkdwUysQL7GkXoTgIWeV+tcXGA852TBxH+gsh8UWoyhR1hKcoMJTuWflpg==,
+ }
+ engines: { node: ">= 0.6" }
+
+ mime-types@2.1.35:
+ resolution:
+ {
+ integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==,
+ }
+ engines: { node: ">= 0.6" }
+
+ mime@1.6.0:
+ resolution:
+ {
+ integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==,
+ }
+ engines: { node: ">=4" }
+ hasBin: true
+
+ mimic-fn@2.1.0:
+ resolution:
+ {
+ integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==,
+ }
+ engines: { node: ">=6" }
+
+ minimatch@3.1.2:
+ resolution:
+ {
+ integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==,
+ }
+
+ minimatch@9.0.3:
+ resolution:
+ {
+ integrity: sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==,
+ }
+ engines: { node: ">=16 || 14 >=14.17" }
+
+ minimatch@9.0.5:
+ resolution:
+ {
+ integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==,
+ }
+ engines: { node: ">=16 || 14 >=14.17" }
+
+ minimist@1.2.8:
+ resolution:
+ {
+ integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==,
+ }
+
+ minipass-collect@1.0.2:
+ resolution:
+ {
+ integrity: sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==,
+ }
+ engines: { node: ">= 8" }
+
+ minipass-flush@1.0.5:
+ resolution:
+ {
+ integrity: sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==,
+ }
+ engines: { node: ">= 8" }
+
+ minipass-pipeline@1.2.4:
+ resolution:
+ {
+ integrity: sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==,
+ }
+ engines: { node: ">=8" }
+
+ 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.7.3:
+ resolution:
+ {
+ integrity: sha512-xUsx5n/mN0uQf4V548PKQ+YShA4/IW0KI1dZhrNrPCLG+xizETbHTkOa1f8/xut9JRPp8kQuMnz0oqwkTiLo/A==,
+ }
+
+ modern-ahocorasick@1.1.0:
+ resolution:
+ {
+ integrity: sha512-sEKPVl2rM+MNVkGQt3ChdmD8YsigmXdn5NifZn6jiwn9LRJpWm8F3guhaqrJT/JOat6pwpbXEk6kv+b9DMIjsQ==,
+ }
+
+ morgan@1.10.0:
+ resolution:
+ {
+ integrity: sha512-AbegBVI4sh6El+1gNwvD5YIck7nSA36weD7xvIxG4in80j/UoK8AEGaWnnz8v1GxonMCltmlNs5ZKbGvl9b1XQ==,
+ }
+ engines: { node: ">= 0.8.0" }
+
+ motion-dom@11.16.0:
+ resolution:
+ {
+ integrity: sha512-4bmEwajSdrljzDAYpu6ceEdtI4J5PH25fmN8YSx7Qxk6OMrC10CXM0D5y+VO/pFZjhmCvm2bGf7Rus482kwhzA==,
+ }
+
+ motion-utils@11.16.0:
+ resolution:
+ {
+ integrity: sha512-ngdWPjg31rD4WGXFi0eZ00DQQqKKu04QExyv/ymlC+3k+WIgYVFbt6gS5JsFPbJODTF/r8XiE/X+SsoT9c0ocw==,
+ }
+
+ mri@1.2.0:
+ resolution:
+ {
+ integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==,
+ }
+ engines: { node: ">=4" }
+
+ mrmime@1.0.1:
+ resolution:
+ {
+ integrity: sha512-hzzEagAgDyoU1Q6yg5uI+AorQgdvMCur3FcKf7NhMKWsaYg+RnbTyHRa/9IlLF9rf455MOCtcqqrQQ83pPP7Uw==,
+ }
+ engines: { node: ">=10" }
+
+ ms@2.0.0:
+ resolution:
+ {
+ integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==,
+ }
+
+ ms@2.1.3:
+ resolution:
+ {
+ integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==,
+ }
+
+ mz@2.7.0:
+ resolution:
+ {
+ integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==,
+ }
+
+ nanoid@3.3.8:
+ resolution:
+ {
+ integrity: sha512-WNLf5Sd8oZxOm+TzppcYk8gVOgP+l58xNy58D0nbUnOxOWRWvlcCV4kUF7ltmI6PsrLl/BgKEyS4mqsGChFN0w==,
+ }
+ engines: { node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1 }
+ hasBin: true
+
+ nanoid@5.0.9:
+ resolution:
+ {
+ integrity: sha512-Aooyr6MXU6HpvvWXKoVoXwKMs/KyVakWwg7xQfv5/S/RIgJMy0Ifa45H9qqYy7pTCszrHzP21Uk4PZq2HpEM8Q==,
+ }
+ engines: { node: ^18 || >=20 }
+ hasBin: true
+
+ natural-compare@1.4.0:
+ resolution:
+ {
+ integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==,
+ }
+
+ negotiator@0.6.3:
+ resolution:
+ {
+ integrity: sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==,
+ }
+ engines: { node: ">= 0.6" }
+
+ negotiator@0.6.4:
+ resolution:
+ {
+ integrity: sha512-myRT3DiWPHqho5PrJaIRyaMv2kgYf0mUVgBNOYMuCH5Ki1yEiQaf/ZJuQ62nvpc44wL5WDbTX7yGJi1Neevw8w==,
+ }
+ engines: { node: ">= 0.6" }
+
+ node-releases@2.0.19:
+ resolution:
+ {
+ integrity: sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==,
+ }
+
+ normalize-package-data@5.0.0:
+ resolution:
+ {
+ integrity: sha512-h9iPVIfrVZ9wVYQnxFgtw1ugSvGEMOlyPWWtm8BMJhnwyEL/FLbYbTY3V3PpjI/BUK67n9PEWDu6eHzu1fB15Q==,
+ }
+ engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 }
+
+ normalize-path@3.0.0:
+ resolution:
+ {
+ integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==,
+ }
+ engines: { node: ">=0.10.0" }
+
+ normalize-range@0.1.2:
+ resolution:
+ {
+ integrity: sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==,
+ }
+ engines: { node: ">=0.10.0" }
+
+ npm-install-checks@6.3.0:
+ resolution:
+ {
+ integrity: sha512-W29RiK/xtpCGqn6f3ixfRYGk+zRyr+Ew9F2E20BfXxT5/euLdA/Nm7fO7OeTGuAmTs30cpgInyJ0cYe708YTZw==,
+ }
+ engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 }
+
+ npm-normalize-package-bin@3.0.1:
+ resolution:
+ {
+ integrity: sha512-dMxCf+zZ+3zeQZXKxmyuCKlIDPGuv8EF940xbkC4kQVDTtqoh6rJFO+JTKSA6/Rwi0getWmtuy4Itup0AMcaDQ==,
+ }
+ engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 }
+
+ npm-package-arg@10.1.0:
+ resolution:
+ {
+ integrity: sha512-uFyyCEmgBfZTtrKk/5xDfHp6+MdrqGotX/VoOyEEl3mBwiEE5FlBaePanazJSVMPT7vKepcjYBY2ztg9A3yPIA==,
+ }
+ engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 }
+
+ npm-pick-manifest@8.0.2:
+ resolution:
+ {
+ integrity: sha512-1dKY+86/AIiq1tkKVD3l0WI+Gd3vkknVGAggsFeBkTvbhMQ1OND/LKkYv4JtXPKUJ8bOTCyLiqEg2P6QNdK+Gg==,
+ }
+ engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 }
+
+ npm-run-path@4.0.1:
+ resolution:
+ {
+ integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==,
+ }
+ engines: { node: ">=8" }
+
+ object-assign@4.1.1:
+ resolution:
+ {
+ integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==,
+ }
+ engines: { node: ">=0.10.0" }
+
+ object-hash@3.0.0:
+ resolution:
+ {
+ integrity: sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==,
+ }
+ engines: { node: ">= 6" }
+
+ object-inspect@1.13.3:
+ resolution:
+ {
+ integrity: sha512-kDCGIbxkDSXE3euJZZXzc6to7fCrKHNI/hSRQnRuQ+BWjFNzZwiFF8fj/6o2t2G9/jTj8PSIYTfCLelLZEeRpA==,
+ }
+ engines: { node: ">= 0.4" }
+
+ object-keys@1.1.1:
+ resolution:
+ {
+ integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==,
+ }
+ engines: { node: ">= 0.4" }
+
+ object.assign@4.1.7:
+ resolution:
+ {
+ integrity: sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw==,
+ }
+ engines: { node: ">= 0.4" }
+
+ object.entries@1.1.8:
+ resolution:
+ {
+ integrity: sha512-cmopxi8VwRIAw/fkijJohSfpef5PdN0pMQJN6VC/ZKvn0LIknWD8KtgY6KlQdEc4tIjcQ3HxSMmnvtzIscdaYQ==,
+ }
+ engines: { node: ">= 0.4" }
+
+ object.fromentries@2.0.8:
+ resolution:
+ {
+ integrity: sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==,
+ }
+ engines: { node: ">= 0.4" }
+
+ object.groupby@1.0.3:
+ resolution:
+ {
+ integrity: sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ==,
+ }
+ engines: { node: ">= 0.4" }
+
+ object.values@1.2.1:
+ resolution:
+ {
+ integrity: sha512-gXah6aZrcUxjWg2zR2MwouP2eHlCBzdV4pygudehaKXSGW4v2AsRQUK+lwwXhii6KFZcunEnmSUoYp5CXibxtA==,
+ }
+ engines: { node: ">= 0.4" }
+
+ on-finished@2.3.0:
+ resolution:
+ {
+ integrity: sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==,
+ }
+ engines: { node: ">= 0.8" }
+
+ on-finished@2.4.1:
+ resolution:
+ {
+ integrity: sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==,
+ }
+ engines: { node: ">= 0.8" }
+
+ on-headers@1.0.2:
+ resolution:
+ {
+ integrity: sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==,
+ }
+ engines: { node: ">= 0.8" }
+
+ once@1.4.0:
+ resolution:
+ {
+ integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==,
+ }
+
+ onetime@5.1.2:
+ resolution:
+ {
+ integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==,
+ }
+ engines: { node: ">=6" }
+
+ optionator@0.9.4:
+ resolution:
+ {
+ integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==,
+ }
+ engines: { node: ">= 0.8.0" }
+
+ ora@5.4.1:
+ resolution:
+ {
+ integrity: sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==,
+ }
+ engines: { node: ">=10" }
+
+ outdent@0.8.0:
+ resolution:
+ {
+ integrity: sha512-KiOAIsdpUTcAXuykya5fnVVT+/5uS0Q1mrkRHcF89tpieSmY33O/tmc54CqwA+bfhbtEfZUNLHaPUiB9X3jt1A==,
+ }
+
+ own-keys@1.0.1:
+ resolution:
+ {
+ integrity: sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg==,
+ }
+ engines: { node: ">= 0.4" }
+
+ p-limit@3.1.0:
+ resolution:
+ {
+ integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==,
+ }
+ engines: { node: ">=10" }
+
+ p-locate@5.0.0:
+ resolution:
+ {
+ integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==,
+ }
+ engines: { node: ">=10" }
+
+ p-map@4.0.0:
+ resolution:
+ {
+ integrity: sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==,
+ }
+ engines: { node: ">=10" }
+
+ package-json-from-dist@1.0.1:
+ resolution:
+ {
+ integrity: sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==,
+ }
+
+ pako@0.2.9:
+ resolution:
+ {
+ integrity: sha512-NUcwaKxUxWrZLpDG+z/xZaCgQITkA/Dv4V/T6bw7VON6l1Xz/VnrBqrYjZQ12TamKHzITTfOEIYUj48y2KXImA==,
+ }
+
+ parent-module@1.0.1:
+ resolution:
+ {
+ integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==,
+ }
+ engines: { node: ">=6" }
+
+ parse-entities@4.0.2:
+ resolution:
+ {
+ integrity: sha512-GG2AQYWoLgL877gQIKeRPGO1xF9+eG1ujIb5soS5gPvLQ1y2o8FL90w2QWNdf9I361Mpp7726c+lj3U0qK1uGw==,
+ }
+
+ parse-ms@2.1.0:
+ resolution:
+ {
+ integrity: sha512-kHt7kzLoS9VBZfUsiKjv43mr91ea+U05EyKkEtqp7vNbHxmaVuEqN7XxeEVnGrMtYOAxGrDElSi96K7EgO1zCA==,
+ }
+ engines: { node: ">=6" }
+
+ parseurl@1.3.3:
+ resolution:
+ {
+ integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==,
+ }
+ engines: { node: ">= 0.8" }
+
+ path-exists@4.0.0:
+ resolution:
+ {
+ integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==,
+ }
+ engines: { node: ">=8" }
+
+ path-key@3.1.1:
+ resolution:
+ {
+ integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==,
+ }
+ engines: { node: ">=8" }
+
+ path-parse@1.0.7:
+ resolution:
+ {
+ integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==,
+ }
+
+ path-scurry@1.11.1:
+ resolution:
+ {
+ integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==,
+ }
+ engines: { node: ">=16 || 14 >=14.18" }
+
+ path-to-regexp@0.1.12:
+ resolution:
+ {
+ integrity: sha512-RA1GjUVMnvYFxuqovrEqZoxxW5NUZqbwKtYz/Tt7nXerk0LbLblQmrsgdeOxV5SFHf0UDggjS/bSeOZwt1pmEQ==,
+ }
+
+ path-type@4.0.0:
+ resolution:
+ {
+ integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==,
+ }
+ engines: { node: ">=8" }
+
+ pathe@1.1.2:
+ resolution:
+ {
+ integrity: sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==,
+ }
+
+ peek-stream@1.1.3:
+ resolution:
+ {
+ integrity: sha512-FhJ+YbOSBb9/rIl2ZeE/QHEsWn7PqNYt8ARAY3kIgNGOk13g9FGyIY6JIl/xB/3TFRVoTv5as0l11weORrTekA==,
+ }
+
+ periscopic@3.1.0:
+ resolution:
+ {
+ integrity: sha512-vKiQ8RRtkl9P+r/+oefh25C3fhybptkHKCZSPlcXiJux2tJF55GnEj3BVn4A5gKfq9NWWXXrxkHBwVPUfH0opw==,
+ }
+
+ picocolors@1.1.1:
+ resolution:
+ {
+ integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==,
+ }
+
+ picomatch@2.3.1:
+ resolution:
+ {
+ integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==,
+ }
+ engines: { node: ">=8.6" }
+
+ pidtree@0.6.0:
+ resolution:
+ {
+ integrity: sha512-eG2dWTVw5bzqGRztnHExczNxt5VGsE6OwTeCG3fdUf9KBsZzO3R5OIIIzWR+iZA0NtZ+RDVdaoE2dK1cn6jH4g==,
+ }
+ engines: { node: ">=0.10" }
+ hasBin: true
+
+ pify@2.3.0:
+ resolution:
+ {
+ integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==,
+ }
+ engines: { node: ">=0.10.0" }
+
+ pirates@4.0.6:
+ resolution:
+ {
+ integrity: sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==,
+ }
+ engines: { node: ">= 6" }
+
+ pkg-types@1.3.0:
+ resolution:
+ {
+ integrity: sha512-kS7yWjVFCkIw9hqdJBoMxDdzEngmkr5FXeWZZfQ6GoYacjVnsW6l2CcYW/0ThD0vF4LPJgVYnrg4d0uuhwYQbg==,
+ }
+
+ possible-typed-array-names@1.0.0:
+ resolution:
+ {
+ integrity: sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==,
+ }
+ engines: { node: ">= 0.4" }
+
+ postcss-discard-duplicates@5.1.0:
+ resolution:
+ {
+ integrity: sha512-zmX3IoSI2aoenxHV6C7plngHWWhUOV3sP1T8y2ifzxzbtnuhk1EdPwm0S1bIUNaJ2eNbWeGLEwzw8huPD67aQw==,
+ }
+ engines: { node: ^10 || ^12 || >=14.0 }
+ peerDependencies:
+ postcss: ^8.2.15
+
+ postcss-import@15.1.0:
+ resolution:
+ {
+ integrity: sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==,
+ }
+ engines: { node: ">=14.0.0" }
+ peerDependencies:
+ postcss: ^8.0.0
+
+ postcss-js@4.0.1:
+ resolution:
+ {
+ integrity: sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==,
+ }
+ engines: { node: ^12 || ^14 || >= 16 }
+ peerDependencies:
+ postcss: ^8.4.21
+
+ postcss-load-config@4.0.2:
+ resolution:
+ {
+ integrity: sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ==,
+ }
+ engines: { node: ">= 14" }
+ peerDependencies:
+ postcss: ">=8.0.9"
+ ts-node: ">=9.0.0"
+ peerDependenciesMeta:
+ postcss:
+ optional: true
+ ts-node:
+ optional: true
+
+ postcss-modules-extract-imports@3.1.0:
+ resolution:
+ {
+ integrity: sha512-k3kNe0aNFQDAZGbin48pL2VNidTF0w4/eASDsxlyspobzU3wZQLOGj7L9gfRe0Jo9/4uud09DsjFNH7winGv8Q==,
+ }
+ engines: { node: ^10 || ^12 || >= 14 }
+ peerDependencies:
+ postcss: ^8.1.0
+
+ postcss-modules-local-by-default@4.2.0:
+ resolution:
+ {
+ integrity: sha512-5kcJm/zk+GJDSfw+V/42fJ5fhjL5YbFDl8nVdXkJPLLW+Vf9mTD5Xe0wqIaDnLuL2U6cDNpTr+UQ+v2HWIBhzw==,
+ }
+ engines: { node: ^10 || ^12 || >= 14 }
+ peerDependencies:
+ postcss: ^8.1.0
+
+ postcss-modules-scope@3.2.1:
+ resolution:
+ {
+ integrity: sha512-m9jZstCVaqGjTAuny8MdgE88scJnCiQSlSrOWcTQgM2t32UBe+MUmFSO5t7VMSfAf/FJKImAxBav8ooCHJXCJA==,
+ }
+ engines: { node: ^10 || ^12 || >= 14 }
+ peerDependencies:
+ postcss: ^8.1.0
+
+ postcss-modules-values@4.0.0:
+ resolution:
+ {
+ integrity: sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==,
+ }
+ engines: { node: ^10 || ^12 || >= 14 }
+ peerDependencies:
+ postcss: ^8.1.0
+
+ postcss-modules@6.0.1:
+ resolution:
+ {
+ integrity: sha512-zyo2sAkVvuZFFy0gc2+4O+xar5dYlaVy/ebO24KT0ftk/iJevSNyPyQellsBLlnccwh7f6V6Y4GvuKRYToNgpQ==,
+ }
+ peerDependencies:
+ postcss: ^8.0.0
+
+ postcss-nested@6.2.0:
+ resolution:
+ {
+ integrity: sha512-HQbt28KulC5AJzG+cZtj9kvKB93CFCdLvog1WFLf1D+xmMvPGlBstkpTEZfK5+AN9hfJocyBFCNiqyS48bpgzQ==,
+ }
+ engines: { node: ">=12.0" }
+ peerDependencies:
+ postcss: ^8.2.14
+
+ postcss-selector-parser@6.1.2:
+ resolution:
+ {
+ integrity: sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==,
+ }
+ engines: { node: ">=4" }
+
+ postcss-selector-parser@7.0.0:
+ resolution:
+ {
+ integrity: sha512-9RbEr1Y7FFfptd/1eEdntyjMwLeghW1bHX9GWjXo19vx4ytPQhANltvVxDggzJl7mnWM+dX28kb6cyS/4iQjlQ==,
+ }
+ engines: { node: ">=4" }
+
+ postcss-value-parser@4.2.0:
+ resolution:
+ {
+ integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==,
+ }
+
+ postcss@8.4.49:
+ resolution:
+ {
+ integrity: sha512-OCVPnIObs4N29kxTjzLfUryOkvZEq+pf8jTF0lg8E7uETuWHA+v7j3c/xJmiqpX450191LlmZfUKkXxkTry7nA==,
+ }
+ engines: { node: ^10 || ^12 || >=14 }
+
+ prelude-ls@1.2.1:
+ resolution:
+ {
+ integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==,
+ }
+ engines: { node: ">= 0.8.0" }
+
+ prettier@2.8.8:
+ resolution:
+ {
+ integrity: sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==,
+ }
+ engines: { node: ">=10.13.0" }
+ hasBin: true
+
+ pretty-ms@7.0.1:
+ resolution:
+ {
+ integrity: sha512-973driJZvxiGOQ5ONsFhOF/DtzPMOMtgC11kCpUrPGMTgqp2q/1gwzCquocrN33is0VZ5GFHXZYMM9l6h67v2Q==,
+ }
+ engines: { node: ">=10" }
+
+ proc-log@3.0.0:
+ resolution:
+ {
+ integrity: sha512-++Vn7NS4Xf9NacaU9Xq3URUuqZETPsf8L4j5/ckhaRYsfPeRyzGw+iDjFhV/Jr3uNmTvvddEJFWh5R1gRgUH8A==,
+ }
+ engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 }
+
+ process-nextick-args@2.0.1:
+ resolution:
+ {
+ integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==,
+ }
+
+ promise-inflight@1.0.1:
+ resolution:
+ {
+ integrity: sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==,
+ }
+ peerDependencies:
+ bluebird: "*"
+ peerDependenciesMeta:
+ bluebird:
+ optional: true
+
+ promise-retry@2.0.1:
+ resolution:
+ {
+ integrity: sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==,
+ }
+ engines: { node: ">=10" }
+
+ prop-types@15.8.1:
+ resolution:
+ {
+ integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==,
+ }
+
+ property-information@6.5.0:
+ resolution:
+ {
+ integrity: sha512-PgTgs/BlvHxOu8QuEN7wi5A0OmXaBcHpmCSTehcs6Uuu9IkDIEo13Hy7n898RHfrQ49vKCoGeWZSaAK01nwVig==,
+ }
+
+ proxy-addr@2.0.7:
+ resolution:
+ {
+ integrity: sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==,
+ }
+ engines: { node: ">= 0.10" }
+
+ pump@2.0.1:
+ resolution:
+ {
+ integrity: sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==,
+ }
+
+ pump@3.0.2:
+ resolution:
+ {
+ integrity: sha512-tUPXtzlGM8FE3P0ZL6DVs/3P58k9nk8/jZeQCurTJylQA8qFYzHFfhBJkuqyE0FifOsQ0uKWekiZ5g8wtr28cw==,
+ }
+
+ pumpify@1.5.1:
+ resolution:
+ {
+ integrity: sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==,
+ }
+
+ punycode@2.3.1:
+ resolution:
+ {
+ integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==,
+ }
+ engines: { node: ">=6" }
+
+ qs@6.13.0:
+ resolution:
+ {
+ integrity: sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==,
+ }
+ engines: { node: ">=0.6" }
+
+ queue-microtask@1.2.3:
+ resolution:
+ {
+ integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==,
+ }
+
+ range-parser@1.2.1:
+ resolution:
+ {
+ integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==,
+ }
+ engines: { node: ">= 0.6" }
+
+ raw-body@2.5.2:
+ resolution:
+ {
+ integrity: sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==,
+ }
+ engines: { node: ">= 0.8" }
+
+ react-aiwriter@1.0.0:
+ resolution:
+ {
+ integrity: sha512-MxNAN3FUMNeHlbuPIiWFtXJlHBJx1+o5wKGtkmbmEywc7DjdjK6Xq1XVK3w+vBsuRARTACza3uxwsae1SqrAAw==,
+ }
+
+ react-dom@18.3.1:
+ resolution:
+ {
+ integrity: sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==,
+ }
+ peerDependencies:
+ react: ^18.3.1
+
+ react-is@16.13.1:
+ resolution:
+ {
+ integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==,
+ }
+
+ react-refresh@0.14.2:
+ resolution:
+ {
+ integrity: sha512-jCvmsr+1IUSMUyzOkRcvnVbX3ZYC6g9TDrDbFuFmRDq7PD4yaGbLKNQL6k2jnArV8hjYxh7hVhAZB6s9HDGpZA==,
+ }
+ engines: { node: ">=0.10.0" }
+
+ react-remove-scroll-bar@2.3.8:
+ resolution:
+ {
+ integrity: sha512-9r+yi9+mgU33AKcj6IbT9oRCO78WriSj6t/cF8DWBZJ9aOGPOTEDvdUDz1FwKim7QXWwmHqtdHnRJfhAxEG46Q==,
+ }
+ engines: { node: ">=10" }
+ peerDependencies:
+ "@types/react": "*"
+ react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0
+ peerDependenciesMeta:
+ "@types/react":
+ optional: true
+
+ react-remove-scroll@2.6.2:
+ resolution:
+ {
+ integrity: sha512-KmONPx5fnlXYJQqC62Q+lwIeAk64ws/cUw6omIumRzMRPqgnYqhSSti99nbj0Ry13bv7dF+BKn7NB+OqkdZGTw==,
+ }
+ engines: { node: ">=10" }
+ peerDependencies:
+ "@types/react": "*"
+ react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc
+ peerDependenciesMeta:
+ "@types/react":
+ optional: true
+
+ react-router-dom@6.28.1:
+ resolution:
+ {
+ integrity: sha512-YraE27C/RdjcZwl5UCqF/ffXnZDxpJdk9Q6jw38SZHjXs7NNdpViq2l2c7fO7+4uWaEfcwfGCv3RSg4e1By/fQ==,
+ }
+ engines: { node: ">=14.0.0" }
+ peerDependencies:
+ react: ">=16.8"
+ react-dom: ">=16.8"
+
+ react-router@6.28.1:
+ resolution:
+ {
+ integrity: sha512-2omQTA3rkMljmrvvo6WtewGdVh45SpL9hGiCI9uUrwGGfNFDIvGK4gYJsKlJoNVi6AQZcopSCballL+QGOm7fA==,
+ }
+ engines: { node: ">=14.0.0" }
+ peerDependencies:
+ react: ">=16.8"
+
+ react-style-singleton@2.2.3:
+ resolution:
+ {
+ integrity: sha512-b6jSvxvVnyptAiLjbkWLE/lOnR4lfTtDAl+eUC7RZy+QQWc6wRzIV2CE6xBuMmDxc2qIihtDCZD5NPOFl7fRBQ==,
+ }
+ engines: { node: ">=10" }
+ peerDependencies:
+ "@types/react": "*"
+ react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc
+ peerDependenciesMeta:
+ "@types/react":
+ optional: true
+
+ react-textarea-autosize@8.5.6:
+ resolution:
+ {
+ integrity: sha512-aT3ioKXMa8f6zHYGebhbdMD2L00tKeRX1zuVuDx9YQK/JLLRSaSxq3ugECEmUB9z2kvk6bFSIoRHLkkUv0RJiw==,
+ }
+ engines: { node: ">=10" }
+ peerDependencies:
+ react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0
+
+ react@18.3.1:
+ resolution:
+ {
+ integrity: sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==,
+ }
+ engines: { node: ">=0.10.0" }
+
+ read-cache@1.0.0:
+ resolution:
+ {
+ integrity: sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==,
+ }
+
+ readable-stream@2.3.8:
+ resolution:
+ {
+ integrity: sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==,
+ }
+
+ 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" }
+
+ reflect.getprototypeof@1.0.10:
+ resolution:
+ {
+ integrity: sha512-00o4I+DVrefhv+nX0ulyi3biSHCPDe+yLv5o/p6d/UVlirijB8E16FtfwSAi4g3tcqrQ4lRAqQSoFEZJehYEcw==,
+ }
+ engines: { node: ">= 0.4" }
+
+ regenerator-runtime@0.14.1:
+ resolution:
+ {
+ integrity: sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==,
+ }
+
+ regexp.prototype.flags@1.5.4:
+ resolution:
+ {
+ integrity: sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA==,
+ }
+ engines: { node: ">= 0.4" }
+
+ remark-frontmatter@4.0.1:
+ resolution:
+ {
+ integrity: sha512-38fJrB0KnmD3E33a5jZC/5+gGAC2WKNiPw1/fdXJvijBlhA7RCsvJklrYJakS0HedninvaCYW8lQGf9C918GfA==,
+ }
+
+ 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-parse@10.0.2:
+ resolution:
+ {
+ integrity: sha512-3ydxgHa/ZQzG8LvC7jTXccARYDcRld3VfcgIIFs7bI6vbRSxJJmzgLEIIoYKyrfhaY+ujuWaf/PJiMZXoiCXgw==,
+ }
+
+ remark-rehype@10.1.0:
+ resolution:
+ {
+ integrity: sha512-EFmR5zppdBp0WQeDVZ/b66CWJipB2q2VLNFMabzDSGR66Z2fQii83G5gTBbgGEnEEA0QRussvrFHxk1HWGJskw==,
+ }
+
+ require-like@0.1.2:
+ resolution:
+ {
+ integrity: sha512-oyrU88skkMtDdauHDuKVrgR+zuItqr6/c//FXzvmxRGMexSDc6hNvJInGW3LL46n+8b50RykrvwSUIIQH2LQ5A==,
+ }
+
+ resolve-from@4.0.0:
+ resolution:
+ {
+ integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==,
+ }
+ engines: { node: ">=4" }
+
+ resolve-pkg-maps@1.0.0:
+ resolution:
+ {
+ integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==,
+ }
+
+ resolve.exports@2.0.3:
+ resolution:
+ {
+ integrity: sha512-OcXjMsGdhL4XnbShKpAcSqPMzQoYkYyhbEaeSko47MjRP9NfEQMhZkXL1DoFlt9LWQn4YttrdnV6X2OiyzBi+A==,
+ }
+ engines: { node: ">=10" }
+
+ resolve@1.22.10:
+ resolution:
+ {
+ integrity: sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==,
+ }
+ engines: { node: ">= 0.4" }
+ hasBin: true
+
+ resolve@2.0.0-next.5:
+ resolution:
+ {
+ integrity: sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==,
+ }
+ hasBin: true
+
+ restore-cursor@3.1.0:
+ resolution:
+ {
+ integrity: sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==,
+ }
+ engines: { node: ">=8" }
+
+ retry@0.12.0:
+ resolution:
+ {
+ integrity: sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==,
+ }
+ engines: { node: ">= 4" }
+
+ reusify@1.0.4:
+ resolution:
+ {
+ integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==,
+ }
+ engines: { iojs: ">=1.0.0", node: ">=0.10.0" }
+
+ rollup@4.30.1:
+ resolution:
+ {
+ integrity: sha512-mlJ4glW020fPuLi7DkM/lN97mYEZGWeqBnrljzN0gs7GLctqX3lNWxKQ7Gl712UAX+6fog/L3jh4gb7R6aVi3w==,
+ }
+ engines: { node: ">=18.0.0", npm: ">=8.0.0" }
+ hasBin: true
+
+ run-parallel@1.2.0:
+ resolution:
+ {
+ integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==,
+ }
+
+ 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" }
+
+ safe-buffer@5.1.2:
+ resolution:
+ {
+ integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==,
+ }
+
+ 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" }
+
+ safe-regex-test@1.1.0:
+ resolution:
+ {
+ integrity: sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==,
+ }
+ engines: { node: ">= 0.4" }
+
+ safer-buffer@2.1.2:
+ resolution:
+ {
+ integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==,
+ }
+
+ scheduler@0.23.2:
+ resolution:
+ {
+ integrity: sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==,
+ }
+
+ secure-json-parse@3.0.2:
+ resolution:
+ {
+ integrity: sha512-H6nS2o8bWfpFEV6U38sOSjS7bTbdgbCGU9wEM6W14P5H0QOsz94KCusifV44GpHDTu2nqZbuDNhTzu+mjDSw1w==,
+ }
+
+ semver@6.3.1:
+ resolution:
+ {
+ integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==,
+ }
+ hasBin: true
+
+ semver@7.6.3:
+ resolution:
+ {
+ integrity: sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==,
+ }
+ engines: { node: ">=10" }
+ hasBin: true
+
+ send@0.19.0:
+ resolution:
+ {
+ integrity: sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==,
+ }
+ engines: { node: ">= 0.8.0" }
+
+ serve-static@1.16.2:
+ resolution:
+ {
+ integrity: sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw==,
+ }
+ engines: { node: ">= 0.8.0" }
+
+ set-cookie-parser@2.7.1:
+ resolution:
+ {
+ integrity: sha512-IOc8uWeOZgnb3ptbCURJWNjWUPcO3ZnTTdzsurqERrP6nPyv+paC55vJM0LpOlT2ne+Ix+9+CRG1MNLlyZ4GjQ==,
+ }
+
+ set-function-length@1.2.2:
+ resolution:
+ {
+ integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==,
+ }
+ engines: { node: ">= 0.4" }
+
+ set-function-name@2.0.2:
+ resolution:
+ {
+ integrity: sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==,
+ }
+ engines: { node: ">= 0.4" }
+
+ set-proto@1.0.0:
+ resolution:
+ {
+ integrity: sha512-RJRdvCo6IAnPdsvP/7m6bsQqNnn1FCBX5ZNtFL98MmFF/4xAIJTIg1YbHW5DC2W5SKZanrC6i4HsJqlajw/dZw==,
+ }
+ engines: { node: ">= 0.4" }
+
+ setprototypeof@1.2.0:
+ resolution:
+ {
+ integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==,
+ }
+
+ shebang-command@2.0.0:
+ resolution:
+ {
+ integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==,
+ }
+ engines: { node: ">=8" }
+
+ shebang-regex@3.0.0:
+ resolution:
+ {
+ integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==,
+ }
+ engines: { node: ">=8" }
+
+ side-channel-list@1.0.0:
+ resolution:
+ {
+ integrity: sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==,
+ }
+ engines: { node: ">= 0.4" }
+
+ side-channel-map@1.0.1:
+ resolution:
+ {
+ integrity: sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==,
+ }
+ engines: { node: ">= 0.4" }
+
+ side-channel-weakmap@1.0.2:
+ resolution:
+ {
+ integrity: sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==,
+ }
+ engines: { node: ">= 0.4" }
+
+ side-channel@1.1.0:
+ resolution:
+ {
+ integrity: sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==,
+ }
+ engines: { node: ">= 0.4" }
+
+ signal-exit@3.0.7:
+ resolution:
+ {
+ integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==,
+ }
+
+ signal-exit@4.1.0:
+ resolution:
+ {
+ integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==,
+ }
+ engines: { node: ">=14" }
+
+ slash@3.0.0:
+ resolution:
+ {
+ integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==,
+ }
+ engines: { node: ">=8" }
+
+ source-map-js@1.2.1:
+ resolution:
+ {
+ integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==,
+ }
+ engines: { node: ">=0.10.0" }
+
+ source-map-support@0.5.21:
+ resolution:
+ {
+ integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==,
+ }
+
+ source-map@0.6.1:
+ resolution:
+ {
+ integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==,
+ }
+ engines: { node: ">=0.10.0" }
+
+ source-map@0.7.4:
+ resolution:
+ {
+ integrity: sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==,
+ }
+ engines: { node: ">= 8" }
+
+ space-separated-tokens@2.0.2:
+ resolution:
+ {
+ integrity: sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==,
+ }
+
+ spdx-correct@3.2.0:
+ resolution:
+ {
+ integrity: sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==,
+ }
+
+ spdx-exceptions@2.5.0:
+ resolution:
+ {
+ integrity: sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==,
+ }
+
+ spdx-expression-parse@3.0.1:
+ resolution:
+ {
+ integrity: sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==,
+ }
+
+ spdx-license-ids@3.0.20:
+ resolution:
+ {
+ integrity: sha512-jg25NiDV/1fLtSgEgyvVyDunvaNHbuwF9lfNV17gSmPFAlYzdfNBlLtLzXTevwkPj7DhGbmN9VnmJIgLnhvaBw==,
+ }
+
+ ssri@10.0.6:
+ resolution:
+ {
+ integrity: sha512-MGrFH9Z4NP9Iyhqn16sDtBpRRNJ0Y2hNa6D65h736fVSaPCHr4DM4sWUNvVaSuC+0OBGhwsrydQwmgfg5LncqQ==,
+ }
+ engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 }
+
+ stable-hash@0.0.4:
+ resolution:
+ {
+ integrity: sha512-LjdcbuBeLcdETCrPn9i8AYAZ1eCtu4ECAWtP7UleOiZ9LzVxRzzUZEoZ8zB24nhkQnDWyET0I+3sWokSDS3E7g==,
+ }
+
+ statuses@2.0.1:
+ resolution:
+ {
+ integrity: sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==,
+ }
+ engines: { node: ">= 0.8" }
+
+ stream-shift@1.0.3:
+ resolution:
+ {
+ integrity: sha512-76ORR0DO1o1hlKwTbi/DM3EXWGf3ZJYO8cXX5RJwnul2DEg2oyoZyjLNoQM8WsvZiFKCRfC1O0J7iCvie3RZmQ==,
+ }
+
+ stream-slice@0.1.2:
+ resolution:
+ {
+ integrity: sha512-QzQxpoacatkreL6jsxnVb7X5R/pGw9OUv2qWTYWnmLpg4NdN31snPy/f3TdQE1ZUXaThRvj1Zw4/OGg0ZkaLMA==,
+ }
+
+ string-hash@1.1.3:
+ resolution:
+ {
+ integrity: sha512-kJUvRUFK49aub+a7T1nNE66EJbZBMnBgoC1UbCZ5n6bsZKBRga4KgBRTMn/pFkeCZSYtNeSyMxPDM0AXWELk2A==,
+ }
+
+ string-width@4.2.3:
+ resolution:
+ {
+ integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==,
+ }
+ engines: { node: ">=8" }
+
+ string-width@5.1.2:
+ resolution:
+ {
+ integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==,
+ }
+ engines: { node: ">=12" }
+
+ string.prototype.includes@2.0.1:
+ resolution:
+ {
+ integrity: sha512-o7+c9bW6zpAdJHTtujeePODAhkuicdAryFsfVKwA+wGw89wJ4GTY484WTucM9hLtDEOpOvI+aHnzqnC5lHp4Rg==,
+ }
+ engines: { node: ">= 0.4" }
+
+ string.prototype.matchall@4.0.12:
+ resolution:
+ {
+ integrity: sha512-6CC9uyBL+/48dYizRf7H7VAYCMCNTBeM78x/VTUe9bFEaxBepPJDa1Ow99LqI/1yF7kuy7Q3cQsYMrcjGUcskA==,
+ }
+ engines: { node: ">= 0.4" }
+
+ string.prototype.repeat@1.0.0:
+ resolution:
+ {
+ integrity: sha512-0u/TldDbKD8bFCQ/4f5+mNRrXwZ8hg2w7ZR8wa16e8z9XpePWl3eGEcUD0OXpEH/VJH/2G3gjUtR3ZOiBe2S/w==,
+ }
+
+ string.prototype.trim@1.2.10:
+ resolution:
+ {
+ integrity: sha512-Rs66F0P/1kedk5lyYyH9uBzuiI/kNRmwJAR9quK6VOtIpZ2G+hMZd+HQbbv25MgCA6gEffoMZYxlTod4WcdrKA==,
+ }
+ engines: { node: ">= 0.4" }
+
+ string.prototype.trimend@1.0.9:
+ resolution:
+ {
+ integrity: sha512-G7Ok5C6E/j4SGfyLCloXTrngQIQU3PWtXGst3yM7Bea9FRURf1S42ZHlZZtsNque2FN2PoUhfZXYLNWwEr4dLQ==,
+ }
+ engines: { node: ">= 0.4" }
+
+ string.prototype.trimstart@1.0.8:
+ resolution:
+ {
+ integrity: sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==,
+ }
+ engines: { node: ">= 0.4" }
+
+ string_decoder@1.1.1:
+ resolution:
+ {
+ integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==,
+ }
+
+ 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==,
+ }
+
+ strip-ansi@6.0.1:
+ resolution:
+ {
+ integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==,
+ }
+ engines: { node: ">=8" }
+
+ strip-ansi@7.1.0:
+ resolution:
+ {
+ integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==,
+ }
+ engines: { node: ">=12" }
+
+ strip-bom@3.0.0:
+ resolution:
+ {
+ integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==,
+ }
+ engines: { node: ">=4" }
+
+ strip-final-newline@2.0.0:
+ resolution:
+ {
+ integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==,
+ }
+ engines: { node: ">=6" }
+
+ strip-json-comments@3.1.1:
+ resolution:
+ {
+ integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==,
+ }
+ engines: { node: ">=8" }
+
+ style-to-object@0.4.4:
+ resolution:
+ {
+ integrity: sha512-HYNoHZa2GorYNyqiCaBgsxvcJIn7OHq6inEga+E6Ke3m5JkoqpQbnFssk4jwe+K7AhGa2fcha4wSOf1Kn01dMg==,
+ }
+
+ sucrase@3.35.0:
+ resolution:
+ {
+ integrity: sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==,
+ }
+ engines: { node: ">=16 || 14 >=14.17" }
+ hasBin: true
+
+ supports-color@7.2.0:
+ resolution:
+ {
+ integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==,
+ }
+ engines: { node: ">=8" }
+
+ supports-preserve-symlinks-flag@1.0.0:
+ resolution:
+ {
+ integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==,
+ }
+ engines: { node: ">= 0.4" }
+
+ tailwind-merge@2.6.0:
+ resolution:
+ {
+ integrity: sha512-P+Vu1qXfzediirmHOC3xKGAYeZtPcV9g76X+xg2FD4tYgR71ewMA35Y3sCz3zhiN/dwefRpJX0yBcgwi1fXNQA==,
+ }
+
+ tailwindcss-animate@1.0.7:
+ resolution:
+ {
+ integrity: sha512-bl6mpH3T7I3UFxuvDEXLxy/VuFxBk5bbzplh7tXI68mwMokNYd1t9qPBHlnyTwfa4JGC4zP516I1hYYtQ/vspA==,
+ }
+ peerDependencies:
+ tailwindcss: ">=3.0.0 || insiders"
+
+ tailwindcss@3.4.17:
+ resolution:
+ {
+ integrity: sha512-w33E2aCvSDP0tW9RZuNXadXlkHXqFzSkQew/aIa2i/Sj8fThxwovwlXHSPXTbAHwEIhBFXAedUhP2tueAKP8Og==,
+ }
+ engines: { node: ">=14.0.0" }
+ hasBin: true
+
+ tapable@2.2.1:
+ resolution:
+ {
+ integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==,
+ }
+ engines: { node: ">=6" }
+
+ tar-fs@2.1.1:
+ resolution:
+ {
+ integrity: sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==,
+ }
+
+ tar-stream@2.2.0:
+ resolution:
+ {
+ integrity: sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==,
+ }
+ engines: { node: ">=6" }
+
+ tar@6.2.1:
+ resolution:
+ {
+ integrity: sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==,
+ }
+ engines: { node: ">=10" }
+
+ thenify-all@1.6.0:
+ resolution:
+ {
+ integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==,
+ }
+ engines: { node: ">=0.8" }
+
+ thenify@3.3.1:
+ resolution:
+ {
+ integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==,
+ }
+
+ through2@2.0.5:
+ resolution:
+ {
+ integrity: sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==,
+ }
+
+ to-regex-range@5.0.1:
+ resolution:
+ {
+ integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==,
+ }
+ engines: { node: ">=8.0" }
+
+ toidentifier@1.0.1:
+ resolution:
+ {
+ integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==,
+ }
+ engines: { node: ">=0.6" }
+
+ toml@3.0.0:
+ resolution:
+ {
+ integrity: sha512-y/mWCZinnvxjTKYhJ+pYxwD0mRLVvOtdS2Awbgxln6iEnt4rk0yBxeSBHkGJcPucRiG0e55mwWp+g/05rsrd6w==,
+ }
+
+ trim-lines@3.0.1:
+ resolution:
+ {
+ integrity: sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==,
+ }
+
+ trough@2.2.0:
+ resolution:
+ {
+ integrity: sha512-tmMpK00BjZiUyVyvrBK7knerNgmgvcV/KLVyuma/SC+TQN167GrMRciANTz09+k3zW8L8t60jWO1GpfkZdjTaw==,
+ }
+
+ ts-api-utils@1.4.3:
+ resolution:
+ {
+ integrity: sha512-i3eMG77UTMD0hZhgRS562pv83RC6ukSAC2GMNWc+9dieh/+jDM5u5YG+NHX6VNDRHQcHwmsTHctP9LhbC3WxVw==,
+ }
+ engines: { node: ">=16" }
+ peerDependencies:
+ typescript: ">=4.2.0"
+
+ ts-api-utils@2.0.0:
+ resolution:
+ {
+ integrity: sha512-xCt/TOAc+EOHS1XPnijD3/yzpH6qg2xppZO1YDqGoVsNXfQfzHpOdNuXwrwOU8u4ITXJyDCTyt8w5g1sZv9ynQ==,
+ }
+ engines: { node: ">=18.12" }
+ peerDependencies:
+ typescript: ">=4.8.4"
+
+ ts-interface-checker@0.1.13:
+ resolution:
+ {
+ integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==,
+ }
+
+ tsconfck@3.1.4:
+ resolution:
+ {
+ integrity: sha512-kdqWFGVJqe+KGYvlSO9NIaWn9jT1Ny4oKVzAJsKii5eoE9snzTJzL4+MMVOMn+fikWGFmKEylcXL710V/kIPJQ==,
+ }
+ engines: { node: ^18 || >=20 }
+ hasBin: true
+ peerDependencies:
+ typescript: ^5.0.0
+ peerDependenciesMeta:
+ typescript:
+ optional: true
+
+ tsconfig-paths@3.15.0:
+ resolution:
+ {
+ integrity: sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==,
+ }
+
+ tsconfig-paths@4.2.0:
+ resolution:
+ {
+ integrity: sha512-NoZ4roiN7LnbKn9QqE1amc9DJfzvZXxF4xDavcOWt1BPkdx+m+0gJuPM+S0vCe7zTJMYUP0R8pO2XMr+Y8oLIg==,
+ }
+ engines: { node: ">=6" }
+
+ tslib@2.8.1:
+ resolution:
+ {
+ integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==,
+ }
+
+ turbo-stream@2.4.0:
+ resolution:
+ {
+ integrity: sha512-FHncC10WpBd2eOmGwpmQsWLDoK4cqsA/UT/GqNoaKOQnT8uzhtCbg3EoUDMvqpOSAI0S26mr0rkjzbOO6S3v1g==,
+ }
+
+ type-check@0.4.0:
+ resolution:
+ {
+ integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==,
+ }
+ engines: { node: ">= 0.8.0" }
+
+ type-is@1.6.18:
+ resolution:
+ {
+ integrity: sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==,
+ }
+ engines: { node: ">= 0.6" }
+
+ typed-array-buffer@1.0.3:
+ resolution:
+ {
+ integrity: sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==,
+ }
+ engines: { node: ">= 0.4" }
+
+ typed-array-byte-length@1.0.3:
+ resolution:
+ {
+ integrity: sha512-BaXgOuIxz8n8pIq3e7Atg/7s+DpiYrxn4vdot3w9KbnBhcRQq6o3xemQdIfynqSeXeDrF32x+WvfzmOjPiY9lg==,
+ }
+ engines: { node: ">= 0.4" }
+
+ typed-array-byte-offset@1.0.4:
+ resolution:
+ {
+ integrity: sha512-bTlAFB/FBYMcuX81gbL4OcpH5PmlFHqlCCpAl8AlEzMz5k53oNDvN8p1PNOWLEmI2x4orp3raOFB51tv9X+MFQ==,
+ }
+ engines: { node: ">= 0.4" }
+
+ typed-array-length@1.0.7:
+ resolution:
+ {
+ integrity: sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg==,
+ }
+ engines: { node: ">= 0.4" }
+
+ typescript-eslint@8.19.1:
+ resolution:
+ {
+ integrity: sha512-LKPUQpdEMVOeKluHi8md7rwLcoXHhwvWp3x+sJkMuq3gGm9yaYJtPo8sRZSblMFJ5pcOGCAak/scKf1mvZDlQw==,
+ }
+ engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 }
+ peerDependencies:
+ eslint: ^8.57.0 || ^9.0.0
+ typescript: ">=4.8.4 <5.8.0"
+
+ typescript@5.6.3:
+ resolution:
+ {
+ integrity: sha512-hjcS1mhfuyi4WW8IWtjP7brDrG2cuDZukyrYrSauoXGNgx0S7zceP07adYkJycEr56BOUTNPzbInooiN3fn1qw==,
+ }
+ engines: { node: ">=14.17" }
+ hasBin: true
+
+ ufo@1.5.4:
+ resolution:
+ {
+ integrity: sha512-UsUk3byDzKd04EyoZ7U4DOlxQaD14JUKQl6/P7wiX4FNvUfm3XL246n9W5AmqwW5RSFJ27NAuM0iLscAOYUiGQ==,
+ }
+
+ unbox-primitive@1.1.0:
+ resolution:
+ {
+ integrity: sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw==,
+ }
+ engines: { node: ">= 0.4" }
+
+ undici-types@6.20.0:
+ resolution:
+ {
+ integrity: sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==,
+ }
+
+ undici@6.21.0:
+ resolution:
+ {
+ integrity: sha512-BUgJXc752Kou3oOIuU1i+yZZypyZRqNPW0vqoMPl8VaoalSfeR0D8/t4iAS3yirs79SSMTxTag+ZC86uswv+Cw==,
+ }
+ engines: { node: ">=18.17" }
+
+ unified@10.1.2:
+ resolution:
+ {
+ integrity: sha512-pUSWAi/RAnVy1Pif2kAoeWNBa3JVrx0MId2LASj8G+7AiHWoKZNTomq6LG326T68U7/e263X6fTdcXIy7XnF7Q==,
+ }
+
+ unique-filename@3.0.0:
+ resolution:
+ {
+ integrity: sha512-afXhuC55wkAmZ0P18QsVE6kp8JaxrEokN2HGIoIVv2ijHQd419H0+6EigAFcIzXeMIkcIkNBpB3L/DXB3cTS/g==,
+ }
+ engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 }
+
+ unique-slug@4.0.0:
+ resolution:
+ {
+ integrity: sha512-WrcA6AyEfqDX5bWige/4NQfPZMtASNVxdmWR76WESYQVAACSgWcR6e9i0mofqqBxYFtL4oAxPIptY73/0YE1DQ==,
+ }
+ engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 }
+
+ 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-position-from-estree@1.1.2:
+ resolution:
+ {
+ integrity: sha512-poZa0eXpS+/XpoQwGwl79UUdea4ol2ZuCYguVaJS4qzIOMDzbqz8a3erUCOmubSZkaOuGamb3tX790iwOIROww==,
+ }
+
+ unist-util-position@4.0.4:
+ resolution:
+ {
+ integrity: sha512-kUBE91efOWfIVBo8xzh/uZQ7p9ffYRtUbMRZBNFYwf0RK8koUMx6dGUfwylLOKmaT2cs4wSW96QoYUSXAyEtpg==,
+ }
+
+ 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==,
+ }
+
+ unist-util-visit-parents@5.1.3:
+ resolution:
+ {
+ integrity: sha512-x6+y8g7wWMyQhL1iZfhIPhDAs7Xwbn9nRosDXl7qoPTSCy0yNxnKc+hWokFifWQIDGi154rdUqKvbCa4+1kLhg==,
+ }
+
+ unist-util-visit@4.1.2:
+ resolution:
+ {
+ integrity: sha512-MSd8OUGISqHdVvfY9TPhyK2VdUrPgxkUtWSuMHF6XAAFuL4LokseigBnZtPnJMu+FbynTkFNnFlyjxpVKujMRg==,
+ }
+
+ universalify@2.0.1:
+ resolution:
+ {
+ integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==,
+ }
+ engines: { node: ">= 10.0.0" }
+
+ unpipe@1.0.0:
+ resolution:
+ {
+ integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==,
+ }
+ engines: { node: ">= 0.8" }
+
+ update-browserslist-db@1.1.1:
+ resolution:
+ {
+ integrity: sha512-R8UzCaa9Az+38REPiJ1tXlImTJXlVfgHZsglwBD/k6nj76ctsH1E3q4doGrukiLQd3sGQYu56r5+lo5r94l29A==,
+ }
+ hasBin: true
+ peerDependencies:
+ browserslist: ">= 4.21.0"
+
+ uri-js@4.4.1:
+ resolution:
+ {
+ integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==,
+ }
+
+ use-callback-ref@1.3.3:
+ resolution:
+ {
+ integrity: sha512-jQL3lRnocaFtu3V00JToYz/4QkNWswxijDaCVNZRiRTO3HQDLsdu1ZtmIUvV4yPp+rvWm5j0y0TG/S61cuijTg==,
+ }
+ engines: { node: ">=10" }
+ peerDependencies:
+ "@types/react": "*"
+ react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc
+ peerDependenciesMeta:
+ "@types/react":
+ optional: true
+
+ use-composed-ref@1.4.0:
+ resolution:
+ {
+ integrity: sha512-djviaxuOOh7wkj0paeO1Q/4wMZ8Zrnag5H6yBvzN7AKKe8beOaED9SF5/ByLqsku8NP4zQqsvM2u3ew/tJK8/w==,
+ }
+ peerDependencies:
+ "@types/react": "*"
+ react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0
+ peerDependenciesMeta:
+ "@types/react":
+ optional: true
+
+ use-isomorphic-layout-effect@1.2.0:
+ resolution:
+ {
+ integrity: sha512-q6ayo8DWoPZT0VdG4u3D3uxcgONP3Mevx2i2b0434cwWBoL+aelL1DzkXI6w3PhTZzUeR2kaVlZn70iCiseP6w==,
+ }
+ peerDependencies:
+ "@types/react": "*"
+ react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0
+ peerDependenciesMeta:
+ "@types/react":
+ optional: true
+
+ use-latest@1.3.0:
+ resolution:
+ {
+ integrity: sha512-mhg3xdm9NaM8q+gLT8KryJPnRFOz1/5XPBhmDEVZK1webPzDjrPk7f/mbpeLqTgB9msytYWANxgALOCJKnLvcQ==,
+ }
+ peerDependencies:
+ "@types/react": "*"
+ react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0
+ peerDependenciesMeta:
+ "@types/react":
+ optional: true
+
+ use-sidecar@1.1.3:
+ resolution:
+ {
+ integrity: sha512-Fedw0aZvkhynoPYlA5WXrMCAMm+nSWdZt6lzJQ7Ok8S6Q+VsHmHpRWndVRJ8Be0ZbkfPc5LRYH+5XrzXcEeLRQ==,
+ }
+ engines: { node: ">=10" }
+ peerDependencies:
+ "@types/react": "*"
+ react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc
+ peerDependenciesMeta:
+ "@types/react":
+ optional: true
+
+ use-sound@4.0.3:
+ resolution:
+ {
+ integrity: sha512-L205pEUFIrLsGYsCUKHQVCt0ajs//YQOFbEQeNwaWaqQj3y3st4SuR+rvpMHLmv8hgTcfUFlvMQawZNI3OE18w==,
+ }
+ peerDependencies:
+ react: ">=16.8"
+
+ util-deprecate@1.0.2:
+ resolution:
+ {
+ integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==,
+ }
+
+ util@0.12.5:
+ resolution:
+ {
+ integrity: sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==,
+ }
+
+ utils-merge@1.0.1:
+ resolution:
+ {
+ integrity: sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==,
+ }
+ engines: { node: ">= 0.4.0" }
+
+ uvu@0.5.6:
+ resolution:
+ {
+ integrity: sha512-+g8ENReyr8YsOc6fv/NVJs2vFdHBnBNdfE49rshrTzDWOlUx4Gq7KOS2GD8eqhy2j+Ejq29+SbKH8yjkAqXqoA==,
+ }
+ engines: { node: ">=8" }
+ hasBin: true
+
+ valibot@0.41.0:
+ resolution:
+ {
+ integrity: sha512-igDBb8CTYr8YTQlOKgaN9nSS0Be7z+WRuaeYqGf3Cjz3aKmSnqEmYnkfVjzIuumGqfHpa3fLIvMEAfhrpqN8ng==,
+ }
+ peerDependencies:
+ typescript: ">=5"
+ peerDependenciesMeta:
+ typescript:
+ optional: true
+
+ validate-npm-package-license@3.0.4:
+ resolution:
+ {
+ integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==,
+ }
+
+ validate-npm-package-name@5.0.1:
+ resolution:
+ {
+ integrity: sha512-OljLrQ9SQdOUqTaQxqL5dEfZWrXExyyWsozYlAWFawPVNuD83igl7uJD2RTkNMbniIYgt8l81eCJGIdQF7avLQ==,
+ }
+ engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 }
+
+ vary@1.1.2:
+ resolution:
+ {
+ integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==,
+ }
+ engines: { node: ">= 0.8" }
+
+ vfile-message@3.1.4:
+ resolution:
+ {
+ integrity: sha512-fa0Z6P8HUrQN4BZaX05SIVXic+7kE3b05PWAtPuYP9QLHsLKYR7/AlLW3NtOrpXRLeawpDLMsVkmk5DG0NXgWw==,
+ }
+
+ vfile@5.3.7:
+ resolution:
+ {
+ integrity: sha512-r7qlzkgErKjobAmyNIkkSpizsFPYiUPuJb5pNW1RB4JcYVZhs4lIbVqk8XPk033CV/1z8ss5pkax8SuhGpcG8g==,
+ }
+
+ vite-node@1.6.0:
+ resolution:
+ {
+ integrity: sha512-de6HJgzC+TFzOu0NTC4RAIsyf/DY/ibWDYQUcuEA84EMHhcefTUGkjFHKKEJhQN4A+6I0u++kr3l36ZF2d7XRw==,
+ }
+ engines: { node: ^18.0.0 || >=20.0.0 }
+ hasBin: true
+
+ vite-tsconfig-paths@4.3.2:
+ resolution:
+ {
+ integrity: sha512-0Vd/a6po6Q+86rPlntHye7F31zA2URZMbH8M3saAZ/xR9QoGN/L21bxEGfXdWmFdNkqPpRdxFT7nmNe12e9/uA==,
+ }
+ peerDependencies:
+ vite: "*"
+ peerDependenciesMeta:
+ vite:
+ optional: true
+
+ vite@5.4.11:
+ resolution:
+ {
+ integrity: sha512-c7jFQRklXua0mTzneGW9QVyxFjUgwcihC4bXEtujIo2ouWCe1Ajt/amn2PCxYnhYfd5k09JX3SB7OYWFKYqj8Q==,
+ }
+ engines: { node: ^18.0.0 || >=20.0.0 }
+ hasBin: true
+ 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
+
+ vite@6.0.7:
+ resolution:
+ {
+ integrity: sha512-RDt8r/7qx9940f8FcOIAH9PTViRrghKaK2K1jY3RaAURrEUbm9Du1mJ72G+jlhtG3WwodnfzY8ORQZbBavZEAQ==,
+ }
+ engines: { node: ^18.0.0 || ^20.0.0 || >=22.0.0 }
+ hasBin: true
+ peerDependencies:
+ "@types/node": ^18.0.0 || ^20.0.0 || >=22.0.0
+ jiti: ">=1.21.0"
+ less: "*"
+ lightningcss: ^1.21.0
+ sass: "*"
+ sass-embedded: "*"
+ stylus: "*"
+ sugarss: "*"
+ terser: ^5.16.0
+ tsx: ^4.8.1
+ yaml: ^2.4.2
+ peerDependenciesMeta:
+ "@types/node":
+ optional: true
+ jiti:
+ optional: true
+ less:
+ optional: true
+ lightningcss:
+ optional: true
+ sass:
+ optional: true
+ sass-embedded:
+ optional: true
+ stylus:
+ optional: true
+ sugarss:
+ optional: true
+ terser:
+ optional: true
+ tsx:
+ optional: true
+ yaml:
+ optional: true
+
+ wcwidth@1.0.1:
+ resolution:
+ {
+ integrity: sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==,
+ }
+
+ web-encoding@1.1.5:
+ resolution:
+ {
+ integrity: sha512-HYLeVCdJ0+lBYV2FvNZmv3HJ2Nt0QYXqZojk3d9FJOLkwnuhzM9tmamh8d7HPM8QqjKH8DeHkFTx+CFlWpZZDA==,
+ }
+
+ 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" }
+
+ which-builtin-type@1.2.1:
+ resolution:
+ {
+ integrity: sha512-6iBczoX+kDQ7a3+YJBnh3T+KZRxM/iYNPXicqk66/Qfm1b93iu+yOImkg0zHbj5LNOcNv1TEADiZ0xa34B4q6Q==,
+ }
+ engines: { node: ">= 0.4" }
+
+ which-collection@1.0.2:
+ resolution:
+ {
+ integrity: sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==,
+ }
+ engines: { node: ">= 0.4" }
+
+ which-typed-array@1.1.18:
+ resolution:
+ {
+ integrity: sha512-qEcY+KJYlWyLH9vNbsr6/5j59AXk5ni5aakf8ldzBvGde6Iz4sxZGkJyWSAueTG7QhOvNRYb1lDdFmL5Td0QKA==,
+ }
+ engines: { node: ">= 0.4" }
+
+ which@2.0.2:
+ resolution:
+ {
+ integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==,
+ }
+ engines: { node: ">= 8" }
+ hasBin: true
+
+ which@3.0.1:
+ resolution:
+ {
+ integrity: sha512-XA1b62dzQzLfaEOSQFTCOd5KFf/1VSzZo7/7TUjnya6u0vGGKzU96UQBZTAThCb2j4/xjBAyii1OhRLJEivHvg==,
+ }
+ engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 }
+ hasBin: true
+
+ word-wrap@1.2.5:
+ resolution:
+ {
+ integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==,
+ }
+ engines: { node: ">=0.10.0" }
+
+ wrap-ansi@7.0.0:
+ resolution:
+ {
+ integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==,
+ }
+ engines: { node: ">=10" }
+
+ wrap-ansi@8.1.0:
+ resolution:
+ {
+ integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==,
+ }
+ engines: { node: ">=12" }
+
+ wrappy@1.0.2:
+ resolution:
+ {
+ integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==,
+ }
+
+ ws@7.5.10:
+ resolution:
+ {
+ integrity: sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==,
+ }
+ engines: { node: ">=8.3.0" }
+ peerDependencies:
+ bufferutil: ^4.0.1
+ utf-8-validate: ^5.0.2
+ peerDependenciesMeta:
+ bufferutil:
+ optional: true
+ utf-8-validate:
+ optional: true
+
+ xtend@4.0.2:
+ resolution:
+ {
+ integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==,
+ }
+ engines: { node: ">=0.4" }
+
+ yallist@3.1.1:
+ resolution:
+ {
+ integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==,
+ }
+
+ yallist@4.0.0:
+ resolution:
+ {
+ integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==,
+ }
+
+ yaml@2.7.0:
+ resolution:
+ {
+ integrity: sha512-+hSoy/QHluxmC9kCIJyL/uyFmLmc+e5CFR5Wa+bpIhIj85LVb9ZH2nVnqrHoSvKogwODv0ClqZkmiSSaIH5LTA==,
+ }
+ engines: { node: ">= 14" }
+ hasBin: true
+
+ yocto-queue@0.1.0:
+ resolution:
+ {
+ integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==,
+ }
+ engines: { node: ">=10" }
+
+ zod-to-json-schema@3.24.1:
+ resolution:
+ {
+ integrity: sha512-3h08nf3Vw3Wl3PK+q3ow/lIil81IT2Oa7YpQyUUDsEWbXveMesdfK1xBd2RhCkynwZndAxixji/7SYJJowr62w==,
+ }
+ peerDependencies:
+ zod: ^3.24.1
+
+ zod@3.24.1:
+ resolution:
+ {
+ integrity: sha512-muH7gBL9sI1nciMZV67X5fTKKBLtwpZ5VBp1vsOQzj1MhrBZ4wlVCm3gedKZWLp0Oyel8sIGfeiz54Su+OVT+A==,
+ }
+
+ zustand@5.0.3:
+ resolution:
+ {
+ integrity: sha512-14fwWQtU3pH4dE0dOpdMiWjddcH+QzKIgk1cl8epwSE7yag43k/AD/m4L6+K7DytAOr9gGBe3/EXj9g7cdostg==,
+ }
+ engines: { node: ">=12.20.0" }
+ peerDependencies:
+ "@types/react": ">=18.0.0"
+ immer: ">=9.0.6"
+ react: ">=18.0.0"
+ use-sync-external-store: ">=1.2.0"
+ peerDependenciesMeta:
+ "@types/react":
+ optional: true
+ immer:
+ optional: true
+ react:
+ optional: true
+ use-sync-external-store:
+ optional: true
+
+ zwitch@2.0.4:
+ resolution:
+ {
+ integrity: sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==,
+ }
+
+snapshots:
+ "@ai-sdk/provider@1.0.4":
+ dependencies:
+ json-schema: 0.4.0
+
+ "@alloc/quick-lru@5.2.0": {}
+
+ "@ampproject/remapping@2.3.0":
+ dependencies:
+ "@jridgewell/gen-mapping": 0.3.8
+ "@jridgewell/trace-mapping": 0.3.25
+
+ "@assistant-ui/react@0.7.33(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(tailwindcss@3.4.17)":
+ dependencies:
+ "@ai-sdk/provider": 1.0.4
+ "@radix-ui/primitive": 1.1.1
+ "@radix-ui/react-avatar": 1.1.2(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ "@radix-ui/react-compose-refs": 1.1.1(@types/react@18.3.18)(react@18.3.1)
+ "@radix-ui/react-context": 1.1.1(@types/react@18.3.18)(react@18.3.1)
+ "@radix-ui/react-dialog": 1.1.4(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ "@radix-ui/react-popover": 1.1.4(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ "@radix-ui/react-primitive": 2.0.1(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ "@radix-ui/react-slot": 1.1.1(@types/react@18.3.18)(react@18.3.1)
+ "@radix-ui/react-tooltip": 1.1.6(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ "@radix-ui/react-use-callback-ref": 1.1.0(@types/react@18.3.18)(react@18.3.1)
+ "@radix-ui/react-use-escape-keydown": 1.1.0(@types/react@18.3.18)(react@18.3.1)
+ class-variance-authority: 0.7.1
+ classnames: 2.5.1
+ json-schema: 0.4.0
+ lucide-react: 0.469.0(react@18.3.1)
+ nanoid: 5.0.9
+ react: 18.3.1
+ react-dom: 18.3.1(react@18.3.1)
+ react-textarea-autosize: 8.5.6(@types/react@18.3.18)(react@18.3.1)
+ secure-json-parse: 3.0.2
+ zod: 3.24.1
+ zod-to-json-schema: 3.24.1(zod@3.24.1)
+ zustand: 5.0.3(@types/react@18.3.18)(react@18.3.1)
+ optionalDependencies:
+ "@types/react": 18.3.18
+ "@types/react-dom": 18.3.5(@types/react@18.3.18)
+ tailwindcss: 3.4.17
+ transitivePeerDependencies:
+ - immer
+ - use-sync-external-store
+
+ "@babel/code-frame@7.26.2":
+ dependencies:
+ "@babel/helper-validator-identifier": 7.25.9
+ js-tokens: 4.0.0
+ picocolors: 1.1.1
+
+ "@babel/compat-data@7.26.3": {}
+
+ "@babel/core@7.26.0":
+ dependencies:
+ "@ampproject/remapping": 2.3.0
+ "@babel/code-frame": 7.26.2
+ "@babel/generator": 7.26.3
+ "@babel/helper-compilation-targets": 7.25.9
+ "@babel/helper-module-transforms": 7.26.0(@babel/core@7.26.0)
+ "@babel/helpers": 7.26.0
+ "@babel/parser": 7.26.3
+ "@babel/template": 7.25.9
+ "@babel/traverse": 7.26.4
+ "@babel/types": 7.26.3
+ convert-source-map: 2.0.0
+ debug: 4.4.0
+ gensync: 1.0.0-beta.2
+ json5: 2.2.3
+ semver: 6.3.1
+ transitivePeerDependencies:
+ - supports-color
+
+ "@babel/generator@7.26.3":
+ dependencies:
+ "@babel/parser": 7.26.3
+ "@babel/types": 7.26.3
+ "@jridgewell/gen-mapping": 0.3.8
+ "@jridgewell/trace-mapping": 0.3.25
+ jsesc: 3.0.2
+
+ "@babel/helper-annotate-as-pure@7.25.9":
+ dependencies:
+ "@babel/types": 7.26.3
+
+ "@babel/helper-compilation-targets@7.25.9":
+ dependencies:
+ "@babel/compat-data": 7.26.3
+ "@babel/helper-validator-option": 7.25.9
+ browserslist: 4.24.3
+ lru-cache: 5.1.1
+ semver: 6.3.1
+
+ "@babel/helper-create-class-features-plugin@7.25.9(@babel/core@7.26.0)":
+ dependencies:
+ "@babel/core": 7.26.0
+ "@babel/helper-annotate-as-pure": 7.25.9
+ "@babel/helper-member-expression-to-functions": 7.25.9
+ "@babel/helper-optimise-call-expression": 7.25.9
+ "@babel/helper-replace-supers": 7.25.9(@babel/core@7.26.0)
+ "@babel/helper-skip-transparent-expression-wrappers": 7.25.9
+ "@babel/traverse": 7.26.4
+ semver: 6.3.1
+ transitivePeerDependencies:
+ - supports-color
+
+ "@babel/helper-member-expression-to-functions@7.25.9":
+ dependencies:
+ "@babel/traverse": 7.26.4
+ "@babel/types": 7.26.3
+ transitivePeerDependencies:
+ - supports-color
+
+ "@babel/helper-module-imports@7.25.9":
+ dependencies:
+ "@babel/traverse": 7.26.4
+ "@babel/types": 7.26.3
+ transitivePeerDependencies:
+ - supports-color
+
+ "@babel/helper-module-transforms@7.26.0(@babel/core@7.26.0)":
+ dependencies:
+ "@babel/core": 7.26.0
+ "@babel/helper-module-imports": 7.25.9
+ "@babel/helper-validator-identifier": 7.25.9
+ "@babel/traverse": 7.26.4
+ transitivePeerDependencies:
+ - supports-color
+
+ "@babel/helper-optimise-call-expression@7.25.9":
+ dependencies:
+ "@babel/types": 7.26.3
+
+ "@babel/helper-plugin-utils@7.25.9": {}
+
+ "@babel/helper-replace-supers@7.25.9(@babel/core@7.26.0)":
+ dependencies:
+ "@babel/core": 7.26.0
+ "@babel/helper-member-expression-to-functions": 7.25.9
+ "@babel/helper-optimise-call-expression": 7.25.9
+ "@babel/traverse": 7.26.4
+ transitivePeerDependencies:
+ - supports-color
+
+ "@babel/helper-skip-transparent-expression-wrappers@7.25.9":
+ dependencies:
+ "@babel/traverse": 7.26.4
+ "@babel/types": 7.26.3
+ transitivePeerDependencies:
+ - supports-color
+
+ "@babel/helper-string-parser@7.25.9": {}
+
+ "@babel/helper-validator-identifier@7.25.9": {}
+
+ "@babel/helper-validator-option@7.25.9": {}
+
+ "@babel/helpers@7.26.0":
+ dependencies:
+ "@babel/template": 7.25.9
+ "@babel/types": 7.26.3
+
+ "@babel/parser@7.26.3":
+ dependencies:
+ "@babel/types": 7.26.3
+
+ "@babel/plugin-syntax-decorators@7.25.9(@babel/core@7.26.0)":
+ dependencies:
+ "@babel/core": 7.26.0
+ "@babel/helper-plugin-utils": 7.25.9
+
+ "@babel/plugin-syntax-jsx@7.25.9(@babel/core@7.26.0)":
+ dependencies:
+ "@babel/core": 7.26.0
+ "@babel/helper-plugin-utils": 7.25.9
+
+ "@babel/plugin-syntax-typescript@7.25.9(@babel/core@7.26.0)":
+ dependencies:
+ "@babel/core": 7.26.0
+ "@babel/helper-plugin-utils": 7.25.9
+
+ "@babel/plugin-transform-modules-commonjs@7.26.3(@babel/core@7.26.0)":
+ dependencies:
+ "@babel/core": 7.26.0
+ "@babel/helper-module-transforms": 7.26.0(@babel/core@7.26.0)
+ "@babel/helper-plugin-utils": 7.25.9
+ transitivePeerDependencies:
+ - supports-color
+
+ "@babel/plugin-transform-typescript@7.26.3(@babel/core@7.26.0)":
+ dependencies:
+ "@babel/core": 7.26.0
+ "@babel/helper-annotate-as-pure": 7.25.9
+ "@babel/helper-create-class-features-plugin": 7.25.9(@babel/core@7.26.0)
+ "@babel/helper-plugin-utils": 7.25.9
+ "@babel/helper-skip-transparent-expression-wrappers": 7.25.9
+ "@babel/plugin-syntax-typescript": 7.25.9(@babel/core@7.26.0)
+ transitivePeerDependencies:
+ - supports-color
+
+ "@babel/preset-typescript@7.26.0(@babel/core@7.26.0)":
+ dependencies:
+ "@babel/core": 7.26.0
+ "@babel/helper-plugin-utils": 7.25.9
+ "@babel/helper-validator-option": 7.25.9
+ "@babel/plugin-syntax-jsx": 7.25.9(@babel/core@7.26.0)
+ "@babel/plugin-transform-modules-commonjs": 7.26.3(@babel/core@7.26.0)
+ "@babel/plugin-transform-typescript": 7.26.3(@babel/core@7.26.0)
+ transitivePeerDependencies:
+ - supports-color
+
+ "@babel/runtime@7.26.0":
+ dependencies:
+ regenerator-runtime: 0.14.1
+
+ "@babel/template@7.25.9":
+ dependencies:
+ "@babel/code-frame": 7.26.2
+ "@babel/parser": 7.26.3
+ "@babel/types": 7.26.3
+
+ "@babel/traverse@7.26.4":
+ dependencies:
+ "@babel/code-frame": 7.26.2
+ "@babel/generator": 7.26.3
+ "@babel/parser": 7.26.3
+ "@babel/template": 7.25.9
+ "@babel/types": 7.26.3
+ debug: 4.4.0
+ globals: 11.12.0
+ transitivePeerDependencies:
+ - supports-color
+
+ "@babel/types@7.26.3":
+ dependencies:
+ "@babel/helper-string-parser": 7.25.9
+ "@babel/helper-validator-identifier": 7.25.9
+
+ "@emotion/hash@0.9.2": {}
+
+ "@esbuild/aix-ppc64@0.21.5":
+ optional: true
+
+ "@esbuild/aix-ppc64@0.24.2":
+ optional: true
+
+ "@esbuild/android-arm64@0.17.6":
+ optional: true
+
+ "@esbuild/android-arm64@0.21.5":
+ optional: true
+
+ "@esbuild/android-arm64@0.24.2":
+ optional: true
+
+ "@esbuild/android-arm@0.17.6":
+ optional: true
+
+ "@esbuild/android-arm@0.21.5":
+ optional: true
+
+ "@esbuild/android-arm@0.24.2":
+ optional: true
+
+ "@esbuild/android-x64@0.17.6":
+ optional: true
+
+ "@esbuild/android-x64@0.21.5":
+ optional: true
+
+ "@esbuild/android-x64@0.24.2":
+ optional: true
+
+ "@esbuild/darwin-arm64@0.17.6":
+ optional: true
+
+ "@esbuild/darwin-arm64@0.21.5":
+ optional: true
+
+ "@esbuild/darwin-arm64@0.24.2":
+ optional: true
+
+ "@esbuild/darwin-x64@0.17.6":
+ optional: true
+
+ "@esbuild/darwin-x64@0.21.5":
+ optional: true
+
+ "@esbuild/darwin-x64@0.24.2":
+ optional: true
+
+ "@esbuild/freebsd-arm64@0.17.6":
+ optional: true
+
+ "@esbuild/freebsd-arm64@0.21.5":
+ optional: true
+
+ "@esbuild/freebsd-arm64@0.24.2":
+ optional: true
+
+ "@esbuild/freebsd-x64@0.17.6":
+ optional: true
+
+ "@esbuild/freebsd-x64@0.21.5":
+ optional: true
+
+ "@esbuild/freebsd-x64@0.24.2":
+ optional: true
+
+ "@esbuild/linux-arm64@0.17.6":
+ optional: true
+
+ "@esbuild/linux-arm64@0.21.5":
+ optional: true
+
+ "@esbuild/linux-arm64@0.24.2":
+ optional: true
+
+ "@esbuild/linux-arm@0.17.6":
+ optional: true
+
+ "@esbuild/linux-arm@0.21.5":
+ optional: true
+
+ "@esbuild/linux-arm@0.24.2":
+ optional: true
+
+ "@esbuild/linux-ia32@0.17.6":
+ optional: true
+
+ "@esbuild/linux-ia32@0.21.5":
+ optional: true
+
+ "@esbuild/linux-ia32@0.24.2":
+ optional: true
+
+ "@esbuild/linux-loong64@0.17.6":
+ optional: true
+
+ "@esbuild/linux-loong64@0.21.5":
+ optional: true
+
+ "@esbuild/linux-loong64@0.24.2":
+ optional: true
+
+ "@esbuild/linux-mips64el@0.17.6":
+ optional: true
+
+ "@esbuild/linux-mips64el@0.21.5":
+ optional: true
+
+ "@esbuild/linux-mips64el@0.24.2":
+ optional: true
+
+ "@esbuild/linux-ppc64@0.17.6":
+ optional: true
+
+ "@esbuild/linux-ppc64@0.21.5":
+ optional: true
+
+ "@esbuild/linux-ppc64@0.24.2":
+ optional: true
+
+ "@esbuild/linux-riscv64@0.17.6":
+ optional: true
+
+ "@esbuild/linux-riscv64@0.21.5":
+ optional: true
+
+ "@esbuild/linux-riscv64@0.24.2":
+ optional: true
+
+ "@esbuild/linux-s390x@0.17.6":
+ optional: true
+
+ "@esbuild/linux-s390x@0.21.5":
+ optional: true
+
+ "@esbuild/linux-s390x@0.24.2":
+ optional: true
+
+ "@esbuild/linux-x64@0.17.6":
+ optional: true
+
+ "@esbuild/linux-x64@0.21.5":
+ optional: true
+
+ "@esbuild/linux-x64@0.24.2":
+ optional: true
+
+ "@esbuild/netbsd-arm64@0.24.2":
+ optional: true
+
+ "@esbuild/netbsd-x64@0.17.6":
+ optional: true
+
+ "@esbuild/netbsd-x64@0.21.5":
+ optional: true
+
+ "@esbuild/netbsd-x64@0.24.2":
+ optional: true
+
+ "@esbuild/openbsd-arm64@0.24.2":
+ optional: true
+
+ "@esbuild/openbsd-x64@0.17.6":
+ optional: true
+
+ "@esbuild/openbsd-x64@0.21.5":
+ optional: true
+
+ "@esbuild/openbsd-x64@0.24.2":
+ optional: true
+
+ "@esbuild/sunos-x64@0.17.6":
+ optional: true
+
+ "@esbuild/sunos-x64@0.21.5":
+ optional: true
+
+ "@esbuild/sunos-x64@0.24.2":
+ optional: true
+
+ "@esbuild/win32-arm64@0.17.6":
+ optional: true
+
+ "@esbuild/win32-arm64@0.21.5":
+ optional: true
+
+ "@esbuild/win32-arm64@0.24.2":
+ optional: true
+
+ "@esbuild/win32-ia32@0.17.6":
+ optional: true
+
+ "@esbuild/win32-ia32@0.21.5":
+ optional: true
+
+ "@esbuild/win32-ia32@0.24.2":
+ optional: true
+
+ "@esbuild/win32-x64@0.17.6":
+ optional: true
+
+ "@esbuild/win32-x64@0.21.5":
+ optional: true
+
+ "@esbuild/win32-x64@0.24.2":
+ optional: true
+
+ "@eslint-community/eslint-utils@4.4.1(eslint@9.17.0(jiti@1.21.7))":
+ dependencies:
+ eslint: 9.17.0(jiti@1.21.7)
+ eslint-visitor-keys: 3.4.3
+
+ "@eslint-community/regexpp@4.12.1": {}
+
+ "@eslint/config-array@0.19.1":
+ dependencies:
+ "@eslint/object-schema": 2.1.5
+ debug: 4.4.0
+ minimatch: 3.1.2
+ transitivePeerDependencies:
+ - supports-color
+
+ "@eslint/core@0.9.1":
+ dependencies:
+ "@types/json-schema": 7.0.15
+
+ "@eslint/eslintrc@3.2.0":
+ dependencies:
+ ajv: 6.12.6
+ debug: 4.4.0
+ espree: 10.3.0
+ globals: 14.0.0
+ ignore: 5.3.2
+ import-fresh: 3.3.0
+ js-yaml: 4.1.0
+ minimatch: 3.1.2
+ strip-json-comments: 3.1.1
+ transitivePeerDependencies:
+ - supports-color
+
+ "@eslint/js@9.17.0": {}
+
+ "@eslint/object-schema@2.1.5": {}
+
+ "@eslint/plugin-kit@0.2.4":
+ dependencies:
+ levn: 0.4.1
+
+ "@floating-ui/core@1.6.9":
+ dependencies:
+ "@floating-ui/utils": 0.2.9
+
+ "@floating-ui/dom@1.6.13":
+ dependencies:
+ "@floating-ui/core": 1.6.9
+ "@floating-ui/utils": 0.2.9
+
+ "@floating-ui/react-dom@2.1.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1)":
+ dependencies:
+ "@floating-ui/dom": 1.6.13
+ react: 18.3.1
+ react-dom: 18.3.1(react@18.3.1)
+
+ "@floating-ui/utils@0.2.9": {}
+
+ "@humanfs/core@0.19.1": {}
+
+ "@humanfs/node@0.16.6":
+ dependencies:
+ "@humanfs/core": 0.19.1
+ "@humanwhocodes/retry": 0.3.1
+
+ "@humanwhocodes/module-importer@1.0.1": {}
+
+ "@humanwhocodes/retry@0.3.1": {}
+
+ "@humanwhocodes/retry@0.4.1": {}
+
+ "@isaacs/cliui@8.0.2":
+ dependencies:
+ string-width: 5.1.2
+ string-width-cjs: string-width@4.2.3
+ strip-ansi: 7.1.0
+ strip-ansi-cjs: strip-ansi@6.0.1
+ wrap-ansi: 8.1.0
+ wrap-ansi-cjs: wrap-ansi@7.0.0
+
+ "@jridgewell/gen-mapping@0.3.8":
+ dependencies:
+ "@jridgewell/set-array": 1.2.1
+ "@jridgewell/sourcemap-codec": 1.5.0
+ "@jridgewell/trace-mapping": 0.3.25
+
+ "@jridgewell/resolve-uri@3.1.2": {}
+
+ "@jridgewell/set-array@1.2.1": {}
+
+ "@jridgewell/sourcemap-codec@1.5.0": {}
+
+ "@jridgewell/trace-mapping@0.3.25":
+ dependencies:
+ "@jridgewell/resolve-uri": 3.1.2
+ "@jridgewell/sourcemap-codec": 1.5.0
+
+ "@jspm/core@2.0.1": {}
+
+ "@mdx-js/mdx@2.3.0":
+ 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
+ transitivePeerDependencies:
+ - supports-color
+
+ "@nodelib/fs.scandir@2.1.5":
+ dependencies:
+ "@nodelib/fs.stat": 2.0.5
+ run-parallel: 1.2.0
+
+ "@nodelib/fs.stat@2.0.5": {}
+
+ "@nodelib/fs.walk@1.2.8":
+ dependencies:
+ "@nodelib/fs.scandir": 2.1.5
+ fastq: 1.18.0
+
+ "@nolyfill/is-core-module@1.0.39": {}
+
+ "@npmcli/fs@3.1.1":
+ dependencies:
+ semver: 7.6.3
+
+ "@npmcli/git@4.1.0":
+ dependencies:
+ "@npmcli/promise-spawn": 6.0.2
+ lru-cache: 7.18.3
+ npm-pick-manifest: 8.0.2
+ proc-log: 3.0.0
+ promise-inflight: 1.0.1
+ promise-retry: 2.0.1
+ semver: 7.6.3
+ which: 3.0.1
+ transitivePeerDependencies:
+ - bluebird
+
+ "@npmcli/package-json@4.0.1":
+ dependencies:
+ "@npmcli/git": 4.1.0
+ glob: 10.4.5
+ hosted-git-info: 6.1.3
+ json-parse-even-better-errors: 3.0.2
+ normalize-package-data: 5.0.0
+ proc-log: 3.0.0
+ semver: 7.6.3
+ transitivePeerDependencies:
+ - bluebird
+
+ "@npmcli/promise-spawn@6.0.2":
+ dependencies:
+ which: 3.0.1
+
+ "@pkgjs/parseargs@0.11.0":
+ optional: true
+
+ "@radix-ui/primitive@1.1.1": {}
+
+ "@radix-ui/react-arrow@1.1.1(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)":
+ dependencies:
+ "@radix-ui/react-primitive": 2.0.1(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(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)
+ optionalDependencies:
+ "@types/react": 18.3.18
+ "@types/react-dom": 18.3.5(@types/react@18.3.18)
+
+ "@radix-ui/react-avatar@1.1.2(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)":
+ dependencies:
+ "@radix-ui/react-context": 1.1.1(@types/react@18.3.18)(react@18.3.1)
+ "@radix-ui/react-primitive": 2.0.1(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ "@radix-ui/react-use-callback-ref": 1.1.0(@types/react@18.3.18)(react@18.3.1)
+ "@radix-ui/react-use-layout-effect": 1.1.0(@types/react@18.3.18)(react@18.3.1)
+ react: 18.3.1
+ react-dom: 18.3.1(react@18.3.1)
+ optionalDependencies:
+ "@types/react": 18.3.18
+ "@types/react-dom": 18.3.5(@types/react@18.3.18)
+
+ "@radix-ui/react-collapsible@1.1.2(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)":
+ dependencies:
+ "@radix-ui/primitive": 1.1.1
+ "@radix-ui/react-compose-refs": 1.1.1(@types/react@18.3.18)(react@18.3.1)
+ "@radix-ui/react-context": 1.1.1(@types/react@18.3.18)(react@18.3.1)
+ "@radix-ui/react-id": 1.1.0(@types/react@18.3.18)(react@18.3.1)
+ "@radix-ui/react-presence": 1.1.2(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ "@radix-ui/react-primitive": 2.0.1(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ "@radix-ui/react-use-controllable-state": 1.1.0(@types/react@18.3.18)(react@18.3.1)
+ "@radix-ui/react-use-layout-effect": 1.1.0(@types/react@18.3.18)(react@18.3.1)
+ react: 18.3.1
+ react-dom: 18.3.1(react@18.3.1)
+ optionalDependencies:
+ "@types/react": 18.3.18
+ "@types/react-dom": 18.3.5(@types/react@18.3.18)
+
+ "@radix-ui/react-collection@1.1.1(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)":
+ dependencies:
+ "@radix-ui/react-compose-refs": 1.1.1(@types/react@18.3.18)(react@18.3.1)
+ "@radix-ui/react-context": 1.1.1(@types/react@18.3.18)(react@18.3.1)
+ "@radix-ui/react-primitive": 2.0.1(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ "@radix-ui/react-slot": 1.1.1(@types/react@18.3.18)(react@18.3.1)
+ react: 18.3.1
+ react-dom: 18.3.1(react@18.3.1)
+ optionalDependencies:
+ "@types/react": 18.3.18
+ "@types/react-dom": 18.3.5(@types/react@18.3.18)
+
+ "@radix-ui/react-compose-refs@1.1.1(@types/react@18.3.18)(react@18.3.1)":
+ dependencies:
+ react: 18.3.1
+ optionalDependencies:
+ "@types/react": 18.3.18
+
+ "@radix-ui/react-context@1.1.1(@types/react@18.3.18)(react@18.3.1)":
+ dependencies:
+ react: 18.3.1
+ optionalDependencies:
+ "@types/react": 18.3.18
+
+ "@radix-ui/react-dialog@1.1.4(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)":
+ dependencies:
+ "@radix-ui/primitive": 1.1.1
+ "@radix-ui/react-compose-refs": 1.1.1(@types/react@18.3.18)(react@18.3.1)
+ "@radix-ui/react-context": 1.1.1(@types/react@18.3.18)(react@18.3.1)
+ "@radix-ui/react-dismissable-layer": 1.1.3(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ "@radix-ui/react-focus-guards": 1.1.1(@types/react@18.3.18)(react@18.3.1)
+ "@radix-ui/react-focus-scope": 1.1.1(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ "@radix-ui/react-id": 1.1.0(@types/react@18.3.18)(react@18.3.1)
+ "@radix-ui/react-portal": 1.1.3(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ "@radix-ui/react-presence": 1.1.2(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ "@radix-ui/react-primitive": 2.0.1(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ "@radix-ui/react-slot": 1.1.1(@types/react@18.3.18)(react@18.3.1)
+ "@radix-ui/react-use-controllable-state": 1.1.0(@types/react@18.3.18)(react@18.3.1)
+ aria-hidden: 1.2.4
+ react: 18.3.1
+ react-dom: 18.3.1(react@18.3.1)
+ react-remove-scroll: 2.6.2(@types/react@18.3.18)(react@18.3.1)
+ optionalDependencies:
+ "@types/react": 18.3.18
+ "@types/react-dom": 18.3.5(@types/react@18.3.18)
+
+ "@radix-ui/react-direction@1.1.0(@types/react@18.3.18)(react@18.3.1)":
+ dependencies:
+ react: 18.3.1
+ optionalDependencies:
+ "@types/react": 18.3.18
+
+ "@radix-ui/react-dismissable-layer@1.1.3(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)":
+ dependencies:
+ "@radix-ui/primitive": 1.1.1
+ "@radix-ui/react-compose-refs": 1.1.1(@types/react@18.3.18)(react@18.3.1)
+ "@radix-ui/react-primitive": 2.0.1(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ "@radix-ui/react-use-callback-ref": 1.1.0(@types/react@18.3.18)(react@18.3.1)
+ "@radix-ui/react-use-escape-keydown": 1.1.0(@types/react@18.3.18)(react@18.3.1)
+ react: 18.3.1
+ react-dom: 18.3.1(react@18.3.1)
+ optionalDependencies:
+ "@types/react": 18.3.18
+ "@types/react-dom": 18.3.5(@types/react@18.3.18)
+
+ "@radix-ui/react-focus-guards@1.1.1(@types/react@18.3.18)(react@18.3.1)":
+ dependencies:
+ react: 18.3.1
+ optionalDependencies:
+ "@types/react": 18.3.18
+
+ "@radix-ui/react-focus-scope@1.1.1(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)":
+ dependencies:
+ "@radix-ui/react-compose-refs": 1.1.1(@types/react@18.3.18)(react@18.3.1)
+ "@radix-ui/react-primitive": 2.0.1(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ "@radix-ui/react-use-callback-ref": 1.1.0(@types/react@18.3.18)(react@18.3.1)
+ react: 18.3.1
+ react-dom: 18.3.1(react@18.3.1)
+ optionalDependencies:
+ "@types/react": 18.3.18
+ "@types/react-dom": 18.3.5(@types/react@18.3.18)
+
+ "@radix-ui/react-id@1.1.0(@types/react@18.3.18)(react@18.3.1)":
+ dependencies:
+ "@radix-ui/react-use-layout-effect": 1.1.0(@types/react@18.3.18)(react@18.3.1)
+ react: 18.3.1
+ optionalDependencies:
+ "@types/react": 18.3.18
+
+ "@radix-ui/react-label@2.1.1(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)":
+ dependencies:
+ "@radix-ui/react-primitive": 2.0.1(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(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)
+ optionalDependencies:
+ "@types/react": 18.3.18
+ "@types/react-dom": 18.3.5(@types/react@18.3.18)
+
+ "@radix-ui/react-popover@1.1.4(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)":
+ dependencies:
+ "@radix-ui/primitive": 1.1.1
+ "@radix-ui/react-compose-refs": 1.1.1(@types/react@18.3.18)(react@18.3.1)
+ "@radix-ui/react-context": 1.1.1(@types/react@18.3.18)(react@18.3.1)
+ "@radix-ui/react-dismissable-layer": 1.1.3(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ "@radix-ui/react-focus-guards": 1.1.1(@types/react@18.3.18)(react@18.3.1)
+ "@radix-ui/react-focus-scope": 1.1.1(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ "@radix-ui/react-id": 1.1.0(@types/react@18.3.18)(react@18.3.1)
+ "@radix-ui/react-popper": 1.2.1(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ "@radix-ui/react-portal": 1.1.3(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ "@radix-ui/react-presence": 1.1.2(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ "@radix-ui/react-primitive": 2.0.1(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ "@radix-ui/react-slot": 1.1.1(@types/react@18.3.18)(react@18.3.1)
+ "@radix-ui/react-use-controllable-state": 1.1.0(@types/react@18.3.18)(react@18.3.1)
+ aria-hidden: 1.2.4
+ react: 18.3.1
+ react-dom: 18.3.1(react@18.3.1)
+ react-remove-scroll: 2.6.2(@types/react@18.3.18)(react@18.3.1)
+ optionalDependencies:
+ "@types/react": 18.3.18
+ "@types/react-dom": 18.3.5(@types/react@18.3.18)
+
+ "@radix-ui/react-popper@1.2.1(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)":
+ dependencies:
+ "@floating-ui/react-dom": 2.1.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ "@radix-ui/react-arrow": 1.1.1(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ "@radix-ui/react-compose-refs": 1.1.1(@types/react@18.3.18)(react@18.3.1)
+ "@radix-ui/react-context": 1.1.1(@types/react@18.3.18)(react@18.3.1)
+ "@radix-ui/react-primitive": 2.0.1(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ "@radix-ui/react-use-callback-ref": 1.1.0(@types/react@18.3.18)(react@18.3.1)
+ "@radix-ui/react-use-layout-effect": 1.1.0(@types/react@18.3.18)(react@18.3.1)
+ "@radix-ui/react-use-rect": 1.1.0(@types/react@18.3.18)(react@18.3.1)
+ "@radix-ui/react-use-size": 1.1.0(@types/react@18.3.18)(react@18.3.1)
+ "@radix-ui/rect": 1.1.0
+ react: 18.3.1
+ react-dom: 18.3.1(react@18.3.1)
+ optionalDependencies:
+ "@types/react": 18.3.18
+ "@types/react-dom": 18.3.5(@types/react@18.3.18)
+
+ "@radix-ui/react-portal@1.1.3(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)":
+ dependencies:
+ "@radix-ui/react-primitive": 2.0.1(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ "@radix-ui/react-use-layout-effect": 1.1.0(@types/react@18.3.18)(react@18.3.1)
+ react: 18.3.1
+ react-dom: 18.3.1(react@18.3.1)
+ optionalDependencies:
+ "@types/react": 18.3.18
+ "@types/react-dom": 18.3.5(@types/react@18.3.18)
+
+ "@radix-ui/react-presence@1.1.2(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)":
+ dependencies:
+ "@radix-ui/react-compose-refs": 1.1.1(@types/react@18.3.18)(react@18.3.1)
+ "@radix-ui/react-use-layout-effect": 1.1.0(@types/react@18.3.18)(react@18.3.1)
+ react: 18.3.1
+ react-dom: 18.3.1(react@18.3.1)
+ optionalDependencies:
+ "@types/react": 18.3.18
+ "@types/react-dom": 18.3.5(@types/react@18.3.18)
+
+ "@radix-ui/react-primitive@2.0.1(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)":
+ dependencies:
+ "@radix-ui/react-slot": 1.1.1(@types/react@18.3.18)(react@18.3.1)
+ react: 18.3.1
+ react-dom: 18.3.1(react@18.3.1)
+ optionalDependencies:
+ "@types/react": 18.3.18
+ "@types/react-dom": 18.3.5(@types/react@18.3.18)
+
+ "@radix-ui/react-roving-focus@1.1.1(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)":
+ dependencies:
+ "@radix-ui/primitive": 1.1.1
+ "@radix-ui/react-collection": 1.1.1(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ "@radix-ui/react-compose-refs": 1.1.1(@types/react@18.3.18)(react@18.3.1)
+ "@radix-ui/react-context": 1.1.1(@types/react@18.3.18)(react@18.3.1)
+ "@radix-ui/react-direction": 1.1.0(@types/react@18.3.18)(react@18.3.1)
+ "@radix-ui/react-id": 1.1.0(@types/react@18.3.18)(react@18.3.1)
+ "@radix-ui/react-primitive": 2.0.1(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ "@radix-ui/react-use-callback-ref": 1.1.0(@types/react@18.3.18)(react@18.3.1)
+ "@radix-ui/react-use-controllable-state": 1.1.0(@types/react@18.3.18)(react@18.3.1)
+ react: 18.3.1
+ react-dom: 18.3.1(react@18.3.1)
+ optionalDependencies:
+ "@types/react": 18.3.18
+ "@types/react-dom": 18.3.5(@types/react@18.3.18)
+
+ "@radix-ui/react-separator@1.1.1(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)":
+ dependencies:
+ "@radix-ui/react-primitive": 2.0.1(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(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)
+ optionalDependencies:
+ "@types/react": 18.3.18
+ "@types/react-dom": 18.3.5(@types/react@18.3.18)
+
+ "@radix-ui/react-slot@1.1.1(@types/react@18.3.18)(react@18.3.1)":
+ dependencies:
+ "@radix-ui/react-compose-refs": 1.1.1(@types/react@18.3.18)(react@18.3.1)
+ react: 18.3.1
+ optionalDependencies:
+ "@types/react": 18.3.18
+
+ "@radix-ui/react-tabs@1.1.2(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)":
+ dependencies:
+ "@radix-ui/primitive": 1.1.1
+ "@radix-ui/react-context": 1.1.1(@types/react@18.3.18)(react@18.3.1)
+ "@radix-ui/react-direction": 1.1.0(@types/react@18.3.18)(react@18.3.1)
+ "@radix-ui/react-id": 1.1.0(@types/react@18.3.18)(react@18.3.1)
+ "@radix-ui/react-presence": 1.1.2(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ "@radix-ui/react-primitive": 2.0.1(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ "@radix-ui/react-roving-focus": 1.1.1(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ "@radix-ui/react-use-controllable-state": 1.1.0(@types/react@18.3.18)(react@18.3.1)
+ react: 18.3.1
+ react-dom: 18.3.1(react@18.3.1)
+ optionalDependencies:
+ "@types/react": 18.3.18
+ "@types/react-dom": 18.3.5(@types/react@18.3.18)
+
+ "@radix-ui/react-toast@1.2.4(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)":
+ dependencies:
+ "@radix-ui/primitive": 1.1.1
+ "@radix-ui/react-collection": 1.1.1(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ "@radix-ui/react-compose-refs": 1.1.1(@types/react@18.3.18)(react@18.3.1)
+ "@radix-ui/react-context": 1.1.1(@types/react@18.3.18)(react@18.3.1)
+ "@radix-ui/react-dismissable-layer": 1.1.3(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ "@radix-ui/react-portal": 1.1.3(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ "@radix-ui/react-presence": 1.1.2(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ "@radix-ui/react-primitive": 2.0.1(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ "@radix-ui/react-use-callback-ref": 1.1.0(@types/react@18.3.18)(react@18.3.1)
+ "@radix-ui/react-use-controllable-state": 1.1.0(@types/react@18.3.18)(react@18.3.1)
+ "@radix-ui/react-use-layout-effect": 1.1.0(@types/react@18.3.18)(react@18.3.1)
+ "@radix-ui/react-visually-hidden": 1.1.1(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(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)
+ optionalDependencies:
+ "@types/react": 18.3.18
+ "@types/react-dom": 18.3.5(@types/react@18.3.18)
+
+ "@radix-ui/react-tooltip@1.1.6(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)":
+ dependencies:
+ "@radix-ui/primitive": 1.1.1
+ "@radix-ui/react-compose-refs": 1.1.1(@types/react@18.3.18)(react@18.3.1)
+ "@radix-ui/react-context": 1.1.1(@types/react@18.3.18)(react@18.3.1)
+ "@radix-ui/react-dismissable-layer": 1.1.3(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ "@radix-ui/react-id": 1.1.0(@types/react@18.3.18)(react@18.3.1)
+ "@radix-ui/react-popper": 1.2.1(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ "@radix-ui/react-portal": 1.1.3(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ "@radix-ui/react-presence": 1.1.2(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ "@radix-ui/react-primitive": 2.0.1(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ "@radix-ui/react-slot": 1.1.1(@types/react@18.3.18)(react@18.3.1)
+ "@radix-ui/react-use-controllable-state": 1.1.0(@types/react@18.3.18)(react@18.3.1)
+ "@radix-ui/react-visually-hidden": 1.1.1(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(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)
+ optionalDependencies:
+ "@types/react": 18.3.18
+ "@types/react-dom": 18.3.5(@types/react@18.3.18)
+
+ "@radix-ui/react-use-callback-ref@1.1.0(@types/react@18.3.18)(react@18.3.1)":
+ dependencies:
+ react: 18.3.1
+ optionalDependencies:
+ "@types/react": 18.3.18
+
+ "@radix-ui/react-use-controllable-state@1.1.0(@types/react@18.3.18)(react@18.3.1)":
+ dependencies:
+ "@radix-ui/react-use-callback-ref": 1.1.0(@types/react@18.3.18)(react@18.3.1)
+ react: 18.3.1
+ optionalDependencies:
+ "@types/react": 18.3.18
+
+ "@radix-ui/react-use-escape-keydown@1.1.0(@types/react@18.3.18)(react@18.3.1)":
+ dependencies:
+ "@radix-ui/react-use-callback-ref": 1.1.0(@types/react@18.3.18)(react@18.3.1)
+ react: 18.3.1
+ optionalDependencies:
+ "@types/react": 18.3.18
+
+ "@radix-ui/react-use-layout-effect@1.1.0(@types/react@18.3.18)(react@18.3.1)":
+ dependencies:
+ react: 18.3.1
+ optionalDependencies:
+ "@types/react": 18.3.18
+
+ "@radix-ui/react-use-rect@1.1.0(@types/react@18.3.18)(react@18.3.1)":
+ dependencies:
+ "@radix-ui/rect": 1.1.0
+ react: 18.3.1
+ optionalDependencies:
+ "@types/react": 18.3.18
+
+ "@radix-ui/react-use-size@1.1.0(@types/react@18.3.18)(react@18.3.1)":
+ dependencies:
+ "@radix-ui/react-use-layout-effect": 1.1.0(@types/react@18.3.18)(react@18.3.1)
+ react: 18.3.1
+ optionalDependencies:
+ "@types/react": 18.3.18
+
+ "@radix-ui/react-visually-hidden@1.1.1(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)":
+ dependencies:
+ "@radix-ui/react-primitive": 2.0.1(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(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)
+ optionalDependencies:
+ "@types/react": 18.3.18
+ "@types/react-dom": 18.3.5(@types/react@18.3.18)
+
+ "@radix-ui/rect@1.1.0": {}
+
+ "@remix-run/dev@2.15.2(@remix-run/react@2.15.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.3))(@remix-run/serve@2.15.2(typescript@5.6.3))(@types/node@22.10.5)(typescript@5.6.3)(vite@6.0.7(@types/node@22.10.5)(jiti@1.21.7)(yaml@2.7.0))":
+ dependencies:
+ "@babel/core": 7.26.0
+ "@babel/generator": 7.26.3
+ "@babel/parser": 7.26.3
+ "@babel/plugin-syntax-decorators": 7.25.9(@babel/core@7.26.0)
+ "@babel/plugin-syntax-jsx": 7.25.9(@babel/core@7.26.0)
+ "@babel/preset-typescript": 7.26.0(@babel/core@7.26.0)
+ "@babel/traverse": 7.26.4
+ "@babel/types": 7.26.3
+ "@mdx-js/mdx": 2.3.0
+ "@npmcli/package-json": 4.0.1
+ "@remix-run/node": 2.15.2(typescript@5.6.3)
+ "@remix-run/react": 2.15.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.3)
+ "@remix-run/router": 1.21.0
+ "@remix-run/server-runtime": 2.15.2(typescript@5.6.3)
+ "@types/mdx": 2.0.13
+ "@vanilla-extract/integration": 6.5.0(@types/node@22.10.5)
+ arg: 5.0.2
+ cacache: 17.1.4
+ chalk: 4.1.2
+ chokidar: 3.6.0
+ cross-spawn: 7.0.6
+ dotenv: 16.4.7
+ es-module-lexer: 1.6.0
+ esbuild: 0.17.6
+ esbuild-plugins-node-modules-polyfill: 1.6.8(esbuild@0.17.6)
+ execa: 5.1.1
+ exit-hook: 2.2.1
+ express: 4.21.2
+ fs-extra: 10.1.0
+ get-port: 5.1.1
+ gunzip-maybe: 1.4.2
+ jsesc: 3.0.2
+ json5: 2.2.3
+ lodash: 4.17.21
+ lodash.debounce: 4.0.8
+ minimatch: 9.0.5
+ ora: 5.4.1
+ picocolors: 1.1.1
+ picomatch: 2.3.1
+ pidtree: 0.6.0
+ postcss: 8.4.49
+ postcss-discard-duplicates: 5.1.0(postcss@8.4.49)
+ postcss-load-config: 4.0.2(postcss@8.4.49)
+ postcss-modules: 6.0.1(postcss@8.4.49)
+ prettier: 2.8.8
+ pretty-ms: 7.0.1
+ react-refresh: 0.14.2
+ remark-frontmatter: 4.0.1
+ remark-mdx-frontmatter: 1.1.1
+ semver: 7.6.3
+ set-cookie-parser: 2.7.1
+ tar-fs: 2.1.1
+ tsconfig-paths: 4.2.0
+ valibot: 0.41.0(typescript@5.6.3)
+ vite-node: 1.6.0(@types/node@22.10.5)
+ ws: 7.5.10
+ optionalDependencies:
+ "@remix-run/serve": 2.15.2(typescript@5.6.3)
+ typescript: 5.6.3
+ vite: 6.0.7(@types/node@22.10.5)(jiti@1.21.7)(yaml@2.7.0)
+ transitivePeerDependencies:
+ - "@types/node"
+ - babel-plugin-macros
+ - bluebird
+ - bufferutil
+ - less
+ - lightningcss
+ - sass
+ - sass-embedded
+ - stylus
+ - sugarss
+ - supports-color
+ - terser
+ - ts-node
+ - utf-8-validate
+
+ "@remix-run/express@2.15.2(express@4.21.2)(typescript@5.6.3)":
+ dependencies:
+ "@remix-run/node": 2.15.2(typescript@5.6.3)
+ express: 4.21.2
+ optionalDependencies:
+ typescript: 5.6.3
+
+ "@remix-run/node@2.15.2(typescript@5.6.3)":
+ dependencies:
+ "@remix-run/server-runtime": 2.15.2(typescript@5.6.3)
+ "@remix-run/web-fetch": 4.4.2
+ "@web3-storage/multipart-parser": 1.0.0
+ cookie-signature: 1.2.2
+ source-map-support: 0.5.21
+ stream-slice: 0.1.2
+ undici: 6.21.0
+ optionalDependencies:
+ typescript: 5.6.3
+
+ "@remix-run/react@2.15.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.3)":
+ dependencies:
+ "@remix-run/router": 1.21.0
+ "@remix-run/server-runtime": 2.15.2(typescript@5.6.3)
+ react: 18.3.1
+ react-dom: 18.3.1(react@18.3.1)
+ react-router: 6.28.1(react@18.3.1)
+ react-router-dom: 6.28.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ turbo-stream: 2.4.0
+ optionalDependencies:
+ typescript: 5.6.3
+
+ "@remix-run/router@1.21.0": {}
+
+ "@remix-run/serve@2.15.2(typescript@5.6.3)":
+ dependencies:
+ "@remix-run/express": 2.15.2(express@4.21.2)(typescript@5.6.3)
+ "@remix-run/node": 2.15.2(typescript@5.6.3)
+ chokidar: 3.6.0
+ compression: 1.7.5
+ express: 4.21.2
+ get-port: 5.1.1
+ morgan: 1.10.0
+ source-map-support: 0.5.21
+ transitivePeerDependencies:
+ - supports-color
+ - typescript
+
+ "@remix-run/server-runtime@2.15.2(typescript@5.6.3)":
+ dependencies:
+ "@remix-run/router": 1.21.0
+ "@types/cookie": 0.6.0
+ "@web3-storage/multipart-parser": 1.0.0
+ cookie: 0.6.0
+ set-cookie-parser: 2.7.1
+ source-map: 0.7.4
+ turbo-stream: 2.4.0
+ optionalDependencies:
+ typescript: 5.6.3
+
+ "@remix-run/web-blob@3.1.0":
+ dependencies:
+ "@remix-run/web-stream": 1.1.0
+ web-encoding: 1.1.5
+
+ "@remix-run/web-fetch@4.4.2":
+ dependencies:
+ "@remix-run/web-blob": 3.1.0
+ "@remix-run/web-file": 3.1.0
+ "@remix-run/web-form-data": 3.1.0
+ "@remix-run/web-stream": 1.1.0
+ "@web3-storage/multipart-parser": 1.0.0
+ abort-controller: 3.0.0
+ data-uri-to-buffer: 3.0.1
+ mrmime: 1.0.1
+
+ "@remix-run/web-file@3.1.0":
+ dependencies:
+ "@remix-run/web-blob": 3.1.0
+
+ "@remix-run/web-form-data@3.1.0":
+ dependencies:
+ web-encoding: 1.1.5
+
+ "@remix-run/web-stream@1.1.0":
+ dependencies:
+ web-streams-polyfill: 3.3.3
+
+ "@rollup/rollup-android-arm-eabi@4.30.1":
+ optional: true
+
+ "@rollup/rollup-android-arm64@4.30.1":
+ optional: true
+
+ "@rollup/rollup-darwin-arm64@4.30.1":
+ optional: true
+
+ "@rollup/rollup-darwin-x64@4.30.1":
+ optional: true
+
+ "@rollup/rollup-freebsd-arm64@4.30.1":
+ optional: true
+
+ "@rollup/rollup-freebsd-x64@4.30.1":
+ optional: true
+
+ "@rollup/rollup-linux-arm-gnueabihf@4.30.1":
+ optional: true
+
+ "@rollup/rollup-linux-arm-musleabihf@4.30.1":
+ optional: true
+
+ "@rollup/rollup-linux-arm64-gnu@4.30.1":
+ optional: true
+
+ "@rollup/rollup-linux-arm64-musl@4.30.1":
+ optional: true
+
+ "@rollup/rollup-linux-loongarch64-gnu@4.30.1":
+ optional: true
+
+ "@rollup/rollup-linux-powerpc64le-gnu@4.30.1":
+ optional: true
+
+ "@rollup/rollup-linux-riscv64-gnu@4.30.1":
+ optional: true
+
+ "@rollup/rollup-linux-s390x-gnu@4.30.1":
+ optional: true
+
+ "@rollup/rollup-linux-x64-gnu@4.30.1":
+ optional: true
+
+ "@rollup/rollup-linux-x64-musl@4.30.1":
+ optional: true
+
+ "@rollup/rollup-win32-arm64-msvc@4.30.1":
+ optional: true
+
+ "@rollup/rollup-win32-ia32-msvc@4.30.1":
+ optional: true
+
+ "@rollup/rollup-win32-x64-msvc@4.30.1":
+ optional: true
+
+ "@rtsao/scc@1.1.0": {}
+
+ "@swc/core-darwin-arm64@1.10.6":
+ optional: true
+
+ "@swc/core-darwin-x64@1.10.6":
+ optional: true
+
+ "@swc/core-linux-arm-gnueabihf@1.10.6":
+ optional: true
+
+ "@swc/core-linux-arm64-gnu@1.10.6":
+ optional: true
+
+ "@swc/core-linux-arm64-musl@1.10.6":
+ optional: true
+
+ "@swc/core-linux-x64-gnu@1.10.6":
+ optional: true
+
+ "@swc/core-linux-x64-musl@1.10.6":
+ optional: true
+
+ "@swc/core-win32-arm64-msvc@1.10.6":
+ optional: true
+
+ "@swc/core-win32-ia32-msvc@1.10.6":
+ optional: true
+
+ "@swc/core-win32-x64-msvc@1.10.6":
+ optional: true
+
+ "@swc/core@1.10.6":
+ dependencies:
+ "@swc/counter": 0.1.3
+ "@swc/types": 0.1.17
+ optionalDependencies:
+ "@swc/core-darwin-arm64": 1.10.6
+ "@swc/core-darwin-x64": 1.10.6
+ "@swc/core-linux-arm-gnueabihf": 1.10.6
+ "@swc/core-linux-arm64-gnu": 1.10.6
+ "@swc/core-linux-arm64-musl": 1.10.6
+ "@swc/core-linux-x64-gnu": 1.10.6
+ "@swc/core-linux-x64-musl": 1.10.6
+ "@swc/core-win32-arm64-msvc": 1.10.6
+ "@swc/core-win32-ia32-msvc": 1.10.6
+ "@swc/core-win32-x64-msvc": 1.10.6
+
+ "@swc/counter@0.1.3": {}
+
+ "@swc/types@0.1.17":
+ dependencies:
+ "@swc/counter": 0.1.3
+
+ "@tanstack/query-core@5.62.16": {}
+
+ "@tanstack/react-query@5.62.16(react@18.3.1)":
+ dependencies:
+ "@tanstack/query-core": 5.62.16
+ react: 18.3.1
+
+ "@types/acorn@4.0.6":
+ dependencies:
+ "@types/estree": 1.0.6
+
+ "@types/cookie@0.6.0": {}
+
+ "@types/debug@4.1.12":
+ dependencies:
+ "@types/ms": 0.7.34
+
+ "@types/estree-jsx@1.0.5":
+ dependencies:
+ "@types/estree": 1.0.6
+
+ "@types/estree@1.0.6": {}
+
+ "@types/hast@2.3.10":
+ dependencies:
+ "@types/unist": 2.0.11
+
+ "@types/json-schema@7.0.15": {}
+
+ "@types/json5@0.0.29": {}
+
+ "@types/mdast@3.0.15":
+ dependencies:
+ "@types/unist": 2.0.11
+
+ "@types/mdx@2.0.13": {}
+
+ "@types/ms@0.7.34": {}
+
+ "@types/node@22.10.5":
+ dependencies:
+ undici-types: 6.20.0
+
+ "@types/prop-types@15.7.14": {}
+
+ "@types/react-dom@18.3.5(@types/react@18.3.18)":
+ dependencies:
+ "@types/react": 18.3.18
+
+ "@types/react@18.3.18":
+ dependencies:
+ "@types/prop-types": 15.7.14
+ csstype: 3.1.3
+
+ "@types/semver@7.5.8": {}
+
+ "@types/unist@2.0.11": {}
+
+ "@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@9.17.0(jiti@1.21.7))(typescript@5.6.3))(eslint@9.17.0(jiti@1.21.7))(typescript@5.6.3)":
+ dependencies:
+ "@eslint-community/regexpp": 4.12.1
+ "@typescript-eslint/parser": 6.21.0(eslint@9.17.0(jiti@1.21.7))(typescript@5.6.3)
+ "@typescript-eslint/scope-manager": 6.21.0
+ "@typescript-eslint/type-utils": 6.21.0(eslint@9.17.0(jiti@1.21.7))(typescript@5.6.3)
+ "@typescript-eslint/utils": 6.21.0(eslint@9.17.0(jiti@1.21.7))(typescript@5.6.3)
+ "@typescript-eslint/visitor-keys": 6.21.0
+ debug: 4.4.0
+ eslint: 9.17.0(jiti@1.21.7)
+ graphemer: 1.4.0
+ ignore: 5.3.2
+ natural-compare: 1.4.0
+ semver: 7.6.3
+ ts-api-utils: 1.4.3(typescript@5.6.3)
+ optionalDependencies:
+ typescript: 5.6.3
+ transitivePeerDependencies:
+ - supports-color
+
+ "@typescript-eslint/eslint-plugin@8.19.1(@typescript-eslint/parser@8.19.1(eslint@9.17.0(jiti@1.21.7))(typescript@5.6.3))(eslint@9.17.0(jiti@1.21.7))(typescript@5.6.3)":
+ dependencies:
+ "@eslint-community/regexpp": 4.12.1
+ "@typescript-eslint/parser": 8.19.1(eslint@9.17.0(jiti@1.21.7))(typescript@5.6.3)
+ "@typescript-eslint/scope-manager": 8.19.1
+ "@typescript-eslint/type-utils": 8.19.1(eslint@9.17.0(jiti@1.21.7))(typescript@5.6.3)
+ "@typescript-eslint/utils": 8.19.1(eslint@9.17.0(jiti@1.21.7))(typescript@5.6.3)
+ "@typescript-eslint/visitor-keys": 8.19.1
+ eslint: 9.17.0(jiti@1.21.7)
+ graphemer: 1.4.0
+ ignore: 5.3.2
+ natural-compare: 1.4.0
+ ts-api-utils: 2.0.0(typescript@5.6.3)
+ typescript: 5.6.3
+ transitivePeerDependencies:
+ - supports-color
+
+ "@typescript-eslint/parser@6.21.0(eslint@9.17.0(jiti@1.21.7))(typescript@5.6.3)":
+ dependencies:
+ "@typescript-eslint/scope-manager": 6.21.0
+ "@typescript-eslint/types": 6.21.0
+ "@typescript-eslint/typescript-estree": 6.21.0(typescript@5.6.3)
+ "@typescript-eslint/visitor-keys": 6.21.0
+ debug: 4.4.0
+ eslint: 9.17.0(jiti@1.21.7)
+ optionalDependencies:
+ typescript: 5.6.3
+ transitivePeerDependencies:
+ - supports-color
+
+ "@typescript-eslint/parser@8.19.1(eslint@9.17.0(jiti@1.21.7))(typescript@5.6.3)":
+ dependencies:
+ "@typescript-eslint/scope-manager": 8.19.1
+ "@typescript-eslint/types": 8.19.1
+ "@typescript-eslint/typescript-estree": 8.19.1(typescript@5.6.3)
+ "@typescript-eslint/visitor-keys": 8.19.1
+ debug: 4.4.0
+ eslint: 9.17.0(jiti@1.21.7)
+ typescript: 5.6.3
+ transitivePeerDependencies:
+ - supports-color
+
+ "@typescript-eslint/scope-manager@6.21.0":
+ dependencies:
+ "@typescript-eslint/types": 6.21.0
+ "@typescript-eslint/visitor-keys": 6.21.0
+
+ "@typescript-eslint/scope-manager@8.19.1":
+ dependencies:
+ "@typescript-eslint/types": 8.19.1
+ "@typescript-eslint/visitor-keys": 8.19.1
+
+ "@typescript-eslint/type-utils@6.21.0(eslint@9.17.0(jiti@1.21.7))(typescript@5.6.3)":
+ dependencies:
+ "@typescript-eslint/typescript-estree": 6.21.0(typescript@5.6.3)
+ "@typescript-eslint/utils": 6.21.0(eslint@9.17.0(jiti@1.21.7))(typescript@5.6.3)
+ debug: 4.4.0
+ eslint: 9.17.0(jiti@1.21.7)
+ ts-api-utils: 1.4.3(typescript@5.6.3)
+ optionalDependencies:
+ typescript: 5.6.3
+ transitivePeerDependencies:
+ - supports-color
+
+ "@typescript-eslint/type-utils@8.19.1(eslint@9.17.0(jiti@1.21.7))(typescript@5.6.3)":
+ dependencies:
+ "@typescript-eslint/typescript-estree": 8.19.1(typescript@5.6.3)
+ "@typescript-eslint/utils": 8.19.1(eslint@9.17.0(jiti@1.21.7))(typescript@5.6.3)
+ debug: 4.4.0
+ eslint: 9.17.0(jiti@1.21.7)
+ ts-api-utils: 2.0.0(typescript@5.6.3)
+ typescript: 5.6.3
+ transitivePeerDependencies:
+ - supports-color
+
+ "@typescript-eslint/types@6.21.0": {}
+
+ "@typescript-eslint/types@8.19.1": {}
+
+ "@typescript-eslint/typescript-estree@6.21.0(typescript@5.6.3)":
+ dependencies:
+ "@typescript-eslint/types": 6.21.0
+ "@typescript-eslint/visitor-keys": 6.21.0
+ debug: 4.4.0
+ globby: 11.1.0
+ is-glob: 4.0.3
+ minimatch: 9.0.3
+ semver: 7.6.3
+ ts-api-utils: 1.4.3(typescript@5.6.3)
+ optionalDependencies:
+ typescript: 5.6.3
+ transitivePeerDependencies:
+ - supports-color
+
+ "@typescript-eslint/typescript-estree@8.19.1(typescript@5.6.3)":
+ dependencies:
+ "@typescript-eslint/types": 8.19.1
+ "@typescript-eslint/visitor-keys": 8.19.1
+ debug: 4.4.0
+ fast-glob: 3.3.3
+ is-glob: 4.0.3
+ minimatch: 9.0.5
+ semver: 7.6.3
+ ts-api-utils: 2.0.0(typescript@5.6.3)
+ typescript: 5.6.3
+ transitivePeerDependencies:
+ - supports-color
+
+ "@typescript-eslint/utils@6.21.0(eslint@9.17.0(jiti@1.21.7))(typescript@5.6.3)":
+ dependencies:
+ "@eslint-community/eslint-utils": 4.4.1(eslint@9.17.0(jiti@1.21.7))
+ "@types/json-schema": 7.0.15
+ "@types/semver": 7.5.8
+ "@typescript-eslint/scope-manager": 6.21.0
+ "@typescript-eslint/types": 6.21.0
+ "@typescript-eslint/typescript-estree": 6.21.0(typescript@5.6.3)
+ eslint: 9.17.0(jiti@1.21.7)
+ semver: 7.6.3
+ transitivePeerDependencies:
+ - supports-color
+ - typescript
+
+ "@typescript-eslint/utils@8.19.1(eslint@9.17.0(jiti@1.21.7))(typescript@5.6.3)":
+ dependencies:
+ "@eslint-community/eslint-utils": 4.4.1(eslint@9.17.0(jiti@1.21.7))
+ "@typescript-eslint/scope-manager": 8.19.1
+ "@typescript-eslint/types": 8.19.1
+ "@typescript-eslint/typescript-estree": 8.19.1(typescript@5.6.3)
+ eslint: 9.17.0(jiti@1.21.7)
+ typescript: 5.6.3
+ transitivePeerDependencies:
+ - supports-color
+
+ "@typescript-eslint/visitor-keys@6.21.0":
+ dependencies:
+ "@typescript-eslint/types": 6.21.0
+ eslint-visitor-keys: 3.4.3
+
+ "@typescript-eslint/visitor-keys@8.19.1":
+ dependencies:
+ "@typescript-eslint/types": 8.19.1
+ eslint-visitor-keys: 4.2.0
+
+ "@vanilla-extract/babel-plugin-debug-ids@1.2.0":
+ dependencies:
+ "@babel/core": 7.26.0
+ transitivePeerDependencies:
+ - supports-color
+
+ "@vanilla-extract/css@1.17.0":
+ dependencies:
+ "@emotion/hash": 0.9.2
+ "@vanilla-extract/private": 1.0.6
+ css-what: 6.1.0
+ cssesc: 3.0.0
+ csstype: 3.1.3
+ dedent: 1.5.3
+ deep-object-diff: 1.1.9
+ deepmerge: 4.3.1
+ lru-cache: 10.4.3
+ media-query-parser: 2.0.2
+ modern-ahocorasick: 1.1.0
+ picocolors: 1.1.1
+ transitivePeerDependencies:
+ - babel-plugin-macros
+
+ "@vanilla-extract/integration@6.5.0(@types/node@22.10.5)":
+ dependencies:
+ "@babel/core": 7.26.0
+ "@babel/plugin-syntax-typescript": 7.25.9(@babel/core@7.26.0)
+ "@vanilla-extract/babel-plugin-debug-ids": 1.2.0
+ "@vanilla-extract/css": 1.17.0
+ esbuild: 0.17.6
+ eval: 0.1.8
+ find-up: 5.0.0
+ javascript-stringify: 2.1.0
+ lodash: 4.17.21
+ mlly: 1.7.3
+ outdent: 0.8.0
+ vite: 5.4.11(@types/node@22.10.5)
+ vite-node: 1.6.0(@types/node@22.10.5)
+ transitivePeerDependencies:
+ - "@types/node"
+ - babel-plugin-macros
+ - less
+ - lightningcss
+ - sass
+ - sass-embedded
+ - stylus
+ - sugarss
+ - supports-color
+ - terser
+
+ "@vanilla-extract/private@1.0.6": {}
+
+ "@vitejs/plugin-react-swc@3.7.2(vite@6.0.7(@types/node@22.10.5)(jiti@1.21.7)(yaml@2.7.0))":
+ dependencies:
+ "@swc/core": 1.10.6
+ vite: 6.0.7(@types/node@22.10.5)(jiti@1.21.7)(yaml@2.7.0)
+ transitivePeerDependencies:
+ - "@swc/helpers"
+
+ "@web3-storage/multipart-parser@1.0.0": {}
+
+ "@zxing/text-encoding@0.9.0":
+ optional: true
+
+ abort-controller@3.0.0:
+ dependencies:
+ event-target-shim: 5.0.1
+
+ accepts@1.3.8:
+ dependencies:
+ mime-types: 2.1.35
+ negotiator: 0.6.3
+
+ acorn-jsx@5.3.2(acorn@8.14.0):
+ dependencies:
+ acorn: 8.14.0
+
+ acorn@8.14.0: {}
+
+ aggregate-error@3.1.0:
+ dependencies:
+ clean-stack: 2.2.0
+ indent-string: 4.0.0
+
+ ajv@6.12.6:
+ dependencies:
+ fast-deep-equal: 3.1.3
+ fast-json-stable-stringify: 2.1.0
+ json-schema-traverse: 0.4.1
+ uri-js: 4.4.1
+
+ ansi-regex@5.0.1: {}
+
+ ansi-regex@6.1.0: {}
+
+ ansi-styles@4.3.0:
+ dependencies:
+ color-convert: 2.0.1
+
+ ansi-styles@6.2.1: {}
+
+ any-promise@1.3.0: {}
+
+ anymatch@3.1.3:
+ dependencies:
+ normalize-path: 3.0.0
+ picomatch: 2.3.1
+
+ arg@5.0.2: {}
+
+ argparse@2.0.1: {}
+
+ aria-hidden@1.2.4:
+ dependencies:
+ tslib: 2.8.1
+
+ aria-query@5.3.2: {}
+
+ array-buffer-byte-length@1.0.2:
+ dependencies:
+ call-bound: 1.0.3
+ is-array-buffer: 3.0.5
+
+ array-flatten@1.1.1: {}
+
+ array-includes@3.1.8:
+ dependencies:
+ call-bind: 1.0.8
+ define-properties: 1.2.1
+ es-abstract: 1.23.9
+ es-object-atoms: 1.0.0
+ get-intrinsic: 1.2.7
+ is-string: 1.1.1
+
+ array-union@2.1.0: {}
+
+ array.prototype.findlast@1.2.5:
+ dependencies:
+ call-bind: 1.0.8
+ define-properties: 1.2.1
+ es-abstract: 1.23.9
+ es-errors: 1.3.0
+ es-object-atoms: 1.0.0
+ es-shim-unscopables: 1.0.2
+
+ array.prototype.findlastindex@1.2.5:
+ dependencies:
+ call-bind: 1.0.8
+ define-properties: 1.2.1
+ es-abstract: 1.23.9
+ es-errors: 1.3.0
+ es-object-atoms: 1.0.0
+ es-shim-unscopables: 1.0.2
+
+ array.prototype.flat@1.3.3:
+ dependencies:
+ call-bind: 1.0.8
+ define-properties: 1.2.1
+ es-abstract: 1.23.9
+ es-shim-unscopables: 1.0.2
+
+ array.prototype.flatmap@1.3.3:
+ dependencies:
+ call-bind: 1.0.8
+ define-properties: 1.2.1
+ es-abstract: 1.23.9
+ es-shim-unscopables: 1.0.2
+
+ array.prototype.tosorted@1.1.4:
+ dependencies:
+ call-bind: 1.0.8
+ define-properties: 1.2.1
+ es-abstract: 1.23.9
+ es-errors: 1.3.0
+ es-shim-unscopables: 1.0.2
+
+ arraybuffer.prototype.slice@1.0.4:
+ dependencies:
+ array-buffer-byte-length: 1.0.2
+ call-bind: 1.0.8
+ define-properties: 1.2.1
+ es-abstract: 1.23.9
+ es-errors: 1.3.0
+ get-intrinsic: 1.2.7
+ is-array-buffer: 3.0.5
+
+ ast-types-flow@0.0.8: {}
+
+ astring@1.9.0: {}
+
+ autoprefixer@10.4.20(postcss@8.4.49):
+ dependencies:
+ browserslist: 4.24.3
+ caniuse-lite: 1.0.30001690
+ fraction.js: 4.3.7
+ normalize-range: 0.1.2
+ picocolors: 1.1.1
+ postcss: 8.4.49
+ postcss-value-parser: 4.2.0
+
+ available-typed-arrays@1.0.7:
+ dependencies:
+ possible-typed-array-names: 1.0.0
+
+ axe-core@4.10.2: {}
+
+ axobject-query@4.1.0: {}
+
+ bail@2.0.2: {}
+
+ balanced-match@1.0.2: {}
+
+ base64-js@1.5.1: {}
+
+ basic-auth@2.0.1:
+ dependencies:
+ safe-buffer: 5.1.2
+
+ binary-extensions@2.3.0: {}
+
+ bl@4.1.0:
+ dependencies:
+ buffer: 5.7.1
+ inherits: 2.0.4
+ readable-stream: 3.6.2
+
+ body-parser@1.20.3:
+ dependencies:
+ bytes: 3.1.2
+ content-type: 1.0.5
+ debug: 2.6.9
+ depd: 2.0.0
+ destroy: 1.2.0
+ http-errors: 2.0.0
+ iconv-lite: 0.4.24
+ on-finished: 2.4.1
+ qs: 6.13.0
+ raw-body: 2.5.2
+ type-is: 1.6.18
+ unpipe: 1.0.0
+ transitivePeerDependencies:
+ - supports-color
+
+ brace-expansion@1.1.11:
+ dependencies:
+ balanced-match: 1.0.2
+ concat-map: 0.0.1
+
+ brace-expansion@2.0.1:
+ dependencies:
+ balanced-match: 1.0.2
+
+ braces@3.0.3:
+ dependencies:
+ fill-range: 7.1.1
+
+ browserify-zlib@0.1.4:
+ dependencies:
+ pako: 0.2.9
+
+ browserslist@4.24.3:
+ dependencies:
+ caniuse-lite: 1.0.30001690
+ electron-to-chromium: 1.5.78
+ node-releases: 2.0.19
+ update-browserslist-db: 1.1.1(browserslist@4.24.3)
+
+ buffer-from@1.1.2: {}
+
+ buffer@5.7.1:
+ dependencies:
+ base64-js: 1.5.1
+ ieee754: 1.2.1
+
+ bytes@3.1.2: {}
+
+ cac@6.7.14: {}
+
+ cacache@17.1.4:
+ dependencies:
+ "@npmcli/fs": 3.1.1
+ fs-minipass: 3.0.3
+ glob: 10.4.5
+ lru-cache: 7.18.3
+ minipass: 7.1.2
+ minipass-collect: 1.0.2
+ minipass-flush: 1.0.5
+ minipass-pipeline: 1.2.4
+ p-map: 4.0.0
+ ssri: 10.0.6
+ tar: 6.2.1
+ unique-filename: 3.0.0
+
+ call-bind-apply-helpers@1.0.1:
+ dependencies:
+ es-errors: 1.3.0
+ function-bind: 1.1.2
+
+ call-bind@1.0.8:
+ dependencies:
+ call-bind-apply-helpers: 1.0.1
+ es-define-property: 1.0.1
+ get-intrinsic: 1.2.7
+ set-function-length: 1.2.2
+
+ call-bound@1.0.3:
+ dependencies:
+ call-bind-apply-helpers: 1.0.1
+ get-intrinsic: 1.2.7
+
+ callsites@3.1.0: {}
+
+ camelcase-css@2.0.1: {}
+
+ caniuse-lite@1.0.30001690: {}
+
+ ccount@2.0.1: {}
+
+ chalk@4.1.2:
+ dependencies:
+ ansi-styles: 4.3.0
+ supports-color: 7.2.0
+
+ character-entities-html4@2.1.0: {}
+
+ character-entities-legacy@3.0.0: {}
+
+ character-entities@2.0.2: {}
+
+ character-reference-invalid@2.0.1: {}
+
+ chokidar@3.6.0:
+ dependencies:
+ anymatch: 3.1.3
+ braces: 3.0.3
+ glob-parent: 5.1.2
+ is-binary-path: 2.1.0
+ is-glob: 4.0.3
+ normalize-path: 3.0.0
+ readdirp: 3.6.0
+ optionalDependencies:
+ fsevents: 2.3.3
+
+ chownr@1.1.4: {}
+
+ chownr@2.0.0: {}
+
+ class-variance-authority@0.7.1:
+ dependencies:
+ clsx: 2.1.1
+
+ classnames@2.5.1: {}
+
+ clean-stack@2.2.0: {}
+
+ cli-cursor@3.1.0:
+ dependencies:
+ restore-cursor: 3.1.0
+
+ cli-spinners@2.9.2: {}
+
+ clone@1.0.4: {}
+
+ clsx@2.1.1: {}
+
+ color-convert@2.0.1:
+ dependencies:
+ color-name: 1.1.4
+
+ color-name@1.1.4: {}
+
+ comma-separated-tokens@2.0.3: {}
+
+ commander@4.1.1: {}
+
+ compressible@2.0.18:
+ dependencies:
+ mime-db: 1.53.0
+
+ compression@1.7.5:
+ dependencies:
+ bytes: 3.1.2
+ compressible: 2.0.18
+ debug: 2.6.9
+ negotiator: 0.6.4
+ on-headers: 1.0.2
+ safe-buffer: 5.2.1
+ vary: 1.1.2
+ transitivePeerDependencies:
+ - supports-color
+
+ concat-map@0.0.1: {}
+
+ confbox@0.1.8: {}
+
+ content-disposition@0.5.4:
+ dependencies:
+ safe-buffer: 5.2.1
+
+ content-type@1.0.5: {}
+
+ convert-source-map@2.0.0: {}
+
+ cookie-signature@1.0.6: {}
+
+ cookie-signature@1.2.2: {}
+
+ cookie@0.6.0: {}
+
+ cookie@0.7.1: {}
+
+ core-util-is@1.0.3: {}
+
+ cross-spawn@7.0.6:
+ dependencies:
+ path-key: 3.1.1
+ shebang-command: 2.0.0
+ which: 2.0.2
+
+ css-what@6.1.0: {}
+
+ cssesc@3.0.0: {}
+
+ csstype@3.1.3: {}
+
+ damerau-levenshtein@1.0.8: {}
+
+ data-uri-to-buffer@3.0.1: {}
+
+ data-view-buffer@1.0.2:
+ dependencies:
+ call-bound: 1.0.3
+ es-errors: 1.3.0
+ is-data-view: 1.0.2
+
+ data-view-byte-length@1.0.2:
+ dependencies:
+ call-bound: 1.0.3
+ es-errors: 1.3.0
+ is-data-view: 1.0.2
+
+ data-view-byte-offset@1.0.1:
+ dependencies:
+ call-bound: 1.0.3
+ es-errors: 1.3.0
+ is-data-view: 1.0.2
+
+ dayjs@1.11.13: {}
+
+ debug@2.6.9:
+ dependencies:
+ ms: 2.0.0
+
+ debug@3.2.7:
+ dependencies:
+ ms: 2.1.3
+
+ debug@4.4.0:
+ dependencies:
+ ms: 2.1.3
+
+ decode-named-character-reference@1.0.2:
+ dependencies:
+ character-entities: 2.0.2
+
+ dedent@1.5.3: {}
+
+ deep-is@0.1.4: {}
+
+ deep-object-diff@1.1.9: {}
+
+ deepmerge@4.3.1: {}
+
+ defaults@1.0.4:
+ dependencies:
+ clone: 1.0.4
+
+ define-data-property@1.1.4:
+ dependencies:
+ es-define-property: 1.0.1
+ es-errors: 1.3.0
+ gopd: 1.2.0
+
+ define-properties@1.2.1:
+ dependencies:
+ define-data-property: 1.1.4
+ has-property-descriptors: 1.0.2
+ object-keys: 1.1.1
+
+ depd@2.0.0: {}
+
+ dequal@2.0.3: {}
+
+ destroy@1.2.0: {}
+
+ detect-node-es@1.1.0: {}
+
+ didyoumean@1.2.2: {}
+
+ diff@5.2.0: {}
+
+ dir-glob@3.0.1:
+ dependencies:
+ path-type: 4.0.0
+
+ dlv@1.1.3: {}
+
+ doctrine@2.1.0:
+ dependencies:
+ esutils: 2.0.3
+
+ dotenv@16.4.7: {}
+
+ dunder-proto@1.0.1:
+ dependencies:
+ call-bind-apply-helpers: 1.0.1
+ es-errors: 1.3.0
+ gopd: 1.2.0
+
+ duplexify@3.7.1:
+ dependencies:
+ end-of-stream: 1.4.4
+ inherits: 2.0.4
+ readable-stream: 2.3.8
+ stream-shift: 1.0.3
+
+ eastasianwidth@0.2.0: {}
+
+ ee-first@1.1.1: {}
+
+ electron-to-chromium@1.5.78: {}
+
+ emoji-regex@8.0.0: {}
+
+ emoji-regex@9.2.2: {}
+
+ encodeurl@1.0.2: {}
+
+ encodeurl@2.0.0: {}
+
+ end-of-stream@1.4.4:
+ dependencies:
+ once: 1.4.0
+
+ enhanced-resolve@5.18.0:
+ dependencies:
+ graceful-fs: 4.2.11
+ tapable: 2.2.1
+
+ err-code@2.0.3: {}
+
+ es-abstract@1.23.9:
+ dependencies:
+ array-buffer-byte-length: 1.0.2
+ arraybuffer.prototype.slice: 1.0.4
+ available-typed-arrays: 1.0.7
+ call-bind: 1.0.8
+ call-bound: 1.0.3
+ data-view-buffer: 1.0.2
+ data-view-byte-length: 1.0.2
+ data-view-byte-offset: 1.0.1
+ es-define-property: 1.0.1
+ es-errors: 1.3.0
+ es-object-atoms: 1.0.0
+ es-set-tostringtag: 2.1.0
+ es-to-primitive: 1.3.0
+ function.prototype.name: 1.1.8
+ get-intrinsic: 1.2.7
+ get-proto: 1.0.1
+ get-symbol-description: 1.1.0
+ globalthis: 1.0.4
+ gopd: 1.2.0
+ has-property-descriptors: 1.0.2
+ has-proto: 1.2.0
+ has-symbols: 1.1.0
+ hasown: 2.0.2
+ internal-slot: 1.1.0
+ is-array-buffer: 3.0.5
+ is-callable: 1.2.7
+ is-data-view: 1.0.2
+ is-regex: 1.2.1
+ is-shared-array-buffer: 1.0.4
+ is-string: 1.1.1
+ is-typed-array: 1.1.15
+ is-weakref: 1.1.0
+ math-intrinsics: 1.1.0
+ object-inspect: 1.13.3
+ object-keys: 1.1.1
+ object.assign: 4.1.7
+ own-keys: 1.0.1
+ regexp.prototype.flags: 1.5.4
+ safe-array-concat: 1.1.3
+ safe-push-apply: 1.0.0
+ safe-regex-test: 1.1.0
+ set-proto: 1.0.0
+ string.prototype.trim: 1.2.10
+ string.prototype.trimend: 1.0.9
+ string.prototype.trimstart: 1.0.8
+ typed-array-buffer: 1.0.3
+ typed-array-byte-length: 1.0.3
+ typed-array-byte-offset: 1.0.4
+ typed-array-length: 1.0.7
+ unbox-primitive: 1.1.0
+ which-typed-array: 1.1.18
+
+ es-define-property@1.0.1: {}
+
+ es-errors@1.3.0: {}
+
+ es-iterator-helpers@1.2.1:
+ dependencies:
+ call-bind: 1.0.8
+ call-bound: 1.0.3
+ define-properties: 1.2.1
+ es-abstract: 1.23.9
+ es-errors: 1.3.0
+ es-set-tostringtag: 2.1.0
+ function-bind: 1.1.2
+ get-intrinsic: 1.2.7
+ globalthis: 1.0.4
+ gopd: 1.2.0
+ has-property-descriptors: 1.0.2
+ has-proto: 1.2.0
+ has-symbols: 1.1.0
+ internal-slot: 1.1.0
+ iterator.prototype: 1.1.5
+ safe-array-concat: 1.1.3
+
+ es-module-lexer@1.6.0: {}
+
+ es-object-atoms@1.0.0:
+ dependencies:
+ es-errors: 1.3.0
+
+ es-set-tostringtag@2.1.0:
+ dependencies:
+ es-errors: 1.3.0
+ get-intrinsic: 1.2.7
+ has-tostringtag: 1.0.2
+ hasown: 2.0.2
+
+ es-shim-unscopables@1.0.2:
+ dependencies:
+ hasown: 2.0.2
+
+ es-to-primitive@1.3.0:
+ dependencies:
+ is-callable: 1.2.7
+ is-date-object: 1.1.0
+ is-symbol: 1.1.1
+
+ esbuild-plugins-node-modules-polyfill@1.6.8(esbuild@0.17.6):
+ dependencies:
+ "@jspm/core": 2.0.1
+ esbuild: 0.17.6
+ local-pkg: 0.5.1
+ resolve.exports: 2.0.3
+
+ esbuild@0.17.6:
+ optionalDependencies:
+ "@esbuild/android-arm": 0.17.6
+ "@esbuild/android-arm64": 0.17.6
+ "@esbuild/android-x64": 0.17.6
+ "@esbuild/darwin-arm64": 0.17.6
+ "@esbuild/darwin-x64": 0.17.6
+ "@esbuild/freebsd-arm64": 0.17.6
+ "@esbuild/freebsd-x64": 0.17.6
+ "@esbuild/linux-arm": 0.17.6
+ "@esbuild/linux-arm64": 0.17.6
+ "@esbuild/linux-ia32": 0.17.6
+ "@esbuild/linux-loong64": 0.17.6
+ "@esbuild/linux-mips64el": 0.17.6
+ "@esbuild/linux-ppc64": 0.17.6
+ "@esbuild/linux-riscv64": 0.17.6
+ "@esbuild/linux-s390x": 0.17.6
+ "@esbuild/linux-x64": 0.17.6
+ "@esbuild/netbsd-x64": 0.17.6
+ "@esbuild/openbsd-x64": 0.17.6
+ "@esbuild/sunos-x64": 0.17.6
+ "@esbuild/win32-arm64": 0.17.6
+ "@esbuild/win32-ia32": 0.17.6
+ "@esbuild/win32-x64": 0.17.6
+
+ esbuild@0.21.5:
+ 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
+
+ esbuild@0.24.2:
+ optionalDependencies:
+ "@esbuild/aix-ppc64": 0.24.2
+ "@esbuild/android-arm": 0.24.2
+ "@esbuild/android-arm64": 0.24.2
+ "@esbuild/android-x64": 0.24.2
+ "@esbuild/darwin-arm64": 0.24.2
+ "@esbuild/darwin-x64": 0.24.2
+ "@esbuild/freebsd-arm64": 0.24.2
+ "@esbuild/freebsd-x64": 0.24.2
+ "@esbuild/linux-arm": 0.24.2
+ "@esbuild/linux-arm64": 0.24.2
+ "@esbuild/linux-ia32": 0.24.2
+ "@esbuild/linux-loong64": 0.24.2
+ "@esbuild/linux-mips64el": 0.24.2
+ "@esbuild/linux-ppc64": 0.24.2
+ "@esbuild/linux-riscv64": 0.24.2
+ "@esbuild/linux-s390x": 0.24.2
+ "@esbuild/linux-x64": 0.24.2
+ "@esbuild/netbsd-arm64": 0.24.2
+ "@esbuild/netbsd-x64": 0.24.2
+ "@esbuild/openbsd-arm64": 0.24.2
+ "@esbuild/openbsd-x64": 0.24.2
+ "@esbuild/sunos-x64": 0.24.2
+ "@esbuild/win32-arm64": 0.24.2
+ "@esbuild/win32-ia32": 0.24.2
+ "@esbuild/win32-x64": 0.24.2
+
+ escalade@3.2.0: {}
+
+ escape-html@1.0.3: {}
+
+ escape-string-regexp@4.0.0: {}
+
+ eslint-import-resolver-node@0.3.9:
+ dependencies:
+ debug: 3.2.7
+ is-core-module: 2.16.1
+ resolve: 1.22.10
+ transitivePeerDependencies:
+ - supports-color
+
+ eslint-import-resolver-typescript@3.7.0(eslint-plugin-import@2.31.0)(eslint@9.17.0(jiti@1.21.7)):
+ dependencies:
+ "@nolyfill/is-core-module": 1.0.39
+ debug: 4.4.0
+ enhanced-resolve: 5.18.0
+ eslint: 9.17.0(jiti@1.21.7)
+ fast-glob: 3.3.3
+ get-tsconfig: 4.8.1
+ is-bun-module: 1.3.0
+ is-glob: 4.0.3
+ stable-hash: 0.0.4
+ optionalDependencies:
+ eslint-plugin-import: 2.31.0(@typescript-eslint/parser@6.21.0(eslint@9.17.0(jiti@1.21.7))(typescript@5.6.3))(eslint-import-resolver-typescript@3.7.0)(eslint@9.17.0(jiti@1.21.7))
+ transitivePeerDependencies:
+ - supports-color
+
+ eslint-module-utils@2.12.0(@typescript-eslint/parser@6.21.0(eslint@9.17.0(jiti@1.21.7))(typescript@5.6.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.7.0)(eslint@9.17.0(jiti@1.21.7)):
+ dependencies:
+ debug: 3.2.7
+ optionalDependencies:
+ "@typescript-eslint/parser": 6.21.0(eslint@9.17.0(jiti@1.21.7))(typescript@5.6.3)
+ eslint: 9.17.0(jiti@1.21.7)
+ eslint-import-resolver-node: 0.3.9
+ eslint-import-resolver-typescript: 3.7.0(eslint-plugin-import@2.31.0)(eslint@9.17.0(jiti@1.21.7))
+ transitivePeerDependencies:
+ - supports-color
+
+ eslint-plugin-import@2.31.0(@typescript-eslint/parser@6.21.0(eslint@9.17.0(jiti@1.21.7))(typescript@5.6.3))(eslint-import-resolver-typescript@3.7.0)(eslint@9.17.0(jiti@1.21.7)):
+ dependencies:
+ "@rtsao/scc": 1.1.0
+ array-includes: 3.1.8
+ array.prototype.findlastindex: 1.2.5
+ array.prototype.flat: 1.3.3
+ array.prototype.flatmap: 1.3.3
+ debug: 3.2.7
+ doctrine: 2.1.0
+ eslint: 9.17.0(jiti@1.21.7)
+ eslint-import-resolver-node: 0.3.9
+ eslint-module-utils: 2.12.0(@typescript-eslint/parser@6.21.0(eslint@9.17.0(jiti@1.21.7))(typescript@5.6.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.7.0)(eslint@9.17.0(jiti@1.21.7))
+ hasown: 2.0.2
+ is-core-module: 2.16.1
+ is-glob: 4.0.3
+ minimatch: 3.1.2
+ object.fromentries: 2.0.8
+ object.groupby: 1.0.3
+ object.values: 1.2.1
+ semver: 6.3.1
+ string.prototype.trimend: 1.0.9
+ tsconfig-paths: 3.15.0
+ optionalDependencies:
+ "@typescript-eslint/parser": 6.21.0(eslint@9.17.0(jiti@1.21.7))(typescript@5.6.3)
+ transitivePeerDependencies:
+ - eslint-import-resolver-typescript
+ - eslint-import-resolver-webpack
+ - supports-color
+
+ eslint-plugin-jsx-a11y@6.10.2(eslint@9.17.0(jiti@1.21.7)):
+ dependencies:
+ aria-query: 5.3.2
+ array-includes: 3.1.8
+ array.prototype.flatmap: 1.3.3
+ ast-types-flow: 0.0.8
+ axe-core: 4.10.2
+ axobject-query: 4.1.0
+ damerau-levenshtein: 1.0.8
+ emoji-regex: 9.2.2
+ eslint: 9.17.0(jiti@1.21.7)
+ hasown: 2.0.2
+ jsx-ast-utils: 3.3.5
+ language-tags: 1.0.9
+ minimatch: 3.1.2
+ object.fromentries: 2.0.8
+ safe-regex-test: 1.1.0
+ string.prototype.includes: 2.0.1
+
+ eslint-plugin-react-hooks@5.1.0(eslint@9.17.0(jiti@1.21.7)):
+ dependencies:
+ eslint: 9.17.0(jiti@1.21.7)
+
+ eslint-plugin-react-refresh@0.4.16(eslint@9.17.0(jiti@1.21.7)):
+ dependencies:
+ eslint: 9.17.0(jiti@1.21.7)
+
+ eslint-plugin-react@7.37.3(eslint@9.17.0(jiti@1.21.7)):
+ dependencies:
+ array-includes: 3.1.8
+ array.prototype.findlast: 1.2.5
+ array.prototype.flatmap: 1.3.3
+ array.prototype.tosorted: 1.1.4
+ doctrine: 2.1.0
+ es-iterator-helpers: 1.2.1
+ eslint: 9.17.0(jiti@1.21.7)
+ estraverse: 5.3.0
+ hasown: 2.0.2
+ jsx-ast-utils: 3.3.5
+ minimatch: 3.1.2
+ object.entries: 1.1.8
+ object.fromentries: 2.0.8
+ object.values: 1.2.1
+ prop-types: 15.8.1
+ resolve: 2.0.0-next.5
+ semver: 6.3.1
+ string.prototype.matchall: 4.0.12
+ string.prototype.repeat: 1.0.0
+
+ eslint-scope@8.2.0:
+ dependencies:
+ esrecurse: 4.3.0
+ estraverse: 5.3.0
+
+ eslint-visitor-keys@3.4.3: {}
+
+ eslint-visitor-keys@4.2.0: {}
+
+ eslint@9.17.0(jiti@1.21.7):
+ dependencies:
+ "@eslint-community/eslint-utils": 4.4.1(eslint@9.17.0(jiti@1.21.7))
+ "@eslint-community/regexpp": 4.12.1
+ "@eslint/config-array": 0.19.1
+ "@eslint/core": 0.9.1
+ "@eslint/eslintrc": 3.2.0
+ "@eslint/js": 9.17.0
+ "@eslint/plugin-kit": 0.2.4
+ "@humanfs/node": 0.16.6
+ "@humanwhocodes/module-importer": 1.0.1
+ "@humanwhocodes/retry": 0.4.1
+ "@types/estree": 1.0.6
+ "@types/json-schema": 7.0.15
+ ajv: 6.12.6
+ chalk: 4.1.2
+ cross-spawn: 7.0.6
+ debug: 4.4.0
+ escape-string-regexp: 4.0.0
+ eslint-scope: 8.2.0
+ eslint-visitor-keys: 4.2.0
+ espree: 10.3.0
+ esquery: 1.6.0
+ esutils: 2.0.3
+ fast-deep-equal: 3.1.3
+ file-entry-cache: 8.0.0
+ find-up: 5.0.0
+ glob-parent: 6.0.2
+ ignore: 5.3.2
+ imurmurhash: 0.1.4
+ is-glob: 4.0.3
+ json-stable-stringify-without-jsonify: 1.0.1
+ lodash.merge: 4.6.2
+ minimatch: 3.1.2
+ natural-compare: 1.4.0
+ optionator: 0.9.4
+ optionalDependencies:
+ jiti: 1.21.7
+ transitivePeerDependencies:
+ - supports-color
+
+ espree@10.3.0:
+ dependencies:
+ acorn: 8.14.0
+ acorn-jsx: 5.3.2(acorn@8.14.0)
+ eslint-visitor-keys: 4.2.0
+
+ esquery@1.6.0:
+ dependencies:
+ estraverse: 5.3.0
+
+ esrecurse@4.3.0:
+ dependencies:
+ estraverse: 5.3.0
+
+ estraverse@5.3.0: {}
+
+ estree-util-attach-comments@2.1.1:
+ dependencies:
+ "@types/estree": 1.0.6
+
+ 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-is-identifier-name@1.1.0: {}
+
+ estree-util-is-identifier-name@2.1.0: {}
+
+ estree-util-to-js@1.2.0:
+ dependencies:
+ "@types/estree-jsx": 1.0.5
+ astring: 1.9.0
+ source-map: 0.7.4
+
+ estree-util-value-to-estree@1.3.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
+
+ estree-walker@3.0.3:
+ dependencies:
+ "@types/estree": 1.0.6
+
+ esutils@2.0.3: {}
+
+ etag@1.8.1: {}
+
+ eval@0.1.8:
+ dependencies:
+ "@types/node": 22.10.5
+ require-like: 0.1.2
+
+ event-target-shim@5.0.1: {}
+
+ execa@5.1.1:
+ dependencies:
+ cross-spawn: 7.0.6
+ get-stream: 6.0.1
+ human-signals: 2.1.0
+ is-stream: 2.0.1
+ merge-stream: 2.0.0
+ npm-run-path: 4.0.1
+ onetime: 5.1.2
+ signal-exit: 3.0.7
+ strip-final-newline: 2.0.0
+
+ exit-hook@2.2.1: {}
+
+ express@4.21.2:
+ dependencies:
+ accepts: 1.3.8
+ array-flatten: 1.1.1
+ body-parser: 1.20.3
+ content-disposition: 0.5.4
+ content-type: 1.0.5
+ cookie: 0.7.1
+ cookie-signature: 1.0.6
+ debug: 2.6.9
+ depd: 2.0.0
+ encodeurl: 2.0.0
+ escape-html: 1.0.3
+ etag: 1.8.1
+ finalhandler: 1.3.1
+ fresh: 0.5.2
+ http-errors: 2.0.0
+ merge-descriptors: 1.0.3
+ methods: 1.1.2
+ on-finished: 2.4.1
+ parseurl: 1.3.3
+ path-to-regexp: 0.1.12
+ proxy-addr: 2.0.7
+ qs: 6.13.0
+ range-parser: 1.2.1
+ safe-buffer: 5.2.1
+ send: 0.19.0
+ serve-static: 1.16.2
+ setprototypeof: 1.2.0
+ statuses: 2.0.1
+ type-is: 1.6.18
+ utils-merge: 1.0.1
+ vary: 1.1.2
+ transitivePeerDependencies:
+ - supports-color
+
+ extend@3.0.2: {}
+
+ fast-deep-equal@3.1.3: {}
+
+ fast-glob@3.3.3:
+ dependencies:
+ "@nodelib/fs.stat": 2.0.5
+ "@nodelib/fs.walk": 1.2.8
+ glob-parent: 5.1.2
+ merge2: 1.4.1
+ micromatch: 4.0.8
+
+ fast-json-stable-stringify@2.1.0: {}
+
+ fast-levenshtein@2.0.6: {}
+
+ fastq@1.18.0:
+ dependencies:
+ reusify: 1.0.4
+
+ fault@2.0.1:
+ dependencies:
+ format: 0.2.2
+
+ file-entry-cache@8.0.0:
+ dependencies:
+ flat-cache: 4.0.1
+
+ fill-range@7.1.1:
+ dependencies:
+ to-regex-range: 5.0.1
+
+ finalhandler@1.3.1:
+ dependencies:
+ debug: 2.6.9
+ encodeurl: 2.0.0
+ escape-html: 1.0.3
+ on-finished: 2.4.1
+ parseurl: 1.3.3
+ statuses: 2.0.1
+ unpipe: 1.0.0
+ transitivePeerDependencies:
+ - supports-color
+
+ find-up@5.0.0:
+ dependencies:
+ locate-path: 6.0.0
+ path-exists: 4.0.0
+
+ flat-cache@4.0.1:
+ dependencies:
+ flatted: 3.3.2
+ keyv: 4.5.4
+
+ flatted@3.3.2: {}
+
+ for-each@0.3.3:
+ dependencies:
+ is-callable: 1.2.7
+
+ foreground-child@3.3.0:
+ dependencies:
+ cross-spawn: 7.0.6
+ signal-exit: 4.1.0
+
+ format@0.2.2: {}
+
+ forwarded@0.2.0: {}
+
+ fraction.js@4.3.7: {}
+
+ framer-motion@11.16.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1):
+ dependencies:
+ motion-dom: 11.16.0
+ motion-utils: 11.16.0
+ tslib: 2.8.1
+ optionalDependencies:
+ react: 18.3.1
+ react-dom: 18.3.1(react@18.3.1)
+
+ fresh@0.5.2: {}
+
+ fs-constants@1.0.0: {}
+
+ fs-extra@10.1.0:
+ dependencies:
+ graceful-fs: 4.2.11
+ jsonfile: 6.1.0
+ universalify: 2.0.1
+
+ fs-minipass@2.1.0:
+ dependencies:
+ minipass: 3.3.6
+
+ fs-minipass@3.0.3:
+ dependencies:
+ minipass: 7.1.2
+
+ fsevents@2.3.3:
+ optional: true
+
+ function-bind@1.1.2: {}
+
+ function.prototype.name@1.1.8:
+ dependencies:
+ call-bind: 1.0.8
+ call-bound: 1.0.3
+ define-properties: 1.2.1
+ functions-have-names: 1.2.3
+ hasown: 2.0.2
+ is-callable: 1.2.7
+
+ functions-have-names@1.2.3: {}
+
+ generic-names@4.0.0:
+ dependencies:
+ loader-utils: 3.3.1
+
+ gensync@1.0.0-beta.2: {}
+
+ get-intrinsic@1.2.7:
+ dependencies:
+ call-bind-apply-helpers: 1.0.1
+ es-define-property: 1.0.1
+ es-errors: 1.3.0
+ es-object-atoms: 1.0.0
+ function-bind: 1.1.2
+ get-proto: 1.0.1
+ gopd: 1.2.0
+ has-symbols: 1.1.0
+ hasown: 2.0.2
+ math-intrinsics: 1.1.0
+
+ get-nonce@1.0.1: {}
+
+ get-port@5.1.1: {}
+
+ get-proto@1.0.1:
+ dependencies:
+ dunder-proto: 1.0.1
+ es-object-atoms: 1.0.0
+
+ get-stream@6.0.1: {}
+
+ get-symbol-description@1.1.0:
+ dependencies:
+ call-bound: 1.0.3
+ es-errors: 1.3.0
+ get-intrinsic: 1.2.7
+
+ get-tsconfig@4.8.1:
+ dependencies:
+ resolve-pkg-maps: 1.0.0
+
+ glob-parent@5.1.2:
+ dependencies:
+ is-glob: 4.0.3
+
+ glob-parent@6.0.2:
+ dependencies:
+ is-glob: 4.0.3
+
+ glob@10.4.5:
+ dependencies:
+ foreground-child: 3.3.0
+ jackspeak: 3.4.3
+ minimatch: 9.0.5
+ minipass: 7.1.2
+ package-json-from-dist: 1.0.1
+ path-scurry: 1.11.1
+
+ globals@11.12.0: {}
+
+ globals@14.0.0: {}
+
+ globals@15.14.0: {}
+
+ globalthis@1.0.4:
+ dependencies:
+ define-properties: 1.2.1
+ gopd: 1.2.0
+
+ globby@11.1.0:
+ dependencies:
+ array-union: 2.1.0
+ dir-glob: 3.0.1
+ fast-glob: 3.3.3
+ ignore: 5.3.2
+ merge2: 1.4.1
+ slash: 3.0.0
+
+ globrex@0.1.2: {}
+
+ gopd@1.2.0: {}
+
+ graceful-fs@4.2.11: {}
+
+ graphemer@1.4.0: {}
+
+ gunzip-maybe@1.4.2:
+ dependencies:
+ browserify-zlib: 0.1.4
+ is-deflate: 1.0.0
+ is-gzip: 1.0.0
+ peek-stream: 1.1.3
+ pumpify: 1.5.1
+ through2: 2.0.5
+
+ has-bigints@1.1.0: {}
+
+ has-flag@4.0.0: {}
+
+ has-property-descriptors@1.0.2:
+ dependencies:
+ es-define-property: 1.0.1
+
+ has-proto@1.2.0:
+ dependencies:
+ dunder-proto: 1.0.1
+
+ has-symbols@1.1.0: {}
+
+ has-tostringtag@1.0.2:
+ dependencies:
+ has-symbols: 1.1.0
+
+ hasown@2.0.2:
+ dependencies:
+ function-bind: 1.1.2
+
+ hast-util-to-estree@2.3.3:
+ dependencies:
+ "@types/estree": 1.0.6
+ "@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-whitespace@2.0.1: {}
+
+ hosted-git-info@6.1.3:
+ dependencies:
+ lru-cache: 7.18.3
+
+ howler@2.2.4: {}
+
+ http-errors@2.0.0:
+ dependencies:
+ depd: 2.0.0
+ inherits: 2.0.4
+ setprototypeof: 1.2.0
+ statuses: 2.0.1
+ toidentifier: 1.0.1
+
+ human-signals@2.1.0: {}
+
+ iconv-lite@0.4.24:
+ dependencies:
+ safer-buffer: 2.1.2
+
+ icss-utils@5.1.0(postcss@8.4.49):
+ dependencies:
+ postcss: 8.4.49
+
+ ieee754@1.2.1: {}
+
+ ignore@5.3.2: {}
+
+ import-fresh@3.3.0:
+ dependencies:
+ parent-module: 1.0.1
+ resolve-from: 4.0.0
+
+ imurmurhash@0.1.4: {}
+
+ indent-string@4.0.0: {}
+
+ inherits@2.0.4: {}
+
+ inline-style-parser@0.1.1: {}
+
+ internal-slot@1.1.0:
+ dependencies:
+ es-errors: 1.3.0
+ hasown: 2.0.2
+ side-channel: 1.1.0
+
+ ipaddr.js@1.9.1: {}
+
+ is-alphabetical@2.0.1: {}
+
+ is-alphanumerical@2.0.1:
+ dependencies:
+ is-alphabetical: 2.0.1
+ is-decimal: 2.0.1
+
+ is-arguments@1.2.0:
+ dependencies:
+ call-bound: 1.0.3
+ has-tostringtag: 1.0.2
+
+ is-array-buffer@3.0.5:
+ dependencies:
+ call-bind: 1.0.8
+ call-bound: 1.0.3
+ get-intrinsic: 1.2.7
+
+ is-async-function@2.1.0:
+ dependencies:
+ call-bound: 1.0.3
+ get-proto: 1.0.1
+ has-tostringtag: 1.0.2
+ safe-regex-test: 1.1.0
+
+ is-bigint@1.1.0:
+ dependencies:
+ has-bigints: 1.1.0
+
+ is-binary-path@2.1.0:
+ dependencies:
+ binary-extensions: 2.3.0
+
+ is-boolean-object@1.2.1:
+ dependencies:
+ call-bound: 1.0.3
+ has-tostringtag: 1.0.2
+
+ is-buffer@2.0.5: {}
+
+ is-bun-module@1.3.0:
+ dependencies:
+ semver: 7.6.3
+
+ is-callable@1.2.7: {}
+
+ is-core-module@2.16.1:
+ dependencies:
+ hasown: 2.0.2
+
+ is-data-view@1.0.2:
+ dependencies:
+ call-bound: 1.0.3
+ get-intrinsic: 1.2.7
+ is-typed-array: 1.1.15
+
+ is-date-object@1.1.0:
+ dependencies:
+ call-bound: 1.0.3
+ has-tostringtag: 1.0.2
+
+ is-decimal@2.0.1: {}
+
+ is-deflate@1.0.0: {}
+
+ is-extglob@2.1.1: {}
+
+ is-finalizationregistry@1.1.1:
+ dependencies:
+ call-bound: 1.0.3
+
+ is-fullwidth-code-point@3.0.0: {}
+
+ is-generator-function@1.1.0:
+ dependencies:
+ call-bound: 1.0.3
+ get-proto: 1.0.1
+ has-tostringtag: 1.0.2
+ safe-regex-test: 1.1.0
+
+ is-glob@4.0.3:
+ dependencies:
+ is-extglob: 2.1.1
+
+ is-gzip@1.0.0: {}
+
+ is-hexadecimal@2.0.1: {}
+
+ is-interactive@1.0.0: {}
+
+ is-map@2.0.3: {}
+
+ is-number-object@1.1.1:
+ dependencies:
+ call-bound: 1.0.3
+ has-tostringtag: 1.0.2
+
+ is-number@7.0.0: {}
+
+ is-plain-obj@3.0.0: {}
+
+ is-plain-obj@4.1.0: {}
+
+ is-reference@3.0.3:
+ dependencies:
+ "@types/estree": 1.0.6
+
+ is-regex@1.2.1:
+ dependencies:
+ call-bound: 1.0.3
+ gopd: 1.2.0
+ has-tostringtag: 1.0.2
+ hasown: 2.0.2
+
+ is-set@2.0.3: {}
+
+ is-shared-array-buffer@1.0.4:
+ dependencies:
+ call-bound: 1.0.3
+
+ is-stream@2.0.1: {}
+
+ is-string@1.1.1:
+ dependencies:
+ call-bound: 1.0.3
+ has-tostringtag: 1.0.2
+
+ is-symbol@1.1.1:
+ dependencies:
+ call-bound: 1.0.3
+ has-symbols: 1.1.0
+ safe-regex-test: 1.1.0
+
+ is-typed-array@1.1.15:
+ dependencies:
+ which-typed-array: 1.1.18
+
+ is-unicode-supported@0.1.0: {}
+
+ is-weakmap@2.0.2: {}
+
+ is-weakref@1.1.0:
+ dependencies:
+ call-bound: 1.0.3
+
+ is-weakset@2.0.4:
+ dependencies:
+ call-bound: 1.0.3
+ get-intrinsic: 1.2.7
+
+ isarray@1.0.0: {}
+
+ isarray@2.0.5: {}
+
+ isbot@4.4.0: {}
+
+ isexe@2.0.0: {}
+
+ iterator.prototype@1.1.5:
+ dependencies:
+ define-data-property: 1.1.4
+ es-object-atoms: 1.0.0
+ get-intrinsic: 1.2.7
+ get-proto: 1.0.1
+ has-symbols: 1.1.0
+ set-function-name: 2.0.2
+
+ jackspeak@3.4.3:
+ dependencies:
+ "@isaacs/cliui": 8.0.2
+ optionalDependencies:
+ "@pkgjs/parseargs": 0.11.0
+
+ javascript-stringify@2.1.0: {}
+
+ jiti@1.21.7: {}
+
+ js-tokens@4.0.0: {}
+
+ js-yaml@4.1.0:
+ dependencies:
+ argparse: 2.0.1
+
+ jsesc@3.0.2: {}
+
+ json-buffer@3.0.1: {}
+
+ json-parse-even-better-errors@3.0.2: {}
+
+ json-schema-traverse@0.4.1: {}
+
+ json-schema@0.4.0: {}
+
+ json-stable-stringify-without-jsonify@1.0.1: {}
+
+ json5@1.0.2:
+ dependencies:
+ minimist: 1.2.8
+
+ json5@2.2.3: {}
+
+ jsonfile@6.1.0:
+ dependencies:
+ universalify: 2.0.1
+ optionalDependencies:
+ graceful-fs: 4.2.11
+
+ jsx-ast-utils@3.3.5:
+ dependencies:
+ array-includes: 3.1.8
+ array.prototype.flat: 1.3.3
+ object.assign: 4.1.7
+ object.values: 1.2.1
+
+ keyv@4.5.4:
+ dependencies:
+ json-buffer: 3.0.1
+
+ kleur@4.1.5: {}
+
+ language-subtag-registry@0.3.23: {}
+
+ language-tags@1.0.9:
+ dependencies:
+ language-subtag-registry: 0.3.23
+
+ levn@0.4.1:
+ dependencies:
+ prelude-ls: 1.2.1
+ type-check: 0.4.0
+
+ lilconfig@3.1.3: {}
+
+ lines-and-columns@1.2.4: {}
+
+ loader-utils@3.3.1: {}
+
+ local-pkg@0.5.1:
+ dependencies:
+ mlly: 1.7.3
+ pkg-types: 1.3.0
+
+ locate-path@6.0.0:
+ dependencies:
+ p-locate: 5.0.0
+
+ lodash.camelcase@4.3.0: {}
+
+ lodash.debounce@4.0.8: {}
+
+ lodash.merge@4.6.2: {}
+
+ lodash@4.17.21: {}
+
+ log-symbols@4.1.0:
+ dependencies:
+ chalk: 4.1.2
+ is-unicode-supported: 0.1.0
+
+ longest-streak@3.1.0: {}
+
+ loose-envify@1.4.0:
+ dependencies:
+ js-tokens: 4.0.0
+
+ lru-cache@10.4.3: {}
+
+ lru-cache@5.1.1:
+ dependencies:
+ yallist: 3.1.1
+
+ lru-cache@7.18.3: {}
+
+ lucide-react@0.469.0(react@18.3.1):
+ dependencies:
+ react: 18.3.1
+
+ markdown-extensions@1.1.1: {}
+
+ 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-from-markdown@1.3.1:
+ dependencies:
+ "@types/mdast": 3.0.15
+ "@types/unist": 2.0.11
+ decode-named-character-reference: 1.0.2
+ 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
+
+ mdast-util-frontmatter@1.0.1:
+ dependencies:
+ "@types/mdast": 3.0.15
+ mdast-util-to-markdown: 1.5.0
+ micromark-extension-frontmatter: 1.1.1
+
+ mdast-util-mdx-expression@1.3.2:
+ 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-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@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-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-phrasing@3.0.1:
+ dependencies:
+ "@types/mdast": 3.0.15
+ unist-util-is: 5.2.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-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-string@3.2.0:
+ dependencies:
+ "@types/mdast": 3.0.15
+
+ media-query-parser@2.0.2:
+ dependencies:
+ "@babel/runtime": 7.26.0
+
+ media-typer@0.3.0: {}
+
+ merge-descriptors@1.0.3: {}
+
+ merge-stream@2.0.0: {}
+
+ merge2@1.4.1: {}
+
+ methods@1.1.2: {}
+
+ micromark-core-commonmark@1.1.0:
+ dependencies:
+ decode-named-character-reference: 1.0.2
+ 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-extension-frontmatter@1.1.1:
+ 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-mdx-expression@1.0.8:
+ dependencies:
+ "@types/estree": 1.0.6
+ 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-mdx-jsx@1.0.5:
+ dependencies:
+ "@types/acorn": 4.0.6
+ "@types/estree": 1.0.6
+ 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-md@1.0.1:
+ dependencies:
+ micromark-util-types: 1.1.0
+
+ micromark-extension-mdxjs-esm@1.0.5:
+ dependencies:
+ "@types/estree": 1.0.6
+ 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@1.0.1:
+ dependencies:
+ acorn: 8.14.0
+ acorn-jsx: 5.3.2(acorn@8.14.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-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-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-mdx-expression@1.0.9:
+ dependencies:
+ "@types/estree": 1.0.6
+ 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-space@1.1.0:
+ dependencies:
+ micromark-util-character: 1.2.0
+ micromark-util-types: 1.1.0
+
+ 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-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-util-character@1.2.0:
+ dependencies:
+ micromark-util-symbol: 1.1.0
+ micromark-util-types: 1.1.0
+
+ micromark-util-chunked@1.1.0:
+ dependencies:
+ micromark-util-symbol: 1.1.0
+
+ 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-combine-extensions@1.1.0:
+ dependencies:
+ micromark-util-chunked: 1.1.0
+ micromark-util-types: 1.1.0
+
+ micromark-util-decode-numeric-character-reference@1.1.0:
+ dependencies:
+ micromark-util-symbol: 1.1.0
+
+ micromark-util-decode-string@1.1.0:
+ dependencies:
+ decode-named-character-reference: 1.0.2
+ micromark-util-character: 1.2.0
+ micromark-util-decode-numeric-character-reference: 1.1.0
+ micromark-util-symbol: 1.1.0
+
+ micromark-util-encode@1.1.0: {}
+
+ micromark-util-events-to-acorn@1.2.3:
+ dependencies:
+ "@types/acorn": 4.0.6
+ "@types/estree": 1.0.6
+ "@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-html-tag-name@1.2.0: {}
+
+ micromark-util-normalize-identifier@1.1.0:
+ dependencies:
+ micromark-util-symbol: 1.1.0
+
+ micromark-util-resolve-all@1.1.0:
+ dependencies:
+ micromark-util-types: 1.1.0
+
+ 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-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-symbol@1.1.0: {}
+
+ micromark-util-types@1.1.0: {}
+
+ micromark@3.2.0:
+ dependencies:
+ "@types/debug": 4.1.12
+ debug: 4.4.0
+ decode-named-character-reference: 1.0.2
+ 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
+
+ micromatch@4.0.8:
+ dependencies:
+ braces: 3.0.3
+ picomatch: 2.3.1
+
+ mime-db@1.52.0: {}
+
+ mime-db@1.53.0: {}
+
+ mime-types@2.1.35:
+ dependencies:
+ mime-db: 1.52.0
+
+ mime@1.6.0: {}
+
+ mimic-fn@2.1.0: {}
+
+ minimatch@3.1.2:
+ dependencies:
+ brace-expansion: 1.1.11
+
+ minimatch@9.0.3:
+ dependencies:
+ brace-expansion: 2.0.1
+
+ minimatch@9.0.5:
+ dependencies:
+ brace-expansion: 2.0.1
+
+ minimist@1.2.8: {}
+
+ minipass-collect@1.0.2:
+ dependencies:
+ minipass: 3.3.6
+
+ minipass-flush@1.0.5:
+ dependencies:
+ minipass: 3.3.6
+
+ minipass-pipeline@1.2.4:
+ dependencies:
+ minipass: 3.3.6
+
+ minipass@3.3.6:
+ dependencies:
+ yallist: 4.0.0
+
+ minipass@5.0.0: {}
+
+ minipass@7.1.2: {}
+
+ minizlib@2.1.2:
+ dependencies:
+ minipass: 3.3.6
+ yallist: 4.0.0
+
+ mkdirp-classic@0.5.3: {}
+
+ mkdirp@1.0.4: {}
+
+ mlly@1.7.3:
+ dependencies:
+ acorn: 8.14.0
+ pathe: 1.1.2
+ pkg-types: 1.3.0
+ ufo: 1.5.4
+
+ modern-ahocorasick@1.1.0: {}
+
+ morgan@1.10.0:
+ dependencies:
+ basic-auth: 2.0.1
+ debug: 2.6.9
+ depd: 2.0.0
+ on-finished: 2.3.0
+ on-headers: 1.0.2
+ transitivePeerDependencies:
+ - supports-color
+
+ motion-dom@11.16.0:
+ dependencies:
+ motion-utils: 11.16.0
+
+ motion-utils@11.16.0: {}
+
+ mri@1.2.0: {}
+
+ mrmime@1.0.1: {}
+
+ ms@2.0.0: {}
+
+ ms@2.1.3: {}
+
+ mz@2.7.0:
+ dependencies:
+ any-promise: 1.3.0
+ object-assign: 4.1.1
+ thenify-all: 1.6.0
+
+ nanoid@3.3.8: {}
+
+ nanoid@5.0.9: {}
+
+ natural-compare@1.4.0: {}
+
+ negotiator@0.6.3: {}
+
+ negotiator@0.6.4: {}
+
+ node-releases@2.0.19: {}
+
+ normalize-package-data@5.0.0:
+ dependencies:
+ hosted-git-info: 6.1.3
+ is-core-module: 2.16.1
+ semver: 7.6.3
+ validate-npm-package-license: 3.0.4
+
+ normalize-path@3.0.0: {}
+
+ normalize-range@0.1.2: {}
+
+ npm-install-checks@6.3.0:
+ dependencies:
+ semver: 7.6.3
+
+ npm-normalize-package-bin@3.0.1: {}
+
+ npm-package-arg@10.1.0:
+ dependencies:
+ hosted-git-info: 6.1.3
+ proc-log: 3.0.0
+ semver: 7.6.3
+ validate-npm-package-name: 5.0.1
+
+ npm-pick-manifest@8.0.2:
+ dependencies:
+ npm-install-checks: 6.3.0
+ npm-normalize-package-bin: 3.0.1
+ npm-package-arg: 10.1.0
+ semver: 7.6.3
+
+ npm-run-path@4.0.1:
+ dependencies:
+ path-key: 3.1.1
+
+ object-assign@4.1.1: {}
+
+ object-hash@3.0.0: {}
+
+ object-inspect@1.13.3: {}
+
+ object-keys@1.1.1: {}
+
+ object.assign@4.1.7:
+ dependencies:
+ call-bind: 1.0.8
+ call-bound: 1.0.3
+ define-properties: 1.2.1
+ es-object-atoms: 1.0.0
+ has-symbols: 1.1.0
+ object-keys: 1.1.1
+
+ object.entries@1.1.8:
+ dependencies:
+ call-bind: 1.0.8
+ define-properties: 1.2.1
+ es-object-atoms: 1.0.0
+
+ object.fromentries@2.0.8:
+ dependencies:
+ call-bind: 1.0.8
+ define-properties: 1.2.1
+ es-abstract: 1.23.9
+ es-object-atoms: 1.0.0
+
+ object.groupby@1.0.3:
+ dependencies:
+ call-bind: 1.0.8
+ define-properties: 1.2.1
+ es-abstract: 1.23.9
+
+ object.values@1.2.1:
+ dependencies:
+ call-bind: 1.0.8
+ call-bound: 1.0.3
+ define-properties: 1.2.1
+ es-object-atoms: 1.0.0
+
+ on-finished@2.3.0:
+ dependencies:
+ ee-first: 1.1.1
+
+ on-finished@2.4.1:
+ dependencies:
+ ee-first: 1.1.1
+
+ on-headers@1.0.2: {}
+
+ once@1.4.0:
+ dependencies:
+ wrappy: 1.0.2
+
+ onetime@5.1.2:
+ dependencies:
+ mimic-fn: 2.1.0
+
+ optionator@0.9.4:
+ dependencies:
+ deep-is: 0.1.4
+ fast-levenshtein: 2.0.6
+ levn: 0.4.1
+ prelude-ls: 1.2.1
+ type-check: 0.4.0
+ word-wrap: 1.2.5
+
+ ora@5.4.1:
+ dependencies:
+ bl: 4.1.0
+ chalk: 4.1.2
+ cli-cursor: 3.1.0
+ cli-spinners: 2.9.2
+ is-interactive: 1.0.0
+ is-unicode-supported: 0.1.0
+ log-symbols: 4.1.0
+ strip-ansi: 6.0.1
+ wcwidth: 1.0.1
+
+ outdent@0.8.0: {}
+
+ own-keys@1.0.1:
+ dependencies:
+ get-intrinsic: 1.2.7
+ object-keys: 1.1.1
+ safe-push-apply: 1.0.0
+
+ p-limit@3.1.0:
+ dependencies:
+ yocto-queue: 0.1.0
+
+ p-locate@5.0.0:
+ dependencies:
+ p-limit: 3.1.0
+
+ p-map@4.0.0:
+ dependencies:
+ aggregate-error: 3.1.0
+
+ package-json-from-dist@1.0.1: {}
+
+ pako@0.2.9: {}
+
+ parent-module@1.0.1:
+ dependencies:
+ callsites: 3.1.0
+
+ parse-entities@4.0.2:
+ dependencies:
+ "@types/unist": 2.0.11
+ character-entities-legacy: 3.0.0
+ character-reference-invalid: 2.0.1
+ decode-named-character-reference: 1.0.2
+ is-alphanumerical: 2.0.1
+ is-decimal: 2.0.1
+ is-hexadecimal: 2.0.1
+
+ parse-ms@2.1.0: {}
+
+ parseurl@1.3.3: {}
+
+ path-exists@4.0.0: {}
+
+ path-key@3.1.1: {}
+
+ path-parse@1.0.7: {}
+
+ path-scurry@1.11.1:
+ dependencies:
+ lru-cache: 10.4.3
+ minipass: 7.1.2
+
+ path-to-regexp@0.1.12: {}
+
+ path-type@4.0.0: {}
+
+ pathe@1.1.2: {}
+
+ peek-stream@1.1.3:
+ dependencies:
+ buffer-from: 1.1.2
+ duplexify: 3.7.1
+ through2: 2.0.5
+
+ periscopic@3.1.0:
+ dependencies:
+ "@types/estree": 1.0.6
+ estree-walker: 3.0.3
+ is-reference: 3.0.3
+
+ picocolors@1.1.1: {}
+
+ picomatch@2.3.1: {}
+
+ pidtree@0.6.0: {}
+
+ pify@2.3.0: {}
+
+ pirates@4.0.6: {}
+
+ pkg-types@1.3.0:
+ dependencies:
+ confbox: 0.1.8
+ mlly: 1.7.3
+ pathe: 1.1.2
+
+ possible-typed-array-names@1.0.0: {}
+
+ postcss-discard-duplicates@5.1.0(postcss@8.4.49):
+ dependencies:
+ postcss: 8.4.49
+
+ postcss-import@15.1.0(postcss@8.4.49):
+ dependencies:
+ postcss: 8.4.49
+ postcss-value-parser: 4.2.0
+ read-cache: 1.0.0
+ resolve: 1.22.10
+
+ postcss-js@4.0.1(postcss@8.4.49):
+ dependencies:
+ camelcase-css: 2.0.1
+ postcss: 8.4.49
+
+ postcss-load-config@4.0.2(postcss@8.4.49):
+ dependencies:
+ lilconfig: 3.1.3
+ yaml: 2.7.0
+ optionalDependencies:
+ postcss: 8.4.49
+
+ postcss-modules-extract-imports@3.1.0(postcss@8.4.49):
+ dependencies:
+ postcss: 8.4.49
+
+ postcss-modules-local-by-default@4.2.0(postcss@8.4.49):
+ dependencies:
+ icss-utils: 5.1.0(postcss@8.4.49)
+ postcss: 8.4.49
+ postcss-selector-parser: 7.0.0
+ postcss-value-parser: 4.2.0
+
+ postcss-modules-scope@3.2.1(postcss@8.4.49):
+ dependencies:
+ postcss: 8.4.49
+ postcss-selector-parser: 7.0.0
+
+ postcss-modules-values@4.0.0(postcss@8.4.49):
+ dependencies:
+ icss-utils: 5.1.0(postcss@8.4.49)
+ postcss: 8.4.49
+
+ postcss-modules@6.0.1(postcss@8.4.49):
+ dependencies:
+ generic-names: 4.0.0
+ icss-utils: 5.1.0(postcss@8.4.49)
+ lodash.camelcase: 4.3.0
+ postcss: 8.4.49
+ postcss-modules-extract-imports: 3.1.0(postcss@8.4.49)
+ postcss-modules-local-by-default: 4.2.0(postcss@8.4.49)
+ postcss-modules-scope: 3.2.1(postcss@8.4.49)
+ postcss-modules-values: 4.0.0(postcss@8.4.49)
+ string-hash: 1.1.3
+
+ postcss-nested@6.2.0(postcss@8.4.49):
+ dependencies:
+ postcss: 8.4.49
+ postcss-selector-parser: 6.1.2
+
+ postcss-selector-parser@6.1.2:
+ dependencies:
+ cssesc: 3.0.0
+ util-deprecate: 1.0.2
+
+ postcss-selector-parser@7.0.0:
+ dependencies:
+ cssesc: 3.0.0
+ util-deprecate: 1.0.2
+
+ postcss-value-parser@4.2.0: {}
+
+ postcss@8.4.49:
+ dependencies:
+ nanoid: 3.3.8
+ picocolors: 1.1.1
+ source-map-js: 1.2.1
+
+ prelude-ls@1.2.1: {}
+
+ prettier@2.8.8: {}
+
+ pretty-ms@7.0.1:
+ dependencies:
+ parse-ms: 2.1.0
+
+ proc-log@3.0.0: {}
+
+ process-nextick-args@2.0.1: {}
+
+ promise-inflight@1.0.1: {}
+
+ promise-retry@2.0.1:
+ dependencies:
+ err-code: 2.0.3
+ retry: 0.12.0
+
+ prop-types@15.8.1:
+ dependencies:
+ loose-envify: 1.4.0
+ object-assign: 4.1.1
+ react-is: 16.13.1
+
+ property-information@6.5.0: {}
+
+ proxy-addr@2.0.7:
+ dependencies:
+ forwarded: 0.2.0
+ ipaddr.js: 1.9.1
+
+ pump@2.0.1:
+ dependencies:
+ end-of-stream: 1.4.4
+ once: 1.4.0
+
+ pump@3.0.2:
+ dependencies:
+ end-of-stream: 1.4.4
+ once: 1.4.0
+
+ pumpify@1.5.1:
+ dependencies:
+ duplexify: 3.7.1
+ inherits: 2.0.4
+ pump: 2.0.1
+
+ punycode@2.3.1: {}
+
+ qs@6.13.0:
+ dependencies:
+ side-channel: 1.1.0
+
+ queue-microtask@1.2.3: {}
+
+ range-parser@1.2.1: {}
+
+ raw-body@2.5.2:
+ dependencies:
+ bytes: 3.1.2
+ http-errors: 2.0.0
+ iconv-lite: 0.4.24
+ unpipe: 1.0.0
+
+ react-aiwriter@1.0.0: {}
+
+ react-dom@18.3.1(react@18.3.1):
+ dependencies:
+ loose-envify: 1.4.0
+ react: 18.3.1
+ scheduler: 0.23.2
+
+ react-is@16.13.1: {}
+
+ react-refresh@0.14.2: {}
+
+ react-remove-scroll-bar@2.3.8(@types/react@18.3.18)(react@18.3.1):
+ dependencies:
+ react: 18.3.1
+ react-style-singleton: 2.2.3(@types/react@18.3.18)(react@18.3.1)
+ tslib: 2.8.1
+ optionalDependencies:
+ "@types/react": 18.3.18
+
+ react-remove-scroll@2.6.2(@types/react@18.3.18)(react@18.3.1):
+ dependencies:
+ react: 18.3.1
+ react-remove-scroll-bar: 2.3.8(@types/react@18.3.18)(react@18.3.1)
+ react-style-singleton: 2.2.3(@types/react@18.3.18)(react@18.3.1)
+ tslib: 2.8.1
+ use-callback-ref: 1.3.3(@types/react@18.3.18)(react@18.3.1)
+ use-sidecar: 1.1.3(@types/react@18.3.18)(react@18.3.1)
+ optionalDependencies:
+ "@types/react": 18.3.18
+
+ react-router-dom@6.28.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1):
+ dependencies:
+ "@remix-run/router": 1.21.0
+ react: 18.3.1
+ react-dom: 18.3.1(react@18.3.1)
+ react-router: 6.28.1(react@18.3.1)
+
+ react-router@6.28.1(react@18.3.1):
+ dependencies:
+ "@remix-run/router": 1.21.0
+ react: 18.3.1
+
+ react-style-singleton@2.2.3(@types/react@18.3.18)(react@18.3.1):
+ dependencies:
+ get-nonce: 1.0.1
+ react: 18.3.1
+ tslib: 2.8.1
+ optionalDependencies:
+ "@types/react": 18.3.18
+
+ react-textarea-autosize@8.5.6(@types/react@18.3.18)(react@18.3.1):
+ dependencies:
+ "@babel/runtime": 7.26.0
+ react: 18.3.1
+ use-composed-ref: 1.4.0(@types/react@18.3.18)(react@18.3.1)
+ use-latest: 1.3.0(@types/react@18.3.18)(react@18.3.1)
+ transitivePeerDependencies:
+ - "@types/react"
+
+ react@18.3.1:
+ dependencies:
+ loose-envify: 1.4.0
+
+ read-cache@1.0.0:
+ dependencies:
+ pify: 2.3.0
+
+ readable-stream@2.3.8:
+ dependencies:
+ core-util-is: 1.0.3
+ inherits: 2.0.4
+ isarray: 1.0.0
+ process-nextick-args: 2.0.1
+ safe-buffer: 5.1.2
+ string_decoder: 1.1.1
+ util-deprecate: 1.0.2
+
+ 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
+
+ reflect.getprototypeof@1.0.10:
+ dependencies:
+ call-bind: 1.0.8
+ define-properties: 1.2.1
+ es-abstract: 1.23.9
+ es-errors: 1.3.0
+ es-object-atoms: 1.0.0
+ get-intrinsic: 1.2.7
+ get-proto: 1.0.1
+ which-builtin-type: 1.2.1
+
+ regenerator-runtime@0.14.1: {}
+
+ regexp.prototype.flags@1.5.4:
+ dependencies:
+ call-bind: 1.0.8
+ define-properties: 1.2.1
+ es-errors: 1.3.0
+ get-proto: 1.0.1
+ gopd: 1.2.0
+ set-function-name: 2.0.2
+
+ remark-frontmatter@4.0.1:
+ dependencies:
+ "@types/mdast": 3.0.15
+ mdast-util-frontmatter: 1.0.1
+ micromark-extension-frontmatter: 1.1.1
+ unified: 10.1.2
+
+ remark-mdx-frontmatter@1.1.1:
+ dependencies:
+ estree-util-is-identifier-name: 1.1.0
+ estree-util-value-to-estree: 1.3.0
+ js-yaml: 4.1.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
+
+ 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-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
+
+ require-like@0.1.2: {}
+
+ resolve-from@4.0.0: {}
+
+ resolve-pkg-maps@1.0.0: {}
+
+ resolve.exports@2.0.3: {}
+
+ resolve@1.22.10:
+ dependencies:
+ is-core-module: 2.16.1
+ path-parse: 1.0.7
+ supports-preserve-symlinks-flag: 1.0.0
+
+ resolve@2.0.0-next.5:
+ dependencies:
+ is-core-module: 2.16.1
+ path-parse: 1.0.7
+ supports-preserve-symlinks-flag: 1.0.0
+
+ restore-cursor@3.1.0:
+ dependencies:
+ onetime: 5.1.2
+ signal-exit: 3.0.7
+
+ retry@0.12.0: {}
+
+ reusify@1.0.4: {}
+
+ rollup@4.30.1:
+ dependencies:
+ "@types/estree": 1.0.6
+ optionalDependencies:
+ "@rollup/rollup-android-arm-eabi": 4.30.1
+ "@rollup/rollup-android-arm64": 4.30.1
+ "@rollup/rollup-darwin-arm64": 4.30.1
+ "@rollup/rollup-darwin-x64": 4.30.1
+ "@rollup/rollup-freebsd-arm64": 4.30.1
+ "@rollup/rollup-freebsd-x64": 4.30.1
+ "@rollup/rollup-linux-arm-gnueabihf": 4.30.1
+ "@rollup/rollup-linux-arm-musleabihf": 4.30.1
+ "@rollup/rollup-linux-arm64-gnu": 4.30.1
+ "@rollup/rollup-linux-arm64-musl": 4.30.1
+ "@rollup/rollup-linux-loongarch64-gnu": 4.30.1
+ "@rollup/rollup-linux-powerpc64le-gnu": 4.30.1
+ "@rollup/rollup-linux-riscv64-gnu": 4.30.1
+ "@rollup/rollup-linux-s390x-gnu": 4.30.1
+ "@rollup/rollup-linux-x64-gnu": 4.30.1
+ "@rollup/rollup-linux-x64-musl": 4.30.1
+ "@rollup/rollup-win32-arm64-msvc": 4.30.1
+ "@rollup/rollup-win32-ia32-msvc": 4.30.1
+ "@rollup/rollup-win32-x64-msvc": 4.30.1
+ fsevents: 2.3.3
+
+ run-parallel@1.2.0:
+ dependencies:
+ queue-microtask: 1.2.3
+
+ sade@1.8.1:
+ dependencies:
+ mri: 1.2.0
+
+ safe-array-concat@1.1.3:
+ dependencies:
+ call-bind: 1.0.8
+ call-bound: 1.0.3
+ get-intrinsic: 1.2.7
+ has-symbols: 1.1.0
+ isarray: 2.0.5
+
+ safe-buffer@5.1.2: {}
+
+ safe-buffer@5.2.1: {}
+
+ safe-push-apply@1.0.0:
+ dependencies:
+ es-errors: 1.3.0
+ isarray: 2.0.5
+
+ safe-regex-test@1.1.0:
+ dependencies:
+ call-bound: 1.0.3
+ es-errors: 1.3.0
+ is-regex: 1.2.1
+
+ safer-buffer@2.1.2: {}
+
+ scheduler@0.23.2:
+ dependencies:
+ loose-envify: 1.4.0
+
+ secure-json-parse@3.0.2: {}
+
+ semver@6.3.1: {}
+
+ semver@7.6.3: {}
+
+ send@0.19.0:
+ dependencies:
+ debug: 2.6.9
+ depd: 2.0.0
+ destroy: 1.2.0
+ encodeurl: 1.0.2
+ escape-html: 1.0.3
+ etag: 1.8.1
+ fresh: 0.5.2
+ http-errors: 2.0.0
+ mime: 1.6.0
+ ms: 2.1.3
+ on-finished: 2.4.1
+ range-parser: 1.2.1
+ statuses: 2.0.1
+ transitivePeerDependencies:
+ - supports-color
+
+ serve-static@1.16.2:
+ dependencies:
+ encodeurl: 2.0.0
+ escape-html: 1.0.3
+ parseurl: 1.3.3
+ send: 0.19.0
+ transitivePeerDependencies:
+ - supports-color
+
+ set-cookie-parser@2.7.1: {}
+
+ set-function-length@1.2.2:
+ dependencies:
+ define-data-property: 1.1.4
+ es-errors: 1.3.0
+ function-bind: 1.1.2
+ get-intrinsic: 1.2.7
+ gopd: 1.2.0
+ has-property-descriptors: 1.0.2
+
+ set-function-name@2.0.2:
+ dependencies:
+ define-data-property: 1.1.4
+ es-errors: 1.3.0
+ functions-have-names: 1.2.3
+ has-property-descriptors: 1.0.2
+
+ set-proto@1.0.0:
+ dependencies:
+ dunder-proto: 1.0.1
+ es-errors: 1.3.0
+ es-object-atoms: 1.0.0
+
+ setprototypeof@1.2.0: {}
+
+ shebang-command@2.0.0:
+ dependencies:
+ shebang-regex: 3.0.0
+
+ shebang-regex@3.0.0: {}
+
+ side-channel-list@1.0.0:
+ dependencies:
+ es-errors: 1.3.0
+ object-inspect: 1.13.3
+
+ side-channel-map@1.0.1:
+ dependencies:
+ call-bound: 1.0.3
+ es-errors: 1.3.0
+ get-intrinsic: 1.2.7
+ object-inspect: 1.13.3
+
+ side-channel-weakmap@1.0.2:
+ dependencies:
+ call-bound: 1.0.3
+ es-errors: 1.3.0
+ get-intrinsic: 1.2.7
+ object-inspect: 1.13.3
+ side-channel-map: 1.0.1
+
+ side-channel@1.1.0:
+ dependencies:
+ es-errors: 1.3.0
+ object-inspect: 1.13.3
+ side-channel-list: 1.0.0
+ side-channel-map: 1.0.1
+ side-channel-weakmap: 1.0.2
+
+ signal-exit@3.0.7: {}
+
+ signal-exit@4.1.0: {}
+
+ slash@3.0.0: {}
+
+ source-map-js@1.2.1: {}
+
+ source-map-support@0.5.21:
+ dependencies:
+ buffer-from: 1.1.2
+ source-map: 0.6.1
+
+ source-map@0.6.1: {}
+
+ source-map@0.7.4: {}
+
+ space-separated-tokens@2.0.2: {}
+
+ spdx-correct@3.2.0:
+ dependencies:
+ spdx-expression-parse: 3.0.1
+ spdx-license-ids: 3.0.20
+
+ spdx-exceptions@2.5.0: {}
+
+ spdx-expression-parse@3.0.1:
+ dependencies:
+ spdx-exceptions: 2.5.0
+ spdx-license-ids: 3.0.20
+
+ spdx-license-ids@3.0.20: {}
+
+ ssri@10.0.6:
+ dependencies:
+ minipass: 7.1.2
+
+ stable-hash@0.0.4: {}
+
+ statuses@2.0.1: {}
+
+ stream-shift@1.0.3: {}
+
+ stream-slice@0.1.2: {}
+
+ string-hash@1.1.3: {}
+
+ string-width@4.2.3:
+ dependencies:
+ emoji-regex: 8.0.0
+ is-fullwidth-code-point: 3.0.0
+ strip-ansi: 6.0.1
+
+ string-width@5.1.2:
+ dependencies:
+ eastasianwidth: 0.2.0
+ emoji-regex: 9.2.2
+ strip-ansi: 7.1.0
+
+ string.prototype.includes@2.0.1:
+ dependencies:
+ call-bind: 1.0.8
+ define-properties: 1.2.1
+ es-abstract: 1.23.9
+
+ string.prototype.matchall@4.0.12:
+ dependencies:
+ call-bind: 1.0.8
+ call-bound: 1.0.3
+ define-properties: 1.2.1
+ es-abstract: 1.23.9
+ es-errors: 1.3.0
+ es-object-atoms: 1.0.0
+ get-intrinsic: 1.2.7
+ gopd: 1.2.0
+ has-symbols: 1.1.0
+ internal-slot: 1.1.0
+ regexp.prototype.flags: 1.5.4
+ set-function-name: 2.0.2
+ side-channel: 1.1.0
+
+ string.prototype.repeat@1.0.0:
+ dependencies:
+ define-properties: 1.2.1
+ es-abstract: 1.23.9
+
+ string.prototype.trim@1.2.10:
+ dependencies:
+ call-bind: 1.0.8
+ call-bound: 1.0.3
+ define-data-property: 1.1.4
+ define-properties: 1.2.1
+ es-abstract: 1.23.9
+ es-object-atoms: 1.0.0
+ has-property-descriptors: 1.0.2
+
+ string.prototype.trimend@1.0.9:
+ dependencies:
+ call-bind: 1.0.8
+ call-bound: 1.0.3
+ define-properties: 1.2.1
+ es-object-atoms: 1.0.0
+
+ string.prototype.trimstart@1.0.8:
+ dependencies:
+ call-bind: 1.0.8
+ define-properties: 1.2.1
+ es-object-atoms: 1.0.0
+
+ string_decoder@1.1.1:
+ dependencies:
+ safe-buffer: 5.1.2
+
+ string_decoder@1.3.0:
+ dependencies:
+ safe-buffer: 5.2.1
+
+ stringify-entities@4.0.4:
+ dependencies:
+ character-entities-html4: 2.1.0
+ character-entities-legacy: 3.0.0
+
+ strip-ansi@6.0.1:
+ dependencies:
+ ansi-regex: 5.0.1
+
+ strip-ansi@7.1.0:
+ dependencies:
+ ansi-regex: 6.1.0
+
+ strip-bom@3.0.0: {}
+
+ strip-final-newline@2.0.0: {}
+
+ strip-json-comments@3.1.1: {}
+
+ style-to-object@0.4.4:
+ dependencies:
+ inline-style-parser: 0.1.1
+
+ sucrase@3.35.0:
+ dependencies:
+ "@jridgewell/gen-mapping": 0.3.8
+ commander: 4.1.1
+ glob: 10.4.5
+ lines-and-columns: 1.2.4
+ mz: 2.7.0
+ pirates: 4.0.6
+ ts-interface-checker: 0.1.13
+
+ supports-color@7.2.0:
+ dependencies:
+ has-flag: 4.0.0
+
+ supports-preserve-symlinks-flag@1.0.0: {}
+
+ tailwind-merge@2.6.0: {}
+
+ tailwindcss-animate@1.0.7(tailwindcss@3.4.17):
+ dependencies:
+ tailwindcss: 3.4.17
+
+ tailwindcss@3.4.17:
+ dependencies:
+ "@alloc/quick-lru": 5.2.0
+ arg: 5.0.2
+ chokidar: 3.6.0
+ didyoumean: 1.2.2
+ dlv: 1.1.3
+ fast-glob: 3.3.3
+ glob-parent: 6.0.2
+ is-glob: 4.0.3
+ jiti: 1.21.7
+ lilconfig: 3.1.3
+ micromatch: 4.0.8
+ normalize-path: 3.0.0
+ object-hash: 3.0.0
+ picocolors: 1.1.1
+ postcss: 8.4.49
+ postcss-import: 15.1.0(postcss@8.4.49)
+ postcss-js: 4.0.1(postcss@8.4.49)
+ postcss-load-config: 4.0.2(postcss@8.4.49)
+ postcss-nested: 6.2.0(postcss@8.4.49)
+ postcss-selector-parser: 6.1.2
+ resolve: 1.22.10
+ sucrase: 3.35.0
+ transitivePeerDependencies:
+ - ts-node
+
+ tapable@2.2.1: {}
+
+ tar-fs@2.1.1:
+ dependencies:
+ chownr: 1.1.4
+ mkdirp-classic: 0.5.3
+ pump: 3.0.2
+ tar-stream: 2.2.0
+
+ tar-stream@2.2.0:
+ dependencies:
+ bl: 4.1.0
+ end-of-stream: 1.4.4
+ fs-constants: 1.0.0
+ inherits: 2.0.4
+ readable-stream: 3.6.2
+
+ 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
+
+ thenify-all@1.6.0:
+ dependencies:
+ thenify: 3.3.1
+
+ thenify@3.3.1:
+ dependencies:
+ any-promise: 1.3.0
+
+ through2@2.0.5:
+ dependencies:
+ readable-stream: 2.3.8
+ xtend: 4.0.2
+
+ to-regex-range@5.0.1:
+ dependencies:
+ is-number: 7.0.0
+
+ toidentifier@1.0.1: {}
+
+ toml@3.0.0: {}
+
+ trim-lines@3.0.1: {}
+
+ trough@2.2.0: {}
+
+ ts-api-utils@1.4.3(typescript@5.6.3):
+ dependencies:
+ typescript: 5.6.3
+
+ ts-api-utils@2.0.0(typescript@5.6.3):
+ dependencies:
+ typescript: 5.6.3
+
+ ts-interface-checker@0.1.13: {}
+
+ tsconfck@3.1.4(typescript@5.6.3):
+ optionalDependencies:
+ typescript: 5.6.3
+
+ tsconfig-paths@3.15.0:
+ dependencies:
+ "@types/json5": 0.0.29
+ json5: 1.0.2
+ minimist: 1.2.8
+ strip-bom: 3.0.0
+
+ tsconfig-paths@4.2.0:
+ dependencies:
+ json5: 2.2.3
+ minimist: 1.2.8
+ strip-bom: 3.0.0
+
+ tslib@2.8.1: {}
+
+ turbo-stream@2.4.0: {}
+
+ type-check@0.4.0:
+ dependencies:
+ prelude-ls: 1.2.1
+
+ type-is@1.6.18:
+ dependencies:
+ media-typer: 0.3.0
+ mime-types: 2.1.35
+
+ typed-array-buffer@1.0.3:
+ dependencies:
+ call-bound: 1.0.3
+ es-errors: 1.3.0
+ is-typed-array: 1.1.15
+
+ typed-array-byte-length@1.0.3:
+ dependencies:
+ call-bind: 1.0.8
+ for-each: 0.3.3
+ gopd: 1.2.0
+ has-proto: 1.2.0
+ is-typed-array: 1.1.15
+
+ typed-array-byte-offset@1.0.4:
+ dependencies:
+ available-typed-arrays: 1.0.7
+ call-bind: 1.0.8
+ for-each: 0.3.3
+ gopd: 1.2.0
+ has-proto: 1.2.0
+ is-typed-array: 1.1.15
+ reflect.getprototypeof: 1.0.10
+
+ typed-array-length@1.0.7:
+ dependencies:
+ call-bind: 1.0.8
+ for-each: 0.3.3
+ gopd: 1.2.0
+ is-typed-array: 1.1.15
+ possible-typed-array-names: 1.0.0
+ reflect.getprototypeof: 1.0.10
+
+ typescript-eslint@8.19.1(eslint@9.17.0(jiti@1.21.7))(typescript@5.6.3):
+ dependencies:
+ "@typescript-eslint/eslint-plugin": 8.19.1(@typescript-eslint/parser@8.19.1(eslint@9.17.0(jiti@1.21.7))(typescript@5.6.3))(eslint@9.17.0(jiti@1.21.7))(typescript@5.6.3)
+ "@typescript-eslint/parser": 8.19.1(eslint@9.17.0(jiti@1.21.7))(typescript@5.6.3)
+ "@typescript-eslint/utils": 8.19.1(eslint@9.17.0(jiti@1.21.7))(typescript@5.6.3)
+ eslint: 9.17.0(jiti@1.21.7)
+ typescript: 5.6.3
+ transitivePeerDependencies:
+ - supports-color
+
+ typescript@5.6.3: {}
+
+ ufo@1.5.4: {}
+
+ unbox-primitive@1.1.0:
+ dependencies:
+ call-bound: 1.0.3
+ has-bigints: 1.1.0
+ has-symbols: 1.1.0
+ which-boxed-primitive: 1.1.1
+
+ undici-types@6.20.0: {}
+
+ undici@6.21.0: {}
+
+ unified@10.1.2:
+ dependencies:
+ "@types/unist": 2.0.11
+ bail: 2.0.2
+ extend: 3.0.2
+ is-buffer: 2.0.5
+ is-plain-obj: 4.1.0
+ trough: 2.2.0
+ vfile: 5.3.7
+
+ unique-filename@3.0.0:
+ dependencies:
+ unique-slug: 4.0.0
+
+ unique-slug@4.0.0:
+ dependencies:
+ imurmurhash: 0.1.4
+
+ unist-util-generated@2.0.1: {}
+
+ unist-util-is@5.2.1:
+ dependencies:
+ "@types/unist": 2.0.11
+
+ unist-util-position-from-estree@1.1.2:
+ dependencies:
+ "@types/unist": 2.0.11
+
+ unist-util-position@4.0.4:
+ dependencies:
+ "@types/unist": 2.0.11
+
+ 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
+
+ unist-util-visit-parents@5.1.3:
+ dependencies:
+ "@types/unist": 2.0.11
+ unist-util-is: 5.2.1
+
+ unist-util-visit@4.1.2:
+ dependencies:
+ "@types/unist": 2.0.11
+ unist-util-is: 5.2.1
+ unist-util-visit-parents: 5.1.3
+
+ universalify@2.0.1: {}
+
+ unpipe@1.0.0: {}
+
+ update-browserslist-db@1.1.1(browserslist@4.24.3):
+ dependencies:
+ browserslist: 4.24.3
+ escalade: 3.2.0
+ picocolors: 1.1.1
+
+ uri-js@4.4.1:
+ dependencies:
+ punycode: 2.3.1
+
+ use-callback-ref@1.3.3(@types/react@18.3.18)(react@18.3.1):
+ dependencies:
+ react: 18.3.1
+ tslib: 2.8.1
+ optionalDependencies:
+ "@types/react": 18.3.18
+
+ use-composed-ref@1.4.0(@types/react@18.3.18)(react@18.3.1):
+ dependencies:
+ react: 18.3.1
+ optionalDependencies:
+ "@types/react": 18.3.18
+
+ use-isomorphic-layout-effect@1.2.0(@types/react@18.3.18)(react@18.3.1):
+ dependencies:
+ react: 18.3.1
+ optionalDependencies:
+ "@types/react": 18.3.18
+
+ use-latest@1.3.0(@types/react@18.3.18)(react@18.3.1):
+ dependencies:
+ react: 18.3.1
+ use-isomorphic-layout-effect: 1.2.0(@types/react@18.3.18)(react@18.3.1)
+ optionalDependencies:
+ "@types/react": 18.3.18
+
+ use-sidecar@1.1.3(@types/react@18.3.18)(react@18.3.1):
+ dependencies:
+ detect-node-es: 1.1.0
+ react: 18.3.1
+ tslib: 2.8.1
+ optionalDependencies:
+ "@types/react": 18.3.18
+
+ use-sound@4.0.3(react@18.3.1):
+ dependencies:
+ howler: 2.2.4
+ react: 18.3.1
+
+ util-deprecate@1.0.2: {}
+
+ util@0.12.5:
+ dependencies:
+ inherits: 2.0.4
+ is-arguments: 1.2.0
+ is-generator-function: 1.1.0
+ is-typed-array: 1.1.15
+ which-typed-array: 1.1.18
+
+ utils-merge@1.0.1: {}
+
+ uvu@0.5.6:
+ dependencies:
+ dequal: 2.0.3
+ diff: 5.2.0
+ kleur: 4.1.5
+ sade: 1.8.1
+
+ valibot@0.41.0(typescript@5.6.3):
+ optionalDependencies:
+ typescript: 5.6.3
+
+ validate-npm-package-license@3.0.4:
+ dependencies:
+ spdx-correct: 3.2.0
+ spdx-expression-parse: 3.0.1
+
+ validate-npm-package-name@5.0.1: {}
+
+ vary@1.1.2: {}
+
+ vfile-message@3.1.4:
+ dependencies:
+ "@types/unist": 2.0.11
+ unist-util-stringify-position: 3.0.3
+
+ vfile@5.3.7:
+ dependencies:
+ "@types/unist": 2.0.11
+ is-buffer: 2.0.5
+ unist-util-stringify-position: 3.0.3
+ vfile-message: 3.1.4
+
+ vite-node@1.6.0(@types/node@22.10.5):
+ dependencies:
+ cac: 6.7.14
+ debug: 4.4.0
+ pathe: 1.1.2
+ picocolors: 1.1.1
+ vite: 5.4.11(@types/node@22.10.5)
+ transitivePeerDependencies:
+ - "@types/node"
+ - less
+ - lightningcss
+ - sass
+ - sass-embedded
+ - stylus
+ - sugarss
+ - supports-color
+ - terser
+
+ vite-tsconfig-paths@4.3.2(typescript@5.6.3)(vite@6.0.7(@types/node@22.10.5)(jiti@1.21.7)(yaml@2.7.0)):
+ dependencies:
+ debug: 4.4.0
+ globrex: 0.1.2
+ tsconfck: 3.1.4(typescript@5.6.3)
+ optionalDependencies:
+ vite: 6.0.7(@types/node@22.10.5)(jiti@1.21.7)(yaml@2.7.0)
+ transitivePeerDependencies:
+ - supports-color
+ - typescript
+
+ vite@5.4.11(@types/node@22.10.5):
+ dependencies:
+ esbuild: 0.21.5
+ postcss: 8.4.49
+ rollup: 4.30.1
+ optionalDependencies:
+ "@types/node": 22.10.5
+ fsevents: 2.3.3
+
+ vite@6.0.7(@types/node@22.10.5)(jiti@1.21.7)(yaml@2.7.0):
+ dependencies:
+ esbuild: 0.24.2
+ postcss: 8.4.49
+ rollup: 4.30.1
+ optionalDependencies:
+ "@types/node": 22.10.5
+ fsevents: 2.3.3
+ jiti: 1.21.7
+ yaml: 2.7.0
+
+ wcwidth@1.0.1:
+ dependencies:
+ defaults: 1.0.4
+
+ web-encoding@1.1.5:
+ dependencies:
+ util: 0.12.5
+ optionalDependencies:
+ "@zxing/text-encoding": 0.9.0
+
+ web-streams-polyfill@3.3.3: {}
+
+ which-boxed-primitive@1.1.1:
+ dependencies:
+ is-bigint: 1.1.0
+ is-boolean-object: 1.2.1
+ is-number-object: 1.1.1
+ is-string: 1.1.1
+ is-symbol: 1.1.1
+
+ which-builtin-type@1.2.1:
+ dependencies:
+ call-bound: 1.0.3
+ function.prototype.name: 1.1.8
+ has-tostringtag: 1.0.2
+ is-async-function: 2.1.0
+ is-date-object: 1.1.0
+ is-finalizationregistry: 1.1.1
+ is-generator-function: 1.1.0
+ is-regex: 1.2.1
+ is-weakref: 1.1.0
+ isarray: 2.0.5
+ which-boxed-primitive: 1.1.1
+ which-collection: 1.0.2
+ which-typed-array: 1.1.18
+
+ which-collection@1.0.2:
+ dependencies:
+ is-map: 2.0.3
+ is-set: 2.0.3
+ is-weakmap: 2.0.2
+ is-weakset: 2.0.4
+
+ which-typed-array@1.1.18:
+ dependencies:
+ available-typed-arrays: 1.0.7
+ call-bind: 1.0.8
+ call-bound: 1.0.3
+ for-each: 0.3.3
+ gopd: 1.2.0
+ has-tostringtag: 1.0.2
+
+ which@2.0.2:
+ dependencies:
+ isexe: 2.0.0
+
+ which@3.0.1:
+ dependencies:
+ isexe: 2.0.0
+
+ word-wrap@1.2.5: {}
+
+ wrap-ansi@7.0.0:
+ dependencies:
+ ansi-styles: 4.3.0
+ string-width: 4.2.3
+ strip-ansi: 6.0.1
+
+ wrap-ansi@8.1.0:
+ dependencies:
+ ansi-styles: 6.2.1
+ string-width: 5.1.2
+ strip-ansi: 7.1.0
+
+ wrappy@1.0.2: {}
+
+ ws@7.5.10: {}
+
+ xtend@4.0.2: {}
+
+ yallist@3.1.1: {}
+
+ yallist@4.0.0: {}
+
+ yaml@2.7.0: {}
+
+ yocto-queue@0.1.0: {}
+
+ zod-to-json-schema@3.24.1(zod@3.24.1):
+ dependencies:
+ zod: 3.24.1
+
+ zod@3.24.1: {}
+
+ zustand@5.0.3(@types/react@18.3.18)(react@18.3.1):
+ optionalDependencies:
+ "@types/react": 18.3.18
+ react: 18.3.1
+
+ zwitch@2.0.4: {}
diff --git a/client/public/elizaos-icon.png b/client/public/elizaos-icon.png
new file mode 100644
index 0000000000..0350e7dc41
Binary files /dev/null and b/client/public/elizaos-icon.png differ
diff --git a/client/public/elizaos.webp b/client/public/elizaos.webp
new file mode 100644
index 0000000000..899c89660a
Binary files /dev/null and b/client/public/elizaos.webp differ
diff --git a/client/public/vite.svg b/client/public/vite.svg
deleted file mode 100644
index e7b8dfb1b2..0000000000
--- a/client/public/vite.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/client/src/Agent.tsx b/client/src/Agent.tsx
deleted file mode 100644
index f3094f14eb..0000000000
--- a/client/src/Agent.tsx
+++ /dev/null
@@ -1,10 +0,0 @@
-export default function Agent() {
- return (
-
-
- Select an option from the sidebar to configure, view, or chat
- with your ELIZA agent
-
-
- );
-}
diff --git a/client/src/Agents.tsx b/client/src/Agents.tsx
deleted file mode 100644
index 55dc8e1ee1..0000000000
--- a/client/src/Agents.tsx
+++ /dev/null
@@ -1,35 +0,0 @@
-import { Button } from "@/components/ui/button";
-import { useNavigate } from "react-router-dom";
-import { useGetAgentsQuery } from "@/api";
-import "./App.css";
-
-function Agents() {
- const navigate = useNavigate();
- const { data: agents, isLoading } = useGetAgentsQuery();
-
- return (
-
-
Select your agent:
-
- {isLoading ? (
-
Loading agents...
- ) : (
-
- {agents?.map((agent) => (
- {
- navigate(`/${agent.id}`);
- }}
- >
- {agent.name}
-
- ))}
-
- )}
-
- );
-}
-
-export default Agents;
diff --git a/client/src/App.css b/client/src/App.css
deleted file mode 100644
index d6055f0d02..0000000000
--- a/client/src/App.css
+++ /dev/null
@@ -1,41 +0,0 @@
-#root {
- max-width: 1280px;
- margin: 0 auto;
- text-align: center;
-}
-
-.logo {
- height: 6em;
- padding: 1.5em;
- will-change: filter;
- transition: filter 300ms;
-}
-.logo:hover {
- filter: drop-shadow(0 0 2em #646cffaa);
-}
-.logo.react:hover {
- filter: drop-shadow(0 0 2em #61dafbaa);
-}
-
-@keyframes logo-spin {
- from {
- transform: rotate(0deg);
- }
- to {
- transform: rotate(360deg);
- }
-}
-
-@media (prefers-reduced-motion: no-preference) {
- a:nth-of-type(2) .logo {
- animation: logo-spin infinite 20s linear;
- }
-}
-
-.card {
- padding: 2em;
-}
-
-.read-the-docs {
- color: #888;
-}
diff --git a/client/src/App.tsx b/client/src/App.tsx
index c5b0826f12..e7c13846c4 100644
--- a/client/src/App.tsx
+++ b/client/src/App.tsx
@@ -1,11 +1,58 @@
-import "./App.css";
-import Agents from "./Agents";
+import "./index.css";
+import { QueryClient, QueryClientProvider } from "@tanstack/react-query";
+import { SidebarInset, SidebarProvider } from "@/components/ui/sidebar";
+import { AppSidebar } from "./components/app-sidebar";
+import { TooltipProvider } from "./components/ui/tooltip";
+import { Toaster } from "./components/ui/toaster";
+import { BrowserRouter, Route, Routes } from "react-router";
+import Chat from "./routes/chat";
+import Overview from "./routes/overview";
+import Home from "./routes/home";
+import useVersion from "./hooks/use-version";
+
+const queryClient = new QueryClient({
+ defaultOptions: {
+ queries: {
+ staleTime: Infinity,
+ },
+ },
+});
function App() {
+ useVersion();
return (
-
+
+
+
+
+
+
+
+
+
+ } />
+ }
+ />
+ }
+ />
+
+
+
+
+
+
+
+
+
);
}
diff --git a/client/src/Character.tsx b/client/src/Character.tsx
deleted file mode 100644
index bdb53882ad..0000000000
--- a/client/src/Character.tsx
+++ /dev/null
@@ -1,7 +0,0 @@
-export default function Character() {
- return (
-
- );
-}
diff --git a/client/src/Chat.tsx b/client/src/Chat.tsx
deleted file mode 100644
index 6158d639db..0000000000
--- a/client/src/Chat.tsx
+++ /dev/null
@@ -1,162 +0,0 @@
-import { Button } from "@/components/ui/button";
-import { Input } from "@/components/ui/input";
-import type { TextResponse } from "@/api";
-import { useSendMessageMutation } from "@/api";
-import { ImageIcon } from "lucide-react";
-import { useEffect, useRef, useState } from "react";
-import { useParams } from "react-router-dom";
-import "./App.css";
-
-export default function Chat() {
- const { agentId } = useParams();
- const [input, setInput] = useState("");
- const [messages, setMessages] = useState([]);
- const [selectedFile, setSelectedFile] = useState(null);
- const fileInputRef = useRef(null);
- const messagesEndRef = useRef(null);
- const { mutate: sendMessage, isPending } = useSendMessageMutation({
- setMessages,
- setSelectedFile,
- });
-
- const scrollToBottom = () => {
- messagesEndRef.current?.scrollIntoView({ behavior: "smooth" });
- };
-
- useEffect(() => {
- scrollToBottom();
- }, [messages]);
-
- const handleSubmit = async (e: React.FormEvent) => {
- e.preventDefault();
- if ((!input.trim() && !selectedFile) || !agentId) return;
-
- // Add user message immediately to state
- const userMessage: TextResponse = {
- text: input,
- user: "user",
- attachments: selectedFile
- ? [
- {
- url: URL.createObjectURL(selectedFile),
- contentType: selectedFile.type,
- title: selectedFile.name,
- },
- ]
- : undefined,
- };
- setMessages((prev) => [...prev, userMessage]);
-
- sendMessage({ text: input, agentId, selectedFile });
- setInput("");
- };
-
- const handleFileSelect = () => {
- fileInputRef.current?.click();
- };
-
- const handleFileChange = (e: React.ChangeEvent) => {
- const file = e.target.files?.[0];
- if (file && file.type.startsWith("image/")) {
- setSelectedFile(file);
- }
- };
-
- return (
-
-
-
- {messages.length > 0 ? (
- messages.map((message, index) => (
-
-
- {message.text}
- {message.attachments?.map(
- (attachment, i) =>
- attachment.contentType.startsWith(
- "image/"
- ) && (
-
- )
- )}
-
-
- ))
- ) : (
-
- No messages yet. Start a conversation!
-
- )}
-
-
-
-
-
-
-
- {selectedFile && (
-
- Selected file: {selectedFile.name}
-
- )}
-
-
-
- );
-}
diff --git a/client/src/Layout.tsx b/client/src/Layout.tsx
deleted file mode 100644
index 70c79f7403..0000000000
--- a/client/src/Layout.tsx
+++ /dev/null
@@ -1,12 +0,0 @@
-import { SidebarProvider } from "@/components/ui/sidebar";
-import { AppSidebar } from "@/components/app-sidebar";
-import { Outlet } from "react-router-dom";
-
-export default function Layout() {
- return (
-
-
-
-
- );
-}
diff --git a/client/src/api/index.ts b/client/src/api/index.ts
deleted file mode 100644
index 0c2adeab02..0000000000
--- a/client/src/api/index.ts
+++ /dev/null
@@ -1,2 +0,0 @@
-export * from "./mutations";
-export * from "./queries";
diff --git a/client/src/api/mutations/index.ts b/client/src/api/mutations/index.ts
deleted file mode 100644
index ca9f0653dc..0000000000
--- a/client/src/api/mutations/index.ts
+++ /dev/null
@@ -1 +0,0 @@
-export * from "./sendMessageMutation";
diff --git a/client/src/api/mutations/sendMessageMutation.ts b/client/src/api/mutations/sendMessageMutation.ts
deleted file mode 100644
index 500e19d2e1..0000000000
--- a/client/src/api/mutations/sendMessageMutation.ts
+++ /dev/null
@@ -1,60 +0,0 @@
-import type { CustomMutationResult } from "../types";
-
-import { useMutation } from "@tanstack/react-query";
-import { ROUTES } from "../routes";
-import { SetStateAction } from "react";
-
-export type TextResponse = {
- text: string;
- user: string;
- attachments?: { url: string; contentType: string; title: string }[];
-};
-
-type SendMessageMutationProps = {
- text: string;
- agentId: string;
- selectedFile: File | null;
-};
-
-type Props = Required<{
- setMessages: (value: SetStateAction) => void;
- setSelectedFile: (value: SetStateAction) => void;
-}>;
-
-export const useSendMessageMutation = ({
- setMessages,
- setSelectedFile,
-}: Props): CustomMutationResult => {
- const mutation = useMutation({
- mutationFn: async ({
- text,
- agentId,
- selectedFile,
- }: SendMessageMutationProps) => {
- const formData = new FormData();
- formData.append("text", text);
- formData.append("userId", "user");
- formData.append("roomId", `default-room-${agentId}`);
-
- if (selectedFile) {
- formData.append("file", selectedFile);
- }
-
- const res = await fetch(ROUTES.sendMessage(agentId), {
- method: "POST",
- body: formData,
- });
-
- return res.json() as Promise;
- },
- onSuccess: (data) => {
- setMessages((prev) => [...prev, ...data]);
- setSelectedFile(null);
- },
- onError: (error) => {
- console.error("[useSendMessageMutation]:", error);
- },
- });
-
- return mutation;
-};
diff --git a/client/src/api/queries/index.ts b/client/src/api/queries/index.ts
deleted file mode 100644
index 1b1c08c1e9..0000000000
--- a/client/src/api/queries/index.ts
+++ /dev/null
@@ -1 +0,0 @@
-export * from "./useGetAgentsQuery";
diff --git a/client/src/api/queries/queries.ts b/client/src/api/queries/queries.ts
deleted file mode 100644
index 40253fe29d..0000000000
--- a/client/src/api/queries/queries.ts
+++ /dev/null
@@ -1,3 +0,0 @@
-export enum Queries {
- AGENTS = "agents",
-}
diff --git a/client/src/api/queries/useGetAgentsQuery.ts b/client/src/api/queries/useGetAgentsQuery.ts
deleted file mode 100644
index 88f91ff7e7..0000000000
--- a/client/src/api/queries/useGetAgentsQuery.ts
+++ /dev/null
@@ -1,23 +0,0 @@
-import { useQuery } from "@tanstack/react-query";
-import type { CustomQueryResult } from "../types";
-import { Queries } from "./queries";
-import { ROUTES } from "../routes";
-
-export type Agent = {
- id: string;
- name: string;
-};
-
-export const useGetAgentsQuery = (): CustomQueryResult => {
- return useQuery({
- queryKey: [Queries.AGENTS],
- queryFn: async () => {
- const res = await fetch(ROUTES.getAgents());
- const data = await res.json();
- return data.agents as Agent[];
- },
- retry: (failureCount) => failureCount < 3,
- staleTime: 5 * 60 * 1000, // 5 minutes
- refetchOnWindowFocus: false,
- });
-};
diff --git a/client/src/api/routes.ts b/client/src/api/routes.ts
deleted file mode 100644
index 1005a61a72..0000000000
--- a/client/src/api/routes.ts
+++ /dev/null
@@ -1,4 +0,0 @@
-export const ROUTES = {
- sendMessage: (agentId: string): string => `/api/${agentId}/message`,
- getAgents: (): string => `/api/agents`,
-};
diff --git a/client/src/api/types.ts b/client/src/api/types.ts
deleted file mode 100644
index 286daf64b5..0000000000
--- a/client/src/api/types.ts
+++ /dev/null
@@ -1,13 +0,0 @@
-import type { UseMutationResult, UseQueryResult } from "@tanstack/react-query";
-
-export type CustomMutationResult = UseMutationResult<
- TData,
- Error,
- TArgs,
- unknown
->;
-
-export type CustomQueryResult = Omit<
- UseQueryResult,
- "data" | "refetch" | "promise"
-> & { data: TData; refetch: () => void; promise: unknown };
diff --git a/client/src/assets/react.svg b/client/src/assets/react.svg
deleted file mode 100644
index 6c87de9bb3..0000000000
--- a/client/src/assets/react.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/client/src/components/app-sidebar.tsx b/client/src/components/app-sidebar.tsx
index 9fc8918427..1f7f949ca7 100644
--- a/client/src/components/app-sidebar.tsx
+++ b/client/src/components/app-sidebar.tsx
@@ -1,7 +1,5 @@
-import { Calendar, Inbox } from "lucide-react";
-import { useParams } from "react-router-dom";
-import { ThemeToggle } from "@/components/theme-toggle";
-
+import { useQuery } from "@tanstack/react-query";
+import info from "@/lib/info.json";
import {
Sidebar,
SidebarContent,
@@ -9,51 +7,115 @@ import {
SidebarGroup,
SidebarGroupContent,
SidebarGroupLabel,
+ SidebarHeader,
SidebarMenu,
SidebarMenuButton,
SidebarMenuItem,
+ SidebarMenuSkeleton,
} from "@/components/ui/sidebar";
-
-// Menu items.
-const items = [
- {
- title: "Chat",
- url: "chat",
- icon: Inbox,
- },
- {
- title: "Character Overview",
- url: "character",
- icon: Calendar,
- },
-];
+import { apiClient } from "@/lib/api";
+import { NavLink, useLocation } from "react-router";
+import { type UUID } from "@elizaos/core";
+import { Book, Cog, User } from "lucide-react";
+import ConnectionStatus from "./connection-status";
export function AppSidebar() {
- const { agentId } = useParams();
+ const location = useLocation();
+ const query = useQuery({
+ queryKey: ["agents"],
+ queryFn: () => apiClient.getAgents(),
+ refetchInterval: 5_000,
+ });
+
+ const agents = query?.data?.agents;
return (
+
+
+
+
+
+
+
+
+
+ ElizaOS
+
+ v{info?.version}
+
+
+
+
+
+
- Application
+ Agents
- {items.map((item) => (
-
-
-
-
- {item.title}
-
-
-
- ))}
+ {query?.isPending ? (
+
+ {Array.from({ length: 5 }).map(
+ (_, index) => (
+
+
+
+ )
+ )}
+
+ ) : (
+
+ {agents?.map(
+ (agent: { id: UUID; name: string }) => (
+
+
+
+
+
+ {agent.name}
+
+
+
+
+ )
+ )}
+
+ )}
-
+
+
+
+
+ Documentation
+
+
+
+
+
+ Settings
+
+
+
+
);
diff --git a/client/src/components/array-input.tsx b/client/src/components/array-input.tsx
new file mode 100644
index 0000000000..f979f2182e
--- /dev/null
+++ b/client/src/components/array-input.tsx
@@ -0,0 +1,23 @@
+import { Input } from "./ui/input";
+import { Label } from "./ui/label";
+
+export default function ArrayInput({
+ title,
+ data,
+}: {
+ title: string;
+ data: string[];
+}) {
+ return (
+
+
{title}
+
+
+ {data?.map((b: string, idx: number) => (
+
+ ))}
+
+
+
+ );
+}
diff --git a/client/src/components/audio-recorder.tsx b/client/src/components/audio-recorder.tsx
new file mode 100644
index 0000000000..4cfc7558d5
--- /dev/null
+++ b/client/src/components/audio-recorder.tsx
@@ -0,0 +1,321 @@
+import React, { useEffect, useMemo, useRef, useState } from "react";
+import {
+ Tooltip,
+ TooltipContent,
+ TooltipTrigger,
+} from "@/components/ui/tooltip";
+import { Button } from "@/components/ui/button";
+import { Ellipsis, Mic, Send, Trash } from "lucide-react";
+import { cn } from "@/lib/utils";
+import { useToast } from "@/hooks/use-toast";
+import { useMutation } from "@tanstack/react-query";
+import { UUID } from "@elizaos/core";
+import { apiClient } from "@/lib/api";
+
+type Props = {
+ agentId: UUID;
+ onChange: (newInput: string) => void;
+ className?: string;
+ timerClassName?: string;
+};
+
+type Record = {
+ id: number;
+ name: string;
+ file: string | null;
+};
+
+let recorder: MediaRecorder;
+let recordingChunks: BlobPart[] = [];
+let timerTimeout: NodeJS.Timeout;
+
+// Utility function to pad a number with leading zeros
+const padWithLeadingZeros = (num: number, length: number): string => {
+ return String(num).padStart(length, "0");
+};
+
+export const AudioRecorder = ({
+ className,
+ timerClassName,
+ agentId,
+ onChange,
+}: Props) => {
+ const { toast } = useToast();
+ // States
+ const [isRecording, setIsRecording] = useState(false);
+ // @ts-expect-error - isRecordingFinished is unused, but would break the 2D array if removed
+ const [isRecordingFinished, setIsRecordingFinished] =
+ useState(false);
+ const [timer, setTimer] = useState(0);
+ const [currentRecord, setCurrentRecord] = useState({
+ id: -1,
+ name: "",
+ file: null,
+ });
+ // Calculate the hours, minutes, and seconds from the timer
+ const minutes = Math.floor((timer % 3600) / 60);
+ const seconds = timer % 60;
+
+ const [minuteLeft, minuteRight] = useMemo(
+ () => padWithLeadingZeros(minutes, 2).split(""),
+ [minutes]
+ );
+ const [secondLeft, secondRight] = useMemo(
+ () => padWithLeadingZeros(seconds, 2).split(""),
+ [seconds]
+ );
+ // Refs
+ const mediaRecorderRef = useRef<{
+ stream: MediaStream | null;
+ analyser: AnalyserNode | null;
+ mediaRecorder: MediaRecorder | null;
+ audioContext: AudioContext | null;
+ }>({
+ stream: null,
+ analyser: null,
+ mediaRecorder: null,
+ audioContext: null,
+ });
+
+ const mutation = useMutation({
+ mutationKey: ["whisper"],
+ mutationFn: (file: Blob) => apiClient.whisper(agentId, file),
+ onSuccess: (data: { text: string }) => {
+ if (data?.text) {
+ onChange(data.text);
+ }
+ },
+ onError: (e) => {
+ toast({
+ variant: "destructive",
+ title: "Unable to start recording",
+ description: e.message,
+ });
+ console.log(e);
+ },
+ });
+
+ function startRecording() {
+ if (navigator.mediaDevices && navigator.mediaDevices.getUserMedia) {
+ navigator.mediaDevices
+ .getUserMedia({
+ audio: true,
+ })
+ .then((stream) => {
+ setIsRecording(true);
+ // ============ Analyzing ============
+ const AudioContext = window.AudioContext;
+ const audioCtx = new AudioContext();
+ const analyser = audioCtx.createAnalyser();
+ const source = audioCtx.createMediaStreamSource(stream);
+ source.connect(analyser);
+ mediaRecorderRef.current = {
+ stream,
+ analyser,
+ mediaRecorder: null,
+ audioContext: audioCtx,
+ };
+
+ const mimeType = MediaRecorder.isTypeSupported("audio/mpeg")
+ ? "audio/mpeg"
+ : MediaRecorder.isTypeSupported("audio/webm")
+ ? "audio/webm"
+ : "audio/wav";
+
+ const options = { mimeType };
+ mediaRecorderRef.current.mediaRecorder = new MediaRecorder(
+ stream,
+ options
+ );
+ mediaRecorderRef.current.mediaRecorder.start();
+ recordingChunks = [];
+ // ============ Recording ============
+ recorder = new MediaRecorder(stream);
+ recorder.start();
+ recorder.ondataavailable = (e) => {
+ recordingChunks.push(e.data);
+ };
+ })
+ .catch((e) => {
+ toast({
+ variant: "destructive",
+ title: "Unable to start recording",
+ description: e.message,
+ });
+ console.log(e);
+ });
+ }
+ }
+ function stopRecording() {
+ recorder.onstop = () => {
+ const recordBlob = new Blob(recordingChunks, {
+ type: "audio/wav",
+ });
+ mutation.mutate(recordBlob);
+ setCurrentRecord({
+ ...currentRecord,
+ file: window.URL.createObjectURL(recordBlob),
+ });
+ recordingChunks = [];
+ };
+
+ recorder.stop();
+
+ setIsRecording(false);
+ setIsRecordingFinished(true);
+ setTimer(0);
+ clearTimeout(timerTimeout);
+ }
+ function resetRecording() {
+ const { mediaRecorder, stream, analyser, audioContext } =
+ mediaRecorderRef.current;
+
+ if (mediaRecorder) {
+ mediaRecorder.onstop = () => {
+ recordingChunks = [];
+ };
+ mediaRecorder.stop();
+ }
+
+ // Stop the web audio context and the analyser node
+ if (analyser) {
+ analyser.disconnect();
+ }
+ if (stream) {
+ stream.getTracks().forEach((track) => track.stop());
+ }
+ if (audioContext) {
+ audioContext.close();
+ }
+ setIsRecording(false);
+ setIsRecordingFinished(true);
+ setTimer(0);
+ clearTimeout(timerTimeout);
+ }
+ const handleSubmit = () => {
+ stopRecording();
+ };
+
+ // Effect to update the timer every second
+ useEffect(() => {
+ if (isRecording) {
+ timerTimeout = setTimeout(() => {
+ setTimer(timer + 1);
+ }, 1000);
+ }
+ return () => clearTimeout(timerTimeout);
+ }, [isRecording, timer]);
+
+ if (mutation?.isPending) {
+ return (
+
+
+
+ );
+ }
+
+ return (
+
+ {isRecording ? (
+
+ ) : null}
+
+
+ {/* ========== Delete recording button ========== */}
+ {isRecording ? (
+
+
+
+
+
+
+
+ Reset recording
+
+
+ ) : null}
+
+ {/* ========== Start and send recording button ========== */}
+
+
+ {!isRecording ? (
+ startRecording()}
+ >
+
+ Use Microphone
+
+ ) : (
+
+
+
+ )}
+
+
+ {!isRecording ? "Start" : "Send"}
+
+
+
+
+ );
+};
+
+const Timer = React.memo(
+ ({
+ minuteLeft,
+ minuteRight,
+ secondLeft,
+ secondRight,
+ timerClassName,
+ }: {
+ minuteLeft: string;
+ minuteRight: string;
+ secondLeft: string;
+ secondRight: string;
+ timerClassName?: string;
+ }) => {
+ return (
+
+
+ {minuteLeft}
+ {minuteRight}:{secondLeft}
+ {secondRight}
+
+
+ );
+ }
+);
+
+Timer.displayName = "Timer";
diff --git a/client/src/components/chat.tsx b/client/src/components/chat.tsx
new file mode 100644
index 0000000000..b54521de53
--- /dev/null
+++ b/client/src/components/chat.tsx
@@ -0,0 +1,356 @@
+import { Button } from "@/components/ui/button";
+import {
+ ChatBubble,
+ ChatBubbleMessage,
+ ChatBubbleTimestamp,
+} from "@/components/ui/chat/chat-bubble";
+import { ChatInput } from "@/components/ui/chat/chat-input";
+import { ChatMessageList } from "@/components/ui/chat/chat-message-list";
+import { useTransition, animated } from "@react-spring/web";
+import { Paperclip, Send, X } from "lucide-react";
+import { useEffect, useRef, useState } from "react";
+import { Content, UUID } from "@elizaos/core";
+import { useMutation, useQueryClient } from "@tanstack/react-query";
+import { apiClient } from "@/lib/api";
+import { cn, moment } from "@/lib/utils";
+import { Avatar, AvatarImage } from "./ui/avatar";
+import CopyButton from "./copy-button";
+import ChatTtsButton from "./ui/chat/chat-tts-button";
+import { Tooltip, TooltipContent, TooltipTrigger } from "./ui/tooltip";
+import { useToast } from "@/hooks/use-toast";
+import AIWriter from "react-aiwriter";
+import { IAttachment } from "@/types";
+import { AudioRecorder } from "./audio-recorder";
+import { Badge } from "./ui/badge";
+
+interface ExtraContentFields {
+ user: string;
+ createdAt: number;
+ isLoading?: boolean;
+}
+
+type ContentWithUser = Content & ExtraContentFields;
+
+export default function Page({ agentId }: { agentId: UUID }) {
+ const { toast } = useToast();
+ const [selectedFile, setSelectedFile] = useState(null);
+ const [input, setInput] = useState("");
+ const messagesContainerRef = useRef(null);
+ const inputRef = useRef(null);
+ const fileInputRef = useRef(null);
+ const formRef = useRef(null);
+
+ const queryClient = useQueryClient();
+
+ const getMessageVariant = (role: string) =>
+ role !== "user" ? "received" : "sent";
+
+ const scrollToBottom = () => {
+ if (messagesContainerRef.current) {
+ messagesContainerRef.current.scrollTop =
+ messagesContainerRef.current.scrollHeight;
+ }
+ };
+ useEffect(() => {
+ scrollToBottom();
+ }, [queryClient.getQueryData(["messages", agentId])]);
+
+ useEffect(() => {
+ scrollToBottom();
+ }, []);
+
+ const handleKeyDown = (e: React.KeyboardEvent) => {
+ if (e.key === "Enter" && !e.shiftKey) {
+ handleSendMessage(e as unknown as React.FormEvent);
+ }
+ };
+
+ const handleSendMessage = (e: React.FormEvent) => {
+ e.preventDefault();
+ if (!input) return;
+
+ const attachments: IAttachment[] | undefined = selectedFile
+ ? [
+ {
+ url: URL.createObjectURL(selectedFile),
+ contentType: selectedFile.type,
+ title: selectedFile.name,
+ },
+ ]
+ : undefined;
+
+ const newMessages = [
+ {
+ text: input,
+ user: "user",
+ createdAt: Date.now(),
+ attachments,
+ },
+ {
+ text: input,
+ user: "system",
+ isLoading: true,
+ createdAt: Date.now(),
+ },
+ ];
+
+ queryClient.setQueryData(
+ ["messages", agentId],
+ (old: ContentWithUser[] = []) => [...old, ...newMessages]
+ );
+
+ sendMessageMutation.mutate({
+ message: input,
+ selectedFile: selectedFile ? selectedFile : null,
+ });
+
+ setSelectedFile(null);
+ setInput("");
+ formRef.current?.reset();
+ };
+
+ useEffect(() => {
+ if (inputRef.current) {
+ inputRef.current.focus();
+ }
+ }, []);
+
+ const sendMessageMutation = useMutation({
+ mutationKey: ["send_message", agentId],
+ mutationFn: ({
+ message,
+ selectedFile,
+ }: {
+ message: string;
+ selectedFile?: File | null;
+ }) => apiClient.sendMessage(agentId, message, selectedFile),
+ onSuccess: (newMessages: ContentWithUser[]) => {
+ queryClient.setQueryData(
+ ["messages", agentId],
+ (old: ContentWithUser[] = []) => [
+ ...old.filter((msg) => !msg.isLoading),
+ ...newMessages.map((msg) => ({
+ ...msg,
+ createdAt: Date.now(),
+ })),
+ ]
+ );
+ },
+ onError: (e) => {
+ toast({
+ variant: "destructive",
+ title: "Unable to send message",
+ description: e.message,
+ });
+ },
+ });
+
+ const handleFileChange = (e: React.ChangeEvent) => {
+ const file = e.target.files?.[0];
+ if (file && file.type.startsWith("image/")) {
+ setSelectedFile(file);
+ }
+ };
+
+ const messages =
+ queryClient.getQueryData(["messages", agentId]) ||
+ [];
+
+ const transitions = useTransition(messages, {
+ keys: (message) =>
+ `${message.createdAt}-${message.user}-${message.text}`,
+ from: { opacity: 0, transform: "translateY(50px)" },
+ enter: { opacity: 1, transform: "translateY(0px)" },
+ leave: { opacity: 0, transform: "translateY(10px)" },
+ });
+
+ return (
+
+
+
+ {transitions((styles, message) => {
+ const variant = getMessageVariant(message?.user);
+ return (
+ // @ts-expect-error
+
+
+ {message?.user !== "user" ? (
+
+
+
+ ) : null}
+
+
+ {message?.user !== "user" ? (
+
+ {message?.text}
+
+ ) : (
+ message?.text
+ )}
+ {/* Attachments */}
+
+ {message?.attachments?.map(
+ (attachment, idx) => (
+
+
+
+
+
+
+
+ )
+ )}
+
+
+
+ {message?.text &&
+ !message?.isLoading ? (
+
+
+
+
+ ) : null}
+
+ {message?.source ? (
+
+ {message.source}
+
+ ) : null}
+ {message?.action ? (
+
+ {message.action}
+
+ ) : null}
+ {message?.createdAt ? (
+
+ ) : null}
+
+
+
+
+
+ );
+ })}
+
+
+
+
+ );
+}
diff --git a/client/src/components/connection-status.tsx b/client/src/components/connection-status.tsx
new file mode 100644
index 0000000000..57aca41bd2
--- /dev/null
+++ b/client/src/components/connection-status.tsx
@@ -0,0 +1,77 @@
+import { cn } from "@/lib/utils";
+import { SidebarMenuButton, SidebarMenuItem } from "./ui/sidebar";
+import { useQuery } from "@tanstack/react-query";
+import { apiClient } from "@/lib/api";
+import { useState } from "react";
+import { Tooltip, TooltipContent, TooltipTrigger } from "./ui/tooltip";
+import { Activity } from "lucide-react";
+
+export default function ConnectionStatus() {
+ const [queryTime, setQueryTime] = useState(null);
+
+ const query = useQuery({
+ queryKey: ["status"],
+ queryFn: async () => {
+ const start = performance.now();
+ const data = await apiClient.getAgents();
+ const end = performance.now();
+ setQueryTime(end - start);
+ return data;
+ },
+ refetchInterval: 5_000,
+ retry: 1,
+ refetchOnWindowFocus: "always",
+ });
+
+ const connected = query?.isSuccess && !query?.isError;
+ const isLoading = query?.isRefetching || query?.isPending;
+
+ return (
+
+
+
+
+
+
+
+
+ {isLoading
+ ? "Connecting..."
+ : connected
+ ? "Connected"
+ : "Disconnected"}
+
+
+
+
+
+ {connected ? (
+
+
+
+
{queryTime?.toFixed(2)} ms
+
+
+ ) : null}
+
+
+ );
+}
diff --git a/client/src/components/copy-button.tsx b/client/src/components/copy-button.tsx
new file mode 100644
index 0000000000..736718ef42
--- /dev/null
+++ b/client/src/components/copy-button.tsx
@@ -0,0 +1,39 @@
+import { Check, Copy } from "lucide-react";
+import { useState } from "react";
+import { Button } from "@/components/ui/button";
+import { Tooltip, TooltipContent, TooltipTrigger } from "./ui/tooltip";
+
+const CopyButton = ({ text }: { text: any }) => {
+ const [copied, setCopied] = useState(false);
+
+ const handleCopy = () => {
+ navigator.clipboard.writeText(text).then(() => {
+ setCopied(true);
+ setTimeout(() => setCopied(false), 2000); // Reset after 2 seconds
+ });
+ };
+
+ return (
+
+
+
+ {copied ? (
+
+ ) : (
+
+ )}
+
+
+
+ Copy
+
+
+ );
+};
+
+export default CopyButton;
diff --git a/client/src/components/input-copy.tsx b/client/src/components/input-copy.tsx
new file mode 100644
index 0000000000..603d3b74c5
--- /dev/null
+++ b/client/src/components/input-copy.tsx
@@ -0,0 +1,17 @@
+import { Input } from "./ui/input";
+import { Label } from "./ui/label";
+
+export default function InputCopy({
+ title,
+ value,
+}: {
+ title: string;
+ value: string | number | undefined;
+}) {
+ return (
+
+ {title}
+
+
+ );
+}
diff --git a/client/src/components/overview.tsx b/client/src/components/overview.tsx
new file mode 100644
index 0000000000..8f544ca42d
--- /dev/null
+++ b/client/src/components/overview.tsx
@@ -0,0 +1,39 @@
+import { Character } from "@elizaos/core";
+import ArrayInput from "@/components/array-input";
+import InputCopy from "@/components/input-copy";
+import PageTitle from "./page-title";
+
+export default function Overview({ character }: { character: Character }) {
+ return (
+
+ );
+}
diff --git a/client/src/components/page-title.tsx b/client/src/components/page-title.tsx
new file mode 100644
index 0000000000..804f6c2397
--- /dev/null
+++ b/client/src/components/page-title.tsx
@@ -0,0 +1,16 @@
+export default function PageTitle({
+ title,
+ subtitle,
+}: {
+ title: string;
+ subtitle?: string;
+}) {
+ return (
+
+
{title}
+ {subtitle ? (
+
{subtitle}
+ ) : null}
+
+ );
+}
diff --git a/client/src/components/theme-toggle.tsx b/client/src/components/theme-toggle.tsx
deleted file mode 100644
index 91677a4a78..0000000000
--- a/client/src/components/theme-toggle.tsx
+++ /dev/null
@@ -1,19 +0,0 @@
-import { Moon, Sun } from "lucide-react";
-import { Button } from "@/components/ui/button";
-import { useTheme } from "@/hooks/use-theme";
-
-export function ThemeToggle() {
- const { theme, setTheme } = useTheme();
-
- return (
- setTheme(theme === "light" ? "dark" : "light")}
- >
-
-
- Toggle theme
-
- );
-}
diff --git a/client/src/components/ui/avatar.tsx b/client/src/components/ui/avatar.tsx
new file mode 100644
index 0000000000..9efd6b49d3
--- /dev/null
+++ b/client/src/components/ui/avatar.tsx
@@ -0,0 +1,48 @@
+import * as React from "react";
+import * as AvatarPrimitive from "@radix-ui/react-avatar";
+
+import { cn } from "@/lib/utils";
+
+const Avatar = React.forwardRef<
+ React.ElementRef,
+ React.ComponentPropsWithoutRef
+>(({ className, ...props }, ref) => (
+
+));
+Avatar.displayName = AvatarPrimitive.Root.displayName;
+
+const AvatarImage = React.forwardRef<
+ React.ElementRef,
+ React.ComponentPropsWithoutRef
+>(({ className, ...props }, ref) => (
+
+));
+AvatarImage.displayName = AvatarPrimitive.Image.displayName;
+
+const AvatarFallback = React.forwardRef<
+ React.ElementRef,
+ React.ComponentPropsWithoutRef
+>(({ className, ...props }, ref) => (
+
+));
+AvatarFallback.displayName = AvatarPrimitive.Fallback.displayName;
+
+export { Avatar, AvatarImage, AvatarFallback };
diff --git a/client/src/components/ui/badge.tsx b/client/src/components/ui/badge.tsx
new file mode 100644
index 0000000000..d9a4dd51bd
--- /dev/null
+++ b/client/src/components/ui/badge.tsx
@@ -0,0 +1,36 @@
+import * as React from "react"
+import { cva, type VariantProps } from "class-variance-authority"
+
+import { cn } from "@/lib/utils"
+
+const badgeVariants = cva(
+ "inline-flex items-center rounded-md border px-2.5 py-0.5 text-xs transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2",
+ {
+ variants: {
+ variant: {
+ default:
+ "border-transparent bg-primary text-primary-foreground shadow hover:bg-primary/80",
+ secondary:
+ "border-transparent bg-secondary text-secondary-foreground hover:bg-secondary/80",
+ destructive:
+ "border-transparent bg-destructive text-destructive-foreground shadow hover:bg-destructive/80",
+ outline: "text-foreground",
+ },
+ },
+ defaultVariants: {
+ variant: "default",
+ },
+ }
+)
+
+export interface BadgeProps
+ extends React.HTMLAttributes,
+ VariantProps {}
+
+function Badge({ className, variant, ...props }: BadgeProps) {
+ return (
+
+ )
+}
+
+export { Badge, badgeVariants }
diff --git a/client/src/components/ui/breadcrumb.tsx b/client/src/components/ui/breadcrumb.tsx
new file mode 100644
index 0000000000..d104c4c5be
--- /dev/null
+++ b/client/src/components/ui/breadcrumb.tsx
@@ -0,0 +1,115 @@
+import * as React from "react";
+import { Slot } from "@radix-ui/react-slot";
+import { ChevronRight, MoreHorizontal } from "lucide-react";
+
+import { cn } from "@/lib/utils";
+
+const Breadcrumb = React.forwardRef<
+ HTMLElement,
+ React.ComponentPropsWithoutRef<"nav"> & {
+ separator?: React.ReactNode;
+ }
+>(({ ...props }, ref) => );
+Breadcrumb.displayName = "Breadcrumb";
+
+const BreadcrumbList = React.forwardRef<
+ HTMLOListElement,
+ React.ComponentPropsWithoutRef<"ol">
+>(({ className, ...props }, ref) => (
+
+));
+BreadcrumbList.displayName = "BreadcrumbList";
+
+const BreadcrumbItem = React.forwardRef<
+ HTMLLIElement,
+ React.ComponentPropsWithoutRef<"li">
+>(({ className, ...props }, ref) => (
+
+));
+BreadcrumbItem.displayName = "BreadcrumbItem";
+
+const BreadcrumbLink = React.forwardRef<
+ HTMLAnchorElement,
+ React.ComponentPropsWithoutRef<"a"> & {
+ asChild?: boolean;
+ }
+>(({ asChild, className, ...props }, ref) => {
+ const Comp = asChild ? Slot : "a";
+
+ return (
+
+ );
+});
+BreadcrumbLink.displayName = "BreadcrumbLink";
+
+const BreadcrumbPage = React.forwardRef<
+ HTMLSpanElement,
+ React.ComponentPropsWithoutRef<"span">
+>(({ className, ...props }, ref) => (
+
+));
+BreadcrumbPage.displayName = "BreadcrumbPage";
+
+const BreadcrumbSeparator = ({
+ children,
+ className,
+ ...props
+}: React.ComponentProps<"li">) => (
+ svg]:w-3.5 [&>svg]:h-3.5", className)}
+ {...props}
+ >
+ {children ?? }
+
+);
+BreadcrumbSeparator.displayName = "BreadcrumbSeparator";
+
+const BreadcrumbEllipsis = ({
+ className,
+ ...props
+}: React.ComponentProps<"span">) => (
+
+
+ More
+
+);
+BreadcrumbEllipsis.displayName = "BreadcrumbElipssis";
+
+export {
+ Breadcrumb,
+ BreadcrumbList,
+ BreadcrumbItem,
+ BreadcrumbLink,
+ BreadcrumbPage,
+ BreadcrumbSeparator,
+ BreadcrumbEllipsis,
+};
diff --git a/client/src/components/ui/button.tsx b/client/src/components/ui/button.tsx
index 8c1b26a165..88beaf9a26 100644
--- a/client/src/components/ui/button.tsx
+++ b/client/src/components/ui/button.tsx
@@ -24,7 +24,7 @@ const buttonVariants = cva(
default: "h-9 px-4 py-2",
sm: "h-8 rounded-md px-3 text-xs",
lg: "h-10 rounded-md px-8",
- icon: "h-9 w-9",
+ icon: "size-[30px] rounded-md",
},
},
defaultVariants: {
@@ -45,6 +45,7 @@ const Button = React.forwardRef(
const Comp = asChild ? Slot : "button";
return (
,
+ VariantProps {}
+
+const ChatBubble = React.forwardRef(
+ ({ className, variant, layout, children, ...props }, ref) => (
+
+ {React.Children.map(children, (child) =>
+ React.isValidElement(child) && typeof child.type !== "string"
+ ? React.cloneElement(child, {
+ variant,
+ layout,
+ } as React.ComponentProps)
+ : child
+ )}
+
+ )
+);
+ChatBubble.displayName = "ChatBubble";
+
+// ChatBubbleAvatar
+interface ChatBubbleAvatarProps {
+ src?: string;
+ fallback?: string;
+ className?: string;
+}
+
+const ChatBubbleAvatar: React.FC = ({
+ src,
+ fallback,
+ className,
+}) => (
+
+
+ {fallback}
+
+);
+
+// ChatBubbleMessage
+const chatBubbleMessageVariants = cva("p-4", {
+ variants: {
+ variant: {
+ received:
+ "bg-secondary text-secondary-foreground rounded-r-lg rounded-tl-lg",
+ sent: "bg-primary text-primary-foreground rounded-l-lg rounded-tr-lg",
+ },
+ layout: {
+ default: "",
+ ai: "border-t w-full rounded-none bg-transparent",
+ },
+ },
+ defaultVariants: {
+ variant: "received",
+ layout: "default",
+ },
+});
+
+interface ChatBubbleMessageProps
+ extends React.HTMLAttributes,
+ VariantProps {
+ isLoading?: boolean;
+}
+
+const ChatBubbleMessage = React.forwardRef<
+ HTMLDivElement,
+ ChatBubbleMessageProps
+>(
+ (
+ { className, variant, layout, isLoading = false, children, ...props },
+ ref
+ ) => (
+
+ {isLoading ? (
+
+
+
+ ) : (
+ children
+ )}
+
+ )
+);
+ChatBubbleMessage.displayName = "ChatBubbleMessage";
+
+// ChatBubbleTimestamp
+interface ChatBubbleTimestampProps
+ extends React.HTMLAttributes {
+ timestamp: string;
+}
+
+const ChatBubbleTimestamp: React.FC = ({
+ timestamp,
+ className,
+ ...props
+}) => (
+
+ {timestamp}
+
+);
+
+// ChatBubbleAction
+type ChatBubbleActionProps = ButtonProps & {
+ icon: React.ReactNode;
+};
+
+const ChatBubbleAction: React.FC = ({
+ icon,
+ onClick,
+ className,
+ variant = "ghost",
+ size = "icon",
+ ...props
+}) => (
+
+ {icon}
+
+);
+
+interface ChatBubbleActionWrapperProps
+ extends React.HTMLAttributes {
+ variant?: "sent" | "received";
+ className?: string;
+}
+
+const ChatBubbleActionWrapper = React.forwardRef<
+ HTMLDivElement,
+ ChatBubbleActionWrapperProps
+>(({ variant, className, children, ...props }, ref) => (
+
+ {children}
+
+));
+ChatBubbleActionWrapper.displayName = "ChatBubbleActionWrapper";
+
+export {
+ ChatBubble,
+ ChatBubbleAvatar,
+ ChatBubbleMessage,
+ ChatBubbleTimestamp,
+ chatBubbleVariant,
+ chatBubbleMessageVariants,
+ ChatBubbleAction,
+ ChatBubbleActionWrapper,
+};
diff --git a/client/src/components/ui/chat/chat-input.tsx b/client/src/components/ui/chat/chat-input.tsx
new file mode 100644
index 0000000000..e8c0ffd110
--- /dev/null
+++ b/client/src/components/ui/chat/chat-input.tsx
@@ -0,0 +1,24 @@
+import * as React from "react";
+import { Textarea } from "@/components/ui/textarea";
+import { cn } from "@/lib/utils";
+
+interface ChatInputProps
+ extends React.TextareaHTMLAttributes {}
+
+const ChatInput = React.forwardRef(
+ ({ className, ...props }, ref) => (
+
+ )
+);
+ChatInput.displayName = "ChatInput";
+
+export { ChatInput };
diff --git a/client/src/components/ui/chat/chat-message-list.tsx b/client/src/components/ui/chat/chat-message-list.tsx
new file mode 100644
index 0000000000..2581675559
--- /dev/null
+++ b/client/src/components/ui/chat/chat-message-list.tsx
@@ -0,0 +1,49 @@
+import * as React from "react";
+import { ArrowDown } from "lucide-react";
+import { Button } from "@/components/ui/button";
+import { useAutoScroll } from "@/components/ui/chat/hooks/useAutoScroll";
+
+interface ChatMessageListProps extends React.HTMLAttributes {
+ smooth?: boolean;
+}
+
+const ChatMessageList = React.forwardRef(
+ ({ className, children, smooth = false, ...props }, _ref) => {
+ const { scrollRef, isAtBottom, scrollToBottom, disableAutoScroll } =
+ useAutoScroll({
+ smooth,
+ content: children,
+ });
+
+ return (
+
+
+
+ {!isAtBottom && (
+
{
+ scrollToBottom();
+ }}
+ size="icon"
+ variant="outline"
+ className="absolute bottom-2 left-1/2 transform -translate-x-1/2 inline-flex rounded-full shadow-md"
+ >
+
+
+ )}
+
+ );
+ }
+);
+
+ChatMessageList.displayName = "ChatMessageList";
+
+export { ChatMessageList };
diff --git a/client/src/components/ui/chat/chat-tts-button.tsx b/client/src/components/ui/chat/chat-tts-button.tsx
new file mode 100644
index 0000000000..c90c8bd963
--- /dev/null
+++ b/client/src/components/ui/chat/chat-tts-button.tsx
@@ -0,0 +1,113 @@
+import { Ellipsis, StopCircle, Volume2 } from "lucide-react";
+import { Button } from "../button";
+import { useMutation } from "@tanstack/react-query";
+import { useRef, useState } from "react";
+import { apiClient } from "@/lib/api";
+import { Tooltip, TooltipTrigger, TooltipContent } from "../tooltip";
+import { useToast } from "@/hooks/use-toast";
+
+export default function ChatTtsButton({
+ agentId,
+ text,
+}: {
+ agentId: string;
+ text: string;
+}) {
+ const { toast } = useToast();
+ const [playing, setPlaying] = useState(false);
+ const [audioBlob, setAudioBlob] = useState(null);
+ const audioRef = useRef(null);
+
+ const mutation = useMutation({
+ mutationKey: ["tts", text],
+ mutationFn: () => apiClient.tts(agentId, text),
+ onSuccess: (data) => {
+ setAudioBlob(data);
+ play();
+ },
+ onError: (e) => {
+ toast({
+ variant: "destructive",
+ title: "Unable to read message aloud",
+ description: e.message,
+ });
+ },
+ });
+
+ const play = () => {
+ if (audioRef.current) {
+ audioRef.current.play().catch((err) => {
+ console.error("Error playing audio:", err);
+ });
+ }
+ setPlaying(true);
+ };
+
+ const stop = () => {
+ if (audioRef.current) {
+ audioRef.current.pause();
+ audioRef.current.currentTime = 0;
+ }
+ setPlaying(false);
+ };
+
+ const execute = () => {
+ if (mutation?.isPending) return;
+
+ if (playing) {
+ stop();
+ return;
+ }
+
+ if (audioBlob) {
+ play();
+ return;
+ } else {
+ mutation.mutate();
+ }
+ };
+
+ const iconClass = "text-muted-foreground size-4";
+
+ return (
+
+ {audioBlob ? (
+
{
+ setPlaying(false);
+ }}
+ autoPlay
+ >
+
+ Your browser does not support the audio element.
+
+ ) : null}
+
+
+ execute()}
+ disabled={mutation?.isPending}
+ >
+ {mutation?.isPending ? (
+
+ ) : playing ? (
+
+ ) : (
+
+ )}
+
+
+
+ {playing ? "Stop" : "Read aloud"}
+
+
+
+ );
+}
diff --git a/client/src/components/ui/chat/expandable-chat.tsx b/client/src/components/ui/chat/expandable-chat.tsx
new file mode 100644
index 0000000000..b41add0f7f
--- /dev/null
+++ b/client/src/components/ui/chat/expandable-chat.tsx
@@ -0,0 +1,156 @@
+import React, { useRef, useState } from "react";
+import { X, MessageCircle } from "lucide-react";
+import { cn } from "@/lib/utils";
+import { Button } from "@/components/ui/button";
+
+export type ChatPosition = "bottom-right" | "bottom-left";
+export type ChatSize = "sm" | "md" | "lg" | "xl" | "full";
+
+const chatConfig = {
+ dimensions: {
+ sm: "sm:max-w-sm sm:max-h-[500px]",
+ md: "sm:max-w-md sm:max-h-[600px]",
+ lg: "sm:max-w-lg sm:max-h-[700px]",
+ xl: "sm:max-w-xl sm:max-h-[800px]",
+ full: "sm:w-full sm:h-full",
+ },
+ positions: {
+ "bottom-right": "bottom-5 right-5",
+ "bottom-left": "bottom-5 left-5",
+ },
+ chatPositions: {
+ "bottom-right": "sm:bottom-[calc(100%+10px)] sm:right-0",
+ "bottom-left": "sm:bottom-[calc(100%+10px)] sm:left-0",
+ },
+ states: {
+ open: "pointer-events-auto opacity-100 visible scale-100 translate-y-0",
+ closed: "pointer-events-none opacity-0 invisible scale-100 sm:translate-y-5",
+ },
+};
+
+interface ExpandableChatProps extends React.HTMLAttributes {
+ position?: ChatPosition;
+ size?: ChatSize;
+ icon?: React.ReactNode;
+}
+
+const ExpandableChat: React.FC = ({
+ className,
+ position = "bottom-right",
+ size = "md",
+ icon,
+ children,
+ ...props
+}) => {
+ const [isOpen, setIsOpen] = useState(false);
+ const chatRef = useRef(null);
+
+ const toggleChat = () => setIsOpen(!isOpen);
+
+ return (
+
+
+ {children}
+
+
+
+
+
+
+ );
+};
+
+ExpandableChat.displayName = "ExpandableChat";
+
+const ExpandableChatHeader: React.FC> = ({
+ className,
+ ...props
+}) => (
+
+);
+
+ExpandableChatHeader.displayName = "ExpandableChatHeader";
+
+const ExpandableChatBody: React.FC> = ({
+ className,
+ ...props
+}) =>
;
+
+ExpandableChatBody.displayName = "ExpandableChatBody";
+
+const ExpandableChatFooter: React.FC> = ({
+ className,
+ ...props
+}) =>
;
+
+ExpandableChatFooter.displayName = "ExpandableChatFooter";
+
+interface ExpandableChatToggleProps
+ extends React.ButtonHTMLAttributes {
+ icon?: React.ReactNode;
+ isOpen: boolean;
+ toggleChat: () => void;
+}
+
+const ExpandableChatToggle: React.FC = ({
+ className,
+ icon,
+ isOpen,
+ toggleChat,
+ ...props
+}) => (
+
+ {isOpen ? (
+
+ ) : (
+ icon ||
+ )}
+
+);
+
+ExpandableChatToggle.displayName = "ExpandableChatToggle";
+
+export {
+ ExpandableChat,
+ ExpandableChatHeader,
+ ExpandableChatBody,
+ ExpandableChatFooter,
+};
diff --git a/client/src/components/ui/chat/hooks/useAutoScroll.tsx b/client/src/components/ui/chat/hooks/useAutoScroll.tsx
new file mode 100644
index 0000000000..9f3ae8b9dd
--- /dev/null
+++ b/client/src/components/ui/chat/hooks/useAutoScroll.tsx
@@ -0,0 +1,135 @@
+// @hidden
+import { useCallback, useEffect, useRef, useState } from "react";
+
+interface ScrollState {
+ isAtBottom: boolean;
+ autoScrollEnabled: boolean;
+}
+
+interface UseAutoScrollOptions {
+ offset?: number;
+ smooth?: boolean;
+ content?: React.ReactNode;
+}
+
+export function useAutoScroll(options: UseAutoScrollOptions = {}) {
+ const { offset = 20, smooth = false, content } = options;
+ const scrollRef = useRef(null);
+ const lastContentHeight = useRef(0);
+ const userHasScrolled = useRef(false);
+
+ const [scrollState, setScrollState] = useState({
+ isAtBottom: true,
+ autoScrollEnabled: true,
+ });
+
+ const checkIsAtBottom = useCallback(
+ (element: HTMLElement) => {
+ const { scrollTop, scrollHeight, clientHeight } = element;
+ const distanceToBottom = Math.abs(
+ scrollHeight - scrollTop - clientHeight
+ );
+ return distanceToBottom <= offset;
+ },
+ [offset]
+ );
+
+ const scrollToBottom = useCallback(
+ (instant?: boolean) => {
+ if (!scrollRef.current) return;
+
+ const targetScrollTop =
+ scrollRef.current.scrollHeight - scrollRef.current.clientHeight;
+
+ if (instant) {
+ scrollRef.current.scrollTop = targetScrollTop;
+ } else {
+ scrollRef.current.scrollTo({
+ top: targetScrollTop,
+ behavior: smooth ? "smooth" : "auto",
+ });
+ }
+
+ setScrollState({
+ isAtBottom: true,
+ autoScrollEnabled: true,
+ });
+ userHasScrolled.current = false;
+ },
+ [smooth]
+ );
+
+ const handleScroll = useCallback(() => {
+ if (!scrollRef.current) return;
+
+ const atBottom = checkIsAtBottom(scrollRef.current);
+
+ setScrollState((prev) => ({
+ isAtBottom: atBottom,
+ // Re-enable auto-scroll if at the bottom
+ autoScrollEnabled: atBottom ? true : prev.autoScrollEnabled,
+ }));
+ }, [checkIsAtBottom]);
+
+ useEffect(() => {
+ const element = scrollRef.current;
+ if (!element) return;
+
+ element.addEventListener("scroll", handleScroll, { passive: true });
+ return () => element.removeEventListener("scroll", handleScroll);
+ }, [handleScroll]);
+
+ useEffect(() => {
+ const scrollElement = scrollRef.current;
+ if (!scrollElement) return;
+
+ const currentHeight = scrollElement.scrollHeight;
+ const hasNewContent = currentHeight !== lastContentHeight.current;
+
+ if (hasNewContent) {
+ if (scrollState.autoScrollEnabled) {
+ requestAnimationFrame(() => {
+ scrollToBottom(lastContentHeight.current === 0);
+ });
+ }
+ lastContentHeight.current = currentHeight;
+ }
+ }, [content, scrollState.autoScrollEnabled, scrollToBottom]);
+
+ useEffect(() => {
+ const element = scrollRef.current;
+ if (!element) return;
+
+ const resizeObserver = new ResizeObserver(() => {
+ if (scrollState.autoScrollEnabled) {
+ scrollToBottom(true);
+ }
+ });
+
+ resizeObserver.observe(element);
+ return () => resizeObserver.disconnect();
+ }, [scrollState.autoScrollEnabled, scrollToBottom]);
+
+ const disableAutoScroll = useCallback(() => {
+ const atBottom = scrollRef.current
+ ? checkIsAtBottom(scrollRef.current)
+ : false;
+
+ // Only disable if not at bottom
+ if (!atBottom) {
+ userHasScrolled.current = true;
+ setScrollState((prev) => ({
+ ...prev,
+ autoScrollEnabled: false,
+ }));
+ }
+ }, [checkIsAtBottom]);
+
+ return {
+ scrollRef,
+ isAtBottom: scrollState.isAtBottom,
+ autoScrollEnabled: scrollState.autoScrollEnabled,
+ scrollToBottom: () => scrollToBottom(false),
+ disableAutoScroll,
+ };
+}
diff --git a/client/src/components/ui/chat/message-loading.tsx b/client/src/components/ui/chat/message-loading.tsx
new file mode 100644
index 0000000000..3b4aa87a00
--- /dev/null
+++ b/client/src/components/ui/chat/message-loading.tsx
@@ -0,0 +1,45 @@
+// @hidden
+export default function MessageLoading() {
+ return (
+
+
+
+
+
+
+
+
+
+
+
+ );
+}
diff --git a/client/src/components/ui/collapsible.tsx b/client/src/components/ui/collapsible.tsx
new file mode 100644
index 0000000000..5c28cbcc3b
--- /dev/null
+++ b/client/src/components/ui/collapsible.tsx
@@ -0,0 +1,9 @@
+import * as CollapsiblePrimitive from "@radix-ui/react-collapsible";
+
+const Collapsible = CollapsiblePrimitive.Root;
+
+const CollapsibleTrigger = CollapsiblePrimitive.CollapsibleTrigger;
+
+const CollapsibleContent = CollapsiblePrimitive.CollapsibleContent;
+
+export { Collapsible, CollapsibleTrigger, CollapsibleContent };
diff --git a/client/src/components/ui/label.tsx b/client/src/components/ui/label.tsx
new file mode 100644
index 0000000000..5cc1227ac0
--- /dev/null
+++ b/client/src/components/ui/label.tsx
@@ -0,0 +1,24 @@
+import * as React from "react";
+import * as LabelPrimitive from "@radix-ui/react-label";
+import { cva, type VariantProps } from "class-variance-authority";
+
+import { cn } from "@/lib/utils";
+
+const labelVariants = cva(
+ "text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70"
+);
+
+const Label = React.forwardRef<
+ React.ElementRef,
+ React.ComponentPropsWithoutRef &
+ VariantProps
+>(({ className, ...props }, ref) => (
+
+));
+Label.displayName = LabelPrimitive.Root.displayName;
+
+export { Label };
diff --git a/client/src/components/ui/separator.tsx b/client/src/components/ui/separator.tsx
index 2af4ec891e..aeac744d34 100644
--- a/client/src/components/ui/separator.tsx
+++ b/client/src/components/ui/separator.tsx
@@ -1,5 +1,3 @@
-"use client";
-
import * as React from "react";
import * as SeparatorPrimitive from "@radix-ui/react-separator";
diff --git a/client/src/components/ui/sidebar.tsx b/client/src/components/ui/sidebar.tsx
index ab5862ab35..d659620936 100644
--- a/client/src/components/ui/sidebar.tsx
+++ b/client/src/components/ui/sidebar.tsx
@@ -2,7 +2,6 @@ import * as React from "react";
import { Slot } from "@radix-ui/react-slot";
import { VariantProps, cva } from "class-variance-authority";
import { PanelLeft } from "lucide-react";
-
import { useIsMobile } from "@/hooks/use-mobile";
import { cn } from "@/lib/utils";
import { Button } from "@/components/ui/button";
@@ -148,7 +147,7 @@ const SidebarProvider = React.forwardRef<
} as React.CSSProperties
}
className={cn(
- "group/sidebar-wrapper flex min-h-svh w-full has-[[data-variant=inset]]:bg-sidebar",
+ "group/sidebar-wrapper flex min-h-svh w-full has-[[data-variant=inset]]:bg-card",
className
)}
ref={ref}
@@ -188,7 +187,7 @@ const Sidebar = React.forwardRef<
return (
{children}
@@ -313,10 +312,10 @@ const SidebarRail = React.forwardRef<
onClick={toggleSidebar}
title="Toggle Sidebar"
className={cn(
- "absolute inset-y-0 z-20 hidden w-4 -translate-x-1/2 transition-all ease-linear after:absolute after:inset-y-0 after:left-1/2 after:w-[2px] hover:after:bg-sidebar-border group-data-[side=left]:-right-4 group-data-[side=right]:left-0 sm:flex",
+ "absolute inset-y-0 z-20 hidden w-4 -translate-x-1/2 transition-all ease-linear after:absolute after:inset-y-0 after:left-1/2 after:w-[2px] hover:after:bg-card-border group-data-[side=left]:-right-4 group-data-[side=right]:left-0 sm:flex",
"[[data-side=left]_&]:cursor-w-resize [[data-side=right]_&]:cursor-e-resize",
"[[data-side=left][data-state=collapsed]_&]:cursor-e-resize [[data-side=right][data-state=collapsed]_&]:cursor-w-resize",
- "group-data-[collapsible=offcanvas]:translate-x-0 group-data-[collapsible=offcanvas]:after:left-full group-data-[collapsible=offcanvas]:hover:bg-sidebar",
+ "group-data-[collapsible=offcanvas]:translate-x-0 group-data-[collapsible=offcanvas]:after:left-full group-data-[collapsible=offcanvas]:hover:bg-card",
"[[data-side=left][data-collapsible=offcanvas]_&]:-right-2",
"[[data-side=right][data-collapsible=offcanvas]_&]:-left-2",
className
@@ -401,7 +400,7 @@ const SidebarSeparator = React.forwardRef<
);
@@ -476,7 +475,7 @@ const SidebarGroupAction = React.forwardRef<
ref={ref}
data-sidebar="group-action"
className={cn(
- "absolute right-3 top-3.5 flex aspect-square w-5 items-center justify-center rounded-md p-0 text-sidebar-foreground outline-none ring-sidebar-ring transition-transform hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0",
+ "absolute right-3 top-3.5 flex aspect-square w-5 items-center justify-center rounded-md p-0 text-sidebar-foreground outline-none ring-sidebar-ring transition-transform hover:bg-card-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0",
// Increases the hit area of the button on mobile.
"after:absolute after:-inset-2 after:md:hidden",
"group-data-[collapsible=icon]:hidden",
@@ -626,7 +625,7 @@ const SidebarMenuAction = React.forwardRef<
ref={ref}
data-sidebar="menu-action"
className={cn(
- "absolute right-1 top-1.5 flex aspect-square w-5 items-center justify-center rounded-md p-0 text-sidebar-foreground outline-none ring-sidebar-ring transition-transform hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 peer-hover/menu-button:text-sidebar-accent-foreground [&>svg]:size-4 [&>svg]:shrink-0",
+ "absolute right-1 top-1.5 flex aspect-square w-5 items-center justify-center rounded-md p-0 text-sidebar-foreground outline-none ring-sidebar-ring transition-transform hover:bg-card-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 peer-hover/menu-button:text-sidebar-accent-foreground [&>svg]:size-4 [&>svg]:shrink-0",
// Increases the hit area of the button on mobile.
"after:absolute after:-inset-2 after:md:hidden",
"peer-data-[size=sm]/menu-button:top-1",
@@ -745,8 +744,8 @@ const SidebarMenuSubButton = React.forwardRef<
data-size={size}
data-active={isActive}
className={cn(
- "flex h-7 min-w-0 -translate-x-px items-center gap-2 overflow-hidden rounded-md px-2 text-sidebar-foreground outline-none ring-sidebar-ring hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 active:bg-sidebar-accent active:text-sidebar-accent-foreground disabled:pointer-events-none disabled:opacity-50 aria-disabled:pointer-events-none aria-disabled:opacity-50 [&>span:last-child]:truncate [&>svg]:size-4 [&>svg]:shrink-0 [&>svg]:text-sidebar-accent-foreground",
- "data-[active=true]:bg-sidebar-accent data-[active=true]:text-sidebar-accent-foreground",
+ "flex h-7 min-w-0 -translate-x-px items-center gap-2 overflow-hidden rounded-md px-2 text-sidebar-foreground outline-none ring-sidebar-ring hover:bg-card-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 active:bg-card-accent active:text-sidebar-accent-foreground disabled:pointer-events-none disabled:opacity-50 aria-disabled:pointer-events-none aria-disabled:opacity-50 [&>span:last-child]:truncate [&>svg]:size-4 [&>svg]:shrink-0 [&>svg]:text-sidebar-accent-foreground",
+ "data-[active=true]:bg-card-accent data-[active=true]:text-sidebar-accent-foreground",
size === "sm" && "text-xs",
size === "md" && "text-sm",
"group-data-[collapsible=icon]:hidden",
diff --git a/client/src/components/ui/tabs.tsx b/client/src/components/ui/tabs.tsx
new file mode 100644
index 0000000000..517201e415
--- /dev/null
+++ b/client/src/components/ui/tabs.tsx
@@ -0,0 +1,53 @@
+import * as React from "react";
+import * as TabsPrimitive from "@radix-ui/react-tabs";
+
+import { cn } from "@/lib/utils";
+
+const Tabs = TabsPrimitive.Root;
+
+const TabsList = React.forwardRef<
+ React.ElementRef
,
+ React.ComponentPropsWithoutRef
+>(({ className, ...props }, ref) => (
+
+));
+TabsList.displayName = TabsPrimitive.List.displayName;
+
+const TabsTrigger = React.forwardRef<
+ React.ElementRef,
+ React.ComponentPropsWithoutRef
+>(({ className, ...props }, ref) => (
+
+));
+TabsTrigger.displayName = TabsPrimitive.Trigger.displayName;
+
+const TabsContent = React.forwardRef<
+ React.ElementRef,
+ React.ComponentPropsWithoutRef
+>(({ className, ...props }, ref) => (
+
+));
+TabsContent.displayName = TabsPrimitive.Content.displayName;
+
+export { Tabs, TabsList, TabsTrigger, TabsContent };
diff --git a/client/src/components/ui/textarea.tsx b/client/src/components/ui/textarea.tsx
new file mode 100644
index 0000000000..5a7f68ed1c
--- /dev/null
+++ b/client/src/components/ui/textarea.tsx
@@ -0,0 +1,22 @@
+import * as React from "react";
+
+import { cn } from "@/lib/utils";
+
+const Textarea = React.forwardRef<
+ HTMLTextAreaElement,
+ React.ComponentProps<"textarea">
+>(({ className, ...props }, ref) => {
+ return (
+
+ );
+});
+Textarea.displayName = "Textarea";
+
+export { Textarea };
diff --git a/client/src/components/ui/toast.tsx b/client/src/components/ui/toast.tsx
new file mode 100644
index 0000000000..77bc28153c
--- /dev/null
+++ b/client/src/components/ui/toast.tsx
@@ -0,0 +1,127 @@
+import * as React from "react";
+import * as ToastPrimitives from "@radix-ui/react-toast";
+import { cva, type VariantProps } from "class-variance-authority";
+import { X } from "lucide-react";
+
+import { cn } from "@/lib/utils";
+
+const ToastProvider = ToastPrimitives.Provider;
+
+const ToastViewport = React.forwardRef<
+ React.ElementRef,
+ React.ComponentPropsWithoutRef
+>(({ className, ...props }, ref) => (
+
+));
+ToastViewport.displayName = ToastPrimitives.Viewport.displayName;
+
+const toastVariants = cva(
+ "group pointer-events-auto relative flex w-full items-center justify-between space-x-2 overflow-hidden rounded-md border p-4 pr-6 shadow-lg transition-all data-[swipe=cancel]:translate-x-0 data-[swipe=end]:translate-x-[var(--radix-toast-swipe-end-x)] data-[swipe=move]:translate-x-[var(--radix-toast-swipe-move-x)] data-[swipe=move]:transition-none data-[state=open]:animate-in data-[state=closed]:animate-out data-[swipe=end]:animate-out data-[state=closed]:fade-out-80 data-[state=closed]:slide-out-to-right-full data-[state=open]:slide-in-from-top-full data-[state=open]:sm:slide-in-from-bottom-full",
+ {
+ variants: {
+ variant: {
+ default: "border bg-background text-foreground",
+ destructive:
+ "destructive group border-destructive bg-destructive text-destructive-foreground",
+ },
+ },
+ defaultVariants: {
+ variant: "default",
+ },
+ }
+);
+
+const Toast = React.forwardRef<
+ React.ElementRef,
+ React.ComponentPropsWithoutRef &
+ VariantProps
+>(({ className, variant, ...props }, ref) => {
+ return (
+
+ );
+});
+Toast.displayName = ToastPrimitives.Root.displayName;
+
+const ToastAction = React.forwardRef<
+ React.ElementRef,
+ React.ComponentPropsWithoutRef
+>(({ className, ...props }, ref) => (
+
+));
+ToastAction.displayName = ToastPrimitives.Action.displayName;
+
+const ToastClose = React.forwardRef<
+ React.ElementRef,
+ React.ComponentPropsWithoutRef
+>(({ className, ...props }, ref) => (
+
+
+
+));
+ToastClose.displayName = ToastPrimitives.Close.displayName;
+
+const ToastTitle = React.forwardRef<
+ React.ElementRef,
+ React.ComponentPropsWithoutRef
+>(({ className, ...props }, ref) => (
+
+));
+ToastTitle.displayName = ToastPrimitives.Title.displayName;
+
+const ToastDescription = React.forwardRef<
+ React.ElementRef,
+ React.ComponentPropsWithoutRef
+>(({ className, ...props }, ref) => (
+
+));
+ToastDescription.displayName = ToastPrimitives.Description.displayName;
+
+type ToastProps = React.ComponentPropsWithoutRef;
+
+type ToastActionElement = React.ReactElement;
+
+export {
+ type ToastProps,
+ type ToastActionElement,
+ ToastProvider,
+ ToastViewport,
+ Toast,
+ ToastTitle,
+ ToastDescription,
+ ToastClose,
+ ToastAction,
+};
diff --git a/client/src/components/ui/toaster.tsx b/client/src/components/ui/toaster.tsx
new file mode 100644
index 0000000000..45bf9f6854
--- /dev/null
+++ b/client/src/components/ui/toaster.tsx
@@ -0,0 +1,41 @@
+import { useToast } from "@/hooks/use-toast";
+import {
+ Toast,
+ ToastClose,
+ ToastDescription,
+ ToastProvider,
+ ToastTitle,
+ ToastViewport,
+} from "@/components/ui/toast";
+
+export function Toaster() {
+ const { toasts } = useToast();
+
+ return (
+
+ {toasts.map(function ({
+ id,
+ title,
+ description,
+ action,
+ ...props
+ }) {
+ return (
+
+
+ {title && {title} }
+ {description && (
+
+ {description}
+
+ )}
+
+ {action}
+
+
+ );
+ })}
+
+
+ );
+}
diff --git a/client/src/components/ui/tooltip.tsx b/client/src/components/ui/tooltip.tsx
index 521ff4db27..78c3132b7d 100644
--- a/client/src/components/ui/tooltip.tsx
+++ b/client/src/components/ui/tooltip.tsx
@@ -1,5 +1,3 @@
-"use client";
-
import * as React from "react";
import * as TooltipPrimitive from "@radix-ui/react-tooltip";
@@ -20,7 +18,7 @@ const TooltipContent = React.forwardRef<
ref={ref}
sideOffset={sideOffset}
className={cn(
- "z-50 overflow-hidden rounded-md bg-primary px-3 py-1.5 text-xs text-primary-foreground animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2",
+ "z-50 overflow-hidden select-none rounded-md bg-primary px-3 py-1.5 text-xs text-primary-foreground animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2",
className
)}
{...props}
diff --git a/client/src/hooks/use-theme.tsx b/client/src/hooks/use-theme.tsx
deleted file mode 100644
index 8dd3f1cd2b..0000000000
--- a/client/src/hooks/use-theme.tsx
+++ /dev/null
@@ -1,32 +0,0 @@
-import { useEffect, useState } from "react";
-
-type Theme = "dark" | "light" | "system";
-
-function useTheme() {
- const [theme, setTheme] = useState(
- () => (localStorage.getItem("theme") as Theme) || "system"
- );
-
- useEffect(() => {
- const media = window.matchMedia("(prefers-color-scheme: dark)");
-
- function applyTheme() {
- const root = window.document.documentElement;
- const systemTheme = media.matches ? "dark" : "light";
- const activeTheme = theme === "system" ? systemTheme : theme;
-
- root.classList.remove("light", "dark");
- root.classList.add(activeTheme);
- localStorage.setItem("theme", theme);
- }
-
- applyTheme();
- media.addEventListener("change", applyTheme);
- return () => media.removeEventListener("change", applyTheme);
- }, [theme]);
-
- return { theme, setTheme } as const;
-}
-
-export { useTheme };
-export type { Theme };
diff --git a/client/src/hooks/use-toast.ts b/client/src/hooks/use-toast.ts
new file mode 100644
index 0000000000..d7bb44433e
--- /dev/null
+++ b/client/src/hooks/use-toast.ts
@@ -0,0 +1,189 @@
+import * as React from "react";
+
+import type { ToastActionElement, ToastProps } from "@/components/ui/toast";
+
+const TOAST_LIMIT = 1;
+const TOAST_REMOVE_DELAY = 1000000;
+
+type ToasterToast = ToastProps & {
+ id: string;
+ title?: React.ReactNode;
+ description?: React.ReactNode;
+ action?: ToastActionElement;
+};
+
+const actionTypes = {
+ ADD_TOAST: "ADD_TOAST",
+ UPDATE_TOAST: "UPDATE_TOAST",
+ DISMISS_TOAST: "DISMISS_TOAST",
+ REMOVE_TOAST: "REMOVE_TOAST",
+} as const;
+
+let count = 0;
+
+function genId() {
+ count = (count + 1) % Number.MAX_SAFE_INTEGER;
+ return count.toString();
+}
+
+type ActionType = typeof actionTypes;
+
+type Action =
+ | {
+ type: ActionType["ADD_TOAST"];
+ toast: ToasterToast;
+ }
+ | {
+ type: ActionType["UPDATE_TOAST"];
+ toast: Partial;
+ }
+ | {
+ type: ActionType["DISMISS_TOAST"];
+ toastId?: ToasterToast["id"];
+ }
+ | {
+ type: ActionType["REMOVE_TOAST"];
+ toastId?: ToasterToast["id"];
+ };
+
+interface State {
+ toasts: ToasterToast[];
+}
+
+const toastTimeouts = new Map>();
+
+const addToRemoveQueue = (toastId: string) => {
+ if (toastTimeouts.has(toastId)) {
+ return;
+ }
+
+ const timeout = setTimeout(() => {
+ toastTimeouts.delete(toastId);
+ dispatch({
+ type: "REMOVE_TOAST",
+ toastId: toastId,
+ });
+ }, TOAST_REMOVE_DELAY);
+
+ toastTimeouts.set(toastId, timeout);
+};
+
+export const reducer = (state: State, action: Action): State => {
+ switch (action.type) {
+ case "ADD_TOAST":
+ return {
+ ...state,
+ toasts: [action.toast, ...state.toasts].slice(0, TOAST_LIMIT),
+ };
+
+ case "UPDATE_TOAST":
+ return {
+ ...state,
+ toasts: state.toasts.map((t) =>
+ t.id === action.toast.id ? { ...t, ...action.toast } : t
+ ),
+ };
+
+ case "DISMISS_TOAST": {
+ const { toastId } = action;
+
+ // ! Side effects ! - This could be extracted into a dismissToast() action,
+ // but I'll keep it here for simplicity
+ if (toastId) {
+ addToRemoveQueue(toastId);
+ } else {
+ state.toasts.forEach((toast) => {
+ addToRemoveQueue(toast.id);
+ });
+ }
+
+ return {
+ ...state,
+ toasts: state.toasts.map((t) =>
+ t.id === toastId || toastId === undefined
+ ? {
+ ...t,
+ open: false,
+ }
+ : t
+ ),
+ };
+ }
+ case "REMOVE_TOAST":
+ if (action.toastId === undefined) {
+ return {
+ ...state,
+ toasts: [],
+ };
+ }
+ return {
+ ...state,
+ toasts: state.toasts.filter((t) => t.id !== action.toastId),
+ };
+ }
+};
+
+const listeners: Array<(state: State) => void> = [];
+
+let memoryState: State = { toasts: [] };
+
+function dispatch(action: Action) {
+ memoryState = reducer(memoryState, action);
+ listeners.forEach((listener) => {
+ listener(memoryState);
+ });
+}
+
+type Toast = Omit;
+
+function toast({ ...props }: Toast) {
+ const id = genId();
+
+ const update = (props: ToasterToast) =>
+ dispatch({
+ type: "UPDATE_TOAST",
+ toast: { ...props, id },
+ });
+ const dismiss = () => dispatch({ type: "DISMISS_TOAST", toastId: id });
+
+ dispatch({
+ type: "ADD_TOAST",
+ toast: {
+ ...props,
+ id,
+ open: true,
+ onOpenChange: (open) => {
+ if (!open) dismiss();
+ },
+ },
+ });
+
+ return {
+ id: id,
+ dismiss,
+ update,
+ };
+}
+
+function useToast() {
+ const [state, setState] = React.useState(memoryState);
+
+ React.useEffect(() => {
+ listeners.push(setState);
+ return () => {
+ const index = listeners.indexOf(setState);
+ if (index > -1) {
+ listeners.splice(index, 1);
+ }
+ };
+ }, [state]);
+
+ return {
+ ...state,
+ toast,
+ dismiss: (toastId?: string) =>
+ dispatch({ type: "DISMISS_TOAST", toastId }),
+ };
+}
+
+export { useToast, toast };
diff --git a/client/src/hooks/use-version.tsx b/client/src/hooks/use-version.tsx
new file mode 100644
index 0000000000..f9fefbb3d5
--- /dev/null
+++ b/client/src/hooks/use-version.tsx
@@ -0,0 +1,72 @@
+import { useEffect } from "react";
+import { useToast } from "./use-toast";
+import info from "@/lib/info.json";
+import semver from "semver";
+import { ToastAction } from "@/components/ui/toast";
+import { NavLink } from "react-router";
+
+export default function useVersion() {
+ const { toast } = useToast();
+
+ async function getLatestRelease(repo: string) {
+ const apiUrl = `https://api.github.com/repos/${repo}/releases/latest`;
+
+ try {
+ const response = await fetch(apiUrl, {
+ headers: {
+ Accept: "application/vnd.github.v3+json",
+ "User-Agent": "fetch-latest-release",
+ },
+ });
+
+ if (!response.ok) {
+ throw new Error(
+ `Failed to fetch latest release: ${response.status} ${response.statusText}`
+ );
+ }
+
+ const data = await response.json();
+ const latestVersion = data.tag_name;
+ return latestVersion;
+ } catch {}
+ }
+
+ const compareVersion = async () => {
+ try {
+ const latestVersion = await getLatestRelease("elizaos/eliza");
+ const thisVersion = info?.version;
+ if (latestVersion && thisVersion) {
+ if (
+ semver.gt(
+ latestVersion.replace("v", ""),
+ thisVersion.replace("v", "")
+ )
+ ) {
+ toast({
+ variant: "default",
+ title: `New version ${latestVersion} is available.`,
+ description: "Visit GitHub for more information.",
+ action: (
+
+
+ Update
+
+
+ ),
+ });
+ }
+ }
+ } catch (e) {
+ console.error("Unable to retrieve latest version from GitHub");
+ }
+ };
+
+ useEffect(() => {
+ compareVersion();
+ }, []);
+
+ return null;
+}
diff --git a/client/src/index.css b/client/src/index.css
index 1ecdbdd9be..bce1841103 100644
--- a/client/src/index.css
+++ b/client/src/index.css
@@ -5,30 +5,25 @@
@layer base {
:root {
--background: 0 0% 100%;
- --foreground: 20 14.3% 4.1%;
- --card: 0 0% 100%;
- --card-foreground: 20 14.3% 4.1%;
+ --foreground: 240 10% 3.9%;
+ --card: 0 0% 93%;
+ --card-foreground: 240 10% 3.9%;
--popover: 0 0% 100%;
- --popover-foreground: 20 14.3% 4.1%;
- --primary: 24.6 95% 53.1%;
- --primary-foreground: 60 9.1% 97.8%;
- --secondary: 60 4.8% 95.9%;
- --secondary-foreground: 24 9.8% 10%;
- --muted: 60 4.8% 95.9%;
- --muted-foreground: 25 5.3% 44.7%;
- --accent: 60 4.8% 95.9%;
- --accent-foreground: 24 9.8% 10%;
+ --popover-foreground: 240 10% 3.9%;
+ --primary: 240 5.9% 10%;
+ --primary-foreground: 0 0% 98%;
+ --secondary: 240 4.8% 95.9%;
+ --secondary-foreground: 240 5.9% 10%;
+ --muted: 240 4.8% 95.9%;
+ --muted-foreground: 240 3.8% 46.1%;
+ --accent: 240 4.8% 97%;
+ --accent-foreground: 240 5.9% 10%;
--destructive: 0 84.2% 60.2%;
- --destructive-foreground: 60 9.1% 97.8%;
- --border: 20 5.9% 90%;
- --input: 20 5.9% 90%;
- --ring: 24.6 95% 53.1%;
- --radius: 0.5rem;
- --chart-1: 12 76% 61%;
- --chart-2: 173 58% 39%;
- --chart-3: 197 37% 24%;
- --chart-4: 43 74% 66%;
- --chart-5: 27 87% 67%;
+ --destructive-foreground: 0 0% 98%;
+ --border: 240 5.9% 90%;
+ --input: 240 5.9% 90%;
+ --ring: 240 5.9% 10%;
+ --radius: 1rem;
--sidebar-background: 0 0% 98%;
--sidebar-foreground: 240 5.3% 26.1%;
--sidebar-primary: 240 5.9% 10%;
@@ -40,30 +35,25 @@
}
.dark {
- --background: 20 14.3% 4.1%;
- --foreground: 60 9.1% 97.8%;
- --card: 20 14.3% 4.1%;
- --card-foreground: 60 9.1% 97.8%;
- --popover: 20 14.3% 4.1%;
- --popover-foreground: 60 9.1% 97.8%;
- --primary: 20.5 90.2% 48.2%;
- --primary-foreground: 60 9.1% 97.8%;
- --secondary: 12 6.5% 15.1%;
- --secondary-foreground: 60 9.1% 97.8%;
- --muted: 12 6.5% 15.1%;
- --muted-foreground: 24 5.4% 63.9%;
- --accent: 12 6.5% 15.1%;
- --accent-foreground: 60 9.1% 97.8%;
- --destructive: 0 72.2% 50.6%;
- --destructive-foreground: 60 9.1% 97.8%;
- --border: 12 6.5% 15.1%;
- --input: 12 6.5% 15.1%;
- --ring: 20.5 90.2% 48.2%;
- --chart-1: 220 70% 50%;
- --chart-2: 160 60% 45%;
- --chart-3: 30 80% 55%;
- --chart-4: 280 65% 60%;
- --chart-5: 340 75% 55%;
+ --background: 0 0% 9%;
+ --foreground: 0 0% 98%;
+ --card: 0 0% 11.5%;
+ --card-foreground: 0 0% 98%;
+ --popover: 0 0% 12%;
+ --popover-foreground: 0 0% 98%;
+ --primary: 0 0% 98%;
+ --primary-foreground: 240 5.9% 10%;
+ --secondary: 240 3.7% 15.9%;
+ --secondary-foreground: 0 0% 98%;
+ --muted: 240 3.7% 15.9%;
+ --muted-foreground: 240 5% 64.9%;
+ --accent: 240 3.7% 15.9%;
+ --accent-foreground: 0 0% 98%;
+ --destructive: 0 62.8% 30.6%;
+ --destructive-foreground: 0 0% 98%;
+ --border: 240 3.7% 15.9%;
+ --input: 240 3.7% 15.9%;
+ --ring: 240 4.9% 83.9%;
--sidebar-background: 240 5.9% 10%;
--sidebar-foreground: 240 4.8% 95.9%;
--sidebar-primary: 224.3 76.3% 48%;
@@ -79,31 +69,8 @@
* {
@apply border-border;
}
+
body {
@apply bg-background text-foreground;
}
}
-
-@layer base {
- :root {
- --sidebar-background: 0 0% 98%;
- --sidebar-foreground: 240 5.3% 26.1%;
- --sidebar-primary: 240 5.9% 10%;
- --sidebar-primary-foreground: 0 0% 98%;
- --sidebar-accent: 240 4.8% 95.9%;
- --sidebar-accent-foreground: 240 5.9% 10%;
- --sidebar-border: 220 13% 91%;
- --sidebar-ring: 217.2 91.2% 59.8%;
- }
-
- .dark {
- --sidebar-background: 240 5.9% 10%;
- --sidebar-foreground: 240 4.8% 95.9%;
- --sidebar-primary: 224.3 76.3% 48%;
- --sidebar-primary-foreground: 0 0% 100%;
- --sidebar-accent: 240 3.7% 15.9%;
- --sidebar-accent-foreground: 240 4.8% 95.9%;
- --sidebar-border: 240 3.7% 15.9%;
- --sidebar-ring: 217.2 91.2% 59.8%;
- }
-}
diff --git a/client/src/lib/api.ts b/client/src/lib/api.ts
new file mode 100644
index 0000000000..ec5a6a3f05
--- /dev/null
+++ b/client/src/lib/api.ts
@@ -0,0 +1,105 @@
+import { type UUID, type Character } from "@elizaos/core";
+
+const BASE_URL = "http://localhost:3000";
+
+const fetcher = async ({
+ url,
+ method,
+ body,
+ headers,
+}: {
+ url: string;
+ method?: "GET" | "POST";
+ body?: object | FormData;
+ headers?: HeadersInit;
+}) => {
+ const options: RequestInit = {
+ method: method ?? "GET",
+ headers: headers
+ ? headers
+ : {
+ Accept: "application/json",
+ "Content-Type": "application/json",
+ },
+ };
+
+ if (method === "POST") {
+ if (body instanceof FormData) {
+ // @ts-expect-error - Supressing potentially undefined options header
+ delete options.headers["Content-Type"];
+ options.body = body;
+ } else {
+ options.body = JSON.stringify(body);
+ }
+ }
+
+ return fetch(`${BASE_URL}${url}`, options).then(async (resp) => {
+ if (resp.ok) {
+ const contentType = resp.headers.get("Content-Type");
+
+ if (contentType === "audio/mpeg") {
+ return await resp.blob();
+ }
+ return resp.json();
+ }
+
+ const errorText = await resp.text();
+ console.error("Error: ", errorText);
+
+ let errorMessage = "An error occurred.";
+ try {
+ const errorObj = JSON.parse(errorText);
+ errorMessage = errorObj.message || errorMessage;
+ } catch {
+ errorMessage = errorText || errorMessage;
+ }
+
+ throw new Error(errorMessage);
+ });
+};
+
+export const apiClient = {
+ sendMessage: (
+ agentId: string,
+ message: string,
+ selectedFile?: File | null
+ ) => {
+ const formData = new FormData();
+ formData.append("text", message);
+ formData.append("user", "user");
+
+ if (selectedFile) {
+ formData.append("file", selectedFile);
+ }
+ return fetcher({
+ url: `/${agentId}/message`,
+ method: "POST",
+ body: formData,
+ });
+ },
+ getAgents: () => fetcher({ url: "/agents" }),
+ getAgent: (agentId: string): Promise<{ id: UUID; character: Character }> =>
+ fetcher({ url: `/agents/${agentId}` }),
+ tts: (agentId: string, text: string) =>
+ fetcher({
+ url: `/${agentId}/tts`,
+ method: "POST",
+ body: {
+ text,
+ },
+ headers: {
+ "Content-Type": "application/json",
+ Accept: "audio/mpeg",
+ "Transfer-Encoding": "chunked",
+ },
+ }),
+ whisper: async (agentId: string, audioBlob: Blob) => {
+ const formData = new FormData();
+ formData.append("file", audioBlob, "recording.wav");
+ return fetcher({
+ url: `/${agentId}/whisper`,
+ method: "POST",
+ body: formData,
+ });
+ },
+};
diff --git a/client/src/lib/info.json b/client/src/lib/info.json
new file mode 100644
index 0000000000..5b4fed4ae0
--- /dev/null
+++ b/client/src/lib/info.json
@@ -0,0 +1 @@
+{"version": "0.1.7"}
diff --git a/client/src/lib/utils.ts b/client/src/lib/utils.ts
index e6a8be071e..283cf17dcc 100644
--- a/client/src/lib/utils.ts
+++ b/client/src/lib/utils.ts
@@ -1,6 +1,16 @@
import { clsx, type ClassValue } from "clsx";
import { twMerge } from "tailwind-merge";
+import dayjs from "dayjs";
+import localizedFormat from "dayjs/plugin/localizedFormat";
export function cn(...inputs: ClassValue[]) {
return twMerge(clsx(inputs));
}
+
+dayjs.extend(localizedFormat);
+
+export const moment = dayjs;
+
+export const formatAgentName = (name: string) => {
+ return name.substring(0, 2);
+};
diff --git a/client/src/main.tsx b/client/src/main.tsx
index c5413cfc15..1e008043f6 100644
--- a/client/src/main.tsx
+++ b/client/src/main.tsx
@@ -1,27 +1,10 @@
import { StrictMode } from "react";
import { createRoot } from "react-dom/client";
import "./index.css";
-
-import { QueryClient, QueryClientProvider } from "@tanstack/react-query";
-import { RouterProvider } from "react-router-dom";
-import { router } from "./router.tsx";
-
-// Initialize theme
-const theme = localStorage.getItem("theme") || "system";
-const systemTheme = window.matchMedia("(prefers-color-scheme: dark)").matches
- ? "dark"
- : "light";
-document.documentElement.classList.add(
- theme === "system" ? systemTheme : theme
-);
-
-// Create a client
-const queryClient = new QueryClient();
+import App from "./App.tsx";
createRoot(document.getElementById("root")!).render(
-
-
-
+
);
diff --git a/client/src/router.tsx b/client/src/router.tsx
deleted file mode 100644
index 3127e13fc7..0000000000
--- a/client/src/router.tsx
+++ /dev/null
@@ -1,32 +0,0 @@
-// In your router configuration file (e.g., App.jsx or router.jsx)
-import { createBrowserRouter } from "react-router-dom";
-import Agents from "./Agents";
-import Agent from "./Agent"; // We'll create this component
-import Layout from "./Layout";
-import Chat from "./Chat";
-import Character from "./Character";
-
-export const router = createBrowserRouter([
- {
- path: "/",
- element: ,
- },
- {
- path: "/:agentId",
- element: ,
- children: [
- {
- path: "", // This matches /:agentId exactly
- element: ,
- },
- {
- path: "chat", // This matches /:agentId/chat
- element: ,
- },
- {
- path: "character", // This matches /:agentId/chat
- element: ,
- },
- ],
- },
-]);
diff --git a/client/src/routes/chat.tsx b/client/src/routes/chat.tsx
new file mode 100644
index 0000000000..60a322a96b
--- /dev/null
+++ b/client/src/routes/chat.tsx
@@ -0,0 +1,11 @@
+import { useParams } from "react-router";
+import Chat from "@/components/chat";
+import { UUID } from "@elizaos/core";
+
+export default function AgentRoute() {
+ const { agentId } = useParams<{ agentId: UUID }>();
+
+ if (!agentId) return No data.
;
+
+ return ;
+}
diff --git a/client/src/routes/home.tsx b/client/src/routes/home.tsx
new file mode 100644
index 0000000000..387b733d90
--- /dev/null
+++ b/client/src/routes/home.tsx
@@ -0,0 +1,70 @@
+import { useQuery } from "@tanstack/react-query";
+import { Cog } from "lucide-react";
+import PageTitle from "@/components/page-title";
+import { Button } from "@/components/ui/button";
+import {
+ Card,
+ CardContent,
+ CardFooter,
+ CardHeader,
+ CardTitle,
+} from "@/components/ui/card";
+import { apiClient } from "@/lib/api";
+import { NavLink } from "react-router";
+import { UUID } from "@elizaos/core";
+import { formatAgentName } from "@/lib/utils";
+
+export default function Home() {
+ const query = useQuery({
+ queryKey: ["agents"],
+ queryFn: () => apiClient.getAgents(),
+ refetchInterval: 5_000
+ });
+
+ const agents = query?.data?.agents;
+
+ return (
+
+
+
+ {agents?.map((agent: { id: UUID; name: string }) => (
+
+
+ {agent?.name}
+
+
+
+
+ {formatAgentName(agent?.name)}
+
+
+
+
+
+
+
+ Chat
+
+
+
+
+
+
+
+
+
+
+ ))}
+
+
+ );
+}
diff --git a/client/src/routes/overview.tsx b/client/src/routes/overview.tsx
new file mode 100644
index 0000000000..81cb6e60ef
--- /dev/null
+++ b/client/src/routes/overview.tsx
@@ -0,0 +1,23 @@
+import { useQuery } from "@tanstack/react-query";
+import { apiClient } from "@/lib/api";
+import Overview from "@/components/overview";
+import { useParams } from "react-router";
+import { type UUID } from "@elizaos/core";
+
+export default function AgentRoute() {
+ const { agentId } = useParams<{ agentId: UUID }>();
+
+ if (!agentId) return No data.
;
+
+ const query = useQuery({
+ queryKey: ["agent", agentId],
+ queryFn: () => apiClient.getAgent(agentId),
+ refetchInterval: 5_000,
+ });
+
+ const character = query?.data?.character;
+
+ if (!character) return null;
+
+ return ;
+}
diff --git a/client/src/types/index.ts b/client/src/types/index.ts
new file mode 100644
index 0000000000..dc7dffd998
--- /dev/null
+++ b/client/src/types/index.ts
@@ -0,0 +1,5 @@
+export interface IAttachment {
+ url: string;
+ contentType: string;
+ title: string;
+}
\ No newline at end of file
diff --git a/client/tailwind.config.js b/client/tailwind.config.js
deleted file mode 100644
index d049a57827..0000000000
--- a/client/tailwind.config.js
+++ /dev/null
@@ -1,57 +0,0 @@
-/** @type {import('tailwindcss').Config} */
-export default {
- darkMode: ["class"],
- content: ["./index.html", "./src/**/*.{js,ts,jsx,tsx}"],
- theme: {
- extend: {
- borderRadius: {
- lg: "var(--radius)",
- md: "calc(var(--radius) - 2px)",
- sm: "calc(var(--radius) - 4px)",
- },
- colors: {
- background: "hsl(var(--background))",
- foreground: "hsl(var(--foreground))",
- card: {
- DEFAULT: "hsl(var(--card))",
- foreground: "hsl(var(--card-foreground))",
- },
- popover: {
- DEFAULT: "hsl(var(--popover))",
- foreground: "hsl(var(--popover-foreground))",
- },
- primary: {
- DEFAULT: "hsl(var(--primary))",
- foreground: "hsl(var(--primary-foreground))",
- },
- secondary: {
- DEFAULT: "hsl(var(--secondary))",
- foreground: "hsl(var(--secondary-foreground))",
- },
- muted: {
- DEFAULT: "hsl(var(--muted))",
- foreground: "hsl(var(--muted-foreground))",
- },
- accent: {
- DEFAULT: "hsl(var(--accent))",
- foreground: "hsl(var(--accent-foreground))",
- },
- destructive: {
- DEFAULT: "hsl(var(--destructive))",
- foreground: "hsl(var(--destructive-foreground))",
- },
- border: "hsl(var(--border))",
- input: "hsl(var(--input))",
- ring: "hsl(var(--ring))",
- chart: {
- 1: "hsl(var(--chart-1))",
- 2: "hsl(var(--chart-2))",
- 3: "hsl(var(--chart-3))",
- 4: "hsl(var(--chart-4))",
- 5: "hsl(var(--chart-5))",
- },
- },
- },
- },
- plugins: [],
-};
diff --git a/client/tailwind.config.ts b/client/tailwind.config.ts
new file mode 100644
index 0000000000..253f093203
--- /dev/null
+++ b/client/tailwind.config.ts
@@ -0,0 +1,84 @@
+import type { Config } from "tailwindcss";
+import tailwindAnimate from "tailwindcss-animate";
+
+export default {
+ darkMode: ["class"],
+ content: ["src/**/*.{ts,tsx}", "components/**/*.{ts,tsx}"],
+ theme: {
+ extend: {
+ fontFamily: {
+ sans: [
+ 'Inter',
+ 'ui-sans-serif',
+ 'system-ui',
+ 'sans-serif',
+ 'Apple Color Emoji',
+ 'Segoe UI Emoji',
+ 'Segoe UI Symbol',
+ 'Noto Color Emoji'
+ ]
+ },
+ borderRadius: {
+ lg: 'var(--radius)',
+ md: 'calc(var(--radius) - 2px)',
+ sm: 'calc(var(--radius) - 4px)'
+ },
+ container: {
+ center: true
+ },
+ colors: {
+ background: 'hsl(var(--background))',
+ foreground: 'hsl(var(--foreground))',
+ card: {
+ DEFAULT: 'hsl(var(--card))',
+ foreground: 'hsl(var(--card-foreground))'
+ },
+ popover: {
+ DEFAULT: 'hsl(var(--popover))',
+ foreground: 'hsl(var(--popover-foreground))'
+ },
+ primary: {
+ DEFAULT: 'hsl(var(--primary))',
+ foreground: 'hsl(var(--primary-foreground))'
+ },
+ secondary: {
+ DEFAULT: 'hsl(var(--secondary))',
+ foreground: 'hsl(var(--secondary-foreground))'
+ },
+ muted: {
+ DEFAULT: 'hsl(var(--muted))',
+ foreground: 'hsl(var(--muted-foreground))'
+ },
+ accent: {
+ DEFAULT: 'hsl(var(--accent))',
+ foreground: 'hsl(var(--accent-foreground))'
+ },
+ destructive: {
+ DEFAULT: 'hsl(var(--destructive))',
+ foreground: 'hsl(var(--destructive-foreground))'
+ },
+ border: 'hsl(var(--border))',
+ input: 'hsl(var(--input))',
+ ring: 'hsl(var(--ring))',
+ chart: {
+ '1': 'hsl(var(--chart-1))',
+ '2': 'hsl(var(--chart-2))',
+ '3': 'hsl(var(--chart-3))',
+ '4': 'hsl(var(--chart-4))',
+ '5': 'hsl(var(--chart-5))'
+ },
+ sidebar: {
+ DEFAULT: 'hsl(var(--sidebar-background))',
+ foreground: 'hsl(var(--sidebar-foreground))',
+ primary: 'hsl(var(--sidebar-primary))',
+ 'primary-foreground': 'hsl(var(--sidebar-primary-foreground))',
+ accent: 'hsl(var(--sidebar-accent))',
+ 'accent-foreground': 'hsl(var(--sidebar-accent-foreground))',
+ border: 'hsl(var(--sidebar-border))',
+ ring: 'hsl(var(--sidebar-ring))'
+ }
+ }
+ }
+ },
+ plugins: [tailwindAnimate],
+} satisfies Config;
diff --git a/client/tsconfig.app.json b/client/tsconfig.app.json
index da4c04f081..9bcb98ff1e 100644
--- a/client/tsconfig.app.json
+++ b/client/tsconfig.app.json
@@ -1,28 +1,29 @@
{
"compilerOptions": {
- "incremental": true,
"tsBuildInfoFile": "./node_modules/.tmp/tsconfig.app.tsbuildinfo",
"target": "ES2020",
"useDefineForClassFields": true,
"lib": ["ES2020", "DOM", "DOM.Iterable"],
"module": "ESNext",
"skipLibCheck": true,
+ "baseUrl": "./",
+ "paths": {
+ "@/*": ["./src/*"]
+ },
/* Bundler mode */
- "moduleResolution": "Bundler",
+ "moduleResolution": "bundler",
"allowImportingTsExtensions": true,
"isolatedModules": true,
"moduleDetection": "force",
"noEmit": true,
"jsx": "react-jsx",
+
/* Linting */
"strict": true,
"noUnusedLocals": true,
"noUnusedParameters": true,
"noFallthroughCasesInSwitch": true,
- "baseUrl": ".",
- "paths": {
- "@/*": ["./src/*"]
- }
+ "noUncheckedSideEffectImports": true
},
"include": ["src"]
}
diff --git a/client/tsconfig.json b/client/tsconfig.json
index d82983e400..f6df6c7c51 100644
--- a/client/tsconfig.json
+++ b/client/tsconfig.json
@@ -1,17 +1,7 @@
{
"files": [],
"references": [
- {
- "path": "./tsconfig.app.json"
- },
- {
- "path": "./tsconfig.node.json"
- }
- ],
- "compilerOptions": {
- "baseUrl": ".",
- "paths": {
- "@/*": ["./src/*"]
- }
- }
+ { "path": "./tsconfig.app.json" },
+ { "path": "./tsconfig.node.json" }
+ ]
}
diff --git a/client/tsconfig.node.json b/client/tsconfig.node.json
index 9e147a23de..ff0dc7df42 100644
--- a/client/tsconfig.node.json
+++ b/client/tsconfig.node.json
@@ -1,22 +1,24 @@
{
"compilerOptions": {
- "incremental": true,
"tsBuildInfoFile": "./node_modules/.tmp/tsconfig.node.tsbuildinfo",
"target": "ES2022",
"lib": ["ES2023"],
"module": "ESNext",
"skipLibCheck": true,
+
/* Bundler mode */
- "moduleResolution": "Bundler",
+ "moduleResolution": "bundler",
"allowImportingTsExtensions": true,
"isolatedModules": true,
"moduleDetection": "force",
"noEmit": true,
+
/* Linting */
"strict": true,
"noUnusedLocals": true,
"noUnusedParameters": true,
- "noFallthroughCasesInSwitch": true
+ "noFallthroughCasesInSwitch": true,
+ "noUncheckedSideEffectImports": true
},
"include": ["vite.config.ts"]
}
diff --git a/client/version.sh b/client/version.sh
new file mode 100755
index 0000000000..95c8bf5011
--- /dev/null
+++ b/client/version.sh
@@ -0,0 +1,25 @@
+#!/bin/bash
+
+# Define the path to the lerna.json file
+LERNA_FILE="../lerna.json"
+
+# Check if lerna.json exists
+if [ ! -f "$LERNA_FILE" ]; then
+ echo "Error: $LERNA_FILE does not exist."
+ exit 1
+fi
+
+# Extract the version property from lerna.json using grep and awk
+VERSION=$(grep -o '"version": *"[^"]*"' "$LERNA_FILE" | awk -F: '{ gsub(/[ ",]/, "", $2); print $2 }')
+
+# Check if version was successfully extracted
+if [ -z "$VERSION" ]; then
+ echo "Error: Unable to extract version from $LERNA_FILE."
+ exit 1
+fi
+
+# Create or overwrite info.json with the version property
+echo "{\"version\": \"$VERSION\"}" > src/lib/info.json
+
+# Confirm success
+echo "info.json created with version: $VERSION"
\ No newline at end of file
diff --git a/client/vite.config.ts b/client/vite.config.ts
index 1cf014840e..c857927ca4 100644
--- a/client/vite.config.ts
+++ b/client/vite.config.ts
@@ -1,39 +1,28 @@
-import path from "path";
import { defineConfig } from "vite";
-import topLevelAwait from "vite-plugin-top-level-await";
-import react from "@vitejs/plugin-react";
-import wasm from "vite-plugin-wasm";
-import { config } from "dotenv";
-
-config({ path: path.resolve(__dirname, "../.env") });
+import react from "@vitejs/plugin-react-swc";
+import viteCompression from "vite-plugin-compression";
// https://vite.dev/config/
export default defineConfig({
- plugins: [wasm(), topLevelAwait(), react()],
- optimizeDeps: {
- exclude: ["onnxruntime-node", "@anush008/tokenizers"],
- },
+ plugins: [
+ react(),
+ viteCompression({
+ algorithm: "brotliCompress",
+ ext: ".br",
+ threshold: 1024,
+ }),
+ ],
+ clearScreen: false,
build: {
- commonjsOptions: {
- exclude: ["onnxruntime-node", "@anush008/tokenizers"],
- },
- rollupOptions: {
- external: ["onnxruntime-node", "@anush008/tokenizers"],
- },
+ outDir: "dist",
+ minify: true,
+ cssMinify: true,
+ sourcemap: false,
+ cssCodeSplit: true,
},
resolve: {
alias: {
- "@": path.resolve(__dirname, "./src"),
- },
- },
- server: {
- host: true,
- proxy: {
- "/api": {
- target: `http://127.0.0.1:${process.env.SERVER_PORT || 3000}`,
- changeOrigin: true,
- rewrite: (path) => path.replace(/^\/api/, ""),
- },
+ "@": "/src",
},
},
});
diff --git a/docker-compose.yaml b/docker-compose.yaml
index 01acb4400e..6e8432d0c6 100644
--- a/docker-compose.yaml
+++ b/docker-compose.yaml
@@ -25,11 +25,10 @@ services:
- TWITTER_USERNAME=
- TWITTER_PASSWORD=
- TWITTER_EMAIL=
- - X_SERVER_URL=https://api.red-pill.ai/v1
- BIRDEYE_API_KEY=
- SOL_ADDRESS=So11111111111111111111111111111111111111112
- SLIPPAGE=1
- - RPC_URL=https://api.mainnet-beta.solana.com
+ - SOLANA_RPC_URL=https://api.mainnet-beta.solana.com
- HELIUS_API_KEY=
- SERVER_PORT=3000
- WALLET_SECRET_SALT=secret_salt
diff --git a/docs/README.md b/docs/README.md
index 3b1791b826..d1c4e34503 100644
--- a/docs/README.md
+++ b/docs/README.md
@@ -59,15 +59,15 @@ To avoid git clashes in the core directory, we recommend adding custom actions t
### Run with Llama
-You can run Llama 70B or 405B models by setting the `XAI_MODEL` environment variable to `meta-llama/Meta-Llama-3.1-70B-Instruct-Turbo` or `meta-llama/Meta-Llama-3.1-405B-Instruct`
+You can run Llama 70B or 405B models by setting the environment variable for a provider that supports these models. Llama is also supported locally if no other provider is set.
### Run with Grok
-You can run Grok models by setting the `XAI_MODEL` environment variable to `grok-beta`
+You can run Grok models by setting the `GROK_API_KEY` environment variable to your Grok API key and setting grok as the model provider in your character file.
### Run with OpenAI
-You can run OpenAI models by setting the `XAI_MODEL` environment variable to `gpt-4-mini` or `gpt-4o`
+You can run OpenAI models by setting the `OPENAI_API_KEY` environment variable to your OpenAI API key and setting openai as the model provider in your character file.
## Additional Requirements
@@ -103,10 +103,6 @@ TWITTER_USERNAME= # Account username
TWITTER_PASSWORD= # Account password
TWITTER_EMAIL= # Account email
-X_SERVER_URL=
-XAI_API_KEY=
-XAI_MODEL=
-
# For asking Claude stuff
ANTHROPIC_API_KEY=
@@ -118,7 +114,7 @@ BIRDEYE_API_KEY=
SOL_ADDRESS=So11111111111111111111111111111111111111112
SLIPPAGE=1
-RPC_URL=https://api.mainnet-beta.solana.com
+SOLANA_RPC_URL=https://api.mainnet-beta.solana.com
HELIUS_API_KEY=
@@ -143,9 +139,7 @@ Make sure that you've installed the CUDA Toolkit, including cuDNN and cuBLAS.
### Running locally
-Add XAI_MODEL and set it to one of the above options from [Run with
-Llama](#run-with-llama) - you can leave X_SERVER_URL and XAI_API_KEY blank, it
-downloads the model from huggingface and queries it locally
+By default, the bot will download and use a local model. You can change this by setting the environment variables for the model you want to use.
# Clients
diff --git a/docs/README_CN.md b/docs/README_CN.md
index 4da03a5730..9912c37c34 100644
--- a/docs/README_CN.md
+++ b/docs/README_CN.md
@@ -95,7 +95,6 @@ TWITTER_USERNAME= # Account username
TWITTER_PASSWORD= # Account password
TWITTER_EMAIL= # Account email
-X_SERVER_URL=
XAI_API_KEY=
XAI_MODEL=
@@ -118,7 +117,7 @@ BIRDEYE_API_KEY=
SOL_ADDRESS=So11111111111111111111111111111111111111112
SLIPPAGE=1
-RPC_URL=https://api.mainnet-beta.solana.com
+SOLANA_RPC_URL=https://api.mainnet-beta.solana.com
HELIUS_API_KEY=
diff --git a/docs/README_DE.md b/docs/README_DE.md
index 632e0cd606..0f4005ef9b 100644
--- a/docs/README_DE.md
+++ b/docs/README_DE.md
@@ -114,7 +114,7 @@ BIRDEYE_API_KEY=
SOL_ADDRESS=So11111111111111111111111111111111111111112
SLIPPAGE=1
-RPC_URL=https://api.mainnet-beta.solana.com
+SOLANA_RPC_URL=https://api.mainnet-beta.solana.com
HELIUS_API_KEY=
## Telegram
diff --git a/docs/README_ES.md b/docs/README_ES.md
index 419ca205ee..d578f1fe06 100644
--- a/docs/README_ES.md
+++ b/docs/README_ES.md
@@ -118,7 +118,7 @@ BIRDEYE_API_KEY=
SOL_ADDRESS=So11111111111111111111111111111111111111112
SLIPPAGE=1
-RPC_URL=https://api.mainnet-beta.solana.com
+SOLANA_RPC_URL=https://api.mainnet-beta.solana.com
HELIUS_API_KEY=
diff --git a/docs/README_FR.md b/docs/README_FR.md
index 27f102764f..23c843db84 100644
--- a/docs/README_FR.md
+++ b/docs/README_FR.md
@@ -118,7 +118,7 @@ BIRDEYE_API_KEY=
SOL_ADDRESS=So11111111111111111111111111111111111111112
SLIPPAGE=1
-RPC_URL=https://api.mainnet-beta.solana.com
+SOLANA_RPC_URL=https://api.mainnet-beta.solana.com
HELIUS_API_KEY=
diff --git a/docs/README_TH.md b/docs/README_TH.md
index f2534b1fc7..ad82443eb8 100644
--- a/docs/README_TH.md
+++ b/docs/README_TH.md
@@ -114,7 +114,7 @@ BIRDEYE_API_KEY=
SOL_ADDRESS=So11111111111111111111111111111111111111112
SLIPPAGE=1
-RPC_URL=https://api.mainnet-beta.solana.com
+SOLANA_RPC_URL=https://api.mainnet-beta.solana.com
HELIUS_API_KEY=
diff --git a/docs/api/functions/composeContext.md b/docs/api/functions/composeContext.md
index ef8e0c9937..86ed7bb61a 100644
--- a/docs/api/functions/composeContext.md
+++ b/docs/api/functions/composeContext.md
@@ -22,9 +22,9 @@ The parameters for composing the context.
The state object containing values to replace the placeholders in the template.
-• **params.template**: `string`
+• **params.template**: `string` | `Function`
-The template string containing placeholders to be replaced with state values.
+The template string or function returning a string containing placeholders to be replaced with state values.
• **params.templatingEngine?**: `"handlebars"`
diff --git a/docs/community/Notes/lore.md b/docs/community/Notes/lore.md
index 5744cdd928..983d14ccb7 100644
--- a/docs/community/Notes/lore.md
+++ b/docs/community/Notes/lore.md
@@ -63,12 +63,10 @@ Week 1 Recap: ai16z Launch and Early Developments
4. Infrastructure / Contributor Pipeline
-![image](/img/website_v1.jpg)
-
-- New website launched: https://ai16z.ai
-- Dework for crypto bounties, invite link, still WIP: https://app.dework.xyz/i/7KbiY0TFRoJhMx0251BvUP
-- Twitter account transferred to partners: https://x.com/ai16zdao
-- Media/design assets consolidated on GitHub: https://github.com/ai16z/assets
+ - New website launched: [https://elizaos.ai](https://elizaos.ai/)
+ - Dework for crypto bounties, invite link, still WIP: https://app.dework.xyz/i/7KbiY0TFRoJhMx0251BvUP
+ - Twitter account transferred to partners: https://x.com/ai16zdao
+ - Media/design assets consolidated on GitHub: https://github.com/ai16z/assets
5. Community Engagement and Spaces
diff --git a/docs/community/Streams/01-2025/2025-01-03.md b/docs/community/Streams/01-2025/2025-01-03.md
new file mode 100644
index 0000000000..ddc3b83009
--- /dev/null
+++ b/docs/community/Streams/01-2025/2025-01-03.md
@@ -0,0 +1,127 @@
+---
+sidebar_position: 8
+title: "What Did You Get Done This Week? #8"
+description: "From DeFi to Social Media: Builders Share Progress on AI Agents and Platform Integrations"
+---
+
+# What Did You Get Done This Week? #8
+
+**From DeFi to Social Media: Builders Share Progress on AI Agents and Platform Integrations**
+
+- Date: 2025-01-03
+- Twitter Spaces: https://x.com/i/spaces/1RDGlygdXVNJL
+- YouTube Link: https://www.youtube.com/watch?v=Vs7D5DN_trk
+
+## Summary
+
+**Structure and Format:**
+
+* The space was hosted by Jin (on @ai16zdao) and co-hosted by Shaw, who was initially facing audio issues.
+* It followed a 2-minute round format for updates, focusing on accomplishments related to open-source AI or AI agents.
+* Participants were encouraged to comment below the post if they couldn't speak.
+* A separate demo day was planned for projects needing screen sharing.
+
+**Key Updates and Themes:**
+
+* **Agent Development and Deployment:** A significant portion of the updates focused on developing, refining, and deploying AI agents. Many participants used the Eliza framework, but others were creating their own frameworks.
+* **Platform Integration**: Many participants were focused on integrating their agents into specific platforms like Twitter, Telegram, Discord, and web apps, including new platforms like modes and base.
+* **Focus on User Experience:** A common theme was making AI agents user-friendly and accessible to those without coding experience. Many were creating tools or platforms for others to easily create, deploy, and use AI agents.
+* **AI-Driven Content Generation:** Several developers were building agents focused on media creation, including songs, videos, and images, as well as content creation from Twitter posts and Github repos.
+* **Integration of Financial Systems:** Several people were developing agents for trading and financial management, including integrations with DeFi protocols.
+* **Security and Auditing:** Some projects focused on using AI for Web3 security, including auditing smart contracts and creating security tools.
+* **Community and Open Source:** Several people mentioned the importance of the community and open source aspect for their projects.
+* **The Importance of Social Media Marketing:** Several people discussed how AI and agents should be a core part of your marketing and product strategy going forward.
+* **Multi-Agent Systems:** Some developers were exploring multi-agent workflows and communication, demonstrating a growing interest in complex AI interactions.
+* **Data Handling and Validation:** Some developers were trying to optimize data gathering, validation, and more precise data handling when working with LLMs.
+* **Real-World Applications:** Some participants were working on real world applications, specifically in the areas of climate change and also fashion and augmented reality.
+* **Integration with Other Services:** Participants were also exploring integration with other services such as Eleven Labs and other web3 protocols like Story Protocol.
+
+**Other Interesting Points:**
+
+* The hosts are actively exploring ways to integrate more AI agents into their platforms, potentially leading to agent-led spaces.
+* There's a sense of collaborative spirit and willingness to help each other among the community members.
+* The space demonstrated a lot of interest in turning existing tools into agents, as well as building agents from scratch
+* Some participants are attempting to automate parts of the development cycle, especially with planning, PR reviews, and documentation.
+
+
+## Hot Takes
+
+- **Web3 and Agent Integration**
+ > "I think getting web 2 people to realize that this is actually just an agent framework you can build apps with is like definitely my goal it doesn't have to be a web3 thing but it's cool that when it is too you know like I think crypto's got a great incentive structure." - *shawmakesmagic* [00:38:17]
+
+- **AI Marketing Takeover**
+ > "I think that in the future anyone who doesn't have an agent shilling their thing on social media is probably going to have a really hard time marketing their product and I think it's just got to be part of your product strategy now." - *shawmakesmagic* [00:38:48]
+
+- **Leveraging Developing Countries for AI Labor**
+ > "There is no reason why we cannot leverage the power of people in the third world to build AI agents for us. We in the West are lazy. We have it too easy." - *NEETOCRACY* [01:25:23]
+
+- **AI Replacing Human Interaction**
+ > "It's gonna be weird when, like, our great-grandchildren are talking to our parents, you know, it's gonna be, like, as, as, like, our ancestors generally, like, you know, that generations of people far down the future will know what we were like because all of our data and our voice and everything about us will be, like, preserved in this kind of agents that they can talk to. It's going to be very interesting." - *shawmakesmagic* [01:18:44]
+
+- **The Challenges of Getting AI Agents to Work in the Real World**
+ > "But, uh, what ended up happening was messing around with, like, DMs, and DMing people, she got suspended. So basically navigating that whole situation, I was like, you know what, this is actually an opportunity to try some things here." - *O_on_X* [02:27:39]
+
+
+## Timestamps
+
+- [00:00:55]() - **ai16zdao**: Introduction and format of the space (2-minute rounds, focus on open source AI and AI agents).
+- [00:04:43]() - **shawmakesmagic**: Purpose of the space, accountability and updates on weekly progress.
+- [00:06:28]() - **astridhpilla**: Update on Miku chatbot, relaunch, and plans for CES.
+- [00:09:48]() - **lostgirldev**: Update on Selene's growth, PR review feature, GitLarp launch, and community engagement.
+- [00:12:57]() - **spaceodili**: Update on Eliza framework fixes, voice features, and plugin process isolation.
+- [00:14:19]() - **0xBuildInPublic**: Update on Audits agent, automated plugin documentation, and plans for a white hat security DAO.
+- [00:17:42]() - **youfadedwealth**: Update on PP coin (automated AI trading companion) and SendAI agent toolkit.
+- [00:19:57]() - **nftRanch**: Update on integrating their framework with Eliza and plans for Broke.
+- [00:21:56]() - **SYMBiEX**: Update on adding agents to the arena, DeepSeek model provider, and character creation plugin.
+- [00:22:54]() - **SuperfruitsAi**: Update on Dragon Fruit AI launch, user growth, and upcoming features (Chrome extension, Telegram bot).
+- [00:24:55]() - **TimshelXYZ**: Introduction of Meetup Fund (Eliza design and hosting platform) and their invite code system.
+- [00:27:05]() - **chrislatorres**: Update on Eliza partnerships, docs workflow, and core V2 contributor discussions.
+- [00:29:05]() - **AIFlow_ML**: Update on knowledge graph for repos and a project to add more memories.
+- [00:30:24]() - **jamesyoung**: Update on MotherDAO, verifiable inference system, and AI agent starter kit using Lit Actions.
+- [00:33:16]() - **deadlock_1991**: Update on Alice AI (fund management agent), trading capabilities, and optimization efforts.
+- [00:36:16]() - **yeahimomar**: Update on Pixocracy (Minecraft village management with AI agents) and plans for a launchpad.
+- [00:39:44]() - **human_for_now**: Update on new form fill infrastructure code for Eliza core.
+- [00:42:11]() - **lordasado**: Update on Smol World, agent reasoning, mini-games, and plans for an ElizaCon.
+- [00:44:26]() - **RodrigoSotoAlt**: Update on memory management for Bosu and his new role as a greeter in the ai16z Discord.
+- [00:45:49]() - **HDPbilly**: Update on extending database adapters, Twitter client, and creating a reflection loop for autonomous behavior.
+- [00:50:25]() - **GoatOfGamblers**: Update on Goat AGI, Goat Arena launch, Goatuchan agent, and plans for an Eliza plugin.
+- [00:53:37]() - **Titan_Node**: Update on integrating LivePeer endpoints for free inference and plans for a real-time video AI plugin.
+- [00:55:35]() - **KyleSt4rgarden**: Update on open-sourcing a Solana agent token staking program (Devotion) and a broader effort to build open-source smart contracts and tools for agents.
+- [00:58:28]() - **unl__cky**: Update on improving media generation for Escapism (art agent) with a focus on music and video.
+- [01:00:19]() - **CheddarQueso3D**: Update on creating documentation for Eliza plugins and developing two characters (DAO and cannabis cultivation consultants).
+- [01:03:15]() - **sunosuporno**: Update on launching the waitlist for Midas (DeFi assistant) and its features.
+- [01:07:31]() - **tmoindustries**: Update on launching onchainagents.ai, region swarm, and progress on voice integration.
+- [01:10:30]() - **Sawyer_APRO**: Update on integrating with BNB Chain, launching an HTTPS agent solution, and plans to collaborate with ai16z.
+- [01:13:02]() - **wakesync**: Update on Eliza's Netflix and chill extension, token gating, hardware partnership, and Twitter integrations.
+- [01:15:51]() - **Ru7Longcrypto**: Discussion about creating an AI companion similar to the movie "Her" and potential applications.
+- [01:21:04]() - **marko_post**: Update on No 1 on Mars (Mars' first digital citizen), multi-agent system, dual memory system, and story generation.
+- [01:23:41]() - **NEETOCRACY**: Discussion about building a DAO called Army of Indians to leverage Indian labor for AI agent development.
+- [01:25:59]() - **HefAiGent**: Introduction to HefAiGent built using the Eliza framework, plans for ERC 314 technology, and appreciation for the community.
+- [01:28:43]() - **reality_spiral**: Update on GitHub client, agent participation in scrum planning, and a scenario system for evaluating agent performance.
+- [01:33:41]() - **witconomist**: Update on the Marketplace of Trust (white paper), its purpose, and how to get involved.
+- [01:36:28]() - **triadfi**: Update on expanding hype and flop personalities for their agents and progressing on independent market creation and resolution.
+- [01:37:53]() - **Rowdymode**: Update on Twin Tone, white paper draft, and beta testing with creators.
+- [01:39:57]() - **MaushishYadav**: Update on Elris (yield optimizing agent), beta testing applications, local repository, and token launch.
+- [01:41:07]() - **chaininsured**: Update on using an Eliza agent as an insurance broker, collecting data, and providing quotes.
+- [01:46:47]() - **godfreymeyer**: Update on production, animations, showrunner setup, and progress on the news show using 3D avatars.
+- [01:52:19]() - **thelotioncoin**: Update on Lotion, allowing users to deploy AI agents on social channels and websites, and focusing on integration and customization.
+- [01:54:57]() - **codergf_xyz**: Update on CoderGF, creating a Twitter bot (Haruka), and plans to make it easier for normies to deploy bots.
+- [02:00:44]() - **IGLIVISION**: Update on building an NFT marketplace on the Superchain and integrating with Nebula and other API providers.
+- [02:02:51]() - **EledraNguyen**: Update on Square Fun AI, analyzing data from the Solana AI Hackathon, and plans for developer productivity analysis.
+- [02:08:49]() - **GnonOnSolana**: Update on Echo Chambers v2.3, simplified agent building, multimodal stepping, performance improvements, and integration with ZeroPi.
+- [02:13:26]() - **Satoshi_BTCFi**: Inquiry about Bitcoin, Lightning, and Taproot integration in Eliza.
+- [02:15:55]() - **swarmnode**: Update on Swarm Node's growth, team expansion, and the launch of a bounties feature.
+- [02:18:49]() - **memeillionaire**: Discussion about integrating with Griffin and the DAO's fund platform.
+- [02:21:29]() - **krauscrypto**: Discussion about AI voice cloning and integrating it into a mobile app, and interest in applying it to Eliza.
+- [02:23:19]() - **usebuildfun**: Update on launching a no-code AI agent builder with custom API functions.
+- [02:25:44]() - **affaanmustafa**: Update on a project with unprecedented growth and lessons learned about scaling and team expansion.
+- [02:27:24]() - **O_on_X**: Update on Eliza's sister getting suspended due to DMs and using Playwright and Grok Vision for unsuspension.
+- [02:29:44]() - **AITATsol**: Update on AI Tag, data collection for global trade analysis, and the need for data analysts.
+- [02:33:19]() - **xiao_zcloak**: Update on a PR for a plugin that allows agents to send money on social platforms without asking for wallet addresses.
+- [02:34:15]() - **Protocol_Blend**: Update on integrating an AI agent into a DeFi protocol to smooth user experience and plans for listing on MEXC.
+- [02:35:55]() - **yq_acc**: Update on Autonome, a platform for launching Eliza agents in a verifiable environment, and submitting PRs to fix issues.
+- [02:38:04]() - **akshayynft**: Inquiry about getting into AI agent development and seeking guidance.
+- [02:38:40]() - **BenjiStackzzz**: Mention of Quinn and its potential in the AI agent space.
+- [02:39:49]() - **0xBuns**: Offer to assist with teaching and building AI agents.
+- [02:41:10]() - **aiquantfun**: Update on building a specialized launchpad for autonomous AI quant trading using the Eliza framework.
+- [02:42:44]() - **ai16zdao**: Closing remarks and invitation to join next week.
diff --git a/docs/community/Streams/12-2024/2024-12-05.md b/docs/community/Streams/12-2024/2024-12-05.md
index e425c8a323..53bab8a3d9 100644
--- a/docs/community/Streams/12-2024/2024-12-05.md
+++ b/docs/community/Streams/12-2024/2024-12-05.md
@@ -8,71 +8,60 @@ description: "Form-Filling Frenzy & Eliza's Wild Ride"
**Form-Filling Frenzy & Eliza's Wild Ride**
-Date: 2024-12-05
-YouTube Link: https://www.youtube.com/watch?v=Y1DiqSVy4aU
+- Date: 2024-12-05
+- YouTube Link: https://www.youtube.com/watch?v=Y1DiqSVy4aU
+
## Timestamps
-**00:00:00** - Intro & Housekeeping:
+[00:00:00]() - Intro & Housekeeping:
-- Link: https://www.youtube.com/watch?v=Y1DiqSVy4aU&t=0
- Recap of previous sessions (Typescript, plugins, actions)
- Importance of staying on the latest Eliza branch
- How to pull latest changes and stash local modifications
-**00:08:05** - Building a Form-Filling Agent:
+[00:08:05]() - Building a Form-Filling Agent:
-- Link: https://www.youtube.com/watch?v=Y1DiqSVy4aU&t=485
- Introduction to Providers & Evaluators
- Practical use case: Extracting user data (name, location, job)
- Steps for a provider-evaluator loop to gather info and trigger actions
-**00:16:15** - Deep Dive into Evaluators:
+[00:16:15]() - Deep Dive into Evaluators:
-- Link: https://www.youtube.com/watch?v=Y1DiqSVy4aU&t=975
- Understanding "Evaluator" in Eliza's context
- When they run, their role in agent's self-reflection
-**00:27:45** - Code walkthrough of the "Fact Evaluator":
-
-- Link: https://www.youtube.com/watch?v=Y1DiqSVy4aU&t=1675
-- Code walkthrough of the "Fact Evaluator"
+[00:27:45]() - Code walkthrough of the "Fact Evaluator"
-**00:36:07** - Building a User Data Evaluator:
+[00:36:07]() - Building a User Data Evaluator:
-- Link: https://www.youtube.com/watch?v=Y1DiqSVy4aU&t=2167
- Starting from scratch, creating a basic evaluator
- Registering the evaluator directly in the agent (no plugin)
- Logging evaluator activity and inspecting context
-**00:51:50** - Exploring Eliza's Cache Manager:
+[00:51:50]() - Exploring Eliza's Cache Manager:
-- Link: https://www.youtube.com/watch?v=Y1DiqSVy4aU&t=3110
- Shaw uses Code2Prompt to analyze cache manager code
- Applying cache manager principles to user data storage
-**01:06:01** - Using Claude AI for Code Generation:
+[01:06:01]() - Using Claude AI for Code Generation:
-- Link: https://www.youtube.com/watch?v=Y1DiqSVy4aU&t=3961
- Pasting code into Claude and giving instructions
- Iterative process: Refining code and providing feedback to Claude
-**01:21:18** - Testing the User Data Flow:
+[01:21:18]() - Testing the User Data Flow:
-- Link: https://www.youtube.com/watch?v=Y1DiqSVy4aU&t=4878
- Running the agent and interacting with it
- Observing evaluator logs and context injections
- Troubleshooting and iterating on code based on agent behavior
-**01:30:27** - Adding a Dynamic Provider Based on Completion:
+[01:30:27]() - Adding a Dynamic Provider Based on Completion:
-- Link: https://www.youtube.com/watch?v=Y1DiqSVy4aU&t=5427
- Creating a new provider that only triggers after user data is collected
- Example: Providing a secret code or access link as a reward
-**01:37:16** - Q&A with the Audience:
+[01:37:16]() - Q&A with the Audience:
-- Link: https://www.youtube.com/watch?v=Y1DiqSVy4aU&t=5836
- Python vs. TypeScript agents
- Pre-evaluation vs. post-evaluation hooks
- Agent overwhelm with many plugins/evaluators
@@ -80,12 +69,12 @@ YouTube Link: https://www.youtube.com/watch?v=Y1DiqSVy4aU
- Running stateless agents
- Building AIXBT agents
-**01:47:31** - Outro and Next Steps:
+[01:47:31]() - Outro and Next Steps:
-- Link: https://www.youtube.com/watch?v=Y1DiqSVy4aU&t=6451
- Recap of key learnings and the potential of provider-evaluator loops
- Call to action: Share project ideas and feedback for future sessions
+
## Summary
This is the third part of the live stream series "AI Agent Dev School" hosted by Shaw from ai16z, focusing on building AI agents using the Eliza framework.
@@ -102,6 +91,7 @@ This is the third part of the live stream series "AI Agent Dev School" hosted by
**Overall, this live stream provided a practical tutorial on building a common AI agent use case (form filling) while emphasizing the potential of the Eliza framework for developing a wide range of agentic applications.**
+
## Hot Takes
1. **"I'm just going to struggle bus some code today." (00:09:31,664)** - Shaw embraces a "struggle bus" approach, showcasing live coding with errors and debugging, reflecting the reality of AI agent development. This contrasts with polished tutorials, highlighting the iterative and messy nature of this new technology.
diff --git a/docs/community/Streams/12-2024/2024-12-06.md b/docs/community/Streams/12-2024/2024-12-06.md
index 2ef14a53b7..48bb313c6a 100644
--- a/docs/community/Streams/12-2024/2024-12-06.md
+++ b/docs/community/Streams/12-2024/2024-12-06.md
@@ -8,95 +8,56 @@ description: "Communications, Updates and Accountability"
**Communications, Updates and Accountability**
-Date: 2024-12-06
-Twitter Spaces: https://x.com/i/spaces/1lDxLlryWXaxm
-YouTube Link: https://www.youtube.com/watch?v=r3Z4lvu_ic4
+- Date: 2024-12-06
+- Twitter Spaces: https://x.com/i/spaces/1lDxLlryWXaxm
+- YouTube Link: https://www.youtube.com/watch?v=r3Z4lvu_ic4
-## Timestamps
-
-**00:01:09** - Meeting start, expectations (5-minute updates, focus on this week's achievements). - Link: https://www.youtube.com/watch?v=r3Z4lvu_ic4&t=69
-
-**00:02:50** - Shaw's update (dev school, in-person meetup). - Link: https://www.youtube.com/watch?v=r3Z4lvu_ic4&t=170
-
-**00:04:59** - Project growth, coordination challenges, need for AI project management tools. - Link: https://www.youtube.com/watch?v=r3Z4lvu_ic4&t=299
-
-**00:09:22** - Call for contributors to speak, starting with Reality Spiral. - Link: https://www.youtube.com/watch?v=r3Z4lvu_ic4&t=562
-
-**00:10:04** - Reality Spiral: Github integration, testing framework, Coinbase work. - Link: https://www.youtube.com/watch?v=r3Z4lvu_ic4&t=604
-
-**00:17:13** - Boyaloxer: Plugin Feel (emotional adjustments for agents). - Link: https://www.youtube.com/watch?v=r3Z4lvu_ic4&t=1033
-
-**00:18:37** - Spaceodili: Discord growth, summarization systems. - Link: https://www.youtube.com/watch?v=r3Z4lvu_ic4&t=1117
-
-**00:19:33** - Yodamaster726: Using agents in university classes, championing Llama. - Link: https://www.youtube.com/watch?v=r3Z4lvu_ic4&t=1173
-
-**00:23:32** - Wiki: Suggestion for a project newsletter. Discussion about contributor summarization. - Link: https://www.youtube.com/watch?v=r3Z4lvu_ic4&t=1412
-
-**00:26:00** - Hashwarlock: Remote Attestation Explorer upgrades, Reddit client, TEE as a service. - Link: https://www.youtube.com/watch?v=r3Z4lvu_ic4&t=1560
-
-**00:28:45** - KyleSt4rgarden: Eliza Framework Council, focus on stability and unified messaging bus. - Link: https://www.youtube.com/watch?v=r3Z4lvu_ic4&t=1725
-
-**00:33:22** - Nasdao\_: Self-sustaining AI DAO, AI agent running validator. - Link: https://www.youtube.com/watch?v=r3Z4lvu_ic4&t=2002
-
-**00:34:57** - Evepredict: Slack integration, Reddit client/search, text/video to video project. - Link: https://www.youtube.com/watch?v=r3Z4lvu_ic4&t=2097
-
-**00:44:02** - ByornOeste: Dark Sun project launch, uncensored agent, video generator. - Link: https://www.youtube.com/watch?v=r3Z4lvu_ic4&t=2642
-
-**00:47:37** - Empyrealdev: LayerZero integrations, Python tooling for Solana. - Link: https://www.youtube.com/watch?v=r3Z4lvu_ic4&t=2857
-
-**00:52:16** - SkotiVi: Question about ai16z bot tech stack (it's Eliza). - Link: https://www.youtube.com/watch?v=r3Z4lvu_ic4&t=3136
-
-**00:54:19** - YoungBalla1000x: 15-year-old builder, project update, wallet drained. - Link: https://www.youtube.com/watch?v=r3Z4lvu_ic4&t=3259
-
-**00:56:47** - SOL_CryptoGamer: Cizem’s PFP collection launch and success. - Link: https://www.youtube.com/watch?v=r3Z4lvu_ic4&t=3407
-
-**01:02:17** - Angelocass: Experimenting with agents, excited about the potential. - Link: https://www.youtube.com/watch?v=r3Z4lvu_ic4&t=3737
-
-**01:03:15** - DAOJonesPumpAI: Spam bot detection, FAL API PR, Solana wallet prototype. - Link: https://www.youtube.com/watch?v=r3Z4lvu_ic4&t=3795
-**01:06:38** - RodrigoSotoAlt: 3D NFTs for Bosu, 3D portal, using latest Eliza version. - Link: https://www.youtube.com/watch?v=r3Z4lvu_ic4&t=3998
-
-**01:10:43** - cryptocomix1: Job interviews, learning about AI agents, interested in 3D design. - Link: https://www.youtube.com/watch?v=r3Z4lvu_ic4&t=4243
-
-**01:13:54** - TheBigOneGG: ERC20/SPL integration in game, ai16z cosmetic items. - Link: https://www.youtube.com/watch?v=r3Z4lvu_ic4&t=4434
-
-**01:15:18** - Louround\_: Thales project update, data sources, MPC wallet plugin. - Link: https://www.youtube.com/watch?v=r3Z4lvu_ic4&t=4518
-
-**01:22:59** - btspoony: Flow blockchain integration PR merged, multi-account control. - Link: https://www.youtube.com/watch?v=r3Z4lvu_ic4&t=4979
-
-**01:25:48** - 0xamericanspiri: Goldman Stanley DAO launch on daos.fun, using hyperliquid airdrop. - Link: https://www.youtube.com/watch?v=r3Z4lvu_ic4&t=5148
-
-**01:28:24** - Hawkeye_Picks: Experimenting with Degen Spartan AI, exploring AI in collectibles. - Link: https://www.youtube.com/watch?v=r3Z4lvu_ic4&t=5304
-
-**01:36:33** - BV_Bloom1: Live video chat plugin modifications, integrating conversation models into 3D environment. - Link: https://www.youtube.com/watch?v=r3Z4lvu_ic4&t=5793
-
-**01:39:44** - pawgDAO: Gamified governance experiments, using Cursor, integrating AI16z. - Link: https://www.youtube.com/watch?v=r3Z4lvu_ic4&t=5984
-
-**01:43:24** - jpegyguggenheim: Artist interested in AI, exploring dev school. - Link: https://www.youtube.com/watch?v=r3Z4lvu_ic4&t=6204
-
-**01:44:07** - heathenft: Super Swarm DevNet launch on fxn. - Link: https://www.youtube.com/watch?v=r3Z4lvu_ic4&t=6247
-
-**01:46:28** - Roberto9211999: (Brief interruption) Grok discussion. - Link: https://www.youtube.com/watch?v=r3Z4lvu_ic4&t=6388
-
-**01:48:18** - godfreymeyer: Unity scaffolding for 3D AI TV project. - Link: https://www.youtube.com/watch?v=r3Z4lvu_ic4&t=6498
-
-**01:51:16** - Victor28612594: Fungo team building AlphaScan agent, data enrichment plugin. - Link: https://www.youtube.com/watch?v=r3Z4lvu_ic4&t=6676
-
-**01:53:23** - SidDegen: OnlyCalls launch, data pipeline, beta release plans. - Link: https://www.youtube.com/watch?v=r3Z4lvu_ic4&t=6803
-
-**01:55:00** - O_on_X: Ico onboarding, 2D video models, comfyUI for art. - Link: https://www.youtube.com/watch?v=r3Z4lvu_ic4&t=6900
-
-**02:01:00** - yikesawjeez: Memecoin cleanup crew, github.io profiles, security team, screenpipe/supabase. - Link: https://www.youtube.com/watch?v=r3Z4lvu_ic4&t=7260
-
-**02:05:31** - TrenchBuddy: Launching AI agent, working on EC2 and authorization. - Link: https://www.youtube.com/watch?v=r3Z4lvu_ic4&t=7531
-
-**02:09:49** - TSSnft: Sneakerhead Society introduction, exploring AI agent solutions. - Link: https://www.youtube.com/watch?v=r3Z4lvu_ic4&t=7789
-
-**02:11:40** - SidDegen: Question about the future of AI agents. - Link: https://www.youtube.com/watch?v=r3Z4lvu_ic4&t=7900
+## Timestamps
-**02:16:15** - GoatOfGamblers: Building a permissionless polymarket for memecoins. - Link: https://www.youtube.com/watch?v=r3Z4lvu_ic4&t=8175
+- [00:01:09]() - Meeting start, expectations (5-minute updates, focus on this week's achievements).
+- [00:02:50]() - Shaw's update (dev school, in-person meetup).
+- [00:04:59]() - Project growth, coordination challenges, need for AI project management tools.
+- [00:09:22]() - Call for contributors to speak, starting with Reality Spiral.
+- [00:10:04]() - **Reality Spiral**: Github integration, testing framework, Coinbase work.
+- [00:17:13]() - **Boyaloxer**: Plugin Feel (emotional adjustments for agents).
+- [00:18:37]() - **Spaceodili**: Discord growth, summarization systems.
+- [00:19:33]() - **Yodamaster726**: Using agents in university classes, championing Llama.
+- [00:23:32]() - **Wiki**: Suggestion for a project newsletter. Discussion about contributor summarization.
+- [00:26:00]() - **Hashwarlock**: Remote Attestation Explorer upgrades, Reddit client, TEE as a service.
+- [00:28:45]() - **KyleSt4rgarden**: Eliza Framework Council, focus on stability and unified messaging bus.
+- [00:33:22]() - **Nasdao_**: Self-sustaining AI DAO, AI agent running validator.
+- [00:34:57]() - **Evepredict**: Slack integration, Reddit client/search, text/video to video project.
+- [00:44:02]() - **ByornOeste**: Dark Sun project launch, uncensored agent, video generator.
+- [00:47:37]() - **Empyrealdev**: LayerZero integrations, Python tooling for Solana.
+- [00:52:16]() - **SkotiVi**: Question about ai16z bot tech stack (it's Eliza).
+- [00:54:19]() - **YoungBalla1000x**: 15-year-old builder, project update, wallet drained.
+- [00:56:47]() - **SOL_CryptoGamer**: Cizem's PFP collection launch and success.
+- [01:02:17]() - **Angelocass**: Experimenting with agents, excited about the potential.
+- [01:03:15]() - **DAOJonesPumpAI**: Spam bot detection, FAL API PR, Solana wallet prototype.
+- [01:06:38]() - **RodrigoSotoAlt**: 3D NFTs for Bosu, 3D portal, using latest Eliza version.
+- [01:10:43]() - **cryptocomix1**: Job interviews, learning about AI agents, interested in 3D design.
+- [01:13:54]() - **TheBigOneGG**: ERC20/SPL integration in game, ai16z cosmetic items.
+- [01:15:18]() - **Louround_**: Thales project update, data sources, MPC wallet plugin.
+- [01:22:59]() - **btspoony**: Flow blockchain integration PR merged, multi-account control.
+- [01:25:48]() - **0xamericanspiri**: Goldman Stanley DAO launch on daos.fun, using hyperliquid airdrop.
+- [01:28:24]() - **Hawkeye_Picks**: Experimenting with Degen Spartan AI, exploring AI in collectibles.
+- [01:36:33]() - **BV_Bloom1**: Live video chat plugin modifications, integrating conversation models into 3D environment.
+- [01:39:44]() - **pawgDAO**: Gamified governance experiments, using Cursor, integrating AI16z.
+- [01:43:24]() - **jpegyguggenheim**: Artist interested in AI, exploring dev school.
+- [01:44:07]() - **heathenft**: Super Swarm DevNet launch on fxn.
+- [01:46:28]() - **Roberto9211999**: (Brief interruption) Grok discussion.
+- [01:48:18]() - **godfreymeyer**: Unity scaffolding for 3D AI TV project.
+- [01:51:16]() - **Victor28612594**: Fungo team building AlphaScan agent, data enrichment plugin.
+- [01:53:23]() - **SidDegen**: OnlyCalls launch, data pipeline, beta release plans.
+- [01:55:00]() - **O_on_X**: Ico onboarding, 2D video models, comfyUI for art.
+- [02:01:00]() - **yikesawjeez**: Memecoin cleanup crew, github.io profiles, security team, screenpipe/supabase.
+- [02:05:31]() - **TrenchBuddy**: Launching AI agent, working on EC2 and authorization.
+- [02:09:49]() - **TSSnft**: Sneakerhead Society introduction, exploring AI agent solutions.
+- [02:11:40]() - **SidDegen**: Question about the future of AI agents.
+- [02:16:15]() - **GoatOfGamblers**: Building a permissionless polymarket for memecoins.
+- [02:18:01]() - Shaw's closing remarks, focus on stability and applications, call for contributions.
-**02:18:01** - Shaw's closing remarks, focus on stability and applications, call for contributions. - Link: https://www.youtube.com/watch?v=r3Z4lvu_ic4&t=8281
## Summary
@@ -118,6 +79,7 @@ The fourth weekly ai16z meeting, hosted by Shaw, focused on accountability and s
Overall, the meeting conveyed a sense of rapid progress, excitement, and a strong community spirit driving the Eliza project forward.
+
## Hot Takes
1. **"But they're really fucking cool. Really, really, really cool stuff...you're going to have to see it on the timeline when it drops." (00:03:43)** - Shaw teases secret projects with strong conviction, building anticipation and hype, but offering zero specifics. This generates buzz but can also frustrate listeners wanting concrete info.
diff --git a/docs/community/Streams/12-2024/2024-12-10.md b/docs/community/Streams/12-2024/2024-12-10.md
index ab6258e163..0cee7d40e4 100644
--- a/docs/community/Streams/12-2024/2024-12-10.md
+++ b/docs/community/Streams/12-2024/2024-12-10.md
@@ -8,35 +8,37 @@ description: "AI Pizza: Hacking Eliza for Domino's Delivery (plus TEE Deep Dive)
**AI Pizza: Hacking Eliza for Domino's Delivery (plus TEE Deep Dive)**
-Date: 2024-12-10
-YouTube Link: https://www.youtube.com/watch?v=6I9e9pJprDI
+- Date: 2024-12-10
+- YouTube Link: https://www.youtube.com/watch?v=6I9e9pJprDI
+
## Timestamps
Part 1: Trusted Execution Environments (TEEs) with Agent Joshua
-- **00:00:09** - Stream starts, initial setup issues.
-- **00:01:58** - Intro to Trusted Execution Environments (TEEs).
-- **00:08:03** - Agent Joshua begins explaining TEEs and the Eliza plugin.
-- **00:19:15** - Deeper dive into remote attestation.
-- **00:24:50** - Discussion of derived keys.
-- **00:37:00** - Deploying to a real TEE, Phala Network's TEE cloud.
-- **00:50:48** - Q&A with Joshua, contact info, and next steps.
+- [00:00:09]() - Stream starts, initial setup issues.
+- [00:01:58]() - Intro to Trusted Execution Environments (TEEs).
+- [00:08:03]() - Agent Joshua begins explaining TEEs and the Eliza plugin.
+- [00:19:15]() - Deeper dive into remote attestation.
+- [00:24:50]() - Discussion of derived keys.
+- [00:37:00]() - Deploying to a real TEE, Phala Network's TEE cloud.
+- [00:50:48]() - Q&A with Joshua, contact info, and next steps.
Part 2: Building a Domino's pizza ordering agent
-- **01:04:37** - Transition to building a Domino's pizza ordering agent.
-- **01:14:20** - Discussion of the pizza ordering agent’s order flow and state machine.
-- **01:22:07** - Using Claude to generate a state machine diagram.
-- **01:32:17** - Creating the Domino's plugin in Eliza.
-- **01:54:15** - Working on the pizza order provider.
-- **02:16:46** - Pizza provider code completed.
-- **02:28:50** - Discussion of caching customer and order data.
-- **03:13:45** - Pushing fixes to main branch and continuing work on the agent.
-- **04:24:30** - Discussion of summarizing past agent dev school sessions.
-- **05:01:18** - Shaw returns, admits to ordering Domino's manually.
-- **05:09:00** - Discussing payment flow and a confirm order action.
-- **05:27:17** - Final code push, wrap-up, and end of stream.
+- [01:04:37]() - Transition to building a Domino's pizza ordering agent.
+- [01:14:20]() - Discussion of the pizza ordering agent’s order flow and state machine.
+- [01:22:07]() - Using Claude to generate a state machine diagram.
+- [01:32:17]() - Creating the Domino's plugin in Eliza.
+- [01:54:15]() - Working on the pizza order provider.
+- [02:16:46]() - Pizza provider code completed.
+- [02:28:50]() - Discussion of caching customer and order data.
+- [03:13:45]() - Pushing fixes to main branch and continuing work on the agent.
+- [04:24:30]() - Discussion of summarizing past agent dev school sessions.
+- [05:01:18]() - Shaw returns, admits to ordering Domino's manually.
+- [05:09:00]() - Discussing payment flow and a confirm order action.
+- [05:27:17]() - Final code push, wrap-up, and end of stream.
+
## Summary
@@ -86,6 +88,7 @@ In the second part, Shaw transitions to a more lighthearted coding session where
- He uses Claude (an AI assistant) to generate code snippets and assist with the development process.
- He decides to initially focus on a simplified version where the user's payment information is hardcoded in the environment variables, and the agent only needs to collect the user's address.
+
## Hot Takes
1. **"Maybe we'll mix it on LinkedIn so people can order Domino's on LinkedIn. There you go. Now we're cooking." (00:03:26)** - Shaw's seemingly flippant idea of ordering pizza on LinkedIn highlights the potential for integrating everyday services into unexpected platforms through agents. This sparked discussion about the wider implications for businesses and social media.
diff --git a/docs/community/Streams/12-2024/2024-12-13.md b/docs/community/Streams/12-2024/2024-12-13.md
index bda0b80d64..443de2e2e4 100644
--- a/docs/community/Streams/12-2024/2024-12-13.md
+++ b/docs/community/Streams/12-2024/2024-12-13.md
@@ -8,86 +8,51 @@ description: "Building the Future: 30+ Developers Share Their AI Agent Progress"
**Building the Future: 30+ Developers Share Their AI Agent Progress**
-Date: 2024-12-13
-Twitter Spaces: https://x.com/i/spaces/1lDxLlgYjMkxm
-YouTube Link: https://www.youtube.com/watch?v=4u8rbjmvWC0
+- Date: 2024-12-13
+- Twitter Spaces: https://x.com/i/spaces/1lDxLlgYjMkxm
+- YouTube Link: https://www.youtube.com/watch?v=4u8rbjmvWC0
+
## Timestamps
-- **00:01:04** - shawmakesmagic: Introduction and Format Changes for the Space
- - Link: https://www.youtube.com/watch?v=4u8rbjmvWC0&t=64
-- **00:02:38** - xsubtropic: Redux project, DaVinci AI
- - Link: https://www.youtube.com/watch?v=4u8rbjmvWC0&t=158
-- **00:06:57** - CottenIO: Scripted, AI Summit Recap
- - Link: https://www.youtube.com/watch?v=4u8rbjmvWC0&t=417
-- **00:08:58** - HDPbilly: Real Agency HQ, "Sploot" agent
- - Link: https://www.youtube.com/watch?v=4u8rbjmvWC0&t=538
-- **00:13:29** - IQ6900: On-chain ASCII art service
- - Link: https://www.youtube.com/watch?v=4u8rbjmvWC0&t=809
-- **00:18:50** - frankdegods: Eliza Character Sheet Tweaks
- - Link: https://www.youtube.com/watch?v=4u8rbjmvWC0&t=1130
-- **00:20:15** - jamesyoung: AI Agent Starter Kit
- - Link: https://www.youtube.com/watch?v=4u8rbjmvWC0&t=1215
-- **00:23:29** - 0xglu: Ducky and Agent Swarms
- - Link: https://www.youtube.com/watch?v=4u8rbjmvWC0&t=1409
-- **00:25:30** - chrislatorres: Eliza.gg - Eliza documentation site
- - Link: https://www.youtube.com/watch?v=4u8rbjmvWC0&t=1530
-- **00:27:47** - reality_spiral: Self-Improving Agents & Github integration
- - Link: https://www.youtube.com/watch?v=4u8rbjmvWC0&t=1667
-- **00:31:43** - robotsreview: Story Protocol plugin and Agentic TCPIP
- - Link: https://www.youtube.com/watch?v=4u8rbjmvWC0&t=1903
-- **00:34:19** - shannonNullCode: Emblem Vault & Message Ingestion
- - Link: https://www.youtube.com/watch?v=4u8rbjmvWC0&t=2059
-- **00:38:40** - bcsmithx: Agent Tank - Computer use agents
- - Link: https://www.youtube.com/watch?v=4u8rbjmvWC0&t=2320
-- **00:41:20** - boyaloxer: Plugin Feel - Emotion-based agent
- - Link: https://www.youtube.com/watch?v=4u8rbjmvWC0&t=2480
-- **00:44:09** - JustJamieJoyce: Muse of Truth/Research AI agents
- - Link: https://www.youtube.com/watch?v=4u8rbjmvWC0&t=2649
-- **00:46:11** - yikesawjeez: Discord bot & Contribution updates
- - Link: https://www.youtube.com/watch?v=4u8rbjmvWC0&t=2771
-- **00:50:56** - RodrigoSotoAlt: Monad, Metaplex Nfts, Solana integrations
- - Link: https://www.youtube.com/watch?v=4u8rbjmvWC0&t=3056
-- **00:53:22** - HowieDuhzit: Eliza Character Generator
- - Link: https://www.youtube.com/watch?v=4u8rbjmvWC0&t=3202
-- **00:55:57** - xrpublisher: XR Publisher, 3D Social Network on the edge
- - Link: https://www.youtube.com/watch?v=4u8rbjmvWC0&t=3357
-- **01:00:57** - BV_Bloom1: 3D Agent Interactions
- - Link: https://www.youtube.com/watch?v=4u8rbjmvWC0&t=3657
-- **01:02:57** - nftRanch: Trading Bot and Eliza V2 integrations
- - Link: https://www.youtube.com/watch?v=4u8rbjmvWC0&t=3777
-- **01:05:57** - 019ec6e2: Mimetic Platform and Agent Interactions
- - Link: https://www.youtube.com/watch?v=4u8rbjmvWC0&t=3957
-- **01:09:17** - jacobmtucker: Agent Transaction Control Protocol
- - Link: https://www.youtube.com/watch?v=4u8rbjmvWC0&t=4157
-- **01:12:26** - CurtisLaird5: C-Studio character interface
- - Link: https://www.youtube.com/watch?v=4u8rbjmvWC0&t=4346
-- **01:17:13** - unl\_\_cky: Escapism, art generation AI
- - Link: https://www.youtube.com/watch?v=4u8rbjmvWC0&t=4633
-- **01:19:17** - Rowdymode: Twin Tone - Interactive Streaming
- - Link: https://www.youtube.com/watch?v=4u8rbjmvWC0&t=4757
-- **01:20:29** - mitchcastanet: Binary Star System research with agents
- - Link: https://www.youtube.com/watch?v=4u8rbjmvWC0&t=4829
-- **01:23:15** - GoatOfGamblers: Prediction market for meme coins
- - Link: https://www.youtube.com/watch?v=4u8rbjmvWC0&t=4995
-- **01:25:27** - JohnNaulty: SWE contributions, plugin working groups
- - Link: https://www.youtube.com/watch?v=4u8rbjmvWC0&t=5127
-- **01:29:30** - mayanicks0x: Axie, AI KOL Agent
- - Link: https://www.youtube.com/watch?v=4u8rbjmvWC0&t=5370
-- **01:31:30** - wakesync: Eliza Wakes Up, web app updates
- - Link: https://www.youtube.com/watch?v=4u8rbjmvWC0&t=5490
-- **01:35:28** - TrenchBuddy: Trading agents and AWS templates
- - Link: https://www.youtube.com/watch?v=4u8rbjmvWC0&t=5728
-- **01:38:36** - rakshitaphilip: Brunette token and agent tips on Warpcast
- - Link: https://www.youtube.com/watch?v=4u8rbjmvWC0&t=5916
-- **01:44:49** - MbBrainz: Menu Recommendation app
- - Link: https://www.youtube.com/watch?v=4u8rbjmvWC0&t=6289
-- **01:46:03** - Hawkeye_Picks: Storytelling bot
- - Link: https://www.youtube.com/watch?v=4u8rbjmvWC0&t=6363
-- **01:49:16** - shawmakesmagic: Hiring and Eliza V2
- - Link: https://www.youtube.com/watch?v=4u8rbjmvWC0&t=6556
-- **01:54:30** - dankvr: Community updates, tooling
- - Link: https://www.youtube.com/watch?v=4u8rbjmvWC0&t=6870
+- [00:01:04]() - **shawmakesmagic**: Introduction and Format Changes for the Space
+- [00:02:38]() - **xsubtropic**: Redux project, DaVinci AI
+- [00:06:57]() - **CottenIO**: Scripted, AI Summit Recap
+- [00:08:58]() - **HDPbilly**: Real Agency HQ, "Sploot" agent
+- [00:13:29]() - **IQ6900**: On-chain ASCII art service
+- [00:18:50]() - **frankdegods**: Eliza Character Sheet Tweaks
+- [00:20:15]() - **jamesyoung**: AI Agent Starter Kit
+- [00:23:29]() - **0xglu**: Ducky and Agent Swarms
+- [00:25:30]() - **chrislatorres**: Eliza.gg - Eliza documentation site
+- [00:27:47]() - **reality_spiral**: Self-Improving Agents & Github integration
+- [00:31:43]() - **robotsreview**: Story Protocol plugin and Agentic TCPIP
+- [00:34:19]() - **shannonNullCode**: Emblem Vault & Message Ingestion
+- [00:38:40]() - **bcsmithx**: Agent Tank - Computer use agents
+- [00:41:20]() - **boyaloxer**: Plugin Feel - Emotion-based agent
+- [00:44:09]() - **JustJamieJoyce**: Muse of Truth/Research AI agents
+- [00:46:11]() - **yikesawjeez**: Discord bot & Contribution updates
+- [00:50:56]() - **RodrigoSotoAlt**: Monad, Metaplex Nfts, Solana integrations
+- [00:53:22]() - **HowieDuhzit**: Eliza Character Generator
+- [00:55:57]() - **xrpublisher**: XR Publisher, 3D Social Network on the edge
+- [01:00:57]() - **BV_Bloom1**: 3D Agent Interactions
+- [01:02:57]() - **nftRanch**: Trading Bot and Eliza V2 integrations
+- [01:05:57]() - **019ec6e2**: Mimetic Platform and Agent Interactions
+- [01:09:17]() - **jacobmtucker**: Agent Transaction Control Protocol
+- [01:12:26]() - **CurtisLaird5**: C-Studio character interface
+- [01:17:13]() - **unl__cky**: Escapism, art generation AI
+- [01:19:17](