@lssm/module.learning-journey 0.0.0-canary-20251217054315 → 0.0.0-canary-20251217060433

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.
@@ -0,0 +1,20 @@
1
+ import { LEARNING_JOURNEY_OWNERS } from "./contracts/shared.js";
2
+ import { AchievementModel, CardModel, CompleteLessonInput, CourseModel, DeckModel, EnrollInCourseInput, EnrollmentModel, GetDueCardsInput, GetDueCardsOutput, GetLearnerDashboardInput, LearnerDashboardModel, LearnerModel, ProgressModel, SubmitCardReviewInput, SuccessOutput } from "./contracts/models.js";
3
+ import { CompleteLessonContract, EnrollInCourseContract, GetDueCardsContract, GetLearnerDashboardContract, SubmitCardReviewContract } from "./contracts/operations.js";
4
+ import { GetOnboardingProgressContract, ListOnboardingTracksContract, OnboardingProgressModel, OnboardingStepModel, OnboardingStepProgressModel, OnboardingTrackModel, RecordOnboardingEventContract } from "./contracts/onboarding.js";
5
+ import "./contracts/index.js";
6
+ import { CardRating, DEFAULT_SRS_CONFIG, ReviewResult, SRSConfig, SRSEngine, SRSState, srsEngine } from "./engines/srs.js";
7
+ import { DEFAULT_XP_CONFIG, XPActivityType, XPBreakdown, XPCalculationInput, XPConfig, XPEngine, XPResult, xpEngine } from "./engines/xp.js";
8
+ import { DEFAULT_STREAK_CONFIG, StreakConfig, StreakEngine, StreakState, StreakUpdateResult, streakEngine } from "./engines/streak.js";
9
+ import { LearnerProfileEntity, LearningGapEntity, LearningPathEntity, LearningStyleEnum, RecommendationEntity, RecommendationTypeEnum, SkillMapEntity, aiEntities, aiEnums } from "./entities/ai.js";
10
+ import { ContentTypeEnum, CourseDifficultyEnum, CourseEntity, CourseModuleEntity, CourseStatusEnum, LessonContentEntity, LessonEntity, LessonTypeEnum, courseEntities, courseEnums } from "./entities/course.js";
11
+ import { CardEntity, CardRatingEnum, CardReviewEntity, CardScheduleEntity, DeckEntity, flashcardEntities, flashcardEnums } from "./entities/flashcard.js";
12
+ import { AchievementEntity, AchievementTypeEnum, DailyGoalEntity, HeartEntity, LeaderboardEntryEntity, LeaderboardPeriodEnum, LearnerAchievementEntity, StreakEntity, XPTransactionEntity, gamificationEntities, gamificationEnums } from "./entities/gamification.js";
13
+ import { CertificateEntity, EnrollmentEntity, EnrollmentStatusEnum, LearnerEntity, LessonProgressEntity, ModuleCompletionEntity, ProgressStatusEnum, learnerEntities, learnerEnums } from "./entities/learner.js";
14
+ import { OnboardingProgressEntity, OnboardingStepCompletionEntity, OnboardingStepEntity, OnboardingStepStatusEnum, OnboardingTrackEntity, onboardingEntities, onboardingEnums } from "./entities/onboarding.js";
15
+ import { AttemptStatusEnum, QuestionEntity, QuestionOptionEntity, QuestionTypeEnum, QuizAttemptEntity, QuizEntity, QuizStatusEnum, SkillAssessmentEntity, quizEntities, quizEnums } from "./entities/quiz.js";
16
+ import { learningJourneyEntities, learningJourneyEnums, learningJourneySchemaContribution } from "./entities/index.js";
17
+ import { AchievementUnlockedEvent, CardReviewedEvent, CertificateIssuedEvent, CourseCompletedEvent, CoursePublishedEvent, DailyGoalCompletedEvent, EnrollmentCreatedEvent, LearningJourneyEvents, LessonCompletedEvent, LevelUpEvent, OnboardingCompletedEvent, OnboardingStartedEvent, OnboardingStepCompletedEvent, QuizCompletedEvent, QuizStartedEvent, StreakUpdatedEvent, XpEarnedEvent } from "./events.js";
18
+ import { BaseEventConditionSpec, CompletionRewardsSpec, CountCompletionConditionSpec, EventCompletionConditionSpec, LearningJourneyStepSpec, LearningJourneyTrackSpec, SrsMasteryCompletionConditionSpec, StepAvailabilitySpec, StepCompletionConditionSpec, StreakRuleSpec, TimeWindowCompletionConditionSpec } from "./track-spec.js";
19
+ import { LearningJourneyFeature } from "./learning-journey.feature.js";
20
+ export { AchievementEntity, AchievementModel, AchievementTypeEnum, AchievementUnlockedEvent, AttemptStatusEnum, BaseEventConditionSpec, CardEntity, CardModel, CardRating, CardRatingEnum, CardReviewEntity, CardReviewedEvent, CardScheduleEntity, CertificateEntity, CertificateIssuedEvent, CompleteLessonContract, CompleteLessonInput, CompletionRewardsSpec, ContentTypeEnum, CountCompletionConditionSpec, CourseCompletedEvent, CourseDifficultyEnum, CourseEntity, CourseModel, CourseModuleEntity, CoursePublishedEvent, CourseStatusEnum, DEFAULT_SRS_CONFIG, DEFAULT_STREAK_CONFIG, DEFAULT_XP_CONFIG, DailyGoalCompletedEvent, DailyGoalEntity, DeckEntity, DeckModel, EnrollInCourseContract, EnrollInCourseInput, EnrollmentCreatedEvent, EnrollmentEntity, EnrollmentModel, EnrollmentStatusEnum, EventCompletionConditionSpec, GetDueCardsContract, GetDueCardsInput, GetDueCardsOutput, GetLearnerDashboardContract, GetLearnerDashboardInput, GetOnboardingProgressContract, HeartEntity, LEARNING_JOURNEY_OWNERS, LeaderboardEntryEntity, LeaderboardPeriodEnum, LearnerAchievementEntity, LearnerDashboardModel, LearnerEntity, LearnerModel, LearnerProfileEntity, LearningGapEntity, LearningJourneyEvents, LearningJourneyFeature, LearningJourneyStepSpec, LearningJourneyTrackSpec, LearningPathEntity, LearningStyleEnum, LessonCompletedEvent, LessonContentEntity, LessonEntity, LessonProgressEntity, LessonTypeEnum, LevelUpEvent, ListOnboardingTracksContract, ModuleCompletionEntity, OnboardingCompletedEvent, OnboardingProgressEntity, OnboardingProgressModel, OnboardingStartedEvent, OnboardingStepCompletedEvent, OnboardingStepCompletionEntity, OnboardingStepEntity, OnboardingStepModel, OnboardingStepProgressModel, OnboardingStepStatusEnum, OnboardingTrackEntity, OnboardingTrackModel, ProgressModel, ProgressStatusEnum, QuestionEntity, QuestionOptionEntity, QuestionTypeEnum, QuizAttemptEntity, QuizCompletedEvent, QuizEntity, QuizStartedEvent, QuizStatusEnum, RecommendationEntity, RecommendationTypeEnum, RecordOnboardingEventContract, ReviewResult, SRSConfig, SRSEngine, SRSState, SkillAssessmentEntity, SkillMapEntity, SrsMasteryCompletionConditionSpec, StepAvailabilitySpec, StepCompletionConditionSpec, StreakConfig, StreakEngine, StreakEntity, StreakRuleSpec, StreakState, StreakUpdateResult, StreakUpdatedEvent, SubmitCardReviewContract, SubmitCardReviewInput, SuccessOutput, TimeWindowCompletionConditionSpec, XPActivityType, XPBreakdown, XPCalculationInput, XPConfig, XPEngine, XPResult, XPTransactionEntity, XpEarnedEvent, aiEntities, aiEnums, courseEntities, courseEnums, flashcardEntities, flashcardEnums, gamificationEntities, gamificationEnums, learnerEntities, learnerEnums, learningJourneyEntities, learningJourneyEnums, learningJourneySchemaContribution, onboardingEntities, onboardingEnums, quizEntities, quizEnums, srsEngine, streakEngine, xpEngine };
@@ -0,0 +1,11 @@
1
+ import { FeatureModuleSpec } from "@lssm/lib.contracts";
2
+
3
+ //#region src/learning-journey.feature.d.ts
4
+
5
+ /**
6
+ * Learning Journey feature module that bundles course enrollment,
7
+ * onboarding tracks, flashcard review, and gamification capabilities.
8
+ */
9
+ declare const LearningJourneyFeature: FeatureModuleSpec;
10
+ //#endregion
11
+ export { LearningJourneyFeature };
@@ -0,0 +1,128 @@
1
+ //#region src/track-spec.d.ts
2
+ interface BaseEventConditionSpec {
3
+ /**
4
+ * Required event name to satisfy the condition.
5
+ */
6
+ eventName: string;
7
+ /**
8
+ * Optional event version to match.
9
+ */
10
+ eventVersion?: number;
11
+ /**
12
+ * Optional source module to match (for disambiguation).
13
+ */
14
+ sourceModule?: string;
15
+ /**
16
+ * Optional payload filter (shallow equality on keys).
17
+ */
18
+ payloadFilter?: Record<string, unknown>;
19
+ }
20
+ interface EventCompletionConditionSpec extends BaseEventConditionSpec {
21
+ kind?: 'event';
22
+ }
23
+ interface CountCompletionConditionSpec extends BaseEventConditionSpec {
24
+ kind: 'count';
25
+ /**
26
+ * Minimum number of matching events required to complete the step.
27
+ */
28
+ atLeast: number;
29
+ /**
30
+ * Optional time window (hours) from track start for counting.
31
+ */
32
+ withinHours?: number;
33
+ }
34
+ interface TimeWindowCompletionConditionSpec extends BaseEventConditionSpec {
35
+ kind: 'time_window';
36
+ /**
37
+ * Must be completed within this window (hours) from track start.
38
+ */
39
+ withinHoursOfStart?: number;
40
+ /**
41
+ * Optional additional delay before the step becomes available (hours).
42
+ */
43
+ availableAfterHours?: number;
44
+ }
45
+ interface SrsMasteryCompletionConditionSpec {
46
+ kind: 'srs_mastery';
47
+ /**
48
+ * Event carrying mastery info (defaults to drill/flashcard mastery events).
49
+ */
50
+ eventName: string;
51
+ /**
52
+ * Payload key containing skill identifier; defaults to `skillId`.
53
+ */
54
+ skillIdField?: string;
55
+ /**
56
+ * Payload key containing mastery value; defaults to `mastery`.
57
+ */
58
+ masteryField?: string;
59
+ /**
60
+ * Minimum mastery value required (e.g., 0-1 or a numeric level).
61
+ */
62
+ minimumMastery: number;
63
+ /**
64
+ * Optional number of mastered cards required to complete step.
65
+ */
66
+ requiredCount?: number;
67
+ /**
68
+ * Optional payload filter.
69
+ */
70
+ payloadFilter?: Record<string, unknown>;
71
+ }
72
+ type StepCompletionConditionSpec = EventCompletionConditionSpec | CountCompletionConditionSpec | TimeWindowCompletionConditionSpec | SrsMasteryCompletionConditionSpec;
73
+ interface StepAvailabilitySpec {
74
+ /**
75
+ * Unlock step after a delay (hours) from track start.
76
+ */
77
+ unlockAfterHours?: number;
78
+ /**
79
+ * Unlock on a specific day from track start (day 1 = start day).
80
+ */
81
+ unlockOnDay?: number;
82
+ /**
83
+ * Optional due window (hours) from unlock; if exceeded, step is considered missed.
84
+ */
85
+ dueWithinHours?: number;
86
+ }
87
+ interface StreakRuleSpec {
88
+ hoursWindow?: number;
89
+ bonusXp?: number;
90
+ }
91
+ interface CompletionRewardsSpec {
92
+ xpBonus?: number;
93
+ badgeKey?: string;
94
+ }
95
+ interface LearningJourneyStepSpec {
96
+ id: string;
97
+ title: string;
98
+ description?: string;
99
+ instructions?: string;
100
+ helpUrl?: string;
101
+ order?: number;
102
+ completion: StepCompletionConditionSpec;
103
+ availability?: StepAvailabilitySpec;
104
+ xpReward?: number;
105
+ isRequired?: boolean;
106
+ canSkip?: boolean;
107
+ actionUrl?: string;
108
+ actionLabel?: string;
109
+ metadata?: Record<string, unknown>;
110
+ }
111
+ interface LearningJourneyTrackSpec {
112
+ id: string;
113
+ productId?: string;
114
+ name: string;
115
+ description?: string;
116
+ targetUserSegment?: string;
117
+ targetRole?: string;
118
+ totalXp?: number;
119
+ isActive?: boolean;
120
+ isRequired?: boolean;
121
+ canSkip?: boolean;
122
+ streakRule?: StreakRuleSpec;
123
+ completionRewards?: CompletionRewardsSpec;
124
+ steps: LearningJourneyStepSpec[];
125
+ metadata?: Record<string, unknown>;
126
+ }
127
+ //#endregion
128
+ export { BaseEventConditionSpec, CompletionRewardsSpec, CountCompletionConditionSpec, EventCompletionConditionSpec, LearningJourneyStepSpec, LearningJourneyTrackSpec, SrsMasteryCompletionConditionSpec, StepAvailabilitySpec, StepCompletionConditionSpec, StreakRuleSpec, TimeWindowCompletionConditionSpec };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lssm/module.learning-journey",
3
- "version": "0.0.0-canary-20251217054315",
3
+ "version": "0.0.0-canary-20251217060433",
4
4
  "description": "Comprehensive learning journey engine - onboarding, LMS, flashcards, gamification, and AI personalization",
