From fa7d38db4bc4934524afa6f334682c2a79061bf9 Mon Sep 17 00:00:00 2001 From: Yu Chao Date: Mon, 28 Apr 2025 14:59:46 +0800 Subject: [PATCH] feat: move getChatStreamSettings to settings store --- web/src/core/store/settings-store.ts | 54 ++++++++++++++++++++++++++- web/src/core/store/store.ts | 56 +--------------------------- 2 files changed, 54 insertions(+), 56 deletions(-) diff --git a/web/src/core/store/settings-store.ts b/web/src/core/store/settings-store.ts index 8b2ca00..d42d60b 100644 --- a/web/src/core/store/settings-store.ts +++ b/web/src/core/store/settings-store.ts @@ -3,7 +3,7 @@ import { create } from "zustand"; -import type { MCPServerMetadata } from "../mcp"; +import type { MCPServerMetadata, SimpleMCPServerMetadata } from "../mcp"; const SETTINGS_KEY = "deerflow.settings"; @@ -68,4 +68,56 @@ export const saveSettings = () => { localStorage.setItem(SETTINGS_KEY, json); }; +export const getChatStreamSettings = () => { + let mcpSettings: + | { + servers: Record< + string, + MCPServerMetadata & { + enabled_tools: string[]; + add_to_agents: string[]; + } + >; + } + | undefined = undefined; + const { mcp, general } = useSettingsStore.getState(); + const mcpServers = mcp.servers.filter((server) => server.enabled); + if (mcpServers.length > 0) { + mcpSettings = { + servers: mcpServers.reduce((acc, cur) => { + const { transport, env } = cur; + let server: SimpleMCPServerMetadata; + if (transport === "stdio") { + server = { + name: cur.name, + transport, + env, + command: cur.command, + args: cur.args, + }; + } else { + server = { + name: cur.name, + transport, + env, + url: cur.url, + }; + } + return { + ...acc, + [cur.name]: { + ...server, + enabled_tools: cur.tools.map((tool) => tool.name), + add_to_agents: ["researcher"], + }, + }; + }, {}), + }; + } + return { + ...general, + mcpSettings, + }; +}; + loadSettings(); diff --git a/web/src/core/store/store.ts b/web/src/core/store/store.ts index 94f3762..9ab1e14 100644 --- a/web/src/core/store/store.ts +++ b/web/src/core/store/store.ts @@ -5,12 +5,11 @@ import { nanoid } from "nanoid"; import { create } from "zustand"; import { chatStream, generatePodcast } from "../api"; -import type { MCPServerMetadata, SimpleMCPServerMetadata } from "../mcp"; import type { Message } from "../messages"; import { mergeMessage } from "../messages"; import { parseJSON } from "../utils"; -import { useSettingsStore } from "./settings-store"; +import { getChatStreamSettings } from "./settings-store"; const THREAD_ID = nanoid(); @@ -140,59 +139,6 @@ export async function sendMessage( } } -function getChatStreamSettings() { - let mcpSettings: - | { - servers: Record< - string, - MCPServerMetadata & { - enabled_tools: string[]; - add_to_agents: string[]; - } - >; - } - | undefined = undefined; - const settings = useSettingsStore.getState(); - const mcpServers = settings.mcp.servers.filter((server) => server.enabled); - if (mcpServers.length > 0) { - mcpSettings = { - servers: mcpServers.reduce((acc, cur) => { - const { transport, env } = cur; - let server: SimpleMCPServerMetadata; - if (transport === "stdio") { - server = { - name: cur.name, - transport, - env, - command: cur.command, - args: cur.args, - }; - } else { - server = { - name: cur.name, - transport, - env, - url: cur.url, - }; - } - return { - ...acc, - [cur.name]: { - ...server, - enabled_tools: cur.tools.map((tool) => tool.name), - add_to_agents: ["researcher"], - }, - }; - }, {}), - }; - } - return { - ...settings.general, - mcpSettings, - }; -} - - function setResponding(value: boolean) { useStore.setState({ responding: value }); }