{
  "schema_version": "1.0.0",
  "scanner": {
    "name": "global-capability-catalog",
    "version": "0.1.0"
  },
  "repo": {
    "id": "github-recent__mbarbine__platphorm-opencontent",
    "name": "mbarbine__platphorm-opencontent",
    "path": "/Users/bwm.barbinewarnermichael/Documents/github/repositories/github-recent/mbarbine__platphorm-opencontent",
    "relative_path": "github-recent/mbarbine__platphorm-opencontent",
    "remote_url": "git@github.com:mbarbine/platphorm-opencontent.git",
    "default_branch": "main",
    "current_commit": "9cc4c722d37dbe56580a227ba12b3fd41a99cfdf"
  },
  "languages": [
    {
      "language": "TypeScript",
      "files": 318,
      "bytes": 1936305
    },
    {
      "language": "YAML",
      "files": 3,
      "bytes": 315374
    },
    {
      "language": "Markdown",
      "files": 18,
      "bytes": 90185
    },
    {
      "language": "JSON",
      "files": 15,
      "bytes": 78934
    },
    {
      "language": "SQL",
      "files": 2,
      "bytes": 29554
    },
    {
      "language": "CSS",
      "files": 2,
      "bytes": 15497
    },
    {
      "language": "JavaScript",
      "files": 5,
      "bytes": 2165
    },
    {
      "language": "Dockerfile",
      "files": 1,
      "bytes": 1001
    }
  ],
  "frameworks": [
    {
      "name": "MCP SDK",
      "confidence": "high",
      "evidence_paths": [
        "package.json"
      ]
    },
    {
      "name": "Next.js",
      "confidence": "high",
      "evidence_paths": [
        "package.json"
      ]
    },
    {
      "name": "Playwright",
      "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": "OpenContent",
        "version": "0.1.0",
        "scripts": {
          "dev": "next dev",
          "build": "next build --webpack",
          "start": "next start",
          "lint": "eslint .",
          "test": "vitest run",
          "test:unit": "vitest run __tests__/unit",
          "test:integration": "vitest run __tests__/integration",
          "test:mcp": "vitest run __tests__/integration/mcp",
          "test:coverage": "vitest run --coverage",
          "test:watch": "vitest"
        },
        "dependencies": {
          "@hookform/resolvers": "^3.10.0",
          "@modelcontextprotocol/sdk": "^1.29.0",
          "@neondatabase/serverless": "^1.1.0",
          "@radix-ui/react-accordion": "1.2.12",
          "@radix-ui/react-alert-dialog": "1.1.15",
          "@radix-ui/react-aspect-ratio": "1.1.8",
          "@radix-ui/react-avatar": "1.1.11",
          "@radix-ui/react-checkbox": "1.3.3",
          "@radix-ui/react-collapsible": "1.1.12",
          "@radix-ui/react-context-menu": "2.2.16",
          "@radix-ui/react-dialog": "1.1.15",
          "@radix-ui/react-dropdown-menu": "2.1.16",
          "@radix-ui/react-hover-card": "1.1.15",
          "@radix-ui/react-label": "2.1.8",
          "@radix-ui/react-menubar": "1.1.16",
          "@radix-ui/react-navigation-menu": "1.2.14",
          "@radix-ui/react-popover": "1.1.15",
          "@radix-ui/react-progress": "1.1.8",
          "@radix-ui/react-radio-group": "1.3.8",
          "@radix-ui/react-scroll-area": "1.2.10",
          "@radix-ui/react-select": "2.2.6",
          "@radix-ui/react-separator": "1.1.8",
          "@radix-ui/react-slider": "1.3.6",
          "@radix-ui/react-slot": "1.2.4",
          "@radix-ui/react-switch": "1.2.6",
          "@radix-ui/react-tabs": "1.1.13",
          "@radix-ui/react-toast": "1.2.15",
          "@radix-ui/react-toggle": "1.1.10",
          "@radix-ui/react-toggle-group": "1.1.11",
          "@radix-ui/react-tooltip": "1.2.8",
          "@types/dompurify": "^3.2.0",
          "@vercel/analytics": "1.6.1",
          "@vercel/mcp-adapter": "^0.3.2",
          "@vercel/og": "^0.11.1",
          "@vercel/speed-insights": "^1.3.1",
          "autoprefixer": "^10.5.0",
          "botid": "^1.5.11",
          "class-variance-authority": "^0.7.1",
          "clsx": "^2.1.1",
          "cmdk": "1.1.1",
          "date-fns": "4.1.0",
          "dompurify": "^3.4.2",
          "embla-carousel-react": "8.6.0",
          "html-react-parser": "^5.2.17",
          "input-otp": "1.4.2",
          "ipaddr.js": "^2.4.0",
          "isomorphic-dompurify": "^3.12.0",
          "lucide-react": "^0.577.0",
          "next": "16.1.6",
          "next-themes": "^0.4.6",
          "react": "19.2.4",
          "react-day-picker": "^9.14.0",
          "react-dom": "19.2.4",
          "react-hook-form": "^7.75.0",
          "react-resizable-panels": "^2.1.9",
          "recharts": "2.15.0",
          "sonner": "^2.0.7",
          "swr": "^2.4.1",
          "tailwind-merge": "^3.5.0",
          "uuid": "^13.0.2",
          "vaul": "^1.1.2",
          "youtube-dl-exec": "^3.1.6",
          "zod": "^3.25.76"
        },
        "dev_dependencies": {
          "@playwright/test": "^1.59.1",
          "@tailwindcss/postcss": "^4.2.4",
          "@testing-library/jest-dom": "^6.9.1",
          "@testing-library/react": "^16.3.2",
          "@types/node": "^22.19.17",
          "@types/react": "19.2.14",
          "@types/react-dom": "19.2.3",
          "@vitejs/plugin-react": "^5.2.0",
          "eslint": "^9.39.4",
          "eslint-config-next": "^16.2.5",
          "jsdom": "^28.1.0",
          "playwright": "^1.59.1",
          "postcss": "^8.5.14",
          "tailwindcss": "^4.2.4",
          "ts-node": "^10.9.2",
          "tw-animate-css": "^1.4.0",
          "typescript": "5.9.3",
          "vitest": "^4.1.5"
        }
      }
    ]
  },
  "routes": {
    "api_routes": [
      {
        "route": "/cron/categories",
        "source_path": "app/api/cron/categories/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/cron/content-health",
        "source_path": "app/api/cron/content-health/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "GET"
        ]
      },
      {
        "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/register",
        "source_path": "app/api/mcp/register/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "GET",
          "POST"
        ]
      },
      {
        "route": "/mcp",
        "source_path": "app/api/mcp/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/og",
        "source_path": "app/api/og/route.tsx",
        "kind": "next-app-api-route",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/session",
        "source_path": "app/api/session/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "GET",
          "POST"
        ]
      },
      {
        "route": "/v1/analytics",
        "source_path": "app/api/v1/analytics/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/v1/automation",
        "source_path": "app/api/v1/automation/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "GET",
          "POST"
        ]
      },
      {
        "route": "/v1/categories",
        "source_path": "app/api/v1/categories/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "GET",
          "POST"
        ]
      },
      {
        "route": "/v1/content/[slug]/aeo",
        "source_path": "app/api/v1/content/[slug]/aeo/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/v1/content/[slug]/attribution",
        "source_path": "app/api/v1/content/[slug]/attribution/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/v1/content/[slug]/metadata/regenerate",
        "source_path": "app/api/v1/content/[slug]/metadata/regenerate/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/v1/content/[slug]/metadata",
        "source_path": "app/api/v1/content/[slug]/metadata/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "GET",
          "POST"
        ]
      },
      {
        "route": "/v1/content/[slug]/og",
        "source_path": "app/api/v1/content/[slug]/og/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/v1/content/[slug]",
        "source_path": "app/api/v1/content/[slug]/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "DELETE",
          "GET",
          "OPTIONS",
          "PATCH"
        ]
      },
      {
        "route": "/v1/content/[slug]/seo",
        "source_path": "app/api/v1/content/[slug]/seo/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/v1/content/[slug]/share-card/regenerate",
        "source_path": "app/api/v1/content/[slug]/share-card/regenerate/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/v1/content/[slug]/share-card",
        "source_path": "app/api/v1/content/[slug]/share-card/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "GET",
          "POST"
        ]
      },
      {
        "route": "/v1/content/[slug]/share-links/regenerate",
        "source_path": "app/api/v1/content/[slug]/share-links/regenerate/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/v1/content/[slug]/share-links",
        "source_path": "app/api/v1/content/[slug]/share-links/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "GET",
          "POST"
        ]
      },
      {
        "route": "/v1/content/[slug]/twitter-card",
        "source_path": "app/api/v1/content/[slug]/twitter-card/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/v1/content/ingest",
        "source_path": "app/api/v1/content/ingest/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "OPTIONS",
          "POST"
        ]
      },
      {
        "route": "/v1/content",
        "source_path": "app/api/v1/content/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "GET",
          "OPTIONS",
          "POST"
        ]
      },
      {
        "route": "/v1/discover",
        "source_path": "app/api/v1/discover/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/v1/docs/[slug]",
        "source_path": "app/api/v1/docs/[slug]/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/v1/docs",
        "source_path": "app/api/v1/docs/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/v1/documents/[slug]",
        "source_path": "app/api/v1/documents/[slug]/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "DELETE",
          "GET",
          "PUT"
        ]
      },
      {
        "route": "/v1/documents",
        "source_path": "app/api/v1/documents/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "GET",
          "POST"
        ]
      },
      {
        "route": "/v1/explore",
        "source_path": "app/api/v1/explore/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "GET",
          "OPTIONS"
        ]
      },
      {
        "route": "/v1/health",
        "source_path": "app/api/v1/health/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/v1/ingest",
        "source_path": "app/api/v1/ingest/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "GET",
          "POST"
        ]
      },
      {
        "route": "/v1/integrations/[name]/mcp",
        "source_path": "app/api/v1/integrations/[name]/mcp/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "GET",
          "POST"
        ]
      },
      {
        "route": "/v1/integrations",
        "source_path": "app/api/v1/integrations/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "GET",
          "POST"
        ]
      },
      {
        "route": "/v1/keys",
        "source_path": "app/api/v1/keys/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "GET",
          "POST",
          "PUT"
        ]
      },
      {
        "route": "/v1/network",
        "source_path": "app/api/v1/network/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "GET",
          "POST"
        ]
      },
      {
        "route": "/v1/scores",
        "source_path": "app/api/v1/scores/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "GET",
          "POST"
        ]
      },
      {
        "route": "/v1/search",
        "source_path": "app/api/v1/search/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/v1/settings",
        "source_path": "app/api/v1/settings/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "GET",
          "PUT"
        ]
      },
      {
        "route": "/v1/submissions/[id]",
        "source_path": "app/api/v1/submissions/[id]/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "GET",
          "POST"
        ]
      },
      {
        "route": "/v1/submissions",
        "source_path": "app/api/v1/submissions/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "GET",
          "POST"
        ]
      },
      {
        "route": "/v1/tags",
        "source_path": "app/api/v1/tags/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "GET",
          "POST"
        ]
      },
      {
        "route": "/v1/trace",
        "source_path": "app/api/v1/trace/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "POST"
        ]
      },
      {
        "route": "/v1/url-preview",
        "source_path": "app/api/v1/url-preview/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "GET",
          "POST"
        ]
      },
      {
        "route": "/v1/version",
        "source_path": "app/api/v1/version/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/v1/webhooks",
        "source_path": "app/api/v1/webhooks/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "GET",
          "POST"
        ]
      },
      {
        "route": "/v1/workflow",
        "source_path": "app/api/v1/workflow/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "GET",
          "POST"
        ]
      }
    ],
    "app_routes": [
      {
        "route": "/[locale]/dashboard",
        "source_path": "app/[locale]/dashboard/page.tsx",
        "kind": "next-app-page",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/analytics",
        "source_path": "app/analytics/page.tsx",
        "kind": "next-app-page",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/content-policy",
        "source_path": "app/content-policy/page.tsx",
        "kind": "next-app-page",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/content/[slug]",
        "source_path": "app/content/[slug]/page.tsx",
        "kind": "next-app-page",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/content/api",
        "source_path": "app/content/api/page.tsx",
        "kind": "next-app-page",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/content/category/[slug]",
        "source_path": "app/content/category/[slug]/page.tsx",
        "kind": "next-app-page",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/content/mcp",
        "source_path": "app/content/mcp/page.tsx",
        "kind": "next-app-page",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/content",
        "source_path": "app/content/page.tsx",
        "kind": "next-app-page",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/discover",
        "source_path": "app/discover/page.tsx",
        "kind": "next-app-page",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/docs/[slug]",
        "source_path": "app/docs/[slug]/page.tsx",
        "kind": "next-app-page",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/docs/api",
        "source_path": "app/docs/api/page.tsx",
        "kind": "next-app-page",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/docs/category/[slug]",
        "source_path": "app/docs/category/[slug]/page.tsx",
        "kind": "next-app-page",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/docs/mcp",
        "source_path": "app/docs/mcp/page.tsx",
        "kind": "next-app-page",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/docs",
        "source_path": "app/docs/page.tsx",
        "kind": "next-app-page",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/explore/[slug]",
        "source_path": "app/explore/[slug]/page.tsx",
        "kind": "next-app-page",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/explore/audio",
        "source_path": "app/explore/audio/page.tsx",
        "kind": "next-app-page",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/explore",
        "source_path": "app/explore/page.tsx",
        "kind": "next-app-page",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/explore/videos",
        "source_path": "app/explore/videos/page.tsx",
        "kind": "next-app-page",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/operations/ingest",
        "source_path": "app/operations/ingest/page.tsx",
        "kind": "next-app-page",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/search",
        "source_path": "app/search/page.tsx",
        "kind": "next-app-page",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/settings",
        "source_path": "app/settings/page.tsx",
        "kind": "next-app-page",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/submit",
        "source_path": "app/submit/page.tsx",
        "kind": "next-app-page",
        "methods": [
          "GET"
        ]
      }
    ]
  },
  "components": [
    {
      "name": "attribution.test",
      "kind": "ui-component",
      "source_path": "__tests__/unit/components/attribution.test.tsx"
    },
    {
      "name": "command-dialog.test",
      "kind": "ui-component",
      "source_path": "__tests__/unit/components/command-dialog.test.tsx"
    },
    {
      "name": "content-type-icon.test",
      "kind": "ui-component",
      "source_path": "__tests__/unit/components/content-type-icon.test.tsx"
    },
    {
      "name": "docs-list-client.test",
      "kind": "ui-component",
      "source_path": "__tests__/unit/components/docs-list-client.test.tsx"
    },
    {
      "name": "markdown-renderer-xss.test",
      "kind": "ui-component",
      "source_path": "__tests__/unit/components/markdown-renderer-xss.test.tsx"
    },
    {
      "name": "settings-page.test",
      "kind": "ui-component",
      "source_path": "__tests__/unit/components/settings-page.test.tsx"
    },
    {
      "name": "share-buttons.test",
      "kind": "ui-component",
      "source_path": "__tests__/unit/components/share-buttons.test.tsx"
    },
    {
      "name": "accessible-theme-switcher",
      "kind": "ui-component",
      "source_path": "components/accessible-theme-switcher.tsx"
    },
    {
      "name": "attribution",
      "kind": "ui-component",
      "source_path": "components/attribution.tsx"
    },
    {
      "name": "content-card",
      "kind": "ui-component",
      "source_path": "components/content-card.tsx"
    },
    {
      "name": "content-grid",
      "kind": "ui-component",
      "source_path": "components/content-grid.tsx"
    },
    {
      "name": "content-layout",
      "kind": "ui-component",
      "source_path": "components/content-layout.tsx"
    },
    {
      "name": "content-list-client",
      "kind": "ui-component",
      "source_path": "components/content-list-client.tsx"
    },
    {
      "name": "content-metadata-actions",
      "kind": "ui-component",
      "source_path": "components/content-metadata-actions.tsx"
    },
    {
      "name": "content-type-icon",
      "kind": "ui-component",
      "source_path": "components/content-type-icon.tsx"
    },
    {
      "name": "docs-layout",
      "kind": "ui-component",
      "source_path": "components/docs-layout.tsx"
    },
    {
      "name": "docs-list-client",
      "kind": "ui-component",
      "source_path": "components/docs-list-client.tsx"
    },
    {
      "name": "locale-switcher",
      "kind": "ui-component",
      "source_path": "components/locale-switcher.tsx"
    },
    {
      "name": "markdown-renderer",
      "kind": "ui-component",
      "source_path": "components/markdown-renderer.tsx"
    },
    {
      "name": "media-embed",
      "kind": "ui-component",
      "source_path": "components/media/media-embed.tsx"
    },
    {
      "name": "bulk-ingest-console",
      "kind": "ui-component",
      "source_path": "components/operations/bulk-ingest-console.tsx"
    },
    {
      "name": "share-buttons",
      "kind": "ui-component",
      "source_path": "components/share-buttons.tsx"
    },
    {
      "name": "theme-provider",
      "kind": "ui-component",
      "source_path": "components/theme-provider.tsx"
    },
    {
      "name": "accordion",
      "kind": "ui-component",
      "source_path": "components/ui/accordion.tsx"
    },
    {
      "name": "alert-dialog",
      "kind": "ui-component",
      "source_path": "components/ui/alert-dialog.tsx"
    },
    {
      "name": "alert",
      "kind": "ui-component",
      "source_path": "components/ui/alert.tsx"
    },
    {
      "name": "aspect-ratio",
      "kind": "ui-component",
      "source_path": "components/ui/aspect-ratio.tsx"
    },
    {
      "name": "avatar",
      "kind": "ui-component",
      "source_path": "components/ui/avatar.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-group",
      "kind": "ui-component",
      "source_path": "components/ui/button-group.tsx"
    },
    {
      "name": "button",
      "kind": "ui-component",
      "source_path": "components/ui/button.tsx"
    },
    {
      "name": "calendar",
      "kind": "ui-component",
      "source_path": "components/ui/calendar.tsx"
    },
    {
      "name": "card",
      "kind": "ui-component",
      "source_path": "components/ui/card.tsx"
    },
    {
      "name": "carousel",
      "kind": "ui-component",
      "source_path": "components/ui/carousel.tsx"
    },
    {
      "name": "chart",
      "kind": "ui-component",
      "source_path": "components/ui/chart.tsx"
    },
    {
      "name": "checkbox",
      "kind": "ui-component",
      "source_path": "components/ui/checkbox.tsx"
    },
    {
      "name": "collapsible",
      "kind": "ui-component",
      "source_path": "components/ui/collapsible.tsx"
    },
    {
      "name": "command",
      "kind": "ui-component",
      "source_path": "components/ui/command.tsx"
    },
    {
      "name": "context-menu",
      "kind": "ui-component",
      "source_path": "components/ui/context-menu.tsx"
    },
    {
      "name": "dialog",
      "kind": "ui-component",
      "source_path": "components/ui/dialog.tsx"
    },
    {
      "name": "drawer",
      "kind": "ui-component",
      "source_path": "components/ui/drawer.tsx"
    },
    {
      "name": "dropdown-menu",
      "kind": "ui-component",
      "source_path": "components/ui/dropdown-menu.tsx"
    },
    {
      "name": "empty",
      "kind": "ui-component",
      "source_path": "components/ui/empty.tsx"
    },
    {
      "name": "field",
      "kind": "ui-component",
      "source_path": "components/ui/field.tsx"
    },
    {
      "name": "form",
      "kind": "ui-component",
      "source_path": "components/ui/form.tsx"
    },
    {
      "name": "hover-card",
      "kind": "ui-component",
      "source_path": "components/ui/hover-card.tsx"
    },
    {
      "name": "input-group",
      "kind": "ui-component",
      "source_path": "components/ui/input-group.tsx"
    },
    {
      "name": "input-otp",
      "kind": "ui-component",
      "source_path": "components/ui/input-otp.tsx"
    },
    {
      "name": "input",
      "kind": "ui-component",
      "source_path": "components/ui/input.tsx"
    },
    {
      "name": "item",
      "kind": "ui-component",
      "source_path": "components/ui/item.tsx"
    },
    {
      "name": "kbd",
      "kind": "ui-component",
      "source_path": "components/ui/kbd.tsx"
    },
    {
      "name": "label",
      "kind": "ui-component",
      "source_path": "components/ui/label.tsx"
    },
    {
      "name": "menubar",
      "kind": "ui-component",
      "source_path": "components/ui/menubar.tsx"
    },
    {
      "name": "navigation-menu",
      "kind": "ui-component",
      "source_path": "components/ui/navigation-menu.tsx"
    },
    {
      "name": "pagination",
      "kind": "ui-component",
      "source_path": "components/ui/pagination.tsx"
    },
    {
      "name": "popover",
      "kind": "ui-component",
      "source_path": "components/ui/popover.tsx"
    },
    {
      "name": "progress",
      "kind": "ui-component",
      "source_path": "components/ui/progress.tsx"
    },
    {
      "name": "radio-group",
      "kind": "ui-component",
      "source_path": "components/ui/radio-group.tsx"
    },
    {
      "name": "resizable",
      "kind": "ui-component",
      "source_path": "components/ui/resizable.tsx"
    },
    {
      "name": "scroll-area",
      "kind": "ui-component",
      "source_path": "components/ui/scroll-area.tsx"
    },
    {
      "name": "select",
      "kind": "ui-component",
      "source_path": "components/ui/select.tsx"
    },
    {
      "name": "separator",
      "kind": "ui-component",
      "source_path": "components/ui/separator.tsx"
    },
    {
      "name": "sheet",
      "kind": "ui-component",
      "source_path": "components/ui/sheet.tsx"
    },
    {
      "name": "sidebar",
      "kind": "ui-component",
      "source_path": "components/ui/sidebar.tsx"
    },
    {
      "name": "skeleton",
      "kind": "ui-component",
      "source_path": "components/ui/skeleton.tsx"
    },
    {
      "name": "slider",
      "kind": "ui-component",
      "source_path": "components/ui/slider.tsx"
    },
    {
      "name": "sonner",
      "kind": "ui-component",
      "source_path": "components/ui/sonner.tsx"
    },
    {
      "name": "spinner",
      "kind": "ui-component",
      "source_path": "components/ui/spinner.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": "toggle-group",
      "kind": "ui-component",
      "source_path": "components/ui/toggle-group.tsx"
    },
    {
      "name": "toggle",
      "kind": "ui-component",
      "source_path": "components/ui/toggle.tsx"
    },
    {
      "name": "tooltip",
      "kind": "ui-component",
      "source_path": "components/ui/tooltip.tsx"
    },
    {
      "name": "use-mobile",
      "kind": "ui-component",
      "source_path": "components/ui/use-mobile.tsx"
    }
  ],
  "data_models": [],
  "database": {
    "databases": [],
    "schemas": [
      {
        "path": "scripts/001-init-schema.sql"
      },
      {
        "path": "scripts/002-media-content-schema.sql"
      }
    ],
    "migrations": []
  },
  "tests": [
    {
      "name": "api-full-coverage.spec.ts",
      "kind": "e2e",
      "source_path": "__tests__/e2e/api-full-coverage.spec.ts"
    },
    {
      "name": "api-health.spec.ts",
      "kind": "e2e",
      "source_path": "__tests__/e2e/api-health.spec.ts"
    },
    {
      "name": "ingest.spec.ts",
      "kind": "e2e",
      "source_path": "__tests__/e2e/ingest.spec.ts"
    },
    {
      "name": "navigation.spec.ts",
      "kind": "e2e",
      "source_path": "__tests__/e2e/navigation.spec.ts"
    },
    {
      "name": "search.spec.ts",
      "kind": "e2e",
      "source_path": "__tests__/e2e/search.spec.ts"
    },
    {
      "name": "automation.test.ts",
      "kind": "unit-or-integration",
      "source_path": "__tests__/integration/api/automation.test.ts"
    },
    {
      "name": "categories.test.ts",
      "kind": "unit-or-integration",
      "source_path": "__tests__/integration/api/categories.test.ts"
    },
    {
      "name": "content-ingest.test.ts",
      "kind": "unit-or-integration",
      "source_path": "__tests__/integration/api/content-ingest.test.ts"
    },
    {
      "name": "content-metadata-routes.test.ts",
      "kind": "unit-or-integration",
      "source_path": "__tests__/integration/api/content-metadata-routes.test.ts"
    },
    {
      "name": "content-slug-detail.test.ts",
      "kind": "unit-or-integration",
      "source_path": "__tests__/integration/api/content-slug-detail.test.ts"
    },
    {
      "name": "content-slug.test.ts",
      "kind": "unit-or-integration",
      "source_path": "__tests__/integration/api/content-slug.test.ts"
    },
    {
      "name": "content.test.ts",
      "kind": "unit-or-integration",
      "source_path": "__tests__/integration/api/content.test.ts"
    },
    {
      "name": "cron-categories.test.ts",
      "kind": "unit-or-integration",
      "source_path": "__tests__/integration/api/cron-categories.test.ts"
    },
    {
      "name": "cron-content-health.test.ts",
      "kind": "unit-or-integration",
      "source_path": "__tests__/integration/api/cron-content-health.test.ts"
    },
    {
      "name": "discovery-routes.test.ts",
      "kind": "unit-or-integration",
      "source_path": "__tests__/integration/api/discovery-routes.test.ts"
    },
    {
      "name": "docs-openapi.test.ts",
      "kind": "unit-or-integration",
      "source_path": "__tests__/integration/api/docs-openapi.test.ts"
    },
    {
      "name": "docs-slug-detail.test.ts",
      "kind": "unit-or-integration",
      "source_path": "__tests__/integration/api/docs-slug-detail.test.ts"
    },
    {
      "name": "documents-slug-detail.test.ts",
      "kind": "unit-or-integration",
      "source_path": "__tests__/integration/api/documents-slug-detail.test.ts"
    },
    {
      "name": "documents-slug.test.ts",
      "kind": "unit-or-integration",
      "source_path": "__tests__/integration/api/documents-slug.test.ts"
    },
    {
      "name": "documents.test.ts",
      "kind": "unit-or-integration",
      "source_path": "__tests__/integration/api/documents.test.ts"
    },
    {
      "name": "explore.test.ts",
      "kind": "unit-or-integration",
      "source_path": "__tests__/integration/api/explore.test.ts"
    },
    {
      "name": "health.test.ts",
      "kind": "unit-or-integration",
      "source_path": "__tests__/integration/api/health.test.ts"
    },
    {
      "name": "ingest.test.ts",
      "kind": "unit-or-integration",
      "source_path": "__tests__/integration/api/ingest.test.ts"
    },
    {
      "name": "integrations-mcp.test.ts",
      "kind": "unit-or-integration",
      "source_path": "__tests__/integration/api/integrations-mcp.test.ts"
    },
    {
      "name": "integrations.test.ts",
      "kind": "unit-or-integration",
      "source_path": "__tests__/integration/api/integrations.test.ts"
    },
    {
      "name": "keys.test.ts",
      "kind": "unit-or-integration",
      "source_path": "__tests__/integration/api/keys.test.ts"
    },
    {
      "name": "mcp-register.test.ts",
      "kind": "unit-or-integration",
      "source_path": "__tests__/integration/api/mcp-register.test.ts"
    },
    {
      "name": "openapi-docs.test.ts",
      "kind": "unit-or-integration",
      "source_path": "__tests__/integration/api/openapi-docs.test.ts"
    },
    {
      "name": "scores.test.ts",
      "kind": "unit-or-integration",
      "source_path": "__tests__/integration/api/scores.test.ts"
    },
    {
      "name": "search.test.ts",
      "kind": "unit-or-integration",
      "source_path": "__tests__/integration/api/search.test.ts"
    },
    {
      "name": "session.test.ts",
      "kind": "unit-or-integration",
      "source_path": "__tests__/integration/api/session.test.ts"
    },
    {
      "name": "settings.test.ts",
      "kind": "unit-or-integration",
      "source_path": "__tests__/integration/api/settings.test.ts"
    },
    {
      "name": "submissions-id.test.ts",
      "kind": "unit-or-integration",
      "source_path": "__tests__/integration/api/submissions-id.test.ts"
    },
    {
      "name": "submissions.test.ts",
      "kind": "unit-or-integration",
      "source_path": "__tests__/integration/api/submissions.test.ts"
    },
    {
      "name": "tags.test.ts",
      "kind": "unit-or-integration",
      "source_path": "__tests__/integration/api/tags.test.ts"
    },
    {
      "name": "trace.test.ts",
      "kind": "unit-or-integration",
      "source_path": "__tests__/integration/api/trace.test.ts"
    },
    {
      "name": "url-preview.test.ts",
      "kind": "unit-or-integration",
      "source_path": "__tests__/integration/api/url-preview.test.ts"
    },
    {
      "name": "route.test.ts",
      "kind": "unit-or-integration",
      "source_path": "__tests__/integration/api/v1/automation/route.test.ts"
    },
    {
      "name": "network.test.ts",
      "kind": "unit-or-integration",
      "source_path": "__tests__/integration/api/v1/network.test.ts"
    },
    {
      "name": "version.test.ts",
      "kind": "unit-or-integration",
      "source_path": "__tests__/integration/api/version.test.ts"
    },
    {
      "name": "webhooks.test.ts",
      "kind": "unit-or-integration",
      "source_path": "__tests__/integration/api/webhooks.test.ts"
    },
    {
      "name": "workflow.test.ts",
      "kind": "unit-or-integration",
      "source_path": "__tests__/integration/api/workflow.test.ts"
    },
    {
      "name": "claws-integration.test.ts",
      "kind": "unit-or-integration",
      "source_path": "__tests__/integration/mcp/claws-integration.test.ts"
    },
    {
      "name": "mcp-server.test.ts",
      "kind": "unit-or-integration",
      "source_path": "__tests__/integration/mcp/mcp-server.test.ts"
    },
    {
      "name": "platphorm-network.test.ts",
      "kind": "unit-or-integration",
      "source_path": "__tests__/integration/mcp/platphorm-network.test.ts"
    },
    {
      "name": "platphorm-service-extended.test.ts",
      "kind": "unit-or-integration",
      "source_path": "__tests__/integration/mcp/platphorm-service-extended.test.ts"
    },
    {
      "name": "automation.test.ts",
      "kind": "unit-or-integration",
      "source_path": "__tests__/performance/automation.test.ts"
    },
    {
      "name": "categories.test.ts",
      "kind": "unit-or-integration",
      "source_path": "__tests__/performance/categories.test.ts"
    },
    {
      "name": "settings.test.ts",
      "kind": "unit-or-integration",
      "source_path": "__tests__/performance/settings.test.ts"
    },
    {
      "name": "route.test.ts",
      "kind": "unit-or-integration",
      "source_path": "__tests__/unit/api/v1/workflow/route.test.ts"
    },
    {
      "name": "analytics-and-discovery-pages.test.tsx",
      "kind": "unit-or-integration",
      "source_path": "__tests__/unit/app/analytics-and-discovery-pages.test.tsx"
    },
    {
      "name": "explore-media-pages.test.tsx",
      "kind": "unit-or-integration",
      "source_path": "__tests__/unit/app/explore-media-pages.test.tsx"
    },
    {
      "name": "build-validation.test.ts",
      "kind": "unit-or-integration",
      "source_path": "__tests__/unit/build-validation.test.ts"
    },
    {
      "name": "attribution.test.tsx",
      "kind": "unit-or-integration",
      "source_path": "__tests__/unit/components/attribution.test.tsx"
    },
    {
      "name": "command-dialog.test.tsx",
      "kind": "unit-or-integration",
      "source_path": "__tests__/unit/components/command-dialog.test.tsx"
    },
    {
      "name": "content-type-icon.test.tsx",
      "kind": "unit-or-integration",
      "source_path": "__tests__/unit/components/content-type-icon.test.tsx"
    },
    {
      "name": "docs-list-client.test.tsx",
      "kind": "unit-or-integration",
      "source_path": "__tests__/unit/components/docs-list-client.test.tsx"
    },
    {
      "name": "markdown-renderer-xss.test.tsx",
      "kind": "unit-or-integration",
      "source_path": "__tests__/unit/components/markdown-renderer-xss.test.tsx"
    },
    {
      "name": "settings-page.test.tsx",
      "kind": "unit-or-integration",
      "source_path": "__tests__/unit/components/settings-page.test.tsx"
    },
    {
      "name": "share-buttons.test.tsx",
      "kind": "unit-or-integration",
      "source_path": "__tests__/unit/components/share-buttons.test.tsx"
    },
    {
      "name": "use-debounce.test.ts",
      "kind": "unit-or-integration",
      "source_path": "__tests__/unit/hooks/use-debounce.test.ts"
    },
    {
      "name": "use-mobile.test.ts",
      "kind": "unit-or-integration",
      "source_path": "__tests__/unit/hooks/use-mobile.test.ts"
    },
    {
      "name": "use-toast.test.ts",
      "kind": "unit-or-integration",
      "source_path": "__tests__/unit/hooks/use-toast.test.ts"
    },
    {
      "name": "aeo-geo.test.ts",
      "kind": "unit-or-integration",
      "source_path": "__tests__/unit/lib/aeo-geo.test.ts"
    },
    {
      "name": "analytics.test.ts",
      "kind": "unit-or-integration",
      "source_path": "__tests__/unit/lib/analytics.test.ts"
    },
    {
      "name": "api-helpers.test.ts",
      "kind": "unit-or-integration",
      "source_path": "__tests__/unit/lib/api-helpers.test.ts"
    },
    {
      "name": "api-types.test.ts",
      "kind": "unit-or-integration",
      "source_path": "__tests__/unit/lib/api-types.test.ts"
    },
    {
      "name": "auto-name.test.ts",
      "kind": "unit-or-integration",
      "source_path": "__tests__/unit/lib/auto-name.test.ts"
    },
    {
      "name": "base-url.test.ts",
      "kind": "unit-or-integration",
      "source_path": "__tests__/unit/lib/base-url.test.ts"
    },
    {
      "name": "cache-strategy.test.ts",
      "kind": "unit-or-integration",
      "source_path": "__tests__/unit/lib/cache-strategy.test.ts"
    },
    {
      "name": "claws-sdk.test.ts",
      "kind": "unit-or-integration",
      "source_path": "__tests__/unit/lib/claws-sdk.test.ts"
    },
    {
      "name": "client-trace.test.ts",
      "kind": "unit-or-integration",
      "source_path": "__tests__/unit/lib/client-trace.test.ts"
    },
    {
      "name": "content-metadata.test.ts",
      "kind": "unit-or-integration",
      "source_path": "__tests__/unit/lib/content-metadata.test.ts"
    },
    {
      "name": "content-types.test.ts",
      "kind": "unit-or-integration",
      "source_path": "__tests__/unit/lib/content-types.test.ts"
    },
    {
      "name": "db.test.ts",
      "kind": "unit-or-integration",
      "source_path": "__tests__/unit/lib/db.test.ts"
    },
    {
      "name": "emoji.test.ts",
      "kind": "unit-or-integration",
      "source_path": "__tests__/unit/lib/emoji.test.ts"
    },
    {
      "name": "extractors.test.ts",
      "kind": "unit-or-integration",
      "source_path": "__tests__/unit/lib/extractors.test.ts"
    },
    {
      "name": "fingerprint-enhanced.test.ts",
      "kind": "unit-or-integration",
      "source_path": "__tests__/unit/lib/fingerprint-enhanced.test.ts"
    },
    {
      "name": "fingerprint.test.ts",
      "kind": "unit-or-integration",
      "source_path": "__tests__/unit/lib/fingerprint.test.ts"
    },
    {
      "name": "i18n.test.ts",
      "kind": "unit-or-integration",
      "source_path": "__tests__/unit/lib/i18n.test.ts"
    },
    {
      "name": "logger.test.ts",
      "kind": "unit-or-integration",
      "source_path": "__tests__/unit/lib/logger.test.ts"
    },
    {
      "name": "markdown.test.ts",
      "kind": "unit-or-integration",
      "source_path": "__tests__/unit/lib/markdown.test.ts"
    },
    {
      "name": "mcp-network.test.ts",
      "kind": "unit-or-integration",
      "source_path": "__tests__/unit/lib/mcp-network.test.ts"
    },
    {
      "name": "mcp.test.ts",
      "kind": "unit-or-integration",
      "source_path": "__tests__/unit/lib/mcp.test.ts"
    },
    {
      "name": "node-network.test.ts",
      "kind": "unit-or-integration",
      "source_path": "__tests__/unit/lib/node-network.test.ts"
    },
    {
      "name": "platphorm-service.test.ts",
      "kind": "unit-or-integration",
      "source_path": "__tests__/unit/lib/platphorm-service.test.ts"
    },
    {
      "name": "query-builder.test.ts",
      "kind": "unit-or-integration",
      "source_path": "__tests__/unit/lib/query-builder.test.ts"
    },
    {
      "name": "seo-generator.test.ts",
      "kind": "unit-or-integration",
      "source_path": "__tests__/unit/lib/seo-generator.test.ts"
    },
    {
      "name": "ssrf.test.ts",
      "kind": "unit-or-integration",
      "source_path": "__tests__/unit/lib/ssrf.test.ts"
    },
    {
      "name": "tagging.test.ts",
      "kind": "unit-or-integration",
      "source_path": "__tests__/unit/lib/tagging.test.ts"
    },
    {
      "name": "trace.test.ts",
      "kind": "unit-or-integration",
      "source_path": "__tests__/unit/lib/trace.test.ts"
    },
    {
      "name": "utils.test.ts",
      "kind": "unit-or-integration",
      "source_path": "__tests__/unit/lib/utils.test.ts"
    },
    {
      "name": "version.test.ts",
      "kind": "unit-or-integration",
      "source_path": "__tests__/unit/lib/version.test.ts"
    },
    {
      "name": "middleware.test.ts",
      "kind": "unit-or-integration",
      "source_path": "__tests__/unit/middleware.test.ts"
    },
    {
      "name": "ssrf.test.ts",
      "kind": "unit-or-integration",
      "source_path": "__tests__/unit/ssrf.test.ts"
    },
    {
      "name": "ssrf-test.js",
      "kind": "unit-or-integration",
      "source_path": "lib/ssrf-test.js"
    },
    {
      "name": "playwright-global-setup.ts",
      "kind": "playwright",
      "source_path": "playwright-global-setup.ts"
    },
    {
      "name": "playwright-global-teardown.ts",
      "kind": "playwright",
      "source_path": "playwright-global-teardown.ts"
    },
    {
      "name": "playwright.config.ts",
      "kind": "playwright",
      "source_path": "playwright.config.ts"
    },
    {
      "name": "test-api.ts",
      "kind": "unit-or-integration",
      "source_path": "scripts/test-api.ts"
    }
  ],
  "ci": {
    "workflows": []
  },
  "containers": {
    "dockerfiles": [
      {
        "path": "Dockerfile"
      }
    ],
    "compose_files": [
      {
        "path": "docker-compose.yml"
      }
    ]
  },
  "env": {
    "example_files": [],
    "variables": [
      {
        "name": "BASE_URL",
        "source_paths": [
          "scripts/test-api.ts"
        ],
        "likely_secret": false
      },
      {
        "name": "CRON_SECRET",
        "source_paths": [
          "__tests__/integration/api/cron-categories.test.ts",
          "__tests__/performance/categories.test.ts",
          "app/api/cron/categories/route.ts",
          "app/api/cron/content-health/route.ts"
        ],
        "likely_secret": true
      },
      {
        "name": "DATABASE_URL",
        "source_paths": [
          "__tests__/unit/lib/db.test.ts",
          "__tests__/unit/lib/query-builder.test.ts",
          "__tests__/unit/lib/tagging.test.ts",
          "lib/db.ts",
          "PACKAGES.md",
          "playwright-global-setup.ts",
          "playwright-global-teardown.ts"
        ],
        "likely_secret": true
      },
      {
        "name": "EMOJI_CONTENT_URL",
        "source_paths": [
          "lib/mcp-network.ts"
        ],
        "likely_secret": false
      },
      {
        "name": "EMOJI_MCP_URL",
        "source_paths": [
          "lib/emoji.ts",
          "lib/mcp-network.ts",
          "lib/mcp-server.ts"
        ],
        "likely_secret": false
      },
      {
        "name": "LOG_LEVEL",
        "source_paths": [
          "lib/logger.ts"
        ],
        "likely_secret": false
      },
      {
        "name": "NEXT_PUBLIC_BASE_URL",
        "source_paths": [
          "__tests__/integration/api/content-ingest.test.ts",
          "__tests__/integration/api/discovery-routes.test.ts",
          "__tests__/integration/api/docs-openapi.test.ts",
          "__tests__/unit/build-validation.test.ts",
          "__tests__/unit/lib/base-url.test.ts",
          "__tests__/unit/lib/mcp-network.test.ts",
          "app/.well-known/agent.json/route.ts",
          "app/.well-known/mcp/route.ts",
          "app/.well-known/security.txt/route.ts",
          "app/api/docs/route.ts",
          "app/api/v1/docs/route.ts",
          "app/api/v1/ingest/route.ts",
          "app/content/[slug]/page.tsx",
          "app/docs/[slug]/page.tsx",
          "app/llms-index.json/route.ts",
          "app/llms.txt/route.ts",
          "app/robots.txt/route.ts",
          "app/rss.xml/route.ts",
          "app/sitemap.xml/route.ts",
          "lib/base-url.ts",
          "lib/mcp-network.ts"
        ],
        "likely_secret": false
      },
      {
        "name": "NEXT_PUBLIC_SITE_URL",
        "source_paths": [
          "app/api/mcp/register/route.ts"
        ],
        "likely_secret": false
      },
      {
        "name": "NODE_ENV",
        "source_paths": [
          "__tests__/integration/api/content-ingest.test.ts",
          "__tests__/unit/build-validation.test.ts",
          "__tests__/unit/lib/base-url.test.ts",
          "__tests__/unit/lib/trace.test.ts",
          "app/api/v1/version/route.ts",
          "lib/base-url.ts",
          "lib/db.ts",
          "lib/logger.ts",
          "lib/trace.ts",
          "lib/version.ts"
        ],
        "likely_secret": false
      },
      {
        "name": "PLATPHORM_API_KEY",
        "source_paths": [
          "__tests__/integration/mcp/platphorm-service-extended.test.ts",
          "__tests__/unit/lib/platphorm-service.test.ts",
          "lib/api-helpers.ts",
          "lib/mcp-server.ts",
          "lib/platphorm-service.ts"
        ],
        "likely_secret": true
      },
      {
        "name": "PLATPHORM_TRACE_ENDPOINT",
        "source_paths": [
          "__tests__/unit/build-validation.test.ts",
          "__tests__/unit/lib/trace.test.ts",
          "lib/trace.ts"
        ],
        "likely_secret": false
      },
      {
        "name": "SESSION_SALT",
        "source_paths": [
          "lib/fingerprint.ts"
        ],
        "likely_secret": true
      },
      {
        "name": "TEST_API_KEY",
        "source_paths": [
          "__tests__/e2e/ingest.spec.ts",
          "playwright-global-setup.ts",
          "playwright-global-teardown.ts"
        ],
        "likely_secret": true
      },
      {
        "name": "VERCEL_ENV",
        "source_paths": [
          "app/api/v1/version/route.ts",
          "lib/version.ts",
          "PACKAGES.md"
        ],
        "likely_secret": false
      },
      {
        "name": "VERCEL_GIT_COMMIT_DATE",
        "source_paths": [
          "app/api/v1/version/route.ts",
          "lib/version.ts"
        ],
        "likely_secret": false
      },
      {
        "name": "VERCEL_GIT_COMMIT_REF",
        "source_paths": [
          "lib/version.ts"
        ],
        "likely_secret": false
      },
      {
        "name": "VERCEL_GIT_COMMIT_SHA",
        "source_paths": [
          "app/api/v1/version/route.ts",
          "lib/version.ts"
        ],
        "likely_secret": false
      },
      {
        "name": "VERCEL_REGION",
        "source_paths": [
          "app/api/v1/version/route.ts",
          "lib/version.ts"
        ],
        "likely_secret": false
      },
      {
        "name": "VERCEL_URL",
        "source_paths": [
          "app/api/mcp/register/route.ts",
          "app/api/v1/version/route.ts",
          "lib/version.ts"
        ],
        "likely_secret": false
      }
    ]
  },
  "configs": [
    {
      "path": "docker-compose.yml"
    },
    {
      "path": "eslint.config.mjs"
    },
    {
      "path": "next.config.mjs"
    },
    {
      "path": "package.json"
    },
    {
      "path": "pnpm-workspace.yaml"
    },
    {
      "path": "postcss.config.mjs"
    },
    {
      "path": "tsconfig.json"
    },
    {
      "path": "tsconfig.tsbuildinfo"
    },
    {
      "path": "vercel.json"
    }
  ],
  "docs": {
    "readme_paths": [
      {
        "path": "README.md"
      }
    ],
    "doc_paths": [
      {
        "path": "app/docs/security.md"
      }
    ],
    "llms_context_paths": []
  },
  "discovery_files": {
    "openapi": [],
    "mcp": [
      {
        "path": "app/api/mcp/register/route.ts"
      },
      {
        "path": "app/api/mcp/route.ts"
      },
      {
        "path": "lib/mcp-server.ts"
      },
      {
        "path": "lib/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/mcp.json/route.ts"
      },
      {
        "path": "app/.well-known/mcp/route.ts"
      },
      {
        "path": "app/.well-known/security.txt/route.ts"
      },
      {
        "path": "app/.well-known/trust-policy.json/route.ts"
      },
      {
        "path": "app/.well-known/trust.json/route.ts"
      }
    ],
    "robots": [],
    "manifests": []
  },
  "integrations": [
    {
      "name": "MCP",
      "confidence": "medium",
      "evidence_paths": [
        "LOCAL_DEV.md",
        "package.json",
        "PACKAGES.md",
        "pnpm-lock.yaml"
      ]
    },
    {
      "name": "PlatPhorm",
      "confidence": "medium",
      "evidence_paths": [
        "__tests__/integration/api/content-metadata-routes.test.ts",
        "__tests__/integration/mcp/mcp-server.test.ts",
        "__tests__/integration/mcp/platphorm-service-extended.test.ts",
        "__tests__/unit/build-validation.test.ts",
        "__tests__/unit/lib/platphorm-service.test.ts",
        "__tests__/unit/lib/trace.test.ts",
        "API.md",
        "app/.well-known/agent.json/route.ts",
        "app/.well-known/trust.json/route.ts",
        "app/api/docs/route.ts",
        "lib/trace.ts",
        "LOCAL_DEV.md",
        "package.json"
      ]
    },
    {
      "name": "Postgres",
      "confidence": "medium",
      "evidence_paths": [
        "__tests__/unit/lib/aeo-geo.test.ts",
        "__tests__/unit/lib/db.test.ts",
        "__tests__/unit/lib/fingerprint-enhanced.test.ts",
        "__tests__/unit/lib/fingerprint.test.ts",
        "__tests__/unit/lib/query-builder.test.ts",
        "__tests__/unit/lib/tagging.test.ts",
        "CONTRIBUTING.md",
        "DEPLOYMENT.md",
        "package.json"
      ]
    },
    {
      "name": "Vercel",
      "confidence": "medium",
      "evidence_paths": [
        "app/api/mcp/register/route.ts",
        "app/api/og/route.tsx",
        "app/api/v1/version/route.ts",
        "app/layout.tsx",
        "lib/version.ts",
        "LOCAL_DEV.md",
        "package.json",
        "PACKAGES.md",
        "pnpm-lock.yaml"
      ]
    }
  ],
  "license": {
    "spdx": null,
    "paths": [
      {
        "path": "lib/extractors/license.ts"
      },
      {
        "path": "LICENSE"
      },
      {
        "path": "LICENSE.txt"
      }
    ]
  },
  "comments": [
    {
      "kind": "unsafe",
      "source_path": "__tests__/integration/api/content-slug-detail.test.ts",
      "line": 5,
      "text": "sql: Object.assign(vi.fn(), { unsafe: vi.fn() }),"
    },
    {
      "kind": "unsafe",
      "source_path": "__tests__/integration/api/content-slug-detail.test.ts",
      "line": 17,
      "text": "const mockSqlUnsafe = vi.mocked((sql as any).unsafe)"
    },
    {
      "kind": "unsafe",
      "source_path": "__tests__/integration/api/content-slug.test.ts",
      "line": 5,
      "text": "sql: Object.assign(vi.fn(), { unsafe: vi.fn() }),"
    },
    {
      "kind": "unsafe",
      "source_path": "__tests__/integration/api/content-slug.test.ts",
      "line": 17,
      "text": "const mockUnsafe = vi.mocked(sql.unsafe)"
    },
    {
      "kind": "unsafe",
      "source_path": "__tests__/integration/api/content.test.ts",
      "line": 5,
      "text": "sql: Object.assign(vi.fn(), { unsafe: vi.fn() }),"
    },
    {
      "kind": "unsafe",
      "source_path": "__tests__/integration/api/content.test.ts",
      "line": 17,
      "text": "const mockUnsafe = vi.mocked(sql.unsafe)"
    },
    {
      "kind": "security",
      "source_path": "__tests__/integration/api/discovery-routes.test.ts",
      "line": 516,
      "text": "// ── .well-known/security.txt ────────────────────────────────────────────────"
    },
    {
      "kind": "security",
      "source_path": "__tests__/integration/api/discovery-routes.test.ts",
      "line": 518,
      "text": "describe('GET /.well-known/security.txt', () => {"
    },
    {
      "kind": "security",
      "source_path": "__tests__/integration/api/discovery-routes.test.ts",
      "line": 526,
      "text": "const mod = await import('@/app/.well-known/security.txt/route')"
    },
    {
      "kind": "security",
      "source_path": "__tests__/integration/api/discovery-routes.test.ts",
      "line": 540,
      "text": "it('includes required security.txt fields', async () => {"
    },
    {
      "kind": "security",
      "source_path": "__tests__/integration/api/discovery-routes.test.ts",
      "line": 547,
      "text": "expect(text).toContain('Contact: mailto:security@platphormnews.com')"
    },
    {
      "kind": "security",
      "source_path": "__tests__/integration/api/docs-openapi.test.ts",
      "line": 51,
      "text": "it('includes security schemes', async () => {"
    },
    {
      "kind": "security",
      "source_path": "__tests__/integration/api/openapi-docs.test.ts",
      "line": 43,
      "text": "it('includes security schemes component', async () => {"
    },
    {
      "kind": "security",
      "source_path": "__tests__/integration/api/openapi-docs.test.ts",
      "line": 50,
      "text": "it('includes bearerAuth security scheme', async () => {"
    },
    {
      "kind": "unsafe",
      "source_path": "__tests__/integration/mcp/mcp-server.test.ts",
      "line": 103,
      "text": "// sql.unsafe(str) is used for dynamic ORDER BY fragments — always a no-op"
    },
    {
      "kind": "unsafe",
      "source_path": "__tests__/integration/mcp/mcp-server.test.ts",
      "line": 104,
      "text": "{ unsafe: vi.fn((s: string) => s) },"
    },
    {
      "kind": "unsafe",
      "source_path": "__tests__/integration/mcp/mcp-server.test.ts",
      "line": 240,
      "text": "sqlMock.unsafe.mockClear()"
    },
    {
      "kind": "unsafe",
      "source_path": "__tests__/integration/mcp/mcp-server.test.ts",
      "line": 375,
      "text": "expect(sqlMock.unsafe).toHaveBeenCalledWith('view_count DESC NULLS LAST')"
    },
    {
      "kind": "unsafe",
      "source_path": "__tests__/performance/automation.test.ts",
      "line": 24,
      "text": ";(sql as any).unsafe = vi.fn().mockResolvedValue([])"
    },
    {
      "kind": "unsafe",
      "source_path": "__tests__/performance/automation.test.ts",
      "line": 54,
      "text": "console.log(`Number of sql.unsafe calls: ${vi.mocked((sql as any).unsafe).mock.calls.length}`)"
    },
    {
      "kind": "unsafe",
      "source_path": "__tests__/performance/automation.test.ts",
      "line": 57,
      "text": "const totalCalls = vi.mocked(sql).mock.calls.length + vi.mocked((sql as any).unsafe).mock.calls.length"
    },
    {
      "kind": "unsafe",
      "source_path": "__tests__/performance/categories.test.ts",
      "line": 5,
      "text": "sql: Object.assign(vi.fn(), { unsafe: vi.fn() }),"
    },
    {
      "kind": "deprecated",
      "source_path": "__tests__/unit/hooks/use-mobile.test.ts",
      "line": 35,
      "text": "addListener: vi.fn(), // Deprecated"
    },
    {
      "kind": "deprecated",
      "source_path": "__tests__/unit/hooks/use-mobile.test.ts",
      "line": 36,
      "text": "removeListener: vi.fn(), // Deprecated"
    },
    {
      "kind": "security",
      "source_path": "__tests__/unit/lib/aeo-geo.test.ts",
      "line": 190,
      "text": "tags: ['authentication', 'api', 'security'],"
    },
    {
      "kind": "todo",
      "source_path": "__tests__/unit/lib/markdown.test.ts",
      "line": 144,
      "text": "const html = parseMarkdown('- [x] Done\\n- [ ] Todo', { enableGFM: true })"
    },
    {
      "kind": "todo",
      "source_path": "__tests__/unit/lib/markdown.test.ts",
      "line": 146,
      "text": "expect(html).toContain('Todo')"
    },
    {
      "kind": "security",
      "source_path": "__tests__/unit/lib/seo-generator.test.ts",
      "line": 62,
      "text": "const result = generateEmojiSummary('Security Best Practices')"
    },
    {
      "kind": "security",
      "source_path": "__tests__/unit/lib/seo-generator.test.ts",
      "line": 73,
      "text": "'javascript typescript python rust react database security performance testing deploy',"
    },
    {
      "kind": "security",
      "source_path": "__tests__/unit/lib/seo-generator.test.ts",
      "line": 75,
      "text": "['react', 'nextjs', 'database', 'security', 'performance']"
    },
    {
      "kind": "security",
      "source_path": "__tests__/unit/lib/tagging.test.ts",
      "line": 99,
      "text": "expect(autoDetectCategory('Understanding React Security', 'Content goes here')).toBe('security')"
    },
    {
      "kind": "security",
      "source_path": "__tests__/unit/lib/tagging.test.ts",
      "line": 105,
      "text": "expect(autoDetectCategory('Title', 'We should discuss owasp vulnerabilities')).toBe('security')"
    },
    {
      "kind": "security",
      "source_path": "__tests__/unit/lib/tagging.test.ts",
      "line": 110,
      "text": "// Both 'security' and 'database' match, but 'security' is earlier in the array"
    },
    {
      "kind": "security",
      "source_path": "__tests__/unit/lib/tagging.test.ts",
      "line": 111,
      "text": "expect(autoDetectCategory('SQL injection security', 'Content')).toBe('security')"
    },
    {
      "kind": "security",
      "source_path": "app/.well-known/agent.json/route.ts",
      "line": 30,
      "text": "security: 'security@platphormnews.com',"
    },
    {
      "kind": "security",
      "source_path": "app/.well-known/agent.json/route.ts",
      "line": 73,
      "text": "security_txt: `${baseUrl}/.well-known/security.txt`,"
    },
    {
      "kind": "security",
      "source_path": "app/.well-known/security.txt/route.ts",
      "line": 17,
      "text": "const securityTxt = `# OpenContent Security Policy"
    },
    {
      "kind": "security",
      "source_path": "app/.well-known/security.txt/route.ts",
      "line": 20,
      "text": "Contact: mailto:security@platphormnews.com"
    },
    {
      "kind": "security",
      "source_path": "app/.well-known/security.txt/route.ts",
      "line": 23,
      "text": "Canonical: ${baseUrl}/.well-known/security.txt"
    },
    {
      "kind": "security",
      "source_path": "app/.well-known/security.txt/route.ts",
      "line": 24,
      "text": "Policy: ${baseUrl}/content/security"
    },
    {
      "kind": "security",
      "source_path": "app/.well-known/trust.json/route.ts",
      "line": 48,
      "text": "wellKnown: ['/.well-known/mcp.json', '/.well-known/agents.json', '/.well-known/security.txt', '/.well-known/trust.json'],"
    },
    {
      "kind": "security",
      "source_path": "app/.well-known/trust.json/route.ts",
      "line": 59,
      "text": "securityContact: 'security@platphormnews.com',"
    },
    {
      "kind": "security",
      "source_path": "app/api/docs/route.ts",
      "line": 20,
      "text": "security: [{ bearerAuth: [] }],"
    },
    {
      "kind": "security",
      "source_path": "app/api/docs/route.ts",
      "line": 27,
      "text": "security: [],"
    },
    {
      "kind": "security",
      "source_path": "app/api/docs/route.ts",
      "line": 56,
      "text": "security: [],"
    },
    {
      "kind": "security",
      "source_path": "app/api/docs/route.ts",
      "line": 106,
      "text": "security: [],"
    },
    {
      "kind": "security",
      "source_path": "app/api/docs/route.ts",
      "line": 140,
      "text": "security: [],"
    },
    {
      "kind": "security",
      "source_path": "app/api/docs/route.ts",
      "line": 158,
      "text": "security: [],"
    },
    {
      "kind": "security",
      "source_path": "app/api/docs/route.ts",
      "line": 188,
      "text": "security: [],"
    },
    {
      "kind": "security",
      "source_path": "app/api/docs/route.ts",
      "line": 201,
      "text": "security: [],"
    },
    {
      "kind": "security",
      "source_path": "app/api/docs/route.ts",
      "line": 220,
      "text": "security: [],"
    },
    {
      "kind": "security",
      "source_path": "app/api/docs/route.ts",
      "line": 239,
      "text": "security: [],"
    },
    {
      "kind": "security",
      "source_path": "app/api/docs/route.ts",
      "line": 258,
      "text": "security: [],"
    },
    {
      "kind": "unsafe",
      "source_path": "app/api/docs/route.ts",
      "line": 260,
      "text": "responses: { 200: { description: 'URL preview metadata' }, 400: { description: 'Invalid or unsafe URL' } },"
    },
    {
      "kind": "security",
      "source_path": "app/api/docs/route.ts",
      "line": 266,
      "text": "security: [],"
    },
    {
      "kind": "unsafe",
      "source_path": "app/api/docs/route.ts",
      "line": 268,
      "text": "responses: { 200: { description: 'URL preview metadata' }, 400: { description: 'Invalid or unsafe URL' } },"
    },
    {
      "kind": "security",
      "source_path": "app/api/docs/route.ts",
      "line": 275,
      "text": "security: [],"
    },
    {
      "kind": "security",
      "source_path": "app/api/docs/route.ts",
      "line": 325,
      "text": "security: [],"
    },
    {
      "kind": "security",
      "source_path": "app/api/docs/route.ts",
      "line": 366,
      "text": "security: [],"
    },
    {
      "kind": "security",
      "source_path": "app/api/docs/route.ts",
      "line": 408,
      "text": "security: [],"
    },
    {
      "kind": "unsafe",
      "source_path": "app/api/v1/content/[slug]/route.ts",
      "line": 269,
      "text": "const result = await sql.unsafe(`"
    },
    {
      "kind": "unsafe",
      "source_path": "app/api/v1/content/route.ts",
      "line": 184,
      "text": "const countResult = await sql.unsafe(`"
    },
    {
      "kind": "unsafe",
      "source_path": "app/api/v1/content/route.ts",
      "line": 193,
      "text": "const content = await sql.unsafe(`"
    },
    {
      "kind": "security",
      "source_path": "app/api/v1/docs/[slug]/route.ts",
      "line": 14,
      "text": "'security': 'SECURITY.md',"
    },
    {
      "kind": "security",
      "source_path": "app/api/v1/docs/route.ts",
      "line": 14,
      "text": "'SECURITY.md',"
    },
    {
      "kind": "security",
      "source_path": "app/api/v1/docs/route.ts",
      "line": 41,
      "text": "'SECURITY.md': { description: 'Security policy and reporting', category: 'security' },"
    },
    {
      "kind": "security",
      "source_path": "app/api/v1/ingest/route.ts",
      "line": 571,
      "text": "[/security|vulnerability|cve/i, 'security'],"
    },
    {
      "kind": "security",
      "source_path": "app/docs/security.md",
      "line": 1,
      "text": "# Domain Trust Security Policy"
    },
    {
      "kind": "security",
      "source_path": "app/docs/security.md",
      "line": 3,
      "text": "This document outlines the security policies and implementations surrounding domain trust within the OpenContent platform, specifically focusing on the `platphormnews.com` domain and its subdomains."
    },
    {
      "kind": "security",
      "source_path": "app/docs/security.md",
      "line": 37,
      "text": "## Security Considerations"
    },
    {
      "kind": "security",
      "source_path": "app/robots.txt/route.ts",
      "line": 34,
      "text": "# Security Policy"
    },
    {
      "kind": "security",
      "source_path": "app/robots.txt/route.ts",
      "line": 35,
      "text": "# Security: ${baseUrl}/.well-known/security.txt"
    },
    {
      "kind": "security",
      "source_path": "app/settings/page.tsx",
      "line": 289,
      "text": "<TabsTrigger value=\"security\">Security</TabsTrigger>"
    },
    {
      "kind": "security",
      "source_path": "app/settings/page.tsx",
      "line": 524,
      "text": "{ key: 'security', label: 'Security', desc: 'Security policy' },"
    },
    {
      "kind": "security",
      "source_path": "app/settings/page.tsx",
      "line": 560,
      "text": "{/* Security Tab */}"
    },
    {
      "kind": "security",
      "source_path": "app/settings/page.tsx",
      "line": 561,
      "text": "<TabsContent value=\"security\" className=\"space-y-6\">"
    },
    {
      "kind": "security",
      "source_path": "ARCHITECTURE.md",
      "line": 136,
      "text": "## Security Model"
    },
    {
      "kind": "security",
      "source_path": "ARCHITECTURE.md",
      "line": 149,
      "text": "- Content Security Policy headers"
    },
    {
      "kind": "security",
      "source_path": "DEPLOYMENT.md",
      "line": 19,
      "text": "### Security"
    },
    {
      "kind": "security",
      "source_path": "DEPLOYMENT.md",
      "line": 20,
      "text": "- [ ] Review SECURITY.md for vulnerability reporting"
    },
    {
      "kind": "unsafe",
      "source_path": "lib/db.ts",
      "line": 45,
      "text": "unsafe(rawSql: string, values?: unknown[]): Promise<Row[]>"
    },
    {
      "kind": "security",
      "source_path": "lib/emoji.ts",
      "line": 158,
      "text": "'security': '🔒',"
    },
    {
      "kind": "deprecated",
      "source_path": "lib/emoji.ts",
      "line": 197,
      "text": "'deprecated': '⏰',"
    },
    {
      "kind": "todo",
      "source_path": "lib/i18n.ts",
      "line": 262,
      "text": "'home.view_all': 'Ver Todo',"
    },
    {
      "kind": "security",
      "source_path": "lib/mcp-server.ts",
      "line": 48,
      "text": "'security':        { file: 'SECURITY.md',         description: 'Security policy and reporting',                       category: 'security'     },"
    },
    {
      "kind": "unsafe",
      "source_path": "lib/mcp-server.ts",
      "line": 350,
      "text": "ORDER BY ${sql.unsafe(orderBy)}"
    },
    {
      "kind": "unsafe",
      "source_path": "lib/mcp-server.ts",
      "line": 841,
      "text": "ORDER BY ${sql.unsafe(orderBy)}"
    },
    {
      "kind": "unsafe",
      "source_path": "lib/mcp-server.ts",
      "line": 1416,
      "text": "ORDER BY ${sql.unsafe(orderBy)}"
    },
    {
      "kind": "security",
      "source_path": "lib/mcp-server.ts",
      "line": 2015,
      "text": "category: z.string().optional().describe('Filter by category (overview, technical, api, features, compliance, ecosystem, integrations, guides, planning, development, community, releases, security, design)'),"
    },
    {
      "kind": "security",
      "source_path": "lib/mcp-server.ts",
      "line": 2034,
      "text": "slug: z.string().describe('Doc slug: readme | architecture | api | features | standards | ecosystem | integrations | use-cases | roadmap | testing | contributing | changelog | security | support | code-of-conduct | contributors | logging | "
    },
    {
      "kind": "security",
      "source_path": "lib/seo-generator.ts",
      "line": 95,
      "text": "'security': '🛡️',"
    },
    {
      "kind": "security",
      "source_path": "lib/tagging.ts",
      "line": 5,
      "text": "{ pattern: /\\bsecurity|vulnerability|cve|exploit|breach|pentest|owasp\\b/i, category: 'security' },"
    },
    {
      "kind": "security",
      "source_path": "License FAQ.md",
      "line": 23,
      "text": "Yes, if your use is non-commercial as defined by the license. Internal evaluation, research, development, testing, security review, accessibility work, and internal experimentation are generally allowed if you are not directly or indirectly"
    },
    {
      "kind": "security",
      "source_path": "LICENSE.txt",
      "line": 13,
      "text": "“Non-commercial purposes” include personal use by an individual, academic research and development, journalism, testing, evaluation, interoperability work, security review, accessibility work, and internal use by your own organization where"
    },
    {
      "kind": "deprecated",
      "source_path": "PACKAGES.md",
      "line": 106,
      "text": "from `@modelcontextprotocol/sdk`. The hand-rolled JSON-RPC approach is deprecated inside"
    },
    {
      "kind": "deprecated",
      "source_path": "pnpm-lock.yaml",
      "line": 1762,
      "text": "deprecated: This is a stub types definition. dompurify provides its own type definitions, so you do not need this installed."
    },
    {
      "kind": "security",
      "source_path": "PRINCIPLES.md",
      "line": 81,
      "text": "- `SECURITY.md` must describe real controls and response expectations."
    },
    {
      "kind": "security",
      "source_path": "public/humans.txt",
      "line": 34,
      "text": "Security: Michael Barbine"
    },
    {
      "kind": "security",
      "source_path": "public/humans.txt",
      "line": 74,
      "text": "Security: OWASP Top 10 Aware"
    },
    {
      "kind": "security",
      "source_path": "public/humans.txt",
      "line": 98,
      "text": "Security Policy:  https://opencontent.platphormnews.com/api/v1/content/security"
    },
    {
      "kind": "security",
      "source_path": "public/humans.txt",
      "line": 153,
      "text": "Security: security@platphormnews.com"
    },
    {
      "kind": "security",
      "source_path": "README.md",
      "line": 39,
      "text": "- [SECURITY.md](./SECURITY.md)"
    },
    {
      "kind": "security",
      "source_path": "README.md",
      "line": 48,
      "text": "- [SECURITY.md](./SECURITY.md): security and traceability policy"
    },
    {
      "kind": "security",
      "source_path": "SECURITY.md",
      "line": 1,
      "text": "# Security Policy"
    },
    {
      "kind": "security",
      "source_path": "SECURITY.md",
      "line": 5,
      "text": "Security in OpenContent includes more than prevention. It also includes traceability, diagnosability, and containment. A secure system that cannot be debugged under failure is not operationally secure."
    },
    {
      "kind": "security",
      "source_path": "SECURITY.md",
      "line": 16,
      "text": "Do not open a public issue for security vulnerabilities."
    },
    {
      "kind": "security",
      "source_path": "SECURITY.md",
      "line": 18,
      "text": "Report privately to: `security@platphormnews.com`"
    },
    {
      "kind": "security",
      "source_path": "SECURITY.md",
      "line": 37,
      "text": "## Security Scope"
    },
    {
      "kind": "security",
      "source_path": "SECURITY.md",
      "line": 55,
      "text": "## Security Objectives"
    },
    {
      "kind": "unsafe",
      "source_path": "SECURITY.md",
      "line": 65,
      "text": "- defend against malformed input, unsafe fetch targets, and avoidable query amplification"
    },
    {
      "kind": "unsafe",
      "source_path": "SECURITY.md",
      "line": 73,
      "text": "- avoid logging secrets, tokens, or unsafe raw payloads"
    },
    {
      "kind": "security",
      "source_path": "SECURITY.md",
      "line": 80,
      "text": "## Baseline Security Controls"
    },
    {
      "kind": "security",
      "source_path": "SECURITY.md",
      "line": 94,
      "text": "Security incidents and production failures should be traceable across the full request path."
    },
    {
      "kind": "security",
      "source_path": "SECURITY.md",
      "line": 190,
      "text": "## Testing Security and Resilience"
    },
    {
      "kind": "security",
      "source_path": "SECURITY.md",
      "line": 192,
      "text": "Security verification should include:"
    },
    {
      "kind": "unsafe",
      "source_path": "SECURITY.md",
      "line": 195,
      "text": "- integration tests for protected routes and unsafe input handling"
    },
    {
      "kind": "security",
      "source_path": "SECURITY.md",
      "line": 205,
      "text": "- inclusion in a security thanks list"
    },
    {
      "kind": "security",
      "source_path": "vercel.json",
      "line": 49,
      "text": "\"key\": \"Strict-Transport-Security\","
    }
  ],
  "security": {
    "secret_risks": [],
    "unsafe_patterns": [
      {
        "name": "child-process-exec",
        "confidence": "medium",
        "evidence_paths": [
          "__tests__/integration/api/content-ingest.test.ts",
          "app/api/v1/content/ingest/route.ts",
          "app/api/v1/ingest/route.ts",
          "components/markdown-renderer.tsx",
          "lib/markdown.ts"
        ]
      },
      {
        "name": "dangerously-set-html",
        "confidence": "medium",
        "evidence_paths": [
          "app/content/[slug]/page.tsx",
          "app/docs/[slug]/page.tsx",
          "app/page.tsx",
          "components/ui/chart.tsx"
        ]
      },
      {
        "name": "sql-injection-review-needed",
        "confidence": "medium",
        "evidence_paths": [
          "app/[locale]/dashboard/page.tsx",
          "app/api/v1/automation/route.ts",
          "app/api/v1/content/[slug]/route.ts",
          "app/api/v1/settings/route.ts",
          "app/api/v1/workflow/route.ts",
          "app/llms-full.txt/route.ts",
          "app/page.tsx",
          "lib/api-helpers.ts",
          "lib/extractors/shared.ts",
          "lib/mcp-server.ts"
        ]
      },
      {
        "name": "ssrf-review-needed",
        "confidence": "medium",
        "evidence_paths": [
          "__tests__/integration/mcp/platphorm-service-extended.test.ts",
          "app/api/cron/content-health/route.ts",
          "app/api/v1/automation/route.ts",
          "app/api/v1/ingest/route.ts",
          "app/api/v1/workflow/route.ts",
          "components/docs-layout.tsx",
          "lib/extractors/apple-podcasts.ts",
          "lib/extractors/bluesky.ts",
          "lib/extractors/boxcast.ts",
          "lib/extractors/facebook.ts",
          "lib/extractors/index.ts",
          "lib/extractors/instagram.ts",
          "lib/extractors/podcast.ts",
          "lib/extractors/x.ts",
          "lib/mcp-server.ts"
        ]
      }
    ],
    "sensitive_data_indicators": [
      {
        "name": "api_key",
        "confidence": "medium",
        "evidence_paths": [
          "__tests__/e2e/ingest.spec.ts",
          "__tests__/integration/api/content-metadata-routes.test.ts",
          "__tests__/integration/mcp/mcp-server.test.ts",
          "__tests__/integration/mcp/platphorm-service-extended.test.ts",
          "__tests__/unit/api/v1/workflow/route.test.ts",
          "__tests__/unit/lib/platphorm-service.test.ts",
          "API.md",
          "app/.well-known/agent.json/route.ts",
          "app/.well-known/trust.json/route.ts",
          "app/[locale]/dashboard/page.tsx",
          "app/api/docs/route.ts",
          "app/api/mcp/register/route.ts",
          "app/api/v1/categories/route.ts",
          "app/api/v1/content/[slug]/metadata/route.ts",
          "app/api/v1/documents/[slug]/route.ts",
          "app/api/v1/documents/route.ts",
          "app/api/v1/keys/route.ts",
          "app/api/v1/submissions/[id]/route.ts",
          "app/api/v1/webhooks/route.ts",
          "app/docs/api/page.tsx"
        ]
      },
      {
        "name": "card",
        "confidence": "medium",
        "evidence_paths": [
          "__tests__/integration/api/content-metadata-routes.test.ts",
          "__tests__/integration/mcp/mcp-server.test.ts",
          "__tests__/unit/app/explore-media-pages.test.tsx",
          "__tests__/unit/lib/content-metadata.test.ts",
          "app/.well-known/trust.json/route.ts",
          "app/[locale]/dashboard/page.tsx",
          "app/analytics/page.tsx",
          "app/api/docs/route.ts",
          "app/api/mcp/register/route.ts",
          "app/api/v1/content/[slug]/metadata/route.ts",
          "app/api/v1/content/[slug]/route.ts",
          "app/api/v1/content/[slug]/share-card/route.ts",
          "app/api/v1/content/[slug]/twitter-card/route.ts",
          "app/api/v1/content/ingest/route.ts",
          "app/api/v1/content/route.ts",
          "app/api/v1/url-preview/route.ts",
          "app/content-policy/page.tsx",
          "app/content/[slug]/page.tsx",
          "app/discover/page.tsx",
          "app/docs/[slug]/not-found.tsx"
        ]
      },
      {
        "name": "email",
        "confidence": "medium",
        "evidence_paths": [
          "__tests__/integration/api/content-ingest.test.ts",
          "__tests__/integration/api/content-metadata-routes.test.ts",
          "__tests__/integration/api/ingest.test.ts",
          "__tests__/integration/mcp/mcp-server.test.ts",
          "__tests__/unit/components/share-buttons.test.tsx",
          "__tests__/unit/lib/content-metadata.test.ts",
          "__tests__/unit/lib/seo-generator.test.ts",
          "API.md",
          "app/.well-known/agent.json/route.ts",
          "app/api/docs/route.ts",
          "app/api/v1/content/ingest/route.ts",
          "app/api/v1/content/route.ts",
          "app/api/v1/documents/[slug]/route.ts",
          "app/api/v1/documents/route.ts",
          "app/api/v1/submissions/[id]/route.ts",
          "app/api/v1/submissions/route.ts",
          "app/content/[slug]/page.tsx",
          "app/docs/api/page.tsx",
          "app/llms-index.json/route.ts",
          "app/page.tsx"
        ]
      },
      {
        "name": "fingerprint",
        "confidence": "medium",
        "evidence_paths": [
          "__tests__/integration/api/session.test.ts",
          "__tests__/unit/lib/fingerprint-enhanced.test.ts",
          "__tests__/unit/lib/fingerprint.test.ts",
          "app/api/cron/categories/route.ts",
          "app/api/session/route.ts",
          "app/llms.txt/route.ts",
          "app/submit/page.tsx",
          "ARCHITECTURE.md",
          "CHANGELOG.md",
          "lib/fingerprint.ts",
          "lib/logger.ts",
          "PACKAGES.md",
          "public/schemas/core.schema.json",
          "public/schemas/item.schema.json",
          "public/schemas/observability.schema.json",
          "public/schemas/platphorm-universal-schema-pack.json",
          "public/schemas/realm.schema.json",
          "scripts/001-init-schema.sql"
        ]
      },
      {
        "name": "health",
        "confidence": "medium",
        "evidence_paths": [
          "__tests__/e2e/api-health.spec.ts",
          "__tests__/integration/api/cron-content-health.test.ts",
          "__tests__/integration/api/discovery-routes.test.ts",
          "__tests__/integration/api/health.test.ts",
          "__tests__/integration/api/v1/automation/route.test.ts",
          "__tests__/integration/mcp/mcp-server.test.ts",
          "__tests__/unit/app/analytics-and-discovery-pages.test.tsx",
          "__tests__/unit/lib/analytics.test.ts",
          "__tests__/unit/lib/mcp-network.test.ts",
          "__tests__/unit/middleware.test.ts",
          "app/.well-known/trust.json/route.ts",
          "app/analytics/page.tsx",
          "app/api/cron/content-health/route.ts",
          "app/api/health/route.ts",
          "app/api/v1/automation/route.ts",
          "app/api/v1/health/route.ts",
          "app/docs/api/page.tsx",
          "app/robots.txt/route.ts",
          "CODE_OF_CONDUCT.md",
          "components/accessible-theme-switcher.tsx"
        ]
      },
      {
        "name": "ip address",
        "confidence": "medium",
        "evidence_paths": [
          "__tests__/integration/api/ingest.test.ts",
          "app/.well-known/trust.json/route.ts",
          "app/api/v1/content/ingest/route.ts",
          "app/docs/security.md",
          "lib/ssrf.ts"
        ]
      },
      {
        "name": "location",
        "confidence": "medium",
        "evidence_paths": [
          "__tests__/integration/mcp/platphorm-service-extended.test.ts",
          "__tests__/unit/lib/client-trace.test.ts",
          "app/api/v1/ingest/route.ts",
          "app/submit/page.tsx",
          "lib/client-trace.ts",
          "next.config.mjs",
          "PACKAGES.md",
          "public/humans.txt"
        ]
      },
      {
        "name": "password",
        "confidence": "medium",
        "evidence_paths": [
          "__tests__/performance/settings.test.ts",
          "app/api/v1/settings/route.ts",
          "app/settings/page.tsx",
          "components/content-metadata-actions.tsx",
          "docker-compose.yml",
          "lib/i18n.ts"
        ]
      },
      {
        "name": "password_hash",
        "confidence": "medium",
        "evidence_paths": [
          "app/api/v1/settings/route.ts"
        ]
      },
      {
        "name": "pii",
        "confidence": "medium",
        "evidence_paths": [
          "pnpm-lock.yaml"
        ]
      },
      {
        "name": "secret-like environment variables",
        "confidence": "medium",
        "evidence_paths": [
          "package.json"
        ]
      },
      {
        "name": "session_token",
        "confidence": "medium",
        "evidence_paths": [
          "__tests__/integration/api/session.test.ts",
          "app/docs/mcp/page.tsx",
          "lib/db.ts",
          "lib/fingerprint.ts",
          "scripts/001-init-schema.sql"
        ]
      },
      {
        "name": "token",
        "confidence": "medium",
        "evidence_paths": [
          "__tests__/integration/api/cron-content-health.test.ts",
          "__tests__/integration/api/session.test.ts",
          "app/.well-known/trust.json/route.ts",
          "app/docs/api/page.tsx",
          "app/docs/mcp/page.tsx",
          "app/llms-full.txt/route.ts",
          "app/llms.txt/route.ts",
          "DEPLOYMENT.md",
          "lib/api-helpers.ts",
          "lib/db.ts",
          "lib/fingerprint.ts",
          "lib/mcp-server.ts",
          "PACKAGES.md",
          "pnpm-lock.yaml",
          "scripts/001-init-schema.sql",
          "SECURITY.md"
        ]
      }
    ]
  },
  "generated_at": "2026-05-16T16:44:17.003Z"
}