5
5
  "main": "./dist/index.js",
6
6
  "types": "./dist/index.d.ts",
@@ -18,39 +18,39 @@
18
18
  "lint:check": "eslint src"
19
19
  },
20
20
  "dependencies": {
21
- "@lssm/lib.schema": "0.0.0-canary-20251217054315",
22
- "@lssm/lib.contracts": "0.0.0-canary-20251217054315",
21
+ "@lssm/lib.schema": "0.0.0-canary-20251217060433",
22
+ "@lssm/lib.contracts": "0.0.0-canary-20251217060433",
23
23
  "zod": "^4.1.13"
24
24
  },
25
25
  "devDependencies": {
26
- "@lssm/tool.typescript": "0.0.0-canary-20251217054315",
27
- "@lssm/tool.tsdown": "0.0.0-canary-20251217054315",
26
+ "@lssm/tool.typescript": "0.0.0-canary-20251217060433",
27
+ "@lssm/tool.tsdown": "0.0.0-canary-20251217060433",
28
28
  "typescript": "^5.9.3"
29
29
  },
30
30
  "exports": {
31
- ".": "./src/index.ts",
32
- "./contracts": "./src/contracts/index.ts",
33
- "./contracts/models": "./src/contracts/models.ts",
34
- "./contracts/onboarding": "./src/contracts/onboarding.ts",
35
- "./contracts/operations": "./src/contracts/operations.ts",
36
- "./contracts/shared": "./src/contracts/shared.ts",
37
- "./docs": "./src/docs/index.ts",
38
- "./docs/learning-journey.docblock": "./src/docs/learning-journey.docblock.ts",
39
- "./engines": "./src/engines/index.ts",
40
- "./engines/srs": "./src/engines/srs.ts",
41
- "./engines/streak": "./src/engines/streak.ts",
42
- "./engines/xp": "./src/engines/xp.ts",
43
- "./entities": "./src/entities/index.ts",
44
- "./entities/ai": "./src/entities/ai.ts",
45
- "./entities/course": "./src/entities/course.ts",
46
- "./entities/flashcard": "./src/entities/flashcard.ts",
47
- "./entities/gamification": "./src/entities/gamification.ts",
48
- "./entities/learner": "./src/entities/learner.ts",
49
- "./entities/onboarding": "./src/entities/onboarding.ts",
50
- "./entities/quiz": "./src/entities/quiz.ts",
51
- "./events": "./src/events.ts",
52
- "./learning-journey.feature": "./src/learning-journey.feature.ts",
53
- "./track-spec": "./src/track-spec.ts",
31
+ ".": "./dist/index.js",
32
+ "./contracts": "./dist/contracts/index.js",
33
+ "./contracts/models": "./dist/contracts/models.js",
34
+ "./contracts/onboarding": "./dist/contracts/onboarding.js",
35
+ "./contracts/operations": "./dist/contracts/operations.js",
36
+ "./contracts/shared": "./dist/contracts/shared.js",
37
+ "./docs": "./dist/docs/index.js",
38
+ "./docs/learning-journey.docblock": "./dist/docs/learning-journey.docblock.js",
39
+ "./engines": "./dist/engines/index.js",
40
+ "./engines/srs": "./dist/engines/srs.js",
41
+ "./engines/streak": "./dist/engines/streak.js",
42
+ "./engines/xp": "./dist/engines/xp.js",
43
+ "./entities": "./dist/entities/index.js",
44
+ "./entities/ai": "./dist/entities/ai.js",
45
+ "./entities/course": "./dist/entities/course.js",
46
+ "./entities/flashcard": "./dist/entities/flashcard.js",
47
+ "./entities/gamification": "./dist/entities/gamification.js",
48
+ "./entities/learner": "./dist/entities/learner.js",
49
+ "./entities/onboarding": "./dist/entities/onboarding.js",
50
+ "./entities/quiz": "./dist/entities/quiz.js",
51
+ "./events": "./dist/events.js",
52
+ "./learning-journey.feature": "./dist/learning-journey.feature.js",
53
+ "./track-spec": "./dist/track-spec.js",
54
54
  "./*": "./*"
55
55
  },
56
56
  "module": "./dist/index.js",