@lssm/module.learning-journey 0.0.0-canary-20251217083314 → 1.41.1

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.
Files changed (167) hide show
  1. package/dist/contracts/index.js +1 -6
  2. package/dist/contracts/models.js +1 -389
  3. package/dist/contracts/onboarding.js +1 -404
  4. package/dist/contracts/operations.js +1 -151
  5. package/dist/contracts/shared.js +1 -5
  6. package/dist/docs/index.js +1 -1
  7. package/dist/docs/learning-journey.docblock.js +5 -61
  8. package/dist/engines/index.js +1 -5
  9. package/dist/engines/srs.js +1 -219
  10. package/dist/engines/streak.js +1 -193
  11. package/dist/engines/xp.js +1 -212
  12. package/dist/entities/ai.js +1 -376
  13. package/dist/entities/course.js +1 -316
  14. package/dist/entities/flashcard.js +1 -249
  15. package/dist/entities/gamification.js +1 -392
  16. package/dist/entities/index.js +1 -44
  17. package/dist/entities/learner.js +1 -365
  18. package/dist/entities/onboarding.js +1 -307
  19. package/dist/entities/quiz.js +1 -370
  20. package/dist/events.js +1 -583
  21. package/dist/index.js +1 -22
  22. package/dist/learning-journey.feature.js +1 -148
  23. package/package.json +28 -28
  24. package/dist/contracts/index.d.ts +0 -5
  25. package/dist/contracts/models.d.ts +0 -450
  26. package/dist/contracts/onboarding.d.ts +0 -665
  27. package/dist/contracts/operations.d.ts +0 -279
  28. package/dist/contracts/shared.d.ts +0 -4
  29. package/dist/docs/index.d.ts +0 -1
  30. package/dist/docs/learning-journey.docblock.d.ts +0 -1
  31. package/dist/engines/index.d.ts +0 -4
  32. package/dist/engines/srs.d.ts +0 -110
  33. package/dist/engines/streak.d.ts +0 -99
  34. package/dist/engines/xp.d.ts +0 -96
  35. package/dist/entities/ai.d.ts +0 -231
  36. package/dist/entities/course.d.ts +0 -183
  37. package/dist/entities/flashcard.d.ts +0 -169
  38. package/dist/entities/gamification.d.ts +0 -237
  39. package/dist/entities/index.d.ts +0 -628
  40. package/dist/entities/learner.d.ts +0 -223
  41. package/dist/entities/onboarding.d.ts +0 -189
  42. package/dist/entities/quiz.d.ts +0 -219
  43. package/dist/events.d.ts +0 -795
  44. package/dist/index.d.ts +0 -19
  45. package/dist/learning-journey.feature.d.ts +0 -11
  46. package/dist/libs/contracts/dist/capabilities/openbanking.js +0 -88
  47. package/dist/libs/contracts/dist/client/index.js +0 -5
  48. package/dist/libs/contracts/dist/client/react/feature-render.js +0 -2
  49. package/dist/libs/contracts/dist/client/react/form-render.js +0 -4
  50. package/dist/libs/contracts/dist/client/react/index.js +0 -4
  51. package/dist/libs/contracts/dist/contract-registry/index.js +0 -1
  52. package/dist/libs/contracts/dist/contract-registry/schemas.js +0 -60
  53. package/dist/libs/contracts/dist/docs/PUBLISHING.docblock.js +0 -16
  54. package/dist/libs/contracts/dist/docs/accessibility_wcag_compliance_specs.docblock.js +0 -16
  55. package/dist/libs/contracts/dist/docs/index.js +0 -29
  56. package/dist/libs/contracts/dist/docs/presentations.js +0 -71
  57. package/dist/libs/contracts/dist/docs/registry.js +0 -44
  58. package/dist/libs/contracts/dist/docs/tech/PHASE_1_QUICKSTART.docblock.js +0 -16
  59. package/dist/libs/contracts/dist/docs/tech/PHASE_2_AI_NATIVE_OPERATIONS.docblock.js +0 -16
  60. package/dist/libs/contracts/dist/docs/tech/PHASE_3_AUTO_EVOLUTION.docblock.js +0 -16
  61. package/dist/libs/contracts/dist/docs/tech/PHASE_4_PERSONALIZATION_ENGINE.docblock.js +0 -16
  62. package/dist/libs/contracts/dist/docs/tech/PHASE_5_ZERO_TOUCH_OPERATIONS.docblock.js +0 -16
  63. package/dist/libs/contracts/dist/docs/tech/auth/better-auth-nextjs.docblock.js +0 -80
  64. package/dist/libs/contracts/dist/docs/tech/contracts/openapi-export.docblock.js +0 -57
  65. package/dist/libs/contracts/dist/docs/tech/lifecycle-stage-system.docblock.js +0 -16
  66. package/dist/libs/contracts/dist/docs/tech/llm/llm-integration.docblock.js +0 -357
  67. package/dist/libs/contracts/dist/docs/tech/mcp-endpoints.docblock.js +0 -37
  68. package/dist/libs/contracts/dist/docs/tech/presentation-runtime.docblock.js +0 -16
  69. package/dist/libs/contracts/dist/docs/tech/schema/README.docblock.js +0 -20
  70. package/dist/libs/contracts/dist/docs/tech/studio/learning-events.docblock.js +0 -48
  71. package/dist/libs/contracts/dist/docs/tech/studio/learning-journeys.docblock.js +0 -79
  72. package/dist/libs/contracts/dist/docs/tech/studio/platform-admin-panel.docblock.js +0 -84
  73. package/dist/libs/contracts/dist/docs/tech/studio/project-access-teams.docblock.js +0 -45
  74. package/dist/libs/contracts/dist/docs/tech/studio/project-routing.docblock.js +0 -67
  75. package/dist/libs/contracts/dist/docs/tech/studio/sandbox-unlogged.docblock.js +0 -40
  76. package/dist/libs/contracts/dist/docs/tech/studio/team-invitations.docblock.js +0 -69
  77. package/dist/libs/contracts/dist/docs/tech/studio/workspace-ops.docblock.js +0 -47
  78. package/dist/libs/contracts/dist/docs/tech/studio/workspaces.docblock.js +0 -62
  79. package/dist/libs/contracts/dist/docs/tech/telemetry-ingest.docblock.js +0 -155
  80. package/dist/libs/contracts/dist/docs/tech/templates/runtime.docblock.js +0 -20
  81. package/dist/libs/contracts/dist/docs/tech/vscode-extension.docblock.js +0 -101
  82. package/dist/libs/contracts/dist/docs/tech/workflows/overview.docblock.js +0 -20
  83. package/dist/libs/contracts/dist/events.js +0 -10
  84. package/dist/libs/contracts/dist/experiments/evaluator.js +0 -1
  85. package/dist/libs/contracts/dist/index.js +0 -71
  86. package/dist/libs/contracts/dist/install.js +0 -2
  87. package/dist/libs/contracts/dist/integrations/contracts.js +0 -377
  88. package/dist/libs/contracts/dist/integrations/index.js +0 -18
  89. package/dist/libs/contracts/dist/integrations/openbanking/contracts/accounts.js +0 -228
  90. package/dist/libs/contracts/dist/integrations/openbanking/contracts/balances.js +0 -159
  91. package/dist/libs/contracts/dist/integrations/openbanking/contracts/index.js +0 -3
  92. package/dist/libs/contracts/dist/integrations/openbanking/contracts/transactions.js +0 -210
  93. package/dist/libs/contracts/dist/integrations/openbanking/models.js +0 -242
  94. package/dist/libs/contracts/dist/integrations/openbanking/telemetry.js +0 -13
  95. package/dist/libs/contracts/dist/integrations/providers/elevenlabs.js +0 -52
  96. package/dist/libs/contracts/dist/integrations/providers/gcs-storage.js +0 -75
  97. package/dist/libs/contracts/dist/integrations/providers/gmail.js +0 -87
  98. package/dist/libs/contracts/dist/integrations/providers/google-calendar.js +0 -66
  99. package/dist/libs/contracts/dist/integrations/providers/index.js +0 -11
  100. package/dist/libs/contracts/dist/integrations/providers/mistral.js +0 -68
  101. package/dist/libs/contracts/dist/integrations/providers/postmark.js +0 -68
  102. package/dist/libs/contracts/dist/integrations/providers/powens.js +0 -116
  103. package/dist/libs/contracts/dist/integrations/providers/qdrant.js +0 -73
  104. package/dist/libs/contracts/dist/integrations/providers/registry.js +0 -10
  105. package/dist/libs/contracts/dist/integrations/providers/stripe.js +0 -83
  106. package/dist/libs/contracts/dist/integrations/providers/twilio-sms.js +0 -61
  107. package/dist/libs/contracts/dist/jsonschema.js +0 -1
  108. package/dist/libs/contracts/dist/knowledge/contracts.js +0 -306
  109. package/dist/libs/contracts/dist/knowledge/index.js +0 -7
  110. package/dist/libs/contracts/dist/knowledge/spaces/email-threads.js +0 -34
  111. package/dist/libs/contracts/dist/knowledge/spaces/financial-docs.js +0 -34
  112. package/dist/libs/contracts/dist/knowledge/spaces/financial-overview.js +0 -38
  113. package/dist/libs/contracts/dist/knowledge/spaces/index.js +0 -6
  114. package/dist/libs/contracts/dist/knowledge/spaces/product-canon.js +0 -34
  115. package/dist/libs/contracts/dist/knowledge/spaces/support-faq.js +0 -37
  116. package/dist/libs/contracts/dist/knowledge/spaces/uploaded-docs.js +0 -34
  117. package/dist/libs/contracts/dist/llm/exporters.js +0 -19
  118. package/dist/libs/contracts/dist/llm/index.js +0 -2
  119. package/dist/libs/contracts/dist/llm/prompts.js +0 -1
  120. package/dist/libs/contracts/dist/onboarding-base.js +0 -196
  121. package/dist/libs/contracts/dist/openapi.js +0 -1
  122. package/dist/libs/contracts/dist/ownership.js +0 -21
  123. package/dist/libs/contracts/dist/presentations.js +0 -1
  124. package/dist/libs/contracts/dist/presentations.v2.js +0 -11
  125. package/dist/libs/contracts/dist/prompt.js +0 -1
  126. package/dist/libs/contracts/dist/promptRegistry.js +0 -1
  127. package/dist/libs/contracts/dist/regenerator/index.js +0 -1
  128. package/dist/libs/contracts/dist/regenerator/service.js +0 -6
  129. package/dist/libs/contracts/dist/registry.js +0 -2
  130. package/dist/libs/contracts/dist/resources.js +0 -1
  131. package/dist/libs/contracts/dist/schema/dist/EnumType.js +0 -2
  132. package/dist/libs/contracts/dist/schema/dist/FieldType.js +0 -49
  133. package/dist/libs/contracts/dist/schema/dist/ScalarTypeEnum.js +0 -236
  134. package/dist/libs/contracts/dist/schema/dist/SchemaModel.js +0 -34
  135. package/dist/libs/contracts/dist/schema/dist/entity/defineEntity.js +0 -1
  136. package/dist/libs/contracts/dist/schema/dist/entity/index.js +0 -2
  137. package/dist/libs/contracts/dist/schema/dist/entity/types.js +0 -1
  138. package/dist/libs/contracts/dist/schema/dist/index.js +0 -6
  139. package/dist/libs/contracts/dist/server/graphql-pothos.js +0 -6
  140. package/dist/libs/contracts/dist/server/index.js +0 -8
  141. package/dist/libs/contracts/dist/server/mcp/createMcpServer.js +0 -4
  142. package/dist/libs/contracts/dist/server/mcp/registerPresentations.js +0 -2
  143. package/dist/libs/contracts/dist/server/mcp/registerPrompts.js +0 -1
  144. package/dist/libs/contracts/dist/server/mcp/registerResources.js +0 -2
  145. package/dist/libs/contracts/dist/server/mcp/registerTools.js +0 -1
  146. package/dist/libs/contracts/dist/server/provider-mcp.js +0 -1
  147. package/dist/libs/contracts/dist/server/rest-elysia.js +0 -1
  148. package/dist/libs/contracts/dist/server/rest-express.js +0 -1
  149. package/dist/libs/contracts/dist/server/rest-generic.js +0 -1
  150. package/dist/libs/contracts/dist/server/rest-next-app.js +0 -1
  151. package/dist/libs/contracts/dist/server/rest-next-pages.js +0 -1
  152. package/dist/libs/contracts/dist/spec.js +0 -34
  153. package/dist/libs/contracts/dist/telemetry/index.js +0 -1
  154. package/dist/libs/contracts/dist/telemetry/tracker.js +0 -1
  155. package/dist/libs/contracts/dist/tests/index.js +0 -1
  156. package/dist/libs/contracts/dist/tests/runner.js +0 -2
  157. package/dist/libs/contracts/dist/workflow/index.js +0 -1
  158. package/dist/libs/contracts/dist/workflow/runner.js +0 -1
  159. package/dist/libs/schema/dist/EnumType.js +0 -2
  160. package/dist/libs/schema/dist/FieldType.js +0 -49
  161. package/dist/libs/schema/dist/ScalarTypeEnum.js +0 -236
  162. package/dist/libs/schema/dist/SchemaModel.js +0 -39
  163. package/dist/libs/schema/dist/entity/defineEntity.js +0 -236
  164. package/dist/libs/schema/dist/entity/index.js +0 -2
  165. package/dist/libs/schema/dist/entity/types.js +0 -1
  166. package/dist/libs/schema/dist/index.js +0 -6
  167. package/dist/track-spec.d.ts +0 -128
