@thanh01.pmt/presentation-kit 0.2.10 → 0.2.12
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/ai/index.cjs +519 -7
- package/dist/ai/index.cjs.map +1 -1
- package/dist/ai/index.d.cts +236 -4
- package/dist/ai/index.d.ts +236 -4
- package/dist/ai/index.js +498 -2
- package/dist/ai/index.js.map +1 -1
- package/dist/chunk-3VGV5KYZ.js +3446 -0
- package/dist/chunk-3VGV5KYZ.js.map +1 -0
- package/dist/chunk-53GLUCYC.cjs +3464 -0
- package/dist/chunk-53GLUCYC.cjs.map +1 -0
- package/dist/{click-css-BP9oqy_1.d.cts → click-css-Ch_jyWaw.d.cts} +1 -1
- package/dist/{click-css-BbhqdtGr.d.ts → click-css-CktIYP3H.d.ts} +1 -1
- package/dist/index.cjs +30 -10
- package/dist/index.d.cts +21 -5
- package/dist/index.d.ts +21 -5
- package/dist/index.js +2 -2
- package/dist/{presets-B_TY4i2a.d.ts → presets-BUzebXzj.d.ts} +1 -1
- package/dist/{presets-BIw_4ZXR.d.cts → presets-Bkh6NzWf.d.cts} +1 -1
- package/dist/react/index.cjs +351 -90
- package/dist/react/index.cjs.map +1 -1
- package/dist/react/index.d.cts +25 -5
- package/dist/react/index.d.ts +25 -5
- package/dist/react/index.js +297 -41
- package/dist/react/index.js.map +1 -1
- package/dist/{types-C1121XLt.d.cts → types-8AVYoEUn.d.cts} +67 -1
- package/dist/{types-C1121XLt.d.ts → types-8AVYoEUn.d.ts} +67 -1
- package/package.json +2 -2
- package/dist/chunk-3Q4RMZVQ.cjs +0 -867
- package/dist/chunk-3Q4RMZVQ.cjs.map +0 -1
- package/dist/chunk-V6X7D44H.js +0 -854
- package/dist/chunk-V6X7D44H.js.map +0 -1
package/dist/ai/index.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
|
-
import { c as SlideLayoutCategory } from '../presets-
|
|
3
|
-
import { b as SlideLayoutData } from '../types-
|
|
2
|
+
import { c as SlideLayoutCategory } from '../presets-BUzebXzj.js';
|
|
3
|
+
import { b as SlideLayoutData, d as HtmlLayoutPresetId, f as HtmlDeckData, H as HtmlThemeName, m as HtmlSlideSlotData } from '../types-8AVYoEUn.js';
|
|
4
4
|
|
|
5
5
|
declare const listSlidePresetsSchema: z.ZodObject<{
|
|
6
6
|
category: z.ZodOptional<z.ZodEnum<["all", "cover", "content", "split", "code", "metrics", "diagram", "quote", "assessment"]>>;
|
|
@@ -201,6 +201,238 @@ declare function executeGenerateDeckOutline(params: {
|
|
|
201
201
|
}[];
|
|
202
202
|
};
|
|
203
203
|
|
|
204
|
-
declare const SLIDE_DESIGN_PROMPT_CONTRACT = "\n# SYSTEM MANDATE: PROFESSIONAL PRESENTATION & SLIDE DESIGN INVARIANTS\n\nYou are an expert Presentation Architect & Visual Designer for educational, technical, and executive decks.\nWhen generating or modifying Marp slide presentations, you MUST STRICTLY obey the following non-negotiable rules:\n\n---\n\n## 1. DURATION-INDEXED SLIDE PACING\nStructure decks based on allocated talk time (averaging 1.5 - 2 minutes per slide):\n- **5 min (Lightning Talk):** 5 - 7 slides [Hook -> 2-3 Core Points -> CTA / Summary]\n- **15 min (Short Tech Talk):** 12 - 16 slides [Title -> Agenda -> Hook -> 3-4 Concepts -> Lab/Demo -> Summary]\n- **30 min (Conference / Class):** 24 - 32 slides [Full 5E Learning Cycle + Interactive Formative Checkpoint]\n- **45-60 min (Keynote / Workshop):** 36 - 50 slides [Modular Micro-cycles + Tiered Hands-on Exercises]\n\n---\n\n## 2. THE \"ONE IDEA PER SLIDE\" RULE\n- Each slide communicates **EXACTLY ONE** pedagogical or architectural concept.\n- Never pack multiple distinct topics into a single slide.\n- If a concept has both theory and code, split into: (Slide A) Concept Diagram -> (Slide B) Code Walkthrough.\n\n---\n\n## 3. STRICT WORD BUDGET (ZERO-SCROLL INVARIANT)\n- **Hard Limit:** Maximum **35 - 40 words** per card or column.\n- Never write paragraphs longer than 2 sentences. Use structured bullets with bold anchor terms:\n - Format: `- **Key Concept:** Concise explanation in a single line.`\n- Vertical scrolling inside a slide is STRICTLY FORBIDDEN. Content must fit the 16:9 (1280x720) canvas cleanly.\n\n---\n\n## 4. TWO-COLUMN & CARD BALANCED LAYOUTS\n- Avoid centered vertical walls of text. Use responsive side-by-side card wrappers:\n ```html\n <div class=\"columns-2\">\n <div>\n ### \uD83D\uDD34 Legacy / Challenge\n - High idle compute overhead\n - Cascading timeout failures\n </div>\n <div>\n ### \uD83D\uDFE2 Modern / Solution\n - Event-driven webhook streams\n - Automatic queue backpressure\n </div>\n </div>\n ```\n- For 3 metrics or bronze/silver/gold differentiation, use `<div class=\"columns-3\">...</div>`.\n\n---\n\n## 5. MANDATORY PRESENTER NOTES (TEACHER TALK TRACK)\nEvery single slide MUST conclude with an HTML comment block containing:\n1. **Talk Track:** 2-3 sentences of what the speaker should say out loud.\n2. **Cold-Call Check Question:** 1 diagnostic question to ask a specific student or attendee.\n3. **Scaffolding Tip:** 1 hint or real-world analogy if learners look confused.\n\nExample:\n```markdown\n<!--\nPresenter Notes:\n- Walk through the primary bottleneck when scaling database writes under high concurrency.\n- Cold-call: \"Alex, if traffic spikes 10x in 1 minute, which subsystem will experience lock contention first?\"\n- Scaffolding tip: Remind the room of the I/O saturation trade-off discussed in the previous module.\n-->\n```\n\n---\n\n## 6. MARP COMPATIBLE YAML LAYOUT HEADERS\nWhen a precise coordinate layout is specified, include the clean YAML block at the very top of the slide:\n```markdown\n<!-- layout:\n boxes:\n - id: heading\n target: h2\n pos: [80, 50, 1120, 70]\n fontSize: 2rem\n - id: col-left\n target: '.columns-2 > div:first-child'\n pos: [80, 150, 530, 510]\n - id: col-right\n target: '.columns-2 > div:last-child'\n pos: [670, 150, 530, 510]\n-->\n```\n";
|
|
204
|
+
declare const SLIDE_DESIGN_PROMPT_CONTRACT = "\n# SYSTEM MANDATE: PROFESSIONAL PRESENTATION & SLIDE DESIGN INVARIANTS\n\nYou are an expert Presentation Architect & Visual Designer for educational, technical, and executive decks.\nWhen generating or modifying Marp slide presentations, you MUST STRICTLY obey the following non-negotiable rules:\n\n---\n\n## 1. DURATION-INDEXED SLIDE PACING\nStructure decks based on allocated talk time (averaging 1.5 - 2 minutes per slide):\n- **5 min (Lightning Talk):** 5 - 7 slides [Hook -> 2-3 Core Points -> CTA / Summary]\n- **15 min (Short Tech Talk):** 12 - 16 slides [Title -> Agenda -> Hook -> 3-4 Concepts -> Lab/Demo -> Summary]\n- **30 min (Conference / Class):** 24 - 32 slides [Full 5E Learning Cycle + Interactive Formative Checkpoint]\n- **45-60 min (Keynote / Workshop):** 36 - 50 slides [Modular Micro-cycles + Tiered Hands-on Exercises]\n\n---\n\n## 2. THE \"ONE IDEA PER SLIDE\" RULE\n- Each slide communicates **EXACTLY ONE** pedagogical or architectural concept.\n- Never pack multiple distinct topics into a single slide.\n- If a concept has both theory and code, split into: (Slide A) Concept Diagram -> (Slide B) Code Walkthrough.\n\n---\n\n## 3. STRICT WORD BUDGET (ZERO-SCROLL INVARIANT)\n- **Hard Limit:** Maximum **35 - 40 words** per card or column.\n- Never write paragraphs longer than 2 sentences. Use structured bullets with bold anchor terms:\n - Format: `- **Key Concept:** Concise explanation in a single line.`\n- Vertical scrolling inside a slide is STRICTLY FORBIDDEN. Content must fit the 16:9 (1280x720) canvas cleanly.\n\n---\n\n## 4. TWO-COLUMN & CARD BALANCED LAYOUTS\n- Avoid centered vertical walls of text. Use responsive side-by-side card wrappers:\n ```html\n <div class=\"columns-2\">\n <div>\n ### \uD83D\uDD34 Legacy / Challenge\n - High idle compute overhead\n - Cascading timeout failures\n </div>\n <div>\n ### \uD83D\uDFE2 Modern / Solution\n - Event-driven webhook streams\n - Automatic queue backpressure\n </div>\n </div>\n ```\n- For 3 metrics or bronze/silver/gold differentiation, use `<div class=\"columns-3\">...</div>`.\n\n---\n\n## 5. MANDATORY PRESENTER NOTES (TEACHER TALK TRACK)\nEvery single slide MUST conclude with an HTML comment block containing:\n1. **Talk Track:** 2-3 sentences of what the speaker should say out loud.\n2. **Cold-Call Check Question:** 1 diagnostic question to ask a specific student or attendee.\n3. **Scaffolding Tip:** 1 hint or real-world analogy if learners look confused.\n\nExample:\n```markdown\n<!--\nPresenter Notes:\n- Walk through the primary bottleneck when scaling database writes under high concurrency.\n- Cold-call: \"Alex, if traffic spikes 10x in 1 minute, which subsystem will experience lock contention first?\"\n- Scaffolding tip: Remind the room of the I/O saturation trade-off discussed in the previous module.\n-->\n```\n\n---\n\n## 6. MARP COMPATIBLE YAML LAYOUT HEADERS\nWhen a precise coordinate layout is specified, include the clean YAML block at the very top of the slide:\n```markdown\n<!-- layout:\n boxes:\n - id: heading\n target: h2\n pos: [80, 50, 1120, 70]\n fontSize: 2rem\n - id: col-left\n target: '.columns-2 > div:first-child'\n pos: [80, 150, 530, 510]\n - id: col-right\n target: '.columns-2 > div:last-child'\n pos: [670, 150, 530, 510]\n-->\n```\n\n---\n\n## 7. STEP REVEAL & PROGRESSIVE DISCLOSURE\nWhen presenting lists, comparisons, or multi-phase concepts, support sequential reveals:\n- Annotate lists or elements with `<!-- v-click -->` or apply class `.step-reveal` / `[data-step]`.\n- Clicking or pressing forward arrow reveals items sequentially before transitioning to the next slide.\n- Keep list items concise (< 15 words) to maintain visual rhythm during progressive steps.\n";
|
|
205
205
|
|
|
206
|
-
|
|
206
|
+
declare const validateSlideDeckSchema: z.ZodObject<{
|
|
207
|
+
format: z.ZodDefault<z.ZodEnum<["auto", "html", "markdown"]>>;
|
|
208
|
+
markdown: z.ZodOptional<z.ZodString>;
|
|
209
|
+
htmlDeck: z.ZodOptional<z.ZodObject<{
|
|
210
|
+
title: z.ZodOptional<z.ZodString>;
|
|
211
|
+
subtitle: z.ZodOptional<z.ZodString>;
|
|
212
|
+
theme: z.ZodOptional<z.ZodString>;
|
|
213
|
+
slides: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
214
|
+
layoutId: z.ZodString;
|
|
215
|
+
slots: z.ZodRecord<z.ZodString, z.ZodAny>;
|
|
216
|
+
notes: z.ZodOptional<z.ZodString>;
|
|
217
|
+
}, "strip", z.ZodTypeAny, {
|
|
218
|
+
layoutId: string;
|
|
219
|
+
slots: Record<string, any>;
|
|
220
|
+
notes?: string | undefined;
|
|
221
|
+
}, {
|
|
222
|
+
layoutId: string;
|
|
223
|
+
slots: Record<string, any>;
|
|
224
|
+
notes?: string | undefined;
|
|
225
|
+
}>, "many">>;
|
|
226
|
+
}, "strip", z.ZodTypeAny, {
|
|
227
|
+
title?: string | undefined;
|
|
228
|
+
subtitle?: string | undefined;
|
|
229
|
+
slides?: {
|
|
230
|
+
layoutId: string;
|
|
231
|
+
slots: Record<string, any>;
|
|
232
|
+
notes?: string | undefined;
|
|
233
|
+
}[] | undefined;
|
|
234
|
+
theme?: string | undefined;
|
|
235
|
+
}, {
|
|
236
|
+
title?: string | undefined;
|
|
237
|
+
subtitle?: string | undefined;
|
|
238
|
+
slides?: {
|
|
239
|
+
layoutId: string;
|
|
240
|
+
slots: Record<string, any>;
|
|
241
|
+
notes?: string | undefined;
|
|
242
|
+
}[] | undefined;
|
|
243
|
+
theme?: string | undefined;
|
|
244
|
+
}>>;
|
|
245
|
+
strict: z.ZodDefault<z.ZodBoolean>;
|
|
246
|
+
}, "strip", z.ZodTypeAny, {
|
|
247
|
+
format: "markdown" | "auto" | "html";
|
|
248
|
+
strict: boolean;
|
|
249
|
+
markdown?: string | undefined;
|
|
250
|
+
htmlDeck?: {
|
|
251
|
+
title?: string | undefined;
|
|
252
|
+
subtitle?: string | undefined;
|
|
253
|
+
slides?: {
|
|
254
|
+
layoutId: string;
|
|
255
|
+
slots: Record<string, any>;
|
|
256
|
+
notes?: string | undefined;
|
|
257
|
+
}[] | undefined;
|
|
258
|
+
theme?: string | undefined;
|
|
259
|
+
} | undefined;
|
|
260
|
+
}, {
|
|
261
|
+
markdown?: string | undefined;
|
|
262
|
+
format?: "markdown" | "auto" | "html" | undefined;
|
|
263
|
+
htmlDeck?: {
|
|
264
|
+
title?: string | undefined;
|
|
265
|
+
subtitle?: string | undefined;
|
|
266
|
+
slides?: {
|
|
267
|
+
layoutId: string;
|
|
268
|
+
slots: Record<string, any>;
|
|
269
|
+
notes?: string | undefined;
|
|
270
|
+
}[] | undefined;
|
|
271
|
+
theme?: string | undefined;
|
|
272
|
+
} | undefined;
|
|
273
|
+
strict?: boolean | undefined;
|
|
274
|
+
}>;
|
|
275
|
+
type ValidateSlideDeckInput = z.infer<typeof validateSlideDeckSchema>;
|
|
276
|
+
interface SlideValidationIssue {
|
|
277
|
+
slideIndex: number;
|
|
278
|
+
severity: 'error' | 'warning';
|
|
279
|
+
rule: string;
|
|
280
|
+
message: string;
|
|
281
|
+
}
|
|
282
|
+
interface SlideValidationResult {
|
|
283
|
+
success: boolean;
|
|
284
|
+
valid: boolean;
|
|
285
|
+
score: number;
|
|
286
|
+
format: 'html' | 'markdown';
|
|
287
|
+
slideCount: number;
|
|
288
|
+
notesCoveragePercent: number;
|
|
289
|
+
issues: SlideValidationIssue[];
|
|
290
|
+
suggestions: string[];
|
|
291
|
+
}
|
|
292
|
+
/**
|
|
293
|
+
* Validate structured HTML slide deck against design and pedagogical invariants
|
|
294
|
+
*/
|
|
295
|
+
declare function validateHtmlSlideDeck(deck: {
|
|
296
|
+
slides?: Array<{
|
|
297
|
+
layoutId: string;
|
|
298
|
+
slots?: Record<string, any>;
|
|
299
|
+
notes?: string;
|
|
300
|
+
}>;
|
|
301
|
+
title?: string;
|
|
302
|
+
subtitle?: string;
|
|
303
|
+
theme?: string;
|
|
304
|
+
}, strict?: boolean): SlideValidationResult;
|
|
305
|
+
/**
|
|
306
|
+
* Validate raw Markdown / Marp slide presentation
|
|
307
|
+
*/
|
|
308
|
+
declare function validateMarkdownSlideDeck(markdown: string, strict?: boolean): SlideValidationResult;
|
|
309
|
+
/**
|
|
310
|
+
* Universal executor for validating slide decks in either format
|
|
311
|
+
*/
|
|
312
|
+
declare function executeValidateSlideDeck(input: ValidateSlideDeckInput): SlideValidationResult;
|
|
313
|
+
declare const handleValidateSlideDeck: typeof executeValidateSlideDeck;
|
|
314
|
+
|
|
315
|
+
declare const listHtmlSlidePresetsSchema: z.ZodObject<{
|
|
316
|
+
category: z.ZodOptional<z.ZodEnum<["all", "cover", "content", "split", "grid", "timeline", "callout", "assessment"]>>;
|
|
317
|
+
}, "strip", z.ZodTypeAny, {
|
|
318
|
+
category?: "all" | "cover" | "content" | "split" | "assessment" | "grid" | "timeline" | "callout" | undefined;
|
|
319
|
+
}, {
|
|
320
|
+
category?: "all" | "cover" | "content" | "split" | "assessment" | "grid" | "timeline" | "callout" | undefined;
|
|
321
|
+
}>;
|
|
322
|
+
declare const htmlSlideSlotDataSchema: z.ZodObject<{
|
|
323
|
+
layoutId: z.ZodEnum<["hero-cover", "split-concept-code", "two-columns-compare", "three-cards-grid", "timeline-steps", "metric-callout", "checkpoint-quiz", "summary-takeaways"]>;
|
|
324
|
+
slots: z.ZodRecord<z.ZodString, z.ZodAny>;
|
|
325
|
+
notes: z.ZodOptional<z.ZodString>;
|
|
326
|
+
}, "strip", z.ZodTypeAny, {
|
|
327
|
+
layoutId: "hero-cover" | "split-concept-code" | "two-columns-compare" | "three-cards-grid" | "timeline-steps" | "metric-callout" | "checkpoint-quiz" | "summary-takeaways";
|
|
328
|
+
slots: Record<string, any>;
|
|
329
|
+
notes?: string | undefined;
|
|
330
|
+
}, {
|
|
331
|
+
layoutId: "hero-cover" | "split-concept-code" | "two-columns-compare" | "three-cards-grid" | "timeline-steps" | "metric-callout" | "checkpoint-quiz" | "summary-takeaways";
|
|
332
|
+
slots: Record<string, any>;
|
|
333
|
+
notes?: string | undefined;
|
|
334
|
+
}>;
|
|
335
|
+
declare const generateHtmlDeckSchema: z.ZodObject<{
|
|
336
|
+
title: z.ZodString;
|
|
337
|
+
subtitle: z.ZodOptional<z.ZodString>;
|
|
338
|
+
theme: z.ZodDefault<z.ZodEnum<["blue-professional", "editorial-forest", "cobalt-grid", "studio", "monochrome"]>>;
|
|
339
|
+
slides: z.ZodArray<z.ZodObject<{
|
|
340
|
+
layoutId: z.ZodEnum<["hero-cover", "split-concept-code", "two-columns-compare", "three-cards-grid", "timeline-steps", "metric-callout", "checkpoint-quiz", "summary-takeaways"]>;
|
|
341
|
+
slots: z.ZodRecord<z.ZodString, z.ZodAny>;
|
|
342
|
+
notes: z.ZodOptional<z.ZodString>;
|
|
343
|
+
}, "strip", z.ZodTypeAny, {
|
|
344
|
+
layoutId: "hero-cover" | "split-concept-code" | "two-columns-compare" | "three-cards-grid" | "timeline-steps" | "metric-callout" | "checkpoint-quiz" | "summary-takeaways";
|
|
345
|
+
slots: Record<string, any>;
|
|
346
|
+
notes?: string | undefined;
|
|
347
|
+
}, {
|
|
348
|
+
layoutId: "hero-cover" | "split-concept-code" | "two-columns-compare" | "three-cards-grid" | "timeline-steps" | "metric-callout" | "checkpoint-quiz" | "summary-takeaways";
|
|
349
|
+
slots: Record<string, any>;
|
|
350
|
+
notes?: string | undefined;
|
|
351
|
+
}>, "many">;
|
|
352
|
+
}, "strip", z.ZodTypeAny, {
|
|
353
|
+
title: string;
|
|
354
|
+
slides: {
|
|
355
|
+
layoutId: "hero-cover" | "split-concept-code" | "two-columns-compare" | "three-cards-grid" | "timeline-steps" | "metric-callout" | "checkpoint-quiz" | "summary-takeaways";
|
|
356
|
+
slots: Record<string, any>;
|
|
357
|
+
notes?: string | undefined;
|
|
358
|
+
}[];
|
|
359
|
+
theme: "blue-professional" | "editorial-forest" | "cobalt-grid" | "studio" | "monochrome";
|
|
360
|
+
subtitle?: string | undefined;
|
|
361
|
+
}, {
|
|
362
|
+
title: string;
|
|
363
|
+
slides: {
|
|
364
|
+
layoutId: "hero-cover" | "split-concept-code" | "two-columns-compare" | "three-cards-grid" | "timeline-steps" | "metric-callout" | "checkpoint-quiz" | "summary-takeaways";
|
|
365
|
+
slots: Record<string, any>;
|
|
366
|
+
notes?: string | undefined;
|
|
367
|
+
}[];
|
|
368
|
+
subtitle?: string | undefined;
|
|
369
|
+
theme?: "blue-professional" | "editorial-forest" | "cobalt-grid" | "studio" | "monochrome" | undefined;
|
|
370
|
+
}>;
|
|
371
|
+
declare const createHtmlSlideSchema: z.ZodObject<{
|
|
372
|
+
layoutId: z.ZodEnum<["hero-cover", "split-concept-code", "two-columns-compare", "three-cards-grid", "timeline-steps", "metric-callout", "checkpoint-quiz", "summary-takeaways"]>;
|
|
373
|
+
slots: z.ZodRecord<z.ZodString, z.ZodAny>;
|
|
374
|
+
notes: z.ZodOptional<z.ZodString>;
|
|
375
|
+
}, "strip", z.ZodTypeAny, {
|
|
376
|
+
layoutId: "hero-cover" | "split-concept-code" | "two-columns-compare" | "three-cards-grid" | "timeline-steps" | "metric-callout" | "checkpoint-quiz" | "summary-takeaways";
|
|
377
|
+
slots: Record<string, any>;
|
|
378
|
+
notes?: string | undefined;
|
|
379
|
+
}, {
|
|
380
|
+
layoutId: "hero-cover" | "split-concept-code" | "two-columns-compare" | "three-cards-grid" | "timeline-steps" | "metric-callout" | "checkpoint-quiz" | "summary-takeaways";
|
|
381
|
+
slots: Record<string, any>;
|
|
382
|
+
notes?: string | undefined;
|
|
383
|
+
}>;
|
|
384
|
+
|
|
385
|
+
declare const SLIDE_HTML_PROMPT_CONTRACT = "\n# \uD83C\uDFA8 HTML SLIDE ENGINE \u2014 AGENT GENERATION CONTRACT\n\nYou are an expert Presentation Designer and Curriculum Architect producing professional, high-impact slide decks.\nInstead of generating free-form HTML or brittle Markdown hacks, you MUST fill structured content into pre-tested **Layout Presets**.\n\n## Available Layout Presets & Required Slots:\n\n1. **hero-cover** (Cover / Title Slide)\n - `tag` (string): e.g. \"Unit 01 \u00B7 Lesson 02\"\n - `title` (string): Main bold headline\n - `subtitle` (string): Subtitle or 1-sentence learning objective\n - `author` (string): Instructor / Organization\n - `date` (string): Course term or date\n\n2. **split-concept-code** (Theory + Code Snippet)\n - `tag` (string): Section topic tag\n - `title` (string): Topic heading\n - `points` (string[]): 3 to 4 concise bullet takeaways\n - `code` (string): Executable source code\n - `language` (string): Language name (e.g. \"python\", \"typescript\", \"swift\")\n - `codeNote` (string, optional): One-line hint or execution output\n\n3. **two-columns-compare** (Comparison / Pros vs Cons)\n - `tag` (string): Topic tag\n - `title` (string): Headline\n - `col1Title` (string): e.g. \"Synchronous I/O\"\n - `col1Items` (string[]): 3 to 4 points\n - `col2Title` (string): e.g. \"Asynchronous I/O\"\n - `col2Items` (string[]): 3 to 4 points\n\n4. **three-cards-grid** (3 Core Pillars / Architecture)\n - `tag` (string): e.g. \"Core Principles\"\n - `title` (string): Overview headline\n - `cards` (array of objects): Exactly 3 cards:\n - `badge`: e.g. \"01\", \"LAYER 1\"\n - `title`: Card headline\n - `desc`: 1-2 sentence description\n - `footer` (optional): Key takeaway\n\n5. **timeline-steps** (Algorithm / Execution Pipeline)\n - `tag` (string): e.g. \"Workflow\"\n - `title` (string): Headline\n - `steps` (array of objects): 3 to 5 steps:\n - `stepNum` (number/string): 1, 2, 3...\n - `title`: Step name\n - `desc`: What happens at this step\n\n6. **metric-callout** (Key Theorem / Benchmark Statistic)\n - `tag` (string): e.g. \"Time Complexity\"\n - `metric` (string): Big stat (e.g. \"O(log N)\", \"99.99%\", \"10x\")\n - `metricLabel` (string): e.g. \"Lookup Efficiency\"\n - `title` (string): Main takeaway\n - `desc` (string): Contextual explanation\n\n7. **checkpoint-quiz** (Interactive Checkpoint)\n - `tag` (string): e.g. \"Quick Knowledge Check\"\n - `question` (string): Clear question prompt\n - `options` (array of objects): 2 to 4 options:\n - `label`: \"A\", \"B\", \"C\", \"D\"\n - `text`: Option text\n - `explanation` (string): Explanatory rationale\n\n8. **summary-takeaways** (Wrap-Up / Next Steps)\n - `tag` (string): e.g. \"Recap\"\n - `title` (string): Wrap-up headline\n - `takeaways` (string[]): 3 to 4 memorable bullet points\n - `nextStep` (string): Teaser for the next lesson or project\n\n## Aesthetic & Quality Invariants (\"Anti-AI-Slop\"):\n- **Brevity is King (Zero-Scroll Invariant):** Each slide is calibrated for a 1920\u00D71080 canvas. Maximum **35\u201340 words** per card or column; maximum **15 words** per bullet item. Never write dense multi-sentence paragraphs that cause vertical scrolling.\n- **Pedagogical Pacing:** Start with `hero-cover`, alternate between `split-concept-code`, `two-columns-compare` and `three-cards-grid`, insert a `checkpoint-quiz` midway, and finish with `summary-takeaways`.\n- **Theme Selection:**\n - `blue-professional`: General academic, clean engineering, trustworthy.\n - `cobalt-grid`: Advanced tech, algorithms, robotics, cybersecurity.\n - `editorial-forest`: Thoughtful design, literature, ethics, science.\n - `studio`: Minimalist product design, modern software.\n - `monochrome`: Pure high-contrast dark mode.\n\n## \uD83E\uDE84 Step Reveal & Progressive Disclosure:\n- The presentation shell supports sequential step reveal via mouse click or Space/Arrow keys.\n- Bullet lists (`points`, `col1Items`, `col2Items`), cards in `three-cards-grid`, and steps in `timeline-steps` reveal progressively one by one before navigating to the next slide.\n- In custom HTML slots, you can attach `class=\"step-reveal\"`, `data-step`, `data-reveal`, or `data-auto-reveal=\"true\"` on parent containers to enable click-by-click stepped appearance.\n\n## \uD83C\uDF99\uFE0F Mandatory 3-Part Presenter Notes Contract:\nEvery single slide MUST include the `notes` property structured with these 3 explicit components:\n1. **Talk Track:** 2-3 sentences of exact conversational speaking script for the teacher/presenter.\n2. **Cold-Call Check Question:** 1 diagnostic question to check understanding with a named student or attendee.\n3. **Scaffolding Tip:** 1 intuitive analogy or troubleshooting hint in case learners struggle with the concept.\n\nExample Notes:\n```markdown\nTalk Track: Here we contrast synchronous blocking I/O with asynchronous event-driven handling. Notice how threads remain idle while waiting for network responses.\nCold-Call: \"Jordan, looking at the left column, what happens to thread pool throughput when network latency quadruples?\"\nScaffolding Tip: Compare it to ordering coffee at a counter (async buzzer) versus waiting at the register until the cup is brewed (sync blocking).\n```\n";
|
|
386
|
+
|
|
387
|
+
declare function handleListHtmlSlidePresets(input: {
|
|
388
|
+
category?: string;
|
|
389
|
+
}): {
|
|
390
|
+
success: boolean;
|
|
391
|
+
presets: {
|
|
392
|
+
id: HtmlLayoutPresetId;
|
|
393
|
+
name: string;
|
|
394
|
+
category: "cover" | "content" | "split" | "assessment" | "grid" | "timeline" | "callout";
|
|
395
|
+
description: string;
|
|
396
|
+
slots: {
|
|
397
|
+
name: string;
|
|
398
|
+
label: string;
|
|
399
|
+
type: "code" | "options" | "text" | "multiline" | "list" | "badge" | "metric";
|
|
400
|
+
required: boolean;
|
|
401
|
+
description: string;
|
|
402
|
+
}[];
|
|
403
|
+
}[];
|
|
404
|
+
availableThemes: string[];
|
|
405
|
+
};
|
|
406
|
+
declare function handleGenerateHtmlDeck(input: HtmlDeckData): {
|
|
407
|
+
success: boolean;
|
|
408
|
+
title: string;
|
|
409
|
+
slideCount: number;
|
|
410
|
+
theme: HtmlThemeName;
|
|
411
|
+
html: string;
|
|
412
|
+
error?: undefined;
|
|
413
|
+
} | {
|
|
414
|
+
success: boolean;
|
|
415
|
+
error: any;
|
|
416
|
+
title?: undefined;
|
|
417
|
+
slideCount?: undefined;
|
|
418
|
+
theme?: undefined;
|
|
419
|
+
html?: undefined;
|
|
420
|
+
};
|
|
421
|
+
declare function handleCreateHtmlSlide(input: HtmlSlideSlotData): {
|
|
422
|
+
success: boolean;
|
|
423
|
+
error: string;
|
|
424
|
+
slide?: undefined;
|
|
425
|
+
} | {
|
|
426
|
+
success: boolean;
|
|
427
|
+
slide: {
|
|
428
|
+
layoutId: HtmlLayoutPresetId;
|
|
429
|
+
slots: Record<string, any>;
|
|
430
|
+
notes: string | undefined;
|
|
431
|
+
};
|
|
432
|
+
error?: undefined;
|
|
433
|
+
};
|
|
434
|
+
declare const executeListHtmlSlidePresets: typeof handleListHtmlSlidePresets;
|
|
435
|
+
declare const executeGenerateHtmlDeck: typeof handleGenerateHtmlDeck;
|
|
436
|
+
declare const executeCreateHtmlSlide: typeof handleCreateHtmlSlide;
|
|
437
|
+
|
|
438
|
+
export { SLIDE_DESIGN_PROMPT_CONTRACT, SLIDE_HTML_PROMPT_CONTRACT, type SlideValidationIssue, type SlideValidationResult, type ValidateSlideDeckInput, applySlideLayoutSchema, createHtmlSlideSchema, createSlideFromPresetSchema, executeApplySlideLayout, executeCreateHtmlSlide, executeCreateSlideFromPreset, executeGenerateDeckOutline, executeGenerateHtmlDeck, executeListHtmlSlidePresets, executeListSlidePresets, executeUpdatePresenterNotes, executeValidateSlideDeck, generateDeckOutlineSchema, generateHtmlDeckSchema, handleCreateHtmlSlide, handleGenerateHtmlDeck, handleListHtmlSlidePresets, handleValidateSlideDeck, htmlSlideSlotDataSchema, listHtmlSlidePresetsSchema, listSlidePresetsSchema, updatePresenterNotesSchema, validateHtmlSlideDeck, validateMarkdownSlideDeck, validateSlideDeckSchema };
|