@thanh01.pmt/curriculum-kit 1.4.47 → 1.4.48

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
@@ -4007,7 +4007,25 @@ var PlanningNodeSchema = z.object({
4007
4007
  file: z.string(),
4008
4008
  evidence: z.string().default("")
4009
4009
  })).default([]),
4010
- phase_id: z.string().default("")
4010
+ phase_id: z.string().default(""),
4011
+ // P52/T2.1: tangible user-visible outcome projected from the graph step
4012
+ // (checkpoint candidate for session cutting). Empty = not a checkpoint.
4013
+ user_visible_deliverable: z.string().default(""),
4014
+ // P52/T3.1 — depth-reconcile inputs (mirrored from the feed; optional so
4015
+ // raw graphs without variants keep planning unchanged):
4016
+ // • depth_variants: minutes to teach this node at each depth level (ULO ≤
4017
+ // CIO ≤ SIO) — the reconciler's price list for downgrades.
4018
+ // • depth_scaffold_candidates: parallel to scaffold_candidates but acting
4019
+ // on DEPTH (SIO→CIO, CIO→ULO) instead of lesson time.
4020
+ // • is_core: Master-Tree core concept — never downgraded; escalate instead.
4021
+ depth_variants: z.object({ ulo: z.number().int().nonnegative(), cio: z.number().int().nonnegative(), sio: z.number().int().nonnegative() }).optional(),
4022
+ depth_scaffold_candidates: z.array(z.object({
4023
+ from_depth: DepthLevelSchema,
4024
+ to_depth: DepthLevelSchema,
4025
+ minutes_saved: z.number().int().nonnegative(),
4026
+ reason: z.string().default("")
4027
+ })).optional(),
4028
+ is_core: z.boolean().default(false)
4011
4029
  });
