/** * Bootstrap module — matches original rust/crates/runtime/src/bootstrap.rs exactly. * * Provides: * - BootstrapPhase enum (12 phases) * - BootstrapPlan with claw_default() and from_phases() */ // ─── BootstrapPhase ───────────────────────────────────────────────────────── export enum BootstrapPhase { CliEntry = "CliEntry", FastPathVersion = "FastPathVersion", StartupProfiler = "StartupProfiler", SystemPromptFastPath = "SystemPromptFastPath", ChromeMcpFastPath = "ChromeMcpFastPath", DaemonWorkerFastPath = "DaemonWorkerFastPath", BridgeFastPath = "BridgeFastPath", DaemonFastPath = "DaemonFastPath", BackgroundSessionFastPath = "BackgroundSessionFastPath", TemplateFastPath = "TemplateFastPath", EnvironmentRunnerFastPath = "EnvironmentRunnerFastPath", MainRuntime = "MainRuntime", } // ─── BootstrapPlan ────────────────────────────────────────────────────────── export class BootstrapPlan { private _phases: BootstrapPhase[]; private constructor(phases: BootstrapPhase[]) { this._phases = phases; } /** * Matches original BootstrapPlan::claw_default() — the standard 12-phase * bootstrap sequence used by the claw CLI. */ static clawDefault(): BootstrapPlan { return BootstrapPlan.fromPhases([ BootstrapPhase.CliEntry, BootstrapPhase.FastPathVersion, BootstrapPhase.StartupProfiler, BootstrapPhase.SystemPromptFastPath, BootstrapPhase.ChromeMcpFastPath, BootstrapPhase.DaemonWorkerFastPath, BootstrapPhase.BridgeFastPath, BootstrapPhase.DaemonFastPath, BootstrapPhase.BackgroundSessionFastPath, BootstrapPhase.TemplateFastPath, BootstrapPhase.EnvironmentRunnerFastPath, BootstrapPhase.MainRuntime, ]); } /** * Matches original BootstrapPlan::from_phases() — deduplicates phases * while preserving order. */ static fromPhases(phases: BootstrapPhase[]): BootstrapPlan { const deduped: BootstrapPhase[] = []; for (const phase of phases) { if (!deduped.includes(phase)) { deduped.push(phase); } } return new BootstrapPlan(deduped); } phases(): BootstrapPhase[] { return [...this._phases]; } }