@thanh01.pmt/curriculum-kit 1.0.11 → 1.0.13
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.cjs +185 -42
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +59 -2
- package/dist/index.d.ts +59 -2
- package/dist/index.mjs +180 -43
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
package/dist/index.d.cts
CHANGED
|
@@ -335,6 +335,10 @@ interface LayerPrefillOptions {
|
|
|
335
335
|
stream?: boolean;
|
|
336
336
|
model?: string;
|
|
337
337
|
provider?: AIProviderName;
|
|
338
|
+
/** Total wall-time budget override for this prefill run (ms). */
|
|
339
|
+
timeoutMs?: number;
|
|
340
|
+
/** Idle (no-data) budget override for this prefill run (ms). */
|
|
341
|
+
idleTimeoutMs?: number;
|
|
338
342
|
}
|
|
339
343
|
interface PreliminaryResearchResult {
|
|
340
344
|
groundTruthSummary: string;
|
|
@@ -351,6 +355,59 @@ interface LayerPrefillResult {
|
|
|
351
355
|
rawText?: string;
|
|
352
356
|
}
|
|
353
357
|
type LayerChunkCallback = (chunk: string, type: 'thought' | 'content') => void;
|
|
358
|
+
/** Budget knobs for a streamed inference (see createStreamAbortSignal). */
|
|
359
|
+
interface StreamBudget {
|
|
360
|
+
/** Abort when no data arrives for this long (ms). 0 disables. */
|
|
361
|
+
idleMs?: number;
|
|
362
|
+
/** Abort when the whole stream exceeds this total wall time (ms). 0 disables. */
|
|
363
|
+
totalMs?: number;
|
|
364
|
+
}
|
|
365
|
+
declare const DEFAULT_STREAM_IDLE_MS = 45000;
|
|
366
|
+
declare const DEFAULT_STREAM_TOTAL_MS = 300000;
|
|
367
|
+
/** Layer-aware total budget: Layer 2 is the largest prefill output (6 fields × options pros/cons). */
|
|
368
|
+
declare const LAYER_TOTAL_BUDGET_MS: Record<number, number>;
|
|
369
|
+
/**
|
|
370
|
+
* Resolve the abort budget for a prefill run. Precedence: explicit options >
|
|
371
|
+
* env (`WIZARD_PREFILL_IDLE_TIMEOUT_MS` / `WIZARD_PREFILL_TOTAL_TIMEOUT_MS`) >
|
|
372
|
+
* layer-aware defaults. Exposed as a pure function for decision-table tests.
|
|
373
|
+
*/
|
|
374
|
+
declare function resolveStreamBudget(layer?: number, opts?: StreamBudget): Required<StreamBudget>;
|
|
375
|
+
/**
|
|
376
|
+
* Abort signal combining an IDLE window with an optional TOTAL cap.
|
|
377
|
+
* RC-W1: `AbortSignal.timeout(60_000)` hard-killed Layer 2 mid-stream even while
|
|
378
|
+
* tokens were flowing (free-tier models think + stream slowly) — the aborted
|
|
379
|
+
* `fullContent` then failed `safeParseJson` (empty or truncated JSON).
|
|
380
|
+
* The idle window only fires when NO data arrives (hung connection), while a
|
|
381
|
+
* generous layer-aware total cap is the safety net.
|
|
382
|
+
*/
|
|
383
|
+
interface StreamAbortHandle {
|
|
384
|
+
signal: AbortSignal;
|
|
385
|
+
/** Reset the idle window — call on EVERY received stream part. */
|
|
386
|
+
kick: () => void;
|
|
387
|
+
/** Clear both timers once the stream lifecycle is over. */
|
|
388
|
+
dispose: () => void;
|
|
389
|
+
}
|
|
390
|
+
/** Chunks extracted from one raw Vercel AI SDK stream part. */
|
|
391
|
+
interface ExtractedStreamChunk {
|
|
392
|
+
/** Reasoning/thinking text to forward via onChunk(chunk, 'thought'). */
|
|
393
|
+
thought?: string;
|
|
394
|
+
/** Content text to forward via onChunk(chunk, 'content') and accumulate. */
|
|
395
|
+
content?: string;
|
|
396
|
+
}
|
|
397
|
+
/**
|
|
398
|
+
* RC-W2: extract reasoning + content from a Vercel AI SDK fullStream part.
|
|
399
|
+
* Pure function so the extraction contract is unit-testable.
|
|
400
|
+
*
|
|
401
|
+
* Reasoning arrives through provider-specific shapes:
|
|
402
|
+
* - `reasoning-delta` / legacy `reasoning` parts (mapped by SDK providers),
|
|
403
|
+
* - `raw` parts (emitted when `includeRawChunks: true`) whose `rawValue` is the
|
|
404
|
+
* provider's OpenAI-compatible SSE chunk: NVIDIA NIM & DeepSeek put thinking
|
|
405
|
+
* in `choices[0].delta.reasoning_content`, OpenRouter in `choices[0].delta.reasoning`.
|
|
406
|
+
* Without this extraction the entire thinking phase renders as a blank UI
|
|
407
|
+
* (only text-delta reaches the caller) — the observed ~30s silent wait.
|
|
408
|
+
*/
|
|
409
|
+
declare function extractStreamChunk(part: any): ExtractedStreamChunk;
|
|
410
|
+
declare function createStreamAbortSignal(budget: Required<StreamBudget>): StreamAbortHandle;
|
|
354
411
|
/**
|
|
355
412
|
* Robust JSON extraction and repair helper
|
|
356
413
|
*/
|
|
@@ -359,7 +416,7 @@ declare function safeParseJson<T = any>(rawText: string | null): T | null;
|
|
|
359
416
|
/**
|
|
360
417
|
* Multi-tiered resilient streaming inference helper using 100% Vercel AI SDK.
|
|
361
418
|
*/
|
|
362
|
-
declare function streamLLMWithFallback(systemPrompt: string, userPrompt: string, apiKeys?: Record<string, string>, onChunk?: LayerChunkCallback, preferredModel?: string, preferredProvider?: AIProviderName): Promise<string | null>;
|
|
419
|
+
declare function streamLLMWithFallback(systemPrompt: string, userPrompt: string, apiKeys?: Record<string, string>, onChunk?: LayerChunkCallback, preferredModel?: string, preferredProvider?: AIProviderName, budget?: StreamBudget): Promise<string | null>;
|
|
363
420
|
/**
|
|
364
421
|
* Conducts preliminary ecosystem research for a course project.
|
|
365
422
|
*/
|
|
@@ -858,4 +915,4 @@ declare function getSlideLayoutPresetById(id: string): SlideLayoutPreset | undef
|
|
|
858
915
|
*/
|
|
859
916
|
declare function getSlideLayoutPresetsByCategory(category: SlideLayoutCategory): SlideLayoutPreset[];
|
|
860
917
|
|
|
861
|
-
export { ACT_TEMPLATE, AIProviderName, ARTIFACT_EXECUTION_ORDER, type AcademicAuditFinding, AcademicAuditor, type AcademicDimension, ActivityLab, type ArtifactProductionSpec, type AuditBundleInput, BELL_RINGER_TEMPLATE, BLOOM_ACTION_VERBS, BOM_TEMPLATE, BloomTaxonomyEvaluator, type BuildContextOptions, CHOICE_BOARD_TEMPLATE, CODE_LAB_TEMPLATE, CURRICULUM_SLASH_COMMANDS, CodeHardwareFeasibilityEvaluator, CodeLab, type ComprehensiveAcademicReport, ConstructiveAlignmentEvaluator, CrossArtifactDriftEvaluator, CurriculumError, type CurriculumErrorCode, type CurriculumErrorDetail, CurriculumPlan, DependencyEdge, DeterministicPipelineRunner, DeterministicStructuralLinter, DiagnosticQuiz, DiagnosticQuizInput, type DimensionScore, EXIT_TICKET_TEMPLATE, EXPOSITION_REL, EXT_TEMPLATE, type ExecuteCommandResult, ExpositionApprovalError, type ExpositionLlmFn, type ExpositionResult, type ExpositionStorage, type FindingSeverity, FiveEInstructionalEvaluator, type FrameworkLintFinding, type FrameworkLintReport, FrameworkPack, GLOSSARY_TEMPLATE, GRAPHIC_ORGANIZER_TEMPLATE, type GenerateExpositionOptions, HANDOUT_TEMPLATE, ICurriculumStorage, LESSON_PLAN_TEMPLATE, type LayerChunkCallback, type LayerPrefillOptions, type LayerPrefillResult, type LayoutBoxConfig, LessonPlan, MisconceptionEvaluator, ModelResolutionOptions, PROJECT_INSTRUCTION_TEMPLATE, type PackingSpec, type PedagogicalModel, type PipelineExecutionProgress, PlanConstraints, type PlanOptions, type PlanResult, type PlannerLlmFn, PlanningGraph, PlanningNode, type PreliminaryResearchResult, type ProduceLessonOptions, type ProduceLessonResult, type ProjectBriefingData, type ProjectClarification, type ProjectCreationPayload, type ProjectIntentAnalysisResult, ProjectStatusReport, type ProjectionMeta, QUIZ_TEMPLATE, QualityAuditReport, REVIEW_GAME_TEMPLATE, RUBRIC_TEMPLATE, ResolvedGateSettings, SCIENCE_LAB_TEMPLATE, SELF_LAB_TEMPLATE, SLIDE_LAYOUT_PRESETS, SLIDE_TEMPLATE, STATION_ROTATION_TEMPLATE, type SlashCommandDefinition, SlideDeck, type SlideLayoutCategory, type SlideLayoutData, type SlideLayoutPreset, SmartResumeContext, TASK_CARDS_TEMPLATE, TEACHER_GUIDE_TEMPLATE, TIERED_PRACTICE_TEMPLATE, TranslationPolicy, type TranslationTarget, type TranslationTrigger, WORKSHEET_TEMPLATE, analyzeProjectCreationIntent, assertAcyclic, auditQualityReport, buildCurriculumContext, buildCurriculumPlan, buildExpositionContext, buildSessionSliceContext, computePackingSpec, conductPreliminaryResearch, createAiInferenceError, detectProjectPedagogy, ensureExpositionForLesson, ensureKnowledgeExposition, executeCurriculumCommand, expositionCacheKey, extractScopeSequenceRows, extractSessionSlice, generatePhase1SotArtifacts, generatePhase2SotArtifacts, getLessonMetadata, getProjectArtifactScope, getProjectStatusReport, getSlideLayoutPresetById, getSlideLayoutPresetsByCategory, getSmartResumeContext, glossaryTermsForSession, ingestProjectGraphIntoProject, initializeProjectInStorage, isExpositionFresh, isTranslationDue, lintCurriculumFramework, loadCurriculumTemplate, loadSotTemplate, normalizePlanningGraph, parseRoadmapJsonToProjectPayload, produceBatchLessons, produceSingleLesson, renderFrameworkFromPlan, resolveTranslationTargets, safeParseJson, slugifyProjectName, streamLLMWithFallback, streamLayerPrefillWithFallback, topoSort };
|
|
918
|
+
export { ACT_TEMPLATE, AIProviderName, ARTIFACT_EXECUTION_ORDER, type AcademicAuditFinding, AcademicAuditor, type AcademicDimension, ActivityLab, type ArtifactProductionSpec, type AuditBundleInput, BELL_RINGER_TEMPLATE, BLOOM_ACTION_VERBS, BOM_TEMPLATE, BloomTaxonomyEvaluator, type BuildContextOptions, CHOICE_BOARD_TEMPLATE, CODE_LAB_TEMPLATE, CURRICULUM_SLASH_COMMANDS, CodeHardwareFeasibilityEvaluator, CodeLab, type ComprehensiveAcademicReport, ConstructiveAlignmentEvaluator, CrossArtifactDriftEvaluator, CurriculumError, type CurriculumErrorCode, type CurriculumErrorDetail, CurriculumPlan, DEFAULT_STREAM_IDLE_MS, DEFAULT_STREAM_TOTAL_MS, DependencyEdge, DeterministicPipelineRunner, DeterministicStructuralLinter, DiagnosticQuiz, DiagnosticQuizInput, type DimensionScore, EXIT_TICKET_TEMPLATE, EXPOSITION_REL, EXT_TEMPLATE, type ExecuteCommandResult, ExpositionApprovalError, type ExpositionLlmFn, type ExpositionResult, type ExpositionStorage, type ExtractedStreamChunk, type FindingSeverity, FiveEInstructionalEvaluator, type FrameworkLintFinding, type FrameworkLintReport, FrameworkPack, GLOSSARY_TEMPLATE, GRAPHIC_ORGANIZER_TEMPLATE, type GenerateExpositionOptions, HANDOUT_TEMPLATE, ICurriculumStorage, LAYER_TOTAL_BUDGET_MS, LESSON_PLAN_TEMPLATE, type LayerChunkCallback, type LayerPrefillOptions, type LayerPrefillResult, type LayoutBoxConfig, LessonPlan, MisconceptionEvaluator, ModelResolutionOptions, PROJECT_INSTRUCTION_TEMPLATE, type PackingSpec, type PedagogicalModel, type PipelineExecutionProgress, PlanConstraints, type PlanOptions, type PlanResult, type PlannerLlmFn, PlanningGraph, PlanningNode, type PreliminaryResearchResult, type ProduceLessonOptions, type ProduceLessonResult, type ProjectBriefingData, type ProjectClarification, type ProjectCreationPayload, type ProjectIntentAnalysisResult, ProjectStatusReport, type ProjectionMeta, QUIZ_TEMPLATE, QualityAuditReport, REVIEW_GAME_TEMPLATE, RUBRIC_TEMPLATE, ResolvedGateSettings, SCIENCE_LAB_TEMPLATE, SELF_LAB_TEMPLATE, SLIDE_LAYOUT_PRESETS, SLIDE_TEMPLATE, STATION_ROTATION_TEMPLATE, type SlashCommandDefinition, SlideDeck, type SlideLayoutCategory, type SlideLayoutData, type SlideLayoutPreset, SmartResumeContext, type StreamAbortHandle, type StreamBudget, TASK_CARDS_TEMPLATE, TEACHER_GUIDE_TEMPLATE, TIERED_PRACTICE_TEMPLATE, TranslationPolicy, type TranslationTarget, type TranslationTrigger, WORKSHEET_TEMPLATE, analyzeProjectCreationIntent, assertAcyclic, auditQualityReport, buildCurriculumContext, buildCurriculumPlan, buildExpositionContext, buildSessionSliceContext, computePackingSpec, conductPreliminaryResearch, createAiInferenceError, createStreamAbortSignal, detectProjectPedagogy, ensureExpositionForLesson, ensureKnowledgeExposition, executeCurriculumCommand, expositionCacheKey, extractScopeSequenceRows, extractSessionSlice, extractStreamChunk, generatePhase1SotArtifacts, generatePhase2SotArtifacts, getLessonMetadata, getProjectArtifactScope, getProjectStatusReport, getSlideLayoutPresetById, getSlideLayoutPresetsByCategory, getSmartResumeContext, glossaryTermsForSession, ingestProjectGraphIntoProject, initializeProjectInStorage, isExpositionFresh, isTranslationDue, lintCurriculumFramework, loadCurriculumTemplate, loadSotTemplate, normalizePlanningGraph, parseRoadmapJsonToProjectPayload, produceBatchLessons, produceSingleLesson, renderFrameworkFromPlan, resolveStreamBudget, resolveTranslationTargets, safeParseJson, slugifyProjectName, streamLLMWithFallback, streamLayerPrefillWithFallback, topoSort };
|
package/dist/index.d.ts
CHANGED
|
@@ -335,6 +335,10 @@ interface LayerPrefillOptions {
|
|
|
335
335
|
stream?: boolean;
|
|
336
336
|
model?: string;
|
|
337
337
|
provider?: AIProviderName;
|
|
338
|
+
/** Total wall-time budget override for this prefill run (ms). */
|
|
339
|
+
timeoutMs?: number;
|
|
340
|
+
/** Idle (no-data) budget override for this prefill run (ms). */
|
|
341
|
+
idleTimeoutMs?: number;
|
|
338
342
|
}
|
|
339
343
|
interface PreliminaryResearchResult {
|
|
340
344
|
groundTruthSummary: string;
|
|
@@ -351,6 +355,59 @@ interface LayerPrefillResult {
|
|
|
351
355
|
rawText?: string;
|
|
352
356
|
}
|
|
353
357
|
type LayerChunkCallback = (chunk: string, type: 'thought' | 'content') => void;
|
|
358
|
+
/** Budget knobs for a streamed inference (see createStreamAbortSignal). */
|
|
359
|
+
interface StreamBudget {
|
|
360
|
+
/** Abort when no data arrives for this long (ms). 0 disables. */
|
|
361
|
+
idleMs?: number;
|
|
362
|
+
/** Abort when the whole stream exceeds this total wall time (ms). 0 disables. */
|
|
363
|
+
totalMs?: number;
|
|
364
|
+
}
|
|
365
|
+
declare const DEFAULT_STREAM_IDLE_MS = 45000;
|
|
366
|
+
declare const DEFAULT_STREAM_TOTAL_MS = 300000;
|
|
367
|
+
/** Layer-aware total budget: Layer 2 is the largest prefill output (6 fields × options pros/cons). */
|
|
368
|
+
declare const LAYER_TOTAL_BUDGET_MS: Record<number, number>;
|
|
369
|
+
/**
|
|
370
|
+
* Resolve the abort budget for a prefill run. Precedence: explicit options >
|
|
371
|
+
* env (`WIZARD_PREFILL_IDLE_TIMEOUT_MS` / `WIZARD_PREFILL_TOTAL_TIMEOUT_MS`) >
|
|
372
|
+
* layer-aware defaults. Exposed as a pure function for decision-table tests.
|
|
373
|
+
*/
|
|
374
|
+
declare function resolveStreamBudget(layer?: number, opts?: StreamBudget): Required<StreamBudget>;
|
|
375
|
+
/**
|
|
376
|
+
* Abort signal combining an IDLE window with an optional TOTAL cap.
|
|
377
|
+
* RC-W1: `AbortSignal.timeout(60_000)` hard-killed Layer 2 mid-stream even while
|
|
378
|
+
* tokens were flowing (free-tier models think + stream slowly) — the aborted
|
|
379
|
+
* `fullContent` then failed `safeParseJson` (empty or truncated JSON).
|
|
380
|
+
* The idle window only fires when NO data arrives (hung connection), while a
|
|
381
|
+
* generous layer-aware total cap is the safety net.
|
|
382
|
+
*/
|
|
383
|
+
interface StreamAbortHandle {
|
|
384
|
+
signal: AbortSignal;
|
|
385
|
+
/** Reset the idle window — call on EVERY received stream part. */
|
|
386
|
+
kick: () => void;
|
|
387
|
+
/** Clear both timers once the stream lifecycle is over. */
|
|
388
|
+
dispose: () => void;
|
|
389
|
+
}
|
|
390
|
+
/** Chunks extracted from one raw Vercel AI SDK stream part. */
|
|
391
|
+
interface ExtractedStreamChunk {
|
|
392
|
+
/** Reasoning/thinking text to forward via onChunk(chunk, 'thought'). */
|
|
393
|
+
thought?: string;
|
|
394
|
+
/** Content text to forward via onChunk(chunk, 'content') and accumulate. */
|
|
395
|
+
content?: string;
|
|
396
|
+
}
|
|
397
|
+
/**
|
|
398
|
+
* RC-W2: extract reasoning + content from a Vercel AI SDK fullStream part.
|
|
399
|
+
* Pure function so the extraction contract is unit-testable.
|
|
400
|
+
*
|
|
401
|
+
* Reasoning arrives through provider-specific shapes:
|
|
402
|
+
* - `reasoning-delta` / legacy `reasoning` parts (mapped by SDK providers),
|
|
403
|
+
* - `raw` parts (emitted when `includeRawChunks: true`) whose `rawValue` is the
|
|
404
|
+
* provider's OpenAI-compatible SSE chunk: NVIDIA NIM & DeepSeek put thinking
|
|
405
|
+
* in `choices[0].delta.reasoning_content`, OpenRouter in `choices[0].delta.reasoning`.
|
|
406
|
+
* Without this extraction the entire thinking phase renders as a blank UI
|
|
407
|
+
* (only text-delta reaches the caller) — the observed ~30s silent wait.
|
|
408
|
+
*/
|
|
409
|
+
declare function extractStreamChunk(part: any): ExtractedStreamChunk;
|
|
410
|
+
declare function createStreamAbortSignal(budget: Required<StreamBudget>): StreamAbortHandle;
|
|
354
411
|
/**
|
|
355
412
|
* Robust JSON extraction and repair helper
|
|
356
413
|
*/
|
|
@@ -359,7 +416,7 @@ declare function safeParseJson<T = any>(rawText: string | null): T | null;
|
|
|
359
416
|
/**
|
|
360
417
|
* Multi-tiered resilient streaming inference helper using 100% Vercel AI SDK.
|
|
361
418
|
*/
|
|
362
|
-
declare function streamLLMWithFallback(systemPrompt: string, userPrompt: string, apiKeys?: Record<string, string>, onChunk?: LayerChunkCallback, preferredModel?: string, preferredProvider?: AIProviderName): Promise<string | null>;
|
|
419
|
+
declare function streamLLMWithFallback(systemPrompt: string, userPrompt: string, apiKeys?: Record<string, string>, onChunk?: LayerChunkCallback, preferredModel?: string, preferredProvider?: AIProviderName, budget?: StreamBudget): Promise<string | null>;
|
|
363
420
|
/**
|
|
364
421
|
* Conducts preliminary ecosystem research for a course project.
|
|
365
422
|
*/
|
|
@@ -858,4 +915,4 @@ declare function getSlideLayoutPresetById(id: string): SlideLayoutPreset | undef
|
|
|
858
915
|
*/
|
|
859
916
|
declare function getSlideLayoutPresetsByCategory(category: SlideLayoutCategory): SlideLayoutPreset[];
|
|
860
917
|
|
|
861
|
-
export { ACT_TEMPLATE, AIProviderName, ARTIFACT_EXECUTION_ORDER, type AcademicAuditFinding, AcademicAuditor, type AcademicDimension, ActivityLab, type ArtifactProductionSpec, type AuditBundleInput, BELL_RINGER_TEMPLATE, BLOOM_ACTION_VERBS, BOM_TEMPLATE, BloomTaxonomyEvaluator, type BuildContextOptions, CHOICE_BOARD_TEMPLATE, CODE_LAB_TEMPLATE, CURRICULUM_SLASH_COMMANDS, CodeHardwareFeasibilityEvaluator, CodeLab, type ComprehensiveAcademicReport, ConstructiveAlignmentEvaluator, CrossArtifactDriftEvaluator, CurriculumError, type CurriculumErrorCode, type CurriculumErrorDetail, CurriculumPlan, DependencyEdge, DeterministicPipelineRunner, DeterministicStructuralLinter, DiagnosticQuiz, DiagnosticQuizInput, type DimensionScore, EXIT_TICKET_TEMPLATE, EXPOSITION_REL, EXT_TEMPLATE, type ExecuteCommandResult, ExpositionApprovalError, type ExpositionLlmFn, type ExpositionResult, type ExpositionStorage, type FindingSeverity, FiveEInstructionalEvaluator, type FrameworkLintFinding, type FrameworkLintReport, FrameworkPack, GLOSSARY_TEMPLATE, GRAPHIC_ORGANIZER_TEMPLATE, type GenerateExpositionOptions, HANDOUT_TEMPLATE, ICurriculumStorage, LESSON_PLAN_TEMPLATE, type LayerChunkCallback, type LayerPrefillOptions, type LayerPrefillResult, type LayoutBoxConfig, LessonPlan, MisconceptionEvaluator, ModelResolutionOptions, PROJECT_INSTRUCTION_TEMPLATE, type PackingSpec, type PedagogicalModel, type PipelineExecutionProgress, PlanConstraints, type PlanOptions, type PlanResult, type PlannerLlmFn, PlanningGraph, PlanningNode, type PreliminaryResearchResult, type ProduceLessonOptions, type ProduceLessonResult, type ProjectBriefingData, type ProjectClarification, type ProjectCreationPayload, type ProjectIntentAnalysisResult, ProjectStatusReport, type ProjectionMeta, QUIZ_TEMPLATE, QualityAuditReport, REVIEW_GAME_TEMPLATE, RUBRIC_TEMPLATE, ResolvedGateSettings, SCIENCE_LAB_TEMPLATE, SELF_LAB_TEMPLATE, SLIDE_LAYOUT_PRESETS, SLIDE_TEMPLATE, STATION_ROTATION_TEMPLATE, type SlashCommandDefinition, SlideDeck, type SlideLayoutCategory, type SlideLayoutData, type SlideLayoutPreset, SmartResumeContext, TASK_CARDS_TEMPLATE, TEACHER_GUIDE_TEMPLATE, TIERED_PRACTICE_TEMPLATE, TranslationPolicy, type TranslationTarget, type TranslationTrigger, WORKSHEET_TEMPLATE, analyzeProjectCreationIntent, assertAcyclic, auditQualityReport, buildCurriculumContext, buildCurriculumPlan, buildExpositionContext, buildSessionSliceContext, computePackingSpec, conductPreliminaryResearch, createAiInferenceError, detectProjectPedagogy, ensureExpositionForLesson, ensureKnowledgeExposition, executeCurriculumCommand, expositionCacheKey, extractScopeSequenceRows, extractSessionSlice, generatePhase1SotArtifacts, generatePhase2SotArtifacts, getLessonMetadata, getProjectArtifactScope, getProjectStatusReport, getSlideLayoutPresetById, getSlideLayoutPresetsByCategory, getSmartResumeContext, glossaryTermsForSession, ingestProjectGraphIntoProject, initializeProjectInStorage, isExpositionFresh, isTranslationDue, lintCurriculumFramework, loadCurriculumTemplate, loadSotTemplate, normalizePlanningGraph, parseRoadmapJsonToProjectPayload, produceBatchLessons, produceSingleLesson, renderFrameworkFromPlan, resolveTranslationTargets, safeParseJson, slugifyProjectName, streamLLMWithFallback, streamLayerPrefillWithFallback, topoSort };
|
|
918
|
+
export { ACT_TEMPLATE, AIProviderName, ARTIFACT_EXECUTION_ORDER, type AcademicAuditFinding, AcademicAuditor, type AcademicDimension, ActivityLab, type ArtifactProductionSpec, type AuditBundleInput, BELL_RINGER_TEMPLATE, BLOOM_ACTION_VERBS, BOM_TEMPLATE, BloomTaxonomyEvaluator, type BuildContextOptions, CHOICE_BOARD_TEMPLATE, CODE_LAB_TEMPLATE, CURRICULUM_SLASH_COMMANDS, CodeHardwareFeasibilityEvaluator, CodeLab, type ComprehensiveAcademicReport, ConstructiveAlignmentEvaluator, CrossArtifactDriftEvaluator, CurriculumError, type CurriculumErrorCode, type CurriculumErrorDetail, CurriculumPlan, DEFAULT_STREAM_IDLE_MS, DEFAULT_STREAM_TOTAL_MS, DependencyEdge, DeterministicPipelineRunner, DeterministicStructuralLinter, DiagnosticQuiz, DiagnosticQuizInput, type DimensionScore, EXIT_TICKET_TEMPLATE, EXPOSITION_REL, EXT_TEMPLATE, type ExecuteCommandResult, ExpositionApprovalError, type ExpositionLlmFn, type ExpositionResult, type ExpositionStorage, type ExtractedStreamChunk, type FindingSeverity, FiveEInstructionalEvaluator, type FrameworkLintFinding, type FrameworkLintReport, FrameworkPack, GLOSSARY_TEMPLATE, GRAPHIC_ORGANIZER_TEMPLATE, type GenerateExpositionOptions, HANDOUT_TEMPLATE, ICurriculumStorage, LAYER_TOTAL_BUDGET_MS, LESSON_PLAN_TEMPLATE, type LayerChunkCallback, type LayerPrefillOptions, type LayerPrefillResult, type LayoutBoxConfig, LessonPlan, MisconceptionEvaluator, ModelResolutionOptions, PROJECT_INSTRUCTION_TEMPLATE, type PackingSpec, type PedagogicalModel, type PipelineExecutionProgress, PlanConstraints, type PlanOptions, type PlanResult, type PlannerLlmFn, PlanningGraph, PlanningNode, type PreliminaryResearchResult, type ProduceLessonOptions, type ProduceLessonResult, type ProjectBriefingData, type ProjectClarification, type ProjectCreationPayload, type ProjectIntentAnalysisResult, ProjectStatusReport, type ProjectionMeta, QUIZ_TEMPLATE, QualityAuditReport, REVIEW_GAME_TEMPLATE, RUBRIC_TEMPLATE, ResolvedGateSettings, SCIENCE_LAB_TEMPLATE, SELF_LAB_TEMPLATE, SLIDE_LAYOUT_PRESETS, SLIDE_TEMPLATE, STATION_ROTATION_TEMPLATE, type SlashCommandDefinition, SlideDeck, type SlideLayoutCategory, type SlideLayoutData, type SlideLayoutPreset, SmartResumeContext, type StreamAbortHandle, type StreamBudget, TASK_CARDS_TEMPLATE, TEACHER_GUIDE_TEMPLATE, TIERED_PRACTICE_TEMPLATE, TranslationPolicy, type TranslationTarget, type TranslationTrigger, WORKSHEET_TEMPLATE, analyzeProjectCreationIntent, assertAcyclic, auditQualityReport, buildCurriculumContext, buildCurriculumPlan, buildExpositionContext, buildSessionSliceContext, computePackingSpec, conductPreliminaryResearch, createAiInferenceError, createStreamAbortSignal, detectProjectPedagogy, ensureExpositionForLesson, ensureKnowledgeExposition, executeCurriculumCommand, expositionCacheKey, extractScopeSequenceRows, extractSessionSlice, extractStreamChunk, generatePhase1SotArtifacts, generatePhase2SotArtifacts, getLessonMetadata, getProjectArtifactScope, getProjectStatusReport, getSlideLayoutPresetById, getSlideLayoutPresetsByCategory, getSmartResumeContext, glossaryTermsForSession, ingestProjectGraphIntoProject, initializeProjectInStorage, isExpositionFresh, isTranslationDue, lintCurriculumFramework, loadCurriculumTemplate, loadSotTemplate, normalizePlanningGraph, parseRoadmapJsonToProjectPayload, produceBatchLessons, produceSingleLesson, renderFrameworkFromPlan, resolveStreamBudget, resolveTranslationTargets, safeParseJson, slugifyProjectName, streamLLMWithFallback, streamLayerPrefillWithFallback, topoSort };
|
package/dist/index.mjs
CHANGED
|
@@ -13514,6 +13514,78 @@ var DeterministicPipelineRunner = class {
|
|
|
13514
13514
|
|
|
13515
13515
|
// src/services/prefillService.ts
|
|
13516
13516
|
init_streamRunner();
|
|
13517
|
+
var DEFAULT_STREAM_IDLE_MS = 45e3;
|
|
13518
|
+
var DEFAULT_STREAM_TOTAL_MS = 3e5;
|
|
13519
|
+
var LAYER_TOTAL_BUDGET_MS = {
|
|
13520
|
+
1: 18e4,
|
|
13521
|
+
2: 36e4,
|
|
13522
|
+
3: 36e4
|
|
13523
|
+
};
|
|
13524
|
+
function resolveStreamBudget(layer, opts) {
|
|
13525
|
+
const envIdle = Number(process.env.WIZARD_PREFILL_IDLE_TIMEOUT_MS);
|
|
13526
|
+
const envTotal = Number(process.env.WIZARD_PREFILL_TOTAL_TIMEOUT_MS);
|
|
13527
|
+
const layerTotal = layer !== void 0 ? LAYER_TOTAL_BUDGET_MS[layer] : void 0;
|
|
13528
|
+
return {
|
|
13529
|
+
idleMs: opts?.idleMs ?? (Number.isFinite(envIdle) && envIdle > 0 ? envIdle : DEFAULT_STREAM_IDLE_MS),
|
|
13530
|
+
totalMs: opts?.totalMs ?? (Number.isFinite(envTotal) && envTotal > 0 ? envTotal : layerTotal ?? DEFAULT_STREAM_TOTAL_MS)
|
|
13531
|
+
};
|
|
13532
|
+
}
|
|
13533
|
+
function extractStreamChunk(part) {
|
|
13534
|
+
if (!part || typeof part !== "object") return {};
|
|
13535
|
+
if (part.type === "reasoning-delta" || part.type === "reasoning") {
|
|
13536
|
+
const thought = part.text ?? part.delta ?? part.reasoning ?? "";
|
|
13537
|
+
return thought ? { thought } : {};
|
|
13538
|
+
}
|
|
13539
|
+
if (part.type === "text-delta") {
|
|
13540
|
+
const content = part.text ?? part.delta ?? "";
|
|
13541
|
+
return content ? { content } : {};
|
|
13542
|
+
}
|
|
13543
|
+
if (part.type === "raw") {
|
|
13544
|
+
const raw = part.rawValue;
|
|
13545
|
+
const delta = raw?.choices?.[0]?.delta;
|
|
13546
|
+
const reasoning = delta?.reasoning_content ?? delta?.reasoning ?? raw?.delta?.reasoning_content ?? raw?.delta?.reasoning;
|
|
13547
|
+
if (typeof reasoning === "string" && reasoning) return { thought: reasoning };
|
|
13548
|
+
const text = delta?.content ?? raw?.delta?.content;
|
|
13549
|
+
if (typeof text === "string" && text) return { content: text };
|
|
13550
|
+
return {};
|
|
13551
|
+
}
|
|
13552
|
+
return {};
|
|
13553
|
+
}
|
|
13554
|
+
function createStreamAbortSignal(budget) {
|
|
13555
|
+
const controller = new AbortController();
|
|
13556
|
+
let idleTimer = null;
|
|
13557
|
+
let totalTimer = null;
|
|
13558
|
+
const armIdle = () => {
|
|
13559
|
+
if (idleTimer) clearTimeout(idleTimer);
|
|
13560
|
+
if (budget.idleMs > 0) {
|
|
13561
|
+
idleTimer = setTimeout(
|
|
13562
|
+
() => controller.abort(new Error(`Idle timeout: no data for ${Math.round(budget.idleMs / 1e3)}s`)),
|
|
13563
|
+
budget.idleMs
|
|
13564
|
+
);
|
|
13565
|
+
idleTimer?.unref?.();
|
|
13566
|
+
}
|
|
13567
|
+
};
|
|
13568
|
+
armIdle();
|
|
13569
|
+
if (budget.totalMs > 0) {
|
|
13570
|
+
totalTimer = setTimeout(
|
|
13571
|
+
() => controller.abort(new Error(`Total stream timeout after ${Math.round(budget.totalMs / 1e3)}s`)),
|
|
13572
|
+
budget.totalMs
|
|
13573
|
+
);
|
|
13574
|
+
totalTimer?.unref?.();
|
|
13575
|
+
}
|
|
13576
|
+
return {
|
|
13577
|
+
signal: controller.signal,
|
|
13578
|
+
/** Reset the idle window — call on EVERY received stream part. */
|
|
13579
|
+
kick: armIdle,
|
|
13580
|
+
/** Clear both timers once the stream lifecycle is over. */
|
|
13581
|
+
dispose: () => {
|
|
13582
|
+
if (idleTimer) clearTimeout(idleTimer);
|
|
13583
|
+
if (totalTimer) clearTimeout(totalTimer);
|
|
13584
|
+
idleTimer = null;
|
|
13585
|
+
totalTimer = null;
|
|
13586
|
+
}
|
|
13587
|
+
};
|
|
13588
|
+
}
|
|
13517
13589
|
function safeParseJson(rawText) {
|
|
13518
13590
|
if (!rawText) return null;
|
|
13519
13591
|
const cleaned = rawText.replace(/```json\s*/gi, "").replace(/```\s*/g, "").trim();
|
|
@@ -13538,7 +13610,7 @@ function safeParseJson(rawText) {
|
|
|
13538
13610
|
return null;
|
|
13539
13611
|
}
|
|
13540
13612
|
}
|
|
13541
|
-
async function streamLLMWithFallback(systemPrompt, userPrompt, apiKeys = {}, onChunk, preferredModel, preferredProvider) {
|
|
13613
|
+
async function streamLLMWithFallback(systemPrompt, userPrompt, apiKeys = {}, onChunk, preferredModel, preferredProvider, budget) {
|
|
13542
13614
|
const alibabaKey = apiKeys.alibaba || apiKeys.dashscope || process.env.ALIBABA_API_KEY || process.env.DASHSCOPE_API_KEY;
|
|
13543
13615
|
const nvidiaKey = apiKeys.nvidia || process.env.NVIDIA_API_KEY;
|
|
13544
13616
|
const deepseekKey = apiKeys.deepseek || process.env.DEEPSEEK_API_KEY;
|
|
@@ -13616,8 +13688,13 @@ async function streamLLMWithFallback(systemPrompt, userPrompt, apiKeys = {}, onC
|
|
|
13616
13688
|
const systemInstructions = `${systemPrompt}
|
|
13617
13689
|
|
|
13618
13690
|
THINKING DIRECTIVE: Keep reasoning concise, structured, and focused strictly on the core pedagogical trade-offs in 4-6 concise bullet points (under 120 words). Then output the JSON immediately.`;
|
|
13691
|
+
const resolvedBudget = {
|
|
13692
|
+
idleMs: budget?.idleMs ?? DEFAULT_STREAM_IDLE_MS,
|
|
13693
|
+
totalMs: budget?.totalMs ?? DEFAULT_STREAM_TOTAL_MS
|
|
13694
|
+
};
|
|
13619
13695
|
for (const candidate of candidates) {
|
|
13620
13696
|
const t0 = Date.now();
|
|
13697
|
+
const abort = createStreamAbortSignal(resolvedBudget);
|
|
13621
13698
|
try {
|
|
13622
13699
|
const modelInstance = getAIModel({
|
|
13623
13700
|
provider: candidate.provider,
|
|
@@ -13630,26 +13707,16 @@ THINKING DIRECTIVE: Keep reasoning concise, structured, and focused strictly on
|
|
|
13630
13707
|
prompt: userPrompt,
|
|
13631
13708
|
temperature: 0.2,
|
|
13632
13709
|
includeRawChunks: true,
|
|
13633
|
-
abortSignal:
|
|
13710
|
+
abortSignal: abort.signal
|
|
13634
13711
|
});
|
|
13635
13712
|
let fullContent = "";
|
|
13636
13713
|
for await (const part of streamResult.fullStream) {
|
|
13637
|
-
|
|
13638
|
-
|
|
13639
|
-
|
|
13640
|
-
|
|
13641
|
-
|
|
13642
|
-
|
|
13643
|
-
const reasoning = delta?.reasoning_content || delta?.reasoning;
|
|
13644
|
-
if (reasoning) {
|
|
13645
|
-
onChunk?.(reasoning, "thought");
|
|
13646
|
-
}
|
|
13647
|
-
} else if (part.type === "text-delta") {
|
|
13648
|
-
const textDelta = part.text ?? part.delta ?? "";
|
|
13649
|
-
if (textDelta) {
|
|
13650
|
-
fullContent += textDelta;
|
|
13651
|
-
onChunk?.(textDelta, "content");
|
|
13652
|
-
}
|
|
13714
|
+
abort.kick();
|
|
13715
|
+
const extracted = extractStreamChunk(part);
|
|
13716
|
+
if (extracted.thought) onChunk?.(extracted.thought, "thought");
|
|
13717
|
+
if (extracted.content) {
|
|
13718
|
+
fullContent += extracted.content;
|
|
13719
|
+
onChunk?.(extracted.content, "content");
|
|
13653
13720
|
}
|
|
13654
13721
|
}
|
|
13655
13722
|
if (fullContent.trim()) {
|
|
@@ -13658,6 +13725,8 @@ THINKING DIRECTIVE: Keep reasoning concise, structured, and focused strictly on
|
|
|
13658
13725
|
}
|
|
13659
13726
|
} catch (e) {
|
|
13660
13727
|
console.warn(`[curriculum-kit:VercelAI] Candidate ${candidate.provider} (${candidate.model}) failed in ${Date.now() - t0}ms:`, e?.message || e);
|
|
13728
|
+
} finally {
|
|
13729
|
+
abort.dispose();
|
|
13661
13730
|
}
|
|
13662
13731
|
}
|
|
13663
13732
|
return null;
|
|
@@ -13698,7 +13767,11 @@ Return concise JSON matching:
|
|
|
13698
13767
|
(chunk, type) => {
|
|
13699
13768
|
if (type === "content") rawContent += chunk;
|
|
13700
13769
|
onChunk?.(chunk, type);
|
|
13701
|
-
}
|
|
13770
|
+
},
|
|
13771
|
+
options.model,
|
|
13772
|
+
options.provider,
|
|
13773
|
+
// Research may run live web grounding — generous budget, still idle-guarded.
|
|
13774
|
+
resolveStreamBudget(void 0, { idleMs: options.idleTimeoutMs, totalMs: options.timeoutMs })
|
|
13702
13775
|
);
|
|
13703
13776
|
let parsedResearch = {
|
|
13704
13777
|
groundTruthSummary: `Verified ecosystem standards for ${projectName}`,
|
|
@@ -13712,6 +13785,68 @@ Return concise JSON matching:
|
|
|
13712
13785
|
}
|
|
13713
13786
|
return parsedResearch;
|
|
13714
13787
|
}
|
|
13788
|
+
var CONTEXT_KEY_LABELS = {
|
|
13789
|
+
domain: "Domain",
|
|
13790
|
+
customDomain: "Custom Domain",
|
|
13791
|
+
context: "Educational Context (Tier)",
|
|
13792
|
+
contextLabel: "Educational Context",
|
|
13793
|
+
customContext: "Custom Educational Context",
|
|
13794
|
+
targetAgeTier: "Target Age Tier",
|
|
13795
|
+
targetAge: "Target Age & Audience",
|
|
13796
|
+
customAge: "Custom Age Group",
|
|
13797
|
+
courseDurationTier: "Course Duration Tier",
|
|
13798
|
+
courseDuration: "Planned Course Duration",
|
|
13799
|
+
customDuration: "Custom Course Duration",
|
|
13800
|
+
hardwareReadinessTier: "Hardware Readiness Tier",
|
|
13801
|
+
hardwareReadiness: "Hardware & Tool Readiness",
|
|
13802
|
+
customHardware: "Custom Hardware Setup",
|
|
13803
|
+
language: "Artifact Output Language",
|
|
13804
|
+
totalWeeks: "Total Weeks",
|
|
13805
|
+
sessionsPerWeek: "Sessions Per Week",
|
|
13806
|
+
sessionDurationMinutes: "Session Duration (minutes)",
|
|
13807
|
+
totalSessions: "Total Sessions",
|
|
13808
|
+
isConsecutiveSessions: "Consecutive (Block) Sessions",
|
|
13809
|
+
projectName: "Course Title",
|
|
13810
|
+
projectCode: "Project Identifier",
|
|
13811
|
+
courseDescription: "Idea Description"
|
|
13812
|
+
};
|
|
13813
|
+
var STRUCTURED_PROMPT_KEYS = /* @__PURE__ */ new Set([
|
|
13814
|
+
"projectName",
|
|
13815
|
+
"projectCode",
|
|
13816
|
+
"courseDescription",
|
|
13817
|
+
"language",
|
|
13818
|
+
"primaryGoal",
|
|
13819
|
+
"exitVision",
|
|
13820
|
+
"cognitiveDepth",
|
|
13821
|
+
"valueAndCertification",
|
|
13822
|
+
"entryBridge",
|
|
13823
|
+
"pedagogy",
|
|
13824
|
+
"classDynamic",
|
|
13825
|
+
"hardwareDeployment",
|
|
13826
|
+
"teacherRole",
|
|
13827
|
+
"lessonPacingModel",
|
|
13828
|
+
"voiceAndTone"
|
|
13829
|
+
]);
|
|
13830
|
+
function buildRemainingContextBlock(accumulatedData) {
|
|
13831
|
+
const lines = [];
|
|
13832
|
+
for (const [key, rawVal] of Object.entries(accumulatedData)) {
|
|
13833
|
+
if (STRUCTURED_PROMPT_KEYS.has(key)) continue;
|
|
13834
|
+
if (rawVal === void 0 || rawVal === null || rawVal === "") continue;
|
|
13835
|
+
if (key.endsWith("_ids") || key.endsWith("_id")) continue;
|
|
13836
|
+
const label = CONTEXT_KEY_LABELS[key] || key.replace(/([A-Z])/g, " $1").replace(/_/g, " ").replace(/^./, (c) => c.toUpperCase()).trim();
|
|
13837
|
+
let valueStr;
|
|
13838
|
+
if (Array.isArray(rawVal)) {
|
|
13839
|
+
valueStr = rawVal.map((v) => typeof v === "object" ? JSON.stringify(v) : String(v)).join("; ");
|
|
13840
|
+
} else if (typeof rawVal === "object") {
|
|
13841
|
+
valueStr = JSON.stringify(rawVal);
|
|
13842
|
+
} else {
|
|
13843
|
+
valueStr = String(rawVal);
|
|
13844
|
+
}
|
|
13845
|
+
if (!valueStr.trim()) continue;
|
|
13846
|
+
lines.push(`- ${label}: ${valueStr}`);
|
|
13847
|
+
}
|
|
13848
|
+
return lines.join("\n");
|
|
13849
|
+
}
|
|
13715
13850
|
async function streamLayerPrefillWithFallback(options, onChunk) {
|
|
13716
13851
|
const { action = "prefill", targetLayer = 1, accumulatedData = {}, apiKeys = {} } = options;
|
|
13717
13852
|
if (action === "research") {
|
|
@@ -13722,26 +13857,21 @@ async function streamLayerPrefillWithFallback(options, onChunk) {
|
|
|
13722
13857
|
projectName = "Curriculum Course",
|
|
13723
13858
|
projectCode = "curriculum-course",
|
|
13724
13859
|
courseDescription = "",
|
|
13725
|
-
domain = "tech",
|
|
13726
|
-
context = "center",
|
|
13727
|
-
contextLabel = "STEM Academy",
|
|
13728
13860
|
targetAgeTier = "secondary",
|
|
13729
13861
|
targetAge = "Secondary (Ages 11-15 / Grades 6-9)",
|
|
13730
13862
|
courseDurationTier = "standard",
|
|
13731
13863
|
courseDuration = "Standard Course (16-24 sessions / 24-36 hours)",
|
|
13732
|
-
hardwareReadinessTier = "none_budget",
|
|
13733
|
-
hardwareReadiness = "No dedicated hardware (Plug-and-play simulator or economical kit)",
|
|
13734
13864
|
primaryGoal = "",
|
|
13735
13865
|
exitVision = "",
|
|
13736
13866
|
valueAndCertification = "",
|
|
13737
|
-
|
|
13867
|
+
entryBridge = "",
|
|
13738
13868
|
pedagogy = "5E Instructional Model",
|
|
13739
|
-
|
|
13740
|
-
|
|
13741
|
-
|
|
13742
|
-
|
|
13743
|
-
|
|
13744
|
-
|
|
13869
|
+
lessonPacingModel = "",
|
|
13870
|
+
voiceAndTone = "",
|
|
13871
|
+
classDynamic = "",
|
|
13872
|
+
hardwareDeployment = "",
|
|
13873
|
+
teacherRole = "",
|
|
13874
|
+
cognitiveDepth = "Apply"
|
|
13745
13875
|
} = accumulatedData;
|
|
13746
13876
|
const language = typeof options.language === "string" && options.language ? options.language : typeof accumulatedData.language === "string" && accumulatedData.language ? accumulatedData.language : "vi";
|
|
13747
13877
|
const textLangMandate = language === "vi" ? "natural, fluent Vietnamese (Ti\u1EBFng Vi\u1EC7t)" : language === "en" ? "natural, fluent English" : `natural, fluent ${language}`;
|
|
@@ -13777,7 +13907,7 @@ ${targetLayer === 1 ? `
|
|
|
13777
13907
|
- Field 2 (id: 'brandingAndTone', type: 'single_choice'): Art Direction & Visual Mood (ART_DIRECTION: Future Maker Lab high-contrast vs Clean Minimalist Studio vs Gamified Playful).
|
|
13778
13908
|
- Field 3 (id: 'differentiationStrategy', type: 'single_choice'): Differentiation & Scaffolding Strategy (CONTENT_STYLE_GUIDE: Tier 1/2/3 Bronze/Silver/Gold + EXT Challenges vs Open-ended Rubric Studio).
|
|
13779
13909
|
- Field 4 (id: 'cognitiveScaffolding', type: 'textarea'): Concrete scaffolding methods (Starter Code, color-coded breadboards, 4-step debug poster, simulator preview).
|
|
13780
|
-
- Field 5 (id: 'recommendedToolchain', type: 'single_choice'): 3 concrete toolchain/IDE options matching
|
|
13910
|
+
- Field 5 (id: 'recommendedToolchain', type: 'single_choice'): 3 concrete toolchain/IDE options matching the confirmed Hardware & Tool Readiness from FULL ACCUMULATED CONTEXT.
|
|
13781
13911
|
- Field 6 (id: 'artifactScope', type: 'multi_choice'): Deliverable artifacts (LESSON mandatory + ACT, QUIZ, SLIDE, WKS, HANDOUT, GUIDE, CODE).
|
|
13782
13912
|
- Field 7 (id: 'assessmentStrategy', type: 'single_choice'): Grading weights (e.g. 40% Formative Process + 60% Capstone Rubric).
|
|
13783
13913
|
`}
|
|
@@ -13807,10 +13937,8 @@ RETURN STRICT VALID JSON ONLY adhering exactly to this format:
|
|
|
13807
13937
|
- Course Title: "${projectName}"
|
|
13808
13938
|
- Project Identifier: "${projectCode}"
|
|
13809
13939
|
- Idea Description: "${courseDescription}"
|
|
13810
|
-
- Target Age & Audience: ${targetAge}
|
|
13811
|
-
- Planned Course Duration: ${courseDuration}
|
|
13812
|
-
- Hardware & Tool Readiness: ${hardwareReadiness} (Tier: ${hardwareReadinessTier})
|
|
13813
|
-
- Educational Context: ${contextLabel || context} | Domain: ${domain}
|
|
13940
|
+
- Target Age & Audience: ${targetAge}
|
|
13941
|
+
- Planned Course Duration: ${courseDuration}
|
|
13814
13942
|
|
|
13815
13943
|
${targetLayer >= 2 ? `
|
|
13816
13944
|
APPROVED PARAMETERS FROM LAYER 1 (STRATEGIC INTENT & OUTCOMES):
|
|
@@ -13818,17 +13946,23 @@ APPROVED PARAMETERS FROM LAYER 1 (STRATEGIC INTENT & OUTCOMES):
|
|
|
13818
13946
|
- Competency Exit Vision: "${exitVision}"
|
|
13819
13947
|
- Target Cognitive Depth: "${cognitiveDepth}"
|
|
13820
13948
|
- Value & Recognition: "${valueAndCertification}"
|
|
13949
|
+
- Prerequisite Entry Bridge: "${entryBridge}"
|
|
13821
13950
|
` : ""}
|
|
13822
13951
|
|
|
13823
13952
|
${targetLayer >= 3 ? `
|
|
13824
13953
|
APPROVED PARAMETERS FROM LAYER 2 (PEDAGOGY & LOGISTICS):
|
|
13825
|
-
-
|
|
13826
|
-
-
|
|
13827
|
-
-
|
|
13828
|
-
-
|
|
13954
|
+
- Lesson Pacing Model: "${lessonPacingModel}"
|
|
13955
|
+
- Selected Pedagogy Model: "${pedagogy}"
|
|
13956
|
+
- Voice & Tone: "${voiceAndTone}"
|
|
13957
|
+
- Class Dynamics / Hardware Ratio: "${classDynamic}"
|
|
13958
|
+
- Lab Deployment Mode: "${hardwareDeployment}"
|
|
13959
|
+
- Instructional Role: "${teacherRole}"
|
|
13829
13960
|
` : ""}
|
|
13830
13961
|
|
|
13831
|
-
|
|
13962
|
+
FULL ACCUMULATED CONTEXT (ALL CONFIRMED PARAMETERS FROM EVERY PREVIOUS STEP \u2014 user decisions, organization/instructor/template profiles, schedules and constraints; every line below MUST be honored in your output):
|
|
13963
|
+
${buildRemainingContextBlock(accumulatedData) || "(no additional context)"}
|
|
13964
|
+
|
|
13965
|
+
REQUIREMENT: Synthesize ALL parameters above \u2014 every single line in FULL ACCUMULATED CONTEXT is a confirmed user decision or system constraint and MUST influence the generated configuration. Produce the high-fidelity pre-fill configuration for LAYER ${targetLayer}.`;
|
|
13832
13966
|
let rawContent = "";
|
|
13833
13967
|
await streamLLMWithFallback(
|
|
13834
13968
|
systemPrompt,
|
|
@@ -13839,7 +13973,10 @@ REQUIREMENT: Synthesize all parameters above and produce the high-fidelity pre-f
|
|
|
13839
13973
|
onChunk?.(chunk, type);
|
|
13840
13974
|
},
|
|
13841
13975
|
options.model,
|
|
13842
|
-
options.provider
|
|
13976
|
+
options.provider,
|
|
13977
|
+
// RC-W1: layer-aware budget — Layer 2 has the largest output and free-tier
|
|
13978
|
+
// models may think/stream for minutes. Idle window still catches hangs.
|
|
13979
|
+
resolveStreamBudget(targetLayer, { idleMs: options.idleTimeoutMs, totalMs: options.timeoutMs })
|
|
13843
13980
|
);
|
|
13844
13981
|
const parsed = safeParseJson(rawContent);
|
|
13845
13982
|
return {
|
|
@@ -17073,6 +17210,6 @@ function renderMediaPlaceholder(entry) {
|
|
|
17073
17210
|
return `> \u{1F5BC}\uFE0F [\u1EA2nh \u0111ang ch\u1EDD: ${entry.name} \u2014 s\u1EBD \u0111\u01B0\u1EE3c t\u1EA1o sau khi duy\u1EC7t media]`;
|
|
17074
17211
|
}
|
|
17075
17212
|
|
|
17076
|
-
export { ACT_TEMPLATE, 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_ENABLED_PROVIDERS, DEFAULT_GATE_SETTINGS, 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, 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_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, approvalHookToken, approvalPayloadSchema, assertAcyclic, assessorTools, auditCurriculumQualityFlow, auditQualityReport, buildActivityPrompt, buildCodeLabPrompt, buildCurriculumContext, buildCurriculumPlan, buildDeliveryPackages, buildDiagnosticQuizPrompt, buildExpositionContext, buildExtensionPrompt, buildHandoutPrompt, buildImagePrompt, buildJudgePrompt, buildLessonMasterPrompt, buildProjectInstructionPrompt, buildSelfLabPrompt, buildSessionSliceContext, buildSlidesPrompt, buildStandardStackMarkdown, buildStandardsContext, buildStandardsContextBlock, buildTeacherGuidePrompt, buildWorksheetPrompt, computeContentHash, computePackingSpec, conductPreliminaryResearch, contentTools, convertRoadmapToFoundationSot, createAiInferenceError, createCurriculumStorage, curateMediaLedger, designerTools, detectProjectPedagogy, ensureExpositionForLesson, ensureKnowledgeExposition, evaluateStandardsCoverage, executeCurriculumCommand, executeSingleArtifactStep, exportAllProjectQuizzes, expositionCacheKey, extractScopeSequenceRows, extractSessionSlice, extractThoughtAndContent, formatQuizzesToCsv, fulfillMediaLedger, gateModeFor, generateActivityFlow, generateActivityStep, generateCodeLabFlow, generateCodeLabStep, generateDiagnosticQuizFlow, generateDiagnosticQuizStep, generateEducationalImage, generateExtensionFlow, generateExtensionStep, generateHandoutFlow, generateHandoutStep, generateLessonMasterFlow, generateMasterLessonStep, generateMilestoneCurriculumBundle, generateMilestoneWorkflow, generatePhase1SotArtifacts, generatePhase2SotArtifacts, generateProjectInstruction, generateProjectInstructionFlow, generateRoadmapCurriculum, generateRoadmapWorkflow, generateSelfLabFlow, generateSelfLabStep, generateSelfPacedBundle, generateSingleArtifact, generateSingleArtifactWorkflow, generateSlidesFlow, generateSlidesStep, generateTeacherGuideFlow, generateTeacherGuideStep, generateWorksheetFlow, generateWorksheetStep, getAIModel, getArtifactMetadata, getDesignatedFallbackChain, getDesignatedFallbackConfig, getLessonMetadata, getProjectArtifactScope, getProjectStatusReport, getSlideLayoutPresetById, getSlideLayoutPresetsByCategory, getSmartResumeContext, glossaryTermsForSession, illustratorTools, importRoadmapToProject, ingestProjectGraphIntoProject, initializeProjectInStorage, injectMediaIntoMarkdown, isExpositionFresh, isModelAllowed, isProviderEnabled, isTranslationDue, judgeMasterLessonStep, judgeSatelliteStep, lessonApprovalHook, lintAndSanitizeArtifact, lintCurriculumFramework, lintFrameworkPack, loadCurriculumTemplate, loadSotTemplate, normalizePlanningGraph, packagerTools, parseGateSettings, parseQuizMarkdown, parseRoadmapJsonToProjectPayload, produceBatchLessons, produceSingleLesson, publishToGitHub, publishToGitStep, publishToSupabase, publishToSupabaseStep, rankGenCandidates, renderFrameworkFromPlan, renderMediaPlaceholder, repairMasterLessonStep, researcherTools, resolveGateSettings, resolveStandardsPacks, resolveTranslationTargets, reviewerTools, runCurriculumAIInference, safeParseJson, saveMilestoneToWorkspaceStep, searchEducationalImages, searchEducationalVideos, selectStatementsForLesson, serializeActivityToMarkdown, serializeCodeLabToMarkdown, serializeDiagnosticQuizToMarkdown, serializeHandoutToMarkdown, serializeLessonToMarkdown, serializeProjectInstructionToMarkdown, serializeSelfLabToMarkdown, slugifyProjectName, streamCurriculumAIInference, streamCurriculumAIInferenceWithTools, streamDiagnosticQuizFlow, streamLLMWithFallback, streamLayerPrefillWithFallback, streamLessonMasterFlow, streamSelfLabFlow, techSmeTools, topoSort, uploadAssetToBucket, validateCurriculumPlan, validateFrameworkPack, validateMarkdownTables, validateMermaidSyntax, withAutoRepair, withRateLimitBackoff };
|
|
17213
|
+
export { ACT_TEMPLATE, 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_ENABLED_PROVIDERS, DEFAULT_GATE_SETTINGS, 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_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, approvalHookToken, approvalPayloadSchema, assertAcyclic, assessorTools, auditCurriculumQualityFlow, auditQualityReport, buildActivityPrompt, buildCodeLabPrompt, buildCurriculumContext, buildCurriculumPlan, buildDeliveryPackages, buildDiagnosticQuizPrompt, buildExpositionContext, buildExtensionPrompt, buildHandoutPrompt, buildImagePrompt, buildJudgePrompt, buildLessonMasterPrompt, buildProjectInstructionPrompt, buildSelfLabPrompt, buildSessionSliceContext, buildSlidesPrompt, buildStandardStackMarkdown, buildStandardsContext, buildStandardsContextBlock, buildTeacherGuidePrompt, buildWorksheetPrompt, computeContentHash, computePackingSpec, conductPreliminaryResearch, contentTools, convertRoadmapToFoundationSot, createAiInferenceError, createCurriculumStorage, createStreamAbortSignal, curateMediaLedger, designerTools, detectProjectPedagogy, ensureExpositionForLesson, ensureKnowledgeExposition, evaluateStandardsCoverage, executeCurriculumCommand, executeSingleArtifactStep, exportAllProjectQuizzes, expositionCacheKey, extractScopeSequenceRows, extractSessionSlice, extractStreamChunk, extractThoughtAndContent, formatQuizzesToCsv, fulfillMediaLedger, gateModeFor, generateActivityFlow, generateActivityStep, generateCodeLabFlow, generateCodeLabStep, generateDiagnosticQuizFlow, generateDiagnosticQuizStep, generateEducationalImage, generateExtensionFlow, generateExtensionStep, generateHandoutFlow, generateHandoutStep, generateLessonMasterFlow, generateMasterLessonStep, generateMilestoneCurriculumBundle, generateMilestoneWorkflow, generatePhase1SotArtifacts, generatePhase2SotArtifacts, generateProjectInstruction, generateProjectInstructionFlow, generateRoadmapCurriculum, generateRoadmapWorkflow, generateSelfLabFlow, generateSelfLabStep, generateSelfPacedBundle, generateSingleArtifact, generateSingleArtifactWorkflow, generateSlidesFlow, generateSlidesStep, generateTeacherGuideFlow, generateTeacherGuideStep, generateWorksheetFlow, generateWorksheetStep, getAIModel, getArtifactMetadata, getDesignatedFallbackChain, getDesignatedFallbackConfig, getLessonMetadata, getProjectArtifactScope, getProjectStatusReport, getSlideLayoutPresetById, getSlideLayoutPresetsByCategory, getSmartResumeContext, glossaryTermsForSession, illustratorTools, importRoadmapToProject, ingestProjectGraphIntoProject, initializeProjectInStorage, injectMediaIntoMarkdown, isExpositionFresh, isModelAllowed, isProviderEnabled, isTranslationDue, judgeMasterLessonStep, judgeSatelliteStep, lessonApprovalHook, lintAndSanitizeArtifact, lintCurriculumFramework, lintFrameworkPack, loadCurriculumTemplate, loadSotTemplate, normalizePlanningGraph, packagerTools, parseGateSettings, parseQuizMarkdown, parseRoadmapJsonToProjectPayload, produceBatchLessons, produceSingleLesson, publishToGitHub, publishToGitStep, publishToSupabase, publishToSupabaseStep, rankGenCandidates, renderFrameworkFromPlan, renderMediaPlaceholder, repairMasterLessonStep, researcherTools, resolveGateSettings, resolveStandardsPacks, resolveStreamBudget, resolveTranslationTargets, reviewerTools, runCurriculumAIInference, safeParseJson, saveMilestoneToWorkspaceStep, searchEducationalImages, searchEducationalVideos, selectStatementsForLesson, serializeActivityToMarkdown, serializeCodeLabToMarkdown, serializeDiagnosticQuizToMarkdown, serializeHandoutToMarkdown, serializeLessonToMarkdown, serializeProjectInstructionToMarkdown, serializeSelfLabToMarkdown, slugifyProjectName, streamCurriculumAIInference, streamCurriculumAIInferenceWithTools, streamDiagnosticQuizFlow, streamLLMWithFallback, streamLayerPrefillWithFallback, streamLessonMasterFlow, streamSelfLabFlow, techSmeTools, topoSort, uploadAssetToBucket, validateCurriculumPlan, validateFrameworkPack, validateMarkdownTables, validateMermaidSyntax, withAutoRepair, withRateLimitBackoff };
|
|
17077
17214
|
//# sourceMappingURL=index.mjs.map
|
|
17078
17215
|
//# sourceMappingURL=index.mjs.map
|