@thanh01.pmt/curriculum-kit 1.4.12 → 1.4.14
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.d.cts +77 -77
- package/dist/ai/index.d.ts +77 -77
- package/dist/index.cjs +20 -15
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +2 -2
- package/dist/index.d.ts +2 -2
- package/dist/index.mjs +20 -15
- package/dist/index.mjs.map +1 -1
- package/dist/schemas/index.d.cts +980 -980
- package/dist/schemas/index.d.ts +980 -980
- package/dist/standards/index.d.cts +2 -2
- package/dist/standards/index.d.ts +2 -2
- package/dist/{standardsCoverageGate-CwBk5P6m.d.cts → standardsCoverageGate-DR5YTtlt.d.cts} +12 -12
- package/dist/{standardsCoverageGate-CwBk5P6m.d.ts → standardsCoverageGate-DR5YTtlt.d.ts} +12 -12
- package/dist/workflow/index.cjs.map +1 -1
- package/dist/workflow/index.d.cts +1 -1
- package/dist/workflow/index.d.ts +1 -1
- package/dist/workflow/index.mjs.map +1 -1
- package/package.json +1 -1
package/dist/index.d.cts
CHANGED
|
@@ -10,8 +10,8 @@ export { A as AutoRepairOptions, a as AutoRepairResult, B as BundleTier, G as Ge
|
|
|
10
10
|
import { I as ICurriculumStorage, P as ProjectStatusReport, S as SmartResumeContext, Q as QualityAuditReport } from './types-BUJGYiep.cjs';
|
|
11
11
|
export { b as ArtifactLifecycleInfo, A as ArtifactLifecycleState, L as LessonArtifactSummary, c as PipelineState, R as ReviewRecord, a as SotDocument, T as TaskLifecycleState } from './types-BUJGYiep.cjs';
|
|
12
12
|
export { FileSystemCurriculumAdapter, FileSystemStorageOptions, STANDARD_SOT_FILES, StorageFactoryOptions, SupabaseCurriculumAdapter, SupabaseStorageConfig, computeContentHash, createCurriculumStorage } from './storage/index.cjs';
|
|
13
|
-
import { F as FrameworkPack, C as CoverageGateReport } from './standardsCoverageGate-
|
|
14
|
-
export { B as BloomHintSchema, a as ClassificationSchema, m as CoverageGateInput, h as FrameworkMapping, d as FrameworkMappingSchema, f as FrameworkPackManifest, b as FrameworkPackManifestSchema, e as FrameworkPackSchema, g as FrameworkStatement, c as FrameworkStatementSchema, G as GradeBandSchema, i as MappingKind, M as MappingKindSchema, P as PackLintIssue, k as PackValidationResult, j as RecordProvenance, R as RecordProvenanceSchema, S as StatementCoverageRow, n as evaluateStandardsCoverage, l as lintFrameworkPack, v as validateFrameworkPack } from './standardsCoverageGate-
|
|
13
|
+
import { F as FrameworkPack, C as CoverageGateReport } from './standardsCoverageGate-DR5YTtlt.cjs';
|
|
14
|
+
export { B as BloomHintSchema, a as ClassificationSchema, m as CoverageGateInput, h as FrameworkMapping, d as FrameworkMappingSchema, f as FrameworkPackManifest, b as FrameworkPackManifestSchema, e as FrameworkPackSchema, g as FrameworkStatement, c as FrameworkStatementSchema, G as GradeBandSchema, i as MappingKind, M as MappingKindSchema, P as PackLintIssue, k as PackValidationResult, j as RecordProvenance, R as RecordProvenanceSchema, S as StatementCoverageRow, n as evaluateStandardsCoverage, l as lintFrameworkPack, v as validateFrameworkPack } from './standardsCoverageGate-DR5YTtlt.cjs';
|
|
15
15
|
import { R as ResolvedGateSettings } from './gateSettings-L3FR2-MO.cjs';
|
|
16
16
|
export { A as ArtifactType, b as CurriculumArtifactType, C as CurriculumGateMode, D as DEFAULT_GATE_SETTINGS, G as GateSettings, c as ScaffoldingLevel, S as SingleArtifactRequest, a as SingleArtifactResult, g as gateModeFor, e as generateSingleArtifact, d as getArtifactMetadata, p as parseGateSettings, r as resolveGateSettings } from './gateSettings-L3FR2-MO.cjs';
|
|
17
17
|
export { DeliveryPackResult, JobManifest, LocalWorkspaceManager, ParsedQuizQuestion, buildDeliveryPackages, exportAllProjectQuizzes, formatQuizzesToCsv, parseQuizMarkdown } from './publishers/index.cjs';
|
package/dist/index.d.ts
CHANGED
|
@@ -10,8 +10,8 @@ export { A as AutoRepairOptions, a as AutoRepairResult, B as BundleTier, G as Ge
|
|
|
10
10
|
import { I as ICurriculumStorage, P as ProjectStatusReport, S as SmartResumeContext, Q as QualityAuditReport } from './types-BUJGYiep.js';
|
|
11
11
|
export { b as ArtifactLifecycleInfo, A as ArtifactLifecycleState, L as LessonArtifactSummary, c as PipelineState, R as ReviewRecord, a as SotDocument, T as TaskLifecycleState } from './types-BUJGYiep.js';
|
|
12
12
|
export { FileSystemCurriculumAdapter, FileSystemStorageOptions, STANDARD_SOT_FILES, StorageFactoryOptions, SupabaseCurriculumAdapter, SupabaseStorageConfig, computeContentHash, createCurriculumStorage } from './storage/index.js';
|
|
13
|
-
import { F as FrameworkPack, C as CoverageGateReport } from './standardsCoverageGate-
|
|
14
|
-
export { B as BloomHintSchema, a as ClassificationSchema, m as CoverageGateInput, h as FrameworkMapping, d as FrameworkMappingSchema, f as FrameworkPackManifest, b as FrameworkPackManifestSchema, e as FrameworkPackSchema, g as FrameworkStatement, c as FrameworkStatementSchema, G as GradeBandSchema, i as MappingKind, M as MappingKindSchema, P as PackLintIssue, k as PackValidationResult, j as RecordProvenance, R as RecordProvenanceSchema, S as StatementCoverageRow, n as evaluateStandardsCoverage, l as lintFrameworkPack, v as validateFrameworkPack } from './standardsCoverageGate-
|
|
13
|
+
import { F as FrameworkPack, C as CoverageGateReport } from './standardsCoverageGate-DR5YTtlt.js';
|
|
14
|
+
export { B as BloomHintSchema, a as ClassificationSchema, m as CoverageGateInput, h as FrameworkMapping, d as FrameworkMappingSchema, f as FrameworkPackManifest, b as FrameworkPackManifestSchema, e as FrameworkPackSchema, g as FrameworkStatement, c as FrameworkStatementSchema, G as GradeBandSchema, i as MappingKind, M as MappingKindSchema, P as PackLintIssue, k as PackValidationResult, j as RecordProvenance, R as RecordProvenanceSchema, S as StatementCoverageRow, n as evaluateStandardsCoverage, l as lintFrameworkPack, v as validateFrameworkPack } from './standardsCoverageGate-DR5YTtlt.js';
|
|
15
15
|
import { R as ResolvedGateSettings } from './gateSettings-L3FR2-MO.js';
|
|
16
16
|
export { A as ArtifactType, b as CurriculumArtifactType, C as CurriculumGateMode, D as DEFAULT_GATE_SETTINGS, G as GateSettings, c as ScaffoldingLevel, S as SingleArtifactRequest, a as SingleArtifactResult, g as gateModeFor, e as generateSingleArtifact, d as getArtifactMetadata, p as parseGateSettings, r as resolveGateSettings } from './gateSettings-L3FR2-MO.js';
|
|
17
17
|
export { DeliveryPackResult, JobManifest, LocalWorkspaceManager, ParsedQuizQuestion, buildDeliveryPackages, exportAllProjectQuizzes, formatQuizzesToCsv, parseQuizMarkdown } from './publishers/index.js';
|
package/dist/index.mjs
CHANGED
|
@@ -1278,7 +1278,7 @@ var init_lessonFlowParser = __esm({
|
|
|
1278
1278
|
|
|
1279
1279
|
// src/ai/prompts/slideBlueprintPrompt.ts
|
|
1280
1280
|
function buildSlideBlueprintPrompt(params) {
|
|
1281
|
-
const { lessonFlow, targetSlideCount
|
|
1281
|
+
const { lessonFlow, targetSlideCount, stylePresetName = "Blue Professional" } = params;
|
|
1282
1282
|
const activitiesSummary = lessonFlow.activities.map(
|
|
1283
1283
|
(a) => `Seq ${a.seq} [${a.phase}]: ${a.purpose} (Teacher: ${a.teacherMove} | Student: ${a.studentAction} | Time: ${a.time})`
|
|
1284
1284
|
).join("\n");
|
|
@@ -1286,9 +1286,12 @@ function buildSlideBlueprintPrompt(params) {
|
|
|
1286
1286
|
(p) => `Phase "${p.phaseName}" (${p.timing || "Standard"}):
|
|
1287
1287
|
${p.content.slice(0, 500)}...`
|
|
1288
1288
|
).join("\n\n");
|
|
1289
|
+
const countGuidance = targetSlideCount ? `The target is approximately ${targetSlideCount} slides.` : `Determine the organic, optimal number of slides based directly on the canonical LESSON plan: every instructional move, concept explanation, code walkthrough, activity phase, and quiz checkpoint must receive adequate slide coverage without artificial cramming or stretching.`;
|
|
1290
|
+
const outputGuidance = targetSlideCount ? `Output ONLY a valid JSON array of ${targetSlideCount} objects.` : `Output ONLY a valid JSON array of objects (one object per planned slide).`;
|
|
1289
1291
|
return `
|
|
1290
1292
|
You are @illustrator, Chief Slide Architect for the Course Builder OS.
|
|
1291
|
-
Your task is to analyze the canonical LESSON plan and architect an authoritative, high-fidelity **SLIDE BLUEPRINT
|
|
1293
|
+
Your task is to analyze the canonical LESSON plan and architect an authoritative, high-fidelity **SLIDE BLUEPRINT**.
|
|
1294
|
+
${countGuidance}
|
|
1292
1295
|
|
|
1293
1296
|
### \u{1F3DB}\uFE0F PEDAGOGICAL GROUND TRUTH (FROM CANONICAL LESSON):
|
|
1294
1297
|
- Lesson Title: "${lessonFlow.lessonTitle}"
|
|
@@ -1306,17 +1309,18 @@ ${phasesSummary || lessonFlow.rawContent.slice(0, 3e3)}
|
|
|
1306
1309
|
---
|
|
1307
1310
|
|
|
1308
1311
|
### \u{1F3AF} ARCHITECTURAL RULES (STRICTLY INVARIANT):
|
|
1309
|
-
1. **PEDAGOGICAL FIDELITY (1-TO-1 PROJECTION)**:
|
|
1312
|
+
1. **ORGANIC PEDAGOGICAL FIDELITY (1-TO-1 PROJECTION)**:
|
|
1310
1313
|
- The slide sequence MUST follow the EXACT flow of the LESSON phases (${lessonFlow.pedagogicalModel.toUpperCase()}).
|
|
1314
|
+
- The number of slides is determined by the substance of the lesson \u2014 do NOT stretch thin content or cram rich multi-step labs into too few slides.
|
|
1311
1315
|
- Do NOT invent artificial phases that do not exist in the lesson plan.
|
|
1312
1316
|
- For example:
|
|
1313
|
-
* If 5E: Engage
|
|
1314
|
-
* If EDP: Ask/Problem
|
|
1315
|
-
* If PBL: Driving Question
|
|
1317
|
+
* If 5E: Engage -> Explore -> Explain -> Elaborate -> Evaluate.
|
|
1318
|
+
* If EDP: Ask/Problem -> Imagine & Plan -> Create & Prototype -> Test & Debug -> Improve & Share.
|
|
1319
|
+
* If PBL: Driving Question -> Inquiry -> Milestone Sprint -> Review & Exhibition.
|
|
1316
1320
|
|
|
1317
|
-
2. **CHUNKY CLUSTERS (
|
|
1318
|
-
-
|
|
1319
|
-
- Each cluster
|
|
1321
|
+
2. **CHUNKY CLUSTERS (4 TO 6 SLIDES PER CLUSTER)**:
|
|
1322
|
+
- Partition the slides into natural clusters corresponding to the major pedagogical transitions in the lesson.
|
|
1323
|
+
- Each cluster MUST contain 4 to 6 slides to ensure downstream token generation remains focused, high-fidelity, and non-repetitive.
|
|
1320
1324
|
|
|
1321
1325
|
3. **SEMANTIC LAYOUT SLOTS (CHOOSE FROM VERIFIED TEMPLATES)**:
|
|
1322
1326
|
Use one of these valid layoutIds for each slide:
|
|
@@ -1333,7 +1337,7 @@ ${phasesSummary || lessonFlow.rawContent.slice(0, 3e3)}
|
|
|
1333
1337
|
---
|
|
1334
1338
|
|
|
1335
1339
|
### \u{1F4E4} OUTPUT FORMAT:
|
|
1336
|
-
|
|
1340
|
+
${outputGuidance} Do NOT include markdown text outside the JSON.
|
|
1337
1341
|
Format:
|
|
1338
1342
|
\`\`\`json
|
|
1339
1343
|
[
|
|
@@ -1463,7 +1467,7 @@ async function executeSlideProductionWorkflow(options) {
|
|
|
1463
1467
|
lessonMarkdown,
|
|
1464
1468
|
lessonCode,
|
|
1465
1469
|
lessonTitle,
|
|
1466
|
-
targetSlideCount
|
|
1470
|
+
targetSlideCount,
|
|
1467
1471
|
stylePresetId = "blue-professional",
|
|
1468
1472
|
language = "Vietnamese",
|
|
1469
1473
|
languageDirective = "",
|
|
@@ -1482,7 +1486,8 @@ async function executeSlideProductionWorkflow(options) {
|
|
|
1482
1486
|
presentationKitCore = await import('@thanh01.pmt/presentation-kit');
|
|
1483
1487
|
} catch {
|
|
1484
1488
|
}
|
|
1485
|
-
|
|
1489
|
+
const countLabel = targetSlideCount ? `${targetSlideCount} ` : "h\u1EEFu c\u01A1 ";
|
|
1490
|
+
onProgress?.("@illustrator", `[1/4] Ph\xE2n t\xEDch m\u1EA1ch b\xE0i gi\u1EA3ng LESSON & L\u1EADp D\xE0n \xFD ${countLabel}Slides...`);
|
|
1486
1491
|
const lessonFlow = parseLessonFlow(lessonMarkdown);
|
|
1487
1492
|
const stylePreset = presentationKitSkills?.getStylePreset ? presentationKitSkills.getStylePreset(stylePresetId) : { name: "Blue Professional" };
|
|
1488
1493
|
const blueprintPrompt = buildSlideBlueprintPrompt({
|
|
@@ -1506,12 +1511,13 @@ async function executeSlideProductionWorkflow(options) {
|
|
|
1506
1511
|
blueprintItems = JSON.parse(jsonrepair(extractCleanJson(rawBlueprint)));
|
|
1507
1512
|
} catch (e) {
|
|
1508
1513
|
console.warn(`[SlideProductionWorkflow] Failed parsing blueprint JSON, constructing fallback:`, e);
|
|
1509
|
-
|
|
1514
|
+
const fallbackCount = targetSlideCount || Math.max(12, Math.min(24, Math.max(lessonFlow.phases.length, 4) * 4));
|
|
1515
|
+
blueprintItems = Array.from({ length: fallbackCount }, (_, i) => ({
|
|
1510
1516
|
slideIndex: i + 1,
|
|
1511
1517
|
clusterId: Math.floor(i / 5) + 1,
|
|
1512
1518
|
clusterTitle: `Cluster ${Math.floor(i / 5) + 1}`,
|
|
1513
1519
|
lessonPhase: lessonFlow.phases[Math.min(i, lessonFlow.phases.length - 1)]?.phaseName || "Content",
|
|
1514
|
-
layoutId: i === 0 ? "hero-cover" : i ===
|
|
1520
|
+
layoutId: i === 0 ? "hero-cover" : i === fallbackCount - 1 ? "summary-takeaways" : "split-concept-code",
|
|
1515
1521
|
title: `Slide ${i + 1}: ${lessonTitle}`,
|
|
1516
1522
|
pedagogicalGoal: `Teach step ${i + 1} of ${lessonTitle}`,
|
|
1517
1523
|
contentFocus: ["Key point 1", "Key point 2", "Key point 3"]
|
|
@@ -25816,7 +25822,6 @@ ${buildHeadingDirective("QUIZ", slcMarkdown, targetLang)}`;
|
|
|
25816
25822
|
lessonMarkdown: lessonContent || "",
|
|
25817
25823
|
lessonCode,
|
|
25818
25824
|
lessonTitle,
|
|
25819
|
-
targetSlideCount: 20,
|
|
25820
25825
|
stylePresetId: "blue-professional",
|
|
25821
25826
|
language: targetLang || "Vietnamese",
|
|
25822
25827
|
languageDirective,
|