mirror of
https://git.mirrors.martin98.com/https://github.com/bytedance/deer-flow
synced 2025-08-20 12:39:15 +08:00
feat: extract getChatStreamSettings
This commit is contained in:
parent
1e83a40335
commit
1610c2ff4e
@ -53,7 +53,7 @@ export async function sendMessage(
|
|||||||
} = {},
|
} = {},
|
||||||
options: { abortSignal?: AbortSignal } = {},
|
options: { abortSignal?: AbortSignal } = {},
|
||||||
) {
|
) {
|
||||||
if (content !== undefined) {
|
if (content != null) {
|
||||||
appendMessage({
|
appendMessage({
|
||||||
id: nanoid(),
|
id: nanoid(),
|
||||||
threadId: THREAD_ID,
|
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);
|
setResponding(true);
|
||||||
try {
|
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) {
|
for await (const event of stream) {
|
||||||
const { type, data } = event;
|
const { type, data } = event;
|
||||||
const messageId = data.id;
|
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) {
|
function setResponding(value: boolean) {
|
||||||
useStore.setState({ responding: value });
|
useStore.setState({ responding: value });
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user