@thanh01.pmt/curriculum-kit 1.2.0 → 1.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.cts CHANGED
@@ -2,7 +2,7 @@ import { PlanConstraints, TranslationPolicy, CurriculumPlan, PlanningGraph, Plan
2
2
  export { ActiveLearningWorkflow, ActiveLearningWorkflowSchema, ActivityLabSchema, ActivitySeqRow, ActivitySeqRowSchema, ActivityStepSchema, ArtifactContractRowSchema, AssessmentMapRowSchema, AssessmentObjective, AssessmentObjectiveSchema, BellRinger, BellRingerDay, BellRingerDaySchema, BellRingerInput, BellRingerSchema, BloomLevel, BloomLevelSchema, BronzeTier, BronzeTierSchema, CERConclusion, CERConclusionSchema, CardTierEnum, ChoiceBoard, ChoiceBoardInput, ChoiceBoardRubricRowSchema, ChoiceBoardSchema, ChoiceRuleSchema, ChoiceSquare, ChoiceSquareSchema, CodeLabSchema, CodeSnippet, CodeSnippetSchema, CompetencyRubricRow, CompetencyRubricRowSchema, ComputationalThinking, ComputationalThinkingSchema, CoreConcept, CoreConceptSchema, CourseObjective, CourseObjectiveSchema, CoverageReport, CoverageReportSchema, CurriculumArtifact, CurriculumArtifactSchema, CurriculumPlanSchema, CurriculumQualityReport, CurriculumQualityReportSchema, DependencyEdgeSchema, DepthAssignment, DepthAssignmentSchema, DepthLevel, DepthLevelSchema, DiagnosticQuestion, DiagnosticQuestionInput, DiagnosticQuestionSchema, DiagnosticQuizSchema, EDPPhaseEnum, EntryLevelSchema, ExitTicket, ExitTicketBugHunt, ExitTicketBugHuntSchema, ExitTicketMetacognitionSchema, ExitTicketQuickItemSchema, ExitTicketRecallPromptSchema, ExitTicketSchema, ExperimentalDesignSchema, Extension, ExtensionChallengeSchema, ExtensionSchema, FiveEFlowPhaseSchema, FiveEPhaseEnum, Glossary, GlossaryInput, GlossaryQuickRefRowSchema, GlossarySchema, GlossaryTerm, GlossaryTermSchema, GoldTier, GoldTierSchema, GraphicOrganizer, GraphicOrganizerInput, GraphicOrganizerItem, GraphicOrganizerItemSchema, GraphicOrganizerSchema, Handout, HandoutSchema, HandoutSection, HandoutSectionSchema, InstructionSection, InstructionSectionSchema, InstructionStep, InstructionStepSchema, JudgeCriterionSchema, LabTierTask, LabTierTaskSchema, LearningObjectiveInput, LearningObjectiveInputSchema, LearningObjectiveRow, LearningObjectiveRowSchema, LessonFlowPhase, LessonFlowPhaseSchema, LessonPlan5E, LessonPlan5ESchema, LessonPlanEDP, LessonPlanEDPSchema, LessonPlanSchema, LessonSectionSchema, MarpSlide, MarpSlideSchema, MentorCheatsheetSchema, MilestoneInput, MilestoneInputSchema, Misconception, MisconceptionSchema, NodeKindSchema, OrganizerTypeEnum, PhaseInput, PhaseInputSchema, PlanConstraintsSchema, PlannerInput, PlannerInputSchema, PlanningGraphSchema, PlanningNodeSchema, PlanningPhase, PrerequisiteDecision, PrerequisiteDecisionEntry, PrerequisiteDecisionEntrySchema, PrerequisiteDecisionSchema, ProductGoalSchema, ProgressiveHints, ProgressiveHintsSchema, ProjectGraph, ProjectGraphSchema, ProjectInstruction, ProjectInstructionSchema, ProjectProfile, ProjectProfileSchema, ProjectRoadmap, QualityAuditVerdictSchema, QuizOption, QuizOptionSchema, ResourceMapRowSchema, ReviewGame, ReviewGameExportRowSchema, ReviewGameInput, ReviewGameQuestion, ReviewGameQuestionSchema, ReviewGameSchema, RoadmapInput, RoadmapInputSchema, RotationStation, RotationStationSchema, Rubric, RubricCriteria, RubricCriteriaSchema, RubricSchema, ScaffoldDecision, ScaffoldDecisionEntry, ScaffoldDecisionEntrySchema, ScaffoldDecisionSchema, ScienceLab, ScienceLabInput, ScienceLabSchema, ScoringRubricRowSchema, SelfLab, SelfLabSchema, SelfPacedBundle, SelfPacedBundleSchema, SelfPacedChallenge, SelfPacedChallengeSchema, SessionPlan, SessionPlanSchema, SilverTier, SilverTierSchema, SlideDeckSchema, StandardizedTermRowSchema, StationRecordRowSchema, StationRotation, StationRotationInput, StationRotationSchema, StationTypeEnum, TaskCard, TaskCardSchema, TaskCards, TaskCardsInput, TaskCardsSchema, TeacherGuide, TeacherGuideSchema, TeachingScriptPhase, TeachingScriptPhaseSchema, TierLevelEnum, TierObjectiveSchema, TieredPractice, TieredPracticeSchema, TranslationPolicySchema, TroubleshootingEntry, TroubleshootingEntrySchema, TroubleshootingRow, TroubleshootingRowSchema, UnitPlan, UnitPlanSchema, UserJourneySchema, Worksheet, WorksheetItem, WorksheetItemSchema, WorksheetItemTypeEnum, WorksheetPart, WorksheetPartSchema, WorksheetSchema, validateCurriculumPlan } from './schemas/index.cjs';
3
3
  import { A as AIProviderName, M as ModelResolutionOptions } from './provider-factory-DxzOVEmh.cjs';
4
4
  export { N as NVIDIA_MODELS, g as getAIModel } from './provider-factory-DxzOVEmh.cjs';
5
- export { ActivityPromptInput, AggregatedToolCall, AsyncLLMJudgeInput, AuditCurriculumQualityInput, CodeLabPromptInput, DEFAULT_ENABLED_PROVIDERS, DiagnosticQuizPromptInput, ExtensionPromptInput, GenerateActivityInput, GenerateCodeLabInput, GenerateDiagnosticQuizInput, GenerateExtensionInput, GenerateHandoutInput, GenerateLessonMasterInput, GenerateProjectInstructionInput, GenerateSelfLabInput, GenerateSlidesInput, GenerateTeacherGuideInput, GenerateWorksheetInput, HandoutPromptInput, JudgeEvaluationResult, JudgePromptInput, LLMJudgeEngine, LessonPromptInput, MarpMarkdownSlidePromptInput, ModelPolicyResolution, ModelPolicyResolver, ModelProviderKey, MultiProviderPolicyResolution, ProjectInstructionPromptInput, SLIDE_CANONICAL_METHODOLOGY, SelfLabPromptInput, SlidesPromptInput, StreamDiagnosticQuizInput, StreamLessonMasterInput, StreamSelfLabInput, TeacherGuidePromptInput, ToolDefinition, ToolExecutionResult, ToolExecutor, ToolLoopConfig, WorksheetPromptInput, activityTools, analystTools, assessorTools, auditCurriculumQualityFlow, buildActivityPrompt, buildCodeLabPrompt, buildDiagnosticQuizPrompt, buildExtensionPrompt, buildHandoutPrompt, buildJudgePrompt, buildLessonMasterPrompt, buildMarpMarkdownSlidePrompt, buildProjectInstructionPrompt, buildSelfLabPrompt, buildSlidesPrompt, buildTeacherGuidePrompt, buildWorksheetPrompt, contentTools, designerTools, generateActivityFlow, generateCodeLabFlow, generateDiagnosticQuizFlow, generateExtensionFlow, generateHandoutFlow, generateLessonMasterFlow, generateProjectInstructionFlow, generateSelfLabFlow, generateSlidesFlow, generateTeacherGuideFlow, generateWorksheetFlow, illustratorTools, packagerTools, researcherTools, reviewerTools, streamCurriculumAIInferenceWithTools, streamDiagnosticQuizFlow, streamLessonMasterFlow, streamSelfLabFlow, techSmeTools } from './ai/index.cjs';
5
+ export { ActivityPromptInput, AggregatedToolCall, AsyncLLMJudgeInput, AuditCurriculumQualityInput, CodeLabPromptInput, DEFAULT_ENABLED_PROVIDERS, DiagnosticQuizPromptInput, ExtensionPromptInput, GenerateActivityInput, GenerateCodeLabInput, GenerateDiagnosticQuizInput, GenerateExtensionInput, GenerateHandoutInput, GenerateLessonMasterInput, GenerateProjectInstructionInput, GenerateSelfLabInput, GenerateSlidesInput, GenerateTeacherGuideInput, GenerateWorksheetInput, HandoutPromptInput, HtmlDeckSlidePromptInput, JudgeEvaluationResult, JudgePromptInput, LLMJudgeEngine, LessonPromptInput, MarpMarkdownSlidePromptInput, ModelPolicyResolution, ModelPolicyResolver, ModelProviderKey, MultiProviderPolicyResolution, ProjectInstructionPromptInput, SLIDE_CANONICAL_METHODOLOGY, SelfLabPromptInput, SlidesPromptInput, StreamDiagnosticQuizInput, StreamLessonMasterInput, StreamSelfLabInput, TeacherGuidePromptInput, ToolDefinition, ToolExecutionResult, ToolExecutor, ToolLoopConfig, WorksheetPromptInput, activityTools, analystTools, assessorTools, auditCurriculumQualityFlow, buildActivityPrompt, buildCodeLabPrompt, buildDiagnosticQuizPrompt, buildExtensionPrompt, buildHandoutPrompt, buildHtmlDeckSlidePrompt, buildJudgePrompt, buildLessonMasterPrompt, buildMarpMarkdownSlidePrompt, buildProjectInstructionPrompt, buildSelfLabPrompt, buildSlidesPrompt, buildTeacherGuidePrompt, buildWorksheetPrompt, contentTools, designerTools, generateActivityFlow, generateCodeLabFlow, generateDiagnosticQuizFlow, generateExtensionFlow, generateHandoutFlow, generateLessonMasterFlow, generateProjectInstructionFlow, generateSelfLabFlow, generateSlidesFlow, generateTeacherGuideFlow, generateWorksheetFlow, illustratorTools, packagerTools, researcherTools, reviewerTools, streamCurriculumAIInferenceWithTools, streamDiagnosticQuizFlow, streamLessonMasterFlow, streamSelfLabFlow, techSmeTools } from './ai/index.cjs';
6
6
  export { C as ChatMessage, c as ChunkType, D as DEFAULT_ARTIFACT_STREAM_IDLE_MS, d as DEFAULT_ARTIFACT_STREAM_TOTAL_MS, F as FallbackTarget, I as IdleAbort, f as StreamAbortController, S as StreamRunnerOptions, j as createIdleAbortController, h as createStreamAbortController, e as extractThoughtAndContent, g as getDesignatedFallbackChain, b as getDesignatedFallbackConfig, a as isModelAllowed, i as isProviderEnabled, r as runCurriculumAIInference, s as streamCurriculumAIInference } from './streamRunner-DtQq0HV_.cjs';
7
7
  export { ArtifactLintReport, ConvertedSotBundle, GenerateProjectInstructionOptions, GenerateRoadmapCurriculumOptions, GenerateSelfPacedBundleInput, LintIssue, ProjectInstructionResult, RoadmapCurriculumOutput, SelfPacedBundleOutput, convertRoadmapToFoundationSot, generateProjectInstruction, generateRoadmapCurriculum, generateSelfPacedBundle, importRoadmapToProject, lintAndSanitizeArtifact, serializeActivityToMarkdown, serializeCodeLabToMarkdown, serializeDiagnosticQuizToMarkdown, serializeHandoutToMarkdown, serializeLessonToMarkdown, serializeProjectInstructionToMarkdown, serializeSelfLabToMarkdown, validateMarkdownTables, validateMermaidSyntax } from './pipeline/index.cjs';
8
8
  export { A as AutoRepairOptions, a as AutoRepairResult, B as BundleTier, G as GenerateMilestoneBundleOptions, M as MilestoneCurriculumBundle, g as generateMilestoneCurriculumBundle, w as withAutoRepair } from './milestoneBundleGenerator-CzSOeAzU.cjs';
@@ -11,8 +11,8 @@ export { b as ArtifactLifecycleInfo, A as ArtifactLifecycleState, L as LessonArt
11
11
  export { FileSystemCurriculumAdapter, FileSystemStorageOptions, STANDARD_SOT_FILES, StorageFactoryOptions, SupabaseCurriculumAdapter, SupabaseStorageConfig, computeContentHash, createCurriculumStorage } from './storage/index.cjs';
12
12
  import { F as FrameworkPack } from './standardsCoverageGate-CsUNzv6C.cjs';
13
13
  export { B as BloomHintSchema, a as ClassificationSchema, m as CoverageGateInput, C as CoverageGateReport, 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-CsUNzv6C.cjs';
14
- import { R as ResolvedGateSettings } from './gateSettings-Buk_MSML.cjs';
15
- 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-Buk_MSML.cjs';
14
+ import { R as ResolvedGateSettings } from './gateSettings-L3FR2-MO.cjs';
15
+ 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';
16
16
  export { DeliveryPackResult, JobManifest, LocalWorkspaceManager, ParsedQuizQuestion, buildDeliveryPackages, exportAllProjectQuizzes, formatQuizzesToCsv, parseQuizMarkdown } from './publishers/index.cjs';
17
17
  export { G as GitPublishOptions, a as GitPublishResult, S as SupabasePublishOptions, b as SupabasePublishResult, p as publishToGitHub, c as publishToSupabase, u as uploadAssetToBucket } from './supabasePublisher-C627qXFT.cjs';
18
18
  export { BUNDLED_STANDARDS_PACK_IDS, HydratedPack, ImportPackResult, SelectedStatement, StandardStackOptions, StandardsRegistryAdapter, StandardsRegistryConfig, StandardsSelectionInput, buildStandardStackMarkdown, buildStandardsContext, buildStandardsContextBlock, resolveStandardsPacks, selectStatementsForLesson } from './standards/index.cjs';
@@ -134,6 +134,7 @@ interface ProduceLessonOptions {
134
134
  pedagogy?: PedagogicalModel;
135
135
  targetLanguage?: string;
136
136
  sectionLanguageContract?: string;
137
+ slidesEngine?: 'html' | 'marp';
137
138
  /** Chiến lược batch (chỉ produceBatchLessons dùng). */
138
139
  batchStrategy?: 'depth_first_lesson' | 'breadth_first_artifact';
139
140
  /**
package/dist/index.d.ts CHANGED
@@ -2,7 +2,7 @@ import { PlanConstraints, TranslationPolicy, CurriculumPlan, PlanningGraph, Plan
2
2
  export { ActiveLearningWorkflow, ActiveLearningWorkflowSchema, ActivityLabSchema, ActivitySeqRow, ActivitySeqRowSchema, ActivityStepSchema, ArtifactContractRowSchema, AssessmentMapRowSchema, AssessmentObjective, AssessmentObjectiveSchema, BellRinger, BellRingerDay, BellRingerDaySchema, BellRingerInput, BellRingerSchema, BloomLevel, BloomLevelSchema, BronzeTier, BronzeTierSchema, CERConclusion, CERConclusionSchema, CardTierEnum, ChoiceBoard, ChoiceBoardInput, ChoiceBoardRubricRowSchema, ChoiceBoardSchema, ChoiceRuleSchema, ChoiceSquare, ChoiceSquareSchema, CodeLabSchema, CodeSnippet, CodeSnippetSchema, CompetencyRubricRow, CompetencyRubricRowSchema, ComputationalThinking, ComputationalThinkingSchema, CoreConcept, CoreConceptSchema, CourseObjective, CourseObjectiveSchema, CoverageReport, CoverageReportSchema, CurriculumArtifact, CurriculumArtifactSchema, CurriculumPlanSchema, CurriculumQualityReport, CurriculumQualityReportSchema, DependencyEdgeSchema, DepthAssignment, DepthAssignmentSchema, DepthLevel, DepthLevelSchema, DiagnosticQuestion, DiagnosticQuestionInput, DiagnosticQuestionSchema, DiagnosticQuizSchema, EDPPhaseEnum, EntryLevelSchema, ExitTicket, ExitTicketBugHunt, ExitTicketBugHuntSchema, ExitTicketMetacognitionSchema, ExitTicketQuickItemSchema, ExitTicketRecallPromptSchema, ExitTicketSchema, ExperimentalDesignSchema, Extension, ExtensionChallengeSchema, ExtensionSchema, FiveEFlowPhaseSchema, FiveEPhaseEnum, Glossary, GlossaryInput, GlossaryQuickRefRowSchema, GlossarySchema, GlossaryTerm, GlossaryTermSchema, GoldTier, GoldTierSchema, GraphicOrganizer, GraphicOrganizerInput, GraphicOrganizerItem, GraphicOrganizerItemSchema, GraphicOrganizerSchema, Handout, HandoutSchema, HandoutSection, HandoutSectionSchema, InstructionSection, InstructionSectionSchema, InstructionStep, InstructionStepSchema, JudgeCriterionSchema, LabTierTask, LabTierTaskSchema, LearningObjectiveInput, LearningObjectiveInputSchema, LearningObjectiveRow, LearningObjectiveRowSchema, LessonFlowPhase, LessonFlowPhaseSchema, LessonPlan5E, LessonPlan5ESchema, LessonPlanEDP, LessonPlanEDPSchema, LessonPlanSchema, LessonSectionSchema, MarpSlide, MarpSlideSchema, MentorCheatsheetSchema, MilestoneInput, MilestoneInputSchema, Misconception, MisconceptionSchema, NodeKindSchema, OrganizerTypeEnum, PhaseInput, PhaseInputSchema, PlanConstraintsSchema, PlannerInput, PlannerInputSchema, PlanningGraphSchema, PlanningNodeSchema, PlanningPhase, PrerequisiteDecision, PrerequisiteDecisionEntry, PrerequisiteDecisionEntrySchema, PrerequisiteDecisionSchema, ProductGoalSchema, ProgressiveHints, ProgressiveHintsSchema, ProjectGraph, ProjectGraphSchema, ProjectInstruction, ProjectInstructionSchema, ProjectProfile, ProjectProfileSchema, ProjectRoadmap, QualityAuditVerdictSchema, QuizOption, QuizOptionSchema, ResourceMapRowSchema, ReviewGame, ReviewGameExportRowSchema, ReviewGameInput, ReviewGameQuestion, ReviewGameQuestionSchema, ReviewGameSchema, RoadmapInput, RoadmapInputSchema, RotationStation, RotationStationSchema, Rubric, RubricCriteria, RubricCriteriaSchema, RubricSchema, ScaffoldDecision, ScaffoldDecisionEntry, ScaffoldDecisionEntrySchema, ScaffoldDecisionSchema, ScienceLab, ScienceLabInput, ScienceLabSchema, ScoringRubricRowSchema, SelfLab, SelfLabSchema, SelfPacedBundle, SelfPacedBundleSchema, SelfPacedChallenge, SelfPacedChallengeSchema, SessionPlan, SessionPlanSchema, SilverTier, SilverTierSchema, SlideDeckSchema, StandardizedTermRowSchema, StationRecordRowSchema, StationRotation, StationRotationInput, StationRotationSchema, StationTypeEnum, TaskCard, TaskCardSchema, TaskCards, TaskCardsInput, TaskCardsSchema, TeacherGuide, TeacherGuideSchema, TeachingScriptPhase, TeachingScriptPhaseSchema, TierLevelEnum, TierObjectiveSchema, TieredPractice, TieredPracticeSchema, TranslationPolicySchema, TroubleshootingEntry, TroubleshootingEntrySchema, TroubleshootingRow, TroubleshootingRowSchema, UnitPlan, UnitPlanSchema, UserJourneySchema, Worksheet, WorksheetItem, WorksheetItemSchema, WorksheetItemTypeEnum, WorksheetPart, WorksheetPartSchema, WorksheetSchema, validateCurriculumPlan } from './schemas/index.js';
3
3
  import { A as AIProviderName, M as ModelResolutionOptions } from './provider-factory-DxzOVEmh.js';
4
4
  export { N as NVIDIA_MODELS, g as getAIModel } from './provider-factory-DxzOVEmh.js';
5
- export { ActivityPromptInput, AggregatedToolCall, AsyncLLMJudgeInput, AuditCurriculumQualityInput, CodeLabPromptInput, DEFAULT_ENABLED_PROVIDERS, DiagnosticQuizPromptInput, ExtensionPromptInput, GenerateActivityInput, GenerateCodeLabInput, GenerateDiagnosticQuizInput, GenerateExtensionInput, GenerateHandoutInput, GenerateLessonMasterInput, GenerateProjectInstructionInput, GenerateSelfLabInput, GenerateSlidesInput, GenerateTeacherGuideInput, GenerateWorksheetInput, HandoutPromptInput, JudgeEvaluationResult, JudgePromptInput, LLMJudgeEngine, LessonPromptInput, MarpMarkdownSlidePromptInput, ModelPolicyResolution, ModelPolicyResolver, ModelProviderKey, MultiProviderPolicyResolution, ProjectInstructionPromptInput, SLIDE_CANONICAL_METHODOLOGY, SelfLabPromptInput, SlidesPromptInput, StreamDiagnosticQuizInput, StreamLessonMasterInput, StreamSelfLabInput, TeacherGuidePromptInput, ToolDefinition, ToolExecutionResult, ToolExecutor, ToolLoopConfig, WorksheetPromptInput, activityTools, analystTools, assessorTools, auditCurriculumQualityFlow, buildActivityPrompt, buildCodeLabPrompt, buildDiagnosticQuizPrompt, buildExtensionPrompt, buildHandoutPrompt, buildJudgePrompt, buildLessonMasterPrompt, buildMarpMarkdownSlidePrompt, buildProjectInstructionPrompt, buildSelfLabPrompt, buildSlidesPrompt, buildTeacherGuidePrompt, buildWorksheetPrompt, contentTools, designerTools, generateActivityFlow, generateCodeLabFlow, generateDiagnosticQuizFlow, generateExtensionFlow, generateHandoutFlow, generateLessonMasterFlow, generateProjectInstructionFlow, generateSelfLabFlow, generateSlidesFlow, generateTeacherGuideFlow, generateWorksheetFlow, illustratorTools, packagerTools, researcherTools, reviewerTools, streamCurriculumAIInferenceWithTools, streamDiagnosticQuizFlow, streamLessonMasterFlow, streamSelfLabFlow, techSmeTools } from './ai/index.js';
5
+ export { ActivityPromptInput, AggregatedToolCall, AsyncLLMJudgeInput, AuditCurriculumQualityInput, CodeLabPromptInput, DEFAULT_ENABLED_PROVIDERS, DiagnosticQuizPromptInput, ExtensionPromptInput, GenerateActivityInput, GenerateCodeLabInput, GenerateDiagnosticQuizInput, GenerateExtensionInput, GenerateHandoutInput, GenerateLessonMasterInput, GenerateProjectInstructionInput, GenerateSelfLabInput, GenerateSlidesInput, GenerateTeacherGuideInput, GenerateWorksheetInput, HandoutPromptInput, HtmlDeckSlidePromptInput, JudgeEvaluationResult, JudgePromptInput, LLMJudgeEngine, LessonPromptInput, MarpMarkdownSlidePromptInput, ModelPolicyResolution, ModelPolicyResolver, ModelProviderKey, MultiProviderPolicyResolution, ProjectInstructionPromptInput, SLIDE_CANONICAL_METHODOLOGY, SelfLabPromptInput, SlidesPromptInput, StreamDiagnosticQuizInput, StreamLessonMasterInput, StreamSelfLabInput, TeacherGuidePromptInput, ToolDefinition, ToolExecutionResult, ToolExecutor, ToolLoopConfig, WorksheetPromptInput, activityTools, analystTools, assessorTools, auditCurriculumQualityFlow, buildActivityPrompt, buildCodeLabPrompt, buildDiagnosticQuizPrompt, buildExtensionPrompt, buildHandoutPrompt, buildHtmlDeckSlidePrompt, buildJudgePrompt, buildLessonMasterPrompt, buildMarpMarkdownSlidePrompt, buildProjectInstructionPrompt, buildSelfLabPrompt, buildSlidesPrompt, buildTeacherGuidePrompt, buildWorksheetPrompt, contentTools, designerTools, generateActivityFlow, generateCodeLabFlow, generateDiagnosticQuizFlow, generateExtensionFlow, generateHandoutFlow, generateLessonMasterFlow, generateProjectInstructionFlow, generateSelfLabFlow, generateSlidesFlow, generateTeacherGuideFlow, generateWorksheetFlow, illustratorTools, packagerTools, researcherTools, reviewerTools, streamCurriculumAIInferenceWithTools, streamDiagnosticQuizFlow, streamLessonMasterFlow, streamSelfLabFlow, techSmeTools } from './ai/index.js';
6
6
  export { C as ChatMessage, c as ChunkType, D as DEFAULT_ARTIFACT_STREAM_IDLE_MS, d as DEFAULT_ARTIFACT_STREAM_TOTAL_MS, F as FallbackTarget, I as IdleAbort, f as StreamAbortController, S as StreamRunnerOptions, j as createIdleAbortController, h as createStreamAbortController, e as extractThoughtAndContent, g as getDesignatedFallbackChain, b as getDesignatedFallbackConfig, a as isModelAllowed, i as isProviderEnabled, r as runCurriculumAIInference, s as streamCurriculumAIInference } from './streamRunner-DtQq0HV_.js';
7
7
  export { ArtifactLintReport, ConvertedSotBundle, GenerateProjectInstructionOptions, GenerateRoadmapCurriculumOptions, GenerateSelfPacedBundleInput, LintIssue, ProjectInstructionResult, RoadmapCurriculumOutput, SelfPacedBundleOutput, convertRoadmapToFoundationSot, generateProjectInstruction, generateRoadmapCurriculum, generateSelfPacedBundle, importRoadmapToProject, lintAndSanitizeArtifact, serializeActivityToMarkdown, serializeCodeLabToMarkdown, serializeDiagnosticQuizToMarkdown, serializeHandoutToMarkdown, serializeLessonToMarkdown, serializeProjectInstructionToMarkdown, serializeSelfLabToMarkdown, validateMarkdownTables, validateMermaidSyntax } from './pipeline/index.js';
8
8
  export { A as AutoRepairOptions, a as AutoRepairResult, B as BundleTier, G as GenerateMilestoneBundleOptions, M as MilestoneCurriculumBundle, g as generateMilestoneCurriculumBundle, w as withAutoRepair } from './milestoneBundleGenerator-Bkba8OPG.js';
@@ -11,8 +11,8 @@ export { b as ArtifactLifecycleInfo, A as ArtifactLifecycleState, L as LessonArt
11
11
  export { FileSystemCurriculumAdapter, FileSystemStorageOptions, STANDARD_SOT_FILES, StorageFactoryOptions, SupabaseCurriculumAdapter, SupabaseStorageConfig, computeContentHash, createCurriculumStorage } from './storage/index.js';
12
12
  import { F as FrameworkPack } from './standardsCoverageGate-CsUNzv6C.js';
13
13
  export { B as BloomHintSchema, a as ClassificationSchema, m as CoverageGateInput, C as CoverageGateReport, 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-CsUNzv6C.js';
14
- import { R as ResolvedGateSettings } from './gateSettings-Buk_MSML.js';
15
- 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-Buk_MSML.js';
14
+ import { R as ResolvedGateSettings } from './gateSettings-L3FR2-MO.js';
15
+ 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';
16
16
  export { DeliveryPackResult, JobManifest, LocalWorkspaceManager, ParsedQuizQuestion, buildDeliveryPackages, exportAllProjectQuizzes, formatQuizzesToCsv, parseQuizMarkdown } from './publishers/index.js';
17
17
  export { G as GitPublishOptions, a as GitPublishResult, S as SupabasePublishOptions, b as SupabasePublishResult, p as publishToGitHub, c as publishToSupabase, u as uploadAssetToBucket } from './supabasePublisher-C627qXFT.js';
18
18
  export { BUNDLED_STANDARDS_PACK_IDS, HydratedPack, ImportPackResult, SelectedStatement, StandardStackOptions, StandardsRegistryAdapter, StandardsRegistryConfig, StandardsSelectionInput, buildStandardStackMarkdown, buildStandardsContext, buildStandardsContextBlock, resolveStandardsPacks, selectStatementsForLesson } from './standards/index.js';
@@ -134,6 +134,7 @@ interface ProduceLessonOptions {
134
134
  pedagogy?: PedagogicalModel;
135
135
  targetLanguage?: string;
136
136
  sectionLanguageContract?: string;
137
+ slidesEngine?: 'html' | 'marp';
137
138
  /** Chiến lược batch (chỉ produceBatchLessons dùng). */
138
139
  batchStrategy?: 'depth_first_lesson' | 'breadth_first_artifact';
139
140
  /**
package/dist/index.mjs CHANGED
@@ -5421,6 +5421,54 @@ ${input.languageDirective}
5421
5421
 
5422
5422
  ${input.headingDirective}`.trim();
5423
5423
  }
5424
+ function buildHtmlDeckSlidePrompt(input) {
5425
+ const contract = input.customContract || `## HTML SLIDE ENGINE \u2014 AGENT GENERATION CONTRACT
5426
+ You generate structured slide decks for the LearnWell HTML Slide Presentation Engine.
5427
+ Your output MUST be a single, valid JSON object matching the Slide Deck JSON schema below.
5428
+
5429
+ ### \u{1F3A8} Available Layout Presets (Use layoutId):
5430
+ 1. **hero-cover**: Title/Cover slide with title, subtitle, presenter, date, tag.
5431
+ 2. **two-column-split**: Side-by-side comparison (col1Title, col1Items[], col2Title, col2Items[]).
5432
+ 3. **code-explainer**: Code walkthrough with filename, language, code, highlightLines, annotations[].
5433
+ 4. **metrics-3-card**: 3 key stat cards (card1Title, card1Val, card1Desc, card2..., card3...).
5434
+ 5. **process-flow**: Step-by-step pipeline (steps: [{ label, desc, status }]).
5435
+ 6. **quiz-checkpoint**: Quick multiple choice question (question, options[], answerIdx, explanation).
5436
+ 7. **tiered-practice-3cards**: Differentiated tiers (foundation, standard, challenge cards).
5437
+ 8. **takeaways-summary**: Summary review with bullet takeaways.
5438
+
5439
+ ### \u{1F399}\uFE0F Mandatory 3-Part Presenter Notes on EVERY slide:
5440
+ Every slide MUST include notes with:
5441
+ - Talk Track: 2-3 sentences speaking script
5442
+ - Cold-Call: 1 check question
5443
+ - Scaffolding Tip: 1 analogy or hint
5444
+
5445
+ ### Output JSON Format:
5446
+ \`\`\`json
5447
+ {
5448
+ "title": "${input.lessonTitle}",
5449
+ "theme": "ocean",
5450
+ "slides": [
5451
+ {
5452
+ "layoutId": "hero-cover",
5453
+ "slots": { "title": "${input.lessonTitle}", "subtitle": "..." },
5454
+ "notes": "Talk Track: ...\\nCold-Call: ...\\nScaffolding Tip: ..."
5455
+ }
5456
+ ]
5457
+ }
5458
+ \`\`\``;
5459
+ return `You are @illustrator & @content (Interactive HTML Slide Deck Presentation Architects).
5460
+ Based on Master Lesson Plan \`LESSON_${input.lessonCode}.md\`, pedagogical model (${input.pedagogyLabel}), and the HTML SLIDE ENGINE CONTRACT below, author the complete, highly engaging HTML presentation deck in JSON format: \`SLIDE_${input.lessonCode}\`.
5461
+
5462
+ ${contract}
5463
+
5464
+ ${input.languageDirective}
5465
+
5466
+ ${input.headingDirective}${input.glossaryBlock ? `
5467
+
5468
+ ${input.glossaryBlock}` : ""}
5469
+
5470
+ Output ONLY the raw JSON object. Do not include extra conversational text or markdown code fences.`.trim();
5471
+ }
5424
5472
 
5425
5473
  // src/ai/prompts/teacherGuidePrompt.ts
5426
5474
  function buildTeacherGuidePrompt(input) {
@@ -5560,13 +5608,13 @@ Evaluate the candidate artifact across these 6 dimensions:
5560
5608
  - 0 pts: Missing critical sections.
5561
5609
 
5562
5610
  5. **Technical & Conceptual Accuracy (15 pts):**
5563
- - 15 pts: Code snippets, logic flows, architectural descriptions, and Mermaid diagrams are conceptually sound, valid, and free of syntax hallucinations.
5611
+ - 15 pts: Code snippets, logic flows, architectural descriptions, and Mermaid diagrams are conceptually sound and valid. If \`canonicalExposition\` or \`[KNOWLEDGE_EXPOSITION]\` is provided, content strictly adheres to canonical concepts without contradicting definitions or examples.
5564
5612
  - 8 pts: Minor syntax inaccuracies or unidiomatic code that does not break core concepts.
5565
- - 0 pts: Severe technical hallucinations, broken logic, or invalid diagrams.
5613
+ - 0 pts: Severe technical hallucinations, broken logic, invalid diagrams, or direct contradiction of canonical exposition knowledge.
5566
5614
 
5567
5615
  6. **Contract Consistency & Zero-Drift (10 pts):**
5568
- - 10 pts: Satellite artifact strictly adheres to the scope, tech stack, and objectives of Lesson ${lessonId} without introducing unrelated topics.
5569
- - 0-5 pts: Scope drift or topic divergence detected.
5616
+ - 10 pts: Satellite artifact strictly adheres to the scope, tech stack, and objectives of Lesson ${lessonId} without introducing unrelated topics. If \`canonicalLessonExcerpt\` is present in candidate JSON, all satellite phases/activities strictly operationalize the master Lesson Flow and Activity Sequence without inventing divergent timelines.
5617
+ - 0-5 pts: Scope drift, topic divergence, or disjoint activity sequence detected compared to master lesson.
5570
5618
 
5571
5619
  ## VERDICT RULES
5572
5620
  - **PASS:** Score >= 80 AND Language Adherence = true AND Standards Alignment >= 12 (when STANDARDS GROUND TRUTH is present).
@@ -11861,11 +11909,42 @@ async function produceSingleLesson(storage, projectId, lessonId, options = {}) {
11861
11909
  }
11862
11910
  const pedagogy = detectProjectPedagogy(framework, styleGuide, options.pedagogy);
11863
11911
  const pedagogyLabel = pedagogy.toUpperCase();
11864
- const styleGuideExcerpt = styleGuide ? buildSectionAwareExcerpt(styleGuide, {
11912
+ let glossaryContext = "";
11913
+ try {
11914
+ const glossaryRaw = await storage.readArtifact(projectId, "_sot/GLOSSARY.json");
11915
+ if (glossaryRaw) {
11916
+ let allTerms = [];
11917
+ try {
11918
+ allTerms = JSON.parse(glossaryRaw).terms ?? [];
11919
+ } catch {
11920
+ }
11921
+ let scopedTermsSet = null;
11922
+ const planRaw = await storage.readArtifact(projectId, "_sot/CURRICULUM_PLAN.json");
11923
+ if (planRaw) {
11924
+ try {
11925
+ const plan = JSON.parse(planRaw);
11926
+ const sessionScope = plan.glossary_scope?.find((g) => g.session_id === lessonCode);
11927
+ if (sessionScope?.terms?.length) {
11928
+ scopedTermsSet = new Set(sessionScope.terms.map((t) => t.toLowerCase()));
11929
+ }
11930
+ } catch {
11931
+ }
11932
+ }
11933
+ const relevantTerms = scopedTermsSet ? allTerms.filter((g) => scopedTermsSet.has(g.term.toLowerCase())) : allTerms.slice(0, 10);
11934
+ if (relevantTerms.length > 0) {
11935
+ const lines = relevantTerms.map(
11936
+ (t) => `- **${t.term}**: ${t.definition || ""}${t.example ? ` (e.g. \`${t.example}\`)` : ""}`
11937
+ );
11938
+ glossaryContext = buildSectionAwareExcerpt(lines.join("\n"), { budget: 800 }).excerpt;
11939
+ }
11940
+ }
11941
+ } catch {
11942
+ }
11943
+ let effectiveStyleGuide = styleGuide ? buildSectionAwareExcerpt(styleGuide, {
11865
11944
  priorities: ["Voice & Tone", "Standard Terminology (Glossary)", "Lesson Content Standards"],
11866
11945
  budget: 2e3
11867
11946
  }).excerpt : "";
11868
- const refPackExcerpt = refPack ? buildSectionAwareExcerpt(refPack, {
11947
+ let effectiveRefPack = refPack ? buildSectionAwareExcerpt(refPack, {
11869
11948
  priorities: [
11870
11949
  "Technical Overview & Architecture Blueprint",
11871
11950
  "Hardware Pinout & Wiring Configuration Matrix",
@@ -11873,7 +11952,7 @@ async function produceSingleLesson(storage, projectId, lessonId, options = {}) {
11873
11952
  ],
11874
11953
  budget: 2500
11875
11954
  }).excerpt : "";
11876
- const commonContext = `PROJECT & ACADEMIC CONTEXT:
11955
+ const baseContextPrefix = `PROJECT & ACADEMIC CONTEXT:
11877
11956
  - Project ID: ${projectId}
11878
11957
  - Pedagogical Model: ${pedagogyLabel}
11879
11958
  - Lesson Code: ${lessonCode}
@@ -11883,13 +11962,51 @@ async function produceSingleLesson(storage, projectId, lessonId, options = {}) {
11883
11962
  - Target Bloom Level: ${bloomLevel}
11884
11963
 
11885
11964
  [CURRICULUM FRAMEWORK EXCERPT]:
11886
- ${buildFrameworkExcerptForLesson(framework, lessonId)}
11965
+ ${buildFrameworkExcerptForLesson(framework, lessonId)}`;
11966
+ const glossaryBlock = glossaryContext ? `
11967
+
11968
+ [GLOSSARY TERMS (use these exact definitions)]:
11969
+ ${glossaryContext}` : "";
11970
+ const standardsBlock = standardsContext ? `
11971
+
11972
+ ${standardsContext}` : "";
11973
+ const expositionBlock = expositionContext ? `
11974
+
11975
+ [KNOWLEDGE_EXPOSITION (CANONICAL KNOWLEDGE \u2014 teach from this, do not contradict)]:
11976
+ ${expositionContext}` : "";
11977
+ const sessionSliceBlock = sessionSliceContext ? `
11978
+
11979
+ ${sessionSliceContext}` : "";
11980
+ const assembleCommonContext = (ref, sg) => `${baseContextPrefix}
11887
11981
 
11888
11982
  [CONTENT STYLE GUIDE EXCERPT]:
11889
- ${styleGuideExcerpt}
11983
+ ${sg}
11890
11984
 
11891
11985
  [REFERENCE PACK GROUND TRUTH]:
11892
- ${refPackExcerpt}${standardsContext ? "\n\n" + standardsContext : ""}${expositionContext ? "\n\n[KNOWLEDGE_EXPOSITION (CANONICAL KNOWLEDGE \u2014 teach from this, do not contradict)]:\n" + expositionContext : ""}${sessionSliceContext ? "\n\n" + sessionSliceContext : ""}`;
11986
+ ${ref}${standardsBlock}${glossaryBlock}${expositionBlock}${sessionSliceBlock}`;
11987
+ let commonContext = assembleCommonContext(effectiveRefPack, effectiveStyleGuide);
11988
+ const MAX_COMPOSITE_PROMPT_CHARS = 3e4;
11989
+ if (commonContext.length > MAX_COMPOSITE_PROMPT_CHARS && effectiveRefPack.length > 1e3) {
11990
+ effectiveRefPack = buildSectionAwareExcerpt(refPack, {
11991
+ priorities: [
11992
+ "Technical Overview & Architecture Blueprint",
11993
+ "Hardware Pinout & Wiring Configuration Matrix"
11994
+ ],
11995
+ budget: 1e3
11996
+ }).excerpt;
11997
+ commonContext = assembleCommonContext(effectiveRefPack, effectiveStyleGuide);
11998
+ }
11999
+ if (commonContext.length > MAX_COMPOSITE_PROMPT_CHARS && effectiveStyleGuide.length > 1e3) {
12000
+ effectiveStyleGuide = buildSectionAwareExcerpt(styleGuide, {
12001
+ priorities: ["Voice & Tone", "Standard Terminology (Glossary)"],
12002
+ budget: 1e3
12003
+ }).excerpt;
12004
+ commonContext = assembleCommonContext(effectiveRefPack, effectiveStyleGuide);
12005
+ }
12006
+ onProgress?.("@content", `[CONTEXT] Composite prompt ready (${commonContext.length} chars, adaptive budget <= ${MAX_COMPOSITE_PROMPT_CHARS})`, {
12007
+ type: "progress",
12008
+ promptChars: commonContext.length
12009
+ });
11893
12010
  const producedArtifacts = [];
11894
12011
  const lessonRelPath = `_content/${unitCode}/LESSON_${lessonCode}.md`;
11895
12012
  const existingLessonContent = await storage.readArtifact(projectId, lessonRelPath);
@@ -12016,7 +12133,7 @@ ${yamlBlock.trim()}
12016
12133
  lessonId: lessonCode,
12017
12134
  title: lessonTitle,
12018
12135
  frameworkExcerpt: framework ? buildFrameworkExcerptForLesson(framework, lessonId) : void 0,
12019
- styleGuideExcerpt: styleGuideExcerpt || void 0,
12136
+ styleGuideExcerpt: effectiveStyleGuide || void 0,
12020
12137
  canonicalExposition: expositionContext ? expositionContext.slice(0, 3e3) : void 0
12021
12138
  }),
12022
12139
  standardStatements: Object.keys(standardStatements).length > 0 ? standardStatements : void 0
@@ -12059,7 +12176,7 @@ ${yamlBlock.trim()}
12059
12176
  onProgress?.("@repair", `\u{1F527} Repair round ${round}/${MAX_REPAIR_ROUNDS} for LESSON_${lessonCode} (judge score ${currentResult.score}/100)...`);
12060
12177
  const repairedRaw = await runCurriculumAIInference(
12061
12178
  [{ role: "user", content: `You previously authored \`LESSON_${lessonCode}.md\` and the academic Judge REJECTED it with the critique below.
12062
- Rewrite the COMPLETE corrected document: fix every listed issue, keep the mandatory structure, frontmatter and all approved sections. Output 100% clean Markdown only.
12179
+ Rewrite the COMPLETE corrected document in language "${targetLang}": fix every listed issue, preserve exact frontmatter and mandatory sections (Objectives, Activity Sequence, Lesson Flow). Output 100% clean Markdown only.
12063
12180
 
12064
12181
  JUDGE CRITIQUE:
12065
12182
  ${repairFeedback}
@@ -12077,7 +12194,13 @@ ${currentContent}` }],
12077
12194
  break;
12078
12195
  }
12079
12196
  const repairLint = lintAndSanitizeArtifact(repairedRaw, `LESSON_${lessonCode}.md`);
12080
- currentContent = repairLint.autoFixedContent || repairedRaw;
12197
+ const candidateContent = repairLint.autoFixedContent || repairedRaw;
12198
+ const hasFrontmatter = /^---\s*\r?\n[\s\S]*?\r?\n---/m.test(candidateContent);
12199
+ if (!hasFrontmatter || candidateContent.length < Math.min(800, currentContent.length * 0.4)) {
12200
+ onProgress?.("@repair", `\u26A0\uFE0F Repair round ${round} dropped critical structure (length or frontmatter missing) \u2014 rejecting repaired draft, retaining previous`);
12201
+ break;
12202
+ }
12203
+ currentContent = candidateContent;
12081
12204
  onProgress?.("@reviewer", `\u{1F916} Re-judging repaired LESSON_${lessonCode} (round ${round})...`);
12082
12205
  const reJudge = await LLMJudgeEngine.evaluateArtifactWithLLM({
12083
12206
  targetArtifactType: "LESSON",
@@ -12089,7 +12212,7 @@ ${currentContent}` }],
12089
12212
  lessonId: lessonCode,
12090
12213
  title: lessonTitle,
12091
12214
  frameworkExcerpt: framework ? buildFrameworkExcerptForLesson(framework, lessonId) : void 0,
12092
- styleGuideExcerpt: styleGuideExcerpt || void 0,
12215
+ styleGuideExcerpt: effectiveStyleGuide || void 0,
12093
12216
  canonicalExposition: expositionContext ? expositionContext.slice(0, 3e3) : void 0
12094
12217
  }),
12095
12218
  standardStatements: Object.keys(standardStatements).length > 0 ? standardStatements : void 0
@@ -12376,46 +12499,175 @@ ${buildHeadingDirective("QUIZ", slcMarkdown, targetLang)}`;
12376
12499
  const slideRelPath = `_content/${unitCode}/SLIDE_${lessonCode}.md`;
12377
12500
  if (artifactScope.includes("SLIDE") && (!await storage.readArtifact(projectId, slideRelPath) || force)) {
12378
12501
  onProgress?.("@illustrator", `[4/4] Authoring Presentation Slide Deck: \`SLIDE_${lessonCode}.md\`...`);
12379
- const canonicalSlideTemplate = loadCurriculumTemplate("SLIDE_template.md");
12380
- const templateScaffold = canonicalSlideTemplate || `---
12502
+ const isHtmlEngine = options.slidesEngine === "html";
12503
+ if (isHtmlEngine) {
12504
+ let presentationKitAi = null;
12505
+ try {
12506
+ presentationKitAi = await import('@thanh01.pmt/presentation-kit/ai');
12507
+ } catch {
12508
+ }
12509
+ const slidePrompt = buildHtmlDeckSlidePrompt({
12510
+ lessonCode,
12511
+ lessonTitle,
12512
+ pedagogyLabel,
12513
+ languageDirective,
12514
+ headingDirective: buildHeadingDirective("SLIDE", slcMarkdown, targetLang),
12515
+ glossaryBlock: glossaryContext ? `[GLOSSARY TERMS (use these exact definitions)]:
12516
+ ${glossaryContext}` : void 0,
12517
+ customContract: presentationKitAi?.SLIDE_HTML_PROMPT_CONTRACT
12518
+ });
12519
+ const rawSlide = await runCurriculumAIInference(
12520
+ [{ role: "user", content: slidePrompt }],
12521
+ satelliteContext,
12522
+ {},
12523
+ (chunk, type) => {
12524
+ options.onProgress?.("@illustrator", chunk, { type: type || "content", artifactType: "SLIDE" });
12525
+ }
12526
+ );
12527
+ if (!rawSlide || rawSlide.startsWith("\u26A0\uFE0F") || rawSlide.length < 200) {
12528
+ throw createAiInferenceError({
12529
+ errorCode: "ERR_AI_RESPONSE_MALFORMED",
12530
+ agent: "@illustrator",
12531
+ artifactType: "SLIDE",
12532
+ lessonId: lessonCode,
12533
+ message: `Agent @illustrator failed to author valid HTML Slides for ${lessonCode}.`,
12534
+ rawError: rawSlide || "Empty AI response"
12535
+ });
12536
+ }
12537
+ let deckJson = null;
12538
+ const extractCleanJson = (str) => {
12539
+ const fenceMatch = str.match(/```(?:json)?\s*([\s\S]*?)\s*```/i);
12540
+ const candidate = fenceMatch ? fenceMatch[1] : str;
12541
+ return candidate.trim();
12542
+ };
12543
+ try {
12544
+ deckJson = JSON.parse(extractCleanJson(rawSlide));
12545
+ } catch {
12546
+ try {
12547
+ const { jsonrepair: jsonrepair2 } = await import('jsonrepair');
12548
+ deckJson = JSON.parse(jsonrepair2(extractCleanJson(rawSlide)));
12549
+ } catch {
12550
+ }
12551
+ }
12552
+ let validation = presentationKitAi?.validateHtmlSlideDeck ? presentationKitAi.validateHtmlSlideDeck(deckJson, true) : deckJson && Array.isArray(deckJson.slides) ? { valid: true, score: 95, issues: [], slideCount: deckJson.slides.length, notesCoveragePercent: 100 } : { valid: false, score: 0, issues: [{ message: "Malformed JSON slide deck" }], slideCount: 0, notesCoveragePercent: 0 };
12553
+ if (!validation.valid && presentationKitAi?.validateHtmlSlideDeck) {
12554
+ const repairIssues = (validation.issues || []).map((i) => `- Slide ${i.slideIndex ?? "?"}: ${i.message}`).join("\n");
12555
+ onProgress?.("@illustrator", `\u26A0\uFE0F HTML slide deck failed schema validation \u2014 retrying once with targeted repair feedback...`);
12556
+ const repairPrompt = `Your previous slide deck failed strict schema validation:
12557
+ ${repairIssues}
12558
+
12559
+ Fix ALL issues and output the complete corrected JSON object strictly matching the schema:`;
12560
+ const repairedRaw = await runCurriculumAIInference(
12561
+ [{ role: "user", content: repairPrompt }],
12562
+ satelliteContext,
12563
+ {},
12564
+ (chunk, type) => {
12565
+ options.onProgress?.("@illustrator", chunk, { type: type || "content", artifactType: "SLIDE" });
12566
+ }
12567
+ );
12568
+ try {
12569
+ deckJson = JSON.parse(extractCleanJson(repairedRaw));
12570
+ validation = presentationKitAi.validateHtmlSlideDeck(deckJson, true);
12571
+ } catch {
12572
+ try {
12573
+ const { jsonrepair: jsonrepair2 } = await import('jsonrepair');
12574
+ deckJson = JSON.parse(jsonrepair2(extractCleanJson(repairedRaw)));
12575
+ validation = presentationKitAi.validateHtmlSlideDeck(deckJson, true);
12576
+ } catch {
12577
+ }
12578
+ }
12579
+ }
12580
+ const markdownWrapper = `---
12581
+ id: "SLIDE_${lessonCode}"
12582
+ title: "${titleHeader(lessonTitle)}"
12583
+ type: "SLIDE"
12584
+ format: "html-deck"
12585
+ engine: "html"
12586
+ phase: "P2"
12587
+ deliverable: "P2-T09"
12588
+ version: "v1.0"
12589
+ date: "${(/* @__PURE__ */ new Date()).toISOString().split("T")[0]}"
12590
+ ---
12591
+
12592
+ \`\`\`json
12593
+ ${JSON.stringify(deckJson || {}, null, 2)}
12594
+ \`\`\`
12595
+ `;
12596
+ await storage.saveArtifact(projectId, slideRelPath, markdownWrapper);
12597
+ producedArtifacts.push(`SLIDE_${lessonCode}.md`);
12598
+ if (deckJson) {
12599
+ const deckJsonStr = JSON.stringify(deckJson, null, 2);
12600
+ await storage.saveArtifact(projectId, `_content/${unitCode}/SLIDE_${lessonCode}.deck.json`, deckJsonStr);
12601
+ producedArtifacts.push(`SLIDE_${lessonCode}.deck.json`);
12602
+ if (presentationKitAi?.compileHtmlDeck) {
12603
+ try {
12604
+ const compiled = presentationKitAi.compileHtmlDeck(deckJson);
12605
+ if (compiled?.html) {
12606
+ await storage.saveArtifact(projectId, `_content/${unitCode}/SLIDE_${lessonCode}.html`, compiled.html);
12607
+ producedArtifacts.push(`SLIDE_${lessonCode}.html`);
12608
+ }
12609
+ } catch (compErr) {
12610
+ console.warn(`[produceSingleLesson] Failed compiling HTML deck for ${lessonCode}:`, compErr);
12611
+ }
12612
+ }
12613
+ }
12614
+ const passed = Boolean(validation.valid && (validation.score ?? 100) >= 80);
12615
+ const score = validation.score ?? (passed ? 95 : 50);
12616
+ await storage.updateArtifactState(projectId, lessonCode, "SLIDE", {
12617
+ state: passed ? "approved" : "rejected",
12618
+ generatedAt: (/* @__PURE__ */ new Date()).toISOString(),
12619
+ contentHash: computeContentHash(markdownWrapper),
12620
+ review: {
12621
+ decision: passed ? "APPROVED" : "NEEDS_REVISION",
12622
+ reviewedBy: "@agent-as-judge",
12623
+ reviewedAt: (/* @__PURE__ */ new Date()).toISOString(),
12624
+ score,
12625
+ critique: passed ? `HTML Slide Deck passed strict schema validation (${score}/100, ${validation.slideCount ?? deckJson?.slides?.length ?? 0} slides). Auto-approved.` : `HTML Slide Deck failed schema validation: ${(validation.issues || []).map((i) => i.message).join("; ")}`
12626
+ }
12627
+ });
12628
+ onProgress?.("@reviewer", passed ? `\u2705 SLIDE judge PASS (${score}/100) [html-deck schema validated]` : `\u26A0\uFE0F SLIDE judge NEEDS_REVISION (${score}/100) [html-deck schema issues]`);
12629
+ } else {
12630
+ const canonicalSlideTemplate = loadCurriculumTemplate("SLIDE_template.md");
12631
+ const templateScaffold = canonicalSlideTemplate || `---
12381
12632
  marp: true
12382
12633
  theme: default
12383
12634
  paginate: true
12384
12635
  header: "${titleHeader(lessonTitle)}"
12385
12636
  footer: "Curriculum OS \u2022 ${lessonCode} (${pedagogyLabel})"
12386
12637
  ---`;
12387
- const slidePrompt = buildMarpMarkdownSlidePrompt({
12388
- lessonCode,
12389
- templateScaffold,
12390
- languageDirective,
12391
- headingDirective: buildHeadingDirective("SLIDE", slcMarkdown, targetLang)
12392
- });
12393
- const rawSlide = await runCurriculumAIInference(
12394
- [{ role: "user", content: slidePrompt }],
12395
- satelliteContext,
12396
- {},
12397
- (chunk, type) => {
12398
- options.onProgress?.("@illustrator", chunk, { type: type || "content", artifactType: "SLIDE" });
12638
+ const slidePrompt = buildMarpMarkdownSlidePrompt({
12639
+ lessonCode,
12640
+ templateScaffold,
12641
+ languageDirective,
12642
+ headingDirective: buildHeadingDirective("SLIDE", slcMarkdown, targetLang)
12643
+ });
12644
+ const rawSlide = await runCurriculumAIInference(
12645
+ [{ role: "user", content: slidePrompt }],
12646
+ satelliteContext,
12647
+ {},
12648
+ (chunk, type) => {
12649
+ options.onProgress?.("@illustrator", chunk, { type: type || "content", artifactType: "SLIDE" });
12650
+ }
12651
+ );
12652
+ if (!rawSlide || rawSlide.startsWith("\u26A0\uFE0F") || rawSlide.length < 200) {
12653
+ throw createAiInferenceError({
12654
+ errorCode: "ERR_AI_RESPONSE_MALFORMED",
12655
+ agent: "@illustrator",
12656
+ artifactType: "SLIDE",
12657
+ lessonId: lessonCode,
12658
+ message: `Agent @illustrator failed to author valid Slides for ${lessonCode}.`,
12659
+ rawError: rawSlide || "Empty AI response"
12660
+ });
12399
12661
  }
12400
- );
12401
- if (!rawSlide || rawSlide.startsWith("\u26A0\uFE0F") || rawSlide.length < 200) {
12402
- throw createAiInferenceError({
12403
- errorCode: "ERR_AI_RESPONSE_MALFORMED",
12404
- agent: "@illustrator",
12405
- artifactType: "SLIDE",
12406
- lessonId: lessonCode,
12407
- message: `Agent @illustrator failed to author valid Slides for ${lessonCode}.`,
12408
- rawError: rawSlide || "Empty AI response"
12662
+ await storage.saveArtifact(projectId, slideRelPath, rawSlide);
12663
+ await storage.updateArtifactState(projectId, lessonCode, "SLIDE", {
12664
+ state: "completed",
12665
+ generatedAt: (/* @__PURE__ */ new Date()).toISOString(),
12666
+ contentHash: computeContentHash(rawSlide)
12409
12667
  });
12668
+ producedArtifacts.push(`SLIDE_${lessonCode}.md`);
12669
+ await judgeSat("SLIDE", rawSlide);
12410
12670
  }
12411
- await storage.saveArtifact(projectId, slideRelPath, rawSlide);
12412
- await storage.updateArtifactState(projectId, lessonCode, "SLIDE", {
12413
- state: "completed",
12414
- generatedAt: (/* @__PURE__ */ new Date()).toISOString(),
12415
- contentHash: computeContentHash(rawSlide)
12416
- });
12417
- producedArtifacts.push(`SLIDE_${lessonCode}.md`);
12418
- await judgeSat("SLIDE", rawSlide);
12419
12671
  }
12420
12672
  const guideRelPath = `_content/${unitCode}/GUIDE_${lessonCode}.md`;
12421
12673
  if (artifactScope.includes("GUIDE") && (!await storage.readArtifact(projectId, guideRelPath) || force)) {
@@ -13358,6 +13610,24 @@ function getArtifactSpecializedInvariants(type, req) {
13358
13610
  const studentCount = req.studentCount || "25";
13359
13611
  switch (type) {
13360
13612
  case "slide": {
13613
+ if (req.slidesEngine === "html") {
13614
+ return `
13615
+ ### \u{1F3AC} INTERACTIVE HTML SLIDE ENGINE CONTRACT:
13616
+ You generate structured slide decks for the LearnWell HTML Slide Presentation Engine.
13617
+ Output a single valid JSON object matching: { "title": "...", "theme": "ocean", "slides": [{ "layoutId": "hero-cover", "slots": { ... }, "notes": "..." }] }
13618
+
13619
+ Layout Presets available:
13620
+ - hero-cover (title, subtitle, presenter, date, tag)
13621
+ - two-column-split (col1Title, col1Items[], col2Title, col2Items[])
13622
+ - code-explainer (filename, language, code, highlightLines, annotations[])
13623
+ - metrics-3-card (card1Title, card1Val, card1Desc, ...)
13624
+ - process-flow (steps: [{ label, desc, status }])
13625
+ - quiz-checkpoint (question, options[], answerIdx, explanation)
13626
+ - tiered-practice-3cards (foundation, standard, challenge cards)
13627
+ - takeaways-summary (takeaways: bullet points)
13628
+
13629
+ Mandatory Presenter Notes on every slide with Talk Track, Cold-Call, and Scaffolding Tip.`;
13630
+ }
13361
13631
  const slideCount = cfg.slideCount || 10;
13362
13632
  const presentationStyle = cfg.presentationStyle || "modern";
13363
13633
  const presentationDuration = cfg.presentationDuration || 45;
@@ -17232,6 +17502,6 @@ function renderMediaPlaceholder(entry) {
17232
17502
  return `> \u{1F5BC}\uFE0F [\u1EA2nh \u0111ang ch\u1EDD: ${entry.name} \u2014 s\u1EBD \u0111\u01B0\u1EE3c t\u1EA1o sau khi duy\u1EC7t media]`;
17233
17503
  }
17234
17504
 
17235
- export { ACT_TEMPLATE, ARTIFACT_DEPENDENCY_ROUTING, ARTIFACT_EXECUTION_ORDER, AcademicAuditor, ActiveLearningWorkflowSchema, ActivityLabSchema, ActivitySeqRowSchema, ActivityStepSchema, ArtifactContractRowSchema, AssessmentMapRowSchema, AssessmentObjectiveSchema, BELL_RINGER_TEMPLATE, BLOOM_ACTION_VERBS, BOM_TEMPLATE, BUNDLED_STANDARDS_PACK_IDS, BellRingerDaySchema, BellRingerSchema, BloomHintSchema, BloomLevelSchema, BloomTaxonomyEvaluator, BronzeTierSchema, CERConclusionSchema, CHOICE_BOARD_TEMPLATE, CODE_LAB_TEMPLATE, CURRICULUM_SLASH_COMMANDS, CardTierEnum, ChoiceBoardRubricRowSchema, ChoiceBoardSchema, ChoiceRuleSchema, ChoiceSquareSchema, ClassificationSchema, CodeHardwareFeasibilityEvaluator, CodeLabSchema, CodeSnippetSchema, CompetencyRubricRowSchema, ComputationalThinkingSchema, 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_STREAM_IDLE_MS, DEFAULT_STREAM_TOTAL_MS, DependencyEdgeSchema, DepthAssignmentSchema, DepthLevelSchema, DeterministicPipelineRunner, DeterministicStructuralLinter, DiagnosticQuestionSchema, DiagnosticQuizSchema, EDPPhaseEnum, EXIT_TICKET_TEMPLATE, EXPOSITION_REL, EXT_TEMPLATE, EntryLevelSchema, ExitTicketBugHuntSchema, ExitTicketMetacognitionSchema, ExitTicketQuickItemSchema, ExitTicketRecallPromptSchema, ExitTicketSchema, ExperimentalDesignSchema, ExpositionApprovalError, ExtensionChallengeSchema, ExtensionSchema, FileSystemCurriculumAdapter, FiveEFlowPhaseSchema, FiveEInstructionalEvaluator, FiveEPhaseEnum, FrameworkMappingSchema, FrameworkPackManifestSchema, FrameworkPackSchema, FrameworkStatementSchema, GLOSSARY_TEMPLATE, GRAPHIC_ORGANIZER_TEMPLATE, GlossaryQuickRefRowSchema, GlossarySchema, GlossaryTermSchema, GoldTierSchema, GradeBandSchema, GraphicOrganizerItemSchema, GraphicOrganizerSchema, HANDOUT_TEMPLATE, HandoutSchema, HandoutSectionSchema, InstructionSectionSchema, InstructionStepSchema, JudgeCriterionSchema, LAYER_TOTAL_BUDGET_MS, LESSON_PLAN_TEMPLATE, LLMJudgeEngine, LabTierTaskSchema, LearningObjectiveInputSchema, LearningObjectiveRowSchema, LessonFlowPhaseSchema, LessonPlan5ESchema, LessonPlanEDPSchema, LessonPlanSchema, LessonSectionSchema, LocalWorkspaceManager, MappingKindSchema, MarpSlideSchema, MediaError, MediaLedger, MentorCheatsheetSchema, MilestoneInputSchema, MisconceptionEvaluator, MisconceptionSchema, ModelPolicyResolver, NVIDIA_MODELS, NodeKindSchema, OrganizerTypeEnum, PROJECT_INSTRUCTION_TEMPLATE, PhaseInputSchema, PlanConstraintsSchema, PlannerInputSchema, PlanningGraphSchema, PlanningNodeSchema, PrerequisiteDecisionEntrySchema, PrerequisiteDecisionSchema, ProductGoalSchema, ProgressiveHintsSchema, ProjectGraphSchema, ProjectInstructionSchema, ProjectProfileSchema, QUIZ_TEMPLATE, QualityAuditVerdictSchema, QuizOptionSchema, REVIEW_GAME_TEMPLATE, RUBRIC_TEMPLATE, RecordProvenanceSchema, ResourceMapRowSchema, ReviewGameExportRowSchema, ReviewGameQuestionSchema, ReviewGameSchema, RoadmapInputSchema, RotationStationSchema, RubricCriteriaSchema, RubricSchema, SCIENCE_LAB_TEMPLATE, SELF_LAB_TEMPLATE, SLIDE_CANONICAL_METHODOLOGY, SLIDE_LAYOUT_PRESETS, SLIDE_TEMPLATE, STANDARD_SOT_FILES, STATION_ROTATION_TEMPLATE, ScaffoldDecisionEntrySchema, ScaffoldDecisionSchema, ScienceLabSchema, ScoringRubricRowSchema, SelfLabSchema, SelfPacedBundleSchema, SelfPacedChallengeSchema, SessionPlanSchema, SilverTierSchema, SlideDeckSchema, StandardizedTermRowSchema, StandardsRegistryAdapter, StationRecordRowSchema, StationRotationSchema, StationTypeEnum, SupabaseCurriculumAdapter, TASK_CARDS_TEMPLATE, TEACHER_GUIDE_TEMPLATE, TIERED_PRACTICE_TEMPLATE, TaskCardSchema, TaskCardsSchema, TeacherGuideSchema, TeachingScriptPhaseSchema, TierLevelEnum, TierObjectiveSchema, TieredPracticeSchema, TranslationPolicySchema, TroubleshootingEntrySchema, TroubleshootingRowSchema, UnitPlanSchema, UserJourneySchema, WORKSHEET_TEMPLATE, WorksheetItemSchema, WorksheetItemTypeEnum, WorksheetPartSchema, WorksheetSchema, activityTools, analystTools, analyzeProjectCreationIntent, assertAcyclic, assessorTools, auditCurriculumQualityFlow, auditQualityReport, buildActivityPrompt, buildCodeLabPrompt, buildCurriculumContext, buildCurriculumPlan, buildDeliveryPackages, buildDiagnosticQuizPrompt, buildExpositionContext, buildExpositionExcerpt, buildExtensionPrompt, buildHandoutPrompt, buildHeadingDirective, buildImagePrompt, buildJudgePrompt, buildLanguageDirective, buildLessonExcerpt, buildLessonMasterPrompt, buildMarpMarkdownSlidePrompt, buildProjectInstructionPrompt, buildSectionAwareExcerpt, buildSelfLabPrompt, buildSessionSliceContext, buildSlidesPrompt, buildStandardStackMarkdown, buildStandardsContext, buildStandardsContextBlock, buildTeacherGuidePrompt, buildWorksheetPrompt, closeTruncatedJson, computeContentHash, computePackingSpec, conductPreliminaryResearch, contentTools, convertRoadmapToFoundationSot, createAiInferenceError, createContextMissingError, createCurriculumStorage, createIdleAbortController, createStreamAbortController, createStreamAbortSignal, createStreamChunkExtractor, curateMediaLedger, designerTools, detectProjectPedagogy, ensureExpositionForLesson, ensureKnowledgeExposition, evaluateStandardsCoverage, executeCurriculumCommand, exportAllProjectQuizzes, expositionCacheKey, extractScopeSequenceRows, extractSectionHeadingsFromSLC, extractSessionSlice, extractStreamChunk, extractThoughtAndContent, 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, getSlideLayoutPresetById, getSlideLayoutPresetsByCategory, getSmartResumeContext, glossaryTermsForSession, illustratorTools, importRoadmapToProject, ingestProjectGraphIntoProject, initializeProjectInStorage, injectMediaIntoMarkdown, isExpositionFresh, isModelAllowed, isProviderEnabled, isTranslationDue, lintAndSanitizeArtifact, lintCurriculumFramework, lintFrameworkPack, loadCurriculumTemplate, loadSotTemplate, normalizePlanningGraph, normalizeSlcContract, packagerTools, parseGateSettings, parseQuizMarkdown, parseRoadmapJsonToProjectPayload, produceBatchLessons, produceSingleLesson, publishToGitHub, publishToSupabase, rankGenCandidates, renderFrameworkFromPlan, renderMediaPlaceholder, researcherTools, 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, stripLlmJsonWrappers, targetLanguageDisplayName, techSmeTools, topoSort, uploadAssetToBucket, validateArtifactDependencies, validateCurriculumPlan, validateFrameworkPack, validateMarkdownTables, validateMermaidSyntax, withAutoRepair };
17505
+ export { ACT_TEMPLATE, ARTIFACT_DEPENDENCY_ROUTING, ARTIFACT_EXECUTION_ORDER, AcademicAuditor, ActiveLearningWorkflowSchema, ActivityLabSchema, ActivitySeqRowSchema, ActivityStepSchema, ArtifactContractRowSchema, AssessmentMapRowSchema, AssessmentObjectiveSchema, BELL_RINGER_TEMPLATE, BLOOM_ACTION_VERBS, BOM_TEMPLATE, BUNDLED_STANDARDS_PACK_IDS, BellRingerDaySchema, BellRingerSchema, BloomHintSchema, BloomLevelSchema, BloomTaxonomyEvaluator, BronzeTierSchema, CERConclusionSchema, CHOICE_BOARD_TEMPLATE, CODE_LAB_TEMPLATE, CURRICULUM_SLASH_COMMANDS, CardTierEnum, ChoiceBoardRubricRowSchema, ChoiceBoardSchema, ChoiceRuleSchema, ChoiceSquareSchema, ClassificationSchema, CodeHardwareFeasibilityEvaluator, CodeLabSchema, CodeSnippetSchema, CompetencyRubricRowSchema, ComputationalThinkingSchema, 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_STREAM_IDLE_MS, DEFAULT_STREAM_TOTAL_MS, DependencyEdgeSchema, DepthAssignmentSchema, DepthLevelSchema, DeterministicPipelineRunner, DeterministicStructuralLinter, DiagnosticQuestionSchema, DiagnosticQuizSchema, EDPPhaseEnum, EXIT_TICKET_TEMPLATE, EXPOSITION_REL, EXT_TEMPLATE, EntryLevelSchema, ExitTicketBugHuntSchema, ExitTicketMetacognitionSchema, ExitTicketQuickItemSchema, ExitTicketRecallPromptSchema, ExitTicketSchema, ExperimentalDesignSchema, ExpositionApprovalError, ExtensionChallengeSchema, ExtensionSchema, FileSystemCurriculumAdapter, FiveEFlowPhaseSchema, FiveEInstructionalEvaluator, FiveEPhaseEnum, FrameworkMappingSchema, FrameworkPackManifestSchema, FrameworkPackSchema, FrameworkStatementSchema, GLOSSARY_TEMPLATE, GRAPHIC_ORGANIZER_TEMPLATE, GlossaryQuickRefRowSchema, GlossarySchema, GlossaryTermSchema, GoldTierSchema, GradeBandSchema, GraphicOrganizerItemSchema, GraphicOrganizerSchema, HANDOUT_TEMPLATE, HandoutSchema, HandoutSectionSchema, InstructionSectionSchema, InstructionStepSchema, JudgeCriterionSchema, LAYER_TOTAL_BUDGET_MS, LESSON_PLAN_TEMPLATE, LLMJudgeEngine, LabTierTaskSchema, LearningObjectiveInputSchema, LearningObjectiveRowSchema, LessonFlowPhaseSchema, LessonPlan5ESchema, LessonPlanEDPSchema, LessonPlanSchema, LessonSectionSchema, LocalWorkspaceManager, MappingKindSchema, MarpSlideSchema, MediaError, MediaLedger, MentorCheatsheetSchema, MilestoneInputSchema, MisconceptionEvaluator, MisconceptionSchema, ModelPolicyResolver, NVIDIA_MODELS, NodeKindSchema, OrganizerTypeEnum, PROJECT_INSTRUCTION_TEMPLATE, PhaseInputSchema, PlanConstraintsSchema, PlannerInputSchema, PlanningGraphSchema, PlanningNodeSchema, PrerequisiteDecisionEntrySchema, PrerequisiteDecisionSchema, ProductGoalSchema, ProgressiveHintsSchema, ProjectGraphSchema, ProjectInstructionSchema, ProjectProfileSchema, QUIZ_TEMPLATE, QualityAuditVerdictSchema, QuizOptionSchema, REVIEW_GAME_TEMPLATE, RUBRIC_TEMPLATE, RecordProvenanceSchema, ResourceMapRowSchema, ReviewGameExportRowSchema, ReviewGameQuestionSchema, ReviewGameSchema, RoadmapInputSchema, RotationStationSchema, RubricCriteriaSchema, RubricSchema, SCIENCE_LAB_TEMPLATE, SELF_LAB_TEMPLATE, SLIDE_CANONICAL_METHODOLOGY, SLIDE_LAYOUT_PRESETS, SLIDE_TEMPLATE, STANDARD_SOT_FILES, STATION_ROTATION_TEMPLATE, ScaffoldDecisionEntrySchema, ScaffoldDecisionSchema, ScienceLabSchema, ScoringRubricRowSchema, SelfLabSchema, SelfPacedBundleSchema, SelfPacedChallengeSchema, SessionPlanSchema, SilverTierSchema, SlideDeckSchema, StandardizedTermRowSchema, StandardsRegistryAdapter, StationRecordRowSchema, StationRotationSchema, StationTypeEnum, SupabaseCurriculumAdapter, TASK_CARDS_TEMPLATE, TEACHER_GUIDE_TEMPLATE, TIERED_PRACTICE_TEMPLATE, TaskCardSchema, TaskCardsSchema, TeacherGuideSchema, TeachingScriptPhaseSchema, TierLevelEnum, TierObjectiveSchema, TieredPracticeSchema, TranslationPolicySchema, TroubleshootingEntrySchema, TroubleshootingRowSchema, UnitPlanSchema, UserJourneySchema, WORKSHEET_TEMPLATE, WorksheetItemSchema, WorksheetItemTypeEnum, WorksheetPartSchema, WorksheetSchema, activityTools, analystTools, analyzeProjectCreationIntent, assertAcyclic, assessorTools, auditCurriculumQualityFlow, auditQualityReport, buildActivityPrompt, buildCodeLabPrompt, buildCurriculumContext, buildCurriculumPlan, buildDeliveryPackages, buildDiagnosticQuizPrompt, buildExpositionContext, buildExpositionExcerpt, buildExtensionPrompt, buildHandoutPrompt, buildHeadingDirective, buildHtmlDeckSlidePrompt, buildImagePrompt, buildJudgePrompt, buildLanguageDirective, buildLessonExcerpt, buildLessonMasterPrompt, buildMarpMarkdownSlidePrompt, buildProjectInstructionPrompt, buildSectionAwareExcerpt, buildSelfLabPrompt, buildSessionSliceContext, buildSlidesPrompt, buildStandardStackMarkdown, buildStandardsContext, buildStandardsContextBlock, buildTeacherGuidePrompt, buildWorksheetPrompt, closeTruncatedJson, computeContentHash, computePackingSpec, conductPreliminaryResearch, contentTools, convertRoadmapToFoundationSot, createAiInferenceError, createContextMissingError, createCurriculumStorage, createIdleAbortController, createStreamAbortController, createStreamAbortSignal, createStreamChunkExtractor, curateMediaLedger, designerTools, detectProjectPedagogy, ensureExpositionForLesson, ensureKnowledgeExposition, evaluateStandardsCoverage, executeCurriculumCommand, exportAllProjectQuizzes, expositionCacheKey, extractScopeSequenceRows, extractSectionHeadingsFromSLC, extractSessionSlice, extractStreamChunk, extractThoughtAndContent, 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, getSlideLayoutPresetById, getSlideLayoutPresetsByCategory, getSmartResumeContext, glossaryTermsForSession, illustratorTools, importRoadmapToProject, ingestProjectGraphIntoProject, initializeProjectInStorage, injectMediaIntoMarkdown, isExpositionFresh, isModelAllowed, isProviderEnabled, isTranslationDue, lintAndSanitizeArtifact, lintCurriculumFramework, lintFrameworkPack, loadCurriculumTemplate, loadSotTemplate, normalizePlanningGraph, normalizeSlcContract, packagerTools, parseGateSettings, parseQuizMarkdown, parseRoadmapJsonToProjectPayload, produceBatchLessons, produceSingleLesson, publishToGitHub, publishToSupabase, rankGenCandidates, renderFrameworkFromPlan, renderMediaPlaceholder, researcherTools, 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, stripLlmJsonWrappers, targetLanguageDisplayName, techSmeTools, topoSort, uploadAssetToBucket, validateArtifactDependencies, validateCurriculumPlan, validateFrameworkPack, validateMarkdownTables, validateMermaidSyntax, withAutoRepair };
17236
17506
  //# sourceMappingURL=index.mjs.map
17237
17507
  //# sourceMappingURL=index.mjs.map