{
  "schema_version": "1.0.0",
  "scanner": {
    "name": "global-capability-catalog",
    "version": "0.1.0"
  },
  "repo": {
    "id": "github-recent__mbarbine__ph3ar-chatbot",
    "name": "mbarbine__ph3ar-chatbot",
    "path": "/Users/bwm.barbinewarnermichael/Documents/github/repositories/github-recent/mbarbine__ph3ar-chatbot",
    "relative_path": "github-recent/mbarbine__ph3ar-chatbot",
    "remote_url": "git@github.com:mbarbine/ph3ar-chatbot.git",
    "default_branch": "main",
    "current_commit": "2034051403cba2728e0233f28693b8331b553fa1"
  },
  "languages": [
    {
      "language": "TypeScript",
      "files": 125,
      "bytes": 428620
    },
    {
      "language": "YAML",
      "files": 1,
      "bytes": 272846
    },
    {
      "language": "JSON",
      "files": 13,
      "bytes": 55276
    },
    {
      "language": "JavaScript",
      "files": 2,
      "bytes": 13302
    },
    {
      "language": "SQL",
      "files": 6,
      "bytes": 4874
    },
    {
      "language": "CSS",
      "files": 1,
      "bytes": 4164
    },
    {
      "language": "Markdown",
      "files": 1,
      "bytes": 3622
    }
  ],
  "frameworks": [
    {
      "name": "Drizzle ORM",
      "confidence": "high",
      "evidence_paths": [
        "package.json"
      ]
    },
    {
      "name": "Next.js",
      "confidence": "high",
      "evidence_paths": [
        "package.json"
      ]
    },
    {
      "name": "React",
      "confidence": "high",
      "evidence_paths": [
        "package.json"
      ]
    },
    {
      "name": "Tailwind CSS",
      "confidence": "high",
      "evidence_paths": [
        "package.json"
      ]
    }
  ],
  "packages": {
    "package_manager": "pnpm",
    "manifests": [
      {
        "path": "package.json",
        "name": "ai-chatbot",
        "version": "3.0.3",
        "scripts": {
          "dev": "next dev --turbo",
          "build": "tsx lib/db/migrate && next build",
          "start": "next start",
          "lint": "next lint && biome lint --write --unsafe",
          "lint:fix": "next lint --fix && biome lint --write --unsafe",
          "format": "biome format --write",
          "db:generate": "drizzle-kit generate",
          "db:migrate": "npx tsx lib/db/migrate.ts",
          "db:studio": "drizzle-kit studio",
          "db:push": "drizzle-kit push",
          "db:pull": "drizzle-kit pull",
          "db:check": "drizzle-kit check",
          "db:up": "drizzle-kit up",
          "test": "export PLAYWRIGHT=True && pnpm exec playwright test --workers=4"
        },
        "dependencies": {
          "@ai-sdk/react": "^1.2.8",
          "@ai-sdk/xai": "^1.2.10",
          "@codemirror/lang-javascript": "^6.2.2",
          "@codemirror/lang-python": "^6.1.6",
          "@codemirror/state": "^6.5.0",
          "@codemirror/theme-one-dark": "^6.1.2",
          "@codemirror/view": "^6.35.3",
          "@radix-ui/react-alert-dialog": "^1.1.2",
          "@radix-ui/react-dialog": "^1.1.2",
          "@radix-ui/react-dropdown-menu": "^2.1.2",
          "@radix-ui/react-icons": "^1.3.0",
          "@radix-ui/react-label": "^2.1.0",
          "@radix-ui/react-select": "^2.1.2",
          "@radix-ui/react-separator": "^1.1.0",
          "@radix-ui/react-slot": "^1.1.0",
          "@radix-ui/react-tooltip": "^1.1.3",
          "@radix-ui/react-visually-hidden": "^1.1.0",
          "@vercel/analytics": "^1.3.1",
          "@vercel/blob": "^0.24.1",
          "@vercel/postgres": "^0.10.0",
          "ai": "4.3.4",
          "bcrypt-ts": "^5.0.2",
          "class-variance-authority": "^0.7.0",
          "classnames": "^2.5.1",
          "clsx": "^2.1.1",
          "codemirror": "^6.0.1",
          "date-fns": "^4.1.0",
          "diff-match-patch": "^1.0.5",
          "dotenv": "^16.4.5",
          "drizzle-orm": "^0.34.0",
          "fast-deep-equal": "^3.1.3",
          "framer-motion": "^11.3.19",
          "geist": "^1.3.1",
          "lucide-react": "^0.446.0",
          "nanoid": "^5.0.8",
          "next": "15.3.0-canary.31",
          "next-auth": "5.0.0-beta.25",
          "next-themes": "^0.3.0",
          "orderedmap": "^2.1.1",
          "papaparse": "^5.5.2",
          "postgres": "^3.4.4",
          "prosemirror-example-setup": "^1.2.3",
          "prosemirror-inputrules": "^1.4.0",
          "prosemirror-markdown": "^1.13.1",
          "prosemirror-model": "^1.23.0",
          "prosemirror-schema-basic": "^1.2.3",
          "prosemirror-schema-list": "^1.4.1",
          "prosemirror-state": "^1.4.3",
          "prosemirror-view": "^1.34.3",
          "react": "19.0.0-rc-45804af1-20241021",
          "react-data-grid": "7.0.0-beta.47",
          "react-dom": "19.0.0-rc-45804af1-20241021",
          "react-markdown": "^9.0.1",
          "react-resizable-panels": "^2.1.7",
          "remark-gfm": "^4.0.0",
          "server-only": "^0.0.1",
          "sonner": "^1.5.0",
          "swr": "^2.2.5",
          "tailwind-merge": "^2.5.2",
          "tailwindcss-animate": "^1.0.7",
          "usehooks-ts": "^3.1.0",
          "zod": "^3.23.8"
        },
        "dev_dependencies": {
          "@biomejs/biome": "1.9.4",
          "@playwright/test": "^1.50.1",
          "@tailwindcss/typography": "^0.5.15",
          "@types/d3-scale": "^4.0.8",
          "@types/node": "^22.8.6",
          "@types/papaparse": "^5.3.15",
          "@types/pdf-parse": "^1.1.4",
          "@types/react": "^18",
          "@types/react-dom": "^18",
          "drizzle-kit": "^0.25.0",
          "eslint": "^8.57.0",
          "eslint-config-next": "14.2.5",
          "eslint-config-prettier": "^9.1.0",
          "eslint-import-resolver-typescript": "^3.6.3",
          "eslint-plugin-tailwindcss": "^3.17.5",
          "postcss": "^8",
          "tailwindcss": "^3.4.1",
          "tsx": "^4.19.1",
          "typescript": "^5.6.3"
        }
      }
    ]
  },
  "routes": {
    "api_routes": [],
    "app_routes": [
      {
        "route": "/login",
        "source_path": "app/(auth)/login/page.tsx",
        "kind": "next-app-page",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/register",
        "source_path": "app/(auth)/register/page.tsx",
        "kind": "next-app-page",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/chat/[id]",
        "source_path": "app/(chat)/chat/[id]/page.tsx",
        "kind": "next-app-page",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/(chat)",
        "source_path": "app/(chat)/page.tsx",
        "kind": "next-app-page",
        "methods": [
          "GET"
        ]
      }
    ]
  },
  "components": [
    {
      "name": "app-sidebar",
      "kind": "ui-component",
      "source_path": "components/app-sidebar.tsx"
    },
    {
      "name": "artifact-actions",
      "kind": "ui-component",
      "source_path": "components/artifact-actions.tsx"
    },
    {
      "name": "artifact-close-button",
      "kind": "ui-component",
      "source_path": "components/artifact-close-button.tsx"
    },
    {
      "name": "artifact-messages",
      "kind": "ui-component",
      "source_path": "components/artifact-messages.tsx"
    },
    {
      "name": "artifact",
      "kind": "ui-component",
      "source_path": "components/artifact.tsx"
    },
    {
      "name": "auth-form",
      "kind": "ui-component",
      "source_path": "components/auth-form.tsx"
    },
    {
      "name": "chat-header",
      "kind": "ui-component",
      "source_path": "components/chat-header.tsx"
    },
    {
      "name": "chat",
      "kind": "ui-component",
      "source_path": "components/chat.tsx"
    },
    {
      "name": "code-block",
      "kind": "ui-component",
      "source_path": "components/code-block.tsx"
    },
    {
      "name": "code-editor",
      "kind": "ui-component",
      "source_path": "components/code-editor.tsx"
    },
    {
      "name": "console",
      "kind": "ui-component",
      "source_path": "components/console.tsx"
    },
    {
      "name": "create-artifact",
      "kind": "ui-component",
      "source_path": "components/create-artifact.tsx"
    },
    {
      "name": "data-stream-handler",
      "kind": "ui-component",
      "source_path": "components/data-stream-handler.tsx"
    },
    {
      "name": "diffview",
      "kind": "ui-component",
      "source_path": "components/diffview.tsx"
    },
    {
      "name": "document-preview",
      "kind": "ui-component",
      "source_path": "components/document-preview.tsx"
    },
    {
      "name": "document-skeleton",
      "kind": "ui-component",
      "source_path": "components/document-skeleton.tsx"
    },
    {
      "name": "document",
      "kind": "ui-component",
      "source_path": "components/document.tsx"
    },
    {
      "name": "greeting",
      "kind": "ui-component",
      "source_path": "components/greeting.tsx"
    },
    {
      "name": "icons",
      "kind": "ui-component",
      "source_path": "components/icons.tsx"
    },
    {
      "name": "image-editor",
      "kind": "ui-component",
      "source_path": "components/image-editor.tsx"
    },
    {
      "name": "markdown",
      "kind": "ui-component",
      "source_path": "components/markdown.tsx"
    },
    {
      "name": "message-actions",
      "kind": "ui-component",
      "source_path": "components/message-actions.tsx"
    },
    {
      "name": "message-editor",
      "kind": "ui-component",
      "source_path": "components/message-editor.tsx"
    },
    {
      "name": "message-reasoning",
      "kind": "ui-component",
      "source_path": "components/message-reasoning.tsx"
    },
    {
      "name": "message",
      "kind": "ui-component",
      "source_path": "components/message.tsx"
    },
    {
      "name": "messages",
      "kind": "ui-component",
      "source_path": "components/messages.tsx"
    },
    {
      "name": "model-selector",
      "kind": "ui-component",
      "source_path": "components/model-selector.tsx"
    },
    {
      "name": "multimodal-input",
      "kind": "ui-component",
      "source_path": "components/multimodal-input.tsx"
    },
    {
      "name": "preview-attachment",
      "kind": "ui-component",
      "source_path": "components/preview-attachment.tsx"
    },
    {
      "name": "sheet-editor",
      "kind": "ui-component",
      "source_path": "components/sheet-editor.tsx"
    },
    {
      "name": "sidebar-history-item",
      "kind": "ui-component",
      "source_path": "components/sidebar-history-item.tsx"
    },
    {
      "name": "sidebar-history",
      "kind": "ui-component",
      "source_path": "components/sidebar-history.tsx"
    },
    {
      "name": "sidebar-toggle",
      "kind": "ui-component",
      "source_path": "components/sidebar-toggle.tsx"
    },
    {
      "name": "sidebar-user-nav",
      "kind": "ui-component",
      "source_path": "components/sidebar-user-nav.tsx"
    },
    {
      "name": "sign-out-form",
      "kind": "ui-component",
      "source_path": "components/sign-out-form.tsx"
    },
    {
      "name": "submit-button",
      "kind": "ui-component",
      "source_path": "components/submit-button.tsx"
    },
    {
      "name": "suggested-actions",
      "kind": "ui-component",
      "source_path": "components/suggested-actions.tsx"
    },
    {
      "name": "suggestion",
      "kind": "ui-component",
      "source_path": "components/suggestion.tsx"
    },
    {
      "name": "text-editor",
      "kind": "ui-component",
      "source_path": "components/text-editor.tsx"
    },
    {
      "name": "theme-provider",
      "kind": "ui-component",
      "source_path": "components/theme-provider.tsx"
    },
    {
      "name": "toast",
      "kind": "ui-component",
      "source_path": "components/toast.tsx"
    },
    {
      "name": "toolbar",
      "kind": "ui-component",
      "source_path": "components/toolbar.tsx"
    },
    {
      "name": "alert-dialog",
      "kind": "ui-component",
      "source_path": "components/ui/alert-dialog.tsx"
    },
    {
      "name": "button",
      "kind": "ui-component",
      "source_path": "components/ui/button.tsx"
    },
    {
      "name": "card",
      "kind": "ui-component",
      "source_path": "components/ui/card.tsx"
    },
    {
      "name": "dropdown-menu",
      "kind": "ui-component",
      "source_path": "components/ui/dropdown-menu.tsx"
    },
    {
      "name": "input",
      "kind": "ui-component",
      "source_path": "components/ui/input.tsx"
    },
    {
      "name": "label",
      "kind": "ui-component",
      "source_path": "components/ui/label.tsx"
    },
    {
      "name": "select",
      "kind": "ui-component",
      "source_path": "components/ui/select.tsx"
    },
    {
      "name": "separator",
      "kind": "ui-component",
      "source_path": "components/ui/separator.tsx"
    },
    {
      "name": "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": "textarea",
      "kind": "ui-component",
      "source_path": "components/ui/textarea.tsx"
    },
    {
      "name": "tooltip",
      "kind": "ui-component",
      "source_path": "components/ui/tooltip.tsx"
    },
    {
      "name": "version-footer",
      "kind": "ui-component",
      "source_path": "components/version-footer.tsx"
    },
    {
      "name": "visibility-selector",
      "kind": "ui-component",
      "source_path": "components/visibility-selector.tsx"
    },
    {
      "name": "weather",
      "kind": "ui-component",
      "source_path": "components/weather.tsx"
    }
  ],
  "data_models": [
    {
      "name": "models",
      "kind": "schema-file",
      "source_path": "lib/ai/models.ts"
    },
    {
      "name": "0000_keen_devos",
      "kind": "migration",
      "source_path": "lib/db/migrations/0000_keen_devos.sql"
    },
    {
      "name": "0001_sparkling_blue_marvel",
      "kind": "migration",
      "source_path": "lib/db/migrations/0001_sparkling_blue_marvel.sql"
    },
    {
      "name": "0002_wandering_riptide",
      "kind": "migration",
      "source_path": "lib/db/migrations/0002_wandering_riptide.sql"
    },
    {
      "name": "0003_cloudy_glorian",
      "kind": "migration",
      "source_path": "lib/db/migrations/0003_cloudy_glorian.sql"
    },
    {
      "name": "0004_odd_slayback",
      "kind": "migration",
      "source_path": "lib/db/migrations/0004_odd_slayback.sql"
    },
    {
      "name": "0005_wooden_whistler",
      "kind": "migration",
      "source_path": "lib/db/migrations/0005_wooden_whistler.sql"
    },
    {
      "name": "schema",
      "kind": "schema-file",
      "source_path": "lib/db/schema.ts"
    }
  ],
  "database": {
    "databases": [
      "drizzle",
      "postgres"
    ],
    "schemas": [
      {
        "path": "lib/db/schema.ts"
      }
    ],
    "migrations": [
      {
        "path": "lib/db/migrations/0000_keen_devos.sql"
      },
      {
        "path": "lib/db/migrations/0001_sparkling_blue_marvel.sql"
      },
      {
        "path": "lib/db/migrations/0002_wandering_riptide.sql"
      },
      {
        "path": "lib/db/migrations/0003_cloudy_glorian.sql"
      },
      {
        "path": "lib/db/migrations/0004_odd_slayback.sql"
      },
      {
        "path": "lib/db/migrations/0005_wooden_whistler.sql"
      },
      {
        "path": "lib/db/migrations/meta/_journal.json"
      },
      {
        "path": "lib/db/migrations/meta/0000_snapshot.json"
      },
      {
        "path": "lib/db/migrations/meta/0001_snapshot.json"
      },
      {
        "path": "lib/db/migrations/meta/0002_snapshot.json"
      },
      {
        "path": "lib/db/migrations/meta/0003_snapshot.json"
      },
      {
        "path": "lib/db/migrations/meta/0004_snapshot.json"
      },
      {
        "path": "lib/db/migrations/meta/0005_snapshot.json"
      }
    ]
  },
  "tests": [
    {
      "name": "models.test.ts",
      "kind": "unit-or-integration",
      "source_path": "lib/ai/models.test.ts"
    },
    {
      "name": "playwright.config.ts",
      "kind": "playwright",
      "source_path": "playwright.config.ts"
    },
    {
      "name": "artifacts.test.ts",
      "kind": "unit-or-integration",
      "source_path": "tests/artifacts.test.ts"
    },
    {
      "name": "auth.test.ts",
      "kind": "unit-or-integration",
      "source_path": "tests/auth.test.ts"
    },
    {
      "name": "chat.test.ts",
      "kind": "unit-or-integration",
      "source_path": "tests/chat.test.ts"
    },
    {
      "name": "reasoning.test.ts",
      "kind": "unit-or-integration",
      "source_path": "tests/reasoning.test.ts"
    },
    {
      "name": "document.test.ts",
      "kind": "unit-or-integration",
      "source_path": "tests/routes/document.test.ts"
    }
  ],
  "ci": {
    "workflows": []
  },
  "containers": {
    "dockerfiles": [],
    "compose_files": []
  },
  "env": {
    "example_files": [
      {
        "path": ".env.example"
      }
    ],
    "variables": [
      {
        "name": "AUTH_SECRET",
        "source_paths": [
          ".env.example",
          "app/(auth)/auth.ts"
        ],
        "likely_secret": true
      },
      {
        "name": "BLOB_READ_WRITE_TOKEN",
        "source_paths": [
          ".env.example"
        ],
        "likely_secret": true
      },
      {
        "name": "CI_PLAYWRIGHT",
        "source_paths": [
          "lib/constants.ts"
        ],
        "likely_secret": false
      },
      {
        "name": "NODE_ENV",
        "source_paths": [
          "app/(auth)/auth.ts",
          "lib/constants.ts"
        ],
        "likely_secret": false
      },
      {
        "name": "PLAYWRIGHT",
        "source_paths": [
          "lib/constants.ts"
        ],
        "likely_secret": false
      },
      {
        "name": "PLAYWRIGHT_TEST_BASE_URL",
        "source_paths": [
          "lib/constants.ts"
        ],
        "likely_secret": false
      },
      {
        "name": "PORT",
        "source_paths": [
          "playwright.config.ts"
        ],
        "likely_secret": false
      },
      {
        "name": "POSTGRES_URL",
        "source_paths": [
          ".env.example",
          "drizzle.config.ts",
          "lib/db/helpers/01-core-to-parts.ts",
          "lib/db/migrate.ts",
          "lib/db/queries.ts"
        ],
        "likely_secret": false
      },
      {
        "name": "XAI_API_KEY",
        "source_paths": [
          ".env.example"
        ],
        "likely_secret": true
      }
    ]
  },
  "configs": [
    {
      "path": "biome.jsonc"
    },
    {
      "path": "next.config.ts"
    },
    {
      "path": "package.json"
    },
    {
      "path": "postcss.config.mjs"
    },
    {
      "path": "tailwind.config.ts"
    },
    {
      "path": "tsconfig.json"
    }
  ],
  "docs": {
    "readme_paths": [
      {
        "path": "README.md"
      }
    ],
    "doc_paths": [],
    "llms_context_paths": []
  },
  "discovery_files": {
    "openapi": [],
    "mcp": [],
    "llms": [],
    "sitemaps": [],
    "feeds": [],
    "well_known": [],
    "robots": [],
    "manifests": []
  },
  "integrations": [
    {
      "name": "Postgres",
      "confidence": "medium",
      "evidence_paths": [
        ".env.example",
        "drizzle.config.ts",
        "lib/db/helpers/01-core-to-parts.ts",
        "lib/db/migrate.ts",
        "lib/db/migrations/meta/_journal.json",
        "lib/db/migrations/meta/0000_snapshot.json",
        "lib/db/migrations/meta/0001_snapshot.json",
        "lib/db/migrations/meta/0002_snapshot.json",
        "lib/db/queries.ts",
        "package.json",
        "pnpm-lock.yaml"
      ]
    },
    {
      "name": "Vercel",
      "confidence": "medium",
      "evidence_paths": [
        "app/(chat)/api/files/upload/route.ts",
        "package.json",
        "pnpm-lock.yaml"
      ]
    }
  ],
  "license": {
    "spdx": "Apache-2.0",
    "paths": [
      {
        "path": "LICENSE"
      }
    ]
  },
  "comments": [
    {
      "kind": "deprecated",
      "source_path": "app/(chat)/chat/[id]/page.tsx",
      "line": 42,
      "text": "// Note: content will soon be deprecated in @ai-sdk/react"
    },
    {
      "kind": "todo",
      "source_path": "components/message-editor.tsx",
      "line": 78,
      "text": "// @ts-expect-error todo: support UIMessage in setMessages"
    },
    {
      "kind": "deprecated",
      "source_path": "lib/db/schema.ts",
      "line": 36,
      "text": "// DEPRECATED: The following schema is deprecated and will be removed in the future."
    },
    {
      "kind": "deprecated",
      "source_path": "lib/db/schema.ts",
      "line": 63,
      "text": "// DEPRECATED: The following schema is deprecated and will be removed in the future."
    },
    {
      "kind": "unsafe",
      "source_path": "package.json",
      "line": 9,
      "text": "\"lint\": \"next lint && biome lint --write --unsafe\","
    },
    {
      "kind": "unsafe",
      "source_path": "package.json",
      "line": 10,
      "text": "\"lint:fix\": \"next lint --fix && biome lint --write --unsafe\","
    },
    {
      "kind": "deprecated",
      "source_path": "pnpm-lock.yaml",
      "line": 405,
      "text": "deprecated: 'Merged into tsx: https://tsx.is'"
    },
    {
      "kind": "deprecated",
      "source_path": "pnpm-lock.yaml",
      "line": 409,
      "text": "deprecated: 'Merged into tsx: https://tsx.is'"
    },
    {
      "kind": "deprecated",
      "source_path": "pnpm-lock.yaml",
      "line": 871,
      "text": "deprecated: Use @eslint/config-array instead"
    },
    {
      "kind": "deprecated",
      "source_path": "pnpm-lock.yaml",
      "line": 879,
      "text": "deprecated: Use @eslint/object-schema instead"
    },
    {
      "kind": "deprecated",
      "source_path": "pnpm-lock.yaml",
      "line": 2261,
      "text": "deprecated: This version is no longer supported. Please see https://eslint.org/version-support for other options."
    },
    {
      "kind": "deprecated",
      "source_path": "pnpm-lock.yaml",
      "line": 2421,
      "text": "deprecated: Glob versions prior to v9 are no longer supported"
    },
    {
      "kind": "deprecated",
      "source_path": "pnpm-lock.yaml",
      "line": 2495,
      "text": "deprecated: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful."
    },
    {
      "kind": "deprecated",
      "source_path": "pnpm-lock.yaml",
      "line": 3412,
      "text": "deprecated: Rimraf versions prior to v4 are no longer supported"
    }
  ],
  "security": {
    "secret_risks": [],
    "unsafe_patterns": [
      {
        "name": "dangerously-set-html",
        "confidence": "medium",
        "evidence_paths": [
          "app/layout.tsx",
          "components/diffview.tsx",
          "lib/editor/functions.tsx"
        ]
      },
      {
        "name": "ssrf-review-needed",
        "confidence": "medium",
        "evidence_paths": [
          "lib/utils.ts"
        ]
      }
    ],
    "sensitive_data_indicators": [
      {
        "name": "api_key",
        "confidence": "medium",
        "evidence_paths": [
          ".env.example"
        ]
      },
      {
        "name": "card",
        "confidence": "medium",
        "evidence_paths": [
          "app/globals.css",
          "components/ui/card.tsx",
          "tailwind.config.ts"
        ]
      },
      {
        "name": "email",
        "confidence": "medium",
        "evidence_paths": [
          "app/(auth)/actions.ts",
          "app/(auth)/auth.ts",
          "app/(auth)/login/page.tsx",
          "app/(auth)/register/page.tsx",
          "app/(chat)/api/vote/route.ts",
          "artifacts/text/client.tsx",
          "components/auth-form.tsx",
          "components/sidebar-user-nav.tsx",
          "lib/ai/prompts.ts",
          "lib/db/migrations/0000_keen_devos.sql",
          "lib/db/migrations/meta/0000_snapshot.json",
          "lib/db/migrations/meta/0001_snapshot.json",
          "lib/db/migrations/meta/0002_snapshot.json",
          "lib/db/migrations/meta/0003_snapshot.json",
          "lib/db/migrations/meta/0004_snapshot.json",
          "lib/db/migrations/meta/0005_snapshot.json",
          "lib/db/queries.ts",
          "lib/db/schema.ts",
          "pnpm-lock.yaml",
          "tests/auth-helper.ts"
        ]
      },
      {
        "name": "location",
        "confidence": "medium",
        "evidence_paths": [
          "components/message.tsx",
          "components/weather.tsx",
          "lib/ai/tools/get-weather.ts",
          "playwright.config.ts"
        ]
      },
      {
        "name": "oauth",
        "confidence": "medium",
        "evidence_paths": [
          "pnpm-lock.yaml"
        ]
      },
      {
        "name": "password",
        "confidence": "medium",
        "evidence_paths": [
          "app/(auth)/actions.ts",
          "app/(auth)/auth.ts",
          "app/(auth)/login/page.tsx",
          "app/(auth)/register/page.tsx",
          "components/auth-form.tsx",
          "lib/db/migrations/0000_keen_devos.sql",
          "lib/db/migrations/meta/0000_snapshot.json",
          "lib/db/migrations/meta/0001_snapshot.json",
          "lib/db/migrations/meta/0002_snapshot.json",
          "lib/db/migrations/meta/0003_snapshot.json",
          "lib/db/migrations/meta/0004_snapshot.json",
          "lib/db/migrations/meta/0005_snapshot.json",
          "lib/db/queries.ts",
          "lib/db/schema.ts",
          "tests/auth-helper.ts",
          "tests/auth.setup.ts",
          "tests/auth.test.ts"
        ]
      },
      {
        "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": [
          ".env.example",
          "app/(auth)/auth.ts",
          "lib/ai/models.test.ts",
          "lib/editor/diff.js",
          "pnpm-lock.yaml",
          "tests/prompts/utils.ts"
        ]
      }
    ]
  },
  "generated_at": "2026-05-16T16:44:11.946Z"
}
