{
  "name": "rebno",
  "private": true,
  "version": "0.0.0",
  "scripts": {
    "extract:client": "pnpm tsx tools/extract-gmd/cli.ts extract \"legacy/open-source-release/BN Online Client 5-8.gmd\" extracted/client-5-8",
    "extract:server": "pnpm tsx tools/extract-gmd/cli.ts extract \"legacy/open-source-release/BN Online Master 5-4.gmd\" extracted/server-5-4",
    "extract:all": "pnpm run extract:client && pnpm run extract:server",
    "extract:verify": "pnpm tsx tools/extract-gmd/cli.ts verify extracted/client-5-8 && pnpm tsx tools/extract-gmd/cli.ts verify extracted/server-5-4",
    "catalog:client": "cd tools/asset-catalog && pnpm exec tsx cli.ts catalog ../../extracted/client-5-8 ../../docs/extracted-engine",
    "catalog:server": "cd tools/asset-catalog && pnpm exec tsx cli.ts catalog ../../extracted/server-5-4 ../../docs/extracted-server",
    "catalog:all": "pnpm run catalog:client && pnpm run catalog:server",
    "catalog:verify": "cd tools/asset-catalog && pnpm exec tsx cli.ts verify ../../docs/extracted-engine",
    "catalog:verify:server": "cd tools/asset-catalog && pnpm exec tsx cli.ts verify ../../docs/extracted-server",
    "regen:server": "pnpm run catalog:server && pnpm run protocol-doc:catalog && pnpm run save-format-doc:catalog",
    "protocol-doc:catalog": "cd tools/protocol-doc && pnpm exec tsx cli.ts catalog ../../extracted/server-5-4 ../../docs/extracted-server",
    "protocol-doc:verify": "cd tools/protocol-doc && pnpm exec tsx cli.ts verify ../../docs/extracted-server",
    "save-format-doc:catalog": "cd tools/save-format-doc && pnpm exec tsx cli.ts catalog ../../extracted/server-5-4 ../../docs/extracted-server",
    "save-format-doc:verify": "cd tools/save-format-doc && pnpm exec tsx cli.ts verify ../../docs/extracted-server",
    "lint:wiki-errata": "node tools/asset-catalog/scripts/lint-wiki-errata.mjs",
    "lint:adr": "node tools/asset-catalog/scripts/lint-adr.mjs docs/adr/0001-client-engine.md",
    "lint:adr:0002": "node tools/asset-catalog/scripts/lint-adr.mjs docs/adr/0002-persistence-layer.md --no-matrix",
    "lint:adr:0003": "node tools/asset-catalog/scripts/lint-adr.mjs docs/adr/0003-canonical-snapshot.md --no-matrix",
    "lint:adr:0004": "node tools/asset-catalog/scripts/lint-adr.mjs docs/adr/0004-room-hot-reload.md --no-matrix",
    "lint:adr:0005": "node tools/asset-catalog/scripts/lint-adr.mjs docs/adr/0005-deploy-topology.md --no-matrix",
    "lint:adr:0006": "node tools/asset-catalog/scripts/lint-adr.mjs docs/adr/0006-observability-stack.md --no-matrix",
    "lint:adr:0009": "node tools/asset-catalog/scripts/lint-adr.mjs docs/adr/0009-ldtk-gridsize-convention.md --no-matrix",
    "lint:adr:0010": "node tools/asset-catalog/scripts/lint-adr.mjs docs/adr/0010-ldtk-tileset-source-hash.md --no-matrix",
    "lint:adr:0011": "node tools/asset-catalog/scripts/lint-adr.mjs docs/adr/0011-bncentral-gridvania-chunking.md --no-matrix",
    "lint:adr:0012": "node tools/asset-catalog/scripts/lint-adr.mjs docs/adr/0012-ldtk-version-pin.md --no-matrix",
    "lint:adrs": "node tools/asset-catalog/scripts/lint-adr.mjs docs/adr/0001-client-engine.md && pnpm lint:adr:0002 && pnpm lint:adr:0003 && pnpm lint:adr:0004 && pnpm lint:adr:0005 && pnpm lint:adr:0006 && pnpm lint:adr:0009 && pnpm lint:adr:0010 && pnpm lint:adr:0011 && pnpm lint:adr:0012",
    "lint:protocol": "node tools/protocol-doc/scripts/lint-protocol.mjs docs/extracted-server",
    "lint:save-formats": "node tools/save-format-doc/scripts/lint-save-formats.mjs docs/extracted-server",
    "lint:subsystem-mds": "node tools/asset-catalog/scripts/lint-subsystem-mds.mjs docs/extracted-server",
    "lint:parity-checklist": "node tools/asset-catalog/scripts/lint-parity-checklist.mjs docs/extracted-server",
    "db:generate": "pnpm -C packages/db exec drizzle-kit generate",
    "db:test": "pnpm -C packages/db test",
    "db:emit-check": "pnpm -C packages/db exec drizzle-kit generate && node -e \"require('fs').copyFileSync('packages/db/migrations/0001_baseline.sql','docs/extracted-server/0001_baseline.sql')\" && git diff --exit-code packages/db/migrations/0001_baseline.sql docs/extracted-server/0001_baseline.sql",
    "lint:schema-sync": "node -e \"const a=require('fs').readFileSync('packages/db/migrations/0001_baseline.sql');const b=require('fs').readFileSync('docs/extracted-server/0001_baseline.sql');if(Buffer.compare(a,b)!==0){console.error('docs/extracted-server/0001_baseline.sql out of sync with packages/db/migrations/0001_baseline.sql');process.exit(1)}console.log('OK')\"",
    "lint:source-comments": "pnpm -C packages/db run lint:source-comments",
    "verify:phase-3": "node scripts/verify-phase-3.mjs",
    "test:verify-phase-3": "node scripts/verify-phase-3.test.mjs",
    "build": "pnpm -r build",
    "typecheck": "pnpm -r typecheck",
    "test": "pnpm -r test",
    "dev:server": "pnpm --filter @rebno/server dev",
    "migrate:legacy-accounts": "pnpm --filter @rebno/server exec tsx scripts/migrate-legacy-accounts.ts",
    "db:auth:gen": "pnpm exec better-auth generate --output packages/db/src/auth-tables.ts -y",
    "lint:better-auth-schema-sync": "node tools/scripts/lint-better-auth-schema-sync.mjs",
    "lint:rate-limit-budgets": "node tools/scripts/lint-rate-limit-budgets.mjs",
    "lint:protocol-sync": "node tools/scripts/lint-protocol-sync.mjs",
    "lint:game-logic-purity": "node tools/scripts/lint-game-logic-purity.mjs",
    "lint:no-clipboard-rce": "node tools/scripts/lint-no-clipboard-rce.mjs",
    "lint:room-layout": "node tools/scripts/lint-room-layout.mjs",
    "lint:no-req-placeholders": "node tools/scripts/lint-no-req-placeholders.mjs",
    "lint:atlas-hash": "node tools/scripts/lint-atlas-hash.mjs",
    "preflight": "node -e \"const v=require('fs').readFileSync('tools/ldtk-version.txt','utf8').trim();if(!v)throw new Error('ldtk-version.txt empty');console.log('LDtk pin:',v)\" && pnpm lint:room-layout && pnpm gate:no-inline-origin && pnpm trace:check && pnpm lint:no-req-placeholders && pnpm lint:atlas-hash && node tools/scripts/check-conversion-regression.mjs",
    "verify:phase-4": "node scripts/verify-phase-4.mjs",
    "test:verify-phase-4": "node scripts/verify-phase-4.test.mjs",
    "lint:deploy-stack": "node tools/scripts/lint-deploy-stack.mjs",
    "lint:deploy-stack:test": "node tools/scripts/lint-deploy-stack.test.mjs",
    "lint:asset-pipeline": "node tools/scripts/lint-asset-pipeline.mjs",
    "lint:asset-pipeline:test": "node --test tools/scripts/lint-asset-pipeline.test.mjs",
    "lint:vite-env": "node tools/scripts/lint-vite-env.mjs",
    "lint:vite-env:staging": "node tools/scripts/lint-vite-env.mjs --target staging",
    "lint:vite-env:prod": "node tools/scripts/lint-vite-env.mjs --target prod",
    "lint:vite-env:test": "node --test tools/scripts/lint-vite-env.test.mjs",
    "lint:fly-env": "node tools/scripts/lint-fly-env.mjs",
    "verify:phase-5": "node scripts/verify-phase-5.mjs",
    "test:verify-phase-5": "node scripts/verify-phase-5.test.mjs",
    "verify:phase-6": "node scripts/verify-phase-6.mjs",
    "verify:phase-6:test": "node --test scripts/verify-phase-6.test.mjs",
    "trace:list": "traceable-reqs list",
    "trace:check": "traceable-reqs check",
    "trace:check:json": "traceable-reqs check --json",
    "soak:staging": "node scripts/soak-staging.mjs",
    "dev:client": "pnpm --filter @rebno/client dev",
    "build:client:staging": "pnpm --filter @rebno/client build:staging",
    "build:client:prod": "pnpm --filter @rebno/client build:prod",
    "test:client": "pnpm --filter @rebno/client test",
    "test:e2e:client": "pnpm --filter @rebno/client test:e2e",
    "asset-pipeline:bootstrap": "cd tools/asset-pipeline && pnpm bootstrap",
    "asset-pipeline:build": "cd tools/asset-pipeline && pnpm build",
    "asset-pipeline:postprocess": "cd tools/asset-pipeline && pnpm postprocess ../../apps/server/public/.vite/manifest.json ./output/pipeline-manifest.json ../../apps/server/public/pipeline-manifest.json",
    "asset-pipeline:test": "cd tools/asset-pipeline && pnpm test",
    "room-converter:mvp-room": "cd tools/room-converter && pnpm mvp-room",
    "room-converter:test": "cd tools/room-converter && pnpm test",
    "gate:no-inline-origin": "pnpm tsx tooling/no-inline-origin.ts"
  },
  "devDependencies": {
    "@better-auth/cli": "^1.4.21",
    "tsx": "4.21.0"
  },
  "pnpm": {
    "onlyBuiltDependencies": [
      "better-sqlite3",
      "argon2",
      "bcryptjs",
      "esbuild",
      "@swc/core"
    ]
  }
}
