Skip to content

Commit ba18a1d

Browse files
committed
Add diff opening at all task completion points
1 parent ff7a784 commit ba18a1d

File tree

1 file changed

+34
-23
lines changed

1 file changed

+34
-23
lines changed

src/core/tools/attemptCompletionTool.ts

Lines changed: 34 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,31 @@ import { formatResponse } from "../prompts/responses"
1414
import { telemetryService } from "../../services/telemetry/TelemetryService"
1515
import Anthropic from "@anthropic-ai/sdk"
1616

17+
// Helper function to open diff viewer at task completion
18+
async function openDiffViewer(cline: Cline) {
19+
console.log("************************* TASK COMPLETE *************************")
20+
console.log("[TASK_COMPLETE_DEBUG] Entering auto-diff section")
21+
console.log("[TASK_COMPLETE_DEBUG] cline instance:", {
22+
hasCheckpointDiff: !!cline.checkpointDiff,
23+
taskId: cline.taskId,
24+
instance: cline.instanceId,
25+
})
26+
// Show a UI message to verify execution reaches this point
27+
const vscode = require("vscode")
28+
vscode.window.showInformationMessage("Task completed - opening diff viewer")
29+
try {
30+
console.log("[attemptCompletionTool] Attempting to auto-open diff viewer")
31+
await cline.checkpointDiff({
32+
ts: Date.now(),
33+
previousCommitHash: undefined, // Diff against working tree
34+
mode: "checkpoint",
35+
})
36+
console.log("[attemptCompletionTool] Successfully opened diff viewer")
37+
} catch (error) {
38+
console.warn("[attemptCompletionTool] Failed to auto-open diff viewer:", error)
39+
}
40+
}
41+
1742
export async function attemptCompletionTool(
1843
cline: Cline,
1944
block: ToolUse,
@@ -45,6 +70,9 @@ export async function attemptCompletionTool(
4570
telemetryService.captureTaskCompleted(cline.taskId)
4671
cline.emit("taskCompleted", cline.taskId, cline.getTokenUsage())
4772

73+
// Task completed - open diff viewer
74+
await openDiffViewer(cline)
75+
4876
await cline.ask("command", removeClosingTag("command", command), block.partial).catch(() => {})
4977
}
5078
} else {
@@ -69,6 +97,9 @@ export async function attemptCompletionTool(
6997
await cline.say("completion_result", result, undefined, false)
7098
telemetryService.captureTaskCompleted(cline.taskId)
7199
cline.emit("taskCompleted", cline.taskId, cline.getTokenUsage())
100+
101+
// Task completed - open diff viewer
102+
await openDiffViewer(cline)
72103
}
73104

74105
// Complete command message.
@@ -92,6 +123,9 @@ export async function attemptCompletionTool(
92123
await cline.say("completion_result", result, undefined, false)
93124
telemetryService.captureTaskCompleted(cline.taskId)
94125
cline.emit("taskCompleted", cline.taskId, cline.getTokenUsage())
126+
127+
// Task completed - open diff viewer
128+
await openDiffViewer(cline)
95129
}
96130

97131
if (cline.parentTask) {
@@ -111,29 +145,6 @@ export async function attemptCompletionTool(
111145
// button and field.
112146
const { response, text, images } = await cline.ask("completion_result", "", false)
113147

114-
// Auto-open diff viewer regardless of response
115-
console.log("************************* TASK COMPLETE *************************")
116-
console.log("[TASK_COMPLETE_DEBUG] Entering auto-diff section")
117-
console.log("[TASK_COMPLETE_DEBUG] cline instance:", {
118-
hasCheckpointDiff: !!cline.checkpointDiff,
119-
taskId: cline.taskId,
120-
instance: cline.instanceId,
121-
})
122-
// Show a UI message to verify execution reaches this point
123-
const vscode = require("vscode")
124-
vscode.window.showInformationMessage("About to attempt opening diff viewer")
125-
try {
126-
console.log("[attemptCompletionTool] Attempting to auto-open diff viewer")
127-
await cline.checkpointDiff({
128-
ts: Date.now(),
129-
previousCommitHash: undefined, // Diff against working tree
130-
mode: "checkpoint",
131-
})
132-
console.log("[attemptCompletionTool] Successfully opened diff viewer")
133-
} catch (error) {
134-
console.warn("[attemptCompletionTool] Failed to auto-open diff viewer:", error)
135-
}
136-
137148
// Signals to recursive loop to stop (for now
138149
// cline never happens since yesButtonClicked
139150
// will trigger a new task).

0 commit comments

Comments
 (0)