59 lines
1.4 KiB
TypeScript
59 lines
1.4 KiB
TypeScript
import type { JsonObject } from './common';
|
|
|
|
export type PuzzleAnchorStatus =
|
|
| 'missing'
|
|
| 'inferred'
|
|
| 'confirmed'
|
|
| 'locked';
|
|
|
|
export interface PuzzleAnchorItem {
|
|
key: string;
|
|
label: string;
|
|
value: string;
|
|
status: PuzzleAnchorStatus;
|
|
}
|
|
|
|
export interface PuzzleAnchorPack {
|
|
themePromise: PuzzleAnchorItem;
|
|
visualSubject: PuzzleAnchorItem;
|
|
visualMood: PuzzleAnchorItem;
|
|
compositionHooks: PuzzleAnchorItem;
|
|
tagsAndForbidden: PuzzleAnchorItem;
|
|
}
|
|
|
|
export interface PuzzleCreatorIntent {
|
|
sourceMode: 'agent_chat';
|
|
rawMessagesSummary: string;
|
|
themePromise: string;
|
|
visualSubject: string;
|
|
visualMood: string[];
|
|
compositionHooks: string[];
|
|
themeTags: string[];
|
|
forbiddenDirectives: string[];
|
|
}
|
|
|
|
export interface PuzzleGeneratedImageCandidate {
|
|
candidateId: string;
|
|
imageSrc: string;
|
|
assetId: string;
|
|
prompt: string;
|
|
actualPrompt?: string | null;
|
|
sourceType: 'generated' | 'uploaded';
|
|
selected: boolean;
|
|
}
|
|
|
|
export interface PuzzleResultDraft {
|
|
levelName: string;
|
|
summary: string;
|
|
themeTags: string[];
|
|
forbiddenDirectives: string[];
|
|
creatorIntent: PuzzleCreatorIntent | null;
|
|
anchorPack: PuzzleAnchorPack;
|
|
candidates: PuzzleGeneratedImageCandidate[];
|
|
selectedCandidateId: string | null;
|
|
coverImageSrc: string | null;
|
|
coverAssetId: string | null;
|
|
generationStatus: 'idle' | 'generating' | 'ready';
|
|
metadata?: JsonObject | null;
|
|
}
|