export type ClassroomGenerationResumeMode = 'none' | 'scenes' | 'media'; /** * Published learner bundles are immutable course content. Even if a corrupt or * legacy cache unexpectedly carries outlines, opening it must never call the * scene/media generation pipeline. Authoring classrooms retain the historical * interrupted-generation recovery behavior. */ export function classroomGenerationResumeMode(input: { learnerMode: boolean; generationComplete: boolean; outlineOrders: readonly number[]; sceneOrders: readonly number[]; }): ClassroomGenerationResumeMode { if (input.learnerMode) return 'none'; const completedOrders = new Set(input.sceneOrders); const hasPendingScenes = !input.generationComplete && input.outlineOrders.some((order) => !completedOrders.has(order)); if (hasPendingScenes) return 'scenes'; return input.outlineOrders.length > 0 ? 'media' : 'none'; }