{ "name": "review-router", "private": true, "engines": { "node": ">=24.21.0 <25 || >=26.10.0 <27" }, "bin": { "reviewrouter": "./apps/api/dist/reviewrouter-operator-cli.js" }, "type": "module", "packageManager": "pnpm@11.28.7", "scripts": { "dev": "node scripts/run-with-env.mjs turbo run dev --parallel", "web:dev": "node scripts/run-with-env.mjs pnpm --filter @reviewrouter/web dev", "api:dev": "node scripts/run-with-env.mjs pnpm --filter @reviewrouter/api dev", "worker:dev": "node scripts/run-with-env.mjs pnpm --filter @reviewrouter/worker dev", "web:start": "pnpm --filter @reviewrouter/web exec next start", "build": "node scripts/check-conversation-source-stamp.ts --check && node scripts/check-conversation-release-verifier.ts --check && turbo run build && node scripts/rewrite-dist-esm-imports.mjs", "protocol:bootstrap": "node scripts/check-review-action-v2-protocol.mjs --bootstrap-only", "protocol:generate": "node --conditions=production scripts/generate-review-action-v2-protocol.mjs", "protocol:check": "node scripts/check-review-action-v2-protocol.mjs", "protocol:export-public": "node scripts/export-public-review-action-v2-contract.mjs", "protocol:release-manifest": "node scripts/generate-public-review-action-v2-release-manifest.mjs", "protocol:release-manifest:check": "node scripts/check-public-review-action-v2-release-manifest.mjs", "protocol:handoff:test": "vitest run scripts/review-action-v2-release-manifests.test.ts scripts/export-public-review-action-v2-contract.test.ts", "skills:architecture": "node scripts/review-skills-tooling/check.ts", "skills:tooling:prepare": "npx --yes pnpm@11.25.0 --dir scripts/review-skills-tooling install --ignore-scripts --frozen-lockfile", "skills:test": "vitest run packages/shared/src/review-skills-contract.test.ts packages/features/review-skills/src/tests scripts/review-skills-runtime-grants.test.ts scripts/review-skills-runtime-acl.postgres.test.ts", "typecheck": "pnpm --filter @reviewrouter/shared build && turbo run typecheck && tsc --noEmit -p tsconfig.spikes.json && tsc --noEmit -p tsconfig.one-shot-test-handoff.json && node scripts/local-checks/compiler-cli.ts --legacy --noEmit -p tsconfig.tooling.json", "test": "vitest run && node --import tsx --test scripts/conversation-evals/eval-risk.test.ts", "lint": "eslint .", "format:check": "prettier --check .", "postinstall": "node scripts/prepare-pinned-subscription-runtime.ts && pnpm db:generate && pnpm compiler:prepare", "local:bootstrap": "bash scripts/bootstrap-local.sh", "local:check": "bash scripts/check-local-readiness.sh", "hosted:check": "node scripts/check-hosted-readiness.mjs", "hosted:check:smoke": "node scripts/check-hosted-readiness-smoke.mjs", "hosted:web:check": "node scripts/check-hosted-web.mjs", "self-hosted:check": "node scripts/check-self-hosted-readiness.mjs && node scripts/check-self-hosted-compose-contract.mjs", "self-hosted:install": "bash scripts/install-self-hosted.sh", "self-hosted:install:check": "node scripts/local-checks/compiler-cli.ts --native -p packages/shared/tsconfig.build.json && node scripts/rewrite-dist-esm-imports.mjs && node scripts/local-checks/compiler-cli.ts --native --noEmit -p deploy/self-hosted/tsconfig.install.json && node scripts/local-checks/compiler-cli.ts --native --noEmit -p scripts/self-hosted-e2e/tsconfig.memory.json && node --test deploy/self-hosted/install*.test.ts && bash -n scripts/install-self-hosted.sh && node deploy/self-hosted/install.ts --help", "self-hosted:check:smoke": "node scripts/check-self-hosted-readiness-smoke.mjs && node scripts/check-self-hosted-compose-contract.mjs", "self-hosted:compose:check": "node scripts/check-self-hosted-compose-contract.mjs", "self-hosted:e2e": "node scripts/run-self-hosted-e2e.mjs", "hosted-pool:e2e": "vitest run scripts/hosted-pool-e2e/hosted-pool-local.e2e.test.ts", "hosted-pool:migration-rehearsal": "node --import tsx scripts/run-hosted-pool-postgres-e2e.mjs --migration-only", "hosted-pool:e2e:postgres": "node --import tsx scripts/run-hosted-pool-postgres-e2e.mjs --postgres-only", "hosted-pool:production-contract": "tsc --noEmit -p tsconfig.hosted-pool-operations.json && vitest run scripts/verify-hosted-pool-action-release.test.ts scripts/hosted-pool-production-control.test.ts scripts/hosted-pool-production-github-dispatch.test.ts scripts/hosted-pool-production-evidence.test.ts scripts/hosted-pool-production-rollback-verification.test.ts scripts/run-hosted-pool-production-canary.test.ts scripts/hosted-pool-canary-phase-recovery.test.ts scripts/deploy-render-hosted-beta.test.ts packages/platform/config/src/index.test.ts packages/platform/config/src/hosted-pool-action-release-catalog.test.ts packages/platform/config/src/hosted-codex-canary-config.test.ts apps/api/src/hosted-codex-canary-fault-plan.test.ts apps/api/src/hosted-codex-canary-fault-composition.test.ts apps/api/src/hosted-codex-relay-composition.test.ts apps/api/src/hosted-pool-action-release-provision.test.ts packages/features/hosted-account-pool/src/tests/hosted-codex-quota-failover.test.ts", "hosted-pool:action-release:verify": "node scripts/verify-hosted-pool-action-release.mjs", "provider-profiles:migrate": "tsx scripts/migrate-provider-profiles.ts", "provider-setup:visual": "tsx scripts/provider-setup-visual/run.ts", "provider-setup:visual:seed": "tsx scripts/provider-setup-visual/seed.ts", "hosted-pool:control": "tsx scripts/hosted-pool-production-control.ts", "hosted-pool:test-handoff:contract": "tsc --noEmit -p tsconfig.one-shot-test-handoff.json && vitest run scripts/one-shot-test-handoff/contiguous-launch.test.mts", "hosted-pool:canary": "tsx scripts/run-hosted-pool-production-canary.ts", "hosted-pool:restore": "tsx scripts/hosted-pool-restore-operation.ts", "hosted-pool:certification-evidence": "tsx scripts/hosted-pool-certification-evidence.ts", "hosted-pool:verify": "pnpm hosted-pool:production-contract && vitest run scripts/hosted-pool-certification-evidence.test.ts scripts/hosted-pool-certification-workflow.test.ts scripts/hosted-pool-e2e/hosted-pool-local.e2e.test.ts packages/platform/db/src/hosted-codex-r57-remediation-migration.test.ts packages/features/hosted-account-pool/src/tests/hosted-account-pool.test.ts packages/features/hosted-account-pool/src/tests/hosted-codex-relay-routes.test.ts packages/features/hosted-account-pool/src/tests/hosted-codex-quota-failover.test.ts packages/features/hosted-account-pool/src/tests/prisma-hosted-account-pool-adapters.test.ts packages/features/hosted-account-pool/src/tests/credential-envelope-vault.test.ts packages/features/hosted-account-pool/src/infrastructure/crypto/aws-kms-hosted-codex-keyring.test.ts packages/features/hosted-account-pool/src/infrastructure/crypto/hosted-codex-keyring.test.ts packages/features/hosted-account-pool/src/tests/hosted-codex-runtime-id-generator.test.ts packages/features/codex-oauth-rotating/src/tests/hosted-codex-relay.test.ts apps/api/src/hosted-codex-restore-permit.test.ts apps/api/src/hosted-codex-grant-composition.test.ts apps/api/src/hosted-codex-relay-composition.test.ts apps/api/src/hosted-review-prelease-gate.test.ts", "public-beta:check:smoke": "node scripts/check-public-beta-readiness-smoke.mjs", "beta:check": "bash scripts/check-beta-readiness.sh", "web:smoke": "node scripts/run-with-env.mjs node scripts/check-web-pages.mjs", "db:generate": "node scripts/run-with-env.mjs pnpm --filter @reviewrouter/platform-db db:generate", "db:generate:offline": "REVIEW_ROUTER_REQUIRE_OFFLINE_PRISMA=1 node scripts/generate-prisma-offline.mjs", "db:push": "node scripts/run-with-env.mjs pnpm --filter @reviewrouter/platform-db db:push", "db:migrate": "node scripts/run-with-env.mjs pnpm --filter @reviewrouter/platform-db db:migrate", "spike:github:list-installations": "tsx spikes/github-oidc/src/list-installations.ts", "spike:github:sync-repositories": "tsx spikes/github-oidc/src/sync-installation-repositories.ts", "spike:github:provision-workflow": "tsx spikes/github-oidc/src/provision-workflow.ts", "spike:github:fresh-repo:e2e": "tsx spikes/github-oidc/src/fresh-repository-e2e.ts", "spike:github:codex-rotating:e2e": "tsx spikes/github-oidc/src/codex-rotating-live-e2e.ts", "spike:github:create-setup-pr": "tsx spikes/github-oidc/src/create-setup-pr.ts", "spike:action:e2e": "tsx spikes/github-oidc/src/action-control-plane-e2e.ts", "spike:review-config:e2e": "tsx spikes/github-oidc/src/review-config-override-e2e.ts", "spike:support-diagnostics:e2e": "tsx spikes/github-oidc/src/support-diagnostics-e2e.ts", "spike:auth-workspace:e2e": "tsx spikes/github-oidc/src/auth-workspace-access-e2e.ts", "spike:webhook-lifecycle:e2e": "tsx spikes/github-oidc/src/webhook-lifecycle-e2e.ts", "spike:server": "tsx spikes/github-oidc/src/server.ts", "spike:test": "vitest run spikes/github-oidc/tests", "db:migrate:deploy": "node scripts/run-with-env.mjs pnpm --filter @reviewrouter/platform-db db:migrate:deploy", "db:migrate:status": "node scripts/run-with-env.mjs pnpm --filter @reviewrouter/platform-db db:migrate:status", "db:migrate:smoke": "node scripts/run-with-env.mjs node scripts/check-migration-smoke.mjs", "outbox:fencing:cutover": "node scripts/run-with-env.mjs node scripts/activate-outbox-fencing.mjs", "review-provider-scope-concurrency": "node scripts/run-with-env.mjs node scripts/manage-review-provider-scope-concurrency.mjs", "review-v2:migrate": "node scripts/run-with-env.mjs node scripts/review-v2-migrate.mjs", "review-v2:migration-rehearsal": "node scripts/run-with-env.mjs node scripts/check-review-v2-migration-rehearsal.mjs", "review-investigation:migration-rehearsal": "REVIEW_ROUTER_REVIEW_INVESTIGATION_MIGRATION_REHEARSAL=1 node scripts/run-with-env.mjs vitest run scripts/review-investigation-mixed-version-migration.test.ts", "codex-rotating:migration-rehearsal": "node --import tsx scripts/check-codex-rotating-migration-rehearsal.mjs", "codex-rotating:migration89-boundary": "node --import tsx scripts/check-codex-rotating-migration-rehearsal.mjs --migration89-boundary-only", "codex-rotating:migration-preflight": "node --import tsx scripts/preflight-codex-rotating-migration-history.ts", "codex-rotating:role-bootstrap": "node --import tsx scripts/run-codex-rotating-role-bootstrap.mjs", "codex-rotating:release-migration": "node --import tsx scripts/run-codex-rotating-release-migration.mjs", "codex-rotating:installer-portability": "vitest run apps/web/src/server/codex-rotating-seed-script.test.ts", "codex-rotating:loopback-proof": "REVIEW_ROUTER_CODEX_ROTATING_WIRE_PROOF=1 vitest run apps/web/src/server/codex-rotating-one-shot-curl.real.test.ts apps/api/src/github/one-shot-github-secret-put.protocol.test.ts apps/api/src/github/one-shot-github-secret-put.real.test.ts apps/api/src/github/codex-rotating-integrated-fault.real.test.ts", "codex-rotating:rollout-proof": "vitest run scripts/verify-codex-rotating-rollout.test.ts", "release-rollout:rehearsal": "node --import tsx scripts/rehearse-private-pg17-rollout.mjs", "release-rollout:promote-activation-catalog-policy": "node --import tsx scripts/promote-private-pg17-activation-catalog-policy.mjs", "release-authority:fresh-install": "node scripts/install-release-authority-db.mjs --fresh-install", "release-authority:upgrade": "node scripts/install-release-authority-db.mjs --incremental-upgrade", "release-rollout:evidence:assemble": "node --import tsx scripts/assemble-private-pg17-trusted-evidence.ts", "release-rollout:evidence:verify": "node --import tsx scripts/verify-private-pg17-trusted-evidence.ts", "codex-rotating:production-writer-observation": "node --import tsx scripts/capture-codex-rotating-production-writer.mjs", "codex-rotating:secret-write-boundary": "node scripts/check-codex-secret-write-boundary.mjs", "review-v2:e2e": "REVIEW_ROUTER_REVIEW_V2_E2E=1 vitest run scripts/review-action-v2-production-e2e/review-action-v2-production.e2e.test.ts", "review-investigation:e2e": "bash scripts/review-investigation-production-e2e/support/run-ci.fixture.sh", "review-investigation:paired-e2e": "REVIEW_ROUTER_REVIEW_INVESTIGATION_PAIRED_E2E=1 vitest run --no-file-parallelism scripts/review-investigation-paired-e2e/review-investigation-paired.e2e.test.ts scripts/review-investigation-paired-e2e/openrouter-direct-paired.e2e.test.ts scripts/review-investigation-paired-e2e/pr-description-paired.e2e.test.ts scripts/review-investigation-paired-e2e/review-banner-comparison-paired.e2e.test.ts scripts/review-investigation-paired-e2e/lifecycle-verification-paired.e2e.test.ts apps/api/src/gateway-multi-reviewers-paired.e2e.test.ts", "review-v2:admin": "node scripts/run-with-env.mjs node --conditions=production apps/api/dist/review-action-v2-operator-cli.js", "reviewrouter": "node scripts/run-with-env.mjs node --conditions=production apps/api/dist/reviewrouter-operator-cli.js", "reviewrouter:install": "node scripts/install-reviewrouter-cli.mjs", "db:restore:smoke": "node scripts/run-with-env.mjs node scripts/check-backup-restore-smoke.mjs", "spike:outbox-maintenance:e2e": "tsx spikes/github-oidc/src/outbox-maintenance-e2e.ts", "spike:repo-health:e2e": "tsx spikes/github-oidc/src/repo-health-workflow-e2e.ts", "spike:rate-limit:e2e": "tsx spikes/github-oidc/src/rate-limit-e2e.ts", "spike:distributed-lock:e2e": "tsx spikes/github-oidc/src/distributed-lock-e2e.ts", "api:start": "node --conditions=production apps/api/dist/server.js", "release-control:start": "pnpm --filter @reviewrouter/api release-control:start", "release-witness:start": "pnpm --filter @reviewrouter/api release-witness:start", "worker:start": "node --conditions=production apps/worker/dist/worker.js", "runtime:smoke": "node scripts/run-with-env.mjs node scripts/check-production-runtime.mjs", "action:build": "node scripts/build-codex-rotating-action.mjs && node scripts/build-conflict-runtime.ts", "action:artifact:check": "node scripts/check-codex-rotating-action-artifact.mjs && node scripts/build-conflict-runtime.ts --check", "action:artifact:check:smoke": "REVIEWROUTER_CODEX_ROTATING_ACTION_REQUIRE_BINARY=0 node scripts/check-codex-rotating-action-artifact.mjs && node scripts/build-conflict-runtime.ts --check", "action:sync-public-runtime": "node scripts/sync-public-action-runtime.mjs", "subscription-runtime:contract": "node scripts/check-external-subscription-runtime.mjs", "subscription-runtime:redaction-canary": "node scripts/check-external-subscription-runtime.mjs", "subscription-runtime:e2e:local": "node scripts/check-external-subscription-runtime.mjs", "subscription-runtime:live-e2e:prereq": "node scripts/run-subscription-runtime-live-e2e.mjs --check-only", "subscription-runtime:live-e2e:smoke": "node scripts/check-subscription-runtime-live-e2e-smoke.mjs", "subscription-runtime:live-e2e": "node scripts/run-subscription-runtime-live-e2e.mjs", "subscription-runtime:worker-benchmark": "tsx spikes/subscription-runtime-worker-benchmark/benchmark-codex-worker.ts", "subscription-runtime:sync-public-mirrors": "node -e \"console.log('subscription-runtime mirrors are deprecated; use 777genius/ar')\"", "subscription-runtime:check": "node scripts/check-external-subscription-runtime.mjs && pnpm action:artifact:check:smoke && pnpm subscription-runtime:live-e2e:smoke", "subscription-runtime:release-gate": "pnpm subscription-runtime:check && pnpm codex-rotating:secret-write-boundary && pnpm action:artifact:check && pnpm exec vitest run packages/features/codex-oauth-rotating/src/tests/codex-oauth-rotating.test.ts packages/features/codex-oauth-rotating/src/tests/github-action.test.ts && pnpm architecture:check && pnpm typecheck && git diff --check", "architecture:web-host-cms": "tsx scripts/check-web-host-cms-profile-cli.ts", "architecture:check": "node scripts/check-architecture-boundaries.mjs && pnpm architecture:web-host-cms && pnpm foundation:check && pnpm foundation:assert-dev-only && pnpm foundation:assert-registry && pnpm foundation:qualify-memory && pnpm foundation:qualify-statistics && pnpm history:architecture", "github-app:check": "node scripts/run-with-env.mjs node scripts/check-github-app-readiness.mjs", "github-app:create": "node scripts/create-github-app-manifest.mjs", "github-app:manifest:smoke": "node scripts/check-github-app-manifest-smoke.mjs", "github-app:use-profile": "node scripts/use-github-app-profile.mjs", "public-beta:check": "bash scripts/check-public-beta-readiness.sh", "deploy:render:hosted-beta": "sh scripts/deploy-render-hosted-beta.sh", "ops:sync-action-ref": "node scripts/sync-render-action-ref.mjs", "hosted:api-demo:check": "node scripts/check-hosted-api-demo.mjs", "web:ui-audit": "node scripts/check-ui-layout.mjs", "hosted:ui-audit": "node scripts/check-ui-layout.mjs --base-url https://reviewrouter.org", "hosted:progress-canary": "node scripts/run-hosted-live-progress-canary.mjs", "release:sync-major": "node scripts/sync-major-release-tag.mjs", "lint:native:files": "node scripts/local-checks/lint-format-lint.mts", "typecheck:lint-format": "tsc --noEmit -p tsconfig.lint-format.json", "compiler:pilot": "node scripts/local-checks/compiler-cli.ts --legacy --noEmit -p tsconfig.tooling.json && vitest run --config scripts/local-checks/compiler-vitest.config.ts", "compiler:prepare": "pnpm --dir scripts/local-checks/native install --ignore-workspace --ignore-scripts --frozen-lockfile", "foundation:check": "agent-teams-foundation check", "foundation:assert-dev-only": "agent-teams-foundation assert-dev-only", "foundation:assert-registry": "agent-teams-foundation assert-registry", "foundation:qualify": "node scripts/provider-foundation/qualify-packed.ts && tsc -p scripts/provider-foundation/tsconfig.json && node --import tsx scripts/provider-foundation/qualify-boundaries.ts", "subscription-runtime:prepare": "node scripts/prepare-pinned-subscription-runtime.ts", "foundation:qualify-memory": "node --import tsx scripts/memory-foundation/qualify-boundaries.ts", "modular:qualify": "node scripts/local-checks/compiler-cli.ts --native --noEmit -p tsconfig.modular.json && vitest run packages/features/review-providers/src/composition/index.test.ts packages/features/provider-usage/src/tests/composition.test.ts packages/features/provider-accounts/src/account-limits/composition.test.ts packages/features/memory/src/composition/memory-knowledge-runtime.test.ts packages/features/review-statistics/src/composition/index.test.ts packages/features/review-history/src/composition/review-history.root.test.ts", "foundation:qualify-statistics": "node --import tsx scripts/statistics-foundation/qualify-boundaries.ts", "history:architecture": "node --import tsx scripts/review-history-tooling/check.ts", "history:test:postgres": "vitest run packages/features/review-history/src/tests/history.postgres.test.ts packages/features/review-history/src/tests/history-reader.postgres.test.ts", "history:activate": "node scripts/run-with-env.mjs node --import tsx scripts/activate-review-history.ts" }, "dependencies": { "@base-ui/react": "^1.4.1", "@octokit/app": "^16.1.2", "@octokit/rest": "^22.0.1", "@prisma/client": "^7.8.0", "@tanstack/react-query": "^5.100.8", "@trpc/client": "^11.17.0", "@trpc/react-query": "^11.17.0", "@trpc/server": "^11.17.0", "clsx": "^2.1.1", "dotenv": "^17.4.2", "fastify": "^5.10.0", "jose": "^6.2.3", "lucide-react": "^1.14.0", "next": "^16.2.11", "nuqs": "^2.8.9", "pg-boss": "^12.18.2", "react": "^19.2.5", "react-dom": "^19.2.5", "react-hook-form": "^7.75.0", "sonner": "^2.0.7", "tailwind-merge": "^3.5.0", "tailwind-variants": "^3.2.2", "tailwindcss": "^4.2.4", "zod": "^4.4.2", "zustand": "^5.0.12", "@get-modular/core": "0.7.0", "@get-modular/assembly": "0.7.0" }, "optionalDependencies": { "@777genius/subscription-runtime": "git+https://github.com/777genius/ar.git#83a7329f4383b05ac5c39356b79f82f029182d42" }, "devDependencies": { "@eslint/js": "^10.0.1", "@prisma/adapter-pg": "7.8.0", "@tailwindcss/postcss": "4.2.4", "@testing-library/react": "^16.3.2", "@types/node": "^22.19.0", "@types/react": "^19.2.14", "@types/react-dom": "^19.2.3", "esbuild": "0.28.1", "eslint": "^10.3.0", "jsdom": "^29.1.1", "pg": "8.23.0", "prettier": "^3.8.3", "prisma": "^7.8.0", "tsx": "^4.23.1", "turbo": "^2.10.6", "typescript": "^6.0.3", "typescript-eslint": "^8.59.1", "vitest": "^4.1.10", "yaml": "^2.9.0", "oxlint": "1.87.0", "oxfmt": "0.72.0", "@agent-teams/engineering-foundation": "2.1.0", "playwright-core": "1.64.1", "@types/pg": "8.23.1", "@get-modular/conformance": "0.5.0", "@get-modular/resources": "0.2.1" }, "license": "Apache-2.0" }