/** * Scene Builder * Manages scenes embedded in chapter markdown files using HTML comment markers */ import type { SceneBeat } from '../types/novel.js'; export type EmotionalBeat = 'hopeful' | 'determined' | 'fearful' | 'angry' | 'grieving' | 'joyful' | 'confused' | 'resigned' | 'transformed' | 'neutral' | 'tense' | 'melancholic'; export interface SceneMetadata { sceneNumber: number; title?: string; pov?: string; location?: string; timeOfDay?: string; purpose?: string; emotionalTone?: string; tensionLevel?: number; emotionalBeat?: EmotionalBeat; /** Parsed from `` */ characterStates?: Array<{ name: string; state: string; }>; /** AI-generated beats for this scene, stored as comments */ beats?: SceneBeat[]; } export interface SceneContent { metadata: SceneMetadata; content: string; startIndex: number; endIndex: number; } export interface SceneBuilderOptions { chapterFilePath: string; } export declare class SceneBuilder { private chapterFilePath; constructor(options: SceneBuilderOptions); /** * Add new scene to chapter at specified position */ addScene(sceneData: Omit & { insertAfterScene?: number; }, content?: string): Promise; /** * Parse all scenes from chapter file */ parseScenes(): Promise; /** * Parse scenes from content string (internal helper) */ private parseScenesFromContent; /** * Parse scene metadata from HTML comments */ private parseSceneMetadata; /** * Update scene metadata */ updateSceneMetadata(sceneNumber: number, updates: Partial>): Promise; /** * Delete scene from chapter */ deleteScene(sceneNumber: number): Promise; /** * Reorder scenes in chapter */ reorderScenes(newOrder: number[]): Promise; /** * Count words in scene (excluding markers and metadata) */ countSceneWords(sceneContent: string): number; /** * Get scene statistics */ getSceneStats(): Promise<{ totalScenes: number; totalWords: number; averageWordsPerScene: number; scenes: Array<{ sceneNumber: number; wordCount: number; }>; }>; /** * Generate scene marker with metadata */ private generateSceneMarker; /** * Write AI-generated beats into a scene's metadata block. * Replaces any existing beats for that scene number. */ writeBeats(sceneNumber: number, beats: SceneBeat[]): Promise; /** * Remove all beats from a scene's metadata block. */ clearBeats(sceneNumber: number): Promise; /** * Renumber scenes after deletion */ private renumberScenes; /** * Read chapter file with error handling */ private readChapterFile; /** * Validate scene metadata */ validate(metadata: Partial): string[]; } //# sourceMappingURL=scene-builder.d.ts.map