@@ -1,376 +1 @@
1
- import { defineEntity, defineEntityEnum, field, index } from "../libs/schema/dist/entity/defineEntity.js";
2
- import "../libs/schema/dist/index.js";
3
-
4
- //#region src/entities/ai.ts
5
- /**
6
- * Learning style enum.
7
- */
8
- const LearningStyleEnum = defineEntityEnum({
9
- name: "LearningStyle",
10
- values: [
11
- "VISUAL",
12
- "AUDITORY",
13
- "READING",
14
- "KINESTHETIC",
15
- "MIXED"
16
- ],
17
- schema: "lssm_learning",
18
- description: "Preferred learning style."
19
- });
20
- /**
21
- * Recommendation type enum.
22
- */
23
- const RecommendationTypeEnum = defineEntityEnum({
24
- name: "RecommendationType",
25
- values: [
26
- "COURSE",
27
- "LESSON",
28
- "REVIEW",
29
- "PRACTICE",
30
- "ASSESSMENT",
31
- "DECK"
32
- ],
33
- schema: "lssm_learning",
34
- description: "Type of learning recommendation."
35
- });
36
- /**
37
- * LearnerProfile entity - AI personalization profile.
38
- */
39
- const LearnerProfileEntity = defineEntity({
40
- name: "LearnerProfile",
41
- description: "AI personalization profile for a learner.",
42
- schema: "lssm_learning",
43
- map: "learner_profile",
44
- fields: {
45
- id: field.id({ description: "Unique profile identifier" }),
46
- learnerId: field.foreignKey({ description: "Learner" }),
47
- learningStyle: field.enum("LearningStyle", {
48
- default: "MIXED",
49
- description: "Preferred learning style"
50
- }),
51
- preferredDifficulty: field.string({
52
- default: "\"adaptive\"",
53
- description: "Difficulty preference"
54
- }),
55
- preferredSessionLength: field.int({
56
- default: 30,
57
- description: "Preferred session length in minutes"
58
- }),
59
- interests: field.json({
60
- isOptional: true,
61
- description: "Topic interests"
62
- }),
63
- goals: field.json({
64
- isOptional: true,
65
- description: "Learning goals"
66
- }),
67
- pacePreference: field.string({
68
- default: "\"normal\"",
69
- description: "Learning pace: slow, normal, fast"
70
- }),
71
- bestTimeOfDay: field.string({
72
- isOptional: true,
73
- description: "Best time for learning"
74
- }),
75
- averageSessionLength: field.int({
76
- isOptional: true,
77
- description: "Average session length"
78
- }),
79
- daysActivePerWeek: field.int({
80
- isOptional: true,
81
- description: "Days active per week"
82
- }),
83
- avgQuizScore: field.int({
84
- isOptional: true,
85
- description: "Average quiz score"
86
- }),
87
- avgLessonCompletionTime: field.int({
88
- isOptional: true,
89
- description: "Avg lesson completion time"
90
- }),
91
- strengths: field.json({
92
- isOptional: true,
93
- description: "Identified strengths"
94
- }),
95
- weaknesses: field.json({
96
- isOptional: true,
97
- description: "Areas for improvement"
98
- }),
99
- lastAnalyzedAt: field.dateTime({
100
- isOptional: true,
101
- description: "Last AI analysis"
102
- }),
103
- metadata: field.json({
104
- isOptional: true,
105
- description: "Additional metadata"
106
- }),
107
- createdAt: field.createdAt(),
108
- updatedAt: field.updatedAt(),
109
- learner: field.belongsTo("Learner", ["learnerId"], ["id"], { onDelete: "Cascade" })
110
- },
111
- indexes: [index.unique(["learnerId"], { name: "learner_profile_unique" }), index.on(["learningStyle"])],
112
- enums: [LearningStyleEnum]
113
- });
114
- /**
115
- * SkillMap entity - tracks skill proficiency.
116
- */
117
- const SkillMapEntity = defineEntity({
118
- name: "SkillMap",
119
- description: "Maps learner proficiency across skills.",
120
- schema: "lssm_learning",
121
- map: "skill_map",
122
- fields: {
123
- id: field.id({ description: "Unique skill map identifier" }),
124
- learnerId: field.foreignKey({ description: "Learner" }),
125
- skillId: field.string({ description: "Skill identifier" }),
126
- skillName: field.string({ description: "Skill name" }),
127
- skillCategory: field.string({
128
- isOptional: true,
129
- description: "Skill category"
130
- }),
131
- level: field.int({
132
- default: 0,
133
- description: "Proficiency level (0-100)"
134
- }),
135
- confidence: field.decimal({
136
- default: .5,
137
- description: "Confidence in assessment"
138
- }),
139
- lessonsCompleted: field.int({
140
- default: 0,
141
- description: "Related lessons completed"
142
- }),
143
- quizzesCompleted: field.int({
144
- default: 0,
145
- description: "Related quizzes completed"
146
- }),
147
- practiceTime: field.int({
148
- default: 0,
149
- description: "Practice time in minutes"
150
- }),
151
- lastPracticedAt: field.dateTime({
152
- isOptional: true,
153
- description: "Last practice time"
154
- }),
155
- learningVelocity: field.decimal({
156
- isOptional: true,
157
- description: "Learning speed for this skill"
158
- }),
159
- predictedTimeToMastery: field.int({
160
- isOptional: true,
161
- description: "Predicted time to mastery (minutes)"
162
- }),
163
- createdAt: field.createdAt(),
164
- updatedAt: field.updatedAt(),
165
- learner: field.belongsTo("Learner", ["learnerId"], ["id"], { onDelete: "Cascade" })
166
- },
167
- indexes: [
168
- index.unique(["learnerId", "skillId"], { name: "skill_map_unique" }),
169
- index.on(["skillId", "level"]),
170
- index.on(["learnerId", "level"])
171
- ]
172
- });
173
- /**
174
- * LearningPath entity - AI-generated learning paths.
175
- */
176
- const LearningPathEntity = defineEntity({
177
- name: "LearningPath",
178
- description: "AI-generated personalized learning path.",
179
- schema: "lssm_learning",
180
- map: "learning_path",
181
- fields: {
182
- id: field.id({ description: "Unique path identifier" }),
183
- learnerId: field.foreignKey({ description: "Learner" }),
184
- name: field.string({ description: "Path name" }),
185
- description: field.string({
186
- isOptional: true,
187
- description: "Path description"
188
- }),
189
- goal: field.string({
190
- isOptional: true,
191
- description: "Path goal"
192
- }),
193
- steps: field.json({ description: "Ordered list of learning steps" }),
194
- currentStepIndex: field.int({
195
- default: 0,
196
- description: "Current step index"
197
- }),
198
- progress: field.int({
199
- default: 0,
200
- description: "Completion percentage"
201
- }),
202
- completedSteps: field.int({
203
- default: 0,
204
- description: "Steps completed"
205
- }),
206
- totalSteps: field.int({
207
- default: 0,
208
- description: "Total steps"
209
- }),
210
- generatedAt: field.dateTime({ description: "When path was generated" }),
211
- adaptedFrom: field.string({
212
- isOptional: true,
213
- description: "Original path ID if adapted"
214
- }),
215
- generationParams: field.json({
216
- isOptional: true,
217
- description: "AI generation parameters"
218
- }),
219
- adaptationHistory: field.json({
220
- isOptional: true,
221
- description: "Path adaptation history"
222
- }),
223
- isActive: field.boolean({
224
- default: true,
225
- description: "Whether path is active"
226
- }),
227
- isCompleted: field.boolean({
228
- default: false,
229
- description: "Whether path is completed"
230
- }),
231
- startedAt: field.dateTime({
232
- isOptional: true,
233
- description: "When started"
234
- }),
235
- completedAt: field.dateTime({
236
- isOptional: true,
237
- description: "When completed"
238
- }),
239
- estimatedCompletionDate: field.dateTime({
240
- isOptional: true,
241
- description: "Estimated completion"
242
- }),
243
- createdAt: field.createdAt(),
244
- updatedAt: field.updatedAt(),
245
- learner: field.belongsTo("Learner", ["learnerId"], ["id"], { onDelete: "Cascade" })
246
- },
247
- indexes: [index.on(["learnerId", "isActive"]), index.on(["generatedAt"])]
248
- });
249
- /**
250
- * Recommendation entity - AI-powered learning recommendations.
251
- */
252
- const RecommendationEntity = defineEntity({
253
- name: "Recommendation",
254
- description: "AI-powered learning recommendation.",
255
- schema: "lssm_learning",
256
- map: "recommendation",
257
- fields: {
258
- id: field.id({ description: "Unique recommendation identifier" }),
259
- learnerId: field.foreignKey({ description: "Learner" }),
260
- type: field.enum("RecommendationType", { description: "Recommendation type" }),
261
- itemId: field.string({ description: "Recommended item ID" }),
262
- itemType: field.string({ description: "Item type (course, lesson, deck, etc.)" }),
263
- score: field.decimal({ description: "Recommendation score (0-1)" }),
264
- confidence: field.decimal({ description: "Confidence in recommendation" }),
265
- reason: field.string({ description: "Human-readable reason" }),
266
- factors: field.json({
267
- isOptional: true,
268
- description: "Factors that contributed to recommendation"
269
- }),
270
- status: field.string({
271
- default: "\"pending\"",
272
- description: "Status: pending, viewed, accepted, dismissed"
273
- }),
274
- viewedAt: field.dateTime({
275
- isOptional: true,
276
- description: "When viewed"
277
- }),
278
- acceptedAt: field.dateTime({
279
- isOptional: true,
280
- description: "When accepted"
281
- }),
282
- dismissedAt: field.dateTime({
283
- isOptional: true,
284
- description: "When dismissed"
285
- }),
286
- feedback: field.string({
287
- isOptional: true,
288
- description: "User feedback"
289
- }),
290
- feedbackRating: field.int({
291
- isOptional: true,
292
- description: "Feedback rating (1-5)"
293
- }),
294
- expiresAt: field.dateTime({
295
- isOptional: true,
296
- description: "When recommendation expires"
297
- }),
298
- createdAt: field.createdAt(),
299
- updatedAt: field.updatedAt(),
300
- learner: field.belongsTo("Learner", ["learnerId"], ["id"], { onDelete: "Cascade" })
301
- },
302
- indexes: [
303
- index.on([
304
- "learnerId",
305
- "status",
306
- "score"
307
- ]),
308
- index.on(["type", "status"]),
309
- index.on(["expiresAt"])
310
- ],
311
- enums: [RecommendationTypeEnum]
312
- });
313
- /**
314
- * LearningGap entity - identified knowledge gaps.
315
- */
316
- const LearningGapEntity = defineEntity({
317
- name: "LearningGap",
318
- description: "Identified learning gap.",
319
- schema: "lssm_learning",
320
- map: "learning_gap",
321
- fields: {
322
- id: field.id({ description: "Unique gap identifier" }),
323
- learnerId: field.foreignKey({ description: "Learner" }),
324
- skillId: field.string({ description: "Skill with gap" }),
325
- skillName: field.string({ description: "Skill name" }),
326
- severity: field.string({
327
- default: "\"moderate\"",
328
- description: "Gap severity: minor, moderate, major"
329
- }),
330
- confidence: field.decimal({ description: "Confidence in gap detection" }),
331
- evidence: field.json({
332
- isOptional: true,
333
- description: "Evidence for gap"
334
- }),
335
- relatedQuestions: field.json({
336
- isOptional: true,
337
- description: "Questions that revealed gap"
338
- }),
339
- suggestedRemediation: field.json({
340
- isOptional: true,
341
- description: "Suggested remediation"
342
- }),
343
- remediationProgress: field.int({
344
- default: 0,
345
- description: "Remediation progress"
346
- }),
347
- status: field.string({
348
- default: "\"open\"",
349
- description: "Status: open, in_progress, resolved"
350
- }),
351
- resolvedAt: field.dateTime({
352
- isOptional: true,
353
- description: "When resolved"
354
- }),
355
- detectedAt: field.dateTime({ description: "When gap was detected" }),
356
- createdAt: field.createdAt(),
357
- updatedAt: field.updatedAt(),
358
- learner: field.belongsTo("Learner", ["learnerId"], ["id"], { onDelete: "Cascade" })
359
- },
360
- indexes: [
361
- index.on(["learnerId", "status"]),
362
- index.on(["skillId", "status"]),
363
- index.on(["severity", "status"])
364
- ]
365
- });
366
- const aiEntities = [
367
- LearnerProfileEntity,
368
- SkillMapEntity,
369
- LearningPathEntity,
370
- RecommendationEntity,
371
- LearningGapEntity
372
- ];
373
- const aiEnums = [LearningStyleEnum, RecommendationTypeEnum];
374
-
375
- //#endregion
376
- export { LearnerProfileEntity, LearningGapEntity, LearningPathEntity, LearningStyleEnum, RecommendationEntity, RecommendationTypeEnum, SkillMapEntity, aiEntities, aiEnums };
1
+ import{defineEntity as e,defineEntityEnum as t,field as n,index as r}from"@lssm/lib.schema";const i=t({name:`LearningStyle`,values:[`VISUAL`,`AUDITORY`,`READING`,`KINESTHETIC`,`MIXED`],schema:`lssm_learning`,description:`Preferred learning style.`}),a=t({name:`RecommendationType`,values:[`COURSE`,`LESSON`,`REVIEW`,`PRACTICE`,`ASSESSMENT`,`DECK`],schema:`lssm_learning`,description:`Type of learning recommendation.`}),o=e({name:`LearnerProfile`,description:`AI personalization profile for a learner.`,schema:`lssm_learning`,map:`learner_profile`,fields:{id:n.id({description:`Unique profile identifier`}),learnerId:n.foreignKey({description:`Learner`}),learningStyle:n.enum(`LearningStyle`,{default:`MIXED`,description:`Preferred learning style`}),preferredDifficulty:n.string({default:`"adaptive"`,description:`Difficulty preference`}),preferredSessionLength:n.int({default:30,description:`Preferred session length in minutes`}),interests:n.json({isOptional:!0,description:`Topic interests`}),goals:n.json({isOptional:!0,description:`Learning goals`}),pacePreference:n.string({default:`"normal"`,description:`Learning pace: slow, normal, fast`}),bestTimeOfDay:n.string({isOptional:!0,description:`Best time for learning`}),averageSessionLength:n.int({isOptional:!0,description:`Average session length`}),daysActivePerWeek:n.int({isOptional:!0,description:`Days active per week`}),avgQuizScore:n.int({isOptional:!0,description:`Average quiz score`}),avgLessonCompletionTime:n.int({isOptional:!0,description:`Avg lesson completion time`}),strengths:n.json({isOptional:!0,description:`Identified strengths`}),weaknesses:n.json({isOptional:!0,description:`Areas for improvement`}),lastAnalyzedAt:n.dateTime({isOptional:!0,description:`Last AI analysis`}),metadata:n.json({isOptional:!0,description:`Additional metadata`}),createdAt:n.createdAt(),updatedAt:n.updatedAt(),learner:n.belongsTo(`Learner`,[`learnerId`],[`id`],{onDelete:`Cascade`})},indexes:[r.unique([`learnerId`],{name:`learner_profile_unique`}),r.on([`learningStyle`])],enums:[i]}),s=e({name:`SkillMap`,description:`Maps learner proficiency across skills.`,schema:`lssm_learning`,map:`skill_map`,fields:{id:n.id({description:`Unique skill map identifier`}),learnerId:n.foreignKey({description:`Learner`}),skillId:n.string({description:`Skill identifier`}),skillName:n.string({description:`Skill name`}),skillCategory:n.string({isOptional:!0,description:`Skill category`}),level:n.int({default:0,description:`Proficiency level (0-100)`}),confidence:n.decimal({default:.5,description:`Confidence in assessment`}),lessonsCompleted:n.int({default:0,description:`Related lessons completed`}),quizzesCompleted:n.int({default:0,description:`Related quizzes completed`}),practiceTime:n.int({default:0,description:`Practice time in minutes`}),lastPracticedAt:n.dateTime({isOptional:!0,description:`Last practice time`}),learningVelocity:n.decimal({isOptional:!0,description:`Learning speed for this skill`}),predictedTimeToMastery:n.int({isOptional:!0,description:`Predicted time to mastery (minutes)`}),createdAt:n.createdAt(),updatedAt:n.updatedAt(),learner:n.belongsTo(`Learner`,[`learnerId`],[`id`],{onDelete:`Cascade`})},indexes:[r.unique([`learnerId`,`skillId`],{name:`skill_map_unique`}),r.on([`skillId`,`level`]),r.on([`learnerId`,`level`])]}),c=e({name:`LearningPath`,description:`AI-generated personalized learning path.`,schema:`lssm_learning`,map:`learning_path`,fields:{id:n.id({description:`Unique path identifier`}),learnerId:n.foreignKey({description:`Learner`}),name:n.string({description:`Path name`}),description:n.string({isOptional:!0,description:`Path description`}),goal:n.string({isOptional:!0,description:`Path goal`}),steps:n.json({description:`Ordered list of learning steps`}),currentStepIndex:n.int({default:0,description:`Current step index`}),progress:n.int({default:0,description:`Completion percentage`}),completedSteps:n.int({default:0,description:`Steps completed`}),totalSteps:n.int({default:0,description:`Total steps`}),generatedAt:n.dateTime({description:`When path was generated`}),adaptedFrom:n.string({isOptional:!0,description:`Original path ID if adapted`}),generationParams:n.json({isOptional:!0,description:`AI generation parameters`}),adaptationHistory:n.json({isOptional:!0,description:`Path adaptation history`}),isActive:n.boolean({default:!0,description:`Whether path is active`}),isCompleted:n.boolean({default:!1,description:`Whether path is completed`}),startedAt:n.dateTime({isOptional:!0,description:`When started`}),completedAt:n.dateTime({isOptional:!0,description:`When completed`}),estimatedCompletionDate:n.dateTime({isOptional:!0,description:`Estimated completion`}),createdAt:n.createdAt(),updatedAt:n.updatedAt(),learner:n.belongsTo(`Learner`,[`learnerId`],[`id`],{onDelete:`Cascade`})},indexes:[r.on([`learnerId`,`isActive`]),r.on([`generatedAt`])]}),l=e({name:`Recommendation`,description:`AI-powered learning recommendation.`,schema:`lssm_learning`,map:`recommendation`,fields:{id:n.id({description:`Unique recommendation identifier`}),learnerId:n.foreignKey({description:`Learner`}),type:n.enum(`RecommendationType`,{description:`Recommendation type`}),itemId:n.string({description:`Recommended item ID`}),itemType:n.string({description:`Item type (course, lesson, deck, etc.)`}),score:n.decimal({description:`Recommendation score (0-1)`}),confidence:n.decimal({description:`Confidence in recommendation`}),reason:n.string({description:`Human-readable reason`}),factors:n.json({isOptional:!0,description:`Factors that contributed to recommendation`}),status:n.string({default:`"pending"`,description:`Status: pending, viewed, accepted, dismissed`}),viewedAt:n.dateTime({isOptional:!0,description:`When viewed`}),acceptedAt:n.dateTime({isOptional:!0,description:`When accepted`}),dismissedAt:n.dateTime({isOptional:!0,description:`When dismissed`}),feedback:n.string({isOptional:!0,description:`User feedback`}),feedbackRating:n.int({isOptional:!0,description:`Feedback rating (1-5)`}),expiresAt:n.dateTime({isOptional:!0,description:`When recommendation expires`}),createdAt:n.createdAt(),updatedAt:n.updatedAt(),learner:n.belongsTo(`Learner`,[`learnerId`],[`id`],{onDelete:`Cascade`})},indexes:[r.on([`learnerId`,`status`,`score`]),r.on([`type`,`status`]),r.on([`expiresAt`])],enums:[a]}),u=e({name:`LearningGap`,description:`Identified learning gap.`,schema:`lssm_learning`,map:`learning_gap`,fields:{id:n.id({description:`Unique gap identifier`}),learnerId:n.foreignKey({description:`Learner`}),skillId:n.string({description:`Skill with gap`}),skillName:n.string({description:`Skill name`}),severity:n.string({default:`"moderate"`,description:`Gap severity: minor, moderate, major`}),confidence:n.decimal({description:`Confidence in gap detection`}),evidence:n.json({isOptional:!0,description:`Evidence for gap`}),relatedQuestions:n.json({isOptional:!0,description:`Questions that revealed gap`}),suggestedRemediation:n.json({isOptional:!0,description:`Suggested remediation`}),remediationProgress:n.int({default:0,description:`Remediation progress`}),status:n.string({default:`"open"`,description:`Status: open, in_progress, resolved`}),resolvedAt:n.dateTime({isOptional:!0,description:`When resolved`}),detectedAt:n.dateTime({description:`When gap was detected`}),createdAt:n.createdAt(),updatedAt:n.updatedAt(),learner:n.belongsTo(`Learner`,[`learnerId`],[`id`],{onDelete:`Cascade`})},indexes:[r.on([`learnerId`,`status`]),r.on([`skillId`,`status`]),r.on([`severity`,`status`])]}),d=[o,s,c,l,u],f=[i,a];export{o as LearnerProfileEntity,u as LearningGapEntity,c as LearningPathEntity,i as LearningStyleEnum,l as RecommendationEntity,a as RecommendationTypeEnum,s as SkillMapEntity,d as aiEntities,f as aiEnums};