@@ -936,6 +936,33 @@ describe("ClineProvider", () => {
936936 expect ( state . taskHistory ) . toEqual ( [ historyItem ] )
937937 } )
938938
939+ test ( "getStateToPostToWebview surfaces the task-local thinking effort override (DTE 4/5)" , async ( ) => {
940+ const task = ( effort : { effort : string ; source ?: string } | undefined ) => ( {
941+ taskId : "effort-task" ,
942+ clineMessages : [ ] ,
943+ todoList : [ ] ,
944+ getRuntimeThinkingEffort : ( ) => effort ,
945+ } )
946+ vi . spyOn ( provider . taskHistoryStore , "getAll" ) . mockReturnValue ( [ ] )
947+ const getCurrentTaskSpy = vi . spyOn ( provider , "getCurrentTask" )
948+
949+ getCurrentTaskSpy . mockReturnValue ( task ( { effort : "high" , source : "you" } ) as never )
950+ let state = await provider . getStateToPostToWebview ( )
951+ expect ( state . taskThinkingEffort ) . toEqual ( { effort : "high" , source : "you" } )
952+
953+ // A source-less runtime override is reported as the default source.
954+ getCurrentTaskSpy . mockReturnValue ( task ( { effort : "medium" } ) as never )
955+ state = await provider . getStateToPostToWebview ( )
956+ expect ( state . taskThinkingEffort ) . toEqual ( { effort : "medium" , source : "default" } )
957+
958+ // Without an active override the field is omitted.
959+ getCurrentTaskSpy . mockReturnValue ( task ( undefined ) as never )
960+ state = await provider . getStateToPostToWebview ( )
961+ expect ( state . taskThinkingEffort ) . toBeUndefined ( )
962+
963+ getCurrentTaskSpy . mockRestore ( )
964+ } )
965+
939966 describe ( "postStateToWebviewThrottled" , ( ) => {
940967 beforeEach ( ( ) => {
941968 vi . useFakeTimers ( )
0 commit comments