From 6e7a14fb3ee8074502889cd15f1d65d8d88620df Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Tue, 31 Mar 2026 20:23:45 +0300 Subject: [PATCH] chore(llm): update to AI SDK 6 --- apps/server/package.json | 8 +- .../src/services/llm/providers/anthropic.ts | 6 +- .../services/llm/providers/base_provider.ts | 8 +- pnpm-lock.yaml | 98 +++++++++++-------- 4 files changed, 68 insertions(+), 52 deletions(-) diff --git a/apps/server/package.json b/apps/server/package.json index b9147bfde0..e15726253d 100644 --- a/apps/server/package.json +++ b/apps/server/package.json @@ -30,10 +30,10 @@ "proxy-nginx-subdir": "docker run --name trilium-nginx-subdir --rm --network=host -v ./docker/nginx.conf:/etc/nginx/conf.d/default.conf:ro nginx:latest" }, "dependencies": { - "@ai-sdk/anthropic": "^2.0.0", - "@ai-sdk/google": "^2.0.64", - "@ai-sdk/openai": "2.0.101", - "ai": "^5.0.0", + "@ai-sdk/anthropic": "3.0.64", + "@ai-sdk/google": "3.0.54", + "@ai-sdk/openai": "3.0.49", + "ai": "6.0.142", "better-sqlite3": "12.8.0", "html-to-text": "9.0.5", "node-html-parser": "7.1.0", diff --git a/apps/server/src/services/llm/providers/anthropic.ts b/apps/server/src/services/llm/providers/anthropic.ts index bfcd434ea7..48a06bbc4e 100644 --- a/apps/server/src/services/llm/providers/anthropic.ts +++ b/apps/server/src/services/llm/providers/anthropic.ts @@ -1,5 +1,5 @@ import { createAnthropic, type AnthropicProvider as AnthropicSDKProvider } from "@ai-sdk/anthropic"; -import { stepCountIs, streamText, type CoreMessage, type ToolSet } from "ai"; +import { stepCountIs, streamText, type ModelMessage, type ToolSet } from "ai"; import type { LlmMessage } from "@triliumnext/commons"; import type { LlmProviderConfig, StreamResult } from "../types.js"; @@ -98,9 +98,9 @@ export class AnthropicProvider extends BaseProvider { /** * Override buildMessages to add Anthropic-specific cache control breakpoints. */ - protected override buildMessages(chatMessages: LlmMessage[], systemPrompt: string | undefined): CoreMessage[] { + protected override buildMessages(chatMessages: LlmMessage[], systemPrompt: string | undefined): ModelMessage[] { const CACHE_CONTROL = { anthropic: { cacheControl: { type: "ephemeral" as const } } }; - const coreMessages: CoreMessage[] = []; + const coreMessages: ModelMessage[] = []; if (systemPrompt) { coreMessages.push({ diff --git a/apps/server/src/services/llm/providers/base_provider.ts b/apps/server/src/services/llm/providers/base_provider.ts index 47842013d2..ca975fa895 100644 --- a/apps/server/src/services/llm/providers/base_provider.ts +++ b/apps/server/src/services/llm/providers/base_provider.ts @@ -3,7 +3,7 @@ * tool assembly, model pricing, and title generation. */ -import { generateText, streamText, stepCountIs, type CoreMessage, type ToolSet } from "ai"; +import { generateText, streamText, stepCountIs, type ModelMessage, type ToolSet } from "ai"; import type { LanguageModel } from "ai"; import type { LlmMessage } from "@triliumnext/commons"; @@ -94,10 +94,10 @@ export abstract class BaseProvider implements LlmProvider { } /** - * Build the CoreMessage array from LlmMessages (no provider-specific options). + * Build the ModelMessage array from LlmMessages (no provider-specific options). */ - protected buildMessages(chatMessages: LlmMessage[], systemPrompt: string | undefined): CoreMessage[] { - const coreMessages: CoreMessage[] = []; + protected buildMessages(chatMessages: LlmMessage[], systemPrompt: string | undefined): ModelMessage[] { + const coreMessages: ModelMessage[] = []; if (systemPrompt) { coreMessages.push({ role: "system", content: systemPrompt }); diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index f4fe3771ae..e5f083fc40 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -557,17 +557,17 @@ importers: apps/server: dependencies: '@ai-sdk/anthropic': - specifier: ^2.0.0 - version: 2.0.71(zod@4.3.6) + specifier: ^3.0.64 + version: 3.0.64(zod@4.3.6) '@ai-sdk/google': - specifier: ^2.0.64 - version: 2.0.64(zod@4.3.6) + specifier: ^3.0.54 + version: 3.0.54(zod@4.3.6) '@ai-sdk/openai': - specifier: 2.0.101 - version: 2.0.101(zod@4.3.6) + specifier: 3.0.49 + version: 3.0.49(zod@4.3.6) ai: - specifier: ^5.0.0 - version: 5.0.161(zod@4.3.6) + specifier: ^6.0.142 + version: 6.0.142(zod@4.3.6) better-sqlite3: specifier: 12.8.0 version: 12.8.0 @@ -1542,38 +1542,38 @@ packages: '@adobe/css-tools@4.4.4': resolution: {integrity: sha512-Elp+iwUx5rN5+Y8xLt5/GRoG20WGoDCQ/1Fb+1LiGtvwbDavuSk0jhD/eZdckHAuzcDzccnkv+rEjyWfRx18gg==} - '@ai-sdk/anthropic@2.0.71': - resolution: {integrity: sha512-JXTtAwlyxGzzRtpiAXk/O93aOTgdfoVX28EoUuRNVqZRgtkoniLQTtqeb8uZ4oXljNJlXzaJLNasS/U90w/wjw==} + '@ai-sdk/anthropic@3.0.64': + resolution: {integrity: sha512-rwLi/Rsuj2pYniQXIrvClHvXDzgM4UQHHnvHTWEF14efnlKclG/1ghpNC+adsRujAbCTr6gRsSbDE2vEqriV7g==} engines: {node: '>=18'} peerDependencies: zod: ^3.25.76 || ^4.1.8 - '@ai-sdk/gateway@2.0.65': - resolution: {integrity: sha512-yaWzvQQWgAzV0m3eidfpRub1+PggDOr2hLnSOI+L2ZispyJ/7EoSzhjKzNCADj6PHnnPaOMH933Xhl1Z/NSxJw==} + '@ai-sdk/gateway@3.0.84': + resolution: {integrity: sha512-RnUw6UNvkaw9MEaJU9cIjA+WBP+ZR5+M/9nfbfJHcGKtTbcWXijJuYKx9nYRnm+qU+iiakb0XvQA/vvho6lTsw==} engines: {node: '>=18'} peerDependencies: zod: ^3.25.76 || ^4.1.8 - '@ai-sdk/google@2.0.64': - resolution: {integrity: sha512-FUVSkdpC+j2o3anRHabJ5UXXPfnqs8uRkv5zh5x4u8p1e7C4y+YtTxeTD2aSSMGV+8ef+VNEAp5gponXpwKk0g==} + '@ai-sdk/google@3.0.54': + resolution: {integrity: sha512-EgYYdA2LpHZefLDU/FIpmeTlL5Hi4WKQZY3nACMh0wVhrS1fAvlfrdwnD1G4ISCOKWMWrMcRZX9ubs3NM/KHfA==} engines: {node: '>=18'} peerDependencies: zod: ^3.25.76 || ^4.1.8 - '@ai-sdk/openai@2.0.101': - resolution: {integrity: sha512-kQ52HLV45T3bQbRzWExXW6+pkg3Nvq4dUnZHUPJXWgkUUsAhZjxHrXqPOc/0yfn/4+Dn2uLmIgAkP9IfzMMcNg==} + '@ai-sdk/openai@3.0.49': + resolution: {integrity: sha512-U2f0pCyNn/jQH3wjgxr8o9VvCkuDFTtXbIhbFFtgXqCzMbed6rBnvzQcAMEK0/Pa44byL9zfcvCOFOflvkRA8w==} engines: {node: '>=18'} peerDependencies: zod: ^3.25.76 || ^4.1.8 - '@ai-sdk/provider-utils@3.0.22': - resolution: {integrity: sha512-fFT1KfUUKktfAFm5mClJhS1oux9tP2qgzmEZVl5UdwltQ1LO/s8hd7znVrgKzivwv1s1FIPza0s9OpJaNB/vHw==} + '@ai-sdk/provider-utils@4.0.21': + resolution: {integrity: sha512-MtFUYI1/8mgDvRmaBDjbLJPFFrMG777AvSgyIFQtZHIMzm88R/12vYBBpnk7pfiWLFE1DSZzY4WDYzGbKAcmiw==} engines: {node: '>=18'} peerDependencies: zod: ^3.25.76 || ^4.1.8 - '@ai-sdk/provider@2.0.1': - resolution: {integrity: sha512-KCUwswvsC5VsW2PWFqF8eJgSCu5Ysj7m1TxiHTVA6g7k360bk0RNQENT8KTMAYEs+8fWPD3Uu4dEmzGHc+jGng==} + '@ai-sdk/provider@3.0.8': + resolution: {integrity: sha512-oGMAgGoQdBXbZqNG0Ze56CHjDZ1IDYOwGYxYjO5KLSlz5HiNQ9udIXsPZ61VWaHGZ5XW/jyjmr6t2xz2jGVwbQ==} engines: {node: '>=18'} '@aklinker1/rollup-plugin-visualizer@5.12.0': @@ -7368,8 +7368,8 @@ packages: resolution: {integrity: sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==} engines: {node: '>=8'} - ai@5.0.161: - resolution: {integrity: sha512-CVANs7auUNEi/hRhdJDKcPYaCLWXveIfmoiekNSRel3i8WUieB6iEncDS5smcubWsx7hGtTgXxNRTg0YG0ljtA==} + ai@6.0.142: + resolution: {integrity: sha512-ZoxAsnTL/dFg5WdcwC8QNhKVlLtqwwT3I7p/4i8IJJP+6ZwqF1ljuwMsAsPYYvppZ+RzUxjxxFGb1cbEhNH3dg==} engines: {node: '>=18'} peerDependencies: zod: ^3.25.76 || ^4.1.8 @@ -16045,39 +16045,39 @@ snapshots: '@adobe/css-tools@4.4.4': {} - '@ai-sdk/anthropic@2.0.71(zod@4.3.6)': + '@ai-sdk/anthropic@3.0.64(zod@4.3.6)': dependencies: - '@ai-sdk/provider': 2.0.1 - '@ai-sdk/provider-utils': 3.0.22(zod@4.3.6) + '@ai-sdk/provider': 3.0.8 + '@ai-sdk/provider-utils': 4.0.21(zod@4.3.6) zod: 4.3.6 - '@ai-sdk/gateway@2.0.65(zod@4.3.6)': + '@ai-sdk/gateway@3.0.84(zod@4.3.6)': dependencies: - '@ai-sdk/provider': 2.0.1 - '@ai-sdk/provider-utils': 3.0.22(zod@4.3.6) + '@ai-sdk/provider': 3.0.8 + '@ai-sdk/provider-utils': 4.0.21(zod@4.3.6) '@vercel/oidc': 3.1.0 zod: 4.3.6 - '@ai-sdk/google@2.0.64(zod@4.3.6)': + '@ai-sdk/google@3.0.54(zod@4.3.6)': dependencies: - '@ai-sdk/provider': 2.0.1 - '@ai-sdk/provider-utils': 3.0.22(zod@4.3.6) + '@ai-sdk/provider': 3.0.8 + '@ai-sdk/provider-utils': 4.0.21(zod@4.3.6) zod: 4.3.6 - '@ai-sdk/openai@2.0.101(zod@4.3.6)': + '@ai-sdk/openai@3.0.49(zod@4.3.6)': dependencies: - '@ai-sdk/provider': 2.0.1 - '@ai-sdk/provider-utils': 3.0.22(zod@4.3.6) + '@ai-sdk/provider': 3.0.8 + '@ai-sdk/provider-utils': 4.0.21(zod@4.3.6) zod: 4.3.6 - '@ai-sdk/provider-utils@3.0.22(zod@4.3.6)': + '@ai-sdk/provider-utils@4.0.21(zod@4.3.6)': dependencies: - '@ai-sdk/provider': 2.0.1 + '@ai-sdk/provider': 3.0.8 '@standard-schema/spec': 1.1.0 eventsource-parser: 3.0.6 zod: 4.3.6 - '@ai-sdk/provider@2.0.1': + '@ai-sdk/provider@3.0.8': dependencies: json-schema: 0.4.0 @@ -17028,6 +17028,8 @@ snapshots: '@ckeditor/ckeditor5-utils': 47.6.1 '@ckeditor/ckeditor5-widget': 47.6.1 es-toolkit: 1.39.5 + transitivePeerDependencies: + - supports-color '@ckeditor/ckeditor5-cloud-services@47.6.1': dependencies: @@ -17423,6 +17425,8 @@ snapshots: '@ckeditor/ckeditor5-ui': 47.6.1 '@ckeditor/ckeditor5-utils': 47.6.1 ckeditor5: 47.6.1 + transitivePeerDependencies: + - supports-color '@ckeditor/ckeditor5-horizontal-line@47.6.1': dependencies: @@ -17432,6 +17436,8 @@ snapshots: '@ckeditor/ckeditor5-utils': 47.6.1 '@ckeditor/ckeditor5-widget': 47.6.1 ckeditor5: 47.6.1 + transitivePeerDependencies: + - supports-color '@ckeditor/ckeditor5-html-embed@47.6.1': dependencies: @@ -17441,6 +17447,8 @@ snapshots: '@ckeditor/ckeditor5-utils': 47.6.1 '@ckeditor/ckeditor5-widget': 47.6.1 ckeditor5: 47.6.1 + transitivePeerDependencies: + - supports-color '@ckeditor/ckeditor5-html-support@47.6.1': dependencies: @@ -17456,6 +17464,8 @@ snapshots: '@ckeditor/ckeditor5-widget': 47.6.1 ckeditor5: 47.6.1 es-toolkit: 1.39.5 + transitivePeerDependencies: + - supports-color '@ckeditor/ckeditor5-icons@47.6.1': {} @@ -17473,6 +17483,8 @@ snapshots: '@ckeditor/ckeditor5-widget': 47.6.1 ckeditor5: 47.6.1 es-toolkit: 1.39.5 + transitivePeerDependencies: + - supports-color '@ckeditor/ckeditor5-import-word@47.6.1': dependencies: @@ -17496,6 +17508,8 @@ snapshots: '@ckeditor/ckeditor5-ui': 47.6.1 '@ckeditor/ckeditor5-utils': 47.6.1 ckeditor5: 47.6.1 + transitivePeerDependencies: + - supports-color '@ckeditor/ckeditor5-inspector@5.0.0': {} @@ -17506,6 +17520,8 @@ snapshots: '@ckeditor/ckeditor5-ui': 47.6.1 '@ckeditor/ckeditor5-utils': 47.6.1 ckeditor5: 47.6.1 + transitivePeerDependencies: + - supports-color '@ckeditor/ckeditor5-line-height@47.6.1': dependencies: @@ -24533,11 +24549,11 @@ snapshots: clean-stack: 2.2.0 indent-string: 4.0.0 - ai@5.0.161(zod@4.3.6): + ai@6.0.142(zod@4.3.6): dependencies: - '@ai-sdk/gateway': 2.0.65(zod@4.3.6) - '@ai-sdk/provider': 2.0.1 - '@ai-sdk/provider-utils': 3.0.22(zod@4.3.6) + '@ai-sdk/gateway': 3.0.84(zod@4.3.6) + '@ai-sdk/provider': 3.0.8 + '@ai-sdk/provider-utils': 4.0.21(zod@4.3.6) '@opentelemetry/api': 1.9.0 zod: 4.3.6