diff --git a/media/app.js b/media/app.js index f35e410..9d01911 100644 --- a/media/app.js +++ b/media/app.js @@ -37,6 +37,10 @@ window.addEventListener("message", (event) => { case "textDelta": appendAssistantDelta(message.delta); break; + case "turnEnd": + turnEndSeen = true; + finishAssistantTurn(); + break; case "toolCall": renderToolCall(message.name, message.arguments); break; @@ -73,7 +77,8 @@ window.addEventListener("message", (event) => { addSystemNote("Retrying (" + message.attempt + "/3) — " + message.error, true); break; case "done": - finishAssistantTurn(message.text); + finishAssistantTurn(turnEndSeen ? undefined : message.text); + turnEndSeen = false; setBusy(false); break; case "error": diff --git a/media/composer.js b/media/composer.js index a416710..c3e15ea 100644 --- a/media/composer.js +++ b/media/composer.js @@ -66,6 +66,7 @@ function send() { pendingImages = []; renderAttachmentsPreview(); assistantTurn = null; + turnEndSeen = false; setBusy(true); showThinkingIndicator(); vscode.postMessage({ type: "sendPrompt", prompt, images }); diff --git a/media/dom.js b/media/dom.js index 191ab05..b07ba02 100644 --- a/media/dom.js +++ b/media/dom.js @@ -53,6 +53,7 @@ const sessionGalleryNew = document.getElementById("session-gallery-new"); let assistantTurn = null; let pendingAssistantText = ""; +let turnEndSeen = false; let isBusy = false; const pendingToolCards = new Map(); let currentModel = ""; diff --git a/src/features/chat/chat.types.ts b/src/features/chat/chat.types.ts index 2610316..1fe24e5 100644 --- a/src/features/chat/chat.types.ts +++ b/src/features/chat/chat.types.ts @@ -1,6 +1,7 @@ export const FORWARDED_NOTIFICATIONS = [ "ready", "chat/textDelta", + "chat/turnEnd", "chat/toolCall", "chat/toolResult", "chat/usage",