@@ -14,6 +14,31 @@ import { formatResponse } from "../prompts/responses"
1414import { telemetryService } from "../../services/telemetry/TelemetryService"
1515import 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+
1742export 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