Show 'Start New Task' button if user tries to resume completed task

This commit is contained in:
Saoud Rizwan
2024-08-17 09:09:05 -04:00
parent c4ce3f0495
commit c277f7625f
3 changed files with 21 additions and 3 deletions

View File

@@ -473,8 +473,16 @@ export class ClaudeDev {
const lastClaudeMessage = this.claudeMessages const lastClaudeMessage = this.claudeMessages
.slice() .slice()
.reverse() .reverse()
.find((m) => m.ask !== "resume_task") // could be multiple resume tasks .find((m) => !(m.ask === "resume_task" || m.ask === "resume_completed_task")) // could be multiple resume tasks
const { response, text, images } = await this.ask("resume_task") // calls poststatetowebview
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 = [] let newUserContent: UserContent = []
if (response === "messageResponse") { if (response === "messageResponse") {

View File

@@ -41,6 +41,7 @@ export type ClaudeAsk =
| "tool" | "tool"
| "api_req_failed" | "api_req_failed"
| "resume_task" | "resume_task"
| "resume_completed_task"
export type ClaudeSay = export type ClaudeSay =
| "task" | "task"

View File

@@ -150,6 +150,13 @@ const ChatView = ({
setPrimaryButtonText("Resume Task") setPrimaryButtonText("Resume Task")
setSecondaryButtonText(undefined) setSecondaryButtonText(undefined)
break break
case "resume_completed_task":
setTextAreaDisabled(false)
setClaudeAsk("resume_completed_task")
setEnableButtons(true)
setPrimaryButtonText("Start New Task")
setSecondaryButtonText(undefined)
break
} }
break break
case "say": case "say":
@@ -213,6 +220,7 @@ const ChatView = ({
case "command_output": // user can send input to command stdin 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 "completion_result": // if this happens then the user has feedback for the completion result
case "resume_task": case "resume_task":
case "resume_completed_task":
vscode.postMessage({ vscode.postMessage({
type: "askResponse", type: "askResponse",
askResponse: "messageResponse", askResponse: "messageResponse",
@@ -247,6 +255,7 @@ const ChatView = ({
vscode.postMessage({ type: "askResponse", askResponse: "yesButtonTapped" }) vscode.postMessage({ type: "askResponse", askResponse: "yesButtonTapped" })
break break
case "completion_result": case "completion_result":
case "resume_completed_task":
// extension waiting for feedback. but we can just present a new task button // extension waiting for feedback. but we can just present a new task button
startNewTask() startNewTask()
break break
@@ -406,8 +415,8 @@ const ChatView = ({
} }
break break
case "api_req_failed": // this message is used to update the latest api_req_started that the request failed 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_task":
case "resume_completed_task":
return false return false
} }
switch (message.say) { switch (message.say) {