From bf5f6dae8c6294ed41f0c56d93747eddf6928575 Mon Sep 17 00:00:00 2001 From: iamjr15 Date: Mon, 20 Jul 2026 16:34:13 +0530 Subject: [PATCH 1/2] chore(infra): simplify production database operations Remove orphaned release and local database contracts. Use production Supabase roles locally and retire dead compatibility surfaces. Align migrations with managed Supabase role and Vault behavior. --- .env.example | 26 +- .env.migrate.example | 11 + .github/workflows/deploy-workers.yml | 229 -- .gitignore | 1 + AGENTS.md | 24 +- README.md | 320 +- apps/agent-worker/src/user-skill-packages.ts | 29 +- apps/gateway-worker/README.md | 13 +- .../gateway-worker/src/account-http-routes.ts | 20 +- apps/gateway-worker/src/limits.ts | 74 +- .../src/openapi-account-routes.ts | 11 - apps/web/README.md | 19 +- apps/web/src/app/(app)/billing/page.tsx | 5 - apps/web/src/components/shell/app-chrome.tsx | 1 - apps/web/vercel.json | 5 +- compose.yaml | 77 - infra/containers/dev/bootstrap-database.sql | 166 - infra/containers/dev/database.Dockerfile | 6 - ...0042_harden_byok_and_data_api_boundary.sql | 27 +- .../0058_expand_worker_database_roles.sql | 23 +- .../0059_finalize_worker_database_roles.sql | 13 +- knip.jsonc | 14 +- package.json | 1 - packages/db/README.md | 31 +- .../db/src/supabase-target-runtime-roles.ts | 2 +- packages/env/README.md | 8 +- packages/env/src/migrate.ts | 5 +- packages/types/src/api.ts | 16 - packages/types/src/index.ts | 2 - pnpm-lock.yaml | 2911 ++--------------- pnpm-workspace.yaml | 1 - scripts/archive-audit-log.ts | 27 +- ...on-budget.ts => audit-operation-budget.ts} | 38 +- scripts/database-operation-safety.ts | 18 +- scripts/dev-worker-config.ts | 54 +- scripts/dev.ts | 7 +- scripts/migrate.ts | 6 - 37 files changed, 501 insertions(+), 3740 deletions(-) create mode 100644 .env.migrate.example delete mode 100644 .github/workflows/deploy-workers.yml delete mode 100644 apps/web/src/app/(app)/billing/page.tsx delete mode 100644 infra/containers/dev/bootstrap-database.sql delete mode 100644 infra/containers/dev/database.Dockerfile rename scripts/{release-operation-budget.ts => audit-operation-budget.ts} (56%) diff --git a/.env.example b/.env.example index fe4756d3..4faa1464 100644 --- a/.env.example +++ b/.env.example @@ -1,21 +1,11 @@ -# Root .env.local is the only local credential file. Cloudflare and Vercel -# receive production values directly in their dashboards; never copy this file there. - -# Local Postgres. Generate four distinct URL-safe passwords and keep each Worker -# password identical to the password in only its own connection URL. -LOCAL_POSTGRES_PASSWORD=replace_with_64_hex_postgres_password -LOCAL_APP_GATEWAY_PASSWORD=replace_with_64_hex_app_gateway_password -LOCAL_APP_AGENT_PASSWORD=replace_with_64_hex_app_agent_password -LOCAL_APP_WEBHOOKS_PASSWORD=replace_with_64_hex_app_webhooks_password -LOCAL_DATABASE_PORT=54322 -CHEATCODE_LOCAL_DATABASE=true -SUPABASE_MIGRATION_URL=postgresql://postgres:replace_with_64_hex_postgres_password@database:5432/postgres -SUPABASE_MIGRATION_EXPECTED_HOST=database -SUPABASE_MIGRATION_EXPECTED_DATABASE=postgres -SUPABASE_MIGRATION_EXPECTED_ROLE=postgres -LOCAL_GATEWAY_DATABASE_URL=postgresql://app_gateway:replace_with_64_hex_app_gateway_password@database:5432/postgres -LOCAL_AGENT_DATABASE_URL=postgresql://app_agent:replace_with_64_hex_app_agent_password@database:5432/postgres -LOCAL_WEBHOOKS_DATABASE_URL=postgresql://app_webhooks:replace_with_64_hex_app_webhooks_password@database:5432/postgres +# Root .env.local is the only local application credential file. Local Workers +# use the production Supabase database through its public session pooler and the +# same three least-privilege roles as production Hyperdrive. Keep each password +# identical to the password configured on only its matching production role. +# Administrative migration credentials belong in .env.migrate, never here. +SUPABASE_GATEWAY_DATABASE_URL=postgresql://app_gateway.snqtclnmhcaupqynjyux:replace_with_gateway_role_password@aws-0-ap-south-1.pooler.supabase.com:5432/postgres?sslmode=require&uselibpqcompat=true +SUPABASE_AGENT_DATABASE_URL=postgresql://app_agent.snqtclnmhcaupqynjyux:replace_with_agent_role_password@aws-0-ap-south-1.pooler.supabase.com:5432/postgres?sslmode=require&uselibpqcompat=true +SUPABASE_WEBHOOKS_DATABASE_URL=postgresql://app_webhooks.snqtclnmhcaupqynjyux:replace_with_webhooks_role_password@aws-0-ap-south-1.pooler.supabase.com:5432/postgres?sslmode=require&uselibpqcompat=true # Clerk development instance. These test keys are for this laptop only; every # Vercel environment uses the production Clerk instance. diff --git a/.env.migrate.example b/.env.migrate.example new file mode 100644 index 00000000..f85093e7 --- /dev/null +++ b/.env.migrate.example @@ -0,0 +1,11 @@ +# Copy to .env.migrate only on an authorized operator workstation. This file +# targets the production Supabase database and is never loaded by the app, +# Compose, Wrangler, Next.js, or any Worker. +SUPABASE_MIGRATION_URL=postgresql://postgres:replace_with_production_admin_password@db.snqtclnmhcaupqynjyux.supabase.co:5432/postgres?sslmode=require +SUPABASE_MIGRATION_EXPECTED_HOST=db.snqtclnmhcaupqynjyux.supabase.co +SUPABASE_MIGRATION_EXPECTED_DATABASE=postgres +SUPABASE_MIGRATION_EXPECTED_ROLE=postgres +SUPABASE_MIGRATION_EXPECTED_SYSTEM_IDENTIFIER=replace_with_pg_control_system_identifier + +# Optional one-time protected migration attestation envelope. +CHEATCODE_MIGRATION_ATTESTATIONS= diff --git a/.github/workflows/deploy-workers.yml b/.github/workflows/deploy-workers.yml deleted file mode 100644 index 3b61814c..00000000 --- a/.github/workflows/deploy-workers.yml +++ /dev/null @@ -1,229 +0,0 @@ -name: Deploy Workers - -# Reusable half-release for one immutable commit. `stage-closed` closes the -# gateway, lets already-admitted agent/webhook work drain, then closes every writer. -# `open` verifies that exact barrier, proves the dedicated signed database roles, -# performs the isolated V1 retirement, then opens agent and webhooks with the -# matching gateway always deployed last. -on: - workflow_call: - inputs: - confirmation: - required: true - type: string - frontend_deployment_id: - required: false - default: "" - type: string - phase: - required: true - type: string - production_web_origin: - required: false - default: "" - type: string - production_resource_fingerprint: - required: true - type: string - release_sha: - required: true - type: string - superseded_release_sha: - required: false - default: "" - type: string - -permissions: - actions: read - contents: read - -jobs: - release-backend: - runs-on: ubuntu-24.04 - # The script admits mutations only when its 230-minute stage budget and - # separate 50-minute fail-closed recovery reserve fit inside this job. - timeout-minutes: 360 - environment: production - steps: - - name: Authorize coordinated backend release phase - env: - CALLER_WORKFLOW_REF: ${{ github.workflow_ref }} - CONFIRMATION: ${{ inputs.confirmation }} - FRONTEND_DEPLOYMENT_ID: ${{ inputs.frontend_deployment_id }} - PRODUCTION_WEB_ORIGIN: ${{ inputs.production_web_origin }} - PRODUCTION_RESOURCE_FINGERPRINT: ${{ inputs.production_resource_fingerprint }} - RELEASE_PHASE: ${{ inputs.phase }} - RELEASE_SHA: ${{ inputs.release_sha }} - SUPERSEDED_RELEASE_SHA: ${{ inputs.superseded_release_sha }} - run: | - expected_caller_workflow_ref="${GITHUB_REPOSITORY}/.github/workflows/production-release.yml@refs/heads/main" - if [ "$CALLER_WORKFLOW_REF" != "$expected_caller_workflow_ref" ]; then - echo "Backend releases must be called by the exact main production-release workflow." >&2 - exit 1 - fi - if [ "$GITHUB_EVENT_NAME" != "workflow_dispatch" ]; then - echo "Backend releases must originate from a manual Production Release run." >&2 - exit 1 - fi - if [ "$GITHUB_REF" != "refs/heads/main" ]; then - echo "Backend releases must target main." >&2 - exit 1 - fi - if [[ ! "$RELEASE_SHA" =~ ^[0-9a-f]{40}$ ]]; then - echo "The backend release SHA must be a full lowercase 40-character Git commit SHA." >&2 - exit 1 - fi - if [[ ! "$PRODUCTION_RESOURCE_FINGERPRINT" =~ ^[0-9a-f]{64}$ ]]; then - echo "The backend release requires the exact production resource fingerprint." >&2 - exit 1 - fi - if [ -n "$SUPERSEDED_RELEASE_SHA" ] && { - [ "$RELEASE_PHASE" != "stage-closed" ] || - [[ ! "$SUPERSEDED_RELEASE_SHA" =~ ^[0-9a-f]{40}$ ]] || - [ "$SUPERSEDED_RELEASE_SHA" = "$RELEASE_SHA" ]; - }; then - echo "A superseded release must be a different closed SHA on stage-closed." >&2 - exit 1 - fi - case "$RELEASE_PHASE:$CONFIRMATION" in - stage-closed:STAGE_PRODUCTION_CLOSED) - if [ -n "$PRODUCTION_WEB_ORIGIN" ] || [ -n "$FRONTEND_DEPLOYMENT_ID" ]; then - echo "stage-closed must not receive production frontend identity." >&2 - exit 1 - fi - ;; - open:OPEN_PRODUCTION) - if [ "$PRODUCTION_WEB_ORIGIN" != "https://trycheatcode.com" ] || - [[ ! "$FRONTEND_DEPLOYMENT_ID" =~ ^dpl_[A-Za-z0-9]+$ ]]; then - echo "open requires the canonical origin and verified Vercel deployment ID." >&2 - exit 1 - fi - ;; - *) - echo "Confirmation does not authorize release phase $RELEASE_PHASE." >&2 - exit 1 - ;; - esac - started_at_seconds="$(date +%s)" - if [[ ! "$started_at_seconds" =~ ^[0-9]{10}$ ]]; then - echo "Could not establish the backend release job deadline." >&2 - exit 1 - fi - echo "CHEATCODE_RELEASE_JOB_STARTED_AT_MS=${started_at_seconds}000" >> "$GITHUB_ENV" - - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3 - with: - fetch-depth: 0 - ref: ${{ inputs.release_sha }} - - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3 - with: - path: .release-control - ref: ${{ github.sha }} - sparse-checkout: .github/actions/verify-release-control - - uses: ./.release-control/.github/actions/verify-release-control - with: - control-sha: ${{ github.sha }} - release-sha: ${{ inputs.release_sha }} - - run: rm -rf .release-control - - name: Require successful static checks for this commit - env: - GH_TOKEN: ${{ github.token }} - RELEASE_SHA: ${{ inputs.release_sha }} - run: | - successful_runs="$(gh api --method GET \ - "repos/${GITHUB_REPOSITORY}/actions/workflows/static-checks.yml/runs" \ - --field branch=main \ - --field event=push \ - --field head_sha="$RELEASE_SHA" \ - --field per_page=1 \ - --field status=success \ - --jq '.total_count')" - if [ "$successful_runs" -lt 1 ]; then - echo "Static Checks has not succeeded for $RELEASE_SHA on main." >&2 - exit 1 - fi - - uses: ./.github/actions/setup-repository - with: - release-sha: ${{ inputs.release_sha }} - - name: Build backend release phase - env: - RELEASE_PHASE: ${{ inputs.phase }} - run: | - if [ "$RELEASE_PHASE" = "open" ]; then - pnpm turbo build \ - --filter=@cheatcode/gateway-worker \ - --filter=@cheatcode/agent-worker \ - --filter=@cheatcode/webhooks-worker - else - pnpm turbo build \ - --filter=@cheatcode/gateway-worker \ - --filter=@cheatcode/agent-worker \ - --filter=@cheatcode/webhooks-worker \ - --filter=@cheatcode/preview-proxy - fi - - name: Pull Vercel production project identity - if: ${{ inputs.phase == 'open' }} - env: - VERCEL_ORG_ID: ${{ vars.VERCEL_ORG_ID }} - VERCEL_PROJECT_ID: ${{ vars.VERCEL_PROJECT_ID }} - VERCEL_TOKEN: ${{ secrets.VERCEL_TOKEN }} - run: pnpm exec vercel pull --yes --environment=production --token="$VERCEL_TOKEN" - - name: Reverify canonical alias immediately before backend OPEN - if: ${{ inputs.phase == 'open' }} - env: - DEPLOYMENT_ID: ${{ inputs.frontend_deployment_id }} - PRODUCTION_WEB_ORIGIN: ${{ inputs.production_web_origin }} - VERCEL_TOKEN: ${{ secrets.VERCEL_TOKEN }} - run: | - project_name="$(jq --exit-status --raw-output '.projectName' .vercel/project.json)" - inspection="$(timeout --signal=TERM 15s pnpm exec vercel inspect \ - "$PRODUCTION_WEB_ORIGIN" --format=json --token="$VERCEL_TOKEN")" - jq --exit-status \ - --arg id "$DEPLOYMENT_ID" \ - --arg project "$project_name" ' - .id == $id and .name == $project and - .target == "production" and .readyState == "READY" - ' <<<"$inspection" > /dev/null - - name: Apply fail-closed backend release phase - env: - CHEATCODE_MIGRATION_ATTESTATIONS: ${{ secrets.CHEATCODE_MIGRATION_ATTESTATIONS }} - CHEATCODE_FRONTEND_DEPLOYMENT_ID: ${{ inputs.frontend_deployment_id }} - CHEATCODE_RELEASE_SHA: ${{ inputs.release_sha }} - CHEATCODE_PRODUCTION_WEB_ORIGIN: ${{ inputs.production_web_origin }} - CHEATCODE_PRODUCTION_RESOURCE_FINGERPRINT: ${{ inputs.production_resource_fingerprint }} - CHEATCODE_SUPERSEDE_CLOSED_SHA: ${{ inputs.superseded_release_sha }} - CHEATCODE_PROD_DEPLOY_APPROVED: "true" - CLOUDFLARE_ACCOUNT_ID: ${{ secrets.CLOUDFLARE_ACCOUNT_ID }} - CLOUDFLARE_API_TOKEN: ${{ secrets.CLOUDFLARE_API_TOKEN }} - CLOUDFLARE_RESOURCE_READ_API_TOKEN: ${{ secrets.CLOUDFLARE_RESOURCE_READ_API_TOKEN }} - RELEASE_PHASE: ${{ inputs.phase }} - RELEASE_DATABASE_READINESS_SECRET: ${{ secrets.RELEASE_DATABASE_READINESS_SECRET }} - RELEASE_SHA: ${{ inputs.release_sha }} - SUPABASE_MIGRATION_EXPECTED_DATABASE: ${{ vars.SUPABASE_MIGRATION_EXPECTED_DATABASE }} - SUPABASE_MIGRATION_EXPECTED_HOST: ${{ vars.SUPABASE_MIGRATION_EXPECTED_HOST }} - SUPABASE_MIGRATION_EXPECTED_ROLE: ${{ vars.SUPABASE_MIGRATION_EXPECTED_ROLE }} - SUPABASE_MIGRATION_EXPECTED_SYSTEM_IDENTIFIER: ${{ vars.SUPABASE_MIGRATION_EXPECTED_SYSTEM_IDENTIFIER }} - SUPABASE_MIGRATION_URL: ${{ secrets.SUPABASE_MIGRATION_URL }} - VERCEL_ORG_ID: ${{ vars.VERCEL_ORG_ID }} - VERCEL_PROJECT_ID: ${{ vars.VERCEL_PROJECT_ID }} - VERCEL_TOKEN: ${{ inputs.phase == 'open' && secrets.VERCEL_TOKEN || '' }} - run: pnpm deploy:workers -- --phase "$RELEASE_PHASE" --apply --skip-build - - name: Record release phase - continue-on-error: true - env: - RELEASE_PHASE: ${{ inputs.phase }} - RELEASE_SHA: ${{ inputs.release_sha }} - SUPERSEDED_RELEASE_SHA: ${{ inputs.superseded_release_sha }} - run: | - { - echo "### Cloudflare backend: $RELEASE_PHASE" - echo "- Commit: \`$RELEASE_SHA\`" - if [ -n "$SUPERSEDED_RELEASE_SHA" ]; then - echo "- Superseded closed SHA: \`$SUPERSEDED_RELEASE_SHA\`" - fi - echo "- Migration gate: ${GITHUB_SERVER_URL}/${GITHUB_REPOSITORY}/actions/runs/${GITHUB_RUN_ID}" - if [ "$RELEASE_PHASE" = "stage-closed" ]; then - echo "- Barrier: gateway, agent, and webhooks are verified CLOSED; every Workflow writer is drained; preview proxy matches this commit" - else - echo "- Barrier: dedicated database roles were proved before and after isolated V1 retirement; agent and webhooks reopened first; matching gateway was verified OPEN last after exact production web reverification" - fi - } >> "$GITHUB_STEP_SUMMARY" diff --git a/.gitignore b/.gitignore index f13992a6..d5bdec05 100644 --- a/.gitignore +++ b/.gitignore @@ -15,6 +15,7 @@ qa-*.png .env .env.* !.env.example +!.env.migrate.example apps/*/.dev.vars apps/*/wrangler.local-dev.generated.jsonc apps/*/wrangler.production.*.generated.json diff --git a/AGENTS.md b/AGENTS.md index f71bbcf1..d15f2223 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -117,22 +117,18 @@ not write, run, or keep scripts to submit prompts, click UI, drive auth, wrap ## Run locally ```bash -pnpm dev # Compose: Postgres + migrations + Next + chained Workers +pnpm dev # Compose: Next + chained Workers against production Supabase pnpm dev:down # Stop the local Compose stack ``` Required local env vars in `.env.local` (template in `.env.example`): ``` -# Local Postgres + per-Worker roles (distinct URL-safe passwords) -LOCAL_POSTGRES_PASSWORD= -LOCAL_APP_GATEWAY_PASSWORD= -LOCAL_APP_AGENT_PASSWORD= -LOCAL_APP_WEBHOOKS_PASSWORD= -SUPABASE_MIGRATION_URL=postgresql://postgres:@database:5432/postgres -LOCAL_GATEWAY_DATABASE_URL=postgresql://app_gateway:@database:5432/postgres -LOCAL_AGENT_DATABASE_URL=postgresql://app_agent:@database:5432/postgres -LOCAL_WEBHOOKS_DATABASE_URL=postgresql://app_webhooks:@database:5432/postgres +# Production Supabase session-pooler URLs for the three isolated Worker roles. +# Administrative migration credentials never belong in .env.local. +SUPABASE_GATEWAY_DATABASE_URL= +SUPABASE_AGENT_DATABASE_URL= +SUPABASE_WEBHOOKS_DATABASE_URL= # Per-Worker signed tenant context (three distinct secrets, each at least 32 bytes) DATABASE_CONTEXT_SIGNING_SECRET_GATEWAY= @@ -173,9 +169,11 @@ RELEASE_DATABASE_READINESS_SECRET= NEXT_PUBLIC_GATEWAY_URL=http://127.0.0.1:8787 ``` -Never commit `.env.local`. It is the sole laptop credential file and accepts only -Clerk test keys plus sandbox/local credentials. Vercel and Cloudflare receive -production credentials directly through their protected production environments. +Never commit `.env.local`. It is the sole laptop application credential file; +its database URLs contain only the three least-privilege production runtime +roles. Vercel and Cloudflare receive production credentials directly through +their protected production environments. Administrative migration credentials +live only in git-ignored `.env.migrate` on authorized operator workstations. ## Code conventions (CI-enforced) diff --git a/README.md b/README.md index 9f9825ee..ef706a99 100644 --- a/README.md +++ b/README.md @@ -4,307 +4,123 @@ Cheatcode is a TypeScript-first generalist AI agent platform with a Vercel-hoste The live source, package READMEs, migrations, and deployment configuration define the current system. The deleted `plan.md` is intentionally not authoritative and must not be restored. -## Local Setup +## Local setup ```bash nvm use cp .env.example .env.local -# Fill the Clerk development, Daytona, Polar sandbox, and integration values. -# Run `openssl rand -hex 32` thirteen times: four distinct local database passwords, -# three distinct per-Worker tenant-context HMAC secrets, and four distinct ccm2 -# capability secrets, plus the preview-token and output-download signing secrets. -# Repeat each Worker password only in that Worker's matching connection URL. +# Fill the production Supabase runtime-role URLs plus the Clerk development, +# Daytona, Polar sandbox, and integration values. pnpm dev ``` `pnpm dev` is the complete local entrypoint. Docker Compose builds the pinned -Node 22.22.2/pnpm 11.15.0 development image, starts the Vault-capable Postgres -database, provisions isolated `app_gateway`, `app_agent`, and `app_webhooks` -roles, applies all three local migration phases, and then starts Next.js plus the -chained Workers. Source changes sync into -the app container; migration changes restart the app behind the migration gate so -the stack cannot stay healthy against a stale schema, and dependency-file changes -rebuild it. Stop the stack with: +Node and pnpm development image and starts Next.js plus the chained Workers. +Local Workers use the production Supabase database through its session pooler +and the same three isolated runtime roles as production Hyperdrive. Local +startup never applies database migrations. Stop the stack with: ```bash pnpm dev:down ``` -After Weeks 1-8 are implemented in code, product QA is manual browser operation -only: +Expected local endpoints: + +- Web: `http://127.0.0.1:3000` +- Gateway and chained Workers: `http://127.0.0.1:8787` +- Wrangler inspector: `http://localhost:9239` + +Product QA is direct browser operation only: ```bash agent-browser --auto-connect --session cheatcode-debug open http://127.0.0.1:3000 agent-browser --auto-connect --session cheatcode-debug snapshot -i ``` -Use the snapshot-ref workflow directly: click/fill/type through login, project -chat, preview tabs, settings, billing, BYOK, integrations, and mobile layouts; -re-snapshot after DOM changes; capture screenshots; inspect console/resource -output; and review the running Next/Wrangler logs. Do not add or run -checked-in product-flow scripts for smoke, E2E, load, prompt submission, -auth, browser automation, accessibility, or final product QA. Package `test` -scripts and source-level `*.test.ts` files are intentionally absent; real -acceptance testing is the UI plus logs. Do not generate temporary -validation scripts either; operate the UI directly and remove any throwaway -product QA script that appears in the V2 tree. Operational scripts that remain -in the repo are for build, migration, sandbox maintenance, and deploy -guardrails only; they are never acceptance evidence. The `scripts/` directory is -not a testing surface; delete any script that submits prompts, drives auth or -browser flows, checks accessibility/load, or gathers final product evidence. -May 27, 2026 user override: never use scripts for product testing. Product QA -must be direct UI operation with `agent-browser`, screenshots, console/network -inspection, and running app-log review. Delete future V2 product validators -rather than running them. The removed V1 tree must not be restored or copied -back as a testing surface. - -May 28, 2026 hardening: product QA cannot be wrapped in `pnpm`, `tsx`, shell -loops, `/tmp` helpers, generated files, browser-driver wrappers, package -aliases, or any scripted flow. Each UI action, screenshot, console read, -network/resource inspection, and app-log inspection must be issued directly in -the transcript. Typecheck/lint/build are code-health gates only. - -May 28, 2026 latest user directive: code the all-weeks V2 surface first, then -perform final product QA only through direct -`agent-browser --auto-connect --session cheatcode-debug` UI actions plus direct -console/network/app-log inspection. Delete any V2 script that submits prompts, -drives auth/browser flows, checks accessibility/load, wraps `agent-browser`, or -gathers final product evidence. +Use the snapshot-ref workflow directly, re-snapshot after DOM changes, capture +screenshots, inspect console and resource output, and review the running app +logs. Do not add product-flow test scripts, browser wrappers, prompt drivers, +temporary validators, or package aliases that simulate product QA. Typecheck, +lint, and build are code-health gates, not product acceptance tests. -V2 production uses Vercel for `apps/web`, Cloudflare for the backend Workers, -Supabase, and hosted Daytona sandboxes. Build the sandbox image directly with -the command in `infra/containers/sandbox/README.md`; its AMD64 platform matches -Daytona's runner. Compose is local-only; it is not a production deployment path. +## Code checks -`pnpm dev` writes ignored `wrangler.local-dev.generated.jsonc` files next to -each Worker config with production-only Secrets Store bindings removed. Root -`.env.local` is the sole laptop credential source; Wrangler receives only each -Worker's allowlisted bindings, and Next retains only its own allowlisted values -after loading that root file. Production deploys still use the committed -`wrangler.jsonc` Secrets Store bindings. Each generated Worker config receives -only its own role-specific local Hyperdrive connection. Local startup rejects -Clerk live keys, non-sandbox Polar configuration, production Daytona workspace -inheritance, missing explicit snapshot/runtime settings, and cloud-control -credentials. +```bash +pnpm skills:build +pnpm typecheck +pnpm lint +pnpm build +pnpm architecture:check +pnpm deadcode +``` -Expected local endpoints: +## Database migrations -- `apps/web`: `http://127.0.0.1:3000` -- Gateway Worker: `http://127.0.0.1:8787` from one chained `wrangler dev` - process that includes gateway, agent, webhooks, and the real preview-proxy - Worker. Sandbox previews use `*.localhost:8787`; no extra domain is required. -- Wrangler inspector: `http://localhost:9239` (kept off 9229 so - `agent-browser --auto-connect` attaches to Chrome on 9222, not workerd) -- Postgres: `postgres://localhost:54322/postgres` (loopback only) +`scripts/migrate.ts` owns migration planning and execution. Every mutation +requires `--apply` and an explicit phase; `--phase=all` is read-only. -Database migrations use an expand/contract/prove/finalize sequence enforced by -`scripts/migrate.ts`: raw pre-SQL and Drizzle migrations run before the backend -release; destructive runtime contractions run only behind the closed-writer -barrier. The one-time V1 retirement is a separate `release-finalization` stream: -production can apply it only after the exact dedicated-role CLOSED Workers pass -the signed database-readiness probe, and the release repeats that probe before -opening any writer. Every apply requires an explicit `--phase=pre-deploy`, -`--phase=post-deploy`, or `--phase=release-finalization`; `--phase=all` is -read-only planning only. Use -`SUPABASE_MIGRATION_URL` from root `.env.local` locally or protected CI -environment variables in production; it is never bound to a Worker. Production -DDL is applied only by the protected release workflow after it proves the pinned -database identity matches the three reviewed Hyperdrive targets. The Supabase -dashboard and MCP are read-only verification surfaces during a release, never an -alternative mutation path. +```bash +pnpm db:migrate -- --dry-run --phase=all +pnpm db:migrate -- --apply --phase=pre-deploy +pnpm db:migrate -- --apply --phase=post-deploy +pnpm db:migrate -- --apply --phase=release-finalization +``` -`scripts/migrate.ts` validates the target before it prints or applies a -migration plan. There is no standalone database validation script in V2; the -guardrail runs inside the migration operation that needs it. +The migration command loads `.env.migrate` on an authorized operator +workstation, validates the administrative connection target and pinned database +identity before applying changes, and accepts protected process environment +values in automation. Migration credentials are never loaded by the app or +bound to a Worker. Apply expand +migrations before code that depends on them, and apply contractions only after +all deployed code is compatible with the contracted schema. -Each database-backed Worker has its own Hyperdrive and Postgres login. Update all -three reviewed configuration IDs in one validated operation when provisioning or rotating them: +Configure the three Worker Hyperdrive bindings with the existing guarded helper: ```bash -pnpm prod:set-hyperdrive -- \ +pnpm cloudflare:set-hyperdrive -- \ --gateway-id \ --agent-id \ --webhooks-id -pnpm prod:set-hyperdrive -- \ + +pnpm cloudflare:set-hyperdrive -- \ --gateway-id \ --agent-id \ --webhooks-id \ --apply ``` -The GitHub static-check workflow runs repository-wide lint, typecheck, and build gates. The -`Production Release` workflow is a manual-only `workflow_dispatch` operation -gated by the phase-specific `STAGE_PRODUCTION_CLOSED`, -`RECONCILE_PRODUCTION_CLOSED`, or `OPEN_PRODUCTION` -confirmation and the `production` environment; a push to `main` must never deploy -Cloudflare resources, promote Vercel production, or mutate the production database -by itself. Local commands stay dry-run; the protected workflow alone supplies the -apply authorization and release-job deadline. Production release is deliberately split across three -manual dispatches for the same immutable commit. `stage-closed` first builds, -stages, and health-checks an exact-SHA Vercel production candidate without -assigning domains, then applies expand-only migrations while the current release -is still open. It next closes the gateway, deploys agent/webhooks in `draining` -so already admitted work can finish, proves stable quiescence, and deploys those -writers fully `closed`. The successful stage stores the exact Vercel deployment -ID, immutable URL, release SHA, control-workflow ref, and stage run identity in a -GitHub artifact; operators hand only that stage run ID to OPEN. -`reconcile-closed` re-proves ordinary Workflows drained, then runs the exact -release-scoped workspace and Daytona-snapshot Workflow across every active user while all writers -remain closed. -The `open` dispatch downloads and validates that immutable handoff and revalidates -the frontend artifact, writer barrier, and reconciliation evidence. Before any -contraction, it creates an encrypted custom-format dump of the `drizzle`, `public`, -and `vault` schemas plus an encrypted export of the decrypted Vault records. The -job decrypts the archive, verifies every file checksum, and makes `pg_restore` -parse the complete dump before the protected artifact is accepted. Only then does -OPEN apply contractions, promote that exact deployment ID, and prove the canonical -Vercel alias resolves to it. Backend OPEN then re-proves the contracted database target, -redeploys every writer CLOSED on its dedicated role, exercises all three roles -through a signed readiness aggregate, and reopens agent and webhooks before -gateway last. The critical section rechecks the exact canonical Vercel deployment -and production web SHA immediately before gateway opens. The -Workflow derives all project paths from live V2 data and the canonical generator; -it has no operator-supplied workspace map. Product correctness is -verified through direct `agent-browser` UI operation and logs, not standalone -product-flow validation scripts. - -The protected `Production` GitHub environment must provide the -`CLOUDFLARE_ACCOUNT_ID`, `CLOUDFLARE_API_TOKEN`, -`AUDIT_ARCHIVE_CLOUDFLARE_API_TOKEN`, `DAYTONA_API_KEY`, -`SUPABASE_MIGRATION_URL`, `VERCEL_TOKEN`, -`DATABASE_BACKUP_ENCRYPTION_KEY`, and -`RELEASE_DATABASE_READINESS_SECRET` secrets. The readiness secret must contain at -least 32 UTF-8 bytes and exists only in the protected release environment and the -three production writer Workers. The backup encryption key must also contain at -least 32 UTF-8 bytes. It exists only in the protected release environment and is -needed to recover the encrypted 90-day pre-contraction artifact; it is never bound -to an application Worker. Before any release phase, -the checksum-pinned Daytona CLI verifies that the configured immutable snapshot -exists exactly once, is active with the reviewed resources and region, and was -built from unchanged sandbox image source on the release's ancestry. It also requires the shared -production workspace volume exactly once in the same organization, ready and error-free, and -rejects duplicate canonical sandbox labels so Durable Object recovery is independent of physical -sandbox names. Daytona volumes use provider-managed object-store capacity and expose no fixed -region or size field; the target is instead checked on the snapshot and every canonical sandbox. -The one-time -`CHEATCODE_MIGRATION_ATTESTATIONS` protected secret is also required while the -attested V1 external-resource contraction remains pending and should be removed -after that raw migration is recorded. Repository variables provide -the four `SUPABASE_MIGRATION_EXPECTED_*` identity values, `VERCEL_ORG_ID`, -`VERCEL_PROJECT_ID`, and `NEXT_PUBLIC_GATEWAY_URL`. Static checks use an inert, -test-shaped Clerk publishable value rather than a deployable credential. Protected deployment URLs are verified with -authenticated `vercel curl` requests using the scoped CI token, so no separate -protection-bypass secret is distributed. `VERCEL_PRODUCTION_URL` is required and -must exactly equal the canonical `https://trycheatcode.com` frontend origin. -Use one least-privilege Cloudflare release token scoped to the production account -and the exact `trycheatcode.com` zone. It needs account `Workers Scripts Write` -(the Workflows list/detail/version/instance APIs accept this permission), exact-zone -`Workers Routes Write`, exact-zone `Zone Read`, and account `Workers R2 Storage Read` -for the read-only output lifecycle verification; add only a named read permission -that the pinned Wrangler version demonstrably requests. Do not grant broad Account -or Zone Write. The backend verifies the checked-in route contract and creates only -missing exact no-script exclusions for Clerk, documentation, and `www` before the -preview wildcard is deployed. The same fail-closed release gate verifies the exact -`cheatcode-outputs` lifecycle contract: abandoned multipart uploads expire after seven -days and unindexed output objects expire after 60 days. See Cloudflare's [permission catalog](https://developers.cloudflare.com/fundamentals/api/reference/permissions/) -and [Workflows API authorization](https://developers.cloudflare.com/api/resources/workflows/methods/list/). +## Production deployment -Publish a new immutable Daytona snapshot after changing `infra/containers/sandbox/` -by dispatching the protected workflow from `main`: +The GitHub static-check workflow runs lint, typecheck, and build gates on pull +requests and `main`. Vercel's Git integration deploys `apps/web` from the +repository. Deploy the Cloudflare backend Workers from a reviewed checkout with: ```bash -gh workflow run build-snapshot.yml --ref main -f confirmation=BUILD_SNAPSHOT +pnpm cloudflare:deploy ``` -Review the emitted immutable snapshot name, then commit it in the agent Worker -configuration. A local AMD64 Docker build is an optional non-publishing check; -production Daytona credentials and snapshot publication stay in GitHub. +There is no second release orchestrator, compatibility deploy command, or hidden +workspace-reconciliation command. Schema migrations, Worker deployment, and +Vercel deployment are explicit operations; operators must sequence them using +the expand/contract rule above and verify Worker health and the production web +revision before applying destructive migrations. -Worker commands are dry-run locally: +Publish a new immutable Daytona snapshot after changing +`infra/containers/sandbox/` by dispatching the protected workflow from `main`: ```bash -pnpm deploy:workers -- --phase stage-closed -pnpm deploy:workers -- --phase open -pnpm reconcile:production-workspaces -- --release-sha <40-character-sha> +gh workflow run build-snapshot.yml --ref main -f confirmation=BUILD_SNAPSHOT ``` -Production release mutation is authorized only through the protected three-dispatch -`Production Release` workflow. Do not run a partial local `--apply`, promote a -Vercel URL manually, or flip a Worker gate in the dashboard; those paths cannot -produce the immutable cross-provider handoff and recovery evidence. +Review the emitted immutable snapshot name and commit it in the agent Worker +configuration. Production Daytona credentials and snapshot publication remain +inside that workflow. -Audit retention has a separate protected `Audit Archive` workflow because it is -maintenance rather than a release. It accepts an exact plan/apply confirmation, -uses the pinned production database identity, and receives a dedicated -bucket-scoped Cloudflare token. Production audit DDL and R2 operations cannot run +Audit retention uses the separate protected `Audit Archive` workflow because it +performs destructive database and R2 maintenance. It accepts exact plan/apply +confirmation, verifies the pinned production database identity, and uses a +dedicated bucket-scoped Cloudflare token. Production audit archival must not run from a laptop. -The committed Wrangler files are authoritative: an apply replaces Worker vars -with a generated copy of the declared config plus the exact release SHA and does -not retain undeclared dashboard vars. The `stage-closed` phase closes the gateway -first, then deploys agent and webhooks at the exact SHA in `draining`. Fresh HTTP, -scheduled, and ordinary Workflow admissions are rejected while already-admitted -Workflow, Durable Object, sandbox, and persistence continuations finish. Two stable -drain proofs must pass before agent and webhooks are redeployed `closed`; the proofs -are then repeated and the current preview proxy is deployed. Stage-only generated -configs use the transition `app_worker` Hyperdrive until role grants expand; source -and OPEN configs always retain the dedicated least-privilege Hyperdrives. The -separate reconciliation phase runs the one exact release-scoped workspace Workflow -while every writer remains closed. The outer OPEN workflow applies contractions and -promotes the selected Vercel artifact before invoking the backend OPEN half; the -backend script independently verifies both facts before changing a writer. Its -360-minute job admits mutation only when the full 230-minute stage budget (or -160-minute OPEN budget) plus a separate 50-minute fail-closed recovery reserve -still fits. Every child process, health poll, Cloudflare request, Vercel proof, and -database query is clipped to that absolute budget. If a barrier-owned step -fails, the operation re-deploys and verifies gateway, agent, and webhooks closed -before stopping; an unverified recovery is reported as an urgent unconfirmed -writer state. The local deploy script releases only the Cloudflare backend. -Production disables every Vercel Git auto-deploy and promotes the staged prebuilt -frontend only from the coordinated release workflow. - -The `app_worker` binding override is deliberately one-shot. Before mutating any -Worker, stage verifies the pinned raw-migration ledger and refuses to run once -`0059_finalize_worker_database_roles.sql` has dropped that role. The immediate -steady-state follow-up release must remove the transition Hyperdrive ID, transition -binding mode, ledger guard, and all transition-only documentation/config branches; -its draining and closed deployments use the dedicated source Hyperdrives directly. -This hard stop prevents one-time cutover compatibility from becoming a permanent -release path. - -Release-barrier recovery is deliberately operator-dispatched. If automated -close-gate recovery is unconfirmed, inspect all three writer health responses, -fix the transient cause, and rerun the complete deployment from the same -immutable commit. The forward-only preflight permits that exact gateway-closed -SHA to resume even when a partial failure left downstream gates incomplete; -no different or older release receives that repair exception. Once recovery is -verified, the sequence is idempotent and re-verifies every release identity. If the -release -cannot continue, leave the gateway closed and dispatch a reviewed, -forward-compatible `stage-closed` release that explicitly names the superseded -closed SHA. Both the currently deployed open SHA and an explicitly superseded -closed SHA must be strict Git ancestors of the candidate; only resuming the exact -same closed SHA is exempt. Never deploy older code after a schema contraction, flip the gate -open in the dashboard, or reopen it against an unverified agent version. - -The release barrier rejects new admissions without canceling a pinned Workflow -or Durable Object continuation already in flight. Before any DDL, the draining -phase explicitly waits for relationally active -AgentRuns and every retained AgentRun/webhook/ops/resource-deletion Workflow to -become quiescent across stable Cloudflare API passes. -Errored and terminated instances fail immediately because Cloudflare can restart -them on that retiring version; `complete` is the only retained status ignored by -the drain gate. `infra/cloudflare/production-workflow-inventory.json` is the -authoritative account inventory: undeclared or duplicate Cheatcode resources fail -the release, and a `retiring` entry remains scanned until its exact resource is -purged. Newly created resources must have their Cloudflare IDs pinned in the first -steady-state follow-up commit. -Persisted Durable Object changes use in-place schema reconciliation rather than -assuming the HTTP gate makes that state transition atomic. Canonical workspace -reconciliation therefore runs inside the user's durable sandbox transition fence, -which rejects new workspace operations -and waits for operations already admitted by that object before touching a -folder. - The repository contains only the active V2 implementation. The legacy V1 source tree was permanently removed on July 13, 2026 after explicit user authorization. diff --git a/apps/agent-worker/src/user-skill-packages.ts b/apps/agent-worker/src/user-skill-packages.ts index 6fd6c302..37c77b24 100644 --- a/apps/agent-worker/src/user-skill-packages.ts +++ b/apps/agent-worker/src/user-skill-packages.ts @@ -100,12 +100,6 @@ export const UserSkillPackageFileSchema = z .strict() .superRefine(validatePackageFile); -const LegacyUserSkillPackageFileSchema = z - .object({ - content: z.string().max(MAX_USER_SKILL_FILE_BYTES), - path: PackageFilePathSchema, - }) - .strict(); const RevisionSchema = z.string().regex(/^[a-f0-9]{64}$/u); const UserSkillPackageSchema = z .object({ @@ -116,14 +110,6 @@ const UserSkillPackageSchema = z }) .strict() .superRefine(validatePackage); -const LegacyUserSkillPackageSchema = z - .object({ - files: z.array(LegacyUserSkillPackageFileSchema).min(1).max(20), - revision: RevisionSchema, - skillId: z.string().uuid(), - v: z.literal(1), - }) - .strict(); const MirrorManifestSchema = z .object({ files: z.array(PackageFilePathSchema).max(MAX_USER_SKILL_PACKAGE_FILES), @@ -168,9 +154,7 @@ export async function readUserSkillPackage( const value: unknown = await object.json(); const current = UserSkillPackageSchema.safeParse(value); if (current.success && current.data.skillId === skillId) return current.data; - const legacy = LegacyUserSkillPackageSchema.safeParse(value); - if (!legacy.success || legacy.data.skillId !== skillId) return null; - return migrateLegacyPackage(legacy.data); + return null; } export async function deleteUserSkillPackage( @@ -317,17 +301,6 @@ function comparePackageFiles(left: UserSkillPackageFile, right: UserSkillPackage return left.path.localeCompare(right.path); } -function migrateLegacyPackage( - value: z.infer, -): UserSkillPackage { - return UserSkillPackageSchema.parse({ - files: value.files.map((file) => ({ ...file, encoding: "utf8" as const })), - revision: value.revision, - skillId: value.skillId, - v: 2, - }); -} - function packageCandidates( files: Array<{ path: string; relativePath: string; size: number; type: string }>, ) { diff --git a/apps/gateway-worker/README.md b/apps/gateway-worker/README.md index a8f85739..0d737114 100644 --- a/apps/gateway-worker/README.md +++ b/apps/gateway-worker/README.md @@ -10,10 +10,7 @@ from regressing a newer email, display name, or avatar. Provider key writes validate each supported BYOK provider through `packages/byok` before calling the Vault-backed RPC. Invalid keys are rejected -before plaintext is sent to storage, and new providers are blocked when the -current entitlement tier has reached its BYOK slot limit. Deleting a key reranks -the remaining provider catalog in the same transaction so a freed tier slot is -available immediately. Project and thread deletes enqueue an exact-generation +before plaintext is sent to storage. Project and thread deletes enqueue an exact-generation resource-deletion job through the webhooks Service Binding. That call uses the isolated `ccm2` resource-deletion capability and binds gateway issuer, webhooks audience, method, path, timestamp, nonce, and exact body hash. The webhooks @@ -29,12 +26,10 @@ authoritative entitlement row under the same per-user advisory-lock order as entitlement reconciliation. `QuotaTracker` supports hard `try-consume` gates for connected-tool calls and -soft `record` metering for sandbox-hours that can exceed the plan limit while -still surfacing real usage in `/v1/limits`. Limit synchronization carries the +soft `record` metering for sandbox-hours. Limit synchronization carries the entitlement row's `updatedAt` version, and the Durable Object ignores older -writes so a stale KV or Worker request cannot overwrite a newer plan. That -endpoint reports only measured quotas; request rate-limit headers remain the -canonical live rate-limit state. +writes so a stale KV or Worker request cannot overwrite a newer plan. Request +rate-limit headers remain the canonical live rate-limit state. Billing routes create Polar checkout/portal sessions and manage end-of-period cancellation/reactivation through `/v1/billing/state`, `/v1/billing/cancel`, diff --git a/apps/gateway-worker/src/account-http-routes.ts b/apps/gateway-worker/src/account-http-routes.ts index bf5c1fa7..25028a3f 100644 --- a/apps/gateway-worker/src/account-http-routes.ts +++ b/apps/gateway-worker/src/account-http-routes.ts @@ -1,10 +1,8 @@ -import { createDb } from "@cheatcode/db"; import { getActivityHistoryRoute } from "./activity-routes"; import { authenticate, readRequiredSecret } from "./authenticate"; import { myUsageRoute } from "./billing-routes"; -import type { GatewayApp, GatewayContext } from "./gateway-env"; +import type { GatewayApp } from "./gateway-env"; import { greetingRoute } from "./greeting-routes"; -import { buildLimitsSnapshot } from "./limits"; import { getMyProfileRoute, updateMyProfileRoute } from "./profile-routes"; import { rateLimit } from "./rate-limit"; import { listRecentThreadsRoute, searchWorkspaceRoute } from "./search-routes"; @@ -21,7 +19,6 @@ export function registerAccountHttpRoutes(app: GatewayApp): void { return updateMyProfileRoute(c.env, c.executionCtx, c.req.raw, userId); }); app.get("/v1/me/usage", (c) => myUsageRoute(c, { authenticate, readRequiredSecret })); - app.get("/v1/limits", async (c) => limitsRoute(c)); app.get("/v1/activity", async (c) => { const userId = await authenticate(c.req.raw, c.env, c.executionCtx); await rateLimit(c, userId, "GET /v1/activity"); @@ -43,18 +40,3 @@ export function registerAccountHttpRoutes(app: GatewayApp): void { return greetingRoute(c.env, c.executionCtx, c.req.raw, userId); }); } - -async function limitsRoute(c: GatewayContext): Promise { - const userId = await authenticate(c.req.raw, c.env, c.executionCtx); - await rateLimit(c, userId, "GET /v1/limits"); - const { db, close } = createDb(c.env.HYPERDRIVE, { - audience: "app_gateway", - signingSecret: c.env.DATABASE_CONTEXT_SIGNING_SECRET_GATEWAY, - }); - try { - const snapshot = await buildLimitsSnapshot(c.env, db, userId); - return c.json(snapshot); - } finally { - c.executionCtx.waitUntil(close()); - } -} diff --git a/apps/gateway-worker/src/limits.ts b/apps/gateway-worker/src/limits.ts index 1f8c7898..9693ce19 100644 --- a/apps/gateway-worker/src/limits.ts +++ b/apps/gateway-worker/src/limits.ts @@ -12,7 +12,7 @@ import { withUserContext, } from "@cheatcode/db"; import { APIError, createLogger, readBoundedResponseJson } from "@cheatcode/observability"; -import { type LimitsSnapshot, LimitsSnapshotSchema, type UserId } from "@cheatcode/types"; +import type { UserId } from "@cheatcode/types"; import { QUOTA_FEATURES, QUOTA_TRACKER_MAX_RESPONSE_BYTES, @@ -21,7 +21,6 @@ import { QuotaSetLimitResponseSchema, } from "@cheatcode/types/quota"; import type { QuotaTracker } from "./durable-objects/quota-tracker"; -import { QuotaSnapshotResultSchema } from "./durable-objects/quota-tracker-contract"; export interface LimitBindings { ENTITLEMENTS_CACHE: KVNamespace; @@ -29,39 +28,6 @@ export interface LimitBindings { } const ENTITLEMENT_CACHE_TTL_SECONDS = 300; -const MAX_QUOTA_SNAPSHOT_RESPONSE_BYTES = 128 * 1024; - -export async function buildLimitsSnapshot( - env: LimitBindings, - db: Database, - userId: UserId, -): Promise { - const entitlement = await resolveEntitlement(env, db, userId); - const projectCount = await withUserContext(db, userId, (tx) => countActiveProjects(tx, userId)); - const periodEnd = entitlement.currentPeriodEnd ?? defaultPeriodEnd(); - await syncQuotaLimits(env, userId, entitlement); - const quotaSnapshot = await readQuotaSnapshot(env, userId, periodEnd); - return LimitsSnapshotSchema.parse({ - quotas: { - active_projects: { - limit: entitlement.maxProjects, - period_end: periodEnd, - used: projectCount, - }, - composio_calls: quotaResponse( - quotaSnapshot[QUOTA_FEATURES.composioCalls], - entitlement.quotaComposioCalls, - periodEnd, - ), - sandbox_hours: quotaResponse( - quotaSnapshot[QUOTA_FEATURES.sandboxHours], - entitlement.quotaSandboxHours, - periodEnd, - ), - }, - }); -} - export async function enforceActiveProjectLimit(db: Database, userId: UserId): Promise { await lockUserEntitlementMutations(db, userId); await lockUserProjectMutations(db, userId); @@ -113,18 +79,6 @@ async function writeEntitlementCache( }); } -function quotaResponse( - quota: { limit: number; used: number } | undefined, - fallbackLimit: number, - periodEnd: string, -) { - return { - limit: quota?.limit ?? fallbackLimit, - period_end: periodEnd, - used: quota?.used ?? 0, - }; -} - export async function syncQuotaLimits( env: LimitBindings, userId: UserId, @@ -171,27 +125,6 @@ async function setQuotaLimit( ); } -async function readQuotaSnapshot( - env: LimitBindings, - userId: UserId, - periodEnd: string, -): Promise> { - const response = await quotaStub(env, userId).fetch("https://quota.internal/snapshot", { - body: JSON.stringify({ periodEnd }), - method: "POST", - }); - if (!response.ok) { - await response.body?.cancel().catch(() => undefined); - throw new APIError(503, "unavailable_maintenance", "Quota tracker is unavailable", { - hint: "Retry the request. If it persists, check the QuotaTracker Durable Object logs.", - retriable: true, - }); - } - return QuotaSnapshotResultSchema.parse( - await readBoundedResponseJson(response, MAX_QUOTA_SNAPSHOT_RESPONSE_BYTES, "Quota snapshot"), - ); -} - async function readCachedEntitlement( cache: KVNamespace, userId: UserId, @@ -222,8 +155,3 @@ function quotaStub(env: LimitBindings, userId: UserId): DurableObjectStub = { ActivityHistory: zodJsonSchema(ActivityHistoryResponseSchema), - LimitsSnapshot: zodJsonSchema(LimitsSnapshotSchema), UpdateUserProfile: withJsonSchemaConstraints(zodJsonSchema(UpdateUserProfileSchema, "input"), { minProperties: 1, }), @@ -51,15 +49,6 @@ export const accountRoutes: OpenApiRoute[] = [ summary: "Update current user profile", tags: ["account"], }, - { - method: "get", - operationId: "getLimits", - path: "/v1/limits", - responses: { "200": jsonResponse("Quota snapshot", schemaRef("LimitsSnapshot")) }, - security: [{ bearerAuth: [] }], - summary: "Get current plan quotas", - tags: ["account"], - }, { method: "get", operationId: "getActivityHistory", diff --git a/apps/web/README.md b/apps/web/README.md index f9c68032..d6cdedb8 100644 --- a/apps/web/README.md +++ b/apps/web/README.md @@ -58,20 +58,11 @@ no second env file under `apps/web` is used. The production CSP admits the exact validated `NEXT_PUBLIC_GATEWAY_URL`; a real Vercel Production build pins that value to `https://gateway.trycheatcode.com`, while optimized local QA can use its loopback Wrangler origin. -Production additionally admits only Vercel's exact immutable deployment origin so the -guarded release workflow can verify `/api/health` before promoting the deployment. +Production additionally admits only Vercel's exact immutable deployment origin. ## Deploy -`apps/web/vercel.json` disables automatic Git deployments for every branch. The -guarded `Production Release` workflow builds, stages, and verifies one immutable -exact-SHA Vercel production deployment without assigning production domains. It -applies expand-only migrations before closing and draining every database-writing -Worker. A successful stage persists the exact deployment ID, immutable URL, SHA, -control ref, and stage run identity as a GitHub artifact; OPEN accepts the stage -run ID, not an operator-copied URL. The separate reconciliation phase stays closed. -OPEN validates that handoff and reconciliation evidence, applies contractions, -promotes the exact deployment ID, proves `trycheatcode.com` resolves to it, and -then invokes backend OPEN. Backend OPEN redeploys all writers CLOSED on their -dedicated database roles, proves signed three-role readiness, and reopens agent and -webhooks before opening gateway last, with one final canonical alias/SHA check. +Vercel's Git integration deploys `apps/web` from the repository using the +checked-in build command. Production public environment values select the live +Clerk instance, canonical gateway, and preview hostname. Verify `/api/health` +and the deployed revision after Vercel finishes. diff --git a/apps/web/src/app/(app)/billing/page.tsx b/apps/web/src/app/(app)/billing/page.tsx deleted file mode 100644 index 04aa714b..00000000 --- a/apps/web/src/app/(app)/billing/page.tsx +++ /dev/null @@ -1,5 +0,0 @@ -import { redirect } from "next/navigation"; - -export default function BillingPage() { - redirect("/usage"); -} diff --git a/apps/web/src/components/shell/app-chrome.tsx b/apps/web/src/components/shell/app-chrome.tsx index 7dd4ecfb..5e5fddf1 100644 --- a/apps/web/src/components/shell/app-chrome.tsx +++ b/apps/web/src/components/shell/app-chrome.tsx @@ -10,7 +10,6 @@ import { useAppStore } from "@/lib/store/app-store"; const MOBILE_ROUTE_TITLES = { "/101": "Cheatcode 101", - "/billing": "Usage", "/models": "Models", "/personalization": "Personalization", "/pricing": "Pricing", diff --git a/apps/web/vercel.json b/apps/web/vercel.json index b9dabe66..c48d9bbe 100644 --- a/apps/web/vercel.json +++ b/apps/web/vercel.json @@ -1,8 +1,5 @@ { "$schema": "https://openapi.vercel.sh/vercel.json", "framework": "nextjs", - "buildCommand": "pnpm exec turbo run build --filter=@cheatcode/web", - "git": { - "deploymentEnabled": false - } + "buildCommand": "pnpm exec turbo run build --filter=@cheatcode/web" } diff --git a/compose.yaml b/compose.yaml index f979df78..31db79a8 100644 --- a/compose.yaml +++ b/compose.yaml @@ -7,75 +7,7 @@ x-app-build: &app-build x-app-image: &app-image image: cheatcode-local-dev -x-database-build: &database-build - context: . - dockerfile: infra/containers/dev/database.Dockerfile - -x-database-image: &database-image - image: cheatcode-local-database - -x-app-environment: &app-environment - CHEATCODE_LOCAL_DATABASE: "true" - SUPABASE_MIGRATION_EXPECTED_DATABASE: postgres - SUPABASE_MIGRATION_EXPECTED_HOST: database - SUPABASE_MIGRATION_EXPECTED_ROLE: postgres - SUPABASE_MIGRATION_URL: ${SUPABASE_MIGRATION_URL:?Set SUPABASE_MIGRATION_URL in .env.local} - services: - database: - <<: *database-image - build: *database-build - environment: - POSTGRES_DB: postgres - POSTGRES_PASSWORD: ${LOCAL_POSTGRES_PASSWORD:?Set LOCAL_POSTGRES_PASSWORD in .env.local} - POSTGRES_USER: postgres - healthcheck: - test: ["CMD-SHELL", "pg_isready -U postgres -d postgres"] - interval: 2s - timeout: 5s - retries: 30 - start_period: 10s - ports: - - "127.0.0.1:${LOCAL_DATABASE_PORT:-54322}:5432" - restart: unless-stopped - stop_grace_period: 30s - volumes: - # Supabase Vault ciphertext is bound to pgsodium's root key in this directory. - - database-config:/etc/postgresql-custom - - database-data:/var/lib/postgresql/data - - database-bootstrap: - <<: *database-image - command: - - bash - - -euc - - >- - psql - --set=app_gateway_password="$$APP_GATEWAY_PASSWORD" - --set=app_agent_password="$$APP_AGENT_PASSWORD" - --set=app_webhooks_password="$$APP_WEBHOOKS_PASSWORD" - --set=database_context_signing_secret_agent="$$DATABASE_CONTEXT_SIGNING_SECRET_AGENT" - --set=database_context_signing_secret_gateway="$$DATABASE_CONTEXT_SIGNING_SECRET_GATEWAY" - --set=database_context_signing_secret_webhooks="$$DATABASE_CONTEXT_SIGNING_SECRET_WEBHOOKS" - --file=/bootstrap/bootstrap-database.sql - depends_on: - database: - condition: service_healthy - environment: - APP_AGENT_PASSWORD: ${LOCAL_APP_AGENT_PASSWORD:?Set LOCAL_APP_AGENT_PASSWORD in .env.local} - APP_GATEWAY_PASSWORD: ${LOCAL_APP_GATEWAY_PASSWORD:?Set LOCAL_APP_GATEWAY_PASSWORD in .env.local} - APP_WEBHOOKS_PASSWORD: ${LOCAL_APP_WEBHOOKS_PASSWORD:?Set LOCAL_APP_WEBHOOKS_PASSWORD in .env.local} - DATABASE_CONTEXT_SIGNING_SECRET_AGENT: ${DATABASE_CONTEXT_SIGNING_SECRET_AGENT:?Set DATABASE_CONTEXT_SIGNING_SECRET_AGENT in .env.local} - DATABASE_CONTEXT_SIGNING_SECRET_GATEWAY: ${DATABASE_CONTEXT_SIGNING_SECRET_GATEWAY:?Set DATABASE_CONTEXT_SIGNING_SECRET_GATEWAY in .env.local} - DATABASE_CONTEXT_SIGNING_SECRET_WEBHOOKS: ${DATABASE_CONTEXT_SIGNING_SECRET_WEBHOOKS:?Set DATABASE_CONTEXT_SIGNING_SECRET_WEBHOOKS in .env.local} - PGDATABASE: postgres - PGHOST: database - PGPASSWORD: ${LOCAL_POSTGRES_PASSWORD:?Set LOCAL_POSTGRES_PASSWORD in .env.local} - PGUSER: postgres - restart: "no" - volumes: - - ./infra/containers/dev/bootstrap-database.sql:/bootstrap/bootstrap-database.sql:ro - app: <<: *app-image build: *app-build @@ -84,14 +16,7 @@ services: - -euc - | pnpm turbo build --filter=./packages/* - pnpm tsx scripts/migrate.ts --apply --phase=pre-deploy - pnpm tsx scripts/migrate.ts --apply --phase=post-deploy - pnpm tsx scripts/migrate.ts --apply --phase=release-finalization exec pnpm dev:services -- --bind 0.0.0.0 --skip-initial-build - depends_on: - database-bootstrap: - condition: service_completed_successfully - environment: *app-environment develop: watch: - action: sync @@ -152,5 +77,3 @@ services: volumes: app-next: app-wrangler: - database-config: - database-data: diff --git a/infra/containers/dev/bootstrap-database.sql b/infra/containers/dev/bootstrap-database.sql deleted file mode 100644 index 7cb5a987..00000000 --- a/infra/containers/dev/bootstrap-database.sql +++ /dev/null @@ -1,166 +0,0 @@ -\set ON_ERROR_STOP on - -do $$ -begin - if not exists (select 1 from pg_roles where rolname = 'supabase_admin') then - create role supabase_admin nologin superuser createdb createrole replication bypassrls; - end if; - if not exists (select 1 from pg_roles where rolname = 'service_role') then - create role service_role nologin noinherit bypassrls; - end if; - if not exists (select 1 from pg_roles where rolname = 'anon') then - create role anon nologin noinherit; - end if; - if not exists (select 1 from pg_roles where rolname = 'authenticated') then - create role authenticated nologin noinherit; - end if; -end -$$; - -alter role supabase_admin with nologin superuser createdb createrole replication bypassrls; -alter role service_role with nologin noinherit nosuperuser nocreatedb nocreaterole noreplication bypassrls; -alter role anon with nologin noinherit nosuperuser nocreatedb nocreaterole noreplication nobypassrls; -alter role authenticated with nologin noinherit nosuperuser nocreatedb nocreaterole noreplication nobypassrls; - -create schema if not exists extensions; -create schema if not exists vault; -create extension if not exists pgcrypto with schema extensions; -create extension if not exists pg_stat_statements with schema extensions; -create extension if not exists vector with schema extensions; -create extension if not exists supabase_vault with schema vault; - -select pg_catalog.set_config( - 'cheatcode.bootstrap_context_secret_agent', - :'database_context_signing_secret_agent', - false -) as bootstrap_context_secret_agent -\gset -select pg_catalog.set_config( - 'cheatcode.bootstrap_context_secret_gateway', - :'database_context_signing_secret_gateway', - false -) as bootstrap_context_secret_gateway -\gset -select pg_catalog.set_config( - 'cheatcode.bootstrap_context_secret_webhooks', - :'database_context_signing_secret_webhooks', - false -) as bootstrap_context_secret_webhooks -\gset - -do $$ -declare - context_secret text; - expected_description text; - expected_name text; - expected_role text; - existing_id uuid; - matching_secrets integer; -begin - foreach expected_role in array array['app_agent', 'app_gateway', 'app_webhooks'] - loop - context_secret := pg_catalog.current_setting( - 'cheatcode.bootstrap_context_secret_' || pg_catalog.replace(expected_role, 'app_', '') - ); - expected_name := 'cheatcode-database-context-' || - pg_catalog.replace(expected_role, '_', '-') || '-v1'; - expected_description := 'Cheatcode signed tenant context HMAC for ' || expected_role; - if pg_catalog.octet_length(context_secret) < 32 then - raise exception '% signing secret must contain at least 32 bytes', expected_role; - end if; - - select count(*) into matching_secrets - from vault.secrets - where name = expected_name; - existing_id := null; - select id into existing_id - from vault.secrets - where name = expected_name - limit 1; - - if matching_secrets > 1 then - raise exception 'duplicate % Vault secrets', expected_name; - elsif existing_id is null then - perform vault.create_secret(context_secret, expected_name, expected_description); - else - perform vault.update_secret( - existing_id, - context_secret, - expected_name, - expected_description - ); - end if; - end loop; -end -$$; - -reset cheatcode.bootstrap_context_secret_agent; -reset cheatcode.bootstrap_context_secret_gateway; -reset cheatcode.bootstrap_context_secret_webhooks; - -select format( - 'create role app_gateway login password %L noinherit nosuperuser nocreatedb nocreaterole noreplication nobypassrls', - :'app_gateway_password' -) -where not exists (select 1 from pg_roles where rolname = 'app_gateway') -\gexec - -select format( - 'alter role app_gateway with login password %L noinherit nosuperuser nocreatedb nocreaterole noreplication nobypassrls', - :'app_gateway_password' -) -\gexec - -select format( - 'create role app_agent login password %L noinherit nosuperuser nocreatedb nocreaterole noreplication nobypassrls', - :'app_agent_password' -) -where not exists (select 1 from pg_roles where rolname = 'app_agent') -\gexec - -select format( - 'alter role app_agent with login password %L noinherit nosuperuser nocreatedb nocreaterole noreplication nobypassrls', - :'app_agent_password' -) -\gexec - -select format( - 'create role app_webhooks login password %L noinherit nosuperuser nocreatedb nocreaterole noreplication nobypassrls', - :'app_webhooks_password' -) -where not exists (select 1 from pg_roles where rolname = 'app_webhooks') -\gexec - -select format( - 'alter role app_webhooks with login password %L noinherit nosuperuser nocreatedb nocreaterole noreplication nobypassrls', - :'app_webhooks_password' -) -\gexec - -do $$ -declare - role_finalization_applied boolean := false; -begin - if pg_catalog.to_regclass('public._raw_migrations') is not null then - execute - 'select exists ( - select 1 - from public._raw_migrations - where filename = - ''infra/supabase/migrations/post/0059_finalize_worker_database_roles.sql'' - )' - into role_finalization_applied; - end if; - - if not role_finalization_applied - and not exists (select 1 from pg_roles where rolname = 'app_worker') then - create role app_worker nologin noinherit nocreatedb nocreaterole; - end if; - - if exists (select 1 from pg_roles where rolname = 'app_worker') then - alter role app_worker - with nologin password null noinherit nosuperuser nocreatedb nocreaterole - noreplication nobypassrls; - end if; -end -$$; diff --git a/infra/containers/dev/database.Dockerfile b/infra/containers/dev/database.Dockerfile deleted file mode 100644 index 7f3d6a81..00000000 --- a/infra/containers/dev/database.Dockerfile +++ /dev/null @@ -1,6 +0,0 @@ -FROM ghcr.io/supabase/postgres:17.6.1.139@sha256:f6cdd6bf9b556934e8a761d92d082488db206deeec9349c4e938a72d65677e80 - -# The application uses Supabase's Vault-capable Postgres build, not the local -# Supabase API/Auth/Studio stack. Application migrations own the database schema. -RUN rm -rf /docker-entrypoint-initdb.d/* - diff --git a/infra/supabase/migrations/post/0042_harden_byok_and_data_api_boundary.sql b/infra/supabase/migrations/post/0042_harden_byok_and_data_api_boundary.sql index b78e0e50..81248fbb 100644 --- a/infra/supabase/migrations/post/0042_harden_byok_and_data_api_boundary.sql +++ b/infra/supabase/migrations/post/0042_harden_byok_and_data_api_boundary.sql @@ -49,12 +49,27 @@ $preflight$; -- The user/provider-prefixed name is the ownership proof. Normalize only those -- verified references so the deletion trigger can require one exact marker. -update vault.secrets secret - set description = 'Cheatcode V2 BYOK provider key' - from public.v2_provider_keys key - where key.vault_secret_id = secret.id - and secret.name like key.user_id::text || ':' || key.provider || ':%' - and secret.description is distinct from 'Cheatcode V2 BYOK provider key'; +-- Supabase Vault intentionally withholds direct UPDATE access from its +-- migration role. Use the extension's SECURITY DEFINER API so this remains +-- compatible with managed Vault while preserving the ownership preflight. +do $normalize_vault_descriptions$ +declare + provider_secret_id uuid; +begin + for provider_secret_id in + select secret.id + from public.v2_provider_keys key + join vault.secrets secret on secret.id = key.vault_secret_id + where secret.name like key.user_id::text || ':' || key.provider || ':%' + and secret.description is distinct from 'Cheatcode V2 BYOK provider key' + loop + perform vault.update_secret( + provider_secret_id, + new_description => 'Cheatcode V2 BYOK provider key' + ); + end loop; +end +$normalize_vault_descriptions$; create unique index v2_provider_keys_vault_secret_uidx on public.v2_provider_keys (vault_secret_id); diff --git a/infra/supabase/migrations/post/0058_expand_worker_database_roles.sql b/infra/supabase/migrations/post/0058_expand_worker_database_roles.sql index 26f19634..645febc9 100644 --- a/infra/supabase/migrations/post/0058_expand_worker_database_roles.sql +++ b/infra/supabase/migrations/post/0058_expand_worker_database_roles.sql @@ -31,6 +31,26 @@ alter role app_gateway set search_path = public, pg_catalog; alter role app_agent set search_path = public, pg_catalog; alter role app_webhooks set search_path = public, pg_catalog; +-- A runtime role must not inherit or assume any second identity. Supabase's +-- migration administrator may retain ADMIN OPTION on these managed roles; that +-- inverse edge grants the administrator access to the runtime role and does not +-- expand a Worker's privileges. +do $memberships$ +declare + membership record; +begin + for membership in + select granted.rolname as granted_role, member.rolname as member_role + from pg_auth_members relation + join pg_roles granted on granted.oid = relation.roleid + join pg_roles member on member.oid = relation.member + where member.rolname in ('app_gateway', 'app_agent', 'app_webhooks') + loop + execute format('revoke %I from %I', membership.granted_role, membership.member_role); + end loop; +end +$memberships$; + -- The final target verifier runs after post-deploy contractions. Assert the -- minimum-positive staged contract here so a typo cannot switch the closed -- release to an unusable Hyperdrive identity. @@ -65,8 +85,7 @@ begin from pg_auth_members membership join pg_roles granted on granted.oid = membership.roleid join pg_roles member on member.oid = membership.member - where granted.rolname in ('app_gateway', 'app_agent', 'app_webhooks') - or member.rolname in ('app_gateway', 'app_agent', 'app_webhooks') + where member.rolname in ('app_gateway', 'app_agent', 'app_webhooks') ) then raise exception 'worker role expansion left a runtime role membership'; end if; diff --git a/infra/supabase/migrations/post/0059_finalize_worker_database_roles.sql b/infra/supabase/migrations/post/0059_finalize_worker_database_roles.sql index 8894c939..88906270 100644 --- a/infra/supabase/migrations/post/0059_finalize_worker_database_roles.sql +++ b/infra/supabase/migrations/post/0059_finalize_worker_database_roles.sql @@ -66,10 +66,12 @@ alter role app_agent set search_path = public, pg_catalog; alter role app_webhooks set search_path = public, pg_catalog; alter role app_worker reset search_path; --- Recheck active-role membership at the irreversible boundary in case an --- operator granted a role during the staged release window. Keep the migration --- administrator's ADMIN OPTION on app_worker until DROP ROLE; PostgreSQL removes --- memberships involving the dropped role atomically. +-- Recheck outbound active-role membership at the irreversible boundary in case +-- an operator granted a second identity during the staged release window. +-- Supabase's inverse administrator memberships are required to manage these +-- roles and do not expand Worker privileges. Keep the migration administrator's +-- ADMIN OPTION on app_worker until DROP ROLE; PostgreSQL removes memberships +-- involving the dropped role atomically. do $memberships$ declare membership record; @@ -79,8 +81,7 @@ begin from pg_auth_members relation join pg_roles granted on granted.oid = relation.roleid join pg_roles member on member.oid = relation.member - where granted.rolname in ('app_gateway', 'app_agent', 'app_webhooks') - or member.rolname in ('app_gateway', 'app_agent', 'app_webhooks') + where member.rolname in ('app_gateway', 'app_agent', 'app_webhooks') loop execute format('revoke %I from %I', membership.granted_role, membership.member_role); end loop; diff --git a/knip.jsonc b/knip.jsonc index 43e3dc7e..420c441b 100644 --- a/knip.jsonc +++ b/knip.jsonc @@ -15,16 +15,14 @@ }, "entry": ["drizzle.config.ts", "src/schema/drizzle.ts"] }, - "infra/containers/sandbox/browser-driver": { - // Docker invokes the Playwright CLI to install Chromium, while both packages - // satisfy Stagehand runtime peers rather than being imported by server.js. - "ignoreDependencies": ["playwright-core", "zod"] - }, + // The package is copied into the Daytona snapshot and its default entry is + // launched by start-browser-driver.sh. + "infra/containers/sandbox/browser-driver": {}, "infra/containers/sandbox/skill-runtime": { - // The launchers resolve both binaries by their installed filesystem names/paths. "entry": ["bin/*.mjs"], - "ignoreBinaries": ["agent-browser"], - "ignoreDependencies": ["agent-browser", "tsx"] + // The runtime CLI invokes this binary by its absolute snapshot path to + // execute user-authored TypeScript tools; Knip cannot infer that call. + "ignoreDependencies": ["tsx"] } } } diff --git a/package.json b/package.json index 34b3a232..941af9b9 100644 --- a/package.json +++ b/package.json @@ -44,7 +44,6 @@ "tsx": "catalog:", "turbo": "catalog:", "typescript": "catalog:", - "vercel": "catalog:", "wrangler": "catalog:", "zod": "catalog:" } diff --git a/packages/db/README.md b/packages/db/README.md index 5a1398fd..f5a0e208 100644 --- a/packages/db/README.md +++ b/packages/db/README.md @@ -178,23 +178,19 @@ pnpm --filter @cheatcode/db typecheck ```bash pnpm --filter @cheatcode/db db:generate -pnpm tsx scripts/migrate.ts --dry-run -# Compose-local applies only: +pnpm tsx scripts/migrate.ts --dry-run --phase=all pnpm tsx scripts/migrate.ts --apply --phase=pre-deploy pnpm tsx scripts/migrate.ts --apply --phase=post-deploy pnpm tsx scripts/migrate.ts --apply --phase=release-finalization ``` -Non-local applies are rejected outside the protected `Production Release` -workflow. Production releases prepare the immutable Vercel artifact, run -`--phase=pre-deploy`, close and reconcile the exact-SHA Cloudflare backend, then -run `--phase=post-deploy` behind that barrier. OPEN promotes the verified Vercel -artifact, deploys the three dedicated-role Workers CLOSED, proves all three -role-specific signed database paths, applies the isolated -`--phase=release-finalization`, proves the exact final database target and all -three paths again, and only then opens writers. The default `all` phase is for -read-only planning; mutating multiple phases in one invocation is intentionally -refused. The migration runner pins the database host/database/role/system ID, +Production applies require the reviewed administrative connection URL and the +pinned database host/database/role/system identity values in the operator +environment. The default `all` phase is for read-only planning; mutating +multiple phases in one invocation is intentionally refused. Apply pre-deploy +expansions before dependent Workers, and apply post-deploy contractions and +release finalization only after every deployed writer is compatible with the +contracted schema. The migration runner pins the database host/database/role/system ID, holds the shared database-maintenance advisory lock, verifies raw and Drizzle history identities, executes the Drizzle journal through that same pinned session, and refuses contractions until the complete pre-deploy phase is @@ -413,9 +409,8 @@ deleted. Production archive planning and apply run only through the protected manual `Audit Archive` workflow. Select `dry-run` with `PLAN_AUDIT_ARCHIVE`, or `apply` with `APPLY_AUDIT_ARCHIVE`. Purge additionally requires -`DROP_VERIFIED_AUDIT_PARTITIONS`. A local Compose database may run the command in -dry-run mode only; laptop apply and all non-workflow production access are -rejected. +`DROP_VERIFIED_AUDIT_PARTITIONS`. Laptop and all non-workflow archive operations +are rejected. `packages/db/src/schema/drizzle.ts` is the Drizzle migration-generation barrel. It intentionally omits `auditLog`, because `v2_audit_log` is partitioned and owned @@ -428,9 +423,9 @@ by `infra/supabase/migrations/pre/0003_audit_log_partitioned.sql`. `DATABASE_CONTEXT_SIGNING_SECRET_GATEWAY`, `DATABASE_CONTEXT_SIGNING_SECRET_AGENT`, or `DATABASE_CONTEXT_SIGNING_SECRET_WEBHOOKS` binding to `createDb`. -- Migration scripts read `SUPABASE_MIGRATION_URL` from root `.env.local` in - Compose or protected process environment variables in production. Wrangler's - generated local configs do not bind it into a Worker. +- Migration scripts read `SUPABASE_MIGRATION_URL` from root `.env.migrate` on an + authorized operator workstation or protected process environment variables in + automation. The app, Compose, Next.js, and Wrangler never load this file. - Audit archive production operations receive `CLOUDFLARE_ACCOUNT_ID` and the protected `AUDIT_ARCHIVE_CLOUDFLARE_API_TOKEN`. Scope that token only to `Workers R2 Storage Bucket Item Write` on the `cheatcode-audit` bucket; it is diff --git a/packages/db/src/supabase-target-runtime-roles.ts b/packages/db/src/supabase-target-runtime-roles.ts index 0835594f..18c832d1 100644 --- a/packages/db/src/supabase-target-runtime-roles.ts +++ b/packages/db/src/supabase-target-runtime-roles.ts @@ -587,7 +587,7 @@ async function validateRoleMemberships(client: TargetQueryClient): Promise (typeof value === "string" && !value.trim() ? undefined : value), z.string().trim().min(2).max(65_536).optional(), @@ -10,7 +10,6 @@ const OptionalMigrationAttestationsSchema = z.preprocess( const MigrationEnvSchema = z .object({ - CHEATCODE_LOCAL_DATABASE: z.enum(["true", "false"]).default("false"), CHEATCODE_MIGRATION_ATTESTATIONS: OptionalMigrationAttestationsSchema, SUPABASE_MIGRATION_EXPECTED_DATABASE: z.string().trim().min(1).optional(), SUPABASE_MIGRATION_EXPECTED_HOST: z.string().trim().min(1).optional(), @@ -26,7 +25,6 @@ export interface MigrationEnv { expectedHost?: string; expectedRole?: string; expectedSystemIdentifier?: string; - isLocalDatabase: boolean; migrationAttestations?: string; } @@ -34,7 +32,6 @@ function parseMigrationEnv(env: unknown): MigrationEnv { const parsed = MigrationEnvSchema.parse(env); return { databaseUrl: parsed.SUPABASE_MIGRATION_URL, - isLocalDatabase: parsed.CHEATCODE_LOCAL_DATABASE === "true", ...(parsed.CHEATCODE_MIGRATION_ATTESTATIONS ? { migrationAttestations: parsed.CHEATCODE_MIGRATION_ATTESTATIONS } : {}), diff --git a/packages/types/src/api.ts b/packages/types/src/api.ts index f789769b..6d81ccc6 100644 --- a/packages/types/src/api.ts +++ b/packages/types/src/api.ts @@ -499,21 +499,6 @@ export const Paginated = (item: T) => }) .strict(); -export const LimitsSnapshotSchema = z - .object({ - quotas: z.record( - z.string(), - z - .object({ - limit: z.number(), - used: z.number(), - period_end: z.string(), - }) - .strict(), - ), - }) - .strict(); - export const ActivityQuerySchema = z .object({ days: z.coerce.number().int().min(1).max(366).default(30), @@ -650,7 +635,6 @@ export type ToolkitAction = z.infer; export type ToolkitActionsResponse = z.infer; export type ToolkitCatalogEntry = z.infer; export type ToolkitCategory = z.infer; -export type LimitsSnapshot = z.infer; export type ProjectMode = z.infer; export type ProjectSummary = z.infer; export type ProviderKeySummary = z.infer; diff --git a/packages/types/src/index.ts b/packages/types/src/index.ts index 923d75f9..0d0997a5 100644 --- a/packages/types/src/index.ts +++ b/packages/types/src/index.ts @@ -11,7 +11,6 @@ export type { Integration, IntegrationAccount, IntegrationCatalog, - LimitsSnapshot, ProjectMode, ProjectSummary, Provider, @@ -60,7 +59,6 @@ export { IntegrationCatalogSchema, IntegrationConnectResponseSchema, IntegrationSchema, - LimitsSnapshotSchema, MAX_USER_SKILLS, MessagePartSchema, Paginated, diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index f76da00a..cbc975f2 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -174,9 +174,6 @@ catalogs: typescript: specifier: 6.0.3 version: 6.0.3 - vercel: - specifier: 56.2.1 - version: 56.2.1 web-vitals: specifier: 5.3.0 version: 5.3.0 @@ -247,9 +244,6 @@ importers: typescript: specifier: 'catalog:' version: 6.0.3 - vercel: - specifier: 'catalog:' - version: 56.2.1(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)(bufferutil@4.1.0)(utf-8-validate@5.0.10) wrangler: specifier: 'catalog:' version: 4.111.0(@cloudflare/workers-types@5.20260716.1)(bufferutil@4.1.0)(utf-8-validate@5.0.10) @@ -417,10 +411,10 @@ importers: version: link:../../packages/ui '@clerk/nextjs': specifier: 'catalog:' - version: 7.5.19(next@16.2.10(@babel/core@7.29.7)(@opentelemetry/api@1.9.1)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(react-dom@19.2.7(react@19.2.7))(react@19.2.7) + version: 7.5.19(next@16.2.10(@babel/core@7.29.7(supports-color@10.2.2))(@opentelemetry/api@1.9.1)(babel-plugin-macros@3.1.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(react-dom@19.2.7(react@19.2.7))(react@19.2.7) '@clerk/ui': specifier: 'catalog:' - version: 1.25.4(@solana/web3.js@1.98.4(bufferutil@4.1.0)(typescript@6.0.3)(utf-8-validate@5.0.10))(@types/react@19.2.17)(bs58@6.0.0)(bufferutil@4.1.0)(react-dom@19.2.7(react@19.2.7))(react-native@0.86.0(@babel/core@7.29.7)(@types/react@19.2.17)(bufferutil@4.1.0)(react@19.2.7)(utf-8-validate@5.0.10))(react@19.2.7)(typescript@6.0.3)(utf-8-validate@5.0.10) + version: 1.25.4(@solana/web3.js@1.98.4(bufferutil@4.1.0)(typescript@6.0.3)(utf-8-validate@5.0.10))(@types/react@19.2.17)(bs58@6.0.0)(bufferutil@4.1.0)(react-dom@19.2.7(react@19.2.7))(react-native@0.86.0(@babel/core@7.29.7(supports-color@10.2.2))(@types/react@19.2.17)(bufferutil@4.1.0)(react@19.2.7)(supports-color@10.2.2)(utf-8-validate@5.0.10))(react@19.2.7)(supports-color@10.2.2)(typescript@6.0.3)(utf-8-validate@5.0.10) '@hookform/resolvers': specifier: 'catalog:' version: 5.4.0(react-hook-form@7.81.0(react@19.2.7)) @@ -441,19 +435,19 @@ importers: version: 1.1.1(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) geist: specifier: 'catalog:' - version: 1.7.2(next@16.2.10(@babel/core@7.29.7)(@opentelemetry/api@1.9.1)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)) + version: 1.7.2(next@16.2.10(@babel/core@7.29.7(supports-color@10.2.2))(@opentelemetry/api@1.9.1)(babel-plugin-macros@3.1.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)) katex: specifier: 'catalog:' version: 0.17.0 next: specifier: 'catalog:' - version: 16.2.10(@babel/core@7.29.7)(@opentelemetry/api@1.9.1)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) + version: 16.2.10(@babel/core@7.29.7(supports-color@10.2.2))(@opentelemetry/api@1.9.1)(babel-plugin-macros@3.1.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) next-themes: specifier: 'catalog:' version: 0.4.6(react-dom@19.2.7(react@19.2.7))(react@19.2.7) nuqs: specifier: 'catalog:' - version: 2.9.0(next@16.2.10(@babel/core@7.29.7)(@opentelemetry/api@1.9.1)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(react@19.2.7) + version: 2.9.0(next@16.2.10(@babel/core@7.29.7(supports-color@10.2.2))(@opentelemetry/api@1.9.1)(babel-plugin-macros@3.1.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(react@19.2.7) qrcode.react: specifier: 'catalog:' version: 4.2.0(react@19.2.7) @@ -602,7 +596,7 @@ importers: version: link:../types '@mastra/core': specifier: 'catalog:' - version: 1.51.0(ai@6.0.205(zod@4.4.3))(bufferutil@4.1.0)(express@5.2.1)(utf-8-validate@5.0.10)(zod@4.4.3) + version: 1.51.0(ai@6.0.205(zod@4.4.3))(bufferutil@4.1.0)(express@5.2.1(supports-color@10.2.2))(supports-color@10.2.2)(utf-8-validate@5.0.10)(zod@4.4.3) '@openrouter/ai-sdk-provider': specifier: 'catalog:' version: 2.9.1(ai@6.0.205(zod@4.4.3))(zod@4.4.3) @@ -874,7 +868,7 @@ importers: version: link:../sandbox-contracts '@google/genai': specifier: 'catalog:' - version: 2.12.0(@modelcontextprotocol/sdk@1.29.0(zod@4.4.3))(bufferutil@4.1.0)(utf-8-validate@5.0.10) + version: 2.12.0(@modelcontextprotocol/sdk@1.29.0(supports-color@10.2.2)(zod@4.4.3))(bufferutil@4.1.0)(supports-color@10.2.2)(utf-8-validate@5.0.10) zod: specifier: 'catalog:' version: 4.4.3 @@ -900,7 +894,7 @@ importers: devDependencies: next: specifier: 'catalog:' - version: 16.2.10(@babel/core@7.29.7)(@opentelemetry/api@1.9.1)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) + version: 16.2.10(@babel/core@7.29.7(supports-color@10.2.2))(@opentelemetry/api@1.9.1)(babel-plugin-macros@3.1.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) packages/types: dependencies: @@ -922,7 +916,7 @@ importers: version: 1.1.1(react@19.2.7) '@streamdown/math': specifier: 'catalog:' - version: 1.0.2(react@19.2.7) + version: 1.0.2(react@19.2.7)(supports-color@10.2.2) '@streamdown/mermaid': specifier: 'catalog:' version: 1.0.2(react@19.2.7) @@ -931,7 +925,7 @@ importers: version: 1.24.0(react@19.2.7) streamdown: specifier: 'catalog:' - version: 2.5.0(react-dom@19.2.7(react@19.2.7))(react@19.2.7) + version: 2.5.0(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(supports-color@10.2.2) devDependencies: '@types/react': specifier: 'catalog:' @@ -1196,9 +1190,6 @@ packages: '@braintree/sanitize-url@7.1.2': resolution: {integrity: sha512-jigsZK+sMF/cuiB7sERuo9V7N9jx+dhmHHnQyDSVdpZwVutaBu7WvNYqMDLSgFgfB30n452TP3vjDAvFC973mA==} - '@bytecodealliance/preview2-shim@0.17.6': - resolution: {integrity: sha512-n3cM88gTen5980UOBAD6xDcNNL3ocTK8keab21bpx1ONdA+ARj7uD1qoFxOWCyKlkpSi195FH+GeAut7Oc6zZw==} - '@chevrotain/types@11.1.2': resolution: {integrity: sha512-U+HFai5+zmJCkK86QsaJtoITlboZHBqrVketcO2ROv865xfCMSFpELQoz1GkX5GzME8pTa+3kbKrZHQtI0gdbw==} @@ -1382,26 +1373,6 @@ packages: '@drizzle-team/brocli@0.10.2': resolution: {integrity: sha512-z33Il7l5dKjUgGULTqBsQBQwckHh5AbIuxhdsIxDDiZAzBOrZO6q9ogcWC65kU382AfynTfgNumVcNIjuIua6w==} - '@edge-runtime/format@2.2.1': - resolution: {integrity: sha512-JQTRVuiusQLNNLe2W9tnzBlV/GvSVcozLl4XZHk5swnRZ/v6jp8TqR8P7sqmJsQqblDZ3EztcWmLDbhRje/+8g==} - engines: {node: '>=16'} - - '@edge-runtime/node-utils@2.3.0': - resolution: {integrity: sha512-uUtx8BFoO1hNxtHjp3eqVPC/mWImGb2exOfGjMLUoipuWgjej+f4o/VP4bUI8U40gu7Teogd5VTeZUkGvJSPOQ==} - engines: {node: '>=16'} - - '@edge-runtime/ponyfill@2.4.2': - resolution: {integrity: sha512-oN17GjFr69chu6sDLvXxdhg0Qe8EZviGSuqzR9qOiKh4MhFYGdBBcqRNzdmYeAdeRzOW2mM9yil4RftUQ7sUOA==} - engines: {node: '>=16'} - - '@edge-runtime/primitives@4.1.0': - resolution: {integrity: sha512-Vw0lbJ2lvRUqc7/soqygUX216Xb8T3WBZ987oywz6aJqRxcwSVWwr9e+Nqo2m9bxobA9mdbWNNoRY6S9eko1EQ==} - engines: {node: '>=16'} - - '@edge-runtime/vm@3.2.0': - resolution: {integrity: sha512-0dEVyRLM/lG4gp1R/Ik5bfPl/1wX00xFwd5KcNH602tzBa09oF7pbTKETEhR1GjZ75K6OJnYFu8II2dyMhONMw==} - engines: {node: '>=16'} - '@emnapi/core@1.11.0': resolution: {integrity: sha512-l9Oo58x0HOP5znGzVhYW9U3e5wVuA4LAZU2AGezTmkhO1CgQRFDhDg4nneHsu/t3WniXg9QrG2nIXL/ZS8ln8Q==} @@ -1475,12 +1446,6 @@ packages: cpu: [ppc64] os: [aix] - '@esbuild/aix-ppc64@0.27.0': - resolution: {integrity: sha512-KuZrd2hRjz01y5JK9mEBSD3Vj3mbCvemhT466rSuJYeE/hjuBrHfjjcjMdTm/sz7au+++sdbJZJmuBwQLuw68A==} - engines: {node: '>=18'} - cpu: [ppc64] - os: [aix] - '@esbuild/aix-ppc64@0.28.1': resolution: {integrity: sha512-Svl7tq8k/08+p6CXPpRjQ1fKX+1odH/BQbb48fV6fj3CWHhsoIOoY87w1oHXm0qEpkIK3ZfVgp0hed3XBXzXMQ==} engines: {node: '>=18'} @@ -1493,12 +1458,6 @@ packages: cpu: [arm64] os: [android] - '@esbuild/android-arm64@0.27.0': - resolution: {integrity: sha512-CC3vt4+1xZrs97/PKDkl0yN7w8edvU2vZvAFGD16n9F0Cvniy5qvzRXjfO1l94efczkkQE6g1x0i73Qf5uthOQ==} - engines: {node: '>=18'} - cpu: [arm64] - os: [android] - '@esbuild/android-arm64@0.28.1': resolution: {integrity: sha512-34EGEbCIAgosYz6goLcopX6Mo7NyGv9tfwEM2/7Ce2VcVRk568iSvniGWcUXIy7wEDR1wzolcxcriFVrWYcwBg==} engines: {node: '>=18'} @@ -1511,12 +1470,6 @@ packages: cpu: [arm] os: [android] - '@esbuild/android-arm@0.27.0': - resolution: {integrity: sha512-j67aezrPNYWJEOHUNLPj9maeJte7uSMM6gMoxfPC9hOg8N02JuQi/T7ewumf4tNvJadFkvLZMlAq73b9uwdMyQ==} - engines: {node: '>=18'} - cpu: [arm] - os: [android] - '@esbuild/android-arm@0.28.1': resolution: {integrity: sha512-0k2F129Xdio1TdJfzJ8sy1Q47vUD2NnwdhiAf7drUN1EBTfPf4hsFCtmMgu/6m8JSzsBrlmVjudMBQqOfG8usQ==} engines: {node: '>=18'} @@ -1529,12 +1482,6 @@ packages: cpu: [x64] os: [android] - '@esbuild/android-x64@0.27.0': - resolution: {integrity: sha512-wurMkF1nmQajBO1+0CJmcN17U4BP6GqNSROP8t0X/Jiw2ltYGLHpEksp9MpoBqkrFR3kv2/te6Sha26k3+yZ9Q==} - engines: {node: '>=18'} - cpu: [x64] - os: [android] - '@esbuild/android-x64@0.28.1': resolution: {integrity: sha512-dbwY7ltSMDWsRatcRpCnES4F+im88OCUgGZjy52shC7GqHRE/cYlxNbB4Z4UpJswpcc4Qxd2oE/ufM0p61IKng==} engines: {node: '>=18'} @@ -1547,12 +1494,6 @@ packages: cpu: [arm64] os: [darwin] - '@esbuild/darwin-arm64@0.27.0': - resolution: {integrity: sha512-uJOQKYCcHhg07DL7i8MzjvS2LaP7W7Pn/7uA0B5S1EnqAirJtbyw4yC5jQ5qcFjHK9l6o/MX9QisBg12kNkdHg==} - engines: {node: '>=18'} - cpu: [arm64] - os: [darwin] - '@esbuild/darwin-arm64@0.28.1': resolution: {integrity: sha512-TZbWkQY7kvTAXbXUT7uVACR5cMHsDiSz9z7ZKAX/RTq/WJEk3QyRr0wZpNhBDX+/0CtdqUIJlOiodQcta6tY3Q==} engines: {node: '>=18'} @@ -1565,12 +1506,6 @@ packages: cpu: [x64] os: [darwin] - '@esbuild/darwin-x64@0.27.0': - resolution: {integrity: sha512-8mG6arH3yB/4ZXiEnXof5MK72dE6zM9cDvUcPtxhUZsDjESl9JipZYW60C3JGreKCEP+p8P/72r69m4AZGJd5g==} - engines: {node: '>=18'} - cpu: [x64] - os: [darwin] - '@esbuild/darwin-x64@0.28.1': resolution: {integrity: sha512-zfdzgK9ACBNZLI/CyHTOx81SyNbM6YXn7rxSgX97VjyiPl9W1i4Ka4fgKECEoFCKGpvBj5qArWIGgQjOwkgskQ==} engines: {node: '>=18'} @@ -1583,12 +1518,6 @@ packages: cpu: [arm64] os: [freebsd] - '@esbuild/freebsd-arm64@0.27.0': - resolution: {integrity: sha512-9FHtyO988CwNMMOE3YIeci+UV+x5Zy8fI2qHNpsEtSF83YPBmE8UWmfYAQg6Ux7Gsmd4FejZqnEUZCMGaNQHQw==} - engines: {node: '>=18'} - cpu: [arm64] - os: [freebsd] - '@esbuild/freebsd-arm64@0.28.1': resolution: {integrity: sha512-wG2EA8ENdEI0qhkSZMjfqrdY+ziCYCPMmtZjjIwOmXFjmyzEHn+UUxk5of+SYsjtfs3VpnlC7QLzSI5hY/rOAw==} engines: {node: '>=18'} @@ -1601,12 +1530,6 @@ packages: cpu: [x64] os: [freebsd] - '@esbuild/freebsd-x64@0.27.0': - resolution: {integrity: sha512-zCMeMXI4HS/tXvJz8vWGexpZj2YVtRAihHLk1imZj4efx1BQzN76YFeKqlDr3bUWI26wHwLWPd3rwh6pe4EV7g==} - engines: {node: '>=18'} - cpu: [x64] - os: [freebsd] - '@esbuild/freebsd-x64@0.28.1': resolution: {integrity: sha512-i7dZ9vQgnvSCzi/rYCXNgtF/U+eKZNJBzu3eTQbRgHnM7tNSizLOkRFAl3qzVc/Op/u5YkHHa4pf/3DOYHthLQ==} engines: {node: '>=18'} @@ -1619,12 +1542,6 @@ packages: cpu: [arm64] os: [linux] - '@esbuild/linux-arm64@0.27.0': - resolution: {integrity: sha512-AS18v0V+vZiLJyi/4LphvBE+OIX682Pu7ZYNsdUHyUKSoRwdnOsMf6FDekwoAFKej14WAkOef3zAORJgAtXnlQ==} - engines: {node: '>=18'} - cpu: [arm64] - os: [linux] - '@esbuild/linux-arm64@0.28.1': resolution: {integrity: sha512-yHs+0uc8+nvEAfAfxrWQKK5peSNzBc4PegcMO0EJ2hT71uA7vB8Ihg2e77R2P7SG5uYjPbHlLLmve4LLLRCf0g==} engines: {node: '>=18'} @@ -1637,12 +1554,6 @@ packages: cpu: [arm] os: [linux] - '@esbuild/linux-arm@0.27.0': - resolution: {integrity: sha512-t76XLQDpxgmq2cNXKTVEB7O7YMb42atj2Re2Haf45HkaUpjM2J0UuJZDuaGbPbamzZ7bawyGFUkodL+zcE+jvQ==} - engines: {node: '>=18'} - cpu: [arm] - os: [linux] - '@esbuild/linux-arm@0.28.1': resolution: {integrity: sha512-qVXBOHQS+d5Y722GwJzJUtOLlX7km3CraOaGormF1pDtPd2C/l1SHRPgjLunLGe51Sh5YYWKMFDyV4SxgMQYTQ==} engines: {node: '>=18'} @@ -1655,12 +1566,6 @@ packages: cpu: [ia32] os: [linux] - '@esbuild/linux-ia32@0.27.0': - resolution: {integrity: sha512-Mz1jxqm/kfgKkc/KLHC5qIujMvnnarD9ra1cEcrs7qshTUSksPihGrWHVG5+osAIQ68577Zpww7SGapmzSt4Nw==} - engines: {node: '>=18'} - cpu: [ia32] - os: [linux] - '@esbuild/linux-ia32@0.28.1': resolution: {integrity: sha512-d1z4ZuP0ajrfz/FhGT4vv278rX8KnPPJx8i5+AtK7TYbx9Le9F1hyzurZpkEyjkGa9dUGhQow4C1NmeGvqxN2w==} engines: {node: '>=18'} @@ -1673,12 +1578,6 @@ packages: cpu: [loong64] os: [linux] - '@esbuild/linux-loong64@0.27.0': - resolution: {integrity: sha512-QbEREjdJeIreIAbdG2hLU1yXm1uu+LTdzoq1KCo4G4pFOLlvIspBm36QrQOar9LFduavoWX2msNFAAAY9j4BDg==} - engines: {node: '>=18'} - cpu: [loong64] - os: [linux] - '@esbuild/linux-loong64@0.28.1': resolution: {integrity: sha512-M5sRjUVZrkm1OAPR3dlOYzNmN+loZKGVi1VUQGrwuqLcbR6qeAz+famMhjASeH3YVKvZz+zT1jlh/keC3Rj/lg==} engines: {node: '>=18'} @@ -1691,12 +1590,6 @@ packages: cpu: [mips64el] os: [linux] - '@esbuild/linux-mips64el@0.27.0': - resolution: {integrity: sha512-sJz3zRNe4tO2wxvDpH/HYJilb6+2YJxo/ZNbVdtFiKDufzWq4JmKAiHy9iGoLjAV7r/W32VgaHGkk35cUXlNOg==} - engines: {node: '>=18'} - cpu: [mips64el] - os: [linux] - '@esbuild/linux-mips64el@0.28.1': resolution: {integrity: sha512-mRObBZeHh2OxcBFPWE/FjylkRgZdYuiTR3vaTozquCGOH14iP9oN4x4Ge81CoIDYQrXmIxpFumJBu5MtZpnQJQ==} engines: {node: '>=18'} @@ -1709,12 +1602,6 @@ packages: cpu: [ppc64] os: [linux] - '@esbuild/linux-ppc64@0.27.0': - resolution: {integrity: sha512-z9N10FBD0DCS2dmSABDBb5TLAyF1/ydVb+N4pi88T45efQ/w4ohr/F/QYCkxDPnkhkp6AIpIcQKQ8F0ANoA2JA==} - engines: {node: '>=18'} - cpu: [ppc64] - os: [linux] - '@esbuild/linux-ppc64@0.28.1': resolution: {integrity: sha512-slScBsMAb3GFDcdrCgLwZtPYRoH2H/youv10QiZyRjmsP48fznoveWytSgCI/R0ZcUgpc0ZhIUEx6LHts8yrfQ==} engines: {node: '>=18'} @@ -1727,12 +1614,6 @@ packages: cpu: [riscv64] os: [linux] - '@esbuild/linux-riscv64@0.27.0': - resolution: {integrity: sha512-pQdyAIZ0BWIC5GyvVFn5awDiO14TkT/19FTmFcPdDec94KJ1uZcmFs21Fo8auMXzD4Tt+diXu1LW1gHus9fhFQ==} - engines: {node: '>=18'} - cpu: [riscv64] - os: [linux] - '@esbuild/linux-riscv64@0.28.1': resolution: {integrity: sha512-kw0owk1o0GFETUJyW0jc0G4Yzs0BHZn0JDZ8JRT088vjJYX777BAs1fDGxAC+q831qOs2DTC96mNsG2opdfyyQ==} engines: {node: '>=18'} @@ -1745,12 +1626,6 @@ packages: cpu: [s390x] os: [linux] - '@esbuild/linux-s390x@0.27.0': - resolution: {integrity: sha512-hPlRWR4eIDDEci953RI1BLZitgi5uqcsjKMxwYfmi4LcwyWo2IcRP+lThVnKjNtk90pLS8nKdroXYOqW+QQH+w==} - engines: {node: '>=18'} - cpu: [s390x] - os: [linux] - '@esbuild/linux-s390x@0.28.1': resolution: {integrity: sha512-/lAIjX8aYFRByhh6L5rYtPEDRqa9de/4V/juOXcta5frjvzXO4/sqEtyytse0g3zZFuWu5cDN0MkLz2qRDD2Ag==} engines: {node: '>=18'} @@ -1763,12 +1638,6 @@ packages: cpu: [x64] os: [linux] - '@esbuild/linux-x64@0.27.0': - resolution: {integrity: sha512-1hBWx4OUJE2cab++aVZ7pObD6s+DK4mPGpemtnAORBvb5l/g5xFGk0vc0PjSkrDs0XaXj9yyob3d14XqvnQ4gw==} - engines: {node: '>=18'} - cpu: [x64] - os: [linux] - '@esbuild/linux-x64@0.28.1': resolution: {integrity: sha512-u/anNYF2mmVOEDwLtnQ1wOr3EZ9sTNGLWrsYGYwHWzGA3Si84IOkHXlbWTD1NB+9/1lcnweYKO54uhxZydNzfA==} engines: {node: '>=18'} @@ -1781,12 +1650,6 @@ packages: cpu: [arm64] os: [netbsd] - '@esbuild/netbsd-arm64@0.27.0': - resolution: {integrity: sha512-6m0sfQfxfQfy1qRuecMkJlf1cIzTOgyaeXaiVaaki8/v+WB+U4hc6ik15ZW6TAllRlg/WuQXxWj1jx6C+dfy3w==} - engines: {node: '>=18'} - cpu: [arm64] - os: [netbsd] - '@esbuild/netbsd-arm64@0.28.1': resolution: {integrity: sha512-oks0DYbLwWMmaakTsCb+zL4E+aHRVLom9IJZOAthMQEPiQmydXHkziYEsGYRx0uNV/IjEKGAV941JzH02pflqw==} engines: {node: '>=18'} @@ -1799,12 +1662,6 @@ packages: cpu: [x64] os: [netbsd] - '@esbuild/netbsd-x64@0.27.0': - resolution: {integrity: sha512-xbbOdfn06FtcJ9d0ShxxvSn2iUsGd/lgPIO2V3VZIPDbEaIj1/3nBBe1AwuEZKXVXkMmpr6LUAgMkLD/4D2PPA==} - engines: {node: '>=18'} - cpu: [x64] - os: [netbsd] - '@esbuild/netbsd-x64@0.28.1': resolution: {integrity: sha512-aeL6lAnN89Hz43Mlh1G8ARasbuoYvSITDEx0tHh5b7jJnHcssqgjy9Yx430GDpmCa6OyrKoS0aNRjKundRizGg==} engines: {node: '>=18'} @@ -1817,12 +1674,6 @@ packages: cpu: [arm64] os: [openbsd] - '@esbuild/openbsd-arm64@0.27.0': - resolution: {integrity: sha512-fWgqR8uNbCQ/GGv0yhzttj6sU/9Z5/Sv/VGU3F5OuXK6J6SlriONKrQ7tNlwBrJZXRYk5jUhuWvF7GYzGguBZQ==} - engines: {node: '>=18'} - cpu: [arm64] - os: [openbsd] - '@esbuild/openbsd-arm64@0.28.1': resolution: {integrity: sha512-MEFJe5C3R8pwXdZ5Y21oo6m7ePiS0d9pWucn99O/wvyJZChoIQKrQDxKrGeW8F5+T0okTHesAmDeiHDTIq0V/Q==} engines: {node: '>=18'} @@ -1835,12 +1686,6 @@ packages: cpu: [x64] os: [openbsd] - '@esbuild/openbsd-x64@0.27.0': - resolution: {integrity: sha512-aCwlRdSNMNxkGGqQajMUza6uXzR/U0dIl1QmLjPtRbLOx3Gy3otfFu/VjATy4yQzo9yFDGTxYDo1FfAD9oRD2A==} - engines: {node: '>=18'} - cpu: [x64] - os: [openbsd] - '@esbuild/openbsd-x64@0.28.1': resolution: {integrity: sha512-i/ZLIOafE0Z8cI/XANJAixoJL/uRAoS2xOA3rb0xN+KK0K177cMAsQYkzHtBrtMXAKuAc7HGgcWiZ/sRC1Nxgw==} engines: {node: '>=18'} @@ -1853,12 +1698,6 @@ packages: cpu: [arm64] os: [openharmony] - '@esbuild/openharmony-arm64@0.27.0': - resolution: {integrity: sha512-nyvsBccxNAsNYz2jVFYwEGuRRomqZ149A39SHWk4hV0jWxKM0hjBPm3AmdxcbHiFLbBSwG6SbpIcUbXjgyECfA==} - engines: {node: '>=18'} - cpu: [arm64] - os: [openharmony] - '@esbuild/openharmony-arm64@0.28.1': resolution: {integrity: sha512-ge+Z7EXFNt2BO1oAMsVpiQ8EwndV9i1xXerAeTIK7AtPs3bKFXQM7nlRxDSIUIMeueR1CNXxqztLzdNeReKBJg==} engines: {node: '>=18'} @@ -1871,12 +1710,6 @@ packages: cpu: [x64] os: [sunos] - '@esbuild/sunos-x64@0.27.0': - resolution: {integrity: sha512-Q1KY1iJafM+UX6CFEL+F4HRTgygmEW568YMqDA5UV97AuZSm21b7SXIrRJDwXWPzr8MGr75fUZPV67FdtMHlHA==} - engines: {node: '>=18'} - cpu: [x64] - os: [sunos] - '@esbuild/sunos-x64@0.28.1': resolution: {integrity: sha512-BEjgtECkL3vY+SaSQ6nzVfiALUeFxpawyp8Jmf5PtYhf1Ug40N1h/hxlhts+f1FvSvarEigdxS3BlSMI2PJLcQ==} engines: {node: '>=18'} @@ -1889,12 +1722,6 @@ packages: cpu: [arm64] os: [win32] - '@esbuild/win32-arm64@0.27.0': - resolution: {integrity: sha512-W1eyGNi6d+8kOmZIwi/EDjrL9nxQIQ0MiGqe/AWc6+IaHloxHSGoeRgDRKHFISThLmsewZ5nHFvGFWdBYlgKPg==} - engines: {node: '>=18'} - cpu: [arm64] - os: [win32] - '@esbuild/win32-arm64@0.28.1': resolution: {integrity: sha512-lCv9eK/H6ZJWbE7bh2nw54CZ9M2nupBxJcTsdk/QQnWkdSjKGuxmmH8/GWrlT1eMmZfn4dGcCjRte397WqfQXA==} engines: {node: '>=18'} @@ -1907,12 +1734,6 @@ packages: cpu: [ia32] os: [win32] - '@esbuild/win32-ia32@0.27.0': - resolution: {integrity: sha512-30z1aKL9h22kQhilnYkORFYt+3wp7yZsHWus+wSKAJR8JtdfI76LJ4SBdMsCopTR3z/ORqVu5L1vtnHZWVj4cQ==} - engines: {node: '>=18'} - cpu: [ia32] - os: [win32] - '@esbuild/win32-ia32@0.28.1': resolution: {integrity: sha512-zvb/mB2bSCoJOpoCBgYKKpX6YM6mJBlBUVUtVj41DlZJVEB6/0CKlRYxP5wWl1C1ILiCoAU5wZZ4q1P3qeS6Eg==} engines: {node: '>=18'} @@ -1925,12 +1746,6 @@ packages: cpu: [x64] os: [win32] - '@esbuild/win32-x64@0.27.0': - resolution: {integrity: sha512-aIitBcjQeyOhMTImhLZmtxfdOcuNRpwlPNmlFKPcHQYPhEssw75Cl1TSXJXpMkzaua9FUetx/4OQKq7eJul5Cg==} - engines: {node: '>=18'} - cpu: [x64] - os: [win32] - '@esbuild/win32-x64@0.28.1': resolution: {integrity: sha512-bm4Mowrv+GXMlpWX++EcXw/iLyd1o3+bJkC2DkWXYVvgZCqD/bSj9ctZeAMC3cIxgjRVR2Dufaiu4YPxr5gW1A==} engines: {node: '>=18'} @@ -2140,10 +1955,6 @@ packages: cpu: [x64] os: [win32] - '@isaacs/fs-minipass@4.0.1': - resolution: {integrity: sha512-wgm9Ehl2jpeqP3zw/7mo3kRHFp5MEDhqAdwy1fTGkHAwnkGOVsgpvQhL8B5n1qlb01jV3n/bI0ZfZp5lWA1k4w==} - engines: {node: '>=18.0.0'} - '@isaacs/ttlcache@1.4.1': resolution: {integrity: sha512-RQgQ4uQ+pLbqXfOmieB91ejmLwvSgv9nLx6sT6sD83s7umBypgg+OIBOBbEUiJXrfpnp9j0mRhYYdzp9uqq3lA==} engines: {node: '>=12'} @@ -2190,11 +2001,6 @@ packages: resolution: {integrity: sha512-qC72D4+CDdjGqJvkFMMEAtancHUQ7/d/tAiHf64z8MopFDmcrtbcJuerDtFceuAfQJ2pDSfCKCtbqoGBNnwg0w==} engines: {node: '>=8'} - '@mapbox/node-pre-gyp@2.0.3': - resolution: {integrity: sha512-uwPAhccfFJlsfCxMYTwOdVfOz3xqyj8xYL3zJj8f0pb30tLohnnFPhLuqp4/qoEz8sNxe4SESZedcBojRefIzg==} - engines: {node: '>=18'} - hasBin: true - '@mastra/core@1.51.0': resolution: {integrity: sha512-MmY2/cA97y8KSJ9w/GlMRKTBNsglO1XHI5zv8oVcYQhGr6AFZ/jnAbKzjIEEBrofRca7TXYYvg6YeZCCY4fBvg==} engines: {node: '>=22.13.0'} @@ -2220,87 +2026,6 @@ packages: '@cfworker/json-schema': optional: true - '@napi-rs/keyring-darwin-arm64@1.2.0': - resolution: {integrity: sha512-CA83rDeyONDADO25JLZsh3eHY8yTEtm/RS6ecPsY+1v+dSawzT9GywBMu2r6uOp1IEhQs/xAfxgybGAFr17lSA==} - engines: {node: '>= 10'} - cpu: [arm64] - os: [darwin] - - '@napi-rs/keyring-darwin-x64@1.2.0': - resolution: {integrity: sha512-dBHjtKRCj4ByfnfqIKIJLo3wueQNJhLRyuxtX/rR4K/XtcS7VLlRD01XXizjpre54vpmObj63w+ZpHG+mGM8uA==} - engines: {node: '>= 10'} - cpu: [x64] - os: [darwin] - - '@napi-rs/keyring-freebsd-x64@1.2.0': - resolution: {integrity: sha512-DPZFr11pNJSnaoh0dzSUNF+T6ORhy3CkzUT3uGixbA71cAOPJ24iG8e8QrLOkuC/StWrAku3gBnth2XMWOcR3Q==} - engines: {node: '>= 10'} - cpu: [x64] - os: [freebsd] - - '@napi-rs/keyring-linux-arm-gnueabihf@1.2.0': - resolution: {integrity: sha512-8xv6DyEMlvRdqJzp4F39RLUmmTQsLcGYYv/3eIfZNZN1O5257tHxTrFYqAsny659rJJK2EKeSa7PhrSibQqRWQ==} - engines: {node: '>= 10'} - cpu: [arm] - os: [linux] - - '@napi-rs/keyring-linux-arm64-gnu@1.2.0': - resolution: {integrity: sha512-Pu2V6Py+PBt7inryEecirl+t+ti8bhZphjP+W68iVaXHUxLdWmkgL9KI1VkbRHbx5k8K5Tew9OP218YfmVguIA==} - engines: {node: '>= 10'} - cpu: [arm64] - os: [linux] - libc: [glibc] - - '@napi-rs/keyring-linux-arm64-musl@1.2.0': - resolution: {integrity: sha512-8TDymrpC4P1a9iDEaegT7RnrkmrJN5eNZh3Im3UEV5PPYGtrb82CRxsuFohthCWQW81O483u1bu+25+XA4nKUw==} - engines: {node: '>= 10'} - cpu: [arm64] - os: [linux] - libc: [musl] - - '@napi-rs/keyring-linux-riscv64-gnu@1.2.0': - resolution: {integrity: sha512-awsB5XI1MYL7fwfjMDGmKOWvNgJEO7mM7iVEMS0fO39f0kVJnOSjlu7RHcXAF0LOx+0VfF3oxbWqJmZbvRCRHw==} - engines: {node: '>= 10'} - cpu: [riscv64] - os: [linux] - libc: [glibc] - - '@napi-rs/keyring-linux-x64-gnu@1.2.0': - resolution: {integrity: sha512-8E+7z4tbxSJXxIBqA+vfB1CGajpCDRyTyqXkBig5NtASrv4YXcntSo96Iah2QDR5zD3dSTsmbqJudcj9rKKuHQ==} - engines: {node: '>= 10'} - cpu: [x64] - os: [linux] - libc: [glibc] - - '@napi-rs/keyring-linux-x64-musl@1.2.0': - resolution: {integrity: sha512-8RZ8yVEnmWr/3BxKgBSzmgntI7lNEsY7xouNfOsQkuVAiCNmxzJwETspzK3PQ2FHtDxgz5vHQDEBVGMyM4hUHA==} - engines: {node: '>= 10'} - cpu: [x64] - os: [linux] - libc: [musl] - - '@napi-rs/keyring-win32-arm64-msvc@1.2.0': - resolution: {integrity: sha512-AoqaDZpQ6KPE19VBLpxyORcp+yWmHI9Xs9Oo0PJ4mfHma4nFSLVdhAubJCxdlNptHe5va7ghGCHj3L9Akiv4cQ==} - engines: {node: '>= 10'} - cpu: [arm64] - os: [win32] - - '@napi-rs/keyring-win32-ia32-msvc@1.2.0': - resolution: {integrity: sha512-EYL+EEI6bCsYi3LfwcQdnX3P/R76ENKNn+3PmpGheBsUFLuh0gQuP7aMVHM4rTw6UVe+L3vCLZSptq/oeacz0A==} - engines: {node: '>= 10'} - cpu: [ia32] - os: [win32] - - '@napi-rs/keyring-win32-x64-msvc@1.2.0': - resolution: {integrity: sha512-xFlx/TsmqmCwNU9v+AVnEJgoEAlBYgzFF5Ihz1rMpPAt4qQWWkMd4sCyM1gMJ1A/GnRqRegDiQpwaxGUHFtFbA==} - engines: {node: '>= 10'} - cpu: [x64] - os: [win32] - - '@napi-rs/keyring@1.2.0': - resolution: {integrity: sha512-d0d4Oyxm+v980PEq1ZH2PmS6cvpMIRc17eYpiU47KgW+lzxklMu6+HOEOPmxrpnF/XQZ0+Q78I2mgMhbIIo/dg==} - engines: {node: '>= 10'} - '@napi-rs/wasm-runtime@1.1.5': resolution: {integrity: sha512-AWPoBRJ9tsnVhor4sjO7rkni+7p+2IAEFj6cx06UgP10jkQHqay/36uRV/bFkgrh18D9vb4cr8Q0Pthskgzy+Q==} peerDependencies: @@ -2370,18 +2095,6 @@ packages: resolution: {integrity: sha512-jCs9ldd7NwzpgXDIf6P3+NrHh9/sD6CQdxHyjQI+h/6rDNo88ypBxxz45UDuZHz9r3tNz7N/VInSVoVdtXEI4A==} engines: {node: ^14.21.3 || >=16} - '@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'} - '@openrouter/ai-sdk-provider@2.9.1': resolution: {integrity: sha512-okgq07Vdkro4CB5INbfhwa0e6VR1HS7sidNcfHN/MeXLJvX1JmQCff/vem6tcxwT9r1avyFrXSlfv9B28D/Pag==} engines: {node: '>=18'} @@ -2520,9 +2233,6 @@ packages: cpu: [x64] os: [win32] - '@oxc-project/types@0.110.0': - resolution: {integrity: sha512-6Ct21OIlrEnFEJk5LT4e63pk3btsI6/TusD/GStLi7wYlGJNOl1GI9qvXAnRAxQU9zqA2Oz+UwhfTOU2rPZVow==} - '@oxc-project/types@0.137.0': resolution: {integrity: sha512-WT+Gb24i8hmvo85AIv2oEYouEXkRlKAlT9WaCa3TfLgNCN+GhrJOGZuIlMouAh38Qe4QOx26eUOVsq70qXrywA==} @@ -2629,171 +2339,44 @@ packages: cpu: [x64] os: [win32] - '@oxc-transform/binding-android-arm-eabi@0.111.0': - resolution: {integrity: sha512-NdFLicvorfHYu0g2ftjVJaH7+Dz27AQUNJOq8t/ofRUoWmczOodgUCHx8C1M1htCN4ZmhS/FzfSy6yd/UngJGg==} - engines: {node: ^20.19.0 || >=22.12.0} - cpu: [arm] - os: [android] + '@polar-sh/sdk@0.48.1': + resolution: {integrity: sha512-FmU6eLJRXJ6Zau0IkqscfkFta8xxYbFV1VD9zzS2Ki2btCuFmUyPZOkHOXU77R892h2zyBegLnHS7jrOhMN1Sw==} - '@oxc-transform/binding-android-arm64@0.111.0': - resolution: {integrity: sha512-J2v9ajarD2FYlhHtjbgZUFsS2Kvi27pPxDWLGCy7i8tO60xBoozX9/ktSgbiE/QsxKaUhfv4zVKppKWUo71PmQ==} - engines: {node: ^20.19.0 || >=22.12.0} - cpu: [arm64] - os: [android] + '@poppinss/colors@4.1.6': + resolution: {integrity: sha512-H9xkIdFswbS8n1d6vmRd8+c10t2Qe+rZITbbDHHkQixH5+2x1FDGmi/0K+WgWiqQFKPSlIYB7jlH6Kpfn6Fleg==} - '@oxc-transform/binding-darwin-arm64@0.111.0': - resolution: {integrity: sha512-2UYmExxpXzmiHTldhNlosWqG9Nc4US51K0GB9RLcGlTE23WO33vVo1NVAKwxPE+KYuhffwDnRYTovTMUjzwvZA==} - engines: {node: ^20.19.0 || >=22.12.0} - cpu: [arm64] - os: [darwin] + '@poppinss/dumper@0.6.5': + resolution: {integrity: sha512-NBdYIb90J7LfOI32dOewKI1r7wnkiH6m920puQ3qHUeZkxNkQiFnXVWoE6YtFSv6QOiPPf7ys6i+HWWecDz7sw==} - '@oxc-transform/binding-darwin-x64@0.111.0': - resolution: {integrity: sha512-c4YRwfLV8Pj/ToiTCbndZaHxM2BD4W3bltr/fjXZcGypEK+U2RZFDL7tIZYT/tyneAC9hCORZKDaKhLLNuzPtA==} - engines: {node: ^20.19.0 || >=22.12.0} - cpu: [x64] - os: [darwin] + '@poppinss/exception@1.2.3': + resolution: {integrity: sha512-dCED+QRChTVatE9ibtoaxc+WkdzOSjYTKi/+uacHWIsfodVfpsueo3+DKpgU5Px8qXjgmXkSvhXvSCz3fnP9lw==} - '@oxc-transform/binding-freebsd-x64@0.111.0': - resolution: {integrity: sha512-prvf32IcEuLnLZbNVomFosBu0CaZpyj3YsZ6epbOgJy8iJjfLsXBb+PrkO/NBKzjuJoJa2+u7jFKRE0KT7gSOw==} - engines: {node: ^20.19.0 || >=22.12.0} - cpu: [x64] - os: [freebsd] + '@posthog/core@1.32.3': + resolution: {integrity: sha512-vwOEMfZvGv5XxNWV7p9I52NSmvFNMhyW2IHpIoUHW5jLkgUrknzJW1H/qxVGSIrNNVQkfsoaDFzDhJdg10pgrA==} - '@oxc-transform/binding-linux-arm-gnueabihf@0.111.0': - resolution: {integrity: sha512-+se3579Wp7VOk8TnTZCpT+obTAyzOw2b/UuoM0+51LtbzCSfjKxd4A+o7zRl7GyPrPZvx57KdbMOC9rWB1xNrw==} - engines: {node: ^20.19.0 || >=22.12.0} - cpu: [arm] - os: [linux] + '@posthog/types@1.386.3': + resolution: {integrity: sha512-LqJoiQi2eyWn7rCUgnn+D+F3Efp6+04o72bjSX6kWHx0nFaYNC/nJuAIRliDTY/X7GPIUAaHAcSjbMI/9wfX1Q==} - '@oxc-transform/binding-linux-arm-musleabihf@0.111.0': - resolution: {integrity: sha512-8faC99pStqaSDPK/vBgaagAHUeL0LcIzfeSjSiDTtvPGc3AwZIeqC1tx3CP15a6tWXjdgS/IUw4IjfD5HweBlg==} - engines: {node: ^20.19.0 || >=22.12.0} - cpu: [arm] - os: [linux] + '@protobufjs/aspromise@1.1.2': + resolution: {integrity: sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ==} - '@oxc-transform/binding-linux-arm64-gnu@0.111.0': - resolution: {integrity: sha512-HtfQv8j796gzI5WR/RaP6IMwFpiL0vYeDrUA1hYhlPzTHKYan/B+NlhJkKOI1v24yAl/yEnFmb0pxIxLNqBqBA==} - engines: {node: ^20.19.0 || >=22.12.0} - cpu: [arm64] - os: [linux] - libc: [glibc] + '@protobufjs/base64@1.1.2': + resolution: {integrity: sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==} - '@oxc-transform/binding-linux-arm64-musl@0.111.0': - resolution: {integrity: sha512-ARyfcMCIxVLDgLf6FQ8Oo1/TFySpnquV+vuSb4SFQZfYDqgMklzwv0NYXxWD0aB6enElyMDs6pQJBzusEKCkOg==} - engines: {node: ^20.19.0 || >=22.12.0} - cpu: [arm64] - os: [linux] - libc: [musl] + '@protobufjs/codegen@2.0.5': + resolution: {integrity: sha512-zgXFLzW3Ap33e6d0Wlj4MGIm6Ce8O89n/apUaGNB/jx+hw+ruWEp7EwGUshdLKVRCxZW12fp9r40E1mQrf/34g==} - '@oxc-transform/binding-linux-ppc64-gnu@0.111.0': - resolution: {integrity: sha512-PKpVRrSvBNK3tv9vwxn7Fay+QWZmprPGlEqJcseBJllQc5mFMD4Q/w44chu5iR9ZLsDeSHzmNWrgMLo4J0sP2A==} - engines: {node: ^20.19.0 || >=22.12.0} - cpu: [ppc64] - os: [linux] - libc: [glibc] + '@protobufjs/eventemitter@1.1.1': + resolution: {integrity: sha512-vW1GmwMZNnL+gMRaovlh9yZX74kc+TTU3FObkkurpMaRtBfLP3ldjS9KQWlwZgraRE0+dheEEoAxdzcJQ8eXZg==} - '@oxc-transform/binding-linux-riscv64-gnu@0.111.0': - resolution: {integrity: sha512-9bUml6rMgk+8GF5rvNMweFspkzSiCjqpV6HduwiUyexqfGKrmjq9IZOxxvnzkE2RGdQzP507NNDoVNYIoGQYuA==} - engines: {node: ^20.19.0 || >=22.12.0} - cpu: [riscv64] - os: [linux] - libc: [glibc] + '@protobufjs/fetch@1.1.1': + resolution: {integrity: sha512-GpptLrs57adMSuHi3VNj0mAF8dwh36LMaYF6XyJ6JMWlVsc+t42tm1HSEDmOs3A8fC9yyeisgLhsTVQokOZ0zw==} - '@oxc-transform/binding-linux-riscv64-musl@0.111.0': - resolution: {integrity: sha512-tzGCohGxaeH6KRJjfYZd4mHCoGjCai6N+zZi1Oj+tSDMAAdyvs1dRzYb8PNUGnybCg3Te4M0jLPzWZaSmnKraQ==} - engines: {node: ^20.19.0 || >=22.12.0} - cpu: [riscv64] - os: [linux] - libc: [musl] + '@protobufjs/float@1.0.2': + resolution: {integrity: sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ==} - '@oxc-transform/binding-linux-s390x-gnu@0.111.0': - resolution: {integrity: sha512-sRG1KIfZ0ML9ToEygm5aM/5GJeBA05uHlgW3M0Rx/DNWMJhuahLmqWuB02aWSmijndLfEKXLLXIWhvWupRG8lg==} - engines: {node: ^20.19.0 || >=22.12.0} - cpu: [s390x] - os: [linux] - libc: [glibc] - - '@oxc-transform/binding-linux-x64-gnu@0.111.0': - resolution: {integrity: sha512-T0Kmvk+OdlUdABdXlDIf3MQReMzFfC75NEI9x8jxy5pKooACEFg0k0V8gyR3gq4DzbDCfucqFQDWNvSgIopAbQ==} - engines: {node: ^20.19.0 || >=22.12.0} - cpu: [x64] - os: [linux] - libc: [glibc] - - '@oxc-transform/binding-linux-x64-musl@0.111.0': - resolution: {integrity: sha512-EgoutsP3YfqzN8a9vpc9+XLr0bmBl0dA3uOMiP77+exATCPxJBkJErGmQkqk6RtTp5XqX6q6mB45qWQyKk6+pA==} - engines: {node: ^20.19.0 || >=22.12.0} - cpu: [x64] - os: [linux] - libc: [musl] - - '@oxc-transform/binding-openharmony-arm64@0.111.0': - resolution: {integrity: sha512-d8J+ejc0j5WODbVwR/QxFaI65YMwvG0W53vcVCHwa6ja1QI5lpe7sislrefG2EFYgnY47voMRzlXab5d4gEcDw==} - engines: {node: ^20.19.0 || >=22.12.0} - cpu: [arm64] - os: [openharmony] - - '@oxc-transform/binding-wasm32-wasi@0.111.0': - resolution: {integrity: sha512-HtyIZO8IwuZgXkyb56rysLz1OLbfLhEu8A3BeuyJXzUseAj96yuxgGt3cu3QYX9AXb9pfRfA3c/fvlhsDugyTQ==} - engines: {node: '>=14.0.0'} - cpu: [wasm32] - - '@oxc-transform/binding-win32-arm64-msvc@0.111.0': - resolution: {integrity: sha512-YeP80Riptc0MkVVBnzbmoFuHVLUq278+MbwNo9sTLALmzTIJxJqN029xRZbG+Bun7aLsoZhmRnm3J5JZ1NcP5w==} - engines: {node: ^20.19.0 || >=22.12.0} - cpu: [arm64] - os: [win32] - - '@oxc-transform/binding-win32-ia32-msvc@0.111.0': - resolution: {integrity: sha512-A6ztCXpoSHt6PbvGAFqB0MLOcGG7ZJrrPXY1iB0zfOB1atLgI8oNePGxPl03XSbwpiTsFJ1oo8rj9DXcBzgT9g==} - engines: {node: ^20.19.0 || >=22.12.0} - cpu: [ia32] - os: [win32] - - '@oxc-transform/binding-win32-x64-msvc@0.111.0': - resolution: {integrity: sha512-QddKW4kBH0Wof6Y65eYCNHM4iOGmCTWLLcNYY1FGswhzmTYOUVXajNROR+iCXAOFnOF0ldtsR79SyqgyHH1Bgg==} - engines: {node: ^20.19.0 || >=22.12.0} - cpu: [x64] - os: [win32] - - '@polar-sh/sdk@0.48.1': - resolution: {integrity: sha512-FmU6eLJRXJ6Zau0IkqscfkFta8xxYbFV1VD9zzS2Ki2btCuFmUyPZOkHOXU77R892h2zyBegLnHS7jrOhMN1Sw==} - - '@poppinss/colors@4.1.6': - resolution: {integrity: sha512-H9xkIdFswbS8n1d6vmRd8+c10t2Qe+rZITbbDHHkQixH5+2x1FDGmi/0K+WgWiqQFKPSlIYB7jlH6Kpfn6Fleg==} - - '@poppinss/dumper@0.6.5': - resolution: {integrity: sha512-NBdYIb90J7LfOI32dOewKI1r7wnkiH6m920puQ3qHUeZkxNkQiFnXVWoE6YtFSv6QOiPPf7ys6i+HWWecDz7sw==} - - '@poppinss/exception@1.2.3': - resolution: {integrity: sha512-dCED+QRChTVatE9ibtoaxc+WkdzOSjYTKi/+uacHWIsfodVfpsueo3+DKpgU5Px8qXjgmXkSvhXvSCz3fnP9lw==} - - '@posthog/core@1.32.3': - resolution: {integrity: sha512-vwOEMfZvGv5XxNWV7p9I52NSmvFNMhyW2IHpIoUHW5jLkgUrknzJW1H/qxVGSIrNNVQkfsoaDFzDhJdg10pgrA==} - - '@posthog/types@1.386.3': - resolution: {integrity: sha512-LqJoiQi2eyWn7rCUgnn+D+F3Efp6+04o72bjSX6kWHx0nFaYNC/nJuAIRliDTY/X7GPIUAaHAcSjbMI/9wfX1Q==} - - '@protobufjs/aspromise@1.1.2': - resolution: {integrity: sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ==} - - '@protobufjs/base64@1.1.2': - resolution: {integrity: sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==} - - '@protobufjs/codegen@2.0.5': - resolution: {integrity: sha512-zgXFLzW3Ap33e6d0Wlj4MGIm6Ce8O89n/apUaGNB/jx+hw+ruWEp7EwGUshdLKVRCxZW12fp9r40E1mQrf/34g==} - - '@protobufjs/eventemitter@1.1.1': - resolution: {integrity: sha512-vW1GmwMZNnL+gMRaovlh9yZX74kc+TTU3FObkkurpMaRtBfLP3ldjS9KQWlwZgraRE0+dheEEoAxdzcJQ8eXZg==} - - '@protobufjs/fetch@1.1.1': - resolution: {integrity: sha512-GpptLrs57adMSuHi3VNj0mAF8dwh36LMaYF6XyJ6JMWlVsc+t42tm1HSEDmOs3A8fC9yyeisgLhsTVQokOZ0zw==} - - '@protobufjs/float@1.0.2': - resolution: {integrity: sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ==} - - '@protobufjs/path@1.1.2': - resolution: {integrity: sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA==} + '@protobufjs/path@1.1.2': + resolution: {integrity: sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA==} '@protobufjs/pool@1.1.0': resolution: {integrity: sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw==} @@ -3033,103 +2616,6 @@ packages: '@types/react': optional: true - '@renovatebot/pep440@4.2.1': - resolution: {integrity: sha512-2FK1hF93Fuf1laSdfiEmJvSJPVIDHEUTz68D3Fi9s0IZrrpaEcj6pTFBTbYvsgC5du4ogrtf5re7yMMvrKNgkw==} - engines: {node: ^20.9.0 || ^22.11.0 || ^24, pnpm: ^10.0.0} - - '@rolldown/binding-android-arm64@1.0.0-rc.1': - resolution: {integrity: sha512-He6ZoCfv5D7dlRbrhNBkuMVIHd0GDnjJwbICE1OWpG7G3S2gmJ+eXkcNLJjzjNDpeI2aRy56ou39AJM9AD8YFA==} - engines: {node: ^20.19.0 || >=22.12.0} - cpu: [arm64] - os: [android] - - '@rolldown/binding-darwin-arm64@1.0.0-rc.1': - resolution: {integrity: sha512-YzJdn08kSOXnj85ghHauH2iHpOJ6eSmstdRTLyaziDcUxe9SyQJgGyx/5jDIhDvtOcNvMm2Ju7m19+S/Rm1jFg==} - engines: {node: ^20.19.0 || >=22.12.0} - cpu: [arm64] - os: [darwin] - - '@rolldown/binding-darwin-x64@1.0.0-rc.1': - resolution: {integrity: sha512-cIvAbqM+ZVV6lBSKSBtlNqH5iCiW933t1q8j0H66B3sjbe8AxIRetVqfGgcHcJtMzBIkIALlL9fcDrElWLJQcQ==} - engines: {node: ^20.19.0 || >=22.12.0} - cpu: [x64] - os: [darwin] - - '@rolldown/binding-freebsd-x64@1.0.0-rc.1': - resolution: {integrity: sha512-rVt+B1B/qmKwCl1XD02wKfgh3vQPXRXdB/TicV2w6g7RVAM1+cZcpigwhLarqiVCxDObFZ7UgXCxPC7tpDoRog==} - engines: {node: ^20.19.0 || >=22.12.0} - cpu: [x64] - os: [freebsd] - - '@rolldown/binding-linux-arm-gnueabihf@1.0.0-rc.1': - resolution: {integrity: sha512-69YKwJJBOFprQa1GktPgbuBOfnn+EGxu8sBJ1TjPER+zhSpYeaU4N07uqmyBiksOLGXsMegymuecLobfz03h8Q==} - engines: {node: ^20.19.0 || >=22.12.0} - cpu: [arm] - os: [linux] - - '@rolldown/binding-linux-arm64-gnu@1.0.0-rc.1': - resolution: {integrity: sha512-9JDhHUf3WcLfnViFWm+TyorqUtnSAHaCzlSNmMOq824prVuuzDOK91K0Hl8DUcEb9M5x2O+d2/jmBMsetRIn3g==} - engines: {node: ^20.19.0 || >=22.12.0} - cpu: [arm64] - os: [linux] - libc: [glibc] - - '@rolldown/binding-linux-arm64-musl@1.0.0-rc.1': - resolution: {integrity: sha512-UvApLEGholmxw/HIwmUnLq3CwdydbhaHHllvWiCTNbyGom7wTwOtz5OAQbAKZYyiEOeIXZNPkM7nA4Dtng7CLw==} - engines: {node: ^20.19.0 || >=22.12.0} - cpu: [arm64] - os: [linux] - libc: [musl] - - '@rolldown/binding-linux-x64-gnu@1.0.0-rc.1': - resolution: {integrity: sha512-uVctNgZHiGnJx5Fij7wHLhgw4uyZBVi6mykeWKOqE7bVy9Hcxn0fM/IuqdMwk6hXlaf9fFShDTFz2+YejP+x0A==} - engines: {node: ^20.19.0 || >=22.12.0} - cpu: [x64] - os: [linux] - libc: [glibc] - - '@rolldown/binding-linux-x64-musl@1.0.0-rc.1': - resolution: {integrity: sha512-T6Eg0xWwcxd/MzBcuv4Z37YVbUbJxy5cMNnbIt/Yr99wFwli30O4BPlY8hKeGyn6lWNtU0QioBS46lVzDN38bg==} - engines: {node: ^20.19.0 || >=22.12.0} - cpu: [x64] - os: [linux] - libc: [musl] - - '@rolldown/binding-openharmony-arm64@1.0.0-rc.1': - resolution: {integrity: sha512-PuGZVS2xNJyLADeh2F04b+Cz4NwvpglbtWACgrDOa5YDTEHKwmiTDjoD5eZ9/ptXtcpeFrMqD2H4Zn33KAh1Eg==} - engines: {node: ^20.19.0 || >=22.12.0} - cpu: [arm64] - os: [openharmony] - - '@rolldown/binding-wasm32-wasi@1.0.0-rc.1': - resolution: {integrity: sha512-2mOxY562ihHlz9lEXuaGEIDCZ1vI+zyFdtsoa3M62xsEunDXQE+DVPO4S4x5MPK9tKulG/aFcA/IH5eVN257Cw==} - engines: {node: '>=14.0.0'} - cpu: [wasm32] - - '@rolldown/binding-win32-arm64-msvc@1.0.0-rc.1': - resolution: {integrity: sha512-oQVOP5cfAWZwRD0Q3nGn/cA9FW3KhMMuQ0NIndALAe6obqjLhqYVYDiGGRGrxvnjJsVbpLwR14gIUYnpIcHR1g==} - engines: {node: ^20.19.0 || >=22.12.0} - cpu: [arm64] - os: [win32] - - '@rolldown/binding-win32-x64-msvc@1.0.0-rc.1': - resolution: {integrity: sha512-Ydsxxx++FNOuov3wCBPaYjZrEvKOOGq3k+BF4BPridhg2pENfitSRD2TEuQ8i33bp5VptuNdC9IzxRKU031z5A==} - engines: {node: ^20.19.0 || >=22.12.0} - cpu: [x64] - os: [win32] - - '@rolldown/pluginutils@1.0.0-rc.1': - resolution: {integrity: sha512-UTBjtTxVOhodhzFVp/ayITaTETRHPUPYZPXQe0WU0wOgxghMojXxYjOiPOauKIYNWJAWS2fd7gJgGQK8GU8vDA==} - - '@rollup/pluginutils@5.4.0': - resolution: {integrity: sha512-MfPp06CjRLfXQ3wY0R8vJDYBy/MvVcc9OulEfR0B8Iv9ko+GCNaRZ+EpJYFl27LhKsZK0o420sYCRHCjfCgeUg==} - engines: {node: '>=14.0.0'} - peerDependencies: - rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 - peerDependenciesMeta: - rollup: - optional: true - '@sec-ant/readable-stream@0.4.1': resolution: {integrity: sha512-831qok9r2t8AlxLko40y2ebgSDhenenCatLVeW/uBtnHPyhHOvG0C7TvfgecV+wHzIm5KUICgzmVpWS+IMEAeg==} @@ -3162,9 +2648,6 @@ packages: resolution: {integrity: sha512-fCTuZK4QBa+39Oz9l4OGfJfz+GpwCp3AqO7Zch3to99xHPgstVsRFpeQ8LNd2o1Gv8raL2mCFwiaHh7bFSp5DQ==} engines: {node: '>=22'} - '@sinclair/typebox@0.25.24': - resolution: {integrity: sha512-XJfwUVUKDHF5ugKwIcxEgc9k8b7HbznCp6eUfWgu710hMPNIO4aw4/zB5RogDQz8nd6gyCDpU9O/m6qYEWY6yQ==} - '@sinclair/typebox@0.27.10': resolution: {integrity: sha512-MTBk/3jGLNB2tVxv6uLlFh1iu64iYOQ2PbdOSK3NW8JZsmlaOh2q6sdtKowBhfw8QFLmYNzTW4/oK4uATIi6ZA==} @@ -3844,13 +3327,6 @@ packages: '@tanstack/virtual-core@3.17.4': resolution: {integrity: sha512-nGm5KteqxasUdThLc2izl6dHUqLv0LQj7Nuyo5gYalTPf/U8a9ermvsl7reT+6ioBW1l8WfpP/mcU338nLXpqw==} - '@tootallnate/once@2.0.1': - resolution: {integrity: sha512-HqmEUIGRJ5fSXchkVgR5F7qn48bDBzv0kWj/Kfu5e6uci4UlEeng4331LnBkWffb++Ei3FOVLxo8JJWMFBDMeQ==} - engines: {node: '>= 10'} - - '@ts-morph/common@0.11.1': - resolution: {integrity: sha512-7hWZS0NRpEsNV8vWJzg7FEz6V8MaLNeJOmwmghqUXTpzk16V1LLZhdo+4QvE/+zv4cVci0OviuJFnqhEfoV3+g==} - '@turbo/darwin-64@2.10.5': resolution: {integrity: sha512-ENvPwy3x5yS7MwNYHeWjqOBXkwIMp39Pd+/zXC6PoiNzF8EIvvLZOZZ+ny6L9x4WgS5vxUii2LM5gM+zjPdnWw==} cpu: [x64] @@ -4004,9 +3480,6 @@ packages: '@types/istanbul-reports@3.0.4': resolution: {integrity: sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==} - '@types/json-schema@7.0.15': - resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} - '@types/katex@0.16.8': resolution: {integrity: sha512-trgaNyfU+Xh2Tc+ABIb44a5AYUpicB3uwirOioeOkNPPbmgRNtcWyDeeFRzjPZENO9Vq8gvVqfhaaXWLlevVwg==} @@ -4019,9 +3492,6 @@ packages: '@types/node@12.20.55': resolution: {integrity: sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==} - '@types/node@20.11.0': - resolution: {integrity: sha512-o9bjXmDNcF7GbM4CNQpmi+TutCgap/K3w1JyKgxAjqx41zp9qlIAVFi0IhCNsJcXolEqLWhbFbEeL0PvYm4pcQ==} - '@types/node@22.20.1': resolution: {integrity: sha512-EANqOCF9QFyra+4pfxUcX9STKJpCLjMbObVzljIJomAWSnuSIEAvyzEU53GaajbXJEgdh0iEcPL+DGvpUd4k1Q==} @@ -4078,118 +3548,10 @@ packages: '@uwdata/flechette@2.5.0': resolution: {integrity: sha512-NSB9xIPVsxpEcnEvtLfbvH/tEqZWiD4bfdz/yBUAUBEe0Z0C3zmA/Y4GOCsLZe4ChxiHaedFBZzVdUxQ+NVcMA==} - '@vercel/backends@0.8.24': - resolution: {integrity: sha512-ru94AtJLD2YTh/7HtfGT/x2v1Bkf45WQDv2NX+Wn9xEIDwMWr7Ez/2khNk2v5e9cWKxATvWdc0T7SBozQCsQOA==} - - '@vercel/blob@2.4.0': - resolution: {integrity: sha512-ncQ8CRb6XoEAYJwjOTRGpACRT6h/AeY+/33gLyeVxG5BIes27OPm1jmqreF+JHjcTmGhClTP+kBpmyLfbV0xew==} - engines: {node: '>=20.0.0'} - - '@vercel/build-utils@13.33.1': - resolution: {integrity: sha512-RWgKPsof4ctRzC755Aaeb81HzSGtUt4nL2FuhDNCpvMpASsq+HeqBF696N31TMa5nWbMZA1RtW6tzRnZKsSQqQ==} - - '@vercel/cervel@0.1.32': - resolution: {integrity: sha512-1zJ9PBKq9CWvcaNV7jd5di0UsHNMd1qqLeXRtTLXrtZ+3vt4wuYtqzB1KvQtrbo61juit8WH+Fx27vUA/rJJRw==} - hasBin: true - - '@vercel/cli-auth@0.3.0': - resolution: {integrity: sha512-9nsdxUpV/L+9CBVGeRw/Qby2azhi2lk01jp0aTH+Hxx2U61+mAmbi5qChHnrbEmQdx2Ih7dp4LxO3nj1Q7f/5Q==} - - '@vercel/cli-config@0.2.0': - resolution: {integrity: sha512-fJRRRB7734BDuXZ89yBEaA2ncYhH7bWX30mk04W80J6VAfQc+4iB8lyzAdaGpFV3/vNlkt9VZt+/uoQoWX6UsQ==} - - '@vercel/container@0.0.5': - resolution: {integrity: sha512-kYggcjyTsBKbQi3wM647x6g174OrriK9oNQ/KI9LGAwBKqZ75g4zir88cNO3FcLiA6RJ4pQe74wyAisxhDgR5A==} - - '@vercel/detect-agent@1.2.3': - resolution: {integrity: sha512-VYNCgUc0nOmC4WJmWw9GkrKdfr8Zl4/rxhC5SvgacBgxiW9W/9NRttUoHHXV8xdII3MaRgkZZVX8Ikzc/Jmjag==} - engines: {node: '>=14'} - - '@vercel/elysia@0.1.101': - resolution: {integrity: sha512-HY7l5j/P77T3kcewxwHKar4gpOsPhq/WDfKwfYV3w6ucJFMTLALGNxTabiso2irwhhl09VU4+ODT6LrWZR9N+g==} - - '@vercel/error-utils@2.2.0': - resolution: {integrity: sha512-WFWiRxfPzoYWYifaj4thSKvAaZZwUOqD4k5GINRIgZgCiS2E3iAJbWbIsIZmkQdTecWFHcWGA6q48CjisgpOBA==} - - '@vercel/express@0.1.115': - resolution: {integrity: sha512-cpp/xB10Tg4nUi2qhQ9W3drdZLMpgjqFMCa9jDcfydaPTx0MvNPHOvPSC98b02u1CizfOLeK1X1WR0nNhmNe2Q==} - - '@vercel/fastify@0.1.104': - resolution: {integrity: sha512-Ki7NMVeXHgJ3b3fEA7jXGIIBj8fdOG2yvelL1GMM+8hJZiND5AhtLOJfkd4yCnVVGUKy7ZTqWoh3GjogkHqPGQ==} - - '@vercel/fun@1.3.0': - resolution: {integrity: sha512-8erw9uPe0dFg45THkNxmjtvMX143SkZebmjgSVbcM3XCkXu3RIiBaJMcMNG8aaS+rnTuw8+d4De9HVT0M/r3wg==} - engines: {node: '>= 18'} - - '@vercel/gatsby-plugin-vercel-analytics@1.0.11': - resolution: {integrity: sha512-iTEA0vY6RBPuEzkwUTVzSHDATo1aF6bdLLspI68mQ/BTbi5UQEGjpjyzdKOVcSYApDtFU6M6vypZ1t4vIEnHvw==} - - '@vercel/gatsby-plugin-vercel-builder@2.2.27': - resolution: {integrity: sha512-LOZqPATFiIEbDsIRfgQ+dsq/kBDyJlf9GZBrRVaT1TVrD5djZs4DVuKt875UIYWnvk3Qso8c+wKBiJs6lI+vvQ==} - - '@vercel/go@3.10.2': - resolution: {integrity: sha512-ZJqx1GzD1qqMkI92jEHp04zCwbZ7tNwcgI58e7t8HiYvILwCZ4Rvq0hfjTjsk+0Zn8A369qs4eAHvCYu38uB5A==} - - '@vercel/h3@0.1.110': - resolution: {integrity: sha512-z77PlJ04mWCZKWaiIS+FDjjfvEW6t78JUP05cj1lsNPbkOsvZXM94KS1D9c0oxFuexm9oKvbz6t3B4UpsFUi/g==} - - '@vercel/hono@0.2.104': - resolution: {integrity: sha512-nK1a5EIT5g4HfuoNu4l3EfO+A7zHPwVfAmp7GCqAoeqOPeH7KheQ34QDWFz4xBZUNUiCk52R+0duZyGPa9IlNw==} - - '@vercel/hydrogen@1.4.0': - resolution: {integrity: sha512-gf3ELmAjcia7WNGNHAB/rFWFU0l5fJ7mTMgGC5hvcCjSIE4kp8WWuGYiTQgQ8W6GF/1FJAxa2J3BhY/yxjY8tA==} - - '@vercel/koa@0.1.84': - resolution: {integrity: sha512-1pY4aTCScbNGzfnrHhlnZ/e8dryhUGhZuczV4OhCLNR8qPwOhxt2ELzHypon4j0qFIN/wXvGCLYbDjfbvujbeQ==} - - '@vercel/nestjs@0.2.105': - resolution: {integrity: sha512-7SFTVaUh06v0MCwIPwDkwyv88giOAj4TEkc1g5h8/i59GTqQpv9qQOp2EFKDudYAIhoTp7Bbbs5SiqLfnd0OCQ==} - - '@vercel/next@4.20.4': - resolution: {integrity: sha512-8m39IHTAgO5yE9xAW8lnjv01z8qQ/qm1FWqyg46qBH2GPtn0MHEME2tAbRy+XzV0Q2J/KGSwmH4xFq8FgECAfg==} - - '@vercel/nft@1.10.0': - resolution: {integrity: sha512-iLOW4fcsgkipfOh2Bw3wB38YDfxTlxr7+j4uFeui2OswkNT28jIitS/aMce7tS0mef1YPQ8zLIDYr3a0aahNrA==} - engines: {node: '>=20'} - hasBin: true - - '@vercel/node@5.8.25': - resolution: {integrity: sha512-C/Hkrc16Nla2EIZSfoarKCo2AuNr90i/A6OwbVyDcGs+62obWVjCfOW2VvTZ2Xb0MJmEDWWHguYiVvkWZ8/KDw==} - '@vercel/oidc@3.2.0': resolution: {integrity: sha512-UycprH3T6n3jH0k44NHMa7pnFHGu/N05MjojYr+Mc6I7obkoLIJujSWwin1pCvdy/eOxrI/l3uDLQsmcrOb4ug==} engines: {node: '>= 20'} - '@vercel/prepare-flags-definitions@0.3.0': - resolution: {integrity: sha512-/0nuDFwYje0nqZnVKSd2VfJy2wOPQwbkas1qO1JQgtb0sLl+EeSCW4O9hrvq55pN50PNlAZ/APSeWHIAT9ZGHg==} - - '@vercel/python-analysis@0.11.1': - resolution: {integrity: sha512-EPPLuXJQhIDUx08H9nG76AR2HSgBquwe3OAX5s2w20M923iaWeGGVkhX/4yZ89CJfXEZgE1Aj/mX7lVHOVIcYA==} - - '@vercel/python@6.50.0': - resolution: {integrity: sha512-OhM5Se6FfA2LFi0peMQXNfzy5jOZiqhFaIMSqSEe8BTD5Htz0aypLDWjWPREasNh2lXdpZGHP5ZJ0kSfurqGOA==} - - '@vercel/redwood@2.5.0': - resolution: {integrity: sha512-LO24CbieV57rGAqrq5n5z/B+fMYeUqbE/Ge3qMeKRuS3Q9awgcBgB6WYLCe8crHM7XJd5AZjbuyoS/6k3r0X0w==} - - '@vercel/remix-builder@5.9.1': - resolution: {integrity: sha512-s0SpfV640nmQ1BsKCPMYugGrH/V+319onTo2ZILSmsy6NTBlmeN0zJU9nPcP8dBEotGqtp68NfOlOUUdrVBzkw==} - - '@vercel/ruby@2.5.1': - resolution: {integrity: sha512-e23M7pfORQyyxSUmeQ8PqEnyLJ4swhtNrnyctU5E02UCaUYFm5YAdNfdPYRP4It874H4Wyvm+LV8u7CPBrfcPA==} - - '@vercel/rust@1.4.0': - resolution: {integrity: sha512-/zRJtaf3pvdxZ7+tShmIo8StdbkCSBDcY7Gy7LOwNTIxm6GU9vkS+BlCwJHkOu6qNkbcSRH6ZQIeo4vNmqzKdQ==} - - '@vercel/sandbox@2.4.0': - resolution: {integrity: sha512-pifnr8hex/rgQ3EPyLYHYwHyf0Kwmc4Vbya9kHGk4aERFVGj44P+742S8/SDdt2guMxBriXBOMkMLq1Kaiyyeg==} - - '@vercel/static-build@2.11.7': - resolution: {integrity: sha512-DrGKHp339OwqQ3IdKUp6dOvF2jscm0ogJnqTv1XkN/IFkgtWPz8EVBKoA2MUMDbkNyZnvacAAbDf/NPvDRF/Lw==} - - '@vercel/static-config@3.4.0': - resolution: {integrity: sha512-wCq90CMUB//ggnFh77NQO1xaLFsS4LigQIqKrH6ohnr9Br/KI1FhlErx62WfCOuueWaW+LVsbLOqNXIUjK8t6A==} - '@wallet-standard/app@1.1.1': resolution: {integrity: sha512-WDGwoByhP5gwHH01r5EaLgQdLVkACPCdOMQhmhn8rsm10h/siSgTorShzBxrn0ExSPof+Lu+C3TfgqBrPa1xoQ==} engines: {node: '>=22'} @@ -4221,10 +3583,6 @@ packages: '@workflow/serde@4.1.0-beta.2': resolution: {integrity: sha512-8kkeoQKLDaKXefjV5dbhBj2aErfKp1Mc4pb6tj8144cF+Em5SPbyMbyLCHp+BVrFfFVCBluCtMx+jjvaFVZGww==} - abbrev@3.0.1: - resolution: {integrity: sha512-AO2ac6pjRB3SJmGJo+v5/aK6Omggp6fsLrs6wN9bd35ulu4cCwaAU9+7ZhXjeqHVkaHThLuzH0nZr0YpCDhygg==} - engines: {node: ^18.17.0 || >=20.5.0} - abort-controller@3.0.0: resolution: {integrity: sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==} engines: {node: '>=6.5'} @@ -4233,11 +3591,6 @@ packages: resolution: {integrity: sha512-5cvg6CtKwfgdmVqY1WIiXKc3Q1bkRqGLi+2W/6ao+6Y7gu/RCwRuAhGEzh5B4KlszSuTLgZYuqFqo5bImjNKng==} engines: {node: '>= 0.6'} - acorn-import-attributes@1.9.5: - resolution: {integrity: sha512-n02Vykv5uA3eHGM/Z2dQrcD56kL8TyDb2p1+0P83PClMnC/nc+anbQRhIOWnSq4Ke/KvDPrY3C9hDtC/A3eHnQ==} - peerDependencies: - acorn: ^8 - acorn-jsx-walk@2.0.0: resolution: {integrity: sha512-uuo6iJj4D4ygkdzd6jPtcxs8vZgDX9YFIkqczGImoypX2fQ4dVImmu3UzA4ynixCIMTrEOWW+95M2HuBaCEOVA==} @@ -4307,12 +3660,6 @@ packages: resolution: {integrity: sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==} engines: {node: '>=12'} - any-promise@1.3.0: - resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==} - - arg@4.1.0: - resolution: {integrity: sha512-ZWc51jO3qegGkVh8Hwpv636EkbesNV5ZNQPCtRa+0qytRYPEs9IYT9qITY9buezqUH5uqyzlWLcufrzU2rffdg==} - argparse@1.0.10: resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} @@ -4333,31 +3680,6 @@ packages: asap@2.0.6: resolution: {integrity: sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==} - async-listen@1.2.0: - resolution: {integrity: sha512-CcEtRh/oc9Jc4uWeUwdpG/+Mb2YUHKmdaTf0gUr7Wa+bfp4xx70HOb3RuSTJMvqKNB1TkdTfjLdrcz2X4rkkZA==} - - async-listen@3.0.0: - resolution: {integrity: sha512-V+SsTpDqkrWTimiotsyl33ePSjA5/KrithwupuvJ6ztsqPvGv6ge4OredFhPffVXiLN/QUWvE0XcqJaYgt6fOg==} - engines: {node: '>= 14'} - - async-listen@3.0.1: - resolution: {integrity: sha512-cWMaNwUJnf37C/S5TfCkk/15MwbPRwVYALA2jtjkbHjCmAPiDXyNJy2q3p1KAZzDLHAWyarUWSujUoHR4pEgrA==} - engines: {node: '>= 14'} - - async-retry@1.3.3: - resolution: {integrity: sha512-wfr/jstw9xNi/0teMHrRW7dsz3Lt5ARhYNZ2ewpadnhaIp5mbALhOAP+EAdsC7t4Z6wqsDVv9+W6gm1Dk9mEyw==} - - async-sema@3.1.1: - resolution: {integrity: sha512-tLRNUXati5MFePdAk8dw7Qt7DpxPB60ofAgn8WRhW6a2rcimZnYBP9oxHiv0OHy+Wz7kPMG+t4LGdt31+4EmGg==} - - b4a@1.8.1: - resolution: {integrity: sha512-aiqre1Nr0B/6DgE2N5vwTc+2/oQZ4Wh1t4NznYY4E00y8LCt6NqdRv81so00oo27D8MVKTpUa/MwUUtBLXCoDw==} - peerDependencies: - react-native-b4a: '*' - peerDependenciesMeta: - react-native-b4a: - optional: true - babel-plugin-macros@3.1.0: resolution: {integrity: sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg==} engines: {node: '>=10', npm: '>=6'} @@ -4368,21 +3690,6 @@ packages: bail@2.0.2: resolution: {integrity: sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==} - balanced-match@1.0.2: - resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} - - balanced-match@4.0.4: - resolution: {integrity: sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==} - engines: {node: 18 || 20 || >=22} - - bare-events@2.9.1: - resolution: {integrity: sha512-Z0oHEHAFDZkffN8Qc39zNZjQlMDkPJRyyyZieU1VH7u8c5S+qHZ2S8ixdKIAxEjfHO7FJxXmJWgteOghVanIsg==} - peerDependencies: - bare-abort-controller: '*' - peerDependenciesMeta: - bare-abort-controller: - optional: true - base-x@3.0.11: resolution: {integrity: sha512-xz7wQ8xDhdyP7tQxwdteLYeFfS68tSMNCZ/Y37WJ4bhGfKPpqEIlmIyueQHqOyoPhE6xNUqjzRr8ra0eF9VRvA==} @@ -4400,9 +3707,6 @@ packages: bignumber.js@9.3.1: resolution: {integrity: sha512-Ko0uX15oIUS7wJ3Rb30Fs6SkVbLmPBAKdlm7q9+ak9bbIeFf0MwuBsQV6z7+X768/cHsfg+WlysDWJcmthjsjQ==} - bindings@1.5.0: - resolution: {integrity: sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==} - blake3-wasm@2.1.5: resolution: {integrity: sha512-F1+K8EbfOZE49dtoPtmxUQrpXaBIl3ICvasLh+nJta0xkz+9kF/7uet9fLnwKqhDrmj6g+6K3Tw9yQPUg2ka5g==} @@ -4416,13 +3720,6 @@ packages: borsh@0.7.0: resolution: {integrity: sha512-CLCsZGIBCFnPtkNnieW/a8wmreDmfUtjU2m9yHrzPXIlNbqVs0AQrSatSG6vdNYUqdc83tkQi2eHfF98ubzQLA==} - brace-expansion@1.1.15: - resolution: {integrity: sha512-EwOCDEex4quD37XhqM3omwtMoJjr//isUZz1JopUNWms+4Z2ViyM/k1YIRePpoVNnQhENnxtFjLaxNHrT7xIUg==} - - brace-expansion@5.0.6: - resolution: {integrity: sha512-kLpxurY4Z4r9sgMsyG0Z9uzsBlgiU/EFKhj/h91/8yHu0edo7XuixOIH3VcJ8kkxs6/jPzoI6U9Vj3WqbMQ94g==} - engines: {node: 18 || 20 || >=22} - braces@3.0.3: resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} engines: {node: '>=8'} @@ -4441,9 +3738,6 @@ packages: bser@2.1.1: resolution: {integrity: sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==} - buffer-crc32@0.2.13: - resolution: {integrity: sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==} - buffer-equal-constant-time@1.0.1: resolution: {integrity: sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==} @@ -4457,10 +3751,6 @@ packages: resolution: {integrity: sha512-ZMANVnAixE6AWWnPzlW2KpUrxhm9woycYvPOo67jWHyFowASTEd9s+QN1EIMsSDtwhIxN4sWE1jotpuDUIgyIw==} engines: {node: '>=6.14.2'} - bytes@3.1.0: - resolution: {integrity: sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==} - engines: {node: '>= 0.8'} - bytes@3.1.2: resolution: {integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==} engines: {node: '>= 0.8'} @@ -4523,14 +3813,6 @@ packages: zod: optional: true - chokidar@4.0.0: - resolution: {integrity: sha512-mxIojEAQcuEvT/lyXq+jf/3cO/KoA6z4CeNDGGevTybECPOMFCnQy3OPahluUkbqgPNGw5Bi78UC7Po6Lhy+NA==} - engines: {node: '>= 14.16.0'} - - chownr@3.0.0: - resolution: {integrity: sha512-+IxzY9BZOQd/XuYPRmrvEVjF/nqj5kgT4kEq7VofrDoM1MxoRjEWkrCC3EtLi59TVawxTAn+orJwFQcrqEN1+g==} - engines: {node: '>=18'} - chrome-launcher@0.15.2: resolution: {integrity: sha512-zdLEwNo3aUVzIhKhTtXfxhdvZhUghrnmkvcAq2NoDd+LeOHKf03H5jwZ8T/STsAlzyALkBVK552iaG1fGf1xVQ==} engines: {node: '>=12.13.0'} @@ -4546,9 +3828,6 @@ packages: resolution: {integrity: sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==} engines: {node: '>=8'} - cjs-module-lexer@1.2.3: - resolution: {integrity: sha512-0TNiGstbQmCFwt4akjjBg5pLRTSyj/PkWQ1ZoO2zntmg9yLqSRxwEa4iCfQLGjqhiqBfOJa7W/E8wfGrTDmlZQ==} - client-only@0.0.1: resolution: {integrity: sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==} @@ -4573,9 +3852,6 @@ packages: react: ^18 || ^19 || ^19.0.0-rc react-dom: ^18 || ^19 || ^19.0.0-rc - code-block-writer@10.1.1: - resolution: {integrity: sha512-67ueh2IRGst/51p0n6FvPrnRjAGHY5F8xdjkgrYE7DDzpJe6qA07RYQ9VcoUeo5ATOjSOiWpSL3SWBRRbempMw==} - color-convert@2.0.1: resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} engines: {node: '>=7.0.0'} @@ -4613,25 +3889,14 @@ packages: resolution: {integrity: sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==} engines: {node: '>= 12'} - concat-map@0.0.1: - resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} - connect@3.7.0: resolution: {integrity: sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ==} engines: {node: '>= 0.10.0'} - consola@3.4.2: - resolution: {integrity: sha512-5IKcdX0nnYavi6G7TtOhwkYzyjfJlatbjMjuLSfE2kYT5pMDOilZ4OvMhi637CcDICTmz3wARPoyhqyX1Y+XvA==} - engines: {node: ^14.18.0 || >=16.10.0} - content-disposition@1.1.0: resolution: {integrity: sha512-5jRCH9Z/+DRP7rkvY83B+yGIGX96OYdJmzngqnw2SBSxqCFPd0w2km3s5iawpGX8krnwSGmF0FW5Nhr0Hfai3g==} engines: {node: '>=18'} - content-type@1.0.4: - resolution: {integrity: sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==} - engines: {node: '>= 0.6'} - content-type@1.0.5: resolution: {integrity: sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==} engines: {node: '>= 0.6'} @@ -4653,10 +3918,6 @@ packages: engines: {node: '>=22'} hasBin: true - convert-hrtime@3.0.0: - resolution: {integrity: sha512-7V+KqSvMiHp8yWDuwfww06XleMWVVB9b9tURBx+G7UTADuo5hYPuowKloz4OzOqbPezxgo+fdQ1522WzPG4OeA==} - engines: {node: '>=8'} - convert-source-map@1.9.0: resolution: {integrity: sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==} @@ -4897,15 +4158,6 @@ packages: supports-color: optional: true - debug@4.3.4: - resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} - engines: {node: '>=6.0'} - peerDependencies: - supports-color: '*' - peerDependenciesMeta: - supports-color: - optional: true - debug@4.4.3: resolution: {integrity: sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==} engines: {node: '>=6.0'} @@ -4922,10 +4174,6 @@ packages: decode-named-character-reference@1.3.0: resolution: {integrity: sha512-GtpQYB283KrPp6nRw50q3U9/VfOutZOe103qlN7BPP6Ad27xYnOIWv4lPzo8HCAL+mMZofJ9KEy30fq6MfaK6Q==} - define-lazy-prop@2.0.0: - resolution: {integrity: sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==} - engines: {node: '>=8'} - delaunator@5.1.0: resolution: {integrity: sha512-AGrQ4QSgssa1NGmWmLPqN5NY2KajF5MqxetNEO+o0n3ZwZZeTmt7bBnvzHWrmkZFxGgr4HdyFgelzgi06otLuQ==} @@ -4933,10 +4181,6 @@ packages: resolution: {integrity: sha512-ReEBKkIfe4ya47wlPYf/gu5ib6yUG0/Aez0JQZQz94kiWtRQvZIQbTiehsnwHvLSWJnQdhVeqYue7Id1dKr0qw==} engines: {node: '>=10'} - depd@1.1.2: - resolution: {integrity: sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==} - engines: {node: '>= 0.6'} - depd@2.0.0: resolution: {integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==} engines: {node: '>= 0.8'} @@ -5077,11 +4321,6 @@ packages: ecdsa-sig-formatter@1.0.11: resolution: {integrity: sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==} - edge-runtime@2.5.9: - resolution: {integrity: sha512-pk+k0oK0PVXdlT4oRp4lwh+unuKB7Ng4iZ2HB+EZ7QCEQizX360Rp/F4aRpgpRgdP2ufB35N+1KppHmYjqIGSg==} - engines: {node: '>=16'} - hasBin: true - ee-first@1.1.1: resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} @@ -5102,12 +4341,6 @@ packages: resolution: {integrity: sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==} engines: {node: '>= 0.8'} - end-of-stream@1.1.0: - resolution: {integrity: sha512-EoulkdKF/1xa92q25PbjuDcgJ9RDHYU2Rs3SCIvs2/dSQ3BpmxneNHmA/M7fe60M3PrV7nNGTTNbkK62l6vXiQ==} - - end-of-stream@1.4.5: - resolution: {integrity: sha512-ooEGc6HP26xXq/N+GCGOT0JKCLDGrq2bQUZrQ7gyrJiZANJ/8YDTxTpQBXGMn+WbIQXNVpyWymm7KYVICQnyOg==} - enhanced-resolve@5.21.6: resolution: {integrity: sha512-aNnGCvbJ/RIyWo1IuhNdVjnNF+EjH9wpzpNHt+ci/m9He9LJvUN8wrCcXjp9cWsGNAuvSpVFTx/vraAFQ8qGjQ==} engines: {node: '>=10.13.0'} @@ -5141,12 +4374,6 @@ packages: resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} engines: {node: '>= 0.4'} - es-module-lexer@1.4.1: - resolution: {integrity: sha512-cXLGjP0c4T3flZJKQSuziYoq7MlT+rnvfZjfp7h+I7K9BNX54kP9nyWvdbwjQ4u1iWbOL4u96fgeZLToQlZC7w==} - - es-module-lexer@1.5.0: - resolution: {integrity: sha512-pqrTKmwEIgafsYZAGw9kszYzmagcE/n4dbgwGWLEXg7J4QFJVQRBld8j3Q3GNez79jzxZshq0bcT962QHOghjw==} - es-object-atoms@1.1.2: resolution: {integrity: sha512-HWcBoN6NileqtSydK2FqHbS/LoDd2pqrnQHLyJzBj4kOp/ky2MWMN694xOfkK8/SnUsW2DH7EfyVlydKCsm1Zw==} engines: {node: '>= 0.4'} @@ -5165,11 +4392,6 @@ packages: engines: {node: '>=18'} hasBin: true - esbuild@0.27.0: - resolution: {integrity: sha512-jd0f4NHbD6cALCyGElNpGAOtWxSq46l9X/sWB0Nzd5er4Kz2YTm+Vl0qKFT9KUJvD8+fiO8AvoHhFvEatfVixA==} - engines: {node: '>=18'} - hasBin: true - esbuild@0.28.1: resolution: {integrity: sha512-HrJrvZv5ayxBzPfwphOoNzkzOIIlifzk0KJrGK2c8R4+LKpMtpYLQeUdjnwjWv/LZlkH2laZk+4w78pi99D4Vw==} engines: {node: '>=18'} @@ -5198,9 +4420,6 @@ packages: estree-util-is-identifier-name@3.0.0: resolution: {integrity: sha512-hFtqIDZTIUZ9BXLb8y4pYGyk6+wekIivNVTcmvk8NoOh+VeRn5y6cEHzbURrWbfp1fIqdVipilzj+lfaadNZmg==} - estree-walker@2.0.2: - resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} - etag@1.8.1: resolution: {integrity: sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==} engines: {node: '>= 0.6'} @@ -5212,12 +4431,6 @@ packages: eventemitter3@5.0.4: resolution: {integrity: sha512-mlsTRyGaPBjPedk6Bvw+aqbsXDtoAyAzm5MO7JgU+yVRyMQ5O8bD4Kcci7BS85f93veegeCPkL8R4GLClnjLFw==} - events-intercept@2.0.0: - resolution: {integrity: sha512-blk1va0zol9QOrdZt0rFXo5KMkNPVSp92Eju/Qz8THwKWKRKeE0T8Br/1aW6+Edkyq9xHYgYxn2QtOnUKPUp+Q==} - - events-universal@1.0.1: - resolution: {integrity: sha512-LUd5euvbMLpwOF8m6ivPCbhQeSiYVNb8Vs0fQ8QjXo0JTkEHpz8pxdQf0gStltaPpw0Cca8b39KxvK9cfKRiAw==} - eventsource-parser@3.1.0: resolution: {integrity: sha512-kJezFj9YFAMLeORyi7aCLxLbD5/qWMQnoMVlVPyHIll7lgRJCc3JVln9Vgl9nwQi0YkMnhdGTMNn7CkRRAptMg==} engines: {node: '>=18.0.0'} @@ -5226,14 +4439,6 @@ packages: resolution: {integrity: sha512-CRT1WTyuQoD771GW56XEZFQ/ZoSfWid1alKGDYMmkt2yl8UXrVR4pspqWNEcqKvVIzg6PAltWjxcSSPrboA4iA==} engines: {node: '>=18.0.0'} - execa@3.2.0: - resolution: {integrity: sha512-kJJfVbI/lZE1PZYDI5VPxp8zXPO9rtxOkhpZ0jMKha56AI9y2gGVC6bkukStQf0ka5Rh15BA5m7cCCH4jmHqkw==} - engines: {node: ^8.12.0 || >=9.7.0} - - execa@5.1.1: - resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==} - engines: {node: '>=10'} - execa@9.6.1: resolution: {integrity: sha512-9Be3ZoN4LmYR90tUoVu2te2BsbzHfhJyfEiAVfz7N5/zv+jduIfLrV2xdQXOHbaD6KgpGdO9PRPM1Y4Q9QkPkA==} engines: {node: ^18.19.0 || >=20.5.0} @@ -5265,13 +4470,6 @@ packages: fast-deep-equal@3.1.3: resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} - fast-fifo@1.3.2: - resolution: {integrity: sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==} - - fast-glob@3.3.3: - resolution: {integrity: sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==} - engines: {node: '>=8.6.0'} - fast-sha256@1.3.0: resolution: {integrity: sha512-n11RGP/lrWEFI/bWdygLxhI+pVeo1ZYIVwvvPkW7azl/rOy+F3HYRZ2K5zeE9mmkhQppyv9sQFx0JM9UabnpPQ==} @@ -5295,9 +4493,6 @@ packages: fd-package-json@2.0.0: resolution: {integrity: sha512-jKmm9YtsNXN789RS/0mSzOC1NUq9mkVd65vbSSVsKdjGvYXBuE4oWe2QOEoFeRmJg+lPuZxpmrfFclNhoRMneQ==} - fd-slicer@1.1.0: - resolution: {integrity: sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==} - fdir@6.5.0: resolution: {integrity: sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==} engines: {node: '>=12.0.0'} @@ -5315,9 +4510,6 @@ packages: resolution: {integrity: sha512-d+l3qxjSesT4V7v2fh+QnmFnUWv9lSpjarhShNTgBOfA0ttejbQUAlHLitbjkoRiDulW0OPoQPYIGhIC8ohejg==} engines: {node: '>=18'} - file-uri-to-path@1.0.0: - resolution: {integrity: sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==} - fill-range@7.1.1: resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} engines: {node: '>=8'} @@ -5361,14 +4553,6 @@ packages: resolution: {integrity: sha512-Rx/WycZ60HOaqLKAi6cHRKKI7zxWbJ31MhntmtwMoaTeF7XFH9hhBp8vITaMidfljRQ6eYWCKkaTK+ykVJHP2A==} engines: {node: '>= 0.8'} - fs-extra@11.1.0: - resolution: {integrity: sha512-0rcTq621PD5jM/e0a3EJoGC/1TC5ZBCERW82LQuwfGnCa1V8w7dpYH1yNu+SLb6E5dkeCBzKEyLGlFrnr+dUyw==} - engines: {node: '>=14.14'} - - fs-extra@11.1.1: - resolution: {integrity: sha512-MGIE4HOvQCeUCzmlHs0vXpih4ysz4wg9qiSAu6cd42lVwPbTM1TjV7RusoyQqMmk/95gdQZX72u+YW+c3eEpFQ==} - engines: {node: '>=14.14'} - fsevents@2.3.3: resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} @@ -5390,10 +4574,6 @@ packages: peerDependencies: next: '>=13.2.0' - generic-pool@3.4.2: - resolution: {integrity: sha512-H7cUpwCQSiJmAHM4c/aFu6fUfrhWXW1ncyh8ftxEPMu6AiYkHw9K8br720TGPZJbk5eOH2bynjZD1yPvdDAmag==} - engines: {node: '>= 4'} - gensync@1.0.0-beta.2: resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} engines: {node: '>=6.9.0'} @@ -5414,22 +4594,10 @@ packages: 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@5.2.0: - resolution: {integrity: sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==} - engines: {node: '>=8'} - - get-stream@6.0.1: - resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} - engines: {node: '>=10'} - get-stream@9.0.1: resolution: {integrity: sha512-kVCxPF3vQM/N0B1PmoqVUqgHP+EeVjmZSQn+1oCRPxd2P21P2F19lIgbR3HBosbB1PUhOAoctJnfEn2GbN2eZA==} engines: {node: '>=18'} @@ -5437,17 +4605,9 @@ packages: get-tsconfig@4.14.0: resolution: {integrity: sha512-yTb+8DXzDREzgvYmh6s9vHsSVCHeC0G3PI5bEXNBHtmshPnO+S5O7qgLEOn0I5QvMy6kpZN8K1NKGyilLb93wA==} - glob-parent@5.1.2: - resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} - engines: {node: '>= 6'} - glob-to-regexp@0.4.1: resolution: {integrity: sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==} - glob@13.0.6: - resolution: {integrity: sha512-Wjlyrolmm8uDpm/ogGyXZXb1Z+Ca2B8NbJwqBVg0axK9GbBeoS7yGV6vjXnYdGm6X53iehEuxxbyiKp8QmN4Vw==} - engines: {node: 18 || 20 || >=22} - global-directory@4.0.1: resolution: {integrity: sha512-wHTUcDUoZ1H5/0iVqEudYW4/kAlN5cZ3j/bXn0Dpbizl9iaUVeWSHqiOjsgk6OW2bkLclbBjzewBz6weQ1zA2Q==} engines: {node: '>=18'} @@ -5560,10 +4720,6 @@ packages: html-void-elements@3.0.0: resolution: {integrity: sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg==} - http-errors@1.7.3: - resolution: {integrity: sha512-ZTTX0MWrsQ2ZAhA1cejAwDLycFsd7I7nVtnkT3Ol0aqodaKW+0CTZDQ1uBv5whptCnc8e8HeRRJxRs0kmm/Qfw==} - engines: {node: '>= 0.6'} - http-errors@2.0.1: resolution: {integrity: sha512-4FbRdAX+bSdmo4AUFuS0WNiPz8NgFt+r8ThgNWmlrjQjt1Q7ZR9+zTlce2859x4KSXrwIsaeTqDoKQmtP8pLmQ==} engines: {node: '>= 0.8'} @@ -5572,14 +4728,6 @@ packages: resolution: {integrity: sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==} engines: {node: '>= 14'} - human-signals@1.1.1: - resolution: {integrity: sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==} - engines: {node: '>=8.12.0'} - - human-signals@2.1.0: - resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} - engines: {node: '>=10.17.0'} - human-signals@8.0.1: resolution: {integrity: sha512-eKCa6bwnJhvxj14kZk5NCPc6Hb6BdsU9DZcOnmQKSnO1VKrfV0zCvtttPZUsBvjmNDn8rpcJfpwSYnHBjc95MQ==} engines: {node: '>=18.18.0'} @@ -5587,10 +4735,6 @@ packages: humanize-ms@1.2.1: resolution: {integrity: sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==} - iconv-lite@0.4.24: - resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==} - engines: {node: '>=0.10.0'} - iconv-lite@0.6.3: resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==} engines: {node: '>=0.10.0'} @@ -5669,10 +4813,6 @@ packages: is-arrayish@0.2.1: resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} - is-buffer@2.0.5: - resolution: {integrity: sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==} - engines: {node: '>=4'} - is-core-module@2.16.2: resolution: {integrity: sha512-evOr8xfXKxE6qSR0hSXL2r3sd7ALj8+7jQEUvPYcm5sgZFdJ+AYzT6yNmJenvIYQBgIGwfwz08sL8zoL7yq2BA==} engines: {node: '>= 0.4'} @@ -5689,18 +4829,10 @@ packages: resolution: {integrity: sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==} engines: {node: '>=0.10.0'} - is-extglob@2.1.1: - resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} - engines: {node: '>=0.10.0'} - is-fullwidth-code-point@3.0.0: resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} engines: {node: '>=8'} - is-glob@4.0.3: - resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} - engines: {node: '>=0.10.0'} - is-hexadecimal@2.0.1: resolution: {integrity: sha512-DgZQp241c8oO6cA1SbTEWiXeoxV42vlcJxgH+B3hi1AiqqKruZR3ZGF8In3fj4+/y/7rHvlOZLZtgJ/4ttYGZg==} @@ -5712,9 +4844,6 @@ packages: resolution: {integrity: sha512-PhBY86zaxNZUuWP6h13Vu5oFe0XY6/UlKzQnYFELzGVHygP3MxmvTfYSG7GN3aIab/iWudSMgjSnG9Dq+nHrgA==} engines: {node: '>=16'} - is-node-process@1.2.0: - resolution: {integrity: sha512-Vg4o6/fqPxIjtxgUH5QLJhwZ7gW5diGCVlXpuUfELC62CuxM1iHcRe51f2W1FDy04Ai4KJkagKjx3XaqyfRKXw==} - is-number@7.0.0: resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} engines: {node: '>=0.12.0'} @@ -5734,10 +4863,6 @@ packages: is-promise@4.0.0: resolution: {integrity: sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ==} - is-stream@2.0.1: - resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} - engines: {node: '>=8'} - is-stream@4.0.1: resolution: {integrity: sha512-Dnz92NInDqYckGEUJv689RbRiTSEHCQ7wOVeALbkOz999YpqT46yMRIGtSNl2iCL1waAZSx40+h59NV/EwzV/A==} engines: {node: '>=18'} @@ -5787,9 +4912,6 @@ packages: resolution: {integrity: sha512-AC/7JofJvZGrrneWNaEnJeOLUx+JlGt7tNa0wZiRPT4MY1wmfKjt2+6O2p2uz2+skll8OZZmJMNqeke7kKbNgQ==} hasBin: true - jose@5.9.6: - resolution: {integrity: sha512-AMlnetc9+CV9asI19zHmrgS/WYsWUwCn2R7RzlbJWD7F9eWYUTGyBmU9o6PxngtLGOiDGPRu+Uc4fhKzbpteZQ==} - jose@6.2.3: resolution: {integrity: sha512-YYVDInQKFJfR/xa3ojUTl8c2KoTwiL1R5Wg9YCydwH0x0B9grbzlg5HC7mMjCtUJjbQ/YnGEZIhI5tCgfTb4Hw==} @@ -5825,9 +4947,6 @@ packages: json-parse-even-better-errors@2.3.1: resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} - json-schema-to-ts@1.6.4: - resolution: {integrity: sha512-pR4yQ9DHz6itqswtHCm26mw45FSNfQ9rEQjosaZErhn5J3J2sIViQiz8rDaezjKAhFGpmsoczYVBgGHzFw/stA==} - json-schema-to-zod@2.8.1: resolution: {integrity: sha512-fRr1mHgZ7hboLKBUdR428gd9dIHUFGivUqOeiDcSmyXkNZCtB1uGaZLvsjZ4GaN5pwBIs+TGIOf6s+Rp5/R/zA==} hasBin: true @@ -5849,15 +4968,6 @@ packages: engines: {node: '>=6'} hasBin: true - jsonc-parser@3.3.1: - resolution: {integrity: sha512-HUgH65KyejrUFPvHFPbqOY0rsFip3Bo5wb4ngvdi1EpCYWUQDC5V+Y7mZws+DLkr4M//zQJoanu1SP+87Dv1oQ==} - - jsonfile@6.2.1: - resolution: {integrity: sha512-zwOTdL3rFQ/lRdBnntKVOX6k5cKJwEc1HdilT71BWEu7J41gXIB2MRp+vxduPSwZJPWBxEzv4yH1wYLJGUHX4Q==} - - jsonlines@0.1.1: - resolution: {integrity: sha512-ekDrAGso79Cvf+dtm+mL8OBI2bmAOt3gssYs833De/C9NmIpWDWyUO4zPgB5x2/OhY366dkhgfPMYfwZF7yOZA==} - jwa@2.0.1: resolution: {integrity: sha512-hRF04fqJIP8Abbkq5NKGN0Bbr3JxlQ+qhZufXVr0DvujKy93ZCbXZMHDL4EOtodSbCWxOqR8MS1tXA5hwqCXDg==} @@ -6063,19 +5173,11 @@ packages: lru-cache@5.1.1: resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} - lru-cache@6.0.0: - resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} - engines: {node: '>=10'} - lucide-react@1.24.0: resolution: {integrity: sha512-YT6mBD8lGKkg4nM39enlm94/sfJIiW0YKUT60fBy4YK8tai31ylg1VhGNWxkpSKHo9UagfnZqwIff3HTDQwXeA==} peerDependencies: react: ^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0 - luxon@3.7.2: - resolution: {integrity: sha512-vtEhXh/gNjI9Yg1u4jX/0YVPMvxzHuGgCm6tC5kZyb08yjGWGnqAjGJvcXbqQR2P3MyMEFnRbpcdFS6PBcLqew==} - engines: {node: '>=12'} - magic-string@0.30.21: resolution: {integrity: sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==} @@ -6168,10 +5270,6 @@ packages: 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'} - mermaid@11.15.0: resolution: {integrity: sha512-pTMbcf3rWdtLiYGpmoTjHEpeY8seiy6sR+9nD7LOs8KfUbHE4lOUAprTRqRAcWSQ6MQpdX+YEsxShtGsINtPtw==} @@ -6233,11 +5331,6 @@ packages: engines: {node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0} hasBin: true - micro@9.3.5-canary.3: - resolution: {integrity: sha512-viYIo9PefV+w9dvoIBh1gI44Mvx1BOk67B4BpC2QK77qdY0xZF0Q+vWLt/BII6cLkIc8rLmSIcJaB/OrXXKe1g==} - engines: {node: '>= 8.0.0'} - hasBin: true - micromark-core-commonmark@2.0.3: resolution: {integrity: sha512-RDBrHEMSxVFLg6xvnXmb1Ayr2WzLAWjeSATAoxwKYJV94TeNavgoIdA0a9ytzDSVzBy2YKFK+emCPOEibLeCrg==} @@ -6329,18 +5422,10 @@ packages: resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==} engines: {node: '>=8.6'} - mime-db@1.52.0: - resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} - engines: {node: '>= 0.6'} - mime-db@1.54.0: resolution: {integrity: sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==} engines: {node: '>= 0.6'} - mime-types@2.1.35: - resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} - engines: {node: '>= 0.6'} - mime-types@3.0.2: resolution: {integrity: sha512-Lbgzdk0h4juoQ9fCKXW4by0UJqj+nOOrI9MJ1sSj4nI8aI2eo1qmvQEie4VD1glsS250n15LsWsYtCugiStS5A==} engines: {node: '>=18'} @@ -6350,51 +5435,22 @@ packages: engines: {node: '>=4'} hasBin: true - mimic-fn@2.1.0: - resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} - engines: {node: '>=6'} - miniflare@4.20260710.0: resolution: {integrity: sha512-x1LLRkU6o1p7hiKrB0TRnL0MJn6xFOT+/vrlEQINz5cRDKLP8ru4hBqWTIvXAetzr1acKAnmAaG84pQ4W/K14g==} engines: {node: '>=22.0.0'} hasBin: true - minimatch@10.2.5: - resolution: {integrity: sha512-MULkVLfKGYDFYejP07QOurDLLQpcjk7Fw+7jXS2R2czRQzR56yHRveU5NDJEOviH+hETZKSkIk5c+T23GjFUMg==} - engines: {node: 18 || 20 || >=22} - - minimatch@3.1.5: - resolution: {integrity: sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==} - minimist@1.2.8: resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} - minipass@7.1.3: - resolution: {integrity: sha512-tEBHqDnIoM/1rXME1zgka9g6Q2lcoCkxHLuc7ODJ5BxbP5d4c2Z5cGgtXAku59200Cx7diuHTOYfSBD8n6mm8A==} - engines: {node: '>=16 || 14 >=14.17'} - - minizlib@3.1.0: - resolution: {integrity: sha512-KZxYo1BUkWD2TVFLr0MQoM8vUUigWD3LlD83a/75BqC+4qE0Hb1Vo5v1FgcfaNXvfXzr+5EhQ6ing/CaBijTlw==} - engines: {node: '>= 18'} - mkdirp@1.0.4: resolution: {integrity: sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==} engines: {node: '>=10'} hasBin: true - mri@1.2.0: - resolution: {integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==} - engines: {node: '>=4'} - ms@2.0.0: resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==} - ms@2.1.1: - resolution: {integrity: sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==} - - ms@2.1.2: - resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} - ms@2.1.3: resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} @@ -6439,24 +5495,6 @@ packages: engines: {node: '>=10.5.0'} deprecated: Use your platform's native DOMException instead - node-fetch@2.6.7: - resolution: {integrity: sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==} - engines: {node: 4.x || >=6.0.0} - peerDependencies: - encoding: ^0.1.0 - peerDependenciesMeta: - encoding: - optional: true - - node-fetch@2.6.9: - resolution: {integrity: sha512-DJm/CJkZkRjKKj4Zi4BsKVZh3ValV5IR5s7LVZnW+6YMh0W1BfNA8XSs6DLMGYlId5F3KnA70uu2qepcR08Qqg==} - engines: {node: 4.x || >=6.0.0} - peerDependencies: - encoding: ^0.1.0 - peerDependenciesMeta: - encoding: - optional: true - node-fetch@2.7.0: resolution: {integrity: sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==} engines: {node: 4.x || >=6.0.0} @@ -6481,15 +5519,6 @@ packages: resolution: {integrity: sha512-Uzmd6LXpouKo8EUK68IjH4+E01w/hXyV3R3g/geCJo+rXLNfh1xucB+LOzYEOQPSiUK3h/xZf0cQGcSsmyL2Og==} engines: {node: '>=18'} - nopt@8.1.0: - resolution: {integrity: sha512-ieGu42u/Qsa4TFktmaKEwM6MQH0pOWnaB3htzh0JRtx84+Mebc0cbZYN5bC+6WTZ4+77xrL9Pn5m7CV6VIkV7A==} - engines: {node: ^18.17.0 || >=20.5.0} - hasBin: true - - npm-run-path@4.0.1: - resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} - engines: {node: '>=8'} - npm-run-path@6.0.0: resolution: {integrity: sha512-9qny7Z9DsQU8Ou39ERsPU4OZQlSTP47ShQzuKZ6PRXpYLtIFgl/DEBYEXKlvcEa+9tHVcK8CF81Y2V72qaZhWA==} engines: {node: '>=18'} @@ -6538,16 +5567,9 @@ packages: resolution: {integrity: sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==} engines: {node: '>= 0.8'} - once@1.3.3: - resolution: {integrity: sha512-6vaNInhu+CHxtONf3zw3vq4SP2DOQhjBvIa3rNcG0+P7eKWlYH6Peu7rHizSloRU2EwMz6GraLieis9Ac9+p1w==} - 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'} - oniguruma-parser@0.12.2: resolution: {integrity: sha512-6HVa5oIrgMC6aA6WF6XyyqbhRPJrKR02L20+2+zpDtO5QAzGHAUGw5TKQvwi5vctNnRHkJYmjAhRVQF2EKdTQw==} @@ -6558,14 +5580,6 @@ packages: resolution: {integrity: sha512-MVHddDVweXZF3awtlAS+6pgKLlm/JgxZ90+/NBurBoQctVOOB/zDdVjcyPzQ+0laDGbsWgrRkflI65sQeOgT9Q==} engines: {node: '>=8'} - open@8.4.0: - resolution: {integrity: sha512-XgFPPM+B28FtCCgSb9I+s9szOC1vZRSwgWsRUA5ylIxRTgKozqjOCrVOqGsYABPYK5qnfqClxZTFBa8PKt2v6Q==} - engines: {node: '>=12'} - - os-paths@4.4.0: - resolution: {integrity: sha512-wrAwOeXp1RRMFfQY8Sy7VaGVmPocaLwSFOYCGKSyo8qmJ+/yaafCl5BCA1IQZWqFSRBrKDYFeR9d/VyQzfH/jg==} - engines: {node: '>= 6.0'} - oxc-parser@0.137.0: resolution: {integrity: sha512-yFImD+WLElJpLKy8llG1qe4DCmMsL18peRp8XP1JKfig/gISbJkglnpDtX2aTmAn10kZF7164HbN2H8QPsXxGg==} engines: {node: ^20.19.0 || >=22.12.0} @@ -6573,14 +5587,6 @@ packages: oxc-resolver@11.21.3: resolution: {integrity: sha512-2Mx3fKQz7+xgrBONjsxOgCGtMHOn38/HxMzW1I5efwXB5a4lRN0Vp40gYUJFBWJslcrvwoofTrqoTnLbwTd3pA==} - oxc-transform@0.111.0: - resolution: {integrity: sha512-oa5KKSDNLHZGaiqIGAbCWXeN9IJUAz9MElWcQX90epDxdKc9Hrt/BsLj3K4gDqfAYa5dwdH+ZCFJG9hR74fiGg==} - engines: {node: ^20.19.0 || >=22.12.0} - - p-finally@2.0.1: - resolution: {integrity: sha512-vpm09aKwq6H9phqRQzecoDpD8TmVyGw70qmWlyq5onxY7tqyTTFVvxMykxQSQKILBSFlbXpypIw2T1Ml7+DDtw==} - engines: {node: '>=8'} - p-limit@2.3.0: resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} engines: {node: '>=6'} @@ -6619,10 +5625,6 @@ packages: resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} engines: {node: '>=8'} - parse-ms@2.1.0: - resolution: {integrity: sha512-kHt7kzLoS9VBZfUsiKjv43mr91ea+U05EyKkEtqp7vNbHxmaVuEqN7XxeEVnGrMtYOAxGrDElSi96K7EgO1zCA==} - engines: {node: '>=6'} - parse-ms@4.0.0: resolution: {integrity: sha512-TXfryirbmq34y8QBwgqCVLi+8oA3oWx2eAnSn62ITyEhEYaWRlVZ2DvMM9eZbMs/RfxPu/PK/aBLyGj4IrqMHw==} engines: {node: '>=18'} @@ -6634,9 +5636,6 @@ packages: resolution: {integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==} engines: {node: '>= 0.8'} - path-browserify@1.0.1: - resolution: {integrity: sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==} - path-data-parser@0.1.0: resolution: {integrity: sha512-NOnmBpt5Y2RWbuv0LMzsayp3lVylAHLPUTut412ZA3l+C4uw4ZVkQbjShYCQ8TCpUMdPapr4YjUqLYD6v68j+w==} @@ -6655,10 +5654,6 @@ packages: path-parse@1.0.7: resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} - path-scurry@2.0.2: - resolution: {integrity: sha512-3O/iVVsJAPsOnpwWIeD+d6z/7PmqApyQePUtCndjatj/9I5LylHvt5qluFaBT3I5h3r1ejfR056c+FCv+NnNXg==} - engines: {node: 18 || 20 || >=22} - path-to-regexp@6.3.0: resolution: {integrity: sha512-Yhpw4T9C6hPpgPeA28us07OJeqZ5EzQTkbfwuhsUg0c237RomFoETJgmp2sa3F/41gfLE6G5cqcYwznmeEeOlQ==} @@ -6672,9 +5667,6 @@ packages: pathe@2.0.3: resolution: {integrity: sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==} - pend@1.2.0: - resolution: {integrity: sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==} - pg-cloudflare@1.4.0: resolution: {integrity: sha512-Vo7z/6rrQYxpNRylp4Tlob2elzbh+N/MOQbxFVWCxS7oEx6jF53GTJFxK2WWpKuBRkmiin4Mt+xofFDjx09R0A==} @@ -6709,9 +5701,6 @@ packages: pgpass@1.0.5: resolution: {integrity: sha512-FdW9r/jQZhSeohs1Z3sI1yxFQNFvMcnmfuj4WBMUTxOrAyLMaTcE1aAMBiTlbMNaXvBCQuVi0R7hd8udDSP7ug==} - picocolors@1.0.0: - resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} - picocolors@1.1.1: resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} @@ -6774,10 +5763,6 @@ packages: resolution: {integrity: sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - pretty-ms@7.0.1: - resolution: {integrity: sha512-973driJZvxiGOQ5ONsFhOF/DtzPMOMtgC11kCpUrPGMTgqp2q/1gwzCquocrN33is0VZ5GFHXZYMM9l6h67v2Q==} - engines: {node: '>=10'} - pretty-ms@9.3.0: resolution: {integrity: sha512-gjVS5hOP+M3wMm5nmNOucbIrqudzs9v/57bWRHQWLYklXqoXKrVfYW2W9+glfGsqtPgpiz5WwyEEB+ksXIx3gQ==} engines: {node: '>=18'} @@ -6785,9 +5770,6 @@ packages: promise@8.3.0: resolution: {integrity: sha512-rZPNPKTOYVNEEKFaq1HqTgOwZD+4/YHS5ukLzQCypkj+OkYx7iv0mA91lJlpPPZ8vMau3IIGj5Qlwrx+8iiSmg==} - promisepipe@3.0.0: - resolution: {integrity: sha512-V6TbZDJ/ZswevgkDNpGt/YqNCiZP9ASfgU+p83uJE6NrGtvSGoOcHLiDCqkMs2+yg7F5qHdLV8d0aS8O26G/KA==} - prompts@2.4.2: resolution: {integrity: sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==} engines: {node: '>= 6'} @@ -6803,9 +5785,6 @@ packages: resolution: {integrity: sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==} engines: {node: '>= 0.10'} - pump@3.0.4: - resolution: {integrity: sha512-VS7sjc6KR7e1ukRFhQSY5LM2uBWAUPiOPa/A3mkKmiMwSmRFUITt0xuj+/lesgnCv+dPIEYlkzrcyXgquIHMcA==} - qrcode.react@4.2.0: resolution: {integrity: sha512-QpgqWi8rD9DsS9EP3z7BT+5lY5SFhsqGjpgW5DY/i3mK4M9DTBNz3ErMi8BWYEfI3L0d8GIbGmcdFAS1uIRGjA==} peerDependencies: @@ -6820,9 +5799,6 @@ packages: resolution: {integrity: sha512-Rzq0KEyX/w/tEybncDgdkZrJgVUsUMk3xjh3t5bv3S1HTAtg+uOYt72+ZfwiQwKdysThkTBdL/rTi6HDmX9Ddw==} engines: {node: '>=0.6'} - queue-microtask@1.2.3: - resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} - queue@6.0.2: resolution: {integrity: sha512-iHZWu+q3IdFZFX36ro/lKBkSvfkztY5Y7HMiPlOUjhupPcG2JMfst2KKEpu5XndviX/3UhFbRngUPNKtgvtZiA==} @@ -6830,10 +5806,6 @@ packages: resolution: {integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==} engines: {node: '>= 0.6'} - raw-body@2.4.1: - resolution: {integrity: sha512-9WmIKF6mkvA0SLmA2Knm9+qj89e+j1zqgyn8aXGd7+nAduPoqgI9lO57SAZNn/Byzo5P7JhXTyg9PzaJbH73bA==} - engines: {node: '>= 0.8'} - raw-body@3.0.2: resolution: {integrity: sha512-K5zQjDllxWkf7Z5xJdV0/B0WTNqx6vxG70zJE4N0kBs4LovmEYWJzQGxC9bS9RAKu3bgM40lrd5zoLJ12MQ5BA==} engines: {node: '>= 0.10'} @@ -6910,10 +5882,6 @@ packages: resolution: {integrity: sha512-HNe9WslTbXmFK8o8cmwgAeJFSBvt1bPdHCVKtaaV+WlAN36mpT4hcRpwbf3fY56ar2oIXzsBpOAiIRHAdY0OlQ==} engines: {node: '>=0.10.0'} - readdirp@4.1.2: - resolution: {integrity: sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==} - engines: {node: '>= 14.18.0'} - rechoir@0.8.0: resolution: {integrity: sha512-/vxpCXddiX8NGfGO/mTafwjq4aFa/71pvamip0++IQk3zG8cbCj0fifNPrjjF1XMXUne91jL9OoxmdykoEtifQ==} engines: {node: '>= 10.13.0'} @@ -6986,10 +5954,6 @@ packages: 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.12: resolution: {integrity: sha512-TyeJ1zif53BPfHootBGwPRYT1RUt6oGWsaQr8UyZW/eAm9bKoijtvruSDEmZHm92CwS9nj7/fWttqPCgzep8CA==} engines: {node: '>= 0.4'} @@ -7006,11 +5970,6 @@ packages: robust-predicates@3.0.3: resolution: {integrity: sha512-NS3levdsRIUOmiJ8FZWCP7LG3QpJyrs/TE0Zpf1yvZu8cAJJ6QMW92H1c7kWpdIHo8RvmLxN/o2JXTKHp74lUA==} - rolldown@1.0.0-rc.1: - resolution: {integrity: sha512-M3AeZjYE6UclblEf531Hch0WfVC/NOL43Cc+WdF3J50kk5/fvouHhDumSGTh0oRjbZ8C4faaVr5r6Nx1xMqDGg==} - engines: {node: ^20.19.0 || >=22.12.0} - hasBin: true - roughjs@4.6.6: resolution: {integrity: sha512-ZUz/69+SYpFN/g/lUlo2FXcIjRkSu3nDarreVdGGndHEBJ6cXPdKguS8JGxwj5HA5xIbVKSmLgr5b3AWxtRfvQ==} @@ -7021,9 +5980,6 @@ packages: rpc-websockets@9.3.9: resolution: {integrity: sha512-2iQDaTB4g5fDB2ihrTFSJSibCEuxaRi1q7qTW7ZO9/M5/TC+ToHA4D9/ffNLEbAoHNNrcdeP05oATNk44SKZXA==} - run-parallel@1.2.0: - resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} - rw@1.3.3: resolution: {integrity: sha512-PdhdWy89SiZogBLaw42zdeqtRJ//zFd2PgQavcICDUgJT5oW10QCRKbJ6bg4r0/UY2M6BWd5tkxuGFRvCkgfHQ==} @@ -7036,10 +5992,6 @@ packages: safer-buffer@2.1.2: resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} - sandbox@3.4.0: - resolution: {integrity: sha512-JPdADikobt6zFuuCRhl6whNrCJlLPxpUmT/hNxLij70mkpeejHKDN+HeVlrdHI8snDTzRIiF3Ye8KyMIyVWA+A==} - hasBin: true - scheduler@0.27.0: resolution: {integrity: sha512-eNv+WrVbKu1f3vbYJT/xtiF5syA5HPIMtf9IgY/nKg0sWqzAUEvqY/xm7OcZc/qafLx/iO9FgOmeSAp4v5ti/Q==} @@ -7054,11 +6006,6 @@ packages: resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} hasBin: true - semver@7.5.4: - resolution: {integrity: sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==} - engines: {node: '>=10'} - hasBin: true - semver@7.8.5: resolution: {integrity: sha512-Y7/KDsb8LjooZpwaqGyulO6DQlksgCncchHGk+sZIY4SBvUocMBEFH5Ur1fI4dV+Jvl0w6cjvucaIi40puRioA==} engines: {node: '>=10'} @@ -7090,9 +6037,6 @@ packages: set-blocking@2.0.0: resolution: {integrity: sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==} - setprototypeof@1.1.1: - resolution: {integrity: sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==} - setprototypeof@1.2.0: resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==} @@ -7131,13 +6075,6 @@ packages: resolution: {integrity: sha512-6x6dK6zJdpTzF4sQeNYxwtvBzf6Eg4GtlesS94HOvTudUeyK2WXAaIfmDgsyslYrRBeFIlsi54AYsFGUuhmvrQ==} engines: {node: '>= 0.4'} - signal-exit@3.0.7: - resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} - - signal-exit@4.0.2: - resolution: {integrity: sha512-MY2/qGx4enyjprQnFaZsHib3Yadh3IXyV2C321GY0pjGfVBu4un0uDJkwgdxqO+Rdx8JMT8IfJIRwbYVz3Ob3Q==} - engines: {node: '>=14'} - signal-exit@4.1.0: resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} engines: {node: '>=14'} @@ -7180,11 +6117,6 @@ packages: sprintf-js@1.0.3: resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} - srvx@0.11.16: - resolution: {integrity: sha512-bp07zRuycfTY43IjAvvTFnmnJi8ikW0VFiHwOhhYcVW/L4xQ1XY4PAd4Nuum1rsA17C39zL7x+CDhrn5AL32Rw==} - engines: {node: '>=20.16.0'} - hasBin: true - stackframe@1.3.4: resolution: {integrity: sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw==} @@ -7195,9 +6127,6 @@ packages: standardwebhooks@1.0.0: resolution: {integrity: sha512-BbHGOQK9olHPMvQNHWul6MYlrRTAOKn03rOe4A8O3CLWhNf4YHBqq2HJKKC+sfqpxiBY52pNeesD6jIiLDz8jg==} - stat-mode@0.3.0: - resolution: {integrity: sha512-QjMLR0A3WwFY2aZdV0okfFEJB5TRjkggXZjxP3A1RsWsNHNu3YPv8btmtc6iCFZ0Rul3FE93OYogvhOUClU+ng==} - statuses@1.5.0: resolution: {integrity: sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==} engines: {node: '>= 0.6'} @@ -7212,22 +6141,12 @@ packages: stream-json@1.9.1: resolution: {integrity: sha512-uWkjJ+2Nt/LO9Z/JyKZbMusL8Dkh97uUBTv3AJQ74y07lVahLY4eEFsPsE97pxYBwr8nnjMAIch5eqI0gPShyw==} - stream-to-array@2.3.0: - resolution: {integrity: sha512-UsZtOYEn4tWU2RGLOXr/o/xjRBftZRlG3dEWoaHr8j4GuypJ3isitGbVyjQKAuMu+xbiop8q224TjiZWc4XTZA==} - - stream-to-promise@2.2.0: - resolution: {integrity: sha512-HAGUASw8NT0k8JvIVutB2Y/9iBk7gpgEyAudXwNJmZERdMITGdajOa4VJfD/kNiA3TppQpTP4J+CtcHwdzKBAw==} - deprecated: Deprecated. Use node:stream/promises and node:stream/consumers instead. - streamdown@2.5.0: resolution: {integrity: sha512-/tTnURfIOxZK/pqJAxsfCvETG/XCJHoWnk3jq9xLcuz6CSpnjjuxSRBTTL4PKGhxiZQf0lqPxGhImdpwcZ2XwA==} peerDependencies: react: ^18.0.0 || ^19.0.0 react-dom: ^18.0.0 || ^19.0.0 - streamx@2.28.0: - resolution: {integrity: sha512-1Yowhzjf0ivGMrTIkY9hav5TxobO9qIVqUE41fiCGMGgc3CLlf4MY+9AHmZqBWgDTue0fY9zWjYFVyf6Diuobw==} - string-width@4.2.3: resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} engines: {node: '>=8'} @@ -7255,10 +6174,6 @@ packages: 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-final-newline@4.0.0: resolution: {integrity: sha512-aulFJcD6YK8V1G7iRB5tigAP4TsHBZZrOV8pjV++zdUwmeV8uzbY7yn6h9MswN62adStNZFuCIx4haBnRuMDaw==} engines: {node: '>=18'} @@ -7330,21 +6245,11 @@ packages: resolution: {integrity: sha512-uxc/zpqFg6x7C8vOE7lh6Lbda8eEL9zmVm/PLeTPBRhh1xCgdWaQ+J1CUieGpIfm2HdtsUpRv+HshiasBMcc6A==} engines: {node: '>=6'} - tar-stream@3.1.7: - resolution: {integrity: sha512-qJj60CXt7IU1Ffyc3NJMjh6EkuCFej46zUqJ4J7pqYlThyd9bO0XBTmcOIhSzZJVWfsLks0+nle/j538YAW9RQ==} - - tar@7.5.20: - resolution: {integrity: sha512-9FcyK4PA6+WbzlTM9WhQm6vB5W7cP7dUiPsv1g7YDwEQnQ1CGpK3MGlKk/ITVWMk05kHZuBhmVhiv8LZoy/PFQ==} - engines: {node: '>=18'} - terser@5.48.0: resolution: {integrity: sha512-J/9An6vs9Us6wKRriSFXBWdRZapREHqFzdNUKk0pmu804EMR6dr6winwo7e5JDxN4xahxQsuysyYFwlwj4XN/Q==} engines: {node: '>=10'} hasBin: true - text-decoder@1.2.7: - resolution: {integrity: sha512-vlLytXkeP4xvEq2otHeJfSQIRyWxo/oZGEbXrtEEF9Hnmrdly59sUbzZ/QgyWuLYHctCHxFF4tRQZNQ9k60ExQ==} - text-encoding-utf-8@1.0.2: resolution: {integrity: sha512-8bw4MY9WjdsD2aMtO0OzOCY3pXGYNx2d2FfHRVUKkiCPDWjKuOlhLVASS+pD7VkLTVjW268LYJHwsnPFlBpbAg==} @@ -7355,13 +6260,6 @@ packages: resolution: {integrity: sha512-nt6AMGKW1p/70DF/hGBdJB57B8Tspmbp5gfJ8ilhLnt7kkr2ye7hzD6NVG8GGErk2HWF34igrL2CXmNIkzKqKw==} engines: {node: '>=18'} - time-span@4.0.0: - resolution: {integrity: sha512-MyqZCTGLDZ77u4k+jqg4UlrzPTPZ49NDlaekU6uuFaJLzPIN1woaRXCbGeqOfxwc3Y37ZROGAJ614Rdv7Olt+g==} - engines: {node: '>=10'} - - tinyexec@0.3.2: - resolution: {integrity: sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA==} - tinyexec@1.2.4: resolution: {integrity: sha512-SHf/r48b7vOrjve9PxJo3MN5v5yuyjHvdUcrQffT3WXMUfnGmHDVbC4k3sHJaJTgZCwpUplIaAo5ANtMyp3YHg==} engines: {node: '>=18'} @@ -7380,10 +6278,6 @@ packages: toggle-selection@1.0.6: resolution: {integrity: sha512-BiZS+C1OS8g/q2RRbJmy59xpyghNBqrr6k5L/uKBGRsTfxmu3ffiRnd8mlGPUVayg8pvfi5urfnu8TU7DVOkLQ==} - toidentifier@1.0.0: - resolution: {integrity: sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==} - engines: {node: '>=0.6'} - toidentifier@1.0.1: resolution: {integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==} engines: {node: '>=0.6'} @@ -7394,10 +6288,6 @@ packages: tr46@0.0.3: resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} - tree-kill@1.2.2: - resolution: {integrity: sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==} - hasBin: true - trim-lines@3.0.1: resolution: {integrity: sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==} @@ -7408,12 +6298,6 @@ packages: resolution: {integrity: sha512-JfJeIHke7y2egdGGgRAvpCwYFUsHlM2gPcrVOxFkznt/4uzQ7HFmvE63iFHVLBJNDuyDOQgijDK/tXH/f6Msjg==} engines: {node: '>=6.10'} - ts-morph@12.0.0: - resolution: {integrity: sha512-VHC8XgU2fFW7yO1f/b3mxKDje1vmyzFXHWzOYmKEkCEwcLjDtbdLgBQviqj4ZwP4MJkQtRo6Ha2I29lq/B+VxA==} - - ts-toolbelt@6.15.5: - resolution: {integrity: sha512-FZIXf1ksVyLcfr7M317jbB67XFJhOO1YqdTcuGaq9q5jLUoTikukZ+98TPjKiP2jC5CgmYdWWYs0s2nLSU0/1A==} - tsconfig-paths-webpack-plugin@4.2.0: resolution: {integrity: sha512-zbem3rfRS8BgeNK50Zz5SIQgXzLafiHjOwUAvk/38/o1jHn/V5QAgVUcz884or7WYcPaH3N2CIfUc2u0ul7UcA==} engines: {node: '>=10.13.0'} @@ -7450,26 +6334,15 @@ packages: resolution: {integrity: sha512-faYHw0anBbc/kWF3zFTEnxSFOAGUX9GFbOBthvDdLsIlEoWOFOtS0zgCiQYwIskL9iGXZL3kAXD8OoZ4GmMATA==} engines: {node: '>= 18'} - typescript@5.9.3: - resolution: {integrity: sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==} - engines: {node: '>=14.17'} - hasBin: true - typescript@6.0.3: resolution: {integrity: sha512-y2TvuxSZPDyQakkFRPZHKFm+KKVqIisdg9/CZwm9ftvKXLP8NRWj38/ODjNbr43SsoXqNuAisEf1GdCxqWcdBw==} engines: {node: '>=14.17'} hasBin: true - uid-promise@1.0.0: - resolution: {integrity: sha512-R8375j0qwXyIu/7R0tjdF06/sElHqbmdmWC9M2qQHpEVbvE4I5+38KJI7LUUmQMp7NVq4tKHiBMkT0NFM453Ig==} - unbash@4.0.3: resolution: {integrity: sha512-3cudTErfToSc4Ggv8XGXVNVli/xHKUtUZvaY5UVwhOcUPbQGz7PeaEnT/SAVgNziZtX67KEN9swMUYkLghxA1w==} engines: {node: '>=14'} - undici-types@5.26.5: - resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==} - undici-types@6.21.0: resolution: {integrity: sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==} @@ -7479,10 +6352,6 @@ packages: undici-types@8.5.0: resolution: {integrity: sha512-+FxhD+5RUdCZHlVPt+pd0DaYYHBPsgoHovxhMnFq9R1SOejHGE4ma0swzuRoKhOisEzsjFWdFedyD0JQmftrHg==} - undici@6.27.0: - resolution: {integrity: sha512-YmfV3YnEDzXRC5lZ2jWtWWHKGUm1zIt8AhesR1tens+HTNv+YZlN/dp6G727LOvMJ8xjP9Be7Y2Sdr96LDm+pg==} - engines: {node: '>=18.17'} - undici@7.28.0: resolution: {integrity: sha512-cRZYrTDwWznlnRiPjggAGxZXanty6M8RV1ff8Wm4LWXBp7/IG8v5DnOm74DtUBp9OONpK75YlPnIjQqX0dBDtA==} engines: {node: '>=20.18.1'} @@ -7518,10 +6387,6 @@ packages: unist-util-visit@5.1.0: resolution: {integrity: sha512-m+vIdyeCOpdr/QeQCu2EzxX/ohgS8KbnPDgFni4dQsfSCtpz8UqDyY5GjRru8PDKuYn7Fq19j1CQ+nJSsGKOzg==} - 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'} @@ -7577,11 +6442,6 @@ packages: resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==} engines: {node: '>= 0.8'} - vercel@56.2.1: - resolution: {integrity: sha512-LlePKr6P5QTRxkANEowCpzzf05UBUTrch9EPyXcIyxQkPEt4eWAqK+pR7t9JSoklEvnu748SA8+tWR+CPMNNAw==} - engines: {node: '>= 18'} - hasBin: true - vfile-location@5.0.3: resolution: {integrity: sha512-5yXvWDEgqeiYiBe1lbxYF7UMAIm/IcopxMHrMQDq3nvKcjPKIhZklUKL+AE7J7uApI4kwe2snsK+eI6UTj9EHg==} @@ -7613,9 +6473,6 @@ packages: resolution: {integrity: sha512-d2JWLCivmZYTSIoge9MsgFCZrt571BikcWGYkjC1khllbTeDlGqZ2D8vD8E/lJa8WGWbb7Plm8/XJYV7IJHZZw==} engines: {node: '>= 8'} - web-vitals@0.2.4: - resolution: {integrity: sha512-6BjspCO9VriYy12z356nL6JBS0GYeEcA457YyRzD+dD6XYCQ75NKhcOHUMHentOE7OcVCIXXDvOm0jKFfQG2Gg==} - web-vitals@5.3.0: resolution: {integrity: sha512-q6LWsLatGYZp5VGBIOvbTj6JBV2nOmC8KvWztXBmwJcfFAzhwKwbOxhUH306XY3CcaZDUlSmSuNPBsCn0bFu+g==} @@ -7690,18 +6547,6 @@ packages: utf-8-validate: optional: true - xdg-app-paths@5.1.0: - resolution: {integrity: sha512-RAQ3WkPf4KTU1A8RtFx3gWywzVKe00tfOPFfl2NDGqbIFENQO4kqAJp7mhQjNj/33W5x5hiWWUdyfPq/5SU3QA==} - engines: {node: '>=6'} - - xdg-app-paths@5.5.1: - resolution: {integrity: sha512-hI3flOB4PLZIy5prbtTpirobtPE2ZtZ52szO+2mM9Efp6ErM398La+C1lIpNWDfNoQk+6Lsi6nMcCwVB7pxeMQ==} - engines: {node: '>= 6.0'} - - xdg-portable@7.3.0: - resolution: {integrity: sha512-sqMMuL1rc0FmMBOzCpd0yuy9trqF2yTTVe+E9ogwCSWQCdDEtQUwrZPT6AxqtsFGRNxycgncbP/xmOOSPw5ZUw==} - engines: {node: '>= 6.0'} - xtend@4.0.2: resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==} engines: {node: '>=0.4'} @@ -7719,13 +6564,6 @@ packages: yallist@3.1.1: resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} - yallist@4.0.0: - resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} - - yallist@5.0.0: - resolution: {integrity: sha512-YgvUTfwqyc7UXVMrB+SImsVYSmTS8X/tSrtdNZMImM+n7+QTriRXyXim0mBrTXNeqzVF0KWGgHPeiyViFFrNDw==} - engines: {node: '>=18'} - yaml@1.10.3: resolution: {integrity: sha512-vIYeF1u3CjlhAFekPPAk2h/Kv4T3mAkMox5OymRiJQB0spDP10LHvt+K7G9Ny6NuuMAb25/6n1qyUjAcGNf/AA==} engines: {node: '>= 6'} @@ -7759,17 +6597,6 @@ packages: resolution: {integrity: sha512-4UEqdc2RYGHZc7Doyqkrqiln3p9X2DZVxaGbwhn2pi7MrRagKaOcIKe8L3OxYcbhXLgLFUS3zAYuQjKBQgmuNg==} engines: {node: ^20.19.0 || ^22.12.0 || >=23} - yauzl-clone@1.0.4: - resolution: {integrity: sha512-igM2RRCf3k8TvZoxR2oguuw4z1xasOnA31joCqHIyLkeWrvAc2Jgay5ISQ2ZplinkoGaJ6orCz56Ey456c5ESA==} - engines: {node: '>=6'} - - yauzl-promise@2.1.3: - resolution: {integrity: sha512-A1pf6fzh6eYkK0L4Qp7g9jzJSDrM6nN0bOn5T0IbY4Yo3w+YkWlHFkJP7mzknMXjqusHFHlKsK2N+4OLsK2MRA==} - engines: {node: '>=6'} - - yauzl@2.10.0: - resolution: {integrity: sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==} - yoctocolors@2.1.2: resolution: {integrity: sha512-CzhO+pFNo8ajLM2d2IW/R93ipy99LWjtwblvC1RsoSUMZgyLbYFr221TnSNT7GjGdYui6P459mw9JH/g/zW2ug==} engines: {node: '>=18'} @@ -7791,15 +6618,9 @@ packages: peerDependencies: zod: ^3.25.28 || ^4 - zod@3.22.4: - resolution: {integrity: sha512-iC+8Io04lddc+mVqQ9AZ7OQ2MrUKGN+oIQyq1vemgt46jwCwLfhq7/pwnBnNXXXZb8VTVLKwp9EDkx+ryxIWmg==} - zod@3.25.76: resolution: {integrity: sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==} - zod@4.1.11: - resolution: {integrity: sha512-WPsqwxITS2tzx1bzhIKsEs19ABD5vmCVa4xBo2tq/SrV4RNZtfws1EnCWQXM6yh8bD08a1idvkB5MZSBiZsjwg==} - zod@4.4.3: resolution: {integrity: sha512-ytENFjIJFl2UwYglde2jchW2Hwm4GJFLDiSXWdTrJQBIN9Fcyp7n4DhxJEiWNAJMV1/BqWfW/kkg71UDcHJyTQ==} @@ -7826,11 +6647,11 @@ packages: snapshots: - '@a2a-js/sdk@0.3.14(express@5.2.1)': + '@a2a-js/sdk@0.3.14(express@5.2.1(supports-color@10.2.2))': dependencies: uuid: 11.1.1 optionalDependencies: - express: 5.2.1 + express: 5.2.1(supports-color@10.2.2) '@ai-sdk/anthropic@3.0.84(zod@4.4.3)': dependencies: @@ -7958,20 +6779,20 @@ snapshots: '@babel/compat-data@7.29.7': {} - '@babel/core@7.29.7': + '@babel/core@7.29.7(supports-color@10.2.2)': dependencies: '@babel/code-frame': 7.29.7 '@babel/generator': 7.29.7 '@babel/helper-compilation-targets': 7.29.7 - '@babel/helper-module-transforms': 7.29.7(@babel/core@7.29.7) + '@babel/helper-module-transforms': 7.29.7(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2) '@babel/helpers': 7.29.7 '@babel/parser': 7.29.7 '@babel/template': 7.29.7 - '@babel/traverse': 7.29.7 + '@babel/traverse': 7.29.7(supports-color@10.2.2) '@babel/types': 7.29.7 '@jridgewell/remapping': 2.3.5 convert-source-map: 2.0.0 - debug: 4.4.3 + debug: 4.4.3(supports-color@10.2.2) gensync: 1.0.0-beta.2 json5: 2.2.3 semver: 6.3.1 @@ -7996,19 +6817,19 @@ snapshots: '@babel/helper-globals@7.29.7': {} - '@babel/helper-module-imports@7.29.7': + '@babel/helper-module-imports@7.29.7(supports-color@10.2.2)': dependencies: - '@babel/traverse': 7.29.7 + '@babel/traverse': 7.29.7(supports-color@10.2.2) '@babel/types': 7.29.7 transitivePeerDependencies: - supports-color - '@babel/helper-module-transforms@7.29.7(@babel/core@7.29.7)': + '@babel/helper-module-transforms@7.29.7(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2)': dependencies: - '@babel/core': 7.29.7 - '@babel/helper-module-imports': 7.29.7 + '@babel/core': 7.29.7(supports-color@10.2.2) + '@babel/helper-module-imports': 7.29.7(supports-color@10.2.2) '@babel/helper-validator-identifier': 7.29.7 - '@babel/traverse': 7.29.7 + '@babel/traverse': 7.29.7(supports-color@10.2.2) transitivePeerDependencies: - supports-color @@ -8035,7 +6856,7 @@ snapshots: '@babel/parser': 7.29.7 '@babel/types': 7.29.7 - '@babel/traverse@7.29.7': + '@babel/traverse@7.29.7(supports-color@10.2.2)': dependencies: '@babel/code-frame': 7.29.7 '@babel/generator': 7.29.7 @@ -8043,7 +6864,7 @@ snapshots: '@babel/parser': 7.29.7 '@babel/template': 7.29.7 '@babel/types': 7.29.7 - debug: 4.4.3 + debug: 4.4.3(supports-color@10.2.2) transitivePeerDependencies: - supports-color @@ -8089,8 +6910,6 @@ snapshots: '@braintree/sanitize-url@7.1.2': {} - '@bytecodealliance/preview2-shim@0.17.6': {} - '@chevrotain/types@11.1.2': {} '@clerk/backend@3.11.6(react-dom@19.2.7(react@19.2.7))(react@19.2.7)': @@ -8109,12 +6928,12 @@ snapshots: - react - react-dom - '@clerk/nextjs@7.5.19(next@16.2.10(@babel/core@7.29.7)(@opentelemetry/api@1.9.1)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(react-dom@19.2.7(react@19.2.7))(react@19.2.7)': + '@clerk/nextjs@7.5.19(next@16.2.10(@babel/core@7.29.7(supports-color@10.2.2))(@opentelemetry/api@1.9.1)(babel-plugin-macros@3.1.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(react-dom@19.2.7(react@19.2.7))(react@19.2.7)': dependencies: '@clerk/backend': 3.11.6(react-dom@19.2.7(react@19.2.7))(react@19.2.7) '@clerk/react': 6.12.4(react-dom@19.2.7(react@19.2.7))(react@19.2.7) '@clerk/shared': 4.25.4(react-dom@19.2.7(react@19.2.7))(react@19.2.7) - next: 16.2.10(@babel/core@7.29.7)(@opentelemetry/api@1.9.1)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) + next: 16.2.10(@babel/core@7.29.7(supports-color@10.2.2))(@opentelemetry/api@1.9.1)(babel-plugin-macros@3.1.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) react: 19.2.7 react-dom: 19.2.7(react@19.2.7) server-only: 0.0.1 @@ -8137,16 +6956,16 @@ snapshots: react: 19.2.7 react-dom: 19.2.7(react@19.2.7) - '@clerk/ui@1.25.4(@solana/web3.js@1.98.4(bufferutil@4.1.0)(typescript@6.0.3)(utf-8-validate@5.0.10))(@types/react@19.2.17)(bs58@6.0.0)(bufferutil@4.1.0)(react-dom@19.2.7(react@19.2.7))(react-native@0.86.0(@babel/core@7.29.7)(@types/react@19.2.17)(bufferutil@4.1.0)(react@19.2.7)(utf-8-validate@5.0.10))(react@19.2.7)(typescript@6.0.3)(utf-8-validate@5.0.10)': + '@clerk/ui@1.25.4(@solana/web3.js@1.98.4(bufferutil@4.1.0)(typescript@6.0.3)(utf-8-validate@5.0.10))(@types/react@19.2.17)(bs58@6.0.0)(bufferutil@4.1.0)(react-dom@19.2.7(react@19.2.7))(react-native@0.86.0(@babel/core@7.29.7(supports-color@10.2.2))(@types/react@19.2.17)(bufferutil@4.1.0)(react@19.2.7)(supports-color@10.2.2)(utf-8-validate@5.0.10))(react@19.2.7)(supports-color@10.2.2)(typescript@6.0.3)(utf-8-validate@5.0.10)': dependencies: '@clerk/localizations': 4.13.3(react-dom@19.2.7(react@19.2.7))(react@19.2.7) '@clerk/shared': 4.25.4(react-dom@19.2.7(react@19.2.7))(react@19.2.7) '@emotion/cache': 11.11.0 - '@emotion/react': 11.11.1(@types/react@19.2.17)(react@19.2.7) + '@emotion/react': 11.11.1(@types/react@19.2.17)(react@19.2.7)(supports-color@10.2.2) '@floating-ui/react': 0.27.12(react-dom@19.2.7(react@19.2.7))(react@19.2.7) '@formkit/auto-animate': 0.8.4 '@solana/wallet-adapter-base': 0.9.27(@solana/web3.js@1.98.4(bufferutil@4.1.0)(typescript@6.0.3)(utf-8-validate@5.0.10)) - '@solana/wallet-adapter-react': 0.15.39(@solana/web3.js@1.98.4(bufferutil@4.1.0)(typescript@6.0.3)(utf-8-validate@5.0.10))(bs58@6.0.0)(bufferutil@4.1.0)(react-native@0.86.0(@babel/core@7.29.7)(@types/react@19.2.17)(bufferutil@4.1.0)(react@19.2.7)(utf-8-validate@5.0.10))(react@19.2.7)(typescript@6.0.3)(utf-8-validate@5.0.10) + '@solana/wallet-adapter-react': 0.15.39(@solana/web3.js@1.98.4(bufferutil@4.1.0)(typescript@6.0.3)(utf-8-validate@5.0.10))(bs58@6.0.0)(bufferutil@4.1.0)(react-native@0.86.0(@babel/core@7.29.7(supports-color@10.2.2))(@types/react@19.2.17)(bufferutil@4.1.0)(react@19.2.7)(supports-color@10.2.2)(utf-8-validate@5.0.10))(react@19.2.7)(typescript@6.0.3)(utf-8-validate@5.0.10) '@solana/wallet-standard': 1.1.4(@solana/wallet-adapter-base@0.9.27(@solana/web3.js@1.98.4(bufferutil@4.1.0)(typescript@6.0.3)(utf-8-validate@5.0.10)))(@solana/web3.js@1.98.4(bufferutil@4.1.0)(typescript@6.0.3)(utf-8-validate@5.0.10))(bs58@6.0.0)(react@19.2.7) '@swc/helpers': 0.5.21 copy-to-clipboard: 3.3.3 @@ -8318,18 +7137,6 @@ snapshots: '@drizzle-team/brocli@0.10.2': {} - '@edge-runtime/format@2.2.1': {} - - '@edge-runtime/node-utils@2.3.0': {} - - '@edge-runtime/ponyfill@2.4.2': {} - - '@edge-runtime/primitives@4.1.0': {} - - '@edge-runtime/vm@3.2.0': - dependencies: - '@edge-runtime/primitives': 4.1.0 - '@emnapi/core@1.11.0': dependencies: '@emnapi/wasi-threads': 1.2.2 @@ -8357,9 +7164,9 @@ snapshots: tslib: 2.8.1 optional: true - '@emotion/babel-plugin@11.13.5': + '@emotion/babel-plugin@11.13.5(supports-color@10.2.2)': dependencies: - '@babel/helper-module-imports': 7.29.7 + '@babel/helper-module-imports': 7.29.7(supports-color@10.2.2) '@babel/runtime': 7.29.7 '@emotion/hash': 0.9.2 '@emotion/memoize': 0.9.0 @@ -8387,10 +7194,10 @@ snapshots: '@emotion/memoize@0.9.0': {} - '@emotion/react@11.11.1(@types/react@19.2.17)(react@19.2.7)': + '@emotion/react@11.11.1(@types/react@19.2.17)(react@19.2.7)(supports-color@10.2.2)': dependencies: '@babel/runtime': 7.29.7 - '@emotion/babel-plugin': 11.13.5 + '@emotion/babel-plugin': 11.13.5(supports-color@10.2.2) '@emotion/cache': 11.11.0 '@emotion/serialize': 1.3.3 '@emotion/use-insertion-effect-with-fallbacks': 1.2.0(react@19.2.7) @@ -8436,234 +7243,156 @@ snapshots: '@esbuild/aix-ppc64@0.25.12': optional: true - '@esbuild/aix-ppc64@0.27.0': - optional: true - '@esbuild/aix-ppc64@0.28.1': optional: true '@esbuild/android-arm64@0.25.12': optional: true - '@esbuild/android-arm64@0.27.0': - optional: true - '@esbuild/android-arm64@0.28.1': optional: true '@esbuild/android-arm@0.25.12': optional: true - '@esbuild/android-arm@0.27.0': - optional: true - '@esbuild/android-arm@0.28.1': optional: true '@esbuild/android-x64@0.25.12': optional: true - '@esbuild/android-x64@0.27.0': - optional: true - '@esbuild/android-x64@0.28.1': optional: true '@esbuild/darwin-arm64@0.25.12': optional: true - '@esbuild/darwin-arm64@0.27.0': - optional: true - '@esbuild/darwin-arm64@0.28.1': optional: true '@esbuild/darwin-x64@0.25.12': optional: true - '@esbuild/darwin-x64@0.27.0': - optional: true - '@esbuild/darwin-x64@0.28.1': optional: true '@esbuild/freebsd-arm64@0.25.12': optional: true - '@esbuild/freebsd-arm64@0.27.0': - optional: true - '@esbuild/freebsd-arm64@0.28.1': optional: true '@esbuild/freebsd-x64@0.25.12': optional: true - '@esbuild/freebsd-x64@0.27.0': - optional: true - '@esbuild/freebsd-x64@0.28.1': optional: true '@esbuild/linux-arm64@0.25.12': optional: true - '@esbuild/linux-arm64@0.27.0': - optional: true - '@esbuild/linux-arm64@0.28.1': optional: true '@esbuild/linux-arm@0.25.12': optional: true - '@esbuild/linux-arm@0.27.0': - optional: true - '@esbuild/linux-arm@0.28.1': optional: true '@esbuild/linux-ia32@0.25.12': optional: true - '@esbuild/linux-ia32@0.27.0': - optional: true - '@esbuild/linux-ia32@0.28.1': optional: true '@esbuild/linux-loong64@0.25.12': optional: true - '@esbuild/linux-loong64@0.27.0': - optional: true - '@esbuild/linux-loong64@0.28.1': optional: true '@esbuild/linux-mips64el@0.25.12': optional: true - '@esbuild/linux-mips64el@0.27.0': - optional: true - '@esbuild/linux-mips64el@0.28.1': optional: true '@esbuild/linux-ppc64@0.25.12': optional: true - '@esbuild/linux-ppc64@0.27.0': - optional: true - '@esbuild/linux-ppc64@0.28.1': optional: true '@esbuild/linux-riscv64@0.25.12': optional: true - '@esbuild/linux-riscv64@0.27.0': - optional: true - '@esbuild/linux-riscv64@0.28.1': optional: true '@esbuild/linux-s390x@0.25.12': optional: true - '@esbuild/linux-s390x@0.27.0': - optional: true - '@esbuild/linux-s390x@0.28.1': optional: true '@esbuild/linux-x64@0.25.12': optional: true - '@esbuild/linux-x64@0.27.0': - optional: true - '@esbuild/linux-x64@0.28.1': optional: true '@esbuild/netbsd-arm64@0.25.12': optional: true - '@esbuild/netbsd-arm64@0.27.0': - optional: true - '@esbuild/netbsd-arm64@0.28.1': optional: true '@esbuild/netbsd-x64@0.25.12': optional: true - '@esbuild/netbsd-x64@0.27.0': - optional: true - '@esbuild/netbsd-x64@0.28.1': optional: true '@esbuild/openbsd-arm64@0.25.12': optional: true - '@esbuild/openbsd-arm64@0.27.0': - optional: true - '@esbuild/openbsd-arm64@0.28.1': optional: true '@esbuild/openbsd-x64@0.25.12': optional: true - '@esbuild/openbsd-x64@0.27.0': - optional: true - '@esbuild/openbsd-x64@0.28.1': optional: true '@esbuild/openharmony-arm64@0.25.12': optional: true - '@esbuild/openharmony-arm64@0.27.0': - optional: true - '@esbuild/openharmony-arm64@0.28.1': optional: true '@esbuild/sunos-x64@0.25.12': optional: true - '@esbuild/sunos-x64@0.27.0': - optional: true - '@esbuild/sunos-x64@0.28.1': optional: true '@esbuild/win32-arm64@0.25.12': optional: true - '@esbuild/win32-arm64@0.27.0': - optional: true - '@esbuild/win32-arm64@0.28.1': optional: true '@esbuild/win32-ia32@0.25.12': optional: true - '@esbuild/win32-ia32@0.27.0': - optional: true - '@esbuild/win32-ia32@0.28.1': optional: true '@esbuild/win32-x64@0.25.12': optional: true - '@esbuild/win32-x64@0.27.0': - optional: true - '@esbuild/win32-x64@0.28.1': optional: true @@ -8694,14 +7423,14 @@ snapshots: '@formkit/auto-animate@0.8.4': {} - '@google/genai@2.12.0(@modelcontextprotocol/sdk@1.29.0(zod@4.4.3))(bufferutil@4.1.0)(utf-8-validate@5.0.10)': + '@google/genai@2.12.0(@modelcontextprotocol/sdk@1.29.0(supports-color@10.2.2)(zod@4.4.3))(bufferutil@4.1.0)(supports-color@10.2.2)(utf-8-validate@5.0.10)': dependencies: - google-auth-library: 10.9.0 + google-auth-library: 10.9.0(supports-color@10.2.2) p-retry: 4.6.2 protobufjs: 7.6.5 ws: 8.21.0(bufferutil@4.1.0)(utf-8-validate@5.0.10) optionalDependencies: - '@modelcontextprotocol/sdk': 1.29.0(zod@4.4.3) + '@modelcontextprotocol/sdk': 1.29.0(supports-color@10.2.2)(zod@4.4.3) transitivePeerDependencies: - bufferutil - supports-color @@ -8820,10 +7549,6 @@ snapshots: '@img/sharp-win32-x64@0.34.5': optional: true - '@isaacs/fs-minipass@4.0.1': - dependencies: - minipass: 7.1.3 - '@isaacs/ttlcache@1.4.1': {} '@isaacs/ttlcache@2.1.5': {} @@ -8876,22 +7601,9 @@ snapshots: dependencies: '@lukeed/csprng': 1.1.0 - '@mapbox/node-pre-gyp@2.0.3': - dependencies: - consola: 3.4.2 - detect-libc: 2.1.2 - https-proxy-agent: 7.0.6 - node-fetch: 2.7.0 - nopt: 8.1.0 - semver: 7.8.5 - tar: 7.5.20 - transitivePeerDependencies: - - encoding - - supports-color - - '@mastra/core@1.51.0(ai@6.0.205(zod@4.4.3))(bufferutil@4.1.0)(express@5.2.1)(utf-8-validate@5.0.10)(zod@4.4.3)': + '@mastra/core@1.51.0(ai@6.0.205(zod@4.4.3))(bufferutil@4.1.0)(express@5.2.1(supports-color@10.2.2))(supports-color@10.2.2)(utf-8-validate@5.0.10)(zod@4.4.3)': dependencies: - '@a2a-js/sdk': 0.3.14(express@5.2.1) + '@a2a-js/sdk': 0.3.14(express@5.2.1(supports-color@10.2.2)) '@ai-sdk/provider-utils-v5': '@ai-sdk/provider-utils@3.0.28(zod@4.4.3)' '@ai-sdk/provider-utils-v6': '@ai-sdk/provider-utils@4.0.38(zod@4.4.3)' '@ai-sdk/provider-utils-v7': '@ai-sdk/provider-utils@5.0.7(zod@4.4.3)' @@ -8902,11 +7614,11 @@ snapshots: '@isaacs/ttlcache': 2.1.5 '@lukeed/uuid': 2.0.1 '@mastra/schema-compat': 1.3.4(zod@4.4.3) - '@modelcontextprotocol/sdk': 1.29.0(zod@4.4.3) + '@modelcontextprotocol/sdk': 1.29.0(supports-color@10.2.2)(zod@4.4.3) '@sindresorhus/slugify': 2.2.1 '@standard-schema/spec': 1.1.0 ajv: 8.20.0 - chat: 4.30.0(ai@6.0.205(zod@4.4.3))(zod@4.4.3) + chat: 4.30.0(ai@6.0.205(zod@4.4.3))(supports-color@10.2.2)(zod@4.4.3) croner: 10.0.1 dotenv: 17.4.2 execa: 9.6.1 @@ -8947,7 +7659,7 @@ snapshots: dependencies: '@chevrotain/types': 11.1.2 - '@modelcontextprotocol/sdk@1.29.0(zod@4.4.3)': + '@modelcontextprotocol/sdk@1.29.0(supports-color@10.2.2)(zod@4.4.3)': dependencies: '@hono/node-server': 1.19.14(hono@4.12.30) ajv: 8.20.0 @@ -8957,8 +7669,8 @@ snapshots: cross-spawn: 7.0.6 eventsource: 3.0.7 eventsource-parser: 3.1.0 - express: 5.2.1 - express-rate-limit: 8.5.2(express@5.2.1) + express: 5.2.1(supports-color@10.2.2) + express-rate-limit: 8.5.2(express@5.2.1(supports-color@10.2.2)) hono: 4.12.30 jose: 6.2.3 json-schema-typed: 8.0.2 @@ -8969,57 +7681,6 @@ snapshots: transitivePeerDependencies: - supports-color - '@napi-rs/keyring-darwin-arm64@1.2.0': - optional: true - - '@napi-rs/keyring-darwin-x64@1.2.0': - optional: true - - '@napi-rs/keyring-freebsd-x64@1.2.0': - optional: true - - '@napi-rs/keyring-linux-arm-gnueabihf@1.2.0': - optional: true - - '@napi-rs/keyring-linux-arm64-gnu@1.2.0': - optional: true - - '@napi-rs/keyring-linux-arm64-musl@1.2.0': - optional: true - - '@napi-rs/keyring-linux-riscv64-gnu@1.2.0': - optional: true - - '@napi-rs/keyring-linux-x64-gnu@1.2.0': - optional: true - - '@napi-rs/keyring-linux-x64-musl@1.2.0': - optional: true - - '@napi-rs/keyring-win32-arm64-msvc@1.2.0': - optional: true - - '@napi-rs/keyring-win32-ia32-msvc@1.2.0': - optional: true - - '@napi-rs/keyring-win32-x64-msvc@1.2.0': - optional: true - - '@napi-rs/keyring@1.2.0': - optionalDependencies: - '@napi-rs/keyring-darwin-arm64': 1.2.0 - '@napi-rs/keyring-darwin-x64': 1.2.0 - '@napi-rs/keyring-freebsd-x64': 1.2.0 - '@napi-rs/keyring-linux-arm-gnueabihf': 1.2.0 - '@napi-rs/keyring-linux-arm64-gnu': 1.2.0 - '@napi-rs/keyring-linux-arm64-musl': 1.2.0 - '@napi-rs/keyring-linux-riscv64-gnu': 1.2.0 - '@napi-rs/keyring-linux-x64-gnu': 1.2.0 - '@napi-rs/keyring-linux-x64-musl': 1.2.0 - '@napi-rs/keyring-win32-arm64-msvc': 1.2.0 - '@napi-rs/keyring-win32-ia32-msvc': 1.2.0 - '@napi-rs/keyring-win32-x64-msvc': 1.2.0 - '@napi-rs/wasm-runtime@1.1.5(@emnapi/core@1.11.0)(@emnapi/runtime@1.11.0)': dependencies: '@emnapi/core': 1.11.0 @@ -9066,18 +7727,6 @@ snapshots: '@noble/hashes@1.8.0': {} - '@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.20.1 - '@openrouter/ai-sdk-provider@2.9.1(ai@6.0.205(zod@4.4.3))(zod@4.4.3)': dependencies: ai: 6.0.205(zod@4.4.3) @@ -9149,8 +7798,6 @@ snapshots: '@oxc-parser/binding-win32-x64-msvc@0.137.0': optional: true - '@oxc-project/types@0.110.0': {} - '@oxc-project/types@0.137.0': {} '@oxc-resolver/binding-android-arm-eabi@11.21.3': @@ -9214,71 +7861,6 @@ snapshots: '@oxc-resolver/binding-win32-x64-msvc@11.21.3': optional: true - '@oxc-transform/binding-android-arm-eabi@0.111.0': - optional: true - - '@oxc-transform/binding-android-arm64@0.111.0': - optional: true - - '@oxc-transform/binding-darwin-arm64@0.111.0': - optional: true - - '@oxc-transform/binding-darwin-x64@0.111.0': - optional: true - - '@oxc-transform/binding-freebsd-x64@0.111.0': - optional: true - - '@oxc-transform/binding-linux-arm-gnueabihf@0.111.0': - optional: true - - '@oxc-transform/binding-linux-arm-musleabihf@0.111.0': - optional: true - - '@oxc-transform/binding-linux-arm64-gnu@0.111.0': - optional: true - - '@oxc-transform/binding-linux-arm64-musl@0.111.0': - optional: true - - '@oxc-transform/binding-linux-ppc64-gnu@0.111.0': - optional: true - - '@oxc-transform/binding-linux-riscv64-gnu@0.111.0': - optional: true - - '@oxc-transform/binding-linux-riscv64-musl@0.111.0': - optional: true - - '@oxc-transform/binding-linux-s390x-gnu@0.111.0': - optional: true - - '@oxc-transform/binding-linux-x64-gnu@0.111.0': - optional: true - - '@oxc-transform/binding-linux-x64-musl@0.111.0': - optional: true - - '@oxc-transform/binding-openharmony-arm64@0.111.0': - optional: true - - '@oxc-transform/binding-wasm32-wasi@0.111.0(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)': - dependencies: - '@napi-rs/wasm-runtime': 1.1.5(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1) - transitivePeerDependencies: - - '@emnapi/core' - - '@emnapi/runtime' - optional: true - - '@oxc-transform/binding-win32-arm64-msvc@0.111.0': - optional: true - - '@oxc-transform/binding-win32-ia32-msvc@0.111.0': - optional: true - - '@oxc-transform/binding-win32-x64-msvc@0.111.0': - optional: true - '@polar-sh/sdk@0.48.1': dependencies: standardwebhooks: 1.0.0 @@ -9464,17 +8046,17 @@ snapshots: optionalDependencies: '@types/react': 19.2.17 - '@react-native-async-storage/async-storage@1.24.0(react-native@0.86.0(@babel/core@7.29.7)(@types/react@19.2.17)(bufferutil@4.1.0)(react@19.2.7)(utf-8-validate@5.0.10))': + '@react-native-async-storage/async-storage@1.24.0(react-native@0.86.0(@babel/core@7.29.7(supports-color@10.2.2))(@types/react@19.2.17)(bufferutil@4.1.0)(react@19.2.7)(supports-color@10.2.2)(utf-8-validate@5.0.10))': dependencies: merge-options: 3.0.4 - react-native: 0.86.0(@babel/core@7.29.7)(@types/react@19.2.17)(bufferutil@4.1.0)(react@19.2.7)(utf-8-validate@5.0.10) + react-native: 0.86.0(@babel/core@7.29.7(supports-color@10.2.2))(@types/react@19.2.17)(bufferutil@4.1.0)(react@19.2.7)(supports-color@10.2.2)(utf-8-validate@5.0.10) optional: true '@react-native/assets-registry@0.86.0': {} - '@react-native/codegen@0.86.0(@babel/core@7.29.7)': + '@react-native/codegen@0.86.0(@babel/core@7.29.7(supports-color@10.2.2))': dependencies: - '@babel/core': 7.29.7 + '@babel/core': 7.29.7(supports-color@10.2.2) '@babel/parser': 7.29.7 hermes-parser: 0.36.0 invariant: 2.2.4 @@ -9482,13 +8064,13 @@ snapshots: tinyglobby: 0.2.17 yargs: 17.7.3 - '@react-native/community-cli-plugin@0.86.0(bufferutil@4.1.0)(utf-8-validate@5.0.10)': + '@react-native/community-cli-plugin@0.86.0(bufferutil@4.1.0)(supports-color@10.2.2)(utf-8-validate@5.0.10)': dependencies: - '@react-native/dev-middleware': 0.86.0(bufferutil@4.1.0)(utf-8-validate@5.0.10) - debug: 4.4.3 + '@react-native/dev-middleware': 0.86.0(bufferutil@4.1.0)(supports-color@10.2.2)(utf-8-validate@5.0.10) + debug: 4.4.3(supports-color@10.2.2) invariant: 2.2.4 - metro: 0.84.4(bufferutil@4.1.0)(utf-8-validate@5.0.10) - metro-config: 0.84.4(bufferutil@4.1.0)(utf-8-validate@5.0.10) + metro: 0.84.4(bufferutil@4.1.0)(supports-color@10.2.2)(utf-8-validate@5.0.10) + metro-config: 0.84.4(bufferutil@4.1.0)(supports-color@10.2.2)(utf-8-validate@5.0.10) metro-core: 0.84.4 semver: 7.8.5 transitivePeerDependencies: @@ -9498,27 +8080,27 @@ snapshots: '@react-native/debugger-frontend@0.86.0': {} - '@react-native/debugger-shell@0.86.0': + '@react-native/debugger-shell@0.86.0(supports-color@10.2.2)': dependencies: cross-spawn: 7.0.6 - debug: 4.4.3 + debug: 4.4.3(supports-color@10.2.2) fb-dotslash: 0.5.8 transitivePeerDependencies: - supports-color - '@react-native/dev-middleware@0.86.0(bufferutil@4.1.0)(utf-8-validate@5.0.10)': + '@react-native/dev-middleware@0.86.0(bufferutil@4.1.0)(supports-color@10.2.2)(utf-8-validate@5.0.10)': dependencies: '@isaacs/ttlcache': 1.4.1 '@react-native/debugger-frontend': 0.86.0 - '@react-native/debugger-shell': 0.86.0 - chrome-launcher: 0.15.2 - chromium-edge-launcher: 0.3.0 - connect: 3.7.0 - debug: 4.4.3 + '@react-native/debugger-shell': 0.86.0(supports-color@10.2.2) + chrome-launcher: 0.15.2(supports-color@10.2.2) + chromium-edge-launcher: 0.3.0(supports-color@10.2.2) + connect: 3.7.0(supports-color@10.2.2) + debug: 4.4.3(supports-color@10.2.2) invariant: 2.2.4 nullthrows: 1.1.1 open: 7.4.2 - serve-static: 1.16.3 + serve-static: 1.16.3(supports-color@10.2.2) ws: 7.5.11(bufferutil@4.1.0)(utf-8-validate@5.0.10) transitivePeerDependencies: - bufferutil @@ -9531,69 +8113,15 @@ snapshots: '@react-native/normalize-colors@0.86.0': {} - '@react-native/virtualized-lists@0.86.0(@types/react@19.2.17)(react-native@0.86.0(@babel/core@7.29.7)(@types/react@19.2.17)(bufferutil@4.1.0)(react@19.2.7)(utf-8-validate@5.0.10))(react@19.2.7)': + '@react-native/virtualized-lists@0.86.0(@types/react@19.2.17)(react-native@0.86.0(@babel/core@7.29.7(supports-color@10.2.2))(@types/react@19.2.17)(bufferutil@4.1.0)(react@19.2.7)(supports-color@10.2.2)(utf-8-validate@5.0.10))(react@19.2.7)': dependencies: invariant: 2.2.4 nullthrows: 1.1.1 react: 19.2.7 - react-native: 0.86.0(@babel/core@7.29.7)(@types/react@19.2.17)(bufferutil@4.1.0)(react@19.2.7)(utf-8-validate@5.0.10) + react-native: 0.86.0(@babel/core@7.29.7(supports-color@10.2.2))(@types/react@19.2.17)(bufferutil@4.1.0)(react@19.2.7)(supports-color@10.2.2)(utf-8-validate@5.0.10) optionalDependencies: '@types/react': 19.2.17 - '@renovatebot/pep440@4.2.1': {} - - '@rolldown/binding-android-arm64@1.0.0-rc.1': - optional: true - - '@rolldown/binding-darwin-arm64@1.0.0-rc.1': - optional: true - - '@rolldown/binding-darwin-x64@1.0.0-rc.1': - optional: true - - '@rolldown/binding-freebsd-x64@1.0.0-rc.1': - optional: true - - '@rolldown/binding-linux-arm-gnueabihf@1.0.0-rc.1': - optional: true - - '@rolldown/binding-linux-arm64-gnu@1.0.0-rc.1': - optional: true - - '@rolldown/binding-linux-arm64-musl@1.0.0-rc.1': - optional: true - - '@rolldown/binding-linux-x64-gnu@1.0.0-rc.1': - optional: true - - '@rolldown/binding-linux-x64-musl@1.0.0-rc.1': - optional: true - - '@rolldown/binding-openharmony-arm64@1.0.0-rc.1': - optional: true - - '@rolldown/binding-wasm32-wasi@1.0.0-rc.1(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)': - dependencies: - '@napi-rs/wasm-runtime': 1.1.5(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1) - transitivePeerDependencies: - - '@emnapi/core' - - '@emnapi/runtime' - optional: true - - '@rolldown/binding-win32-arm64-msvc@1.0.0-rc.1': - optional: true - - '@rolldown/binding-win32-x64-msvc@1.0.0-rc.1': - optional: true - - '@rolldown/pluginutils@1.0.0-rc.1': {} - - '@rollup/pluginutils@5.4.0': - dependencies: - '@types/estree': 1.0.9 - estree-walker: 2.0.2 - picomatch: 4.0.5 - '@sec-ant/readable-stream@0.4.1': {} '@shikijs/core@3.23.0': @@ -9635,8 +8163,6 @@ snapshots: '@simple-libs/stream-utils@2.0.0': {} - '@sinclair/typebox@0.25.24': {} - '@sinclair/typebox@0.27.10': {} '@sindresorhus/is@7.2.0': {} @@ -9652,9 +8178,9 @@ snapshots: dependencies: escape-string-regexp: 5.0.0 - '@solana-mobile/mobile-wallet-adapter-protocol-web3js@2.2.9(@solana/web3.js@1.98.4(bufferutil@4.1.0)(typescript@6.0.3)(utf-8-validate@5.0.10))(bufferutil@4.1.0)(react-native@0.86.0(@babel/core@7.29.7)(@types/react@19.2.17)(bufferutil@4.1.0)(react@19.2.7)(utf-8-validate@5.0.10))(typescript@6.0.3)(utf-8-validate@5.0.10)': + '@solana-mobile/mobile-wallet-adapter-protocol-web3js@2.2.9(@solana/web3.js@1.98.4(bufferutil@4.1.0)(typescript@6.0.3)(utf-8-validate@5.0.10))(bufferutil@4.1.0)(react-native@0.86.0(@babel/core@7.29.7(supports-color@10.2.2))(@types/react@19.2.17)(bufferutil@4.1.0)(react@19.2.7)(supports-color@10.2.2)(utf-8-validate@5.0.10))(typescript@6.0.3)(utf-8-validate@5.0.10)': dependencies: - '@solana-mobile/mobile-wallet-adapter-protocol': 2.2.9(bufferutil@4.1.0)(react-native@0.86.0(@babel/core@7.29.7)(@types/react@19.2.17)(bufferutil@4.1.0)(react@19.2.7)(utf-8-validate@5.0.10))(typescript@6.0.3)(utf-8-validate@5.0.10) + '@solana-mobile/mobile-wallet-adapter-protocol': 2.2.9(bufferutil@4.1.0)(react-native@0.86.0(@babel/core@7.29.7(supports-color@10.2.2))(@types/react@19.2.17)(bufferutil@4.1.0)(react@19.2.7)(supports-color@10.2.2)(utf-8-validate@5.0.10))(typescript@6.0.3)(utf-8-validate@5.0.10) '@solana/web3.js': 1.98.4(bufferutil@4.1.0)(typescript@6.0.3)(utf-8-validate@5.0.10) transitivePeerDependencies: - bufferutil @@ -9663,41 +8189,41 @@ snapshots: - typescript - utf-8-validate - '@solana-mobile/mobile-wallet-adapter-protocol@2.2.9(bufferutil@4.1.0)(react-native@0.86.0(@babel/core@7.29.7)(@types/react@19.2.17)(bufferutil@4.1.0)(react@19.2.7)(utf-8-validate@5.0.10))(typescript@6.0.3)(utf-8-validate@5.0.10)': + '@solana-mobile/mobile-wallet-adapter-protocol@2.2.9(bufferutil@4.1.0)(react-native@0.86.0(@babel/core@7.29.7(supports-color@10.2.2))(@types/react@19.2.17)(bufferutil@4.1.0)(react@19.2.7)(supports-color@10.2.2)(utf-8-validate@5.0.10))(typescript@6.0.3)(utf-8-validate@5.0.10)': dependencies: '@solana/kit': 6.10.0(bufferutil@4.1.0)(typescript@6.0.3)(utf-8-validate@5.0.10) '@solana/wallet-standard-features': 1.4.0 '@solana/wallet-standard-util': 1.1.3 '@wallet-standard/core': 1.1.2 - react-native: 0.86.0(@babel/core@7.29.7)(@types/react@19.2.17)(bufferutil@4.1.0)(react@19.2.7)(utf-8-validate@5.0.10) + react-native: 0.86.0(@babel/core@7.29.7(supports-color@10.2.2))(@types/react@19.2.17)(bufferutil@4.1.0)(react@19.2.7)(supports-color@10.2.2)(utf-8-validate@5.0.10) transitivePeerDependencies: - bufferutil - fastestsmallesttextencoderdecoder - typescript - utf-8-validate - '@solana-mobile/wallet-adapter-mobile@2.2.9(@solana/web3.js@1.98.4(bufferutil@4.1.0)(typescript@6.0.3)(utf-8-validate@5.0.10))(bufferutil@4.1.0)(react-native@0.86.0(@babel/core@7.29.7)(@types/react@19.2.17)(bufferutil@4.1.0)(react@19.2.7)(utf-8-validate@5.0.10))(typescript@6.0.3)(utf-8-validate@5.0.10)': + '@solana-mobile/wallet-adapter-mobile@2.2.9(@solana/web3.js@1.98.4(bufferutil@4.1.0)(typescript@6.0.3)(utf-8-validate@5.0.10))(bufferutil@4.1.0)(react-native@0.86.0(@babel/core@7.29.7(supports-color@10.2.2))(@types/react@19.2.17)(bufferutil@4.1.0)(react@19.2.7)(supports-color@10.2.2)(utf-8-validate@5.0.10))(typescript@6.0.3)(utf-8-validate@5.0.10)': dependencies: - '@solana-mobile/mobile-wallet-adapter-protocol': 2.2.9(bufferutil@4.1.0)(react-native@0.86.0(@babel/core@7.29.7)(@types/react@19.2.17)(bufferutil@4.1.0)(react@19.2.7)(utf-8-validate@5.0.10))(typescript@6.0.3)(utf-8-validate@5.0.10) - '@solana-mobile/mobile-wallet-adapter-protocol-web3js': 2.2.9(@solana/web3.js@1.98.4(bufferutil@4.1.0)(typescript@6.0.3)(utf-8-validate@5.0.10))(bufferutil@4.1.0)(react-native@0.86.0(@babel/core@7.29.7)(@types/react@19.2.17)(bufferutil@4.1.0)(react@19.2.7)(utf-8-validate@5.0.10))(typescript@6.0.3)(utf-8-validate@5.0.10) - '@solana-mobile/wallet-standard-mobile': 0.5.3(bufferutil@4.1.0)(react-native@0.86.0(@babel/core@7.29.7)(@types/react@19.2.17)(bufferutil@4.1.0)(react@19.2.7)(utf-8-validate@5.0.10))(typescript@6.0.3)(utf-8-validate@5.0.10) + '@solana-mobile/mobile-wallet-adapter-protocol': 2.2.9(bufferutil@4.1.0)(react-native@0.86.0(@babel/core@7.29.7(supports-color@10.2.2))(@types/react@19.2.17)(bufferutil@4.1.0)(react@19.2.7)(supports-color@10.2.2)(utf-8-validate@5.0.10))(typescript@6.0.3)(utf-8-validate@5.0.10) + '@solana-mobile/mobile-wallet-adapter-protocol-web3js': 2.2.9(@solana/web3.js@1.98.4(bufferutil@4.1.0)(typescript@6.0.3)(utf-8-validate@5.0.10))(bufferutil@4.1.0)(react-native@0.86.0(@babel/core@7.29.7(supports-color@10.2.2))(@types/react@19.2.17)(bufferutil@4.1.0)(react@19.2.7)(supports-color@10.2.2)(utf-8-validate@5.0.10))(typescript@6.0.3)(utf-8-validate@5.0.10) + '@solana-mobile/wallet-standard-mobile': 0.5.3(bufferutil@4.1.0)(react-native@0.86.0(@babel/core@7.29.7(supports-color@10.2.2))(@types/react@19.2.17)(bufferutil@4.1.0)(react@19.2.7)(supports-color@10.2.2)(utf-8-validate@5.0.10))(typescript@6.0.3)(utf-8-validate@5.0.10) '@solana/wallet-adapter-base': 0.9.27(@solana/web3.js@1.98.4(bufferutil@4.1.0)(typescript@6.0.3)(utf-8-validate@5.0.10)) '@solana/wallet-standard-features': 1.4.0 '@solana/web3.js': 1.98.4(bufferutil@4.1.0)(typescript@6.0.3)(utf-8-validate@5.0.10) '@wallet-standard/core': 1.1.2 - react-native: 0.86.0(@babel/core@7.29.7)(@types/react@19.2.17)(bufferutil@4.1.0)(react@19.2.7)(utf-8-validate@5.0.10) + react-native: 0.86.0(@babel/core@7.29.7(supports-color@10.2.2))(@types/react@19.2.17)(bufferutil@4.1.0)(react@19.2.7)(supports-color@10.2.2)(utf-8-validate@5.0.10) tslib: 2.8.1 optionalDependencies: - '@react-native-async-storage/async-storage': 1.24.0(react-native@0.86.0(@babel/core@7.29.7)(@types/react@19.2.17)(bufferutil@4.1.0)(react@19.2.7)(utf-8-validate@5.0.10)) + '@react-native-async-storage/async-storage': 1.24.0(react-native@0.86.0(@babel/core@7.29.7(supports-color@10.2.2))(@types/react@19.2.17)(bufferutil@4.1.0)(react@19.2.7)(supports-color@10.2.2)(utf-8-validate@5.0.10)) transitivePeerDependencies: - bufferutil - fastestsmallesttextencoderdecoder - typescript - utf-8-validate - '@solana-mobile/wallet-standard-mobile@0.5.3(bufferutil@4.1.0)(react-native@0.86.0(@babel/core@7.29.7)(@types/react@19.2.17)(bufferutil@4.1.0)(react@19.2.7)(utf-8-validate@5.0.10))(typescript@6.0.3)(utf-8-validate@5.0.10)': + '@solana-mobile/wallet-standard-mobile@0.5.3(bufferutil@4.1.0)(react-native@0.86.0(@babel/core@7.29.7(supports-color@10.2.2))(@types/react@19.2.17)(bufferutil@4.1.0)(react@19.2.7)(supports-color@10.2.2)(utf-8-validate@5.0.10))(typescript@6.0.3)(utf-8-validate@5.0.10)': dependencies: - '@solana-mobile/mobile-wallet-adapter-protocol': 2.2.9(bufferutil@4.1.0)(react-native@0.86.0(@babel/core@7.29.7)(@types/react@19.2.17)(bufferutil@4.1.0)(react@19.2.7)(utf-8-validate@5.0.10))(typescript@6.0.3)(utf-8-validate@5.0.10) + '@solana-mobile/mobile-wallet-adapter-protocol': 2.2.9(bufferutil@4.1.0)(react-native@0.86.0(@babel/core@7.29.7(supports-color@10.2.2))(@types/react@19.2.17)(bufferutil@4.1.0)(react@19.2.7)(supports-color@10.2.2)(utf-8-validate@5.0.10))(typescript@6.0.3)(utf-8-validate@5.0.10) '@solana/wallet-standard-chains': 1.1.2 '@solana/wallet-standard-features': 1.4.0 '@wallet-standard/base': 1.1.1 @@ -9706,7 +8232,7 @@ snapshots: qrcode: 1.5.4 tslib: 2.8.1 optionalDependencies: - '@react-native-async-storage/async-storage': 1.24.0(react-native@0.86.0(@babel/core@7.29.7)(@types/react@19.2.17)(bufferutil@4.1.0)(react@19.2.7)(utf-8-validate@5.0.10)) + '@react-native-async-storage/async-storage': 1.24.0(react-native@0.86.0(@babel/core@7.29.7(supports-color@10.2.2))(@types/react@19.2.17)(bufferutil@4.1.0)(react@19.2.7)(supports-color@10.2.2)(utf-8-validate@5.0.10)) transitivePeerDependencies: - bufferutil - fastestsmallesttextencoderdecoder @@ -10214,9 +8740,9 @@ snapshots: '@wallet-standard/features': 1.1.1 eventemitter3: 5.0.4 - '@solana/wallet-adapter-react@0.15.39(@solana/web3.js@1.98.4(bufferutil@4.1.0)(typescript@6.0.3)(utf-8-validate@5.0.10))(bs58@6.0.0)(bufferutil@4.1.0)(react-native@0.86.0(@babel/core@7.29.7)(@types/react@19.2.17)(bufferutil@4.1.0)(react@19.2.7)(utf-8-validate@5.0.10))(react@19.2.7)(typescript@6.0.3)(utf-8-validate@5.0.10)': + '@solana/wallet-adapter-react@0.15.39(@solana/web3.js@1.98.4(bufferutil@4.1.0)(typescript@6.0.3)(utf-8-validate@5.0.10))(bs58@6.0.0)(bufferutil@4.1.0)(react-native@0.86.0(@babel/core@7.29.7(supports-color@10.2.2))(@types/react@19.2.17)(bufferutil@4.1.0)(react@19.2.7)(supports-color@10.2.2)(utf-8-validate@5.0.10))(react@19.2.7)(typescript@6.0.3)(utf-8-validate@5.0.10)': dependencies: - '@solana-mobile/wallet-adapter-mobile': 2.2.9(@solana/web3.js@1.98.4(bufferutil@4.1.0)(typescript@6.0.3)(utf-8-validate@5.0.10))(bufferutil@4.1.0)(react-native@0.86.0(@babel/core@7.29.7)(@types/react@19.2.17)(bufferutil@4.1.0)(react@19.2.7)(utf-8-validate@5.0.10))(typescript@6.0.3)(utf-8-validate@5.0.10) + '@solana-mobile/wallet-adapter-mobile': 2.2.9(@solana/web3.js@1.98.4(bufferutil@4.1.0)(typescript@6.0.3)(utf-8-validate@5.0.10))(bufferutil@4.1.0)(react-native@0.86.0(@babel/core@7.29.7(supports-color@10.2.2))(@types/react@19.2.17)(bufferutil@4.1.0)(react@19.2.7)(supports-color@10.2.2)(utf-8-validate@5.0.10))(typescript@6.0.3)(utf-8-validate@5.0.10) '@solana/wallet-adapter-base': 0.9.27(@solana/web3.js@1.98.4(bufferutil@4.1.0)(typescript@6.0.3)(utf-8-validate@5.0.10)) '@solana/wallet-standard-wallet-adapter-react': 1.1.5(@solana/wallet-adapter-base@0.9.27(@solana/web3.js@1.98.4(bufferutil@4.1.0)(typescript@6.0.3)(utf-8-validate@5.0.10)))(@solana/web3.js@1.98.4(bufferutil@4.1.0)(typescript@6.0.3)(utf-8-validate@5.0.10))(bs58@6.0.0)(react@19.2.7) '@solana/web3.js': 1.98.4(bufferutil@4.1.0)(typescript@6.0.3)(utf-8-validate@5.0.10) @@ -10332,12 +8858,12 @@ snapshots: react: 19.2.7 shiki: 3.23.0 - '@streamdown/math@1.0.2(react@19.2.7)': + '@streamdown/math@1.0.2(react@19.2.7)(supports-color@10.2.2)': dependencies: katex: 0.16.47 react: 19.2.7 rehype-katex: 7.0.1 - remark-math: 6.0.0 + remark-math: 6.0.0(supports-color@10.2.2) transitivePeerDependencies: - supports-color @@ -10454,15 +8980,6 @@ snapshots: '@tanstack/virtual-core@3.17.4': {} - '@tootallnate/once@2.0.1': {} - - '@ts-morph/common@0.11.1': - dependencies: - fast-glob: 3.3.3 - minimatch: 3.1.5 - mkdirp: 1.0.4 - path-browserify: 1.0.1 - '@turbo/darwin-64@2.10.5': optional: true @@ -10633,8 +9150,6 @@ snapshots: dependencies: '@types/istanbul-lib-report': 3.0.3 - '@types/json-schema@7.0.15': {} - '@types/katex@0.16.8': {} '@types/mdast@4.0.4': @@ -10645,10 +9160,6 @@ snapshots: '@types/node@12.20.55': {} - '@types/node@20.11.0': - dependencies: - undici-types: 5.26.5 - '@types/node@22.20.1': dependencies: undici-types: 6.21.0 @@ -10707,327 +9218,8 @@ snapshots: '@uwdata/flechette@2.5.0': {} - '@vercel/backends@0.8.24(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)': - dependencies: - '@vercel/build-utils': 13.33.1 - '@vercel/nft': 1.10.0 - '@vercel/static-config': 3.4.0 - execa: 3.2.0 - fs-extra: 11.1.0 - get-port: 5.1.1 - oxc-transform: 0.111.0(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1) - path-to-regexp: 8.4.2 - resolve.exports: 2.0.3 - rolldown: 1.0.0-rc.1(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1) - srvx: 0.11.16 - ts-morph: 12.0.0 - tsx: 4.22.4 - zod: 3.22.4 - transitivePeerDependencies: - - '@emnapi/core' - - '@emnapi/runtime' - - encoding - - rollup - - supports-color - - '@vercel/blob@2.4.0': - dependencies: - async-retry: 1.3.3 - is-buffer: 2.0.5 - is-node-process: 1.2.0 - throttleit: 2.1.0 - undici: 6.27.0 - - '@vercel/build-utils@13.33.1': - dependencies: - '@vercel/python-analysis': 0.11.1 - cjs-module-lexer: 1.2.3 - es-module-lexer: 1.5.0 - - '@vercel/cervel@0.1.32(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)': - dependencies: - '@vercel/backends': 0.8.24(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1) - transitivePeerDependencies: - - '@emnapi/core' - - '@emnapi/runtime' - - encoding - - rollup - - supports-color - - '@vercel/cli-auth@0.3.0': - dependencies: - '@napi-rs/keyring': 1.2.0 - '@vercel/cli-config': 0.2.0 - async-listen: 3.0.0 - open: 8.4.0 - zod: 4.1.11 - - '@vercel/cli-config@0.2.0': - dependencies: - xdg-app-paths: 5.5.1 - zod: 4.1.11 - - '@vercel/container@0.0.5': {} - - '@vercel/detect-agent@1.2.3': {} - - '@vercel/elysia@0.1.101': - dependencies: - '@vercel/node': 5.8.25 - '@vercel/static-config': 3.4.0 - transitivePeerDependencies: - - encoding - - rollup - - supports-color - - '@vercel/error-utils@2.2.0': {} - - '@vercel/express@0.1.115(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)': - dependencies: - '@vercel/cervel': 0.1.32(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1) - '@vercel/nft': 1.10.0 - '@vercel/node': 5.8.25 - '@vercel/static-config': 3.4.0 - fs-extra: 11.1.0 - path-to-regexp: 8.4.2 - ts-morph: 12.0.0 - zod: 3.22.4 - transitivePeerDependencies: - - '@emnapi/core' - - '@emnapi/runtime' - - encoding - - rollup - - supports-color - - '@vercel/fastify@0.1.104': - dependencies: - '@vercel/node': 5.8.25 - '@vercel/static-config': 3.4.0 - transitivePeerDependencies: - - encoding - - rollup - - supports-color - - '@vercel/fun@1.3.0': - dependencies: - '@tootallnate/once': 2.0.1 - async-listen: 1.2.0 - debug: 4.3.4 - generic-pool: 3.4.2 - micro: 9.3.5-canary.3 - ms: 2.1.1 - node-fetch: 2.6.7 - path-to-regexp: 8.4.2 - promisepipe: 3.0.0 - semver: 7.5.4 - stat-mode: 0.3.0 - stream-to-promise: 2.2.0 - tar: 7.5.20 - tinyexec: 0.3.2 - tree-kill: 1.2.2 - uid-promise: 1.0.0 - xdg-app-paths: 5.1.0 - yauzl-promise: 2.1.3 - transitivePeerDependencies: - - encoding - - supports-color - - '@vercel/gatsby-plugin-vercel-analytics@1.0.11': - dependencies: - web-vitals: 0.2.4 - - '@vercel/gatsby-plugin-vercel-builder@2.2.27': - dependencies: - '@sinclair/typebox': 0.25.24 - '@vercel/build-utils': 13.33.1 - esbuild: 0.27.0 - etag: 1.8.1 - fs-extra: 11.1.0 - - '@vercel/go@3.10.2': {} - - '@vercel/h3@0.1.110': - dependencies: - '@vercel/node': 5.8.25 - '@vercel/static-config': 3.4.0 - transitivePeerDependencies: - - encoding - - rollup - - supports-color - - '@vercel/hono@0.2.104': - dependencies: - '@vercel/nft': 1.10.0 - '@vercel/node': 5.8.25 - '@vercel/static-config': 3.4.0 - fs-extra: 11.1.0 - path-to-regexp: 8.4.2 - ts-morph: 12.0.0 - zod: 3.22.4 - transitivePeerDependencies: - - encoding - - rollup - - supports-color - - '@vercel/hydrogen@1.4.0': - dependencies: - '@vercel/static-config': 3.4.0 - ts-morph: 12.0.0 - - '@vercel/koa@0.1.84': - dependencies: - '@vercel/node': 5.8.25 - '@vercel/static-config': 3.4.0 - transitivePeerDependencies: - - encoding - - rollup - - supports-color - - '@vercel/nestjs@0.2.105': - dependencies: - '@vercel/node': 5.8.25 - '@vercel/static-config': 3.4.0 - transitivePeerDependencies: - - encoding - - rollup - - supports-color - - '@vercel/next@4.20.4': - dependencies: - '@vercel/nft': 1.10.0 - transitivePeerDependencies: - - encoding - - rollup - - supports-color - - '@vercel/nft@1.10.0': - dependencies: - '@mapbox/node-pre-gyp': 2.0.3 - '@rollup/pluginutils': 5.4.0 - acorn: 8.17.0 - acorn-import-attributes: 1.9.5(acorn@8.17.0) - async-sema: 3.1.1 - bindings: 1.5.0 - estree-walker: 2.0.2 - glob: 13.0.6 - graceful-fs: 4.2.11 - node-gyp-build: 4.8.4 - picomatch: 4.0.5 - resolve-from: 5.0.0 - transitivePeerDependencies: - - encoding - - rollup - - supports-color - - '@vercel/node@5.8.25': - dependencies: - '@edge-runtime/node-utils': 2.3.0 - '@edge-runtime/primitives': 4.1.0 - '@edge-runtime/vm': 3.2.0 - '@types/node': 20.11.0 - '@vercel/build-utils': 13.33.1 - '@vercel/error-utils': 2.2.0 - '@vercel/nft': 1.10.0 - '@vercel/static-config': 3.4.0 - async-listen: 3.0.0 - cjs-module-lexer: 1.2.3 - edge-runtime: 2.5.9 - es-module-lexer: 1.4.1 - esbuild: 0.27.0 - etag: 1.8.1 - mime-types: 2.1.35 - node-fetch: 2.6.9 - path-to-regexp: 6.3.0 - path-to-regexp-updated: path-to-regexp@6.3.0 - ts-morph: 12.0.0 - tsx: 4.22.4 - typescript: 5.9.3 - undici: 6.27.0 - transitivePeerDependencies: - - encoding - - rollup - - supports-color - '@vercel/oidc@3.2.0': {} - '@vercel/prepare-flags-definitions@0.3.0': {} - - '@vercel/python-analysis@0.11.1': - dependencies: - '@bytecodealliance/preview2-shim': 0.17.6 - '@renovatebot/pep440': 4.2.1 - fs-extra: 11.1.1 - js-yaml: 4.2.0 - minimatch: 10.2.5 - smol-toml: 1.6.1 - zod: 3.22.4 - - '@vercel/python@6.50.0': - dependencies: - '@vercel/python-analysis': 0.11.1 - - '@vercel/redwood@2.5.0': - dependencies: - '@vercel/nft': 1.10.0 - '@vercel/static-config': 3.4.0 - semver: 6.3.1 - ts-morph: 12.0.0 - transitivePeerDependencies: - - encoding - - rollup - - supports-color - - '@vercel/remix-builder@5.9.1': - dependencies: - '@vercel/error-utils': 2.2.0 - '@vercel/nft': 1.10.0 - '@vercel/static-config': 3.4.0 - path-to-regexp: 6.3.0 - path-to-regexp-updated: path-to-regexp@6.3.0 - ts-morph: 12.0.0 - transitivePeerDependencies: - - encoding - - rollup - - supports-color - - '@vercel/ruby@2.5.1': {} - - '@vercel/rust@1.4.0': - dependencies: - execa: 5.1.1 - get-port: 5.1.1 - smol-toml: 1.6.1 - - '@vercel/sandbox@2.4.0': - dependencies: - '@vercel/oidc': 3.2.0 - '@workflow/serde': 4.1.0-beta.2 - async-retry: 1.3.3 - jose: 6.2.3 - jsonlines: 0.1.1 - ms: 2.1.3 - picocolors: 1.1.1 - tar-stream: 3.1.7 - undici: 7.28.0 - xdg-app-paths: 5.1.0 - zod: 4.4.3 - transitivePeerDependencies: - - bare-abort-controller - - react-native-b4a - - '@vercel/static-build@2.11.7': - dependencies: - '@vercel/gatsby-plugin-vercel-analytics': 1.0.11 - '@vercel/gatsby-plugin-vercel-builder': 2.2.27 - '@vercel/static-config': 3.4.0 - ts-morph: 12.0.0 - - '@vercel/static-config@3.4.0': - dependencies: - ajv: 8.20.0 - json-schema-to-ts: 1.6.4 - ts-morph: 12.0.0 - '@wallet-standard/app@1.1.1': dependencies: '@wallet-standard/base': 1.1.1 @@ -11059,8 +9251,6 @@ snapshots: '@workflow/serde@4.1.0-beta.2': {} - abbrev@3.0.1: {} - abort-controller@3.0.0: dependencies: event-target-shim: 5.0.1 @@ -11070,10 +9260,6 @@ snapshots: mime-types: 3.0.2 negotiator: 1.0.0 - acorn-import-attributes@1.9.5(acorn@8.17.0): - dependencies: - acorn: 8.17.0 - acorn-jsx-walk@2.0.0: {} acorn-jsx@5.3.2(acorn@8.17.0): @@ -11129,10 +9315,6 @@ snapshots: ansi-styles@6.2.3: {} - any-promise@1.3.0: {} - - arg@4.1.0: {} - argparse@1.0.10: dependencies: sprintf-js: 1.0.3 @@ -11152,20 +9334,6 @@ snapshots: asap@2.0.6: {} - async-listen@1.2.0: {} - - async-listen@3.0.0: {} - - async-listen@3.0.1: {} - - async-retry@1.3.3: - dependencies: - retry: 0.13.1 - - async-sema@3.1.1: {} - - b4a@1.8.1: {} - babel-plugin-macros@3.1.0: dependencies: '@babel/runtime': 7.29.7 @@ -11178,12 +9346,6 @@ snapshots: bail@2.0.2: {} - balanced-match@1.0.2: {} - - balanced-match@4.0.4: {} - - bare-events@2.9.1: {} - base-x@3.0.11: dependencies: safe-buffer: 5.2.1 @@ -11196,19 +9358,15 @@ snapshots: bignumber.js@9.3.1: {} - bindings@1.5.0: - dependencies: - file-uri-to-path: 1.0.0 - blake3-wasm@2.1.5: {} bn.js@5.2.4: {} - body-parser@2.2.2: + body-parser@2.2.2(supports-color@10.2.2): dependencies: bytes: 3.1.2 content-type: 1.0.5 - debug: 4.4.3 + debug: 4.4.3(supports-color@10.2.2) http-errors: 2.0.1 iconv-lite: 0.7.2 on-finished: 2.4.1 @@ -11224,15 +9382,6 @@ snapshots: bs58: 4.0.1 text-encoding-utf-8: 1.0.2 - brace-expansion@1.1.15: - dependencies: - balanced-match: 1.0.2 - concat-map: 0.0.1 - - brace-expansion@5.0.6: - dependencies: - balanced-match: 4.0.4 - braces@3.0.3: dependencies: fill-range: 7.1.1 @@ -11257,8 +9406,6 @@ snapshots: dependencies: node-int64: 0.4.0 - buffer-crc32@0.2.13: {} - buffer-equal-constant-time@1.0.1: {} buffer-from@1.1.2: {} @@ -11273,8 +9420,6 @@ snapshots: node-gyp-build: 4.8.4 optional: true - bytes@3.1.0: {} - bytes@3.1.2: {} call-bind-apply-helpers@1.0.2: @@ -11312,12 +9457,12 @@ snapshots: character-reference-invalid@2.0.1: {} - chat@4.30.0(ai@6.0.205(zod@4.4.3))(zod@4.4.3): + chat@4.30.0(ai@6.0.205(zod@4.4.3))(supports-color@10.2.2)(zod@4.4.3): dependencies: '@workflow/serde': 4.1.0-beta.2 mdast-util-to-string: 4.0.0 - remark-gfm: 4.0.1 - remark-parse: 11.0.0 + remark-gfm: 4.0.1(supports-color@10.2.2) + remark-parse: 11.0.0(supports-color@10.2.2) remark-stringify: 11.0.0 remend: 1.3.0 unified: 11.0.5 @@ -11327,27 +9472,21 @@ snapshots: transitivePeerDependencies: - supports-color - chokidar@4.0.0: - dependencies: - readdirp: 4.1.2 - - chownr@3.0.0: {} - - chrome-launcher@0.15.2: + chrome-launcher@0.15.2(supports-color@10.2.2): dependencies: '@types/node': 25.9.3 escape-string-regexp: 4.0.0 is-wsl: 2.2.0 - lighthouse-logger: 1.4.2 + lighthouse-logger: 1.4.2(supports-color@10.2.2) transitivePeerDependencies: - supports-color - chromium-edge-launcher@0.3.0: + chromium-edge-launcher@0.3.0(supports-color@10.2.2): dependencies: '@types/node': 25.9.3 escape-string-regexp: 4.0.0 is-wsl: 2.2.0 - lighthouse-logger: 1.4.2 + lighthouse-logger: 1.4.2(supports-color@10.2.2) mkdirp: 1.0.4 transitivePeerDependencies: - supports-color @@ -11356,8 +9495,6 @@ snapshots: ci-info@3.9.0: {} - cjs-module-lexer@1.2.3: {} - client-only@0.0.1: {} cliui@6.0.0: @@ -11392,8 +9529,6 @@ snapshots: - '@types/react' - '@types/react-dom' - code-block-writer@10.1.1: {} - color-convert@2.0.1: dependencies: color-name: 1.1.4 @@ -11416,23 +9551,17 @@ snapshots: commander@8.3.0: {} - concat-map@0.0.1: {} - - connect@3.7.0: + connect@3.7.0(supports-color@10.2.2): dependencies: - debug: 2.6.9 - finalhandler: 1.1.2 + debug: 2.6.9(supports-color@10.2.2) + finalhandler: 1.1.2(supports-color@10.2.2) parseurl: 1.3.3 utils-merge: 1.0.1 transitivePeerDependencies: - supports-color - consola@3.4.2: {} - content-disposition@1.1.0: {} - content-type@1.0.4: {} - content-type@1.0.5: {} content-type@2.0.0: {} @@ -11450,8 +9579,6 @@ snapshots: '@simple-libs/stream-utils': 2.0.0 argue-cli: 3.1.0 - convert-hrtime@3.0.0: {} - convert-source-map@1.9.0: {} convert-source-map@2.0.0: {} @@ -11705,17 +9832,17 @@ snapshots: dayjs@1.11.21: {} - debug@2.6.9: + debug@2.6.9(supports-color@10.2.2): dependencies: ms: 2.0.0 + optionalDependencies: + supports-color: 10.2.2 - debug@4.3.4: - dependencies: - ms: 2.1.2 - - debug@4.4.3: + debug@4.4.3(supports-color@10.2.2): dependencies: ms: 2.1.3 + optionalDependencies: + supports-color: 10.2.2 decamelize@1.2.0: {} @@ -11723,16 +9850,12 @@ snapshots: dependencies: character-entities: 2.0.2 - define-lazy-prop@2.0.0: {} - delaunator@5.1.0: dependencies: robust-predicates: 3.0.3 delay@5.0.0: {} - depd@1.1.2: {} - depd@2.0.0: {} dependency-cruiser@18.1.0: @@ -11800,18 +9923,6 @@ snapshots: dependencies: safe-buffer: 5.2.1 - edge-runtime@2.5.9: - dependencies: - '@edge-runtime/format': 2.2.1 - '@edge-runtime/ponyfill': 2.4.2 - '@edge-runtime/vm': 3.2.0 - async-listen: 3.0.1 - mri: 1.2.0 - picocolors: 1.0.0 - pretty-ms: 7.0.1 - signal-exit: 4.0.2 - time-span: 4.0.0 - ee-first@1.1.1: {} electron-to-chromium@1.5.372: {} @@ -11824,14 +9935,6 @@ snapshots: encodeurl@2.0.0: {} - end-of-stream@1.1.0: - dependencies: - once: 1.3.3 - - end-of-stream@1.4.5: - dependencies: - once: 1.4.0 - enhanced-resolve@5.21.6: dependencies: graceful-fs: 4.2.11 @@ -11860,10 +9963,6 @@ snapshots: es-errors@1.3.0: {} - es-module-lexer@1.4.1: {} - - es-module-lexer@1.5.0: {} - es-object-atoms@1.1.2: dependencies: es-errors: 1.3.0 @@ -11905,35 +10004,6 @@ snapshots: '@esbuild/win32-ia32': 0.25.12 '@esbuild/win32-x64': 0.25.12 - esbuild@0.27.0: - optionalDependencies: - '@esbuild/aix-ppc64': 0.27.0 - '@esbuild/android-arm': 0.27.0 - '@esbuild/android-arm64': 0.27.0 - '@esbuild/android-x64': 0.27.0 - '@esbuild/darwin-arm64': 0.27.0 - '@esbuild/darwin-x64': 0.27.0 - '@esbuild/freebsd-arm64': 0.27.0 - '@esbuild/freebsd-x64': 0.27.0 - '@esbuild/linux-arm': 0.27.0 - '@esbuild/linux-arm64': 0.27.0 - '@esbuild/linux-ia32': 0.27.0 - '@esbuild/linux-loong64': 0.27.0 - '@esbuild/linux-mips64el': 0.27.0 - '@esbuild/linux-ppc64': 0.27.0 - '@esbuild/linux-riscv64': 0.27.0 - '@esbuild/linux-s390x': 0.27.0 - '@esbuild/linux-x64': 0.27.0 - '@esbuild/netbsd-arm64': 0.27.0 - '@esbuild/netbsd-x64': 0.27.0 - '@esbuild/openbsd-arm64': 0.27.0 - '@esbuild/openbsd-x64': 0.27.0 - '@esbuild/openharmony-arm64': 0.27.0 - '@esbuild/sunos-x64': 0.27.0 - '@esbuild/win32-arm64': 0.27.0 - '@esbuild/win32-ia32': 0.27.0 - '@esbuild/win32-x64': 0.27.0 - esbuild@0.28.1: optionalDependencies: '@esbuild/aix-ppc64': 0.28.1 @@ -11975,53 +10045,18 @@ snapshots: estree-util-is-identifier-name@3.0.0: {} - estree-walker@2.0.2: {} - etag@1.8.1: {} event-target-shim@5.0.1: {} eventemitter3@5.0.4: {} - events-intercept@2.0.0: {} - - events-universal@1.0.1: - dependencies: - bare-events: 2.9.1 - transitivePeerDependencies: - - bare-abort-controller - eventsource-parser@3.1.0: {} eventsource@3.0.7: dependencies: eventsource-parser: 3.1.0 - execa@3.2.0: - dependencies: - cross-spawn: 7.0.6 - get-stream: 5.2.0 - human-signals: 1.1.1 - is-stream: 2.0.1 - merge-stream: 2.0.0 - npm-run-path: 4.0.1 - onetime: 5.1.2 - p-finally: 2.0.1 - signal-exit: 3.0.7 - strip-final-newline: 2.0.0 - - 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 - execa@9.6.1: dependencies: '@sindresorhus/merge-streams': 4.0.0 @@ -12039,25 +10074,25 @@ snapshots: exponential-backoff@3.1.3: {} - express-rate-limit@8.5.2(express@5.2.1): + express-rate-limit@8.5.2(express@5.2.1(supports-color@10.2.2)): dependencies: - express: 5.2.1 + express: 5.2.1(supports-color@10.2.2) ip-address: 10.2.0 - express@5.2.1: + express@5.2.1(supports-color@10.2.2): dependencies: accepts: 2.0.0 - body-parser: 2.2.2 + body-parser: 2.2.2(supports-color@10.2.2) content-disposition: 1.1.0 content-type: 1.0.5 cookie: 0.7.2 cookie-signature: 1.2.2 - debug: 4.4.3 + debug: 4.4.3(supports-color@10.2.2) depd: 2.0.0 encodeurl: 2.0.0 escape-html: 1.0.3 etag: 1.8.1 - finalhandler: 2.1.1 + finalhandler: 2.1.1(supports-color@10.2.2) fresh: 2.0.0 http-errors: 2.0.1 merge-descriptors: 2.0.0 @@ -12068,9 +10103,9 @@ snapshots: proxy-addr: 2.0.7 qs: 6.15.2 range-parser: 1.2.1 - router: 2.2.0 - send: 1.2.1 - serve-static: 2.2.1 + router: 2.2.0(supports-color@10.2.2) + send: 1.2.1(supports-color@10.2.2) + serve-static: 2.2.1(supports-color@10.2.2) statuses: 2.0.2 type-is: 2.1.0 vary: 1.1.2 @@ -12087,16 +10122,6 @@ snapshots: fast-deep-equal@3.1.3: {} - fast-fifo@1.3.2: {} - - 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-sha256@1.3.0: {} fast-stable-stringify@1.0.0: {} @@ -12117,10 +10142,6 @@ snapshots: dependencies: walk-up-path: 4.0.0 - fd-slicer@1.1.0: - dependencies: - pend: 1.2.0 - fdir@6.5.0(picomatch@4.0.5): optionalDependencies: picomatch: 4.0.5 @@ -12134,15 +10155,13 @@ snapshots: dependencies: is-unicode-supported: 2.1.0 - file-uri-to-path@1.0.0: {} - fill-range@7.1.1: dependencies: to-regex-range: 5.0.1 - finalhandler@1.1.2: + finalhandler@1.1.2(supports-color@10.2.2): dependencies: - debug: 2.6.9 + debug: 2.6.9(supports-color@10.2.2) encodeurl: 1.0.2 escape-html: 1.0.3 on-finished: 2.3.0 @@ -12152,9 +10171,9 @@ snapshots: transitivePeerDependencies: - supports-color - finalhandler@2.1.1: + finalhandler@2.1.1(supports-color@10.2.2): dependencies: - debug: 4.4.3 + debug: 4.4.3(supports-color@10.2.2) encodeurl: 2.0.0 escape-html: 1.0.3 on-finished: 2.4.1 @@ -12186,44 +10205,30 @@ snapshots: fresh@2.0.0: {} - fs-extra@11.1.0: - dependencies: - graceful-fs: 4.2.11 - jsonfile: 6.2.1 - universalify: 2.0.1 - - fs-extra@11.1.1: - dependencies: - graceful-fs: 4.2.11 - jsonfile: 6.2.1 - universalify: 2.0.1 - fsevents@2.3.3: optional: true function-bind@1.1.2: {} - gaxios@7.2.0: + gaxios@7.2.0(supports-color@10.2.2): dependencies: extend: 3.0.2 - https-proxy-agent: 7.0.6 + https-proxy-agent: 7.0.6(supports-color@10.2.2) node-fetch: 3.3.2 transitivePeerDependencies: - supports-color - gcp-metadata@8.1.2: + gcp-metadata@8.1.2(supports-color@10.2.2): dependencies: - gaxios: 7.2.0 + gaxios: 7.2.0(supports-color@10.2.2) google-logging-utils: 1.1.3 json-bigint: 1.0.0 transitivePeerDependencies: - supports-color - geist@1.7.2(next@16.2.10(@babel/core@7.29.7)(@opentelemetry/api@1.9.1)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)): + geist@1.7.2(next@16.2.10(@babel/core@7.29.7(supports-color@10.2.2))(@opentelemetry/api@1.9.1)(babel-plugin-macros@3.1.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)): dependencies: - next: 16.2.10(@babel/core@7.29.7)(@opentelemetry/api@1.9.1)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) - - generic-pool@3.4.2: {} + next: 16.2.10(@babel/core@7.29.7(supports-color@10.2.2))(@opentelemetry/api@1.9.1)(babel-plugin-macros@3.1.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) gensync@1.0.0-beta.2: {} @@ -12246,19 +10251,11 @@ snapshots: 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.1.2 - get-stream@5.2.0: - dependencies: - pump: 3.0.4 - - get-stream@6.0.1: {} - get-stream@9.0.1: dependencies: '@sec-ant/readable-stream': 0.4.1 @@ -12268,18 +10265,8 @@ snapshots: dependencies: resolve-pkg-maps: 1.0.0 - glob-parent@5.1.2: - dependencies: - is-glob: 4.0.3 - glob-to-regexp@0.4.1: {} - glob@13.0.6: - dependencies: - minimatch: 10.2.5 - minipass: 7.1.3 - path-scurry: 2.0.2 - global-directory@4.0.1: dependencies: ini: 4.1.1 @@ -12288,12 +10275,12 @@ snapshots: dependencies: ini: 6.0.0 - google-auth-library@10.9.0: + google-auth-library@10.9.0(supports-color@10.2.2): dependencies: base64-js: 1.5.1 ecdsa-sig-formatter: 1.0.11 - gaxios: 7.2.0 - gcp-metadata: 8.1.2 + gaxios: 7.2.0(supports-color@10.2.2) + gcp-metadata: 8.1.2(supports-color@10.2.2) google-logging-utils: 1.1.3 jws: 4.0.1 transitivePeerDependencies: @@ -12399,7 +10386,7 @@ snapshots: stringify-entities: 4.0.4 zwitch: 2.0.4 - hast-util-to-jsx-runtime@2.3.6: + hast-util-to-jsx-runtime@2.3.6(supports-color@10.2.2): dependencies: '@types/estree': 1.0.9 '@types/hast': 3.0.4 @@ -12408,9 +10395,9 @@ snapshots: devlop: 1.1.0 estree-util-is-identifier-name: 3.0.0 hast-util-whitespace: 3.0.0 - mdast-util-mdx-expression: 2.0.1 - mdast-util-mdx-jsx: 3.2.0 - mdast-util-mdxjs-esm: 2.0.1 + mdast-util-mdx-expression: 2.0.1(supports-color@10.2.2) + mdast-util-mdx-jsx: 3.2.0(supports-color@10.2.2) + mdast-util-mdxjs-esm: 2.0.1(supports-color@10.2.2) property-information: 7.2.0 space-separated-tokens: 2.0.2 style-to-js: 1.1.21 @@ -12472,14 +10459,6 @@ snapshots: html-void-elements@3.0.0: {} - http-errors@1.7.3: - dependencies: - depd: 1.1.2 - inherits: 2.0.4 - setprototypeof: 1.1.1 - statuses: 1.5.0 - toidentifier: 1.0.0 - http-errors@2.0.1: dependencies: depd: 2.0.0 @@ -12488,27 +10467,19 @@ snapshots: statuses: 2.0.2 toidentifier: 1.0.1 - https-proxy-agent@7.0.6: + https-proxy-agent@7.0.6(supports-color@10.2.2): dependencies: agent-base: 7.1.4 - debug: 4.4.3 + debug: 4.4.3(supports-color@10.2.2) transitivePeerDependencies: - supports-color - human-signals@1.1.1: {} - - human-signals@2.1.0: {} - human-signals@8.0.1: {} humanize-ms@1.2.1: dependencies: ms: 2.1.3 - iconv-lite@0.4.24: - dependencies: - safer-buffer: 2.1.2 - iconv-lite@0.6.3: dependencies: safer-buffer: 2.1.2 @@ -12568,8 +10539,6 @@ snapshots: is-arrayish@0.2.1: {} - is-buffer@2.0.5: {} - is-core-module@2.16.2: dependencies: hasown: 2.0.4 @@ -12580,14 +10549,8 @@ snapshots: is-extendable@0.1.1: {} - is-extglob@2.1.1: {} - is-fullwidth-code-point@3.0.0: {} - is-glob@4.0.3: - dependencies: - is-extglob: 2.1.1 - is-hexadecimal@2.0.1: {} is-installed-globally@1.0.0: @@ -12597,8 +10560,6 @@ snapshots: is-network-error@1.3.2: {} - is-node-process@1.2.0: {} - is-number@7.0.0: {} is-path-inside@4.0.0: {} @@ -12610,8 +10571,6 @@ snapshots: is-promise@4.0.0: {} - is-stream@2.0.1: {} - is-stream@4.0.1: {} is-unicode-supported@2.1.0: {} @@ -12675,8 +10634,6 @@ snapshots: jiti@2.7.0: {} - jose@5.9.6: {} - jose@6.2.3: {} jpeg-js@0.4.4: {} @@ -12704,11 +10661,6 @@ snapshots: json-parse-even-better-errors@2.3.1: {} - json-schema-to-ts@1.6.4: - dependencies: - '@types/json-schema': 7.0.15 - ts-toolbelt: 6.15.5 - json-schema-to-zod@2.8.1: {} json-schema-traverse@1.0.0: {} @@ -12721,16 +10673,6 @@ snapshots: json5@2.2.3: {} - jsonc-parser@3.3.1: {} - - jsonfile@6.2.1: - dependencies: - universalify: 2.0.1 - optionalDependencies: - graceful-fs: 4.2.11 - - jsonlines@0.1.1: {} - jwa@2.0.1: dependencies: buffer-equal-constant-time: 1.0.1 @@ -12823,9 +10765,9 @@ snapshots: leven@3.1.0: {} - lighthouse-logger@1.4.2: + lighthouse-logger@1.4.2(supports-color@10.2.2): dependencies: - debug: 2.6.9 + debug: 2.6.9(supports-color@10.2.2) marky: 1.3.0 transitivePeerDependencies: - supports-color @@ -12903,16 +10845,10 @@ snapshots: dependencies: yallist: 3.1.1 - lru-cache@6.0.0: - dependencies: - yallist: 4.0.0 - lucide-react@1.24.0(react@19.2.7): dependencies: react: 19.2.7 - luxon@3.7.2: {} - magic-string@0.30.21: dependencies: '@jridgewell/sourcemap-codec': 1.5.5 @@ -12938,14 +10874,14 @@ snapshots: unist-util-is: 6.0.1 unist-util-visit-parents: 6.0.2 - mdast-util-from-markdown@2.0.3: + mdast-util-from-markdown@2.0.3(supports-color@10.2.2): dependencies: '@types/mdast': 4.0.4 '@types/unist': 3.0.3 decode-named-character-reference: 1.3.0 devlop: 1.1.0 mdast-util-to-string: 4.0.0 - micromark: 4.0.2 + micromark: 4.0.2(supports-color@10.2.2) micromark-util-decode-numeric-character-reference: 2.0.2 micromark-util-decode-string: 2.0.1 micromark-util-normalize-identifier: 2.0.1 @@ -12963,79 +10899,79 @@ snapshots: mdast-util-find-and-replace: 3.0.2 micromark-util-character: 2.1.1 - mdast-util-gfm-footnote@2.1.0: + mdast-util-gfm-footnote@2.1.0(supports-color@10.2.2): dependencies: '@types/mdast': 4.0.4 devlop: 1.1.0 - mdast-util-from-markdown: 2.0.3 + mdast-util-from-markdown: 2.0.3(supports-color@10.2.2) mdast-util-to-markdown: 2.1.2 micromark-util-normalize-identifier: 2.0.1 transitivePeerDependencies: - supports-color - mdast-util-gfm-strikethrough@2.0.0: + mdast-util-gfm-strikethrough@2.0.0(supports-color@10.2.2): dependencies: '@types/mdast': 4.0.4 - mdast-util-from-markdown: 2.0.3 + mdast-util-from-markdown: 2.0.3(supports-color@10.2.2) mdast-util-to-markdown: 2.1.2 transitivePeerDependencies: - supports-color - mdast-util-gfm-table@2.0.0: + mdast-util-gfm-table@2.0.0(supports-color@10.2.2): dependencies: '@types/mdast': 4.0.4 devlop: 1.1.0 markdown-table: 3.0.4 - mdast-util-from-markdown: 2.0.3 + mdast-util-from-markdown: 2.0.3(supports-color@10.2.2) mdast-util-to-markdown: 2.1.2 transitivePeerDependencies: - supports-color - mdast-util-gfm-task-list-item@2.0.0: + mdast-util-gfm-task-list-item@2.0.0(supports-color@10.2.2): dependencies: '@types/mdast': 4.0.4 devlop: 1.1.0 - mdast-util-from-markdown: 2.0.3 + mdast-util-from-markdown: 2.0.3(supports-color@10.2.2) mdast-util-to-markdown: 2.1.2 transitivePeerDependencies: - supports-color - mdast-util-gfm@3.1.0: + mdast-util-gfm@3.1.0(supports-color@10.2.2): dependencies: - mdast-util-from-markdown: 2.0.3 + mdast-util-from-markdown: 2.0.3(supports-color@10.2.2) mdast-util-gfm-autolink-literal: 2.0.1 - mdast-util-gfm-footnote: 2.1.0 - mdast-util-gfm-strikethrough: 2.0.0 - mdast-util-gfm-table: 2.0.0 - mdast-util-gfm-task-list-item: 2.0.0 + mdast-util-gfm-footnote: 2.1.0(supports-color@10.2.2) + mdast-util-gfm-strikethrough: 2.0.0(supports-color@10.2.2) + mdast-util-gfm-table: 2.0.0(supports-color@10.2.2) + mdast-util-gfm-task-list-item: 2.0.0(supports-color@10.2.2) mdast-util-to-markdown: 2.1.2 transitivePeerDependencies: - supports-color - mdast-util-math@3.0.0: + mdast-util-math@3.0.0(supports-color@10.2.2): dependencies: '@types/hast': 3.0.4 '@types/mdast': 4.0.4 devlop: 1.1.0 longest-streak: 3.1.0 - mdast-util-from-markdown: 2.0.3 + mdast-util-from-markdown: 2.0.3(supports-color@10.2.2) mdast-util-to-markdown: 2.1.2 unist-util-remove-position: 5.0.0 transitivePeerDependencies: - supports-color - mdast-util-mdx-expression@2.0.1: + mdast-util-mdx-expression@2.0.1(supports-color@10.2.2): dependencies: '@types/estree-jsx': 1.0.5 '@types/hast': 3.0.4 '@types/mdast': 4.0.4 devlop: 1.1.0 - mdast-util-from-markdown: 2.0.3 + mdast-util-from-markdown: 2.0.3(supports-color@10.2.2) mdast-util-to-markdown: 2.1.2 transitivePeerDependencies: - supports-color - mdast-util-mdx-jsx@3.2.0: + mdast-util-mdx-jsx@3.2.0(supports-color@10.2.2): dependencies: '@types/estree-jsx': 1.0.5 '@types/hast': 3.0.4 @@ -13043,7 +10979,7 @@ snapshots: '@types/unist': 3.0.3 ccount: 2.0.1 devlop: 1.1.0 - mdast-util-from-markdown: 2.0.3 + mdast-util-from-markdown: 2.0.3(supports-color@10.2.2) mdast-util-to-markdown: 2.1.2 parse-entities: 4.0.2 stringify-entities: 4.0.4 @@ -13052,13 +10988,13 @@ snapshots: transitivePeerDependencies: - supports-color - mdast-util-mdxjs-esm@2.0.1: + mdast-util-mdxjs-esm@2.0.1(supports-color@10.2.2): dependencies: '@types/estree-jsx': 1.0.5 '@types/hast': 3.0.4 '@types/mdast': 4.0.4 devlop: 1.1.0 - mdast-util-from-markdown: 2.0.3 + mdast-util-from-markdown: 2.0.3(supports-color@10.2.2) mdast-util-to-markdown: 2.1.2 transitivePeerDependencies: - supports-color @@ -13109,8 +11045,6 @@ snapshots: merge-stream@2.0.0: {} - merge2@1.4.1: {} - mermaid@11.15.0: dependencies: '@braintree/sanitize-url': 7.1.2 @@ -13135,9 +11069,9 @@ snapshots: ts-dedent: 2.3.0 uuid: 11.1.1 - metro-babel-transformer@0.84.4: + metro-babel-transformer@0.84.4(supports-color@10.2.2): dependencies: - '@babel/core': 7.29.7 + '@babel/core': 7.29.7(supports-color@10.2.2) flow-enums-runtime: 0.0.6 hermes-parser: 0.35.0 metro-cache-key: 0.84.4 @@ -13149,22 +11083,22 @@ snapshots: dependencies: flow-enums-runtime: 0.0.6 - metro-cache@0.84.4: + metro-cache@0.84.4(supports-color@10.2.2): dependencies: exponential-backoff: 3.1.3 flow-enums-runtime: 0.0.6 - https-proxy-agent: 7.0.6 + https-proxy-agent: 7.0.6(supports-color@10.2.2) metro-core: 0.84.4 transitivePeerDependencies: - supports-color - metro-config@0.84.4(bufferutil@4.1.0)(utf-8-validate@5.0.10): + metro-config@0.84.4(bufferutil@4.1.0)(supports-color@10.2.2)(utf-8-validate@5.0.10): dependencies: - connect: 3.7.0 + connect: 3.7.0(supports-color@10.2.2) flow-enums-runtime: 0.0.6 jest-validate: 29.7.0 - metro: 0.84.4(bufferutil@4.1.0)(utf-8-validate@5.0.10) - metro-cache: 0.84.4 + metro: 0.84.4(bufferutil@4.1.0)(supports-color@10.2.2)(utf-8-validate@5.0.10) + metro-cache: 0.84.4(supports-color@10.2.2) metro-core: 0.84.4 metro-runtime: 0.84.4 yaml: 2.9.0 @@ -13179,9 +11113,9 @@ snapshots: lodash.throttle: 4.1.1 metro-resolver: 0.84.4 - metro-file-map@0.84.4: + metro-file-map@0.84.4(supports-color@10.2.2): dependencies: - debug: 4.4.3 + debug: 4.4.3(supports-color@10.2.2) fb-watchman: 2.0.2 flow-enums-runtime: 0.0.6 graceful-fs: 4.2.11 @@ -13207,13 +11141,13 @@ snapshots: '@babel/runtime': 7.29.7 flow-enums-runtime: 0.0.6 - metro-source-map@0.84.4: + metro-source-map@0.84.4(supports-color@10.2.2): dependencies: - '@babel/traverse': 7.29.7 + '@babel/traverse': 7.29.7(supports-color@10.2.2) '@babel/types': 7.29.7 flow-enums-runtime: 0.0.6 invariant: 2.2.4 - metro-symbolicate: 0.84.4 + metro-symbolicate: 0.84.4(supports-color@10.2.2) nullthrows: 1.1.1 ob1: 0.84.4 source-map: 0.5.7 @@ -13221,61 +11155,61 @@ snapshots: transitivePeerDependencies: - supports-color - metro-symbolicate@0.84.4: + metro-symbolicate@0.84.4(supports-color@10.2.2): dependencies: flow-enums-runtime: 0.0.6 invariant: 2.2.4 - metro-source-map: 0.84.4 + metro-source-map: 0.84.4(supports-color@10.2.2) nullthrows: 1.1.1 source-map: 0.5.7 vlq: 1.0.1 transitivePeerDependencies: - supports-color - metro-transform-plugins@0.84.4: + metro-transform-plugins@0.84.4(supports-color@10.2.2): dependencies: - '@babel/core': 7.29.7 + '@babel/core': 7.29.7(supports-color@10.2.2) '@babel/generator': 7.29.7 '@babel/template': 7.29.7 - '@babel/traverse': 7.29.7 + '@babel/traverse': 7.29.7(supports-color@10.2.2) flow-enums-runtime: 0.0.6 nullthrows: 1.1.1 transitivePeerDependencies: - supports-color - metro-transform-worker@0.84.4(bufferutil@4.1.0)(utf-8-validate@5.0.10): + metro-transform-worker@0.84.4(bufferutil@4.1.0)(supports-color@10.2.2)(utf-8-validate@5.0.10): dependencies: - '@babel/core': 7.29.7 + '@babel/core': 7.29.7(supports-color@10.2.2) '@babel/generator': 7.29.7 '@babel/parser': 7.29.7 '@babel/types': 7.29.7 flow-enums-runtime: 0.0.6 - metro: 0.84.4(bufferutil@4.1.0)(utf-8-validate@5.0.10) - metro-babel-transformer: 0.84.4 - metro-cache: 0.84.4 + metro: 0.84.4(bufferutil@4.1.0)(supports-color@10.2.2)(utf-8-validate@5.0.10) + metro-babel-transformer: 0.84.4(supports-color@10.2.2) + metro-cache: 0.84.4(supports-color@10.2.2) metro-cache-key: 0.84.4 metro-minify-terser: 0.84.4 - metro-source-map: 0.84.4 - metro-transform-plugins: 0.84.4 + metro-source-map: 0.84.4(supports-color@10.2.2) + metro-transform-plugins: 0.84.4(supports-color@10.2.2) nullthrows: 1.1.1 transitivePeerDependencies: - bufferutil - supports-color - utf-8-validate - metro@0.84.4(bufferutil@4.1.0)(utf-8-validate@5.0.10): + metro@0.84.4(bufferutil@4.1.0)(supports-color@10.2.2)(utf-8-validate@5.0.10): dependencies: '@babel/code-frame': 7.29.7 - '@babel/core': 7.29.7 + '@babel/core': 7.29.7(supports-color@10.2.2) '@babel/generator': 7.29.7 '@babel/parser': 7.29.7 '@babel/template': 7.29.7 - '@babel/traverse': 7.29.7 + '@babel/traverse': 7.29.7(supports-color@10.2.2) '@babel/types': 7.29.7 accepts: 2.0.0 ci-info: 2.0.0 - connect: 3.7.0 - debug: 4.4.3 + connect: 3.7.0(supports-color@10.2.2) + debug: 4.4.3(supports-color@10.2.2) error-stack-parser: 2.1.4 flow-enums-runtime: 0.0.6 graceful-fs: 4.2.11 @@ -13285,18 +11219,18 @@ snapshots: jest-worker: 29.7.0 jsc-safe-url: 0.2.4 lodash.throttle: 4.1.1 - metro-babel-transformer: 0.84.4 - metro-cache: 0.84.4 + metro-babel-transformer: 0.84.4(supports-color@10.2.2) + metro-cache: 0.84.4(supports-color@10.2.2) metro-cache-key: 0.84.4 - metro-config: 0.84.4(bufferutil@4.1.0)(utf-8-validate@5.0.10) + metro-config: 0.84.4(bufferutil@4.1.0)(supports-color@10.2.2)(utf-8-validate@5.0.10) metro-core: 0.84.4 - metro-file-map: 0.84.4 + metro-file-map: 0.84.4(supports-color@10.2.2) metro-resolver: 0.84.4 metro-runtime: 0.84.4 - metro-source-map: 0.84.4 - metro-symbolicate: 0.84.4 - metro-transform-plugins: 0.84.4 - metro-transform-worker: 0.84.4(bufferutil@4.1.0)(utf-8-validate@5.0.10) + metro-source-map: 0.84.4(supports-color@10.2.2) + metro-symbolicate: 0.84.4(supports-color@10.2.2) + metro-transform-plugins: 0.84.4(supports-color@10.2.2) + metro-transform-worker: 0.84.4(bufferutil@4.1.0)(supports-color@10.2.2)(utf-8-validate@5.0.10) mime-types: 3.0.2 nullthrows: 1.1.1 serialize-error: 2.1.0 @@ -13309,12 +11243,6 @@ snapshots: - supports-color - utf-8-validate - micro@9.3.5-canary.3: - dependencies: - arg: 4.1.0 - content-type: 1.0.4 - raw-body: 2.4.1 - micromark-core-commonmark@2.0.3: dependencies: decode-named-character-reference: 1.3.0 @@ -13494,10 +11422,10 @@ snapshots: micromark-util-types@2.0.2: {} - micromark@4.0.2: + micromark@4.0.2(supports-color@10.2.2): dependencies: '@types/debug': 4.1.13 - debug: 4.4.3 + debug: 4.4.3(supports-color@10.2.2) decode-named-character-reference: 1.3.0 devlop: 1.1.0 micromark-core-commonmark: 2.0.3 @@ -13521,22 +11449,14 @@ snapshots: braces: 3.0.3 picomatch: 2.3.2 - mime-db@1.52.0: {} - mime-db@1.54.0: {} - mime-types@2.1.35: - dependencies: - mime-db: 1.52.0 - mime-types@3.0.2: dependencies: mime-db: 1.54.0 mime@1.6.0: {} - mimic-fn@2.1.0: {} - miniflare@4.20260710.0(bufferutil@4.1.0)(utf-8-validate@5.0.10): dependencies: '@cspotcode/source-map-support': 0.8.1 @@ -13549,32 +11469,12 @@ snapshots: - bufferutil - utf-8-validate - minimatch@10.2.5: - dependencies: - brace-expansion: 5.0.6 - - minimatch@3.1.5: - dependencies: - brace-expansion: 1.1.15 - minimist@1.2.8: {} - minipass@7.1.3: {} - - minizlib@3.1.0: - dependencies: - minipass: 7.1.3 - mkdirp@1.0.4: {} - mri@1.2.0: {} - ms@2.0.0: {} - ms@2.1.1: {} - - ms@2.1.2: {} - ms@2.1.3: {} nanoid@3.3.12: {} @@ -13586,7 +11486,7 @@ snapshots: react: 19.2.7 react-dom: 19.2.7(react@19.2.7) - next@16.2.10(@babel/core@7.29.7)(@opentelemetry/api@1.9.1)(react-dom@19.2.7(react@19.2.7))(react@19.2.7): + next@16.2.10(@babel/core@7.29.7(supports-color@10.2.2))(@opentelemetry/api@1.9.1)(babel-plugin-macros@3.1.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7): dependencies: '@next/env': 16.2.10 '@swc/helpers': 0.5.15 @@ -13595,7 +11495,7 @@ snapshots: postcss: 8.5.10 react: 19.2.7 react-dom: 19.2.7(react@19.2.7) - styled-jsx: 5.1.6(@babel/core@7.29.7)(react@19.2.7) + styled-jsx: 5.1.6(@babel/core@7.29.7(supports-color@10.2.2))(babel-plugin-macros@3.1.0)(react@19.2.7) optionalDependencies: '@next/swc-darwin-arm64': 16.2.10 '@next/swc-darwin-x64': 16.2.10 @@ -13613,14 +11513,6 @@ snapshots: node-domexception@1.0.0: {} - node-fetch@2.6.7: - dependencies: - whatwg-url: 5.0.0 - - node-fetch@2.6.9: - dependencies: - whatwg-url: 5.0.0 - node-fetch@2.7.0: dependencies: whatwg-url: 5.0.0 @@ -13631,20 +11523,13 @@ snapshots: fetch-blob: 3.2.0 formdata-polyfill: 4.0.10 - node-gyp-build@4.8.4: {} + node-gyp-build@4.8.4: + optional: true node-int64@0.4.0: {} node-releases@2.0.47: {} - nopt@8.1.0: - dependencies: - abbrev: 3.0.1 - - npm-run-path@4.0.1: - dependencies: - path-key: 3.1.1 - npm-run-path@6.0.0: dependencies: path-key: 4.0.0 @@ -13652,12 +11537,12 @@ snapshots: nullthrows@1.1.1: {} - nuqs@2.9.0(next@16.2.10(@babel/core@7.29.7)(@opentelemetry/api@1.9.1)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(react@19.2.7): + nuqs@2.9.0(next@16.2.10(@babel/core@7.29.7(supports-color@10.2.2))(@opentelemetry/api@1.9.1)(babel-plugin-macros@3.1.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(react@19.2.7): dependencies: '@standard-schema/spec': 1.0.0 react: 19.2.7 optionalDependencies: - next: 16.2.10(@babel/core@7.29.7)(@opentelemetry/api@1.9.1)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) + next: 16.2.10(@babel/core@7.29.7(supports-color@10.2.2))(@opentelemetry/api@1.9.1)(babel-plugin-macros@3.1.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) ob1@0.84.4: dependencies: @@ -13675,18 +11560,10 @@ snapshots: dependencies: ee-first: 1.1.1 - once@1.3.3: - dependencies: - wrappy: 1.0.2 - once@1.4.0: dependencies: wrappy: 1.0.2 - onetime@5.1.2: - dependencies: - mimic-fn: 2.1.0 - oniguruma-parser@0.12.2: {} oniguruma-to-es@4.3.6: @@ -13700,14 +11577,6 @@ snapshots: is-docker: 2.2.1 is-wsl: 2.2.0 - open@8.4.0: - dependencies: - define-lazy-prop: 2.0.0 - is-docker: 2.2.1 - is-wsl: 2.2.0 - - os-paths@4.4.0: {} - oxc-parser@0.137.0: dependencies: '@oxc-project/types': 0.137.0 @@ -13755,34 +11624,6 @@ snapshots: '@oxc-resolver/binding-win32-arm64-msvc': 11.21.3 '@oxc-resolver/binding-win32-x64-msvc': 11.21.3 - oxc-transform@0.111.0(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1): - optionalDependencies: - '@oxc-transform/binding-android-arm-eabi': 0.111.0 - '@oxc-transform/binding-android-arm64': 0.111.0 - '@oxc-transform/binding-darwin-arm64': 0.111.0 - '@oxc-transform/binding-darwin-x64': 0.111.0 - '@oxc-transform/binding-freebsd-x64': 0.111.0 - '@oxc-transform/binding-linux-arm-gnueabihf': 0.111.0 - '@oxc-transform/binding-linux-arm-musleabihf': 0.111.0 - '@oxc-transform/binding-linux-arm64-gnu': 0.111.0 - '@oxc-transform/binding-linux-arm64-musl': 0.111.0 - '@oxc-transform/binding-linux-ppc64-gnu': 0.111.0 - '@oxc-transform/binding-linux-riscv64-gnu': 0.111.0 - '@oxc-transform/binding-linux-riscv64-musl': 0.111.0 - '@oxc-transform/binding-linux-s390x-gnu': 0.111.0 - '@oxc-transform/binding-linux-x64-gnu': 0.111.0 - '@oxc-transform/binding-linux-x64-musl': 0.111.0 - '@oxc-transform/binding-openharmony-arm64': 0.111.0 - '@oxc-transform/binding-wasm32-wasi': 0.111.0(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1) - '@oxc-transform/binding-win32-arm64-msvc': 0.111.0 - '@oxc-transform/binding-win32-ia32-msvc': 0.111.0 - '@oxc-transform/binding-win32-x64-msvc': 0.111.0 - transitivePeerDependencies: - - '@emnapi/core' - - '@emnapi/runtime' - - p-finally@2.0.1: {} - p-limit@2.3.0: dependencies: p-try: 2.2.0 @@ -13827,8 +11668,6 @@ snapshots: json-parse-even-better-errors: 2.3.1 lines-and-columns: 1.2.4 - parse-ms@2.1.0: {} - parse-ms@4.0.0: {} parse5@7.3.0: @@ -13837,8 +11676,6 @@ snapshots: parseurl@1.3.3: {} - path-browserify@1.0.1: {} - path-data-parser@0.1.0: {} path-exists@4.0.0: {} @@ -13849,11 +11686,6 @@ snapshots: path-parse@1.0.7: {} - path-scurry@2.0.2: - dependencies: - lru-cache: 11.5.1 - minipass: 7.1.3 - path-to-regexp@6.3.0: {} path-to-regexp@8.4.2: {} @@ -13862,8 +11694,6 @@ snapshots: pathe@2.0.3: {} - pend@1.2.0: {} - pg-cloudflare@1.4.0: optional: true @@ -13899,8 +11729,6 @@ snapshots: dependencies: split2: 4.2.0 - picocolors@1.0.0: {} - picocolors@1.1.1: {} picomatch@2.3.2: {} @@ -13950,10 +11778,6 @@ snapshots: ansi-styles: 5.2.0 react-is: 18.3.1 - pretty-ms@7.0.1: - dependencies: - parse-ms: 2.1.0 - pretty-ms@9.3.0: dependencies: parse-ms: 4.0.0 @@ -13962,8 +11786,6 @@ snapshots: dependencies: asap: 2.0.6 - promisepipe@3.0.0: {} - prompts@2.4.2: dependencies: kleur: 3.0.3 @@ -13990,11 +11812,6 @@ snapshots: forwarded: 0.2.0 ipaddr.js: 1.9.1 - pump@3.0.4: - dependencies: - end-of-stream: 1.4.5 - once: 1.4.0 - qrcode.react@4.2.0(react@19.2.7): dependencies: react: 19.2.7 @@ -14009,21 +11826,12 @@ snapshots: dependencies: side-channel: 1.1.1 - queue-microtask@1.2.3: {} - queue@6.0.2: dependencies: inherits: 2.0.4 range-parser@1.2.1: {} - raw-body@2.4.1: - dependencies: - bytes: 3.1.0 - http-errors: 1.7.3 - iconv-lite: 0.4.24 - unpipe: 1.0.0 - raw-body@3.0.2: dependencies: bytes: 3.1.2 @@ -14052,15 +11860,15 @@ snapshots: react-is@18.3.1: {} - react-native@0.86.0(@babel/core@7.29.7)(@types/react@19.2.17)(bufferutil@4.1.0)(react@19.2.7)(utf-8-validate@5.0.10): + react-native@0.86.0(@babel/core@7.29.7(supports-color@10.2.2))(@types/react@19.2.17)(bufferutil@4.1.0)(react@19.2.7)(supports-color@10.2.2)(utf-8-validate@5.0.10): dependencies: '@react-native/assets-registry': 0.86.0 - '@react-native/codegen': 0.86.0(@babel/core@7.29.7) - '@react-native/community-cli-plugin': 0.86.0(bufferutil@4.1.0)(utf-8-validate@5.0.10) + '@react-native/codegen': 0.86.0(@babel/core@7.29.7(supports-color@10.2.2)) + '@react-native/community-cli-plugin': 0.86.0(bufferutil@4.1.0)(supports-color@10.2.2)(utf-8-validate@5.0.10) '@react-native/gradle-plugin': 0.86.0 '@react-native/js-polyfills': 0.86.0 '@react-native/normalize-colors': 0.86.0 - '@react-native/virtualized-lists': 0.86.0(@types/react@19.2.17)(react-native@0.86.0(@babel/core@7.29.7)(@types/react@19.2.17)(bufferutil@4.1.0)(react@19.2.7)(utf-8-validate@5.0.10))(react@19.2.7) + '@react-native/virtualized-lists': 0.86.0(@types/react@19.2.17)(react-native@0.86.0(@babel/core@7.29.7(supports-color@10.2.2))(@types/react@19.2.17)(bufferutil@4.1.0)(react@19.2.7)(supports-color@10.2.2)(utf-8-validate@5.0.10))(react@19.2.7) abort-controller: 3.0.0 anser: 1.4.10 ansi-regex: 5.0.1 @@ -14072,7 +11880,7 @@ snapshots: invariant: 2.2.4 memoize-one: 5.2.1 metro-runtime: 0.84.4 - metro-source-map: 0.84.4 + metro-source-map: 0.84.4(supports-color@10.2.2) nullthrows: 1.1.1 pretty-format: 29.7.0 promise: 8.3.0 @@ -14128,8 +11936,6 @@ snapshots: react@19.2.7: {} - readdirp@4.1.2: {} - rechoir@0.8.0: dependencies: resolve: 1.22.12 @@ -14173,30 +11979,30 @@ snapshots: '@types/hast': 3.0.4 hast-util-sanitize: 5.0.2 - remark-gfm@4.0.1: + remark-gfm@4.0.1(supports-color@10.2.2): dependencies: '@types/mdast': 4.0.4 - mdast-util-gfm: 3.1.0 + mdast-util-gfm: 3.1.0(supports-color@10.2.2) micromark-extension-gfm: 3.0.0 - remark-parse: 11.0.0 + remark-parse: 11.0.0(supports-color@10.2.2) remark-stringify: 11.0.0 unified: 11.0.5 transitivePeerDependencies: - supports-color - remark-math@6.0.0: + remark-math@6.0.0(supports-color@10.2.2): dependencies: '@types/mdast': 4.0.4 - mdast-util-math: 3.0.0 + mdast-util-math: 3.0.0(supports-color@10.2.2) micromark-extension-math: 3.1.0 unified: 11.0.5 transitivePeerDependencies: - supports-color - remark-parse@11.0.0: + remark-parse@11.0.0(supports-color@10.2.2): dependencies: '@types/mdast': 4.0.4 - mdast-util-from-markdown: 2.0.3 + mdast-util-from-markdown: 2.0.3(supports-color@10.2.2) micromark-util-types: 2.0.2 unified: 11.0.5 transitivePeerDependencies: @@ -14230,8 +12036,6 @@ snapshots: resolve-pkg-maps@1.0.0: {} - resolve.exports@2.0.3: {} - resolve@1.22.12: dependencies: es-errors: 1.3.0 @@ -14245,28 +12049,6 @@ snapshots: robust-predicates@3.0.3: {} - rolldown@1.0.0-rc.1(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1): - dependencies: - '@oxc-project/types': 0.110.0 - '@rolldown/pluginutils': 1.0.0-rc.1 - optionalDependencies: - '@rolldown/binding-android-arm64': 1.0.0-rc.1 - '@rolldown/binding-darwin-arm64': 1.0.0-rc.1 - '@rolldown/binding-darwin-x64': 1.0.0-rc.1 - '@rolldown/binding-freebsd-x64': 1.0.0-rc.1 - '@rolldown/binding-linux-arm-gnueabihf': 1.0.0-rc.1 - '@rolldown/binding-linux-arm64-gnu': 1.0.0-rc.1 - '@rolldown/binding-linux-arm64-musl': 1.0.0-rc.1 - '@rolldown/binding-linux-x64-gnu': 1.0.0-rc.1 - '@rolldown/binding-linux-x64-musl': 1.0.0-rc.1 - '@rolldown/binding-openharmony-arm64': 1.0.0-rc.1 - '@rolldown/binding-wasm32-wasi': 1.0.0-rc.1(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1) - '@rolldown/binding-win32-arm64-msvc': 1.0.0-rc.1 - '@rolldown/binding-win32-x64-msvc': 1.0.0-rc.1 - transitivePeerDependencies: - - '@emnapi/core' - - '@emnapi/runtime' - roughjs@4.6.6: dependencies: hachure-fill: 0.5.2 @@ -14274,9 +12056,9 @@ snapshots: points-on-curve: 0.2.0 points-on-path: 0.2.1 - router@2.2.0: + router@2.2.0(supports-color@10.2.2): dependencies: - debug: 4.4.3 + debug: 4.4.3(supports-color@10.2.2) depd: 2.0.0 is-promise: 4.0.0 parseurl: 1.3.3 @@ -14297,10 +12079,6 @@ snapshots: bufferutil: 4.1.0 utf-8-validate: 5.0.10 - run-parallel@1.2.0: - dependencies: - queue-microtask: 1.2.3 - rw@1.3.3: {} safe-buffer@5.2.1: {} @@ -14311,20 +12089,6 @@ snapshots: safer-buffer@2.1.2: {} - sandbox@3.4.0(bufferutil@4.1.0)(utf-8-validate@5.0.10): - dependencies: - '@vercel/sandbox': 2.4.0 - async-retry: 1.3.3 - debug: 4.4.3 - ws: 8.21.0(bufferutil@4.1.0)(utf-8-validate@5.0.10) - zod: 4.4.3 - transitivePeerDependencies: - - bare-abort-controller - - bufferutil - - react-native-b4a - - supports-color - - utf-8-validate - scheduler@0.27.0: {} section-matter@1.0.0: @@ -14336,15 +12100,11 @@ snapshots: semver@6.3.1: {} - semver@7.5.4: - dependencies: - lru-cache: 6.0.0 - semver@7.8.5: {} - send@0.19.2: + send@0.19.2(supports-color@10.2.2): dependencies: - debug: 2.6.9 + debug: 2.6.9(supports-color@10.2.2) depd: 2.0.0 destroy: 1.2.0 encodeurl: 2.0.0 @@ -14360,9 +12120,9 @@ snapshots: transitivePeerDependencies: - supports-color - send@1.2.1: + send@1.2.1(supports-color@10.2.2): dependencies: - debug: 4.4.3 + debug: 4.4.3(supports-color@10.2.2) encodeurl: 2.0.0 escape-html: 1.0.3 etag: 1.8.1 @@ -14378,21 +12138,21 @@ snapshots: serialize-error@2.1.0: {} - serve-static@1.16.3: + serve-static@1.16.3(supports-color@10.2.2): dependencies: encodeurl: 2.0.0 escape-html: 1.0.3 parseurl: 1.3.3 - send: 0.19.2 + send: 0.19.2(supports-color@10.2.2) transitivePeerDependencies: - supports-color - serve-static@2.2.1: + serve-static@2.2.1(supports-color@10.2.2): dependencies: encodeurl: 2.0.0 escape-html: 1.0.3 parseurl: 1.3.3 - send: 1.2.1 + send: 1.2.1(supports-color@10.2.2) transitivePeerDependencies: - supports-color @@ -14400,8 +12160,6 @@ snapshots: set-blocking@2.0.0: {} - setprototypeof@1.1.1: {} - setprototypeof@1.2.0: {} sharp@0.34.5: @@ -14482,10 +12240,6 @@ snapshots: side-channel-map: 1.0.1 side-channel-weakmap: 1.0.2 - signal-exit@3.0.7: {} - - signal-exit@4.0.2: {} - signal-exit@4.1.0: {} sisteransi@1.0.5: {} @@ -14514,8 +12268,6 @@ snapshots: sprintf-js@1.0.3: {} - srvx@0.11.16: {} - stackframe@1.3.4: {} stacktrace-parser@0.1.11: @@ -14527,8 +12279,6 @@ snapshots: '@stablelib/base64': 1.0.1 fast-sha256: 1.3.0 - stat-mode@0.3.0: {} - statuses@1.5.0: {} statuses@2.0.2: {} @@ -14539,20 +12289,10 @@ snapshots: dependencies: stream-chain: 2.2.5 - stream-to-array@2.3.0: - dependencies: - any-promise: 1.3.0 - - stream-to-promise@2.2.0: - dependencies: - any-promise: 1.3.0 - end-of-stream: 1.1.0 - stream-to-array: 2.3.0 - - streamdown@2.5.0(react-dom@19.2.7(react@19.2.7))(react@19.2.7): + streamdown@2.5.0(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(supports-color@10.2.2): dependencies: clsx: 2.1.1 - hast-util-to-jsx-runtime: 2.3.6 + hast-util-to-jsx-runtime: 2.3.6(supports-color@10.2.2) html-url-attributes: 3.0.1 marked: 17.0.6 mermaid: 11.15.0 @@ -14561,8 +12301,8 @@ snapshots: rehype-harden: 1.1.8 rehype-raw: 7.0.0 rehype-sanitize: 6.0.0 - remark-gfm: 4.0.1 - remark-parse: 11.0.0 + remark-gfm: 4.0.1(supports-color@10.2.2) + remark-parse: 11.0.0(supports-color@10.2.2) remark-rehype: 11.1.2 remend: 1.3.0 tailwind-merge: 3.6.0 @@ -14572,15 +12312,6 @@ snapshots: transitivePeerDependencies: - supports-color - streamx@2.28.0: - dependencies: - events-universal: 1.0.1 - fast-fifo: 1.3.2 - text-decoder: 1.2.7 - transitivePeerDependencies: - - bare-abort-controller - - react-native-b4a - string-width@4.2.3: dependencies: emoji-regex: 8.0.0 @@ -14610,8 +12341,6 @@ snapshots: strip-bom@3.0.0: {} - strip-final-newline@2.0.0: {} - strip-final-newline@4.0.0: {} strip-json-comments@5.0.3: {} @@ -14624,12 +12353,13 @@ snapshots: dependencies: inline-style-parser: 0.2.7 - styled-jsx@5.1.6(@babel/core@7.29.7)(react@19.2.7): + styled-jsx@5.1.6(@babel/core@7.29.7(supports-color@10.2.2))(babel-plugin-macros@3.1.0)(react@19.2.7): dependencies: client-only: 0.0.1 react: 19.2.7 optionalDependencies: - '@babel/core': 7.29.7 + '@babel/core': 7.29.7(supports-color@10.2.2) + babel-plugin-macros: 3.1.0 stylis@4.2.0: {} @@ -14663,23 +12393,6 @@ snapshots: tapable@2.3.3: {} - tar-stream@3.1.7: - dependencies: - b4a: 1.8.1 - fast-fifo: 1.3.2 - streamx: 2.28.0 - transitivePeerDependencies: - - bare-abort-controller - - react-native-b4a - - tar@7.5.20: - dependencies: - '@isaacs/fs-minipass': 4.0.1 - chownr: 3.0.0 - minipass: 7.1.3 - minizlib: 3.1.0 - yallist: 5.0.0 - terser@5.48.0: dependencies: '@jridgewell/source-map': 0.3.11 @@ -14687,24 +12400,12 @@ snapshots: commander: 2.20.3 source-map-support: 0.5.21 - text-decoder@1.2.7: - dependencies: - b4a: 1.8.1 - transitivePeerDependencies: - - react-native-b4a - text-encoding-utf-8@1.0.2: {} throat@5.0.0: {} throttleit@2.1.0: {} - time-span@4.0.0: - dependencies: - convert-hrtime: 3.0.0 - - tinyexec@0.3.2: {} - tinyexec@1.2.4: {} tinyglobby@0.2.17: @@ -14720,29 +12421,18 @@ snapshots: toggle-selection@1.0.6: {} - toidentifier@1.0.0: {} - toidentifier@1.0.1: {} tokenx@1.3.0: {} tr46@0.0.3: {} - tree-kill@1.2.2: {} - trim-lines@3.0.1: {} trough@2.2.0: {} ts-dedent@2.3.0: {} - ts-morph@12.0.0: - dependencies: - '@ts-morph/common': 0.11.1 - code-block-writer: 10.1.1 - - ts-toolbelt@6.15.5: {} - tsconfig-paths-webpack-plugin@4.2.0: dependencies: chalk: 4.1.2 @@ -14789,24 +12479,16 @@ snapshots: media-typer: 1.1.0 mime-types: 3.0.2 - typescript@5.9.3: {} - typescript@6.0.3: {} - uid-promise@1.0.0: {} - unbash@4.0.3: {} - undici-types@5.26.5: {} - undici-types@6.21.0: {} undici-types@7.24.6: {} undici-types@8.5.0: {} - undici@6.27.0: {} - undici@7.28.0: {} unenv@2.0.0-rc.24: @@ -14858,8 +12540,6 @@ snapshots: unist-util-is: 6.0.1 unist-util-visit-parents: 6.0.2 - universalify@2.0.1: {} - unpipe@1.0.0: {} update-browserslist-db@1.2.3(browserslist@4.28.2): @@ -14900,54 +12580,6 @@ snapshots: vary@1.1.2: {} - vercel@56.2.1(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)(bufferutil@4.1.0)(utf-8-validate@5.0.10): - dependencies: - '@vercel/backends': 0.8.24(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1) - '@vercel/blob': 2.4.0 - '@vercel/build-utils': 13.33.1 - '@vercel/cli-auth': 0.3.0 - '@vercel/cli-config': 0.2.0 - '@vercel/container': 0.0.5 - '@vercel/detect-agent': 1.2.3 - '@vercel/elysia': 0.1.101 - '@vercel/express': 0.1.115(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1) - '@vercel/fastify': 0.1.104 - '@vercel/fun': 1.3.0 - '@vercel/go': 3.10.2 - '@vercel/h3': 0.1.110 - '@vercel/hono': 0.2.104 - '@vercel/hydrogen': 1.4.0 - '@vercel/koa': 0.1.84 - '@vercel/nestjs': 0.2.105 - '@vercel/next': 4.20.4 - '@vercel/node': 5.8.25 - '@vercel/prepare-flags-definitions': 0.3.0 - '@vercel/python': 6.50.0 - '@vercel/redwood': 2.5.0 - '@vercel/remix-builder': 5.9.1 - '@vercel/ruby': 2.5.1 - '@vercel/rust': 1.4.0 - '@vercel/static-build': 2.11.7 - chokidar: 4.0.0 - esbuild: 0.27.0 - jose: 5.9.6 - jsonc-parser: 3.3.1 - luxon: 3.7.2 - sandbox: 3.4.0(bufferutil@4.1.0)(utf-8-validate@5.0.10) - smol-toml: 1.6.1 - undici: 6.27.0 - zod: 4.1.11 - transitivePeerDependencies: - - '@emnapi/core' - - '@emnapi/runtime' - - bare-abort-controller - - bufferutil - - encoding - - react-native-b4a - - rollup - - supports-color - - utf-8-validate - vfile-location@5.0.3: dependencies: '@types/unist': 3.0.3 @@ -14977,8 +12609,6 @@ snapshots: web-streams-polyfill@3.3.3: {} - web-vitals@0.2.4: {} - web-vitals@5.3.0: {} webidl-conversions@3.0.1: {} @@ -15051,19 +12681,6 @@ snapshots: bufferutil: 4.1.0 utf-8-validate: 5.0.10 - xdg-app-paths@5.1.0: - dependencies: - xdg-portable: 7.3.0 - - xdg-app-paths@5.5.1: - dependencies: - os-paths: 4.4.0 - xdg-portable: 7.3.0 - - xdg-portable@7.3.0: - dependencies: - os-paths: 4.4.0 - xtend@4.0.2: {} xxhash-wasm@1.1.0: {} @@ -15074,10 +12691,6 @@ snapshots: yallist@3.1.1: {} - yallist@4.0.0: {} - - yallist@5.0.0: {} - yaml@1.10.3: {} yaml@2.9.0: {} @@ -15124,20 +12737,6 @@ snapshots: y18n: 5.0.8 yargs-parser: 22.0.0 - yauzl-clone@1.0.4: - dependencies: - events-intercept: 2.0.0 - - yauzl-promise@2.1.3: - dependencies: - yauzl: 2.10.0 - yauzl-clone: 1.0.4 - - yauzl@2.10.0: - dependencies: - buffer-crc32: 0.2.13 - fd-slicer: 1.1.0 - yoctocolors@2.1.2: {} youch-core@0.3.3: @@ -15165,12 +12764,8 @@ snapshots: dependencies: zod: 4.4.3 - zod@3.22.4: {} - zod@3.25.76: {} - zod@4.1.11: {} - zod@4.4.3: {} zustand@5.0.14(@types/react@19.2.17)(react@19.2.7)(use-sync-external-store@1.6.0(react@19.2.7)): diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index 21d4057e..3d1f1caa 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -128,7 +128,6 @@ catalog: turbo: 2.10.5 tw-animate-css: 1.4.0 typescript: 6.0.3 - vercel: 56.2.1 web-vitals: 5.3.0 wrangler: 4.111.0 zod: 4.4.3 diff --git a/scripts/archive-audit-log.ts b/scripts/archive-audit-log.ts index 07aa10d6..c3954b46 100644 --- a/scripts/archive-audit-log.ts +++ b/scripts/archive-audit-log.ts @@ -12,6 +12,7 @@ import { uploadAndVerifyArchive, verifyRemoteArchive, } from "./audit-archive-storage"; +import { createAuditArchiveOperationDeadline } from "./audit-operation-budget"; import { acquireDatabaseMaintenanceLock, assertAdministrativeConnectionTarget, @@ -22,7 +23,6 @@ import { } from "./database-operation-safety"; import { closePgClientWithGrace, createDeadlineAwarePgClient } from "./deadline-aware-pg-client"; import { loadMigrationEnvFromFiles } from "./migration-env"; -import { createAuditArchiveOperationDeadline } from "./release-operation-budget"; interface AuditPartition { monthStart: Date; @@ -58,7 +58,6 @@ interface CatalogPartition extends AuditPartition { } const ROOT = resolve(dirname(fileURLToPath(import.meta.url)), ".."); -const LOCAL_DRY_RUN_TIMEOUT_MS = 30 * 60 * 1_000; const ARCHIVE_QUERY_TIMEOUT_MS = 30 * 60 * 1_000; const PAGE_SIZE = 5_000; @@ -642,17 +641,10 @@ async function closeArchiveClient( } function loadArchiveRuntimeConfig() { - const { - databaseUrl, - expectedDatabase, - expectedHost, - expectedRole, - expectedSystemIdentifier, - isLocalDatabase, - } = loadMigrationEnvFromFiles(ROOT); + const { databaseUrl, expectedDatabase, expectedHost, expectedRole, expectedSystemIdentifier } = + loadMigrationEnvFromFiles(ROOT); const cloudflareAccountId = process.env["CLOUDFLARE_ACCOUNT_ID"]?.trim(); const identity: DatabaseIdentityExpectation = { - isLocalDatabase, ...(expectedDatabase ? { expectedDatabase } : {}), ...(expectedHost ? { expectedHost } : {}), ...(expectedRole ? { expectedRole } : {}), @@ -663,7 +655,7 @@ function loadArchiveRuntimeConfig() { async function runArchive(options: ArchiveOptions): Promise { const { cloudflareAccountId, databaseUrl, identity } = loadArchiveRuntimeConfig(); - const deadline = archiveOperationDeadline(options, identity); + const deadline = createAuditArchiveOperationDeadline(); assertAdministrativeConnectionTarget(databaseUrl, identity, options.mode); if ( options.mode === "apply" && @@ -714,17 +706,6 @@ async function runArchive(options: ArchiveOptions): Promise { } } -function archiveOperationDeadline( - options: ArchiveOptions, - identity: DatabaseIdentityExpectation, -): number { - if (!identity.isLocalDatabase) return createAuditArchiveOperationDeadline(); - if (options.mode === "apply") { - throw new Error("Audit archive apply is a protected production maintenance operation."); - } - return Date.now() + LOCAL_DRY_RUN_TIMEOUT_MS; -} - function requiredString(row: Record, key: string): string { const value = row[key]; if (typeof value !== "string") { diff --git a/scripts/release-operation-budget.ts b/scripts/audit-operation-budget.ts similarity index 56% rename from scripts/release-operation-budget.ts rename to scripts/audit-operation-budget.ts index 7a768354..1822f442 100644 --- a/scripts/release-operation-budget.ts +++ b/scripts/audit-operation-budget.ts @@ -2,17 +2,18 @@ const AUDIT_ARCHIVE_JOB_STARTED_AT_ENV = "CHEATCODE_AUDIT_ARCHIVE_JOB_STARTED_AT const AUDIT_ARCHIVE_JOB_TIMEOUT_MS = 240 * 60 * 1_000; const AUDIT_ARCHIVE_SAFETY_MARGIN_MS = 15 * 60 * 1_000; -export function assertProtectedReleaseRuntime(): void { - assertProtectedWorkflowRuntime("production-release.yml", "Production Release"); +export function createAuditArchiveOperationDeadline(): number { + assertProtectedAuditArchiveRuntime(); + const now = Date.now(); + const startedAt = requiredJobStartedAt(now); + const deadline = startedAt + AUDIT_ARCHIVE_JOB_TIMEOUT_MS - AUDIT_ARCHIVE_SAFETY_MARGIN_MS; + if (deadline <= now) throw new Error("The protected Audit Archive operation deadline elapsed."); + return deadline; } function assertProtectedAuditArchiveRuntime(): void { - assertProtectedWorkflowRuntime("audit-archive.yml", "Audit Archive"); -} - -function assertProtectedWorkflowRuntime(workflowFile: string, label: string): void { const repository = process.env["GITHUB_REPOSITORY"]?.trim(); - const expectedWorkflowRef = `${repository}/.github/workflows/${workflowFile}@refs/heads/main`; + const expectedWorkflowRef = `${repository}/.github/workflows/audit-archive.yml@refs/heads/main`; if ( process.env["GITHUB_ACTIONS"] !== "true" || process.env["GITHUB_EVENT_NAME"] !== "workflow_dispatch" || @@ -20,27 +21,22 @@ function assertProtectedWorkflowRuntime(workflowFile: string, label: string): vo !repository || process.env["GITHUB_WORKFLOW_REF"] !== expectedWorkflowRef ) { - throw new Error(`Production mutation is permitted only in the protected ${label} workflow.`); + throw new Error( + "Production mutation is permitted only in the protected Audit Archive workflow.", + ); } } -export function createAuditArchiveOperationDeadline(): number { - assertProtectedAuditArchiveRuntime(); - const now = Date.now(); - const startedAt = requiredJobStartedAt(AUDIT_ARCHIVE_JOB_STARTED_AT_ENV, now); - const deadline = startedAt + AUDIT_ARCHIVE_JOB_TIMEOUT_MS - AUDIT_ARCHIVE_SAFETY_MARGIN_MS; - if (deadline <= now) throw new Error("The protected Audit Archive operation deadline elapsed."); - return deadline; -} - -function requiredJobStartedAt(environmentName: string, now: number): number { - const rawStartedAt = process.env[environmentName]?.trim(); +function requiredJobStartedAt(now: number): number { + const rawStartedAt = process.env[AUDIT_ARCHIVE_JOB_STARTED_AT_ENV]?.trim(); if (!rawStartedAt || !/^\d{13}$/u.test(rawStartedAt)) { - throw new Error(`${environmentName} is required for protected production operations.`); + throw new Error( + `${AUDIT_ARCHIVE_JOB_STARTED_AT_ENV} is required for audit archive operations.`, + ); } const startedAt = Number(rawStartedAt); if (!Number.isSafeInteger(startedAt) || startedAt > now + 60_000) { - throw new Error(`${environmentName} is invalid.`); + throw new Error(`${AUDIT_ARCHIVE_JOB_STARTED_AT_ENV} is invalid.`); } return startedAt; } diff --git a/scripts/database-operation-safety.ts b/scripts/database-operation-safety.ts index 29899892..8cd44c5d 100644 --- a/scripts/database-operation-safety.ts +++ b/scripts/database-operation-safety.ts @@ -7,7 +7,6 @@ export interface DatabaseIdentityExpectation { expectedHost?: string; expectedRole?: string; expectedSystemIdentifier?: string; - isLocalDatabase?: boolean; } interface SessionOptions { @@ -27,9 +26,6 @@ export function assertAdministrativeConnectionTarget( if (RUNTIME_DATABASE_ROLES.has(decodeURIComponent(target.username))) { throw new Error("Administrative database operations must never use a runtime Worker role."); } - if (expectation.isLocalDatabase) { - assertLocalDatabaseTarget(target); - } if (mode === "apply" && !expectation.expectedHost) { throw new Error("Set SUPABASE_MIGRATION_EXPECTED_HOST before mutating the database."); } @@ -77,22 +73,10 @@ function requiredIdentityVariables(expectation: DatabaseIdentityExpectation): st return [ expectation.expectedDatabase ? null : "SUPABASE_MIGRATION_EXPECTED_DATABASE", expectation.expectedRole ? null : "SUPABASE_MIGRATION_EXPECTED_ROLE", - expectation.expectedSystemIdentifier || expectation.isLocalDatabase - ? null - : "SUPABASE_MIGRATION_EXPECTED_SYSTEM_IDENTIFIER", + expectation.expectedSystemIdentifier ? null : "SUPABASE_MIGRATION_EXPECTED_SYSTEM_IDENTIFIER", ].filter((value): value is string => value !== null); } -function assertLocalDatabaseTarget(target: URL): void { - const allowedHosts = new Set(["database", "localhost", "127.0.0.1", "[::1]"]); - if (!allowedHosts.has(target.hostname.toLowerCase())) { - throw new Error("Local database operations require the Compose database or a loopback host."); - } - if (target.username !== "postgres" || target.pathname !== "/postgres") { - throw new Error("Local database operations require the postgres administrator and database."); - } -} - function assertExpectedIdentity( label: string, actual: unknown, diff --git a/scripts/dev-worker-config.ts b/scripts/dev-worker-config.ts index 584f44e5..6b7b39eb 100644 --- a/scripts/dev-worker-config.ts +++ b/scripts/dev-worker-config.ts @@ -15,15 +15,26 @@ const WORKER_CONFIGS = [ type WorkerConfig = (typeof WORKER_CONFIGS)[number]; -const LOCAL_DATABASE_URL_BINDINGS: Partial> = - { - "wrangler.jsonc": { envKey: "LOCAL_GATEWAY_DATABASE_URL", role: "app_gateway" }, - "../agent-worker/wrangler.jsonc": { envKey: "LOCAL_AGENT_DATABASE_URL", role: "app_agent" }, - "../webhooks-worker/wrangler.jsonc": { - envKey: "LOCAL_WEBHOOKS_DATABASE_URL", - role: "app_webhooks", - }, - }; +const PRODUCTION_DATABASE_URL_BINDINGS: Partial< + Record +> = { + "wrangler.jsonc": { envKey: "SUPABASE_GATEWAY_DATABASE_URL", role: "app_gateway" }, + "../agent-worker/wrangler.jsonc": { + envKey: "SUPABASE_AGENT_DATABASE_URL", + role: "app_agent", + }, + "../webhooks-worker/wrangler.jsonc": { + envKey: "SUPABASE_WEBHOOKS_DATABASE_URL", + role: "app_webhooks", + }, +}; + +const PRODUCTION_SUPABASE_TARGET = { + database: "postgres", + hostname: "aws-0-ap-south-1.pooler.supabase.com", + port: "5432", + projectRef: "snqtclnmhcaupqynjyux", +} as const; const LOCAL_WORKER_SECRET_BINDINGS: Record = { "wrangler.jsonc": [ @@ -212,7 +223,7 @@ function localHyperdriveBindings( values: Record, ): ConfigRecord[] | undefined { const bindings = config["hyperdrive"]; - const expected = LOCAL_DATABASE_URL_BINDINGS[configPath]; + const expected = PRODUCTION_DATABASE_URL_BINDINGS[configPath]; if (!expected) { if (bindings !== undefined) { throw new Error(`${configPath} unexpectedly declares a HYPERDRIVE binding.`); @@ -222,7 +233,7 @@ function localHyperdriveBindings( if (!Array.isArray(bindings)) { throw new Error(`${configPath} is missing its HYPERDRIVE binding.`); } - const connectionString = localDatabaseConnectionString(values, expected); + const connectionString = productionDatabaseConnectionString(values, expected); let matches = 0; const localBindings = bindings.map((binding, index) => { if (!isRecord(binding)) { @@ -240,7 +251,7 @@ function localHyperdriveBindings( return localBindings; } -function localDatabaseConnectionString( +function productionDatabaseConnectionString( values: Record, expected: { envKey: string; role: string }, ): string { @@ -254,18 +265,25 @@ function localDatabaseConnectionString( } catch { throw new Error(`${expected.envKey} must be a PostgreSQL connection URL.`); } + const expectedUsername = `${expected.role}.${PRODUCTION_SUPABASE_TARGET.projectRef}`; + const hasExpectedTarget = + url.hostname === PRODUCTION_SUPABASE_TARGET.hostname && + url.port === PRODUCTION_SUPABASE_TARGET.port && + url.pathname === `/${PRODUCTION_SUPABASE_TARGET.database}`; + const hasRequiredTls = + url.searchParams.size === 2 && + url.searchParams.get("sslmode") === "require" && + url.searchParams.get("uselibpqcompat") === "true"; if ( (url.protocol !== "postgres:" && url.protocol !== "postgresql:") || - decodeURIComponent(url.username) !== expected.role || + decodeURIComponent(url.username) !== expectedUsername || !url.password || - url.hostname !== "database" || - url.port !== "5432" || - url.pathname !== "/postgres" || - url.search || + !hasExpectedTarget || + !hasRequiredTls || url.hash ) { throw new Error( - `${expected.envKey} must target ${expected.role}@database:5432/postgres with a password.`, + `${expected.envKey} must use ${expectedUsername} on the production Supabase session pooler with sslmode=require and uselibpqcompat=true.`, ); } return raw; diff --git a/scripts/dev.ts b/scripts/dev.ts index 9b8ce4dc..54b0e501 100644 --- a/scripts/dev.ts +++ b/scripts/dev.ts @@ -61,9 +61,9 @@ const REQUIRED_WORKER_ENV = [ "GATEWAY_TO_WEBHOOKS_RESOURCE_DELETION_SECRET", "INTERNAL_WEBHOOK_REPLAY_SECRET", "PREVIEW_TOKEN_SECRET", - "LOCAL_AGENT_DATABASE_URL", - "LOCAL_GATEWAY_DATABASE_URL", - "LOCAL_WEBHOOKS_DATABASE_URL", + "SUPABASE_AGENT_DATABASE_URL", + "SUPABASE_GATEWAY_DATABASE_URL", + "SUPABASE_WEBHOOKS_DATABASE_URL", "OUTPUT_DOWNLOAD_SIGNING_SECRET", "RELEASE_DATABASE_READINESS_SECRET", "SKILL_RUNTIME_BASE_URL", @@ -110,7 +110,6 @@ const FORBIDDEN_LOCAL_ENV = [ "CLOUDFLARE_HYPERDRIVE_LOCAL_CONNECTION_STRING_HYPERDRIVE", "DATABASE_URL", "GOOGLE_API_KEY", - "LOCAL_APP_WORKER_PASSWORD", "NEXT_PUBLIC_SUPABASE_ANON_KEY", "NEXT_PUBLIC_SUPABASE_URL", "TURBO_TEAM", diff --git a/scripts/migrate.ts b/scripts/migrate.ts index 3d8c4736..e1c8a748 100644 --- a/scripts/migrate.ts +++ b/scripts/migrate.ts @@ -24,7 +24,6 @@ import { verifyDrizzleMigrationIntegrity, } from "./migration-drizzle"; import { loadMigrationEnvFromFiles } from "./migration-env"; -import { assertProtectedReleaseRuntime } from "./release-operation-budget"; interface PgModule { Client: new (config: { connectionString: string }) => DrizzleMigrationClient; @@ -738,14 +737,9 @@ async function main(): Promise { expectedHost, expectedRole, expectedSystemIdentifier, - isLocalDatabase, migrationAttestations, } = loadMigrationEnvFromFiles(ROOT); - if (options.mode === "apply" && !isLocalDatabase) { - assertProtectedReleaseRuntime(); - } const identity: DatabaseIdentityExpectation = { - isLocalDatabase, ...(expectedDatabase ? { expectedDatabase } : {}), ...(expectedHost ? { expectedHost } : {}), ...(expectedRole ? { expectedRole } : {}), From fd31cb8c006832efe9f79f7465f769d0feb9739a Mon Sep 17 00:00:00 2001 From: iamjr15 Date: Mon, 20 Jul 2026 16:39:20 +0530 Subject: [PATCH 2/2] fix(ci): retain dynamic snapshot dependency hints Document Docker and launcher-resolved dependencies that Knip cannot infer. This keeps clean CI installs aligned with the Daytona snapshot runtime. --- knip.jsonc | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/knip.jsonc b/knip.jsonc index 420c441b..b3f6fc06 100644 --- a/knip.jsonc +++ b/knip.jsonc @@ -15,14 +15,17 @@ }, "entry": ["drizzle.config.ts", "src/schema/drizzle.ts"] }, - // The package is copied into the Daytona snapshot and its default entry is - // launched by start-browser-driver.sh. - "infra/containers/sandbox/browser-driver": {}, + "infra/containers/sandbox/browser-driver": { + // Docker invokes Playwright's CLI to install Chromium. Both dependencies + // also satisfy Stagehand runtime peers, so neither is imported by server.js. + "ignoreDependencies": ["playwright-core", "zod"] + }, "infra/containers/sandbox/skill-runtime": { "entry": ["bin/*.mjs"], - // The runtime CLI invokes this binary by its absolute snapshot path to - // execute user-authored TypeScript tools; Knip cannot infer that call. - "ignoreDependencies": ["tsx"] + // Snapshot launchers resolve these executables by their installed binary + // names or absolute paths; Knip cannot infer those child-process calls. + "ignoreBinaries": ["agent-browser"], + "ignoreDependencies": ["agent-browser", "tsx"] } } }