/** * Pacing & Structure Analyzer (GAP-11 / SPEC-08) * * Queries the MCP SQLite database to compute tension-arc, POV balance, * chapter-length distribution, and derived pacing flags. */ import type { MCPClient } from '../core/database.js'; import type { ChapterTensionData, POVBalance, ChapterLengthData, PacingReport } from '../types/novel.js'; export declare class PacingAnalyzer { private readonly client; private readonly projectId; constructor(client: MCPClient, projectId: number); /** * Compute average tension per chapter using scenes.tension_level. * * SQL shape: { chapter_number, title, avg_tension, scene_count } */ analyzeTensionArc(): Promise; /** * Compute POV character distribution across all scenes. * * SQL shape: { character_name, scene_count } */ analyzePOVBalance(): Promise; /** * Compute word-count distribution per chapter and flag outliers. * * SQL shape: { chapter_number, title, word_count } * Flags: word_count > 2 * avg → 'long', < 0.5 * avg → 'short' */ analyzeChapterLengths(): Promise; /** * Generate a full pacing report combining all three analyses and derived flags. */ generateReport(): Promise; /** * Derive PacingFlag[] from the three data arrays. * * Rules: * - tension_dip : 3+ consecutive chapters with avg_tension < 4, * appearing after a chapter with avg_tension > 5 * - conflict_gap : 3+ consecutive chapters with avg_tension <= 3 * - pov_imbalance : any single character holds > 70% of scenes * - length_outlier: any chapter flagged 'long' or 'short' */ private deriveFlags; /** * Build an ASCII tension chart. * * Format per line: "Ch " * Scale: 10 blocks total; each █ = 1 tension point (clamped to [0, 10]). */ private buildAsciiChart; } //# sourceMappingURL=pacing-analyzer.d.ts.map