import type { PuzzleAgentSessionSnapshot } from '../../../packages/shared/src/contracts/puzzleAgentSession'; function hasText(value: string | null | undefined) { return typeof value === 'string' && value.trim().length > 0; } export function isPuzzleCompileActionReady( session: PuzzleAgentSessionSnapshot, ) { const draft = session.draft; if (!draft) { return false; } if (hasText(draft.coverImageSrc)) { return true; } return ( draft.levels?.some((level) => hasText(level.coverImageSrc)) === true ); }