diff --git a/apps/client/src/services/llm_chat.ts b/apps/client/src/services/llm_chat.ts
index 67fb728328..13f282fe02 100644
--- a/apps/client/src/services/llm_chat.ts
+++ b/apps/client/src/services/llm_chat.ts
@@ -98,7 +98,7 @@ export async function streamChatCompletion(
callbacks.onDone();
break;
}
- } catch {
+ } catch (e) {
console.error("Failed to parse SSE data line:", line, e);
}
}
diff --git a/apps/client/src/widgets/sidebar/SidebarChat.tsx b/apps/client/src/widgets/sidebar/SidebarChat.tsx
index 9aba9dae9e..2386e447fb 100644
--- a/apps/client/src/widgets/sidebar/SidebarChat.tsx
+++ b/apps/client/src/widgets/sidebar/SidebarChat.tsx
@@ -223,8 +223,7 @@ export default function SidebarChat() {
<>
diff --git a/apps/server/src/services/llm/providers/anthropic.ts b/apps/server/src/services/llm/providers/anthropic.ts
index e26691b7f1..e8fc71cce1 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 { generateText, streamText, stepCountIs, type CoreMessage } from "ai";
+import { generateText, streamText, stepCountIs, type CoreMessage, type ToolSet } from "ai";
import type { LlmMessage } from "@triliumnext/commons";
import becca from "../../../becca/becca.js";
@@ -191,7 +191,7 @@ export class AnthropicProvider implements LlmProvider {
}
// Build tools object
- const tools: Record = {};
+ const tools: ToolSet = {};
if (config.enableWebSearch) {
tools.web_search = this.anthropic.tools.webSearch_20250305({
@@ -211,8 +211,6 @@ export class AnthropicProvider implements LlmProvider {
if (Object.keys(tools).length > 0) {
streamOptions.tools = tools;
// Allow multiple tool use cycles before final response
- streamOptions.maxSteps = 5;
- // Override default stopWhen which stops after 1 step
streamOptions.stopWhen = stepCountIs(5);
// Let model decide when to use tools vs respond with text
streamOptions.toolChoice = "auto";
@@ -232,7 +230,7 @@ export class AnthropicProvider implements LlmProvider {
async generateTitle(firstMessage: string): Promise {
const { text } = await generateText({
model: this.anthropic(TITLE_MODEL),
- maxTokens: TITLE_MAX_TOKENS,
+ maxOutputTokens: TITLE_MAX_TOKENS,
messages: [
{
role: "user",
diff --git a/apps/server/src/services/llm/types.ts b/apps/server/src/services/llm/types.ts
index bbac0687b5..0e4ae71b32 100644
--- a/apps/server/src/services/llm/types.ts
+++ b/apps/server/src/services/llm/types.ts
@@ -46,6 +46,8 @@ export interface ModelInfo {
costMultiplier?: number;
/** Maximum context window size in tokens */
contextWindow?: number;
+ /** Whether this is a legacy/older model */
+ isLegacy?: boolean;
}
export interface LlmProvider {
diff --git a/packages/commons/src/lib/hidden_subtree.ts b/packages/commons/src/lib/hidden_subtree.ts
index f30311fc37..03c137653f 100644
--- a/packages/commons/src/lib/hidden_subtree.ts
+++ b/packages/commons/src/lib/hidden_subtree.ts
@@ -44,7 +44,8 @@ export interface HiddenSubtreeItem {
| "quickSearch"
| "commandPalette"
| "toggleZenMode"
- | "mobileTabSwitcher";
+ | "mobileTabSwitcher"
+ | "sidebarChat";
command?: keyof typeof Command;
/**
* If set to true, then branches will be enforced to be in the correct place.