{
  "schema_version": "1.0.0",
  "scanner": {
    "name": "global-capability-catalog",
    "version": "0.1.0"
  },
  "repo": {
    "id": "github-recent__mbarbine__platphorm-emoji",
    "name": "mbarbine__platphorm-emoji",
    "path": "/Users/bwm.barbinewarnermichael/Documents/github/repositories/github-recent/mbarbine__platphorm-emoji",
    "relative_path": "github-recent/mbarbine__platphorm-emoji",
    "remote_url": "git@github.com:mbarbine/platphorm-emoji.git",
    "default_branch": "main",
    "current_commit": "4ac7f72dcb87e3ea1a193f03ec6fe8bc3cdf1a04"
  },
  "languages": [
    {
      "language": "TypeScript",
      "files": 187,
      "bytes": 669880
    },
    {
      "language": "JSON",
      "files": 7,
      "bytes": 596244
    },
    {
      "language": "YAML",
      "files": 1,
      "bytes": 186927
    },
    {
      "language": "Markdown",
      "files": 8,
      "bytes": 37120
    },
    {
      "language": "JavaScript",
      "files": 5,
      "bytes": 11101
    },
    {
      "language": "CSS",
      "files": 1,
      "bytes": 4249
    }
  ],
  "frameworks": [
    {
      "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": "platphorm-emoji",
        "version": "0.1.0",
        "scripts": {
          "dev": "next dev --turbo",
          "build": "next build",
          "start": "next start",
          "lint": "next lint",
          "test": "vitest run"
        },
        "dependencies": {
          "@hookform/resolvers": "^3.10.0",
          "@radix-ui/react-accordion": "1.2.2",
          "@radix-ui/react-alert-dialog": "1.1.4",
          "@radix-ui/react-aspect-ratio": "1.1.1",
          "@radix-ui/react-avatar": "1.1.2",
          "@radix-ui/react-checkbox": "1.1.3",
          "@radix-ui/react-collapsible": "1.1.2",
          "@radix-ui/react-context-menu": "2.2.4",
          "@radix-ui/react-dialog": "1.1.4",
          "@radix-ui/react-dropdown-menu": "2.1.4",
          "@radix-ui/react-hover-card": "1.1.4",
          "@radix-ui/react-label": "2.1.1",
          "@radix-ui/react-menubar": "1.1.4",
          "@radix-ui/react-navigation-menu": "1.2.3",
          "@radix-ui/react-popover": "1.1.4",
          "@radix-ui/react-progress": "1.1.1",
          "@radix-ui/react-radio-group": "1.2.2",
          "@radix-ui/react-scroll-area": "1.2.2",
          "@radix-ui/react-select": "2.1.4",
          "@radix-ui/react-separator": "1.1.1",
          "@radix-ui/react-slider": "1.2.2",
          "@radix-ui/react-slot": "1.1.1",
          "@radix-ui/react-switch": "1.1.2",
          "@radix-ui/react-tabs": "1.1.2",
          "@radix-ui/react-toast": "1.2.4",
          "@radix-ui/react-toggle": "1.1.1",
          "@radix-ui/react-toggle-group": "1.1.1",
          "@radix-ui/react-tooltip": "1.1.6",
          "autoprefixer": "^10.5.0",
          "class-variance-authority": "^0.7.1",
          "clsx": "^2.1.1",
          "cmdk": "1.1.1",
          "date-fns": "4.1.0",
          "embla-carousel-react": "8.5.1",
          "input-otp": "1.4.1",
          "lucide-react": "^0.544.0",
          "next": "16.1.6",
          "next-themes": "^0.4.6",
          "react": "19.2.3",
          "react-day-picker": "9.13.2",
          "react-dom": "19.2.3",
          "react-hook-form": "^7.75.0",
          "react-resizable-panels": "^2.1.9",
          "recharts": "2.15.0",
          "sonner": "^1.7.4",
          "swr": "^2.4.1",
          "tailwind-merge": "^2.6.1",
          "tailwindcss-animate": "^1.0.7",
          "vaul": "^1.1.2",
          "zod": "^3.25.76"
        },
        "dev_dependencies": {
          "@tailwindcss/postcss": "^4.2.4",
          "@types/next": "^9.0.0",
          "@types/node": "^22.19.17",
          "@types/react": "19.2.7",
          "@types/react-dom": "19.2.3",
          "postcss": "^8.5.14",
          "tailwindcss": "^3.4.19",
          "typescript": "5.7.3",
          "vitest": "^4.1.5"
        }
      }
    ]
  },
  "routes": {
    "api_routes": [
      {
        "route": "/cron/refresh",
        "source_path": "app/api/cron/refresh/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "GET",
          "POST"
        ]
      },
      {
        "route": "/docs",
        "source_path": "app/api/docs/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/emoji/all",
        "source_path": "app/api/emoji/all/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/emoji/categories",
        "source_path": "app/api/emoji/categories/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/emoji/local-search",
        "source_path": "app/api/emoji/local-search/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/emoji/recent",
        "source_path": "app/api/emoji/recent/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/emoji/score",
        "source_path": "app/api/emoji/score/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/emoji/search",
        "source_path": "app/api/emoji/search/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/emoji/suggest",
        "source_path": "app/api/emoji/suggest/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/emoji/timeline",
        "source_path": "app/api/emoji/timeline/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/factors",
        "source_path": "app/api/factors/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",
          "OPTIONS",
          "POST"
        ]
      },
      {
        "route": "/results/[id]",
        "source_path": "app/api/results/[id]/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/results",
        "source_path": "app/api/results/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/score",
        "source_path": "app/api/score/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "POST"
        ]
      },
      {
        "route": "/v1/combinations/score",
        "source_path": "app/api/v1/combinations/score/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "POST"
        ]
      },
      {
        "route": "/v1/datasets/emoji/inventory/exists",
        "source_path": "app/api/v1/datasets/emoji/inventory/exists/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "POST"
        ]
      },
      {
        "route": "/v1/datasets/emoji/inventory/search",
        "source_path": "app/api/v1/datasets/emoji/inventory/search/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/v1/datasets/emoji/keywords/search",
        "source_path": "app/api/v1/datasets/emoji/keywords/search/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/v1/emoji/from-description",
        "source_path": "app/api/v1/emoji/from-description/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/v1/emoji/score",
        "source_path": "app/api/v1/emoji/score/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "POST"
        ]
      },
      {
        "route": "/v1/emojis/[codepoint]",
        "source_path": "app/api/v1/emojis/[codepoint]/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/v1/emojis/categories",
        "source_path": "app/api/v1/emojis/categories/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/v1/emojis",
        "source_path": "app/api/v1/emojis/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/v1/emojis/search",
        "source_path": "app/api/v1/emojis/search/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/v1/health",
        "source_path": "app/api/v1/health/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/v1/mcp/discover",
        "source_path": "app/api/v1/mcp/discover/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/v1/mcp/register",
        "source_path": "app/api/v1/mcp/register/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "GET",
          "POST"
        ]
      },
      {
        "route": "/v1/mcp/tools",
        "source_path": "app/api/v1/mcp/tools/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/v1/model/accessibility-review",
        "source_path": "app/api/v1/model/accessibility-review/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "POST"
        ]
      },
      {
        "route": "/v1/model/explain-sentiment",
        "source_path": "app/api/v1/model/explain-sentiment/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "POST"
        ]
      },
      {
        "route": "/v1/model/image-prompt",
        "source_path": "app/api/v1/model/image-prompt/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "POST"
        ]
      },
      {
        "route": "/v1/model/improve-proposal",
        "source_path": "app/api/v1/model/improve-proposal/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "POST"
        ]
      },
      {
        "route": "/v1/model/proposal-draft",
        "source_path": "app/api/v1/model/proposal-draft/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "POST"
        ]
      },
      {
        "route": "/v1/model/status",
        "source_path": "app/api/v1/model/status/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/v1/proposals/[id]/download",
        "source_path": "app/api/v1/proposals/[id]/download/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/v1/proposals/[id]/export",
        "source_path": "app/api/v1/proposals/[id]/export/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "POST"
        ]
      },
      {
        "route": "/v1/proposals/[id]",
        "source_path": "app/api/v1/proposals/[id]/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "DELETE",
          "GET",
          "PUT"
        ]
      },
      {
        "route": "/v1/proposals/[id]/trace",
        "source_path": "app/api/v1/proposals/[id]/trace/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/v1/proposals",
        "source_path": "app/api/v1/proposals/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "GET",
          "POST"
        ]
      },
      {
        "route": "/v1/proposals/score",
        "source_path": "app/api/v1/proposals/score/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "POST"
        ]
      },
      {
        "route": "/v1/score",
        "source_path": "app/api/v1/score/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "POST"
        ]
      },
      {
        "route": "/v1/sentiment/score",
        "source_path": "app/api/v1/sentiment/score/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "POST"
        ]
      },
      {
        "route": "/v1/timeline",
        "source_path": "app/api/v1/timeline/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/v1/unicode/refresh",
        "source_path": "app/api/v1/unicode/refresh/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "GET",
          "POST"
        ]
      },
      {
        "route": "/v1/unicode/snapshot",
        "source_path": "app/api/v1/unicode/snapshot/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "GET"
        ]
      }
    ],
    "app_routes": [
      {
        "route": "/about",
        "source_path": "app/about/page.tsx",
        "kind": "next-app-page",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/api",
        "source_path": "app/api/page.tsx",
        "kind": "next-app-page",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/docs",
        "source_path": "app/docs/page.tsx",
        "kind": "next-app-page",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/explore",
        "source_path": "app/explore/page.tsx",
        "kind": "next-app-page",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/faq",
        "source_path": "app/faq/page.tsx",
        "kind": "next-app-page",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/new",
        "source_path": "app/new/page.tsx",
        "kind": "next-app-page",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/propose",
        "source_path": "app/propose/page.tsx",
        "kind": "next-app-page",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/recently-added",
        "source_path": "app/recently-added/page.tsx",
        "kind": "next-app-page",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/results/[id]",
        "source_path": "app/results/[id]/page.tsx",
        "kind": "next-app-page",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/submit",
        "source_path": "app/submit/page.tsx",
        "kind": "next-app-page",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/timeline",
        "source_path": "app/timeline/page.tsx",
        "kind": "next-app-page",
        "methods": [
          "GET"
        ]
      }
    ]
  },
  "components": [
    {
      "name": "emoji-explorer",
      "kind": "ui-component",
      "source_path": "components/explore/emoji-explorer.tsx"
    },
    {
      "name": "cta-section",
      "kind": "ui-component",
      "source_path": "components/landing/cta-section.tsx"
    },
    {
      "name": "emoji-score-hero",
      "kind": "ui-component",
      "source_path": "components/landing/emoji-score-hero.tsx"
    },
    {
      "name": "factors-section",
      "kind": "ui-component",
      "source_path": "components/landing/factors-section.tsx"
    },
    {
      "name": "hero-section",
      "kind": "ui-component",
      "source_path": "components/landing/hero-section.tsx"
    },
    {
      "name": "how-it-works-section",
      "kind": "ui-component",
      "source_path": "components/landing/how-it-works-section.tsx"
    },
    {
      "name": "proposal-cta-section",
      "kind": "ui-component",
      "source_path": "components/landing/proposal-cta-section.tsx"
    },
    {
      "name": "sentiment-score-panel",
      "kind": "ui-component",
      "source_path": "components/landing/sentiment-score-panel.tsx"
    },
    {
      "name": "page-breadcrumbs",
      "kind": "ui-component",
      "source_path": "components/page-breadcrumbs.tsx"
    },
    {
      "name": "ph3ar-easter-egg",
      "kind": "ui-component",
      "source_path": "components/ph3ar-easter-egg.tsx"
    },
    {
      "name": "recent-emoji-view",
      "kind": "ui-component",
      "source_path": "components/recent/recent-emoji-view.tsx"
    },
    {
      "name": "factor-scores",
      "kind": "ui-component",
      "source_path": "components/results/factor-scores.tsx"
    },
    {
      "name": "result-detail",
      "kind": "ui-component",
      "source_path": "components/results/result-detail.tsx"
    },
    {
      "name": "score-radar-chart",
      "kind": "ui-component",
      "source_path": "components/results/score-radar-chart.tsx"
    },
    {
      "name": "tier-badge",
      "kind": "ui-component",
      "source_path": "components/results/tier-badge.tsx"
    },
    {
      "name": "site-footer",
      "kind": "ui-component",
      "source_path": "components/site-footer.tsx"
    },
    {
      "name": "site-header",
      "kind": "ui-component",
      "source_path": "components/site-header.tsx"
    },
    {
      "name": "proposal-form",
      "kind": "ui-component",
      "source_path": "components/submit/proposal-form.tsx"
    },
    {
      "name": "proposal-generator",
      "kind": "ui-component",
      "source_path": "components/submit/proposal-generator.tsx"
    },
    {
      "name": "theme-provider",
      "kind": "ui-component",
      "source_path": "components/theme-provider.tsx"
    },
    {
      "name": "theme-toggle",
      "kind": "ui-component",
      "source_path": "components/theme-toggle.tsx"
    },
    {
      "name": "timeline-view",
      "kind": "ui-component",
      "source_path": "components/timeline/timeline-view.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",
      "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": "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-otp",
      "kind": "ui-component",
      "source_path": "components/ui/input-otp.tsx"
    },
    {
      "name": "input",
      "kind": "ui-component",
      "source_path": "components/ui/input.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": "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": [],
    "migrations": []
  },
  "tests": [
    {
      "name": "api-routes.test.ts",
      "kind": "unit-or-integration",
      "source_path": "tests/api-routes.test.ts"
    },
    {
      "name": "route.test.ts",
      "kind": "unit-or-integration",
      "source_path": "tests/app/api/v1/datasets/emoji/inventory/exists/route.test.ts"
    },
    {
      "name": "config.test.ts",
      "kind": "unit-or-integration",
      "source_path": "tests/config.test.ts"
    },
    {
      "name": "emoji-database.test.ts",
      "kind": "unit-or-integration",
      "source_path": "tests/emoji-database.test.ts"
    },
    {
      "name": "emoji-from-description.test.ts",
      "kind": "unit-or-integration",
      "source_path": "tests/emoji-from-description.test.ts"
    },
    {
      "name": "i18n.test.ts",
      "kind": "unit-or-integration",
      "source_path": "tests/i18n.test.ts"
    },
    {
      "name": "llms-discovery.test.ts",
      "kind": "unit-or-integration",
      "source_path": "tests/llms-discovery.test.ts"
    },
    {
      "name": "mcp-client-mock.test.ts",
      "kind": "unit-or-integration",
      "source_path": "tests/mcp-client-mock.test.ts"
    },
    {
      "name": "mcp-client.test.ts",
      "kind": "unit-or-integration",
      "source_path": "tests/mcp-client.test.ts"
    },
    {
      "name": "mcp-manifest.test.ts",
      "kind": "unit-or-integration",
      "source_path": "tests/mcp-manifest.test.ts"
    },
    {
      "name": "mcp-registration.test.ts",
      "kind": "unit-or-integration",
      "source_path": "tests/mcp-registration.test.ts"
    },
    {
      "name": "scoring-engine.test.ts",
      "kind": "unit-or-integration",
      "source_path": "tests/scoring-engine.test.ts"
    },
    {
      "name": "store.test.ts",
      "kind": "unit-or-integration",
      "source_path": "tests/store.test.ts"
    },
    {
      "name": "types.test.ts",
      "kind": "unit-or-integration",
      "source_path": "tests/types.test.ts"
    },
    {
      "name": "utils.test.ts",
      "kind": "unit-or-integration",
      "source_path": "tests/utils.test.ts"
    }
  ],
  "ci": {
    "workflows": []
  },
  "containers": {
    "dockerfiles": [],
    "compose_files": []
  },
  "env": {
    "example_files": [],
    "variables": [
      {
        "name": "AI_GATEWAY_API_KEY",
        "source_paths": [
          "lib/model-adapter.ts"
        ],
        "likely_secret": true
      },
      {
        "name": "AI_GATEWAY_MODEL",
        "source_paths": [
          "lib/model-adapter.ts"
        ],
        "likely_secret": false
      },
      {
        "name": "ANTHROPIC_API_KEY",
        "source_paths": [
          "lib/model-adapter.ts"
        ],
        "likely_secret": true
      },
      {
        "name": "DATABASE_URL",
        "source_paths": [
          "app/api/health/route.ts",
          "app/api/v1/health/route.ts"
        ],
        "likely_secret": true
      },
      {
        "name": "GOOGLE_GENERATIVE_AI_API_KEY",
        "source_paths": [
          "lib/model-adapter.ts"
        ],
        "likely_secret": true
      },
      {
        "name": "MODEL_NAME",
        "source_paths": [
          "lib/model-adapter.ts"
        ],
        "likely_secret": false
      },
      {
        "name": "NODE_ENV",
        "source_paths": [
          "app/api/health/route.ts",
          "app/api/v1/health/route.ts"
        ],
        "likely_secret": false
      },
      {
        "name": "OPENAI_API_KEY",
        "source_paths": [
          "lib/model-adapter.ts"
        ],
        "likely_secret": true
      },
      {
        "name": "PLATPHORM_API_KEY",
        "source_paths": [
          "lib/platform.ts"
        ],
        "likely_secret": true
      },
      {
        "name": "PLATPHORM_TRACE_ENDPOINT",
        "source_paths": [
          "lib/platform.ts"
        ],
        "likely_secret": false
      },
      {
        "name": "VERCEL_ENV",
        "source_paths": [
          "app/api/health/route.ts",
          "app/api/v1/health/route.ts"
        ],
        "likely_secret": false
      }
    ]
  },
  "configs": [
    {
      "path": "next.config.mjs"
    },
    {
      "path": "package.json"
    },
    {
      "path": "postcss.config.mjs"
    },
    {
      "path": "tailwind.config.ts"
    },
    {
      "path": "tsconfig.json"
    },
    {
      "path": "vercel.json"
    }
  ],
  "docs": {
    "readme_paths": [
      {
        "path": "README.md"
      }
    ],
    "doc_paths": [
      {
        "path": "docs/MCP_INTEGRATION.md"
      },
      {
        "path": "docs/PROJECT_PLAN.md"
      }
    ],
    "llms_context_paths": []
  },
  "discovery_files": {
    "openapi": [],
    "mcp": [
      {
        "path": "app/api/mcp/route.ts"
      },
      {
        "path": "lib/mcp-server.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/llms-index/route.ts"
      },
      {
        "path": "app/.well-known/mcp.json/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": "Anthropic",
      "confidence": "medium",
      "evidence_paths": [
        "lib/model-adapter.ts",
        "package.json"
      ]
    },
    {
      "name": "Google",
      "confidence": "medium",
      "evidence_paths": [
        "lib/model-adapter.ts",
        "package.json"
      ]
    },
    {
      "name": "OpenAI",
      "confidence": "medium",
      "evidence_paths": [
        "lib/model-adapter.ts",
        "package.json"
      ]
    },
    {
      "name": "PlatPhorm",
      "confidence": "medium",
      "evidence_paths": [
        "app/api/docs/route.ts",
        "app/api/page.tsx",
        "app/docs/page.tsx",
        "app/faq/page.tsx",
        "components/submit/proposal-form.tsx",
        "lib/discovery.ts",
        "lib/mcp-server.ts",
        "lib/model-adapter.ts",
        "lib/platform.ts",
        "package.json"
      ]
    },
    {
      "name": "Postgres",
      "confidence": "medium",
      "evidence_paths": [
        "app/api/health/route.ts",
        "app/api/v1/health/route.ts",
        "package.json"
      ]
    },
    {
      "name": "Vercel",
      "confidence": "medium",
      "evidence_paths": [
        "app/api/health/route.ts",
        "app/api/v1/health/route.ts",
        "package.json"
      ]
    }
  ],
  "license": {
    "spdx": null,
    "paths": [
      {
        "path": "LICENSE.txt"
      }
    ]
  },
  "comments": [
    {
      "kind": "security",
      "source_path": ".Jules/sentinel.md",
      "line": 1,
      "text": "## 2025-02-18 - [Fix CORS Misconfiguration and Missing Security Headers]"
    },
    {
      "kind": "security",
      "source_path": ".Jules/sentinel.md",
      "line": 2,
      "text": "**Vulnerability:** The application had an invalid CORS configuration where `Access-Control-Allow-Origin: *` was combined with `Access-Control-Allow-Credentials: true` across its proxy middleware and API routes in `next.config.mjs` and `prox"
    },
    {
      "kind": "security",
      "source_path": ".Jules/sentinel.md",
      "line": 3,
      "text": "**Learning:** This misconfiguration breaks modern browser cross-origin requests requiring credentials since browsers actively block wildcard origins combined with credentials. Security headers are also crucial for defense in depth."
    },
    {
      "kind": "security",
      "source_path": ".Jules/sentinel.md",
      "line": 4,
      "text": "**Prevention:** Ensure wildcard origins (`*`) are never paired with `Access-Control-Allow-Credentials: true`. Instead, conditionally reflect the incoming `Origin` header if it matches trusted domains (e.g., `.platphormnews.com`). Additional"
    },
    {
      "kind": "security",
      "source_path": ".Jules/sentinel.md",
      "line": 6,
      "text": "**Vulnerability:** The application had an invalid CORS configuration in `/app/api/mcp/route.ts` where `Access-Control-Allow-Origin: \"*\"` was combined with `Access-Control-Allow-Credentials: \"true\"`. This is a serious security risk that allo"
    },
    {
      "kind": "security",
      "source_path": "data/emoji-list-v17.txt",
      "line": 13443,
      "text": "security"
    },
    {
      "kind": "security",
      "source_path": "docs/MCP_INTEGRATION.md",
      "line": 275,
      "text": "## Security"
    },
    {
      "kind": "security",
      "source_path": "lib/discovery.ts",
      "line": 183,
      "text": "security: []"
    },
    {
      "kind": "security",
      "source_path": "lib/discovery.ts",
      "line": 215,
      "text": "${endpoint.public ? \"security: []\" : \"security:\\n        - PlatPhormBearer: []\\n        - PlatPhormHeader: []\"}"
    },
    {
      "kind": "security",
      "source_path": "lib/discovery.ts",
      "line": 333,
      "text": "Canonical: ${siteConfig.url}/.well-known/security.txt"
    },
    {
      "kind": "unsafe",
      "source_path": "lib/emoji-intelligence.ts",
      "line": 143,
      "text": "\"unsafe\","
    },
    {
      "kind": "deprecated",
      "source_path": "lib/mcp-client.ts",
      "line": 218,
      "text": "description: \"Deprecated. Phase 1 uses the bundled Unicode snapshot only.\","
    },
    {
      "kind": "security",
      "source_path": "lib/mcp-server.ts",
      "line": 153,
      "text": "\"/.well-known/security.txt\","
    },
    {
      "kind": "security",
      "source_path": "lib/mcp-server.ts",
      "line": 170,
      "text": "files: [\"/llms.txt\", \"/llms-full.txt\", \"/llms-index.json\", \"/openapi.yaml\", \"/rss.xml\", \"/feed.xml\", \"/sitemap.xml\", \"/sitemap-main.xml\", \"/robots.txt\", \"/.well-known/mcp.json\", \"/.well-known/agents.json\", \"/.well-known/security.txt\", \"/.we"
    },
    {
      "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": "security",
      "source_path": "next.config.mjs",
      "line": 14,
      "text": "{ key: \"Strict-Transport-Security\", value: \"max-age=31536000; includeSubDomains\" },"
    },
    {
      "kind": "deprecated",
      "source_path": "pnpm-lock.yaml",
      "line": 1699,
      "text": "deprecated: This is a stub types definition. next provides its own type definitions, so you do not need this installed."
    }
  ],
  "security": {
    "secret_risks": [],
    "unsafe_patterns": [
      {
        "name": "dangerously-set-html",
        "confidence": "medium",
        "evidence_paths": [
          ".Jules/sentinel.md",
          "app/faq/page.tsx",
          "app/layout.tsx",
          "components/page-breadcrumbs.tsx",
          "components/ui/chart.tsx"
        ]
      },
      {
        "name": "sql-injection-review-needed",
        "confidence": "medium",
        "evidence_paths": [
          "components/timeline/timeline-view.tsx",
          "lib/discovery.ts"
        ]
      },
      {
        "name": "ssrf-review-needed",
        "confidence": "medium",
        "evidence_paths": [
          "components/recent/recent-emoji-view.tsx",
          "components/results/result-detail.tsx",
          "components/timeline/timeline-view.tsx",
          "lib/mcp-client.ts"
        ]
      }
    ],
    "sensitive_data_indicators": [
      {
        "name": "api_key",
        "confidence": "medium",
        "evidence_paths": [
          "app/api/docs/route.ts",
          "app/api/page.tsx",
          "app/docs/page.tsx",
          "app/faq/page.tsx",
          "components/submit/proposal-form.tsx",
          "lib/discovery.ts",
          "lib/mcp-server.ts",
          "lib/model-adapter.ts",
          "lib/platform.ts",
          "tests/api-routes.test.ts",
          "tests/config.test.ts"
        ]
      },
      {
        "name": "card",
        "confidence": "medium",
        "evidence_paths": [
          ".Jules/palette.md",
          ".Jules/sentinel.md",
          "app/about/page.tsx",
          "app/api/page.tsx",
          "app/docs/page.tsx",
          "app/faq/page.tsx",
          "app/globals.css",
          "app/layout.tsx",
          "components/explore/emoji-explorer.tsx",
          "components/landing/cta-section.tsx",
          "components/landing/emoji-score-hero.tsx",
          "components/landing/factors-section.tsx",
          "components/landing/proposal-cta-section.tsx",
          "components/landing/sentiment-score-panel.tsx",
          "components/ph3ar-easter-egg.tsx",
          "components/recent/recent-emoji-view.tsx",
          "components/results/factor-scores.tsx",
          "components/results/result-detail.tsx",
          "components/results/score-radar-chart.tsx",
          "components/submit/proposal-form.tsx"
        ]
      },
      {
        "name": "email",
        "confidence": "medium",
        "evidence_paths": [
          "components/site-footer.tsx",
          "data/emoji-list-v17.txt",
          "lib/config.ts",
          "lib/discovery.ts",
          "lib/mcp-client.ts",
          "tests/api-routes.test.ts",
          "tests/config.test.ts",
          "tests/llms-discovery.test.ts"
        ]
      },
      {
        "name": "fingerprint",
        "confidence": "medium",
        "evidence_paths": [
          "data/emoji-list-v17.txt",
          "data/emoji-recent.json"
        ]
      },
      {
        "name": "health",
        "confidence": "medium",
        "evidence_paths": [
          "app/api/health/route.ts",
          "app/layout.tsx",
          "data/emoji-db.json",
          "data/emoji-list-v17.txt",
          "docs/MCP_INTEGRATION.md",
          "lib/discovery.ts",
          "lib/mcp-client.ts",
          "lib/mcp-server.ts",
          "README.md",
          "tests/api-routes.test.ts",
          "tests/llms-discovery.test.ts",
          "tests/mcp-client-mock.test.ts",
          "tests/mcp-client.test.ts"
        ]
      },
      {
        "name": "location",
        "confidence": "medium",
        "evidence_paths": [
          ".Jules/bolt.md",
          "app/api/v1/datasets/emoji/keywords/search/route.ts",
          "components/results/result-detail.tsx",
          "data/emoji-list-v17.txt"
        ]
      },
      {
        "name": "password",
        "confidence": "medium",
        "evidence_paths": [
          "data/emoji-list-v17.txt"
        ]
      },
      {
        "name": "pii",
        "confidence": "medium",
        "evidence_paths": [
          "pnpm-lock.yaml"
        ]
      },
      {
        "name": "secret-like environment variables",
        "confidence": "medium",
        "evidence_paths": [
          "package.json"
        ]
      },
      {
        "name": "token",
        "confidence": "medium",
        "evidence_paths": [
          "lib/discovery.ts",
          "lib/emoji-intelligence.ts",
          "lib/platform.ts",
          "next.config.mjs",
          "pnpm-lock.yaml",
          "proxy.ts"
        ]
      }
    ]
  },
  "generated_at": "2026-05-16T16:44:14.355Z"
}
