{
  "schema_version": "1.0.0",
  "scanner": {
    "name": "global-capability-catalog",
    "version": "0.1.0"
  },
  "repo": {
    "id": "github-recent__mbarbine__vanagain-dot-com-prod",
    "name": "mbarbine__vanagain-dot-com-prod",
    "path": "/Users/bwm.barbinewarnermichael/Documents/github/repositories/github-recent/mbarbine__vanagain-dot-com-prod",
    "relative_path": "github-recent/mbarbine__vanagain-dot-com-prod",
    "remote_url": "git@github.com:mbarbine/vanagain-dot-com-prod.git",
    "default_branch": "main",
    "current_commit": "874d256409499fe225bbefa8008438def7a53ba9"
  },
  "languages": [
    {
      "language": "JSON",
      "files": 85,
      "bytes": 2390049
    },
    {
      "language": "TypeScript",
      "files": 349,
      "bytes": 1717924
    },
    {
      "language": "JavaScript",
      "files": 105,
      "bytes": 794852
    },
    {
      "language": "XML",
      "files": 1,
      "bytes": 536630
    },
    {
      "language": "YAML",
      "files": 3,
      "bytes": 350529
    },
    {
      "language": "Markdown",
      "files": 12,
      "bytes": 221977
    },
    {
      "language": "CSS",
      "files": 5,
      "bytes": 145687
    },
    {
      "language": "Python",
      "files": 10,
      "bytes": 82618
    },
    {
      "language": "SQL",
      "files": 7,
      "bytes": 68702
    },
    {
      "language": "Shell",
      "files": 2,
      "bytes": 5523
    }
  ],
  "frameworks": [
    {
      "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": "VanAgain",
        "version": "0.1.0",
        "scripts": {
          "dev": "next dev --turbopack",
          "build": "next build",
          "start": "next start",
          "lint": "next lint",
          "test": "pnpm test:unit && pnpm test:e2e",
          "test:unit": "vitest run",
          "test:e2e": "playwright test",
          "test:e2e:headed": "playwright test --headed",
          "test:post-deploy": "playwright test --config playwright.post-deploy.config.ts",
          "assets:optimize": "node scripts/optimize-assets.mjs",
          "content:verify": "node scripts/verify-content-parity.mjs",
          "db:migrate": "node scripts/migrate-schema.mjs",
          "db:seed": "node scripts/seed-data.mjs"
        },
        "dependencies": {
          "@ai-sdk/openai": "^3.0.53",
          "@ai-sdk/react": "^3.0.169",
          "@ai-sdk/xai": "^3.0.83",
          "@neondatabase/serverless": "^1.0.2",
          "@radix-ui/react-accordion": "^1.2.12",
          "@radix-ui/react-alert-dialog": "^1.1.15",
          "@radix-ui/react-avatar": "^1.1.11",
          "@radix-ui/react-checkbox": "^1.3.3",
          "@radix-ui/react-dialog": "^1.1.15",
          "@radix-ui/react-dropdown-menu": "^2.1.16",
          "@radix-ui/react-icons": "^1.3.2",
          "@radix-ui/react-label": "^2.1.8",
          "@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-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-tooltip": "^1.2.8",
          "@stripe/react-stripe-js": "^6.2.0",
          "@stripe/stripe-js": "^9.2.0",
          "@vercel/analytics": "^2.0.1",
          "@vercel/sdk": "^1.19.37",
          "@vercel/speed-insights": "^2.0.0",
          "ai": "^6.0.167",
          "bcryptjs": "^3.0.3",
          "botid": "^1.5.11",
          "class-variance-authority": "^0.7.1",
          "clsx": "^2.1.1",
          "date-fns": "^4.1.0",
          "dompurify": "^3.4.0",
          "html-react-parser": "^6.0.1",
          "isomorphic-dompurify": "^3.9.0",
          "lucide-react": "^1.8.0",
          "next": "^16.2.4",
          "next-auth": "5.0.0-beta.30",
          "next-intl": "^4.9.1",
          "next-themes": "^0.4.6",
          "openai": "^6.34.0",
          "phpass": "^0.1.1",
          "react": "^19.2.5",
          "react-dom": "^19.2.5",
          "redis": "^5.12.1",
          "sanitize-html": "^2.17.3",
          "server-only": "^0.0.1",
          "sharp": "^0.34.5",
          "stripe": "^22.0.2",
          "swr": "^2.4.1",
          "tailwind-merge": "^3.5.0",
          "tailwindcss-animate": "^1.0.7",
          "vercel-plugin": "github:vercel/vercel-plugin",
          "zod": "^4.3.6"
        },
        "dev_dependencies": {
          "@aws-sdk/client-s3": "^3.1031.0",
          "@playwright/test": "^1.59.1",
          "@tailwindcss/postcss": "^4.2.2",
          "@testing-library/jest-dom": "^6.9.1",
          "@testing-library/react": "^16.3.2",
          "@types/dompurify": "^3.2.0",
          "@types/node": "^25.6.0",
          "@types/react": "^19.2.14",
          "@types/react-dom": "^19.2.3",
          "@types/sanitize-html": "^2.16.1",
          "eslint": "^9.39.4",
          "eslint-config-next": "^16.2.4",
          "happy-dom": "^20.9.0",
          "jsdom": "^29.0.2",
          "playwright": "^1.59.1",
          "postcss": "^8.5.10",
          "tailwindcss": "^4.2.2",
          "typescript": "^6.0.2",
          "vitest": "^4.1.4"
        }
      }
    ]
  },
  "routes": {
    "api_routes": [
      {
        "route": "/ai/chat",
        "source_path": "app/api/ai/chat/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "POST"
        ]
      },
      {
        "route": "/auth/session",
        "source_path": "app/api/auth/session/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/cart",
        "source_path": "app/api/cart/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "DELETE",
          "GET",
          "PATCH",
          "POST"
        ]
      },
      {
        "route": "/checkout/session",
        "source_path": "app/api/checkout/session/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "POST"
        ]
      },
      {
        "route": "/checkout/shipping-rates",
        "source_path": "app/api/checkout/shipping-rates/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "POST"
        ]
      },
      {
        "route": "/coupons/validate",
        "source_path": "app/api/coupons/validate/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "POST"
        ]
      },
      {
        "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": "/llms-index.json",
        "source_path": "app/api/llms-index.json/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/newsletter/subscribe",
        "source_path": "app/api/newsletter/subscribe/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "POST"
        ]
      },
      {
        "route": "/shipping/rates",
        "source_path": "app/api/shipping/rates/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "POST"
        ]
      },
      {
        "route": "/v1/account/addresses/[id]",
        "source_path": "app/api/v1/account/addresses/[id]/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/v1/account/addresses",
        "source_path": "app/api/v1/account/addresses/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/v1/account/orders/[id]",
        "source_path": "app/api/v1/account/orders/[id]/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/v1/account/orders",
        "source_path": "app/api/v1/account/orders/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/v1/account/profile",
        "source_path": "app/api/v1/account/profile/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/v1/account/wishlist/[productId]",
        "source_path": "app/api/v1/account/wishlist/[productId]/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/v1/account/wishlist",
        "source_path": "app/api/v1/account/wishlist/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/v1/auth/forgot-password",
        "source_path": "app/api/v1/auth/forgot-password/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "POST"
        ]
      },
      {
        "route": "/v1/auth/login",
        "source_path": "app/api/v1/auth/login/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "POST"
        ]
      },
      {
        "route": "/v1/auth/logout",
        "source_path": "app/api/v1/auth/logout/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "POST"
        ]
      },
      {
        "route": "/v1/auth/register",
        "source_path": "app/api/v1/auth/register/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "POST"
        ]
      },
      {
        "route": "/v1/auth/reset-password",
        "source_path": "app/api/v1/auth/reset-password/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "POST"
        ]
      },
      {
        "route": "/v1/auth/session",
        "source_path": "app/api/v1/auth/session/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/v1/blog/[slug]/comments",
        "source_path": "app/api/v1/blog/[slug]/comments/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "GET",
          "POST"
        ]
      },
      {
        "route": "/v1/blog/[slug]",
        "source_path": "app/api/v1/blog/[slug]/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/v1/blog/categories",
        "source_path": "app/api/v1/blog/categories/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/v1/blog",
        "source_path": "app/api/v1/blog/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/v1/cart/items/[id]",
        "source_path": "app/api/v1/cart/items/[id]/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "DELETE",
          "PATCH"
        ]
      },
      {
        "route": "/v1/cart/items",
        "source_path": "app/api/v1/cart/items/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "POST"
        ]
      },
      {
        "route": "/v1/cart",
        "source_path": "app/api/v1/cart/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "DELETE",
          "GET"
        ]
      },
      {
        "route": "/v1/categories/[slug]",
        "source_path": "app/api/v1/categories/[slug]/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/v1/categories",
        "source_path": "app/api/v1/categories/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/v1/checkout/session",
        "source_path": "app/api/v1/checkout/session/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "POST"
        ]
      },
      {
        "route": "/v1/content/faqs",
        "source_path": "app/api/v1/content/faqs/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/v1/content/pages/[slug]",
        "source_path": "app/api/v1/content/pages/[slug]/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/v1/content/testimonials",
        "source_path": "app/api/v1/content/testimonials/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/v1/coupons/validate",
        "source_path": "app/api/v1/coupons/validate/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "POST"
        ]
      },
      {
        "route": "/v1/newsletter/subscribe",
        "source_path": "app/api/v1/newsletter/subscribe/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "POST"
        ]
      },
      {
        "route": "/v1/orders/track",
        "source_path": "app/api/v1/orders/track/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/v1/product-types",
        "source_path": "app/api/v1/product-types/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/v1/products/[slug]/images",
        "source_path": "app/api/v1/products/[slug]/images/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/v1/products/[slug]/related",
        "source_path": "app/api/v1/products/[slug]/related/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/v1/products/[slug]",
        "source_path": "app/api/v1/products/[slug]/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/v1/products",
        "source_path": "app/api/v1/products/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/v1/search",
        "source_path": "app/api/v1/search/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/v1/shipping/rates",
        "source_path": "app/api/v1/shipping/rates/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "POST"
        ]
      },
      {
        "route": "/webhooks/stripe",
        "source_path": "app/api/webhooks/stripe/route.ts",
        "kind": "next-app-api-route",
        "methods": [
          "POST"
        ]
      }
    ],
    "app_routes": [
      {
        "route": "/[locale]/forgot-password",
        "source_path": "app/[locale]/(auth)/forgot-password/page.tsx",
        "kind": "next-app-page",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/[locale]/login",
        "source_path": "app/[locale]/(auth)/login/page.tsx",
        "kind": "next-app-page",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/[locale]/register",
        "source_path": "app/[locale]/(auth)/register/page.tsx",
        "kind": "next-app-page",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/[locale]/reset-password",
        "source_path": "app/[locale]/(auth)/reset-password/page.tsx",
        "kind": "next-app-page",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/[locale]/about",
        "source_path": "app/[locale]/(store)/about/page.tsx",
        "kind": "next-app-page",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/[locale]/accessibility",
        "source_path": "app/[locale]/(store)/accessibility/page.tsx",
        "kind": "next-app-page",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/[locale]/account/addresses/[id]",
        "source_path": "app/[locale]/(store)/account/addresses/[id]/page.tsx",
        "kind": "next-app-page",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/[locale]/account/addresses/new",
        "source_path": "app/[locale]/(store)/account/addresses/new/page.tsx",
        "kind": "next-app-page",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/[locale]/account/addresses",
        "source_path": "app/[locale]/(store)/account/addresses/page.tsx",
        "kind": "next-app-page",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/[locale]/account/orders/[id]",
        "source_path": "app/[locale]/(store)/account/orders/[id]/page.tsx",
        "kind": "next-app-page",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/[locale]/account/orders",
        "source_path": "app/[locale]/(store)/account/orders/page.tsx",
        "kind": "next-app-page",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/[locale]/account",
        "source_path": "app/[locale]/(store)/account/page.tsx",
        "kind": "next-app-page",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/[locale]/account/settings",
        "source_path": "app/[locale]/(store)/account/settings/page.tsx",
        "kind": "next-app-page",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/[locale]/account/wishlist",
        "source_path": "app/[locale]/(store)/account/wishlist/page.tsx",
        "kind": "next-app-page",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/[locale]/blog/[slug]",
        "source_path": "app/[locale]/(store)/blog/[slug]/page.tsx",
        "kind": "next-app-page",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/[locale]/blog/category/[slug]",
        "source_path": "app/[locale]/(store)/blog/category/[slug]/page.tsx",
        "kind": "next-app-page",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/[locale]/blog",
        "source_path": "app/[locale]/(store)/blog/page.tsx",
        "kind": "next-app-page",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/[locale]/cart",
        "source_path": "app/[locale]/(store)/cart/page.tsx",
        "kind": "next-app-page",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/[locale]/categories/[slug]",
        "source_path": "app/[locale]/(store)/categories/[slug]/page.tsx",
        "kind": "next-app-page",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/[locale]/categories",
        "source_path": "app/[locale]/(store)/categories/page.tsx",
        "kind": "next-app-page",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/[locale]/checkout",
        "source_path": "app/[locale]/(store)/checkout/page.tsx",
        "kind": "next-app-page",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/[locale]/checkout/success",
        "source_path": "app/[locale]/(store)/checkout/success/page.tsx",
        "kind": "next-app-page",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/[locale]/contact",
        "source_path": "app/[locale]/(store)/contact/page.tsx",
        "kind": "next-app-page",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/[locale]/cookies",
        "source_path": "app/[locale]/(store)/cookies/page.tsx",
        "kind": "next-app-page",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/[locale]/deals",
        "source_path": "app/[locale]/(store)/deals/page.tsx",
        "kind": "next-app-page",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/[locale]/faq",
        "source_path": "app/[locale]/(store)/faq/page.tsx",
        "kind": "next-app-page",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/[locale]/(store)",
        "source_path": "app/[locale]/(store)/page.tsx",
        "kind": "next-app-page",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/[locale]/privacy",
        "source_path": "app/[locale]/(store)/privacy/page.tsx",
        "kind": "next-app-page",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/[locale]/products/[slug]",
        "source_path": "app/[locale]/(store)/products/[slug]/page.tsx",
        "kind": "next-app-page",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/[locale]/products",
        "source_path": "app/[locale]/(store)/products/page.tsx",
        "kind": "next-app-page",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/[locale]/returns",
        "source_path": "app/[locale]/(store)/returns/page.tsx",
        "kind": "next-app-page",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/[locale]/rewards",
        "source_path": "app/[locale]/(store)/rewards/page.tsx",
        "kind": "next-app-page",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/[locale]/search",
        "source_path": "app/[locale]/(store)/search/page.tsx",
        "kind": "next-app-page",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/[locale]/shipping",
        "source_path": "app/[locale]/(store)/shipping/page.tsx",
        "kind": "next-app-page",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/[locale]/terms",
        "source_path": "app/[locale]/(store)/terms/page.tsx",
        "kind": "next-app-page",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/[locale]/testimonials",
        "source_path": "app/[locale]/(store)/testimonials/page.tsx",
        "kind": "next-app-page",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/[locale]/track-order",
        "source_path": "app/[locale]/(store)/track-order/page.tsx",
        "kind": "next-app-page",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/[locale]/wishlist",
        "source_path": "app/[locale]/(store)/wishlist/page.tsx",
        "kind": "next-app-page",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/admin/customers",
        "source_path": "app/admin/customers/page.tsx",
        "kind": "next-app-page",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/admin/orders",
        "source_path": "app/admin/orders/page.tsx",
        "kind": "next-app-page",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/admin",
        "source_path": "app/admin/page.tsx",
        "kind": "next-app-page",
        "methods": [
          "GET"
        ]
      },
      {
        "route": "/admin/products",
        "source_path": "app/admin/products/page.tsx",
        "kind": "next-app-page",
        "methods": [
          "GET"
        ]
      }
    ]
  },
  "components": [
    {
      "name": "address-card",
      "kind": "ui-component",
      "source_path": "components/account/address-card.tsx"
    },
    {
      "name": "address-form",
      "kind": "ui-component",
      "source_path": "components/account/address-form.tsx"
    },
    {
      "name": "settings-form",
      "kind": "ui-component",
      "source_path": "components/account/settings-form.tsx"
    },
    {
      "name": "chat-widget",
      "kind": "ui-component",
      "source_path": "components/ai/chat-widget.tsx"
    },
    {
      "name": "blog-comments",
      "kind": "ui-component",
      "source_path": "components/blog/blog-comments.tsx"
    },
    {
      "name": "comment-form",
      "kind": "ui-component",
      "source_path": "components/blog/comment-form.tsx"
    },
    {
      "name": "category-art",
      "kind": "ui-component",
      "source_path": "components/categories/category-art.tsx"
    },
    {
      "name": "checkout",
      "kind": "ui-component",
      "source_path": "components/checkout/checkout.tsx"
    },
    {
      "name": "shipping-form",
      "kind": "ui-component",
      "source_path": "components/checkout/shipping-form.tsx"
    },
    {
      "name": "category-grid",
      "kind": "ui-component",
      "source_path": "components/home/category-grid.tsx"
    },
    {
      "name": "hero-carousel",
      "kind": "ui-component",
      "source_path": "components/home/hero-carousel.tsx"
    },
    {
      "name": "hero-section",
      "kind": "ui-component",
      "source_path": "components/home/hero-section.tsx"
    },
    {
      "name": "testimonials-section",
      "kind": "ui-component",
      "source_path": "components/home/testimonials-section.tsx"
    },
    {
      "name": "brand-logo",
      "kind": "ui-component",
      "source_path": "components/layout/brand-logo.tsx"
    },
    {
      "name": "footer",
      "kind": "ui-component",
      "source_path": "components/layout/footer.tsx"
    },
    {
      "name": "header",
      "kind": "ui-component",
      "source_path": "components/layout/header.tsx"
    },
    {
      "name": "mobile-bottom-nav",
      "kind": "ui-component",
      "source_path": "components/layout/mobile-bottom-nav.tsx"
    },
    {
      "name": "newsletter-form",
      "kind": "ui-component",
      "source_path": "components/layout/newsletter-form.tsx"
    },
    {
      "name": "add-to-cart-button",
      "kind": "ui-component",
      "source_path": "components/products/add-to-cart-button.tsx"
    },
    {
      "name": "empty-product-state",
      "kind": "ui-component",
      "source_path": "components/products/empty-product-state.tsx"
    },
    {
      "name": "per-page-select",
      "kind": "ui-component",
      "source_path": "components/products/per-page-select.tsx"
    },
    {
      "name": "product-card",
      "kind": "ui-component",
      "source_path": "components/products/product-card.tsx"
    },
    {
      "name": "product-description",
      "kind": "ui-component",
      "source_path": "components/products/product-description.tsx"
    },
    {
      "name": "product-filters",
      "kind": "ui-component",
      "source_path": "components/products/product-filters.tsx"
    },
    {
      "name": "product-media-gallery",
      "kind": "ui-component",
      "source_path": "components/products/product-media-gallery.tsx"
    },
    {
      "name": "product-quick-view",
      "kind": "ui-component",
      "source_path": "components/products/product-quick-view.tsx"
    },
    {
      "name": "product-sort",
      "kind": "ui-component",
      "source_path": "components/products/product-sort.tsx"
    },
    {
      "name": "product-toolbar",
      "kind": "ui-component",
      "source_path": "components/products/product-toolbar.tsx"
    },
    {
      "name": "related-products",
      "kind": "ui-component",
      "source_path": "components/products/related-products.tsx"
    },
    {
      "name": "sort-button",
      "kind": "ui-component",
      "source_path": "components/products/sort-button.tsx"
    },
    {
      "name": "wishlist-button",
      "kind": "ui-component",
      "source_path": "components/products/wishlist-button.tsx"
    },
    {
      "name": "theme-provider",
      "kind": "ui-component",
      "source_path": "components/providers/theme-provider.tsx"
    },
    {
      "name": "badge",
      "kind": "ui-component",
      "source_path": "components/ui/badge.tsx"
    },
    {
      "name": "breadcrumbs",
      "kind": "ui-component",
      "source_path": "components/ui/breadcrumbs.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": "fallback-image",
      "kind": "ui-component",
      "source_path": "components/ui/fallback-image.tsx"
    },
    {
      "name": "input",
      "kind": "ui-component",
      "source_path": "components/ui/input.tsx"
    },
    {
      "name": "json-ld",
      "kind": "ui-component",
      "source_path": "components/ui/json-ld.tsx"
    },
    {
      "name": "language-switcher",
      "kind": "ui-component",
      "source_path": "components/ui/language-switcher.tsx"
    },
    {
      "name": "pagination-nav",
      "kind": "ui-component",
      "source_path": "components/ui/pagination-nav.tsx"
    },
    {
      "name": "progress",
      "kind": "ui-component",
      "source_path": "components/ui/progress.tsx"
    },
    {
      "name": "select",
      "kind": "ui-component",
      "source_path": "components/ui/select.tsx"
    },
    {
      "name": "separator",
      "kind": "ui-component",
      "source_path": "components/ui/separator.tsx"
    },
    {
      "name": "share-buttons",
      "kind": "ui-component",
      "source_path": "components/ui/share-buttons.tsx"
    },
    {
      "name": "sheet",
      "kind": "ui-component",
      "source_path": "components/ui/sheet.tsx"
    },
    {
      "name": "skeleton",
      "kind": "ui-component",
      "source_path": "components/ui/skeleton.tsx"
    },
    {
      "name": "skip-to-content",
      "kind": "ui-component",
      "source_path": "components/ui/skip-to-content.tsx"
    },
    {
      "name": "toast",
      "kind": "ui-component",
      "source_path": "components/ui/toast.tsx"
    },
    {
      "name": "toaster",
      "kind": "ui-component",
      "source_path": "components/ui/toaster.tsx"
    },
    {
      "name": "tooltip",
      "kind": "ui-component",
      "source_path": "components/ui/tooltip.tsx"
    },
    {
      "name": "shipping-form.test",
      "kind": "ui-component",
      "source_path": "tests/unit/components/checkout/shipping-form.test.tsx"
    }
  ],
  "data_models": [],
  "database": {
    "databases": [
      "redis"
    ],
    "schemas": [
      {
        "path": "scripts/001-create-schema.sql"
      }
    ],
    "migrations": []
  },
  "tests": [
    {
      "name": "playwright.config.ts",
      "kind": "playwright",
      "source_path": "playwright.config.ts"
    },
    {
      "name": "playwright.post-deploy.config.ts",
      "kind": "playwright",
      "source_path": "playwright.post-deploy.config.ts"
    },
    {
      "name": "test-mailchimp.ts",
      "kind": "unit-or-integration",
      "source_path": "scripts/test-mailchimp.ts"
    },
    {
      "name": "test-smtp.ts",
      "kind": "unit-or-integration",
      "source_path": "scripts/test-smtp.ts"
    },
    {
      "name": "account-auth.spec.ts",
      "kind": "e2e",
      "source_path": "tests/e2e/account-auth.spec.ts"
    },
    {
      "name": "account-authenticated.spec.ts",
      "kind": "e2e",
      "source_path": "tests/e2e/account-authenticated.spec.ts"
    },
    {
      "name": "cross-browser-accessibility.spec.ts",
      "kind": "e2e",
      "source_path": "tests/e2e/cross-browser-accessibility.spec.ts"
    },
    {
      "name": "cross-browser-dark-mode.spec.ts",
      "kind": "e2e",
      "source_path": "tests/e2e/cross-browser-dark-mode.spec.ts"
    },
    {
      "name": "cross-browser-forms.spec.ts",
      "kind": "e2e",
      "source_path": "tests/e2e/cross-browser-forms.spec.ts"
    },
    {
      "name": "cross-browser-media.spec.ts",
      "kind": "e2e",
      "source_path": "tests/e2e/cross-browser-media.spec.ts"
    },
    {
      "name": "cross-browser-navigation.spec.ts",
      "kind": "e2e",
      "source_path": "tests/e2e/cross-browser-navigation.spec.ts"
    },
    {
      "name": "cross-browser-responsive.spec.ts",
      "kind": "e2e",
      "source_path": "tests/e2e/cross-browser-responsive.spec.ts"
    },
    {
      "name": "storefront.spec.ts",
      "kind": "e2e",
      "source_path": "tests/e2e/storefront.spec.ts"
    },
    {
      "name": "auth.test.ts",
      "kind": "unit-or-integration",
      "source_path": "tests/integration/auth.test.ts"
    },
    {
      "name": "blog.test.ts",
      "kind": "unit-or-integration",
      "source_path": "tests/integration/blog.test.ts"
    },
    {
      "name": "cart-wishlist-coupon.test.ts",
      "kind": "unit-or-integration",
      "source_path": "tests/integration/cart-wishlist-coupon.test.ts"
    },
    {
      "name": "orders.test.ts",
      "kind": "unit-or-integration",
      "source_path": "tests/integration/orders.test.ts"
    },
    {
      "name": "paypal.test.ts",
      "kind": "unit-or-integration",
      "source_path": "tests/integration/paypal.test.ts"
    },
    {
      "name": "shipping.test.ts",
      "kind": "unit-or-integration",
      "source_path": "tests/integration/shipping.test.ts"
    },
    {
      "name": "stripe.test.ts",
      "kind": "unit-or-integration",
      "source_path": "tests/integration/stripe.test.ts"
    },
    {
      "name": "wishlist.test.ts",
      "kind": "unit-or-integration",
      "source_path": "tests/integration/wishlist.test.ts"
    },
    {
      "name": "smoke.spec.ts",
      "kind": "unit-or-integration",
      "source_path": "tests/post-deploy/smoke.spec.ts"
    },
    {
      "name": "about-page.test.ts",
      "kind": "unit-or-integration",
      "source_path": "tests/unit/about-page.test.ts"
    },
    {
      "name": "accessibility-page.test.ts",
      "kind": "unit-or-integration",
      "source_path": "tests/unit/accessibility-page.test.ts"
    },
    {
      "name": "account-pages.test.ts",
      "kind": "unit-or-integration",
      "source_path": "tests/unit/account-pages.test.ts"
    },
    {
      "name": "account-wishlist-page.test.ts",
      "kind": "unit-or-integration",
      "source_path": "tests/unit/account-wishlist-page.test.ts"
    },
    {
      "name": "add-to-cart-button.test.tsx",
      "kind": "unit-or-integration",
      "source_path": "tests/unit/add-to-cart-button.test.tsx"
    },
    {
      "name": "addresses-actions.test.ts",
      "kind": "unit-or-integration",
      "source_path": "tests/unit/addresses-actions.test.ts"
    },
    {
      "name": "addresses.test.ts",
      "kind": "unit-or-integration",
      "source_path": "tests/unit/addresses.test.ts"
    },
    {
      "name": "admin-customers-page.test.ts",
      "kind": "unit-or-integration",
      "source_path": "tests/unit/admin-customers-page.test.ts"
    },
    {
      "name": "api-deprecation.test.ts",
      "kind": "unit-or-integration",
      "source_path": "tests/unit/api-deprecation.test.ts"
    },
    {
      "name": "api-products.test.ts",
      "kind": "unit-or-integration",
      "source_path": "tests/unit/api-products.test.ts"
    },
    {
      "name": "api-rate-limit.test.ts",
      "kind": "unit-or-integration",
      "source_path": "tests/unit/api-rate-limit.test.ts"
    },
    {
      "name": "api-response.test.ts",
      "kind": "unit-or-integration",
      "source_path": "tests/unit/api-response.test.ts"
    },
    {
      "name": "api-v1-schemas.test.ts",
      "kind": "unit-or-integration",
      "source_path": "tests/unit/api-v1-schemas.test.ts"
    },
    {
      "name": "api-validate.test.ts",
      "kind": "unit-or-integration",
      "source_path": "tests/unit/api-validate.test.ts"
    },
    {
      "name": "api-validation.test.ts",
      "kind": "unit-or-integration",
      "source_path": "tests/unit/api-validation.test.ts"
    },
    {
      "name": "assets.test.ts",
      "kind": "unit-or-integration",
      "source_path": "tests/unit/assets.test.ts"
    },
    {
      "name": "auth-actions.test.ts",
      "kind": "unit-or-integration",
      "source_path": "tests/unit/auth-actions.test.ts"
    },
    {
      "name": "auth-legacy.test.ts",
      "kind": "unit-or-integration",
      "source_path": "tests/unit/auth-legacy.test.ts"
    },
    {
      "name": "auth-notifications.test.ts",
      "kind": "unit-or-integration",
      "source_path": "tests/unit/auth-notifications.test.ts"
    },
    {
      "name": "auth-store.test.ts",
      "kind": "unit-or-integration",
      "source_path": "tests/unit/auth-store.test.ts"
    },
    {
      "name": "blog-comments.test.ts",
      "kind": "unit-or-integration",
      "source_path": "tests/unit/blog-comments.test.ts"
    },
    {
      "name": "branding.test.ts",
      "kind": "unit-or-integration",
      "source_path": "tests/unit/branding.test.ts"
    },
    {
      "name": "button.test.tsx",
      "kind": "unit-or-integration",
      "source_path": "tests/unit/button.test.tsx"
    },
    {
      "name": "cart-actions.test.ts",
      "kind": "unit-or-integration",
      "source_path": "tests/unit/cart-actions.test.ts"
    },
    {
      "name": "cart-client.test.ts",
      "kind": "unit-or-integration",
      "source_path": "tests/unit/cart-client.test.ts"
    },
    {
      "name": "cart-route.test.ts",
      "kind": "unit-or-integration",
      "source_path": "tests/unit/cart-route.test.ts"
    },
    {
      "name": "cart.test.ts",
      "kind": "unit-or-integration",
      "source_path": "tests/unit/cart.test.ts"
    },
    {
      "name": "categories-page.test.ts",
      "kind": "unit-or-integration",
      "source_path": "tests/unit/categories-page.test.ts"
    },
    {
      "name": "category-art.test.ts",
      "kind": "unit-or-integration",
      "source_path": "tests/unit/category-art.test.ts"
    },
    {
      "name": "category-page.test.ts",
      "kind": "unit-or-integration",
      "source_path": "tests/unit/category-page.test.ts"
    },
    {
      "name": "checkout.test.ts",
      "kind": "unit-or-integration",
      "source_path": "tests/unit/checkout.test.ts"
    },
    {
      "name": "commerce-domain.test.ts",
      "kind": "unit-or-integration",
      "source_path": "tests/unit/commerce-domain.test.ts"
    },
    {
      "name": "shipping-form.test.tsx",
      "kind": "unit-or-integration",
      "source_path": "tests/unit/components/checkout/shipping-form.test.tsx"
    },
    {
      "name": "contact-actions.test.ts",
      "kind": "unit-or-integration",
      "source_path": "tests/unit/contact-actions.test.ts"
    },
    {
      "name": "content-styling.test.ts",
      "kind": "unit-or-integration",
      "source_path": "tests/unit/content-styling.test.ts"
    },
    {
      "name": "content.test.ts",
      "kind": "unit-or-integration",
      "source_path": "tests/unit/content.test.ts"
    },
    {
      "name": "coupons.test.ts",
      "kind": "unit-or-integration",
      "source_path": "tests/unit/coupons.test.ts"
    },
    {
      "name": "cross-browser-compatibility.test.ts",
      "kind": "unit-or-integration",
      "source_path": "tests/unit/cross-browser-compatibility.test.ts"
    },
    {
      "name": "data-blog-faq.test.ts",
      "kind": "unit-or-integration",
      "source_path": "tests/unit/data-blog-faq.test.ts"
    },
    {
      "name": "data.test.ts",
      "kind": "unit-or-integration",
      "source_path": "tests/unit/data.test.ts"
    },
    {
      "name": "index.test.ts",
      "kind": "unit-or-integration",
      "source_path": "tests/unit/db/index.test.ts"
    },
    {
      "name": "empty-product-state.test.ts",
      "kind": "unit-or-integration",
      "source_path": "tests/unit/empty-product-state.test.ts"
    },
    {
      "name": "fallback-image.test.ts",
      "kind": "unit-or-integration",
      "source_path": "tests/unit/fallback-image.test.ts"
    },
    {
      "name": "flags.test.ts",
      "kind": "unit-or-integration",
      "source_path": "tests/unit/flags.test.ts"
    },
    {
      "name": "footer-aria.test.ts",
      "kind": "unit-or-integration",
      "source_path": "tests/unit/footer-aria.test.ts"
    },
    {
      "name": "header-aria.test.ts",
      "kind": "unit-or-integration",
      "source_path": "tests/unit/header-aria.test.ts"
    },
    {
      "name": "legacy-mail.test.ts",
      "kind": "unit-or-integration",
      "source_path": "tests/unit/legacy-mail.test.ts"
    },
    {
      "name": "legacy-sql-tools.test.ts",
      "kind": "unit-or-integration",
      "source_path": "tests/unit/legacy-sql-tools.test.ts"
    },
    {
      "name": "legacy-tooling.test.ts",
      "kind": "unit-or-integration",
      "source_path": "tests/unit/legacy-tooling.test.ts"
    },
    {
      "name": "addresses.test.ts",
      "kind": "unit-or-integration",
      "source_path": "tests/unit/lib/addresses.test.ts"
    },
    {
      "name": "logger.test.ts",
      "kind": "unit-or-integration",
      "source_path": "tests/unit/logger.test.ts"
    },
    {
      "name": "logo-pack-script.test.ts",
      "kind": "unit-or-integration",
      "source_path": "tests/unit/logo-pack-script.test.ts"
    },
    {
      "name": "middleware-security-headers.test.ts",
      "kind": "unit-or-integration",
      "source_path": "tests/unit/middleware-security-headers.test.ts"
    },
    {
      "name": "middleware.test.ts",
      "kind": "unit-or-integration",
      "source_path": "tests/unit/middleware.test.ts"
    },
    {
      "name": "mobile-bottom-nav.test.ts",
      "kind": "unit-or-integration",
      "source_path": "tests/unit/mobile-bottom-nav.test.ts"
    },
    {
      "name": "newsletter-subscribe.test.ts",
      "kind": "unit-or-integration",
      "source_path": "tests/unit/newsletter-subscribe.test.ts"
    },
    {
      "name": "next-config-headers.test.ts",
      "kind": "unit-or-integration",
      "source_path": "tests/unit/next-config-headers.test.ts"
    },
    {
      "name": "notifications.test.ts",
      "kind": "unit-or-integration",
      "source_path": "tests/unit/notifications.test.ts"
    },
    {
      "name": "order-confirmation.test.ts",
      "kind": "unit-or-integration",
      "source_path": "tests/unit/order-confirmation.test.ts"
    },
    {
      "name": "orders-core.test.ts",
      "kind": "unit-or-integration",
      "source_path": "tests/unit/orders-core.test.ts"
    },
    {
      "name": "orders.test.ts",
      "kind": "unit-or-integration",
      "source_path": "tests/unit/orders.test.ts"
    },
    {
      "name": "package-dimensions.test.ts",
      "kind": "unit-or-integration",
      "source_path": "tests/unit/package-dimensions.test.ts"
    },
    {
      "name": "pagination-nav.test.ts",
      "kind": "unit-or-integration",
      "source_path": "tests/unit/pagination-nav.test.ts"
    },
    {
      "name": "password-reset-actions.test.ts",
      "kind": "unit-or-integration",
      "source_path": "tests/unit/password-reset-actions.test.ts"
    },
    {
      "name": "per-page-config.test.ts",
      "kind": "unit-or-integration",
      "source_path": "tests/unit/per-page-config.test.ts"
    },
    {
      "name": "phpass.test.ts",
      "kind": "unit-or-integration",
      "source_path": "tests/unit/phpass.test.ts"
    },
    {
      "name": "product-card.test.ts",
      "kind": "unit-or-integration",
      "source_path": "tests/unit/product-card.test.ts"
    },
    {
      "name": "product-description.test.ts",
      "kind": "unit-or-integration",
      "source_path": "tests/unit/product-description.test.ts"
    },
    {
      "name": "product-slug-page.test.ts",
      "kind": "unit-or-integration",
      "source_path": "tests/unit/product-slug-page.test.ts"
    },
    {
      "name": "product-sort.test.ts",
      "kind": "unit-or-integration",
      "source_path": "tests/unit/product-sort.test.ts"
    },
    {
      "name": "product-toolbar.test.ts",
      "kind": "unit-or-integration",
      "source_path": "tests/unit/product-toolbar.test.ts"
    },
    {
      "name": "products-legacy-images.test.ts",
      "kind": "unit-or-integration",
      "source_path": "tests/unit/products-legacy-images.test.ts"
    },
    {
      "name": "products-page.test.ts",
      "kind": "unit-or-integration",
      "source_path": "tests/unit/products-page.test.ts"
    },
    {
      "name": "products.test.ts",
      "kind": "unit-or-integration",
      "source_path": "tests/unit/products.test.ts"
    },
    {
      "name": "redis-connection.test.ts",
      "kind": "unit-or-integration",
      "source_path": "tests/unit/redis-connection.test.ts"
    },
    {
      "name": "redis-singleton.test.ts",
      "kind": "unit-or-integration",
      "source_path": "tests/unit/redis-singleton.test.ts"
    },
    {
      "name": "redis.test.ts",
      "kind": "unit-or-integration",
      "source_path": "tests/unit/redis.test.ts"
    },
    {
      "name": "request-context.test.ts",
      "kind": "unit-or-integration",
      "source_path": "tests/unit/request-context.test.ts"
    },
    {
      "name": "rewards-page.test.ts",
      "kind": "unit-or-integration",
      "source_path": "tests/unit/rewards-page.test.ts"
    },
    {
      "name": "roadmap-singletons.test.ts",
      "kind": "unit-or-integration",
      "source_path": "tests/unit/roadmap-singletons.test.ts"
    },
    {
      "name": "rss-feed.test.ts",
      "kind": "unit-or-integration",
      "source_path": "tests/unit/rss-feed.test.ts"
    },
    {
      "name": "rss-route.test.ts",
      "kind": "unit-or-integration",
      "source_path": "tests/unit/rss-route.test.ts"
    },
    {
      "name": "security-headers.test.ts",
      "kind": "unit-or-integration",
      "source_path": "tests/unit/security-headers.test.ts"
    },
    {
      "name": "session-cookie.test.ts",
      "kind": "unit-or-integration",
      "source_path": "tests/unit/session-cookie.test.ts"
    },
    {
      "name": "shipping-international.test.ts",
      "kind": "unit-or-integration",
      "source_path": "tests/unit/shipping-international.test.ts"
    },
    {
      "name": "shipping-rates-route.test.ts",
      "kind": "unit-or-integration",
      "source_path": "tests/unit/shipping-rates-route.test.ts"
    },
    {
      "name": "shipping.test.ts",
      "kind": "unit-or-integration",
      "source_path": "tests/unit/shipping.test.ts"
    },
    {
      "name": "site-config.test.ts",
      "kind": "unit-or-integration",
      "source_path": "tests/unit/site-config.test.ts"
    },
    {
      "name": "site-content-foundations.test.ts",
      "kind": "unit-or-integration",
      "source_path": "tests/unit/site-content-foundations.test.ts"
    },
    {
      "name": "site-extended.test.ts",
      "kind": "unit-or-integration",
      "source_path": "tests/unit/site-extended.test.ts"
    },
    {
      "name": "site.test.ts",
      "kind": "unit-or-integration",
      "source_path": "tests/unit/site.test.ts"
    },
    {
      "name": "skip-to-content.test.ts",
      "kind": "unit-or-integration",
      "source_path": "tests/unit/skip-to-content.test.ts"
    },
    {
      "name": "sort-constants.test.ts",
      "kind": "unit-or-integration",
      "source_path": "tests/unit/sort-constants.test.ts"
    },
    {
      "name": "store-layout.test.ts",
      "kind": "unit-or-integration",
      "source_path": "tests/unit/store-layout.test.ts"
    },
    {
      "name": "stripe-webhook.test.ts",
      "kind": "unit-or-integration",
      "source_path": "tests/unit/stripe-webhook.test.ts"
    },
    {
      "name": "stripe.test.ts",
      "kind": "unit-or-integration",
      "source_path": "tests/unit/stripe.test.ts"
    },
    {
      "name": "sync-legacy-assets.test.ts",
      "kind": "unit-or-integration",
      "source_path": "tests/unit/sync-legacy-assets.test.ts"
    },
    {
      "name": "test-helpers.test.ts",
      "kind": "unit-or-integration",
      "source_path": "tests/unit/test-helpers.test.ts"
    },
    {
      "name": "testimonials-page.test.ts",
      "kind": "unit-or-integration",
      "source_path": "tests/unit/testimonials-page.test.ts"
    },
    {
      "name": "upload-product-assets-script.test.ts",
      "kind": "unit-or-integration",
      "source_path": "tests/unit/upload-product-assets-script.test.ts"
    },
    {
      "name": "use-toast.test.ts",
      "kind": "unit-or-integration",
      "source_path": "tests/unit/use-toast.test.ts"
    },
    {
      "name": "utils.test.ts",
      "kind": "unit-or-integration",
      "source_path": "tests/unit/utils.test.ts"
    },
    {
      "name": "vehicle-part-types-migration.test.ts",
      "kind": "unit-or-integration",
      "source_path": "tests/unit/vehicle-part-types-migration.test.ts"
    },
    {
      "name": "wcag-compliance.test.ts",
      "kind": "unit-or-integration",
      "source_path": "tests/unit/wcag-compliance.test.ts"
    },
    {
      "name": "wishlist-actions.test.ts",
      "kind": "unit-or-integration",
      "source_path": "tests/unit/wishlist-actions.test.ts"
    },
    {
      "name": "wishlist-redirect-page.test.ts",
      "kind": "unit-or-integration",
      "source_path": "tests/unit/wishlist-redirect-page.test.ts"
    },
    {
      "name": "wishlists.test.ts",
      "kind": "unit-or-integration",
      "source_path": "tests/unit/wishlists.test.ts"
    }
  ],
  "ci": {
    "workflows": []
  },
  "containers": {
    "dockerfiles": [],
    "compose_files": []
  },
  "env": {
    "example_files": [
      {
        "path": ".env.example"
      }
    ],
    "variables": [
      {
        "name": "ADMIN_IP_WHITELIST",
        "source_paths": [
          "DOCS/SCOPE-ENHANCEMENT-PLAN.md"
        ],
        "likely_secret": false
      },
      {
        "name": "ADMIN_MAIL",
        "source_paths": [
          ".env.example"
        ],
        "likely_secret": false
      },
      {
        "name": "AI_GATEWAY_API_KEY",
        "source_paths": [
          ".env.example"
        ],
        "likely_secret": true
      },
      {
        "name": "APP_KEY",
        "source_paths": [
          ".env.example"
        ],
        "likely_secret": true
      },
      {
        "name": "APP_NAME",
        "source_paths": [
          ".env.example"
        ],
        "likely_secret": false
      },
      {
        "name": "AUTH_SECRET",
        "source_paths": [
          ".env.example",
          "lib/session-cookie.ts"
        ],
        "likely_secret": true
      },
      {
        "name": "AUTH_SESSION_SECRET",
        "source_paths": [
          "lib/session-cookie.ts"
        ],
        "likely_secret": true
      },
      {
        "name": "AWS_ACCESS_KEY_ID",
        "source_paths": [
          ".env.example"
        ],
        "likely_secret": true
      },
      {
        "name": "AWS_REGION",
        "source_paths": [
          "scripts/optimize-s3-products.mjs"
        ],
        "likely_secret": false
      },
      {
        "name": "AWS_SECRET_ACCESS_KEY",
        "source_paths": [
          ".env.example"
        ],
        "likely_secret": true
      },
      {
        "name": "DATABASE_URL",
        "source_paths": [
          ".env.example",
          "lib/db/index.ts",
          "lib/session-cookie.ts",
          "scripts/_check-migration-state.mjs",
          "scripts/_check-uniqueness.mjs",
          "scripts/_inspect-constraints.mjs",
          "scripts/_inspect-more.mjs",
          "scripts/_inspect-pks.mjs",
          "scripts/_inspect-tables.mjs",
          "scripts/_inspect-types.mjs",
          "scripts/_quick-cols.mjs",
          "scripts/007-import-legacy-users.mjs",
          "scripts/migrate-schema.mjs",
          "scripts/run-full-migration.mjs",
          "scripts/seed-data.mjs",
          "scripts/summary-neon-db.mjs",
          "tests/e2e/account-authenticated.spec.ts",
          "tests/unit/db/index.test.ts"
        ],
        "likely_secret": true
      },
      {
        "name": "DATABASE_URL_UNPOOLED",
        "source_paths": [
          ".env.example"
        ],
        "likely_secret": true
      },
      {
        "name": "DEPLOY_URL",
        "source_paths": [
          "playwright.post-deploy.config.ts"
        ],
        "likely_secret": false
      },
      {
        "name": "ENABLE_AI_CHAT",
        "source_paths": [
          ".env.example",
          "tests/unit/flags.test.ts"
        ],
        "likely_secret": false
      },
      {
        "name": "ENABLE_DEBUG_HEADERS",
        "source_paths": [
          ".env.example",
          "tests/unit/flags.test.ts"
        ],
        "likely_secret": false
      },
      {
        "name": "ENABLE_DEBUG_LOGGING",
        "source_paths": [
          "lib/logger.ts",
          "tests/unit/flags.test.ts",
          "tests/unit/logger.test.ts"
        ],
        "likely_secret": false
      },
      {
        "name": "HOME",
        "source_paths": [
          "scripts/import-shopify-blog-and-tags.mjs",
          "scripts/shopify-upsert-pages.mjs"
        ],
        "likely_secret": false
      },
      {
        "name": "LEGACY_ASSET_ORIGIN",
        "source_paths": [
          "scripts/import-shopify-blog-and-tags.mjs",
          "scripts/shopify-upsert-pages.mjs"
        ],
        "likely_secret": false
      },
      {
        "name": "LEGACY_DB_CONNECTION",
        "source_paths": [
          ".env.example"
        ],
        "likely_secret": false
      },
      {
        "name": "LEGACY_DB_DATABASE",
        "source_paths": [
          ".env.example"
        ],
        "likely_secret": false
      },
      {
        "name": "LEGACY_DB_HOST",
        "source_paths": [
          ".env.example"
        ],
        "likely_secret": false
      },
      {
        "name": "LEGACY_DB_PASSWORD",
        "source_paths": [
          ".env.example"
        ],
        "likely_secret": true
      },
      {
        "name": "LEGACY_DB_PORT",
        "source_paths": [
          ".env.example"
        ],
        "likely_secret": false
      },
      {
        "name": "LEGACY_DB_USERNAME",
        "source_paths": [
          ".env.example"
        ],
        "likely_secret": false
      },
      {
        "name": "LEGACY_MAIL_DRIVER",
        "source_paths": [
          ".env.example"
        ],
        "likely_secret": false
      },
      {
        "name": "LEGACY_MAIL_ENCRYPTION",
        "source_paths": [
          ".env.example",
          "tests/unit/legacy-mail.test.ts"
        ],
        "likely_secret": false
      },
      {
        "name": "LEGACY_MAIL_HOST",
        "source_paths": [
          ".env.example",
          "tests/unit/legacy-mail.test.ts",
          "tests/unit/legacy-tooling.test.ts"
        ],
        "likely_secret": false
      },
      {
        "name": "LEGACY_MAIL_PASSWORD",
        "source_paths": [
          ".env.example",
          "tests/unit/legacy-mail.test.ts"
        ],
        "likely_secret": true
      },
      {
        "name": "LEGACY_MAIL_PORT",
        "source_paths": [
          ".env.example",
          "tests/unit/legacy-mail.test.ts"
        ],
        "likely_secret": false
      },
      {
        "name": "LEGACY_MAIL_USERNAME",
        "source_paths": [
          ".env.example",
          "tests/unit/legacy-mail.test.ts"
        ],
        "likely_secret": false
      },
      {
        "name": "LEGACY_SITE_BASE_URL",
        "source_paths": [
          "lib/assets.ts",
          "scripts/sync-legacy-assets.mjs"
        ],
        "likely_secret": false
      },
      {
        "name": "LOG_FORMAT",
        "source_paths": [
          ".env.example",
          "app/api/health/route.ts",
          "lib/logger.ts",
          "tests/unit/logger.test.ts"
        ],
        "likely_secret": false
      },
      {
        "name": "LOG_LEVEL",
        "source_paths": [
          ".env.example",
          "app/api/health/route.ts",
          "lib/logger.ts",
          "tests/unit/logger.test.ts"
        ],
        "likely_secret": false
      },
      {
        "name": "MAIL_FROM_ADDRESS",
        "source_paths": [
          ".env.example",
          "tests/unit/legacy-mail.test.ts"
        ],
        "likely_secret": false
      },
      {
        "name": "MAIL_FROM_NAME",
        "source_paths": [
          ".env.example",
          "tests/unit/legacy-mail.test.ts"
        ],
        "likely_secret": false
      },
      {
        "name": "MAIL_SIGNATURE_NAME",
        "source_paths": [
          ".env.example",
          "lib/notifications.ts"
        ],
        "likely_secret": false
      },
      {
        "name": "MAILCHIMP_API_KEY",
        "source_paths": [
          ".env.example",
          "app/actions/contact.ts",
          "app/api/v1/newsletter/subscribe/route.ts",
          "lib/mailchimp.ts",
          "scripts/test-mailchimp.ts",
          "tests/unit/newsletter-subscribe.test.ts"
        ],
        "likely_secret": true
      },
      {
        "name": "MAILCHIMP_DC",
        "source_paths": [
          "app/api/v1/newsletter/subscribe/route.ts"
        ],
        "likely_secret": false
      },
      {
        "name": "MAILCHIMP_LIST_ID",
        "source_paths": [
          ".env.example",
          "app/api/v1/newsletter/subscribe/route.ts",
          "lib/mailchimp.ts",
          "scripts/test-mailchimp.ts",
          "tests/unit/newsletter-subscribe.test.ts"
        ],
        "likely_secret": false
      },
      {
        "name": "MAINTENANCE_MODE",
        "source_paths": [
          ".env.example",
          "tests/unit/flags.test.ts"
        ],
        "likely_secret": false
      },
      {
        "name": "MANDRILL_API_KEY",
        "source_paths": [
          "app/actions/contact.ts",
          "tests/unit/contact-actions.test.ts"
        ],
        "likely_secret": true
      },
      {
        "name": "NEON_PROJECT_ID",
        "source_paths": [
          ".env.example"
        ],
        "likely_secret": false
      },
      {
        "name": "NEXT_PUBLIC_BASE_URL",
        "source_paths": [
          "app/[locale]/(store)/blog/[slug]/page.tsx",
          "app/[locale]/(store)/categories/[slug]/page.tsx",
          "app/[locale]/(store)/products/[slug]/page.tsx",
          "app/[locale]/layout.tsx",
          "app/api/llms-index.json/route.ts",
          "app/robots.ts",
          "app/rss.xml/route.ts",
          "app/sitemap.ts",
          "lib/checkout.ts",
          "lib/structured-data.ts",
          "tests/unit/checkout.test.ts",
          "tests/unit/commerce-domain.test.ts",
          "tests/unit/rss-route.test.ts"
        ],
        "likely_secret": false
      },
      {
        "name": "NEXT_PUBLIC_SITE_URL",
        "source_paths": [
          "lib/checkout.ts",
          "tests/unit/checkout.test.ts",
          "tests/unit/commerce-domain.test.ts"
        ],
        "likely_secret": false
      },
      {
        "name": "NEXT_PUBLIC_STRIPE_PUBLISHABLE_KEY",
        "source_paths": [
          ".env.example",
          "components/checkout/checkout.tsx"
        ],
        "likely_secret": true
      },
      {
        "name": "NEXTAUTH_SECRET",
        "source_paths": [
          "lib/session-cookie.ts"
        ],
        "likely_secret": true
      },
      {
        "name": "NODE_ENV",
        "source_paths": [
          "lib/auth.ts",
          "lib/cart.ts",
          "lib/logger.ts"
        ],
        "likely_secret": false
      },
      {
        "name": "OPENAI_API_KEY",
        "source_paths": [
          ".env.example",
          "app/api/ai/chat/route.ts"
        ],
        "likely_secret": true
      },
      {
        "name": "PARITY_SOURCE_BASE_URL",
        "source_paths": [
          "scripts/verify-content-parity.mjs"
        ],
        "likely_secret": false
      },
      {
        "name": "PARITY_TARGET_BASE_URL",
        "source_paths": [
          "scripts/verify-content-parity.mjs"
        ],
        "likely_secret": false
      },
      {
        "name": "PAYPAL_API_URL",
        "source_paths": [
          ".env.example"
        ],
        "likely_secret": false
      },
      {
        "name": "PAYPAL_EMAIL",
        "source_paths": [
          ".env.example"
        ],
        "likely_secret": false
      },
      {
        "name": "PGDATABASE",
        "source_paths": [
          ".env.example"
        ],
        "likely_secret": false
      },
      {
        "name": "PGHOST",
        "source_paths": [
          ".env.example"
        ],
        "likely_secret": false
      },
      {
        "name": "PGHOST_UNPOOLED",
        "source_paths": [
          ".env.example"
        ],
        "likely_secret": false
      },
      {
        "name": "PGPASSWORD",
        "source_paths": [
          ".env.example"
        ],
        "likely_secret": true
      },
      {
        "name": "PGUSER",
        "source_paths": [
          ".env.example"
        ],
        "likely_secret": false
      },
      {
        "name": "POSTGRES_DATABASE",
        "source_paths": [
          ".env.example"
        ],
        "likely_secret": false
      },
      {
        "name": "POSTGRES_HOST",
        "source_paths": [
          ".env.example"
        ],
        "likely_secret": false
      },
      {
        "name": "POSTGRES_PASSWORD",
        "source_paths": [
          ".env.example"
        ],
        "likely_secret": true
      },
      {
        "name": "POSTGRES_PRISMA_URL",
        "source_paths": [
          ".env.example"
        ],
        "likely_secret": false
      },
      {
        "name": "POSTGRES_URL",
        "source_paths": [
          ".env.example"
        ],
        "likely_secret": false
      },
      {
        "name": "POSTGRES_URL_NO_SSL",
        "source_paths": [
          ".env.example"
        ],
        "likely_secret": false
      },
      {
        "name": "POSTGRES_URL_NON_POOLING",
        "source_paths": [
          ".env.example"
        ],
        "likely_secret": false
      },
      {
        "name": "POSTGRES_USER",
        "source_paths": [
          ".env.example"
        ],
        "likely_secret": false
      },
      {
        "name": "REDIS_URL",
        "source_paths": [
          ".env.example",
          "lib/redis.ts",
          "tests/unit/redis-connection.test.ts",
          "tests/unit/redis-singleton.test.ts",
          "tests/unit/redis.test.ts"
        ],
        "likely_secret": false
      },
      {
        "name": "S3_PRODUCTS_BASE_URL",
        "source_paths": [
          "lib/assets.ts"
        ],
        "likely_secret": false
      },
      {
        "name": "SESSION_SECRET",
        "source_paths": [
          "lib/session-cookie.ts"
        ],
        "likely_secret": true
      },
      {
        "name": "SHIPMENT_API_KEY",
        "source_paths": [
          ".env.example",
          "app/api/checkout/shipping-rates/route.ts"
        ],
        "likely_secret": true
      },
      {
        "name": "SHIPMENT_API_URL",
        "source_paths": [
          "app/api/checkout/shipping-rates/route.ts"
        ],
        "likely_secret": false
      },
      {
        "name": "SHIPMENT_WEBHOOK_SECRET",
        "source_paths": [
          "DOCS/SCOPE-ENHANCEMENT-PLAN.md"
        ],
        "likely_secret": true
      },
      {
        "name": "SHOPIFY_ADMIN_TOKEN",
        "source_paths": [
          "scripts/import-shopify-blog-and-tags.mjs",
          "scripts/shopify-add-product-tags.mjs",
          "scripts/shopify-sync-navigation.mjs",
          "scripts/shopify-upsert-pages.mjs"
        ],
        "likely_secret": true
      },
      {
        "name": "SHOPIFY_API_VERSION",
        "source_paths": [
          "scripts/import-shopify-blog-and-tags.mjs",
          "scripts/shopify-sync-navigation.mjs",
          "scripts/shopify-upsert-pages.mjs"
        ],
        "likely_secret": false
      },
      {
        "name": "SHOPIFY_BLOG_HANDLE",
        "source_paths": [
          "scripts/import-shopify-blog-and-tags.mjs"
        ],
        "likely_secret": false
      },
      {
        "name": "SHOPIFY_PUBLIC_ORIGIN",
        "source_paths": [
          "scripts/verify-shopify-import-live.mjs"
        ],
        "likely_secret": false
      },
      {
        "name": "SHOPIFY_STORE",
        "source_paths": [
          "scripts/import-shopify-blog-and-tags.mjs",
          "scripts/shopify-sync-navigation.mjs",
          "scripts/shopify-upsert-pages.mjs"
        ],
        "likely_secret": false
      },
      {
        "name": "SMTP_ENCRYPTION",
        "source_paths": [
          "tests/unit/legacy-mail.test.ts"
        ],
        "likely_secret": false
      },
      {
        "name": "SMTP_HOST",
        "source_paths": [
          "tests/unit/legacy-mail.test.ts"
        ],
        "likely_secret": false
      },
      {
        "name": "SMTP_PASS",
        "source_paths": [
          "tests/unit/legacy-mail.test.ts"
        ],
        "likely_secret": false
      },
      {
        "name": "SMTP_PORT",
        "source_paths": [
          "tests/unit/legacy-mail.test.ts"
        ],
        "likely_secret": false
      },
      {
        "name": "SMTP_URL",
        "source_paths": [
          "tests/unit/legacy-mail.test.ts"
        ],
        "likely_secret": false
      },
      {
        "name": "SMTP_USER",
        "source_paths": [
          "tests/unit/legacy-mail.test.ts"
        ],
        "likely_secret": false
      },
      {
        "name": "STRIPE_MCP_KEY",
        "source_paths": [
          ".env.example"
        ],
        "likely_secret": true
      },
      {
        "name": "STRIPE_PUBLISHABLE_KEY",
        "source_paths": [
          ".env.example"
        ],
        "likely_secret": true
      },
      {
        "name": "STRIPE_SECRET_KEY",
        "source_paths": [
          ".env.example",
          "lib/stripe.ts",
          "tests/unit/stripe.test.ts"
        ],
        "likely_secret": true
      },
      {
        "name": "STRIPE_WEBHOOK_SECRET",
        "source_paths": [
          ".env.example",
          "app/api/webhooks/stripe/route.ts",
          "DOCS/SCOPE-ENHANCEMENT-PLAN.md",
          "tests/unit/stripe-webhook.test.ts"
        ],
        "likely_secret": true
      },
      {
        "name": "UPS_ACCESS_KEY",
        "source_paths": [
          ".env.example",
          "lib/shipping/index.ts",
          "tests/unit/shipping-international.test.ts",
          "tests/unit/shipping.test.ts"
        ],
        "likely_secret": true
      },
      {
        "name": "UPS_ACCOUNT_NUMBER",
        "source_paths": [
          ".env.example"
        ],
        "likely_secret": false
      },
      {
        "name": "UPS_PASSWORD",
        "source_paths": [
          ".env.example",
          "lib/shipping/index.ts",
          "tests/unit/shipping-international.test.ts",
          "tests/unit/shipping.test.ts"
        ],
        "likely_secret": true
      },
      {
        "name": "UPS_USERNAME",
        "source_paths": [
          ".env.example",
          "lib/shipping/index.ts",
          "tests/unit/shipping-international.test.ts",
          "tests/unit/shipping.test.ts"
        ],
        "likely_secret": false
      },
      {
        "name": "USPS_BASE_URL",
        "source_paths": [
          ".env.example"
        ],
        "likely_secret": false
      },
      {
        "name": "USPS_CLIENT_ID",
        "source_paths": [
          "DOCS/SCOPE-ENHANCEMENT-PLAN.md",
          "lib/shipping/index.ts",
          "tests/unit/shipping-international.test.ts",
          "tests/unit/shipping.test.ts"
        ],
        "likely_secret": false
      },
      {
        "name": "USPS_CLIENT_SECRET",
        "source_paths": [
          "DOCS/SCOPE-ENHANCEMENT-PLAN.md",
          "lib/shipping/index.ts",
          "tests/unit/shipping-international.test.ts",
          "tests/unit/shipping.test.ts"
        ],
        "likely_secret": true
      },
      {
        "name": "USPS_CONSUMER_KEY",
        "source_paths": [
          ".env.example",
          "lib/shipping/index.ts",
          "tests/unit/shipping-international.test.ts",
          "tests/unit/shipping.test.ts"
        ],
        "likely_secret": true
      },
      {
        "name": "USPS_ORIGIN_ZIP",
        "source_paths": [
          ".env.example",
          "lib/shipping/index.ts",
          "tests/unit/shipping-international.test.ts"
        ],
        "likely_secret": false
      },
      {
        "name": "USPS_SECRET",
        "source_paths": [
          ".env.example",
          "lib/shipping/index.ts",
          "tests/unit/shipping-international.test.ts",
          "tests/unit/shipping.test.ts"
        ],
        "likely_secret": true
      },
      {
        "name": "USPS_TOKEN_URL",
        "source_paths": [
          ".env.example"
        ],
        "likely_secret": true
      },
      {
        "name": "USPS_USER_ID",
        "source_paths": [
          ".env.example"
        ],
        "likely_secret": false
      },
      {
        "name": "VERCEL",
        "source_paths": [
          "lib/logger.ts"
        ],
        "likely_secret": false
      },
      {
        "name": "VERCEL_OIDC_TOKEN",
        "source_paths": [
          ".env.example"
        ],
        "likely_secret": true
      },
      {
        "name": "VERCEL_REGION",
        "source_paths": [
          "app/api/health/route.ts"
        ],
        "likely_secret": false
      },
      {
        "name": "VERCEL_URL",
        "source_paths": [
          "lib/checkout.ts",
          "tests/unit/checkout.test.ts",
          "tests/unit/commerce-domain.test.ts"
        ],
        "likely_secret": false
      }
    ]
  },
  "configs": [
    {
      "path": "next.config.ts"
    },
    {
      "path": "package.json"
    },
    {
      "path": "pnpm-workspace.yaml"
    },
    {
      "path": "postcss.config.mjs"
    },
    {
      "path": "shopify-theme/assets/jsconfig.json"
    },
    {
      "path": "tsconfig.json"
    },
    {
      "path": "vercel.json"
    }
  ],
  "docs": {
    "readme_paths": [
      {
        "path": "README.md"
      }
    ],
    "doc_paths": [
      {
        "path": "DOCS/API-GUIDE.md"
      },
      {
        "path": "DOCS/FULL-PLAN.md"
      },
      {
        "path": "DOCS/MIGRATION-GUIDE.md"
      },
      {
        "path": "DOCS/Modernization-plan.md"
      },
      {
        "path": "DOCS/ROADMAP.md"
      },
      {
        "path": "DOCS/SCOPE-ENHANCEMENT-PLAN.md"
      }
    ],
    "llms_context_paths": [
      {
        "path": "public/llms-full.txt"
      },
      {
        "path": "public/llms.txt"
      },
      {
        "path": "shopify-theme/assets/llms-full.txt"
      },
      {
        "path": "shopify-theme/assets/llms.txt"
      }
    ]
  },
  "discovery_files": {
    "openapi": [],
    "mcp": [],
    "llms": [
      {
        "path": "public/llms-full.txt"
      },
      {
        "path": "public/llms.txt"
      },
      {
        "path": "shopify-theme/assets/llms-full.txt"
      },
      {
        "path": "shopify-theme/assets/llms.txt"
      }
    ],
    "sitemaps": [
      {
        "path": "sitemap.xml"
      }
    ],
    "feeds": [],
    "well_known": [],
    "robots": [
      {
        "path": "public/robots.txt"
      },
      {
        "path": "robots.txt"
      }
    ],
    "manifests": []
  },
  "integrations": [
    {
      "name": "AWS",
      "confidence": "medium",
      "evidence_paths": [
        ".env.example",
        "package-lock.json",
        "package.json",
        "pnpm-lock.yaml",
        "scripts/optimize-s3-products.mjs"
      ]
    },
    {
      "name": "Neon",
      "confidence": "medium",
      "evidence_paths": [
        ".env.example",
        "package.json"
      ]
    },
    {
      "name": "OpenAI",
      "confidence": "medium",
      "evidence_paths": [
        ".env.example",
        "app/api/ai/chat/route.ts",
        "DOCS/SCOPE-ENHANCEMENT-PLAN.md",
        "package-lock.json",
        "package.json",
        "pnpm-lock.yaml",
        "README.md"
      ]
    },
    {
      "name": "Postgres",
      "confidence": "medium",
      "evidence_paths": [
        ".env.example",
        ".mcp.json",
        "app/api/health/route.ts",
        "DOCS/FULL-PLAN.md",
        "DOCS/MIGRATION-GUIDE.md",
        "DOCS/SCOPE-ENHANCEMENT-PLAN.md",
        "lib/db/index.ts",
        "lib/session-cookie.ts",
        "package.json",
        "README.md",
        "scripts/import-legacy-dump.sh"
      ]
    },
    {
      "name": "Redis",
      "confidence": "medium",
      "evidence_paths": [
        ".env.example",
        ".github/copilot-instructions.md",
        "app/actions/password-reset.ts",
        "lib/auth.ts",
        "lib/products.ts",
        "lib/redis.ts",
        "next.config.ts",
        "package-lock.json",
        "package.json",
        "tests/unit/redis-connection.test.ts",
        "tests/unit/redis-singleton.test.ts",
        "tests/unit/redis.test.ts"
      ]
    },
    {
      "name": "S3",
      "confidence": "medium",
      "evidence_paths": [
        "lib/assets.ts",
        "package-lock.json",
        "package.json",
        "pnpm-lock.yaml",
        "scripts/build_shopify_product_template.py",
        "scripts/optimize-s3-products.mjs"
      ]
    },
    {
      "name": "Shopify",
      "confidence": "medium",
      "evidence_paths": [
        "package.json",
        "scripts/import-shopify-blog-and-tags.mjs",
        "scripts/shopify-add-product-tags.mjs",
        "scripts/shopify-sync-navigation.mjs",
        "scripts/shopify-upsert-pages.mjs",
        "scripts/verify-shopify-import-live.mjs"
      ]
    },
    {
      "name": "Stripe",
      "confidence": "medium",
      "evidence_paths": [
        ".env.example",
        "app/api/webhooks/stripe/route.ts",
        "components/checkout/checkout.tsx",
        "DOCS/FULL-PLAN.md",
        "DOCS/SCOPE-ENHANCEMENT-PLAN.md",
        "get_stripe_webhook.js",
        "lib/checkout.ts",
        "lib/orders.ts",
        "lib/security-headers.ts",
        "lib/stripe.ts",
        "package-lock.json",
        "package.json",
        "pnpm-lock.yaml",
        "README.md",
        "tests/unit/order-confirmation.test.ts",
        "tests/unit/roadmap-singletons.test.ts",
        "tests/unit/stripe-webhook.test.ts",
        "tests/unit/stripe.test.ts"
      ]
    },
    {
      "name": "Vercel",
      "confidence": "medium",
      "evidence_paths": [
        ".env.example",
        "app/[locale]/layout.tsx",
        "app/api/health/route.ts",
        "DOCS/SCOPE-ENHANCEMENT-PLAN.md",
        "lib/checkout.ts",
        "lib/logger.ts",
        "package-lock.json",
        "package.json",
        "pnpm-lock.yaml",
        "tests/unit/checkout.test.ts",
        "tests/unit/commerce-domain.test.ts"
      ]
    }
  ],
  "license": {
    "spdx": null,
    "paths": []
  },
  "comments": [
    {
      "kind": "security",
      "source_path": "app/[locale]/(store)/account/settings/page.tsx",
      "line": 47,
      "text": "Manage your profile and security settings."
    },
    {
      "kind": "security",
      "source_path": "app/[locale]/(store)/privacy/page.tsx",
      "line": 90,
      "text": "Vanagain implements physical as well as technical security measures to maintain the safety of your stored"
    },
    {
      "kind": "deprecated",
      "source_path": "app/api/auth/session/route.ts",
      "line": 7,
      "text": "/** @deprecated Use GET /api/v1/auth/session instead */"
    },
    {
      "kind": "deprecated",
      "source_path": "app/api/cart/route.ts",
      "line": 10,
      "text": "/** @deprecated Use /api/v1/cart routes instead */"
    },
    {
      "kind": "deprecated",
      "source_path": "app/api/checkout/session/route.ts",
      "line": 5,
      "text": "/** @deprecated Use POST /api/v1/checkout/session instead */"
    },
    {
      "kind": "deprecated",
      "source_path": "app/api/coupons/validate/route.ts",
      "line": 14,
      "text": "/** @deprecated Use POST /api/v1/coupons/validate instead */"
    },
    {
      "kind": "security",
      "source_path": "app/api/docs/route.ts",
      "line": 853,
      "text": "post: { operationId: 'logout', tags: ['Auth'], summary: 'Destroy session', security: [{ cookieAuth: [] }], responses: { '200': { description: 'Logged out' } } },"
    },
    {
      "kind": "security",
      "source_path": "app/api/docs/route.ts",
      "line": 867,
      "text": "get: { operationId: 'getProfile', tags: ['Account'], summary: 'Get user profile', security: [{ cookieAuth: [] }], responses: { '200': { description: 'User profile' }, '401': { description: 'Not authenticated' } } },"
    },
    {
      "kind": "security",
      "source_path": "app/api/docs/route.ts",
      "line": 868,
      "text": "patch: { operationId: 'updateProfile', tags: ['Account'], summary: 'Update profile', security: [{ cookieAuth: [] }], requestBody: { content: { 'application/json': { schema: { type: 'object', properties: { firstName: { type: 'string' }, last"
    },
    {
      "kind": "security",
      "source_path": "app/api/docs/route.ts",
      "line": 871,
      "text": "get: { operationId: 'listAddresses', tags: ['Account'], summary: 'List addresses', security: [{ cookieAuth: [] }], responses: { '200': { description: 'Address list' } } },"
    },
    {
      "kind": "security",
      "source_path": "app/api/docs/route.ts",
      "line": 872,
      "text": "post: { operationId: 'createAddress', tags: ['Account'], summary: 'Create address', security: [{ cookieAuth: [] }], requestBody: { required: true, content: { 'application/json': { schema: { $ref: '#/components/schemas/AddressInput' } } } },"
    },
    {
      "kind": "security",
      "source_path": "app/api/docs/route.ts",
      "line": 875,
      "text": "patch: { operationId: 'updateAddress', tags: ['Account'], summary: 'Update address', security: [{ cookieAuth: [] }], parameters: [{ name: 'id', in: 'path', required: true, schema: { type: 'string' } }], requestBody: { required: true, conten"
    },
    {
      "kind": "security",
      "source_path": "app/api/docs/route.ts",
      "line": 876,
      "text": "delete: { operationId: 'deleteAddress', tags: ['Account'], summary: 'Delete address', security: [{ cookieAuth: [] }], parameters: [{ name: 'id', in: 'path', required: true, schema: { type: 'string' } }], responses: { '200': { description: '"
    },
    {
      "kind": "security",
      "source_path": "app/api/docs/route.ts",
      "line": 881,
      "text": "get: { operationId: 'listOrders', tags: ['Orders'], summary: 'List user orders', security: [{ cookieAuth: [] }], parameters: [{ name: 'limit', in: 'query', schema: { type: 'integer', default: 50, maximum: 100 } }], responses: { '200': { des"
    },
    {
      "kind": "security",
      "source_path": "app/api/docs/route.ts",
      "line": 884,
      "text": "get: { operationId: 'getOrder', tags: ['Orders'], summary: 'Get order details', security: [{ cookieAuth: [] }], parameters: [{ name: 'id', in: 'path', required: true, schema: { type: 'string' } }], responses: { '200': { description: 'Order "
    },
    {
      "kind": "security",
      "source_path": "app/api/docs/route.ts",
      "line": 892,
      "text": "get: { operationId: 'getWishlist', tags: ['Wishlist'], summary: 'Get wishlist', security: [{ cookieAuth: [] }], responses: { '200': { description: 'Wishlist items' } } },"
    },
    {
      "kind": "security",
      "source_path": "app/api/docs/route.ts",
      "line": 893,
      "text": "post: { operationId: 'addToWishlist', tags: ['Wishlist'], summary: 'Add to wishlist', security: [{ cookieAuth: [] }], requestBody: { required: true, content: { 'application/json': { schema: { type: 'object', required: ['productId'], propert"
    },
    {
      "kind": "security",
      "source_path": "app/api/docs/route.ts",
      "line": 896,
      "text": "delete: { operationId: 'removeFromWishlist', tags: ['Wishlist'], summary: 'Remove from wishlist', security: [{ cookieAuth: [] }], parameters: [{ name: 'productId', in: 'path', required: true, schema: { type: 'string' } }], responses: { '200"
    },
    {
      "kind": "deprecated",
      "source_path": "app/api/newsletter/subscribe/route.ts",
      "line": 15,
      "text": "/** @deprecated Use POST /api/v1/newsletter/subscribe instead */"
    },
    {
      "kind": "deprecated",
      "source_path": "app/api/shipping/rates/route.ts",
      "line": 22,
      "text": "/** @deprecated Use POST /api/v1/shipping/rates instead */"
    },
    {
      "kind": "todo",
      "source_path": "app/api/v1/auth/forgot-password/route.ts",
      "line": 28,
      "text": "// TODO: Send password reset email with token"
    },
    {
      "kind": "todo",
      "source_path": "app/api/v1/auth/reset-password/route.ts",
      "line": 23,
      "text": "// TODO: Implement token verification and password update"
    },
    {
      "kind": "unsafe",
      "source_path": "app/rss.xml/route.ts",
      "line": 105,
      "text": "function escapeXml(unsafe: string): string {"
    },
    {
      "kind": "unsafe",
      "source_path": "app/rss.xml/route.ts",
      "line": 106,
      "text": "return unsafe"
    },
    {
      "kind": "security",
      "source_path": "asset-manifest.json",
      "line": 39,
      "text": "\"static/media/fi-payment-security-48.bc561470.svg\": \"/static/media/fi-payment-security-48.bc561470.svg\","
    },
    {
      "kind": "security",
      "source_path": "components/categories/category-art.tsx",
      "line": 148,
      "text": "match: /(safety|lock|security|protection)/i,"
    },
    {
      "kind": "security",
      "source_path": "csv_export/shopify-pages-upsert.json",
      "line": 54,
      "text": "\"body_html\": \"<div>Vanagain collects information from you when you place an order, subscribe to the email newsletter, or participate in correspondence with us. When ordering on our site, as appropriate, you may be asked to enter this <em>pe"
    },
    {
      "kind": "deprecated",
      "source_path": "DOCS/API-GUIDE.md",
      "line": 182,
      "text": "## Deprecated Routes"
    },
    {
      "kind": "deprecated",
      "source_path": "DOCS/API-GUIDE.md",
      "line": 186,
      "text": "| Deprecated | Use Instead |"
    },
    {
      "kind": "security",
      "source_path": "DOCS/FULL-PLAN.md",
      "line": 220,
      "text": "> **Goal**: Fix security vulnerabilities and broken pages before any feature work."
    },
    {
      "kind": "security",
      "source_path": "DOCS/Modernization-plan.md",
      "line": 36,
      "text": "11.\tSecurity & compliance. Implement secure authentication (JWT/OAuth), role‑based permissions for admins, CSRF protection, input sanitisation and regular security audits.  Ensure compliance with PCI DSS for payments, GDPR/CCPA for data pri"
    },
    {
      "kind": "security",
      "source_path": "DOCS/Modernization-plan.md",
      "line": 116,
      "text": "Security"
    },
    {
      "kind": "security",
      "source_path": "DOCS/Modernization-plan.md",
      "line": 143,
      "text": "•\tPerform performance testing, load testing and security auditing.  Ensure the site is responsive and accessible."
    },
    {
      "kind": "todo",
      "source_path": "DOCS/ROADMAP.md",
      "line": 66,
      "text": "- **Contact form submission** — UI built, handler is a TODO"
    },
    {
      "kind": "todo",
      "source_path": "DOCS/ROADMAP.md",
      "line": 74,
      "text": "- **Dynamic sitemap** — TODO noted in code"
    },
    {
      "kind": "security",
      "source_path": "DOCS/SCOPE-ENHANCEMENT-PLAN.md",
      "line": 20,
      "text": "9. [Security Framework](#9-security-framework)"
    },
    {
      "kind": "security",
      "source_path": "DOCS/SCOPE-ENHANCEMENT-PLAN.md",
      "line": 739,
      "text": "## 9. Security Framework"
    },
    {
      "kind": "security",
      "source_path": "DOCS/SCOPE-ENHANCEMENT-PLAN.md",
      "line": 771,
      "text": "### 9.2 API Security"
    },
    {
      "kind": "security",
      "source_path": "DOCS/SCOPE-ENHANCEMENT-PLAN.md",
      "line": 789,
      "text": "'Content-Security-Policy': \"default-src 'self'\","
    },
    {
      "kind": "security",
      "source_path": "DOCS/SCOPE-ENHANCEMENT-PLAN.md",
      "line": 792,
      "text": "'Strict-Transport-Security': 'max-age=31536000; includeSubDomains',"
    },
    {
      "kind": "security",
      "source_path": "DOCS/SCOPE-ENHANCEMENT-PLAN.md",
      "line": 806,
      "text": "### 9.4 Webhook Security"
    },
    {
      "kind": "security",
      "source_path": "DOCS/SCOPE-ENHANCEMENT-PLAN.md",
      "line": 1242,
      "text": "security:"
    },
    {
      "kind": "security",
      "source_path": "lib/security-headers.ts",
      "line": 2,
      "text": "* Centralized security headers configuration."
    },
    {
      "kind": "security",
      "source_path": "lib/security-headers.ts",
      "line": 4,
      "text": "* Defines all HTTP security headers in one place so that both the Next.js"
    },
    {
      "kind": "unsafe",
      "source_path": "lib/security-headers.ts",
      "line": 30,
      "text": "\"'unsafe-inline'\", // Next.js injects inline scripts for hydration"
    },
    {
      "kind": "unsafe",
      "source_path": "lib/security-headers.ts",
      "line": 31,
      "text": "\"'unsafe-eval'\",   // Required by Next.js dev mode; Vercel strips in prod"
    },
    {
      "kind": "unsafe",
      "source_path": "lib/security-headers.ts",
      "line": 43,
      "text": "\"'unsafe-inline'\", // Tailwind + Next.js inject inline styles"
    },
    {
      "kind": "security",
      "source_path": "lib/security-headers.ts",
      "line": 113,
      "text": "/*  Content-Security-Policy                                           */"
    },
    {
      "kind": "security",
      "source_path": "lib/security-headers.ts",
      "line": 144,
      "text": "* Returns all security headers as an array of { key, value } entries."
    },
    {
      "kind": "security",
      "source_path": "lib/security-headers.ts",
      "line": 151,
      "text": "key: 'Content-Security-Policy',"
    },
    {
      "kind": "security",
      "source_path": "lib/security-headers.ts",
      "line": 155,
      "text": "key: 'Strict-Transport-Security',"
    },
    {
      "kind": "unsafe",
      "source_path": "lib/security-headers.ts",
      "line": 197,
      "text": "value: 'unsafe-none', // required for Stripe & YouTube embeds"
    },
    {
      "kind": "security",
      "source_path": "lib/security-headers.ts",
      "line": 203,
      "text": "* Convenience helper that applies all security headers to a NextResponse."
    },
    {
      "kind": "security",
      "source_path": "messages/en.json",
      "line": 318,
      "text": "\"forcedResetDescription\": \"For your security, please set a new password to continue.\","
    },
    {
      "kind": "security",
      "source_path": "messages/en.json",
      "line": 319,
      "text": "\"forcedResetMessage\": \"Your account was migrated from our previous system. For your security, please request a password reset link to set a new password.\","
    },
    {
      "kind": "todo",
      "source_path": "messages/es.json",
      "line": 19,
      "text": "\"viewAll\": \"Ver Todo\","
    },
    {
      "kind": "todo",
      "source_path": "messages/es.json",
      "line": 131,
      "text": "\"shopAll\": \"Ver Todo\","
    },
    {
      "kind": "todo",
      "source_path": "messages/es.json",
      "line": 200,
      "text": "\"clearAll\": \"Limpiar todo\","
    },
    {
      "kind": "todo",
      "source_path": "messages/es.json",
      "line": 244,
      "text": "\"helpText\": \"El checkout funciona tanto para clientes registrados como para invitados. Tu email de confirmación incluirá todo lo que necesitas para revisar o rastrear tu pedido.\","
    },
    {
      "kind": "todo",
      "source_path": "messages/es.json",
      "line": 472,
      "text": "\"weShipWorldwide\": \"Enviamos a Todo el Mundo\","
    },
    {
      "kind": "todo",
      "source_path": "messages/es.json",
      "line": 565,
      "text": "\"ourValuesDesc\": \"Los principios que guían todo lo que hacemos\","
    },
    {
      "kind": "todo",
      "source_path": "messages/es.json",
      "line": 641,
      "text": "\"shippingMethod\": \"Método de Envío\","
    },
    {
      "kind": "todo",
      "source_path": "messages/es.json",
      "line": 665,
      "text": "\"description\": \"Todo lo que necesitas saber sobre realizar pedidos, envíos, devoluciones y recompensas en VanAgain.\","
    },
    {
      "kind": "todo",
      "source_path": "messages/es.json",
      "line": 761,
      "text": "\"selectShipping\": \"Seleccionar Método de Envío\","
    },
    {
      "kind": "security",
      "source_path": "middleware.ts",
      "line": 4,
      "text": "import { applySecurityHeaders } from '@/lib/security-headers'"
    },
    {
      "kind": "security",
      "source_path": "next.config.ts",
      "line": 3,
      "text": "import { getSecurityHeaders } from \"./lib/security-headers\";"
    },
    {
      "kind": "security",
      "source_path": "next.config.ts",
      "line": 43,
      "text": "// Security headers for routes that bypass Edge middleware (static assets,"
    },
    {
      "kind": "security",
      "source_path": "next.config.ts",
      "line": 45,
      "text": "// lib/security-headers.ts so middleware and this config stay in sync."
    },
    {
      "kind": "deprecated",
      "source_path": "package-lock.json",
      "line": 6418,
      "text": "\"deprecated\": \"This is a stub types definition. dompurify provides its own type definitions, so you do not need this installed.\","
    },
    {
      "kind": "deprecated",
      "source_path": "pnpm-lock.yaml",
      "line": 2411,
      "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": "README.md",
      "line": 142,
      "text": "## Security & Compliance"
    },
    {
      "kind": "security",
      "source_path": "README.md",
      "line": 144,
      "text": "### HTTP Security Headers"
    },
    {
      "kind": "security",
      "source_path": "README.md",
      "line": 146,
      "text": "All responses include a comprehensive set of security headers defined in a single source of truth (`lib/security-headers.ts`). Headers are applied via both Edge Middleware (dynamic routes) and `next.config.ts` `headers()` (static assets), k"
    },
    {
      "kind": "security",
      "source_path": "README.md",
      "line": 150,
      "text": "| Content-Security-Policy | Restrictive allowlist trusting `*.vanagain.com`, `*.platphormnews.com`, `*.vercel.app`, `*.stripe.com`, `*.youtube.com` |"
    },
    {
      "kind": "security",
      "source_path": "README.md",
      "line": 151,
      "text": "| Strict-Transport-Security | HSTS with 2-year max-age, includeSubDomains, preload |"
    },
    {
      "kind": "security",
      "source_path": "README.md",
      "line": 159,
      "text": "See [`SECURITY.md`](SECURITY.md) for the full security policy including trusted origins and vulnerability reporting."
    },
    {
      "kind": "security",
      "source_path": "README.md",
      "line": 397,
      "text": "> **Goal**: Fix security vulnerabilities and broken pages before any feature work."
    },
    {
      "kind": "security",
      "source_path": "SECURITY.md",
      "line": 1,
      "text": "# Security Policy"
    },
    {
      "kind": "security",
      "source_path": "SECURITY.md",
      "line": 5,
      "text": "VanAgain takes security seriously. This document describes the security measures in place, the HTTP security headers enforced across all routes, and how to report vulnerabilities."
    },
    {
      "kind": "security",
      "source_path": "SECURITY.md",
      "line": 7,
      "text": "## HTTP Security Headers"
    },
    {
      "kind": "security",
      "source_path": "SECURITY.md",
      "line": 9,
      "text": "All responses — both dynamic (via Edge Middleware) and static (via `next.config.ts` headers) — include the following headers. The canonical values live in **`lib/security-headers.ts`** so they stay DRY."
    },
    {
      "kind": "security",
      "source_path": "SECURITY.md",
      "line": 13,
      "text": "| **Content-Security-Policy** | Restrictive allowlist | Controls which origins can serve scripts, styles, images, fonts, frames, and connections. Trusts `*.platphormnews.com` (shipment API / staging), `*.vercel.app`, `*.stripe.com`, and `*."
    },
    {
      "kind": "security",
      "source_path": "SECURITY.md",
      "line": 14,
      "text": "| **Strict-Transport-Security** | `max-age=63072000; includeSubDomains; preload` | Forces HTTPS for 2 years; enables HSTS preload list eligibility. |"
    },
    {
      "kind": "unsafe",
      "source_path": "SECURITY.md",
      "line": 22,
      "text": "| **Cross-Origin-Embedder-Policy** | `unsafe-none` | Required for Stripe and YouTube iframe embeds. |"
    },
    {
      "kind": "security",
      "source_path": "SECURITY.md",
      "line": 26,
      "text": "The Content-Security-Policy allowlist includes:"
    },
    {
      "kind": "security",
      "source_path": "SECURITY.md",
      "line": 60,
      "text": "If you discover a security vulnerability, please report it responsibly:"
    },
    {
      "kind": "security",
      "source_path": "SECURITY.md",
      "line": 62,
      "text": "1. **Email**: Send details to [support@vanagain.com](mailto:support@vanagain.com) with the subject line \"Security Vulnerability Report\"."
    },
    {
      "kind": "security",
      "source_path": "SECURITY.md",
      "line": 63,
      "text": "2. **Do not** open a public GitHub issue for security vulnerabilities."
    },
    {
      "kind": "todo",
      "source_path": "shopify-theme/locales/es.json",
      "line": 90,
      "text": "\"clear_all\": \"Borrar todo\","
    },
    {
      "kind": "todo",
      "source_path": "shopify-theme/locales/es.json",
      "line": 102,
      "text": "\"view_all\": \"Ver todo\","
    },
    {
      "kind": "todo",
      "source_path": "shopify-theme/locales/es.json",
      "line": 183,
      "text": "\"search_results_view_all\": \"Ver todo\","
    },
    {
      "kind": "todo",
      "source_path": "shopify-theme/locales/es.json",
      "line": 184,
      "text": "\"search_results_view_all_button\": \"Ver todo\","
    },
    {
      "kind": "todo",
      "source_path": "shopify-theme/locales/es.json",
      "line": 277,
      "text": "\"remove_all\": \"Eliminar todo\","
    },
    {
      "kind": "todo",
      "source_path": "shopify-theme/locales/es.schema.json",
      "line": 169,
      "text": "\"view_all_button\": \"Ver todo\","
    },
    {
      "kind": "todo",
      "source_path": "shopify-theme/locales/es.schema.json",
      "line": 172,
      "text": "\"product_list_button\": \"Botón Ver todo\","
    },
    {
      "kind": "todo",
      "source_path": "shopify-theme/locales/es.schema.json",
      "line": 456,
      "text": "\"view_all_as_last_card\": \"\\\"Ver todo\\\" como última tarjeta\","
    },
    {
      "kind": "todo",
      "source_path": "shopify-theme/locales/es.schema.json",
      "line": 726,
      "text": "\"all\": \"Todo\","
    },
    {
      "kind": "todo",
      "source_path": "shopify-theme/locales/es.schema.json",
      "line": 992,
      "text": "\"everythings_starts_with_why\": \"<p>Todo lo que hacemos empieza con el porqué</p>\","
    },
    {
      "kind": "todo",
      "source_path": "shopify-theme/locales/es.schema.json",
      "line": 998,
      "text": "\"goal_for_every_customer\": \"<p>Nuestro objetivo es que cada cliente quede totalmente satisfecho con su compra. Si no es así, cuéntanoslo y haremos todo lo posible para solucionarlo.</p>\","
    },
    {
      "kind": "todo",
      "source_path": "shopify-theme/locales/es.schema.json",
      "line": 1068,
      "text": "\"view_all_button_label\": \"Ver todo\","
    },
    {
      "kind": "security",
      "source_path": "tests/unit/middleware-security-headers.test.ts",
      "line": 2,
      "text": "* Tests for middleware security header application."
    },
    {
      "kind": "security",
      "source_path": "tests/unit/middleware-security-headers.test.ts",
      "line": 4,
      "text": "* Validates that the middleware applies security headers from"
    },
    {
      "kind": "security",
      "source_path": "tests/unit/middleware-security-headers.test.ts",
      "line": 5,
      "text": "* lib/security-headers.ts to all response types:"
    },
    {
      "kind": "security",
      "source_path": "tests/unit/middleware-security-headers.test.ts",
      "line": 69,
      "text": "const { getSecurityHeaders } = await import('@/lib/security-headers')"
    },
    {
      "kind": "security",
      "source_path": "tests/unit/middleware-security-headers.test.ts",
      "line": 72,
      "text": "/** Helper: assert all security headers are on the response */"
    },
    {
      "kind": "security",
      "source_path": "tests/unit/middleware-security-headers.test.ts",
      "line": 77,
      "text": "`Expected security header \"${key}\" to be set`"
    },
    {
      "kind": "security",
      "source_path": "tests/unit/middleware-security-headers.test.ts",
      "line": 82,
      "text": "describe('middleware – security headers', () => {"
    },
    {
      "kind": "security",
      "source_path": "tests/unit/middleware-security-headers.test.ts",
      "line": 87,
      "text": "it('applies security headers to regular GET page requests', () => {"
    },
    {
      "kind": "security",
      "source_path": "tests/unit/middleware-security-headers.test.ts",
      "line": 94,
      "text": "it('applies security headers to the homepage', () => {"
    },
    {
      "kind": "security",
      "source_path": "tests/unit/middleware-security-headers.test.ts",
      "line": 101,
      "text": "it('applies security headers to allowed auth POST responses', () => {"
    },
    {
      "kind": "security",
      "source_path": "tests/unit/middleware-security-headers.test.ts",
      "line": 108,
      "text": "it('applies security headers to 429 rate-limited auth responses', () => {"
    },
    {
      "kind": "security",
      "source_path": "tests/unit/middleware-security-headers.test.ts",
      "line": 123,
      "text": "it('applies security headers to AI chat endpoint responses', () => {"
    },
    {
      "kind": "security",
      "source_path": "tests/unit/middleware-security-headers.test.ts",
      "line": 130,
      "text": "it('applies security headers to 429 rate-limited AI chat responses', () => {"
    },
    {
      "kind": "security",
      "source_path": "tests/unit/middleware-security-headers.test.ts",
      "line": 144,
      "text": "it('Content-Security-Policy header includes platphormnews trust', () => {"
    },
    {
      "kind": "security",
      "source_path": "tests/unit/middleware-security-headers.test.ts",
      "line": 148,
      "text": "const csp = res.headers.get('content-security-policy')"
    },
    {
      "kind": "security",
      "source_path": "tests/unit/middleware-security-headers.test.ts",
      "line": 152,
      "text": "it('Content-Security-Policy header includes vercel trust', () => {"
    },
    {
      "kind": "security",
      "source_path": "tests/unit/middleware-security-headers.test.ts",
      "line": 156,
      "text": "const csp = res.headers.get('content-security-policy')"
    },
    {
      "kind": "security",
      "source_path": "tests/unit/middleware-security-headers.test.ts",
      "line": 161,
      "text": "it('sets Strict-Transport-Security with preload', () => {"
    },
    {
      "kind": "security",
      "source_path": "tests/unit/middleware-security-headers.test.ts",
      "line": 165,
      "text": "const hsts = res.headers.get('strict-transport-security')"
    },
    {
      "kind": "security",
      "source_path": "tests/unit/next-config-headers.test.ts",
      "line": 4,
      "text": "* Validates that the Next.js config includes security headers for all routes"
    },
    {
      "kind": "security",
      "source_path": "tests/unit/next-config-headers.test.ts",
      "line": 5,
      "text": "* and that headers match the centralized security-headers module."
    },
    {
      "kind": "security",
      "source_path": "tests/unit/next-config-headers.test.ts",
      "line": 30,
      "text": "it('includes Content-Security-Policy in the header set', async () => {"
    },
    {
      "kind": "security",
      "source_path": "tests/unit/next-config-headers.test.ts",
      "line": 34,
      "text": "const csp = catchAll!.headers.find((h: { key: string }) => h.key === 'Content-Security-Policy')"
    },
    {
      "kind": "security",
      "source_path": "tests/unit/next-config-headers.test.ts",
      "line": 39,
      "text": "it('includes Strict-Transport-Security in the header set', async () => {"
    },
    {
      "kind": "security",
      "source_path": "tests/unit/next-config-headers.test.ts",
      "line": 43,
      "text": "const hsts = catchAll!.headers.find((h: { key: string }) => h.key === 'Strict-Transport-Security')"
    },
    {
      "kind": "security",
      "source_path": "tests/unit/next-config-headers.test.ts",
      "line": 73,
      "text": "it('header values match the centralized security-headers module', async () => {"
    },
    {
      "kind": "security",
      "source_path": "tests/unit/next-config-headers.test.ts",
      "line": 75,
      "text": "const { getSecurityHeaders } = await import('@/lib/security-headers')"
    },
    {
      "kind": "security",
      "source_path": "tests/unit/roadmap-singletons.test.ts",
      "line": 333,
      "text": "it('has security policy', () => {"
    },
    {
      "kind": "security",
      "source_path": "tests/unit/roadmap-singletons.test.ts",
      "line": 334,
      "text": "expect(fileExists('SECURITY.md')).toBe(true)"
    },
    {
      "kind": "security",
      "source_path": "tests/unit/security-headers.test.ts",
      "line": 2,
      "text": "* Tests for lib/security-headers.ts"
    },
    {
      "kind": "security",
      "source_path": "tests/unit/security-headers.test.ts",
      "line": 4,
      "text": "* Validates that the centralized security-header configuration exports correct"
    },
    {
      "kind": "security",
      "source_path": "tests/unit/security-headers.test.ts",
      "line": 8,
      "text": "import { getSecurityHeaders, applySecurityHeaders } from '@/lib/security-headers'"
    },
    {
      "kind": "security",
      "source_path": "tests/unit/security-headers.test.ts",
      "line": 9,
      "text": "import type { SecurityHeaderEntry } from '@/lib/security-headers'"
    },
    {
      "kind": "security",
      "source_path": "tests/unit/security-headers.test.ts",
      "line": 29,
      "text": "// ── Content-Security-Policy ────────────────────────────────────────────"
    },
    {
      "kind": "security",
      "source_path": "tests/unit/security-headers.test.ts",
      "line": 31,
      "text": "describe('Content-Security-Policy', () => {"
    },
    {
      "kind": "security",
      "source_path": "tests/unit/security-headers.test.ts",
      "line": 32,
      "text": "const csp = headers.find((h) => h.key === 'Content-Security-Policy')!"
    },
    {
      "kind": "security",
      "source_path": "tests/unit/security-headers.test.ts",
      "line": 103,
      "text": "// ── Strict-Transport-Security ──────────────────────────────────────────"
    },
    {
      "kind": "security",
      "source_path": "tests/unit/security-headers.test.ts",
      "line": 105,
      "text": "describe('Strict-Transport-Security', () => {"
    },
    {
      "kind": "security",
      "source_path": "tests/unit/security-headers.test.ts",
      "line": 106,
      "text": "const hsts = headers.find((h) => h.key === 'Strict-Transport-Security')!"
    },
    {
      "kind": "unsafe",
      "source_path": "tests/unit/security-headers.test.ts",
      "line": 204,
      "text": "it('sets Cross-Origin-Embedder-Policy to unsafe-none for third-party embeds', () => {"
    },
    {
      "kind": "unsafe",
      "source_path": "tests/unit/security-headers.test.ts",
      "line": 207,
      "text": "expect(header!.value).toBe('unsafe-none')"
    },
    {
      "kind": "security",
      "source_path": "tests/unit/security-headers.test.ts",
      "line": 219,
      "text": "it('sets every security header on the provided response object', () => {"
    },
    {
      "kind": "security",
      "source_path": "tests/unit/wcag-compliance.test.ts",
      "line": 6,
      "text": "*   - Security headers are DRY (same source in middleware and next.config)"
    },
    {
      "kind": "security",
      "source_path": "tests/unit/wcag-compliance.test.ts",
      "line": 19,
      "text": "// ── DRY security headers ────────────────────────────────────────────────"
    },
    {
      "kind": "security",
      "source_path": "tests/unit/wcag-compliance.test.ts",
      "line": 21,
      "text": "describe('security headers are DRY', () => {"
    },
    {
      "kind": "security",
      "source_path": "tests/unit/wcag-compliance.test.ts",
      "line": 23,
      "text": "const { getSecurityHeaders } = await import('@/lib/security-headers')"
    },
    {
      "kind": "security",
      "source_path": "tests/unit/wcag-compliance.test.ts",
      "line": 46,
      "text": "const { getSecurityHeaders } = await import('@/lib/security-headers')"
    },
    {
      "kind": "security",
      "source_path": "tests/unit/wcag-compliance.test.ts",
      "line": 47,
      "text": "const csp = getSecurityHeaders().find((h) => h.key === 'Content-Security-Policy')!"
    },
    {
      "kind": "security",
      "source_path": "tests/unit/wcag-compliance.test.ts",
      "line": 52,
      "text": "const { getSecurityHeaders } = await import('@/lib/security-headers')"
    },
    {
      "kind": "security",
      "source_path": "tests/unit/wcag-compliance.test.ts",
      "line": 53,
      "text": "const csp = getSecurityHeaders().find((h) => h.key === 'Content-Security-Policy')!"
    },
    {
      "kind": "security",
      "source_path": "tests/unit/wcag-compliance.test.ts",
      "line": 58,
      "text": "const { getSecurityHeaders } = await import('@/lib/security-headers')"
    },
    {
      "kind": "security",
      "source_path": "tests/unit/wcag-compliance.test.ts",
      "line": 59,
      "text": "const csp = getSecurityHeaders().find((h) => h.key === 'Content-Security-Policy')!"
    },
    {
      "kind": "security",
      "source_path": "tests/unit/wcag-compliance.test.ts",
      "line": 64,
      "text": "const { getSecurityHeaders } = await import('@/lib/security-headers')"
    },
    {
      "kind": "security",
      "source_path": "tests/unit/wcag-compliance.test.ts",
      "line": 65,
      "text": "const csp = getSecurityHeaders().find((h) => h.key === 'Content-Security-Policy')!"
    },
    {
      "kind": "security",
      "source_path": "tests/unit/wcag-compliance.test.ts",
      "line": 70,
      "text": "const { getSecurityHeaders } = await import('@/lib/security-headers')"
    },
    {
      "kind": "security",
      "source_path": "tests/unit/wcag-compliance.test.ts",
      "line": 71,
      "text": "const csp = getSecurityHeaders().find((h) => h.key === 'Content-Security-Policy')!"
    },
    {
      "kind": "security",
      "source_path": "tests/unit/wcag-compliance.test.ts",
      "line": 76,
      "text": "const { getSecurityHeaders } = await import('@/lib/security-headers')"
    },
    {
      "kind": "security",
      "source_path": "tests/unit/wcag-compliance.test.ts",
      "line": 77,
      "text": "const csp = getSecurityHeaders().find((h) => h.key === 'Content-Security-Policy')!"
    }
  ],
  "security": {
    "secret_risks": [],
    "unsafe_patterns": [
      {
        "name": "child-process-exec",
        "confidence": "medium",
        "evidence_paths": [
          "lib/content.ts",
          "scripts/summary-legacy-dump.mjs",
          "scripts/verify-content-parity.mjs"
        ]
      },
      {
        "name": "dangerously-set-html",
        "confidence": "medium",
        "evidence_paths": [
          ".Jules/sentinel.md",
          "app/[locale]/(store)/about/page.tsx",
          "app/[locale]/(store)/blog/[slug]/page.tsx",
          "app/[locale]/(store)/contact/page-client.tsx",
          "app/[locale]/(store)/faq/page.tsx",
          "components/ui/breadcrumbs.tsx",
          "components/ui/json-ld.tsx",
          "shopify-theme/assets/facets.js",
          "shopify-theme/assets/localization.js",
          "shopify-theme/assets/price-per-item.js",
          "shopify-theme/assets/qr-code-generator.js",
          "tests/integration/blog.test.ts"
        ]
      },
      {
        "name": "sql-injection-review-needed",
        "confidence": "medium",
        "evidence_paths": [
          "app/actions/account.ts",
          "app/actions/password-reset.ts",
          "lib/auth.ts",
          "lib/orders.ts",
          "scripts/run-full-migration.mjs"
        ]
      },
      {
        "name": "ssrf-review-needed",
        "confidence": "medium",
        "evidence_paths": [
          "scripts/shopify-add-product-tags.mjs",
          "scripts/verify-shopify-import-live.mjs",
          "shopify-theme/assets/product-recommendations.js",
          "shopify-theme/assets/variant-picker.js"
        ]
      }
    ],
    "sensitive_data_indicators": [
      {
        "name": "api_key",
        "confidence": "medium",
        "evidence_paths": [
          ".env.example",
          "app/actions/contact.ts",
          "app/api/ai/chat/route.ts",
          "app/api/checkout/shipping-rates/route.ts",
          "app/api/v1/newsletter/subscribe/route.ts",
          "DOCS/SCOPE-ENHANCEMENT-PLAN.md",
          "lib/mailchimp.ts",
          "public/llms-full.txt",
          "scripts/_inspect-pks.mjs",
          "scripts/001-create-schema.sql",
          "scripts/run-full-migration.mjs",
          "scripts/test-mailchimp.ts",
          "tests/unit/contact-actions.test.ts",
          "tests/unit/newsletter-subscribe.test.ts"
        ]
      },
      {
        "name": "card",
        "confidence": "medium",
        "evidence_paths": [
          "app/[locale]/(auth)/forgot-password/page.tsx",
          "app/[locale]/(auth)/login/page.tsx",
          "app/[locale]/(auth)/register/page.tsx",
          "app/[locale]/(auth)/reset-password/page.tsx",
          "app/[locale]/(store)/about/page.tsx",
          "app/[locale]/(store)/accessibility/page.tsx",
          "app/[locale]/(store)/account/addresses/page.tsx",
          "app/[locale]/(store)/account/orders/[id]/page.tsx",
          "app/[locale]/(store)/account/orders/page.tsx",
          "app/[locale]/(store)/account/page.tsx",
          "app/[locale]/(store)/account/wishlist/page.tsx",
          "app/[locale]/(store)/account/wishlist/wishlist-item-card.tsx",
          "app/[locale]/(store)/blog/[slug]/page.tsx",
          "app/[locale]/(store)/blog/category/[slug]/page.tsx",
          "app/[locale]/(store)/blog/page.tsx",
          "app/[locale]/(store)/cart/cart-items.tsx",
          "app/[locale]/(store)/categories/[slug]/page.tsx",
          "app/[locale]/(store)/categories/page.tsx",
          "app/[locale]/(store)/checkout/page.tsx",
          "app/[locale]/(store)/checkout/success/page.tsx"
        ]
      },
      {
        "name": "email",
        "confidence": "medium",
        "evidence_paths": [
          ".env.example",
          ".github/copilot-instructions.md",
          "app/[locale]/(auth)/forgot-password/page.tsx",
          "app/[locale]/(auth)/login/page.tsx",
          "app/[locale]/(auth)/register/page.tsx",
          "app/[locale]/(store)/accessibility/page.tsx",
          "app/[locale]/(store)/account/page.tsx",
          "app/[locale]/(store)/account/settings/page.tsx",
          "app/[locale]/(store)/blog/page.tsx",
          "app/[locale]/(store)/checkout/success/page.tsx",
          "app/[locale]/(store)/contact/page-client.tsx",
          "app/[locale]/(store)/cookies/page.tsx",
          "app/[locale]/(store)/error.tsx",
          "app/[locale]/(store)/page.tsx",
          "app/[locale]/(store)/privacy/page.tsx",
          "app/[locale]/(store)/returns/page.tsx",
          "app/[locale]/(store)/shipping/page.tsx",
          "app/[locale]/(store)/terms/page.tsx",
          "app/[locale]/(store)/track-order/page.tsx",
          "app/actions/auth.ts"
        ]
      },
      {
        "name": "financial",
        "confidence": "medium",
        "evidence_paths": [
          "app/[locale]/(store)/privacy/page.tsx",
          "csv_export/shopify-pages-upsert.json",
          "scripts/build_shopify_orders.py",
          "shopify-theme/locales/en.default.schema.json"
        ]
      },
      {
        "name": "health",
        "confidence": "medium",
        "evidence_paths": [
          "app/api/docs/route.ts",
          "app/api/health/route.ts",
          "app/api/llms-index.json/route.ts",
          "app/llms.txt/route.ts",
          "DOCS/Modernization-plan.md",
          "DOCS/ROADMAP.md",
          "DOCS/SCOPE-ENHANCEMENT-PLAN.md",
          "public/llms-full.txt",
          "public/robots.txt",
          "README.md",
          "tests/post-deploy/smoke.spec.ts",
          "tests/unit/test-helpers.test.ts"
        ]
      },
      {
        "name": "location",
        "confidence": "medium",
        "evidence_paths": [
          "app/[locale]/(store)/about/page.tsx",
          "app/[locale]/(store)/contact/page-client.tsx",
          "app/[locale]/(store)/page.tsx",
          "app/[locale]/(store)/returns/page.tsx",
          "app/[locale]/(store)/testimonials/page-client.tsx",
          "app/[locale]/(store)/testimonials/page.tsx",
          "app/api/llms-index.json/route.ts",
          "components/home/hero-carousel.tsx",
          "components/home/testimonials-section.tsx",
          "csv_export/shopify-pages-upsert.json",
          "DOCS/Modernization-plan.md",
          "lib/data.ts",
          "lib/security-headers.ts",
          "lib/structured-data.ts",
          "messages/en.json",
          "messages/es.json",
          "package-lock.json",
          "pnpm-lock.yaml",
          "README.md",
          "scripts/shopify-upsert-pages.mjs"
        ]
      },
      {
        "name": "oauth",
        "confidence": "medium",
        "evidence_paths": [
          ".env.example",
          ".github/copilot-instructions.md",
          "DOCS/FULL-PLAN.md",
          "DOCS/Modernization-plan.md",
          "DOCS/ROADMAP.md",
          "DOCS/SCOPE-ENHANCEMENT-PLAN.md",
          "lib/shipping/index.ts",
          "package-lock.json",
          "pnpm-lock.yaml",
          "README.md",
          "tests/unit/shipping-international.test.ts",
          "tests/unit/shipping.test.ts"
        ]
      },
      {
        "name": "password",
        "confidence": "medium",
        "evidence_paths": [
          ".env.example",
          ".github/copilot-instructions.md",
          "app/[locale]/(auth)/forgot-password/page.tsx",
          "app/[locale]/(auth)/login/page.tsx",
          "app/[locale]/(auth)/register/page.tsx",
          "app/[locale]/(auth)/reset-password/page.tsx",
          "app/actions/account.ts",
          "app/actions/auth.ts",
          "app/actions/password-reset.ts",
          "app/api/docs/route.ts",
          "app/api/v1/auth/forgot-password/route.ts",
          "app/api/v1/auth/login/route.ts",
          "app/api/v1/auth/register/route.ts",
          "app/api/v1/auth/reset-password/route.ts",
          "app/globals.css",
          "components/account/settings-form.tsx",
          "DOCS/API-GUIDE.md",
          "DOCS/FULL-PLAN.md",
          "DOCS/ROADMAP.md",
          "DOCS/SCOPE-ENHANCEMENT-PLAN.md"
        ]
      },
      {
        "name": "password_hash",
        "confidence": "medium",
        "evidence_paths": [
          "app/actions/auth.ts",
          "app/api/v1/auth/login/route.ts",
          "DOCS/FULL-PLAN.md",
          "lib/auth.ts",
          "README.md",
          "scripts/001-create-schema.sql",
          "scripts/003-import-vanagain-data.sql",
          "scripts/007-import-legacy-users.mjs",
          "scripts/run-full-migration.mjs",
          "tests/helpers/fixtures.ts",
          "tests/integration/auth.test.ts",
          "tests/unit/auth-actions.test.ts",
          "tests/unit/auth-store.test.ts"
        ]
      },
      {
        "name": "payment",
        "confidence": "medium",
        "evidence_paths": [
          "app/[locale]/(store)/accessibility/page.tsx",
          "app/[locale]/(store)/page.tsx",
          "app/[locale]/(store)/privacy/page.tsx",
          "app/admin/orders/page.tsx",
          "app/api/docs/route.ts",
          "app/api/webhooks/stripe/route.ts",
          "asset-manifest.json",
          "components/checkout/checkout.tsx",
          "components/checkout/shipping-form.tsx",
          "csv_export/shopify-pages-upsert.json",
          "DOCS/FULL-PLAN.md",
          "DOCS/Modernization-plan.md",
          "DOCS/ROADMAP.md",
          "DOCS/SCOPE-ENHANCEMENT-PLAN.md",
          "lib/checkout.ts",
          "lib/logger.ts",
          "lib/orders.ts",
          "lib/security-headers.ts",
          "messages/en.json",
          "messages/es.json"
        ]
      },
      {
        "name": "pii",
        "confidence": "medium",
        "evidence_paths": [
          "package-lock.json",
          "pnpm-lock.yaml",
          "shopify-theme/locales/fi.json",
          "shopify-theme/locales/fi.schema.json"
        ]
      },
      {
        "name": "secret-like environment variables",
        "confidence": "medium",
        "evidence_paths": [
          "package.json"
        ]
      },
      {
        "name": "session_token",
        "confidence": "medium",
        "evidence_paths": [
          "lib/auth.ts",
          "scripts/001-create-schema.sql",
          "tests/e2e/account-authenticated.spec.ts",
          "tests/unit/auth-store.test.ts",
          "tests/unit/redis.test.ts"
        ]
      },
      {
        "name": "token",
        "confidence": "medium",
        "evidence_paths": [
          ".env.example",
          "app/[locale]/(auth)/reset-password/page.tsx",
          "app/[locale]/(store)/cookies/page.tsx",
          "app/actions/password-reset.ts",
          "app/api/ai/chat/route.ts",
          "app/api/docs/route.ts",
          "app/api/v1/auth/forgot-password/route.ts",
          "app/api/v1/auth/reset-password/route.ts",
          "DOCS/FULL-PLAN.md",
          "DOCS/Modernization-plan.md",
          "DOCS/SCOPE-ENHANCEMENT-PLAN.md",
          "lib/api/rate-limit.ts",
          "lib/auth.ts",
          "lib/session-cookie.ts",
          "lib/shipping/index.ts",
          "messages/en.json",
          "messages/es.json",
          "package-lock.json",
          "pnpm-lock.yaml",
          "public/llms.txt"
        ]
      }
    ]
  },
  "generated_at": "2026-05-16T16:44:28.222Z"
}
