diff --git a/package.json b/package.json index 8ff038bf..e9a997db 100644 --- a/package.json +++ b/package.json @@ -25,16 +25,16 @@ "shiki:generate": "pnpm dlx tsx src/components/ui/code/codegen.ts && pnpm format:write" }, "dependencies": { - "@ai-sdk/anthropic": "^1.2.12", - "@ai-sdk/fal": "^0.1.12", - "@ai-sdk/fireworks": "^0.2.16", - "@ai-sdk/google": "^1.2.19", - "@ai-sdk/groq": "^1.2.9", - "@ai-sdk/luma": "^0.1.8", - "@ai-sdk/openai": "^1.3.22", - "@ai-sdk/perplexity": "^1.1.9", - "@ai-sdk/react": "^1.2.12", - "@ai-sdk/xai": "^1.2.16", + "@ai-sdk/anthropic": "^2.0.0", + "@ai-sdk/fal": "^1.0.3", + "@ai-sdk/fireworks": "^1.0.2", + "@ai-sdk/google": "^2.0.0", + "@ai-sdk/groq": "^2.0.0", + "@ai-sdk/luma": "^1.0.1", + "@ai-sdk/openai": "^2.0.0", + "@ai-sdk/perplexity": "^2.0.0", + "@ai-sdk/react": "^2.0.0", + "@ai-sdk/xai": "^2.0.0", "@auth/prisma-adapter": "^2.7.2", "@discordjs/rest": "^2.5.1", "@e2b/code-interpreter": "^1.5.1", @@ -45,7 +45,7 @@ "@llm-ui/react": "^0.13.3", "@modelcontextprotocol/sdk": "^1.12.0", "@notionhq/client": "^3.1.3", - "@openrouter/ai-sdk-provider": "^0.7.2", + "@openrouter/ai-sdk-provider": "^1.1.0", "@prisma/client": "^6.13.0", "@radix-ui/react-accordion": "^1.2.11", "@radix-ui/react-alert-dialog": "^1.1.14", @@ -76,7 +76,7 @@ "@vercel/mcp-adapter": "^0.11.1", "@vercel/speed-insights": "^1.2.0", "@xyflow/react": "^12.8.2", - "ai": "^4.3.16", + "ai": "^5.0.0", "class-variance-authority": "^0.7.1", "clsx": "^2.1.1", "cmdk": "^1.1.1", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index bc6e65cd..e46d4409 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -9,35 +9,35 @@ importers: .: dependencies: '@ai-sdk/anthropic': - specifier: ^1.2.12 - version: 1.2.12(zod@3.25.56) + specifier: ^2.0.0 + version: 2.0.1(zod@3.25.56) '@ai-sdk/fal': - specifier: ^0.1.12 - version: 0.1.12(zod@3.25.56) + specifier: ^1.0.3 + version: 1.0.3(zod@3.25.56) '@ai-sdk/fireworks': - specifier: ^0.2.16 - version: 0.2.16(zod@3.25.56) + specifier: ^1.0.2 + version: 1.0.2(zod@3.25.56) '@ai-sdk/google': - specifier: ^1.2.19 - version: 1.2.19(zod@3.25.56) + specifier: ^2.0.0 + version: 2.0.3(zod@3.25.56) '@ai-sdk/groq': - specifier: ^1.2.9 - version: 1.2.9(zod@3.25.56) + specifier: ^2.0.0 + version: 2.0.3(zod@3.25.56) '@ai-sdk/luma': - specifier: ^0.1.8 - version: 0.1.8(zod@3.25.56) + specifier: ^1.0.1 + version: 1.0.1(zod@3.25.56) '@ai-sdk/openai': - specifier: ^1.3.22 - version: 1.3.22(zod@3.25.56) + specifier: ^2.0.0 + version: 2.0.5(zod@3.25.56) '@ai-sdk/perplexity': - specifier: ^1.1.9 - version: 1.1.9(zod@3.25.56) + specifier: ^2.0.0 + version: 2.0.1(zod@3.25.56) '@ai-sdk/react': - specifier: ^1.2.12 - version: 1.2.12(react@19.1.0)(zod@3.25.56) + specifier: ^2.0.0 + version: 2.0.8(react@19.1.0)(zod@3.25.56) '@ai-sdk/xai': - specifier: ^1.2.16 - version: 1.2.16(zod@3.25.56) + specifier: ^2.0.0 + version: 2.0.2(zod@3.25.56) '@auth/prisma-adapter': specifier: ^2.7.2 version: 2.9.1(@prisma/client@6.13.0(prisma@6.9.0(typescript@5.8.3))(typescript@5.8.3)) @@ -69,8 +69,8 @@ importers: specifier: ^3.1.3 version: 3.1.3 '@openrouter/ai-sdk-provider': - specifier: ^0.7.2 - version: 0.7.2(ai@4.3.16(react@19.1.0)(zod@3.25.56))(zod@3.25.56) + specifier: ^1.1.0 + version: 1.1.0(ai@5.0.8(zod@3.25.56))(zod@3.25.56) '@prisma/client': specifier: ^6.13.0 version: 6.13.0(prisma@6.9.0(typescript@5.8.3))(typescript@5.8.3) @@ -162,8 +162,8 @@ importers: specifier: ^12.8.2 version: 12.8.2(@types/react@19.1.6)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) ai: - specifier: ^4.3.16 - version: 4.3.16(react@19.1.0)(zod@3.25.56) + specifier: ^5.0.0 + version: 5.0.8(zod@3.25.56) class-variance-authority: specifier: ^0.7.1 version: 0.7.1 @@ -342,97 +342,91 @@ importers: packages: - '@ai-sdk/anthropic@1.2.12': - resolution: {integrity: sha512-YSzjlko7JvuiyQFmI9RN1tNZdEiZxc+6xld/0tq/VkJaHpEzGAb1yiNxxvmYVcjvfu/PcvCxAAYXmTYQQ63IHQ==} + '@ai-sdk/anthropic@2.0.1': + resolution: {integrity: sha512-HtNbpNV9qXQosHu00+CBMEcdTerwZY+kpVMNak0xP/P5TF6XkPf7IyizhLuc7y5zcXMjZCMA7jDGkcEdZCEdkw==} 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/fal@1.0.3': + resolution: {integrity: sha512-6hjo5EokkCEnkBagMFAAzZ1TA4z+WStyb8DPlrrD79jcBFehQ8WrLcjQR5dyp7mGx6pI7/dQRj88FN3/lWjd/g==} engines: {node: '>=18'} peerDependencies: - zod: ^3.0.0 + zod: ^3.25.76 || ^4 - '@ai-sdk/fireworks@0.2.16': - resolution: {integrity: sha512-YHUqW9QHMNjEg5vF0cmhnlAQJCMljWVWNAAFmKCPX31Dj4JaoCjOrIInrNEFerFRaO64hEffhlhuC1EmuO2Lyg==} + '@ai-sdk/fireworks@1.0.2': + resolution: {integrity: sha512-SHlgRL63fvUtGRQdOzGNnx0Oq00l1Ev4EXeXTWKZGdfsd6UN+SOmYMlyo5TNAVkJHVuqMVheQyUPrsfpf6NzTQ==} 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/gateway@1.0.4': + resolution: {integrity: sha512-1roLdgMbFU3Nr4MC97/te7w6OqxsWBkDUkpbCcvxF3jz/ku91WVaJldn/PKU8feMKNyI5W9wnqhbjb1BqbExOQ==} engines: {node: '>=18'} peerDependencies: - zod: ^3.0.0 + zod: ^3.25.76 || ^4 - '@ai-sdk/groq@1.2.9': - resolution: {integrity: sha512-7MoDaxm8yWtiRbD1LipYZG0kBl+Xe0sv/EeyxnHnGPZappXdlgtdOgTZVjjXkT3nWP30jjZi9A45zoVrBMb3Xg==} + '@ai-sdk/google@2.0.3': + resolution: {integrity: sha512-rQkY4nQGZnQw6pfftqsGsXXAqkGnl1gYjSbvD8+zyrVg2KAYeJU0NxIaacLWCORNcW+yQ/cqTpK/Uku/SIdEqA==} engines: {node: '>=18'} peerDependencies: - zod: ^3.0.0 + zod: ^3.25.76 || ^4 - '@ai-sdk/luma@0.1.8': - resolution: {integrity: sha512-6FmUOwZKKldzbTYzS+dNq4LuNb+27gTb/7XQZak46OIUSbBD8FHJm4W/OcUmubuuZ//VHanyyb/QWElipZ/O9w==} + '@ai-sdk/groq@2.0.3': + resolution: {integrity: sha512-6U1iXh2P33YFSHcFdmESq7YZ3nHs50YQQZDSumwPFKs+iNKSPqrbfYQi/1lLKDhDtCrCEimYtyT+zMD7NlnCBQ==} 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/luma@1.0.1': + resolution: {integrity: sha512-nfm2qhVTM1KYwpXbySLR5B4hyg3CWyyekummBri0nalr5GBxdWlVtKHlFMVqdq0XLtUnMXllfe0QykWQHWRegQ==} 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/openai-compatible@1.0.2': + resolution: {integrity: sha512-VqTEzo1ueUsS9FGHtyoAHK11nPIgtziwwGGy5qtGOs+JRcZVEdPqcWe1n2+Ichl4edchoAHo/tygAymaiom9mg==} engines: {node: '>=18'} peerDependencies: - zod: ^3.0.0 + zod: ^3.25.76 || ^4 - '@ai-sdk/openai@1.3.22': - resolution: {integrity: sha512-QwA+2EkG0QyjVR+7h6FE7iOu2ivNqAVMm9UJZkVxxTk5OIq5fFJDTEI/zICEMuHImTTXR2JjsL6EirJ28Jc4cw==} + '@ai-sdk/openai@2.0.5': + resolution: {integrity: sha512-1oFXNudUNRfl4QXlE2Q0v8GCvGngx8HMwHN6pyOTMBP8SI9VoOcCJzRPVBMLd0SI7dkcAvGVkpSVTnaLaXEtxQ==} engines: {node: '>=18'} peerDependencies: - zod: ^3.0.0 + zod: ^3.25.76 || ^4 - '@ai-sdk/perplexity@1.1.9': - resolution: {integrity: sha512-Ytolh/v2XupXbTvjE18EFBrHLoNMH0Ueji3lfSPhCoRUfkwrgZ2D9jlNxvCNCCRiGJG5kfinSHvzrH5vGDklYA==} + '@ai-sdk/perplexity@2.0.1': + resolution: {integrity: sha512-wOK5jFtUFapEvVerSysFethaQmozcBArWtVfWeAM5VY8VpuDeOqTQET2dP/qV6QB/b/sqP9Tmu2cF5K3oLFHfw==} engines: {node: '>=18'} peerDependencies: - zod: ^3.0.0 + zod: ^3.25.76 || ^4 - '@ai-sdk/provider-utils@2.2.8': - resolution: {integrity: sha512-fqhG+4sCVv8x7nFzYnFo19ryhAa3w096Kmc3hWxMQfW/TubPOmt3A6tYZhl4mUfQWWQMsuSkLrtjlWuXBVSGQA==} + '@ai-sdk/provider-utils@3.0.1': + resolution: {integrity: sha512-/iP1sKc6UdJgGH98OCly7sWJKv+J9G47PnTjIj40IJMUQKwDrUMyf7zOOfRtPwSuNifYhSoJQ4s1WltI65gJ/g==} engines: {node: '>=18'} peerDependencies: - zod: ^3.23.8 + zod: ^3.25.76 || ^4 - '@ai-sdk/provider@1.1.3': - resolution: {integrity: sha512-qZMxYJ0qqX/RfnuIaab+zp8UAeJn/ygXXAffR5I4N0n1IrvA6qBsjc8hXLmBiMV2zoXlifkacF7sEFnYnjBcqg==} + '@ai-sdk/provider@2.0.0': + resolution: {integrity: sha512-6o7Y2SeO9vFKB8lArHXehNuusnpddKPk7xqL7T2/b+OvXMRIXUO1rR4wcv1hAFUAT9avGZshty3Wlua/XA7TvA==} engines: {node: '>=18'} - '@ai-sdk/react@1.2.12': - resolution: {integrity: sha512-jK1IZZ22evPZoQW3vlkZ7wvjYGYF+tRBKXtrcolduIkQ/m/sOAVcVeVDUDvh1T91xCnWCdUGCPZg2avZ90mv3g==} + '@ai-sdk/react@2.0.8': + resolution: {integrity: sha512-I9CI53lncv0nUy3TPW0lrnoHCZx4NUaAuFCgm6U0bId0PQKeYi61Z9XFrgo3mDByH2SSC3OVsPq6d5Db8kF1FQ==} engines: {node: '>=18'} peerDependencies: react: ^18 || ^19 || ^19.0.0-rc - zod: ^3.23.8 + zod: ^3.25.76 || ^4 peerDependenciesMeta: zod: optional: true - '@ai-sdk/ui-utils@1.2.11': - resolution: {integrity: sha512-3zcwCc8ezzFlwp3ZD15wAPjf2Au4s3vAbKsXQVyhxODHcmu0iyPO2Eua6D/vicq/AUm/BAo60r97O6HU+EI0+w==} - engines: {node: '>=18'} - peerDependencies: - zod: ^3.23.8 - - '@ai-sdk/xai@1.2.16': - resolution: {integrity: sha512-UOZT8td9PWwMi2dF9a0U44t/Oltmf6QmIJdSvrOcLG4mvpRc1UJn6YJaR0HtXs3YnW6SvY1zRdIDrW4GFpv4NA==} + '@ai-sdk/xai@2.0.2': + resolution: {integrity: sha512-4P10qVSUj1/Ufem3UHNLExW8hHxGO+aYBDs3vQLmOXJyuCWnk2lsefOJz3XNvNpW0Avavl0A4rJyHS9W9gGglQ==} engines: {node: '>=18'} peerDependencies: - zod: ^3.0.0 + zod: ^3.25.76 || ^4 '@alloc/quick-lru@5.2.0': resolution: {integrity: sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==} @@ -1158,12 +1152,12 @@ packages: resolution: {integrity: sha512-16TtZXNOfH8RaRsV+iag5dTYeJvdOdZDBcpEPCULdKS3eTRJqAYxBNZPFaDJ3cx3WNyvbaQ0IxsPpnaR/tgGFA==} engines: {node: '>= 20'} - '@openrouter/ai-sdk-provider@0.7.2': - resolution: {integrity: sha512-Fry2mV7uGGJRmP9JntTZRc8ElESIk7AJNTacLbF6Syoeb5k8d7HPGkcK9rTXDlqBb8HgU1hOKtz23HojesTmnw==} + '@openrouter/ai-sdk-provider@1.1.0': + resolution: {integrity: sha512-e5cW/KbgGakHOOsDhnHI6a0IDul9ER5J4QGM4yN9EfQ8XHfOFgwGGpLOopoRwkqaX5UdyQrpzei+1DPzg95i0A==} engines: {node: '>=18'} peerDependencies: - ai: ^4.3.16 - zod: ^3.25.34 + ai: ^5.0.0 + zod: ^3.24.1 || ^v4 '@opentelemetry/api@1.9.0': resolution: {integrity: sha512-3giAOQvZiH5F9bMlMiv8+GSPMeqg0dbaeo58/0SlA9sxSqZhnUtxzX9/2FzyhS9sWQf5S0GJE0AKBrFqjpeYcg==} @@ -1795,6 +1789,9 @@ packages: '@spotify/web-api-ts-sdk@1.2.0': resolution: {integrity: sha512-JUaebva3Ohwo5I5tuTqyW/FKGOMbb40YevJMySAOINRxP7qQ/AMjBzfJx0zeO6yS+wAPfQSoGNsZaUggHw8vsA==} + '@standard-schema/spec@1.0.0': + resolution: {integrity: sha512-m2bOd0f2RT9k8QJx1JN85cZYyH1RqFBdlwtkSlf4tBDYLCiiZnv1fIIwacK6cqwXavOydf0NPToMQgpKq+dVlA==} + '@standard-schema/utils@0.3.0': resolution: {integrity: sha512-e7Mew686owMaPJVNNLs55PUvgz371nKgwsc4vxE49zsODpJEnxgxRo2y/OKrqueavXgZNMDVj3DdHFlaSAeU8g==} @@ -2037,9 +2034,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==} @@ -2395,15 +2389,11 @@ packages: resolution: {integrity: sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==} engines: {node: '>=8'} - ai@4.3.16: - resolution: {integrity: sha512-KUDwlThJ5tr2Vw0A1ZkbDKNME3wzWhuVfAOwIvFUzl1TPVDFAXDFTXio3p+jaKneB+dKNCvFFlolYmmgHttG1g==} + ai@5.0.8: + resolution: {integrity: sha512-qbnhj046UvG30V1S5WhjBn+RBGEAmi8PSZWqMhRsE3EPxvO5BcePXTZFA23e9MYyWS9zr4Vm8Mv3wQXwLmtIBw==} engines: {node: '>=18'} peerDependencies: - react: ^18 || ^19 || ^19.0.0-rc - zod: ^3.23.8 - peerDependenciesMeta: - react: - optional: true + zod: ^3.25.76 || ^4 ajv@6.12.6: resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} @@ -2914,9 +2904,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==} - diff-sequences@29.6.3: resolution: {integrity: sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -3194,6 +3181,10 @@ packages: resolution: {integrity: sha512-6RxOBZ/cYgd8usLwsEl+EC09Au/9BcmCKYF2/xbml6DNczf7nv0MQb+7BA2F+li6//I+28VNlQR37XfQtcAJuA==} engines: {node: '>=18.0.0'} + eventsource-parser@3.0.3: + resolution: {integrity: sha512-nVpZkTMM9rF6AQ9gPJpFsNAMt48wIzB5TQgiTLdHiuO8XEDhUgZEhqKlZWXbIzo9VmJ/HvysHqEaVeD5v9TPvA==} + engines: {node: '>=20.0.0'} + eventsource@3.0.7: resolution: {integrity: sha512-CRT1WTyuQoD771GW56XEZFQ/ZoSfWid1alKGDYMmkt2yl8UXrVR4pspqWNEcqKvVIzg6PAltWjxcSSPrboA4iA==} engines: {node: '>=18.0.0'} @@ -3865,11 +3856,6 @@ packages: resolution: {integrity: sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==} hasBin: true - jsondiffpatch@0.6.0: - resolution: {integrity: sha512-3QItJOXp2AP1uv7waBkao5nCvhEv+QmJAd38Ybq7wNI74Q+BBmnLn4EDKz6yI9xGAIQoUF87qHt+kc1IVxB4zQ==} - engines: {node: ^18.0.0 || >=20.0.0} - hasBin: true - jsx-ast-utils@3.3.5: resolution: {integrity: sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==} engines: {node: '>=4.0'} @@ -5066,9 +5052,6 @@ packages: scheduler@0.26.0: resolution: {integrity: sha512-NlHwttCI/l5gCPR3D1nNXtWABUmBwvZpEQiD4IXSbIDq8BzLIK/7Ir5gTFSGZDUu37K5cMNp0hFtzO38sC7gWA==} - secure-json-parse@2.7.0: - resolution: {integrity: sha512-6aU+Rwsezw7VR8/nyvKTx8QpWH9FrcYiXXlqC4z5d5XQBDRqtbfsRjnwGyqbi3gddNtWHuEk9OANUotL26qKUw==} - semver@6.3.1: resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} hasBin: true @@ -5681,100 +5664,94 @@ packages: snapshots: - '@ai-sdk/anthropic@1.2.12(zod@3.25.56)': + '@ai-sdk/anthropic@2.0.1(zod@3.25.56)': dependencies: - '@ai-sdk/provider': 1.1.3 - '@ai-sdk/provider-utils': 2.2.8(zod@3.25.56) + '@ai-sdk/provider': 2.0.0 + '@ai-sdk/provider-utils': 3.0.1(zod@3.25.56) zod: 3.25.56 - '@ai-sdk/fal@0.1.12(zod@3.25.56)': + '@ai-sdk/fal@1.0.3(zod@3.25.56)': dependencies: - '@ai-sdk/provider': 1.1.3 - '@ai-sdk/provider-utils': 2.2.8(zod@3.25.56) + '@ai-sdk/provider': 2.0.0 + '@ai-sdk/provider-utils': 3.0.1(zod@3.25.56) zod: 3.25.56 - '@ai-sdk/fireworks@0.2.16(zod@3.25.56)': + '@ai-sdk/fireworks@1.0.2(zod@3.25.56)': dependencies: - '@ai-sdk/openai-compatible': 0.2.16(zod@3.25.56) - '@ai-sdk/provider': 1.1.3 - '@ai-sdk/provider-utils': 2.2.8(zod@3.25.56) + '@ai-sdk/openai-compatible': 1.0.2(zod@3.25.56) + '@ai-sdk/provider': 2.0.0 + '@ai-sdk/provider-utils': 3.0.1(zod@3.25.56) zod: 3.25.56 - '@ai-sdk/google@1.2.19(zod@3.25.56)': + '@ai-sdk/gateway@1.0.4(zod@3.25.56)': dependencies: - '@ai-sdk/provider': 1.1.3 - '@ai-sdk/provider-utils': 2.2.8(zod@3.25.56) + '@ai-sdk/provider': 2.0.0 + '@ai-sdk/provider-utils': 3.0.1(zod@3.25.56) zod: 3.25.56 - '@ai-sdk/groq@1.2.9(zod@3.25.56)': + '@ai-sdk/google@2.0.3(zod@3.25.56)': dependencies: - '@ai-sdk/provider': 1.1.3 - '@ai-sdk/provider-utils': 2.2.8(zod@3.25.56) + '@ai-sdk/provider': 2.0.0 + '@ai-sdk/provider-utils': 3.0.1(zod@3.25.56) zod: 3.25.56 - '@ai-sdk/luma@0.1.8(zod@3.25.56)': + '@ai-sdk/groq@2.0.3(zod@3.25.56)': dependencies: - '@ai-sdk/provider': 1.1.3 - '@ai-sdk/provider-utils': 2.2.8(zod@3.25.56) + '@ai-sdk/provider': 2.0.0 + '@ai-sdk/provider-utils': 3.0.1(zod@3.25.56) zod: 3.25.56 - '@ai-sdk/openai-compatible@0.2.14(zod@3.25.56)': + '@ai-sdk/luma@1.0.1(zod@3.25.56)': dependencies: - '@ai-sdk/provider': 1.1.3 - '@ai-sdk/provider-utils': 2.2.8(zod@3.25.56) + '@ai-sdk/provider': 2.0.0 + '@ai-sdk/provider-utils': 3.0.1(zod@3.25.56) zod: 3.25.56 - '@ai-sdk/openai-compatible@0.2.16(zod@3.25.56)': + '@ai-sdk/openai-compatible@1.0.2(zod@3.25.56)': dependencies: - '@ai-sdk/provider': 1.1.3 - '@ai-sdk/provider-utils': 2.2.8(zod@3.25.56) + '@ai-sdk/provider': 2.0.0 + '@ai-sdk/provider-utils': 3.0.1(zod@3.25.56) zod: 3.25.56 - '@ai-sdk/openai@1.3.22(zod@3.25.56)': + '@ai-sdk/openai@2.0.5(zod@3.25.56)': dependencies: - '@ai-sdk/provider': 1.1.3 - '@ai-sdk/provider-utils': 2.2.8(zod@3.25.56) + '@ai-sdk/provider': 2.0.0 + '@ai-sdk/provider-utils': 3.0.1(zod@3.25.56) zod: 3.25.56 - '@ai-sdk/perplexity@1.1.9(zod@3.25.56)': + '@ai-sdk/perplexity@2.0.1(zod@3.25.56)': dependencies: - '@ai-sdk/provider': 1.1.3 - '@ai-sdk/provider-utils': 2.2.8(zod@3.25.56) + '@ai-sdk/provider': 2.0.0 + '@ai-sdk/provider-utils': 3.0.1(zod@3.25.56) zod: 3.25.56 - '@ai-sdk/provider-utils@2.2.8(zod@3.25.56)': + '@ai-sdk/provider-utils@3.0.1(zod@3.25.56)': dependencies: - '@ai-sdk/provider': 1.1.3 - nanoid: 3.3.11 - secure-json-parse: 2.7.0 + '@ai-sdk/provider': 2.0.0 + '@standard-schema/spec': 1.0.0 + eventsource-parser: 3.0.3 zod: 3.25.56 + zod-to-json-schema: 3.24.6(zod@3.25.56) - '@ai-sdk/provider@1.1.3': + '@ai-sdk/provider@2.0.0': dependencies: json-schema: 0.4.0 - '@ai-sdk/react@1.2.12(react@19.1.0)(zod@3.25.56)': + '@ai-sdk/react@2.0.8(react@19.1.0)(zod@3.25.56)': dependencies: - '@ai-sdk/provider-utils': 2.2.8(zod@3.25.56) - '@ai-sdk/ui-utils': 1.2.11(zod@3.25.56) + '@ai-sdk/provider-utils': 3.0.1(zod@3.25.56) + ai: 5.0.8(zod@3.25.56) react: 19.1.0 swr: 2.3.3(react@19.1.0) throttleit: 2.1.0 optionalDependencies: zod: 3.25.56 - '@ai-sdk/ui-utils@1.2.11(zod@3.25.56)': + '@ai-sdk/xai@2.0.2(zod@3.25.56)': dependencies: - '@ai-sdk/provider': 1.1.3 - '@ai-sdk/provider-utils': 2.2.8(zod@3.25.56) - zod: 3.25.56 - zod-to-json-schema: 3.24.5(zod@3.25.56) - - '@ai-sdk/xai@1.2.16(zod@3.25.56)': - dependencies: - '@ai-sdk/openai-compatible': 0.2.14(zod@3.25.56) - '@ai-sdk/provider': 1.1.3 - '@ai-sdk/provider-utils': 2.2.8(zod@3.25.56) + '@ai-sdk/openai-compatible': 1.0.2(zod@3.25.56) + '@ai-sdk/provider': 2.0.0 + '@ai-sdk/provider-utils': 3.0.1(zod@3.25.56) zod: 3.25.56 '@alloc/quick-lru@5.2.0': {} @@ -6464,11 +6441,9 @@ snapshots: '@octokit/request-error': 7.0.0 '@octokit/webhooks-methods': 6.0.0 - '@openrouter/ai-sdk-provider@0.7.2(ai@4.3.16(react@19.1.0)(zod@3.25.56))(zod@3.25.56)': + '@openrouter/ai-sdk-provider@1.1.0(ai@5.0.8(zod@3.25.56))(zod@3.25.56)': dependencies: - '@ai-sdk/provider': 1.1.3 - '@ai-sdk/provider-utils': 2.2.8(zod@3.25.56) - ai: 4.3.16(react@19.1.0)(zod@3.25.56) + ai: 5.0.8(zod@3.25.56) zod: 3.25.56 '@opentelemetry/api@1.9.0': {} @@ -7097,6 +7072,8 @@ snapshots: '@spotify/web-api-ts-sdk@1.2.0': {} + '@standard-schema/spec@1.0.0': {} + '@standard-schema/utils@0.3.0': {} '@supabase/auth-js@2.70.0': @@ -7319,8 +7296,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.8 @@ -7660,17 +7635,13 @@ snapshots: indent-string: 4.0.0 optional: true - ai@4.3.16(react@19.1.0)(zod@3.25.56): + ai@5.0.8(zod@3.25.56): dependencies: - '@ai-sdk/provider': 1.1.3 - '@ai-sdk/provider-utils': 2.2.8(zod@3.25.56) - '@ai-sdk/react': 1.2.12(react@19.1.0)(zod@3.25.56) - '@ai-sdk/ui-utils': 1.2.11(zod@3.25.56) + '@ai-sdk/gateway': 1.0.4(zod@3.25.56) + '@ai-sdk/provider': 2.0.0 + '@ai-sdk/provider-utils': 3.0.1(zod@3.25.56) '@opentelemetry/api': 1.9.0 - jsondiffpatch: 0.6.0 zod: 3.25.56 - optionalDependencies: - react: 19.1.0 ajv@6.12.6: dependencies: @@ -8210,8 +8181,6 @@ snapshots: dependencies: dequal: 2.0.3 - diff-match-patch@1.0.5: {} - diff-sequences@29.6.3: {} digest-fetch@1.3.0: @@ -8655,6 +8624,8 @@ snapshots: eventsource-parser@3.0.2: {} + eventsource-parser@3.0.3: {} + eventsource@3.0.7: dependencies: eventsource-parser: 3.0.2 @@ -9512,12 +9483,6 @@ snapshots: dependencies: minimist: 1.2.8 - jsondiffpatch@0.6.0: - dependencies: - '@types/diff-match-patch': 1.0.36 - chalk: 5.4.1 - diff-match-patch: 1.0.5 - jsx-ast-utils@3.3.5: dependencies: array-includes: 3.1.9 @@ -10975,8 +10940,6 @@ snapshots: scheduler@0.26.0: {} - secure-json-parse@2.7.0: {} - semver@6.3.1: {} semver@7.7.2: {} diff --git a/src/ai/image/registry.ts b/src/ai/image/registry.ts index c5ee788c..71629355 100644 --- a/src/ai/image/registry.ts +++ b/src/ai/image/registry.ts @@ -1,15 +1,27 @@ -import { createProviderRegistry } from "ai"; - import { openai } from "@ai-sdk/openai"; import { xai } from "@ai-sdk/xai"; import { fireworks } from "@ai-sdk/fireworks"; import { fal } from "@ai-sdk/fal"; import { luma } from "@ai-sdk/luma"; -export const imageModelRegistry = createProviderRegistry({ - openai, - xai, - fireworks, - fal, - luma, -}); +// Minimal routing registry to avoid ProviderV2 typing across mixed provider versions +export const imageModelRegistry = { + imageModel(id: string) { + const [provider, ...rest] = id.split(":"); + const modelId = rest.join(":"); + switch (provider) { + case "openai": + return openai.image(modelId); + case "xai": + return xai.image(modelId); + case "fireworks": + return fireworks.image(modelId); + case "fal": + return fal.image(modelId); + case "luma": + return luma.image(modelId); + default: + throw new Error(`Unknown image provider: ${provider}`); + } + }, +}; diff --git a/src/app/(general)/_components/chat/index.tsx b/src/app/(general)/_components/chat/index.tsx index e617820a..271413a4 100644 --- a/src/app/(general)/_components/chat/index.tsx +++ b/src/app/(general)/_components/chat/index.tsx @@ -2,7 +2,8 @@ import { db } from "@/server/db"; import { ChatProvider } from "@/app/(general)/_contexts/chat-context"; import type { Message, Workbench } from "@prisma/client"; import { ChatLayout } from "./layout"; -import type { Attachment, UIMessage } from "ai"; +import type { UIMessage } from "ai"; +import type { Attachment } from "./types"; import { languageModels } from "@/ai/language"; import { ChatContent } from "./chat"; import { serverCookieUtils } from "@/lib/cookies/server"; diff --git a/src/app/(general)/_components/chat/input/index.tsx b/src/app/(general)/_components/chat/input/index.tsx index 57b6d6e7..b204f426 100644 --- a/src/app/(general)/_components/chat/input/index.tsx +++ b/src/app/(general)/_components/chat/input/index.tsx @@ -28,11 +28,15 @@ import { cn } from "@/lib/utils"; import { ModelSelect } from "./model-select"; import { useChatContext } from "@/app/(general)/_contexts/chat-context"; -import type { Attachment } from "ai"; -import type { UseChatHelpers } from "@ai-sdk/react"; -import { ToolsSelect } from "./tools"; +import type { Attachment } from "../types"; +import type { LanguageModel } from "@/ai/language/types"; +import type { ImageModel } from "@/ai/image/types"; +import type { SelectedToolkit } from "@/components/toolkit/types"; +import type { Workbench } from "@prisma/client"; import type { File as DbFile } from "@prisma/client"; import { LanguageModelCapability } from "@/ai/language/types"; +import type { UIMessage } from "ai"; +import { ToolsSelect } from "./tools"; import { Tooltip, TooltipContent, @@ -175,9 +179,11 @@ const PureMultimodalInput: React.FC = ({ window.history.replaceState({}, "", `/${chatId}`); } - handleSubmit(undefined, { - experimental_attachments: attachments, - }); + handleSubmit({ + preventDefault: () => { + // Prevent default form submission + }, + } as React.FormEvent); setAttachments([]); setLocalStorageInput(""); @@ -189,7 +195,6 @@ const PureMultimodalInput: React.FC = ({ }, [ selectedChatModel, submitDisabledString, - attachments, handleSubmit, setAttachments, setLocalStorageInput, @@ -508,7 +513,7 @@ function PureAttachmentsButton({ disabledString, }: { fileInputRef: React.MutableRefObject; - status: UseChatHelpers["status"]; + status: "idle" | "submitted" | "streaming" | "error" | "ready"; disabledString: string; }) { const button = ( @@ -554,7 +559,7 @@ function PureStopButton({ setMessages, }: { stop: () => void; - setMessages: UseChatHelpers["setMessages"]; + setMessages: (messages: unknown) => void; }) { return (