diff --git a/src/core/assistant-message/presentAssistantMessage.ts b/src/core/assistant-message/presentAssistantMessage.ts index 55d91ae625..88d23bfc8a 100644 --- a/src/core/assistant-message/presentAssistantMessage.ts +++ b/src/core/assistant-message/presentAssistantMessage.ts @@ -345,6 +345,11 @@ export async function presentAssistantMessage(cline: Task) { // uses since we should only ever present one tool result per // message. cline.didAlreadyUseTool = true + + // Process any queued messages immediately after tool completion + // This ensures queued messages are injected ASAP rather than waiting + // for approval-related actions + cline.processQueuedMessages() } const askApproval = async ( diff --git a/src/core/tools/ApplyDiffTool.ts b/src/core/tools/ApplyDiffTool.ts index ef6623ed93..37c3c2ca13 100644 --- a/src/core/tools/ApplyDiffTool.ts +++ b/src/core/tools/ApplyDiffTool.ts @@ -220,7 +220,6 @@ export class ApplyDiffTool extends BaseTool<"apply_diff"> { if (!didApprove) { await task.diffViewProvider.revertChanges() - task.processQueuedMessages() return } @@ -259,14 +258,10 @@ export class ApplyDiffTool extends BaseTool<"apply_diff"> { await task.diffViewProvider.reset() - // Process any queued messages after file edit completes - task.processQueuedMessages() - return } catch (error) { await handleError("applying diff", error as Error) await task.diffViewProvider.reset() - task.processQueuedMessages() return } } diff --git a/src/core/tools/InsertContentTool.ts b/src/core/tools/InsertContentTool.ts index 55b31f05ba..895665d03c 100644 --- a/src/core/tools/InsertContentTool.ts +++ b/src/core/tools/InsertContentTool.ts @@ -197,9 +197,6 @@ export class InsertContentTool extends BaseTool<"insert_content"> { pushToolResult(message) await task.diffViewProvider.reset() - - // Process any queued messages after file edit completes - task.processQueuedMessages() } catch (error) { await handleError("insert content", error as Error) await task.diffViewProvider.reset() diff --git a/src/core/tools/MultiApplyDiffTool.ts b/src/core/tools/MultiApplyDiffTool.ts index 8fd893469c..bc7f673efb 100644 --- a/src/core/tools/MultiApplyDiffTool.ts +++ b/src/core/tools/MultiApplyDiffTool.ts @@ -196,7 +196,6 @@ Original error: ${errorMessage}` TelemetryService.instance.captureDiffApplicationError(cline.taskId, cline.consecutiveMistakeCount) await cline.say("diff_error", `Failed to parse apply_diff XML: ${errorMessage}`) pushToolResult(detailedError) - cline.processQueuedMessages() return } } else if (legacyPath && typeof legacyDiffContent === "string") { @@ -220,7 +219,6 @@ Original error: ${errorMessage}` "args (or legacy 'path' and 'diff' parameters)", ) pushToolResult(errorMsg) - cline.processQueuedMessages() return } @@ -236,7 +234,6 @@ Original error: ${errorMessage}` : "args (must contain at least one valid file element)", ), ) - cline.processQueuedMessages() return } @@ -746,12 +743,10 @@ ${errorDetails ? `\nTechnical details:\n${errorDetails}\n` : ""} // Push the final result combining all operation results pushToolResult(results.join("\n\n") + singleBlockNotice) - cline.processQueuedMessages() return } catch (error) { await handleError("applying diff", error) await cline.diffViewProvider.reset() - cline.processQueuedMessages() return } } diff --git a/src/core/tools/WriteToFileTool.ts b/src/core/tools/WriteToFileTool.ts index bb987222f8..777f03e376 100644 --- a/src/core/tools/WriteToFileTool.ts +++ b/src/core/tools/WriteToFileTool.ts @@ -268,8 +268,6 @@ export class WriteToFileTool extends BaseTool<"write_to_file"> { await task.diffViewProvider.reset() - task.processQueuedMessages() - return } catch (error) { await handleError("writing file", error as Error)