| /** | |
| * Type definitions for the generation pipeline. | |
| */ | |
| import type { GenerationProgress } from '@/lib/types/generation'; | |
| // ==================== Agent Info ==================== | |
| /** Lightweight agent info passed to the generation pipeline */ | |
| export interface AgentInfo { | |
| id: string; | |
| name: string; | |
| role: string; | |
| persona?: string; | |
| } | |
| // ==================== Cross-Page Context ==================== | |
| /** Cross-page context for maintaining speech coherence across scenes */ | |
| export interface SceneGenerationContext { | |
| pageIndex: number; // Current page (1-based) | |
| totalPages: number; // Total number of pages | |
| allTitles: string[]; // All page titles in order | |
| previousSpeeches: string[]; // Speech texts from the previous page only | |
| } | |
| // ==================== Generated Slide Data Interface ==================== | |
| /** | |
| * AI-generated slide data structure | |
| * Used to parse AI responses | |
| */ | |
| export interface GeneratedSlideData { | |
| elements: Array<{ | |
| type: 'text' | 'image' | 'video' | 'shape' | 'chart' | 'latex' | 'line'; | |
| left: number; | |
| top: number; | |
| width: number; | |
| height: number; | |
| [key: string]: unknown; | |
| }>; | |
| background?: { | |
| type: 'solid' | 'gradient'; | |
| color?: string; | |
| gradient?: { | |
| type: 'linear' | 'radial'; | |
| colors: Array<{ pos: number; color: string }>; | |
| rotate: number; | |
| }; | |
| }; | |
| remark?: string; | |
| } | |
| // ==================== Types ==================== | |
| export interface GenerationResult<T> { | |
| success: boolean; | |
| data?: T; | |
| error?: string; | |
| } | |
| export interface GenerationCallbacks { | |
| onProgress?: (progress: GenerationProgress) => void; | |
| onStageComplete?: (stage: 1 | 2 | 3, result: unknown) => void; | |
| onError?: (error: string) => void; | |
| } | |
| export type AICallFn = ( | |
| systemPrompt: string, | |
| userPrompt: string, | |
| images?: Array<{ id: string; src: string }>, | |
| ) => Promise<string>; | |