@@ -381,6 +381,22 @@ export class CopilotCloudSessionsProvider extends Disposable implements vscode.C
381381 const prResults = await Promise . all ( prFetches ) ;
382382 const prMap = new Map ( prResults . filter ( r => r . pr ) . map ( r => [ r . globalId , r . pr ! ] ) ) ;
383383
384+ const beginningOfTime = '0001-01-01T00:00:00Z' ;
385+ const validateISOTimestamp = ( date : string | undefined ) : number | undefined => {
386+ try {
387+ if ( ! date || date === beginningOfTime ) {
388+ return ;
389+ }
390+ const time = new Date ( date ) ?. getTime ( ) ;
391+ if ( ! time || isNaN ( time ) ) {
392+ return ;
393+ }
394+ return time ;
395+ } catch { }
396+ } ;
397+
398+ const createdAt = validateISOTimestamp ( sessions [ 0 ] . created_at ) ;
399+
384400 // Create session items from latest sessions
385401 const sessionItems = await Promise . all ( Array . from ( latestSessionsMap . values ( ) ) . map ( async sessionItem => {
386402 const pr = prMap . get ( sessionItem . resource_global_id ) ;
@@ -394,10 +410,12 @@ export class CopilotCloudSessionsProvider extends Disposable implements vscode.C
394410 status : this . getSessionStatusFromSession ( sessionItem ) ,
395411 description : this . getPullRequestDescription ( pr ) ,
396412 tooltip : this . createPullRequestTooltip ( pr ) ,
397- timing : {
398- startTime : new Date ( sessionItem . created_at ) . getTime ( ) ,
399- endTime : sessionItem . completed_at ? new Date ( sessionItem . completed_at ) . getTime ( ) : undefined
400- } ,
413+ ...( createdAt ? {
414+ timing : {
415+ startTime : createdAt ,
416+ endTime : validateISOTimestamp ( sessionItem . completed_at ) ,
417+ }
418+ } : { } ) ,
401419 changes : {
402420 files : pr . files . totalCount ,
403421 insertions : pr . additions ,
0 commit comments