diff --git a/CHANGELOG.md b/CHANGELOG.md index 4c1751763..a5bf323e8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,11 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## Unreleased +### Changed + +- Upgraded `@openrouter/ai-sdk-provider` from version `2.9.1` to `3.0.0` +- Upgraded `ai` from version `6.0.174` to `7.0.37` + ### Fixed - Fixed the time in market of the portfolio summary to be empty if there is no activity diff --git a/apps/api/src/services/fetch/fetch.service.ts b/apps/api/src/services/fetch/fetch.service.ts index 4596350ca..1f5320378 100644 --- a/apps/api/src/services/fetch/fetch.service.ts +++ b/apps/api/src/services/fetch/fetch.service.ts @@ -118,9 +118,9 @@ export class FetchService implements OnModuleInit { ].join('\n'), timeout: FetchService.WEB_FETCH_TIMEOUT, tools: { - // Provider-defined tool: lets OpenRouter perform the actual web + // Provider-executed tool: lets OpenRouter perform the actual web // request server-side via its `web_fetch` engine. `id` and `args` - // are the OpenRouter-specific identifiers; the input schema is left + // are the OpenRouter-specific identifiers. The input schema is left // open as the arguments are supplied by the model. web_fetch: tool({ args: { engine: 'openrouter' }, @@ -129,6 +129,7 @@ export class FetchService implements OnModuleInit { additionalProperties: true, type: 'object' }), + isProviderExecuted: true, type: 'provider' }) } diff --git a/package-lock.json b/package-lock.json index d13870d4a..d2837bde1 100644 --- a/package-lock.json +++ b/package-lock.json @@ -42,12 +42,12 @@ "@nestjs/schedule": "6.1.3", "@nestjs/serve-static": "5.0.5", "@nestjs/throttler": "6.5.0", - "@openrouter/ai-sdk-provider": "2.9.1", + "@openrouter/ai-sdk-provider": "3.0.0", "@prisma/adapter-pg": "7.8.0", "@prisma/client": "7.8.0", "@simplewebauthn/browser": "13.3.0", "@simplewebauthn/server": "13.3.1", - "ai": "6.0.174", + "ai": "7.0.37", "alphavantage": "2.2.0", "big.js": "7.0.1", "bootstrap": "4.6.2", @@ -181,46 +181,47 @@ "license": "MIT" }, "node_modules/@ai-sdk/gateway": { - "version": "3.0.109", - "resolved": "https://registry.npmjs.org/@ai-sdk/gateway/-/gateway-3.0.109.tgz", - "integrity": "sha512-r6dOqThjODp1vOhGRJg2OCmyB/ZOQtGx1esZ2SDvwDX5XoX8dBqYaYjLg8MPXTzMGJSgOkJyCxWgUcZtAl16pw==", + "version": "4.0.28", + "resolved": "https://registry.npmjs.org/@ai-sdk/gateway/-/gateway-4.0.28.tgz", + "integrity": "sha512-ee9TsNO3mkgHDWmTmJ8Fvltr6PFh52zhrV2+FaKJY3F3iu7kWZi5tCRJCR1HVhhlpj6lHniUb28nLQdPHkA/1Q==", "license": "Apache-2.0", "dependencies": { - "@ai-sdk/provider": "3.0.10", - "@ai-sdk/provider-utils": "4.0.26", + "@ai-sdk/provider": "4.0.3", + "@ai-sdk/provider-utils": "5.0.12", "@vercel/oidc": "3.2.0" }, "engines": { - "node": ">=18" + "node": ">=22" }, "peerDependencies": { "zod": "^3.25.76 || ^4.1.8" } }, "node_modules/@ai-sdk/provider": { - "version": "3.0.10", - "resolved": "https://registry.npmjs.org/@ai-sdk/provider/-/provider-3.0.10.tgz", - "integrity": "sha512-Q3BZ27qfpYqnCYGvE3vt+Qi6LGOF9R5Nmzn+9JoM1lCRsD9mYaIhfJLkSunN48nfGXJ6n+XNV0J/XVpqGQl7Dw==", + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@ai-sdk/provider/-/provider-4.0.3.tgz", + "integrity": "sha512-e0CpNWJUY7OxAFAnCZkw+ri9QOHWwTs1tXP42782KFGCU07qt8NiXCrCVowyCB5dP2r5/Uls+g2oPd8kOJn9dw==", "license": "Apache-2.0", "dependencies": { "json-schema": "^0.4.0" }, "engines": { - "node": ">=18" + "node": ">=22" } }, "node_modules/@ai-sdk/provider-utils": { - "version": "4.0.26", - "resolved": "https://registry.npmjs.org/@ai-sdk/provider-utils/-/provider-utils-4.0.26.tgz", - "integrity": "sha512-CsKNLKsOpvPujRlIYvoz+Ybw+kGn7J4/fIZa/58+R7iWLLfwn6ifE2G6Yq8K9XvH/I/3bzaDAJ3NhRwEMsLBKQ==", + "version": "5.0.12", + "resolved": "https://registry.npmjs.org/@ai-sdk/provider-utils/-/provider-utils-5.0.12.tgz", + "integrity": "sha512-bbhlOgHeYwrIGheLkM6fhS8hVger8uFPmcOLg+kxc9EFh7y30XYorWhthlYAgpadO3SJhFZrIcEknN7qEqEVvA==", "license": "Apache-2.0", "dependencies": { - "@ai-sdk/provider": "3.0.10", + "@ai-sdk/provider": "4.0.3", "@standard-schema/spec": "^1.1.0", + "@workflow/serde": "4.1.0", "eventsource-parser": "^3.0.8" }, "engines": { - "node": ">=18" + "node": ">=22" }, "peerDependencies": { "zod": "^3.25.76 || ^4.1.8" @@ -9507,16 +9508,16 @@ } }, "node_modules/@openrouter/ai-sdk-provider": { - "version": "2.9.1", - "resolved": "https://registry.npmjs.org/@openrouter/ai-sdk-provider/-/ai-sdk-provider-2.9.1.tgz", - "integrity": "sha512-okgq07Vdkro4CB5INbfhwa0e6VR1HS7sidNcfHN/MeXLJvX1JmQCff/vem6tcxwT9r1avyFrXSlfv9B28D/Pag==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@openrouter/ai-sdk-provider/-/ai-sdk-provider-3.0.0.tgz", + "integrity": "sha512-m9XTSWoODH2RM5OsZpaGiN7QRR8cdP5paBWq699Tu3JVmGPBKT8xF8XwV0ZBVVsjikD/JgWfak4VSsTR4wAVbg==", "license": "Apache-2.0", "engines": { - "node": ">=18" + "node": ">=22" }, "peerDependencies": { - "ai": "^6.0.0", - "zod": "^3.25.0 || ^4.0.0" + "ai": "^7.0.0", + "zod": "^3.25.76 || ^4.1.8" } }, "node_modules/@opentelemetry/api": { @@ -9524,6 +9525,8 @@ "resolved": "https://registry.npmjs.org/@opentelemetry/api/-/api-1.9.0.tgz", "integrity": "sha512-3giAOQvZiH5F9bMlMiv8+GSPMeqg0dbaeo58/0SlA9sxSqZhnUtxzX9/2FzyhS9sWQf5S0GJE0AKBrFqjpeYcg==", "license": "Apache-2.0", + "optional": true, + "peer": true, "engines": { "node": ">=8.0.0" } @@ -14423,6 +14426,12 @@ "@xtuc/long": "4.2.2" } }, + "node_modules/@workflow/serde": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/@workflow/serde/-/serde-4.1.0.tgz", + "integrity": "sha512-pav4F2BoirECWR7Nf1TKt+2eETcBj7jj4cBefQ8VXQCA6NPkaKeLfj/zMgi+3zYV5ZIBT4GuUiphsj0/b9hPQQ==", + "license": "Apache-2.0" + }, "node_modules/@xtuc/ieee754": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", @@ -14609,18 +14618,17 @@ } }, "node_modules/ai": { - "version": "6.0.174", - "resolved": "https://registry.npmjs.org/ai/-/ai-6.0.174.tgz", - "integrity": "sha512-bTrfLUWHWtkjzWyCY4bmyuk4Qvmj4S4NSNsXyNSVVqkmftQNtxRj7dzUoMeQDBBwlJO6fC7m2Q/lNOPqQQfAGA==", + "version": "7.0.37", + "resolved": "https://registry.npmjs.org/ai/-/ai-7.0.37.tgz", + "integrity": "sha512-stF+SEQJgKY3Qfe3FwNzqUrehHviOp2l7LemoI8YMOa0Zk5PxKsRNgUk3cHXz0RAue9RRyCAis2fz6LSCP6EKw==", "license": "Apache-2.0", "dependencies": { - "@ai-sdk/gateway": "3.0.109", - "@ai-sdk/provider": "3.0.10", - "@ai-sdk/provider-utils": "4.0.26", - "@opentelemetry/api": "1.9.0" + "@ai-sdk/gateway": "4.0.28", + "@ai-sdk/provider": "4.0.3", + "@ai-sdk/provider-utils": "5.0.12" }, "engines": { - "node": ">=18" + "node": ">=22" }, "peerDependencies": { "zod": "^3.25.76 || ^4.1.8" diff --git a/package.json b/package.json index 89e815d78..ccca3f2b1 100644 --- a/package.json +++ b/package.json @@ -86,12 +86,12 @@ "@nestjs/schedule": "6.1.3", "@nestjs/serve-static": "5.0.5", "@nestjs/throttler": "6.5.0", - "@openrouter/ai-sdk-provider": "2.9.1", + "@openrouter/ai-sdk-provider": "3.0.0", "@prisma/adapter-pg": "7.8.0", "@prisma/client": "7.8.0", "@simplewebauthn/browser": "13.3.0", "@simplewebauthn/server": "13.3.1", - "ai": "6.0.174", + "ai": "7.0.37", "alphavantage": "2.2.0", "big.js": "7.0.1", "bootstrap": "4.6.2",