claude-presentation-master 8.0.0 → 8.2.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/bin/cli.js +70 -8
- package/dist/index.d.mts +75 -10
- package/dist/index.d.ts +75 -10
- package/dist/index.js +670 -180
- package/dist/index.mjs +670 -180
- package/package.json +1 -1
package/bin/cli.js
CHANGED
|
@@ -20,7 +20,7 @@ const args = process.argv.slice(2);
|
|
|
20
20
|
|
|
21
21
|
// Help text
|
|
22
22
|
const helpText = `
|
|
23
|
-
Claude Presentation Master
|
|
23
|
+
Claude Presentation Master v8.1.0
|
|
24
24
|
Generate world-class presentations using expert methodologies
|
|
25
25
|
|
|
26
26
|
100% FREE • Zero API Keys • Runs Locally • KB-Driven Quality
|
|
@@ -30,11 +30,16 @@ USAGE:
|
|
|
30
30
|
cpm <command> [options]
|
|
31
31
|
|
|
32
32
|
COMMANDS:
|
|
33
|
-
generate
|
|
33
|
+
generate [input] Generate presentation (auto-detects file if omitted)
|
|
34
34
|
validate <file> Validate an existing HTML presentation
|
|
35
35
|
visual-qa <file> Run HIGH-LEVEL visual quality evaluation (Playwright)
|
|
36
36
|
info Show package information
|
|
37
37
|
|
|
38
|
+
AUTO-DETECTION:
|
|
39
|
+
If no input file is specified, the CLI scans your current directory for:
|
|
40
|
+
- Priority files: README.md, content.md, presentation.md, slides.md, pitch.md
|
|
41
|
+
- Any .md, .txt, .json, .yaml file
|
|
42
|
+
|
|
38
43
|
OPTIONS:
|
|
39
44
|
-o, --output <dir> Output directory (default: ./output)
|
|
40
45
|
-m, --mode <mode> Presentation mode: keynote or business (default: keynote)
|
|
@@ -55,17 +60,20 @@ OPTIONS:
|
|
|
55
60
|
-v, --version Show version number
|
|
56
61
|
|
|
57
62
|
EXAMPLES:
|
|
58
|
-
#
|
|
63
|
+
# Auto-detect content in current directory
|
|
64
|
+
npx claude-presentation-master generate
|
|
65
|
+
|
|
66
|
+
# Or specify a file
|
|
59
67
|
npx claude-presentation-master generate notes.md -m keynote -f html
|
|
60
68
|
|
|
61
69
|
# Generate consulting deck as PowerPoint
|
|
62
70
|
cpm generate strategy.md -m business --type consulting_deck -f pptx
|
|
63
71
|
|
|
64
72
|
# Investment banking pitchbook
|
|
65
|
-
cpm generate
|
|
73
|
+
cpm generate --type investment_banking -f pptx -o ./pitchbook
|
|
66
74
|
|
|
67
75
|
# Generate both formats
|
|
68
|
-
cpm generate
|
|
76
|
+
cpm generate -f html,pptx -o ./slides
|
|
69
77
|
|
|
70
78
|
# Validate an existing presentation
|
|
71
79
|
cpm validate output/presentation.html -m keynote
|
|
@@ -89,7 +97,7 @@ For more information: https://github.com/Stuinfla/claude-presentation-master
|
|
|
89
97
|
`;
|
|
90
98
|
|
|
91
99
|
// Version
|
|
92
|
-
const version = '
|
|
100
|
+
const version = '8.1.0';
|
|
93
101
|
|
|
94
102
|
// Parse arguments
|
|
95
103
|
function parseArgs(args) {
|
|
@@ -194,6 +202,49 @@ function parseArgs(args) {
|
|
|
194
202
|
return options;
|
|
195
203
|
}
|
|
196
204
|
|
|
205
|
+
/**
|
|
206
|
+
* Auto-detect a content file in the given directory.
|
|
207
|
+
* Prioritizes: README.md, content.md, presentation.md, then any .md, .txt, .json, .yaml
|
|
208
|
+
*/
|
|
209
|
+
function autoDetectContentFile(directory) {
|
|
210
|
+
const contentExtensions = ['.md', '.markdown', '.txt', '.json', '.yaml', '.yml'];
|
|
211
|
+
const priorityFiles = [
|
|
212
|
+
'README.md', 'readme.md',
|
|
213
|
+
'content.md', 'Content.md',
|
|
214
|
+
'presentation.md', 'Presentation.md',
|
|
215
|
+
'slides.md', 'Slides.md',
|
|
216
|
+
'pitch.md', 'Pitch.md',
|
|
217
|
+
'deck.md', 'Deck.md'
|
|
218
|
+
];
|
|
219
|
+
|
|
220
|
+
// First, check for priority files
|
|
221
|
+
for (const file of priorityFiles) {
|
|
222
|
+
const filePath = join(directory, file);
|
|
223
|
+
if (existsSync(filePath)) {
|
|
224
|
+
return file;
|
|
225
|
+
}
|
|
226
|
+
}
|
|
227
|
+
|
|
228
|
+
// Then scan for any content file
|
|
229
|
+
try {
|
|
230
|
+
const files = readdirSync(directory);
|
|
231
|
+
for (const file of files) {
|
|
232
|
+
const ext = extname(file).toLowerCase();
|
|
233
|
+
if (contentExtensions.includes(ext)) {
|
|
234
|
+
// Skip node_modules, hidden files, package files
|
|
235
|
+
if (file.startsWith('.') || file.startsWith('_')) continue;
|
|
236
|
+
if (file === 'package.json' || file === 'package-lock.json') continue;
|
|
237
|
+
if (file === 'tsconfig.json' || file === 'jest.config.js') continue;
|
|
238
|
+
return file;
|
|
239
|
+
}
|
|
240
|
+
}
|
|
241
|
+
} catch (e) {
|
|
242
|
+
// Directory not readable
|
|
243
|
+
}
|
|
244
|
+
|
|
245
|
+
return null;
|
|
246
|
+
}
|
|
247
|
+
|
|
197
248
|
// Determine content type from file extension
|
|
198
249
|
function getContentType(filename) {
|
|
199
250
|
const ext = extname(filename).toLowerCase();
|
|
@@ -293,8 +344,19 @@ Usage:
|
|
|
293
344
|
process.exit(1);
|
|
294
345
|
}
|
|
295
346
|
|
|
296
|
-
//
|
|
297
|
-
if (!options.input) {
|
|
347
|
+
// Auto-detect input file if not specified
|
|
348
|
+
if (!options.input && options.command === 'generate') {
|
|
349
|
+
const detected = autoDetectContentFile(process.cwd());
|
|
350
|
+
if (detected) {
|
|
351
|
+
options.input = detected;
|
|
352
|
+
console.log(`📁 Auto-detected: ${detected}`);
|
|
353
|
+
} else {
|
|
354
|
+
console.error(`Error: No content file found in current directory.`);
|
|
355
|
+
console.error(`Looked for: *.md, *.txt, *.json, *.yaml, *.yml`);
|
|
356
|
+
console.error(`\nEither create a content file or specify one: cpm generate <file>`);
|
|
357
|
+
process.exit(1);
|
|
358
|
+
}
|
|
359
|
+
} else if (!options.input) {
|
|
298
360
|
console.error(`Error: No input file specified for "${options.command}" command.`);
|
|
299
361
|
process.exit(1);
|
|
300
362
|
}
|
package/dist/index.d.mts
CHANGED
|
@@ -127,6 +127,26 @@ interface QAResults {
|
|
|
127
127
|
passed: boolean;
|
|
128
128
|
/** List of issues found */
|
|
129
129
|
issues: QAIssue[];
|
|
130
|
+
/** Per-slide scores from visual QA */
|
|
131
|
+
slideScores?: SlideScore[];
|
|
132
|
+
/** Overall QA score */
|
|
133
|
+
score?: number;
|
|
134
|
+
/** QA status */
|
|
135
|
+
status?: string;
|
|
136
|
+
}
|
|
137
|
+
interface SlideScore {
|
|
138
|
+
/** Slide index */
|
|
139
|
+
index: number;
|
|
140
|
+
/** Slide type */
|
|
141
|
+
type: string;
|
|
142
|
+
/** Score 0-100 */
|
|
143
|
+
score: number;
|
|
144
|
+
/** Expert verdict */
|
|
145
|
+
expertVerdict?: string;
|
|
146
|
+
/** Critical issues found */
|
|
147
|
+
criticalIssues?: string[];
|
|
148
|
+
/** All issues */
|
|
149
|
+
issues?: QAIssue[];
|
|
130
150
|
}
|
|
131
151
|
interface VisualQAResults {
|
|
132
152
|
/** Whitespace percentage (target: 35%+ keynote, 25%+ business) */
|
|
@@ -391,19 +411,28 @@ interface SparklineStructure {
|
|
|
391
411
|
}
|
|
392
412
|
declare class ValidationError extends Error {
|
|
393
413
|
errors: string[];
|
|
414
|
+
readonly suggestions: string[];
|
|
394
415
|
constructor(errors: string[], message?: string);
|
|
416
|
+
private static getSuggestions;
|
|
395
417
|
}
|
|
396
418
|
declare class QAFailureError extends Error {
|
|
397
419
|
score: number;
|
|
398
420
|
threshold: number;
|
|
399
421
|
qaResults: QAResults;
|
|
422
|
+
readonly topIssues: string[];
|
|
400
423
|
constructor(score: number, threshold: number, qaResults: QAResults, message?: string);
|
|
401
424
|
getIssues(): string[];
|
|
425
|
+
private static getTopIssues;
|
|
402
426
|
}
|
|
403
427
|
declare class TemplateNotFoundError extends Error {
|
|
404
428
|
templatePath: string;
|
|
405
429
|
constructor(templatePath: string, message?: string);
|
|
406
430
|
}
|
|
431
|
+
declare class KnowledgeBaseError extends Error {
|
|
432
|
+
field: string;
|
|
433
|
+
context: string;
|
|
434
|
+
constructor(field: string, context: string, message?: string);
|
|
435
|
+
}
|
|
407
436
|
/**
|
|
408
437
|
* Content pattern detected from a section
|
|
409
438
|
* Used to match content to appropriate slide types
|
|
@@ -1579,22 +1608,48 @@ declare class QAEngine {
|
|
|
1579
1608
|
}
|
|
1580
1609
|
|
|
1581
1610
|
/**
|
|
1582
|
-
* VisualQualityEvaluator -
|
|
1611
|
+
* VisualQualityEvaluator - EXPERT-LEVEL Presentation Evaluation
|
|
1612
|
+
*
|
|
1613
|
+
* THIS IS NOT A LINTER. This evaluates like a world-class presentation coach:
|
|
1583
1614
|
*
|
|
1584
|
-
*
|
|
1585
|
-
* -
|
|
1586
|
-
* - Does
|
|
1587
|
-
* -
|
|
1588
|
-
* -
|
|
1615
|
+
* EXPERT PRINCIPLES APPLIED:
|
|
1616
|
+
* 1. Nancy Duarte's Glance Test - Can you understand each slide in 3 seconds?
|
|
1617
|
+
* 2. Chris Anderson's One Idea Rule - Does each slide communicate ONE message?
|
|
1618
|
+
* 3. Edward Tufte's Data-Ink Ratio - Does every element serve a purpose?
|
|
1619
|
+
* 4. Barbara Minto's Pyramid Principle - Is the answer first, then support?
|
|
1620
|
+
* 5. Garr Reynolds' Signal to Noise - Is decoration minimized?
|
|
1621
|
+
* 6. Carmine Gallo's Rule of Three - Are key points structured effectively?
|
|
1622
|
+
* 7. Cole Knaflic's Context First - Does data have proper context?
|
|
1589
1623
|
*
|
|
1590
|
-
*
|
|
1591
|
-
* the
|
|
1624
|
+
* WHAT EXPERTS WOULD CHECK:
|
|
1625
|
+
* - Does the deck accomplish its purpose? (Persuade, inform, inspire)
|
|
1626
|
+
* - Does the narrative hang together? (Story arc, tension, resolution)
|
|
1627
|
+
* - Is each slide communicative? (Message clear in 3 seconds)
|
|
1628
|
+
* - Are visuals used intelligently? (Supporting message, not decorating)
|
|
1629
|
+
* - Is typography/layout professional? (Hierarchy, spacing, balance)
|
|
1630
|
+
* - Would McKinsey show this to a Fortune 500 CEO?
|
|
1592
1631
|
*
|
|
1593
|
-
*
|
|
1632
|
+
* CRITICAL VISUAL FAILURES (immediate score penalty):
|
|
1633
|
+
* - Truncated text (content cut off)
|
|
1634
|
+
* - Empty slides (missing content)
|
|
1635
|
+
* - Broken layouts (overflow, misalignment)
|
|
1636
|
+
* - Low contrast (illegible text)
|
|
1637
|
+
*
|
|
1638
|
+
* @version 10.0.0 - Expert-Driven QA
|
|
1594
1639
|
*/
|
|
1595
1640
|
interface SlideVisualScore {
|
|
1596
1641
|
slideIndex: number;
|
|
1597
1642
|
slideType: string;
|
|
1643
|
+
glanceTest: number;
|
|
1644
|
+
glanceTestNotes: string;
|
|
1645
|
+
oneIdea: number;
|
|
1646
|
+
oneIdeaNotes: string;
|
|
1647
|
+
dataInkRatio: number;
|
|
1648
|
+
dataInkNotes: string;
|
|
1649
|
+
professionalExecution: number;
|
|
1650
|
+
professionalExecutionNotes: string;
|
|
1651
|
+
hasCriticalFailure: boolean;
|
|
1652
|
+
criticalFailures: string[];
|
|
1598
1653
|
visualImpact: number;
|
|
1599
1654
|
visualImpactNotes: string;
|
|
1600
1655
|
contentClarity: number;
|
|
@@ -1660,7 +1715,17 @@ declare class VisualQualityEvaluator {
|
|
|
1660
1715
|
private closeBrowser;
|
|
1661
1716
|
private getSlideCount;
|
|
1662
1717
|
private evaluateSlide;
|
|
1718
|
+
/**
|
|
1719
|
+
* EXPERT-LEVEL SLIDE SCORING
|
|
1720
|
+
*
|
|
1721
|
+
* This evaluates each slide like Nancy Duarte, Carmine Gallo, or a McKinsey partner would.
|
|
1722
|
+
* It's not about rules - it's about whether the slide WORKS.
|
|
1723
|
+
*/
|
|
1663
1724
|
private scoreSlide;
|
|
1725
|
+
/**
|
|
1726
|
+
* Create a failed slide score (for critical failures)
|
|
1727
|
+
*/
|
|
1728
|
+
private createFailedSlideScore;
|
|
1664
1729
|
private inferSlideType;
|
|
1665
1730
|
private evaluateNarrativeFlow;
|
|
1666
1731
|
private evaluateVisualConsistency;
|
|
@@ -2137,4 +2202,4 @@ declare const _default: {
|
|
|
2137
2202
|
VERSION: string;
|
|
2138
2203
|
};
|
|
2139
2204
|
|
|
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 };
|
|
2205
|
+
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, KnowledgeBaseError, 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 SlideScore, 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 };
|
package/dist/index.d.ts
CHANGED
|
@@ -127,6 +127,26 @@ interface QAResults {
|
|
|
127
127
|
passed: boolean;
|
|
128
128
|
/** List of issues found */
|
|
129
129
|
issues: QAIssue[];
|
|
130
|
+
/** Per-slide scores from visual QA */
|
|
131
|
+
slideScores?: SlideScore[];
|
|
132
|
+
/** Overall QA score */
|
|
133
|
+
score?: number;
|
|
134
|
+
/** QA status */
|
|
135
|
+
status?: string;
|
|
136
|
+
}
|
|
137
|
+
interface SlideScore {
|
|
138
|
+
/** Slide index */
|
|
139
|
+
index: number;
|
|
140
|
+
/** Slide type */
|
|
141
|
+
type: string;
|
|
142
|
+
/** Score 0-100 */
|
|
143
|
+
score: number;
|
|
144
|
+
/** Expert verdict */
|
|
145
|
+
expertVerdict?: string;
|
|
146
|
+
/** Critical issues found */
|
|
147
|
+
criticalIssues?: string[];
|
|
148
|
+
/** All issues */
|
|
149
|
+
issues?: QAIssue[];
|
|
130
150
|
}
|
|
131
151
|
interface VisualQAResults {
|
|
132
152
|
/** Whitespace percentage (target: 35%+ keynote, 25%+ business) */
|
|
@@ -391,19 +411,28 @@ interface SparklineStructure {
|
|
|
391
411
|
}
|
|
392
412
|
declare class ValidationError extends Error {
|
|
393
413
|
errors: string[];
|
|
414
|
+
readonly suggestions: string[];
|
|
394
415
|
constructor(errors: string[], message?: string);
|
|
416
|
+
private static getSuggestions;
|
|
395
417
|
}
|
|
396
418
|
declare class QAFailureError extends Error {
|
|
397
419
|
score: number;
|
|
398
420
|
threshold: number;
|
|
399
421
|
qaResults: QAResults;
|
|
422
|
+
readonly topIssues: string[];
|
|
400
423
|
constructor(score: number, threshold: number, qaResults: QAResults, message?: string);
|
|
401
424
|
getIssues(): string[];
|
|
425
|
+
private static getTopIssues;
|
|
402
426
|
}
|
|
403
427
|
declare class TemplateNotFoundError extends Error {
|
|
404
428
|
templatePath: string;
|
|
405
429
|
constructor(templatePath: string, message?: string);
|
|
406
430
|
}
|
|
431
|
+
declare class KnowledgeBaseError extends Error {
|
|
432
|
+
field: string;
|
|
433
|
+
context: string;
|
|
434
|
+
constructor(field: string, context: string, message?: string);
|
|
435
|
+
}
|
|
407
436
|
/**
|
|
408
437
|
* Content pattern detected from a section
|
|
409
438
|
* Used to match content to appropriate slide types
|
|
@@ -1579,22 +1608,48 @@ declare class QAEngine {
|
|
|
1579
1608
|
}
|
|
1580
1609
|
|
|
1581
1610
|
/**
|
|
1582
|
-
* VisualQualityEvaluator -
|
|
1611
|
+
* VisualQualityEvaluator - EXPERT-LEVEL Presentation Evaluation
|
|
1612
|
+
*
|
|
1613
|
+
* THIS IS NOT A LINTER. This evaluates like a world-class presentation coach:
|
|
1583
1614
|
*
|
|
1584
|
-
*
|
|
1585
|
-
* -
|
|
1586
|
-
* - Does
|
|
1587
|
-
* -
|
|
1588
|
-
* -
|
|
1615
|
+
* EXPERT PRINCIPLES APPLIED:
|
|
1616
|
+
* 1. Nancy Duarte's Glance Test - Can you understand each slide in 3 seconds?
|
|
1617
|
+
* 2. Chris Anderson's One Idea Rule - Does each slide communicate ONE message?
|
|
1618
|
+
* 3. Edward Tufte's Data-Ink Ratio - Does every element serve a purpose?
|
|
1619
|
+
* 4. Barbara Minto's Pyramid Principle - Is the answer first, then support?
|
|
1620
|
+
* 5. Garr Reynolds' Signal to Noise - Is decoration minimized?
|
|
1621
|
+
* 6. Carmine Gallo's Rule of Three - Are key points structured effectively?
|
|
1622
|
+
* 7. Cole Knaflic's Context First - Does data have proper context?
|
|
1589
1623
|
*
|
|
1590
|
-
*
|
|
1591
|
-
* the
|
|
1624
|
+
* WHAT EXPERTS WOULD CHECK:
|
|
1625
|
+
* - Does the deck accomplish its purpose? (Persuade, inform, inspire)
|
|
1626
|
+
* - Does the narrative hang together? (Story arc, tension, resolution)
|
|
1627
|
+
* - Is each slide communicative? (Message clear in 3 seconds)
|
|
1628
|
+
* - Are visuals used intelligently? (Supporting message, not decorating)
|
|
1629
|
+
* - Is typography/layout professional? (Hierarchy, spacing, balance)
|
|
1630
|
+
* - Would McKinsey show this to a Fortune 500 CEO?
|
|
1592
1631
|
*
|
|
1593
|
-
*
|
|
1632
|
+
* CRITICAL VISUAL FAILURES (immediate score penalty):
|
|
1633
|
+
* - Truncated text (content cut off)
|
|
1634
|
+
* - Empty slides (missing content)
|
|
1635
|
+
* - Broken layouts (overflow, misalignment)
|
|
1636
|
+
* - Low contrast (illegible text)
|
|
1637
|
+
*
|
|
1638
|
+
* @version 10.0.0 - Expert-Driven QA
|
|
1594
1639
|
*/
|
|
1595
1640
|
interface SlideVisualScore {
|
|
1596
1641
|
slideIndex: number;
|
|
1597
1642
|
slideType: string;
|
|
1643
|
+
glanceTest: number;
|
|
1644
|
+
glanceTestNotes: string;
|
|
1645
|
+
oneIdea: number;
|
|
1646
|
+
oneIdeaNotes: string;
|
|
1647
|
+
dataInkRatio: number;
|
|
1648
|
+
dataInkNotes: string;
|
|
1649
|
+
professionalExecution: number;
|
|
1650
|
+
professionalExecutionNotes: string;
|
|
1651
|
+
hasCriticalFailure: boolean;
|
|
1652
|
+
criticalFailures: string[];
|
|
1598
1653
|
visualImpact: number;
|
|
1599
1654
|
visualImpactNotes: string;
|
|
1600
1655
|
contentClarity: number;
|
|
@@ -1660,7 +1715,17 @@ declare class VisualQualityEvaluator {
|
|
|
1660
1715
|
private closeBrowser;
|
|
1661
1716
|
private getSlideCount;
|
|
1662
1717
|
private evaluateSlide;
|
|
1718
|
+
/**
|
|
1719
|
+
* EXPERT-LEVEL SLIDE SCORING
|
|
1720
|
+
*
|
|
1721
|
+
* This evaluates each slide like Nancy Duarte, Carmine Gallo, or a McKinsey partner would.
|
|
1722
|
+
* It's not about rules - it's about whether the slide WORKS.
|
|
1723
|
+
*/
|
|
1663
1724
|
private scoreSlide;
|
|
1725
|
+
/**
|
|
1726
|
+
* Create a failed slide score (for critical failures)
|
|
1727
|
+
*/
|
|
1728
|
+
private createFailedSlideScore;
|
|
1664
1729
|
private inferSlideType;
|
|
1665
1730
|
private evaluateNarrativeFlow;
|
|
1666
1731
|
private evaluateVisualConsistency;
|
|
@@ -2137,4 +2202,4 @@ declare const _default: {
|
|
|
2137
2202
|
VERSION: string;
|
|
2138
2203
|
};
|
|
2139
2204
|
|
|
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 };
|
|
2205
|
+
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, KnowledgeBaseError, 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 SlideScore, 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 };
|