Skip to content

Commit e23aeae

Browse files
committed
Send CLI upload batch metadata headers
1 parent 9324f8e commit e23aeae

1 file changed

Lines changed: 25 additions & 4 deletions

File tree

src/lib/api-client.ts

Lines changed: 25 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)