4012
4030
  var DependencyEdgeSchema = z.object({
4013
4031
  from: z.string(),
@@ -5424,6 +5442,7 @@ var MAX_NEW_CONCEPTS_PER_SESSION_K12 = 2;
5424
5442
  var MAX_NEW_CONCEPTS_PER_SESSION_ADULT = 3;
5425
5443
  var DEFAULT_OVERHEAD_RATIO = 0.15;
5426
5444
  var MAX_IN_SESSION_SETUP_MINUTES = 15;
5445
+ var SESSION_CUT_TOLERANCE = 0.15;
5427
5446
  var ENVIRONMENT_PROVISIONING_MODELS = [
5428
5447
  "PRE_INSTALLED_LAB",
5429
5448
  "CLOUD_MANAGED",
@@ -10535,6 +10554,98 @@ async function ensureExpositionForLesson(storage, projectId, lessonCode, options
10535
10554
  return { relPath: result.relPath, context: buildExpositionContext(result.content), reused: result.reused, rawContent: result.content };
10536
10555
  }
10537
10556
  init_errors();
10557
+
10558
+ // src/services/depthReconciler.ts
10559
+ function tierOf(node, isLeaf) {
10560
+ if (node.phase_id !== "" && /__ADV\d{2}$/.test(node.id)) return 1;
10561
+ const depth = node.depth_hint ?? "cio";
10562
+ if (depth === "sio") return isLeaf ? 2 : 3;
10563
+ if (depth === "cio") return isLeaf ? 4 : 5;
10564
+ return -1;
10565
+ }
10566
+ function classifyDepthCandidates(nodes, edges) {
10567
+ const baseConcept = (id) => id.replace(/__(ADV|PREV)\d{2}$/, "");
10568
+ const conceptIds = new Set(nodes.filter((n) => n.kind === "concept").map((n) => baseConcept(n.id)));
10569
+ const hasDependent = /* @__PURE__ */ new Set();
10570
+ for (const e of edges) {
10571
+ if (e.kind !== "knowledge") continue;
10572
+ const from = baseConcept(e.from);
10573
+ const to = baseConcept(e.to);
10574
+ if (conceptIds.has(from) && conceptIds.has(to)) hasDependent.add(from);
10575
+ }
10576
+ const isLeaf = /* @__PURE__ */ new Map();
10577
+ for (const n of nodes) {
10578
+ if (n.kind !== "concept") continue;
10579
+ const base = baseConcept(n.id);
10580
+ if (!isLeaf.has(base)) isLeaf.set(base, !hasDependent.has(base));
10581
+ }
10582
+ return isLeaf;
10583
+ }
10584
+ function reconcilePlanDepth(nodes, edges, spec, budgetMinutes) {
10585
+ const MAX_ROUNDS = 5;
10586
+ const total = () => nodes.reduce((acc, n) => acc + n.estimated_minutes, 0);
10587
+ const isLeaf = classifyDepthCandidates(nodes, edges);
10588
+ const baseConcept = (id) => id.replace(/__(ADV|PREV)\d{2}$/, "");
10589
+ const applied = [];
10590
+ const mutated = /* @__PURE__ */ new Set();
10591
+ let rounds = 0;
10592
+ while (total() > budgetMinutes && rounds < MAX_ROUNDS) {
10593
+ rounds++;
10594
+ let overBy = total() - budgetMinutes;
10595
+ const candidates = [];
10596
+ for (let i = 0; i < nodes.length; i++) {
10597
+ const n = nodes[i];
10598
+ if (n.kind !== "concept") continue;
10599
+ if (n.is_core) continue;
10600
+ if (n.depth_hint == null) continue;
10601
+ const base = baseConcept(n.id);
10602
+ const leaf = isLeaf.get(base) ?? true;
10603
+ const tier = tierOf(n, leaf);
10604
+ if (tier < 0) continue;
10605
+ const depth = n.depth_hint ?? "cio";
10606
+ const toDepth = depth === "sio" ? "cio" : "ulo";
10607
+ const variants = n.depth_variants;
10608
+ const target = variants ? variants[toDepth] : Math.max(5, Math.round(n.estimated_minutes * 0.6));
10609
+ const saved = n.estimated_minutes - target;
10610
+ if (saved <= 0) continue;
10611
+ candidates.push({
10612
+ nodeId: n.id,
10613
+ fromDepth: depth,
10614
+ toDepth,
10615
+ minutesSaved: saved,
10616
+ reason: n.depth_scaffold_candidates?.find((c) => c.to_depth === toDepth)?.reason ?? `depth downgrade ${depth}\u2192${toDepth} (tier ${tier}${leaf ? ", leaf" : ""})`,
10617
+ node: n,
10618
+ tier,
10619
+ index: i
10620
+ });
10621
+ }
10622
+ if (candidates.length === 0) break;
10623
+ candidates.sort((a, b) => a.tier - b.tier || b.minutesSaved - a.minutesSaved);
10624
+ for (const c of candidates) {
10625
+ if (overBy <= 0) break;
10626
+ const n = c.node;
10627
+ const target = n.depth_variants ? n.depth_variants[c.toDepth] : Math.max(5, Math.round(n.estimated_minutes * 0.6));
10628
+ const saved = n.estimated_minutes - target;
10629
+ if (saved <= 0) continue;
10630
+ n.estimated_minutes = target;
10631
+ n.depth_hint = c.toDepth;
10632
+ applied.push({ nodeId: n.id, fromDepth: c.fromDepth, toDepth: c.toDepth, minutesSaved: saved, reason: c.reason });
10633
+ mutated.add(n.id);
10634
+ overBy -= saved;
10635
+ }
10636
+ }
10637
+ const finalTotal = total();
10638
+ const deficitMinutes = Math.max(0, finalTotal - budgetMinutes);
10639
+ return {
10640
+ unchanged: applied.length === 0,
10641
+ applied,
10642
+ mutatedNodeIds: [...mutated],
10643
+ escalate: deficitMinutes > 0,
10644
+ deficitMinutes
10645
+ };
10646
+ }
10647
+
10648
+ // src/services/curriculumPlannerService.ts
10538
10649
  var asArr = (v) => Array.isArray(v) ? v : [];
10539
10650
  var asStr = (v, dflt = "") => typeof v === "string" ? v : dflt;
10540
10651
  var asNum = (v, dflt) => typeof v === "number" && Number.isFinite(v) ? v : dflt;
@@ -10574,7 +10685,20 @@ function normalizePlanningGraph(raw) {
10574
10685
  suggest: asStr(c.suggest, "provide_full")
10575
10686
  })),
10576
10687
  references: asArr(n.references).map((ref) => ({ file: asStr(ref.file), evidence: asStr(ref.evidence) })).filter((ref) => ref.file),
10577
- phase_id: asStr(n.phase_id)
10688
+ phase_id: asStr(n.phase_id),
10689
+ user_visible_deliverable: asStr(n.user_visible_deliverable),
10690
+ depth_variants: (() => {
10691
+ const dv = n.depth_variants;
10692
+ if (!dv) return void 0;
10693
+ return { ulo: Math.max(0, Math.round(asNum(dv.ulo, 0))), cio: Math.max(0, Math.round(asNum(dv.cio, 0))), sio: Math.max(0, Math.round(asNum(dv.sio, 0))) };
10694
+ })(),
10695
+ depth_scaffold_candidates: asArr(n.depth_scaffold_candidates).map((c) => ({
10696
+ from_depth: asStr(c.from_depth, "sio"),
10697
+ to_depth: asStr(c.to_depth, "cio"),
10698
+ minutes_saved: Math.max(0, Math.round(asNum(c.minutes_saved, 0))),
10699
+ reason: asStr(c.reason)
10700
+ })),
10701
+ is_core: n.is_core === true
10578
10702
  });
