{
  "name": "ux7",
  "version": "0.2.0",
  "private": true,
  "description": "A secure, installable AI chat interface for controlling Codex within approved projects.",
  "type": "module",
  "engines": {
    "node": ">=22 <23"
  },
  "scripts": {
    "build": "npm run clean:build && npm run build:server && npm run build:client",
    "build:client": "vite build",
    "build:server": "tsc -p tsconfig.server.json",
    "cleanup:uploads": "node --env-file-if-exists=.env --experimental-strip-types scripts/cleanup-uploads.ts",
    "clean:build": "node scripts/clean-build.mjs",
    "dev": "node --env-file-if-exists=.env --watch --experimental-strip-types src/server.ts",
    "discover:projects": "node scripts/discover-projects.mjs",
    "lint": "eslint src client tests scripts",
    "migrate": "node --env-file-if-exists=.env --experimental-strip-types scripts/migrate.ts",
    "start": "NODE_ENV=production node --env-file-if-exists=.env dist/server.js",
    "test": "node --test --experimental-strip-types tests/*.test.mjs tests/*.test.ts tests/integration/*.test.ts",
    "test:integration": "node --test --experimental-strip-types tests/integration/*.test.ts",
    "typecheck": "tsc --noEmit && tsc -p tsconfig.server.json --noEmit"
  },
  "devDependencies": {
    "@eslint/js": "^10.0.1",
    "@types/dompurify": "^3.0.5",
    "@types/express": "^5.0.6",
    "@types/jsdom": "^28.0.3",
    "@types/multer": "^2.2.0",
    "@types/node": "^26.1.1",
    "eslint": "^10.7.0",
    "globals": "^17.7.0",
    "jsdom": "^29.1.1",
    "typescript": "^6.0.2",
    "typescript-eslint": "^8.63.0",
    "vite": "^8.1.4"
  },
  "dependencies": {
    "bcryptjs": "^3.0.3",
    "dompurify": "^3.4.12",
    "express": "^5.2.1",
    "highlight.js": "^11.11.1",
    "marked": "^18.0.6",
    "multer": "^2.2.0"
  }
}
