From 1610c2ff4ee61e68027a08ac4f669152d62171a2 Mon Sep 17 00:00:00 2001 From: Yu Chao Date: Mon, 28 Apr 2025 12:11:37 +0800 Subject: [PATCH] feat: extract getChatStreamSettings --- web/src/core/store/store.ts | 128 +++++++++++++++++++----------------- 1 file changed, 68 insertions(+), 60 deletions(-) diff --git a/web/src/core/store/store.ts b/web/src/core/store/store.ts index e44d354..9ebdaa2 100644 --- a/web/src/core/store/store.ts +++ b/web/src/core/store/store.ts @@ -53,7 +53,7 @@ export async function sendMessage( } = {}, options: { abortSignal?: AbortSignal } = {}, ) { - if (content !== undefined) { + if (content != null) { appendMessage({ id: nanoid(), threadId: THREAD_ID, @@ -63,67 +63,22 @@ export async function sendMessage( }); } + const settings = getChatStreamSettings(); + const stream = chatStream( + content ?? "[REPLAY]", + { + thread_id: THREAD_ID, + interrupt_feedback: interruptFeedback, + auto_accepted_plan: settings.autoAcceptedPlan, + max_plan_iterations: settings.maxPlanIterations, + max_step_num: settings.maxStepNum, + mcp_settings: settings.mcpSettings, + }, + options, + ); + setResponding(true); try { - const settings = useSettingsStore.getState(); - const generalSettings = settings.general; - const mcpServers = settings.mcp.servers.filter((server) => server.enabled); - let mcpSettings: - | { - servers: Record< - string, - MCPServerMetadata & { - enabled_tools: string[]; - add_to_agents: string[]; - } - >; - } - | undefined = undefined; - 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"], - }, - }; - }, {}), - }; - } - const stream = chatStream( - content ?? "[REPLAY]", - { - thread_id: THREAD_ID, - auto_accepted_plan: generalSettings.autoAcceptedPlan, - max_plan_iterations: generalSettings.maxPlanIterations, - max_step_num: generalSettings.maxStepNum, - interrupt_feedback: interruptFeedback, - mcp_settings: mcpSettings, - }, - options, - ); - for await (const event of stream) { const { type, data } = event; const messageId = data.id; @@ -156,6 +111,59 @@ 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 }); }