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

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 (215) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +3 -0
  3. package/dist/contracts/models.d.ts +120 -119
  4. package/dist/contracts/models.d.ts.map +1 -0
  5. package/dist/contracts/models.js +87 -88
  6. package/dist/contracts/models.js.map +1 -0
  7. package/dist/contracts/onboarding.d.ts +169 -168
  8. package/dist/contracts/onboarding.d.ts.map +1 -0
  9. package/dist/contracts/onboarding.js +71 -72
  10. package/dist/contracts/onboarding.js.map +1 -0
  11. package/dist/contracts/operations.d.ts +72 -71
  12. package/dist/contracts/operations.d.ts.map +1 -0
  13. package/dist/contracts/operations.js +2 -1
  14. package/dist/contracts/operations.js.map +1 -0
  15. package/dist/contracts/shared.d.ts +2 -1
  16. package/dist/contracts/shared.d.ts.map +1 -0
  17. package/dist/contracts/shared.js +2 -1
  18. package/dist/contracts/shared.js.map +1 -0
  19. package/dist/docs/learning-journey.docblock.js +2 -1
  20. package/dist/docs/learning-journey.docblock.js.map +1 -0
  21. package/dist/engines/srs.d.ts +14 -13
  22. package/dist/engines/srs.d.ts.map +1 -0
  23. package/dist/engines/srs.js +30 -30
  24. package/dist/engines/srs.js.map +1 -0
  25. package/dist/engines/streak.d.ts +2 -1
  26. package/dist/engines/streak.d.ts.map +1 -0
  27. package/dist/engines/streak.js +2 -1
  28. package/dist/engines/streak.js.map +1 -0
  29. package/dist/engines/xp.d.ts +2 -1
  30. package/dist/engines/xp.d.ts.map +1 -0
  31. package/dist/engines/xp.js +2 -1
  32. package/dist/engines/xp.js.map +1 -0
  33. package/dist/entities/ai.d.ts +202 -201
  34. package/dist/entities/ai.d.ts.map +1 -0
  35. package/dist/entities/ai.js +114 -114
  36. package/dist/entities/ai.js.map +1 -0
  37. package/dist/entities/course.d.ts +152 -151
  38. package/dist/entities/course.d.ts.map +1 -0
  39. package/dist/entities/course.js +86 -86
  40. package/dist/entities/course.js.map +1 -0
  41. package/dist/entities/flashcard.d.ts +147 -146
  42. package/dist/entities/flashcard.d.ts.map +1 -0
  43. package/dist/entities/flashcard.js +85 -85
  44. package/dist/entities/flashcard.js.map +1 -0
  45. package/dist/entities/gamification.d.ts +200 -199
  46. package/dist/entities/gamification.d.ts.map +1 -0
  47. package/dist/entities/gamification.js +120 -120
  48. package/dist/entities/gamification.js.map +1 -0
  49. package/dist/entities/index.d.ts +607 -606
  50. package/dist/entities/index.d.ts.map +1 -0
  51. package/dist/entities/index.js +2 -1
  52. package/dist/entities/index.js.map +1 -0
  53. package/dist/entities/learner.d.ts +194 -193
  54. package/dist/entities/learner.d.ts.map +1 -0
  55. package/dist/entities/learner.js +113 -113
  56. package/dist/entities/learner.js.map +1 -0
  57. package/dist/entities/onboarding.d.ts +167 -166
  58. package/dist/entities/onboarding.d.ts.map +1 -0
  59. package/dist/entities/onboarding.js +93 -93
  60. package/dist/entities/onboarding.js.map +1 -0
  61. package/dist/entities/quiz.d.ts +187 -186
  62. package/dist/entities/quiz.d.ts.map +1 -0
  63. package/dist/entities/quiz.js +109 -109
  64. package/dist/entities/quiz.js.map +1 -0
  65. package/dist/events.d.ts +215 -214
  66. package/dist/events.d.ts.map +1 -0
  67. package/dist/events.js +109 -110
  68. package/dist/events.js.map +1 -0
  69. package/dist/learning-journey.feature.d.ts +2 -1
  70. package/dist/learning-journey.feature.d.ts.map +1 -0
  71. package/dist/learning-journey.feature.js +2 -1
  72. package/dist/learning-journey.feature.js.map +1 -0
  73. package/dist/libs/contracts/dist/capabilities/openbanking.js +2 -1
  74. package/dist/libs/contracts/dist/capabilities/openbanking.js.map +1 -0
  75. package/dist/libs/contracts/dist/contract-registry/schemas.js +2 -1
  76. package/dist/libs/contracts/dist/contract-registry/schemas.js.map +1 -0
  77. package/dist/libs/contracts/dist/docs/accessibility_wcag_compliance_specs.docblock.js +2 -1
  78. package/dist/libs/contracts/dist/docs/accessibility_wcag_compliance_specs.docblock.js.map +1 -0
  79. package/dist/libs/contracts/dist/docs/index.js +2 -6
  80. package/dist/libs/contracts/dist/docs/meta.docs.js +30 -0
  81. package/dist/libs/contracts/dist/docs/meta.docs.js.map +1 -0
  82. package/dist/libs/contracts/dist/docs/presentations.js +2 -1
  83. package/dist/libs/contracts/dist/docs/presentations.js.map +1 -0
  84. package/dist/libs/contracts/dist/docs/registry.js +2 -1
  85. package/dist/libs/contracts/dist/docs/registry.js.map +1 -0
  86. package/dist/libs/contracts/dist/docs/tech/auth/better-auth-nextjs.docblock.js +2 -1
  87. package/dist/libs/contracts/dist/docs/tech/auth/better-auth-nextjs.docblock.js.map +1 -0
  88. package/dist/libs/contracts/dist/docs/tech/contracts/openapi-export.docblock.js +2 -1
  89. package/dist/libs/contracts/dist/docs/tech/contracts/openapi-export.docblock.js.map +1 -0
  90. package/dist/libs/contracts/dist/docs/tech/lifecycle-stage-system.docblock.js +2 -1
  91. package/dist/libs/contracts/dist/docs/tech/lifecycle-stage-system.docblock.js.map +1 -0
  92. package/dist/libs/contracts/dist/docs/tech/llm/llm-integration.docblock.js +2 -1
  93. package/dist/libs/contracts/dist/docs/tech/llm/llm-integration.docblock.js.map +1 -0
  94. package/dist/libs/contracts/dist/docs/tech/mcp-endpoints.docblock.js +2 -1
  95. package/dist/libs/contracts/dist/docs/tech/mcp-endpoints.docblock.js.map +1 -0
  96. package/dist/libs/contracts/dist/docs/tech/presentation-runtime.docblock.js +2 -1
  97. package/dist/libs/contracts/dist/docs/tech/presentation-runtime.docblock.js.map +1 -0
  98. package/dist/libs/contracts/dist/docs/tech/schema/README.docblock.js +2 -1
  99. package/dist/libs/contracts/dist/docs/tech/schema/README.docblock.js.map +1 -0
  100. package/dist/libs/contracts/dist/docs/tech/studio/learning-events.docblock.js +2 -1
  101. package/dist/libs/contracts/dist/docs/tech/studio/learning-events.docblock.js.map +1 -0
  102. package/dist/libs/contracts/dist/docs/tech/studio/learning-journeys.docblock.js +2 -1
  103. package/dist/libs/contracts/dist/docs/tech/studio/learning-journeys.docblock.js.map +1 -0
  104. package/dist/libs/contracts/dist/docs/tech/studio/platform-admin-panel.docblock.js +2 -1
  105. package/dist/libs/contracts/dist/docs/tech/studio/platform-admin-panel.docblock.js.map +1 -0
  106. package/dist/libs/contracts/dist/docs/tech/studio/project-access-teams.docblock.js +2 -1
  107. package/dist/libs/contracts/dist/docs/tech/studio/project-access-teams.docblock.js.map +1 -0
  108. package/dist/libs/contracts/dist/docs/tech/studio/project-routing.docblock.js +2 -1
  109. package/dist/libs/contracts/dist/docs/tech/studio/project-routing.docblock.js.map +1 -0
  110. package/dist/libs/contracts/dist/docs/tech/studio/sandbox-unlogged.docblock.js +2 -1
  111. package/dist/libs/contracts/dist/docs/tech/studio/sandbox-unlogged.docblock.js.map +1 -0
  112. package/dist/libs/contracts/dist/docs/tech/studio/team-invitations.docblock.js +2 -1
  113. package/dist/libs/contracts/dist/docs/tech/studio/team-invitations.docblock.js.map +1 -0
  114. package/dist/libs/contracts/dist/docs/tech/studio/workspace-ops.docblock.js +2 -1
  115. package/dist/libs/contracts/dist/docs/tech/studio/workspace-ops.docblock.js.map +1 -0
  116. package/dist/libs/contracts/dist/docs/tech/studio/workspaces.docblock.js +2 -1
  117. package/dist/libs/contracts/dist/docs/tech/studio/workspaces.docblock.js.map +1 -0
  118. package/dist/libs/contracts/dist/docs/tech/telemetry-ingest.docblock.js +2 -1
  119. package/dist/libs/contracts/dist/docs/tech/telemetry-ingest.docblock.js.map +1 -0
  120. package/dist/libs/contracts/dist/docs/tech/templates/runtime.docblock.js +2 -1
  121. package/dist/libs/contracts/dist/docs/tech/templates/runtime.docblock.js.map +1 -0
  122. package/dist/libs/contracts/dist/docs/tech/vscode-extension.docblock.js +2 -1
  123. package/dist/libs/contracts/dist/docs/tech/vscode-extension.docblock.js.map +1 -0
  124. package/dist/libs/contracts/dist/docs/tech/workflows/overview.docblock.js +2 -1
  125. package/dist/libs/contracts/dist/docs/tech/workflows/overview.docblock.js.map +1 -0
  126. package/dist/libs/contracts/dist/docs/tech-contracts.docs.js +97 -0
  127. package/dist/libs/contracts/dist/docs/tech-contracts.docs.js.map +1 -0
  128. package/dist/libs/contracts/dist/events.js +2 -1
  129. package/dist/libs/contracts/dist/events.js.map +1 -0
  130. package/dist/libs/contracts/dist/index.js +2 -1
  131. package/dist/libs/contracts/dist/integrations/contracts.js +65 -66
  132. package/dist/libs/contracts/dist/integrations/contracts.js.map +1 -0
  133. package/dist/libs/contracts/dist/integrations/openbanking/contracts/accounts.js +31 -32
  134. package/dist/libs/contracts/dist/integrations/openbanking/contracts/accounts.js.map +1 -0
  135. package/dist/libs/contracts/dist/integrations/openbanking/contracts/balances.js +18 -19
  136. package/dist/libs/contracts/dist/integrations/openbanking/contracts/balances.js.map +1 -0
  137. package/dist/libs/contracts/dist/integrations/openbanking/contracts/transactions.js +32 -33
  138. package/dist/libs/contracts/dist/integrations/openbanking/contracts/transactions.js.map +1 -0
  139. package/dist/libs/contracts/dist/integrations/openbanking/models.js +60 -61
  140. package/dist/libs/contracts/dist/integrations/openbanking/models.js.map +1 -0
  141. package/dist/libs/contracts/dist/integrations/openbanking/telemetry.js +2 -1
  142. package/dist/libs/contracts/dist/integrations/openbanking/telemetry.js.map +1 -0
  143. package/dist/libs/contracts/dist/integrations/providers/elevenlabs.js +2 -1
  144. package/dist/libs/contracts/dist/integrations/providers/elevenlabs.js.map +1 -0
  145. package/dist/libs/contracts/dist/integrations/providers/gcs-storage.js +2 -1
  146. package/dist/libs/contracts/dist/integrations/providers/gcs-storage.js.map +1 -0
  147. package/dist/libs/contracts/dist/integrations/providers/gmail.js +2 -1
  148. package/dist/libs/contracts/dist/integrations/providers/gmail.js.map +1 -0
  149. package/dist/libs/contracts/dist/integrations/providers/google-calendar.js +2 -1
  150. package/dist/libs/contracts/dist/integrations/providers/google-calendar.js.map +1 -0
  151. package/dist/libs/contracts/dist/integrations/providers/mistral.js +2 -1
  152. package/dist/libs/contracts/dist/integrations/providers/mistral.js.map +1 -0
  153. package/dist/libs/contracts/dist/integrations/providers/postmark.js +2 -1
  154. package/dist/libs/contracts/dist/integrations/providers/postmark.js.map +1 -0
  155. package/dist/libs/contracts/dist/integrations/providers/powens.js +2 -1
  156. package/dist/libs/contracts/dist/integrations/providers/powens.js.map +1 -0
  157. package/dist/libs/contracts/dist/integrations/providers/qdrant.js +2 -1
  158. package/dist/libs/contracts/dist/integrations/providers/qdrant.js.map +1 -0
  159. package/dist/libs/contracts/dist/integrations/providers/stripe.js +2 -1
  160. package/dist/libs/contracts/dist/integrations/providers/stripe.js.map +1 -0
  161. package/dist/libs/contracts/dist/integrations/providers/twilio-sms.js +2 -1
  162. package/dist/libs/contracts/dist/integrations/providers/twilio-sms.js.map +1 -0
  163. package/dist/libs/contracts/dist/knowledge/contracts.js +44 -45
  164. package/dist/libs/contracts/dist/knowledge/contracts.js.map +1 -0
  165. package/dist/libs/contracts/dist/knowledge/spaces/email-threads.js +2 -1
  166. package/dist/libs/contracts/dist/knowledge/spaces/email-threads.js.map +1 -0
  167. package/dist/libs/contracts/dist/knowledge/spaces/financial-docs.js +2 -1
  168. package/dist/libs/contracts/dist/knowledge/spaces/financial-docs.js.map +1 -0
  169. package/dist/libs/contracts/dist/knowledge/spaces/financial-overview.js +2 -1
  170. package/dist/libs/contracts/dist/knowledge/spaces/financial-overview.js.map +1 -0
  171. package/dist/libs/contracts/dist/knowledge/spaces/product-canon.js +2 -1
  172. package/dist/libs/contracts/dist/knowledge/spaces/product-canon.js.map +1 -0
  173. package/dist/libs/contracts/dist/knowledge/spaces/support-faq.js +2 -1
  174. package/dist/libs/contracts/dist/knowledge/spaces/support-faq.js.map +1 -0
  175. package/dist/libs/contracts/dist/knowledge/spaces/uploaded-docs.js +2 -1
  176. package/dist/libs/contracts/dist/knowledge/spaces/uploaded-docs.js.map +1 -0
  177. package/dist/libs/contracts/dist/llm/exporters.js +2 -1
  178. package/dist/libs/contracts/dist/llm/exporters.js.map +1 -0
  179. package/dist/libs/contracts/dist/onboarding-base.js +22 -23
  180. package/dist/libs/contracts/dist/onboarding-base.js.map +1 -0
  181. package/dist/libs/contracts/dist/ownership.js +4 -2
  182. package/dist/libs/contracts/dist/ownership.js.map +1 -0
  183. package/dist/libs/contracts/dist/presentations.v2.js +2 -1
  184. package/dist/libs/contracts/dist/presentations.v2.js.map +1 -0
  185. package/dist/libs/contracts/dist/regenerator/service.js +2 -1
  186. package/dist/libs/contracts/dist/regenerator/service.js.map +1 -0
  187. package/dist/libs/contracts/dist/schema/dist/index.js +3873 -6
  188. package/dist/libs/contracts/dist/schema/dist/index.js.map +1 -0
  189. package/dist/libs/contracts/dist/spec.js +2 -1
  190. package/dist/libs/contracts/dist/spec.js.map +1 -0
  191. package/dist/libs/schema/dist/index.js +4889 -6
  192. package/dist/libs/schema/dist/index.js.map +1 -0
  193. package/dist/track-spec.d.ts +2 -1
  194. package/dist/track-spec.d.ts.map +1 -0
  195. package/package.json +13 -6
  196. package/dist/libs/contracts/dist/docs/PUBLISHING.docblock.js +0 -16
  197. package/dist/libs/contracts/dist/docs/tech/PHASE_1_QUICKSTART.docblock.js +0 -16
  198. package/dist/libs/contracts/dist/docs/tech/PHASE_2_AI_NATIVE_OPERATIONS.docblock.js +0 -16
  199. package/dist/libs/contracts/dist/docs/tech/PHASE_3_AUTO_EVOLUTION.docblock.js +0 -16
  200. package/dist/libs/contracts/dist/docs/tech/PHASE_4_PERSONALIZATION_ENGINE.docblock.js +0 -16
  201. package/dist/libs/contracts/dist/docs/tech/PHASE_5_ZERO_TOUCH_OPERATIONS.docblock.js +0 -16
  202. package/dist/libs/contracts/dist/schema/dist/EnumType.js +0 -2
  203. package/dist/libs/contracts/dist/schema/dist/FieldType.js +0 -49
  204. package/dist/libs/contracts/dist/schema/dist/ScalarTypeEnum.js +0 -236
  205. package/dist/libs/contracts/dist/schema/dist/SchemaModel.js +0 -34
  206. package/dist/libs/contracts/dist/schema/dist/entity/defineEntity.js +0 -1
  207. package/dist/libs/contracts/dist/schema/dist/entity/index.js +0 -2
  208. package/dist/libs/contracts/dist/schema/dist/entity/types.js +0 -1
  209. package/dist/libs/schema/dist/EnumType.js +0 -2
  210. package/dist/libs/schema/dist/FieldType.js +0 -49
  211. package/dist/libs/schema/dist/ScalarTypeEnum.js +0 -236
  212. package/dist/libs/schema/dist/SchemaModel.js +0 -39
  213. package/dist/libs/schema/dist/entity/defineEntity.js +0 -236
  214. package/dist/libs/schema/dist/entity/index.js +0 -2
  215. package/dist/libs/schema/dist/entity/types.js +0 -1
