From c277f7625f4349cf42c22d2ef138737864b37b9c Mon Sep 17 00:00:00 2001 From: Saoud Rizwan <7799382+saoudrizwan@users.noreply.github.com> Date: Sat, 17 Aug 2024 09:09:05 -0400 Subject: [PATCH] Show 'Start New Task' button if user tries to resume completed task --- src/ClaudeDev.ts | 12 ++++++++++-- src/shared/ExtensionMessage.ts | 1 + webview-ui/src/components/ChatView.tsx | 11 ++++++++++- 3 files changed, 21 insertions(+), 3 deletions(-) diff --git a/src/ClaudeDev.ts b/src/ClaudeDev.ts index eaedb06..e652995 100644 --- a/src/ClaudeDev.ts +++ b/src/ClaudeDev.ts @@ -473,8 +473,16 @@ export class ClaudeDev { const lastClaudeMessage = this.claudeMessages .slice() .reverse() - .find((m) => m.ask !== "resume_task") // could be multiple resume tasks - const { response, text, images } = await this.ask("resume_task") // calls poststatetowebview + .find((m) => !(m.ask === "resume_task" || m.ask === "resume_completed_task")) // could be multiple resume tasks + + let askType: ClaudeAsk + if (lastClaudeMessage?.ask === "completion_result") { + askType = "resume_completed_task" + } else { + askType = "resume_task" + } + + const { response, text, images } = await this.ask(askType) // calls poststatetowebview let newUserContent: UserContent = [] if (response === "messageResponse") { diff --git a/src/shared/ExtensionMessage.ts b/src/shared/ExtensionMessage.ts index f99c1fe..d456bb4 100644 --- a/src/shared/ExtensionMessage.ts +++ b/src/shared/ExtensionMessage.ts @@ -41,6 +41,7 @@ export type ClaudeAsk = | "tool" | "api_req_failed" | "resume_task" + | "resume_completed_task" export type ClaudeSay = | "task" diff --git a/webview-ui/src/components/ChatView.tsx b/webview-ui/src/components/ChatView.tsx index 228769e..3b601db 100644 --- a/webview-ui/src/components/ChatView.tsx +++ b/webview-ui/src/components/ChatView.tsx @@ -150,6 +150,13 @@ const ChatView = ({ setPrimaryButtonText("Resume Task") setSecondaryButtonText(undefined) break + case "resume_completed_task": + setTextAreaDisabled(false) + setClaudeAsk("resume_completed_task") + setEnableButtons(true) + setPrimaryButtonText("Start New Task") + setSecondaryButtonText(undefined) + break } break case "say": @@ -213,6 +220,7 @@ const ChatView = ({ case "command_output": // user can send input to command stdin case "completion_result": // if this happens then the user has feedback for the completion result case "resume_task": + case "resume_completed_task": vscode.postMessage({ type: "askResponse", askResponse: "messageResponse", @@ -247,6 +255,7 @@ const ChatView = ({ vscode.postMessage({ type: "askResponse", askResponse: "yesButtonTapped" }) break case "completion_result": + case "resume_completed_task": // extension waiting for feedback. but we can just present a new task button startNewTask() break @@ -406,8 +415,8 @@ const ChatView = ({ } break case "api_req_failed": // this message is used to update the latest api_req_started that the request failed - return false case "resume_task": + case "resume_completed_task": return false } switch (message.say) {