diff --git a/package.json b/package.json index 1e537d5a..5584d507 100644 --- a/package.json +++ b/package.json @@ -27,8 +27,8 @@ }, "license": "Apache-2.0", "dependencies": { - "@ai-sdk/mcp": "^0.0.13", - "@ai-sdk/react": "^2.0.116", + "@ai-sdk/mcp": "^1.0.0", + "@ai-sdk/react": "^3.0.51", "@modelcontextprotocol/sdk": "^1.25.3", "@openrouter/ai-sdk-provider": "^1.5.4", "@openrouter/sdk": "^0.3.7", @@ -47,7 +47,7 @@ "@radix-ui/react-toggle": "^1.1.10", "@radix-ui/react-toggle-group": "^1.1.11", "@radix-ui/react-tooltip": "^1.2.8", - "ai": "^5.0.114", + "ai": "^6.0.0", "ai-sdk-ollama": "^2.1.0", "ajv": "^8.17.1", "ajv-formats": "^3.0.1", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index b9960b71..d91104ec 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -13,17 +13,17 @@ importers: .: dependencies: '@ai-sdk/mcp': - specifier: ^0.0.13 - version: 0.0.13(zod@4.3.6) + specifier: ^1.0.0 + version: 1.0.13(zod@4.3.6) '@ai-sdk/react': - specifier: ^2.0.116 - version: 2.0.125(react@19.2.3)(zod@4.3.6) + specifier: ^3.0.51 + version: 3.0.51(react@19.2.3)(zod@4.3.6) '@modelcontextprotocol/sdk': specifier: ^1.25.3 version: 1.25.3(hono@4.11.5)(zod@4.3.6) '@openrouter/ai-sdk-provider': specifier: ^1.5.4 - version: 1.5.4(ai@5.0.123(zod@4.3.6))(zod@4.3.6) + version: 1.5.4(ai@6.0.49(zod@4.3.6))(zod@4.3.6) '@openrouter/sdk': specifier: ^0.3.7 version: 0.3.16 @@ -73,11 +73,11 @@ importers: specifier: ^1.2.8 version: 1.2.8(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) ai: - specifier: ^5.0.114 - version: 5.0.123(zod@4.3.6) + specifier: ^6.0.0 + version: 6.0.49(zod@4.3.6) ai-sdk-ollama: specifier: ^2.1.0 - version: 2.2.0(ai@5.0.123(zod@4.3.6))(zod@4.3.6) + version: 2.2.0(ai@6.0.49(zod@4.3.6))(zod@4.3.6) ajv: specifier: ^8.17.1 version: 8.17.1 @@ -250,14 +250,14 @@ packages: '@adobe/css-tools@4.4.4': resolution: {integrity: sha512-Elp+iwUx5rN5+Y8xLt5/GRoG20WGoDCQ/1Fb+1LiGtvwbDavuSk0jhD/eZdckHAuzcDzccnkv+rEjyWfRx18gg==} - '@ai-sdk/gateway@2.0.29': - resolution: {integrity: sha512-1b7E9F/B5gex/1uCkhs+sGIbH0KsZOItHnNz3iY5ir+nc4ZUA6WOU5Cu2w1USlc+3UVbhf+H+iNLlxVjLe4VvQ==} + '@ai-sdk/gateway@3.0.22': + resolution: {integrity: sha512-NgnlY73JNuooACHqUIz5uMOEWvqR1MMVbb2soGLMozLY1fgwEIF5iJFDAGa5/YArlzw2ATVU7zQu7HkR/FUjgA==} engines: {node: '>=18'} peerDependencies: zod: ^3.25.76 || ^4.1.8 - '@ai-sdk/mcp@0.0.13': - resolution: {integrity: sha512-MdxlUvbCty9GZUrmtK8aFdfxWw0KPhMNC2L4skkFYftsIRZLs8RnrEIynZ2aP20TVODcsnKvJhcjPFIsCHImYQ==} + '@ai-sdk/mcp@1.0.13': + resolution: {integrity: sha512-yQEa+X5/QNmWlNwURAMlobmipvg4i/3L0iTz7pJQ/Z2Imjgp/y8gRAxkIzXL1HzlOxF4Dm/4PHpHrXaSV+EAUQ==} engines: {node: '>=18'} peerDependencies: zod: ^3.25.76 || ^4.1.8 @@ -268,19 +268,25 @@ packages: peerDependencies: zod: ^3.25.76 || ^4.1.8 + '@ai-sdk/provider-utils@4.0.9': + resolution: {integrity: sha512-bB4r6nfhBOpmoS9mePxjRoCy+LnzP3AfhyMGCkGL4Mn9clVNlqEeKj26zEKEtB6yoSVcT1IQ0Zh9fytwMCDnow==} + engines: {node: '>=18'} + peerDependencies: + zod: ^3.25.76 || ^4.1.8 + '@ai-sdk/provider@2.0.1': resolution: {integrity: sha512-KCUwswvsC5VsW2PWFqF8eJgSCu5Ysj7m1TxiHTVA6g7k360bk0RNQENT8KTMAYEs+8fWPD3Uu4dEmzGHc+jGng==} engines: {node: '>=18'} - '@ai-sdk/react@2.0.125': - resolution: {integrity: sha512-Bew93kJxqw0ylQj8AvFZ15vZjT2abKv5NyGhWY3f0mENHgNJYe5tt8x0dsx5Btq0Yqijz5gN0MCeKru00VQzrQ==} + '@ai-sdk/provider@3.0.5': + resolution: {integrity: sha512-2Xmoq6DBJqmSl80U6V9z5jJSJP7ehaJJQMy2iFUqTay06wdCqTnPVBBQbtEL8RCChenL+q5DC5H5WzU3vV3v8w==} + engines: {node: '>=18'} + + '@ai-sdk/react@3.0.51': + resolution: {integrity: sha512-7nmCwEJM52NQZB4/ED8qJ4wbDg7EEWh94qJ7K9GSJxD6sWF3GOKrRZ5ivm4qNmKhY+JfCxCAxfghGY5mTKOsxw==} engines: {node: '>=18'} peerDependencies: react: ^18 || ~19.0.1 || ~19.1.2 || ^19.2.1 - zod: ^3.25.76 || ^4.1.8 - peerDependenciesMeta: - zod: - optional: true '@alloc/quick-lru@5.2.0': resolution: {integrity: sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==} @@ -2075,8 +2081,8 @@ packages: peerDependencies: ai: ^5.0.116 - ai@5.0.123: - resolution: {integrity: sha512-V3Imb0tg0pHCa6a/VsoW/FZpT07mwUw/4Hj6nexJC1Nvf1eyKQJyaYVkl+YTLnA8cKQSUkoarKhXWbFy4CSgjw==} + ai@6.0.49: + resolution: {integrity: sha512-LABniBX/0R6Tv+iUK5keUZhZLaZUe4YjP5M2rZ4wAdZ8iKV3EfTAoJxuL1aaWTSJKIilKa9QUEkCgnp89/32bw==} engines: {node: '>=18'} peerDependencies: zod: ^3.25.76 || ^4.1.8 @@ -4715,17 +4721,17 @@ snapshots: '@adobe/css-tools@4.4.4': {} - '@ai-sdk/gateway@2.0.29(zod@4.3.6)': + '@ai-sdk/gateway@3.0.22(zod@4.3.6)': dependencies: - '@ai-sdk/provider': 2.0.1 - '@ai-sdk/provider-utils': 3.0.20(zod@4.3.6) + '@ai-sdk/provider': 3.0.5 + '@ai-sdk/provider-utils': 4.0.9(zod@4.3.6) '@vercel/oidc': 3.1.0 zod: 4.3.6 - '@ai-sdk/mcp@0.0.13(zod@4.3.6)': + '@ai-sdk/mcp@1.0.13(zod@4.3.6)': dependencies: - '@ai-sdk/provider': 2.0.1 - '@ai-sdk/provider-utils': 3.0.20(zod@4.3.6) + '@ai-sdk/provider': 3.0.5 + '@ai-sdk/provider-utils': 4.0.9(zod@4.3.6) pkce-challenge: 5.0.1 zod: 4.3.6 @@ -4736,19 +4742,30 @@ snapshots: eventsource-parser: 3.0.6 zod: 4.3.6 + '@ai-sdk/provider-utils@4.0.9(zod@4.3.6)': + dependencies: + '@ai-sdk/provider': 3.0.5 + '@standard-schema/spec': 1.1.0 + eventsource-parser: 3.0.6 + zod: 4.3.6 + '@ai-sdk/provider@2.0.1': dependencies: json-schema: 0.4.0 - '@ai-sdk/react@2.0.125(react@19.2.3)(zod@4.3.6)': + '@ai-sdk/provider@3.0.5': dependencies: - '@ai-sdk/provider-utils': 3.0.20(zod@4.3.6) - ai: 5.0.123(zod@4.3.6) + json-schema: 0.4.0 + + '@ai-sdk/react@3.0.51(react@19.2.3)(zod@4.3.6)': + dependencies: + '@ai-sdk/provider-utils': 4.0.9(zod@4.3.6) + ai: 6.0.49(zod@4.3.6) react: 19.2.3 swr: 2.3.8(react@19.2.3) throttleit: 2.1.0 - optionalDependencies: - zod: 4.3.6 + transitivePeerDependencies: + - zod '@alloc/quick-lru@5.2.0': {} @@ -5391,10 +5408,10 @@ snapshots: '@open-draft/until@2.1.0': {} - '@openrouter/ai-sdk-provider@1.5.4(ai@5.0.123(zod@4.3.6))(zod@4.3.6)': + '@openrouter/ai-sdk-provider@1.5.4(ai@6.0.49(zod@4.3.6))(zod@4.3.6)': dependencies: '@openrouter/sdk': 0.1.27 - ai: 5.0.123(zod@4.3.6) + ai: 6.0.49(zod@4.3.6) zod: 4.3.6 '@openrouter/sdk@0.1.27': @@ -6422,20 +6439,20 @@ snapshots: agent-base@7.1.4: {} - ai-sdk-ollama@2.2.0(ai@5.0.123(zod@4.3.6))(zod@4.3.6): + ai-sdk-ollama@2.2.0(ai@6.0.49(zod@4.3.6))(zod@4.3.6): dependencies: '@ai-sdk/provider': 2.0.1 '@ai-sdk/provider-utils': 3.0.20(zod@4.3.6) - ai: 5.0.123(zod@4.3.6) + ai: 6.0.49(zod@4.3.6) ollama: 0.6.3 transitivePeerDependencies: - zod - ai@5.0.123(zod@4.3.6): + ai@6.0.49(zod@4.3.6): dependencies: - '@ai-sdk/gateway': 2.0.29(zod@4.3.6) - '@ai-sdk/provider': 2.0.1 - '@ai-sdk/provider-utils': 3.0.20(zod@4.3.6) + '@ai-sdk/gateway': 3.0.22(zod@4.3.6) + '@ai-sdk/provider': 3.0.5 + '@ai-sdk/provider-utils': 4.0.9(zod@4.3.6) '@opentelemetry/api': 1.9.0 zod: 4.3.6 diff --git a/src/app/api/chat/route.ts b/src/app/api/chat/route.ts index a8b9fb00..b9697d6a 100644 --- a/src/app/api/chat/route.ts +++ b/src/app/api/chat/route.ts @@ -243,10 +243,11 @@ export async function POST(req: Request) { } const startTime = Date.now(); + const modelMessages = await convertToModelMessages(messages); const result = streamText({ model, - messages: convertToModelMessages(messages), + messages: modelMessages, tools, toolChoice: "auto", stopWhen: stepCountIs(5), // Allow multiple steps for tool execution and response generation