{
  "name": "agent-recon-server",
  "version": "1.2.1",
  "description": "Real-time agent observability dashboard",
  "main": "server.js",
  "scripts": {
    "start": "node start.js",
    "test": "node --test tests/unit/*.test.js tests/frontend/*.test.js tests/integration/*.test.js",
    "test:unit": "node --test tests/unit/*.test.js",
    "test:fe": "node --test tests/frontend/*.test.js",
    "test:int": "node --test tests/integration/*.test.js",
    "test:accuracy": "node --test tests/accuracy/*.test.js",
    "test:coverage": "c8 node --test tests/unit/*.test.js tests/frontend/*.test.js",
    "setup:hooks": "node -e \"const fs=require('fs'),p=require('path'),s=p.join(__dirname,'pre-commit-hook.sh'),d=p.join(__dirname,'../.git/hooks/pre-commit');fs.copyFileSync(s,d);fs.chmodSync(d,0o755);console.log('Pre-commit hook installed.');\""
  },
  "engines": {
    "node": ">=22.0.0"
  },
  "comment:allowScripts": "SUPPLY-CHAIN TRUST ALLOWLIST (npm >= 12). npm 12 blocks dependency install scripts by default, which stops better-sqlite3's native binding from ever being built ('Could not locate the bindings file'). This file is the LOAD-BEARING one for end users: it ships in the root files[] allowlist, and server/start.js runs 'npm rebuild better-sqlite3' with cwd=__dirname, so server/package.json is the project root that governs that rebuild. Keep the key UNPINNED (name only) so it keeps matching as the ^12 range floats.",
  "allowScripts": {
    "better-sqlite3": true
  },
  "dependencies": {
    "@litko/yara-x": "^0.7.1",
    "better-sqlite3": "^13.0.3",
    "express": "^5.2.1",
    "ws": "^8.21.0"
  },
  "devDependencies": {
    "c8": "^12.0.0",
    "terser": "^5.48.0"
  },
  "optionalDependencies": {
    "@litko/yara-x-darwin-arm64": "0.7.1",
    "@litko/yara-x-darwin-x64": "0.7.1",
    "@litko/yara-x-linux-x64-gnu": "0.7.1",
    "@litko/yara-x-win32-x64-msvc": "0.7.1"
  }
}