10579
10703
  }
10580
10704
  for (const e of asArr(r.dependency_edges)) {
@@ -10618,7 +10742,9 @@ function normalizePlanningGraph(raw) {
10618
10742
  completion_level: "standard",
10619
10743
  scaffold_candidates: [],
10620
10744
  references: [],
10621
- phase_id: ""
10745
+ phase_id: "",
10746
+ user_visible_deliverable: "",
10747
+ is_core: false
10622
10748
  });
10623
10749
  for (const p of asStrArr(c.prerequisites)) {
10624
10750
  edges.push({ from: p, to: asStr(c.id), kind: "knowledge", reason: "concept prerequisite" });
@@ -10655,7 +10781,9 @@ function normalizePlanningGraph(raw) {
10655
10781
  completion_level: "standard",
10656
10782
  scaffold_candidates: [],
10657
10783
  references: [],
10658
- phase_id: ""
10784
+ phase_id: "",
10785
+ user_visible_deliverable: "",
10786
+ is_core: false
10659
10787
  });
10660
10788
  if (prev) edges.push({ from: prev, to: id, kind: "task", reason: "roadmap sequence" });
10661
10789
  prev = id;
@@ -10691,13 +10819,15 @@ function normalizePlanningGraph(raw) {
10691
10819
  completion_level: "standard",
10692
10820
  scaffold_candidates: [],
10693
10821
  references: [],
10694
- phase_id: ""
10822
+ phase_id: "",
10823
+ user_visible_deliverable: "",
10824
+ is_core: false
10695
10825
  });
10696
10826
  if (prev) edges.push({ from: prev, to: id, kind: "task", reason: "feature build order" });
10697
10827
  prev = id;
10698
10828
  }
10699
10829
  if (stepCount === 0 && fid) {
10700
- nodes.push({ id: fid, kind: "skill", name: asStr(f.name, fid), concept_codes: [], keywords: [], new_keywords: [], prerequisite_keywords: [], estimated_minutes: 45, bloom_hint: "Apply", depth_hint: null, completion_level: "standard", scaffold_candidates: [], references: [], phase_id: "" });
10830
+ nodes.push({ id: fid, kind: "skill", name: asStr(f.name, fid), concept_codes: [], keywords: [], new_keywords: [], prerequisite_keywords: [], estimated_minutes: 45, bloom_hint: "Apply", depth_hint: null, completion_level: "standard", scaffold_candidates: [], references: [], phase_id: "", user_visible_deliverable: "", is_core: false });
10701
10831
  }
10702
10832
  }
10703
10833
  }
@@ -10859,6 +10989,39 @@ function computePackingSpec(constraints) {
10859
10989
  sessionDurationMinutes: constraints.session_duration_minutes
10860
10990
  };
10861
10991
  }