@@ -1,11 +1,10 @@
1
- import { defineEntity, defineEntityEnum, field, index } from "../libs/schema/dist/entity/defineEntity.js";
2
- import "../libs/schema/dist/index.js";
1
+ import { L5, Z5, _5, b5 } from "../libs/schema/dist/index.js";
3
2
 
4
3
  //#region src/entities/quiz.ts
5
4
  /**
6
5
  * Question type enum.
7
6
  */
8
- const QuestionTypeEnum = defineEntityEnum({
7
+ const QuestionTypeEnum = Z5({
9
8
  name: "QuestionType",
10
9
  values: [
11
10
  "MULTIPLE_CHOICE",
@@ -21,7 +20,7 @@ const QuestionTypeEnum = defineEntityEnum({
21
20
  /**
22
21
  * Quiz status enum.
23
22
  */
24
- const QuizStatusEnum = defineEntityEnum({
23
+ const QuizStatusEnum = Z5({
25
24
  name: "QuizStatus",
26
25
  values: [
27
26
  "DRAFT",
@@ -34,7 +33,7 @@ const QuizStatusEnum = defineEntityEnum({
34
33
  /**
35
34
  * Attempt status enum.
36
35
  */
37
- const AttemptStatusEnum = defineEntityEnum({
36
+ const AttemptStatusEnum = Z5({
38
37
  name: "AttemptStatus",
39
38
  values: [
40
39
  "IN_PROGRESS",
@@ -48,309 +47,309 @@ const AttemptStatusEnum = defineEntityEnum({
48
47
  /**
49
48
  * Quiz entity - assessment for a lesson.
50
49
  */
51
- const QuizEntity = defineEntity({
50
+ const QuizEntity = L5({
52
51
  name: "Quiz",
53
52
  description: "A quiz assessment.",
54
53
  schema: "lssm_learning",
55
54
  map: "quiz",
56
55
  fields: {
57
- id: field.id({ description: "Unique quiz identifier" }),
58
- lessonId: field.foreignKey({
56
+ id: _5.id({ description: "Unique quiz identifier" }),
57
+ lessonId: _5.foreignKey({
59
58
  isOptional: true,
60
59
  description: "Associated lesson"
61
60
  }),
62
- title: field.string({ description: "Quiz title" }),
63
- description: field.string({
61
+ title: _5.string({ description: "Quiz title" }),
62
+ description: _5.string({
64
63
  isOptional: true,
65
64
  description: "Quiz description"
66
65
  }),
67
- instructions: field.string({
66
+ instructions: _5.string({
68
67
  isOptional: true,
69
68
  description: "Quiz instructions"
70
69
  }),
71
- passingScore: field.int({
70
+ passingScore: _5.int({
72
71
  default: 70,
73
72
  description: "Passing score percentage"
74
73
  }),
75
- timeLimit: field.int({
74
+ timeLimit: _5.int({
76
75
  isOptional: true,
77
76
  description: "Time limit in seconds"
78
77
  }),
79
- maxAttempts: field.int({
78
+ maxAttempts: _5.int({
80
79
  isOptional: true,
81
80
  description: "Maximum attempts allowed"
82
81
  }),
83
- shuffleQuestions: field.boolean({
82
+ shuffleQuestions: _5.boolean({
84
83
  default: false,
85
84
  description: "Shuffle question order"
86
85
  }),
87
- shuffleOptions: field.boolean({
86
+ shuffleOptions: _5.boolean({
88
87
  default: false,
89
88
  description: "Shuffle answer options"
90
89
  }),
91
- showCorrectAnswers: field.boolean({
90
+ showCorrectAnswers: _5.boolean({
92
91
  default: true,
93
92
  description: "Show correct answers after"
94
93
  }),
95
- showExplanations: field.boolean({
94
+ showExplanations: _5.boolean({
96
95
  default: true,
97
96
  description: "Show explanations after"
98
97
  }),
99
- status: field.enum("QuizStatus", {
98
+ status: _5.enum("QuizStatus", {
100
99
  default: "DRAFT",
101
100
  description: "Publication status"
102
101
  }),
103
- totalPoints: field.int({
102
+ totalPoints: _5.int({
104
103
  default: 0,
105
104
  description: "Total points available"
106
105
  }),
107
- xpReward: field.int({
106
+ xpReward: _5.int({
108
107
  default: 20,
109
108
  description: "XP for passing"
110
109
  }),
111
- orgId: field.string({
110
+ orgId: _5.string({
112
111
  isOptional: true,
113
112
  description: "Organization scope"
114
113
  }),
115
- metadata: field.json({
114
+ metadata: _5.json({
116
115
  isOptional: true,
117
116
  description: "Additional metadata"
118
117
  }),
119
- createdAt: field.createdAt(),
120
- updatedAt: field.updatedAt(),
121
- lesson: field.belongsTo("Lesson", ["lessonId"], ["id"], { onDelete: "Cascade" }),
122
- questions: field.hasMany("Question"),
123
- attempts: field.hasMany("QuizAttempt")
118
+ createdAt: _5.createdAt(),
119
+ updatedAt: _5.updatedAt(),
120
+ lesson: _5.belongsTo("Lesson", ["lessonId"], ["id"], { onDelete: "Cascade" }),
121
+ questions: _5.hasMany("Question"),
122
+ attempts: _5.hasMany("QuizAttempt")
124
123
  },
125
124
  indexes: [
126
- index.on(["lessonId"]),
127
- index.on(["status"]),
128
- index.on(["orgId"])
125
+ b5.on(["lessonId"]),
126
+ b5.on(["status"]),
127
+ b5.on(["orgId"])
129
128
  ],
130
129
  enums: [QuizStatusEnum]
131
130
  });
132
131
  /**
133
132
  * Question entity - individual quiz question.
134
133
  */
135
- const QuestionEntity = defineEntity({
134
+ const QuestionEntity = L5({
136
135
  name: "Question",
137
136
  description: "A quiz question.",
138
137
  schema: "lssm_learning",
139
138
  map: "question",
140
139
  fields: {
141
- id: field.id({ description: "Unique question identifier" }),
142
- quizId: field.foreignKey({ description: "Parent quiz" }),
143
- type: field.enum("QuestionType", { description: "Question type" }),
144
- content: field.string({ description: "Question text" }),
145
- mediaUrl: field.string({
140
+ id: _5.id({ description: "Unique question identifier" }),
141
+ quizId: _5.foreignKey({ description: "Parent quiz" }),
142
+ type: _5.enum("QuestionType", { description: "Question type" }),
143
+ content: _5.string({ description: "Question text" }),
144
+ mediaUrl: _5.string({
146
145
  isOptional: true,
147
146
  description: "Question media"
148
147
  }),
149
- points: field.int({
148
+ points: _5.int({
150
149
  default: 1,
151
150
  description: "Points for correct answer"
152
151
  }),
153
- codeLanguage: field.string({
152
+ codeLanguage: _5.string({
154
153
  isOptional: true,
155
154
  description: "Programming language"
156
155
  }),
157
- codeTemplate: field.string({
156
+ codeTemplate: _5.string({
158
157
  isOptional: true,
159
158
  description: "Starter code template"
160
159
  }),
161
- testCases: field.json({
160
+ testCases: _5.json({
162
161
  isOptional: true,
163
162
  description: "Test cases for code validation"
164
163
  }),
165
- explanation: field.string({
164
+ explanation: _5.string({
166
165
  isOptional: true,
167
166
  description: "Explanation of correct answer"
168
167
  }),
169
- hint: field.string({
168
+ hint: _5.string({
170
169
  isOptional: true,
171
170
  description: "Hint for the question"
172
171
  }),
173
- order: field.int({
172
+ order: _5.int({
174
173
  default: 0,
175
174
  description: "Display order"
176
175
  }),
177
- skillId: field.string({
176
+ skillId: _5.string({
178
177
  isOptional: true,
179
178
  description: "Associated skill"
180
179
  }),
181
- metadata: field.json({
180
+ metadata: _5.json({
182
181
  isOptional: true,
183
182
  description: "Additional metadata"
184
183
  }),
185
- createdAt: field.createdAt(),
186
- updatedAt: field.updatedAt(),
187
- quiz: field.belongsTo("Quiz", ["quizId"], ["id"], { onDelete: "Cascade" }),
188
- options: field.hasMany("QuestionOption")
184
+ createdAt: _5.createdAt(),
185
+ updatedAt: _5.updatedAt(),
186
+ quiz: _5.belongsTo("Quiz", ["quizId"], ["id"], { onDelete: "Cascade" }),
187
+ options: _5.hasMany("QuestionOption")
189
188
  },
190
189
  indexes: [
191
- index.on(["quizId", "order"]),
192
- index.on(["type"]),
193
- index.on(["skillId"])
190
+ b5.on(["quizId", "order"]),
191
+ b5.on(["type"]),
192
+ b5.on(["skillId"])
194
193
  ],
195
194
  enums: [QuestionTypeEnum]
196
195
  });
197
196
  /**
198
197
  * QuestionOption entity - answer option for a question.
199
198
  */
200
- const QuestionOptionEntity = defineEntity({
199
+ const QuestionOptionEntity = L5({
201
200
  name: "QuestionOption",
202
201
  description: "An answer option for a question.",
203
202
  schema: "lssm_learning",
204
203
  map: "question_option",
205
204
  fields: {
206
- id: field.id({ description: "Unique option identifier" }),
207
- questionId: field.foreignKey({ description: "Parent question" }),
208
- content: field.string({ description: "Option text" }),
209
- matchContent: field.string({
205
+ id: _5.id({ description: "Unique option identifier" }),
206
+ questionId: _5.foreignKey({ description: "Parent question" }),
207
+ content: _5.string({ description: "Option text" }),
208
+ matchContent: _5.string({
210
209
  isOptional: true,
211
210
  description: "Match pair content"
212
211
  }),
213
- isCorrect: field.boolean({
212
+ isCorrect: _5.boolean({
214
213
  default: false,
215
214
  description: "Whether option is correct"
216
215
  }),
217
- feedback: field.string({
216
+ feedback: _5.string({
218
217
  isOptional: true,
219
218
  description: "Feedback when selected"
220
219
  }),
221
- order: field.int({
220
+ order: _5.int({
222
221
  default: 0,
223
222
  description: "Display order"
224
223
  }),
225
- metadata: field.json({
224
+ metadata: _5.json({
226
225
  isOptional: true,
227
226
  description: "Additional metadata"
228
227
  }),
229
- createdAt: field.createdAt(),
230
- updatedAt: field.updatedAt(),
231
- question: field.belongsTo("Question", ["questionId"], ["id"], { onDelete: "Cascade" })
228
+ createdAt: _5.createdAt(),
229
+ updatedAt: _5.updatedAt(),
230
+ question: _5.belongsTo("Question", ["questionId"], ["id"], { onDelete: "Cascade" })
232
231
  },
233
- indexes: [index.on(["questionId", "order"])]
232
+ indexes: [b5.on(["questionId", "order"])]
234
233
  });
235
234
  /**
236
235
  * QuizAttempt entity - a learner's quiz attempt.
237
236
  */
238
- const QuizAttemptEntity = defineEntity({
237
+ const QuizAttemptEntity = L5({
239
238
  name: "QuizAttempt",
240
239
  description: "A learner quiz attempt.",
241
240
  schema: "lssm_learning",
242
241
  map: "quiz_attempt",
243
242
  fields: {
244
- id: field.id({ description: "Unique attempt identifier" }),
245
- learnerId: field.foreignKey({ description: "Learner" }),
246
- quizId: field.foreignKey({ description: "Quiz" }),
247
- status: field.enum("AttemptStatus", {
243
+ id: _5.id({ description: "Unique attempt identifier" }),
244
+ learnerId: _5.foreignKey({ description: "Learner" }),
245
+ quizId: _5.foreignKey({ description: "Quiz" }),
246
+ status: _5.enum("AttemptStatus", {
248
247
  default: "IN_PROGRESS",
249
248
  description: "Attempt status"
250
249
  }),
251
- score: field.int({
250
+ score: _5.int({
252
251
  isOptional: true,
253
252
  description: "Score achieved"
254
253
  }),
255
- percentageScore: field.int({
254
+ percentageScore: _5.int({
256
255
  isOptional: true,
257
256
  description: "Percentage score"
258
257
  }),
259
- passed: field.boolean({
258
+ passed: _5.boolean({
260
259
  isOptional: true,
261
260
  description: "Whether passed"
262
261
  }),
263
- totalQuestions: field.int({
262
+ totalQuestions: _5.int({
264
263
  default: 0,
265
264
  description: "Total questions"
266
265
  }),
267
- answeredQuestions: field.int({
266
+ answeredQuestions: _5.int({
268
267
  default: 0,
269
268
  description: "Questions answered"
270
269
  }),
271
- correctAnswers: field.int({
270
+ correctAnswers: _5.int({
272
271
  default: 0,
273
272
  description: "Correct answers"
274
273
  }),
275
- answers: field.json({
274
+ answers: _5.json({
276
275
  isOptional: true,
277
276
  description: "Submitted answers"
278
277
  }),
279
- xpEarned: field.int({
278
+ xpEarned: _5.int({
280
279
  default: 0,
281
280
  description: "XP earned"
282
281
  }),
283
- timeSpent: field.int({
282
+ timeSpent: _5.int({
284
283
  default: 0,
285
284
  description: "Time spent in seconds"
286
285
  }),
287
- startedAt: field.dateTime({ description: "When started" }),
288
- completedAt: field.dateTime({
286
+ startedAt: _5.dateTime({ description: "When started" }),
287
+ completedAt: _5.dateTime({
289
288
  isOptional: true,
290
289
  description: "When completed"
291
290
  }),
292
- attemptNumber: field.int({
291
+ attemptNumber: _5.int({
293
292
  default: 1,
294
293
  description: "Which attempt this is"
295
294
  }),
296
- metadata: field.json({
295
+ metadata: _5.json({
297
296
  isOptional: true,
298
297
  description: "Additional metadata"
299
298
  }),
300
- createdAt: field.createdAt(),
301
- updatedAt: field.updatedAt(),
302
- learner: field.belongsTo("Learner", ["learnerId"], ["id"], { onDelete: "Cascade" }),
303
- quiz: field.belongsTo("Quiz", ["quizId"], ["id"], { onDelete: "Cascade" })
299
+ createdAt: _5.createdAt(),
300
+ updatedAt: _5.updatedAt(),
301
+ learner: _5.belongsTo("Learner", ["learnerId"], ["id"], { onDelete: "Cascade" }),
302
+ quiz: _5.belongsTo("Quiz", ["quizId"], ["id"], { onDelete: "Cascade" })
304
303
  },
305
304
  indexes: [
306
- index.on(["learnerId", "quizId"]),
307
- index.on(["learnerId", "status"]),
308
- index.on(["quizId", "status"])
305
+ b5.on(["learnerId", "quizId"]),
306
+ b5.on(["learnerId", "status"]),
307
+ b5.on(["quizId", "status"])
309
308
  ],
310
309
  enums: [AttemptStatusEnum]
311
310
  });
312
311
  /**
313
312
  * SkillAssessment entity - maps quiz performance to skills.
314
313
  */
315
- const SkillAssessmentEntity = defineEntity({
314
+ const SkillAssessmentEntity = L5({
316
315
  name: "SkillAssessment",
317
316
  description: "Assessment of a skill based on quiz performance.",
318
317
  schema: "lssm_learning",
319
318
  map: "skill_assessment",
320
319
  fields: {
321
- id: field.id({ description: "Unique assessment identifier" }),
322
- learnerId: field.foreignKey({ description: "Learner" }),
323
- skillId: field.string({ description: "Skill identifier" }),
324
- skillName: field.string({ description: "Skill name" }),
325
- level: field.int({
320
+ id: _5.id({ description: "Unique assessment identifier" }),
321
+ learnerId: _5.foreignKey({ description: "Learner" }),
322
+ skillId: _5.string({ description: "Skill identifier" }),
323
+ skillName: _5.string({ description: "Skill name" }),
324
+ level: _5.int({
326
325
  default: 1,
327
326
  description: "Proficiency level (1-5)"
328
327
  }),
329
- score: field.int({
328
+ score: _5.int({
330
329
  default: 0,
331
330
  description: "Assessment score (0-100)"
332
331
  }),
333
- confidence: field.decimal({
332
+ confidence: _5.decimal({
334
333
  default: .5,
335
334
  description: "Confidence in assessment"
336
335
  }),
337
- questionsAnswered: field.int({
336
+ questionsAnswered: _5.int({
338
337
  default: 0,
339
338
  description: "Total questions answered"
340
339
  }),
341
- questionsCorrect: field.int({
340
+ questionsCorrect: _5.int({
342
341
  default: 0,
343
342
  description: "Total correct"
344
343
  }),
345
- assessedAt: field.dateTime({ description: "Last assessment time" }),
346
- createdAt: field.createdAt(),
347
- updatedAt: field.updatedAt(),
348
- learner: field.belongsTo("Learner", ["learnerId"], ["id"], { onDelete: "Cascade" })
344
+ assessedAt: _5.dateTime({ description: "Last assessment time" }),
345
+ createdAt: _5.createdAt(),
346
+ updatedAt: _5.updatedAt(),
347
+ learner: _5.belongsTo("Learner", ["learnerId"], ["id"], { onDelete: "Cascade" })
349
348
  },
350
349
  indexes: [
351
- index.unique(["learnerId", "skillId"], { name: "skill_assessment_unique" }),
352
- index.on(["learnerId", "level"]),
353
- index.on(["skillId"])
350
+ b5.unique(["learnerId", "skillId"], { name: "skill_assessment_unique" }),
351
+ b5.on(["learnerId", "level"]),
352
+ b5.on(["skillId"])
354
353
  ]
355
354
  });
356
355
  const quizEntities = [
@@ -367,4 +366,5 @@ const quizEnums = [
367
366
  ];
368
367
 
369
368
  //#endregion
370
- export { AttemptStatusEnum, QuestionEntity, QuestionOptionEntity, QuestionTypeEnum, QuizAttemptEntity, QuizEntity, QuizStatusEnum, SkillAssessmentEntity, quizEntities, quizEnums };
369
+ export { AttemptStatusEnum, QuestionEntity, QuestionOptionEntity, QuestionTypeEnum, QuizAttemptEntity, QuizEntity, QuizStatusEnum, SkillAssessmentEntity, quizEntities, quizEnums };
370
+ //# sourceMappingURL=quiz.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"quiz.js","names":["defineEntityEnum","defineEntity","field","index"],"sources":["../../src/entities/quiz.ts"],"sourcesContent":["import { defineEntity, defineEntityEnum, field, index } from '@lssm/lib.schema';\n\n/**\n * Question type enum.\n */\nexport const QuestionTypeEnum = defineEntityEnum({\n name: 'QuestionType',\n values: [\n 'MULTIPLE_CHOICE',\n 'TRUE_FALSE',\n 'FILL_BLANK',\n 'MATCHING',\n 'SHORT_ANSWER',\n 'CODE',\n ] as const,\n schema: 'lssm_learning',\n description: 'Type of quiz question.',\n});\n\n/**\n * Quiz status enum.\n */\nexport const QuizStatusEnum = defineEntityEnum({\n name: 'QuizStatus',\n values: ['DRAFT', 'PUBLISHED', 'ARCHIVED'] as const,\n schema: 'lssm_learning',\n description: 'Publication status of a quiz.',\n});\n\n/**\n * Attempt status enum.\n */\nexport const AttemptStatusEnum = defineEntityEnum({\n name: 'AttemptStatus',\n values: ['IN_PROGRESS', 'COMPLETED', 'TIMED_OUT', 'ABANDONED'] as const,\n schema: 'lssm_learning',\n description: 'Status of a quiz attempt.',\n});\n\n/**\n * Quiz entity - assessment for a lesson.\n */\nexport const QuizEntity = defineEntity({\n name: 'Quiz',\n description: 'A quiz assessment.',\n schema: 'lssm_learning',\n map: 'quiz',\n fields: {\n id: field.id({ description: 'Unique quiz identifier' }),\n lessonId: field.foreignKey({\n isOptional: true,\n description: 'Associated lesson',\n }),\n\n // Basic info\n title: field.string({ description: 'Quiz title' }),\n description: field.string({\n isOptional: true,\n description: 'Quiz description',\n }),\n instructions: field.string({\n isOptional: true,\n description: 'Quiz instructions',\n }),\n\n // Settings\n passingScore: field.int({\n default: 70,\n description: 'Passing score percentage',\n }),\n timeLimit: field.int({\n isOptional: true,\n description: 'Time limit in seconds',\n }),\n maxAttempts: field.int({\n isOptional: true,\n description: 'Maximum attempts allowed',\n }),\n\n // Display options\n shuffleQuestions: field.boolean({\n default: false,\n description: 'Shuffle question order',\n }),\n shuffleOptions: field.boolean({\n default: false,\n description: 'Shuffle answer options',\n }),\n showCorrectAnswers: field.boolean({\n default: true,\n description: 'Show correct answers after',\n }),\n showExplanations: field.boolean({\n default: true,\n description: 'Show explanations after',\n }),\n\n // Status\n status: field.enum('QuizStatus', {\n default: 'DRAFT',\n description: 'Publication status',\n }),\n\n // Scoring\n totalPoints: field.int({\n default: 0,\n description: 'Total points available',\n }),\n\n // XP\n xpReward: field.int({ default: 20, description: 'XP for passing' }),\n\n // Organization scope\n orgId: field.string({\n isOptional: true,\n description: 'Organization scope',\n }),\n\n // Metadata\n metadata: field.json({\n isOptional: true,\n description: 'Additional metadata',\n }),\n\n // Timestamps\n createdAt: field.createdAt(),\n updatedAt: field.updatedAt(),\n\n // Relations\n lesson: field.belongsTo('Lesson', ['lessonId'], ['id'], {\n onDelete: 'Cascade',\n }),\n questions: field.hasMany('Question'),\n attempts: field.hasMany('QuizAttempt'),\n },\n indexes: [index.on(['lessonId']), index.on(['status']), index.on(['orgId'])],\n enums: [QuizStatusEnum],\n});\n\n/**\n * Question entity - individual quiz question.\n */\nexport const QuestionEntity = defineEntity({\n name: 'Question',\n description: 'A quiz question.',\n schema: 'lssm_learning',\n map: 'question',\n fields: {\n id: field.id({ description: 'Unique question identifier' }),\n quizId: field.foreignKey({ description: 'Parent quiz' }),\n\n // Question content\n type: field.enum('QuestionType', { description: 'Question type' }),\n content: field.string({ description: 'Question text' }),\n\n // Media\n mediaUrl: field.string({ isOptional: true, description: 'Question media' }),\n\n // Scoring\n points: field.int({ default: 1, description: 'Points for correct answer' }),\n\n // For code questions\n codeLanguage: field.string({\n isOptional: true,\n description: 'Programming language',\n }),\n codeTemplate: field.string({\n isOptional: true,\n description: 'Starter code template',\n }),\n testCases: field.json({\n isOptional: true,\n description: 'Test cases for code validation',\n }),\n\n // Feedback\n explanation: field.string({\n isOptional: true,\n description: 'Explanation of correct answer',\n }),\n hint: field.string({\n isOptional: true,\n description: 'Hint for the question',\n }),\n\n // Ordering\n order: field.int({ default: 0, description: 'Display order' }),\n\n // Skill mapping\n skillId: field.string({\n isOptional: true,\n description: 'Associated skill',\n }),\n\n // Metadata\n metadata: field.json({\n isOptional: true,\n description: 'Additional metadata',\n }),\n\n // Timestamps\n createdAt: field.createdAt(),\n updatedAt: field.updatedAt(),\n\n // Relations\n quiz: field.belongsTo('Quiz', ['quizId'], ['id'], { onDelete: 'Cascade' }),\n options: field.hasMany('QuestionOption'),\n },\n indexes: [\n index.on(['quizId', 'order']),\n index.on(['type']),\n index.on(['skillId']),\n ],\n enums: [QuestionTypeEnum],\n});\n\n/**\n * QuestionOption entity - answer option for a question.\n */\nexport const QuestionOptionEntity = defineEntity({\n name: 'QuestionOption',\n description: 'An answer option for a question.',\n schema: 'lssm_learning',\n map: 'question_option',\n fields: {\n id: field.id({ description: 'Unique option identifier' }),\n questionId: field.foreignKey({ description: 'Parent question' }),\n\n // Content\n content: field.string({ description: 'Option text' }),\n\n // For matching questions\n matchContent: field.string({\n isOptional: true,\n description: 'Match pair content',\n }),\n\n // Correctness\n isCorrect: field.boolean({\n default: false,\n description: 'Whether option is correct',\n }),\n\n // Feedback\n feedback: field.string({\n isOptional: true,\n description: 'Feedback when selected',\n }),\n\n // Ordering\n order: field.int({ default: 0, description: 'Display order' }),\n\n // Metadata\n metadata: field.json({\n isOptional: true,\n description: 'Additional metadata',\n }),\n\n // Timestamps\n createdAt: field.createdAt(),\n updatedAt: field.updatedAt(),\n\n // Relations\n question: field.belongsTo('Question', ['questionId'], ['id'], {\n onDelete: 'Cascade',\n }),\n },\n indexes: [index.on(['questionId', 'order'])],\n});\n\n/**\n * QuizAttempt entity - a learner's quiz attempt.\n */\nexport const QuizAttemptEntity = defineEntity({\n name: 'QuizAttempt',\n description: 'A learner quiz attempt.',\n schema: 'lssm_learning',\n map: 'quiz_attempt',\n fields: {\n id: field.id({ description: 'Unique attempt identifier' }),\n learnerId: field.foreignKey({ description: 'Learner' }),\n quizId: field.foreignKey({ description: 'Quiz' }),\n\n // Status\n status: field.enum('AttemptStatus', {\n default: 'IN_PROGRESS',\n description: 'Attempt status',\n }),\n\n // Results\n score: field.int({ isOptional: true, description: 'Score achieved' }),\n percentageScore: field.int({\n isOptional: true,\n description: 'Percentage score',\n }),\n passed: field.boolean({ isOptional: true, description: 'Whether passed' }),\n\n // Question tracking\n totalQuestions: field.int({ default: 0, description: 'Total questions' }),\n answeredQuestions: field.int({\n default: 0,\n description: 'Questions answered',\n }),\n correctAnswers: field.int({ default: 0, description: 'Correct answers' }),\n\n // Answers\n answers: field.json({ isOptional: true, description: 'Submitted answers' }),\n\n // XP\n xpEarned: field.int({ default: 0, description: 'XP earned' }),\n\n // Time tracking\n timeSpent: field.int({ default: 0, description: 'Time spent in seconds' }),\n\n // Timeline\n startedAt: field.dateTime({ description: 'When started' }),\n completedAt: field.dateTime({\n isOptional: true,\n description: 'When completed',\n }),\n\n // Attempt number\n attemptNumber: field.int({\n default: 1,\n description: 'Which attempt this is',\n }),\n\n // Metadata\n metadata: field.json({\n isOptional: true,\n description: 'Additional metadata',\n }),\n\n // Timestamps\n createdAt: field.createdAt(),\n updatedAt: field.updatedAt(),\n\n // Relations\n learner: field.belongsTo('Learner', ['learnerId'], ['id'], {\n onDelete: 'Cascade',\n }),\n quiz: field.belongsTo('Quiz', ['quizId'], ['id'], { onDelete: 'Cascade' }),\n },\n indexes: [\n index.on(['learnerId', 'quizId']),\n index.on(['learnerId', 'status']),\n index.on(['quizId', 'status']),\n ],\n enums: [AttemptStatusEnum],\n});\n\n/**\n * SkillAssessment entity - maps quiz performance to skills.\n */\nexport const SkillAssessmentEntity = defineEntity({\n name: 'SkillAssessment',\n description: 'Assessment of a skill based on quiz performance.',\n schema: 'lssm_learning',\n map: 'skill_assessment',\n fields: {\n id: field.id({ description: 'Unique assessment identifier' }),\n learnerId: field.foreignKey({ description: 'Learner' }),\n\n // Skill\n skillId: field.string({ description: 'Skill identifier' }),\n skillName: field.string({ description: 'Skill name' }),\n\n // Assessment\n level: field.int({ default: 1, description: 'Proficiency level (1-5)' }),\n score: field.int({ default: 0, description: 'Assessment score (0-100)' }),\n confidence: field.decimal({\n default: 0.5,\n description: 'Confidence in assessment',\n }),\n\n // Stats\n questionsAnswered: field.int({\n default: 0,\n description: 'Total questions answered',\n }),\n questionsCorrect: field.int({ default: 0, description: 'Total correct' }),\n\n // Timestamps\n assessedAt: field.dateTime({ description: 'Last assessment time' }),\n createdAt: field.createdAt(),\n updatedAt: field.updatedAt(),\n\n // Relations\n learner: field.belongsTo('Learner', ['learnerId'], ['id'], {\n onDelete: 'Cascade',\n }),\n },\n indexes: [\n index.unique(['learnerId', 'skillId'], { name: 'skill_assessment_unique' }),\n index.on(['learnerId', 'level']),\n index.on(['skillId']),\n ],\n});\n\nexport const quizEntities = [\n QuizEntity,\n QuestionEntity,\n QuestionOptionEntity,\n QuizAttemptEntity,\n SkillAssessmentEntity,\n];\n\nexport const quizEnums = [QuestionTypeEnum, QuizStatusEnum, AttemptStatusEnum];\n"],"mappings":"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"}