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