@thanh01.pmt/curriculum-kit 1.4.45 → 1.4.46

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.mjs CHANGED
@@ -7947,7 +7947,6 @@ var STANDARD_SOT_FILES = [
7947
7947
  "REFERENCE_PACK.md",
7948
7948
  "PROJECT_GRAPH.json",
7949
7949
  "HYBRID_GRAPH.json",
7950
- "SECTION_LANGUAGE_CONTRACT.md",
7951
7950
  "CURRICULUM_FRAMEWORK.md",
7952
7951
  "CONTENT_STYLE_GUIDE.md",
7953
7952
  "ART_DIRECTION.md",
@@ -9446,17 +9445,6 @@ function buildLanguageDirective(targetLanguage) {
9446
9445
  ${exampleLine}` : ""}
9447
9446
  - CJK / NON-LATIN SCRIPT BAN (ABSOLUTE): NEVER output characters from Chinese (\u6C49\u5B57), Japanese (\u304B\u306A/\u6F22\u5B57), or Korean (\uD55C\uAE00) scripts ANYWHERE in the document \u2014 not even a single glyph spliced inside a ${name} sentence. Observed past violations that are STRICTLY forbidden: \u6392\u67E5, \u5305\u542B, \u5BFC\u81F4, \u662F\u591A\u5C11, \u6280\u672F, \u771F\u673A, \u4F11\u606F, \u7EB8\u8D28. To express such meaning write it fully in ${name} or keep the ENGLISH technical term (e.g. write "t\u1EF1 ki\u1EC3m tra l\u1ED7i" / "self-debugging", "bao g\u1ED3m" / "includes"). A mechanical scanner rejects any document containing even one CJK character.`;
9448
9447
  }
9449
- function matchesArtifactType(candidate, target) {
9450
- const c = candidate.trim().toUpperCase();
9451
- const t = target.trim().toUpperCase();
9452
- if (c === t) return true;
9453
- if (c.startsWith("LESSON") && t.startsWith("LESSON")) return true;
9454
- if ((c === "CODE" || c === "CODE_LAB") && (t === "CODE" || t === "CODE_LAB")) return true;
9455
- if ((c === "EXPOSITION" || c === "KNOWLEDGE_EXPOSITION") && (t === "EXPOSITION" || t === "KNOWLEDGE_EXPOSITION")) return true;
9456
- if ((c === "WKS" || c === "WORKSHEET") && (t === "WKS" || t === "WORKSHEET")) return true;
9457
- if ((c === "EXT" || c === "EXTENSION") && (t === "EXT" || t === "EXTENSION")) return true;
9458
- return false;
9459
- }
9460
9448
  var TEMPLATE_BY_TYPE = {
9461
9449
  LESSON: "LESSON_5E_template.md",
9462
9450
  LESSON_5E: "LESSON_5E_template.md",
@@ -9465,7 +9453,7 @@ var TEMPLATE_BY_TYPE = {
9465
9453
  ACT: "ACT_template.md",
9466
9454
  CODE: "CODE_template.md",
9467
9455
  // JSON-first code lab shares the CODE label set (the serializer renders its
9468
- // own headings; this lookup only feeds the SLC/directive fallback path).
9456
+ // own headings; this lookup only feeds the directive fallback path).
9469
9457
  CODE_LAB: "CODE_template.md",
9470
9458
  QUIZ: "QUIZ_v4.6_template.md",
9471
9459
  GUIDE: "GUIDE_template.md",
@@ -9477,87 +9465,21 @@ var TEMPLATE_BY_TYPE = {
9477
9465
  LEARNER_PROFILE: "LEARNER_PROFILE_template.md",
9478
9466
  PROJECT_BRIEF: "PROJECT_BRIEF_template.md",
9479
9467
  CURRICULUM_FRAMEWORK: "CURRICULUM_FRAMEWORK_template.md",
9480
- CONTENT_STYLE_GUIDE: "CONTENT_STYLE_GUIDE_template.md",
9481
- SECTION_LANGUAGE_CONTRACT: "SECTION_LANGUAGE_CONTRACT_template.md"
9468
+ CONTENT_STYLE_GUIDE: "CONTENT_STYLE_GUIDE_template.md"
9482
9469
  };
9483
- function keepContractEntries(artifactType, mapping) {
9470
+ function extractSectionHeadings(artifactType, opts) {
9484
9471
  const templateFile = TEMPLATE_BY_TYPE[artifactType.trim().toUpperCase()];
9485
- if (!templateFile) return mapping;
9486
- const resolved = resolveArtifactTemplate(templateFile);
9487
- if (!resolved) return mapping;
9488
- const contract = new Set(resolved.sections.map(stripHeadingKey));
9489
- const kept = {};
9490
- for (const [k, v] of Object.entries(mapping)) {
9491
- if (contract.has(stripHeadingKey(k))) kept[k] = v;
9492
- }
9493
- return kept;
9494
- }
9495
- function extractSectionHeadingsFromSLC(slcInput, artifactType, targetLanguage = "vi") {
9496
- const upperType = artifactType.trim().toUpperCase();
9497
- const getFallback = () => {
9498
- const templateFile = TEMPLATE_BY_TYPE[upperType];
9499
- if (!templateFile) return {};
9500
- const resolved = resolveArtifactTemplate(templateFile);
9501
- if (!resolved) return {};
9502
- return Object.fromEntries(resolved.sections.map((s) => [s, s]));
9503
- };
9504
- if (!slcInput) return getFallback();
9505
- if (typeof slcInput === "object") {
9506
- if (slcInput[upperType] && Object.keys(slcInput[upperType]).length > 0) {
9507
- return keepContractEntries(upperType, slcInput[upperType]);
9508
- }
9509
- for (const [key, mapping] of Object.entries(slcInput)) {
9510
- if (matchesArtifactType(key, upperType) && Object.keys(mapping).length > 0) {
9511
- return keepContractEntries(upperType, mapping);
9512
- }
9513
- }
9514
- return getFallback();
9515
- }
9516
- const slcMarkdown = slcInput;
9517
- const blocks = slcMarkdown.split(/\n(?=#{2,3}\s+[A-Z0-9_]+)/g);
9518
- for (const block of blocks) {
9519
- const headerMatch = block.match(/^#{2,3}\s+([A-Z0-9_]+)/);
9520
- if (!headerMatch) continue;
9521
- const blockType = headerMatch[1].trim().toUpperCase();
9522
- if (matchesArtifactType(blockType, upperType)) {
9523
- const mapping = {};
9524
- const lines = block.split("\n");
9525
- for (const line of lines) {
9526
- const trimmed = line.trim();
9527
- if (trimmed.startsWith("|") && !trimmed.includes("---")) {
9528
- const cells = trimmed.split("|").map((c) => c.trim()).filter((_, idx, arr) => idx > 0 && idx < arr.length - 1);
9529
- if (cells.length >= 2 && !cells[0].toLowerCase().includes("canonical") && !cells[1].toLowerCase().includes("localized")) {
9530
- mapping[cells[0]] = cells[1];
9531
- }
9532
- } else {
9533
- const bullet = line.match(/^[-*]\s+([^:]+):\s+(.+)$/);
9534
- if (bullet) {
9535
- mapping[bullet[1].trim()] = bullet[2].trim();
9536
- }
9537
- }
9538
- }
9539
- if (Object.keys(mapping).length > 0) return keepContractEntries(upperType, mapping);
9540
- }
9541
- }
9542
- return getFallback();
9472
+ if (!templateFile) return {};
9473
+ const resolved = resolveArtifactTemplate(templateFile, opts);
9474
+ if (!resolved) return {};
9475
+ return Object.fromEntries(resolved.sections.map((s) => [s, s]));
9543
9476
  }
9544
- function buildHeadingDirective(artifactType, slcMarkdown, targetLanguage = "vi", opts) {
9545
- const upperType = artifactType.trim().toUpperCase();
9546
- const templateFile = TEMPLATE_BY_TYPE[upperType];
9547
- const resolved = templateFile ? resolveArtifactTemplate(templateFile, opts) : null;
9548
- const baked = !!resolved && resolved.declaredLang !== "en";
9549
- const headings = resolved ? Object.fromEntries(
9550
- resolved.sections.map((s) => [
9551
- s,
9552
- baked ? s : extractSectionHeadingsFromSLC(slcMarkdown, upperType, targetLanguage)[s] || s
9553
- ])
9554
- ) : extractSectionHeadingsFromSLC(baked ? null : slcMarkdown, upperType, targetLanguage);
9477
+ function buildHeadingDirective(artifactType, opts) {
9478
+ const headings = extractSectionHeadings(artifactType, opts);
9555
9479
  if (Object.keys(headings).length === 0) {
9556
9480
  return "";
9557
9481
  }
9558
- const lines = Object.entries(headings).map(
9559
- ([heading, display]) => heading === display ? ` - "${display}"` : ` - "${heading}" -> Use Display Heading: "${display}"`
9560
- );
9482
+ const lines = Object.keys(headings).map((heading) => ` - "${heading}"`);
9561
9483
  return `MANDATORY SECTION HEADINGS (SOURCE: RESOLVED ARTIFACT TEMPLATE):
9562
9484
  - Copy the template's YAML frontmatter \`template_required_sections\` list VERBATIM into the artifact frontmatter \u2014 never translate, reorder, or invent entries.
9563
9485
  - In the markdown body, section headers MUST be exactly the Display Headings below (do NOT translate, paraphrase, or re-marker them):
@@ -9921,9 +9843,8 @@ function buildSectionAwareExcerpt(markdown, opts = {}) {
9921
9843
  };
9922
9844
  }
9923
9845
  const minContentChars = opts.minContentChars !== void 0 ? opts.minContentChars : Math.min(400, source.length);
9924
- const slcMap = normalizeSlcContract(opts.sectionLanguageContract);
9925
9846
  const effectiveArtifactType = opts.artifactType || deriveArtifactTypeFromFileName(opts.fileName);
9926
- const sections = parseMarkdownSections(source, slcMap, effectiveArtifactType);
9847
+ const sections = parseMarkdownSections(source);
9927
9848
  const metaBlock = buildMetaBlock(source, effectiveArtifactType);
9928
9849
  if (sections.length === 0) {
9929
9850
  issues.push("parse:no-sections");
@@ -10046,48 +9967,16 @@ function buildLessonExcerpt(markdown, opts = {}) {
10046
9967
  priorities: DEFAULT_LESSON_PRIORITIES
10047
9968
  });
10048
9969
  }
10049
- function normalizeSlcContract(slc) {
10050
- if (!slc) return void 0;
10051
- if (typeof slc !== "string") return slc;
10052
- const out = {};
10053
- const blocks = slc.split(/\n(?=#{2,3}\s+[A-Z0-9_]+)/g);
10054
- for (const block of blocks) {
10055
- const header = block.match(/^#{2,3}\s+([A-Z0-9_]+)/);
10056
- if (!header?.[1]) continue;
10057
- const mapping = {};
10058
- for (const line of block.split("\n")) {
10059
- const t = line.trim();
10060
- if (!t.startsWith("|") || t.includes("---")) continue;
10061
- const cells = t.split("|").map((c) => c.trim()).filter((_, i, a) => i > 0 && i < a.length - 1);
10062
- const [c0, c1] = cells;
10063
- if (c0 && c1 && !c0.toLowerCase().includes("canonical") && !c1.toLowerCase().includes("localized")) {
10064
- mapping[c0] = c1;
10065
- }
10066
- }
10067
- if (Object.keys(mapping).length > 0) out[header[1]] = mapping;
10068
- }
10069
- return Object.keys(out).length > 0 ? out : void 0;
10070
- }
10071
- function parseMarkdownSections(markdown, slcMap, artifactType) {
9970
+ function parseMarkdownSections(markdown) {
10072
9971
  const sections = [];
10073
9972
  const lines = markdown.split("\n");
10074
9973
  let currentHeading = "";
10075
9974
  let currentBody = [];
10076
- const reverseMap = /* @__PURE__ */ new Map();
10077
- if (slcMap) {
10078
- const maps = artifactType && slcMap[artifactType] ? [slcMap[artifactType]] : Object.values(slcMap);
10079
- for (const m of maps) {
10080
- for (const [canonical, localized] of Object.entries(m)) {
10081
- reverseMap.set(normalizeHeading(localized), canonical);
10082
- reverseMap.set(normalizeHeading(canonical), canonical);
10083
- }
10084
- }
10085
- }
10086
9975
  const flush = () => {
10087
9976
  if (!currentHeading) return;
10088
9977
  const cleanTitle = currentHeading.replace(/^#{1,4}\s+/, "").trim();
10089
9978
  const norm2 = normalizeHeading(cleanTitle);
10090
- const canonicalKey = reverseMap.get(norm2) || findCanonicalFuzzy(norm2);
9979
+ const canonicalKey = findCanonicalFuzzy(norm2);
10091
9980
  sections.push({
10092
9981
  rawHeading: currentHeading,
10093
9982
  cleanTitle,
@@ -10186,7 +10075,7 @@ function buildMetaBlock(source, artifactType) {
10186
10075
  function deriveArtifactTypeFromFileName(fileName) {
10187
10076
  if (!fileName) return void 0;
10188
10077
  const base = fileName.replace(/\.md$/i, "");
10189
- const multiWord = base.match(/^(KNOWLEDGE_EXPOSITION|SECTION_LANGUAGE_CONTRACT|CONTENT_STYLE_GUIDE|CURRICULUM_FRAMEWORK|LEARNER_PROFILE|PROJECT_BRIEF|REFERENCE_PACK|CURRICULUM_PLAN)/i);
10078
+ const multiWord = base.match(/^(KNOWLEDGE_EXPOSITION|CONTENT_STYLE_GUIDE|CURRICULUM_FRAMEWORK|LEARNER_PROFILE|PROJECT_BRIEF|REFERENCE_PACK|CURRICULUM_PLAN)/i);
10190
10079
  if (multiWord) return multiWord[1].toUpperCase();
10191
10080
  const token = base.match(/^([A-Z][A-Z0-9_]*?)(?=_|$)/);
10192
10081
  return token ? token[1] : void 0;
@@ -10413,10 +10302,10 @@ function buildSystemPrompt(targetLanguage = "vi", techStack, hardwarePlatform) {
10413
10302
  langDirective
10414
10303
  ].join("\n");
10415
10304
  }
10416
- function buildUserPrompt(session, plan, glossary, targetLanguage = "vi", slcMarkdown, refPack) {
10305
+ function buildUserPrompt(session, plan, glossary, targetLanguage = "vi", refPack) {
10417
10306
  const depthLines = session.depth_assignments.map((d) => "- " + d.node_id + " [" + d.depth.toUpperCase() + "]: " + DEPTH_RULES[d.depth]).join("\n");
10418
10307
  const termLines = glossary.map((g) => "- " + g.term + (g.definition ? " \u2014 " + g.definition : "") + (g.example ? " (example: " + g.example + ")" : "")).join("\n");
10419
- const headings = extractSectionHeadingsFromSLC(slcMarkdown, "KNOWLEDGE_EXPOSITION", targetLanguage);
10308
+ const headings = extractSectionHeadings("KNOWLEDGE_EXPOSITION");
10420
10309
  const hScope = headings["Session Scope"] || "Session Scope";
10421
10310
  const hTerms = headings["Key Terms"] || "Key Terms";
10422
10311
  const hNarratives = headings["Concept Narratives"] || "Concept Narratives";
@@ -10424,7 +10313,7 @@ function buildUserPrompt(session, plan, glossary, targetLanguage = "vi", slcMark
10424
10313
  const hMistakes = headings["Common Mistakes"] || "Common Mistakes";
10425
10314
  const hQuestions = headings["Self-Check Questions"] || "Self-Check Questions";
10426
10315
  const skeleton = `## ${hScope} / ## ${hTerms} / ## ${hNarratives} / ## ${hExamples} / ## ${hMistakes} / ## ${hQuestions}`;
10427
- const headingDirective = buildHeadingDirective("KNOWLEDGE_EXPOSITION", slcMarkdown, targetLanguage);
10316
+ const headingDirective = buildHeadingDirective("KNOWLEDGE_EXPOSITION");
10428
10317
  let refPackBlock = "";
10429
10318
  if (refPack && refPack.trim()) {
10430
10319
  const refExcerpt = buildSectionAwareExcerpt(refPack, {
@@ -10490,7 +10379,7 @@ async function ensureKnowledgeExposition(options) {
10490
10379
  skipToolchainList: true
10491
10380
  // same RefPack excerpt already in [GROUND TRUTH]
10492
10381
  });
10493
- const originalUserPrompt = buildUserPrompt(session, plan, glossary, targetLanguage, options.slcMarkdown, refPack) + (productSpecBlock ? "\n\n" + productSpecBlock : "");
10382
+ const originalUserPrompt = buildUserPrompt(session, plan, glossary, targetLanguage, refPack) + (productSpecBlock ? "\n\n" + productSpecBlock : "");
10494
10383
  const content = (await llmFn(
10495
10384
  originalSystemPrompt,
10496
10385
  originalUserPrompt
@@ -10628,7 +10517,6 @@ async function ensureExpositionForLesson(storage, projectId, lessonCode, options
10628
10517
  plan,
10629
10518
  glossary,
10630
10519
  targetLanguage: targetLang,
10631
- slcMarkdown: options.slcMarkdown,
10632
10520
  techStack: tech,
10633
10521
  hardwarePlatform: hw,
10634
10522
  refPack: refPackContent,
@@ -24997,7 +24885,6 @@ function buildSatelliteContext(input) {
24997
24885
  lessonContent,
24998
24886
  lessonExcerpt,
24999
24887
  expositionContent,
25000
- slcMarkdown,
25001
24888
  symbolLedgerBlock,
25002
24889
  pedagogyLabel,
25003
24890
  lessonEntity,
@@ -25033,7 +24920,6 @@ ${lessonExcerpt.excerpt}${symbolLedgerBlock}`;
25033
24920
  const kxExcerpt = buildSectionAwareExcerpt(expositionContent, {
25034
24921
  priorities: KX_SLOT_PRIORITIES[type] ?? ["Key Terms", "Concept Narratives", "Worked Micro-Examples"],
25035
24922
  budget: 4500,
25036
- sectionLanguageContract: slcMarkdown,
25037
24923
  artifactType: "KNOWLEDGE_EXPOSITION"
25038
24924
  });
25039
24925
  parts.push(`
@@ -25065,7 +24951,6 @@ ${slots}`;
25065
24951
  const excerpt = buildSectionAwareExcerpt(lessonContent, {
25066
24952
  priorities: spec.priorities ?? ["Artifact Contract", "A. Lesson Design Plan", "B. Lesson Flow", "Learning Objectives & Evidence", "Activity Sequence"],
25067
24953
  budget: spec.budget,
25068
- sectionLanguageContract: slcMarkdown,
25069
24954
  artifactType: "LESSON"
25070
24955
  });
25071
24956
  const excerptBlock = `
@@ -25360,7 +25245,7 @@ ${nextRow}`
25360
25245
  ].filter(Boolean);
25361
25246
  return parts.join("\n\n") || framework.slice(0, 1500);
25362
25247
  }
25363
- function buildLessonPrompt(pedagogy, lessonCode, unitCode, lessonTitle, concept, bloomLevel, dateStr, targetLanguage = "vi", sectionLanguageContract) {
25248
+ function buildLessonPrompt(pedagogy, lessonCode, unitCode, lessonTitle, concept, bloomLevel, dateStr, targetLanguage = "vi") {
25364
25249
  const templateFile = LESSON_TEMPLATE_BY_PEDAGOGY[pedagogy] ?? "LESSON_5E_template.md";
25365
25250
  const artifactType = templateFile.replace("_template.md", "");
25366
25251
  const contract = resolveArtifactTemplate(templateFile)?.sections ?? [];
@@ -25403,9 +25288,7 @@ type: "${artifactType}"
25403
25288
  ${NO_VERBATIM_COPYING}`;
25404
25289
  const langDirective = buildLanguageDirective(targetLanguage);
25405
25290
  const headingDirective = buildHeadingDirective(
25406
- pedagogy === "edp" ? "LESSON_EDP" : pedagogy === "general" || pedagogy === "pbl" ? "LESSON_GENERAL" : "LESSON_5E",
25407
- sectionLanguageContract,
25408
- targetLanguage
25291
+ pedagogy === "edp" ? "LESSON_EDP" : pedagogy === "general" || pedagogy === "pbl" ? "LESSON_GENERAL" : "LESSON_5E"
25409
25292
  );
25410
25293
  const body = buildArtifactPrompt({ directive, templateFile });
25411
25294
  return `${body}
@@ -25458,7 +25341,6 @@ async function produceSingleLesson(storage, projectId, lessonId, options = {}) {
25458
25341
  if (!currentPlanHash || content.includes('plan_hash: "' + currentPlanHash + '"')) return content;
25459
25342
  return content + '\n---\nplan_hash: "' + currentPlanHash + '"\n- **Plan reference:** ' + currentPlanHash + "\n";
25460
25343
  };
25461
- const slcMarkdown = options.sectionLanguageContract || await storage.readSotDocument(projectId, "SECTION_LANGUAGE_CONTRACT.md") || "";
25462
25344
  let targetLang = options.targetLanguage;
25463
25345
  if (!targetLang) {
25464
25346
  try {
@@ -25481,13 +25363,11 @@ async function produceSingleLesson(storage, projectId, lessonId, options = {}) {
25481
25363
  gates: resolveGateSettings(options.gateSettings),
25482
25364
  force: options.force,
25483
25365
  targetLanguage: targetLang,
25484
- slcMarkdown,
25485
25366
  customInference: options.customInference
25486
25367
  });
25487
25368
  if (exposition) {
25488
25369
  const expoExcerpt = buildExpositionExcerpt(exposition.rawContent || exposition.context, {
25489
25370
  budget: 6e3,
25490
- sectionLanguageContract: slcMarkdown,
25491
25371
  artifactType: "KNOWLEDGE_EXPOSITION"
25492
25372
  });
25493
25373
  expositionContext = expoExcerpt.excerpt || exposition.context;
@@ -25696,8 +25576,7 @@ Khi n\u1ED9i dung c\u1EA7n minh h\u1ECDa (diagram quy tr\xECnh, s\u01A1 \u0111\u
25696
25576
  concept,
25697
25577
  bloomLevel,
25698
25578
  dateStr,
25699
- targetLang,
25700
- slcMarkdown
25579
+ targetLang
25701
25580
  ) + mediaDirective;
25702
25581
  const rawLesson = await runCurriculumAIInference(
25703
25582
  [{ role: "user", content: lessonPrompt }],
@@ -25815,7 +25694,7 @@ ${yamlBlock.trim()}
25815
25694
  });
25816
25695
  }
25817
25696
  const judgeObjectives = parseLessonObjectives(lessonContent, concept, bloomLevel);
25818
- const judgeExpositionExcerpt = expositionContext ? buildExpositionExcerpt(expositionContext, { budget: 3e3, sectionLanguageContract: slcMarkdown, artifactType: "KNOWLEDGE_EXPOSITION" }).excerpt : void 0;
25697
+ const judgeExpositionExcerpt = expositionContext ? buildExpositionExcerpt(expositionContext, { budget: 3e3, artifactType: "KNOWLEDGE_EXPOSITION" }).excerpt : void 0;
25819
25698
  const judgeResult = await LLMJudgeEngine.evaluateArtifactWithLLM({
25820
25699
  targetArtifactType: "LESSON",
25821
25700
  lessonId: lessonCode,
@@ -25885,7 +25764,6 @@ ${currentContent}` }],
25885
25764
  const repairedExcerptCheck = buildSectionAwareExcerpt(repairedRaw, {
25886
25765
  priorities: DEFAULT_LESSON_PRIORITIES,
25887
25766
  budget: 12e3,
25888
- sectionLanguageContract: slcMarkdown,
25889
25767
  artifactType: "LESSON"
25890
25768
  });
25891
25769
  if (repairedExcerptCheck.issues.includes("parse:no-priority-resolution")) {
@@ -25916,7 +25794,7 @@ ${currentContent}` }],
25916
25794
  title: lessonTitle,
25917
25795
  frameworkExcerpt: framework ? buildFrameworkExcerptForLesson(framework, lessonId) : void 0,
25918
25796
  styleGuideExcerpt: effectiveStyleGuide || void 0,
25919
- canonicalExposition: expositionContext ? buildExpositionExcerpt(expositionContext, { budget: 3e3, sectionLanguageContract: slcMarkdown, artifactType: "KNOWLEDGE_EXPOSITION" }).excerpt : void 0
25797
+ canonicalExposition: expositionContext ? buildExpositionExcerpt(expositionContext, { budget: 3e3, artifactType: "KNOWLEDGE_EXPOSITION" }).excerpt : void 0
25920
25798
  }),
25921
25799
  standardStatements: Object.keys(standardStatements).length > 0 ? standardStatements : void 0
25922
25800
  });
@@ -26046,7 +25924,6 @@ ${currentContent}` }],
26046
25924
  const lessonExcerptResult = buildSectionAwareExcerpt(lessonContent, {
26047
25925
  priorities: SATELLITE_LESSON_PRIORITIES,
26048
25926
  budget: 12e3,
26049
- sectionLanguageContract: slcMarkdown,
26050
25927
  artifactType: "LESSON"
26051
25928
  });
26052
25929
  const lessonExcerpt = lessonExcerptResult.excerpt;
@@ -26076,7 +25953,6 @@ ${currentContent}` }],
26076
25953
  lessonContent,
26077
25954
  lessonExcerpt: lessonExcerptResult,
26078
25955
  expositionContent: expositionContext,
26079
- slcMarkdown,
26080
25956
  symbolLedgerBlock,
26081
25957
  pedagogyLabel,
26082
25958
  lessonEntity,
@@ -26190,7 +26066,7 @@ ${NO_VERBATIM_COPYING}`;
26190
26066
 
26191
26067
  ${languageDirective}
26192
26068
 
26193
- ${buildHeadingDirective("ACT", slcMarkdown, targetLang)}`;
26069
+ ${buildHeadingDirective("ACT")}`;
26194
26070
  const rawAct = await runCurriculumAIInference(
26195
26071
  [{ role: "user", content: actPrompt }],
26196
26072
  satelliteContextFor("ACT"),
@@ -26261,7 +26137,7 @@ ${NO_VERBATIM_COPYING}`;
26261
26137
 
26262
26138
  ${languageDirective}
26263
26139
 
26264
- ${buildHeadingDirective("QUIZ", slcMarkdown, targetLang)}`;
26140
+ ${buildHeadingDirective("QUIZ")}`;
26265
26141
  const rawQuiz = await runCurriculumAIInference(
26266
26142
  [{ role: "user", content: quizPrompt }],
26267
26143
  satelliteContextFor("QUIZ"),
@@ -26314,7 +26190,7 @@ ${buildHeadingDirective("QUIZ", slcMarkdown, targetLang)}`;
26314
26190
  stylePresetId: "blue-professional",
26315
26191
  language: targetLang || "Vietnamese",
26316
26192
  languageDirective,
26317
- headingDirective: buildHeadingDirective("SLIDE", slcMarkdown, targetLang),
26193
+ headingDirective: buildHeadingDirective("SLIDE"),
26318
26194
  groundContext: slideGroundContext,
26319
26195
  productSpecBlock: productSpecBlock || void 0,
26320
26196
  satelliteContext: satelliteContextFor("SLIDE"),
@@ -26397,7 +26273,7 @@ footer: "Curriculum OS \u2022 ${lessonCode} (${pedagogyLabel})"
26397
26273
  lessonCode,
26398
26274
  templateScaffold,
26399
26275
  languageDirective,
26400
- headingDirective: buildHeadingDirective("SLIDE", slcMarkdown, targetLang)
26276
+ headingDirective: buildHeadingDirective("SLIDE")
26401
26277
  });
26402
26278
  const rawSlide = await runCurriculumAIInference(
26403
26279
  [{ role: "user", content: slidePrompt }],
@@ -26466,7 +26342,7 @@ ${NO_VERBATIM_COPYING}`;
26466
26342
 
26467
26343
  ${languageDirective}
26468
26344
 
26469
- ${buildHeadingDirective("GUIDE", slcMarkdown, targetLang)}`;
26345
+ ${buildHeadingDirective("GUIDE")}`;
26470
26346
  const rawGuide = await runCurriculumAIInference(
26471
26347
  [{ role: "user", content: guidePrompt }],
26472
26348
  satelliteContextFor("GUIDE"),
@@ -26522,7 +26398,7 @@ ${NO_VERBATIM_COPYING}`;
26522
26398
 
26523
26399
  ${languageDirective}
26524
26400
 
26525
- ${buildHeadingDirective("HANDOUT", slcMarkdown, targetLang)}`;
26401
+ ${buildHeadingDirective("HANDOUT")}`;
26526
26402
  const rawHandout = await runCurriculumAIInference(
26527
26403
  [{ role: "user", content: handoutPrompt }],
26528
26404
  satelliteContextFor("HANDOUT"),
@@ -26578,7 +26454,7 @@ ${NO_VERBATIM_COPYING}`;
26578
26454
 
26579
26455
  ${languageDirective}
26580
26456
 
26581
- ${buildHeadingDirective("WKS", slcMarkdown, targetLang)}`;
26457
+ ${buildHeadingDirective("WKS")}`;
26582
26458
  const rawWks = await runCurriculumAIInference(
26583
26459
  [{ role: "user", content: wksPrompt }],
26584
26460
  satelliteContextFor("WKS"),
@@ -26641,7 +26517,7 @@ ${NO_VERBATIM_COPYING}`;
26641
26517
 
26642
26518
  ${languageDirective}
26643
26519
 
26644
- ${buildHeadingDirective("CODE", slcMarkdown, targetLang)}`;
26520
+ ${buildHeadingDirective("CODE")}`;
26645
26521
  const rawCode = await runCurriculumAIInference(
26646
26522
  [{ role: "user", content: codePrompt }],
26647
26523
  satelliteContextFor("CODE"),
@@ -26728,7 +26604,7 @@ ${zpdCeilingPrompt}
26728
26604
 
26729
26605
  ${languageDirective}
26730
26606
 
26731
- ${buildHeadingDirective("EXT", slcMarkdown, targetLang)}`;
26607
+ ${buildHeadingDirective("EXT")}`;
26732
26608
  const rawExt = await runCurriculumAIInference(
26733
26609
  [{ role: "user", content: extPrompt }],
26734
26610
  satelliteContextFor("EXT"),
@@ -27224,11 +27100,7 @@ async function generateSingleArtifact(req) {
27224
27100
  language.toLowerCase().includes("bilingual") || language.toLowerCase().includes("song");
27225
27101
  const targetLang = resolveTargetLanguageCode(language);
27226
27102
  const langDirective = buildLanguageDirective(language);
27227
- const headingDirective = buildHeadingDirective(
27228
- artifactType.toUpperCase(),
27229
- req.sectionLanguageContract,
27230
- targetLang
27231
- );
27103
+ const headingDirective = buildHeadingDirective(artifactType.toUpperCase());
27232
27104
  const availableSources = {
27233
27105
  KNOWLEDGE_EXPOSITION: contextSot.exposition || researchContext,
27234
27106
  CANONICAL_LESSON: contextSot.lessonPlan,
@@ -27295,11 +27167,10 @@ ${symbolLedgerPrompt}
27295
27167
 
27296
27168
  IMAGE PLANNING (media ledger) \u2014 QUOTA GEN: t\u1ED1i \u0111a ${mediaPolicy.maxGenImagesPerArtifact} \u1EA3nh AI cho artifact n\xE0y (\u1EA3nh search kho kh\xF4ng gi\u1EDBi h\u1EA1n).
27297
27169
  Khi n\u1ED9i dung c\u1EA7n minh h\u1ECDa (diagram quy tr\xECnh, s\u01A1 \u0111\u1ED3 kh\xE1i ni\u1EC7m, step-by-step visual), ch\xE8n placeholder \u0111\xFAng format [IMAGE: slug] (slug ch\u1EEF th\u01B0\u1EDDng-g\u1EA1ch ngang, unique trong b\xE0i, vd img-for-loop-diagram) T\u1EA0I \u0110\xDANG CH\u1ED6 c\u1EA7n \u1EA3nh, tr\xEAn d\xF2ng ri\xEAng. KH\xD4NG t\u1EF1 sinh \u1EA3nh, KH\xD4NG d\xF9ng markdown image \u2014 placeholder s\u1EBD \u0111\u01B0\u1EE3c thay b\u1EB1ng \u1EA3nh th\u1EADt sau khi Media Curator duy\u1EC7t. Ch\u1EC9 \u0111\u1EB7t cho \u1EA3nh TH\u1EF0C S\u1EF0 c\u1EA7n thi\u1EBFt.` : ""}`;
27298
- const slcContract = req.sectionLanguageContract;
27299
- const frameworkExcerpt = contextSot.framework ? buildSectionAwareExcerpt(contextSot.framework, { budget: 2500, sectionLanguageContract: slcContract }).excerpt : "";
27300
- const lessonPlanExcerpt = contextSot.lessonPlan ? buildLessonExcerpt(contextSot.lessonPlan, { budget: 8e3, sectionLanguageContract: slcContract, artifactType: "LESSON" }).excerpt : "";
27301
- const handoutExcerpt = contextSot.handout ? buildSectionAwareExcerpt(contextSot.handout, { budget: 2e3, sectionLanguageContract: slcContract }).excerpt : "";
27302
- const expositionExcerpt = contextSot.exposition ? buildExpositionExcerpt(contextSot.exposition, { budget: 6e3, sectionLanguageContract: slcContract }).excerpt : "";
27170
+ const frameworkExcerpt = contextSot.framework ? buildSectionAwareExcerpt(contextSot.framework, { budget: 2500 }).excerpt : "";
27171
+ const lessonPlanExcerpt = contextSot.lessonPlan ? buildLessonExcerpt(contextSot.lessonPlan, { budget: 8e3, artifactType: "LESSON" }).excerpt : "";
27172
+ const handoutExcerpt = contextSot.handout ? buildSectionAwareExcerpt(contextSot.handout, { budget: 2e3 }).excerpt : "";
27173
+ const expositionExcerpt = contextSot.exposition ? buildExpositionExcerpt(contextSot.exposition, { budget: 6e3 }).excerpt : "";
27303
27174
  const userPrompt = `### CONTEXT GROUND TRUTH:
27304
27175
  - Topic / Concept Domain: "${topic}"
27305
27176
  - Lesson ID: "${lessonId || "ON_DEMAND"}"
@@ -31643,6 +31514,6 @@ function renderMediaPlaceholder(entry) {
31643
31514
  return `> \u{1F5BC}\uFE0F [\u1EA2nh \u0111ang ch\u1EDD: ${entry.name} \u2014 s\u1EBD \u0111\u01B0\u1EE3c t\u1EA1o sau khi duy\u1EC7t media]`;
31644
31515
  }
31645
31516
 
31646
- export { ARTIFACT_DEPENDENCY_ROUTING, ARTIFACT_EXECUTION_ORDER, AcademicAuditor, ActionableRepairActionSchema, ActionableRepairPromptSchema, ActiveLearningWorkflowSchema, ActivityLabSchema, ActivitySeqRowSchema, ActivityStepSchema, ArtifactContractRowSchema, AssessmentMapRowSchema, AssessmentObjectiveSchema, BLOOM_ACTION_VERBS, BUNDLED_STANDARDS_PACK_IDS, BellRingerDaySchema, BellRingerSchema, BloomHintSchema, BloomLevelSchema, BloomTaxonomyEvaluator, BronzeTierSchema, CERConclusionSchema, CURRICULUM_SLASH_COMMANDS, CardTierEnum, ChoiceBoardRubricRowSchema, ChoiceBoardSchema, ChoiceRuleSchema, ChoiceSquareSchema, ClassificationSchema, CodeHardwareFeasibilityEvaluator, CodeLabSchema, CodeSnippetSchema, CompetencyRubricRowSchema, ComputationalThinkingSchema, ConceptPrerequisiteEdgeSchema, ConceptSpiralEncounterSchema, ConstructiveAlignmentEvaluator, CoreConceptSchema, CourseObjectiveSchema, CoverageReportSchema, CrossArtifactDriftEvaluator, CurriculumArtifactSchema, CurriculumError, CurriculumPlanSchema, CurriculumQualityReportSchema, DEFAULT_ARTIFACT_STREAM_IDLE_MS, DEFAULT_ARTIFACT_STREAM_TOTAL_MS, DEFAULT_ENABLED_PROVIDERS, DEFAULT_GATE_SETTINGS, DEFAULT_KX_PRIORITIES, DEFAULT_LESSON_PRIORITIES, DEFAULT_OVERHEAD_RATIO, DEFAULT_STREAM_IDLE_MS, DEFAULT_STREAM_TOTAL_MS, DependencyEdgeSchema, DepthAssignmentSchema, DepthLevelSchema, DeterministicPipelineRunner, DeterministicStructuralLinter, DiagnosticQuestionSchema, DiagnosticQuizSchema, EDPPhaseEnum, ENVIRONMENT_PROVISIONING_MODELS, EXPOSITION_REL, EntryLevelSchema, ExitTicketBugHuntSchema, ExitTicketMetacognitionSchema, ExitTicketQuickItemSchema, ExitTicketRecallPromptSchema, ExitTicketSchema, ExperimentalDesignSchema, ExpositionApprovalError, ExtensionChallengeSchema, ExtensionSchema, FileSystemCurriculumAdapter, FiveEFlowPhaseSchema, FiveEInstructionalEvaluator, FiveEPhaseEnum, FrameworkMappingSchema, FrameworkPackManifestSchema, FrameworkPackSchema, FrameworkStatementSchema, GeneratedSlideArraySchema, GeneratedSlideSchema, GlossaryQuickRefRowSchema, GlossarySchema, GlossaryTermSchema, GoldTierSchema, GradeBandSchema, GraphicOrganizerItemSchema, GraphicOrganizerSchema, HandoutSchema, HandoutSectionSchema, HybridBlueprintArraySchema, HybridBlueprintItemSchema, HybridDeckSlideArraySchema, HybridDeckSlideSchema, HybridPipelineError, InstructionSectionSchema, InstructionStepSchema, JUDGE_AUTO_APPROVE_THRESHOLD, JUDGE_ESCALATE_THRESHOLD, JudgeCriterionSchema, LAYER_IDLE_BUDGET_MS, LAYER_TOTAL_BUDGET_MS, LLMJudgeEngine, LabTierTaskSchema, LearningObjectiveInputSchema, LearningObjectiveRowSchema, LessonEntitySchema, LessonFlowPhaseSchema, LessonPlan5ESchema, LessonPlanEDPSchema, LessonPlanSchema, LessonSectionSchema, LocalWorkspaceManager, MAX_AUTONOMOUS_REPAIR_TURNS, MAX_IN_SESSION_SETUP_MINUTES, MAX_NEW_CONCEPTS_PER_SESSION_ADULT, MAX_NEW_CONCEPTS_PER_SESSION_K12, MacroPedagogyPlanAuditSchema, MappingKindSchema, MarpSlideSchema, MasteryGateSchema, MediaError, MediaLedger, MentorCheatsheetSchema, MilestoneInputSchema, MisconceptionEvaluator, MisconceptionSchema, ModelPolicyResolver, NVIDIA_MODELS, NodeKindSchema, OrganizerTypeEnum, PhaseInputSchema, PlanConstraintsSchema, PlannerInputSchema, PlanningGraphSchema, PlanningNodeSchema, PrerequisiteDecisionEntrySchema, PrerequisiteDecisionSchema, ProductGoalSchema, ProgressiveHintsSchema, ProjectGraphAuditSchema, ProjectGraphSchema, ProjectInstructionSchema, ProjectProfileSchema, QualityAuditVerdictSchema, QuizOptionSchema, RecordProvenanceSchema, ResourceMapRowSchema, ReviewGameExportRowSchema, ReviewGameQuestionSchema, ReviewGameSchema, RoadmapInputSchema, RotationStationSchema, RubricCriteriaSchema, RubricSchema, SATELLITE_LESSON_PRIORITIES, SLIDE_CANONICAL_METHODOLOGY, STANDARD_REF_REGEX, STANDARD_SOT_FILES, STUDENT_FRICTION_MULTIPLIER, ScaffoldDecisionEntrySchema, ScaffoldDecisionSchema, ScienceLabSchema, ScoringRubricRowSchema, SelfLabSchema, SelfPacedBundleSchema, SelfPacedChallengeSchema, SessionPlanSchema, SessionZpdStatusSchema, SilverTierSchema, SlideBlueprintArraySchema, SlideBlueprintItemSchema, SlideDeckSchema, StandardizedTermRowSchema, StandardsRegistryAdapter, StationRecordRowSchema, StationRotationSchema, StationTypeEnum, SupabaseCurriculumAdapter, TaskCardSchema, TaskCardsSchema, TeacherGuideSchema, TeachingScriptPhaseSchema, TierLevelEnum, TierObjectiveSchema, TieredPracticeSchema, TranslationPolicySchema, TroubleshootingEntrySchema, TroubleshootingRowSchema, UnitPlanSchema, UserJourneySchema, WalkingSkeletonSchema, WorksheetItemSchema, WorksheetItemTypeEnum, WorksheetPartSchema, WorksheetSchema, ZpdVerdictSchema, activityTools, analystTools, analyzeProjectCreationIntent, assembleTranslatedTemplate, assertAcyclic, assessorTools, assignDepths, atomicWriteFileSync, auditCurriculumPlanFlow, auditCurriculumQualityFlow, auditProjectGraphFlow, auditQualityReport, buildActivityPrompt, buildArtifactPrompt, buildCodeLabPrompt, buildConceptPrerequisites, buildCurriculumContext, buildCurriculumPlan, buildCurriculumPlanJudgePrompt, buildDeliveryPackages, buildDiagnosticQuizPrompt, buildDomainLexiconGuardrail, buildExpositionContext, buildExpositionExcerpt, buildExtensionPrompt, buildHandoutPrompt, buildHeadingDirective, buildHtmlDeckSlidePrompt, buildImagePrompt, buildJudgePrompt, buildLanguageDirective, buildLessonEntityJson, buildLessonExcerpt, buildLessonMasterPrompt, buildMarpMarkdownSlidePrompt, buildMasteryGates, buildProjectGraphJudgePrompt, buildProjectInstructionPrompt, buildSatelliteContext, buildSectionAwareExcerpt, buildSelfLabPrompt, buildSessionSliceContext, buildSlidesPrompt, buildStandardStackMarkdown, buildStandardsContext, buildStandardsContextBlock, buildTeacherGuidePrompt, buildWalkingSkeleton, buildWorksheetPrompt, checkSessionZpd, closeTruncatedJson, computeConceptSpiralProgression, computeContentHash, computePackingSpec, conductPreliminaryResearch, contentTools, convertRoadmapToFoundationSot, createAiInferenceError, createContextMissingError, createCurriculumStorage, createIdleAbortController, createStreamAbortController, createStreamAbortSignal, createStreamChunkExtractor, curateMediaLedger, designerTools, detectProjectPedagogy, dropCyclicConceptEdges, emitUsage, ensureExpositionForLesson, ensureKnowledgeExposition, entityRowAssignedTo, evaluateActivityAlignment, evaluateStandardsCoverage, executeCurriculumCommand, executeSlideProductionWorkflow, exportAllProjectQuizzes, expositionCacheKey, extractActivityContractRows, extractAssessmentMap, extractConditionalSections, extractCurriculumHorizon, extractDeclaredLanguage, extractEchoSections, extractJsonArray, extractRequiredSections, extractScopeSequenceRows, extractSectionHeadingsFromSLC, extractSessionSlice, extractStandardRefs, extractStreamChunk, extractSymbolLedger, extractThoughtAndContent, extractTieredScaffoldingBlock, findStandardStatement, formatQuizzesToCsv, fulfillMediaLedger, gateModeFor, generateActivityFlow, generateCodeLabFlow, generateDiagnosticQuizFlow, generateEducationalImage, generateExtensionFlow, generateHandoutFlow, generateLessonMasterFlow, generateMilestoneCurriculumBundle, generatePhase1SotArtifacts, generatePhase2SotArtifacts, generateProjectInstruction, generateProjectInstructionFlow, generateRoadmapCurriculum, generateSelfLabFlow, generateSelfPacedBundle, generateSingleArtifact, generateSlidesFlow, generateTeacherGuideFlow, generateWorksheetFlow, getAIModel, getArtifactMetadata, getDesignatedFallbackChain, getDesignatedFallbackConfig, getLessonMetadata, getProjectArtifactScope, getProjectStatusReport, getSmartResumeContext, glossaryTermsForSession, illustratorTools, importRoadmapToProject, ingestProjectGraphIntoProject, initializeProjectInStorage, injectMediaIntoMarkdown, isActivityAlignmentLogOnly, isExpositionFresh, isModelAllowed, isProviderEnabled, isTranslationDue, lintAndSanitizeArtifact, lintCurriculumFramework, lintFrameworkPack, loadAuthoringTemplate, loadCurriculumTemplate, loadSotTemplate, normalizePlanningGraph, normalizeSlcContract, packagerTools, parseAllSessions, parseGateSettings, parseQuizMarkdown, parseRoadmapJsonToProjectPayload, produceBatchLessons, produceSingleLesson, publishToGitHub, publishToSupabase, rankGenCandidates, renderAssignedRowsTable, renderEntitySlotsForType, renderFrameworkFromPlan, renderHorizonPromptBlock, renderMediaPlaceholder, researcherTools, resolveApiKey, resolveArtifactTemplate, resolveGateSettings, resolveStandardsPacks, resolveStreamBudget, resolveTargetLanguageCode, resolveTranslationTargets, reviewerTools, runCurriculumAIInference, safeParseJson, searchEducationalImages, searchEducationalVideos, selectStatementsForLesson, serializeActivityToMarkdown, serializeCodeLabToMarkdown, serializeDiagnosticQuizToMarkdown, serializeHandoutToMarkdown, serializeLessonToMarkdown, serializeProjectInstructionToMarkdown, serializeSelfLabToMarkdown, slugifyProjectName, streamCurriculumAIInference, streamCurriculumAIInferenceWithTools, streamDiagnosticQuizFlow, streamLLMWithFallback, streamLayerPrefillWithFallback, streamLessonMasterFlow, streamSelfLabFlow, stripHeadingKey, stripLlmJsonWrappers, stripTemplateFrontmatter, targetLanguageDisplayName, techSmeTools, topoSort, translateTemplate, uploadAssetToBucket, validateArtifactDependencies, validateCurriculumPlan, validateFrameworkPack, validateHorizonCompliance, validateHybridDeckSlides, validateMarkdownTables, validateMermaidSyntax, withAutoRepair };
31517
+ export { ARTIFACT_DEPENDENCY_ROUTING, ARTIFACT_EXECUTION_ORDER, AcademicAuditor, ActionableRepairActionSchema, ActionableRepairPromptSchema, ActiveLearningWorkflowSchema, ActivityLabSchema, ActivitySeqRowSchema, ActivityStepSchema, ArtifactContractRowSchema, AssessmentMapRowSchema, AssessmentObjectiveSchema, BLOOM_ACTION_VERBS, BUNDLED_STANDARDS_PACK_IDS, BellRingerDaySchema, BellRingerSchema, BloomHintSchema, BloomLevelSchema, BloomTaxonomyEvaluator, BronzeTierSchema, CERConclusionSchema, CURRICULUM_SLASH_COMMANDS, CardTierEnum, ChoiceBoardRubricRowSchema, ChoiceBoardSchema, ChoiceRuleSchema, ChoiceSquareSchema, ClassificationSchema, CodeHardwareFeasibilityEvaluator, CodeLabSchema, CodeSnippetSchema, CompetencyRubricRowSchema, ComputationalThinkingSchema, ConceptPrerequisiteEdgeSchema, ConceptSpiralEncounterSchema, ConstructiveAlignmentEvaluator, CoreConceptSchema, CourseObjectiveSchema, CoverageReportSchema, CrossArtifactDriftEvaluator, CurriculumArtifactSchema, CurriculumError, CurriculumPlanSchema, CurriculumQualityReportSchema, DEFAULT_ARTIFACT_STREAM_IDLE_MS, DEFAULT_ARTIFACT_STREAM_TOTAL_MS, DEFAULT_ENABLED_PROVIDERS, DEFAULT_GATE_SETTINGS, DEFAULT_KX_PRIORITIES, DEFAULT_LESSON_PRIORITIES, DEFAULT_OVERHEAD_RATIO, DEFAULT_STREAM_IDLE_MS, DEFAULT_STREAM_TOTAL_MS, DependencyEdgeSchema, DepthAssignmentSchema, DepthLevelSchema, DeterministicPipelineRunner, DeterministicStructuralLinter, DiagnosticQuestionSchema, DiagnosticQuizSchema, EDPPhaseEnum, ENVIRONMENT_PROVISIONING_MODELS, EXPOSITION_REL, EntryLevelSchema, ExitTicketBugHuntSchema, ExitTicketMetacognitionSchema, ExitTicketQuickItemSchema, ExitTicketRecallPromptSchema, ExitTicketSchema, ExperimentalDesignSchema, ExpositionApprovalError, ExtensionChallengeSchema, ExtensionSchema, FileSystemCurriculumAdapter, FiveEFlowPhaseSchema, FiveEInstructionalEvaluator, FiveEPhaseEnum, FrameworkMappingSchema, FrameworkPackManifestSchema, FrameworkPackSchema, FrameworkStatementSchema, GeneratedSlideArraySchema, GeneratedSlideSchema, GlossaryQuickRefRowSchema, GlossarySchema, GlossaryTermSchema, GoldTierSchema, GradeBandSchema, GraphicOrganizerItemSchema, GraphicOrganizerSchema, HandoutSchema, HandoutSectionSchema, HybridBlueprintArraySchema, HybridBlueprintItemSchema, HybridDeckSlideArraySchema, HybridDeckSlideSchema, HybridPipelineError, InstructionSectionSchema, InstructionStepSchema, JUDGE_AUTO_APPROVE_THRESHOLD, JUDGE_ESCALATE_THRESHOLD, JudgeCriterionSchema, LAYER_IDLE_BUDGET_MS, LAYER_TOTAL_BUDGET_MS, LLMJudgeEngine, LabTierTaskSchema, LearningObjectiveInputSchema, LearningObjectiveRowSchema, LessonEntitySchema, LessonFlowPhaseSchema, LessonPlan5ESchema, LessonPlanEDPSchema, LessonPlanSchema, LessonSectionSchema, LocalWorkspaceManager, MAX_AUTONOMOUS_REPAIR_TURNS, MAX_IN_SESSION_SETUP_MINUTES, MAX_NEW_CONCEPTS_PER_SESSION_ADULT, MAX_NEW_CONCEPTS_PER_SESSION_K12, MacroPedagogyPlanAuditSchema, MappingKindSchema, MarpSlideSchema, MasteryGateSchema, MediaError, MediaLedger, MentorCheatsheetSchema, MilestoneInputSchema, MisconceptionEvaluator, MisconceptionSchema, ModelPolicyResolver, NVIDIA_MODELS, NodeKindSchema, OrganizerTypeEnum, PhaseInputSchema, PlanConstraintsSchema, PlannerInputSchema, PlanningGraphSchema, PlanningNodeSchema, PrerequisiteDecisionEntrySchema, PrerequisiteDecisionSchema, ProductGoalSchema, ProgressiveHintsSchema, ProjectGraphAuditSchema, ProjectGraphSchema, ProjectInstructionSchema, ProjectProfileSchema, QualityAuditVerdictSchema, QuizOptionSchema, RecordProvenanceSchema, ResourceMapRowSchema, ReviewGameExportRowSchema, ReviewGameQuestionSchema, ReviewGameSchema, RoadmapInputSchema, RotationStationSchema, RubricCriteriaSchema, RubricSchema, SATELLITE_LESSON_PRIORITIES, SLIDE_CANONICAL_METHODOLOGY, STANDARD_REF_REGEX, STANDARD_SOT_FILES, STUDENT_FRICTION_MULTIPLIER, ScaffoldDecisionEntrySchema, ScaffoldDecisionSchema, ScienceLabSchema, ScoringRubricRowSchema, SelfLabSchema, SelfPacedBundleSchema, SelfPacedChallengeSchema, SessionPlanSchema, SessionZpdStatusSchema, SilverTierSchema, SlideBlueprintArraySchema, SlideBlueprintItemSchema, SlideDeckSchema, StandardizedTermRowSchema, StandardsRegistryAdapter, StationRecordRowSchema, StationRotationSchema, StationTypeEnum, SupabaseCurriculumAdapter, TaskCardSchema, TaskCardsSchema, TeacherGuideSchema, TeachingScriptPhaseSchema, TierLevelEnum, TierObjectiveSchema, TieredPracticeSchema, TranslationPolicySchema, TroubleshootingEntrySchema, TroubleshootingRowSchema, UnitPlanSchema, UserJourneySchema, WalkingSkeletonSchema, WorksheetItemSchema, WorksheetItemTypeEnum, WorksheetPartSchema, WorksheetSchema, ZpdVerdictSchema, activityTools, analystTools, analyzeProjectCreationIntent, assembleTranslatedTemplate, assertAcyclic, assessorTools, assignDepths, atomicWriteFileSync, auditCurriculumPlanFlow, auditCurriculumQualityFlow, auditProjectGraphFlow, auditQualityReport, buildActivityPrompt, buildArtifactPrompt, buildCodeLabPrompt, buildConceptPrerequisites, buildCurriculumContext, buildCurriculumPlan, buildCurriculumPlanJudgePrompt, buildDeliveryPackages, buildDiagnosticQuizPrompt, buildDomainLexiconGuardrail, buildExpositionContext, buildExpositionExcerpt, buildExtensionPrompt, buildHandoutPrompt, buildHeadingDirective, buildHtmlDeckSlidePrompt, buildImagePrompt, buildJudgePrompt, buildLanguageDirective, buildLessonEntityJson, buildLessonExcerpt, buildLessonMasterPrompt, buildMarpMarkdownSlidePrompt, buildMasteryGates, buildProjectGraphJudgePrompt, buildProjectInstructionPrompt, buildSatelliteContext, buildSectionAwareExcerpt, buildSelfLabPrompt, buildSessionSliceContext, buildSlidesPrompt, buildStandardStackMarkdown, buildStandardsContext, buildStandardsContextBlock, buildTeacherGuidePrompt, buildWalkingSkeleton, buildWorksheetPrompt, checkSessionZpd, closeTruncatedJson, computeConceptSpiralProgression, computeContentHash, computePackingSpec, conductPreliminaryResearch, contentTools, convertRoadmapToFoundationSot, createAiInferenceError, createContextMissingError, createCurriculumStorage, createIdleAbortController, createStreamAbortController, createStreamAbortSignal, createStreamChunkExtractor, curateMediaLedger, designerTools, detectProjectPedagogy, dropCyclicConceptEdges, emitUsage, ensureExpositionForLesson, ensureKnowledgeExposition, entityRowAssignedTo, evaluateActivityAlignment, evaluateStandardsCoverage, executeCurriculumCommand, executeSlideProductionWorkflow, exportAllProjectQuizzes, expositionCacheKey, extractActivityContractRows, extractAssessmentMap, extractConditionalSections, extractCurriculumHorizon, extractDeclaredLanguage, extractEchoSections, extractJsonArray, extractRequiredSections, extractScopeSequenceRows, extractSectionHeadings, extractSessionSlice, extractStandardRefs, extractStreamChunk, extractSymbolLedger, extractThoughtAndContent, extractTieredScaffoldingBlock, findStandardStatement, formatQuizzesToCsv, fulfillMediaLedger, gateModeFor, generateActivityFlow, generateCodeLabFlow, generateDiagnosticQuizFlow, generateEducationalImage, generateExtensionFlow, generateHandoutFlow, generateLessonMasterFlow, generateMilestoneCurriculumBundle, generatePhase1SotArtifacts, generatePhase2SotArtifacts, generateProjectInstruction, generateProjectInstructionFlow, generateRoadmapCurriculum, generateSelfLabFlow, generateSelfPacedBundle, generateSingleArtifact, generateSlidesFlow, generateTeacherGuideFlow, generateWorksheetFlow, getAIModel, getArtifactMetadata, getDesignatedFallbackChain, getDesignatedFallbackConfig, getLessonMetadata, getProjectArtifactScope, getProjectStatusReport, getSmartResumeContext, glossaryTermsForSession, illustratorTools, importRoadmapToProject, ingestProjectGraphIntoProject, initializeProjectInStorage, injectMediaIntoMarkdown, isActivityAlignmentLogOnly, isExpositionFresh, isModelAllowed, isProviderEnabled, isTranslationDue, lintAndSanitizeArtifact, lintCurriculumFramework, lintFrameworkPack, loadAuthoringTemplate, loadCurriculumTemplate, loadSotTemplate, normalizePlanningGraph, packagerTools, parseAllSessions, parseGateSettings, parseQuizMarkdown, parseRoadmapJsonToProjectPayload, produceBatchLessons, produceSingleLesson, publishToGitHub, publishToSupabase, rankGenCandidates, renderAssignedRowsTable, renderEntitySlotsForType, renderFrameworkFromPlan, renderHorizonPromptBlock, renderMediaPlaceholder, researcherTools, resolveApiKey, resolveArtifactTemplate, resolveGateSettings, resolveStandardsPacks, resolveStreamBudget, resolveTargetLanguageCode, resolveTranslationTargets, reviewerTools, runCurriculumAIInference, safeParseJson, searchEducationalImages, searchEducationalVideos, selectStatementsForLesson, serializeActivityToMarkdown, serializeCodeLabToMarkdown, serializeDiagnosticQuizToMarkdown, serializeHandoutToMarkdown, serializeLessonToMarkdown, serializeProjectInstructionToMarkdown, serializeSelfLabToMarkdown, slugifyProjectName, streamCurriculumAIInference, streamCurriculumAIInferenceWithTools, streamDiagnosticQuizFlow, streamLLMWithFallback, streamLayerPrefillWithFallback, streamLessonMasterFlow, streamSelfLabFlow, stripHeadingKey, stripLlmJsonWrappers, stripTemplateFrontmatter, targetLanguageDisplayName, techSmeTools, topoSort, translateTemplate, uploadAssetToBucket, validateArtifactDependencies, validateCurriculumPlan, validateFrameworkPack, validateHorizonCompliance, validateHybridDeckSlides, validateMarkdownTables, validateMermaidSyntax, withAutoRepair };
31647
31518
  //# sourceMappingURL=index.mjs.map
31648
31519
  //# sourceMappingURL=index.mjs.map