interface MinimalSubagentsShutdownCoordinator { waitForSettledOperations(): Promise; shutdownAfterSettling(): Promise; shutdown(): Promise; } interface MinimalSubagentsRootIdleGate { isRootIdle(): boolean; waitForRootIdle(): Promise; } /** Drain active child and root work before reload while preserving canceling shutdown elsewhere. */ export async function shutdownMinimalSubagentsSession( reason: string, coordinator: MinimalSubagentsShutdownCoordinator, rootIdleGate: MinimalSubagentsRootIdleGate, ): Promise { if (reason !== "reload") { await coordinator.shutdown(); return; } while (true) { if (!rootIdleGate.isRootIdle()) await rootIdleGate.waitForRootIdle(); await coordinator.waitForSettledOperations(); if (rootIdleGate.isRootIdle()) break; } await coordinator.shutdownAfterSettling(); }