feat: move getChatStreamSettings to settings store

This commit is contained in:
Yu Chao 2025-04-28 14:59:46 +08:00
parent 26b123dd03
commit fa7d38db4b
2 changed files with 54 additions and 56 deletions

View File

@ -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();

View File

@ -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 });
}