/** * 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 } from '../inscription/index.js'; import type { DependencyNode } from '../analysis/index.js'; import type { DependencyWaves, WaveJobContext, ProcessedWaveResults } from './orchestration.types.js'; /** * 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; /** * 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): 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 */ /** * Processes results from a wave inscription */ export declare function processWaveResults(results: InscriptionResult[], urlMap: Map, chunkSize: number): ProcessedWaveResults; //# sourceMappingURL=jobBuilder.d.ts.map