@thanh01.pmt/curriculum-kit 1.4.35 → 1.4.37
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/ai/index.cjs +57 -1
- package/dist/ai/index.cjs.map +1 -1
- package/dist/ai/index.d.cts +2 -2
- package/dist/ai/index.d.ts +2 -2
- package/dist/ai/index.mjs +57 -1
- package/dist/ai/index.mjs.map +1 -1
- package/dist/{gateSettings-DabOqP6_.d.cts → gateSettings-oo5tCUS_.d.cts} +18 -0
- package/dist/{gateSettings-DabOqP6_.d.ts → gateSettings-oo5tCUS_.d.ts} +18 -0
- package/dist/index.cjs +793 -51
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +251 -74
- package/dist/index.d.ts +251 -74
- package/dist/index.mjs +775 -52
- package/dist/index.mjs.map +1 -1
- package/dist/pipeline/index.cjs +57 -1
- package/dist/pipeline/index.cjs.map +1 -1
- package/dist/pipeline/index.mjs +57 -1
- package/dist/pipeline/index.mjs.map +1 -1
- package/dist/schemas/index.cjs +63 -1
- package/dist/schemas/index.cjs.map +1 -1
- package/dist/schemas/index.d.cts +436 -33
- package/dist/schemas/index.d.ts +436 -33
- package/dist/schemas/index.mjs +58 -2
- package/dist/schemas/index.mjs.map +1 -1
- package/dist/standards/index.d.cts +2 -2
- package/dist/standards/index.d.ts +2 -2
- package/dist/workflow/index.cjs +84 -2
- package/dist/workflow/index.cjs.map +1 -1
- package/dist/workflow/index.d.cts +3 -3
- package/dist/workflow/index.d.ts +3 -3
- package/dist/workflow/index.mjs +84 -2
- package/dist/workflow/index.mjs.map +1 -1
- package/package.json +1 -1
- package/dist/{standardsCoverageGate-DR5YTtlt.d.cts → standardsCoverageGate-49pJq5t8.d.cts} +6 -6
- package/dist/{standardsCoverageGate-DR5YTtlt.d.ts → standardsCoverageGate-49pJq5t8.d.ts} +6 -6
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { F as FrameworkPack, g as FrameworkStatement } from '../standardsCoverageGate-
|
|
2
|
-
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, 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-
|
|
1
|
+
import { F as FrameworkPack, g as FrameworkStatement } from '../standardsCoverageGate-49pJq5t8.cjs';
|
|
2
|
+
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, 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-49pJq5t8.cjs';
|
|
3
3
|
import { SupabaseClient } from '@supabase/supabase-js';
|
|
4
4
|
import 'zod';
|
|
5
5
|
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { F as FrameworkPack, g as FrameworkStatement } from '../standardsCoverageGate-
|
|
2
|
-
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, 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-
|
|
1
|
+
import { F as FrameworkPack, g as FrameworkStatement } from '../standardsCoverageGate-49pJq5t8.js';
|
|
2
|
+
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, 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-49pJq5t8.js';
|
|
3
3
|
import { SupabaseClient } from '@supabase/supabase-js';
|
|
4
4
|
import 'zod';
|
|
5
5
|
|
package/dist/workflow/index.cjs
CHANGED
|
@@ -2394,6 +2394,50 @@ var ScaffoldDecisionEntrySchema = zod.z.object({
|
|
|
2394
2394
|
minutes_saved: zod.z.number().int().nonnegative().default(0),
|
|
2395
2395
|
reason: zod.z.string().min(3)
|
|
2396
2396
|
});
|
|
2397
|
+
var ZpdVerdictSchema = zod.z.enum(["OK", "TOO_MANY_NEW", "NO_ZPD_BRIDGE"]);
|
|
2398
|
+
var SessionZpdStatusSchema = zod.z.object({
|
|
2399
|
+
verdict: ZpdVerdictSchema,
|
|
2400
|
+
new_concept_count: zod.z.number().int().nonnegative().default(0),
|
|
2401
|
+
known_concept_count: zod.z.number().int().nonnegative().default(0),
|
|
2402
|
+
issues: zod.z.array(zod.z.string()).default([])
|
|
2403
|
+
});
|
|
2404
|
+
var ConceptSpiralEncounterSchema = zod.z.object({
|
|
2405
|
+
concept_code: zod.z.string(),
|
|
2406
|
+
session_id: LessonCodeSchema,
|
|
2407
|
+
encounter_index: zod.z.number().int().positive(),
|
|
2408
|
+
bloom_cap: BloomLevelSchema,
|
|
2409
|
+
depth: DepthLevelSchema
|
|
2410
|
+
});
|
|
2411
|
+
var WalkingSkeletonSchema = zod.z.object({
|
|
2412
|
+
epitome_unit_id: zod.z.string().default("U01"),
|
|
2413
|
+
epitome_deliverables: zod.z.array(zod.z.string()).default([]),
|
|
2414
|
+
elaborations: zod.z.array(zod.z.object({
|
|
2415
|
+
unit_id: zod.z.string(),
|
|
2416
|
+
focus_area: zod.z.string(),
|
|
2417
|
+
elaborates_on: zod.z.array(zod.z.string()).default([])
|
|
2418
|
+
})).default([])
|
|
2419
|
+
});
|
|
2420
|
+
var MasteryGateSchema = zod.z.object({
|
|
2421
|
+
phase_or_unit_id: zod.z.string(),
|
|
2422
|
+
gate_name: zod.z.string(),
|
|
2423
|
+
exit_criteria: zod.z.array(zod.z.string()).min(1),
|
|
2424
|
+
next_unit_id: zod.z.string(),
|
|
2425
|
+
remediation: zod.z.object({
|
|
2426
|
+
trigger: zod.z.literal("FAIL_GATE_CRITERIA"),
|
|
2427
|
+
focus_minutes: zod.z.number().int().default(15),
|
|
2428
|
+
action: zod.z.string()
|
|
2429
|
+
})
|
|
2430
|
+
});
|
|
2431
|
+
var ConceptPrerequisiteEdgeSchema = zod.z.object({
|
|
2432
|
+
concept_code: zod.z.string(),
|
|
2433
|
+
requires: zod.z.string(),
|
|
2434
|
+
source: zod.z.enum(["MASTER_TREE", "INFERRED", "CONCEPT_LEVEL_PREREQ"]).default("CONCEPT_LEVEL_PREREQ"),
|
|
2435
|
+
confidence: zod.z.number().min(0).max(1).default(0.8),
|
|
2436
|
+
rationale: zod.z.string().default(""),
|
|
2437
|
+
structure_supported: zod.z.boolean().default(true),
|
|
2438
|
+
needs_review: zod.z.boolean().default(false),
|
|
2439
|
+
hub: zod.z.boolean().default(false)
|
|
2440
|
+
});
|
|
2397
2441
|
var SessionPlanSchema = zod.z.object({
|
|
2398
2442
|
id: LessonCodeSchema,
|
|
2399
2443
|
unit_id: zod.z.string().regex(/^U\d{2}$/),
|
|
@@ -2414,7 +2458,14 @@ var SessionPlanSchema = zod.z.object({
|
|
|
2414
2458
|
scaffold_decisions: zod.z.array(ScaffoldDecisionEntrySchema).default([]),
|
|
2415
2459
|
// What the student can demonstrate after this session — feeds exit tickets.
|
|
2416
2460
|
exit_evidence: zod.z.array(zod.z.string()).min(1),
|
|
2417
|
-
differentiation: zod.z.object({ bronze: zod.z.string(), silver: zod.z.string(), gold: zod.z.string() })
|
|
2461
|
+
differentiation: zod.z.object({ bronze: zod.z.string(), silver: zod.z.string(), gold: zod.z.string() }),
|
|
2462
|
+
// P50: ZPD cognitive load status for this session
|
|
2463
|
+
zpd_status: SessionZpdStatusSchema.default({
|
|
2464
|
+
verdict: "OK",
|
|
2465
|
+
new_concept_count: 0,
|
|
2466
|
+
known_concept_count: 0,
|
|
2467
|
+
issues: []
|
|
2468
|
+
})
|
|
2418
2469
|
});
|
|
2419
2470
|
var TranslationPolicySchema = zod.z.object({
|
|
2420
2471
|
policy: zod.z.enum(["after_artifact", "end_of_unit", "at_publish", "native"]).default("native"),
|
|
@@ -2469,6 +2520,11 @@ zod.z.object({
|
|
|
2469
2520
|
// [2]
|
|
2470
2521
|
sessions: zod.z.array(SessionPlanSchema).min(1),
|
|
2471
2522
|
// [3][4][5][6]
|
|
2523
|
+
// P50: Macro-pedagogical course structures
|
|
2524
|
+
walking_skeleton: WalkingSkeletonSchema.optional(),
|
|
2525
|
+
mastery_gates: zod.z.array(MasteryGateSchema).default([]),
|
|
2526
|
+
concept_spiral_progression: zod.z.array(ConceptSpiralEncounterSchema).default([]),
|
|
2527
|
+
concept_prerequisites: zod.z.array(ConceptPrerequisiteEdgeSchema).default([]),
|
|
2472
2528
|
glossary_scope: zod.z.array(zod.z.object({
|
|
2473
2529
|
session_id: LessonCodeSchema,
|
|
2474
2530
|
terms: zod.z.array(zod.z.string())
|
|
@@ -19054,7 +19110,8 @@ function parseAllSessions(plan, frameworkMarkdown) {
|
|
|
19054
19110
|
prose_objective: s.prose_objective || s.objective || "",
|
|
19055
19111
|
new_keywords: Array.isArray(s.new_keywords) ? s.new_keywords : Array.isArray(s.keywords) ? s.keywords : [],
|
|
19056
19112
|
prerequisite_keywords: Array.isArray(s.prerequisite_keywords) ? s.prerequisite_keywords : [],
|
|
19057
|
-
depth_assignments: Array.isArray(s.depth_assignments) ? s.depth_assignments : []
|
|
19113
|
+
depth_assignments: Array.isArray(s.depth_assignments) ? s.depth_assignments : [],
|
|
19114
|
+
zpd_status: s.zpd_status
|
|
19058
19115
|
}));
|
|
19059
19116
|
}
|
|
19060
19117
|
}
|
|
@@ -19202,12 +19259,16 @@ async function extractCurriculumHorizon(opts) {
|
|
|
19202
19259
|
title: s.title,
|
|
19203
19260
|
keywords: s.new_keywords || []
|
|
19204
19261
|
}));
|
|
19262
|
+
const rawSpirals = Array.isArray(plan?.concept_spiral_progression) ? plan.concept_spiral_progression : [];
|
|
19263
|
+
const sessionSpirals = rawSpirals.filter((e) => e.session_id === targetLessonId);
|
|
19205
19264
|
return {
|
|
19206
19265
|
targetLessonId,
|
|
19207
19266
|
targetLessonIndex: targetIndex + 1,
|
|
19208
19267
|
totalLessons: sessions.length,
|
|
19209
19268
|
targetTitle: currentSession.title,
|
|
19210
19269
|
targetKeywords: currentSession.new_keywords || [],
|
|
19270
|
+
zpdStatus: currentSession.zpd_status,
|
|
19271
|
+
spiralProgression: sessionSpirals,
|
|
19211
19272
|
compactMasterySet: {
|
|
19212
19273
|
masteredKeywords,
|
|
19213
19274
|
masteredConcepts
|
|
@@ -19223,6 +19284,8 @@ function renderHorizonPromptBlock(horizon) {
|
|
|
19223
19284
|
totalLessons,
|
|
19224
19285
|
targetTitle,
|
|
19225
19286
|
targetKeywords,
|
|
19287
|
+
zpdStatus,
|
|
19288
|
+
spiralProgression,
|
|
19226
19289
|
compactMasterySet,
|
|
19227
19290
|
detailedBridge,
|
|
19228
19291
|
boundaryPeek
|
|
@@ -19230,6 +19293,19 @@ function renderHorizonPromptBlock(horizon) {
|
|
|
19230
19293
|
const lines = [
|
|
19231
19294
|
`# \u{1F9ED} CURRICULUM HORIZON & SCAFFOLDING MATRIX (Lesson ${targetLessonIndex}/${totalLessons}: "${targetTitle}" [${targetLessonId}])`
|
|
19232
19295
|
];
|
|
19296
|
+
if (zpdStatus && zpdStatus.verdict !== "OK") {
|
|
19297
|
+
lines.push(
|
|
19298
|
+
`
|
|
19299
|
+
> \u26A0\uFE0F **ZPD COGNITIVE LOAD ALERT (${zpdStatus.verdict}):** ${zpdStatus.issues?.join("; ") || "Scaffolding bridge mandated"}. Introduce minimal new syntax and anchor into known concepts.`
|
|
19300
|
+
);
|
|
19301
|
+
}
|
|
19302
|
+
if (spiralProgression && spiralProgression.length > 0) {
|
|
19303
|
+
const spiralNotes = spiralProgression.map(
|
|
19304
|
+
(sp) => `\`${sp.concept_code}\` (Encounter #${sp.encounter_index}): Bloom Cap [${sp.bloom_cap}], Depth [${sp.depth.toUpperCase()}]`
|
|
19305
|
+
);
|
|
19306
|
+
lines.push(`
|
|
19307
|
+
- **\u{1F300} Bruner Spiral Curricula Guidance:** ${spiralNotes.join(" | ")}`);
|
|
19308
|
+
}
|
|
19233
19309
|
if (compactMasterySet.masteredKeywords.length > 0 || compactMasterySet.masteredConcepts.length > 0) {
|
|
19234
19310
|
const rawKeywords = compactMasterySet.masteredKeywords;
|
|
19235
19311
|
const displayedKeywords = rawKeywords.length > 20 ? rawKeywords.slice(-20) : rawKeywords;
|
|
@@ -19565,6 +19641,12 @@ function findCanonicalFuzzy(norm) {
|
|
|
19565
19641
|
if (norm.includes("worked example") || norm.includes("vi du")) {
|
|
19566
19642
|
return "Worked Micro-Examples";
|
|
19567
19643
|
}
|
|
19644
|
+
if (norm.includes("common mistake") || norm.includes("loi thuong gap") || norm.includes("sai lam") || norm.includes("pitfall")) {
|
|
19645
|
+
return "Common Mistakes";
|
|
19646
|
+
}
|
|
19647
|
+
if (norm.includes("self check") || norm.includes("self-check") || norm.includes("tu kiem tra")) {
|
|
19648
|
+
return "Self-Check Questions";
|
|
19649
|
+
}
|
|
19568
19650
|
return void 0;
|
|
19569
19651
|
}
|
|
19570
19652
|
function truncateByBudget(source, budget) {
|