From 47f3ba9a42fb71842de470c36335e6cf75594160 Mon Sep 17 00:00:00 2001 From: lyon Date: Thu, 18 Jun 2026 01:45:52 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E5=9B=9E=E5=A1=AB=20live=20trace=20assi?= =?UTF-8?q?stant=20=E6=96=87=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- web/hwlab-cloud-web/src/stores/workbench.ts | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/web/hwlab-cloud-web/src/stores/workbench.ts b/web/hwlab-cloud-web/src/stores/workbench.ts index 64998441..afcb60cb 100644 --- a/web/hwlab-cloud-web/src/stores/workbench.ts +++ b/web/hwlab-cloud-web/src/stores/workbench.ts @@ -883,11 +883,20 @@ export const useWorkbenchStore = defineStore("workbench", () => { const trace = snapshotToRunnerTrace(snapshot); rememberTurnStatus(traceId, snapshot); const status = statusFromResult(snapshot.status); + const terminal = isTerminalMessageStatus(status); messages.value = messages.value.map((message) => { if (message.traceId !== traceId) return message; const runnerTrace = mergeRunnerTrace(message.runnerTrace, trace); rememberTraceAuthority(runnerTrace); - return { ...message, status, traceAutoLifecycle: "running", runnerTrace, updatedAt: new Date().toISOString() }; + const traceAssistantText = message.role === "agent" ? assistantTextFromTraceEvents(Array.isArray(runnerTrace.events) ? runnerTrace.events : []) : null; + const error = message.role === "agent" ? normalizeAgentError(runnerTrace.error ?? message.error) : normalizeAgentError(message.error); + const errorText = message.role === "agent" ? agentErrorDisplayText(error) : null; + const nextText = message.role === "agent" && terminal + ? firstNonEmptyString(finalResponseText(runnerTrace.finalResponse), traceAssistantText, errorText, message.text) ?? message.text + : message.role === "agent" && !firstNonEmptyString(message.text) + ? firstNonEmptyString(traceAssistantText, finalResponseText(runnerTrace.finalResponse), errorText, message.text) ?? message.text + : message.text; + return { ...message, status, text: nextText, traceAutoLifecycle: terminal ? "terminal" : "running", runnerTrace, error: error ?? message.error ?? null, updatedAt: new Date().toISOString() }; }); markWorkbenchTraceProjected(traceId); void refreshSessionStatusById(trace.sessionId ?? selectedSessionId.value);