LXPack architecture (v0.6.4)¶
Internal layout after the SOLID refactor. Current release v0.6.4.
Package boundaries¶
| Package | Role | Extension points |
|---|---|---|
@lxpack/validators |
course.yaml schema (Zod), validateCourse, validateCourseWithInterchange, validateXapiTracking, assessment parsing, enumerateActivities |
lessonValidators registry, Zod superRefine on variables |
@lxpack/api |
Programmatic validateCourse / buildCourse for toolchains (LessonKit, CI) |
Typed options, injected assessments, interchange merge |
@lxpack/tracking-schema |
Shared track event types for runtime and adapters | Event type enums |
@lxpack/xapi |
xAPI statement types, verb builders, launch params, LRS transport, Tin Can XML | StatementQueue, onStatement hook |
@lxpack/cmi5 |
cmi5.xml + block definitions from manifest activities | generateCmi5Xml |
@lxpack/runtime |
Browser runtime, LMS bridges, analytics reporters, progress codec, quiz UI | LmsBridge, AnalyticsReporter, AssessmentHost, lessonRenderers |
@lxpack/scorm |
ZIP/dir export, SCORM/xAPI/cmi5 manifests, HTML shells | assemblePackage + PackageSink |
@lxpack/cli |
lxpack commands |
getZipPackager / getDirPackager registry |
@lxpack/components |
Built-in widgets and browser bundle | component registry |
Runtime (@lxpack/runtime)¶
LxpackRuntime— facade wiring config,ProgressState,CompletionEvaluator, oneLmsBridge, and oneAnalyticsReporter.analytics/—NoopReporter(SCORM/standalone default),XapiReporter(xAPI/cmi5/preview withactivityIri),createAnalyticsReporterfactory.lms/— SCORM 1.2/2004 adapters;xapi/cmi5useLocalBridgefor progress only (statements go to analytics).progress/—ProgressCodec, size policy, suspend data limits.client/lessons/spa.ts— iframe SPA lessons; parent exposeswindow.lxpackBridge.v1for completion and tracking.- Subpaths:
./client(bundle),./scorm12,./scorm2004for LMS adapters.
Validators (@lxpack/validators)¶
xapi-validate.ts—validateXapiTracking,getCourseActivityIrifor xAPI/cmi5 builds.activities.ts—enumerateActivities(canonical activity list for Node tooling).lessonkit-interchange.ts— Zod schema v1,interchangeToManifest,parseLessonkitInterchangematerialize-lessonkit.ts—materializeLessonkitProject(staging course tree from interchange + SPA dirs)interchange.ts—loadLessonKitInterchange,mergeInterchangeIntoManifest,validateCourseWithInterchange(including interchange-only projects)
SCORM / export (@lxpack/scorm)¶
assemblePackage— dispatchesscorm2004,xapi/cmi5(Tin Can or cmi5.xml), or single-indexscorm12/standalone.page-template.ts— shared learner HTML shell withmode, optionalactivityIri.
CLI (@lxpack/cli)¶
packagers/— all five export targets registered for zip and dir output.- Preview embeds
activityIriandxapi.previewsettings when present in config/manifest.
Adding features¶
- New lesson type — extend Zod
lessonSchema, validators, client lesson registry. - Flow rules — optional
fromonflowRuleSchema;resolveFlowGoto(manifest, ctx, currentActivityId)in runtime. - New export target — extend
ExportTarget,assemblePackage, CLI packagers. - New analytics backend — implement
AnalyticsReporter, register inanalytics/factory.ts. - New LMS — implement
LmsBridge, register inlms/factory.ts.
See also REFACTORING.md for invariants and CI commands.