{
  "schema_version": "1.0.0",
  "scanner": {
    "name": "global-capability-catalog",
    "version": "0.1.0"
  },
  "repo": {
    "id": "github-recent__mbarbine__platphorm-browserops",
    "name": "mbarbine__platphorm-browserops",
    "path": "/Users/bwm.barbinewarnermichael/Documents/github/repositories/github-recent/mbarbine__platphorm-browserops",
    "relative_path": "github-recent/mbarbine__platphorm-browserops",
    "remote_url": "git@github.com:mbarbine/platphorm-browserops.git",
    "default_branch": "main",
    "current_commit": "b29d28134826016857b1013f08f6ca00a6e16ee0"
  },
  "languages": [
    {
      "language": "JSON",
      "files": 5,
      "bytes": 291678
    },
    {
      "language": "TypeScript",
      "files": 144,
      "bytes": 242957
    },
    {
      "language": "YAML",
      "files": 1,
      "bytes": 174011
    },
    {
      "language": "SQL",
      "files": 1,
      "bytes": 20264
    },
    {
      "language": "Markdown",
      "files": 9,
      "bytes": 17278
    },
    {
      "language": "CSS",
      "files": 1,
      "bytes": 11694
    },
    {
      "language": "JavaScript",
      "files": 5,
      "bytes": 8782
    }
  ],
  "frameworks": [
    {
      "name": "Drizzle ORM",
      "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"
      ]
    },
    {
      "name": "Vitest",
      "confidence": "high",
      "evidence_paths": [
        "package.json"
      ]
    }
  ],
  "packages": {
    "package_manager": "pnpm",
    "manifests": [
      {
        "path": "package.json",
        "name": "browserops-platphormnews",
        "version": "0.1.0",
        "scripts": {
          "dev": "next dev --turbopack",
          "build": "next build",
          "start": "next start",
          "lint": "next lint",
          "typecheck": "tsc --noEmit",
          "test": "vitest run",
          "test:watch": "vitest",
          "test:e2e": "playwright test",
          "db:generate": "drizzle-kit generate",
          "db:migrate": "drizzle-kit migrate",
          "db:push": "drizzle-kit push",
          "seed": "tsx scripts/seed.ts"
        },
        "dependencies": {
          "@ai-sdk/openai": "^1.3.22",
          "@neondatabase/serverless": "^0.10.4",
          "@radix-ui/react-avatar": "^1.1.2",
          "@radix-ui/react-dialog": "^1.1.4",
          "@radix-ui/react-dropdown-menu": "^2.1.4",
          "@radix-ui/react-popover": "^1.1.4",
          "@radix-ui/react-progress": "^1.1.1",
          "@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-slot": "^1.1.1",
          "@radix-ui/react-tabs": "^1.1.2",
          "@radix-ui/react-tooltip": "^1.1.6",
          "@vercel/blob": "^0.27.0",
          "@vercel/edge-config": "^1.4.0",
          "@xyflow/react": "^12.5.3",
          "ai": "^4.3.16",
          "class-variance-authority": "^0.7.1",
          "clsx": "^2.1.1",
          "date-fns": "^4.1.0",
          "drizzle-orm": "^0.44.2",
          "framer-motion": "^11.15.0",
          "lucide-react": "^0.468.0",
          "next": "^16.0.0",
          "next-themes": "^0.4.4",
          "react": "^19.1.0",
          "react-dom": "^19.1.0",
          "recharts": "^2.15.0",
          "swr": "^2.3.0",
          "tailwind-merge": "^2.6.0",
          "zod": "^3.24.2"
        },
        "dev_dependencies": {
          "@playwright/test": "^1.53.2",
          "@tailwindcss/postcss": "^4.0.0",
          "@types/node": "^22.15.30",
          "@types/react": "^19.1.8",
          "@types/react-dom": "^19.1.6",
          "drizzle-kit": "^0.31.1",
          "jsdom": "^29.0.1",
          "tailwindcss": "^4.0.0",
          "tsx": "^4.20.3",
          "typescript": "^5.8.3",
          "vitest": "^3.2.4"
        }
      }
    ]
  },
  "routes": {
    "api_routes": [
      {
        "route": "/docs",
        "source_path": "app/api/docs/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/health",
        "source_path": "app/api/health/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",
          "POST"
        ]
      },
      {
        "route": "/v1/artifacts",
        "source_path": "app/api/v1/artifacts/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "GET",
          "POST"
        ]
      },
      {
        "route": "/v1/feeds",
        "source_path": "app/api/v1/feeds/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/v1/feeds/sync",
        "source_path": "app/api/v1/feeds/sync/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "POST"
        ]
      },
      {
        "route": "/v1/health",
        "source_path": "app/api/v1/health/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/v1/journeys/[id]/dry-run",
        "source_path": "app/api/v1/journeys/[id]/dry-run/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "POST"
        ]
      },
      {
        "route": "/v1/journeys/[id]",
        "source_path": "app/api/v1/journeys/[id]/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "DELETE",
          "GET",
          "PUT"
        ]
      },
      {
        "route": "/v1/journeys/[id]/run",
        "source_path": "app/api/v1/journeys/[id]/run/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "POST"
        ]
      },
      {
        "route": "/v1/journeys",
        "source_path": "app/api/v1/journeys/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "GET",
          "POST"
        ]
      },
      {
        "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/domains",
        "source_path": "app/api/v1/network/domains/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"
        ]
      },
      {
        "route": "/v1/network/graph/sync",
        "source_path": "app/api/v1/network/graph/sync/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "GET",
          "POST"
        ]
      },
      {
        "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/run-smoke",
        "source_path": "app/api/v1/network/run-smoke/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "POST"
        ]
      },
      {
        "route": "/v1/network/sites",
        "source_path": "app/api/v1/network/sites/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/v1/network/sync",
        "source_path": "app/api/v1/network/sync/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "GET",
          "POST"
        ]
      },
      {
        "route": "/v1/network/trace-propagation",
        "source_path": "app/api/v1/network/trace-propagation/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": "/v1/network/ui-compliance",
        "source_path": "app/api/v1/network/ui-compliance/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/v1/readiness",
        "source_path": "app/api/v1/readiness/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/v1/red-team",
        "source_path": "app/api/v1/red-team/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "POST"
        ]
      },
      {
        "route": "/v1/runs/[id]/artifacts",
        "source_path": "app/api/v1/runs/[id]/artifacts/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/v1/runs/[id]/cancel",
        "source_path": "app/api/v1/runs/[id]/cancel/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "POST"
        ]
      },
      {
        "route": "/v1/runs/[id]/export-sheets",
        "source_path": "app/api/v1/runs/[id]/export-sheets/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "POST"
        ]
      },
      {
        "route": "/v1/runs/[id]/generate-deck",
        "source_path": "app/api/v1/runs/[id]/generate-deck/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "POST"
        ]
      },
      {
        "route": "/v1/runs/[id]/publish-docs",
        "source_path": "app/api/v1/runs/[id]/publish-docs/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "POST"
        ]
      },
      {
        "route": "/v1/runs/[id]/report",
        "source_path": "app/api/v1/runs/[id]/report/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/v1/runs/[id]",
        "source_path": "app/api/v1/runs/[id]/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/v1/runs/[id]/screenshots",
        "source_path": "app/api/v1/runs/[id]/screenshots/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/v1/runs/[id]/steps",
        "source_path": "app/api/v1/runs/[id]/steps/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/v1/runs/[id]/trace",
        "source_path": "app/api/v1/runs/[id]/trace/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/v1/runs",
        "source_path": "app/api/v1/runs/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "GET",
          "POST"
        ]
      },
      {
        "route": "/v1/sitemaps/sync",
        "source_path": "app/api/v1/sitemaps/sync/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "POST"
        ]
      },
      {
        "route": "/v1/sites/[slug]/journeys",
        "source_path": "app/api/v1/sites/[slug]/journeys/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/v1/sites/[slug]/ui",
        "source_path": "app/api/v1/sites/[slug]/ui/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/v1/sites/[slug]/vercel",
        "source_path": "app/api/v1/sites/[slug]/vercel/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "GET"
        ]
      }
    ],
    "app_routes": [
      {
        "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": "/journeys",
        "source_path": "app/journeys/page.tsx",
        "kind": "next-app-page",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/network",
        "source_path": "app/network/page.tsx",
        "kind": "next-app-page",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/runs/[id]",
        "source_path": "app/runs/[id]/page.tsx",
        "kind": "next-app-page",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/runs",
        "source_path": "app/runs/page.tsx",
        "kind": "next-app-page",
        "methods": [
          "GET"
        ]
      }
    ]
  },
  "components": [
    {
      "name": "journey-list",
      "kind": "ui-component",
      "source_path": "components/journeys/journey-list.tsx"
    },
    {
      "name": "footer",
      "kind": "ui-component",
      "source_path": "components/layout/footer.tsx"
    },
    {
      "name": "sidebar",
      "kind": "ui-component",
      "source_path": "components/layout/sidebar.tsx"
    },
    {
      "name": "top-bar",
      "kind": "ui-component",
      "source_path": "components/layout/top-bar.tsx"
    },
    {
      "name": "readiness-report-card",
      "kind": "ui-component",
      "source_path": "components/runs/readiness-report-card.tsx"
    },
    {
      "name": "badge",
      "kind": "ui-component",
      "source_path": "components/ui/badge.tsx"
    },
    {
      "name": "button",
      "kind": "ui-component",
      "source_path": "components/ui/button.tsx"
    },
    {
      "name": "card",
      "kind": "ui-component",
      "source_path": "components/ui/card.tsx"
    },
    {
      "name": "journey-search",
      "kind": "ui-component",
      "source_path": "components/ui/journey-search.tsx"
    }
  ],
  "data_models": [
    {
      "name": "schema",
      "kind": "schema-file",
      "source_path": "lib/neon/schema.ts"
    }
  ],
  "database": {
    "databases": [
      "drizzle"
    ],
    "schemas": [
      {
        "path": "lib/neon/schema.ts"
      }
    ],
    "migrations": []
  },
  "tests": [
    {
      "name": "playwright-runner.ts",
      "kind": "playwright",
      "source_path": "lib/browser/playwright-runner.ts"
    },
    {
      "name": "spec.ts",
      "kind": "unit-or-integration",
      "source_path": "lib/integrations/spec.ts"
    },
    {
      "name": "playwright.config.ts",
      "kind": "playwright",
      "source_path": "playwright.config.ts"
    },
    {
      "name": "home.spec.ts",
      "kind": "e2e",
      "source_path": "tests-e2e/home.spec.ts"
    },
    {
      "name": "journeys.spec.ts",
      "kind": "e2e",
      "source_path": "tests-e2e/journeys.spec.ts"
    },
    {
      "name": "network.spec.ts",
      "kind": "e2e",
      "source_path": "tests-e2e/network.spec.ts"
    },
    {
      "name": "runs.spec.ts",
      "kind": "e2e",
      "source_path": "tests-e2e/runs.spec.ts"
    },
    {
      "name": "journey-synthesizer.test.ts",
      "kind": "unit-or-integration",
      "source_path": "tests/journey-synthesizer.test.ts"
    },
    {
      "name": "mcp-json-rpc.test.ts",
      "kind": "unit-or-integration",
      "source_path": "tests/mcp-json-rpc.test.ts"
    },
    {
      "name": "platform-contract.test.ts",
      "kind": "unit-or-integration",
      "source_path": "tests/platform-contract.test.ts"
    },
    {
      "name": "registry.test.ts",
      "kind": "unit-or-integration",
      "source_path": "tests/registry.test.ts"
    },
    {
      "name": "well-known.test.ts",
      "kind": "unit-or-integration",
      "source_path": "tests/well-known.test.ts"
    }
  ],
  "ci": {
    "workflows": []
  },
  "containers": {
    "dockerfiles": [],
    "compose_files": []
  },
  "env": {
    "example_files": [],
    "variables": [
      {
        "name": "BLOB_READ_WRITE_TOKEN",
        "source_paths": [
          "lib/artifacts/store.ts"
        ],
        "likely_secret": true
      },
      {
        "name": "BROWSER_RUN_CONCURRENCY",
        "source_paths": [
          "app/api/v1/network/run-smoke/route.ts"
        ],
        "likely_secret": false
      },
      {
        "name": "BROWSER_RUN_TIMEOUT_MS",
        "source_paths": [
          "lib/registry/canonical.ts"
        ],
        "likely_secret": false
      },
      {
        "name": "COSMIC_NETWORK_ID",
        "source_paths": [
          "lib/cosmic/cuid.ts"
        ],
        "likely_secret": false
      },
      {
        "name": "DATABASE_URL",
        "source_paths": [
          "drizzle.config.ts",
          "lib/neon/client.ts"
        ],
        "likely_secret": true
      },
      {
        "name": "NETWORK_ROUTE_CHECK_SITE_LIMIT",
        "source_paths": [
          "lib/registry/canonical.ts"
        ],
        "likely_secret": false
      },
      {
        "name": "NETWORK_SYNC_ENDPOINT_CONCURRENCY",
        "source_paths": [
          "lib/registry/canonical.ts"
        ],
        "likely_secret": false
      },
      {
        "name": "NETWORK_SYNC_SITE_CONCURRENCY",
        "source_paths": [
          "lib/registry/canonical.ts"
        ],
        "likely_secret": false
      },
      {
        "name": "NEXT_PUBLIC_APP_URL",
        "source_paths": [
          "lib/config/service.ts",
          "playwright.config.ts"
        ],
        "likely_secret": false
      },
      {
        "name": "PLATPHORM_AGENTUI_URL",
        "source_paths": [
          "lib/integrations/agentui.ts",
          "lib/platform/contract.ts"
        ],
        "likely_secret": false
      },
      {
        "name": "PLATPHORM_API_KEY",
        "source_paths": [
          "lib/security/auth.ts",
          "tests/mcp-json-rpc.test.ts"
        ],
        "likely_secret": true
      },
      {
        "name": "PLATPHORM_CLAWS_URL",
        "source_paths": [
          "lib/integrations/claws.ts",
          "lib/platform/contract.ts"
        ],
        "likely_secret": false
      },
      {
        "name": "PLATPHORM_DOCS_URL",
        "source_paths": [
          "lib/integrations/docs.ts",
          "lib/platform/contract.ts",
          "lib/publish/docs-verification.ts"
        ],
        "likely_secret": false
      },
      {
        "name": "PLATPHORM_EVALS_URL",
        "source_paths": [
          "lib/integrations/evals.ts",
          "lib/platform/contract.ts",
          "lib/publish/evals-export.ts"
        ],
        "likely_secret": false
      },
      {
        "name": "PLATPHORM_MCP_URL",
        "source_paths": [
          "lib/integrations/mcp.ts",
          "lib/platform/contract.ts"
        ],
        "likely_secret": false
      },
      {
        "name": "PLATPHORM_NETWORK_GRAPH_URL",
        "source_paths": [
          "lib/integrations/network-graph.ts",
          "lib/registry/canonical.ts",
          "lib/registry/network-sync.ts"
        ],
        "likely_secret": false
      },
      {
        "name": "PLATPHORM_SANDBOX_URL",
        "source_paths": [
          "lib/integrations/sandbox.ts",
          "lib/platform/contract.ts"
        ],
        "likely_secret": false
      },
      {
        "name": "PLATPHORM_SPEC_URL",
        "source_paths": [
          "lib/integrations/spec.ts"
        ],
        "likely_secret": false
      },
      {
        "name": "PLATPHORM_TRACE_URL",
        "source_paths": [
          "lib/integrations/trace.ts",
          "lib/platform/contract.ts",
          "lib/publish/trace-export.ts",
          "lib/registry/canonical.ts"
        ],
        "likely_secret": false
      },
      {
        "name": "PLATPHORM_WEBHOOKLAB_URL",
        "source_paths": [
          "lib/integrations/webhooklab.ts",
          "lib/platform/contract.ts"
        ],
        "likely_secret": false
      },
      {
        "name": "ROUTE_CHECK_TIMEOUT_MS",
        "source_paths": [
          "lib/registry/canonical.ts"
        ],
        "likely_secret": false
      },
      {
        "name": "VERCEL_API_TOKEN",
        "source_paths": [
          "lib/integrations/vercel.ts"
        ],
        "likely_secret": true
      },
      {
        "name": "VERCEL_ENV",
        "source_paths": [
          "lib/config/service.ts"
        ],
        "likely_secret": false
      },
      {
        "name": "VERCEL_TEAM_ID",
        "source_paths": [
          "lib/integrations/vercel.ts"
        ],
        "likely_secret": false
      }
    ]
  },
  "configs": [
    {
      "path": "lib/integrations/vercel.ts"
    },
    {
      "path": "next.config.ts"
    },
    {
      "path": "package.json"
    },
    {
      "path": "postcss.config.mjs"
    },
    {
      "path": "tsconfig.json"
    },
    {
      "path": "tsconfig.tsbuildinfo"
    },
    {
      "path": "vercel.json"
    }
  ],
  "docs": {
    "readme_paths": [
      {
        "path": "README.md"
      }
    ],
    "doc_paths": [
      {
        "path": "docs/ARCHITECTURE.md"
      },
      {
        "path": "docs/INTEGRATIONS.md"
      },
      {
        "path": "docs/SCHEMA.md"
      }
    ],
    "llms_context_paths": []
  },
  "discovery_files": {
    "openapi": [],
    "mcp": [
      {
        "path": "app/api/mcp/route.ts"
      },
      {
        "path": "lib/integrations/mcp.ts"
      }
    ],
    "llms": [],
    "sitemaps": [],
    "feeds": [],
    "well_known": [
      {
        "path": "app/.well-known/agent.json/route.ts"
      },
      {
        "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": "AWS",
      "confidence": "medium",
      "evidence_paths": [
        "lib/config/env.ts",
        "lib/integrations/claws.ts",
        "lib/platform/contract.ts",
        "package.json"
      ]
    },
    {
      "name": "OpenAI",
      "confidence": "medium",
      "evidence_paths": [
        "package-lock.json",
        "package.json",
        "pnpm-lock.yaml"
      ]
    },
    {
      "name": "PlatPhorm",
      "confidence": "medium",
      "evidence_paths": [
        "app/.well-known/agents.json/route.ts",
        "app/.well-known/ai-plugin.json/route.ts",
        "app/.well-known/trust.json/route.ts",
        "app/journeys/page.tsx",
        "app/llms-index.json/route.ts",
        "app/page.tsx",
        "app/runs/page.tsx",
        "BUILD_STATUS.md",
        "lib/config/env.ts",
        "lib/integrations/agentui.ts",
        "lib/integrations/claws.ts",
        "lib/integrations/docs.ts",
        "lib/integrations/evals.ts",
        "lib/integrations/mcp.ts",
        "lib/integrations/network-graph.ts",
        "lib/integrations/sandbox.ts",
        "lib/integrations/spec.ts",
        "lib/integrations/trace.ts",
        "lib/integrations/webhooklab.ts",
        "lib/platform/contract.ts",
        "lib/publish/docs-verification.ts",
        "lib/publish/evals-export.ts",
        "lib/publish/trace-export.ts",
        "lib/registry/canonical.ts",
        "lib/registry/network-sync.ts",
        "package.json"
      ]
    },
    {
      "name": "Postgres",
      "confidence": "medium",
      "evidence_paths": [
        "BUILD_STATUS.md",
        "DEPLOYMENT.md",
        "drizzle.config.ts",
        "lib/config/env.ts",
        "lib/neon/client.ts",
        "lib/registry/canonical.ts",
        "package.json",
        "README.md"
      ]
    },
    {
      "name": "Vercel",
      "confidence": "medium",
      "evidence_paths": [
        "lib/artifacts/store.ts",
        "lib/config/env.ts",
        "lib/config/service.ts",
        "lib/integrations/vercel.ts",
        "package-lock.json",
        "package.json",
        "pnpm-lock.yaml"
      ]
    }
  ],
  "license": {
    "spdx": null,
    "paths": []
  },
  "comments": [
    {
      "kind": "deprecated",
      "source_path": ".jules/bolt.md",
      "line": 6,
      "text": "**Learning:** Next.js 16 deprecated `middleware.ts` in favor of `proxy.ts`. Also, `proxy.ts` expects an export named `proxy` instead of `middleware`."
    },
    {
      "kind": "security",
      "source_path": "app/.well-known/security.txt/route.ts",
      "line": 3,
      "text": "\"Contact: mailto:security@platphormnews.com\","
    },
    {
      "kind": "security",
      "source_path": "app/.well-known/security.txt/route.ts",
      "line": 7,
      "text": "\"Policy: https://platphormnews.com/security-policy\","
    },
    {
      "kind": "security",
      "source_path": "app/.well-known/trust.json/route.ts",
      "line": 62,
      "text": "securityContact: \"security@platphormnews.com\","
    },
    {
      "kind": "security",
      "source_path": "app/api/v1/artifacts/route.ts",
      "line": 2,
      "text": "import { requirePlatformKey } from \"@/lib/security/auth\";"
    },
    {
      "kind": "security",
      "source_path": "app/api/v1/feeds/sync/route.ts",
      "line": 2,
      "text": "import { requirePlatformKey } from \"@/lib/security/auth\";"
    },
    {
      "kind": "security",
      "source_path": "app/api/v1/journeys/[id]/dry-run/route.ts",
      "line": 2,
      "text": "import { requirePlatformKey } from \"@/lib/security/auth\";"
    },
    {
      "kind": "security",
      "source_path": "app/api/v1/journeys/[id]/route.ts",
      "line": 2,
      "text": "import { requirePlatformKey } from \"@/lib/security/auth\";"
    },
    {
      "kind": "security",
      "source_path": "app/api/v1/journeys/[id]/run/route.ts",
      "line": 2,
      "text": "import { requirePlatformKey } from \"@/lib/security/auth\";"
    },
    {
      "kind": "security",
      "source_path": "app/api/v1/journeys/route.ts",
      "line": 2,
      "text": "import { requirePlatformKey } from \"@/lib/security/auth\";"
    },
    {
      "kind": "security",
      "source_path": "app/api/v1/network/run-smoke/route.ts",
      "line": 2,
      "text": "import { requirePlatformKey } from \"@/lib/security/auth\";"
    },
    {
      "kind": "security",
      "source_path": "app/api/v1/network/sync/route.ts",
      "line": 2,
      "text": "import { requirePlatformKey } from \"@/lib/security/auth\";"
    },
    {
      "kind": "security",
      "source_path": "app/api/v1/red-team/route.ts",
      "line": 2,
      "text": "import { requirePlatformKey } from \"@/lib/security/auth\";"
    },
    {
      "kind": "security",
      "source_path": "app/api/v1/runs/[id]/cancel/route.ts",
      "line": 2,
      "text": "import { requirePlatformKey } from \"@/lib/security/auth\";"
    },
    {
      "kind": "security",
      "source_path": "app/api/v1/runs/[id]/export-sheets/route.ts",
      "line": 2,
      "text": "import { requirePlatformKey } from \"@/lib/security/auth\";"
    },
    {
      "kind": "security",
      "source_path": "app/api/v1/runs/[id]/generate-deck/route.ts",
      "line": 2,
      "text": "import { requirePlatformKey } from \"@/lib/security/auth\";"
    },
    {
      "kind": "security",
      "source_path": "app/api/v1/runs/[id]/publish-docs/route.ts",
      "line": 2,
      "text": "import { requirePlatformKey } from \"@/lib/security/auth\";"
    },
    {
      "kind": "security",
      "source_path": "app/api/v1/runs/route.ts",
      "line": 2,
      "text": "import { requirePlatformKey } from \"@/lib/security/auth\";"
    },
    {
      "kind": "security",
      "source_path": "app/docs/page.tsx",
      "line": 50,
      "text": "title: 'Security & Auth',"
    },
    {
      "kind": "security",
      "source_path": "components/layout/footer.tsx",
      "line": 38,
      "text": "{ label: \"Security\", href: \"/.well-known/security.txt\", external: false },"
    },
    {
      "kind": "security",
      "source_path": "DEPLOYMENT.md",
      "line": 59,
      "text": "- `GET /.well-known/security.txt`"
    },
    {
      "kind": "security",
      "source_path": "lib/browser/playwright-runner.ts",
      "line": 4,
      "text": "import { validateTrustedUrl } from \"@/lib/security/trusted-domains\";"
    },
    {
      "kind": "security",
      "source_path": "lib/browser/playwright-runner.ts",
      "line": 5,
      "text": "import { redactError, redactText } from \"@/lib/security/redaction\";"
    },
    {
      "kind": "security",
      "source_path": "lib/mcp/server.ts",
      "line": 18,
      "text": "import { isProtectedRequestAuthorized } from \"@/lib/security/auth\";"
    },
    {
      "kind": "security",
      "source_path": "lib/platform/contract.ts",
      "line": 33,
      "text": "{ method: \"GET\", path: \"/.well-known/security.txt\", category: \"well-known\", applicable: \"required\" },"
    },
    {
      "kind": "security",
      "source_path": "lib/platform/contract.ts",
      "line": 68,
      "text": "\"/.well-known/security.txt\","
    },
    {
      "kind": "security",
      "source_path": "lib/registry/canonical.ts",
      "line": 9,
      "text": "import { sanitizeHeaders } from \"@/lib/security/redaction\";"
    },
    {
      "kind": "security",
      "source_path": "lib/registry/canonical.ts",
      "line": 10,
      "text": "import { getHostname, isPlatphormTrustedHost, validateTrustedUrl } from \"@/lib/security/trusted-domains\";"
    },
    {
      "kind": "deprecated",
      "source_path": "lib/registry/canonical.ts",
      "line": 190,
      "text": "trustStatus: trusted && ![\"archived\", \"deprecated\", \"unsupported\"].includes(status) ? \"trusted\" : \"degraded\","
    },
    {
      "kind": "security",
      "source_path": "lib/standards/openapi.ts",
      "line": 66,
      "text": "security: protectedAction ? [{ bearerPlatformKey: [] }, { platphormApiKey: [] }] : [],"
    },
    {
      "kind": "deprecated",
      "source_path": "package-lock.json",
      "line": 383,
      "text": "\"deprecated\": \"Merged into tsx: https://tsx.is\","
    },
    {
      "kind": "deprecated",
      "source_path": "package-lock.json",
      "line": 807,
      "text": "\"deprecated\": \"Merged into tsx: https://tsx.is\","
    },
    {
      "kind": "security",
      "source_path": "patch_docs_again_v3.js",
      "line": 54,
      "text": "title: 'Security & Auth',"
    },
    {
      "kind": "deprecated",
      "source_path": "pnpm-lock.yaml",
      "line": 240,
      "text": "deprecated: 'Merged into tsx: https://tsx.is'"
    },
    {
      "kind": "deprecated",
      "source_path": "pnpm-lock.yaml",
      "line": 244,
      "text": "deprecated: 'Merged into tsx: https://tsx.is'"
    },
    {
      "kind": "security",
      "source_path": "README.md",
      "line": 45,
      "text": "- `/.well-known/security.txt`"
    },
    {
      "kind": "security",
      "source_path": "README.md",
      "line": 121,
      "text": "- `lib/security/` - auth, redaction, trusted-domain validation"
    },
    {
      "kind": "security",
      "source_path": "tests/platform-contract.test.ts",
      "line": 4,
      "text": "import { redactText, sanitizeHeaders } from \"@/lib/security/redaction\";"
    },
    {
      "kind": "security",
      "source_path": "tests/platform-contract.test.ts",
      "line": 5,
      "text": "import { validateTrustedUrl } from \"@/lib/security/trusted-domains\";"
    },
    {
      "kind": "security",
      "source_path": "tests/well-known.test.ts",
      "line": 2,
      "text": "import { GET as getSecurityTxt } from '../app/.well-known/security.txt/route';"
    },
    {
      "kind": "security",
      "source_path": "tests/well-known.test.ts",
      "line": 6,
      "text": "it('serves valid security.txt', async () => {"
    },
    {
      "kind": "security",
      "source_path": "tests/well-known.test.ts",
      "line": 12,
      "text": "expect(text).toContain('Contact: mailto:security@platphormnews.com');"
    },
    {
      "kind": "deprecated",
      "source_path": "types/metadata.ts",
      "line": 9,
      "text": "status: \"active\" | \"beta\" | \"deprecated\" | \"archived\";"
    }
  ],
  "security": {
    "secret_risks": [],
    "unsafe_patterns": [
      {
        "name": "child-process-exec",
        "confidence": "medium",
        "evidence_paths": [
          "lib/registry/canonical.ts"
        ]
      },
      {
        "name": "dangerously-set-html",
        "confidence": "medium",
        "evidence_paths": [
          ".jules/bolt.md",
          "app/docs/page.tsx",
          "app/faq/page.tsx",
          "patch_docs_again_v3.js"
        ]
      },
      {
        "name": "sql-injection-review-needed",
        "confidence": "medium",
        "evidence_paths": [
          "app/feed.xml/route.ts",
          "patch_feed.js"
        ]
      },
      {
        "name": "ssrf-review-needed",
        "confidence": "medium",
        "evidence_paths": [
          "lib/integrations/vercel.ts",
          "lib/registry/canonical.ts"
        ]
      }
    ],
    "sensitive_data_indicators": [
      {
        "name": "api_key",
        "confidence": "medium",
        "evidence_paths": [
          "app/.well-known/agents.json/route.ts",
          "app/.well-known/ai-plugin.json/route.ts",
          "app/.well-known/trust.json/route.ts",
          "app/docs/page.tsx",
          "app/journeys/page.tsx",
          "app/llms-index.json/route.ts",
          "app/page.tsx",
          "app/runs/page.tsx",
          "BUILD_STATUS.md",
          "DEPLOYMENT.md",
          "lib/mcp/server.ts",
          "lib/mcp/tools.ts",
          "lib/neon/schema.ts",
          "lib/platform/contract.ts",
          "lib/security/auth.ts",
          "lib/security/redaction.ts",
          "lib/standards/llms.ts",
          "lib/standards/openapi.ts",
          "patch_docs_again_v3.js",
          "README.md"
        ]
      },
      {
        "name": "card",
        "confidence": "medium",
        "evidence_paths": [
          ".jules/palette.md",
          "app/docs/page.tsx",
          "app/faq/page.tsx",
          "app/globals.css",
          "app/journeys/page.tsx",
          "app/layout.tsx",
          "app/network/page.tsx",
          "app/page.tsx",
          "app/runs/[id]/page.tsx",
          "app/runs/page.tsx",
          "components/journeys/journey-list.tsx",
          "components/runs/readiness-report-card.tsx",
          "components/ui/card.tsx",
          "patch_docs_again_v3.js"
        ]
      },
      {
        "name": "email",
        "confidence": "medium",
        "evidence_paths": [
          "app/.well-known/agents.json/route.ts",
          "app/.well-known/ai-plugin.json/route.ts",
          "lib/neon/schema.ts",
          "patch_feed.js",
          "scripts/001_init.sql"
        ]
      },
      {
        "name": "fingerprint",
        "confidence": "medium",
        "evidence_paths": [
          "lib/api/correlation.ts",
          "lib/cosmic/fingerprint.ts",
          "lib/neon/schema.ts",
          "scripts/001_init.sql",
          "types/trace.ts"
        ]
      },
      {
        "name": "health",
        "confidence": "medium",
        "evidence_paths": [
          "app/.well-known/agents.json/route.ts",
          "app/.well-known/trust.json/route.ts",
          "app/api/v1/health/route.ts",
          "app/docs/page.tsx",
          "components/layout/top-bar.tsx",
          "DEPLOYMENT.md",
          "lib/config/service.ts",
          "lib/neon/schema.ts",
          "lib/platform/contract.ts",
          "lib/registry/canonical.ts",
          "lib/registry/network-sync.ts",
          "lib/standards/llms.ts",
          "lib/standards/network-manifest.ts",
          "lib/standards/openapi.ts",
          "patch_docs_again_v3.js",
          "patch_feed.js",
          "README.md",
          "scripts/001_init.sql",
          "types/metadata.ts",
          "types/network.ts"
        ]
      },
      {
        "name": "location",
        "confidence": "medium",
        "evidence_paths": [
          ".jules/bolt.md",
          "lib/browser/playwright-runner.ts"
        ]
      },
      {
        "name": "pii",
        "confidence": "medium",
        "evidence_paths": [
          "package-lock.json",
          "pnpm-lock.yaml"
        ]
      },
      {
        "name": "secret-like environment variables",
        "confidence": "medium",
        "evidence_paths": [
          "package.json"
        ]
      },
      {
        "name": "token",
        "confidence": "medium",
        "evidence_paths": [
          "app/.well-known/trust.json/route.ts",
          "app/llms-full.txt/route.ts",
          "BUILD_STATUS.md",
          "DEPLOYMENT.md",
          "lib/artifacts/store.ts",
          "lib/browser/playwright-runner.ts",
          "lib/config/env.ts",
          "lib/integrations/vercel.ts",
          "lib/neon/schema.ts",
          "lib/security/redaction.ts",
          "package-lock.json",
          "pnpm-lock.yaml",
          "README.md",
          "scripts/001_init.sql",
          "tests/platform-contract.test.ts"
        ]
      },
      {
        "name": "x-vercel-ja4-digest",
        "confidence": "medium",
        "evidence_paths": [
          "lib/cosmic/fingerprint.ts"
        ]
      }
    ]
  },
  "generated_at": "2026-05-16T16:44:13.138Z"
}
