From 62b4963bb882187dc8f16db775ead854c733c96a Mon Sep 17 00:00:00 2001 From: WangDL Date: Fri, 22 May 2026 19:13:22 +0800 Subject: [PATCH] fix: expand switch cases --- src/pages/TaskAssistant.tsx | 33 +++++++++++++++++++++++++-------- 1 file changed, 25 insertions(+), 8 deletions(-) diff --git a/src/pages/TaskAssistant.tsx b/src/pages/TaskAssistant.tsx index 81f7b6e..28b3e6f 100644 --- a/src/pages/TaskAssistant.tsx +++ b/src/pages/TaskAssistant.tsx @@ -82,14 +82,31 @@ function ChatPage() { try { await streamChat(prevMessages.map(m => ({ role: m.role, content: m.content })), activeId, (event: StreamEvent) => { switch (event.event) { - case 'meta': completedConvId = event.conversationId; if (event.conversationId && event.conversationId !== activeId) { setActiveId(event.conversationId); loadConversations() } break - case 'tool.started': currentTools.push({ tool: event.tool, preview: event.preview, done: false }); update({ toolCalls: [...currentTools] }) break - case 'tool.completed': { const i = currentTools.findIndex((t: any) => t.tool === event.tool && !t.done); if (i >= 0) { currentTools[i] = { ...currentTools[i], done: true, duration: event.duration, error: event.error }; update({ toolCalls: [...currentTools] }) } } break - case 'approval.request': setWaitingApproval(true); update({ approval: { command: event.command, description: event.description, choices: event.choices, runId: event.runId } }) break - case 'message.delta': currentContent += event.delta || ''; update({ content: currentContent, streaming: true }) break - case 'run.completed': if (event.output) currentContent = event.output; update({ content: currentContent, streaming: false }) break - case 'done': completedConvId = event.conversationId || completedConvId; update({ streaming: false }) break - case 'error': update({ content: 'Error: ' + event.error, streaming: false }) break + case 'meta': completedConvId = event.conversationId + if (event.conversationId && event.conversationId !== activeId) { setActiveId(event.conversationId); loadConversations() } break + case 'tool.started': + currentTools.push({ tool: event.tool, preview: event.preview, done: false }); + update({ toolCalls: [...currentTools] }) + break + case 'tool.completed': { + const i = currentTools.findIndex((t: any) => t.tool === event.tool && !t.done); if (i >= 0) { currentTools[i] = { ...currentTools[i], done: true, duration: event.duration, error: event.error }; update({ toolCalls: [...currentTools] }) + } + break + case 'approval.request': + setWaitingApproval(true); update({ approval: { command: event.command, description: event.description, choices: event.choices, runId: event.runId } }) + break + case 'message.delta': + currentContent += event.delta || ''; update({ content: currentContent, streaming: true }) + break + case 'run.completed': + if (event.output) currentContent = event.output; update({ content: currentContent, streaming: false }) + break + case 'done': + completedConvId = event.conversationId || completedConvId; update({ streaming: false }) + break + case 'error': + update({ content: 'Error: ' + event.error, streaming: false }) + break } }, controller.signal) if (completedConvId) loadConversations()