claude-presentation-master 7.4.0 → 8.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.mts CHANGED
@@ -19,12 +19,8 @@ interface PresentationConfig {
19
19
  format: OutputFormat[];
20
20
  /** Visual theme */
21
21
  theme?: ThemeName;
22
- /** Minimum QA score required (0-100, default: 95) */
22
+ /** Minimum QA score required (0-100, default: 80) */
23
23
  qaThreshold?: number;
24
- /** Maximum iterations for auto-fix loop (default: 5) */
25
- maxIterations?: number;
26
- /** Use iterative QA with 7-dimension scoring and auto-fix (default: true) */
27
- useIterativeQA?: boolean;
28
24
  /** Skip QA validation (NOT RECOMMENDED) */
29
25
  skipQA?: boolean;
30
26
  /** Presentation title */
@@ -146,9 +142,9 @@ interface VisualQAResults {
146
142
  /** Screenshots of each slide */
147
143
  screenshots: Buffer[];
148
144
  /** Per-slide visual scores */
149
- perSlide: SlideVisualScore[];
145
+ perSlide: SlideVisualScore$1[];
150
146
  }
151
- interface SlideVisualScore {
147
+ interface SlideVisualScore$1 {
152
148
  slideIndex: number;
153
149
  whitespace: number;
154
150
  balance: number;
@@ -348,6 +344,11 @@ interface ContentSection$1 {
348
344
  label: string;
349
345
  context?: string;
350
346
  }>;
347
+ /** Sub-sections for parent-child patterns (e.g., "Three Pillars" with 3 children) */
348
+ subSections?: Array<{
349
+ title: string;
350
+ content: string;
351
+ }>;
351
352
  }
352
353
  interface ContentAnalysis$1 {
353
354
  /** Detected presentation type */
@@ -505,8 +506,8 @@ interface StoryStructure {
505
506
  *
506
507
  * Features:
507
508
  * - KB-driven slide generation
508
- * - 7-dimension quality scoring
509
- * - Iterative auto-fix loop until threshold met
509
+ * - Visual quality evaluation (Playwright-based)
510
+ * - Honest scoring based on actual rendered output
510
511
  * - Comprehensive audit trail
511
512
  */
512
513
 
@@ -528,9 +529,9 @@ declare class PresentationEngine {
528
529
  */
529
530
  generate(config: PresentationConfig): Promise<PresentationResult>;
530
531
  /**
531
- * Build QA results structure from 7-dimension scoring.
532
+ * Build QA results structure from visual quality evaluation.
532
533
  */
533
- private buildQAResultsFrom7Dimension;
534
+ private buildQAResultsFromVisual;
534
535
  /**
535
536
  * Validate presentation configuration.
536
537
  */
@@ -634,7 +635,8 @@ declare class KnowledgeGateway {
634
635
  */
635
636
  getModeForType(type: PresentationType): 'keynote' | 'business';
636
637
  /**
637
- * Get word limits for the specified mode
638
+ * Get word limits for the specified mode.
639
+ * READS FROM KB - NO HARDCODED VALUES.
638
640
  */
639
641
  getWordLimits(mode: 'keynote' | 'business'): {
640
642
  min: number;
@@ -642,14 +644,16 @@ declare class KnowledgeGateway {
642
644
  ideal: number;
643
645
  };
644
646
  /**
645
- * Get bullet point limits
647
+ * Get bullet point limits.
648
+ * READS FROM KB - NO HARDCODED VALUES.
646
649
  */
647
650
  getBulletLimits(mode: 'keynote' | 'business'): {
648
651
  maxBullets: number;
649
652
  maxWordsPerBullet: number;
650
653
  };
651
654
  /**
652
- * Get whitespace percentage requirement
655
+ * Get whitespace percentage requirement.
656
+ * READS FROM KB - NO HARDCODED VALUES.
653
657
  */
654
658
  getWhitespaceRequirement(mode: 'keynote' | 'business'): number;
655
659
  /**
@@ -697,21 +701,24 @@ declare class KnowledgeGateway {
697
701
  */
698
702
  getExpertPrinciples(expertName: string): unknown;
699
703
  /**
700
- * Get Duarte's glance test requirements
704
+ * Get Duarte's glance test requirements.
705
+ * READS FROM KB - NO HARDCODED VALUES.
701
706
  */
702
707
  getDuarteGlanceTest(): {
703
708
  wordLimit: number;
704
709
  timeSeconds: number;
705
710
  };
706
711
  /**
707
- * Get Miller's Law constraints
712
+ * Get Miller's Law constraints.
713
+ * READS FROM KB - NO HARDCODED VALUES.
708
714
  */
709
715
  getMillersLaw(): {
710
716
  minItems: number;
711
717
  maxItems: number;
712
718
  };
713
719
  /**
714
- * Get cognitive load constraints
720
+ * Get cognitive load constraints.
721
+ * READS FROM KB - NO HARDCODED VALUES.
715
722
  */
716
723
  getCognitiveLoadLimits(): {
717
724
  maxItemsPerChunk: number;
@@ -810,6 +817,11 @@ declare class KnowledgeGateway {
810
817
  * Map a content pattern to the best allowed slide type.
811
818
  * CRITICAL: This is how SlideFactory decides which slide type to use.
812
819
  */
820
+ /**
821
+ * Map semantic slide types to structural types that SlideFactory can handle.
822
+ * This bridges the gap between KB's rich semantic types and code's structural types.
823
+ */
824
+ private normalizeToStructuralType;
813
825
  mapContentPatternToSlideType(pattern: {
814
826
  primaryPattern: string;
815
827
  hasBigNumber?: boolean;
@@ -821,6 +833,10 @@ declare class KnowledgeGateway {
821
833
  hasCode?: boolean;
822
834
  bulletCount?: number;
823
835
  }, allowedTypes: string[]): string;
836
+ /**
837
+ * Check if a structural type is allowed (directly or via semantic mapping)
838
+ */
839
+ private isTypeAllowed;
824
840
  /**
825
841
  * Get a specific slide template by name from the KB.
826
842
  */
@@ -948,6 +964,11 @@ interface ContentSection {
948
964
  label: string;
949
965
  context?: string;
950
966
  }>;
967
+ /** Sub-sections for parent-child patterns (e.g., "Three Pillars" with 3 children) */
968
+ subSections?: Array<{
969
+ title: string;
970
+ content: string;
971
+ }>;
951
972
  }
952
973
  interface ContentAnalysis {
953
974
  detectedType: PresentationType;
@@ -1009,6 +1030,11 @@ declare class ContentAnalyzer {
1009
1030
  * Extract sections from content (headers, bullets, content)
1010
1031
  */
1011
1032
  private extractSections;
1033
+ /**
1034
+ * Combine parent sections with their child sub-sections.
1035
+ * Detects patterns like "Three Pillars" + 3 child sections and merges them.
1036
+ */
1037
+ private combineParentChildSections;
1012
1038
  /**
1013
1039
  * Extract SCQA structure (Barbara Minto)
1014
1040
  * CRITICAL: Answer must be clean prose, NOT bullet points
@@ -1071,26 +1097,32 @@ declare class ContentAnalyzer {
1071
1097
  }
1072
1098
 
1073
1099
  /**
1074
- * SlideFactory - 100% KB-Driven Slide Creation (v7.1.0)
1100
+ * SlideFactory - Expert-Driven Slide Creation (v8.0.0)
1101
+ *
1102
+ * PARADIGM SHIFT: This factory doesn't just TRUNCATE content to fit slides.
1103
+ * It CRAFTS world-class slides using expert principles from the KB.
1104
+ *
1105
+ * v8.0.0 introduces ExpertGuidanceEngine integration:
1106
+ * - Nancy Duarte: Sparkline narrative, STAR moments, Glance Test
1107
+ * - Chris Anderson: One Idea Worth Spreading, Gift Giving
1108
+ * - Carmine Gallo: Rule of Three, Headline Test
1109
+ * - Garr Reynolds: Signal to Noise, Amplification Through Simplification
1110
+ * - Edward Tufte: Data-Ink Ratio
1111
+ * - Cole Knaflic: Context Creates Meaning
1112
+ * - Barbara Minto: Pyramid Principle, SCQA, Answer First
1075
1113
  *
1076
- * CRITICAL: This factory creates slides using ONLY the Knowledge Base.
1077
- * ZERO hardcoded values. Every string and number comes from KB queries.
1114
+ * Content is CRAFTED by:
1115
+ * 1. Understanding the slide's PURPOSE (from ExpertGuidanceEngine)
1116
+ * 2. Extracting the CORE INSIGHT (not just first N words)
1117
+ * 3. Applying expert PRINCIPLES (not just word limits)
1118
+ * 4. Creating slides that MOVE people (not just fit in boxes)
1078
1119
  *
1079
- * All decisions flow from:
1120
+ * All configuration from KB:
1080
1121
  * - kb.getSlideDefaults(type) → structural slide titles/labels
1081
- * - kb.getSCQATitles(type) → SCQA framework titles
1082
- * - kb.getSparklineTitles(type) → Sparkline framework titles
1083
1122
  * - kb.getValidationRules(type) → word limits, bullet limits
1084
- * - kb.getAllowedSlideTypes(type)which slide types can be used
1085
- * - kb.getInsightMarkers() → action title detection
1086
- * - kb.getTypographyForType(type) → font specifications
1087
- * - kb.getRecommendedPalette(type) → color palette
1088
- * - kb.getAntiPatternsForType(type) → what to avoid
1089
- * - kb.getRequiredElements(type) → mandatory slides
1090
- * - kb.getDuarteGlanceTest() → 3-second test limits
1091
- * - kb.getMillersLaw() → 7±2 items rule
1123
+ * - ExpertGuidanceEngineprinciples for excellence
1092
1124
  *
1093
- * @version 7.1.0
1125
+ * @version 8.0.0
1094
1126
  */
1095
1127
 
1096
1128
  /**
@@ -1104,6 +1136,8 @@ declare class SlideFactory {
1104
1136
  private kb;
1105
1137
  private presentationType;
1106
1138
  private classifier;
1139
+ private expertEngine;
1140
+ private narrativeArc;
1107
1141
  private config;
1108
1142
  private usedContent;
1109
1143
  private usedTitles;
@@ -1128,11 +1162,30 @@ declare class SlideFactory {
1128
1162
  private createTimelineSlide;
1129
1163
  private createProcessSlide;
1130
1164
  private createThreeColumnSlide;
1165
+ /**
1166
+ * Create a three-points slide for exactly 3 key points.
1167
+ * Used for content that fits the "rule of three" (Carmine Gallo).
1168
+ */
1169
+ private createThreePointsSlide;
1131
1170
  private createTwoColumnSlide;
1132
1171
  private createQuoteSlide;
1133
1172
  private createMetricsGridSlide;
1134
1173
  private createBulletSlide;
1135
1174
  private createSingleStatementSlide;
1175
+ /**
1176
+ * Create a title impact slide - emphasized statement with key takeaway.
1177
+ * Used for section headers with strong conclusions.
1178
+ */
1179
+ private createTitleImpactSlide;
1180
+ /**
1181
+ * Create a data insight slide - for presenting key findings with context.
1182
+ * Similar to big-number but works even without a prominent metric.
1183
+ */
1184
+ private createDataInsightSlide;
1185
+ /**
1186
+ * Create a detailed findings slide - bullet points with introductory context.
1187
+ */
1188
+ private createDetailedFindingsSlide;
1136
1189
  private createCodeSlide;
1137
1190
  private createCTASlide;
1138
1191
  private validateAndFixSlides;
@@ -1144,6 +1197,46 @@ declare class SlideFactory {
1144
1197
  * Check for anti-patterns from KB
1145
1198
  */
1146
1199
  private checkAntiPatterns;
1200
+ /**
1201
+ * Craft content using expert principles - NOT truncation.
1202
+ *
1203
+ * The old approach: "Take 100 words, chop to 15, add ellipsis"
1204
+ * The new approach: "What would Nancy Duarte say is the ONE thing to remember?"
1205
+ *
1206
+ * @param content - The raw content to craft from
1207
+ * @param slideType - The type of slide being created
1208
+ * @param maxWords - Word budget from KB
1209
+ * @returns Expertly crafted content that serves the slide's purpose
1210
+ */
1211
+ private craftExpertContent;
1212
+ /**
1213
+ * Chris Anderson's "One Idea Worth Spreading"
1214
+ * Extract the single most valuable insight from content.
1215
+ */
1216
+ private extractCoreIdea;
1217
+ /**
1218
+ * Extract the key phrase from a sentence - the part that matters most.
1219
+ */
1220
+ private extractKeyPhrase;
1221
+ /**
1222
+ * Nancy Duarte's "STAR Moment" - Something They'll Always Remember
1223
+ * Find the most dramatic, unexpected element.
1224
+ */
1225
+ private extractDramaticElement;
1226
+ /**
1227
+ * Edward Tufte / Cole Knaflic - Extract data insight with context
1228
+ */
1229
+ private extractDataInsight;
1230
+ /**
1231
+ * Garr Reynolds - Signal to Noise
1232
+ * Extract the ONE insight, eliminate everything else.
1233
+ */
1234
+ private extractSingleInsight;
1235
+ /**
1236
+ * Chris Anderson - Gift Giving
1237
+ * What can they DO tomorrow?
1238
+ */
1239
+ private extractActionableStep;
1147
1240
  /**
1148
1241
  * Create a title for a slide - uses action titles for business mode per KB
1149
1242
  */
@@ -1486,261 +1579,100 @@ declare class QAEngine {
1486
1579
  }
1487
1580
 
1488
1581
  /**
1489
- * Seven-Dimension Presentation Scorer
1582
+ * VisualQualityEvaluator - Evaluates presentations like a human expert.
1583
+ *
1584
+ * THIS IS NOT A LINTER. This evaluates:
1585
+ * - Is this slide visually compelling?
1586
+ * - Does the presentation tell a coherent story?
1587
+ * - Would an executive be impressed?
1588
+ * - Does it look like McKinsey made it?
1490
1589
  *
1491
- * Comprehensive scoring across all quality dimensions using Knowledge Base rules.
1492
- * Each dimension scored 0-100, overall score is weighted average.
1590
+ * Uses Playwright to render and screenshot each slide, then evaluates
1591
+ * the ACTUAL visual output, not just data structures.
1493
1592
  *
1494
- * Dimensions:
1495
- * 1. Layout (15%) - Whitespace, visual balance, slide structure
1496
- * 2. Contrast (15%) - WCAG compliance, text readability
1497
- * 3. Graphics (10%) - Image quality, placement, relevance
1498
- * 4. Content (20%) - Word limits, bullet counts, structure
1499
- * 5. Clarity (15%) - Message focus, information density
1500
- * 6. Effectiveness (15%) - Expert methodology compliance
1501
- * 7. Consistency (10%) - Style uniformity, design coherence
1593
+ * @version 9.0.0
1502
1594
  */
1503
-
1504
- interface DimensionScore {
1505
- name: string;
1506
- score: number;
1507
- weight: number;
1508
- issues: DimensionIssue[];
1509
- details: Record<string, unknown>;
1510
- }
1511
- interface DimensionIssue {
1595
+ interface SlideVisualScore {
1512
1596
  slideIndex: number;
1513
- dimension: string;
1514
- severity: 'error' | 'warning' | 'info';
1515
- message: string;
1516
- currentValue?: unknown;
1517
- expectedValue?: unknown;
1518
- autoFixable: boolean;
1519
- fixSuggestion?: string;
1520
- }
1521
- interface SevenDimensionResult {
1597
+ slideType: string;
1598
+ visualImpact: number;
1599
+ visualImpactNotes: string;
1600
+ contentClarity: number;
1601
+ contentClarityNotes: string;
1602
+ professionalPolish: number;
1603
+ professionalPolishNotes: string;
1604
+ themeCoherence: number;
1605
+ themeCoherenceNotes: string;
1606
+ totalScore: number;
1607
+ screenshotPath?: string;
1608
+ }
1609
+ interface PresentationQualityScore {
1522
1610
  overallScore: number;
1523
- dimensions: {
1524
- layout: DimensionScore;
1525
- contrast: DimensionScore;
1526
- graphics: DimensionScore;
1527
- content: DimensionScore;
1528
- clarity: DimensionScore;
1529
- effectiveness: DimensionScore;
1530
- consistency: DimensionScore;
1611
+ narrativeFlow: {
1612
+ score: number;
1613
+ hasStrongOpening: boolean;
1614
+ hasCompellingMiddle: boolean;
1615
+ hasMemorableClose: boolean;
1616
+ storyArcComplete: boolean;
1617
+ notes: string;
1531
1618
  };
1532
- issues: DimensionIssue[];
1533
- passed: boolean;
1534
- threshold: number;
1535
- }
1536
- declare class SevenDimensionScorer {
1537
- private kb;
1538
- private mode;
1539
- private presentationType;
1540
- constructor(mode: 'keynote' | 'business', presentationType: PresentationType);
1541
- /**
1542
- * Score a presentation across all 7 dimensions.
1543
- */
1544
- score(slides: Slide[], html: string, threshold?: number): Promise<SevenDimensionResult>;
1545
- /**
1546
- * Score layout dimension (whitespace, visual balance, structure)
1547
- */
1548
- private scoreLayout;
1549
- /**
1550
- * Score contrast dimension (WCAG compliance, readability)
1551
- */
1552
- private scoreContrast;
1553
- /**
1554
- * Score graphics dimension (images, placement, relevance)
1555
- */
1556
- private scoreGraphics;
1557
- /**
1558
- * Score content dimension (word limits, bullet counts, structure)
1559
- * This is critical - must use KB rules exactly.
1560
- */
1561
- private scoreContent;
1562
- /**
1563
- * Score clarity dimension (message focus, information density)
1564
- */
1565
- private scoreClarity;
1566
- /**
1567
- * Score effectiveness dimension (expert methodology compliance)
1568
- */
1569
- private scoreEffectiveness;
1570
- /**
1571
- * Score consistency dimension (style uniformity, design coherence)
1572
- */
1573
- private scoreConsistency;
1574
- /**
1575
- * Count words in a slide.
1576
- */
1577
- private countWords;
1578
- /**
1579
- * Get a formatted report of the scoring results.
1580
- */
1581
- formatReport(result: SevenDimensionResult): string;
1582
- }
1583
-
1584
- /**
1585
- * AutoFix Engine
1586
- *
1587
- * KB-driven automatic fixing of presentation issues.
1588
- * Uses Knowledge Base rules to determine correct values and apply fixes.
1589
- *
1590
- * Key Principles:
1591
- * 1. All fixes are driven by KB rules, not hardcoded values
1592
- * 2. Fixes are applied to slide data, not raw HTML (for reliability)
1593
- * 3. Each fix is logged for transparency
1594
- * 4. Only auto-fixable issues are addressed
1595
- */
1596
-
1597
- interface FixResult {
1598
- slideIndex: number;
1599
- dimension: string;
1600
- originalValue: unknown;
1601
- newValue: unknown;
1602
- description: string;
1603
- applied: boolean;
1604
- }
1605
- interface AutoFixResult {
1606
- slidesFixed: Slide[];
1607
- fixesApplied: FixResult[];
1608
- fixesSkipped: FixResult[];
1609
- summary: string;
1610
- }
1611
- declare class AutoFixEngine {
1612
- private kb;
1613
- private mode;
1614
- private presentationType;
1615
- constructor(mode: 'keynote' | 'business', presentationType: PresentationType);
1616
- /**
1617
- * Apply automatic fixes to slides based on scoring results.
1618
- */
1619
- fix(slides: Slide[], scoringResult: SevenDimensionResult): Promise<AutoFixResult>;
1620
- /**
1621
- * Apply a single fix based on the issue.
1622
- */
1623
- private applyFix;
1624
- /**
1625
- * Fix content-related issues (word count, bullet count).
1626
- */
1627
- private fixContentIssue;
1628
- /**
1629
- * Fix clarity-related issues (key message length, title length).
1630
- */
1631
- private fixClarityIssue;
1632
- /**
1633
- * Fix layout-related issues.
1634
- */
1635
- private fixLayoutIssue;
1636
- /**
1637
- * Fix consistency-related issues.
1638
- */
1639
- private fixConsistencyIssue;
1640
- /**
1641
- * Fix contrast-related issues.
1642
- * Note: These are CSS fixes, typically handled at generation time.
1643
- */
1644
- private fixContrastIssue;
1645
- /**
1646
- * Condense text to approximately maxWords.
1647
- * Uses smart truncation that preserves meaning.
1648
- */
1649
- private condenseText;
1650
- /**
1651
- * Convert text to Title Case.
1652
- */
1653
- private toTitleCase;
1654
- /**
1655
- * Count words in a slide.
1656
- */
1657
- private countWords;
1658
- /**
1659
- * Count elements in a slide.
1660
- */
1661
- private countElements;
1662
- /**
1663
- * Generate a summary of fixes applied.
1664
- */
1665
- private generateSummary;
1666
- }
1667
- /**
1668
- * Create an AutoFixEngine instance.
1669
- */
1670
- declare function createAutoFixEngine(mode: 'keynote' | 'business', presentationType: PresentationType): AutoFixEngine;
1671
-
1672
- /**
1673
- * Iterative QA Engine
1674
- *
1675
- * Orchestrates the generate-score-fix-regenerate loop until quality threshold is met.
1676
- * This is the core integration that makes the NPM tool self-correcting.
1677
- *
1678
- * Process:
1679
- * 1. Generate initial presentation
1680
- * 2. Score across 7 dimensions
1681
- * 3. If score < threshold AND iterations < max:
1682
- * a. Apply auto-fixes to slides
1683
- * b. Regenerate HTML
1684
- * c. Re-score
1685
- * d. Repeat until threshold met or max iterations
1686
- * 4. Return final result with full audit trail
1687
- */
1688
-
1689
- interface IterationRecord {
1690
- iteration: number;
1691
- score: number;
1692
- dimensionScores: {
1693
- layout: number;
1694
- contrast: number;
1695
- graphics: number;
1696
- content: number;
1697
- clarity: number;
1698
- effectiveness: number;
1699
- consistency: number;
1619
+ visualConsistency: {
1620
+ score: number;
1621
+ colorPaletteConsistent: boolean;
1622
+ typographyConsistent: boolean;
1623
+ layoutPatternsConsistent: boolean;
1624
+ professionalLook: boolean;
1625
+ notes: string;
1700
1626
  };
1701
- fixesApplied: number;
1702
- timestamp: Date;
1703
- }
1704
- interface IterativeQAResult {
1705
- finalScore: number;
1706
- passed: boolean;
1707
- threshold: number;
1708
- iterations: IterationRecord[];
1709
- totalIterations: number;
1710
- maxIterations: number;
1711
- slides: Slide[];
1712
- html: string;
1713
- finalScoring: SevenDimensionResult;
1714
- autoFixSummary: string;
1715
- report: string;
1716
- }
1717
- interface IterativeQAOptions {
1718
- minScore: number;
1719
- maxIterations: number;
1720
- verbose: boolean;
1627
+ contentQuality: {
1628
+ score: number;
1629
+ messagesAreClear: boolean;
1630
+ appropriateDepth: boolean;
1631
+ noOverload: boolean;
1632
+ actionableInsights: boolean;
1633
+ notes: string;
1634
+ };
1635
+ executiveReadiness: {
1636
+ score: number;
1637
+ wouldImpress: boolean;
1638
+ readyForBoardroom: boolean;
1639
+ compelling: boolean;
1640
+ shareworthy: boolean;
1641
+ notes: string;
1642
+ };
1643
+ slideScores: SlideVisualScore[];
1644
+ verdict: 'world-class' | 'professional' | 'acceptable' | 'needs-work' | 'poor';
1645
+ verdictExplanation: string;
1646
+ topIssues: string[];
1647
+ topStrengths: string[];
1721
1648
  }
1722
- declare class IterativeQAEngine {
1723
- private kb;
1724
- private scorer;
1725
- private fixer;
1726
- private generator;
1727
- private mode;
1728
- private presentationType;
1729
- private config;
1730
- constructor(mode: 'keynote' | 'business', presentationType: PresentationType, config: PresentationConfig);
1731
- /**
1732
- * Run the iterative QA process.
1733
- */
1734
- run(initialSlides: Slide[], initialHtml: string, options?: Partial<IterativeQAOptions>): Promise<IterativeQAResult>;
1649
+ declare class VisualQualityEvaluator {
1650
+ private browser;
1651
+ private page;
1652
+ private screenshotDir;
1653
+ constructor(screenshotDir?: string);
1735
1654
  /**
1736
- * Generate a comprehensive report.
1655
+ * Evaluate a presentation's visual quality.
1656
+ * This opens the HTML in a real browser and evaluates each slide.
1737
1657
  */
1738
- private generateReport;
1739
- }
1740
- /**
1741
- * Create an IterativeQAEngine instance.
1742
- */
1743
- declare function createIterativeQAEngine(mode: 'keynote' | 'business', presentationType: PresentationType, config: PresentationConfig): IterativeQAEngine;
1658
+ evaluate(htmlPath: string): Promise<PresentationQualityScore>;
1659
+ private launchBrowser;
1660
+ private closeBrowser;
1661
+ private getSlideCount;
1662
+ private evaluateSlide;
1663
+ private scoreSlide;
1664
+ private inferSlideType;
1665
+ private evaluateNarrativeFlow;
1666
+ private evaluateVisualConsistency;
1667
+ private evaluateContentQuality;
1668
+ private evaluateExecutiveReadiness;
1669
+ private determineVerdict;
1670
+ private explainVerdict;
1671
+ private extractTopIssuesAndStrengths;
1672
+ generateReport(result: PresentationQualityScore): string;
1673
+ private scoreBar;
1674
+ }
1675
+ declare function evaluatePresentation(htmlPath: string, screenshotDir?: string): Promise<PresentationQualityScore>;
1744
1676
 
1745
1677
  /**
1746
1678
  * Reveal.js Generator - HTML Presentation Output
@@ -2178,17 +2110,22 @@ declare function generate(config: PresentationConfig): Promise<PresentationResul
2178
2110
  * @param options - Validation options
2179
2111
  * @returns QA validation results
2180
2112
  */
2181
- declare function validate(presentation: string | Buffer, options?: {
2182
- mode?: 'keynote' | 'business';
2113
+ /**
2114
+ * Validate an existing HTML presentation using visual quality evaluation.
2115
+ * This uses Playwright to render the presentation and evaluate it visually.
2116
+ *
2117
+ * @param htmlPath - Path to the HTML presentation file
2118
+ * @param options - Validation options
2119
+ * @returns Visual quality evaluation results
2120
+ */
2121
+ declare function validate(htmlPath: string, options?: {
2122
+ screenshotDir?: string;
2183
2123
  threshold?: number;
2184
- strictMode?: boolean;
2185
- }): Promise<QAResults & {
2186
- score: number;
2187
- }>;
2124
+ }): Promise<PresentationQualityScore>;
2188
2125
  /**
2189
2126
  * Get the version of the package.
2190
2127
  */
2191
- declare const VERSION = "7.1.0";
2128
+ declare const VERSION = "9.0.0";
2192
2129
  /**
2193
2130
  * Default export for convenience.
2194
2131
  */
@@ -2200,4 +2137,4 @@ declare const _default: {
2200
2137
  VERSION: string;
2201
2138
  };
2202
2139
 
2203
- export { type AccessibilityResults, AutoFixEngine, type AutoFixResult, type ChartData, type ChartDataset, ChartJsProvider, type ChartProvider, type ChartRequest, type ChartResult, type ChartType, type ColorPalette, CompositeChartProvider, CompositeImageProvider, type ContentAnalysis$1 as ContentAnalysis, ContentAnalyzer, type ContentPattern, ContentPatternClassifier, type ContentQAResults, type ContentSection$1 as ContentSection, type ContrastIssue, type DimensionIssue, type DimensionScore, type ExpertQAResults, type ExpertValidation, type FixResult, type FontSizeIssue, type GlanceTestResult, type ImageData, type ImageProvider, type ImageRequest, type ImageResult, type IterationRecord, IterativeQAEngine, type IterativeQAOptions, type IterativeQAResult, KnowledgeGateway, type LegacySlide, LocalImageProvider, MermaidProvider, type MetricData, type OneIdeaResult, type OutputFormat, PlaceholderImageProvider, PowerPointGenerator, type PresentationConfig, PresentationEngine, type PresentationMetadata, type PresentationMode$1 as PresentationMode, type PresentationResult, type PresentationType, QAEngine, QAFailureError, type QAIssue, type QAResults, QuickChartProvider, RevealJsGenerator, type SCQAStructure, ScoreCalculator, type ScoringWeights, type SevenDimensionQAResult, type SevenDimensionResult, SevenDimensionScorer, type SignalNoiseResult, type Slide, type SlideContentScore, type SlideData, SlideFactory, SlideGenerator, type SlideTemplate, type SlideType, type SlideValidationResult, type SlideVisualScore, type SparklineStructure, type StoryStructure, TemplateEngine, TemplateNotFoundError, type ThemeName, type TypographyRules, UnsplashImageProvider, VERSION, ValidationError, type ValidationRules, type VisualQAResults, createAutoFixEngine, createDefaultChartProvider, createDefaultImageProvider, createIterativeQAEngine, createSlideFactory, _default as default, generate, getKnowledgeGateway, initSlideGenerator, validate };
2140
+ export { type AccessibilityResults, type ChartData, type ChartDataset, ChartJsProvider, type ChartProvider, type ChartRequest, type ChartResult, type ChartType, type ColorPalette, CompositeChartProvider, CompositeImageProvider, type ContentAnalysis$1 as ContentAnalysis, ContentAnalyzer, type ContentPattern, ContentPatternClassifier, type ContentQAResults, type ContentSection$1 as ContentSection, type ContrastIssue, type ExpertQAResults, type ExpertValidation, type FontSizeIssue, type GlanceTestResult, type ImageData, type ImageProvider, type ImageRequest, type ImageResult, KnowledgeGateway, type LegacySlide, LocalImageProvider, MermaidProvider, type MetricData, type OneIdeaResult, type OutputFormat, PlaceholderImageProvider, PowerPointGenerator, type PresentationConfig, PresentationEngine, type PresentationMetadata, type PresentationMode$1 as PresentationMode, type PresentationQualityScore, type PresentationResult, type PresentationType, QAEngine, QAFailureError, type QAIssue, type QAResults, QuickChartProvider, RevealJsGenerator, type SCQAStructure, ScoreCalculator, type ScoringWeights, type SevenDimensionQAResult, type SignalNoiseResult, type Slide, type SlideContentScore, type SlideData, SlideFactory, SlideGenerator, type SlideTemplate, type SlideType, type SlideValidationResult, type SlideVisualScore, type SparklineStructure, type StoryStructure, TemplateEngine, TemplateNotFoundError, type ThemeName, type TypographyRules, UnsplashImageProvider, VERSION, ValidationError, type ValidationRules, type VisualQAResults, VisualQualityEvaluator, createDefaultChartProvider, createDefaultImageProvider, createSlideFactory, _default as default, evaluatePresentation, generate, getKnowledgeGateway, initSlideGenerator, validate };