@@ -39,7 +39,7 @@ export class WakaTime {
39
39
private AIDebounceTimeoutId : any = null ;
40
40
private AIdebounceMs = 1000 ;
41
41
private AIdebounceCount = 0 ;
42
- private AIpasteCount = 0 ;
42
+ private AIpasteLastTime : number = 0 ;
43
43
private dependencies : Dependencies ;
44
44
private options : Options ;
45
45
private logger : Logger ;
@@ -477,25 +477,27 @@ export class WakaTime {
477
477
if ( Utils . isAIChatSidebar ( e . document ?. uri ) ) {
478
478
this . isAICodeGenerating = true ;
479
479
this . AIdebounceCount = 0 ;
480
- } else if ( e . contentChanges . length === 1 && e . contentChanges ?. [ 0 ] . text . length > 1 ) {
481
- if ( this . AIpasteCount > 1 ) {
480
+ } else if ( e . contentChanges . length === 1 && e . contentChanges ?. [ 0 ] . text . trim ( ) . length > 2 ) {
481
+ const now = Date . now ( ) ;
482
+ if ( this . recentlyAIPasted ( now ) ) {
482
483
this . isAICodeGenerating = true ;
483
484
this . AIdebounceCount = 0 ;
484
485
}
485
- this . AIpasteCount ++ ;
486
+ this . AIpasteLastTime = now ;
486
487
} else if (
487
488
this . isAICodeGenerating &&
488
489
e . contentChanges . length === 1 &&
489
- e . contentChanges ?. [ 0 ] . text . length === 1 &&
490
- e . contentChanges ?. [ 0 ] . text !== '\n' &&
491
- e . contentChanges ?. [ 0 ] . text !== '\r'
490
+ ( ( e . contentChanges ?. [ 0 ] . text . trim ( ) . length === 1 &&
491
+ e . contentChanges ?. [ 0 ] . text !== '\n' &&
492
+ e . contentChanges ?. [ 0 ] . text !== '\r' ) ||
493
+ e . contentChanges ?. [ 0 ] . text . length === 0 )
492
494
) {
493
495
this . AIdebounceCount ++ ;
494
496
clearTimeout ( this . AIDebounceTimeoutId ) ;
495
497
this . AIDebounceTimeoutId = setTimeout ( ( ) => {
496
498
if ( this . AIdebounceCount > 1 ) {
497
499
this . isAICodeGenerating = false ;
498
- this . AIpasteCount = 0 ;
500
+ this . AIpasteLastTime = 0 ;
499
501
}
500
502
} , this . AIdebounceMs ) ;
501
503
} else if ( this . isAICodeGenerating ) {
@@ -966,6 +968,10 @@ export class WakaTime {
966
968
return this . lastHeartbeat + 120000 < time ;
967
969
}
968
970
971
+ private recentlyAIPasted ( time : number ) : boolean {
972
+ return this . AIpasteLastTime + 100 >= time ;
973
+ }
974
+
969
975
private isDuplicateHeartbeat ( file : string , time : number , selection : vscode . Position ) : boolean {
970
976
let duplicate = false ;
971
977
let minutes = 30 ;
0 commit comments