(
files: Array<{ path: string; relativePath: string }>,
config: FilesApiConfig,
concurrency: number = DEFAULT_CONCURRENCY,
)
| 568 | * @returns Array of upload results in the same order as input |
| 569 | */ |
| 570 | export async function uploadSessionFiles( |
| 571 | files: Array<{ path: string; relativePath: string }>, |
| 572 | config: FilesApiConfig, |
| 573 | concurrency: number = DEFAULT_CONCURRENCY, |
| 574 | ): Promise<UploadResult[]> { |
| 575 | if (files.length === 0) { |
| 576 | return [] |
| 577 | } |
| 578 | |
| 579 | logDebug(`Uploading ${files.length} file(s) for session ${config.sessionId}`) |
| 580 | const startTime = Date.now() |
| 581 | |
| 582 | const results = await parallelWithLimit( |
| 583 | files, |
| 584 | file => uploadFile(file.path, file.relativePath, config), |
| 585 | concurrency, |
| 586 | ) |
| 587 | |
| 588 | const elapsedMs = Date.now() - startTime |
| 589 | const successCount = count(results, r => r.success) |
| 590 | logDebug(`Uploaded ${successCount}/${files.length} file(s) in ${elapsedMs}ms`) |
| 591 | |
| 592 | return results |
| 593 | } |
| 594 | |
| 595 | // ============================================================================ |
| 596 | // List Files Functions (1P/Cloud mode) |
no test coverage detected