{
  "schema_version": "1.0.0",
  "scanner": {
    "name": "global-capability-catalog",
    "version": "0.1.0"
  },
  "repo": {
    "id": "github-recent__mbarbine__platphorm-vercel-atlas",
    "name": "mbarbine__platphorm-vercel-atlas",
    "path": "/Users/bwm.barbinewarnermichael/Documents/github/repositories/github-recent/mbarbine__platphorm-vercel-atlas",
    "relative_path": "github-recent/mbarbine__platphorm-vercel-atlas",
    "remote_url": "git@github.com:mbarbine/platphorm-vercel-atlas.git",
    "default_branch": "main",
    "current_commit": "7b45757063fdc35d385de12c44d084a43132a5b0"
  },
  "languages": [
    {
      "language": "TypeScript",
      "files": 224,
      "bytes": 1233551
    },
    {
      "language": "JSON",
      "files": 9,
      "bytes": 516767
    },
    {
      "language": "Markdown",
      "files": 26,
      "bytes": 174696
    },
    {
      "language": "SQL",
      "files": 15,
      "bytes": 52854
    },
    {
      "language": "JavaScript",
      "files": 22,
      "bytes": 32624
    },
    {
      "language": "CSS",
      "files": 2,
      "bytes": 11008
    }
  ],
  "frameworks": [
    {
      "name": "Jest",
      "confidence": "high",
      "evidence_paths": [
        "package.json"
      ]
    },
    {
      "name": "Next.js",
      "confidence": "high",
      "evidence_paths": [
        "package.json"
      ]
    },
    {
      "name": "React",
      "confidence": "high",
      "evidence_paths": [
        "package.json"
      ]
    },
    {
      "name": "Tailwind CSS",
      "confidence": "high",
      "evidence_paths": [
        "package.json"
      ]
    }
  ],
  "packages": {
    "package_manager": "npm",
    "manifests": [
      {
        "path": "package.json",
        "name": "my-v0-project",
        "version": "0.1.0",
        "scripts": {
          "build": "next build",
          "dev": "next dev",
          "lint": "eslint .",
          "start": "next start",
          "pretest": "npm run test:types",
          "test": "npm run test:types && npm run test:api",
          "test:all": "npm run test:types && jest --config jest.config.js --runInBand",
          "test:api": "jest __tests__/api.test.ts --config jest.config.js",
          "test:e2e": "jest __tests__/e2e.test.ts --config jest.config.js",
          "test:utils": "jest __tests__/utils.test.ts --config jest.config.js",
          "test:db": "jest __tests__/database.test.ts --config jest.config.js",
          "test:components": "jest __tests__/components.test.tsx --config jest.config.js",
          "test:playwright": "playwright test",
          "test:types": "tsc --noEmit",
          "test:watch": "jest --watch",
          "test:coverage": "jest --coverage --config jest.config.js",
          "test:async": "node scripts/test-async-flow.mjs"
        },
        "dependencies": {
          "@hookform/resolvers": "^3.10.0",
          "@neondatabase/serverless": "latest",
          "@radix-ui/react-accordion": "1.2.2",
          "@radix-ui/react-alert-dialog": "1.1.4",
          "@radix-ui/react-aspect-ratio": "1.1.1",
          "@radix-ui/react-avatar": "1.1.2",
          "@radix-ui/react-checkbox": "1.1.3",
          "@radix-ui/react-collapsible": "1.1.2",
          "@radix-ui/react-context-menu": "2.2.4",
          "@radix-ui/react-dialog": "1.1.4",
          "@radix-ui/react-dropdown-menu": "2.1.4",
          "@radix-ui/react-hover-card": "1.1.4",
          "@radix-ui/react-label": "2.1.1",
          "@radix-ui/react-menubar": "1.1.4",
          "@radix-ui/react-navigation-menu": "1.2.3",
          "@radix-ui/react-popover": "1.1.4",
          "@radix-ui/react-progress": "1.1.1",
          "@radix-ui/react-radio-group": "1.2.2",
          "@radix-ui/react-scroll-area": "1.2.2",
          "@radix-ui/react-select": "2.1.4",
          "@radix-ui/react-separator": "1.1.1",
          "@radix-ui/react-slider": "1.2.2",
          "@radix-ui/react-slot": "^1.2.4",
          "@radix-ui/react-switch": "1.1.2",
          "@radix-ui/react-tabs": "1.1.2",
          "@radix-ui/react-toast": "1.2.4",
          "@radix-ui/react-toggle": "1.1.1",
          "@radix-ui/react-toggle-group": "1.1.1",
          "@radix-ui/react-tooltip": "1.1.6",
          "@vercel/analytics": "latest",
          "@vercel/edge-config": "^1.4.3",
          "@vercel/speed-insights": "1.3.1",
          "class-variance-authority": "^0.7.1",
          "clsx": "^2.1.1",
          "cmdk": "1.0.4",
          "date-fns": "4.1.0",
          "embla-carousel-react": "8.5.1",
          "input-otp": "1.4.1",
          "lucide-react": "^0.454.0",
          "next": "^16.1.6",
          "next-themes": "^0.4.6",
          "pcap-parser": "^0.2.1",
          "react": "^19.2.4",
          "react-day-picker": "9.8.0",
          "react-dom": "^19.2.4",
          "react-hook-form": "^7.70.0",
          "react-resizable-panels": "^2.1.9",
          "recharts": "2.15.4",
          "sonner": "^1.7.4",
          "tailwind-animate": "^0.2.10",
          "tailwind-merge": "^2.6.0",
          "tailwindcss-animate": "^1.0.7",
          "vaul": "^1.1.2",
          "zod": "3.25.76"
        },
        "dev_dependencies": {
          "@jest/globals": "^29.7.0",
          "@playwright/test": "^1.59.1",
          "@tailwindcss/postcss": "^4.2.1",
          "@testing-library/jest-dom": "^6.9.1",
          "@testing-library/react": "^16.3.2",
          "@types/jest": "^29.5.14",
          "@types/node": "^22.19.15",
          "@types/react": "^19.2.14",
          "@types/react-dom": "^19.2.3",
          "@typescript-eslint/eslint-plugin": "^8.56.1",
          "@typescript-eslint/parser": "^8.57.0",
          "autoprefixer": "^10.4.20",
          "eslint-config-next": "^16.1.6",
          "jest": "^29.7.0",
          "jest-environment-jsdom": "^30.2.0",
          "jest-environment-node": "^29.7.0",
          "postcss": "^8.5.6",
          "tailwindcss": "4.1.18",
          "ts-jest": "^29.4.6",
          "ts-node": "^10.9.2",
          "tw-animate-css": "1.3.3",
          "typescript": "^5.9.3"
        }
      }
    ]
  },
  "routes": {
    "api_routes": [
      {
        "route": "/actors",
        "source_path": "app/api/actors/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "GET",
          "POST"
        ]
      },
      {
        "route": "/admin/purge",
        "source_path": "app/api/admin/purge/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "POST"
        ]
      },
      {
        "route": "/ai-plugin.json",
        "source_path": "app/api/ai-plugin.json/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/alerts/[id]/actions",
        "source_path": "app/api/alerts/[id]/actions/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "GET",
          "POST"
        ]
      },
      {
        "route": "/alerts/[id]",
        "source_path": "app/api/alerts/[id]/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "GET",
          "PATCH"
        ]
      },
      {
        "route": "/alerts/auto-respond",
        "source_path": "app/api/alerts/auto-respond/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "POST"
        ]
      },
      {
        "route": "/alerts/feed",
        "source_path": "app/api/alerts/feed/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/alerts",
        "source_path": "app/api/alerts/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "GET",
          "POST"
        ]
      },
      {
        "route": "/campaigns",
        "source_path": "app/api/campaigns/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "GET",
          "POST"
        ]
      },
      {
        "route": "/challenges",
        "source_path": "app/api/challenges/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "DELETE",
          "GET",
          "POST"
        ]
      },
      {
        "route": "/config",
        "source_path": "app/api/config/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/cron/daily",
        "source_path": "app/api/cron/daily/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/cron/enrich",
        "source_path": "app/api/cron/enrich/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/cron/vercel-sync",
        "source_path": "app/api/cron/vercel-sync/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/ddos/detect",
        "source_path": "app/api/ddos/detect/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "GET",
          "POST"
        ]
      },
      {
        "route": "/docs",
        "source_path": "app/api/docs/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/enrich",
        "source_path": "app/api/enrich/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "GET",
          "POST"
        ]
      },
      {
        "route": "/enrich/trigger",
        "source_path": "app/api/enrich/trigger/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "GET",
          "POST"
        ]
      },
      {
        "route": "/features",
        "source_path": "app/api/features/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "GET",
          "POST"
        ]
      },
      {
        "route": "/fingerprint",
        "source_path": "app/api/fingerprint/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "GET",
          "POST"
        ]
      },
      {
        "route": "/fingerprints/label",
        "source_path": "app/api/fingerprints/label/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "POST"
        ]
      },
      {
        "route": "/fingerprints/lookup",
        "source_path": "app/api/fingerprints/lookup/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/fingerprints",
        "source_path": "app/api/fingerprints/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "GET",
          "POST"
        ]
      },
      {
        "route": "/firewall/rules/[id]",
        "source_path": "app/api/firewall/rules/[id]/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "DELETE",
          "PATCH"
        ]
      },
      {
        "route": "/firewall/rules",
        "source_path": "app/api/firewall/rules/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "GET",
          "POST"
        ]
      },
      {
        "route": "/firewall/sync-edge-config",
        "source_path": "app/api/firewall/sync-edge-config/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "POST"
        ]
      },
      {
        "route": "/health",
        "source_path": "app/api/health/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/import/pcap",
        "source_path": "app/api/import/pcap/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "POST"
        ]
      },
      {
        "route": "/infrastructure",
        "source_path": "app/api/infrastructure/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/ingest/batch",
        "source_path": "app/api/ingest/batch/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "GET",
          "POST"
        ]
      },
      {
        "route": "/ingest/http",
        "source_path": "app/api/ingest/http/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "GET",
          "POST"
        ]
      },
      {
        "route": "/ingest/n8n",
        "source_path": "app/api/ingest/n8n/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "GET",
          "POST"
        ]
      },
      {
        "route": "/ingest/suricata",
        "source_path": "app/api/ingest/suricata/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "GET",
          "POST"
        ]
      },
      {
        "route": "/ingest/syslog",
        "source_path": "app/api/ingest/syslog/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "GET",
          "POST"
        ]
      },
      {
        "route": "/ingest/webhook",
        "source_path": "app/api/ingest/webhook/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "GET",
          "POST"
        ]
      },
      {
        "route": "/ingest/zeek",
        "source_path": "app/api/ingest/zeek/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "GET",
          "POST"
        ]
      },
      {
        "route": "/ja4/validate",
        "source_path": "app/api/ja4/validate/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "GET",
          "POST"
        ]
      },
      {
        "route": "/lookup",
        "source_path": "app/api/lookup/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/lookup/suggestions",
        "source_path": "app/api/lookup/suggestions/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/mcp.json",
        "source_path": "app/api/mcp.json/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/mcp",
        "source_path": "app/api/mcp/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "GET",
          "OPTIONS",
          "POST"
        ]
      },
      {
        "route": "/observations",
        "source_path": "app/api/observations/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/openapi.json",
        "source_path": "app/api/openapi.json/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/performance/metrics",
        "source_path": "app/api/performance/metrics/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "GET",
          "POST"
        ]
      },
      {
        "route": "/projects/[id]/keys/[keyId]",
        "source_path": "app/api/projects/[id]/keys/[keyId]/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "DELETE"
        ]
      },
      {
        "route": "/projects/[id]/keys",
        "source_path": "app/api/projects/[id]/keys/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "GET",
          "POST"
        ]
      },
      {
        "route": "/projects/[id]",
        "source_path": "app/api/projects/[id]/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "DELETE",
          "GET",
          "PATCH"
        ]
      },
      {
        "route": "/projects",
        "source_path": "app/api/projects/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "GET",
          "POST"
        ]
      },
      {
        "route": "/projects/validate",
        "source_path": "app/api/projects/validate/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "POST"
        ]
      },
      {
        "route": "/quake",
        "source_path": "app/api/quake/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "GET",
          "OPTIONS",
          "POST"
        ]
      },
      {
        "route": "/sensors/[id]",
        "source_path": "app/api/sensors/[id]/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "DELETE",
          "GET",
          "PUT"
        ]
      },
      {
        "route": "/sensors/purge",
        "source_path": "app/api/sensors/purge/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "POST"
        ]
      },
      {
        "route": "/sensors",
        "source_path": "app/api/sensors/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/soc/dashboard",
        "source_path": "app/api/soc/dashboard/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/sources/[key]",
        "source_path": "app/api/sources/[key]/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "DELETE",
          "GET",
          "PATCH"
        ]
      },
      {
        "route": "/sources/create",
        "source_path": "app/api/sources/create/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "POST"
        ]
      },
      {
        "route": "/sources",
        "source_path": "app/api/sources/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "GET",
          "POST"
        ]
      },
      {
        "route": "/stats/daily-volume",
        "source_path": "app/api/stats/daily-volume/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/stats",
        "source_path": "app/api/stats/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/v1/health",
        "source_path": "app/api/v1/health/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/v1/network/discovery-compliance",
        "source_path": "app/api/v1/network/discovery-compliance/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/v1/network/graph",
        "source_path": "app/api/v1/network/graph/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "GET",
          "POST"
        ]
      },
      {
        "route": "/v1/network/graph/sync",
        "source_path": "app/api/v1/network/graph/sync/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/v1/network/route-compliance",
        "source_path": "app/api/v1/network/route-compliance/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/v1/network/sites",
        "source_path": "app/api/v1/network/sites/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/v1/network/trusted-domains",
        "source_path": "app/api/v1/network/trusted-domains/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/vercel/firewall",
        "source_path": "app/api/vercel/firewall/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/vercel/projects",
        "source_path": "app/api/vercel/projects/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/vercel/sync-firewall",
        "source_path": "app/api/vercel/sync-firewall/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "GET",
          "POST"
        ]
      },
      {
        "route": "/webhooks/alerts",
        "source_path": "app/api/webhooks/alerts/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "POST"
        ]
      },
      {
        "route": "/webhooks/test",
        "source_path": "app/api/webhooks/test/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "POST"
        ]
      }
    ],
    "app_routes": [
      {
        "route": "/actors",
        "source_path": "app/actors/page.tsx",
        "kind": "next-app-page",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/admin",
        "source_path": "app/admin/page.tsx",
        "kind": "next-app-page",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/campaigns",
        "source_path": "app/campaigns/page.tsx",
        "kind": "next-app-page",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/dashboard",
        "source_path": "app/dashboard/page.tsx",
        "kind": "next-app-page",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/docs",
        "source_path": "app/docs/page.tsx",
        "kind": "next-app-page",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/faq",
        "source_path": "app/faq/page.tsx",
        "kind": "next-app-page",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/fingerprints/[id]",
        "source_path": "app/fingerprints/[id]/page.tsx",
        "kind": "next-app-page",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/fingerprints",
        "source_path": "app/fingerprints/page.tsx",
        "kind": "next-app-page",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/import",
        "source_path": "app/import/page.tsx",
        "kind": "next-app-page",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/infrastructure",
        "source_path": "app/infrastructure/page.tsx",
        "kind": "next-app-page",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/integrate",
        "source_path": "app/integrate/page.tsx",
        "kind": "next-app-page",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/integration",
        "source_path": "app/integration/page.tsx",
        "kind": "next-app-page",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/lookup",
        "source_path": "app/lookup/page.tsx",
        "kind": "next-app-page",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/observations",
        "source_path": "app/observations/page.tsx",
        "kind": "next-app-page",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/projects",
        "source_path": "app/projects/page.tsx",
        "kind": "next-app-page",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/sensors",
        "source_path": "app/sensors/page.tsx",
        "kind": "next-app-page",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/soc/alerts/[id]",
        "source_path": "app/soc/alerts/[id]/page.tsx",
        "kind": "next-app-page",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/soc/alerts",
        "source_path": "app/soc/alerts/page.tsx",
        "kind": "next-app-page",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/soc/firewall/new",
        "source_path": "app/soc/firewall/new/page.tsx",
        "kind": "next-app-page",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/soc/firewall",
        "source_path": "app/soc/firewall/page.tsx",
        "kind": "next-app-page",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/soc",
        "source_path": "app/soc/page.tsx",
        "kind": "next-app-page",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/threats",
        "source_path": "app/threats/page.tsx",
        "kind": "next-app-page",
        "methods": [
          "GET"
        ]
      }
    ]
  },
  "components": [
    {
      "name": "enrich-button",
      "kind": "ui-component",
      "source_path": "components/enrich-button.tsx"
    },
    {
      "name": "enrich-dropdown",
      "kind": "ui-component",
      "source_path": "components/enrich-dropdown.tsx"
    },
    {
      "name": "enrichment-sources-provider",
      "kind": "ui-component",
      "source_path": "components/enrichment-sources-provider.tsx"
    },
    {
      "name": "fingerprint-collector",
      "kind": "ui-component",
      "source_path": "components/fingerprint-collector.tsx"
    },
    {
      "name": "fingerprints-header",
      "kind": "ui-component",
      "source_path": "components/fingerprints/fingerprints-header.tsx"
    },
    {
      "name": "fingerprints-list",
      "kind": "ui-component",
      "source_path": "components/fingerprints/fingerprints-list.tsx"
    },
    {
      "name": "footer",
      "kind": "ui-component",
      "source_path": "components/footer.tsx"
    },
    {
      "name": "info-tooltip",
      "kind": "ui-component",
      "source_path": "components/info-tooltip.tsx"
    },
    {
      "name": "project-keys-dialog",
      "kind": "ui-component",
      "source_path": "components/project-keys-dialog.tsx"
    },
    {
      "name": "real-time-alert-toast",
      "kind": "ui-component",
      "source_path": "components/real-time-alert-toast.tsx"
    },
    {
      "name": "severity-badge",
      "kind": "ui-component",
      "source_path": "components/severity-badge.tsx"
    },
    {
      "name": "sidebar",
      "kind": "ui-component",
      "source_path": "components/sidebar.tsx"
    },
    {
      "name": "stat-card",
      "kind": "ui-component",
      "source_path": "components/stat-card.tsx"
    },
    {
      "name": "theme-provider",
      "kind": "ui-component",
      "source_path": "components/theme-provider.tsx"
    },
    {
      "name": "alert",
      "kind": "ui-component",
      "source_path": "components/ui/alert.tsx"
    },
    {
      "name": "badge",
      "kind": "ui-component",
      "source_path": "components/ui/badge.tsx"
    },
    {
      "name": "breadcrumb",
      "kind": "ui-component",
      "source_path": "components/ui/breadcrumb.tsx"
    },
    {
      "name": "button",
      "kind": "ui-component",
      "source_path": "components/ui/button.tsx"
    },
    {
      "name": "card",
      "kind": "ui-component",
      "source_path": "components/ui/card.tsx"
    },
    {
      "name": "dialog",
      "kind": "ui-component",
      "source_path": "components/ui/dialog.tsx"
    },
    {
      "name": "dropdown-menu",
      "kind": "ui-component",
      "source_path": "components/ui/dropdown-menu.tsx"
    },
    {
      "name": "input",
      "kind": "ui-component",
      "source_path": "components/ui/input.tsx"
    },
    {
      "name": "label",
      "kind": "ui-component",
      "source_path": "components/ui/label.tsx"
    },
    {
      "name": "select",
      "kind": "ui-component",
      "source_path": "components/ui/select.tsx"
    },
    {
      "name": "separator",
      "kind": "ui-component",
      "source_path": "components/ui/separator.tsx"
    },
    {
      "name": "skeleton",
      "kind": "ui-component",
      "source_path": "components/ui/skeleton.tsx"
    },
    {
      "name": "switch",
      "kind": "ui-component",
      "source_path": "components/ui/switch.tsx"
    },
    {
      "name": "table",
      "kind": "ui-component",
      "source_path": "components/ui/table.tsx"
    },
    {
      "name": "tabs",
      "kind": "ui-component",
      "source_path": "components/ui/tabs.tsx"
    },
    {
      "name": "textarea",
      "kind": "ui-component",
      "source_path": "components/ui/textarea.tsx"
    },
    {
      "name": "toast",
      "kind": "ui-component",
      "source_path": "components/ui/toast.tsx"
    },
    {
      "name": "toaster",
      "kind": "ui-component",
      "source_path": "components/ui/toaster.tsx"
    },
    {
      "name": "tooltip",
      "kind": "ui-component",
      "source_path": "components/ui/tooltip.tsx"
    }
  ],
  "data_models": [],
  "database": {
    "databases": [],
    "schemas": [
      {
        "path": "scripts/01-create-schema.sql"
      }
    ],
    "migrations": []
  },
  "tests": [
    {
      "name": "api-health.test.ts",
      "kind": "unit-or-integration",
      "source_path": "__tests__/api-health.test.ts"
    },
    {
      "name": "api-keys.test.ts",
      "kind": "unit-or-integration",
      "source_path": "__tests__/api-keys.test.ts"
    },
    {
      "name": "api.test.ts",
      "kind": "unit-or-integration",
      "source_path": "__tests__/api.test.ts"
    },
    {
      "name": "build-config.test.ts",
      "kind": "unit-or-integration",
      "source_path": "__tests__/build-config.test.ts"
    },
    {
      "name": "components.test.tsx",
      "kind": "unit-or-integration",
      "source_path": "__tests__/components.test.tsx"
    },
    {
      "name": "cron.bench.test.ts",
      "kind": "unit-or-integration",
      "source_path": "__tests__/cron.bench.test.ts"
    },
    {
      "name": "database.test.ts",
      "kind": "unit-or-integration",
      "source_path": "__tests__/database.test.ts"
    },
    {
      "name": "discovery.test.ts",
      "kind": "unit-or-integration",
      "source_path": "__tests__/discovery.test.ts"
    },
    {
      "name": "driftnet-client.test.ts",
      "kind": "unit-or-integration",
      "source_path": "__tests__/driftnet-client.test.ts"
    },
    {
      "name": "e2e.test.ts",
      "kind": "e2e",
      "source_path": "__tests__/e2e.test.ts"
    },
    {
      "name": "error-handler.test.ts",
      "kind": "unit-or-integration",
      "source_path": "__tests__/error-handler.test.ts"
    },
    {
      "name": "hooks.test.ts",
      "kind": "unit-or-integration",
      "source_path": "__tests__/hooks.test.ts"
    },
    {
      "name": "huntio-client.test.ts",
      "kind": "unit-or-integration",
      "source_path": "__tests__/huntio-client.test.ts"
    },
    {
      "name": "ipinfo-client.test.ts",
      "kind": "unit-or-integration",
      "source_path": "__tests__/ipinfo-client.test.ts"
    },
    {
      "name": "ja4-validator.test.ts",
      "kind": "unit-or-integration",
      "source_path": "__tests__/ja4-validator.test.ts"
    },
    {
      "name": "abuseipdb-client.test.ts",
      "kind": "unit-or-integration",
      "source_path": "__tests__/lib/abuseipdb-client.test.ts"
    },
    {
      "name": "crypto.test.ts",
      "kind": "unit-or-integration",
      "source_path": "__tests__/lib/crypto.test.ts"
    },
    {
      "name": "fingerprint-client.test.ts",
      "kind": "unit-or-integration",
      "source_path": "__tests__/lib/fingerprint-client.test.ts"
    },
    {
      "name": "ipinfo-client.test.ts",
      "kind": "unit-or-integration",
      "source_path": "__tests__/lib/ipinfo-client.test.ts"
    },
    {
      "name": "openapi.test.ts",
      "kind": "unit-or-integration",
      "source_path": "__tests__/lib/openapi.test.ts"
    },
    {
      "name": "logger.test.ts",
      "kind": "unit-or-integration",
      "source_path": "__tests__/logger.test.ts"
    },
    {
      "name": "observations-date.test.ts",
      "kind": "unit-or-integration",
      "source_path": "__tests__/observations-date.test.ts"
    },
    {
      "name": "pcap.test.ts",
      "kind": "unit-or-integration",
      "source_path": "__tests__/pcap.test.ts"
    },
    {
      "name": "security_fix.test.ts",
      "kind": "unit-or-integration",
      "source_path": "__tests__/security_fix.test.ts"
    },
    {
      "name": "sensor-data-validation.test.ts",
      "kind": "unit-or-integration",
      "source_path": "__tests__/sensor-data-validation.test.ts"
    },
    {
      "name": "stats.test.ts",
      "kind": "unit-or-integration",
      "source_path": "__tests__/stats.test.ts"
    },
    {
      "name": "utils.test.ts",
      "kind": "unit-or-integration",
      "source_path": "__tests__/utils.test.ts"
    },
    {
      "name": "vercel-integration.test.ts",
      "kind": "unit-or-integration",
      "source_path": "__tests__/vercel-integration.test.ts"
    },
    {
      "name": "webhook_alerts_vulnerability.test.ts",
      "kind": "unit-or-integration",
      "source_path": "__tests__/webhook_alerts_vulnerability.test.ts"
    },
    {
      "name": "route.ts",
      "kind": "unit-or-integration",
      "source_path": "app/api/webhooks/test/route.ts"
    },
    {
      "name": "fix-test.js",
      "kind": "unit-or-integration",
      "source_path": "fix-test.js"
    },
    {
      "name": "playwright.config.ts",
      "kind": "playwright",
      "source_path": "playwright.config.ts"
    },
    {
      "name": "test-async-flow.mjs",
      "kind": "unit-or-integration",
      "source_path": "scripts/test-async-flow.mjs"
    },
    {
      "name": "test_perf.js",
      "kind": "unit-or-integration",
      "source_path": "test_perf.js"
    },
    {
      "name": "test-logger.js",
      "kind": "unit-or-integration",
      "source_path": "test-logger.js"
    },
    {
      "name": "test-script.js",
      "kind": "unit-or-integration",
      "source_path": "test-script.js"
    },
    {
      "name": "atlas-ui.spec.ts",
      "kind": "playwright",
      "source_path": "tests/playwright/atlas-ui.spec.ts"
    }
  ],
  "ci": {
    "workflows": []
  },
  "containers": {
    "dockerfiles": [],
    "compose_files": []
  },
  "env": {
    "example_files": [
      {
        "path": ".env.example"
      }
    ],
    "variables": [
      {
        "name": "ABUSEIPDB_API_KEY",
        "source_paths": [
          ".env.example",
          "lib/config.ts"
        ],
        "likely_secret": true
      },
      {
        "name": "API_KEY",
        "source_paths": [
          "__tests__/sensor-data-validation.test.ts",
          "scripts/test-async-flow.mjs"
        ],
        "likely_secret": true
      },
      {
        "name": "ATLAS_ENV",
        "source_paths": [
          "app/integrate/page.tsx",
          "proxy.ts"
        ],
        "likely_secret": false
      },
      {
        "name": "ATLAS_INGEST_URL",
        "source_paths": [
          "app/integrate/page.tsx",
          "app/integration/page.tsx",
          "proxy.ts"
        ],
        "likely_secret": false
      },
      {
        "name": "ATLAS_PROJECT_ID",
        "source_paths": [
          "app/integrate/page.tsx"
        ],
        "likely_secret": false
      },
      {
        "name": "ATLAS_SAMPLE_RATE",
        "source_paths": [
          "app/integrate/page.tsx",
          "app/integration/page.tsx",
          "proxy.ts"
        ],
        "likely_secret": false
      },
      {
        "name": "ATLAS_SENSOR_NAME",
        "source_paths": [
          "app/integrate/page.tsx",
          "app/integration/page.tsx",
          "proxy.ts"
        ],
        "likely_secret": false
      },
      {
        "name": "ATLAS_TRACE_EXPORT_URL",
        "source_paths": [
          "lib/trace.ts"
        ],
        "likely_secret": false
      },
      {
        "name": "BASE_URL",
        "source_paths": [
          "scripts/benchmark-observations.js",
          "scripts/benchmark-observations.ts",
          "scripts/benchmark-stats.js",
          "scripts/test-async-flow.mjs"
        ],
        "likely_secret": false
      },
      {
        "name": "CRON_SECRET",
        "source_paths": [
          "__tests__/cron.bench.test.ts",
          ".env.example",
          "app/api/cron/daily/route.ts",
          "app/api/cron/enrich/route.ts",
          "app/api/cron/vercel-sync/route.ts",
          "instrumentation.ts"
        ],
        "likely_secret": true
      },
      {
        "name": "DATABASE_URL",
        "source_paths": [
          "__tests__/setup.ts",
          ".env.example",
          "lib/config.ts",
          "lib/db.ts",
          "lib/platform.ts"
        ],
        "likely_secret": true
      },
      {
        "name": "DATABASE_URL_UNPOOLED",
        "source_paths": [
          ".env.example",
          "lib/config.ts"
        ],
        "likely_secret": true
      },
      {
        "name": "DRIFTNET_API_KEY",
        "source_paths": [
          ".env.example",
          "lib/config.ts"
        ],
        "likely_secret": true
      },
      {
        "name": "EDGE_CONFIG",
        "source_paths": [
          "proxy.ts"
        ],
        "likely_secret": false
      },
      {
        "name": "EDGE_CONFIG_URL",
        "source_paths": [
          "app/api/firewall/sync-edge-config/route.ts"
        ],
        "likely_secret": false
      },
      {
        "name": "FEATURE_AUTO_ENRICHMENT",
        "source_paths": [
          "lib/config.ts"
        ],
        "likely_secret": false
      },
      {
        "name": "FEATURE_CHALLENGE_ACTIONS",
        "source_paths": [
          "lib/config.ts"
        ],
        "likely_secret": false
      },
      {
        "name": "FEATURE_DDOS_DETECTION",
        "source_paths": [
          "lib/config.ts"
        ],
        "likely_secret": false
      },
      {
        "name": "FEATURE_REALTIME_ALERTS",
        "source_paths": [
          "lib/config.ts"
        ],
        "likely_secret": false
      },
      {
        "name": "HUNTIO_API_KEY",
        "source_paths": [
          ".env.example",
          "lib/config.ts"
        ],
        "likely_secret": true
      },
      {
        "name": "IPINFO_API_KEY",
        "source_paths": [
          ".env.example",
          "lib/config.ts"
        ],
        "likely_secret": true
      },
      {
        "name": "IPQUALITYSCORE_API_KEY",
        "source_paths": [
          ".env.example"
        ],
        "likely_secret": true
      },
      {
        "name": "JA4DB_CONTRIBUTOR_KEY",
        "source_paths": [
          ".env.example"
        ],
        "likely_secret": true
      },
      {
        "name": "JA4DB_DEV_MODE",
        "source_paths": [
          "lib/config.ts"
        ],
        "likely_secret": false
      },
      {
        "name": "JA4DB_ENV",
        "source_paths": [
          "lib/config.ts"
        ],
        "likely_secret": false
      },
      {
        "name": "JA4DB_INGEST_TOKEN",
        "source_paths": [
          ".env.example"
        ],
        "likely_secret": true
      },
      {
        "name": "JA4DB_INGEST_URL",
        "source_paths": [
          "lib/config.ts"
        ],
        "likely_secret": false
      },
      {
        "name": "JA4DB_MAX_BATCH_SIZE",
        "source_paths": [
          "lib/config.ts"
        ],
        "likely_secret": false
      },
      {
        "name": "JA4DB_N8N_API_KEYS",
        "source_paths": [
          "lib/config.ts"
        ],
        "likely_secret": true
      },
      {
        "name": "JA4DB_RATE_LIMIT",
        "source_paths": [
          "lib/config.ts"
        ],
        "likely_secret": false
      },
      {
        "name": "JA4DB_SAMPLE_RATE",
        "source_paths": [
          "lib/config.ts"
        ],
        "likely_secret": false
      },
      {
        "name": "JA4DB_SENSOR_NAME",
        "source_paths": [
          ".env.example",
          "lib/config.ts"
        ],
        "likely_secret": false
      },
      {
        "name": "JA4DB_WEBHOOK_SECRETS",
        "source_paths": [
          "lib/config.ts"
        ],
        "likely_secret": true
      },
      {
        "name": "LOG_LEVEL",
        "source_paths": [
          "fix-logger-tests.js",
          "lib/config.ts",
          "lib/logger.ts"
        ],
        "likely_secret": false
      },
      {
        "name": "LOG_VERBOSE",
        "source_paths": [
          "lib/config.ts"
        ],
        "likely_secret": false
      },
      {
        "name": "NEXT_PUBLIC_API_URL",
        "source_paths": [
          "__tests__/sensor-data-validation.test.ts",
          "__tests__/utils/server-check.ts",
          "__tests__/vercel-integration.test.ts"
        ],
        "likely_secret": false
      },
      {
        "name": "NEXT_PUBLIC_N8N_WEBHOOK_URL",
        "source_paths": [
          "components/enrich-button.tsx"
        ],
        "likely_secret": false
      },
      {
        "name": "NEXT_PUBLIC_POSTHOG_HOST",
        "source_paths": [
          ".env.example"
        ],
        "likely_secret": false
      },
      {
        "name": "NEXT_PUBLIC_POSTHOG_KEY",
        "source_paths": [
          ".env.example"
        ],
        "likely_secret": true
      },
      {
        "name": "NODE_ENV",
        "source_paths": [
          "__tests__/setup.ts",
          "app/api/ddos/detect/route.ts",
          "app/api/health/route.ts",
          "lib/config.ts",
          "lib/logger.ts"
        ],
        "likely_secret": false
      },
      {
        "name": "PGDATABASE",
        "source_paths": [
          ".env.example"
        ],
        "likely_secret": false
      },
      {
        "name": "PGHOST",
        "source_paths": [
          ".env.example"
        ],
        "likely_secret": false
      },
      {
        "name": "PGHOST_UNPOOLED",
        "source_paths": [
          ".env.example"
        ],
        "likely_secret": false
      },
      {
        "name": "PGPASSWORD",
        "source_paths": [
          ".env.example"
        ],
        "likely_secret": true
      },
      {
        "name": "PGUSER",
        "source_paths": [
          ".env.example"
        ],
        "likely_secret": false
      },
      {
        "name": "PLATPHORM_API_KEY",
        "source_paths": [
          "__tests__/api.test.ts",
          "__tests__/e2e.test.ts",
          "__tests__/setup.ts",
          "app/api/health/route.ts",
          "app/api/ingest/http/route.ts",
          "app/integrate/page.tsx",
          "app/integration/page.tsx",
          "lib/config.ts",
          "lib/platform.ts",
          "lib/trace.ts",
          "proxy.ts",
          "README.md"
        ],
        "likely_secret": true
      },
      {
        "name": "PLAYWRIGHT_BASE_URL",
        "source_paths": [
          "playwright.config.ts"
        ],
        "likely_secret": false
      },
      {
        "name": "PLAYWRIGHT_PORT",
        "source_paths": [
          "playwright.config.ts"
        ],
        "likely_secret": false
      },
      {
        "name": "POSTGRES_DATABASE",
        "source_paths": [
          ".env.example"
        ],
        "likely_secret": false
      },
      {
        "name": "POSTGRES_HOST",
        "source_paths": [
          ".env.example"
        ],
        "likely_secret": false
      },
      {
        "name": "POSTGRES_PASSWORD",
        "source_paths": [
          ".env.example"
        ],
        "likely_secret": true
      },
      {
        "name": "POSTGRES_PRISMA_URL",
        "source_paths": [
          ".env.example"
        ],
        "likely_secret": false
      },
      {
        "name": "POSTGRES_URL",
        "source_paths": [
          ".env.example",
          "lib/config.ts",
          "lib/db.ts",
          "lib/platform.ts"
        ],
        "likely_secret": false
      },
      {
        "name": "POSTGRES_URL_NO_SSL",
        "source_paths": [
          ".env.example"
        ],
        "likely_secret": false
      },
      {
        "name": "POSTGRES_URL_NON_POOLING",
        "source_paths": [
          ".env.example",
          "lib/config.ts"
        ],
        "likely_secret": false
      },
      {
        "name": "POSTGRES_USER",
        "source_paths": [
          ".env.example"
        ],
        "likely_secret": false
      },
      {
        "name": "TEST_BASE_URL",
        "source_paths": [
          "__tests__/api.test.ts",
          "__tests__/e2e.test.ts"
        ],
        "likely_secret": false
      },
      {
        "name": "VERCEL_API_TOKEN",
        "source_paths": [
          ".env.example",
          "app/api/cron/daily/route.ts",
          "app/api/cron/vercel-sync/route.ts",
          "app/api/vercel/projects/route.ts",
          "app/api/vercel/sync-firewall/route.ts"
        ],
        "likely_secret": true
      },
      {
        "name": "VERCEL_EDGE_CONFIG",
        "source_paths": [
          "app/api/firewall/sync-edge-config/route.ts",
          "proxy.ts"
        ],
        "likely_secret": false
      },
      {
        "name": "VERCEL_EDGE_CONFIG_TOKEN",
        "source_paths": [
          "app/api/firewall/sync-edge-config/route.ts"
        ],
        "likely_secret": true
      },
      {
        "name": "VERCEL_ENV",
        "source_paths": [
          "app/api/health/route.ts",
          "app/integrate/page.tsx",
          "lib/logger.ts",
          "proxy.ts"
        ],
        "likely_secret": false
      },
      {
        "name": "VERCEL_GIT_COMMIT_SHA",
        "source_paths": [
          "app/api/health/route.ts",
          "lib/config.ts",
          "lib/logger.ts"
        ],
        "likely_secret": false
      },
      {
        "name": "VERCEL_ORG_ID",
        "source_paths": [
          ".env.example"
        ],
        "likely_secret": false
      },
      {
        "name": "VERCEL_PROJECT_ID",
        "source_paths": [
          ".env.example",
          "app/api/fingerprint/route.ts",
          "lib/config.ts",
          "lib/logger.ts",
          "proxy.ts"
        ],
        "likely_secret": false
      },
      {
        "name": "VERCEL_PROJECT_PRODUCTION_URL",
        "source_paths": [
          "lib/config.ts",
          "proxy.ts"
        ],
        "likely_secret": false
      },
      {
        "name": "VERCEL_REGION",
        "source_paths": [
          "app/api/health/route.ts",
          "lib/config.ts",
          "lib/logger.ts",
          "proxy.ts"
        ],
        "likely_secret": false
      },
      {
        "name": "WEBHOOK_SECRET",
        "source_paths": [
          "__tests__/sensor-data-validation.test.ts"
        ],
        "likely_secret": true
      }
    ]
  },
  "configs": [
    {
      "path": "eslint.config.js"
    },
    {
      "path": "eslint.config.mjs"
    },
    {
      "path": "next.config.mjs"
    },
    {
      "path": "package.json"
    },
    {
      "path": "postcss.config.mjs"
    },
    {
      "path": "tailwind.config.ts"
    },
    {
      "path": "tsconfig.json"
    },
    {
      "path": "vercel.json"
    }
  ],
  "docs": {
    "readme_paths": [
      {
        "path": "README.md"
      }
    ],
    "doc_paths": [
      {
        "path": "docs/DATABASE_DYNAMIC_FIELDS.md"
      },
      {
        "path": "docs/DATABASE_MANAGEMENT.md"
      },
      {
        "path": "docs/DATABASE_MIGRATION_PLAN.md"
      },
      {
        "path": "docs/DEPLOYMENT_CHECKLIST.md"
      },
      {
        "path": "docs/ENRICHMENT_DROPDOWN_GUIDE.md"
      },
      {
        "path": "docs/FAQ.md"
      },
      {
        "path": "docs/FEATURE_GUIDE.md"
      },
      {
        "path": "docs/IMPROVEMENT_PLAN.md"
      },
      {
        "path": "docs/INGEST_SOURCES.md"
      },
      {
        "path": "docs/ja4-standards.md"
      },
      {
        "path": "docs/N8N_INTEGRATION.md"
      },
      {
        "path": "docs/NEXTJS_16_MIGRATION.md"
      },
      {
        "path": "docs/SENSOR_VERIFICATION.md"
      },
      {
        "path": "docs/SYSTEM_STATUS.md"
      },
      {
        "path": "docs/V2.0.0_IMPLEMENTATION_GUIDE.md"
      },
      {
        "path": "docs/V2.0.0_ROADMAP.md"
      },
      {
        "path": "docs/VERCEL_FIREWALL_INTEGRATION.md"
      }
    ],
    "llms_context_paths": [
      {
        "path": "public/llms-index.txt"
      }
    ]
  },
  "discovery_files": {
    "openapi": [],
    "mcp": [
      {
        "path": "app/api/mcp/route.ts"
      }
    ],
    "llms": [
      {
        "path": "public/llms-index.txt"
      }
    ],
    "sitemaps": [],
    "feeds": [],
    "well_known": [
      {
        "path": "app/.well-known/agents.json/route.ts"
      },
      {
        "path": "app/.well-known/ai-plugin.json/route.ts"
      },
      {
        "path": "app/.well-known/mcp.json/route.ts"
      },
      {
        "path": "app/.well-known/security.txt/route.ts"
      },
      {
        "path": "app/.well-known/trust.json/route.ts"
      }
    ],
    "robots": [],
    "manifests": []
  },
  "integrations": [
    {
      "name": "PlatPhorm",
      "confidence": "medium",
      "evidence_paths": [
        "__tests__/api.test.ts",
        "__tests__/e2e.test.ts",
        "__tests__/setup.ts",
        "app/.well-known/agents.json/route.ts",
        "app/.well-known/ai-plugin.json/route.ts",
        "app/.well-known/mcp.json/route.ts",
        "app/admin/page.tsx",
        "app/api/config/route.ts",
        "package.json"
      ]
    },
    {
      "name": "Postgres",
      "confidence": "medium",
      "evidence_paths": [
        "__tests__/setup.ts",
        ".env.example",
        "app/api/mcp/route.ts",
        "app/lookup/page.tsx",
        "DEPLOYMENT.md",
        "docs/DATABASE_DYNAMIC_FIELDS.md",
        "docs/DATABASE_MIGRATION_PLAN.md",
        "docs/DEPLOYMENT_CHECKLIST.md",
        "lib/config.ts",
        "lib/db.ts",
        "lib/platform.ts",
        "package.json",
        "README.md"
      ]
    },
    {
      "name": "Vercel",
      "confidence": "medium",
      "evidence_paths": [
        ".env.example",
        "app/api/cron/daily/route.ts",
        "app/api/cron/vercel-sync/route.ts",
        "app/api/fingerprint/route.ts",
        "app/api/firewall/sync-edge-config/route.ts",
        "app/api/health/route.ts",
        "app/api/vercel/projects/route.ts",
        "app/api/vercel/sync-firewall/route.ts",
        "app/integrate/page.tsx",
        "app/layout.tsx",
        "DEPLOYMENT.md",
        "docs/DATABASE_DYNAMIC_FIELDS.md",
        "docs/DATABASE_MIGRATION_PLAN.md",
        "docs/DEPLOYMENT_CHECKLIST.md",
        "docs/SENSOR_VERIFICATION.md",
        "docs/SYSTEM_STATUS.md",
        "docs/VERCEL_FIREWALL_INTEGRATION.md",
        "INTEGRATION_STATUS.md",
        "lib/config.ts",
        "lib/logger.ts",
        "package-lock.json",
        "package.json",
        "proxy.ts"
      ]
    }
  ],
  "license": {
    "spdx": null,
    "paths": []
  },
  "comments": [
    {
      "kind": "security",
      "source_path": "__tests__/api-health.test.ts",
      "line": 24,
      "text": "it('should return a 200 health status with security metrics', async () => {"
    },
    {
      "kind": "security",
      "source_path": "__tests__/api-health.test.ts",
      "line": 36,
      "text": ".mockResolvedValueOnce([ // security metrics"
    },
    {
      "kind": "security",
      "source_path": "__tests__/api-health.test.ts",
      "line": 50,
      "text": "// Assert new security properties"
    },
    {
      "kind": "security",
      "source_path": "__tests__/api-health.test.ts",
      "line": 51,
      "text": "expect(data.checks.security).toBeDefined();"
    },
    {
      "kind": "security",
      "source_path": "__tests__/api-health.test.ts",
      "line": 52,
      "text": "expect(data.checks.security.activeAlerts24h).toBe(3);"
    },
    {
      "kind": "security",
      "source_path": "__tests__/api-health.test.ts",
      "line": 53,
      "text": "expect(data.checks.security.criticalAlerts).toBe(1);"
    },
    {
      "kind": "security",
      "source_path": "__tests__/api-health.test.ts",
      "line": 54,
      "text": "expect(data.checks.security.activeRules).toBe(5);"
    },
    {
      "kind": "security",
      "source_path": "__tests__/api-health.test.ts",
      "line": 74,
      "text": "it('should still be healthy if security metrics are missing', async () => {"
    },
    {
      "kind": "security",
      "source_path": "__tests__/api-health.test.ts",
      "line": 83,
      "text": ".mockResolvedValueOnce([]); // empty security metrics"
    },
    {
      "kind": "security",
      "source_path": "__tests__/api-health.test.ts",
      "line": 90,
      "text": "expect(data.checks.security).toBeUndefined(); // Fallback handles gracefully"
    },
    {
      "kind": "security",
      "source_path": "__tests__/api.test.ts",
      "line": 1063,
      "text": "describe('Rate Limiting & Security', () => {"
    },
    {
      "kind": "security",
      "source_path": "__tests__/api.test.ts",
      "line": 1081,
      "text": "it('Should include security headers', async () => {"
    },
    {
      "kind": "security",
      "source_path": "__tests__/api.test.ts",
      "line": 1083,
      "text": "// Security headers may not be set in dev mode"
    },
    {
      "kind": "security",
      "source_path": "__tests__/security_fix.test.ts",
      "line": 53,
      "text": "describe('Security Vulnerability Fix: Project ID Override', () => {"
    },
    {
      "kind": "security",
      "source_path": "__tests__/webhook_alerts_vulnerability.test.ts",
      "line": 24,
      "text": "describe('Webhook Alerts Security Fix', () => {"
    },
    {
      "kind": "security",
      "source_path": ".env.example",
      "line": 7,
      "text": "#     whitespace. Vercel's cron security validation rejects env"
    },
    {
      "kind": "security",
      "source_path": ".env.example",
      "line": 44,
      "text": "# Cron Job Security"
    },
    {
      "kind": "unsafe",
      "source_path": ".Jules/bolt.md",
      "line": 24,
      "text": "**Learning:** When attempting to batch process SQL inserts (like in `app/api/ingest/batch/route.ts`), attempting to bypass TypeScript using `(sql as any)(query, values)` is extremely unsafe and prone to runtime failures in environments usin"
    },
    {
      "kind": "unsafe",
      "source_path": ".Jules/bolt.md",
      "line": 25,
      "text": "**Action:** Always prefer mapping an array of tagged template literals and resolving them with `Promise.allSettled()` for bulk operations over type-unsafe cast functions."
    },
    {
      "kind": "security",
      "source_path": ".Jules/bolt.md",
      "line": 40,
      "text": "**Learning:** When a single multi-row `INSERT` statement fails (such as hitting a parameterized parameter limit or an internal database error), falling back to individual sequential `INSERT` statements using a `for...of` loop creates an N+1"
    },
    {
      "kind": "security",
      "source_path": ".Jules/sentinel.md",
      "line": 2,
      "text": "**Vulnerability:** The `/api/soc/dashboard/route.ts` endpoint, which exposes sensitive security alerts, threat timelines, and firewall statistics for all monitored projects, was completely unauthenticated. Anyone could query this endpoint a"
    },
    {
      "kind": "security",
      "source_path": "app/.well-known/ai-plugin.json/route.ts",
      "line": 12,
      "text": "\"Use Atlas for public-safe fingerprint lookup, observation summaries, topology correlation, and protected security operations when PLATPHORM_API_KEY is supplied.\","
    },
    {
      "kind": "security",
      "source_path": "app/.well-known/ai-plugin.json/route.ts",
      "line": 23,
      "text": "contact_email: \"security@platphormnews.com\","
    },
    {
      "kind": "security",
      "source_path": "app/.well-known/security.txt/route.ts",
      "line": 5,
      "text": "\"Contact: mailto:security@platphormnews.com\","
    },
    {
      "kind": "security",
      "source_path": "app/.well-known/security.txt/route.ts",
      "line": 7,
      "text": "`Canonical: ${ATLAS_BASE_URL}/.well-known/security.txt`,"
    },
    {
      "kind": "security",
      "source_path": "app/admin/page.tsx",
      "line": 281,
      "text": "<TabsTrigger value=\"security\" className=\"text-xs md:text-sm\">"
    },
    {
      "kind": "security",
      "source_path": "app/admin/page.tsx",
      "line": 283,
      "text": "Security"
    },
    {
      "kind": "security",
      "source_path": "app/admin/page.tsx",
      "line": 458,
      "text": "<InfoTooltip content=\"Webhooks send real-time events to external automation platforms like n8n, Zapier, or custom endpoints. Configure which events trigger webhooks (enrichment complete, threat detected, etc.) to build automated security wo"
    },
    {
      "kind": "security",
      "source_path": "app/admin/page.tsx",
      "line": 610,
      "text": "<TabsContent value=\"security\" className=\"space-y-6 mt-6\">"
    },
    {
      "kind": "security",
      "source_path": "app/api/ai-plugin.json/route.ts",
      "line": 19,
      "text": "contact_email: 'security@platphormnews.com',"
    },
    {
      "kind": "security",
      "source_path": "app/api/health/route.ts",
      "line": 45,
      "text": "security?: {"
    },
    {
      "kind": "security",
      "source_path": "app/api/health/route.ts",
      "line": 131,
      "text": "// Security Metrics"
    },
    {
      "kind": "security",
      "source_path": "app/api/health/route.ts",
      "line": 139,
      "text": "healthStatus.checks.security = {"
    },
    {
      "kind": "security",
      "source_path": "app/api/ingest/syslog/route.ts",
      "line": 7,
      "text": "// Syslog format for network devices and security appliances"
    },
    {
      "kind": "security",
      "source_path": "app/api/mcp/route.ts",
      "line": 43,
      "text": "description: \"JSON-RPC 2.0 endpoint for Atlas fingerprint intelligence, observations, topology, and security operations.\","
    },
    {
      "kind": "security",
      "source_path": "app/dashboard/page.tsx",
      "line": 304,
      "text": "<CardDescription>Deep dive into security metrics and patterns</CardDescription>"
    },
    {
      "kind": "security",
      "source_path": "app/dashboard/page.tsx",
      "line": 674,
      "text": "Security Operations"
    },
    {
      "kind": "security",
      "source_path": "app/integrate/page.tsx",
      "line": 632,
      "text": "Use the Atlas REST API from Python scripts or security automation:"
    },
    {
      "kind": "security",
      "source_path": "app/integration/page.tsx",
      "line": 194,
      "text": "label: 'Internal Security Scanner',"
    },
    {
      "kind": "security",
      "source_path": "app/integration/page.tsx",
      "line": 238,
      "text": "<p>1. Go to Project Settings → Security</p>"
    },
    {
      "kind": "security",
      "source_path": "app/layout.tsx",
      "line": 40,
      "text": "\"security\","
    },
    {
      "kind": "security",
      "source_path": "app/page.tsx",
      "line": 319,
      "text": "<CardDescription>Deep dive into security metrics and patterns</CardDescription>"
    },
    {
      "kind": "security",
      "source_path": "app/page.tsx",
      "line": 700,
      "text": "Security Operations"
    },
    {
      "kind": "security",
      "source_path": "app/projects/page.tsx",
      "line": 275,
      "text": "<InfoTooltip content=\"Connect Vercel projects to Platphorm Atlas to monitor JA4 fingerprints, track security threats, and analyze traffic patterns. Each project shows real-time observation counts and threat levels.\" />"
    },
    {
      "kind": "security",
      "source_path": "app/projects/page.tsx",
      "line": 438,
      "text": "Start monitoring your Vercel projects for security threats by adding your first project."
    },
    {
      "kind": "security",
      "source_path": "app/soc/alerts/[id]/page.tsx",
      "line": 506,
      "text": "<CardDescription>All security responses taken for this alert</CardDescription>"
    },
    {
      "kind": "security",
      "source_path": "app/soc/alerts/page.tsx",
      "line": 135,
      "text": "Security Alerts"
    },
    {
      "kind": "security",
      "source_path": "app/soc/firewall/new/page.tsx",
      "line": 85,
      "text": "Define a new security policy to protect your infrastructure"
    },
    {
      "kind": "security",
      "source_path": "app/soc/firewall/page.tsx",
      "line": 152,
      "text": "Manage security policies and automated threat responses"
    },
    {
      "kind": "security",
      "source_path": "app/soc/loading.tsx",
      "line": 6,
      "text": "<p className=\"mt-4 text-muted-foreground\">Loading Security Operations Center...</p>"
    },
    {
      "kind": "security",
      "source_path": "app/soc/page.tsx",
      "line": 129,
      "text": "<div className=\"text-center text-muted-foreground\">Loading Security Operations Center...</div>"
    },
    {
      "kind": "security",
      "source_path": "app/soc/page.tsx",
      "line": 146,
      "text": "Security Operations Center"
    },
    {
      "kind": "security",
      "source_path": "app/soc/page.tsx",
      "line": 152,
      "text": "<InfoTooltip content=\"The SOC dashboard provides real-time visibility into high-severity threats, active security alerts, and firewall protection status across all monitored projects. Auto-refreshes every 15 seconds.\" />"
    },
    {
      "kind": "security",
      "source_path": "app/soc/page.tsx",
      "line": 377,
      "text": "<CardDescription>Active security policies and protections</CardDescription>"
    },
    {
      "kind": "security",
      "source_path": "DEPLOYMENT.md",
      "line": 12,
      "text": "- [x] Security headers implemented"
    },
    {
      "kind": "security",
      "source_path": "DEPLOYMENT.md",
      "line": 49,
      "text": "3. **Security**"
    },
    {
      "kind": "security",
      "source_path": "DEPLOYMENT.md",
      "line": 52,
      "text": "- Confirm security headers are present"
    },
    {
      "kind": "security",
      "source_path": "docs/DATABASE_MANAGEMENT.md",
      "line": 50,
      "text": "- Row-Level Security (RLS) is enforced at the database level"
    },
    {
      "kind": "security",
      "source_path": "docs/DEPLOYMENT_CHECKLIST.md",
      "line": 35,
      "text": "- [x] SOC - Security operations center"
    },
    {
      "kind": "security",
      "source_path": "docs/ENRICHMENT_DROPDOWN_GUIDE.md",
      "line": 173,
      "text": "4. **API Key Security**"
    },
    {
      "kind": "security",
      "source_path": "docs/FAQ.md",
      "line": 3,
      "text": "## System & Security"
    },
    {
      "kind": "security",
      "source_path": "docs/FAQ.md",
      "line": 9,
      "text": "The `/api/health` endpoint exposes a real-time system health payload formatted as JSON. It checks database connectivity and latency, calculates active ingestion counts over 24h, tracks valid vs invalid fingerprints, and surfaces critical op"
    },
    {
      "kind": "security",
      "source_path": "docs/FAQ.md",
      "line": 11,
      "text": "### What security metrics does the health API track?"
    },
    {
      "kind": "security",
      "source_path": "docs/FAQ.md",
      "line": 12,
      "text": "The `healthStatus.checks.security` object reports:"
    },
    {
      "kind": "security",
      "source_path": "docs/FAQ.md",
      "line": 13,
      "text": "- `activeAlerts24h`: Unresolved security alerts triggered in the last 24 hours."
    },
    {
      "kind": "security",
      "source_path": "docs/FEATURE_GUIDE.md",
      "line": 22,
      "text": "Monitor security events across multiple Vercel projects from a unified dashboard."
    },
    {
      "kind": "security",
      "source_path": "docs/FEATURE_GUIDE.md",
      "line": 97,
      "text": "### Security Operations Center (SOC)"
    },
    {
      "kind": "security",
      "source_path": "docs/FEATURE_GUIDE.md",
      "line": 260,
      "text": "- `alert.created` - New security alert"
    },
    {
      "kind": "security",
      "source_path": "docs/FEATURE_GUIDE.md",
      "line": 316,
      "text": "### Security Settings"
    },
    {
      "kind": "security",
      "source_path": "docs/FEATURE_GUIDE.md",
      "line": 476,
      "text": "### Security"
    },
    {
      "kind": "security",
      "source_path": "docs/FEATURE_GUIDE.md",
      "line": 546,
      "text": "**Platphorm Atlas v1.0.0** - Built with security in mind. Powered by JA4 and Vercel."
    },
    {
      "kind": "security",
      "source_path": "docs/IMPROVEMENT_PLAN.md",
      "line": 3,
      "text": "This document outlines the strategic roadmap for enhancing Vercel Sentinel's security, scalability, and integration capabilities. The immediate focus is on improving ingestion security and simplifying user onboarding."
    },
    {
      "kind": "security",
      "source_path": "docs/IMPROVEMENT_PLAN.md",
      "line": 5,
      "text": "## Phase 1: Ingestion Security & Onboarding (Current Focus)"
    },
    {
      "kind": "security",
      "source_path": "docs/IMPROVEMENT_PLAN.md",
      "line": 32,
      "text": "## Phase 2: Enhanced Security & RBAC (Future)"
    },
    {
      "kind": "security",
      "source_path": "docs/IMPROVEMENT_PLAN.md",
      "line": 35,
      "text": "Implement fine-grained access control and advanced security features for enterprise deployments."
    },
    {
      "kind": "security",
      "source_path": "docs/IMPROVEMENT_PLAN.md",
      "line": 43,
      "text": "2.  **Advanced Ingest Security**:"
    },
    {
      "kind": "deprecated",
      "source_path": "docs/INGEST_SOURCES.md",
      "line": 10,
      "text": "| `/api/ingest/http` | JSON | Legacy HTTP middleware integration (deprecated, use `/api/ingest`) |"
    },
    {
      "kind": "deprecated",
      "source_path": "docs/INGEST_SOURCES.md",
      "line": 38,
      "text": "# Legacy webhook secrets (if using deprecated endpoints)"
    },
    {
      "kind": "deprecated",
      "source_path": "docs/INGEST_SOURCES.md",
      "line": 86,
      "text": "### HTTP Ingest (`/api/ingest/http`) - Deprecated"
    },
    {
      "kind": "security",
      "source_path": "docs/ja4-standards.md",
      "line": 7,
      "text": "JA4 is a suite of modular, easy-to-use network fingerprints for multiple protocols that are both human and machine readable, facilitating threat hunting and security analysis."
    },
    {
      "kind": "security",
      "source_path": "docs/N8N_INTEGRATION.md",
      "line": 85,
      "text": "Triggered when a new security alert is generated."
    },
    {
      "kind": "security",
      "source_path": "docs/N8N_INTEGRATION.md",
      "line": 151,
      "text": "\"label\": \"Internal Security Scanner\","
    },
    {
      "kind": "security",
      "source_path": "docs/N8N_INTEGRATION.md",
      "line": 154,
      "text": "\"category\": \"Security Tool\","
    },
    {
      "kind": "security",
      "source_path": "docs/N8N_INTEGRATION.md",
      "line": 311,
      "text": "Project: Security"
    },
    {
      "kind": "security",
      "source_path": "docs/N8N_INTEGRATION.md",
      "line": 334,
      "text": "Case: severity=\"high\" → [Slack: #security]"
    },
    {
      "kind": "security",
      "source_path": "docs/N8N_INTEGRATION.md",
      "line": 366,
      "text": "## Security Best Practices"
    },
    {
      "kind": "security",
      "source_path": "docs/N8N_INTEGRATION.md",
      "line": 492,
      "text": "\"channel\": \"#security-alerts\","
    },
    {
      "kind": "security",
      "source_path": "docs/SYSTEM_STATUS.md",
      "line": 211,
      "text": "- `GET /api/health` - System health check (now includes real-time security threat metrics)"
    },
    {
      "kind": "todo",
      "source_path": "docs/SYSTEM_STATUS.md",
      "line": 272,
      "text": "6. ⚠️ **TODO:** Add `VERCEL_API_TOKEN` to production environment"
    },
    {
      "kind": "todo",
      "source_path": "docs/SYSTEM_STATUS.md",
      "line": 274,
      "text": "8. ⚠️ **TODO:** Debug sensors API error"
    },
    {
      "kind": "todo",
      "source_path": "docs/SYSTEM_STATUS.md",
      "line": 275,
      "text": "9. ⚠️ **TODO:** Deploy changes to production"
    },
    {
      "kind": "security",
      "source_path": "docs/V2.0.0_ROADMAP.md",
      "line": 300,
      "text": "### Phase 5: Security & Access Control (Weeks 9-10)"
    },
    {
      "kind": "security",
      "source_path": "docs/V2.0.0_ROADMAP.md",
      "line": 302,
      "text": "**Goal:** Production-ready security"
    },
    {
      "kind": "security",
      "source_path": "docs/V2.0.0_ROADMAP.md",
      "line": 313,
      "text": "- [ ] Security audit"
    },
    {
      "kind": "security",
      "source_path": "docs/V2.0.0_ROADMAP.md",
      "line": 335,
      "text": "### B. Security Requirements"
    },
    {
      "kind": "security",
      "source_path": "docs/V2.0.0_ROADMAP.md",
      "line": 372,
      "text": "4. **Security Impact**"
    },
    {
      "kind": "security",
      "source_path": "docs/V2.0.0_ROADMAP.md",
      "line": 395,
      "text": "### Security Documentation"
    },
    {
      "kind": "security",
      "source_path": "docs/V2.0.0_ROADMAP.md",
      "line": 396,
      "text": "1. Security Model"
    },
    {
      "kind": "security",
      "source_path": "docs/V2.0.0_ROADMAP.md",
      "line": 456,
      "text": "### Security Tests"
    },
    {
      "kind": "security",
      "source_path": "docs/V2.0.0_ROADMAP.md",
      "line": 503,
      "text": "- Regular security updates"
    },
    {
      "kind": "security",
      "source_path": "docs/V2.0.0_ROADMAP.md",
      "line": 512,
      "text": "Platphorm Atlas v2.0.0 represents a comprehensive evolution from a basic observation platform to a full-featured threat intelligence and DDoS protection system, fully compliant with JA4 standards and Vercel Firewall concepts. This roadmap e"
    },
    {
      "kind": "security",
      "source_path": "docs/VERCEL_FIREWALL_INTEGRATION.md",
      "line": 223,
      "text": "- Go to Vercel Dashboard → Project → Settings → Security"
    },
    {
      "kind": "security",
      "source_path": "lib/api-keys.ts",
      "line": 81,
      "text": "// We use SHA-256 for speed and sufficient security for high-volume ingest keys"
    },
    {
      "kind": "security",
      "source_path": "lib/discovery.ts",
      "line": 26,
      "text": "\"/.well-known/security.txt\","
    },
    {
      "kind": "security",
      "source_path": "lib/discovery.ts",
      "line": 203,
      "text": "\"Atlas is the PlatPhormNews fingerprint intelligence and topology layer for ingesting observations, correlating signals, mapping infrastructure, and turning public-safe security telemetry into trace-linked action.\","
    },
    {
      "kind": "security",
      "source_path": "lib/discovery.ts",
      "line": 341,
      "text": "<description>Public-safe fingerprint intelligence, topology, and security telemetry updates.</description>"
    },
    {
      "kind": "security",
      "source_path": "lib/discovery.ts",
      "line": 409,
      "text": "securityContact: \"security@platphormnews.com\","
    },
    {
      "kind": "security",
      "source_path": "lib/discovery.ts",
      "line": 411,
      "text": "\"Web JA4 intelligence exploration, public-safe fingerprint lookup, Vercel security metadata, trusted-domain discovery, standard route compliance, trace-linked observation ingestion, and MCP security tooling discovery are intentionally suppo"
    },
    {
      "kind": "deprecated",
      "source_path": "lib/fingerprint-client.ts",
      "line": 216,
      "text": "// Get plugins (deprecated but still useful)"
    },
    {
      "kind": "security",
      "source_path": "lib/openapi.ts",
      "line": 14,
      "text": "Real-time fingerprint observation, Vercel security telemetry, topology, and threat intelligence platform."
    },
    {
      "kind": "security",
      "source_path": "lib/openapi.ts",
      "line": 115,
      "text": "description: \"Security alert management and feeds\","
    },
    {
      "kind": "security",
      "source_path": "lib/openapi.ts",
      "line": 143,
      "text": "security: [{ bearerAuth: [] }, { platphormApiKey: [] }],"
    },
    {
      "kind": "security",
      "source_path": "lib/openapi.ts",
      "line": 394,
      "text": "security: [{ bearerAuth: [] }, { platphormApiKey: [] }],"
    },
    {
      "kind": "security",
      "source_path": "lib/openapi.ts",
      "line": 659,
      "text": "security: [{ bearerAuth: [] }, { platphormApiKey: [] }],"
    },
    {
      "kind": "security",
      "source_path": "lib/openapi.ts",
      "line": 725,
      "text": "security: [{ bearerAuth: [] }, { platphormApiKey: [] }],"
    },
    {
      "kind": "security",
      "source_path": "lib/openapi.ts",
      "line": 797,
      "text": "security: [{ bearerAuth: [] }, { platphormApiKey: [] }],"
    },
    {
      "kind": "security",
      "source_path": "lib/openapi.ts",
      "line": 878,
      "text": "description: \"Returns security alerts with optional filtering by status and severity.\","
    },
    {
      "kind": "security",
      "source_path": "lib/openapi.ts",
      "line": 922,
      "text": "description: \"Create a new security alert.\","
    },
    {
      "kind": "security",
      "source_path": "lib/openapi.ts",
      "line": 924,
      "text": "security: [{ bearerAuth: [] }, { platphormApiKey: [] }],"
    },
    {
      "kind": "security",
      "source_path": "lib/openapi.ts",
      "line": 996,
      "text": "security: [{ bearerAuth: [] }, { platphormApiKey: [] }],"
    },
    {
      "kind": "security",
      "source_path": "lib/openapi.ts",
      "line": 1065,
      "text": "security: [{ bearerAuth: [] }, { platphormApiKey: [] }],"
    },
    {
      "kind": "security",
      "source_path": "public/humans.txt",
      "line": 13,
      "text": "To the open-source community, JA4 standard maintainers, and security researchers worldwide."
    },
    {
      "kind": "security",
      "source_path": "public/manifest.json",
      "line": 30,
      "text": "\"categories\": [\"security\", \"productivity\", \"utilities\", \"threat-intelligence\"],"
    },
    {
      "kind": "security",
      "source_path": "README.md",
      "line": 3,
      "text": "A comprehensive threat intelligence platform for real-time JA4 fingerprint analysis, threat attribution, and security monitoring."
    },
    {
      "kind": "security",
      "source_path": "README.md",
      "line": 143,
      "text": "- **Security**: CSP headers, rate limiting, token authentication"
    },
    {
      "kind": "security",
      "source_path": "README.md",
      "line": 195,
      "text": "## Security"
    },
    {
      "kind": "security",
      "source_path": "ROADMAP.md",
      "line": 14,
      "text": "- [ ] PWA offline support for on-prem security analysts reviewing historical data."
    },
    {
      "kind": "security",
      "source_path": "ROADMAP.md",
      "line": 28,
      "text": "- **Security:** Strict validation, zero-trust policies, and regular dependency vulnerability scanning."
    },
    {
      "kind": "security",
      "source_path": "scripts/04-add-firewall-and-alerts.sql",
      "line": 1,
      "text": "-- Create firewall rules table for managing security policies"
    },
    {
      "kind": "security",
      "source_path": "scripts/12-enhance-dynamic-fields.sql",
      "line": 127,
      "text": "-- Grant permissions (adjust as needed for your security model)"
    },
    {
      "kind": "todo",
      "source_path": "scripts/16-seed-npaas-project.sql",
      "line": 2,
      "text": "-- Satisfies TODO in docs/SYSTEM_STATUS.md to complete project setup"
    },
    {
      "kind": "deprecated",
      "source_path": "TESTING.md",
      "line": 215,
      "text": "## Legacy Tests (Deprecated)"
    },
    {
      "kind": "security",
      "source_path": "tests/playwright/atlas-ui.spec.ts",
      "line": 6,
      "text": "{ path: \"/soc\", heading: \"Security Operations Center\" },"
    },
    {
      "kind": "security",
      "source_path": "vercel.json",
      "line": 22,
      "text": "{ \"key\": \"Strict-Transport-Security\", \"value\": \"max-age=31536000; includeSubDomains\" }"
    }
  ],
  "security": {
    "secret_risks": [],
    "unsafe_patterns": [
      {
        "name": "dangerously-set-html",
        "confidence": "medium",
        "evidence_paths": [
          "app/docs/page.tsx"
        ]
      },
      {
        "name": "sql-injection-review-needed",
        "confidence": "medium",
        "evidence_paths": [
          ".Jules/bolt.md",
          "app/sensors/page.tsx",
          "lib/discovery.ts"
        ]
      },
      {
        "name": "ssrf-review-needed",
        "confidence": "medium",
        "evidence_paths": [
          "app/api/mcp/route.ts",
          "app/soc/page.tsx",
          "scripts/benchmark-observations.js",
          "scripts/benchmark-observations.ts",
          "scripts/benchmark-stats.js"
        ]
      }
    ],
    "sensitive_data_indicators": [
      {
        "name": "api_key",
        "confidence": "medium",
        "evidence_paths": [
          "__tests__/api-keys.test.ts",
          "__tests__/api.test.ts",
          "__tests__/e2e.test.ts",
          "__tests__/security_fix.test.ts",
          "__tests__/sensor-data-validation.test.ts",
          "__tests__/setup.ts",
          ".env.example",
          "app/.well-known/agents.json/route.ts",
          "app/.well-known/ai-plugin.json/route.ts",
          "app/.well-known/mcp.json/route.ts",
          "app/admin/page.tsx",
          "app/api/config/route.ts",
          "app/api/health/route.ts",
          "app/api/ingest/batch/route.ts",
          "app/api/ingest/http/route.ts",
          "app/api/ingest/n8n/route.ts",
          "app/api/ingest/suricata/route.ts",
          "app/api/ingest/syslog/route.ts",
          "app/api/ingest/webhook/route.ts",
          "app/api/ingest/zeek/route.ts"
        ]
      },
      {
        "name": "card",
        "confidence": "medium",
        "evidence_paths": [
          "__tests__/components.test.tsx",
          "app/actors/page.tsx",
          "app/admin/page.tsx",
          "app/campaigns/page.tsx",
          "app/dashboard/page.tsx",
          "app/docs/page.tsx",
          "app/faq/page.tsx",
          "app/fingerprints/[id]/page.tsx",
          "app/globals.css",
          "app/import/page.tsx",
          "app/infrastructure/page.tsx",
          "app/integrate/page.tsx",
          "app/integration/page.tsx",
          "app/layout.tsx",
          "app/lookup/page.tsx",
          "app/observations/page.tsx",
          "app/page.tsx",
          "app/projects/page.tsx",
          "app/sensors/page.tsx",
          "app/soc/alerts/[id]/page.tsx"
        ]
      },
      {
        "name": "email",
        "confidence": "medium",
        "evidence_paths": [
          "app/.well-known/ai-plugin.json/route.ts",
          "app/api/ai-plugin.json/route.ts",
          "components/footer.tsx",
          "docs/N8N_INTEGRATION.md",
          "docs/V2.0.0_ROADMAP.md"
        ]
      },
      {
        "name": "financial",
        "confidence": "medium",
        "evidence_paths": [
          "scripts/02-seed-sample-data.sql"
        ]
      },
      {
        "name": "fingerprint",
        "confidence": "medium",
        "evidence_paths": [
          "__tests__/api.test.ts",
          "__tests__/components.test.tsx",
          "__tests__/database.test.ts",
          "__tests__/driftnet-client.test.ts",
          "__tests__/e2e.test.ts",
          "__tests__/error-handler.test.ts",
          "__tests__/huntio-client.test.ts",
          "__tests__/ja4-validator.test.ts",
          "__tests__/lib/fingerprint-client.test.ts",
          "__tests__/logger.test.ts",
          "__tests__/security_fix.test.ts",
          "__tests__/sensor-data-validation.test.ts",
          "__tests__/stats.test.ts",
          "__tests__/utils.test.ts",
          "__tests__/vercel-integration.test.ts",
          ".Jules/bolt.md",
          ".Jules/palette.md",
          "app/.well-known/agents.json/route.ts",
          "app/.well-known/ai-plugin.json/route.ts",
          "app/admin/page.tsx"
        ]
      },
      {
        "name": "health",
        "confidence": "medium",
        "evidence_paths": [
          "__tests__/api-health.test.ts",
          "__tests__/api.test.ts",
          "__tests__/components.test.tsx",
          "__tests__/driftnet-client.test.ts",
          "__tests__/e2e.test.ts",
          "__tests__/huntio-client.test.ts",
          "__tests__/ipinfo-client.test.ts",
          "__tests__/lib/abuseipdb-client.test.ts",
          "__tests__/lib/ipinfo-client.test.ts",
          "__tests__/utils/server-check.ts",
          "__tests__/vercel-integration.test.ts",
          "app/api/config/route.ts",
          "app/api/health/route.ts",
          "app/api/v1/health/route.ts",
          "app/docs/page.tsx",
          "components/sidebar.tsx",
          "docs/DATABASE_DYNAMIC_FIELDS.md",
          "docs/DATABASE_MIGRATION_PLAN.md",
          "docs/DEPLOYMENT_CHECKLIST.md",
          "docs/ENRICHMENT_DROPDOWN_GUIDE.md"
        ]
      },
      {
        "name": "ip address",
        "confidence": "medium",
        "evidence_paths": [
          "__tests__/utils.test.ts",
          "__tests__/vercel-integration.test.ts",
          "app/api/ai-plugin.json/route.ts",
          "app/api/enrich/route.ts",
          "app/api/ingest/syslog/route.ts",
          "app/infrastructure/page.tsx",
          "app/lookup/page.tsx",
          "app/observations/page.tsx",
          "app/soc/alerts/[id]/page.tsx",
          "app/soc/page.tsx",
          "components/enrich-button.tsx",
          "docs/DATABASE_DYNAMIC_FIELDS.md",
          "docs/DATABASE_MIGRATION_PLAN.md",
          "docs/FEATURE_GUIDE.md",
          "docs/N8N_INTEGRATION.md",
          "lib/discovery.ts",
          "lib/openapi.ts",
          "scripts/07-feature-toggles.sql",
          "scripts/09-seed-enrichment-sources.sql",
          "scripts/12-enhance-dynamic-fields.sql"
        ]
      },
      {
        "name": "location",
        "confidence": "medium",
        "evidence_paths": [
          "__tests__/database.test.ts",
          "app/admin/page.tsx",
          "app/api/sensors/[id]/route.ts",
          "app/infrastructure/page.tsx",
          "app/lookup/page.tsx",
          "app/projects/page.tsx",
          "components/enrich-button.tsx",
          "components/enrich-dropdown.tsx",
          "docs/DATABASE_DYNAMIC_FIELDS.md",
          "docs/DATABASE_MIGRATION_PLAN.md",
          "docs/ENRICHMENT_DROPDOWN_GUIDE.md",
          "docs/FEATURE_GUIDE.md",
          "docs/SYSTEM_STATUS.md",
          "public/humans.txt",
          "scripts/01-create-schema.sql",
          "scripts/07-feature-toggles.sql",
          "scripts/09-seed-enrichment-sources.sql",
          "scripts/12-enhance-dynamic-fields.sql",
          "scripts/15-add-sensors-table.sql"
        ]
      },
      {
        "name": "oauth",
        "confidence": "medium",
        "evidence_paths": [
          "docs/V2.0.0_ROADMAP.md"
        ]
      },
      {
        "name": "password",
        "confidence": "medium",
        "evidence_paths": [
          ".env.example",
          "app/admin/page.tsx"
        ]
      },
      {
        "name": "pii",
        "confidence": "medium",
        "evidence_paths": [
          "package-lock.json"
        ]
      },
      {
        "name": "secret-like environment variables",
        "confidence": "medium",
        "evidence_paths": [
          "package.json"
        ]
      },
      {
        "name": "session_token",
        "confidence": "medium",
        "evidence_paths": [
          "docs/V2.0.0_ROADMAP.md"
        ]
      },
      {
        "name": "token",
        "confidence": "medium",
        "evidence_paths": [
          "__tests__/api.test.ts",
          "__tests__/e2e.test.ts",
          "__tests__/ipinfo-client.test.ts",
          "__tests__/lib/ipinfo-client.test.ts",
          "__tests__/security_fix.test.ts",
          "__tests__/setup.ts",
          ".env.example",
          "app/.well-known/ai-plugin.json/route.ts",
          "app/admin/page.tsx",
          "app/api/cron/daily/route.ts",
          "app/api/cron/vercel-sync/route.ts",
          "app/api/firewall/sync-edge-config/route.ts",
          "app/api/vercel/projects/route.ts",
          "app/api/vercel/sync-firewall/route.ts",
          "app/integrate/page.tsx",
          "app/integration/page.tsx",
          "DEPLOYMENT.md",
          "docs/DATABASE_DYNAMIC_FIELDS.md",
          "docs/DATABASE_MIGRATION_PLAN.md",
          "docs/FEATURE_GUIDE.md"
        ]
      },
      {
        "name": "x-vercel-ja4-digest",
        "confidence": "medium",
        "evidence_paths": [
          "__tests__/logger.test.ts",
          "app/api/cron/daily/route.ts",
          "app/api/cron/vercel-sync/route.ts",
          "app/api/vercel/sync-firewall/route.ts",
          "app/integrate/page.tsx",
          "app/integration/page.tsx",
          "docs/V2.0.0_IMPLEMENTATION_GUIDE.md",
          "docs/V2.0.0_ROADMAP.md",
          "docs/VERCEL_FIREWALL_INTEGRATION.md",
          "lib/logger.ts",
          "proxy.ts",
          "README.md",
          "scripts/benchmark-vercel-sync.js"
        ]
      }
    ]
  },
  "generated_at": "2026-05-16T16:44:21.863Z"
}
