/** * Orchestrator Job Builder - Wave-Based Parallel Processing * * This module implements wave-based parallel inscription that respects topological order: * * **Key Concept: Dependency Waves** * - Files are grouped into "waves" based on their dependency depth * - Wave 0: Files with NO dependencies (all inscribed in parallel) * - Wave 1: Files that ONLY depend on Wave 0 files (inscribed in parallel after Wave 0) * - Wave N: Files that depend on files from previous waves * * **Within Each Wave:** * - All files can be inscribed in PARALLEL (dependencies satisfied) * - Large files are chunked, and chunks inscribed in parallel * - URLs are known after each wave completes, enabling dependent files in next wave */ import type { InscriptionJob, InscriptionResult, InscribedFile } from './core/inscription/index.js'; import type { ChunkManifest } from './core/chunking/index.js'; /** * Files grouped by dependency wave */ export interface DependencyWaves { /** Array of waves, each wave contains files that can be processed in parallel */ waves: string[][]; /** Map of file path to its wave number */ fileToWave: Map; } /** * Calculates dependency waves for parallel processing * * Assigns each file to a "wave" based on the maximum depth of its dependencies: * - Wave 0: Files with no dependencies * - Wave N: Files whose dependencies are all in waves < N */ export declare function calculateDependencyWaves(graph: Map): DependencyWaves; /** * Context for preparing jobs */ export interface WaveJobContext { buildDir: string; destinationAddress: string; versioningOriginInscription?: string; chunkThreshold: number; chunkSize: number; disableChunking: boolean; serviceWorkerUrl?: string; } /** * Prepares inscription jobs for a single wave of files * All files in a wave can be inscribed in parallel (dependencies satisfied) * * @returns Array of InscriptionJobs ready for parallel inscription */ export declare function prepareWaveJobs(filesInWave: string[], graph: Map, urlMap: Map, context: WaveJobContext, previousInscriptions?: Map): Promise; /** * Processes inscription results after a wave completes * - Updates URL map for regular files * - Groups and sorts chunk results * - Creates chunk manifests * - Returns chunked file info for later processing */ export interface ProcessedWaveResults { /** Regular (non-chunked) file inscriptions */ regularFiles: InscribedFile[]; /** Chunked files with their sorted chunk results */ chunkedFiles: Map; } /** * Processes results from a wave inscription */ export declare function processWaveResults(results: InscriptionResult[], urlMap: Map, chunkSize: number): ProcessedWaveResults; //# sourceMappingURL=orchestratorJobBuilder.d.ts.map