@@ -58,6 +58,9 @@ export interface UploadResult {
5858 pointsEarned ?: PointsEarned ; // Points earned from this upload
5959 created ?: number ; // Number of new sessions created
6060 duplicates ?: number ; // Number of duplicate sessions
61+ updated ?: number ; // Number of updated sessions
62+ accepted ?: number ; // Number of sessions accepted for async processing
63+ queued ?: boolean ; // True when the server queued processing asynchronously
6164 batchId ?: string ; // Batch ID for tracking
6265}
6366
@@ -492,6 +495,10 @@ class SecureApiClient {
492495 if ( shouldCompress ) {
493496 configHeaders [ 'Content-Encoding' ] = 'gzip' ;
494497 }
498+ configHeaders [ 'x-vibe-upload-session-count' ] = String ( chunk . length ) ;
499+ configHeaders [ 'x-vibe-upload-total-sessions' ] = String ( sanitizedSessions . length ) ;
500+ configHeaders [ 'x-vibe-upload-batch-number' ] = String ( i + 1 ) ;
501+ configHeaders [ 'x-vibe-upload-total-batches' ] = String ( chunks . length ) ;
495502
496503 // Use /cli/sessions endpoint for CLI uploads (bearer token auth)
497504 const response = await this . client . post ( '/cli/sessions' , requestBody , {
@@ -600,16 +607,30 @@ class SecureApiClient {
600607 } ;
601608 } , null as PointsEarned | null ) ;
602609
603- return {
610+ const sessionsProcessed = results . reduce ( ( sum , r ) => {
611+ const processed = ( r . created || 0 ) + ( r . duplicates || 0 ) + ( r . updated || 0 ) ;
612+ return sum + ( processed > 0 ? processed : ( r . accepted || 0 ) ) ;
613+ } , 0 ) ;
614+ const updated = results . reduce ( ( sum , r ) => sum + ( r . updated || 0 ) , 0 ) ;
615+ const accepted = results . reduce ( ( sum , r ) => sum + ( r . accepted || 0 ) , 0 ) ;
616+ const queued = results . some ( r => r . queued ) ;
617+ const batchId = results . find ( r => r . batchId ) ?. batchId ;
618+ const merged : UploadResult = {
604619 success : results . every ( r => r . success ) ,
605620 created : results . reduce ( ( sum , r ) => sum + ( r . created || 0 ) , 0 ) ,
606621 duplicates : results . reduce ( ( sum , r ) => sum + ( r . duplicates || 0 ) , 0 ) ,
607- sessionsProcessed : results . reduce ( ( sum , r ) => sum + ( ( r . created || 0 ) + ( r . duplicates || 0 ) ) , 0 ) ,
622+ sessionsProcessed,
608623 analysisPreview : results [ 0 ] ?. analysisPreview ,
609624 streak : results [ results . length - 1 ] ?. streak ,
610- pointsEarned : pointsEarned || undefined ,
611- batchId : results . find ( r => r . batchId ) ?. batchId ,
625+ batchId,
612626 } ;
627+
628+ if ( pointsEarned ) merged . pointsEarned = pointsEarned ;
629+ if ( updated > 0 ) merged . updated = updated ;
630+ if ( accepted > 0 ) merged . accepted = accepted ;
631+ if ( queued ) merged . queued = queued ;
632+
633+ return merged ;
613634 }
614635
615636 async getStreak ( ) : Promise < StreakInfo > {
0 commit comments