diff --git a/env.example b/env.example index 8a680de..81edc13 100644 --- a/env.example +++ b/env.example @@ -181,8 +181,9 @@ FAL_API_KEY="" FIREWORKS_API_KEY="" OPENAI_API_KEY="" REPLICATE_API_TOKEN="" -GOOGLE_API_KEY="" +GOOGLE_GENERATIVE_AI_API_KEY="" DEEPSEEK_API_KEY="" +OPENROUTER_API_KEY="" # ----------------------------------------------------------------------------- # Web Content Analyzer (Firecrawl) diff --git a/package.json b/package.json index ac9a75e..be75331 100644 --- a/package.json +++ b/package.json @@ -25,13 +25,12 @@ "knip": "knip" }, "dependencies": { - "@ai-sdk/deepseek": "^0.2.16", - "@ai-sdk/fal": "^0.1.12", - "@ai-sdk/fireworks": "^0.2.14", - "@ai-sdk/google": "^1.2.22", - "@ai-sdk/google-vertex": "^2.2.24", - "@ai-sdk/openai": "^1.1.13", - "@ai-sdk/replicate": "^0.2.8", + "@ai-sdk/deepseek": "^1.0.0", + "@ai-sdk/fal": "^1.0.0", + "@ai-sdk/fireworks": "^1.0.0", + "@ai-sdk/google": "^2.0.0", + "@ai-sdk/openai": "^2.0.0", + "@ai-sdk/replicate": "^1.0.0", "@base-ui-components/react": "1.0.0-beta.0", "@better-fetch/fetch": "^1.1.18", "@dnd-kit/core": "^6.3.1", @@ -43,6 +42,7 @@ "@mendable/firecrawl-js": "^1.29.1", "@next/third-parties": "^15.3.0", "@openpanel/nextjs": "^1.0.7", + "@openrouter/ai-sdk-provider": "^1.0.0-beta.6", "@orama/orama": "^3.1.4", "@orama/tokenizers": "^3.1.4", "@radix-ui/react-accordion": "^1.2.3", @@ -83,7 +83,7 @@ "@vercel/analytics": "^1.5.0", "@vercel/speed-insights": "^1.2.0", "@widgetbot/react-embed": "^1.9.0", - "ai": "^4.1.45", + "ai": "^5.0.0", "better-auth": "^1.1.19", "canvas-confetti": "^1.9.3", "class-variance-authority": "^0.7.1", @@ -98,9 +98,9 @@ "drizzle-orm": "^0.39.3", "embla-carousel-react": "^8.5.2", "framer-motion": "^12.4.7", - "fumadocs-core": "^15.5.3", - "fumadocs-mdx": "^11.6.8", - "fumadocs-ui": "^15.5.3", + "fumadocs-core": "^15.6.7", + "fumadocs-mdx": "^11.7.3", + "fumadocs-ui": "^15.6.7", "inngest": "^3.40.1", "input-otp": "^1.4.2", "lucide-react": "^0.483.0", @@ -133,7 +133,7 @@ "use-intl": "^3.26.5", "use-media": "^1.5.0", "vaul": "^1.1.2", - "zod": "^3.24.2", + "zod": "^4.0.14", "zustand": "^5.0.3" }, "devDependencies": { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 67aae87..6f4a8a2 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -9,26 +9,23 @@ importers: .: dependencies: '@ai-sdk/deepseek': - specifier: ^0.2.16 - version: 0.2.16(zod@3.25.64) + specifier: ^1.0.0 + version: 1.0.0(zod@4.0.14) '@ai-sdk/fal': - specifier: ^0.1.12 - version: 0.1.12(zod@3.25.64) + specifier: ^1.0.0 + version: 1.0.0(zod@4.0.14) '@ai-sdk/fireworks': - specifier: ^0.2.14 - version: 0.2.14(zod@3.25.64) + specifier: ^1.0.0 + version: 1.0.0(zod@4.0.14) '@ai-sdk/google': - specifier: ^1.2.22 - version: 1.2.22(zod@3.25.64) - '@ai-sdk/google-vertex': - specifier: ^2.2.24 - version: 2.2.24(zod@3.25.64) + specifier: ^2.0.0 + version: 2.0.0(zod@4.0.14) '@ai-sdk/openai': - specifier: ^1.1.13 - version: 1.1.13(zod@3.25.64) + specifier: ^2.0.0 + version: 2.0.0(zod@4.0.14) '@ai-sdk/replicate': - specifier: ^0.2.8 - version: 0.2.8(zod@3.25.64) + specifier: ^1.0.0 + version: 1.0.0(zod@4.0.14) '@base-ui-components/react': specifier: 1.0.0-beta.0 version: 1.0.0-beta.0(@types/react@19.0.9)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) @@ -62,6 +59,9 @@ importers: '@openpanel/nextjs': specifier: ^1.0.7 version: 1.0.7(next@15.2.1(@babel/core@7.24.5)(@opentelemetry/api@1.9.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@openrouter/ai-sdk-provider': + specifier: ^1.0.0-beta.6 + version: 1.0.0-beta.6(ai@5.0.0(zod@4.0.14))(zod@4.0.14) '@orama/orama': specifier: ^3.1.4 version: 3.1.4 @@ -183,8 +183,8 @@ importers: specifier: ^1.9.0 version: 1.9.0(react@19.0.0) ai: - specifier: ^4.1.45 - version: 4.1.45(react@19.0.0)(zod@3.25.64) + specifier: ^5.0.0 + version: 5.0.0(zod@4.0.14) better-auth: specifier: ^1.1.19 version: 1.1.19 @@ -228,14 +228,14 @@ importers: specifier: ^12.4.7 version: 12.4.7(react-dom@19.0.0(react@19.0.0))(react@19.0.0) fumadocs-core: - specifier: ^15.5.3 - version: 15.5.3(@types/react@19.0.9)(next@15.2.1(@babel/core@7.24.5)(@opentelemetry/api@1.9.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + specifier: ^15.6.7 + version: 15.6.7(@types/react@19.0.9)(next@15.2.1(@babel/core@7.24.5)(@opentelemetry/api@1.9.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0) fumadocs-mdx: - specifier: ^11.6.8 - version: 11.6.8(acorn@8.14.0)(fumadocs-core@15.5.3(@types/react@19.0.9)(next@15.2.1(@babel/core@7.24.5)(@opentelemetry/api@1.9.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(next@15.2.1(@babel/core@7.24.5)(@opentelemetry/api@1.9.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)) + specifier: ^11.7.3 + version: 11.7.3(acorn@8.14.0)(fumadocs-core@15.6.7(@types/react@19.0.9)(next@15.2.1(@babel/core@7.24.5)(@opentelemetry/api@1.9.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(next@15.2.1(@babel/core@7.24.5)(@opentelemetry/api@1.9.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(react@19.0.0) fumadocs-ui: - specifier: ^15.5.3 - version: 15.5.3(@types/react-dom@19.0.3(@types/react@19.0.9))(@types/react@19.0.9)(next@15.2.1(@babel/core@7.24.5)(@opentelemetry/api@1.9.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(tailwindcss@4.0.14) + specifier: ^15.6.7 + version: 15.6.7(@types/react-dom@19.0.3(@types/react@19.0.9))(@types/react@19.0.9)(next@15.2.1(@babel/core@7.24.5)(@opentelemetry/api@1.9.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(tailwindcss@4.0.14) inngest: specifier: ^3.40.1 version: 3.40.1(express@5.0.1)(next@15.2.1(@babel/core@7.24.5)(@opentelemetry/api@1.9.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(typescript@5.8.3) @@ -256,7 +256,7 @@ importers: version: 4.0.0(next@15.2.1(@babel/core@7.24.5)(@opentelemetry/api@1.9.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(react@19.0.0)(typescript@5.8.3) next-safe-action: specifier: ^7.10.4 - version: 7.10.4(next@15.2.1(@babel/core@7.24.5)(@opentelemetry/api@1.9.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(zod@3.25.64) + version: 7.10.4(next@15.2.1(@babel/core@7.24.5)(@opentelemetry/api@1.9.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(zod@4.0.14) next-themes: specifier: ^0.4.4 version: 0.4.4(react-dom@19.0.0(react@19.0.0))(react@19.0.0) @@ -333,8 +333,8 @@ importers: specifier: ^1.1.2 version: 1.1.2(@types/react-dom@19.0.3(@types/react@19.0.9))(@types/react@19.0.9)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) zod: - specifier: ^3.24.2 - version: 3.25.64 + specifier: ^4.0.14 + version: 4.0.14 zustand: specifier: ^5.0.3 version: 5.0.3(@types/react@19.0.9)(react@19.0.0)(use-sync-external-store@1.5.0(react@19.0.0)) @@ -390,115 +390,63 @@ importers: packages: - '@ai-sdk/anthropic@1.2.12': - resolution: {integrity: sha512-YSzjlko7JvuiyQFmI9RN1tNZdEiZxc+6xld/0tq/VkJaHpEzGAb1yiNxxvmYVcjvfu/PcvCxAAYXmTYQQ63IHQ==} + '@ai-sdk/deepseek@1.0.0': + resolution: {integrity: sha512-5rumr8Gn41MT+mYD6PxPt2vMTh8h4S1KOcJDL1s8+qFaPSqgGal58BzwrVKUS/ycMM61XR6ymX25x09QLAteYw==} engines: {node: '>=18'} peerDependencies: - zod: ^3.0.0 + zod: ^3.25.76 || ^4 - '@ai-sdk/deepseek@0.2.16': - resolution: {integrity: sha512-pIlwtjNehCpDr1wqxtSbXshynW4CiwS6S3yAKHzHi73QtmS2Hg9kE1DB0zgENKaZLmbsc4UgigGM6FzuUd4M8Q==} + '@ai-sdk/fal@1.0.0': + resolution: {integrity: sha512-iU6U8LXjnrycoGtFKT09o4uDomMyu9W8vCDfJKlrcOvgzOSoG/1D/b/x6wKPbVcVQcsxFEoI9m8YtVtgg1cGsA==} engines: {node: '>=18'} peerDependencies: - zod: ^3.0.0 + zod: ^3.25.76 || ^4 - '@ai-sdk/fal@0.1.12': - resolution: {integrity: sha512-Z0pUUR3qwLTj4HXgGJSes5fwjUbSowsMiKbpYKGl6V51sQeUk2EjZctdN4+a+GBuDNCP6Y32Wi8ejM54OMee+w==} + '@ai-sdk/fireworks@1.0.0': + resolution: {integrity: sha512-zc4iGsZ4G4zyTfIvL2bKyFjkz4/j2+wKyYeeNtdz5st1KD4vpAXDjsf0uTeyqXSisrVMrgEBPPkwSRxWQpmPIA==} engines: {node: '>=18'} peerDependencies: - zod: ^3.0.0 + zod: ^3.25.76 || ^4 - '@ai-sdk/fireworks@0.2.14': - resolution: {integrity: sha512-0xlh95Y+L9ccc7hwrjdFKi4u8dirx24FLc70ySXA53u1zZP6R1W35TBYGaLzFpTVhhBhDTOca0mE+/EjJihcxw==} + '@ai-sdk/gateway@1.0.0': + resolution: {integrity: sha512-VEm87DyRx1yIPywbTy8ntoyh4jEDv1rJ88m+2I7zOm08jJI5BhFtAWh0OF6YzZu1Vu4NxhOWO4ssGdsqydDQ3A==} engines: {node: '>=18'} peerDependencies: - zod: ^3.0.0 + zod: ^3.25.76 || ^4 - '@ai-sdk/google-vertex@2.2.24': - resolution: {integrity: sha512-zi1ZN6jQEBRke/WMbZv0YkeqQ3nOs8ihxjVh/8z1tUn+S1xgRaYXf4+r6+Izh2YqVHIMNwjhUYryQRBGq20cgQ==} + '@ai-sdk/google@2.0.0': + resolution: {integrity: sha512-35uWKG+aWm0QClJV/kNhcyR9IVrDkZoI1UlWvUCjwoqbCxj4/L/1LKKbpM3JSRa9u74ghHzBB0UjLHdgcIoanw==} engines: {node: '>=18'} peerDependencies: - zod: ^3.0.0 + zod: ^3.25.76 || ^4 - '@ai-sdk/google@1.2.19': - resolution: {integrity: sha512-Xgl6eftIRQ4srUdCzxM112JuewVMij5q4JLcNmHcB68Bxn9dpr3MVUSPlJwmameuiQuISIA8lMB+iRiRbFsaqA==} + '@ai-sdk/openai-compatible@1.0.0': + resolution: {integrity: sha512-I5d29iB82ty/e0jqpH4iiWCkFtG1oANzK2WwY3WNF1vWjzqVzvPT+YXR0y43caiq0lIWwMyhJu+bMizmzigrwA==} engines: {node: '>=18'} peerDependencies: - zod: ^3.0.0 + zod: ^3.25.76 || ^4 - '@ai-sdk/google@1.2.22': - resolution: {integrity: sha512-Ppxu3DIieF1G9pyQ5O1Z646GYR0gkC57YdBqXJ82qvCdhEhZHu0TWhmnOoeIWe2olSbuDeoOY+MfJrW8dzS3Hw==} + '@ai-sdk/openai@2.0.0': + resolution: {integrity: sha512-G0WY5K81JwGpuX9HEmP2VTdt3N9m43qPnGT4fWkXcpu6Y2B05nnjs8k1r/csCJd8+TkYC6esjBABQYHxdMOejQ==} engines: {node: '>=18'} peerDependencies: - zod: ^3.0.0 + zod: ^3.25.76 || ^4 - '@ai-sdk/openai-compatible@0.2.14': - resolution: {integrity: sha512-icjObfMCHKSIbywijaoLdZ1nSnuRnWgMEMLgwoxPJgxsUHMx0aVORnsLUid4SPtdhHI3X2masrt6iaEQLvOSFw==} + '@ai-sdk/provider-utils@3.0.0': + resolution: {integrity: sha512-BoQZtGcBxkeSH1zK+SRYNDtJPIPpacTeiMZqnG4Rv6xXjEwM0FH4MGs9c+PlhyEWmQCzjRM2HAotEydFhD4dYw==} engines: {node: '>=18'} peerDependencies: - zod: ^3.0.0 + zod: ^3.25.76 || ^4 - '@ai-sdk/openai-compatible@0.2.16': - resolution: {integrity: sha512-LkvfcM8slJedRyJa/MiMiaOzcMjV1zNDwzTHEGz7aAsgsQV0maLfmJRi/nuSwf5jmp0EouC+JXXDUj2l94HgQw==} + '@ai-sdk/provider@2.0.0': + resolution: {integrity: sha512-6o7Y2SeO9vFKB8lArHXehNuusnpddKPk7xqL7T2/b+OvXMRIXUO1rR4wcv1hAFUAT9avGZshty3Wlua/XA7TvA==} + engines: {node: '>=18'} + + '@ai-sdk/replicate@1.0.0': + resolution: {integrity: sha512-whCL8u2aKXJcD8LmxK9oZOL3I/XkLgY7PqNsqLzemP5AlchjZTn8LLvwx5LBc2W3nkEXOz4Kt1oJGv1rQRxbnA==} engines: {node: '>=18'} peerDependencies: - zod: ^3.0.0 - - '@ai-sdk/openai@1.1.13': - resolution: {integrity: sha512-IdChK1pJTW3NQis02PG/hHTG0gZSyQIMOLPt7f7ES56C0xH2yaKOU1Tp2aib7pZzWGwDlzTOW2h5TtAB8+V6CQ==} - engines: {node: '>=18'} - peerDependencies: - zod: ^3.0.0 - - '@ai-sdk/provider-utils@2.1.9': - resolution: {integrity: sha512-NerKjTuuUUs6glJGaentaXEBH52jRM0pR+cRCzc7aWke/K5jYBD6Frv1JYBpcxS7gnnCqSQZR9woiyS+6jrdjw==} - engines: {node: '>=18'} - peerDependencies: - zod: ^3.0.0 - peerDependenciesMeta: - zod: - optional: true - - '@ai-sdk/provider-utils@2.2.8': - resolution: {integrity: sha512-fqhG+4sCVv8x7nFzYnFo19ryhAa3w096Kmc3hWxMQfW/TubPOmt3A6tYZhl4mUfQWWQMsuSkLrtjlWuXBVSGQA==} - engines: {node: '>=18'} - peerDependencies: - zod: ^3.23.8 - - '@ai-sdk/provider@1.0.8': - resolution: {integrity: sha512-f9jSYwKMdXvm44Dmab1vUBnfCDSFfI5rOtvV1W9oKB7WYHR5dGvCC6x68Mk3NUfrdmNoMVHGoh6JT9HCVMlMow==} - engines: {node: '>=18'} - - '@ai-sdk/provider@1.1.3': - resolution: {integrity: sha512-qZMxYJ0qqX/RfnuIaab+zp8UAeJn/ygXXAffR5I4N0n1IrvA6qBsjc8hXLmBiMV2zoXlifkacF7sEFnYnjBcqg==} - engines: {node: '>=18'} - - '@ai-sdk/react@1.1.17': - resolution: {integrity: sha512-NAuEflFvjw1uh1AOmpyi7rBF4xasWsiWUb86JQ8ScjDGxoGDYEdBnaHOxUpooLna0dGNbSPkvDMnVRhoLKoxPQ==} - engines: {node: '>=18'} - peerDependencies: - react: ^18 || ^19 || ^19.0.0-rc - zod: ^3.0.0 - peerDependenciesMeta: - react: - optional: true - zod: - optional: true - - '@ai-sdk/replicate@0.2.8': - resolution: {integrity: sha512-l9t4+RzbAn8osstkbWs6l++Nava+4LO4dsaddnE0GQM5E0BEIgMTJ14hoyfE02Ep0rJZ0M2HlXGqv5heW47P8A==} - engines: {node: '>=18'} - peerDependencies: - zod: ^3.0.0 - - '@ai-sdk/ui-utils@1.1.15': - resolution: {integrity: sha512-NsV/3CMmjc4m53snzRdtZM6teTQUXIKi8u0Kf7GBruSzaMSuZ4DWaAAlUshhR3p2FpZgtsogW+vYG1/rXsGu+Q==} - engines: {node: '>=18'} - peerDependencies: - zod: ^3.0.0 - peerDependenciesMeta: - zod: - optional: true + zod: ^3.25.76 || ^4 '@alloc/quick-lru@5.2.0': resolution: {integrity: sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==} @@ -525,28 +473,24 @@ packages: engines: {node: '>= 10'} cpu: [arm64] os: [linux] - libc: [glibc] '@ast-grep/napi-linux-arm64-musl@0.35.0': resolution: {integrity: sha512-1EcvHPwyWpCL/96LuItBYGfeI5FaMTRvL+dHbO/hL5q1npqbb5qn+ppJwtNOjTPz8tayvgggxVk9T4C2O7taYA==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] - libc: [musl] '@ast-grep/napi-linux-x64-gnu@0.35.0': resolution: {integrity: sha512-FDzNdlqmQnsiWXhnLxusw5AOfEcEM+5xtmrnAf3SBRFr86JyWD9qsynnFYC2pnP9hlMfifNH2TTmMpyGJW49Xw==} engines: {node: '>= 10'} cpu: [x64] os: [linux] - libc: [glibc] '@ast-grep/napi-linux-x64-musl@0.35.0': resolution: {integrity: sha512-wlmndjfBafT8u5p4DBnoRQyoCSGNuVSz7rT3TqhvlHcPzUouRWMn95epU9B1LNLyjXvr9xHeRjSktyCN28w57Q==} engines: {node: '>= 10'} cpu: [x64] os: [linux] - libc: [musl] '@ast-grep/napi-win32-arm64-msvc@0.35.0': resolution: {integrity: sha512-gkhJeYc4rrZLX2icLxalPikTLMR57DuIYLwLr9g+StHYXIsGHrbfrE6Nnbdd8Izfs34ArFCrcwdaMrGlvOPSeg==} @@ -1225,8 +1169,8 @@ packages: cpu: [ppc64] os: [aix] - '@esbuild/aix-ppc64@0.25.5': - resolution: {integrity: sha512-9o3TMmpmftaCMepOdA5k/yDw8SfInyzWWTjYTFCX3kPSDJMROQTb8jg+h9Cnwnmm1vOzvxN7gIfB5V2ewpjtGA==} + '@esbuild/aix-ppc64@0.25.8': + resolution: {integrity: sha512-urAvrUedIqEiFR3FYSLTWQgLu5tb+m0qZw0NBEasUeo6wuqatkMDaRT+1uABiGXEu5vqgPd7FGE1BhsAIy9QVA==} engines: {node: '>=18'} cpu: [ppc64] os: [aix] @@ -1267,8 +1211,8 @@ packages: cpu: [arm64] os: [android] - '@esbuild/android-arm64@0.25.5': - resolution: {integrity: sha512-VGzGhj4lJO+TVGV1v8ntCZWJktV7SGCs3Pn1GRWI1SBFtRALoomm8k5E9Pmwg3HOAal2VDc2F9+PM/rEY6oIDg==} + '@esbuild/android-arm64@0.25.8': + resolution: {integrity: sha512-OD3p7LYzWpLhZEyATcTSJ67qB5D+20vbtr6vHlHWSQYhKtzUYrETuWThmzFpZtFsBIxRvhO07+UgVA9m0i/O1w==} engines: {node: '>=18'} cpu: [arm64] os: [android] @@ -1309,8 +1253,8 @@ packages: cpu: [arm] os: [android] - '@esbuild/android-arm@0.25.5': - resolution: {integrity: sha512-AdJKSPeEHgi7/ZhuIPtcQKr5RQdo6OO2IL87JkianiMYMPbCtot9fxPbrMiBADOWWm3T2si9stAiVsGbTQFkbA==} + '@esbuild/android-arm@0.25.8': + resolution: {integrity: sha512-RONsAvGCz5oWyePVnLdZY/HHwA++nxYWIX1atInlaW6SEkwq6XkP3+cb825EUcRs5Vss/lGh/2YxAb5xqc07Uw==} engines: {node: '>=18'} cpu: [arm] os: [android] @@ -1351,8 +1295,8 @@ packages: cpu: [x64] os: [android] - '@esbuild/android-x64@0.25.5': - resolution: {integrity: sha512-D2GyJT1kjvO//drbRT3Hib9XPwQeWd9vZoBJn+bu/lVsOZ13cqNdDeqIF/xQ5/VmWvMduP6AmXvylO/PIc2isw==} + '@esbuild/android-x64@0.25.8': + resolution: {integrity: sha512-yJAVPklM5+4+9dTeKwHOaA+LQkmrKFX96BM0A/2zQrbS6ENCmxc4OVoBs5dPkCCak2roAD+jKCdnmOqKszPkjA==} engines: {node: '>=18'} cpu: [x64] os: [android] @@ -1393,8 +1337,8 @@ packages: cpu: [arm64] os: [darwin] - '@esbuild/darwin-arm64@0.25.5': - resolution: {integrity: sha512-GtaBgammVvdF7aPIgH2jxMDdivezgFu6iKpmT+48+F8Hhg5J/sfnDieg0aeG/jfSvkYQU2/pceFPDKlqZzwnfQ==} + '@esbuild/darwin-arm64@0.25.8': + resolution: {integrity: sha512-Jw0mxgIaYX6R8ODrdkLLPwBqHTtYHJSmzzd+QeytSugzQ0Vg4c5rDky5VgkoowbZQahCbsv1rT1KW72MPIkevw==} engines: {node: '>=18'} cpu: [arm64] os: [darwin] @@ -1435,8 +1379,8 @@ packages: cpu: [x64] os: [darwin] - '@esbuild/darwin-x64@0.25.5': - resolution: {integrity: sha512-1iT4FVL0dJ76/q1wd7XDsXrSW+oLoquptvh4CLR4kITDtqi2e/xwXwdCVH8hVHU43wgJdsq7Gxuzcs6Iq/7bxQ==} + '@esbuild/darwin-x64@0.25.8': + resolution: {integrity: sha512-Vh2gLxxHnuoQ+GjPNvDSDRpoBCUzY4Pu0kBqMBDlK4fuWbKgGtmDIeEC081xi26PPjn+1tct+Bh8FjyLlw1Zlg==} engines: {node: '>=18'} cpu: [x64] os: [darwin] @@ -1477,8 +1421,8 @@ packages: cpu: [arm64] os: [freebsd] - '@esbuild/freebsd-arm64@0.25.5': - resolution: {integrity: sha512-nk4tGP3JThz4La38Uy/gzyXtpkPW8zSAmoUhK9xKKXdBCzKODMc2adkB2+8om9BDYugz+uGV7sLmpTYzvmz6Sw==} + '@esbuild/freebsd-arm64@0.25.8': + resolution: {integrity: sha512-YPJ7hDQ9DnNe5vxOm6jaie9QsTwcKedPvizTVlqWG9GBSq+BuyWEDazlGaDTC5NGU4QJd666V0yqCBL2oWKPfA==} engines: {node: '>=18'} cpu: [arm64] os: [freebsd] @@ -1519,8 +1463,8 @@ packages: cpu: [x64] os: [freebsd] - '@esbuild/freebsd-x64@0.25.5': - resolution: {integrity: sha512-PrikaNjiXdR2laW6OIjlbeuCPrPaAl0IwPIaRv+SMV8CiM8i2LqVUHFC1+8eORgWyY7yhQY+2U2fA55mBzReaw==} + '@esbuild/freebsd-x64@0.25.8': + resolution: {integrity: sha512-MmaEXxQRdXNFsRN/KcIimLnSJrk2r5H8v+WVafRWz5xdSVmWLoITZQXcgehI2ZE6gioE6HirAEToM/RvFBeuhw==} engines: {node: '>=18'} cpu: [x64] os: [freebsd] @@ -1561,8 +1505,8 @@ packages: cpu: [arm64] os: [linux] - '@esbuild/linux-arm64@0.25.5': - resolution: {integrity: sha512-Z9kfb1v6ZlGbWj8EJk9T6czVEjjq2ntSYLY2cw6pAZl4oKtfgQuS4HOq41M/BcoLPzrUbNd+R4BXFyH//nHxVg==} + '@esbuild/linux-arm64@0.25.8': + resolution: {integrity: sha512-WIgg00ARWv/uYLU7lsuDK00d/hHSfES5BzdWAdAig1ioV5kaFNrtK8EqGcUBJhYqotlUByUKz5Qo6u8tt7iD/w==} engines: {node: '>=18'} cpu: [arm64] os: [linux] @@ -1603,8 +1547,8 @@ packages: cpu: [arm] os: [linux] - '@esbuild/linux-arm@0.25.5': - resolution: {integrity: sha512-cPzojwW2okgh7ZlRpcBEtsX7WBuqbLrNXqLU89GxWbNt6uIg78ET82qifUy3W6OVww6ZWobWub5oqZOVtwolfw==} + '@esbuild/linux-arm@0.25.8': + resolution: {integrity: sha512-FuzEP9BixzZohl1kLf76KEVOsxtIBFwCaLupVuk4eFVnOZfU+Wsn+x5Ryam7nILV2pkq2TqQM9EZPsOBuMC+kg==} engines: {node: '>=18'} cpu: [arm] os: [linux] @@ -1645,8 +1589,8 @@ packages: cpu: [ia32] os: [linux] - '@esbuild/linux-ia32@0.25.5': - resolution: {integrity: sha512-sQ7l00M8bSv36GLV95BVAdhJ2QsIbCuCjh/uYrWiMQSUuV+LpXwIqhgJDcvMTj+VsQmqAHL2yYaasENvJ7CDKA==} + '@esbuild/linux-ia32@0.25.8': + resolution: {integrity: sha512-A1D9YzRX1i+1AJZuFFUMP1E9fMaYY+GnSQil9Tlw05utlE86EKTUA7RjwHDkEitmLYiFsRd9HwKBPEftNdBfjg==} engines: {node: '>=18'} cpu: [ia32] os: [linux] @@ -1687,8 +1631,8 @@ packages: cpu: [loong64] os: [linux] - '@esbuild/linux-loong64@0.25.5': - resolution: {integrity: sha512-0ur7ae16hDUC4OL5iEnDb0tZHDxYmuQyhKhsPBV8f99f6Z9KQM02g33f93rNH5A30agMS46u2HP6qTdEt6Q1kg==} + '@esbuild/linux-loong64@0.25.8': + resolution: {integrity: sha512-O7k1J/dwHkY1RMVvglFHl1HzutGEFFZ3kNiDMSOyUrB7WcoHGf96Sh+64nTRT26l3GMbCW01Ekh/ThKM5iI7hQ==} engines: {node: '>=18'} cpu: [loong64] os: [linux] @@ -1729,8 +1673,8 @@ packages: cpu: [mips64el] os: [linux] - '@esbuild/linux-mips64el@0.25.5': - resolution: {integrity: sha512-kB/66P1OsHO5zLz0i6X0RxlQ+3cu0mkxS3TKFvkb5lin6uwZ/ttOkP3Z8lfR9mJOBk14ZwZ9182SIIWFGNmqmg==} + '@esbuild/linux-mips64el@0.25.8': + resolution: {integrity: sha512-uv+dqfRazte3BzfMp8PAQXmdGHQt2oC/y2ovwpTteqrMx2lwaksiFZ/bdkXJC19ttTvNXBuWH53zy/aTj1FgGw==} engines: {node: '>=18'} cpu: [mips64el] os: [linux] @@ -1771,8 +1715,8 @@ packages: cpu: [ppc64] os: [linux] - '@esbuild/linux-ppc64@0.25.5': - resolution: {integrity: sha512-UZCmJ7r9X2fe2D6jBmkLBMQetXPXIsZjQJCjgwpVDz+YMcS6oFR27alkgGv3Oqkv07bxdvw7fyB71/olceJhkQ==} + '@esbuild/linux-ppc64@0.25.8': + resolution: {integrity: sha512-GyG0KcMi1GBavP5JgAkkstMGyMholMDybAf8wF5A70CALlDM2p/f7YFE7H92eDeH/VBtFJA5MT4nRPDGg4JuzQ==} engines: {node: '>=18'} cpu: [ppc64] os: [linux] @@ -1813,8 +1757,8 @@ packages: cpu: [riscv64] os: [linux] - '@esbuild/linux-riscv64@0.25.5': - resolution: {integrity: sha512-kTxwu4mLyeOlsVIFPfQo+fQJAV9mh24xL+y+Bm6ej067sYANjyEw1dNHmvoqxJUCMnkBdKpvOn0Ahql6+4VyeA==} + '@esbuild/linux-riscv64@0.25.8': + resolution: {integrity: sha512-rAqDYFv3yzMrq7GIcen3XP7TUEG/4LK86LUPMIz6RT8A6pRIDn0sDcvjudVZBiiTcZCY9y2SgYX2lgK3AF+1eg==} engines: {node: '>=18'} cpu: [riscv64] os: [linux] @@ -1855,8 +1799,8 @@ packages: cpu: [s390x] os: [linux] - '@esbuild/linux-s390x@0.25.5': - resolution: {integrity: sha512-K2dSKTKfmdh78uJ3NcWFiqyRrimfdinS5ErLSn3vluHNeHVnBAFWC8a4X5N+7FgVE1EjXS1QDZbpqZBjfrqMTQ==} + '@esbuild/linux-s390x@0.25.8': + resolution: {integrity: sha512-Xutvh6VjlbcHpsIIbwY8GVRbwoviWT19tFhgdA7DlenLGC/mbc3lBoVb7jxj9Z+eyGqvcnSyIltYUrkKzWqSvg==} engines: {node: '>=18'} cpu: [s390x] os: [linux] @@ -1897,8 +1841,8 @@ packages: cpu: [x64] os: [linux] - '@esbuild/linux-x64@0.25.5': - resolution: {integrity: sha512-uhj8N2obKTE6pSZ+aMUbqq+1nXxNjZIIjCjGLfsWvVpy7gKCOL6rsY1MhRh9zLtUtAI7vpgLMK6DxjO8Qm9lJw==} + '@esbuild/linux-x64@0.25.8': + resolution: {integrity: sha512-ASFQhgY4ElXh3nDcOMTkQero4b1lgubskNlhIfJrsH5OKZXDpUAKBlNS0Kx81jwOBp+HCeZqmoJuihTv57/jvQ==} engines: {node: '>=18'} cpu: [x64] os: [linux] @@ -1921,8 +1865,8 @@ packages: cpu: [arm64] os: [netbsd] - '@esbuild/netbsd-arm64@0.25.5': - resolution: {integrity: sha512-pwHtMP9viAy1oHPvgxtOv+OkduK5ugofNTVDilIzBLpoWAM16r7b/mxBvfpuQDpRQFMfuVr5aLcn4yveGvBZvw==} + '@esbuild/netbsd-arm64@0.25.8': + resolution: {integrity: sha512-d1KfruIeohqAi6SA+gENMuObDbEjn22olAR7egqnkCD9DGBG0wsEARotkLgXDu6c4ncgWTZJtN5vcgxzWRMzcw==} engines: {node: '>=18'} cpu: [arm64] os: [netbsd] @@ -1963,8 +1907,8 @@ packages: cpu: [x64] os: [netbsd] - '@esbuild/netbsd-x64@0.25.5': - resolution: {integrity: sha512-WOb5fKrvVTRMfWFNCroYWWklbnXH0Q5rZppjq0vQIdlsQKuw6mdSihwSo4RV/YdQ5UCKKvBy7/0ZZYLBZKIbwQ==} + '@esbuild/netbsd-x64@0.25.8': + resolution: {integrity: sha512-nVDCkrvx2ua+XQNyfrujIG38+YGyuy2Ru9kKVNyh5jAys6n+l44tTtToqHjino2My8VAY6Lw9H7RI73XFi66Cg==} engines: {node: '>=18'} cpu: [x64] os: [netbsd] @@ -1993,8 +1937,8 @@ packages: cpu: [arm64] os: [openbsd] - '@esbuild/openbsd-arm64@0.25.5': - resolution: {integrity: sha512-7A208+uQKgTxHd0G0uqZO8UjK2R0DDb4fDmERtARjSHWxqMTye4Erz4zZafx7Di9Cv+lNHYuncAkiGFySoD+Mw==} + '@esbuild/openbsd-arm64@0.25.8': + resolution: {integrity: sha512-j8HgrDuSJFAujkivSMSfPQSAa5Fxbvk4rgNAS5i3K+r8s1X0p1uOO2Hl2xNsGFppOeHOLAVgYwDVlmxhq5h+SQ==} engines: {node: '>=18'} cpu: [arm64] os: [openbsd] @@ -2035,12 +1979,18 @@ packages: cpu: [x64] os: [openbsd] - '@esbuild/openbsd-x64@0.25.5': - resolution: {integrity: sha512-G4hE405ErTWraiZ8UiSoesH8DaCsMm0Cay4fsFWOOUcz8b8rC6uCvnagr+gnioEjWn0wC+o1/TAHt+It+MpIMg==} + '@esbuild/openbsd-x64@0.25.8': + resolution: {integrity: sha512-1h8MUAwa0VhNCDp6Af0HToI2TJFAn1uqT9Al6DJVzdIBAd21m/G0Yfc77KDM3uF3T/YaOgQq3qTJHPbTOInaIQ==} engines: {node: '>=18'} cpu: [x64] os: [openbsd] + '@esbuild/openharmony-arm64@0.25.8': + resolution: {integrity: sha512-r2nVa5SIK9tSWd0kJd9HCffnDHKchTGikb//9c7HX+r+wHYCpQrSgxhlY6KWV1nFo1l4KFbsMlHk+L6fekLsUg==} + engines: {node: '>=18'} + cpu: [arm64] + os: [openharmony] + '@esbuild/sunos-x64@0.18.20': resolution: {integrity: sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ==} engines: {node: '>=12'} @@ -2077,8 +2027,8 @@ packages: cpu: [x64] os: [sunos] - '@esbuild/sunos-x64@0.25.5': - resolution: {integrity: sha512-l+azKShMy7FxzY0Rj4RCt5VD/q8mG/e+mDivgspo+yL8zW7qEwctQ6YqKX34DTEleFAvCIUviCFX1SDZRSyMQA==} + '@esbuild/sunos-x64@0.25.8': + resolution: {integrity: sha512-zUlaP2S12YhQ2UzUfcCuMDHQFJyKABkAjvO5YSndMiIkMimPmxA+BYSBikWgsRpvyxuRnow4nS5NPnf9fpv41w==} engines: {node: '>=18'} cpu: [x64] os: [sunos] @@ -2119,8 +2069,8 @@ packages: cpu: [arm64] os: [win32] - '@esbuild/win32-arm64@0.25.5': - resolution: {integrity: sha512-O2S7SNZzdcFG7eFKgvwUEZ2VG9D/sn/eIiz8XRZ1Q/DO5a3s76Xv0mdBzVM5j5R639lXQmPmSo0iRpHqUUrsxw==} + '@esbuild/win32-arm64@0.25.8': + resolution: {integrity: sha512-YEGFFWESlPva8hGL+zvj2z/SaK+pH0SwOM0Nc/d+rVnW7GSTFlLBGzZkuSU9kFIGIo8q9X3ucpZhu8PDN5A2sQ==} engines: {node: '>=18'} cpu: [arm64] os: [win32] @@ -2161,8 +2111,8 @@ packages: cpu: [ia32] os: [win32] - '@esbuild/win32-ia32@0.25.5': - resolution: {integrity: sha512-onOJ02pqs9h1iMJ1PQphR+VZv8qBMQ77Klcsqv9CNW2w6yLqoURLcgERAIurY6QE63bbLuqgP9ATqajFLK5AMQ==} + '@esbuild/win32-ia32@0.25.8': + resolution: {integrity: sha512-hiGgGC6KZ5LZz58OL/+qVVoZiuZlUYlYHNAmczOm7bs2oE1XriPFi5ZHHrS8ACpV5EjySrnoCKmcbQMN+ojnHg==} engines: {node: '>=18'} cpu: [ia32] os: [win32] @@ -2203,8 +2153,8 @@ packages: cpu: [x64] os: [win32] - '@esbuild/win32-x64@0.25.5': - resolution: {integrity: sha512-TXv6YnJ8ZMVdX+SXWVBo/0p8LTcrUYngpWjvm91TMjjBQii7Oz11Lw5lbDV5Y0TzuhSJHwiH4hEtC1I42mMS0g==} + '@esbuild/win32-x64@0.25.8': + resolution: {integrity: sha512-cn3Yr7+OaaZq1c+2pe+8yxC8E144SReCQjN6/2ynubzYjvyqZjTXfQJpAcQpsdJq3My7XADANiYGHoFC69pLQw==} engines: {node: '>=18'} cpu: [x64] os: [win32] @@ -2616,6 +2566,13 @@ packages: '@openpanel/web@1.0.1': resolution: {integrity: sha512-cVZ7Kr9SicczJ/RDIfEtZs8+1iGDzwkabVA/j3NqSl8VSucsC8m1+LVbjmCDzCJNnK4yVn6tEcc9PJRi2rtllw==} + '@openrouter/ai-sdk-provider@1.0.0-beta.6': + resolution: {integrity: sha512-1cj8yUek4ib10MqZ+9fw1p1a3SR0Zhx3HH1J3+WQIXXuH/rUhiAkwovgPi1ADuC1QECPSPiwfhK2GecnDm8hGg==} + engines: {node: '>=18'} + peerDependencies: + ai: ^5.0.0-beta.12 + zod: ^3.24.1 || ^v4 + '@opentelemetry/api-logs@0.57.2': resolution: {integrity: sha512-uIX52NnTM0iBh84MShlpouI7UKqkZ7MrUszTmaypHBu4r7NofznSnQRfJ+uUeDtQDj6w8eFGg5KBLDAwAPz1+A==} engines: {node: '>=14'} @@ -3068,14 +3025,14 @@ packages: peerDependencies: '@opentelemetry/api': ^1.1.0 + '@orama/orama@3.1.11': + resolution: {integrity: sha512-Szki0cgFiXE5F9RLx2lUyEtJllnuCSQ4B8RLDwIjXkVit6qZjoDAxH+xhJs29MjKLDz0tbPLdKFa6QrQ/qoGGA==} + engines: {node: '>= 20.0.0'} + '@orama/orama@3.1.4': resolution: {integrity: sha512-7tTuIdkzgRscJ7sGHVsoK9GtXSpwbfrj3WYnuSu/SepXHhshYiQaOeXc/aeLh4MfgIre6tEs/caIop8wrhMi3g==} engines: {node: '>= 16.0.0'} - '@orama/orama@3.1.7': - resolution: {integrity: sha512-6yB0117ZjsgNevZw3LP+bkrZa9mU/POPVaXgzMPOBbBc35w2P3R+1vMMhEfC06kYCpd5bf0jodBaTkYQW5TVeQ==} - engines: {node: '>= 20.0.0'} - '@orama/tokenizers@3.1.4': resolution: {integrity: sha512-OKyw/uKDZqlS4Vwwyp2l+d1ISGtBt3qMORbTp3jyfeGjXllTLJrH/erzlVYKWdNp5bPrWGVrQbtgWgE5nLV1Ng==} engines: {node: '>= 18.0.0'} @@ -4637,44 +4594,44 @@ packages: '@shikijs/core@2.5.0': resolution: {integrity: sha512-uu/8RExTKtavlpH7XqnVYBrfBkUc20ngXiX9NSrBhOVZYv/7XQRKUyhtkeflY5QsxC0GbJThCerruZfsUaSldg==} - '@shikijs/core@3.6.0': - resolution: {integrity: sha512-9By7Xb3olEX0o6UeJyPLI1PE1scC4d3wcVepvtv2xbuN9/IThYN4Wcwh24rcFeASzPam11MCq8yQpwwzCgSBRw==} + '@shikijs/core@3.9.1': + resolution: {integrity: sha512-W5Vwen0KJCtR7KFRo+3JLGAqLUPsfW7e+wZ4yaRBGIogwI9ZlnkpRm9ZV8JtfzMxOkIwZwMmmN0hNErLtm3AYg==} '@shikijs/engine-javascript@2.5.0': resolution: {integrity: sha512-VjnOpnQf8WuCEZtNUdjjwGUbtAVKuZkVQ/5cHy/tojVVRIRtlWMYVjyWhxOmIq05AlSOv72z7hRNRGVBgQOl0w==} - '@shikijs/engine-javascript@3.6.0': - resolution: {integrity: sha512-7YnLhZG/TU05IHMG14QaLvTW/9WiK8SEYafceccHUSXs2Qr5vJibUwsDfXDLmRi0zHdzsxrGKpSX6hnqe0k8nA==} + '@shikijs/engine-javascript@3.9.1': + resolution: {integrity: sha512-4hGenxYpAmtALryKsdli2K58F0s7RBYpj/RSDcAAGfRM6eTEGI5cZnt86mr+d9/4BaZ5sH5s4p3VU5irIdhj9Q==} '@shikijs/engine-oniguruma@2.5.0': resolution: {integrity: sha512-pGd1wRATzbo/uatrCIILlAdFVKdxImWJGQ5rFiB5VZi2ve5xj3Ax9jny8QvkaV93btQEwR/rSz5ERFpC5mKNIw==} - '@shikijs/engine-oniguruma@3.6.0': - resolution: {integrity: sha512-nmOhIZ9yT3Grd+2plmW/d8+vZ2pcQmo/UnVwXMUXAKTXdi+LK0S08Ancrz5tQQPkxvjBalpMW2aKvwXfelauvA==} + '@shikijs/engine-oniguruma@3.9.1': + resolution: {integrity: sha512-WPlL/xqviwS3te4unSGGGfflKsuHLMI6tPdNYvgz/IygcBT6UiwDFSzjBKyebwi5GGSlXsjjdoJLIBnAplmEZw==} '@shikijs/langs@2.5.0': resolution: {integrity: sha512-Qfrrt5OsNH5R+5tJ/3uYBBZv3SuGmnRPejV9IlIbFH3HTGLDlkqgHymAlzklVmKBjAaVmkPkyikAV/sQ1wSL+w==} - '@shikijs/langs@3.6.0': - resolution: {integrity: sha512-IdZkQJaLBu1LCYCwkr30hNuSDfllOT8RWYVZK1tD2J03DkiagYKRxj/pDSl8Didml3xxuyzUjgtioInwEQM/TA==} + '@shikijs/langs@3.9.1': + resolution: {integrity: sha512-Vyy2Yv9PP3Veh3VSsIvNncOR+O93wFsNYgN2B6cCCJlS7H9SKFYc55edsqernsg8WT/zam1cfB6llJsQWLnVhA==} - '@shikijs/rehype@3.6.0': - resolution: {integrity: sha512-r0Rr2hvXXqLl5DJ1Lx7RImU81XsK2bjThaym/lujl2A0r7SId0u1s+bcWYfFKb+7mCLH7MXF+jdzCtdWGOcYCQ==} + '@shikijs/rehype@3.9.1': + resolution: {integrity: sha512-zkwzC92w2MdmwIkT0E8lKYD4dPJxCmm7HNHBwyWgJN4P6wcxZKJDvgCgAOXjOtLfXuZl3hZjO1Q/9lIyjarD/g==} '@shikijs/themes@2.5.0': resolution: {integrity: sha512-wGrk+R8tJnO0VMzmUExHR+QdSaPUl/NKs+a4cQQRWyoc3YFbUzuLEi/KWK1hj+8BfHRKm2jNhhJck1dfstJpiw==} - '@shikijs/themes@3.6.0': - resolution: {integrity: sha512-Fq2j4nWr1DF4drvmhqKq8x5vVQ27VncF8XZMBuHuQMZvUSS3NBgpqfwz/FoGe36+W6PvniZ1yDlg2d4kmYDU6w==} + '@shikijs/themes@3.9.1': + resolution: {integrity: sha512-zAykkGECNICCMXpKeVvq04yqwaSuAIvrf8MjsU5bzskfg4XreU+O0B5wdNCYRixoB9snd3YlZ373WV5E/g5T9A==} - '@shikijs/transformers@3.6.0': - resolution: {integrity: sha512-PYkU54lYV0RCaUG8n2FNTF+YWiU3uPhcjLGq2x/C8lIrUX9GVnRb3bK+R5xtdFHbuctntATKm7ondp/H/dux9Q==} + '@shikijs/transformers@3.9.1': + resolution: {integrity: sha512-QI4Bh565EhKGaefiDAyn5o7S8rQIUGXcOjZANSiQHa/KSGCyJTZP9UUiRbvdovVpaI/nagODX6mspFk/vcYOQQ==} '@shikijs/types@2.5.0': resolution: {integrity: sha512-ygl5yhxki9ZLNuNpPitBWvcy9fsSKKaRuO4BAlMyagszQidxcpLAr0qiW/q43DtSIDxO6hEbtYLiFZNXO/hdGw==} - '@shikijs/types@3.6.0': - resolution: {integrity: sha512-cLWFiToxYu0aAzJqhXTQsFiJRTFDAGl93IrMSBNaGSzs7ixkLfdG6pH11HipuWFGW5vyx4X47W8HDQ7eSrmBUg==} + '@shikijs/types@3.9.1': + resolution: {integrity: sha512-rqM3T7a0iM1oPKz9iaH/cVgNX9Vz1HERcUcXJ94/fulgVdwqfnhXzGxO4bLrAnh/o5CPLy3IcYedogfV+Ns0Qg==} '@shikijs/vscode-textmate@10.0.2': resolution: {integrity: sha512-83yeghZ2xxin3Nj8z1NMd/NCuca+gsYXswywDy5bHvwlWL8tpTQmzGeUuHd9FC3E/SBEMvzJRwWEOz5gGes9Qg==} @@ -5360,9 +5317,6 @@ packages: '@types/debug@4.1.12': resolution: {integrity: sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==} - '@types/diff-match-patch@1.0.36': - resolution: {integrity: sha512-xFdR6tkm0MWvBfO8xXCSsinYxHcqkQUlcHeSpMC2ukzOb6lwQAfDmW+Qt0AvlGd8HpsS28qKsB+oPeJn9I39jg==} - '@types/estree-jsx@1.0.5': resolution: {integrity: sha512-52CcUVNFyfb1A2ALocQw/Dd1BQFNmSdkuC3BkZ6iqhdMfQz7JWOFRuJFloOzjk+6WijU56m9oKXFAXc7o3Towg==} @@ -5390,6 +5344,9 @@ packages: '@types/node@20.19.0': resolution: {integrity: sha512-hfrc+1tud1xcdVTABC2JiomZJEklMcXYNTVtZLAeqTVWD+qL5jkHKT+1lOtqDdGxt+mB53DTtiz673vfjU8D1Q==} + '@types/node@20.19.9': + resolution: {integrity: sha512-cuVNgarYWZqxRJDQHEB58GEONhOK79QVR/qYx4S7kcUObQvUwvFnYxJuuHUKm2aieN9X3yZB4LZsuYNU1Qphsw==} + '@types/node@22.16.3': resolution: {integrity: sha512-sr4Xz74KOUeYadexo1r8imhRtlVXcs+j3XK3TcoiYk7B1t3YRVJgtaD3cwX73NYb71pmVuMLNRhJ9XKdoDB74g==} @@ -5519,17 +5476,11 @@ packages: resolution: {integrity: sha512-jRR5wdylq8CkOe6hei19GGZnxM6rBGwFl3Bg0YItGDimvjGtAvdZk4Pu6Cl4u4Igsws4a1fd1Vq3ezrhn4KmFw==} engines: {node: '>= 14'} - ai@4.1.45: - resolution: {integrity: sha512-nQkxQ2zCD+O/h8zJ+PxmBv9coyMaG1uP9kGJvhNaGAA25hbZRQWL0NbTsSJ/QMOUraXKLa+6fBm3VF1NkJK9Kg==} + ai@5.0.0: + resolution: {integrity: sha512-F4jOhOSeiZD8lXpF4l1hRqyM1jbqoLKGVZNxAP467wmQCsWUtElMa3Ki5PrDMq6qvUNC3deUKfERDAsfj7IDlg==} engines: {node: '>=18'} peerDependencies: - react: ^18 || ^19 || ^19.0.0-rc - zod: ^3.0.0 - peerDependenciesMeta: - react: - optional: true - zod: - optional: true + zod: ^3.25.76 || ^4 ansi-colors@4.1.3: resolution: {integrity: sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==} @@ -5632,9 +5583,6 @@ packages: engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true - buffer-equal-constant-time@1.0.1: - resolution: {integrity: sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==} - buffer-from@1.1.2: resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} @@ -5939,9 +5887,6 @@ packages: devlop@1.1.0: resolution: {integrity: sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==} - diff-match-patch@1.0.5: - resolution: {integrity: sha512-IayShXAgj/QMXgB0IWmKx+rOPuGMhqm5w6jvFxmVenXKIzRqTAAsbBPT3kWQeGANj3jGgvcvv4yK6SxqYmikgw==} - dom-helpers@5.2.1: resolution: {integrity: sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==} @@ -6065,9 +6010,6 @@ packages: eastasianwidth@0.2.0: resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} - ecdsa-sig-formatter@1.0.11: - resolution: {integrity: sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==} - eciesjs@0.4.14: resolution: {integrity: sha512-eJAgf9pdv214Hn98FlUzclRMYWF7WfoLlkS9nWMTm1qcCwn6Ad4EGD9lr9HXMBfSrZhYQujRE+p0adPRkctC6A==} engines: {bun: '>=1', deno: '>=2', node: '>=16'} @@ -6181,8 +6123,8 @@ packages: engines: {node: '>=18'} hasBin: true - esbuild@0.25.5: - resolution: {integrity: sha512-P8OtKZRv/5J5hhz0cUAdu/cLuPIKXpQl1R9pZtvmHWQvrAUVd0UNIPT4IB4W3rNOqVO0rlqHmCIbSwxh/c9yUQ==} + esbuild@0.25.8: + resolution: {integrity: sha512-vVC0USHGtMi8+R4Kz8rt6JhEWLxsv9Rnu/lGYbPR8u47B+DCBksq9JarW0zOO7bs37hyOK1l2/oqtbciutL5+Q==} engines: {node: '>=18'} hasBin: true @@ -6228,9 +6170,9 @@ packages: eventemitter3@4.0.7: resolution: {integrity: sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==} - eventsource-parser@3.0.0: - resolution: {integrity: sha512-T1C0XCUimhxVQzW4zFipdx0SficT651NnkR0ZSH3yQwh+mFMdLfgjABVi4YtMTtaL4s168593DaoaRLMqryavA==} - engines: {node: '>=18.0.0'} + eventsource-parser@3.0.3: + resolution: {integrity: sha512-nVpZkTMM9rF6AQ9gPJpFsNAMt48wIzB5TQgiTLdHiuO8XEDhUgZEhqKlZWXbIzo9VmJ/HvysHqEaVeD5v9TPvA==} + engines: {node: '>=20.0.0'} execa@5.1.1: resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==} @@ -6349,9 +6291,10 @@ packages: engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} os: [darwin] - fumadocs-core@15.5.3: - resolution: {integrity: sha512-FGOrPqUpovSkc25s7EzNvYO0Oi1mlAJz9GxJ3jb8W1v5rmtWgjVhpjs5vBNMQtKDpQuO0GjkHN5iMQVbW0DvjQ==} + fumadocs-core@15.6.7: + resolution: {integrity: sha512-+tAnCFoE2NZOZxaqwKc1HFbCoOOa/E6sJpXlviCE6JYDl6vvpmhC7CWjrzVzxmtLb5Y3wm89MdRR3opfPR79Uw==} peerDependencies: + '@mixedbread/sdk': ^0.19.0 '@oramacloud/client': 1.x.x || 2.x.x '@types/react': '*' algoliasearch: 5.x.x @@ -6359,6 +6302,8 @@ packages: react: 18.x.x || 19.x.x react-dom: 18.x.x || 19.x.x peerDependenciesMeta: + '@mixedbread/sdk': + optional: true '@oramacloud/client': optional: true '@types/react': @@ -6372,19 +6317,27 @@ packages: react-dom: optional: true - fumadocs-mdx@11.6.8: - resolution: {integrity: sha512-hn+KGXNXRJLAYxTFfBI2dokiV3UCp8hBkB3CUA/pWdMzLg06Vee4UHoVlQm0hKs05XT6syHRbAxaOZvaOviGfQ==} + fumadocs-mdx@11.7.3: + resolution: {integrity: sha512-EMuISWaUeImpd2KI9LdWfc1rMWv9qfIoJSAXsI3TDXph8v4FyQ7Nz+NRpeoNgv59gzwKbkMRcnZnrKXI/ybnoA==} hasBin: true peerDependencies: - '@fumadocs/mdx-remote': ^1.2.0 + '@fumadocs/mdx-remote': ^1.4.0 fumadocs-core: ^14.0.0 || ^15.0.0 next: ^15.3.0 + react: '*' + vite: 6.x.x || 7.x.x peerDependenciesMeta: '@fumadocs/mdx-remote': optional: true + next: + optional: true + react: + optional: true + vite: + optional: true - fumadocs-ui@15.5.3: - resolution: {integrity: sha512-5SmN1j7HBQ9XuboAicfFqoNLPpN37Iwz0+cCLt6cOOequurTjfPfYCjvlKzP5q0GxDjrpU2vEQX/9JMa25bC6w==} + fumadocs-ui@15.6.7: + resolution: {integrity: sha512-raj2iyglEj3Hi6pjZH6y7HJtizJ8yZVtEQNMxyrwpKrqOUHzAZ2lRvT3gCETBVbnF+Oa6PSLRJgL30XqO7LkBg==} peerDependencies: '@types/react': '*' next: 14.x.x || 15.x.x @@ -6468,10 +6421,6 @@ packages: resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} engines: {node: '>=4'} - google-auth-library@9.15.1: - resolution: {integrity: sha512-Jb6Z0+nvECVz+2lzSMt9u98UsoakXxA2HGHMCxh+so3n90XgYWkq5dur19JAJV7ONiJY22yBTyJB1TSkvPq9Ng==} - engines: {node: '>=14'} - google-logging-utils@0.0.2: resolution: {integrity: sha512-NEgUnEcBiP5HrPzufUkBzJOD/Sxsco3rLNo1F1TNf7ieU8ryUzBhqba8r756CjLX7rn3fHl6iLEwPYuqpoKgQQ==} engines: {node: '>=14'} @@ -6483,10 +6432,6 @@ packages: graceful-fs@4.2.11: resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} - gtoken@7.1.0: - resolution: {integrity: sha512-pCcEwRi+TKpMlxAQObHDQ56KawURgyAf6jtIY046fJ5tIv3zDe/LEIubckAO8fj6JnAxLdmWkUfNyulQ2iKdEw==} - engines: {node: '>=14.0.0'} - gzip-size@6.0.0: resolution: {integrity: sha512-ax7ZYomf6jqPTQ4+XCpUGyXKHk5WweS+e05MBO4/y3WJ5RkmPXNKvX+bx1behVILVwr6JSQvZAku021CHPXG3Q==} engines: {node: '>=10'} @@ -6510,18 +6455,12 @@ packages: resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} engines: {node: '>= 0.4'} - hast-util-to-estree@3.1.1: - resolution: {integrity: sha512-IWtwwmPskfSmma9RpzCappDUitC8t5jhAynHhc1m2+5trOgsrp7txscUSavc5Ic8PATyAjfrCK1wgtxh2cICVQ==} - hast-util-to-estree@3.1.3: resolution: {integrity: sha512-48+B/rJWAp0jamNbAAf9M7Uf//UVqAoMmgXhBdxTDJLGKY+LRnZ99qcG+Qjl5HfMpYNzS5v4EAwVEF34LeAj7w==} hast-util-to-html@9.0.5: resolution: {integrity: sha512-OguPdidb+fbHQSU4Q4ZiLKnzWo8Wwsf5bZfbvu7//a9oTYoqD/fWpe96NuHkoS9h0ccGOTe0C4NGXdtS0iObOw==} - hast-util-to-jsx-runtime@2.3.2: - resolution: {integrity: sha512-1ngXYb+V9UT5h+PxNRa1O1FYguZK/XL+gkeqvp7EdHlB9oHUG0eYRo/vY5inBdcqo3RkPMC58/H94HvkbfGdyg==} - hast-util-to-jsx-runtime@2.3.6: resolution: {integrity: sha512-zl6s8LwNyo1P9uw+XJGvZtdFF1GdAkOg8ujOw+4Pyb76874fLps4ueHXDhXWdk6YHQ6OgUtinliG7RsYvCbbBg==} @@ -6733,17 +6672,6 @@ packages: engines: {node: '>=6'} hasBin: true - jsondiffpatch@0.6.0: - resolution: {integrity: sha512-3QItJOXp2AP1uv7waBkao5nCvhEv+QmJAd38Ybq7wNI74Q+BBmnLn4EDKz6yI9xGAIQoUF87qHt+kc1IVxB4zQ==} - engines: {node: ^18.0.0 || >=20.0.0} - hasBin: true - - jwa@2.0.1: - resolution: {integrity: sha512-hRF04fqJIP8Abbkq5NKGN0Bbr3JxlQ+qhZufXVr0DvujKy93ZCbXZMHDL4EOtodSbCWxOqR8MS1tXA5hwqCXDg==} - - jws@4.0.0: - resolution: {integrity: sha512-KDncfTmOZoOMTFG4mBlG0qUIOlc03fmzH+ru6RgYVZhPkyiy/92Owlt/8UEN+a4TXR1FQetfIpJE8ApdvdVxTg==} - knip@5.61.2: resolution: {integrity: sha512-ZBv37zDvZj0/Xwk0e93xSjM3+5bjxgqJ0PH2GlB5tnWV0ktXtmatWLm+dLRUCT/vpO3SdGz2nNAfvVhuItUNcQ==} engines: {node: '>=18.18.0'} @@ -7286,6 +7214,10 @@ packages: resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} engines: {node: '>=8'} + npm-to-yarn@3.0.1: + resolution: {integrity: sha512-tt6PvKu4WyzPwWUzy/hvPFqn+uwXO0K1ZHka8az3NnrhWJDmSqI8ncWq0fkL0k/lmmi5tAC11FXwXuh0rFbt1A==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + object-assign@4.1.1: resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} engines: {node: '>=0.10.0'} @@ -7375,8 +7307,8 @@ packages: peberminta@0.9.0: resolution: {integrity: sha512-XIxfHpEuSJbITd1H3EeQwpcZbTLHc+VVr8ANI9t5sit565tsI4/xK3KWTUFE2e6QiangUkh3B0jihzmGnNrRsQ==} - pg-cloudflare@1.2.5: - resolution: {integrity: sha512-OOX22Vt0vOSRrdoUPKJ8Wi2OpE/o/h9T8X1s4qSkCedbNah9ei2W2765be8iMVxQUsvgT7zIAT2eIa9fs5+vtg==} + pg-cloudflare@1.2.7: + resolution: {integrity: sha512-YgCtzMH0ptvZJslLM1ffsY4EuGaU0cx4XSdXLRFae8bPP4dS5xL1tNB3k2o/N64cHJpwU7dxKli/nZ2lUa5fLg==} pg-connection-string@2.9.0: resolution: {integrity: sha512-P2DEBKuvh5RClafLngkAuGe9OUlFV7ebu8w1kmaaOgPcpJd1RIFh7otETfI6hAR8YupOLFTY7nuvvIn7PLciUQ==} @@ -7400,6 +7332,9 @@ packages: pg-protocol@1.10.0: resolution: {integrity: sha512-IpdytjudNuLv8nhlHs/UrVBhU0e78J0oIS/0AVdTbWxSOkFUVdsHC/NrorO6nXsQNDTT1kzDSOMJubBQviX18Q==} + pg-protocol@1.10.3: + resolution: {integrity: sha512-6DIBgBQaTKDJyxnXaLiLR8wBpQQcGWuAESkRBX/t6OwA8YsqP+iVSiond2EDy6Y/dsGk8rh/jtax3js5NeV7JQ==} + pg-protocol@1.7.1: resolution: {integrity: sha512-gjTHWGYWsEgy9MsY0Gp6ZJxV24IjDqdpTW7Eh0x+WfJLFsm/TJx1MzL6T0D88mBvkpxotCQ6TwW6N+Kko7lhgQ==} @@ -7414,6 +7349,10 @@ packages: resolution: {integrity: sha512-cRL3JpS3lKMGsKaWndugWQoLOCoP+Cic8oseVcbr0qhPzYD5DWXK+RZ9LY9wxRf7RQia4SCwQlXk0q6FCPrVng==} engines: {node: '>=10'} + pg-types@4.1.0: + resolution: {integrity: sha512-o2XFanIMy/3+mThw69O8d4n1E5zsLhdO+OPqswezu7Z5ekP4hYDqlDjlmOpYMbzY2Br0ufCwJLdDIXeNVwcWFg==} + engines: {node: '>=10'} + pg@8.16.0: resolution: {integrity: sha512-7SKfdvP8CTNXjMUzfcVTaI+TDzBEeaUnVwiVGZQD1Hh33Kpev7liQba9uLd4CfN8r9mCVsD0JIpq03+Unpz+kg==} engines: {node: '>= 8.0.0'} @@ -7460,6 +7399,10 @@ packages: resolution: {integrity: sha512-6faShkdFugNQCLwucjPcY5ARoW1SlbnrZjmGl0IrrqewpvxvhSLHimCVzqeuULCbG0fQv7Dtk1yDbG3xv7Veog==} engines: {node: '>=12'} + postgres-array@3.0.4: + resolution: {integrity: sha512-nAUSGfSDGOaOAEGwqsRY27GPOea7CNipJPOA7lPbdEpx5Kg3qzdP0AaWC5MlhTWV9s4hFX39nomVZ+C4tnGOJQ==} + engines: {node: '>=12'} + postgres-bytea@1.0.0: resolution: {integrity: sha512-xy3pmLuQqRBZBXDULy7KbaitYqLcmxigw14Q5sj8QBVLqEwXfeybIKVWiqAXTlcvdvb0+xkOtDbfQMOf4lST1w==} engines: {node: '>=0.10.0'} @@ -7514,9 +7457,6 @@ packages: prop-types@15.8.1: resolution: {integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==} - property-information@6.5.0: - resolution: {integrity: sha512-PgTgs/BlvHxOu8QuEN7wi5A0OmXaBcHpmCSTehcs6Uuu9IkDIEo13Hy7n898RHfrQ49vKCoGeWZSaAK01nwVig==} - property-information@7.0.0: resolution: {integrity: sha512-7D/qOz/+Y4X/rzSB6jKxKUsQnphO046ei8qxG59mtM3RG3DHgTK81HrxrmoDVINJb8NKT5ZsRbwHvQ6B68Iyhg==} @@ -7598,8 +7538,8 @@ packages: react-is@18.3.1: resolution: {integrity: sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==} - react-medium-image-zoom@5.2.14: - resolution: {integrity: sha512-nfTVYcAUnBzXQpPDcZL+cG/e6UceYUIG+zDcnemL7jtAqbJjVVkA85RgneGtJeni12dTyiRPZVM6Szkmwd/o8w==} + react-medium-image-zoom@5.3.0: + resolution: {integrity: sha512-RCIzVlsKqy3BYgGgYbolUfuvx0aSKC7YhX/IJGEp+WJxsqdIVYJHkBdj++FAj6VD7RiWj6VVmdCfa/9vJE9hZg==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 @@ -7738,9 +7678,6 @@ packages: remark-parse@11.0.0: resolution: {integrity: sha512-FCxlKLNGknS5ba/1lmpYijMUzX2esxW5xQqjWxw2eHFfS2MSdaHVINFmhjo+qN1WhZhNimq0dZATN9pH0IDrpA==} - remark-rehype@11.1.1: - resolution: {integrity: sha512-g/osARvjkBXb6Wo0XvAeXQohVta8i84ACbenPpoSsxTOQH/Ae0/RGP4WZgnMH5pMLpsj4FG7OHmcIcXxpza8eQ==} - remark-rehype@11.1.2: resolution: {integrity: sha512-Dh7l57ianaEoIpzbp0PC9UKAdCSVklD8E5Rpw7ETfbTl3FqcOOgq5q2LVDhgGCkaBv7p24JXikPdvhhmHvKMsw==} @@ -7804,9 +7741,6 @@ packages: scroll-into-view-if-needed@3.1.0: resolution: {integrity: sha512-49oNpRjWRvnU8NyGVmUaYG4jtTkNonFZI86MmGRDqBphEK2EXT9gdEUoQPZhuBM8yWHxCWbobltqYO5M4XrUvQ==} - secure-json-parse@2.7.0: - resolution: {integrity: sha512-6aU+Rwsezw7VR8/nyvKTx8QpWH9FrcYiXXlqC4z5d5XQBDRqtbfsRjnwGyqbi3gddNtWHuEk9OANUotL26qKUw==} - selderee@0.11.0: resolution: {integrity: sha512-5TF+l7p4+OsnP8BCCvSyZiSPc4x4//p5uPwK8TCnVPJYRmU2aYKMpOXvw8zM5a5JvuuCGN1jmsMwuU2W02ukfA==} @@ -7849,8 +7783,8 @@ packages: shiki@2.5.0: resolution: {integrity: sha512-mI//trrsaiCIPsja5CNfsyNOqgAZUb6VpJA+340toL42UpzQlXpwRV9nch69X6gaUxrr9kaOOa6e3y3uAkGFxQ==} - shiki@3.6.0: - resolution: {integrity: sha512-tKn/Y0MGBTffQoklaATXmTqDU02zx8NYBGQ+F6gy87/YjKbizcLd+Cybh/0ZtOBX9r1NEnAy/GTRDKtOsc1L9w==} + shiki@3.9.1: + resolution: {integrity: sha512-HogZ8nMnv9VAQMrG+P7BleJFhrKHm3fi6CYyHRbUu61gJ0lpqLr6ecYEui31IYG1Cn9Bad7N2vf332iXHnn0bQ==} shimmer@1.2.1: resolution: {integrity: sha512-sQTKC1Re/rM6XyFM6fIAGHRPVGvyXfgzIDvzoq608vM+jeyVD0Tu1E6Np0Kc2zAIFWIj963V2800iF/9LPieQw==} @@ -8051,10 +7985,6 @@ packages: third-party-capital@1.0.20: resolution: {integrity: sha512-oB7yIimd8SuGptespDAZnNkzIz+NWaJCu2RMsbs4Wmp9zSDUM8Nhi3s2OOcqYuv3mN4hitXc8DVx+LyUmbUDiA==} - throttleit@2.1.0: - resolution: {integrity: sha512-nt6AMGKW1p/70DF/hGBdJB57B8Tspmbp5gfJ8ilhLnt7kkr2ye7hzD6NVG8GGErk2HWF34igrL2CXmNIkzKqKw==} - engines: {node: '>=18'} - tiny-invariant@1.3.3: resolution: {integrity: sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg==} @@ -8347,6 +8277,11 @@ packages: peerDependencies: zod: ^3.24.1 + zod-to-json-schema@3.24.6: + resolution: {integrity: sha512-h/z3PKvcTcTetyjl1fkj79MHNEjm+HpD6NXheWjzOekY7kV+lwDYnHw+ivHkijnCSMz1yJaWBD9vu/Fcmk+vEg==} + peerDependencies: + zod: ^3.24.1 + zod-validation-error@3.5.2: resolution: {integrity: sha512-mdi7YOLtram5dzJ5aDtm1AG9+mxRma1iaMrZdYIpFO7epdKBUwLHIxTF8CPDeCQ828zAXYtizrKlEJAtzgfgrw==} engines: {node: '>=18.0.0'} @@ -8362,6 +8297,9 @@ packages: zod@3.25.64: resolution: {integrity: sha512-hbP9FpSZf7pkS7hRVUrOjhwKJNyampPgtXKc3AN6DsWtoHsg2Sb4SQaS4Tcay380zSwd2VPo9G9180emBACp5g==} + zod@4.0.14: + resolution: {integrity: sha512-nGFJTnJN6cM2v9kXL+SOBq3AtjQby3Mv5ySGFof5UGRHrRioSJ5iG680cYNjE/yWk671nROcpPj4hAS8nyLhSw==} + zustand@5.0.3: resolution: {integrity: sha512-14fwWQtU3pH4dE0dOpdMiWjddcH+QzKIgk1cl8epwSE7yag43k/AD/m4L6+K7DytAOr9gGBe3/EXj9g7cdostg==} engines: {node: '>=12.20.0'} @@ -8385,121 +8323,67 @@ packages: snapshots: - '@ai-sdk/anthropic@1.2.12(zod@3.25.64)': + '@ai-sdk/deepseek@1.0.0(zod@4.0.14)': dependencies: - '@ai-sdk/provider': 1.1.3 - '@ai-sdk/provider-utils': 2.2.8(zod@3.25.64) - zod: 3.25.64 + '@ai-sdk/openai-compatible': 1.0.0(zod@4.0.14) + '@ai-sdk/provider': 2.0.0 + '@ai-sdk/provider-utils': 3.0.0(zod@4.0.14) + zod: 4.0.14 - '@ai-sdk/deepseek@0.2.16(zod@3.25.64)': + '@ai-sdk/fal@1.0.0(zod@4.0.14)': dependencies: - '@ai-sdk/openai-compatible': 0.2.16(zod@3.25.64) - '@ai-sdk/provider': 1.1.3 - '@ai-sdk/provider-utils': 2.2.8(zod@3.25.64) - zod: 3.25.64 + '@ai-sdk/provider': 2.0.0 + '@ai-sdk/provider-utils': 3.0.0(zod@4.0.14) + zod: 4.0.14 - '@ai-sdk/fal@0.1.12(zod@3.25.64)': + '@ai-sdk/fireworks@1.0.0(zod@4.0.14)': dependencies: - '@ai-sdk/provider': 1.1.3 - '@ai-sdk/provider-utils': 2.2.8(zod@3.25.64) - zod: 3.25.64 + '@ai-sdk/openai-compatible': 1.0.0(zod@4.0.14) + '@ai-sdk/provider': 2.0.0 + '@ai-sdk/provider-utils': 3.0.0(zod@4.0.14) + zod: 4.0.14 - '@ai-sdk/fireworks@0.2.14(zod@3.25.64)': + '@ai-sdk/gateway@1.0.0(zod@4.0.14)': dependencies: - '@ai-sdk/openai-compatible': 0.2.14(zod@3.25.64) - '@ai-sdk/provider': 1.1.3 - '@ai-sdk/provider-utils': 2.2.8(zod@3.25.64) - zod: 3.25.64 + '@ai-sdk/provider': 2.0.0 + '@ai-sdk/provider-utils': 3.0.0(zod@4.0.14) + zod: 4.0.14 - '@ai-sdk/google-vertex@2.2.24(zod@3.25.64)': + '@ai-sdk/google@2.0.0(zod@4.0.14)': dependencies: - '@ai-sdk/anthropic': 1.2.12(zod@3.25.64) - '@ai-sdk/google': 1.2.19(zod@3.25.64) - '@ai-sdk/provider': 1.1.3 - '@ai-sdk/provider-utils': 2.2.8(zod@3.25.64) - google-auth-library: 9.15.1 - zod: 3.25.64 - transitivePeerDependencies: - - encoding - - supports-color + '@ai-sdk/provider': 2.0.0 + '@ai-sdk/provider-utils': 3.0.0(zod@4.0.14) + zod: 4.0.14 - '@ai-sdk/google@1.2.19(zod@3.25.64)': + '@ai-sdk/openai-compatible@1.0.0(zod@4.0.14)': dependencies: - '@ai-sdk/provider': 1.1.3 - '@ai-sdk/provider-utils': 2.2.8(zod@3.25.64) - zod: 3.25.64 + '@ai-sdk/provider': 2.0.0 + '@ai-sdk/provider-utils': 3.0.0(zod@4.0.14) + zod: 4.0.14 - '@ai-sdk/google@1.2.22(zod@3.25.64)': + '@ai-sdk/openai@2.0.0(zod@4.0.14)': dependencies: - '@ai-sdk/provider': 1.1.3 - '@ai-sdk/provider-utils': 2.2.8(zod@3.25.64) - zod: 3.25.64 + '@ai-sdk/provider': 2.0.0 + '@ai-sdk/provider-utils': 3.0.0(zod@4.0.14) + zod: 4.0.14 - '@ai-sdk/openai-compatible@0.2.14(zod@3.25.64)': + '@ai-sdk/provider-utils@3.0.0(zod@4.0.14)': dependencies: - '@ai-sdk/provider': 1.1.3 - '@ai-sdk/provider-utils': 2.2.8(zod@3.25.64) - zod: 3.25.64 + '@ai-sdk/provider': 2.0.0 + '@standard-schema/spec': 1.0.0 + eventsource-parser: 3.0.3 + zod: 4.0.14 + zod-to-json-schema: 3.24.6(zod@4.0.14) - '@ai-sdk/openai-compatible@0.2.16(zod@3.25.64)': - dependencies: - '@ai-sdk/provider': 1.1.3 - '@ai-sdk/provider-utils': 2.2.8(zod@3.25.64) - zod: 3.25.64 - - '@ai-sdk/openai@1.1.13(zod@3.25.64)': - dependencies: - '@ai-sdk/provider': 1.0.8 - '@ai-sdk/provider-utils': 2.1.9(zod@3.25.64) - zod: 3.25.64 - - '@ai-sdk/provider-utils@2.1.9(zod@3.25.64)': - dependencies: - '@ai-sdk/provider': 1.0.8 - eventsource-parser: 3.0.0 - nanoid: 3.3.8 - secure-json-parse: 2.7.0 - optionalDependencies: - zod: 3.25.64 - - '@ai-sdk/provider-utils@2.2.8(zod@3.25.64)': - dependencies: - '@ai-sdk/provider': 1.1.3 - nanoid: 3.3.8 - secure-json-parse: 2.7.0 - zod: 3.25.64 - - '@ai-sdk/provider@1.0.8': + '@ai-sdk/provider@2.0.0': dependencies: json-schema: 0.4.0 - '@ai-sdk/provider@1.1.3': + '@ai-sdk/replicate@1.0.0(zod@4.0.14)': dependencies: - json-schema: 0.4.0 - - '@ai-sdk/react@1.1.17(react@19.0.0)(zod@3.25.64)': - dependencies: - '@ai-sdk/provider-utils': 2.1.9(zod@3.25.64) - '@ai-sdk/ui-utils': 1.1.15(zod@3.25.64) - swr: 2.3.2(react@19.0.0) - throttleit: 2.1.0 - optionalDependencies: - react: 19.0.0 - zod: 3.25.64 - - '@ai-sdk/replicate@0.2.8(zod@3.25.64)': - dependencies: - '@ai-sdk/provider': 1.1.3 - '@ai-sdk/provider-utils': 2.2.8(zod@3.25.64) - zod: 3.25.64 - - '@ai-sdk/ui-utils@1.1.15(zod@3.25.64)': - dependencies: - '@ai-sdk/provider': 1.0.8 - '@ai-sdk/provider-utils': 2.1.9(zod@3.25.64) - zod-to-json-schema: 3.24.2(zod@3.25.64) - optionalDependencies: - zod: 3.25.64 + '@ai-sdk/provider': 2.0.0 + '@ai-sdk/provider-utils': 3.0.0(zod@4.0.14) + zod: 4.0.14 '@alloc/quick-lru@5.2.0': {} @@ -10064,7 +9948,7 @@ snapshots: '@esbuild/aix-ppc64@0.25.4': optional: true - '@esbuild/aix-ppc64@0.25.5': + '@esbuild/aix-ppc64@0.25.8': optional: true '@esbuild/android-arm64@0.18.20': @@ -10085,7 +9969,7 @@ snapshots: '@esbuild/android-arm64@0.25.4': optional: true - '@esbuild/android-arm64@0.25.5': + '@esbuild/android-arm64@0.25.8': optional: true '@esbuild/android-arm@0.18.20': @@ -10106,7 +9990,7 @@ snapshots: '@esbuild/android-arm@0.25.4': optional: true - '@esbuild/android-arm@0.25.5': + '@esbuild/android-arm@0.25.8': optional: true '@esbuild/android-x64@0.18.20': @@ -10127,7 +10011,7 @@ snapshots: '@esbuild/android-x64@0.25.4': optional: true - '@esbuild/android-x64@0.25.5': + '@esbuild/android-x64@0.25.8': optional: true '@esbuild/darwin-arm64@0.18.20': @@ -10148,7 +10032,7 @@ snapshots: '@esbuild/darwin-arm64@0.25.4': optional: true - '@esbuild/darwin-arm64@0.25.5': + '@esbuild/darwin-arm64@0.25.8': optional: true '@esbuild/darwin-x64@0.18.20': @@ -10169,7 +10053,7 @@ snapshots: '@esbuild/darwin-x64@0.25.4': optional: true - '@esbuild/darwin-x64@0.25.5': + '@esbuild/darwin-x64@0.25.8': optional: true '@esbuild/freebsd-arm64@0.18.20': @@ -10190,7 +10074,7 @@ snapshots: '@esbuild/freebsd-arm64@0.25.4': optional: true - '@esbuild/freebsd-arm64@0.25.5': + '@esbuild/freebsd-arm64@0.25.8': optional: true '@esbuild/freebsd-x64@0.18.20': @@ -10211,7 +10095,7 @@ snapshots: '@esbuild/freebsd-x64@0.25.4': optional: true - '@esbuild/freebsd-x64@0.25.5': + '@esbuild/freebsd-x64@0.25.8': optional: true '@esbuild/linux-arm64@0.18.20': @@ -10232,7 +10116,7 @@ snapshots: '@esbuild/linux-arm64@0.25.4': optional: true - '@esbuild/linux-arm64@0.25.5': + '@esbuild/linux-arm64@0.25.8': optional: true '@esbuild/linux-arm@0.18.20': @@ -10253,7 +10137,7 @@ snapshots: '@esbuild/linux-arm@0.25.4': optional: true - '@esbuild/linux-arm@0.25.5': + '@esbuild/linux-arm@0.25.8': optional: true '@esbuild/linux-ia32@0.18.20': @@ -10274,7 +10158,7 @@ snapshots: '@esbuild/linux-ia32@0.25.4': optional: true - '@esbuild/linux-ia32@0.25.5': + '@esbuild/linux-ia32@0.25.8': optional: true '@esbuild/linux-loong64@0.18.20': @@ -10295,7 +10179,7 @@ snapshots: '@esbuild/linux-loong64@0.25.4': optional: true - '@esbuild/linux-loong64@0.25.5': + '@esbuild/linux-loong64@0.25.8': optional: true '@esbuild/linux-mips64el@0.18.20': @@ -10316,7 +10200,7 @@ snapshots: '@esbuild/linux-mips64el@0.25.4': optional: true - '@esbuild/linux-mips64el@0.25.5': + '@esbuild/linux-mips64el@0.25.8': optional: true '@esbuild/linux-ppc64@0.18.20': @@ -10337,7 +10221,7 @@ snapshots: '@esbuild/linux-ppc64@0.25.4': optional: true - '@esbuild/linux-ppc64@0.25.5': + '@esbuild/linux-ppc64@0.25.8': optional: true '@esbuild/linux-riscv64@0.18.20': @@ -10358,7 +10242,7 @@ snapshots: '@esbuild/linux-riscv64@0.25.4': optional: true - '@esbuild/linux-riscv64@0.25.5': + '@esbuild/linux-riscv64@0.25.8': optional: true '@esbuild/linux-s390x@0.18.20': @@ -10379,7 +10263,7 @@ snapshots: '@esbuild/linux-s390x@0.25.4': optional: true - '@esbuild/linux-s390x@0.25.5': + '@esbuild/linux-s390x@0.25.8': optional: true '@esbuild/linux-x64@0.18.20': @@ -10400,7 +10284,7 @@ snapshots: '@esbuild/linux-x64@0.25.4': optional: true - '@esbuild/linux-x64@0.25.5': + '@esbuild/linux-x64@0.25.8': optional: true '@esbuild/netbsd-arm64@0.25.0': @@ -10412,7 +10296,7 @@ snapshots: '@esbuild/netbsd-arm64@0.25.4': optional: true - '@esbuild/netbsd-arm64@0.25.5': + '@esbuild/netbsd-arm64@0.25.8': optional: true '@esbuild/netbsd-x64@0.18.20': @@ -10433,7 +10317,7 @@ snapshots: '@esbuild/netbsd-x64@0.25.4': optional: true - '@esbuild/netbsd-x64@0.25.5': + '@esbuild/netbsd-x64@0.25.8': optional: true '@esbuild/openbsd-arm64@0.23.0': @@ -10448,7 +10332,7 @@ snapshots: '@esbuild/openbsd-arm64@0.25.4': optional: true - '@esbuild/openbsd-arm64@0.25.5': + '@esbuild/openbsd-arm64@0.25.8': optional: true '@esbuild/openbsd-x64@0.18.20': @@ -10469,7 +10353,10 @@ snapshots: '@esbuild/openbsd-x64@0.25.4': optional: true - '@esbuild/openbsd-x64@0.25.5': + '@esbuild/openbsd-x64@0.25.8': + optional: true + + '@esbuild/openharmony-arm64@0.25.8': optional: true '@esbuild/sunos-x64@0.18.20': @@ -10490,7 +10377,7 @@ snapshots: '@esbuild/sunos-x64@0.25.4': optional: true - '@esbuild/sunos-x64@0.25.5': + '@esbuild/sunos-x64@0.25.8': optional: true '@esbuild/win32-arm64@0.18.20': @@ -10511,7 +10398,7 @@ snapshots: '@esbuild/win32-arm64@0.25.4': optional: true - '@esbuild/win32-arm64@0.25.5': + '@esbuild/win32-arm64@0.25.8': optional: true '@esbuild/win32-ia32@0.18.20': @@ -10532,7 +10419,7 @@ snapshots: '@esbuild/win32-ia32@0.25.4': optional: true - '@esbuild/win32-ia32@0.25.5': + '@esbuild/win32-ia32@0.25.8': optional: true '@esbuild/win32-x64@0.18.20': @@ -10553,7 +10440,7 @@ snapshots: '@esbuild/win32-x64@0.25.4': optional: true - '@esbuild/win32-x64@0.25.5': + '@esbuild/win32-x64@0.25.8': optional: true '@fastify/busboy@2.1.1': {} @@ -10780,7 +10667,7 @@ snapshots: estree-util-is-identifier-name: 3.0.0 estree-util-scope: 1.0.0 estree-walker: 3.0.3 - hast-util-to-jsx-runtime: 2.3.2 + hast-util-to-jsx-runtime: 2.3.6 markdown-extensions: 2.0.0 recma-build-jsx: 1.0.0 recma-jsx: 1.0.0(acorn@8.14.0) @@ -10788,7 +10675,7 @@ snapshots: rehype-recma: 1.0.0 remark-mdx: 3.1.0 remark-parse: 11.0.0 - remark-rehype: 11.1.1 + remark-rehype: 11.1.2 source-map: 0.7.4 unified: 11.0.5 unist-util-position-from-estree: 2.0.0 @@ -10965,6 +10852,11 @@ snapshots: dependencies: '@openpanel/sdk': 1.0.0 + '@openrouter/ai-sdk-provider@1.0.0-beta.6(ai@5.0.0(zod@4.0.14))(zod@4.0.14)': + dependencies: + ai: 5.0.0(zod@4.0.14) + zod: 4.0.14 + '@opentelemetry/api-logs@0.57.2': dependencies: '@opentelemetry/api': 1.9.0 @@ -11637,9 +11529,9 @@ snapshots: '@opentelemetry/api': 1.9.0 '@opentelemetry/core': 1.30.1(@opentelemetry/api@1.9.0) - '@orama/orama@3.1.4': {} + '@orama/orama@3.1.11': {} - '@orama/orama@3.1.7': {} + '@orama/orama@3.1.4': {} '@orama/tokenizers@3.1.4': dependencies: @@ -13289,9 +13181,9 @@ snapshots: '@types/hast': 3.0.4 hast-util-to-html: 9.0.5 - '@shikijs/core@3.6.0': + '@shikijs/core@3.9.1': dependencies: - '@shikijs/types': 3.6.0 + '@shikijs/types': 3.9.1 '@shikijs/vscode-textmate': 10.0.2 '@types/hast': 3.0.4 hast-util-to-html: 9.0.5 @@ -13302,9 +13194,9 @@ snapshots: '@shikijs/vscode-textmate': 10.0.2 oniguruma-to-es: 3.1.1 - '@shikijs/engine-javascript@3.6.0': + '@shikijs/engine-javascript@3.9.1': dependencies: - '@shikijs/types': 3.6.0 + '@shikijs/types': 3.9.1 '@shikijs/vscode-textmate': 10.0.2 oniguruma-to-es: 4.3.3 @@ -13313,25 +13205,25 @@ snapshots: '@shikijs/types': 2.5.0 '@shikijs/vscode-textmate': 10.0.2 - '@shikijs/engine-oniguruma@3.6.0': + '@shikijs/engine-oniguruma@3.9.1': dependencies: - '@shikijs/types': 3.6.0 + '@shikijs/types': 3.9.1 '@shikijs/vscode-textmate': 10.0.2 '@shikijs/langs@2.5.0': dependencies: '@shikijs/types': 2.5.0 - '@shikijs/langs@3.6.0': + '@shikijs/langs@3.9.1': dependencies: - '@shikijs/types': 3.6.0 + '@shikijs/types': 3.9.1 - '@shikijs/rehype@3.6.0': + '@shikijs/rehype@3.9.1': dependencies: - '@shikijs/types': 3.6.0 + '@shikijs/types': 3.9.1 '@types/hast': 3.0.4 hast-util-to-string: 3.0.1 - shiki: 3.6.0 + shiki: 3.9.1 unified: 11.0.5 unist-util-visit: 5.0.0 @@ -13339,21 +13231,21 @@ snapshots: dependencies: '@shikijs/types': 2.5.0 - '@shikijs/themes@3.6.0': + '@shikijs/themes@3.9.1': dependencies: - '@shikijs/types': 3.6.0 + '@shikijs/types': 3.9.1 - '@shikijs/transformers@3.6.0': + '@shikijs/transformers@3.9.1': dependencies: - '@shikijs/core': 3.6.0 - '@shikijs/types': 3.6.0 + '@shikijs/core': 3.9.1 + '@shikijs/types': 3.9.1 '@shikijs/types@2.5.0': dependencies: '@shikijs/vscode-textmate': 10.0.2 '@types/hast': 3.0.4 - '@shikijs/types@3.6.0': + '@shikijs/types@3.9.1': dependencies: '@shikijs/vscode-textmate': 10.0.2 '@types/hast': 3.0.4 @@ -14343,8 +14235,6 @@ snapshots: dependencies: '@types/ms': 2.1.0 - '@types/diff-match-patch@1.0.36': {} - '@types/estree-jsx@1.0.5': dependencies: '@types/estree': 1.0.6 @@ -14375,6 +14265,11 @@ snapshots: dependencies: undici-types: 6.21.0 + '@types/node@20.19.9': + dependencies: + undici-types: 6.21.0 + optional: true + '@types/node@22.16.3': dependencies: undici-types: 6.21.0 @@ -14391,9 +14286,9 @@ snapshots: '@types/pg@8.11.6': dependencies: - '@types/node': 20.19.0 - pg-protocol: 1.10.0 - pg-types: 4.0.2 + '@types/node': 20.19.9 + pg-protocol: 1.10.3 + pg-types: 4.1.0 optional: true '@types/pg@8.6.1': @@ -14467,17 +14362,13 @@ snapshots: agent-base@7.1.3: {} - ai@4.1.45(react@19.0.0)(zod@3.25.64): + ai@5.0.0(zod@4.0.14): dependencies: - '@ai-sdk/provider': 1.0.8 - '@ai-sdk/provider-utils': 2.1.9(zod@3.25.64) - '@ai-sdk/react': 1.1.17(react@19.0.0)(zod@3.25.64) - '@ai-sdk/ui-utils': 1.1.15(zod@3.25.64) + '@ai-sdk/gateway': 1.0.0(zod@4.0.14) + '@ai-sdk/provider': 2.0.0 + '@ai-sdk/provider-utils': 3.0.0(zod@4.0.14) '@opentelemetry/api': 1.9.0 - jsondiffpatch: 0.6.0 - optionalDependencies: - react: 19.0.0 - zod: 3.25.64 + zod: 4.0.14 ansi-colors@4.1.3: {} @@ -14599,8 +14490,6 @@ snapshots: node-releases: 2.0.19 update-browserslist-db: 1.1.3(browserslist@4.24.4) - buffer-equal-constant-time@1.0.1: {} - buffer-from@1.1.2: {} buffer@5.7.1: @@ -14852,8 +14741,6 @@ snapshots: dependencies: dequal: 2.0.3 - diff-match-patch@1.0.5: {} - dom-helpers@5.2.1: dependencies: '@babel/runtime': 7.26.10 @@ -14912,10 +14799,6 @@ snapshots: eastasianwidth@0.2.0: {} - ecdsa-sig-formatter@1.0.11: - dependencies: - safe-buffer: 5.2.1 - eciesjs@0.4.14: dependencies: '@ecies/ciphers': 0.2.3(@noble/ciphers@1.3.0) @@ -15175,33 +15058,34 @@ snapshots: '@esbuild/win32-ia32': 0.25.4 '@esbuild/win32-x64': 0.25.4 - esbuild@0.25.5: + esbuild@0.25.8: optionalDependencies: - '@esbuild/aix-ppc64': 0.25.5 - '@esbuild/android-arm': 0.25.5 - '@esbuild/android-arm64': 0.25.5 - '@esbuild/android-x64': 0.25.5 - '@esbuild/darwin-arm64': 0.25.5 - '@esbuild/darwin-x64': 0.25.5 - '@esbuild/freebsd-arm64': 0.25.5 - '@esbuild/freebsd-x64': 0.25.5 - '@esbuild/linux-arm': 0.25.5 - '@esbuild/linux-arm64': 0.25.5 - '@esbuild/linux-ia32': 0.25.5 - '@esbuild/linux-loong64': 0.25.5 - '@esbuild/linux-mips64el': 0.25.5 - '@esbuild/linux-ppc64': 0.25.5 - '@esbuild/linux-riscv64': 0.25.5 - '@esbuild/linux-s390x': 0.25.5 - '@esbuild/linux-x64': 0.25.5 - '@esbuild/netbsd-arm64': 0.25.5 - '@esbuild/netbsd-x64': 0.25.5 - '@esbuild/openbsd-arm64': 0.25.5 - '@esbuild/openbsd-x64': 0.25.5 - '@esbuild/sunos-x64': 0.25.5 - '@esbuild/win32-arm64': 0.25.5 - '@esbuild/win32-ia32': 0.25.5 - '@esbuild/win32-x64': 0.25.5 + '@esbuild/aix-ppc64': 0.25.8 + '@esbuild/android-arm': 0.25.8 + '@esbuild/android-arm64': 0.25.8 + '@esbuild/android-x64': 0.25.8 + '@esbuild/darwin-arm64': 0.25.8 + '@esbuild/darwin-x64': 0.25.8 + '@esbuild/freebsd-arm64': 0.25.8 + '@esbuild/freebsd-x64': 0.25.8 + '@esbuild/linux-arm': 0.25.8 + '@esbuild/linux-arm64': 0.25.8 + '@esbuild/linux-ia32': 0.25.8 + '@esbuild/linux-loong64': 0.25.8 + '@esbuild/linux-mips64el': 0.25.8 + '@esbuild/linux-ppc64': 0.25.8 + '@esbuild/linux-riscv64': 0.25.8 + '@esbuild/linux-s390x': 0.25.8 + '@esbuild/linux-x64': 0.25.8 + '@esbuild/netbsd-arm64': 0.25.8 + '@esbuild/netbsd-x64': 0.25.8 + '@esbuild/openbsd-arm64': 0.25.8 + '@esbuild/openbsd-x64': 0.25.8 + '@esbuild/openharmony-arm64': 0.25.8 + '@esbuild/sunos-x64': 0.25.8 + '@esbuild/win32-arm64': 0.25.8 + '@esbuild/win32-ia32': 0.25.8 + '@esbuild/win32-x64': 0.25.8 escalade@3.2.0: {} @@ -15250,7 +15134,7 @@ snapshots: eventemitter3@4.0.7: {} - eventsource-parser@3.0.0: {} + eventsource-parser@3.0.3: {} execa@5.1.1: dependencies: @@ -15396,23 +15280,24 @@ snapshots: fsevents@2.3.3: optional: true - fumadocs-core@15.5.3(@types/react@19.0.9)(next@15.2.1(@babel/core@7.24.5)(@opentelemetry/api@1.9.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0): + fumadocs-core@15.6.7(@types/react@19.0.9)(next@15.2.1(@babel/core@7.24.5)(@opentelemetry/api@1.9.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0): dependencies: '@formatjs/intl-localematcher': 0.6.1 - '@orama/orama': 3.1.7 - '@shikijs/rehype': 3.6.0 - '@shikijs/transformers': 3.6.0 + '@orama/orama': 3.1.11 + '@shikijs/rehype': 3.9.1 + '@shikijs/transformers': 3.9.1 github-slugger: 2.0.0 hast-util-to-estree: 3.1.3 hast-util-to-jsx-runtime: 2.3.6 image-size: 2.0.2 negotiator: 1.0.0 + npm-to-yarn: 3.0.1 react-remove-scroll: 2.7.1(@types/react@19.0.9)(react@19.0.0) remark: 15.0.1 remark-gfm: 4.0.1 remark-rehype: 11.1.2 scroll-into-view-if-needed: 3.1.0 - shiki: 3.6.0 + shiki: 3.9.1 unist-util-visit: 5.0.0 optionalDependencies: '@types/react': 19.0.9 @@ -15422,27 +15307,29 @@ snapshots: transitivePeerDependencies: - supports-color - fumadocs-mdx@11.6.8(acorn@8.14.0)(fumadocs-core@15.5.3(@types/react@19.0.9)(next@15.2.1(@babel/core@7.24.5)(@opentelemetry/api@1.9.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(next@15.2.1(@babel/core@7.24.5)(@opentelemetry/api@1.9.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)): + fumadocs-mdx@11.7.3(acorn@8.14.0)(fumadocs-core@15.6.7(@types/react@19.0.9)(next@15.2.1(@babel/core@7.24.5)(@opentelemetry/api@1.9.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(next@15.2.1(@babel/core@7.24.5)(@opentelemetry/api@1.9.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(react@19.0.0): dependencies: '@mdx-js/mdx': 3.1.0(acorn@8.14.0) '@standard-schema/spec': 1.0.0 chokidar: 4.0.3 - esbuild: 0.25.5 + esbuild: 0.25.8 estree-util-value-to-estree: 3.4.0 - fumadocs-core: 15.5.3(@types/react@19.0.9)(next@15.2.1(@babel/core@7.24.5)(@opentelemetry/api@1.9.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + fumadocs-core: 15.6.7(@types/react@19.0.9)(next@15.2.1(@babel/core@7.24.5)(@opentelemetry/api@1.9.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0) js-yaml: 4.1.0 lru-cache: 11.1.0 - next: 15.2.1(@babel/core@7.24.5)(@opentelemetry/api@1.9.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) picocolors: 1.1.1 tinyexec: 1.0.1 tinyglobby: 0.2.14 unist-util-visit: 5.0.0 - zod: 3.25.64 + zod: 4.0.14 + optionalDependencies: + next: 15.2.1(@babel/core@7.24.5)(@opentelemetry/api@1.9.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + react: 19.0.0 transitivePeerDependencies: - acorn - supports-color - fumadocs-ui@15.5.3(@types/react-dom@19.0.3(@types/react@19.0.9))(@types/react@19.0.9)(next@15.2.1(@babel/core@7.24.5)(@opentelemetry/api@1.9.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(tailwindcss@4.0.14): + fumadocs-ui@15.6.7(@types/react-dom@19.0.3(@types/react@19.0.9))(@types/react@19.0.9)(next@15.2.1(@babel/core@7.24.5)(@opentelemetry/api@1.9.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(tailwindcss@4.0.14): dependencies: '@radix-ui/react-accordion': 1.2.11(@types/react-dom@19.0.3(@types/react@19.0.9))(@types/react@19.0.9)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) '@radix-ui/react-collapsible': 1.1.11(@types/react-dom@19.0.3(@types/react@19.0.9))(@types/react@19.0.9)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) @@ -15455,20 +15342,21 @@ snapshots: '@radix-ui/react-slot': 1.2.3(@types/react@19.0.9)(react@19.0.0) '@radix-ui/react-tabs': 1.1.12(@types/react-dom@19.0.3(@types/react@19.0.9))(@types/react@19.0.9)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) class-variance-authority: 0.7.1 - fumadocs-core: 15.5.3(@types/react@19.0.9)(next@15.2.1(@babel/core@7.24.5)(@opentelemetry/api@1.9.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + fumadocs-core: 15.6.7(@types/react@19.0.9)(next@15.2.1(@babel/core@7.24.5)(@opentelemetry/api@1.9.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0) lodash.merge: 4.6.2 next-themes: 0.4.6(react-dom@19.0.0(react@19.0.0))(react@19.0.0) postcss-selector-parser: 7.1.0 react: 19.0.0 react-dom: 19.0.0(react@19.0.0) - react-medium-image-zoom: 5.2.14(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - react-remove-scroll: 2.7.1(@types/react@19.0.9)(react@19.0.0) + react-medium-image-zoom: 5.3.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + scroll-into-view-if-needed: 3.1.0 tailwind-merge: 3.3.1 optionalDependencies: '@types/react': 19.0.9 next: 15.2.1(@babel/core@7.24.5)(@opentelemetry/api@1.9.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) tailwindcss: 4.0.14 transitivePeerDependencies: + - '@mixedbread/sdk' - '@oramacloud/client' - '@types/react-dom' - algoliasearch @@ -15565,32 +15453,12 @@ snapshots: globals@11.12.0: {} - google-auth-library@9.15.1: - dependencies: - base64-js: 1.5.1 - ecdsa-sig-formatter: 1.0.11 - gaxios: 6.7.1 - gcp-metadata: 6.1.1 - gtoken: 7.1.0 - jws: 4.0.0 - transitivePeerDependencies: - - encoding - - supports-color - google-logging-utils@0.0.2: {} gopd@1.2.0: {} graceful-fs@4.2.11: {} - gtoken@7.1.0: - dependencies: - gaxios: 6.7.1 - jws: 4.0.0 - transitivePeerDependencies: - - encoding - - supports-color - gzip-size@6.0.0: dependencies: duplexer: 0.1.2 @@ -15612,27 +15480,6 @@ snapshots: dependencies: function-bind: 1.1.2 - hast-util-to-estree@3.1.1: - dependencies: - '@types/estree': 1.0.6 - '@types/estree-jsx': 1.0.5 - '@types/hast': 3.0.4 - comma-separated-tokens: 2.0.3 - devlop: 1.1.0 - estree-util-attach-comments: 3.0.0 - estree-util-is-identifier-name: 3.0.0 - hast-util-whitespace: 3.0.0 - mdast-util-mdx-expression: 2.0.1 - mdast-util-mdx-jsx: 3.2.0 - mdast-util-mdxjs-esm: 2.0.1 - property-information: 6.5.0 - space-separated-tokens: 2.0.2 - style-to-object: 1.0.8 - unist-util-position: 5.0.0 - zwitch: 2.0.4 - transitivePeerDependencies: - - supports-color - hast-util-to-estree@3.1.3: dependencies: '@types/estree': 1.0.6 @@ -15668,26 +15515,6 @@ snapshots: stringify-entities: 4.0.4 zwitch: 2.0.4 - hast-util-to-jsx-runtime@2.3.2: - dependencies: - '@types/estree': 1.0.6 - '@types/hast': 3.0.4 - '@types/unist': 3.0.3 - comma-separated-tokens: 2.0.3 - devlop: 1.1.0 - estree-util-is-identifier-name: 3.0.0 - hast-util-whitespace: 3.0.0 - mdast-util-mdx-expression: 2.0.1 - mdast-util-mdx-jsx: 3.2.0 - mdast-util-mdxjs-esm: 2.0.1 - property-information: 6.5.0 - space-separated-tokens: 2.0.2 - style-to-object: 1.0.8 - unist-util-position: 5.0.0 - vfile-message: 4.0.2 - transitivePeerDependencies: - - supports-color - hast-util-to-jsx-runtime@2.3.6: dependencies: '@types/estree': 1.0.6 @@ -15893,23 +15720,6 @@ snapshots: json5@2.2.3: {} - jsondiffpatch@0.6.0: - dependencies: - '@types/diff-match-patch': 1.0.36 - chalk: 5.4.1 - diff-match-patch: 1.0.5 - - jwa@2.0.1: - dependencies: - buffer-equal-constant-time: 1.0.1 - ecdsa-sig-formatter: 1.0.11 - safe-buffer: 5.2.1 - - jws@4.0.0: - dependencies: - jwa: 2.0.1 - safe-buffer: 5.2.1 - knip@5.61.2(@types/node@20.19.0)(typescript@5.8.3): dependencies: '@nodelib/fs.walk': 1.2.8 @@ -16575,13 +16385,13 @@ snapshots: optionalDependencies: typescript: 5.8.3 - next-safe-action@7.10.4(next@15.2.1(@babel/core@7.24.5)(@opentelemetry/api@1.9.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(zod@3.25.64): + next-safe-action@7.10.4(next@15.2.1(@babel/core@7.24.5)(@opentelemetry/api@1.9.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(zod@4.0.14): dependencies: next: 15.2.1(@babel/core@7.24.5)(@opentelemetry/api@1.9.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) react: 19.0.0 react-dom: 19.0.0(react@19.0.0) optionalDependencies: - zod: 3.25.64 + zod: 4.0.14 next-themes@0.4.4(react-dom@19.0.0(react@19.0.0))(react@19.0.0): dependencies: @@ -16657,6 +16467,8 @@ snapshots: dependencies: path-key: 3.1.1 + npm-to-yarn@3.0.1: {} + object-assign@4.1.1: {} object-inspect@1.13.4: {} @@ -16764,7 +16576,7 @@ snapshots: peberminta@0.9.0: {} - pg-cloudflare@1.2.5: + pg-cloudflare@1.2.7: optional: true pg-connection-string@2.9.0: {} @@ -16785,6 +16597,9 @@ snapshots: pg-protocol@1.10.0: {} + pg-protocol@1.10.3: + optional: true + pg-protocol@1.7.1: {} pg-protocol@1.9.5: {} @@ -16807,6 +16622,17 @@ snapshots: postgres-interval: 3.0.0 postgres-range: 1.1.4 + pg-types@4.1.0: + dependencies: + pg-int8: 1.0.1 + pg-numeric: 1.0.2 + postgres-array: 3.0.4 + postgres-bytea: 3.0.0 + postgres-date: 2.1.0 + postgres-interval: 3.0.0 + postgres-range: 1.1.4 + optional: true + pg@8.16.0(pg-native@3.4.5): dependencies: pg-connection-string: 2.9.0 @@ -16815,7 +16641,7 @@ snapshots: pg-types: 2.2.0 pgpass: 1.0.5 optionalDependencies: - pg-cloudflare: 1.2.5 + pg-cloudflare: 1.2.7 pg-native: 3.4.5 pgpass@1.0.5: @@ -16855,6 +16681,9 @@ snapshots: postgres-array@3.0.2: {} + postgres-array@3.0.4: + optional: true + postgres-bytea@1.0.0: {} postgres-bytea@3.0.0: @@ -16894,8 +16723,6 @@ snapshots: object-assign: 4.1.1 react-is: 16.13.1 - property-information@6.5.0: {} - property-information@7.0.0: {} protobufjs@7.5.3: @@ -17054,7 +16881,7 @@ snapshots: react-is@18.3.1: {} - react-medium-image-zoom@5.2.14(react-dom@19.0.0(react@19.0.0))(react@19.0.0): + react-medium-image-zoom@5.3.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0): dependencies: react: 19.0.0 react-dom: 19.0.0(react@19.0.0) @@ -17210,7 +17037,7 @@ snapshots: dependencies: '@types/estree': 1.0.6 '@types/hast': 3.0.4 - hast-util-to-estree: 3.1.1 + hast-util-to-estree: 3.1.3 transitivePeerDependencies: - supports-color @@ -17241,14 +17068,6 @@ snapshots: transitivePeerDependencies: - supports-color - remark-rehype@11.1.1: - dependencies: - '@types/hast': 3.0.4 - '@types/mdast': 4.0.4 - mdast-util-to-hast: 13.2.0 - unified: 11.0.5 - vfile: 6.0.3 - remark-rehype@11.1.2: dependencies: '@types/hast': 3.0.4 @@ -17332,8 +17151,6 @@ snapshots: dependencies: compute-scroll-into-view: 3.1.1 - secure-json-parse@2.7.0: {} - selderee@0.11.0: dependencies: parseley: 0.12.1 @@ -17415,14 +17232,14 @@ snapshots: '@shikijs/vscode-textmate': 10.0.2 '@types/hast': 3.0.4 - shiki@3.6.0: + shiki@3.9.1: dependencies: - '@shikijs/core': 3.6.0 - '@shikijs/engine-javascript': 3.6.0 - '@shikijs/engine-oniguruma': 3.6.0 - '@shikijs/langs': 3.6.0 - '@shikijs/themes': 3.6.0 - '@shikijs/types': 3.6.0 + '@shikijs/core': 3.9.1 + '@shikijs/engine-javascript': 3.9.1 + '@shikijs/engine-oniguruma': 3.9.1 + '@shikijs/langs': 3.9.1 + '@shikijs/themes': 3.9.1 + '@shikijs/types': 3.9.1 '@shikijs/vscode-textmate': 10.0.2 '@types/hast': 3.0.4 @@ -17630,8 +17447,6 @@ snapshots: third-party-capital@1.0.20: {} - throttleit@2.1.0: {} - tiny-invariant@1.3.3: {} tinyexec@1.0.1: {} @@ -17925,6 +17740,10 @@ snapshots: dependencies: zod: 3.25.64 + zod-to-json-schema@3.24.6(zod@4.0.14): + dependencies: + zod: 4.0.14 + zod-validation-error@3.5.2(zod@3.25.64): dependencies: zod: 3.25.64 @@ -17935,6 +17754,8 @@ snapshots: zod@3.25.64: {} + zod@4.0.14: {} + zustand@5.0.3(@types/react@19.0.9)(react@19.0.0)(use-sync-external-store@1.5.0(react@19.0.0)): optionalDependencies: '@types/react': 19.0.9 diff --git a/src/actions/check-newsletter-status.ts b/src/actions/check-newsletter-status.ts index 2daca00..d40952d 100644 --- a/src/actions/check-newsletter-status.ts +++ b/src/actions/check-newsletter-status.ts @@ -9,7 +9,7 @@ const actionClient = createSafeActionClient(); // Newsletter schema for validation const newsletterSchema = z.object({ - email: z.string().email({ message: 'Please enter a valid email address' }), + email: z.email({ error: 'Please enter a valid email address' }), }); // Create a safe action to check if a user is subscribed to the newsletter diff --git a/src/actions/create-checkout-session.ts b/src/actions/create-checkout-session.ts index 4c5fd62..5c0ac29 100644 --- a/src/actions/create-checkout-session.ts +++ b/src/actions/create-checkout-session.ts @@ -18,10 +18,10 @@ const actionClient = createSafeActionClient(); // Checkout schema for validation // metadata is optional, and may contain referral information if you need const checkoutSchema = z.object({ - userId: z.string().min(1, { message: 'User ID is required' }), - planId: z.string().min(1, { message: 'Plan ID is required' }), - priceId: z.string().min(1, { message: 'Price ID is required' }), - metadata: z.record(z.string()).optional(), + userId: z.string().min(1, { error: 'User ID is required' }), + planId: z.string().min(1, { error: 'Plan ID is required' }), + priceId: z.string().min(1, { error: 'Price ID is required' }), + metadata: z.record(z.string(), z.string()).optional(), }); /** diff --git a/src/actions/create-credit-checkout-session.ts b/src/actions/create-credit-checkout-session.ts index d648f2f..9e8ff7f 100644 --- a/src/actions/create-credit-checkout-session.ts +++ b/src/actions/create-credit-checkout-session.ts @@ -18,10 +18,10 @@ const actionClient = createSafeActionClient(); // Credit checkout schema for validation // metadata is optional, and may contain referral information if you need const creditCheckoutSchema = z.object({ - userId: z.string().min(1, { message: 'User ID is required' }), - packageId: z.string().min(1, { message: 'Package ID is required' }), - priceId: z.string().min(1, { message: 'Price ID is required' }), - metadata: z.record(z.string()).optional(), + userId: z.string().min(1, { error: 'User ID is required' }), + packageId: z.string().min(1, { error: 'Package ID is required' }), + priceId: z.string().min(1, { error: 'Price ID is required' }), + metadata: z.record(z.string(), z.string()).optional(), }); /** diff --git a/src/actions/create-customer-portal-session.ts b/src/actions/create-customer-portal-session.ts index a10962f..feeb7f3 100644 --- a/src/actions/create-customer-portal-session.ts +++ b/src/actions/create-customer-portal-session.ts @@ -16,10 +16,10 @@ const actionClient = createSafeActionClient(); // Portal schema for validation const portalSchema = z.object({ - userId: z.string().min(1, { message: 'User ID is required' }), + userId: z.string().min(1, { error: 'User ID is required' }), returnUrl: z .string() - .url({ message: 'Return URL must be a valid URL' }) + .url({ error: 'Return URL must be a valid URL' }) .optional(), }); diff --git a/src/actions/get-active-subscription.ts b/src/actions/get-active-subscription.ts index ecab486..c1d87dc 100644 --- a/src/actions/get-active-subscription.ts +++ b/src/actions/get-active-subscription.ts @@ -10,7 +10,7 @@ const actionClient = createSafeActionClient(); // Input schema const schema = z.object({ - userId: z.string().min(1, { message: 'User ID is required' }), + userId: z.string().min(1, { error: 'User ID is required' }), }); /** @@ -47,6 +47,18 @@ export const getActiveSubscriptionAction = actionClient }; } + // Check if Stripe environment variables are configured + const stripeSecretKey = process.env.STRIPE_SECRET_KEY; + const stripeWebhookSecret = process.env.STRIPE_WEBHOOK_SECRET; + + if (!stripeSecretKey || !stripeWebhookSecret) { + console.log('Stripe environment variables not configured, return'); + return { + success: true, + data: null, // No subscription = free plan + }; + } + try { // Find the user's most recent active subscription const subscriptions = await getSubscriptions({ diff --git a/src/actions/get-lifetime-status.ts b/src/actions/get-lifetime-status.ts index 1fe9937..baa6753 100644 --- a/src/actions/get-lifetime-status.ts +++ b/src/actions/get-lifetime-status.ts @@ -14,7 +14,7 @@ const actionClient = createSafeActionClient(); // Input schema const schema = z.object({ - userId: z.string().min(1, { message: 'User ID is required' }), + userId: z.string().min(1, { error: 'User ID is required' }), }); /** diff --git a/src/actions/send-message.ts b/src/actions/send-message.ts index dc9bf46..2dae548 100644 --- a/src/actions/send-message.ts +++ b/src/actions/send-message.ts @@ -17,13 +17,13 @@ const actionClient = createSafeActionClient(); const contactFormSchema = z.object({ name: z .string() - .min(3, { message: 'Name must be at least 3 characters' }) - .max(30, { message: 'Name must not exceed 30 characters' }), - email: z.string().email({ message: 'Please enter a valid email address' }), + .min(3, { error: 'Name must be at least 3 characters' }) + .max(30, { error: 'Name must not exceed 30 characters' }), + email: z.email({ error: 'Please enter a valid email address' }), message: z .string() - .min(10, { message: 'Message must be at least 10 characters' }) - .max(500, { message: 'Message must not exceed 500 characters' }), + .min(10, { error: 'Message must be at least 10 characters' }) + .max(500, { error: 'Message must not exceed 500 characters' }), }); // Create a safe action for contact form submission diff --git a/src/actions/subscribe-newsletter.ts b/src/actions/subscribe-newsletter.ts index 3d7018a..e3e3037 100644 --- a/src/actions/subscribe-newsletter.ts +++ b/src/actions/subscribe-newsletter.ts @@ -11,7 +11,7 @@ const actionClient = createSafeActionClient(); // Newsletter schema for validation const newsletterSchema = z.object({ - email: z.string().email({ message: 'Please enter a valid email address' }), + email: z.email({ error: 'Please enter a valid email address' }), }); // Create a safe action for newsletter subscription diff --git a/src/actions/unsubscribe-newsletter.ts b/src/actions/unsubscribe-newsletter.ts index 332623a..32dfe4d 100644 --- a/src/actions/unsubscribe-newsletter.ts +++ b/src/actions/unsubscribe-newsletter.ts @@ -10,7 +10,7 @@ const actionClient = createSafeActionClient(); // Newsletter schema for validation const newsletterSchema = z.object({ - email: z.string().email({ message: 'Please enter a valid email address' }), + email: z.email({ error: 'Please enter a valid email address' }), }); // Create a safe action for newsletter unsubscription diff --git a/src/actions/validate-captcha.ts b/src/actions/validate-captcha.ts index 691f3f5..1dc85df 100644 --- a/src/actions/validate-captcha.ts +++ b/src/actions/validate-captcha.ts @@ -9,7 +9,7 @@ const actionClient = createSafeActionClient(); // Captcha validation schema const captchaSchema = z.object({ - captchaToken: z.string().min(1, { message: 'Captcha token is required' }), + captchaToken: z.string().min(1, { error: 'Captcha token is required' }), }); // Create a safe action for captcha validation diff --git a/src/ai/image/components/ImagePlayground.tsx b/src/ai/image/components/ImagePlayground.tsx index bf85603..a88887d 100644 --- a/src/ai/image/components/ImagePlayground.tsx +++ b/src/ai/image/components/ImagePlayground.tsx @@ -61,7 +61,6 @@ export function ImagePlayground({ const providerToModel = { replicate: selectedModels.replicate, - // vertex: selectedModels.vertex, openai: selectedModels.openai, fireworks: selectedModels.fireworks, fal: selectedModels.fal, diff --git a/src/ai/image/components/ModelSelect.tsx b/src/ai/image/components/ModelSelect.tsx index a1724a0..7829fe3 100644 --- a/src/ai/image/components/ModelSelect.tsx +++ b/src/ai/image/components/ModelSelect.tsx @@ -15,7 +15,6 @@ import { FireworksIcon, OpenAIIcon, ReplicateIcon, - // VertexIcon, falAILogo, } from '../lib/logos'; import type { ProviderKey } from '../lib/provider-config'; @@ -40,7 +39,6 @@ interface ModelSelectProps { const PROVIDER_ICONS = { openai: OpenAIIcon, replicate: ReplicateIcon, - // vertex: VertexIcon, fireworks: FireworksIcon, fal: falAILogo, } as const; @@ -48,7 +46,6 @@ const PROVIDER_ICONS = { const PROVIDER_LINKS = { openai: 'openai', replicate: 'replicate', - // vertex: 'google-vertex', fireworks: 'fireworks', fal: 'fal', } as const; diff --git a/src/ai/image/lib/logos.tsx b/src/ai/image/lib/logos.tsx index c8e3c35..6949a20 100644 --- a/src/ai/image/lib/logos.tsx +++ b/src/ai/image/lib/logos.tsx @@ -62,55 +62,6 @@ export const ReplicateIcon = ({ size = 16 }) => { ); }; -export const VertexIcon = ({ size = 16 }) => { - return ( - - - - - - - - - - - - - - - - - - - - - ); -}; - export const falAILogo = ({ size = 16 }: { size: number }) => { return ( > = { performance: { replicate: 'black-forest-labs/flux-1.1-pro', - // vertex: 'imagen-3.0-fast-generate-001', openai: 'dall-e-3', fireworks: 'accounts/fireworks/models/flux-1-schnell-fp8', fal: 'fal-ai/flux/dev', }, quality: { replicate: 'stability-ai/stable-diffusion-3.5-large', - // vertex: 'imagen-3.0-generate-001', openai: 'dall-e-3', fireworks: 'accounts/fireworks/models/flux-1-dev-fp8', fal: 'fal-ai/flux-pro/v1.1-ultra', @@ -108,7 +95,6 @@ export const MODEL_CONFIGS: Record> = { export const PROVIDER_ORDER: ProviderKey[] = [ 'replicate', - // 'vertex', 'openai', 'fireworks', 'fal', diff --git a/src/ai/text/components/url-input-form.tsx b/src/ai/text/components/url-input-form.tsx index 4592d5d..504d7de 100644 --- a/src/ai/text/components/url-input-form.tsx +++ b/src/ai/text/components/url-input-form.tsx @@ -40,7 +40,7 @@ import { useDebounce } from '../utils/performance'; // Form schema for URL input const urlFormSchema = z.object({ - url: z.string().url().optional(), // Allow empty string for initial state + url: z.url().optional(), // Allow empty string for initial state }); type UrlFormData = z.infer; @@ -164,6 +164,7 @@ export function UrlInputForm({ OpenAI GPT-4o Google Gemini DeepSeek + OpenRouter diff --git a/src/ai/text/utils/web-content-analyzer-config.ts b/src/ai/text/utils/web-content-analyzer-config.ts index 221e1b2..83b183c 100644 --- a/src/ai/text/utils/web-content-analyzer-config.ts +++ b/src/ai/text/utils/web-content-analyzer-config.ts @@ -117,6 +117,13 @@ export const webContentAnalyzerConfig = { temperature: 0.1, maxTokens: 2000, }, + openrouter: { + model: 'openrouter/horizon-beta', + // model: 'x-ai/grok-3-beta', + // model: 'openai/gpt-4o-mini', + temperature: 0.1, + maxTokens: 2000, + }, } as const; /** diff --git a/src/ai/text/utils/web-content-analyzer.ts b/src/ai/text/utils/web-content-analyzer.ts index 72d2b7d..9e9e07b 100644 --- a/src/ai/text/utils/web-content-analyzer.ts +++ b/src/ai/text/utils/web-content-analyzer.ts @@ -97,9 +97,8 @@ export interface LoadingStatesProps { // URL Validation Schema export const urlSchema = z - .string() + .url() .min(1, 'URL is required') - .url('Please enter a valid URL') .refine( (url) => url.startsWith('http://') || url.startsWith('https://'), 'URL must start with http:// or https://' @@ -114,13 +113,13 @@ export const analysisResultsSchema = z.object({ pricing: z.string().default('Not specified'), useCases: z.array(z.string()).default([]), url: urlSchema, - analyzedAt: z.string().datetime(), + analyzedAt: z.iso.datetime(), }); // API Request Schema export const analyzeContentRequestSchema = z.object({ url: urlSchema, - modelProvider: z.enum(['openai', 'gemini', 'deepseek']), + modelProvider: z.enum(['openai', 'gemini', 'deepseek', 'openrouter']), }); // API Response Schema diff --git a/src/app/[locale]/(protected)/settings/profile/page.tsx b/src/app/[locale]/(protected)/settings/profile/page.tsx index 9fafa5f..3b14e97 100644 --- a/src/app/[locale]/(protected)/settings/profile/page.tsx +++ b/src/app/[locale]/(protected)/settings/profile/page.tsx @@ -1,12 +1,17 @@ import { UpdateAvatarCard } from '@/components/settings/profile/update-avatar-card'; import { UpdateNameCard } from '@/components/settings/profile/update-name-card'; +import { websiteConfig } from '@/config/website'; export default function ProfilePage() { + const enableUpdateAvatar = websiteConfig.features.enableUpdateAvatar; + return (
-
- -
+ {enableUpdateAvatar && ( +
+ +
+ )}
diff --git a/src/app/[locale]/providers.tsx b/src/app/[locale]/providers.tsx index 40f290e..5e85838 100644 --- a/src/app/[locale]/providers.tsx +++ b/src/app/[locale]/providers.tsx @@ -1,10 +1,10 @@ 'use client'; import { ActiveThemeProvider } from '@/components/layout/active-theme-provider'; +import { CreditsProvider } from '@/components/layout/credits-provider'; import { PaymentProvider } from '@/components/layout/payment-provider'; import { TooltipProvider } from '@/components/ui/tooltip'; import { websiteConfig } from '@/config/website'; -import { CreditsProvider } from '@/providers/credits-provider'; import type { Translations } from 'fumadocs-ui/i18n'; import { RootProvider } from 'fumadocs-ui/provider'; import { useTranslations } from 'next-intl'; diff --git a/src/app/api/analyze-content/route.ts b/src/app/api/analyze-content/route.ts index 26bfddf..91db24e 100644 --- a/src/app/api/analyze-content/route.ts +++ b/src/app/api/analyze-content/route.ts @@ -23,6 +23,7 @@ import { createDeepSeek } from '@ai-sdk/deepseek'; import { createGoogleGenerativeAI } from '@ai-sdk/google'; import { createOpenAI } from '@ai-sdk/openai'; import FirecrawlApp from '@mendable/firecrawl-js'; +import { createOpenRouter } from '@openrouter/ai-sdk-provider'; import { generateObject } from 'ai'; import { type NextRequest, NextResponse } from 'next/server'; import { z } from 'zod'; @@ -218,7 +219,7 @@ async function analyzeContent( break; case 'gemini': model = createGoogleGenerativeAI({ - apiKey: process.env.GOOGLE_API_KEY, + apiKey: process.env.GOOGLE_GENERATIVE_AI_API_KEY, }).chat(webContentAnalyzerConfig.gemini.model); temperature = webContentAnalyzerConfig.gemini.temperature; maxTokens = webContentAnalyzerConfig.gemini.maxTokens; @@ -230,6 +231,13 @@ async function analyzeContent( temperature = webContentAnalyzerConfig.deepseek.temperature; maxTokens = webContentAnalyzerConfig.deepseek.maxTokens; break; + case 'openrouter': + model = createOpenRouter({ + apiKey: process.env.OPENROUTER_API_KEY, + }).chat(webContentAnalyzerConfig.openrouter.model); + temperature = webContentAnalyzerConfig.openrouter.temperature; + maxTokens = webContentAnalyzerConfig.openrouter.maxTokens; + break; default: throw new WebContentAnalyzerError( ErrorType.VALIDATION, @@ -254,7 +262,7 @@ async function analyzeContent( - Ensure the title and description are meaningful and based on the actual content `, temperature, - maxTokens, + maxOutputTokens: maxTokens, }); return { @@ -336,7 +344,7 @@ export async function POST(req: NextRequest) { if (!urlValidation.success) { const urlError = new WebContentAnalyzerError( ErrorType.VALIDATION, - urlValidation.error.errors[0]?.message || 'Invalid URL', + urlValidation.error.issues[0]?.message || 'Invalid URL', 'Please enter a valid URL starting with http:// or https://', ErrorSeverity.MEDIUM, false diff --git a/src/components/auth/forgot-password-form.tsx b/src/components/auth/forgot-password-form.tsx index ed4c93f..66f6758 100644 --- a/src/components/auth/forgot-password-form.tsx +++ b/src/components/auth/forgot-password-form.tsx @@ -32,7 +32,7 @@ export const ForgotPasswordForm = ({ className }: { className?: string }) => { const searchParams = useSearchParams(); const ForgotPasswordSchema = z.object({ - email: z.string().email({ + email: z.email({ message: t('emailRequired'), }), }); diff --git a/src/components/auth/login-form.tsx b/src/components/auth/login-form.tsx index 4f29a7c..60145a0 100644 --- a/src/components/auth/login-form.tsx +++ b/src/components/auth/login-form.tsx @@ -69,7 +69,7 @@ export const LoginForm = ({ : z.string().optional(); const LoginSchema = z.object({ - email: z.string().email({ + email: z.email({ message: t('emailRequired'), }), password: z.string().min(1, { diff --git a/src/components/auth/register-form.tsx b/src/components/auth/register-form.tsx index 9ed63b7..ea0dbba 100644 --- a/src/components/auth/register-form.tsx +++ b/src/components/auth/register-form.tsx @@ -64,7 +64,7 @@ export const RegisterForm = ({ : z.string().optional(); const RegisterSchema = z.object({ - email: z.string().email({ + email: z.email({ message: t('emailRequired'), }), password: z.string().min(1, { diff --git a/src/components/contact/contact-form-card.tsx b/src/components/contact/contact-form-card.tsx index b084d62..2914884 100644 --- a/src/components/contact/contact-form-card.tsx +++ b/src/components/contact/contact-form-card.tsx @@ -40,7 +40,7 @@ export function ContactFormCard() { // Create a schema for contact form validation const formSchema = z.object({ name: z.string().min(3, t('nameMinLength')).max(30, t('nameMaxLength')), - email: z.string().email(t('emailValidation')), + email: z.email(t('emailValidation')), message: z .string() .min(10, t('messageMinLength')) diff --git a/src/providers/credits-provider.tsx b/src/components/layout/credits-provider.tsx similarity index 100% rename from src/providers/credits-provider.tsx rename to src/components/layout/credits-provider.tsx diff --git a/src/components/newsletter/newsletter-form.tsx b/src/components/newsletter/newsletter-form.tsx index 489cf8c..0dbc6fe 100644 --- a/src/components/newsletter/newsletter-form.tsx +++ b/src/components/newsletter/newsletter-form.tsx @@ -29,7 +29,7 @@ export function NewsletterForm() { // newsletter schema const NewsletterFormSchema = z.object({ - email: z.string().email({ + email: z.email({ message: t('emailValidation'), }), }); diff --git a/src/components/waitlist/waitlist-form-card.tsx b/src/components/waitlist/waitlist-form-card.tsx index 36fd911..ea0d1b9 100644 --- a/src/components/waitlist/waitlist-form-card.tsx +++ b/src/components/waitlist/waitlist-form-card.tsx @@ -38,7 +38,7 @@ export function WaitlistFormCard() { // Create a schema for waitlist form validation const formSchema = z.object({ - email: z.string().email({ message: t('emailValidation') }), + email: z.email({ message: t('emailValidation') }), }); // Initialize the form diff --git a/src/config/website.tsx b/src/config/website.tsx index 1b16d83..c37715b 100644 --- a/src/config/website.tsx +++ b/src/config/website.tsx @@ -36,6 +36,7 @@ export const websiteConfig: WebsiteConfig = { enableDiscordWidget: false, enableCrispChat: process.env.NEXT_PUBLIC_DEMO_WEBSITE === 'true', enableUpgradeCard: true, + enableUpdateAvatar: true, enableAffonsoAffiliate: false, enablePromotekitAffiliate: false, enableDatafastRevenueTrack: false, diff --git a/src/types/index.d.ts b/src/types/index.d.ts index 7e1c6eb..8fe2967 100644 --- a/src/types/index.d.ts +++ b/src/types/index.d.ts @@ -71,6 +71,7 @@ export interface FeaturesConfig { enableDiscordWidget?: boolean; // Whether to enable the discord widget, deprecated enableCrispChat?: boolean; // Whether to enable the crisp chat enableUpgradeCard?: boolean; // Whether to enable the upgrade card in the sidebar + enableUpdateAvatar?: boolean; // Whether to enable the update avatar in settings enableAffonsoAffiliate?: boolean; // Whether to enable affonso affiliate enablePromotekitAffiliate?: boolean; // Whether to enable promotekit affiliate enableDatafastRevenueTrack?: boolean; // Whether to enable datafast revenue tracking