10992
+ var filledOf = (s) => s.knowledgeMinutes + s.practiceMinutes;
10993
+ function cutBackToCheckpoint(current, nodeById, spec, warnings) {
10994
+ const budget = spec.contentBudget;
10995
+ const minFill = budget * (1 - SESSION_CUT_TOLERANCE);
10996
+ const hasPartAfter = new Array(current.entries.length).fill(false);
10997
+ let seenPart = false;
10998
+ for (let i = current.entries.length - 1; i >= 0; i--) {
10999
+ hasPartAfter[i] = seenPart;
11000
+ if (current.entries[i].totalParts > 1) seenPart = true;
11001
+ }
11002
+ let bestIdx = -1;
11003
+ let cumulative = 0;
11004
+ for (let i = 0; i < current.entries.length; i++) {
11005
+ const e = current.entries[i];
11006
+ cumulative += e.minutes;
11007
+ if (hasPartAfter[i] || e.totalParts > 1) continue;
11008
+ const n = nodeById.get(e.id);
11009
+ if (!n || n.user_visible_deliverable.trim().length === 0) continue;
11010
+ if (cumulative > budget || cumulative < minFill) continue;
11011
+ bestIdx = i;
11012
+ }
11013
+ if (bestIdx < 0) {
11014
+ warnings.push("no-checkpoint-within-tolerance: session cut at " + filledOf(current) + "m without a user-visible deliverable");
11015
+ return [];
11016
+ }
11017
+ const displacedEntries = current.entries.splice(bestIdx + 1);
11018
+ for (const e of displacedEntries) {
11019
+ if (nodeById.get(e.id)?.kind === "concept") current.knowledgeMinutes -= e.minutes;
11020
+ else current.practiceMinutes -= e.minutes;
11021
+ }
11022
+ current.nodeIds = current.entries.map((e) => e.id);
11023
+ return displacedEntries.map((e) => nodeById.get(e.id)).filter((n) => n != null);
11024
+ }
10862
11025
  function packUnitSessions(group, nodeById, spec, warnings) {
10863
11026
  const sessions = [];
10864
11027
  const fresh = () => ({ groupId: group.key, nodeIds: [], entries: [], knowledgeMinutes: 0, practiceMinutes: 0, oversized: false });
@@ -10868,7 +11031,9 @@ function packUnitSessions(group, nodeById, spec, warnings) {
10868
11031
  current = fresh();
10869
11032
  };
10870
11033
  const filled = () => current.knowledgeMinutes + current.practiceMinutes;
10871
- for (const id of group.orderedIds) {
11034
+ const ids = [...group.orderedIds];
11035
+ while (ids.length > 0) {
11036
+ const id = ids.shift();
10872
11037
  const node = nodeById.get(id);
10873
11038
  const isKnowledge = node.kind === "concept";
10874
11039
  if (node.estimated_minutes > spec.contentBudget) {
@@ -10904,7 +11069,16 @@ function packUnitSessions(group, nodeById, spec, warnings) {
10904
11069
  continue;
10905
11070
  }
10906
11071
  const minutes = node.estimated_minutes;
10907
- if (current.entries.length > 0 && filled() + minutes > spec.contentBudget) flush();
11072
+ if (current.entries.length > 0 && filled() + minutes > spec.contentBudget) {
11073
+ const displaced = cutBackToCheckpoint(current, nodeById, spec, warnings);
11074
+ if (displaced.length > 0) {
11075
+ ids.unshift(id);
11076
+ for (let di = displaced.length - 1; di >= 0; di--) ids.unshift(displaced[di].id);
11077
+ flush();
11078
+ continue;
11079
+ }
11080
+ flush();
11081
+ }
10908
11082
  if (isKnowledge) current.knowledgeMinutes += minutes;
10909
11083
  else current.practiceMinutes += minutes;
10910
11084
  current.entries.push({ id, minutes, part: 1, totalParts: 1 });
@@ -11214,6 +11388,19 @@ async function buildCurriculumPlan(rawGraph, options) {
11214
11388
  const graph = normalizePlanningGraph(rawGraph);
11215
11389
  warnings.push(...graph.warnings);
11216
11390
  assertAcyclic(graph.nodes, graph.edges);
11391
+ let reconcileSummary = null;
11392
+ if (typeof constraints.total_sessions === "number" && constraints.total_sessions > 0) {
11393
+ const spec0 = computePackingSpec(constraints);
11394
+ const budgetMinutes = constraints.total_sessions * spec0.contentBudget;
11395
+ reconcileSummary = reconcilePlanDepth(graph.nodes, graph.edges, spec0, budgetMinutes);
11396
+ if (!reconcileSummary.unchanged) {
11397
+ const saved = reconcileSummary.applied.reduce((a, x) => a + x.minutesSaved, 0);
11398
+ warnings.push(`depth reconcile: ${reconcileSummary.applied.length} downgrade(s), saved ${saved}m across ${reconcileSummary.mutatedNodeIds.length} node(s)`);
11399
+ }
11400
+ if (reconcileSummary.escalate) {
11401
+ warnings.push(`budget_escalation: deficit ${reconcileSummary.deficitMinutes}m after exhausting non-core depth candidates (budget ${constraints.total_sessions * computePackingSpec(constraints).contentBudget}m) \u2014 human review required`);
11402
+ }
11403
+ }
11217
11404
  const orderedIds = topoSort(graph.nodes, graph.edges);
11218
11405
  const nodeById = new Map(graph.nodes.map((n) => [n.id, n]));
11219
11406
  const spec = computePackingSpec(constraints);
@@ -31514,6 +31701,6 @@ function renderMediaPlaceholder(entry) {
31514
31701
  return `> \u{1F5BC}\uFE0F [\u1EA2nh \u0111ang ch\u1EDD: ${entry.name} \u2014 s\u1EBD \u0111\u01B0\u1EE3c t\u1EA1o sau khi duy\u1EC7t media]`;
31515
31702
  }
31516
31703
 
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 };
31704
+ 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, SESSION_CUT_TOLERANCE, 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, classifyDepthCandidates, 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, packUnitSessions, packagerTools, parseAllSessions, parseGateSettings, parseQuizMarkdown, parseRoadmapJsonToProjectPayload, produceBatchLessons, produceSingleLesson, publishToGitHub, publishToSupabase, rankGenCandidates, reconcilePlanDepth, 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 };
31518
31705
  //# sourceMappingURL=index.mjs.map
31519
31706
  //# sourceMappingURL=index.mjs.map