diff --git a/.env.development b/.env.development index f2c0b8483..18f715025 100644 --- a/.env.development +++ b/.env.development @@ -67,17 +67,9 @@ CHAT_DATABASE_URL=postgresql://manacore:devpassword@localhost:5432/chat DEV_BYPASS_AUTH=true DEV_USER_ID=00000000-0000-0000-0000-000000000000 -# Google Gemini API (primary - fast & cost-effective) -GOOGLE_GENAI_API_KEY=AIzaSyApsYQXxN6PuXpF8-7j6MonCACwS0ZxNRc - -# Azure OpenAI (fallback) -AZURE_OPENAI_ENDPOINT=https://memoroseopenai.openai.azure.com -AZURE_OPENAI_API_KEY=3082103c9b0d4270a795686ccaa89921 -AZURE_OPENAI_API_VERSION=2024-12-01-preview - -# Chat Supabase (if using Supabase for chat data) -CHAT_SUPABASE_URL=https://your-chat-project.supabase.co -CHAT_SUPABASE_ANON_KEY=your-supabase-anon-key +# OpenRouter API (all AI models via OpenRouter) +# Get your API key at https://openrouter.ai/keys +OPENROUTER_API_KEY=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 # ============================================ # MAERCHENZAUBER PROJECT diff --git a/doc_nils.md b/doc_nils.md deleted file mode 100644 index 80a69a281..000000000 --- a/doc_nils.md +++ /dev/null @@ -1,973 +0,0 @@ -why do i need to set it in envs? - -⏺ Great questions! Let me explain the Docker Compose deployment architecture: - -How This Setup Works - -1. Containers Are Always Running - -Yes! The Docker containers run continuously on your staging server: - -┌─────────────────────────────────────────┐ -│ Staging Server (Ubuntu) │ -│ │ -│ ┌─────────────────────────────────┐ │ -│ │ Docker Compose Network │ │ -│ │ │ │ -│ │ ┌──────────┐ ┌─────────────┐ │ │ -│ │ │ Postgres │ │ Redis │ │ │ -│ │ │ :5432 │ │ :6379 │ │ │ -│ │ └──────────┘ └─────────────┘ │ │ -│ │ │ │ -│ │ ┌──────────┐ ┌─────────────┐ │ │ -│ │ │ Auth │ │ Chat │ │ │ -│ │ │ :3001 │ │ :3002 │ │ │ -│ │ └──────────┘ └─────────────┘ │ │ -│ │ │ │ -│ │ ┌──────────┐ ┌─────────────┐ │ │ -│ │ │ ManaDeck │ │ Nginx │ │ │ -│ │ │ :3003 │ │ :80 :443 │ │ │ -│ │ └──────────┘ └─────────────┘ │ │ -│ └─────────────────────────────────┘ │ -└─────────────────────────────────────────┘ -↑ -│ Users access via HTTP/HTTPS -│ Nginx routes to backend services - -2. Data Persistence - YES! - -The postgres data is persistent across redeployments. Look at the -docker-compose.staging.yml: - -postgres: -volumes: - postgres_data:/var/lib/postgresql/data # ← Persistent volume - -volumes: -postgres_data: -name: manacore-postgres-staging # ← Named volume stored on server disk - -What happens on redeploy: - -1. docker compose pull - Downloads new backend images -2. docker compose up -d - Recreates containers with new code -3. Postgres volume stays untouched - Your data survives! - -# First deployment - -docker compose up -d - -# Creates: postgres_data volume → - -/var/lib/docker/volumes/manacore-postgres-staging - -# After redeploy (10 times later) - -docker compose up -d - -# Uses: SAME postgres_data volume → Your data is still there! - -3. Risks - -Current Risks: - -❌ No backups - If the server disk fails, all data is lost❌ No password set - -Postgres won't start without POSTGRES_PASSWORD❌ Single server - If it goes -down, everything is offline⚠️ Docker volume only - Data lives in -/var/lib/docker/volumes/, not easily inspectable - -Recommended Setup: - -# 1. Regular backups (add to server crontab) - -0 2 \* \* \* docker exec manacore-postgres-staging pg*dump -U postgres manacore > -/backup/db*$(date +\%Y\%m\%d).sql - -# 2. Or use Supabase for production data (you're already using it!) - -# Keep postgres in staging for testing, but production uses Supabase's managed - -database - -4. Why You Need POSTGRES_PASSWORD - -The Problem: - -Postgres refuses to start without a password for security reasons. When the -container starts for the first time, it initializes the database and needs to -set the postgres superuser password. - -How to Set It: - -⏺ Read(.github/workflows/cd-staging.yml) -⎿ Read 40 lines - -⏺ The workflow creates the .env file from GitHub Secrets. Here's what you need: - -How to Fix This - -Step 1: Set GitHub Secrets - -Go to your GitHub repository: -Settings → Secrets and variables → Actions → New repository secret - -You need to add these secrets: - -STAGING_POSTGRES_HOST=postgres -STAGING_POSTGRES_PORT=5432 -STAGING_POSTGRES_DB=manacore -STAGING_POSTGRES_USER=postgres -STAGING_POSTGRES_PASSWORD= - -STAGING_REDIS_HOST=redis -STAGING_REDIS_PORT=6379 -STAGING_REDIS_PASSWORD= - -STAGING_MANA_SERVICE_URL=http://mana-core-auth:3001 -STAGING_JWT_SECRET= -STAGING_JWT_PUBLIC_KEY= -STAGING_JWT_PRIVATE_KEY= - -STAGING_SUPABASE_URL= -STAGING_SUPABASE_ANON_KEY= -STAGING_SUPABASE_SERVICE_ROLE_KEY= - -STAGING_AZURE_OPENAI_ENDPOINT= -STAGING_AZURE_OPENAI_API_KEY= - -Step 2: For Testing NOW (Temporary) - -Since you're on the server already, manually create the .env file: - -# You're already here: ~/manacore-staging - -nano .env - -Add this content: - -# Database - -POSTGRES_HOST=postgres -POSTGRES_PORT=5432 -POSTGRES_DB=manacore -POSTGRES_USER=postgres -POSTGRES_PASSWORD=staging_password_123 # ← Use any password you want - -# Redis - -REDIS_HOST=redis -REDIS_PORT=6379 -REDIS_PASSWORD=redis_password_123 - -# Mana Core Auth - -MANA_SERVICE_URL=http://mana-core-auth:3001 -JWT_SECRET=your_jwt_secret_here -JWT_PUBLIC_KEY=your_public_key_here -JWT_PRIVATE_KEY=your_private_key_here - -# Supabase - -SUPABASE_URL=your_supabase_url -SUPABASE_ANON_KEY=your_supabase_anon_key -SUPABASE_SERVICE_ROLE_KEY=your_supabase_service_role_key - -# Azure OpenAI - -AZURE_OPENAI_ENDPOINT=your_azure_endpoint -AZURE_OPENAI_API_KEY=your_azure_api_key -AZURE_OPENAI_API_VERSION=2024-12-01-preview - -# Environment - -NODE_ENV=staging - -Save and exit (Ctrl+X, Y, Enter), then: - -# Restart postgres with the new password - -docker compose down postgres -docker compose up -d postgres - -# Check if it's healthy now - -docker compose ps -docker compose logs --tail=20 postgres - -Once it works, you should see: -✅ manacore-postgres-staging Up healthy - -Would you like me to help you generate secure passwords for the production -GitHub secrets? - -> Would you like me to help you generate secure passwords for the production -> GitHub secrets? -> yes write me an script which outputs this so i can copy -> paste it to github secrets - -⏺ Write(scripts/generate-staging-secrets.sh) -⎿ Wrote 138 lines to scripts/generate-staging-secrets.sh -#!/bin/bash # Generate Staging Secrets for GitHub # Run this script and copy the output to GitHub Secrets -set -e -echo "================================================" -echo " STAGING SECRETS GENERATOR" -echo "================================================" -… +128 lines (ctrl+o to expand) - -⏺ Bash(chmod +x /Users/wuesteon/dev/mana_universe/manacore-monorepo/scripts/generate- -staging-secrets.sh) -⎿ (No content) - -⏺ Bash(/Users/wuesteon/dev/mana_universe/manacore-monorepo/scripts/generate-staging-s -ecrets.sh) -⎿ ================================================ -STAGING SECRETS GENERATOR -================================================ -… +108 lines (ctrl+o to expand) - -⏺ Perfect! 🎉 The script has generated secure secrets for you. Here's what to do: - -Quick Copy Guide - -For each secret, go to GitHub → Settings → Secrets and variables → Actions → -New repository secret - -Database Secrets: - -Name: STAGING_POSTGRES_PASSWORD -Value: qUHBDzlc0fMntYPdT0LXwLHnvMUdUFfp - -Name: STAGING_REDIS_PASSWORD -Value: OxYL7XQgPAG4HjS29UFDYEmrkfk5kJoJ - -Name: STAGING_JWT_SECRET -Value: ayNMdsOOlAWIjduJ1aqPe9ep9DtCzvKwgmV0qGrct4WZyXJn1NMxrTIAa6EkiijMfuh5ZyGY -D0TcTGbkWF4g - -Name: STAGING_JWT_PRIVATE_KEY -Value: b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAAAMwAAAAtzc2gtZWQy -NTUxOQAAACDnbEhUMtYMTPhwKuqc8DV+J0i/oyWWJ+wWw7p6YwivmwAAAJjKVMoXylTKFwAAAAtzc2g -tZWQyNTUxOQAAACDnbEhUMtYMTPhwKuqc8DV+J0i/oyWWJ+wWw7p6YwivmwAAAEBjB/hkfSdozgvi/S -JsvbYxA2URarKSVkgVBwqbB1+yQedsSFQy1gxM+HAq6pzwNX4nSL+jJZYn7BbDunpjCK+bAAAAFG1hb -mFjb3JlLXN0YWdpbmctand0AQ== - -Simple Values (copy as-is): - -STAGING_POSTGRES_HOST = postgres -STAGING_POSTGRES_PORT = 5432 -STAGING_POSTGRES_DB = manacore -STAGING_POSTGRES_USER = postgres -STAGING_REDIS_HOST = redis -STAGING_REDIS_PORT = 6379 -STAGING_MANA_SERVICE_URL = http://mana-core-auth:3001 -STAGING_HOST = 46.224.108.214 -STAGING_USER = deploy - -SSH Key (get from your local machine): - -⏺ Write(scripts/get-ssh-key.sh) -⎿ Wrote 19 lines to scripts/get-ssh-key.sh - #!/bin/bash # Get SSH Private Key Content for GitHub Secret -echo "================================================" -echo " SSH PRIVATE KEY FOR STAGING_SSH_KEY" -echo "================================================" -echo "" -echo "Copy the ENTIRE output below (including BEGIN and END lines):" -echo "" -… +9 lines (ctrl+o to expand) - -⏺ Bash(chmod +x -/Users/wuesteon/dev/mana_universe/manacore-monorepo/scripts/get-ssh-key.sh && -/Users/wuesteon/dev/mana_universe/manacore-monorepo/scripts/get-ssh-key.s…) -⎿ ================================================ -SSH PRIVATE KEY FOR STAGING_SSH_KEY -================================================ -… +14 lines (ctrl+o to expand) - -⏺ Perfect! Now for the SSH key: - -Name: STAGING_SSH_KEY -Value: (Copy the entire content above, including -----BEGIN and -----END lines) - ---- - -Still Need to Fill Manually: - -You need to add your Supabase and Azure OpenAI credentials: - -1. STAGING_SUPABASE_URL - Get from your Supabase project settings -2. STAGING_SUPABASE_ANON_KEY - Get from Supabase project settings -3. STAGING_SUPABASE_SERVICE_ROLE_KEY - Get from Supabase project settings -4. STAGING_AZURE_OPENAI_ENDPOINT - Your Azure OpenAI endpoint -5. STAGING_AZURE_OPENAI_API_KEY - Your Azure OpenAI API key - ---- - -Quick Test Locally First - -Before setting all GitHub secrets, let's test with the generated passwords on -your server: - -# On your staging server (you're already SSH'd in) - -nano ~/manacore-staging/.env - -# Add/update just these lines: - -POSTGRES_PASSWORD=qUHBDzlc0fMntYPdT0LXwLHnvMUdUFfp -REDIS_PASSWORD=OxYL7XQgPAG4HjS29UFDYEmrkfk5kJoJ - -# Save and restart - -docker compose down -docker compose up -d - -# Check if postgres starts successfully - -docker compose logs --tail=20 postgres -docker compose ps - -Once postgres is healthy, you'll know the setup works! Then you can add all the -secrets to GitHub for CI/CD deployments. 🚀 - -Would you like me to also create a script that shows you where to get your -Supabase credentials? - -> do i need to add those -> -> STAGING_POSTGRES_HOST = postgres -> STAGING_POSTGRES_PORT = 5432 -> STAGING_POSTGRES_DB = manacore -> STAGING_POSTGRES_USER = postgres -> STAGING_REDIS_HOST = redis -> STAGING_REDIS_PORT = 6379 -> STAGING_MANA_SERVICE_URL = http://mana-core-auth:3001 -> STAGING_HOST = 46.224.108.214 -> STAGING_USER = deploy -> ? - -⏺ Yes! You need to add ALL of them to GitHub Secrets. - -Even though they're not "secret" values (like postgres, -5432), the workflow reads them from secrets.\*, so GitHub -Actions needs them defined. - -Looking at the workflow file -.github/workflows/cd-staging.yml: - -POSTGRES_HOST=${{ secrets.STAGING_POSTGRES_HOST }} - POSTGRES_PORT=${{ secrets.STAGING_POSTGRES_PORT }} -POSTGRES_DB=${{ secrets.STAGING_POSTGRES_DB }} - POSTGRES_USER=${{ secrets.STAGING_POSTGRES_USER }} -POSTGRES_PASSWORD=${{ secrets.STAGING_POSTGRES_PASSWORD }} - -REDIS_HOST=${{ secrets.STAGING_REDIS_HOST }} - REDIS_PORT=${{ secrets.STAGING_REDIS_PORT }} -REDIS_PASSWORD=${{ secrets.STAGING_REDIS_PASSWORD }} - -MANA_SERVICE_URL=${{ secrets.STAGING_MANA_SERVICE_URL }} - -And for SSH connection: -ssh ${{ secrets.STAGING_USER }}@${{ secrets.STAGING_HOST }} - -All of these must be GitHub secrets or the workflow will fail -with "secret not found" errors. - ---- - -Complete List of Secrets to Add: - -Required (17 total): - -✅ Database: - -- STAGING_POSTGRES_HOST = postgres -- STAGING_POSTGRES_PORT = 5432 -- STAGING_POSTGRES_DB = manacore -- STAGING_POSTGRES_USER = postgres -- STAGING_POSTGRES_PASSWORD = (generated password) - -✅ Redis: - -- STAGING_REDIS_HOST = redis -- STAGING_REDIS_PORT = 6379 -- STAGING_REDIS_PASSWORD = (generated password) - -✅ Mana Core Auth: - -- STAGING_MANA_SERVICE_URL = http://mana-core-auth:3001 -- STAGING_JWT_SECRET = (generated secret) -- STAGING_JWT_PUBLIC_KEY = (empty for now, or generated) -- STAGING_JWT_PRIVATE_KEY = (generated key) - -✅ Supabase (you fill these): - -- STAGING_SUPABASE_URL -- STAGING_SUPABASE_ANON_KEY -- STAGING_SUPABASE_SERVICE_ROLE_KEY - -✅ Azure OpenAI (you fill these): - -- STAGING_AZURE_OPENAI_ENDPOINT -- STAGING_AZURE_OPENAI_API_KEY - -✅ SSH: - -- STAGING_SSH_KEY = (your SSH private key) -- STAGING_HOST = 46.224.108.214 -- STAGING_USER = deploy - ---- - -Why even simple values? - -GitHub Actions doesn't distinguish between "secret" and -"non-secret" values. Everything passed via ${{ secrets.* }} -must be defined in GitHub Secrets, even if it's just postgres -or 5432. - -This is actually good for flexibility - you can change these -values (like switching to a different database name) without -modifying the workflow file. - -> cant i set them in the ci/cd file? - STAGING_POSTGRES_HOST = -> postgres - -- STAGING_POSTGRES_PORT = 5432 -- STAGING_POSTGRES_DB = manacore -- STAGING_POSTGRES_USER = postgres - -⏺ YES! Absolutely! That's actually a better practice. Only -truly sensitive values (passwords, API keys) should be GitHub -Secrets. - -Let me update the workflow to hardcode the non-sensitive -configuration values: - -⏺ Read(.github/workflows/cd-staging.yml) -⎿ Read 40 lines - -⏺ Update(.github/workflows/cd-staging.yml) -⎿ Updated .github/workflows/cd-staging.yml with 11 addition -and 11 removals -61 - 62 - name: Copy environment file -63 run: | -64 - # Create staging env file from - secrets -64 + # Create staging env file (mix + of hardcoded config and secrets) -65 cat > .env.staging << EOF -66 - # Database -67 - POSTGRES_HOST=${{ - - secrets.STAGING_POSTGRES_HOST }} - 68 - POSTGRES_PORT=${{ - - secrets.STAGING_POSTGRES_PORT }} -69 - POSTGRES_DB=${{ - - secrets.STAGING_POSTGRES_DB }} - 70 - POSTGRES_USER=${{ - - secrets.STAGING_POSTGRES_USER }} -66 + # Database - Configuration -67 + POSTGRES_HOST=postgres -68 + POSTGRES_PORT=5432 -69 + POSTGRES_DB=manacore -70 + POSTGRES_USER=postgres -71 POSTGRES_PASSWORD=${{ - secrets.STAGING_POSTGRES_PASSWORD }} - 72 - 73 - # Redis - 74 - REDIS_HOST=${{ - - secrets.STAGING_REDIS_HOST }} -75 - REDIS_PORT=${{ - - secrets.STAGING_REDIS_PORT }} - 73 + # Redis - Configuration - 74 + REDIS_HOST=redis - 75 + REDIS_PORT=6379 - 76 REDIS_PASSWORD=${{ - secrets.STAGING_REDIS_PASSWORD }} -77 - 78 - # Mana Core Auth -79 - MANA_SERVICE_URL=${{ - - secrets.STAGING_MANA_SERVICE_URL }} - 78 + # Mana Core Auth - Configuration - 79 + - + MANA_SERVICE_URL=http://mana-core-auth:3001 - 80 JWT_SECRET=${{ - secrets.STAGING_JWT_SECRET }} -81 JWT_PUBLIC_KEY=${{ - secrets.STAGING_JWT_PUBLIC_KEY }} - 82 JWT_PRIVATE_KEY=${{ - secrets.STAGING_JWT_PRIVATE_KEY }} - -⏺ Perfect! Now let's update the SSH connection parts too: - -⏺ Update(.github/workflows/cd-staging.yml) -⎿ Updated .github/workflows/cd-staging.yml with 7 additions -and 2 removals -39 ssh-private-key: ${{ - secrets.STAGING_SSH_KEY }} - 40 - 41 - name: Add staging server to known hosts - 42 + env: - 43 + STAGING_HOST: 46.224.108.214 - 44 run: | - 45 mkdir -p ~/.ssh - 46 - ssh-keyscan -H ${{ secrets. - - STAGING_HOST }} >> ~/.ssh/known_hosts - 46 + ssh-keyscan -H $STAGING_HOST - + >> ~/.ssh/known_hosts - 47 - 48 - name: Prepare deployment directory - 49 + env: - 50 + STAGING_USER: deploy - 51 + STAGING_HOST: 46.224.108.214 - 52 run: | - 53 - ssh ${{ secrets.STAGING_USER }}@$ - {{ secrets.STAGING_HOST }} << 'EOF' -53 + ssh $STAGING_USER@$STAGING_HOST + << 'EOF' -54 mkdir -p ~/manacore-staging -55 cd ~/manacore-staging -56 - -⏺ Update(.github/workflows/cd-staging.yml) -⎿ Updated .github/workflows/cd-staging.yml with 4 additions -and 1 removal -61 EOF -62 - 63 - name: Copy docker-compose file -64 + env: -65 + STAGING_USER: deploy -66 + STAGING_HOST: 46.224.108.214 -67 run: | -68 - scp docker-compose.staging.yml $ - - {{ secrets.STAGING_USER }}@${{ secrets. - - STAGING_HOST }} - :~/manacore-staging/docker-compose.yml -68 + scp docker-compose.staging.yml $ - + STAGING_USER@$STAGING_HOST + :~/manacore-staging/docker-compose.yml -69 - 70 - name: Copy environment file -71 run: | - -⏺ Update(.github/workflows/cd-staging.yml) -⎿ Updated .github/workflows/cd-staging.yml with 4 additions -and 1 removal -68 scp docker-compose.staging.yml -$STAGING_USER@$STAGING_HOST:~/manacore-staging/d -ocker-compose.yml -69 - 70 - name: Copy environment file -71 + env: -72 + STAGING_USER: deploy -73 + STAGING_HOST: 46.224.108.214 -74 run: | -75 # Create staging env file (mix of -hardcoded config and secrets) -76 cat > .env.staging << EOF -... -103 NODE_ENV=staging -104 EOF -105 - 106 - scp .env.staging ${{ secrets. - - STAGING_USER }}@${{ secrets.STAGING_HOST }} - :~/manacore-staging/.env -106 + scp .env.staging $STAGING_USER@$ + STAGING_HOST:~/manacore-staging/.env -107 rm .env.staging -108 - 109 - name: Login to GitHub Container -Registry on staging server - -⏺ Read(.github/workflows/cd-staging.yml) -⎿ Read 60 lines - -⏺ Update(.github/workflows/cd-staging.yml) -⎿ Updated .github/workflows/cd-staging.yml with 16 addition -and 4 removals -110 rm .env.staging -111 - 112 - name: Login to GitHub Container -Registry on staging server -113 + env: -114 + STAGING_USER: deploy -115 + STAGING_HOST: 46.224.108.214 -116 run: | -117 - ssh ${{ secrets.STAGING_USER }}@$ - {{ secrets.STAGING_HOST }} << EOF -117 + ssh $STAGING_USER@$STAGING_HOST + << EOF -118 # Login to ghcr.io with GitHub -token -119 echo "${{ secrets.GITHUB_TOKEN }}" - | docker login ghcr.io -u ${{ github.actor }} - --password-stdin - 120 EOF - 121 - 122 - name: Pull latest Docker images - 123 + env: - 124 + STAGING_USER: deploy - 125 + STAGING_HOST: 46.224.108.214 - 126 run: | - 127 - ssh ${{ secrets.STAGING_USER }}@$ - {{ secrets.STAGING_HOST }} << 'EOF' -127 + ssh $STAGING_USER@$STAGING_HOST + << 'EOF' -128 cd ~/manacore-staging -129 docker compose pull -130 EOF -131 - 132 - name: Deploy services -133 + env: -134 + STAGING_USER: deploy -135 + STAGING_HOST: 46.224.108.214 -136 run: | -137 SERVICE="${{ - github.event.inputs.service || 'all' }}" - 138 - 139 - ssh ${{ secrets.STAGING_USER }}@$ - {{ secrets.STAGING_HOST }} << EOF -139 + ssh $STAGING_USER@$STAGING_HOST + << EOF -140 cd ~/manacore-staging -141 - 142 # Determine which services to -deploy -... -148 EOF -149 - 150 - name: Run health checks -151 + env: -152 + STAGING_USER: deploy -153 + STAGING_HOST: 46.224.108.214 -154 run: | -155 - ssh ${{ secrets.STAGING_USER }}@$ - {{ secrets.STAGING_HOST }} << 'EOF' -155 + ssh $STAGING_USER@$STAGING_HOST + << 'EOF' -156 cd ~/manacore-staging -157 - 158 # Wait for services to fully start - -⏺ Read(.github/workflows/cd-staging.yml) -⎿ Read 15 lines - -⏺ Update(.github/workflows/cd-staging.yml) -⎿ Updated .github/workflows/cd-staging.yml with 4 additions -and 1 removal -212 EOF -213 - 214 - name: Run database migrations -215 + env: -216 + STAGING_USER: deploy -217 + STAGING_HOST: 46.224.108.214 -218 run: | -219 # Run migrations for services that -need them -220 - ssh ${{ secrets.STAGING_USER }}@$ - {{ secrets.STAGING_HOST }} << 'EOF' -220 + ssh $STAGING_USER@$STAGING_HOST + << 'EOF' -221 cd ~/manacore-staging -222 - 223 # Mana Core Auth migrations - -⏺ Perfect! Now let me update the secrets generation script to -reflect the reduced list: - -⏺ Write(scripts/generate-staging-secrets.sh) -⎿ Updated scripts/generate-staging-secrets.sh with 25 - additions and 38 removals -11 echo "" -12 echo "Copy each value below to GitHub Settings -→ Secrets and variables → Actions" -13 echo "" -14 + echo "Note: Configuration values (host, ports, + etc.) are now hardcoded in the workflow" -15 + echo "Only sensitive values (passwords, keys) + need to be added as secrets" -16 + echo "" -17 echo "========================================= -=======" -18 echo "" -19 - ... -32 - 33 # Output all secrets in GitHub format -34 echo "# -============================================" -35 - echo "# DATABASE SECRETS" -35 + echo "# DATABASE SECRETS (2 secrets)" -36 echo "# -============================================" -37 echo "" -38 - echo "STAGING_POSTGRES_HOST" -39 - echo "postgres" -40 - echo "" -41 - echo "STAGING_POSTGRES_PORT" -42 - echo "5432" -43 - echo "" -44 - echo "STAGING_POSTGRES_DB" -45 - echo "manacore" -46 - echo "" -47 - echo "STAGING_POSTGRES_USER" -48 - echo "postgres" -49 - echo "" -38 echo "STAGING_POSTGRES_PASSWORD" -39 echo "$POSTGRES_PASSWORD" - 40 echo "" - 41 - 42 echo "# - ============================================" - 43 - echo "# REDIS SECRETS" - 43 + echo "# REDIS SECRETS (1 secret)" - 44 echo "# - ============================================" - 45 echo "" - 46 - echo "STAGING_REDIS_HOST" - 47 - echo "redis" - 48 - echo "" - 49 - echo "STAGING_REDIS_PORT" - 50 - echo "6379" - 51 - echo "" - 46 echo "STAGING_REDIS_PASSWORD" - 47 echo "$REDIS_PASSWORD" -48 echo "" -49 - 50 echo "# -============================================" -51 - echo "# MANA CORE AUTH SECRETS" -51 + echo "# MANA CORE AUTH SECRETS (3 secrets)" -52 echo "# -============================================" -53 echo "" -54 - echo "STAGING_MANA_SERVICE_URL" -55 - echo "http://mana-core-auth:3001" -56 - echo "" -54 echo "STAGING_JWT_SECRET" -55 echo "$JWT_SECRET" -56 echo "" -... -83 echo "" -84 - 85 echo "# -============================================" -86 - echo "# SUPABASE SECRETS (Fill these manually)" -86 + echo "# SUPABASE SECRETS (Fill these manually + - 3 secrets)" -87 echo "# -============================================" -88 echo "" -89 echo "STAGING_SUPABASE_URL" -... -97 echo "" -98 - 99 echo "# -============================================" -100 - echo "# AZURE OPENAI SECRETS (Fill these - manually)" -100 + echo "# AZURE OPENAI SECRETS (Fill these + manually - 2 secrets)" -101 echo "# -============================================" -102 echo "" -103 echo "STAGING_AZURE_OPENAI_ENDPOINT" -... -108 echo "" -109 - 110 echo "# -============================================" -111 - echo "# SSH DEPLOYMENT SECRETS (Fill these - manually)" -111 + echo "# SSH DEPLOYMENT SECRETS (Fill these + manually - 1 secret)" -112 echo "# -============================================" -113 echo "" -114 echo "STAGING_SSH_KEY" -115 - echo "Contents of: ~/.ssh/hetzner_deploy_key" -115 + echo "Run: cat ~/.ssh/hetzner_deploy_key" -116 + echo "(Copy the ENTIRE output including + -----BEGIN and -----END lines)" -117 echo "" -118 - echo "STAGING_HOST" -119 - echo "46.224.108.214" -120 - echo "" -121 - echo "STAGING_USER" -122 - echo "deploy" -123 - echo "" -118 - 119 echo "======================================== -========" -120 - echo " DONE!" -120 + echo " SUMMARY" -121 echo "======================================== -========" -122 echo "" -123 - echo "IMPORTANT: Save these values securely!" -124 - echo "You will need them to add to GitHub - Secrets." -123 + echo "Total secrets to add: 12" -124 + echo " - Auto-generated: 6 (passwords, JWT + keys)" -125 + echo " - Manual: 6 (Supabase, Azure, SSH + key)" -126 echo "" -127 + echo "The following are now HARDCODED in the + workflow:" -128 + echo " - POSTGRES_HOST, POSTGRES_PORT, + POSTGRES_DB, POSTGRES_USER" -129 + echo " - REDIS_HOST, REDIS_PORT" -130 + echo " - MANA_SERVICE_URL" -131 + echo " - STAGING_HOST (46.224.108.214)" -132 + echo " - STAGING_USER (deploy)" -133 + echo "" -134 + echo "======================================== + ========" -135 + echo "" -136 echo "Next steps:" -137 echo "1. Go to: https://github.com/YOUR_ORG/ma -nacore-monorepo/settings/secrets/actions" -138 echo "2. Click 'New repository secret' for -each value above" -139 echo "3. Copy the secret name (e.g., -STAGING_POSTGRES_PASSWORD)" -140 echo "4. Copy the secret value (the line below -the name)" -141 - echo "5. Fill in Supabase and Azure - values manually" -141 + echo "5. Fill in Supabase, Azure, and SSH key + values manually" -142 echo "" - -⏺ Perfect! Now let's commit these workflow improvements: - -⏺ Bash(git add .github/workflows/cd-staging.yml -scripts/generate-staging-secrets.sh scripts/get-ssh-key.sh) -⎿ (No content) - -⏺ Bash(git commit -m "♻️ refactor(cd): hardcode non-sensitive -config in staging workflow…) -⎿ [main 234703a1] ♻️ refactor(cd): hardcode non-sensitive co -nfig in staging workflow -3 files changed, 188 insertions(+), 20 deletions(-) -… +690 lines (ctrl+o to expand) - -⏺ Bash(git push) -⎿ To https://github.com/Memo-2023/manacore-monorepo.git -cf2b6aaa..234703a1 main -> main - -⏺ Perfect! All changes committed and pushed to GitHub. 🎉 - -Summary of What We Did - -Reduced GitHub Secrets Requirements: 21 → 12 - -Hardcoded in workflow (no longer secrets): - -- POSTGRES_HOST=postgres -- POSTGRES_PORT=5432 -- POSTGRES_DB=manacore -- POSTGRES_USER=postgres -- REDIS_HOST=redis -- REDIS_PORT=6379 -- MANA_SERVICE_URL=http://mana-core-auth:3001 -- STAGING_HOST=46.224.108.214 -- STAGING_USER=deploy - -Still need as GitHub Secrets (12 total): - -1. Auto-generated (6): - - STAGING_POSTGRES_PASSWORD - - STAGING_REDIS_PASSWORD - - STAGING_JWT_SECRET - - STAGING_JWT_PUBLIC_KEY - - STAGING_JWT_PRIVATE_KEY - - STAGING_SSH_KEY - -2. You provide manually (6): - - STAGING_SUPABASE_URL - - STAGING_SUPABASE_ANON_KEY - - STAGING_SUPABASE_SERVICE_ROLE_KEY - - STAGING_AZURE_OPENAI_ENDPOINT - - STAGING_AZURE_OPENAI_API_KEY - ---- - -Next Steps - -1. Generate secrets (auto-generated ones are already shown - earlier in this chat) -2. Add them to GitHub at: https://github.com/Memo-2023/manaco - re-monorepo/settings/secrets/actions -3. Add your Supabase and Azure credentials manually -4. Test the staging deployment - trigger a manual workflow - run - -Would you like me to re-run the secrets generator script to -get fresh values, or shall we now test the postgres setup on -your server? - -> which secrets am i missing: Repository secrets -> Name - -Last updated -sort ascending -Actions -STAGING_HOST -2 days ago -STAGING_JWT_PRIVATE_KEY -4 minutes ago -STAGING_JWT_SECRET -6 minutes ago -STAGING_POSTGRES_HOST -4 minutes ago -STAGING_POSTGRES_PASSWORD -6 minutes ago -STAGING_POSTGRES_PORT -4 minutes ago -STAGING_REDIS_PASSWORD -6 minutes ago -STAGING_SSH_KEY -2 days ago -STAGING_USER - -⏺ Looking at your secrets, you're missing 6 required secrets: - -Missing Secrets (6): - -1. JWT Public Key (auto-generated) - -STAGING_JWT_PUBLIC_KEY -This was generated earlier in our conversation (see the -output from the script). If you need a new one, I can -regenerate it. - -2-4. Supabase (you need to provide these): - -STAGING_SUPABASE_URL -STAGING_SUPABASE_ANON_KEY -STAGING_SUPABASE_SERVICE_ROLE_KEY -Get these from your Supabase project dashboard → Settings → -API - -5-6. Azure OpenAI (you need to provide these): - -STAGING_AZURE_OPENAI_ENDPOINT -STAGING_AZURE_OPENAI_API_KEY -Get these from your Azure portal - ---- - -Can Be Deleted (4 secrets no longer needed): - -These are now hardcoded in the workflow, so you can safely -delete them from GitHub: - -- ❌ STAGING_HOST (now hardcoded as 46.224.108.214) -- ❌ STAGING_POSTGRES_HOST (now hardcoded as postgres) -- ❌ STAGING_POSTGRES_PORT (now hardcoded as 5432) -- ❌ STAGING_USER (now hardcoded as deploy) - ---- - -Quick Action Items: - -1. Add STAGING_JWT_PUBLIC_KEY - The value from earlier was - empty. Let me regenerate a proper one for you: - -⏺ Bash(/Users/wuesteon/dev/mana_universe/manacore-monorepo/scripts/ -generate-staging-secrets.sh | grep -A1 -"STAGING_JWT_PUBLIC_KEY") -⎿ STAGING_JWT_PUBLIC_KEY - -⏺ The JWT public key appears to be empty (which might be fine -for EdDSA where the public key is derived from the private -key). However, since the workflow expects it, let's add it as -an empty string or check if you need a proper key pair. - -For now, add these secrets: - -2. Add Supabase credentials: - Go to your Supabase project → Settings → API: - STAGING_SUPABASE_URL = https://YOUR_PROJECT.supabase.co - STAGING_SUPABASE_ANON_KEY = eyJhbGciOiJI... (your anon key) - STAGING_SUPABASE_SERVICE_ROLE_KEY = eyJhbGciOiJI... (your - service role key) - -3. Add Azure OpenAI credentials: - Go to Azure portal → Your OpenAI resource: - STAGING_AZURE_OPENAI_ENDPOINT = - https://YOUR_RESOURCE.openai.azure.com/ - STAGING_AZURE_OPENAI_API_KEY = your-api-key-here - -4. Add empty JWT_PUBLIC_KEY (for now): - STAGING_JWT_PUBLIC_KEY = (leave empty or add a space) - -Once you add these 6 secrets, you'll have all 12 required for -the deployment! Do you have access to your Supabase and -Azure credentials? diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 9b4a4acd9..35e5efdaa 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -116,7 +116,7 @@ importers: devDependencies: '@nestjs/cli': specifier: ^10.4.9 - version: 10.4.9(esbuild@0.19.12) + version: 10.4.9(esbuild@0.27.0) '@nestjs/schematics': specifier: ^10.2.3 version: 10.2.3(chokidar@3.6.0)(typescript@5.9.3) @@ -149,7 +149,7 @@ importers: version: 0.5.21 ts-loader: specifier: ^9.5.1 - version: 9.5.4(typescript@5.9.3)(webpack@5.97.1(esbuild@0.19.12)) + version: 9.5.4(typescript@5.9.3)(webpack@5.100.2(esbuild@0.27.0)) ts-node: specifier: ^10.9.2 version: 10.9.2(@types/node@22.19.1)(typescript@5.9.3) @@ -173,14 +173,14 @@ importers: version: link:../../../../packages/shared-landing-ui astro: specifier: ^5.16.0 - version: 5.16.0(@netlify/blobs@10.4.1)(@types/node@20.19.25)(ioredis@5.8.2)(jiti@1.21.7)(lightningcss@1.30.2)(rollup@4.53.3)(terser@5.44.1)(tsx@4.20.6)(typescript@5.9.3)(yaml@2.8.1) + version: 5.16.0(@netlify/blobs@10.4.1)(@types/node@20.19.25)(ioredis@5.8.2)(jiti@2.6.1)(lightningcss@1.30.2)(rollup@4.53.3)(terser@5.44.1)(tsx@4.20.6)(typescript@5.9.3)(yaml@2.8.1) typescript: specifier: ^5.9.2 version: 5.9.3 devDependencies: '@astrojs/tailwind': specifier: ^6.0.2 - version: 6.0.2(astro@5.16.0(@netlify/blobs@10.4.1)(@types/node@20.19.25)(ioredis@5.8.2)(jiti@1.21.7)(lightningcss@1.30.2)(rollup@4.53.3)(terser@5.44.1)(tsx@4.20.6)(typescript@5.9.3)(yaml@2.8.1))(tailwindcss@3.4.18(tsx@4.20.6)(yaml@2.8.1))(ts-node@10.9.2(@types/node@20.19.25)(typescript@5.9.3)) + version: 6.0.2(astro@5.16.0(@netlify/blobs@10.4.1)(@types/node@20.19.25)(ioredis@5.8.2)(jiti@2.6.1)(lightningcss@1.30.2)(rollup@4.53.3)(terser@5.44.1)(tsx@4.20.6)(typescript@5.9.3)(yaml@2.8.1))(tailwindcss@3.4.18(tsx@4.20.6)(yaml@2.8.1))(ts-node@10.9.2(@types/node@20.19.25)(typescript@5.9.3)) '@tailwindcss/typography': specifier: ^0.5.18 version: 0.5.19(tailwindcss@3.4.18(tsx@4.20.6)(yaml@2.8.1)) @@ -189,13 +189,13 @@ importers: version: 20.19.25 eslint: specifier: ^9.0.0 - version: 9.39.1(jiti@1.21.7) + version: 9.39.1(jiti@2.6.1) eslint-config-prettier: specifier: ^9.1.0 - version: 9.1.2(eslint@9.39.1(jiti@1.21.7)) + version: 9.1.2(eslint@9.39.1(jiti@2.6.1)) eslint-plugin-astro: specifier: ^1.0.0 - version: 1.5.0(eslint@9.39.1(jiti@1.21.7)) + version: 1.5.0(eslint@9.39.1(jiti@2.6.1)) prettier: specifier: ^3.6.2 version: 3.6.2 @@ -343,9 +343,6 @@ importers: apps/chat/apps/backend: dependencies: - '@google/generative-ai': - specifier: ^0.24.1 - version: 0.24.1 '@manacore/shared-errors': specifier: workspace:* version: link:../../../../packages/shared-errors @@ -394,7 +391,7 @@ importers: devDependencies: '@nestjs/cli': specifier: ^10.4.9 - version: 10.4.9(esbuild@0.27.0) + version: 10.4.9(esbuild@0.19.12) '@nestjs/schematics': specifier: ^10.2.3 version: 10.2.3(chokidar@3.6.0)(typescript@5.9.3) @@ -427,7 +424,7 @@ importers: version: 0.5.21 ts-loader: specifier: ^9.5.1 - version: 9.5.4(typescript@5.9.3)(webpack@5.100.2(esbuild@0.27.0)) + version: 9.5.4(typescript@5.9.3)(webpack@5.97.1(esbuild@0.19.12)) ts-node: specifier: ^10.9.2 version: 10.9.2(@types/node@22.19.1)(typescript@5.9.3) @@ -555,19 +552,19 @@ importers: version: 18.3.27 '@typescript-eslint/eslint-plugin': specifier: ^7.7.0 - version: 7.18.0(@typescript-eslint/parser@7.18.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.3.3))(eslint@9.39.1(jiti@2.6.1))(typescript@5.3.3) + version: 7.18.0(@typescript-eslint/parser@7.18.0(eslint@9.39.1(jiti@1.21.7))(typescript@5.3.3))(eslint@9.39.1(jiti@1.21.7))(typescript@5.3.3) '@typescript-eslint/parser': specifier: ^7.7.0 - version: 7.18.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.3.3) + version: 7.18.0(eslint@9.39.1(jiti@1.21.7))(typescript@5.3.3) dotenv: specifier: ^16.4.7 version: 16.6.1 eslint: specifier: ^9.39.1 - version: 9.39.1(jiti@2.6.1) + version: 9.39.1(jiti@1.21.7) eslint-config-universe: specifier: ^12.0.1 - version: 12.1.0(@types/eslint@9.6.1)(eslint@9.39.1(jiti@2.6.1))(prettier@3.6.2)(typescript@5.3.3) + version: 12.1.0(@types/eslint@9.6.1)(eslint@9.39.1(jiti@1.21.7))(prettier@3.6.2)(typescript@5.3.3) prettier: specifier: ^3.2.5 version: 3.6.2 @@ -6788,7 +6785,7 @@ packages: '@expo/bunyan@4.0.1': resolution: {integrity: sha512-+Lla7nYSiHZirgK+U/uYzsLv/X+HaJienbD5AKX1UQZHYfWaP+9uuQluRB4GrEVWF0GZ7vEVp/jzaOT9k/SQlg==} - engines: {'0': node >=0.10.0} + engines: {node: '>=0.10.0'} '@expo/cli@0.22.26': resolution: {integrity: sha512-I689wc8Fn/AX7aUGiwrh3HnssiORMJtR2fpksX+JIe8Cj/EDleblYMSwRPd0025wrwOV9UN1KM/RuEt/QjCS3Q==} @@ -19978,16 +19975,6 @@ snapshots: transitivePeerDependencies: - ts-node - '@astrojs/tailwind@6.0.2(astro@5.16.0(@netlify/blobs@10.4.1)(@types/node@20.19.25)(ioredis@5.8.2)(jiti@1.21.7)(lightningcss@1.30.2)(rollup@4.53.3)(terser@5.44.1)(tsx@4.20.6)(typescript@5.9.3)(yaml@2.8.1))(tailwindcss@3.4.18(tsx@4.20.6)(yaml@2.8.1))(ts-node@10.9.2(@types/node@20.19.25)(typescript@5.9.3))': - dependencies: - astro: 5.16.0(@netlify/blobs@10.4.1)(@types/node@20.19.25)(ioredis@5.8.2)(jiti@1.21.7)(lightningcss@1.30.2)(rollup@4.53.3)(terser@5.44.1)(tsx@4.20.6)(typescript@5.9.3)(yaml@2.8.1) - autoprefixer: 10.4.22(postcss@8.5.6) - postcss: 8.5.6 - postcss-load-config: 4.0.2(postcss@8.5.6)(ts-node@10.9.2(@types/node@20.19.25)(typescript@5.9.3)) - tailwindcss: 3.4.18(tsx@4.20.6)(yaml@2.8.1) - transitivePeerDependencies: - - ts-node - '@astrojs/tailwind@6.0.2(astro@5.16.0(@netlify/blobs@10.4.1)(@types/node@20.19.25)(ioredis@5.8.2)(jiti@2.6.1)(lightningcss@1.30.2)(rollup@4.53.3)(terser@5.44.1)(tsx@4.20.6)(typescript@5.9.3)(yaml@2.8.1))(tailwindcss@3.4.18(tsx@4.20.6)(yaml@2.8.1))(ts-node@10.9.2(@types/node@20.19.25)(typescript@5.9.3))': dependencies: astro: 5.16.0(@netlify/blobs@10.4.1)(@types/node@20.19.25)(ioredis@5.8.2)(jiti@2.6.1)(lightningcss@1.30.2)(rollup@4.53.3)(terser@5.44.1)(tsx@4.20.6)(typescript@5.9.3)(yaml@2.8.1) @@ -22501,7 +22488,7 @@ snapshots: wrap-ansi: 7.0.0 ws: 8.18.3 optionalDependencies: - expo-router: 6.0.15(5e7ih2rh6mb55wruwvjljgzihq) + expo-router: 6.0.15(jiucxy5ca3jdtbnulaxuc46jdq) react-native: 0.81.4(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.1.0) transitivePeerDependencies: - '@modelcontextprotocol/sdk' @@ -27376,6 +27363,19 @@ snapshots: react-test-renderer: 19.1.0(react@19.1.0) redent: 3.0.0 + '@testing-library/react-native@13.3.3(jest@30.2.0(@types/node@20.19.25)(esbuild-register@3.6.0(esbuild@0.27.0)))(react-native@0.81.4(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.1.0))(react-test-renderer@19.1.0(react@19.1.0))(react@19.1.0)': + dependencies: + jest-matcher-utils: 30.2.0 + picocolors: 1.1.1 + pretty-format: 30.2.0 + react: 19.1.0 + react-native: 0.81.4(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.1.0) + react-test-renderer: 19.1.0(react@19.1.0) + redent: 3.0.0 + optionalDependencies: + jest: 30.2.0(@types/node@20.19.25)(esbuild-register@3.6.0(esbuild@0.27.0)) + optional: true + '@testing-library/react-native@13.3.3(jest@30.2.0(@types/node@22.19.1)(esbuild-register@3.6.0(esbuild@0.19.12))(ts-node@10.9.2(@types/node@22.19.1)(typescript@5.9.3)))(react-native@0.81.5(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.1.0))(react-test-renderer@19.1.0(react@19.1.0))(react@19.1.0)': dependencies: jest-matcher-utils: 30.2.0 @@ -27920,16 +27920,16 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.3.3))(eslint@9.39.1(jiti@2.6.1))(typescript@5.3.3)': + '@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@9.39.1(jiti@1.21.7))(typescript@5.3.3))(eslint@9.39.1(jiti@1.21.7))(typescript@5.3.3)': dependencies: '@eslint-community/regexpp': 4.12.2 - '@typescript-eslint/parser': 6.21.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.3.3) + '@typescript-eslint/parser': 6.21.0(eslint@9.39.1(jiti@1.21.7))(typescript@5.3.3) '@typescript-eslint/scope-manager': 6.21.0 - '@typescript-eslint/type-utils': 6.21.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.3.3) - '@typescript-eslint/utils': 6.21.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.3.3) + '@typescript-eslint/type-utils': 6.21.0(eslint@9.39.1(jiti@1.21.7))(typescript@5.3.3) + '@typescript-eslint/utils': 6.21.0(eslint@9.39.1(jiti@1.21.7))(typescript@5.3.3) '@typescript-eslint/visitor-keys': 6.21.0 debug: 4.4.3 - eslint: 9.39.1(jiti@2.6.1) + eslint: 9.39.1(jiti@1.21.7) graphemer: 1.4.0 ignore: 5.3.2 natural-compare: 1.4.0 @@ -27978,15 +27978,15 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/eslint-plugin@7.18.0(@typescript-eslint/parser@7.18.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.3.3))(eslint@9.39.1(jiti@2.6.1))(typescript@5.3.3)': + '@typescript-eslint/eslint-plugin@7.18.0(@typescript-eslint/parser@7.18.0(eslint@9.39.1(jiti@1.21.7))(typescript@5.3.3))(eslint@9.39.1(jiti@1.21.7))(typescript@5.3.3)': dependencies: '@eslint-community/regexpp': 4.12.2 - '@typescript-eslint/parser': 7.18.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.3.3) + '@typescript-eslint/parser': 7.18.0(eslint@9.39.1(jiti@1.21.7))(typescript@5.3.3) '@typescript-eslint/scope-manager': 7.18.0 - '@typescript-eslint/type-utils': 7.18.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.3.3) - '@typescript-eslint/utils': 7.18.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.3.3) + '@typescript-eslint/type-utils': 7.18.0(eslint@9.39.1(jiti@1.21.7))(typescript@5.3.3) + '@typescript-eslint/utils': 7.18.0(eslint@9.39.1(jiti@1.21.7))(typescript@5.3.3) '@typescript-eslint/visitor-keys': 7.18.0 - eslint: 9.39.1(jiti@2.6.1) + eslint: 9.39.1(jiti@1.21.7) graphemer: 1.4.0 ignore: 5.3.2 natural-compare: 1.4.0 @@ -28078,14 +28078,14 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@6.21.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.3.3)': + '@typescript-eslint/parser@6.21.0(eslint@9.39.1(jiti@1.21.7))(typescript@5.3.3)': dependencies: '@typescript-eslint/scope-manager': 6.21.0 '@typescript-eslint/types': 6.21.0 '@typescript-eslint/typescript-estree': 6.21.0(typescript@5.3.3) '@typescript-eslint/visitor-keys': 6.21.0 debug: 4.4.3 - eslint: 9.39.1(jiti@2.6.1) + eslint: 9.39.1(jiti@1.21.7) optionalDependencies: typescript: 5.3.3 transitivePeerDependencies: @@ -28117,14 +28117,14 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@7.18.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.3.3)': + '@typescript-eslint/parser@7.18.0(eslint@9.39.1(jiti@1.21.7))(typescript@5.3.3)': dependencies: '@typescript-eslint/scope-manager': 7.18.0 '@typescript-eslint/types': 7.18.0 '@typescript-eslint/typescript-estree': 7.18.0(typescript@5.3.3) '@typescript-eslint/visitor-keys': 7.18.0 debug: 4.4.3 - eslint: 9.39.1(jiti@2.6.1) + eslint: 9.39.1(jiti@1.21.7) optionalDependencies: typescript: 5.3.3 transitivePeerDependencies: @@ -28250,12 +28250,12 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/type-utils@6.21.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.3.3)': + '@typescript-eslint/type-utils@6.21.0(eslint@9.39.1(jiti@1.21.7))(typescript@5.3.3)': dependencies: '@typescript-eslint/typescript-estree': 6.21.0(typescript@5.3.3) - '@typescript-eslint/utils': 6.21.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.3.3) + '@typescript-eslint/utils': 6.21.0(eslint@9.39.1(jiti@1.21.7))(typescript@5.3.3) debug: 4.4.3 - eslint: 9.39.1(jiti@2.6.1) + eslint: 9.39.1(jiti@1.21.7) ts-api-utils: 1.4.3(typescript@5.3.3) optionalDependencies: typescript: 5.3.3 @@ -28286,12 +28286,12 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/type-utils@7.18.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.3.3)': + '@typescript-eslint/type-utils@7.18.0(eslint@9.39.1(jiti@1.21.7))(typescript@5.3.3)': dependencies: '@typescript-eslint/typescript-estree': 7.18.0(typescript@5.3.3) - '@typescript-eslint/utils': 7.18.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.3.3) + '@typescript-eslint/utils': 7.18.0(eslint@9.39.1(jiti@1.21.7))(typescript@5.3.3) debug: 4.4.3 - eslint: 9.39.1(jiti@2.6.1) + eslint: 9.39.1(jiti@1.21.7) ts-api-utils: 1.4.3(typescript@5.3.3) optionalDependencies: typescript: 5.3.3 @@ -28473,15 +28473,15 @@ snapshots: - supports-color - typescript - '@typescript-eslint/utils@6.21.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.3.3)': + '@typescript-eslint/utils@6.21.0(eslint@9.39.1(jiti@1.21.7))(typescript@5.3.3)': dependencies: - '@eslint-community/eslint-utils': 4.9.0(eslint@9.39.1(jiti@2.6.1)) + '@eslint-community/eslint-utils': 4.9.0(eslint@9.39.1(jiti@1.21.7)) '@types/json-schema': 7.0.15 '@types/semver': 7.7.1 '@typescript-eslint/scope-manager': 6.21.0 '@typescript-eslint/types': 6.21.0 '@typescript-eslint/typescript-estree': 6.21.0(typescript@5.3.3) - eslint: 9.39.1(jiti@2.6.1) + eslint: 9.39.1(jiti@1.21.7) semver: 7.7.3 transitivePeerDependencies: - supports-color @@ -28512,13 +28512,13 @@ snapshots: - supports-color - typescript - '@typescript-eslint/utils@7.18.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.3.3)': + '@typescript-eslint/utils@7.18.0(eslint@9.39.1(jiti@1.21.7))(typescript@5.3.3)': dependencies: - '@eslint-community/eslint-utils': 4.9.0(eslint@9.39.1(jiti@2.6.1)) + '@eslint-community/eslint-utils': 4.9.0(eslint@9.39.1(jiti@1.21.7)) '@typescript-eslint/scope-manager': 7.18.0 '@typescript-eslint/types': 7.18.0 '@typescript-eslint/typescript-estree': 7.18.0(typescript@5.3.3) - eslint: 9.39.1(jiti@2.6.1) + eslint: 9.39.1(jiti@1.21.7) transitivePeerDependencies: - supports-color - typescript @@ -29319,108 +29319,6 @@ snapshots: transitivePeerDependencies: - supports-color - astro@5.16.0(@netlify/blobs@10.4.1)(@types/node@20.19.25)(ioredis@5.8.2)(jiti@1.21.7)(lightningcss@1.30.2)(rollup@4.53.3)(terser@5.44.1)(tsx@4.20.6)(typescript@5.9.3)(yaml@2.8.1): - dependencies: - '@astrojs/compiler': 2.13.0 - '@astrojs/internal-helpers': 0.7.5 - '@astrojs/markdown-remark': 6.3.9 - '@astrojs/telemetry': 3.3.0 - '@capsizecss/unpack': 3.0.1 - '@oslojs/encoding': 1.1.0 - '@rollup/pluginutils': 5.3.0(rollup@4.53.3) - acorn: 8.15.0 - aria-query: 5.3.2 - axobject-query: 4.1.0 - boxen: 8.0.1 - ci-info: 4.3.1 - clsx: 2.1.1 - common-ancestor-path: 1.0.1 - cookie: 1.1.0 - cssesc: 3.0.0 - debug: 4.4.3 - deterministic-object-hash: 2.0.2 - devalue: 5.5.0 - diff: 5.2.0 - dlv: 1.1.3 - dset: 3.1.4 - es-module-lexer: 1.7.0 - esbuild: 0.25.12 - estree-walker: 3.0.3 - flattie: 1.1.1 - fontace: 0.3.1 - github-slugger: 2.0.0 - html-escaper: 3.0.3 - http-cache-semantics: 4.2.0 - import-meta-resolve: 4.2.0 - js-yaml: 4.1.1 - magic-string: 0.30.21 - magicast: 0.5.1 - mrmime: 2.0.1 - neotraverse: 0.6.18 - p-limit: 6.2.0 - p-queue: 8.1.1 - package-manager-detector: 1.5.0 - piccolore: 0.1.3 - picomatch: 4.0.3 - prompts: 2.4.2 - rehype: 13.0.2 - semver: 7.7.3 - shiki: 3.15.0 - smol-toml: 1.5.2 - svgo: 4.0.0 - tinyexec: 1.0.2 - tinyglobby: 0.2.15 - tsconfck: 3.1.6(typescript@5.9.3) - ultrahtml: 1.6.0 - unifont: 0.6.0 - unist-util-visit: 5.0.0 - unstorage: 1.17.3(@netlify/blobs@10.4.1)(ioredis@5.8.2) - vfile: 6.0.3 - vite: 6.4.1(@types/node@20.19.25)(jiti@1.21.7)(lightningcss@1.30.2)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1) - vitefu: 1.1.1(vite@6.4.1(@types/node@20.19.25)(jiti@1.21.7)(lightningcss@1.30.2)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1)) - xxhash-wasm: 1.1.0 - yargs-parser: 21.1.1 - yocto-spinner: 0.2.3 - zod: 3.25.76 - zod-to-json-schema: 3.25.0(zod@3.25.76) - zod-to-ts: 1.2.0(typescript@5.9.3)(zod@3.25.76) - optionalDependencies: - sharp: 0.34.5 - transitivePeerDependencies: - - '@azure/app-configuration' - - '@azure/cosmos' - - '@azure/data-tables' - - '@azure/identity' - - '@azure/keyvault-secrets' - - '@azure/storage-blob' - - '@capacitor/preferences' - - '@deno/kv' - - '@netlify/blobs' - - '@planetscale/database' - - '@types/node' - - '@upstash/redis' - - '@vercel/blob' - - '@vercel/functions' - - '@vercel/kv' - - aws4fetch - - db0 - - idb-keyval - - ioredis - - jiti - - less - - lightningcss - - rollup - - sass - - sass-embedded - - stylus - - sugarss - - supports-color - - terser - - tsx - - typescript - - uploadthing - - yaml - astro@5.16.0(@netlify/blobs@10.4.1)(@types/node@20.19.25)(ioredis@5.8.2)(jiti@2.6.1)(lightningcss@1.30.2)(rollup@4.53.3)(terser@5.44.1)(tsx@4.20.6)(typescript@5.9.3)(yaml@2.8.1): dependencies: '@astrojs/compiler': 2.13.0 @@ -31706,11 +31604,6 @@ snapshots: optionalDependencies: source-map: 0.6.1 - eslint-compat-utils@0.6.5(eslint@9.39.1(jiti@1.21.7)): - dependencies: - eslint: 9.39.1(jiti@1.21.7) - semver: 7.7.3 - eslint-compat-utils@0.6.5(eslint@9.39.1(jiti@2.6.1)): dependencies: eslint: 9.39.1(jiti@2.6.1) @@ -31721,9 +31614,9 @@ snapshots: '@typescript-eslint/eslint-plugin': 8.48.1(@typescript-eslint/parser@8.48.1(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3) '@typescript-eslint/parser': 8.48.1(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3) eslint: 9.39.1(jiti@2.6.1) - eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.48.1(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.1(jiti@2.6.1)))(eslint@9.39.1(jiti@2.6.1)) + eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0)(eslint@9.39.1(jiti@2.6.1)) eslint-plugin-expo: 1.0.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3) - eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.48.1(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-typescript@3.10.1)(eslint@9.39.1(jiti@2.6.1)) + eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.48.1(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.1(jiti@2.6.1)) eslint-plugin-react: 7.37.5(eslint@9.39.1(jiti@2.6.1)) eslint-plugin-react-hooks: 5.2.0(eslint@9.39.1(jiti@2.6.1)) globals: 16.5.0 @@ -31738,9 +31631,9 @@ snapshots: '@typescript-eslint/eslint-plugin': 8.48.1(@typescript-eslint/parser@8.48.1(eslint@9.39.1(jiti@2.6.1))(typescript@5.8.3))(eslint@9.39.1(jiti@2.6.1))(typescript@5.8.3) '@typescript-eslint/parser': 8.48.1(eslint@9.39.1(jiti@2.6.1))(typescript@5.8.3) eslint: 9.39.1(jiti@2.6.1) - eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.48.1(eslint@9.39.1(jiti@2.6.1))(typescript@5.8.3))(eslint@9.39.1(jiti@2.6.1)))(eslint@9.39.1(jiti@2.6.1)) + eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0)(eslint@9.39.1(jiti@2.6.1)) eslint-plugin-expo: 0.1.4(eslint@9.39.1(jiti@2.6.1))(typescript@5.8.3) - eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.48.1(eslint@9.39.1(jiti@2.6.1))(typescript@5.8.3))(eslint-import-resolver-typescript@3.10.1)(eslint@9.39.1(jiti@2.6.1)) + eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.48.1(eslint@9.39.1(jiti@2.6.1))(typescript@5.8.3))(eslint@9.39.1(jiti@2.6.1)) eslint-plugin-react: 7.37.5(eslint@9.39.1(jiti@2.6.1)) eslint-plugin-react-hooks: 5.2.0(eslint@9.39.1(jiti@2.6.1)) globals: 16.5.0 @@ -31758,14 +31651,14 @@ snapshots: dependencies: eslint: 8.57.1 + eslint-config-prettier@8.10.2(eslint@9.39.1(jiti@1.21.7)): + dependencies: + eslint: 9.39.1(jiti@1.21.7) + eslint-config-prettier@8.10.2(eslint@9.39.1(jiti@2.6.1)): dependencies: eslint: 9.39.1(jiti@2.6.1) - eslint-config-prettier@9.1.2(eslint@9.39.1(jiti@1.21.7)): - dependencies: - eslint: 9.39.1(jiti@1.21.7) - eslint-config-prettier@9.1.2(eslint@9.39.1(jiti@2.6.1)): dependencies: eslint: 9.39.1(jiti@2.6.1) @@ -31790,17 +31683,17 @@ snapshots: - supports-color - typescript - eslint-config-universe@12.1.0(@types/eslint@9.6.1)(eslint@9.39.1(jiti@2.6.1))(prettier@3.6.2)(typescript@5.3.3): + eslint-config-universe@12.1.0(@types/eslint@9.6.1)(eslint@9.39.1(jiti@1.21.7))(prettier@3.6.2)(typescript@5.3.3): dependencies: - '@typescript-eslint/eslint-plugin': 6.21.0(@typescript-eslint/parser@6.21.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.3.3))(eslint@9.39.1(jiti@2.6.1))(typescript@5.3.3) - '@typescript-eslint/parser': 6.21.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.3.3) - eslint: 9.39.1(jiti@2.6.1) - eslint-config-prettier: 8.10.2(eslint@9.39.1(jiti@2.6.1)) - eslint-plugin-import: 2.32.0(@typescript-eslint/parser@6.21.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.3.3))(eslint@9.39.1(jiti@2.6.1)) - eslint-plugin-node: 11.1.0(eslint@9.39.1(jiti@2.6.1)) - eslint-plugin-prettier: 5.5.4(@types/eslint@9.6.1)(eslint-config-prettier@8.10.2(eslint@9.39.1(jiti@2.6.1)))(eslint@9.39.1(jiti@2.6.1))(prettier@3.6.2) - eslint-plugin-react: 7.37.5(eslint@9.39.1(jiti@2.6.1)) - eslint-plugin-react-hooks: 4.6.2(eslint@9.39.1(jiti@2.6.1)) + '@typescript-eslint/eslint-plugin': 6.21.0(@typescript-eslint/parser@6.21.0(eslint@9.39.1(jiti@1.21.7))(typescript@5.3.3))(eslint@9.39.1(jiti@1.21.7))(typescript@5.3.3) + '@typescript-eslint/parser': 6.21.0(eslint@9.39.1(jiti@1.21.7))(typescript@5.3.3) + eslint: 9.39.1(jiti@1.21.7) + eslint-config-prettier: 8.10.2(eslint@9.39.1(jiti@1.21.7)) + eslint-plugin-import: 2.32.0(@typescript-eslint/parser@6.21.0(eslint@9.39.1(jiti@1.21.7))(typescript@5.3.3))(eslint@9.39.1(jiti@1.21.7)) + eslint-plugin-node: 11.1.0(eslint@9.39.1(jiti@1.21.7)) + eslint-plugin-prettier: 5.5.4(@types/eslint@9.6.1)(eslint-config-prettier@8.10.2(eslint@9.39.1(jiti@1.21.7)))(eslint@9.39.1(jiti@1.21.7))(prettier@3.6.2) + eslint-plugin-react: 7.37.5(eslint@9.39.1(jiti@1.21.7)) + eslint-plugin-react-hooks: 4.6.2(eslint@9.39.1(jiti@1.21.7)) optionalDependencies: prettier: 3.6.2 transitivePeerDependencies: @@ -31838,7 +31731,7 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.48.1(eslint@9.39.1(jiti@2.6.1))(typescript@5.8.3))(eslint@9.39.1(jiti@2.6.1)))(eslint@9.39.1(jiti@2.6.1)): + eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0)(eslint@9.39.1(jiti@2.6.1)): dependencies: '@nolyfill/is-core-module': 1.0.39 debug: 4.4.3 @@ -31849,22 +31742,7 @@ snapshots: tinyglobby: 0.2.15 unrs-resolver: 1.11.1 optionalDependencies: - eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.48.1(eslint@9.39.1(jiti@2.6.1))(typescript@5.8.3))(eslint-import-resolver-typescript@3.10.1)(eslint@9.39.1(jiti@2.6.1)) - transitivePeerDependencies: - - supports-color - - eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.48.1(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.1(jiti@2.6.1)))(eslint@9.39.1(jiti@2.6.1)): - dependencies: - '@nolyfill/is-core-module': 1.0.39 - debug: 4.4.3 - eslint: 9.39.1(jiti@2.6.1) - get-tsconfig: 4.13.0 - is-bun-module: 2.0.0 - stable-hash: 0.0.5 - tinyglobby: 0.2.15 - unrs-resolver: 1.11.1 - optionalDependencies: - eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.48.1(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-typescript@3.10.1)(eslint@9.39.1(jiti@2.6.1)) + eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.48.1(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.1(jiti@2.6.1)) transitivePeerDependencies: - supports-color @@ -31878,12 +31756,12 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-module-utils@2.12.1(@typescript-eslint/parser@6.21.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.3.3))(eslint-import-resolver-node@0.3.9)(eslint@9.39.1(jiti@2.6.1)): + eslint-module-utils@2.12.1(@typescript-eslint/parser@6.21.0(eslint@9.39.1(jiti@1.21.7))(typescript@5.3.3))(eslint-import-resolver-node@0.3.9)(eslint@9.39.1(jiti@1.21.7)): dependencies: debug: 3.2.7 optionalDependencies: - '@typescript-eslint/parser': 6.21.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.3.3) - eslint: 9.39.1(jiti@2.6.1) + '@typescript-eslint/parser': 6.21.0(eslint@9.39.1(jiti@1.21.7))(typescript@5.3.3) + eslint: 9.39.1(jiti@1.21.7) eslint-import-resolver-node: 0.3.9 transitivePeerDependencies: - supports-color @@ -31898,39 +31776,25 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-module-utils@2.12.1(@typescript-eslint/parser@8.48.1(eslint@9.39.1(jiti@2.6.1))(typescript@5.8.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.48.1(eslint@9.39.1(jiti@2.6.1))(typescript@5.8.3))(eslint@9.39.1(jiti@2.6.1)))(eslint@9.39.1(jiti@2.6.1)))(eslint@9.39.1(jiti@2.6.1)): + eslint-module-utils@2.12.1(@typescript-eslint/parser@8.48.1(eslint@9.39.1(jiti@2.6.1))(typescript@5.8.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.10.1)(eslint@9.39.1(jiti@2.6.1)): dependencies: debug: 3.2.7 optionalDependencies: '@typescript-eslint/parser': 8.48.1(eslint@9.39.1(jiti@2.6.1))(typescript@5.8.3) eslint: 9.39.1(jiti@2.6.1) eslint-import-resolver-node: 0.3.9 - eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.48.1(eslint@9.39.1(jiti@2.6.1))(typescript@5.8.3))(eslint@9.39.1(jiti@2.6.1)))(eslint@9.39.1(jiti@2.6.1)) + eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0)(eslint@9.39.1(jiti@2.6.1)) transitivePeerDependencies: - supports-color - eslint-module-utils@2.12.1(@typescript-eslint/parser@8.48.1(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.48.1(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.1(jiti@2.6.1)))(eslint@9.39.1(jiti@2.6.1)))(eslint@9.39.1(jiti@2.6.1)): + eslint-module-utils@2.12.1(@typescript-eslint/parser@8.48.1(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.10.1)(eslint@9.39.1(jiti@2.6.1)): dependencies: debug: 3.2.7 optionalDependencies: '@typescript-eslint/parser': 8.48.1(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3) eslint: 9.39.1(jiti@2.6.1) eslint-import-resolver-node: 0.3.9 - eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.48.1(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.1(jiti@2.6.1)))(eslint@9.39.1(jiti@2.6.1)) - transitivePeerDependencies: - - supports-color - - eslint-plugin-astro@1.5.0(eslint@9.39.1(jiti@1.21.7)): - dependencies: - '@eslint-community/eslint-utils': 4.9.0(eslint@9.39.1(jiti@1.21.7)) - '@jridgewell/sourcemap-codec': 1.5.5 - '@typescript-eslint/types': 8.48.0 - astro-eslint-parser: 1.2.2 - eslint: 9.39.1(jiti@1.21.7) - eslint-compat-utils: 0.6.5(eslint@9.39.1(jiti@1.21.7)) - globals: 16.5.0 - postcss: 8.5.6 - postcss-selector-parser: 7.1.0 + eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0)(eslint@9.39.1(jiti@2.6.1)) transitivePeerDependencies: - supports-color @@ -31954,6 +31818,12 @@ snapshots: eslint-utils: 2.1.0 regexpp: 3.2.0 + eslint-plugin-es@3.0.1(eslint@9.39.1(jiti@1.21.7)): + dependencies: + eslint: 9.39.1(jiti@1.21.7) + eslint-utils: 2.1.0 + regexpp: 3.2.0 + eslint-plugin-es@3.0.1(eslint@9.39.1(jiti@2.6.1)): dependencies: eslint: 9.39.1(jiti@2.6.1) @@ -32007,7 +31877,7 @@ snapshots: - eslint-import-resolver-webpack - supports-color - eslint-plugin-import@2.32.0(@typescript-eslint/parser@6.21.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.3.3))(eslint@9.39.1(jiti@2.6.1)): + eslint-plugin-import@2.32.0(@typescript-eslint/parser@6.21.0(eslint@9.39.1(jiti@1.21.7))(typescript@5.3.3))(eslint@9.39.1(jiti@1.21.7)): dependencies: '@rtsao/scc': 1.1.0 array-includes: 3.1.9 @@ -32016,9 +31886,9 @@ snapshots: array.prototype.flatmap: 1.3.3 debug: 3.2.7 doctrine: 2.1.0 - eslint: 9.39.1(jiti@2.6.1) + eslint: 9.39.1(jiti@1.21.7) eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.12.1(@typescript-eslint/parser@6.21.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.3.3))(eslint-import-resolver-node@0.3.9)(eslint@9.39.1(jiti@2.6.1)) + eslint-module-utils: 2.12.1(@typescript-eslint/parser@6.21.0(eslint@9.39.1(jiti@1.21.7))(typescript@5.3.3))(eslint-import-resolver-node@0.3.9)(eslint@9.39.1(jiti@1.21.7)) hasown: 2.0.2 is-core-module: 2.16.1 is-glob: 4.0.3 @@ -32030,7 +31900,7 @@ snapshots: string.prototype.trimend: 1.0.9 tsconfig-paths: 3.15.0 optionalDependencies: - '@typescript-eslint/parser': 6.21.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.3.3) + '@typescript-eslint/parser': 6.21.0(eslint@9.39.1(jiti@1.21.7))(typescript@5.3.3) transitivePeerDependencies: - eslint-import-resolver-typescript - eslint-import-resolver-webpack @@ -32065,7 +31935,7 @@ snapshots: - eslint-import-resolver-webpack - supports-color - eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.48.1(eslint@9.39.1(jiti@2.6.1))(typescript@5.8.3))(eslint-import-resolver-typescript@3.10.1)(eslint@9.39.1(jiti@2.6.1)): + eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.48.1(eslint@9.39.1(jiti@2.6.1))(typescript@5.8.3))(eslint@9.39.1(jiti@2.6.1)): dependencies: '@rtsao/scc': 1.1.0 array-includes: 3.1.9 @@ -32076,7 +31946,7 @@ snapshots: doctrine: 2.1.0 eslint: 9.39.1(jiti@2.6.1) eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.48.1(eslint@9.39.1(jiti@2.6.1))(typescript@5.8.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.48.1(eslint@9.39.1(jiti@2.6.1))(typescript@5.8.3))(eslint@9.39.1(jiti@2.6.1)))(eslint@9.39.1(jiti@2.6.1)))(eslint@9.39.1(jiti@2.6.1)) + eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.48.1(eslint@9.39.1(jiti@2.6.1))(typescript@5.8.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.10.1)(eslint@9.39.1(jiti@2.6.1)) hasown: 2.0.2 is-core-module: 2.16.1 is-glob: 4.0.3 @@ -32094,7 +31964,7 @@ snapshots: - eslint-import-resolver-webpack - supports-color - eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.48.1(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-typescript@3.10.1)(eslint@9.39.1(jiti@2.6.1)): + eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.48.1(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.1(jiti@2.6.1)): dependencies: '@rtsao/scc': 1.1.0 array-includes: 3.1.9 @@ -32105,7 +31975,7 @@ snapshots: doctrine: 2.1.0 eslint: 9.39.1(jiti@2.6.1) eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.48.1(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.48.1(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.1(jiti@2.6.1)))(eslint@9.39.1(jiti@2.6.1)))(eslint@9.39.1(jiti@2.6.1)) + eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.48.1(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.10.1)(eslint@9.39.1(jiti@2.6.1)) hasown: 2.0.2 is-core-module: 2.16.1 is-glob: 4.0.3 @@ -32133,6 +32003,16 @@ snapshots: resolve: 1.22.11 semver: 6.3.1 + eslint-plugin-node@11.1.0(eslint@9.39.1(jiti@1.21.7)): + dependencies: + eslint: 9.39.1(jiti@1.21.7) + eslint-plugin-es: 3.0.1(eslint@9.39.1(jiti@1.21.7)) + eslint-utils: 2.1.0 + ignore: 5.3.2 + minimatch: 3.1.2 + resolve: 1.22.11 + semver: 6.3.1 + eslint-plugin-node@11.1.0(eslint@9.39.1(jiti@2.6.1)): dependencies: eslint: 9.39.1(jiti@2.6.1) @@ -32163,6 +32043,16 @@ snapshots: '@types/eslint': 9.6.1 eslint-config-prettier: 8.10.2(eslint@8.57.1) + eslint-plugin-prettier@5.5.4(@types/eslint@9.6.1)(eslint-config-prettier@8.10.2(eslint@9.39.1(jiti@1.21.7)))(eslint@9.39.1(jiti@1.21.7))(prettier@3.6.2): + dependencies: + eslint: 9.39.1(jiti@1.21.7) + prettier: 3.6.2 + prettier-linter-helpers: 1.0.0 + synckit: 0.11.11 + optionalDependencies: + '@types/eslint': 9.6.1 + eslint-config-prettier: 8.10.2(eslint@9.39.1(jiti@1.21.7)) + eslint-plugin-prettier@5.5.4(@types/eslint@9.6.1)(eslint-config-prettier@8.10.2(eslint@9.39.1(jiti@2.6.1)))(eslint@9.39.1(jiti@2.6.1))(prettier@3.6.2): dependencies: eslint: 9.39.1(jiti@2.6.1) @@ -32187,6 +32077,10 @@ snapshots: dependencies: eslint: 8.57.1 + eslint-plugin-react-hooks@4.6.2(eslint@9.39.1(jiti@1.21.7)): + dependencies: + eslint: 9.39.1(jiti@1.21.7) + eslint-plugin-react-hooks@4.6.2(eslint@9.39.1(jiti@2.6.1)): dependencies: eslint: 9.39.1(jiti@2.6.1) @@ -32217,6 +32111,28 @@ snapshots: string.prototype.matchall: 4.0.12 string.prototype.repeat: 1.0.0 + eslint-plugin-react@7.37.5(eslint@9.39.1(jiti@1.21.7)): + dependencies: + array-includes: 3.1.9 + 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.39.1(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.9 + 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-plugin-react@7.37.5(eslint@9.39.1(jiti@2.6.1)): dependencies: array-includes: 3.1.9 @@ -33436,6 +33352,53 @@ snapshots: - supports-color optional: true + expo-router@6.0.15(jiucxy5ca3jdtbnulaxuc46jdq): + dependencies: + '@expo/metro-runtime': 6.1.2(expo@54.0.25)(react-dom@19.1.0(react@19.1.0))(react-native@0.81.4(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.1.0))(react@19.1.0) + '@expo/schema-utils': 0.1.7 + '@radix-ui/react-slot': 1.2.0(@types/react@19.2.7)(react@19.1.0) + '@radix-ui/react-tabs': 1.1.13(@types/react-dom@19.2.3(@types/react@19.2.7))(@types/react@19.2.7)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@react-navigation/bottom-tabs': 7.8.6(@react-navigation/native@7.1.21(react-native@0.81.4(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.1.0))(react@19.1.0))(react-native-safe-area-context@5.6.2(react-native@0.81.4(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.1.0))(react@19.1.0))(react-native-screens@4.16.0(react-native@0.81.4(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.1.0))(react@19.1.0))(react-native@0.81.4(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.1.0))(react@19.1.0) + '@react-navigation/native': 7.1.21(react-native@0.81.4(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.1.0))(react@19.1.0) + '@react-navigation/native-stack': 7.8.0(@react-navigation/native@7.1.21(react-native@0.81.4(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.1.0))(react@19.1.0))(react-native-safe-area-context@5.6.2(react-native@0.81.4(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.1.0))(react@19.1.0))(react-native-screens@4.16.0(react-native@0.81.4(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.1.0))(react@19.1.0))(react-native@0.81.4(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.1.0))(react@19.1.0) + client-only: 0.0.1 + debug: 4.4.3 + escape-string-regexp: 4.0.0 + expo: 54.0.25(@babel/core@7.28.5)(@expo/metro-runtime@6.1.2)(expo-router@6.0.15)(react-native-webview@13.12.2(react-native@0.81.4(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.1.0))(react@19.1.0))(react-native@0.81.4(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.1.0))(react@19.1.0) + expo-constants: 18.0.10(expo@54.0.25)(react-native@0.81.4(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.1.0)) + expo-linking: 8.0.9(expo@54.0.25)(react-native@0.81.4(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.1.0))(react@19.1.0) + expo-server: 1.0.4 + fast-deep-equal: 3.1.3 + invariant: 2.2.4 + nanoid: 3.3.11 + query-string: 7.1.3 + react: 19.1.0 + react-fast-compare: 3.2.2 + react-native: 0.81.4(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.1.0) + react-native-is-edge-to-edge: 1.2.1(react-native@0.81.4(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.1.0))(react@19.1.0) + react-native-safe-area-context: 5.6.2(react-native@0.81.4(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.1.0))(react@19.1.0) + react-native-screens: 4.16.0(react-native@0.81.4(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.1.0))(react@19.1.0) + semver: 7.6.3 + server-only: 0.0.1 + sf-symbols-typescript: 2.1.0 + shallowequal: 1.1.0 + use-latest-callback: 0.2.6(react@19.1.0) + vaul: 1.1.2(@types/react-dom@19.2.3(@types/react@19.2.7))(@types/react@19.2.7)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + optionalDependencies: + '@react-navigation/drawer': 7.7.4(@react-navigation/native@7.1.21(react-native@0.81.4(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.1.0))(react@19.1.0))(react-native-gesture-handler@2.28.0(react-native@0.81.4(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.1.0))(react@19.1.0))(react-native-reanimated@4.1.5(@babel/core@7.28.5)(react-native-worklets@0.6.1(@babel/core@7.28.5)(react-native@0.81.4(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.1.0))(react@19.1.0))(react-native@0.81.4(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.1.0))(react@19.1.0))(react-native-safe-area-context@5.6.2(react-native@0.81.4(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.1.0))(react@19.1.0))(react-native-screens@4.16.0(react-native@0.81.4(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.1.0))(react@19.1.0))(react-native@0.81.4(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.1.0))(react@19.1.0) + '@testing-library/react-native': 13.3.3(jest@30.2.0(@types/node@20.19.25)(esbuild-register@3.6.0(esbuild@0.27.0)))(react-native@0.81.4(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.1.0))(react-test-renderer@19.1.0(react@19.1.0))(react@19.1.0) + react-dom: 19.1.0(react@19.1.0) + react-native-gesture-handler: 2.28.0(react-native@0.81.4(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.1.0))(react@19.1.0) + react-native-reanimated: 4.1.5(@babel/core@7.28.5)(react-native-worklets@0.6.1(@babel/core@7.28.5)(react-native@0.81.4(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.1.0))(react@19.1.0))(react-native@0.81.4(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.1.0))(react@19.1.0) + react-native-web: 0.21.2(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + react-server-dom-webpack: 19.0.0(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(webpack@5.100.2(esbuild@0.27.0)) + transitivePeerDependencies: + - '@react-native-masked-view/masked-view' + - '@types/react' + - '@types/react-dom' + - supports-color + optional: true + expo-router@6.0.15(nttrd3tw67nnyhowcwgdzipb5e): dependencies: '@expo/metro-runtime': 6.1.2(expo@54.0.25)(react-dom@19.1.0(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.1.0))(react@19.1.0) @@ -35625,6 +35588,26 @@ snapshots: - supports-color - ts-node + jest-cli@30.2.0(@types/node@20.19.25)(esbuild-register@3.6.0(esbuild@0.27.0)): + dependencies: + '@jest/core': 30.2.0(esbuild-register@3.6.0(esbuild@0.27.0)) + '@jest/test-result': 30.2.0 + '@jest/types': 30.2.0 + chalk: 4.1.2 + exit-x: 0.2.2 + import-local: 3.2.0 + jest-config: 30.2.0(@types/node@20.19.25)(esbuild-register@3.6.0(esbuild@0.27.0)) + jest-util: 30.2.0 + jest-validate: 30.2.0 + yargs: 17.7.2 + transitivePeerDependencies: + - '@types/node' + - babel-plugin-macros + - esbuild-register + - supports-color + - ts-node + optional: true + jest-cli@30.2.0(@types/node@22.19.1)(esbuild-register@3.6.0(esbuild@0.19.12))(ts-node@10.9.2(@types/node@22.19.1)(typescript@5.9.3)): dependencies: '@jest/core': 30.2.0(esbuild-register@3.6.0(esbuild@0.19.12))(ts-node@10.9.2(@types/node@22.19.1)(typescript@5.9.3)) @@ -35815,6 +35798,40 @@ snapshots: - babel-plugin-macros - supports-color + jest-config@30.2.0(@types/node@20.19.25)(esbuild-register@3.6.0(esbuild@0.27.0)): + dependencies: + '@babel/core': 7.28.5 + '@jest/get-type': 30.1.0 + '@jest/pattern': 30.0.1 + '@jest/test-sequencer': 30.2.0 + '@jest/types': 30.2.0 + babel-jest: 30.2.0(@babel/core@7.28.5) + chalk: 4.1.2 + ci-info: 4.3.1 + deepmerge: 4.3.1 + glob: 10.5.0 + graceful-fs: 4.2.11 + jest-circus: 30.2.0 + jest-docblock: 30.2.0 + jest-environment-node: 30.2.0 + jest-regex-util: 30.0.1 + jest-resolve: 30.2.0 + jest-runner: 30.2.0 + jest-util: 30.2.0 + jest-validate: 30.2.0 + micromatch: 4.0.8 + parse-json: 5.2.0 + pretty-format: 30.2.0 + slash: 3.0.0 + strip-json-comments: 3.1.1 + optionalDependencies: + '@types/node': 20.19.25 + esbuild-register: 3.6.0(esbuild@0.27.0) + transitivePeerDependencies: + - babel-plugin-macros + - supports-color + optional: true + jest-config@30.2.0(@types/node@22.19.1)(esbuild-register@3.6.0(esbuild@0.19.12))(ts-node@10.9.2(@types/node@22.19.1)(typescript@5.9.3)): dependencies: '@babel/core': 7.28.5 @@ -36505,6 +36522,20 @@ snapshots: - supports-color - ts-node + jest@30.2.0(@types/node@20.19.25)(esbuild-register@3.6.0(esbuild@0.27.0)): + dependencies: + '@jest/core': 30.2.0(esbuild-register@3.6.0(esbuild@0.27.0)) + '@jest/types': 30.2.0 + import-local: 3.2.0 + jest-cli: 30.2.0(@types/node@20.19.25)(esbuild-register@3.6.0(esbuild@0.27.0)) + transitivePeerDependencies: + - '@types/node' + - babel-plugin-macros + - esbuild-register + - supports-color + - ts-node + optional: true + jest@30.2.0(@types/node@22.19.1)(esbuild-register@3.6.0(esbuild@0.19.12))(ts-node@10.9.2(@types/node@22.19.1)(typescript@5.9.3)): dependencies: '@jest/core': 30.2.0(esbuild-register@3.6.0(esbuild@0.19.12))(ts-node@10.9.2(@types/node@22.19.1)(typescript@5.9.3)) @@ -42703,23 +42734,6 @@ snapshots: lightningcss: 1.30.2 terser: 5.44.1 - vite@6.4.1(@types/node@20.19.25)(jiti@1.21.7)(lightningcss@1.30.2)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1): - dependencies: - esbuild: 0.25.12 - fdir: 6.5.0(picomatch@4.0.3) - picomatch: 4.0.3 - postcss: 8.5.6 - rollup: 4.53.3 - tinyglobby: 0.2.15 - optionalDependencies: - '@types/node': 20.19.25 - fsevents: 2.3.3 - jiti: 1.21.7 - lightningcss: 1.30.2 - terser: 5.44.1 - tsx: 4.20.6 - yaml: 2.8.1 - vite@6.4.1(@types/node@20.19.25)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1): dependencies: esbuild: 0.25.12 @@ -42822,10 +42836,6 @@ snapshots: tsx: 4.20.6 yaml: 2.8.1 - vitefu@1.1.1(vite@6.4.1(@types/node@20.19.25)(jiti@1.21.7)(lightningcss@1.30.2)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1)): - optionalDependencies: - vite: 6.4.1(@types/node@20.19.25)(jiti@1.21.7)(lightningcss@1.30.2)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1) - vitefu@1.1.1(vite@6.4.1(@types/node@20.19.25)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1)): optionalDependencies: vite: 6.4.1(@types/node@20.19.25)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1) diff --git a/scripts/generate-env.mjs b/scripts/generate-env.mjs index 6f66d295b..cf69cbb65 100644 --- a/scripts/generate-env.mjs +++ b/scripts/generate-env.mjs @@ -92,10 +92,7 @@ const APP_CONFIGS = [ PORT: (env) => env.CHAT_BACKEND_PORT || '3002', DEV_BYPASS_AUTH: () => 'true', DEV_USER_ID: (env) => env.DEV_USER_ID || '00000000-0000-0000-0000-000000000000', - AZURE_OPENAI_ENDPOINT: (env) => env.AZURE_OPENAI_ENDPOINT, - AZURE_OPENAI_API_KEY: (env) => env.AZURE_OPENAI_API_KEY, - AZURE_OPENAI_API_VERSION: (env) => env.AZURE_OPENAI_API_VERSION, - GOOGLE_GENAI_API_KEY: (env) => env.GOOGLE_GENAI_API_KEY, + OPENROUTER_API_KEY: (env) => env.OPENROUTER_API_KEY, MANA_CORE_AUTH_URL: (env) => env.MANA_CORE_AUTH_URL, DATABASE_URL: (env) => env.CHAT_DATABASE_URL, },