/** * 方洞挑战创作 Agent 共享契约。 * 字段按 HTTP facade 的 camelCase DTO 命名,后端领域层 snake_case 字段由 facade 映射。 */ export type SquareHoleCreationStage = | 'collecting_config' | 'draft_ready' | string; export type SquareHoleAnchorStatus = | 'confirmed' | 'missing' | 'inferred' | string; export interface CreateSquareHoleSessionRequest { seedText?: string; themeText?: string; twistRule?: string; shapeCount?: number; difficulty?: number; } export interface SendSquareHoleMessageRequest { clientMessageId: string; text: string; quickFillRequested?: boolean; } export interface ExecuteSquareHoleActionRequest { action: string; gameName?: string; summary?: string; tags?: string[]; coverImageSrc?: string | null; regenerateVisualAssets?: boolean; visualAssetSlot?: 'cover' | 'background' | 'shape' | string | null; visualAssetOptionId?: string | null; } export interface SquareHoleShapeOption { optionId: string; shapeKind: string; label: string; targetHoleId: string; imagePrompt: string; imageSrc?: string | null; } export interface SquareHoleHoleOption { holeId: string; holeKind: string; label: string; imagePrompt: string; imageSrc?: string | null; } export interface SquareHoleAnchorItemResponse { key: string; label: string; value: string; status: SquareHoleAnchorStatus; } export interface SquareHoleAnchorPackResponse { theme: SquareHoleAnchorItemResponse; twistRule: SquareHoleAnchorItemResponse; shapeCount: SquareHoleAnchorItemResponse; difficulty: SquareHoleAnchorItemResponse; } export interface SquareHoleCreatorConfig { themeText: string; twistRule: string; shapeCount: number; difficulty: number; shapeOptions: SquareHoleShapeOption[]; holeOptions: SquareHoleHoleOption[]; backgroundPrompt: string; coverImageSrc?: string | null; backgroundImageSrc?: string | null; } export interface SquareHoleResultDraft { profileId: string; gameName: string; themeText: string; twistRule: string; summary: string; tags: string[]; coverImageSrc?: string | null; backgroundPrompt: string; backgroundImageSrc?: string | null; shapeOptions: SquareHoleShapeOption[]; holeOptions: SquareHoleHoleOption[]; shapeCount: number; difficulty: number; publishReady: boolean; blockers: string[]; } export interface SquareHoleAgentMessage { id: string; role: 'user' | 'assistant' | 'system' | string; kind: 'chat' | 'summary' | 'action_result' | 'warning' | string; text: string; createdAt: string; } export interface SquareHoleSessionSnapshot { sessionId: string; currentTurn: number; progressPercent: number; stage: SquareHoleCreationStage; anchorPack: SquareHoleAnchorPackResponse; config: SquareHoleCreatorConfig; draft?: SquareHoleResultDraft | null; messages: SquareHoleAgentMessage[]; lastAssistantReply?: string | null; publishedProfileId?: string | null; updatedAt: string; } export interface SquareHoleSessionResponse { session: SquareHoleSessionSnapshot; } export interface SquareHoleActionResponse { session: SquareHoleSessionSnapshot; }