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

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 (146) hide show
  1. package/dist/contracts/models.d.ts +118 -118
  2. package/dist/contracts/models.js +1 -1
  3. package/dist/contracts/onboarding.d.ts +167 -167
  4. package/dist/contracts/onboarding.js +1 -1
  5. package/dist/contracts/operations.d.ts +70 -70
  6. package/dist/contracts/operations.js +1 -1
  7. package/dist/docs/learning-journey.docblock.js +1 -1
  8. package/dist/entities/ai.d.ts +200 -200
  9. package/dist/entities/ai.js +1 -1
  10. package/dist/entities/course.d.ts +150 -150
  11. package/dist/entities/course.js +1 -1
  12. package/dist/entities/flashcard.d.ts +145 -145
  13. package/dist/entities/flashcard.js +1 -1
  14. package/dist/entities/gamification.d.ts +198 -198
  15. package/dist/entities/gamification.js +1 -1
  16. package/dist/entities/index.d.ts +605 -605
  17. package/dist/entities/learner.d.ts +192 -192
  18. package/dist/entities/learner.js +1 -1
  19. package/dist/entities/onboarding.d.ts +165 -165
  20. package/dist/entities/onboarding.js +1 -1
  21. package/dist/entities/quiz.d.ts +185 -185
  22. package/dist/entities/quiz.js +1 -1
  23. package/dist/events.js +1 -1
  24. package/dist/index.d.ts +0 -1
  25. package/dist/libs/contracts/dist/capabilities/openbanking.js +1 -0
  26. package/dist/libs/contracts/dist/client/index.js +1 -0
  27. package/dist/libs/contracts/dist/client/react/feature-render.js +1 -0
  28. package/dist/libs/contracts/dist/client/react/form-render.js +1 -0
  29. package/dist/libs/contracts/dist/client/react/index.js +1 -0
  30. package/dist/libs/contracts/dist/contract-registry/index.js +1 -0
  31. package/dist/libs/contracts/dist/contract-registry/schemas.js +1 -0
  32. package/dist/libs/contracts/dist/docs/PUBLISHING.docblock.js +76 -0
  33. package/dist/libs/contracts/dist/docs/accessibility_wcag_compliance_specs.docblock.js +350 -0
  34. package/dist/libs/contracts/dist/docs/index.js +1 -0
  35. package/dist/libs/contracts/dist/docs/presentations.js +1 -0
  36. package/dist/libs/contracts/dist/docs/registry.js +1 -0
  37. package/dist/libs/contracts/dist/docs/tech/PHASE_1_QUICKSTART.docblock.js +383 -0
  38. package/dist/libs/contracts/dist/docs/tech/PHASE_2_AI_NATIVE_OPERATIONS.docblock.js +68 -0
  39. package/dist/libs/contracts/dist/docs/tech/PHASE_3_AUTO_EVOLUTION.docblock.js +140 -0
  40. package/dist/libs/contracts/dist/docs/tech/PHASE_4_PERSONALIZATION_ENGINE.docblock.js +86 -0
  41. package/dist/libs/contracts/dist/docs/tech/PHASE_5_ZERO_TOUCH_OPERATIONS.docblock.js +1 -0
  42. package/dist/libs/contracts/dist/docs/tech/auth/better-auth-nextjs.docblock.js +58 -0
  43. package/dist/libs/contracts/dist/docs/tech/contracts/openapi-export.docblock.js +38 -0
  44. package/dist/libs/contracts/dist/docs/tech/lifecycle-stage-system.docblock.js +213 -0
  45. package/dist/libs/contracts/dist/docs/tech/llm/llm-integration.docblock.js +289 -0
  46. package/dist/libs/contracts/dist/docs/tech/mcp-endpoints.docblock.js +1 -0
  47. package/dist/libs/contracts/dist/docs/tech/presentation-runtime.docblock.js +1 -0
  48. package/dist/libs/contracts/dist/docs/tech/schema/README.docblock.js +262 -0
  49. package/dist/libs/contracts/dist/docs/tech/studio/learning-events.docblock.js +1 -0
  50. package/dist/libs/contracts/dist/docs/tech/studio/learning-journeys.docblock.js +57 -0
  51. package/dist/libs/contracts/dist/docs/tech/studio/platform-admin-panel.docblock.js +63 -0
  52. package/dist/libs/contracts/dist/docs/tech/studio/project-access-teams.docblock.js +36 -0
  53. package/dist/libs/contracts/dist/docs/tech/studio/project-routing.docblock.js +1 -0
  54. package/dist/libs/contracts/dist/docs/tech/studio/sandbox-unlogged.docblock.js +20 -0
  55. package/dist/libs/contracts/dist/docs/tech/studio/team-invitations.docblock.js +65 -0
  56. package/dist/libs/contracts/dist/docs/tech/studio/workspace-ops.docblock.js +1 -0
  57. package/dist/libs/contracts/dist/docs/tech/studio/workspaces.docblock.js +41 -0
  58. package/dist/libs/contracts/dist/docs/tech/telemetry-ingest.docblock.js +122 -0
  59. package/dist/libs/contracts/dist/docs/tech/templates/runtime.docblock.js +1 -0
  60. package/dist/libs/contracts/dist/docs/tech/vscode-extension.docblock.js +68 -0
  61. package/dist/libs/contracts/dist/docs/tech/workflows/overview.docblock.js +1 -0
  62. package/dist/libs/contracts/dist/events.js +1 -0
  63. package/dist/libs/contracts/dist/experiments/evaluator.js +1 -0
  64. package/dist/libs/contracts/dist/index.js +1 -0
  65. package/dist/libs/contracts/dist/install.js +1 -0
  66. package/dist/libs/contracts/dist/integrations/contracts.js +1 -0
  67. package/dist/libs/contracts/dist/integrations/index.js +1 -0
  68. package/dist/libs/contracts/dist/integrations/openbanking/contracts/accounts.js +1 -0
  69. package/dist/libs/contracts/dist/integrations/openbanking/contracts/balances.js +1 -0
  70. package/dist/libs/contracts/dist/integrations/openbanking/contracts/index.js +1 -0
  71. package/dist/libs/contracts/dist/integrations/openbanking/contracts/transactions.js +1 -0
  72. package/dist/libs/contracts/dist/integrations/openbanking/models.js +1 -0
  73. package/dist/libs/contracts/dist/integrations/openbanking/telemetry.js +1 -0
  74. package/dist/libs/contracts/dist/integrations/providers/elevenlabs.js +1 -0
  75. package/dist/libs/contracts/dist/integrations/providers/gcs-storage.js +1 -0
  76. package/dist/libs/contracts/dist/integrations/providers/gmail.js +1 -0
  77. package/dist/libs/contracts/dist/integrations/providers/google-calendar.js +1 -0
  78. package/dist/libs/contracts/dist/integrations/providers/index.js +1 -0
  79. package/dist/libs/contracts/dist/integrations/providers/mistral.js +1 -0
  80. package/dist/libs/contracts/dist/integrations/providers/postmark.js +1 -0
  81. package/dist/libs/contracts/dist/integrations/providers/powens.js +1 -0
  82. package/dist/libs/contracts/dist/integrations/providers/qdrant.js +1 -0
  83. package/dist/libs/contracts/dist/integrations/providers/registry.js +1 -0
  84. package/dist/libs/contracts/dist/integrations/providers/stripe.js +1 -0
  85. package/dist/libs/contracts/dist/integrations/providers/twilio-sms.js +1 -0
  86. package/dist/libs/contracts/dist/jsonschema.js +1 -0
  87. package/dist/libs/contracts/dist/knowledge/contracts.js +1 -0
  88. package/dist/libs/contracts/dist/knowledge/index.js +1 -0
  89. package/dist/libs/contracts/dist/knowledge/spaces/email-threads.js +1 -0
  90. package/dist/libs/contracts/dist/knowledge/spaces/financial-docs.js +1 -0
  91. package/dist/libs/contracts/dist/knowledge/spaces/financial-overview.js +1 -0
  92. package/dist/libs/contracts/dist/knowledge/spaces/index.js +1 -0
  93. package/dist/libs/contracts/dist/knowledge/spaces/product-canon.js +1 -0
  94. package/dist/libs/contracts/dist/knowledge/spaces/support-faq.js +1 -0
  95. package/dist/libs/contracts/dist/knowledge/spaces/uploaded-docs.js +1 -0
  96. package/dist/libs/contracts/dist/llm/exporters.js +1 -0
  97. package/dist/libs/contracts/dist/llm/index.js +1 -0
  98. package/dist/libs/contracts/dist/llm/prompts.js +1 -0
  99. package/dist/libs/contracts/dist/onboarding-base.js +1 -0
  100. package/dist/libs/contracts/dist/openapi.js +1 -0
  101. package/dist/libs/contracts/dist/ownership.js +1 -0
  102. package/dist/libs/contracts/dist/presentations.js +1 -0
  103. package/dist/libs/contracts/dist/presentations.v2.js +1 -0
  104. package/dist/libs/contracts/dist/prompt.js +1 -0
  105. package/dist/libs/contracts/dist/promptRegistry.js +1 -0
  106. package/dist/libs/contracts/dist/regenerator/index.js +1 -0
  107. package/dist/libs/contracts/dist/regenerator/service.js +1 -0
  108. package/dist/libs/contracts/dist/registry.js +1 -0
  109. package/dist/libs/contracts/dist/resources.js +1 -0
  110. package/dist/libs/contracts/dist/schema/dist/EnumType.js +1 -0
  111. package/dist/libs/contracts/dist/schema/dist/FieldType.js +1 -0
  112. package/dist/libs/contracts/dist/schema/dist/ScalarTypeEnum.js +1 -0
  113. package/dist/libs/contracts/dist/schema/dist/SchemaModel.js +1 -0
  114. package/dist/libs/contracts/dist/schema/dist/entity/defineEntity.js +1 -0
  115. package/dist/libs/contracts/dist/schema/dist/entity/index.js +1 -0
  116. package/dist/libs/contracts/dist/schema/dist/entity/types.js +1 -0
  117. package/dist/libs/contracts/dist/schema/dist/index.js +1 -0
  118. package/dist/libs/contracts/dist/server/graphql-pothos.js +1 -0
  119. package/dist/libs/contracts/dist/server/index.js +1 -0
  120. package/dist/libs/contracts/dist/server/mcp/createMcpServer.js +1 -0
  121. package/dist/libs/contracts/dist/server/mcp/registerPresentations.js +1 -0
  122. package/dist/libs/contracts/dist/server/mcp/registerPrompts.js +1 -0
  123. package/dist/libs/contracts/dist/server/mcp/registerResources.js +1 -0
  124. package/dist/libs/contracts/dist/server/mcp/registerTools.js +1 -0
  125. package/dist/libs/contracts/dist/server/provider-mcp.js +1 -0
  126. package/dist/libs/contracts/dist/server/rest-elysia.js +1 -0
  127. package/dist/libs/contracts/dist/server/rest-express.js +1 -0
  128. package/dist/libs/contracts/dist/server/rest-generic.js +1 -0
  129. package/dist/libs/contracts/dist/server/rest-next-app.js +1 -0
  130. package/dist/libs/contracts/dist/server/rest-next-pages.js +1 -0
  131. package/dist/libs/contracts/dist/spec.js +1 -0
  132. package/dist/libs/contracts/dist/telemetry/index.js +1 -0
  133. package/dist/libs/contracts/dist/telemetry/tracker.js +1 -0
  134. package/dist/libs/contracts/dist/tests/index.js +1 -0
  135. package/dist/libs/contracts/dist/tests/runner.js +1 -0
  136. package/dist/libs/contracts/dist/workflow/index.js +1 -0
  137. package/dist/libs/contracts/dist/workflow/runner.js +1 -0
  138. package/dist/libs/schema/dist/EnumType.js +1 -0
  139. package/dist/libs/schema/dist/FieldType.js +1 -0
  140. package/dist/libs/schema/dist/ScalarTypeEnum.js +1 -0
  141. package/dist/libs/schema/dist/SchemaModel.js +1 -0
  142. package/dist/libs/schema/dist/entity/defineEntity.js +1 -0
  143. package/dist/libs/schema/dist/entity/index.js +1 -0
  144. package/dist/libs/schema/dist/entity/types.js +1 -0
  145. package/dist/libs/schema/dist/index.js +1 -0
  146. package/package.json +5 -5
@@ -1,219 +1,219 @@
1
- import * as _lssm_lib_schema1651 from "@lssm/lib.schema";
1
+ import * as _lssm_lib_schema1344 from "@lssm/lib.schema";
2
2
 
3
3
  //#region src/entities/quiz.d.ts
4
4
  /**
5
5
  * Question type enum.
6
6
  */
7
- declare const QuestionTypeEnum: _lssm_lib_schema1651.EntityEnumDef;
7
+ declare const QuestionTypeEnum: _lssm_lib_schema1344.EntityEnumDef;
8
8
  /**
9
9
  * Quiz status enum.
10
10
  */
11
- declare const QuizStatusEnum: _lssm_lib_schema1651.EntityEnumDef;
11
+ declare const QuizStatusEnum: _lssm_lib_schema1344.EntityEnumDef;
12
12
  /**
13
13
  * Attempt status enum.
14
14
  */
15
- declare const AttemptStatusEnum: _lssm_lib_schema1651.EntityEnumDef;
15
+ declare const AttemptStatusEnum: _lssm_lib_schema1344.EntityEnumDef;
16
16
  /**
17
17
  * Quiz entity - assessment for a lesson.
18
18
  */
19
- declare const QuizEntity: _lssm_lib_schema1651.EntitySpec<{
20
- id: _lssm_lib_schema1651.EntityScalarField;
21
- lessonId: _lssm_lib_schema1651.EntityScalarField;
22
- title: _lssm_lib_schema1651.EntityScalarField;
23
- description: _lssm_lib_schema1651.EntityScalarField;
24
- instructions: _lssm_lib_schema1651.EntityScalarField;
25
- passingScore: _lssm_lib_schema1651.EntityScalarField;
26
- timeLimit: _lssm_lib_schema1651.EntityScalarField;
27
- maxAttempts: _lssm_lib_schema1651.EntityScalarField;
28
- shuffleQuestions: _lssm_lib_schema1651.EntityScalarField;
29
- shuffleOptions: _lssm_lib_schema1651.EntityScalarField;
30
- showCorrectAnswers: _lssm_lib_schema1651.EntityScalarField;
31
- showExplanations: _lssm_lib_schema1651.EntityScalarField;
32
- status: _lssm_lib_schema1651.EntityEnumField;
33
- totalPoints: _lssm_lib_schema1651.EntityScalarField;
34
- xpReward: _lssm_lib_schema1651.EntityScalarField;
35
- orgId: _lssm_lib_schema1651.EntityScalarField;
36
- metadata: _lssm_lib_schema1651.EntityScalarField;
37
- createdAt: _lssm_lib_schema1651.EntityScalarField;
38
- updatedAt: _lssm_lib_schema1651.EntityScalarField;
39
- lesson: _lssm_lib_schema1651.EntityRelationField;
40
- questions: _lssm_lib_schema1651.EntityRelationField;
41
- attempts: _lssm_lib_schema1651.EntityRelationField;
19
+ declare const QuizEntity: _lssm_lib_schema1344.EntitySpec<{
20
+ id: _lssm_lib_schema1344.EntityScalarField;
21
+ lessonId: _lssm_lib_schema1344.EntityScalarField;
22
+ title: _lssm_lib_schema1344.EntityScalarField;
23
+ description: _lssm_lib_schema1344.EntityScalarField;
24
+ instructions: _lssm_lib_schema1344.EntityScalarField;
25
+ passingScore: _lssm_lib_schema1344.EntityScalarField;
26
+ timeLimit: _lssm_lib_schema1344.EntityScalarField;
27
+ maxAttempts: _lssm_lib_schema1344.EntityScalarField;
28
+ shuffleQuestions: _lssm_lib_schema1344.EntityScalarField;
29
+ shuffleOptions: _lssm_lib_schema1344.EntityScalarField;
30
+ showCorrectAnswers: _lssm_lib_schema1344.EntityScalarField;
31
+ showExplanations: _lssm_lib_schema1344.EntityScalarField;
32
+ status: _lssm_lib_schema1344.EntityEnumField;
33
+ totalPoints: _lssm_lib_schema1344.EntityScalarField;
34
+ xpReward: _lssm_lib_schema1344.EntityScalarField;
35
+ orgId: _lssm_lib_schema1344.EntityScalarField;
36
+ metadata: _lssm_lib_schema1344.EntityScalarField;
37
+ createdAt: _lssm_lib_schema1344.EntityScalarField;
38
+ updatedAt: _lssm_lib_schema1344.EntityScalarField;
39
+ lesson: _lssm_lib_schema1344.EntityRelationField;
40
+ questions: _lssm_lib_schema1344.EntityRelationField;
41
+ attempts: _lssm_lib_schema1344.EntityRelationField;
42
42
  }>;
43
43
  /**
44
44
  * Question entity - individual quiz question.
45
45
  */
46
- declare const QuestionEntity: _lssm_lib_schema1651.EntitySpec<{
47
- id: _lssm_lib_schema1651.EntityScalarField;
48
- quizId: _lssm_lib_schema1651.EntityScalarField;
49
- type: _lssm_lib_schema1651.EntityEnumField;
50
- content: _lssm_lib_schema1651.EntityScalarField;
51
- mediaUrl: _lssm_lib_schema1651.EntityScalarField;
52
- points: _lssm_lib_schema1651.EntityScalarField;
53
- codeLanguage: _lssm_lib_schema1651.EntityScalarField;
54
- codeTemplate: _lssm_lib_schema1651.EntityScalarField;
55
- testCases: _lssm_lib_schema1651.EntityScalarField;
56
- explanation: _lssm_lib_schema1651.EntityScalarField;
57
- hint: _lssm_lib_schema1651.EntityScalarField;
58
- order: _lssm_lib_schema1651.EntityScalarField;
59
- skillId: _lssm_lib_schema1651.EntityScalarField;
60
- metadata: _lssm_lib_schema1651.EntityScalarField;
61
- createdAt: _lssm_lib_schema1651.EntityScalarField;
62
- updatedAt: _lssm_lib_schema1651.EntityScalarField;
63
- quiz: _lssm_lib_schema1651.EntityRelationField;
64
- options: _lssm_lib_schema1651.EntityRelationField;
46
+ declare const QuestionEntity: _lssm_lib_schema1344.EntitySpec<{
47
+ id: _lssm_lib_schema1344.EntityScalarField;
48
+ quizId: _lssm_lib_schema1344.EntityScalarField;
49
+ type: _lssm_lib_schema1344.EntityEnumField;
50
+ content: _lssm_lib_schema1344.EntityScalarField;
51
+ mediaUrl: _lssm_lib_schema1344.EntityScalarField;
52
+ points: _lssm_lib_schema1344.EntityScalarField;
53
+ codeLanguage: _lssm_lib_schema1344.EntityScalarField;
54
+ codeTemplate: _lssm_lib_schema1344.EntityScalarField;
55
+ testCases: _lssm_lib_schema1344.EntityScalarField;
56
+ explanation: _lssm_lib_schema1344.EntityScalarField;
57
+ hint: _lssm_lib_schema1344.EntityScalarField;
58
+ order: _lssm_lib_schema1344.EntityScalarField;
59
+ skillId: _lssm_lib_schema1344.EntityScalarField;
60
+ metadata: _lssm_lib_schema1344.EntityScalarField;
61
+ createdAt: _lssm_lib_schema1344.EntityScalarField;
62
+ updatedAt: _lssm_lib_schema1344.EntityScalarField;
63
+ quiz: _lssm_lib_schema1344.EntityRelationField;
64
+ options: _lssm_lib_schema1344.EntityRelationField;
65
65
  }>;
66
66
  /**
67
67
  * QuestionOption entity - answer option for a question.
68
68
  */
69
- declare const QuestionOptionEntity: _lssm_lib_schema1651.EntitySpec<{
70
- id: _lssm_lib_schema1651.EntityScalarField;
71
- questionId: _lssm_lib_schema1651.EntityScalarField;
72
- content: _lssm_lib_schema1651.EntityScalarField;
73
- matchContent: _lssm_lib_schema1651.EntityScalarField;
74
- isCorrect: _lssm_lib_schema1651.EntityScalarField;
75
- feedback: _lssm_lib_schema1651.EntityScalarField;
76
- order: _lssm_lib_schema1651.EntityScalarField;
77
- metadata: _lssm_lib_schema1651.EntityScalarField;
78
- createdAt: _lssm_lib_schema1651.EntityScalarField;
79
- updatedAt: _lssm_lib_schema1651.EntityScalarField;
80
- question: _lssm_lib_schema1651.EntityRelationField;
69
+ declare const QuestionOptionEntity: _lssm_lib_schema1344.EntitySpec<{
70
+ id: _lssm_lib_schema1344.EntityScalarField;
71
+ questionId: _lssm_lib_schema1344.EntityScalarField;
72
+ content: _lssm_lib_schema1344.EntityScalarField;
73
+ matchContent: _lssm_lib_schema1344.EntityScalarField;
74
+ isCorrect: _lssm_lib_schema1344.EntityScalarField;
75
+ feedback: _lssm_lib_schema1344.EntityScalarField;
76
+ order: _lssm_lib_schema1344.EntityScalarField;
77
+ metadata: _lssm_lib_schema1344.EntityScalarField;
78
+ createdAt: _lssm_lib_schema1344.EntityScalarField;
79
+ updatedAt: _lssm_lib_schema1344.EntityScalarField;
80
+ question: _lssm_lib_schema1344.EntityRelationField;
81
81
  }>;
82
82
  /**
83
83
  * QuizAttempt entity - a learner's quiz attempt.
84
84
  */
85
- declare const QuizAttemptEntity: _lssm_lib_schema1651.EntitySpec<{
86
- id: _lssm_lib_schema1651.EntityScalarField;
87
- learnerId: _lssm_lib_schema1651.EntityScalarField;
88
- quizId: _lssm_lib_schema1651.EntityScalarField;
89
- status: _lssm_lib_schema1651.EntityEnumField;
90
- score: _lssm_lib_schema1651.EntityScalarField;
91
- percentageScore: _lssm_lib_schema1651.EntityScalarField;
92
- passed: _lssm_lib_schema1651.EntityScalarField;
93
- totalQuestions: _lssm_lib_schema1651.EntityScalarField;
94
- answeredQuestions: _lssm_lib_schema1651.EntityScalarField;
95
- correctAnswers: _lssm_lib_schema1651.EntityScalarField;
96
- answers: _lssm_lib_schema1651.EntityScalarField;
97
- xpEarned: _lssm_lib_schema1651.EntityScalarField;
98
- timeSpent: _lssm_lib_schema1651.EntityScalarField;
99
- startedAt: _lssm_lib_schema1651.EntityScalarField;
100
- completedAt: _lssm_lib_schema1651.EntityScalarField;
101
- attemptNumber: _lssm_lib_schema1651.EntityScalarField;
102
- metadata: _lssm_lib_schema1651.EntityScalarField;
103
- createdAt: _lssm_lib_schema1651.EntityScalarField;
104
- updatedAt: _lssm_lib_schema1651.EntityScalarField;
105
- learner: _lssm_lib_schema1651.EntityRelationField;
106
- quiz: _lssm_lib_schema1651.EntityRelationField;
85
+ declare const QuizAttemptEntity: _lssm_lib_schema1344.EntitySpec<{
86
+ id: _lssm_lib_schema1344.EntityScalarField;
87
+ learnerId: _lssm_lib_schema1344.EntityScalarField;
88
+ quizId: _lssm_lib_schema1344.EntityScalarField;
89
+ status: _lssm_lib_schema1344.EntityEnumField;
90
+ score: _lssm_lib_schema1344.EntityScalarField;
91
+ percentageScore: _lssm_lib_schema1344.EntityScalarField;
92
+ passed: _lssm_lib_schema1344.EntityScalarField;
93
+ totalQuestions: _lssm_lib_schema1344.EntityScalarField;
94
+ answeredQuestions: _lssm_lib_schema1344.EntityScalarField;
95
+ correctAnswers: _lssm_lib_schema1344.EntityScalarField;
96
+ answers: _lssm_lib_schema1344.EntityScalarField;
97
+ xpEarned: _lssm_lib_schema1344.EntityScalarField;
98
+ timeSpent: _lssm_lib_schema1344.EntityScalarField;
99
+ startedAt: _lssm_lib_schema1344.EntityScalarField;
100
+ completedAt: _lssm_lib_schema1344.EntityScalarField;
101
+ attemptNumber: _lssm_lib_schema1344.EntityScalarField;
102
+ metadata: _lssm_lib_schema1344.EntityScalarField;
103
+ createdAt: _lssm_lib_schema1344.EntityScalarField;
104
+ updatedAt: _lssm_lib_schema1344.EntityScalarField;
105
+ learner: _lssm_lib_schema1344.EntityRelationField;
106
+ quiz: _lssm_lib_schema1344.EntityRelationField;
107
107
  }>;
108
108
  /**
109
109
  * SkillAssessment entity - maps quiz performance to skills.
110
110
  */
111
- declare const SkillAssessmentEntity: _lssm_lib_schema1651.EntitySpec<{
112
- id: _lssm_lib_schema1651.EntityScalarField;
113
- learnerId: _lssm_lib_schema1651.EntityScalarField;
114
- skillId: _lssm_lib_schema1651.EntityScalarField;
115
- skillName: _lssm_lib_schema1651.EntityScalarField;
116
- level: _lssm_lib_schema1651.EntityScalarField;
117
- score: _lssm_lib_schema1651.EntityScalarField;
118
- confidence: _lssm_lib_schema1651.EntityScalarField;
119
- questionsAnswered: _lssm_lib_schema1651.EntityScalarField;
120
- questionsCorrect: _lssm_lib_schema1651.EntityScalarField;
121
- assessedAt: _lssm_lib_schema1651.EntityScalarField;
122
- createdAt: _lssm_lib_schema1651.EntityScalarField;
123
- updatedAt: _lssm_lib_schema1651.EntityScalarField;
124
- learner: _lssm_lib_schema1651.EntityRelationField;
111
+ declare const SkillAssessmentEntity: _lssm_lib_schema1344.EntitySpec<{
112
+ id: _lssm_lib_schema1344.EntityScalarField;
113
+ learnerId: _lssm_lib_schema1344.EntityScalarField;
114
+ skillId: _lssm_lib_schema1344.EntityScalarField;
115
+ skillName: _lssm_lib_schema1344.EntityScalarField;
116
+ level: _lssm_lib_schema1344.EntityScalarField;
117
+ score: _lssm_lib_schema1344.EntityScalarField;
118
+ confidence: _lssm_lib_schema1344.EntityScalarField;
119
+ questionsAnswered: _lssm_lib_schema1344.EntityScalarField;
120
+ questionsCorrect: _lssm_lib_schema1344.EntityScalarField;
121
+ assessedAt: _lssm_lib_schema1344.EntityScalarField;
122
+ createdAt: _lssm_lib_schema1344.EntityScalarField;
123
+ updatedAt: _lssm_lib_schema1344.EntityScalarField;
124
+ learner: _lssm_lib_schema1344.EntityRelationField;
125
125
  }>;
126
- declare const quizEntities: (_lssm_lib_schema1651.EntitySpec<{
127
- id: _lssm_lib_schema1651.EntityScalarField;
128
- lessonId: _lssm_lib_schema1651.EntityScalarField;
129
- title: _lssm_lib_schema1651.EntityScalarField;
130
- description: _lssm_lib_schema1651.EntityScalarField;
131
- instructions: _lssm_lib_schema1651.EntityScalarField;
132
- passingScore: _lssm_lib_schema1651.EntityScalarField;
133
- timeLimit: _lssm_lib_schema1651.EntityScalarField;
134
- maxAttempts: _lssm_lib_schema1651.EntityScalarField;
135
- shuffleQuestions: _lssm_lib_schema1651.EntityScalarField;
136
- shuffleOptions: _lssm_lib_schema1651.EntityScalarField;
137
- showCorrectAnswers: _lssm_lib_schema1651.EntityScalarField;
138
- showExplanations: _lssm_lib_schema1651.EntityScalarField;
139
- status: _lssm_lib_schema1651.EntityEnumField;
140
- totalPoints: _lssm_lib_schema1651.EntityScalarField;
141
- xpReward: _lssm_lib_schema1651.EntityScalarField;
142
- orgId: _lssm_lib_schema1651.EntityScalarField;
143
- metadata: _lssm_lib_schema1651.EntityScalarField;
144
- createdAt: _lssm_lib_schema1651.EntityScalarField;
145
- updatedAt: _lssm_lib_schema1651.EntityScalarField;
146
- lesson: _lssm_lib_schema1651.EntityRelationField;
147
- questions: _lssm_lib_schema1651.EntityRelationField;
148
- attempts: _lssm_lib_schema1651.EntityRelationField;
149
- }> | _lssm_lib_schema1651.EntitySpec<{
150
- id: _lssm_lib_schema1651.EntityScalarField;
151
- quizId: _lssm_lib_schema1651.EntityScalarField;
152
- type: _lssm_lib_schema1651.EntityEnumField;
153
- content: _lssm_lib_schema1651.EntityScalarField;
154
- mediaUrl: _lssm_lib_schema1651.EntityScalarField;
155
- points: _lssm_lib_schema1651.EntityScalarField;
156
- codeLanguage: _lssm_lib_schema1651.EntityScalarField;
157
- codeTemplate: _lssm_lib_schema1651.EntityScalarField;
158
- testCases: _lssm_lib_schema1651.EntityScalarField;
159
- explanation: _lssm_lib_schema1651.EntityScalarField;
160
- hint: _lssm_lib_schema1651.EntityScalarField;
161
- order: _lssm_lib_schema1651.EntityScalarField;
162
- skillId: _lssm_lib_schema1651.EntityScalarField;
163
- metadata: _lssm_lib_schema1651.EntityScalarField;
164
- createdAt: _lssm_lib_schema1651.EntityScalarField;
165
- updatedAt: _lssm_lib_schema1651.EntityScalarField;
166
- quiz: _lssm_lib_schema1651.EntityRelationField;
167
- options: _lssm_lib_schema1651.EntityRelationField;
168
- }> | _lssm_lib_schema1651.EntitySpec<{
169
- id: _lssm_lib_schema1651.EntityScalarField;
170
- questionId: _lssm_lib_schema1651.EntityScalarField;
171
- content: _lssm_lib_schema1651.EntityScalarField;
172
- matchContent: _lssm_lib_schema1651.EntityScalarField;
173
- isCorrect: _lssm_lib_schema1651.EntityScalarField;
174
- feedback: _lssm_lib_schema1651.EntityScalarField;
175
- order: _lssm_lib_schema1651.EntityScalarField;
176
- metadata: _lssm_lib_schema1651.EntityScalarField;
177
- createdAt: _lssm_lib_schema1651.EntityScalarField;
178
- updatedAt: _lssm_lib_schema1651.EntityScalarField;
179
- question: _lssm_lib_schema1651.EntityRelationField;
180
- }> | _lssm_lib_schema1651.EntitySpec<{
181
- id: _lssm_lib_schema1651.EntityScalarField;
182
- learnerId: _lssm_lib_schema1651.EntityScalarField;
183
- quizId: _lssm_lib_schema1651.EntityScalarField;
184
- status: _lssm_lib_schema1651.EntityEnumField;
185
- score: _lssm_lib_schema1651.EntityScalarField;
186
- percentageScore: _lssm_lib_schema1651.EntityScalarField;
187
- passed: _lssm_lib_schema1651.EntityScalarField;
188
- totalQuestions: _lssm_lib_schema1651.EntityScalarField;
189
- answeredQuestions: _lssm_lib_schema1651.EntityScalarField;
190
- correctAnswers: _lssm_lib_schema1651.EntityScalarField;
191
- answers: _lssm_lib_schema1651.EntityScalarField;
192
- xpEarned: _lssm_lib_schema1651.EntityScalarField;
193
- timeSpent: _lssm_lib_schema1651.EntityScalarField;
194
- startedAt: _lssm_lib_schema1651.EntityScalarField;
195
- completedAt: _lssm_lib_schema1651.EntityScalarField;
196
- attemptNumber: _lssm_lib_schema1651.EntityScalarField;
197
- metadata: _lssm_lib_schema1651.EntityScalarField;
198
- createdAt: _lssm_lib_schema1651.EntityScalarField;
199
- updatedAt: _lssm_lib_schema1651.EntityScalarField;
200
- learner: _lssm_lib_schema1651.EntityRelationField;
201
- quiz: _lssm_lib_schema1651.EntityRelationField;
202
- }> | _lssm_lib_schema1651.EntitySpec<{
203
- id: _lssm_lib_schema1651.EntityScalarField;
204
- learnerId: _lssm_lib_schema1651.EntityScalarField;
205
- skillId: _lssm_lib_schema1651.EntityScalarField;
206
- skillName: _lssm_lib_schema1651.EntityScalarField;
207
- level: _lssm_lib_schema1651.EntityScalarField;
208
- score: _lssm_lib_schema1651.EntityScalarField;
209
- confidence: _lssm_lib_schema1651.EntityScalarField;
210
- questionsAnswered: _lssm_lib_schema1651.EntityScalarField;
211
- questionsCorrect: _lssm_lib_schema1651.EntityScalarField;
212
- assessedAt: _lssm_lib_schema1651.EntityScalarField;
213
- createdAt: _lssm_lib_schema1651.EntityScalarField;
214
- updatedAt: _lssm_lib_schema1651.EntityScalarField;
215
- learner: _lssm_lib_schema1651.EntityRelationField;
126
+ declare const quizEntities: (_lssm_lib_schema1344.EntitySpec<{
127
+ id: _lssm_lib_schema1344.EntityScalarField;
128
+ lessonId: _lssm_lib_schema1344.EntityScalarField;
129
+ title: _lssm_lib_schema1344.EntityScalarField;
130
+ description: _lssm_lib_schema1344.EntityScalarField;
131
+ instructions: _lssm_lib_schema1344.EntityScalarField;
132
+ passingScore: _lssm_lib_schema1344.EntityScalarField;
133
+ timeLimit: _lssm_lib_schema1344.EntityScalarField;
134
+ maxAttempts: _lssm_lib_schema1344.EntityScalarField;
135
+ shuffleQuestions: _lssm_lib_schema1344.EntityScalarField;
136
+ shuffleOptions: _lssm_lib_schema1344.EntityScalarField;
137
+ showCorrectAnswers: _lssm_lib_schema1344.EntityScalarField;
138
+ showExplanations: _lssm_lib_schema1344.EntityScalarField;
139
+ status: _lssm_lib_schema1344.EntityEnumField;
140
+ totalPoints: _lssm_lib_schema1344.EntityScalarField;
141
+ xpReward: _lssm_lib_schema1344.EntityScalarField;
142
+ orgId: _lssm_lib_schema1344.EntityScalarField;
143
+ metadata: _lssm_lib_schema1344.EntityScalarField;
144
+ createdAt: _lssm_lib_schema1344.EntityScalarField;
145
+ updatedAt: _lssm_lib_schema1344.EntityScalarField;
146
+ lesson: _lssm_lib_schema1344.EntityRelationField;
147
+ questions: _lssm_lib_schema1344.EntityRelationField;
148
+ attempts: _lssm_lib_schema1344.EntityRelationField;
149
+ }> | _lssm_lib_schema1344.EntitySpec<{
150
+ id: _lssm_lib_schema1344.EntityScalarField;
151
+ quizId: _lssm_lib_schema1344.EntityScalarField;
152
+ type: _lssm_lib_schema1344.EntityEnumField;
153
+ content: _lssm_lib_schema1344.EntityScalarField;
154
+ mediaUrl: _lssm_lib_schema1344.EntityScalarField;
155
+ points: _lssm_lib_schema1344.EntityScalarField;
156
+ codeLanguage: _lssm_lib_schema1344.EntityScalarField;
157
+ codeTemplate: _lssm_lib_schema1344.EntityScalarField;
158
+ testCases: _lssm_lib_schema1344.EntityScalarField;
159
+ explanation: _lssm_lib_schema1344.EntityScalarField;
160
+ hint: _lssm_lib_schema1344.EntityScalarField;
161
+ order: _lssm_lib_schema1344.EntityScalarField;
162
+ skillId: _lssm_lib_schema1344.EntityScalarField;
163
+ metadata: _lssm_lib_schema1344.EntityScalarField;
164
+ createdAt: _lssm_lib_schema1344.EntityScalarField;
165
+ updatedAt: _lssm_lib_schema1344.EntityScalarField;
166
+ quiz: _lssm_lib_schema1344.EntityRelationField;
167
+ options: _lssm_lib_schema1344.EntityRelationField;
168
+ }> | _lssm_lib_schema1344.EntitySpec<{
169
+ id: _lssm_lib_schema1344.EntityScalarField;
170
+ questionId: _lssm_lib_schema1344.EntityScalarField;
171
+ content: _lssm_lib_schema1344.EntityScalarField;
172
+ matchContent: _lssm_lib_schema1344.EntityScalarField;
173
+ isCorrect: _lssm_lib_schema1344.EntityScalarField;
174
+ feedback: _lssm_lib_schema1344.EntityScalarField;
175
+ order: _lssm_lib_schema1344.EntityScalarField;
176
+ metadata: _lssm_lib_schema1344.EntityScalarField;
177
+ createdAt: _lssm_lib_schema1344.EntityScalarField;
178
+ updatedAt: _lssm_lib_schema1344.EntityScalarField;
179
+ question: _lssm_lib_schema1344.EntityRelationField;
180
+ }> | _lssm_lib_schema1344.EntitySpec<{
181
+ id: _lssm_lib_schema1344.EntityScalarField;
182
+ learnerId: _lssm_lib_schema1344.EntityScalarField;
183
+ quizId: _lssm_lib_schema1344.EntityScalarField;
184
+ status: _lssm_lib_schema1344.EntityEnumField;
185
+ score: _lssm_lib_schema1344.EntityScalarField;
186
+ percentageScore: _lssm_lib_schema1344.EntityScalarField;
187
+ passed: _lssm_lib_schema1344.EntityScalarField;
188
+ totalQuestions: _lssm_lib_schema1344.EntityScalarField;
189
+ answeredQuestions: _lssm_lib_schema1344.EntityScalarField;
190
+ correctAnswers: _lssm_lib_schema1344.EntityScalarField;
191
+ answers: _lssm_lib_schema1344.EntityScalarField;
192
+ xpEarned: _lssm_lib_schema1344.EntityScalarField;
193
+ timeSpent: _lssm_lib_schema1344.EntityScalarField;
194
+ startedAt: _lssm_lib_schema1344.EntityScalarField;
195
+ completedAt: _lssm_lib_schema1344.EntityScalarField;
196
+ attemptNumber: _lssm_lib_schema1344.EntityScalarField;
197
+ metadata: _lssm_lib_schema1344.EntityScalarField;
198
+ createdAt: _lssm_lib_schema1344.EntityScalarField;
199
+ updatedAt: _lssm_lib_schema1344.EntityScalarField;
200
+ learner: _lssm_lib_schema1344.EntityRelationField;
201
+ quiz: _lssm_lib_schema1344.EntityRelationField;
202
+ }> | _lssm_lib_schema1344.EntitySpec<{
203
+ id: _lssm_lib_schema1344.EntityScalarField;
204
+ learnerId: _lssm_lib_schema1344.EntityScalarField;
205
+ skillId: _lssm_lib_schema1344.EntityScalarField;
206
+ skillName: _lssm_lib_schema1344.EntityScalarField;
207
+ level: _lssm_lib_schema1344.EntityScalarField;
208
+ score: _lssm_lib_schema1344.EntityScalarField;
209
+ confidence: _lssm_lib_schema1344.EntityScalarField;
210
+ questionsAnswered: _lssm_lib_schema1344.EntityScalarField;
211
+ questionsCorrect: _lssm_lib_schema1344.EntityScalarField;
212
+ assessedAt: _lssm_lib_schema1344.EntityScalarField;
213
+ createdAt: _lssm_lib_schema1344.EntityScalarField;
214
+ updatedAt: _lssm_lib_schema1344.EntityScalarField;
215
+ learner: _lssm_lib_schema1344.EntityRelationField;
216
216
  }>)[];
217
- declare const quizEnums: _lssm_lib_schema1651.EntityEnumDef[];
217
+ declare const quizEnums: _lssm_lib_schema1344.EntityEnumDef[];
218
218
  //#endregion
219
219
  export { AttemptStatusEnum, QuestionEntity, QuestionOptionEntity, QuestionTypeEnum, QuizAttemptEntity, QuizEntity, QuizStatusEnum, SkillAssessmentEntity, quizEntities, quizEnums };
@@ -1 +1 @@
1
- import{defineEntity as e,defineEntityEnum as t,field as n,index as r}from"@lssm/lib.schema";const i=t({name:`QuestionType`,values:[`MULTIPLE_CHOICE`,`TRUE_FALSE`,`FILL_BLANK`,`MATCHING`,`SHORT_ANSWER`,`CODE`],schema:`lssm_learning`,description:`Type of quiz question.`}),a=t({name:`QuizStatus`,values:[`DRAFT`,`PUBLISHED`,`ARCHIVED`],schema:`lssm_learning`,description:`Publication status of a quiz.`}),o=t({name:`AttemptStatus`,values:[`IN_PROGRESS`,`COMPLETED`,`TIMED_OUT`,`ABANDONED`],schema:`lssm_learning`,description:`Status of a quiz attempt.`}),s=e({name:`Quiz`,description:`A quiz assessment.`,schema:`lssm_learning`,map:`quiz`,fields:{id:n.id({description:`Unique quiz identifier`}),lessonId:n.foreignKey({isOptional:!0,description:`Associated lesson`}),title:n.string({description:`Quiz title`}),description:n.string({isOptional:!0,description:`Quiz description`}),instructions:n.string({isOptional:!0,description:`Quiz instructions`}),passingScore:n.int({default:70,description:`Passing score percentage`}),timeLimit:n.int({isOptional:!0,description:`Time limit in seconds`}),maxAttempts:n.int({isOptional:!0,description:`Maximum attempts allowed`}),shuffleQuestions:n.boolean({default:!1,description:`Shuffle question order`}),shuffleOptions:n.boolean({default:!1,description:`Shuffle answer options`}),showCorrectAnswers:n.boolean({default:!0,description:`Show correct answers after`}),showExplanations:n.boolean({default:!0,description:`Show explanations after`}),status:n.enum(`QuizStatus`,{default:`DRAFT`,description:`Publication status`}),totalPoints:n.int({default:0,description:`Total points available`}),xpReward:n.int({default:20,description:`XP for passing`}),orgId:n.string({isOptional:!0,description:`Organization scope`}),metadata:n.json({isOptional:!0,description:`Additional metadata`}),createdAt:n.createdAt(),updatedAt:n.updatedAt(),lesson:n.belongsTo(`Lesson`,[`lessonId`],[`id`],{onDelete:`Cascade`}),questions:n.hasMany(`Question`),attempts:n.hasMany(`QuizAttempt`)},indexes:[r.on([`lessonId`]),r.on([`status`]),r.on([`orgId`])],enums:[a]}),c=e({name:`Question`,description:`A quiz question.`,schema:`lssm_learning`,map:`question`,fields:{id:n.id({description:`Unique question identifier`}),quizId:n.foreignKey({description:`Parent quiz`}),type:n.enum(`QuestionType`,{description:`Question type`}),content:n.string({description:`Question text`}),mediaUrl:n.string({isOptional:!0,description:`Question media`}),points:n.int({default:1,description:`Points for correct answer`}),codeLanguage:n.string({isOptional:!0,description:`Programming language`}),codeTemplate:n.string({isOptional:!0,description:`Starter code template`}),testCases:n.json({isOptional:!0,description:`Test cases for code validation`}),explanation:n.string({isOptional:!0,description:`Explanation of correct answer`}),hint:n.string({isOptional:!0,description:`Hint for the question`}),order:n.int({default:0,description:`Display order`}),skillId:n.string({isOptional:!0,description:`Associated skill`}),metadata:n.json({isOptional:!0,description:`Additional metadata`}),createdAt:n.createdAt(),updatedAt:n.updatedAt(),quiz:n.belongsTo(`Quiz`,[`quizId`],[`id`],{onDelete:`Cascade`}),options:n.hasMany(`QuestionOption`)},indexes:[r.on([`quizId`,`order`]),r.on([`type`]),r.on([`skillId`])],enums:[i]}),l=e({name:`QuestionOption`,description:`An answer option for a question.`,schema:`lssm_learning`,map:`question_option`,fields:{id:n.id({description:`Unique option identifier`}),questionId:n.foreignKey({description:`Parent question`}),content:n.string({description:`Option text`}),matchContent:n.string({isOptional:!0,description:`Match pair content`}),isCorrect:n.boolean({default:!1,description:`Whether option is correct`}),feedback:n.string({isOptional:!0,description:`Feedback when selected`}),order:n.int({default:0,description:`Display order`}),metadata:n.json({isOptional:!0,description:`Additional metadata`}),createdAt:n.createdAt(),updatedAt:n.updatedAt(),question:n.belongsTo(`Question`,[`questionId`],[`id`],{onDelete:`Cascade`})},indexes:[r.on([`questionId`,`order`])]}),u=e({name:`QuizAttempt`,description:`A learner quiz attempt.`,schema:`lssm_learning`,map:`quiz_attempt`,fields:{id:n.id({description:`Unique attempt identifier`}),learnerId:n.foreignKey({description:`Learner`}),quizId:n.foreignKey({description:`Quiz`}),status:n.enum(`AttemptStatus`,{default:`IN_PROGRESS`,description:`Attempt status`}),score:n.int({isOptional:!0,description:`Score achieved`}),percentageScore:n.int({isOptional:!0,description:`Percentage score`}),passed:n.boolean({isOptional:!0,description:`Whether passed`}),totalQuestions:n.int({default:0,description:`Total questions`}),answeredQuestions:n.int({default:0,description:`Questions answered`}),correctAnswers:n.int({default:0,description:`Correct answers`}),answers:n.json({isOptional:!0,description:`Submitted answers`}),xpEarned:n.int({default:0,description:`XP earned`}),timeSpent:n.int({default:0,description:`Time spent in seconds`}),startedAt:n.dateTime({description:`When started`}),completedAt:n.dateTime({isOptional:!0,description:`When completed`}),attemptNumber:n.int({default:1,description:`Which attempt this is`}),metadata:n.json({isOptional:!0,description:`Additional metadata`}),createdAt:n.createdAt(),updatedAt:n.updatedAt(),learner:n.belongsTo(`Learner`,[`learnerId`],[`id`],{onDelete:`Cascade`}),quiz:n.belongsTo(`Quiz`,[`quizId`],[`id`],{onDelete:`Cascade`})},indexes:[r.on([`learnerId`,`quizId`]),r.on([`learnerId`,`status`]),r.on([`quizId`,`status`])],enums:[o]}),d=e({name:`SkillAssessment`,description:`Assessment of a skill based on quiz performance.`,schema:`lssm_learning`,map:`skill_assessment`,fields:{id:n.id({description:`Unique assessment identifier`}),learnerId:n.foreignKey({description:`Learner`}),skillId:n.string({description:`Skill identifier`}),skillName:n.string({description:`Skill name`}),level:n.int({default:1,description:`Proficiency level (1-5)`}),score:n.int({default:0,description:`Assessment score (0-100)`}),confidence:n.decimal({default:.5,description:`Confidence in assessment`}),questionsAnswered:n.int({default:0,description:`Total questions answered`}),questionsCorrect:n.int({default:0,description:`Total correct`}),assessedAt:n.dateTime({description:`Last assessment time`}),createdAt:n.createdAt(),updatedAt:n.updatedAt(),learner:n.belongsTo(`Learner`,[`learnerId`],[`id`],{onDelete:`Cascade`})},indexes:[r.unique([`learnerId`,`skillId`],{name:`skill_assessment_unique`}),r.on([`learnerId`,`level`]),r.on([`skillId`])]}),f=[s,c,l,u,d],p=[i,a,o];export{o as AttemptStatusEnum,c as QuestionEntity,l as QuestionOptionEntity,i as QuestionTypeEnum,u as QuizAttemptEntity,s as QuizEntity,a as QuizStatusEnum,d as SkillAssessmentEntity,f as quizEntities,p as quizEnums};
1
+ import{i as e,n as t,r as n,t as r}from"../libs/schema/dist/entity/defineEntity.js";import"../libs/schema/dist/index.js";const i=t({name:`QuestionType`,values:[`MULTIPLE_CHOICE`,`TRUE_FALSE`,`FILL_BLANK`,`MATCHING`,`SHORT_ANSWER`,`CODE`],schema:`lssm_learning`,description:`Type of quiz question.`}),a=t({name:`QuizStatus`,values:[`DRAFT`,`PUBLISHED`,`ARCHIVED`],schema:`lssm_learning`,description:`Publication status of a quiz.`}),o=t({name:`AttemptStatus`,values:[`IN_PROGRESS`,`COMPLETED`,`TIMED_OUT`,`ABANDONED`],schema:`lssm_learning`,description:`Status of a quiz attempt.`}),s=r({name:`Quiz`,description:`A quiz assessment.`,schema:`lssm_learning`,map:`quiz`,fields:{id:n.id({description:`Unique quiz identifier`}),lessonId:n.foreignKey({isOptional:!0,description:`Associated lesson`}),title:n.string({description:`Quiz title`}),description:n.string({isOptional:!0,description:`Quiz description`}),instructions:n.string({isOptional:!0,description:`Quiz instructions`}),passingScore:n.int({default:70,description:`Passing score percentage`}),timeLimit:n.int({isOptional:!0,description:`Time limit in seconds`}),maxAttempts:n.int({isOptional:!0,description:`Maximum attempts allowed`}),shuffleQuestions:n.boolean({default:!1,description:`Shuffle question order`}),shuffleOptions:n.boolean({default:!1,description:`Shuffle answer options`}),showCorrectAnswers:n.boolean({default:!0,description:`Show correct answers after`}),showExplanations:n.boolean({default:!0,description:`Show explanations after`}),status:n.enum(`QuizStatus`,{default:`DRAFT`,description:`Publication status`}),totalPoints:n.int({default:0,description:`Total points available`}),xpReward:n.int({default:20,description:`XP for passing`}),orgId:n.string({isOptional:!0,description:`Organization scope`}),metadata:n.json({isOptional:!0,description:`Additional metadata`}),createdAt:n.createdAt(),updatedAt:n.updatedAt(),lesson:n.belongsTo(`Lesson`,[`lessonId`],[`id`],{onDelete:`Cascade`}),questions:n.hasMany(`Question`),attempts:n.hasMany(`QuizAttempt`)},indexes:[e.on([`lessonId`]),e.on([`status`]),e.on([`orgId`])],enums:[a]}),c=r({name:`Question`,description:`A quiz question.`,schema:`lssm_learning`,map:`question`,fields:{id:n.id({description:`Unique question identifier`}),quizId:n.foreignKey({description:`Parent quiz`}),type:n.enum(`QuestionType`,{description:`Question type`}),content:n.string({description:`Question text`}),mediaUrl:n.string({isOptional:!0,description:`Question media`}),points:n.int({default:1,description:`Points for correct answer`}),codeLanguage:n.string({isOptional:!0,description:`Programming language`}),codeTemplate:n.string({isOptional:!0,description:`Starter code template`}),testCases:n.json({isOptional:!0,description:`Test cases for code validation`}),explanation:n.string({isOptional:!0,description:`Explanation of correct answer`}),hint:n.string({isOptional:!0,description:`Hint for the question`}),order:n.int({default:0,description:`Display order`}),skillId:n.string({isOptional:!0,description:`Associated skill`}),metadata:n.json({isOptional:!0,description:`Additional metadata`}),createdAt:n.createdAt(),updatedAt:n.updatedAt(),quiz:n.belongsTo(`Quiz`,[`quizId`],[`id`],{onDelete:`Cascade`}),options:n.hasMany(`QuestionOption`)},indexes:[e.on([`quizId`,`order`]),e.on([`type`]),e.on([`skillId`])],enums:[i]}),l=r({name:`QuestionOption`,description:`An answer option for a question.`,schema:`lssm_learning`,map:`question_option`,fields:{id:n.id({description:`Unique option identifier`}),questionId:n.foreignKey({description:`Parent question`}),content:n.string({description:`Option text`}),matchContent:n.string({isOptional:!0,description:`Match pair content`}),isCorrect:n.boolean({default:!1,description:`Whether option is correct`}),feedback:n.string({isOptional:!0,description:`Feedback when selected`}),order:n.int({default:0,description:`Display order`}),metadata:n.json({isOptional:!0,description:`Additional metadata`}),createdAt:n.createdAt(),updatedAt:n.updatedAt(),question:n.belongsTo(`Question`,[`questionId`],[`id`],{onDelete:`Cascade`})},indexes:[e.on([`questionId`,`order`])]}),u=r({name:`QuizAttempt`,description:`A learner quiz attempt.`,schema:`lssm_learning`,map:`quiz_attempt`,fields:{id:n.id({description:`Unique attempt identifier`}),learnerId:n.foreignKey({description:`Learner`}),quizId:n.foreignKey({description:`Quiz`}),status:n.enum(`AttemptStatus`,{default:`IN_PROGRESS`,description:`Attempt status`}),score:n.int({isOptional:!0,description:`Score achieved`}),percentageScore:n.int({isOptional:!0,description:`Percentage score`}),passed:n.boolean({isOptional:!0,description:`Whether passed`}),totalQuestions:n.int({default:0,description:`Total questions`}),answeredQuestions:n.int({default:0,description:`Questions answered`}),correctAnswers:n.int({default:0,description:`Correct answers`}),answers:n.json({isOptional:!0,description:`Submitted answers`}),xpEarned:n.int({default:0,description:`XP earned`}),timeSpent:n.int({default:0,description:`Time spent in seconds`}),startedAt:n.dateTime({description:`When started`}),completedAt:n.dateTime({isOptional:!0,description:`When completed`}),attemptNumber:n.int({default:1,description:`Which attempt this is`}),metadata:n.json({isOptional:!0,description:`Additional metadata`}),createdAt:n.createdAt(),updatedAt:n.updatedAt(),learner:n.belongsTo(`Learner`,[`learnerId`],[`id`],{onDelete:`Cascade`}),quiz:n.belongsTo(`Quiz`,[`quizId`],[`id`],{onDelete:`Cascade`})},indexes:[e.on([`learnerId`,`quizId`]),e.on([`learnerId`,`status`]),e.on([`quizId`,`status`])],enums:[o]}),d=r({name:`SkillAssessment`,description:`Assessment of a skill based on quiz performance.`,schema:`lssm_learning`,map:`skill_assessment`,fields:{id:n.id({description:`Unique assessment identifier`}),learnerId:n.foreignKey({description:`Learner`}),skillId:n.string({description:`Skill identifier`}),skillName:n.string({description:`Skill name`}),level:n.int({default:1,description:`Proficiency level (1-5)`}),score:n.int({default:0,description:`Assessment score (0-100)`}),confidence:n.decimal({default:.5,description:`Confidence in assessment`}),questionsAnswered:n.int({default:0,description:`Total questions answered`}),questionsCorrect:n.int({default:0,description:`Total correct`}),assessedAt:n.dateTime({description:`Last assessment time`}),createdAt:n.createdAt(),updatedAt:n.updatedAt(),learner:n.belongsTo(`Learner`,[`learnerId`],[`id`],{onDelete:`Cascade`})},indexes:[e.unique([`learnerId`,`skillId`],{name:`skill_assessment_unique`}),e.on([`learnerId`,`level`]),e.on([`skillId`])]}),f=[s,c,l,u,d],p=[i,a,o];export{o as AttemptStatusEnum,c as QuestionEntity,l as QuestionOptionEntity,i as QuestionTypeEnum,u as QuizAttemptEntity,s as QuizEntity,a as QuizStatusEnum,d as SkillAssessmentEntity,f as quizEntities,p as quizEnums};
package/dist/events.js CHANGED
@@ -1 +1 @@
1
- import{ScalarTypeEnum as e,defineSchemaModel as t}from"@lssm/lib.schema";import{defineEvent as n}from"@lssm/lib.contracts";const r=n({name:`course.published`,version:1,description:`A course has been published.`,payload:t({name:`CoursePublishedEventPayload`,description:`Payload when a course is published`,fields:{courseId:{type:e.String_unsecure(),isOptional:!1},title:{type:e.String_unsecure(),isOptional:!1},authorId:{type:e.String_unsecure(),isOptional:!1},publishedAt:{type:e.DateTime(),isOptional:!1}}})}),i=n({name:`enrollment.created`,version:1,description:`A learner has enrolled in a course.`,payload:t({name:`EnrollmentCreatedEventPayload`,description:`Payload when a learner enrolls in a course`,fields:{enrollmentId:{type:e.String_unsecure(),isOptional:!1},learnerId:{type:e.String_unsecure(),isOptional:!1},courseId:{type:e.String_unsecure(),isOptional:!1},enrolledAt:{type:e.DateTime(),isOptional:!1}}})}),a=n({name:`lesson.completed`,version:1,description:`A learner has completed a lesson.`,payload:t({name:`LessonCompletedEventPayload`,description:`Payload when a lesson is completed`,fields:{learnerId:{type:e.String_unsecure(),isOptional:!1},lessonId:{type:e.String_unsecure(),isOptional:!1},courseId:{type:e.String_unsecure(),isOptional:!1},score:{type:e.Int_unsecure(),isOptional:!0},xpEarned:{type:e.Int_unsecure(),isOptional:!1},timeSpent:{type:e.Int_unsecure(),isOptional:!1},completedAt:{type:e.DateTime(),isOptional:!1}}})}),o=n({name:`course.completed`,version:1,description:`A learner has completed a course.`,payload:t({name:`CourseCompletedEventPayload`,description:`Payload when a course is completed`,fields:{learnerId:{type:e.String_unsecure(),isOptional:!1},courseId:{type:e.String_unsecure(),isOptional:!1},enrollmentId:{type:e.String_unsecure(),isOptional:!1},score:{type:e.Int_unsecure(),isOptional:!0},xpEarned:{type:e.Int_unsecure(),isOptional:!1},certificateId:{type:e.String_unsecure(),isOptional:!0},completedAt:{type:e.DateTime(),isOptional:!1}}})}),s=n({name:`onboarding.started`,version:1,description:`A learner has started onboarding.`,payload:t({name:`OnboardingStartedEventPayload`,description:`Payload when onboarding starts`,fields:{learnerId:{type:e.String_unsecure(),isOptional:!1},trackId:{type:e.String_unsecure(),isOptional:!1},productId:{type:e.String_unsecure(),isOptional:!1},startedAt:{type:e.DateTime(),isOptional:!1}}})}),c=n({name:`onboarding.step_completed`,version:1,description:`An onboarding step has been completed.`,payload:t({name:`OnboardingStepCompletedEventPayload`,description:`Payload when an onboarding step is completed`,fields:{learnerId:{type:e.String_unsecure(),isOptional:!1},trackId:{type:e.String_unsecure(),isOptional:!1},stepId:{type:e.String_unsecure(),isOptional:!1},triggeringEvent:{type:e.String_unsecure(),isOptional:!0},xpEarned:{type:e.Int_unsecure(),isOptional:!1},completedAt:{type:e.DateTime(),isOptional:!1}}})}),l=n({name:`onboarding.completed`,version:1,description:`A learner has completed onboarding.`,payload:t({name:`OnboardingCompletedEventPayload`,description:`Payload when onboarding is completed`,fields:{learnerId:{type:e.String_unsecure(),isOptional:!1},trackId:{type:e.String_unsecure(),isOptional:!1},productId:{type:e.String_unsecure(),isOptional:!1},xpEarned:{type:e.Int_unsecure(),isOptional:!1},completedAt:{type:e.DateTime(),isOptional:!1}}})}),u=n({name:`flashcard.reviewed`,version:1,description:`A flashcard has been reviewed.`,payload:t({name:`CardReviewedEventPayload`,description:`Payload when a flashcard is reviewed`,fields:{learnerId:{type:e.String_unsecure(),isOptional:!1},cardId:{type:e.String_unsecure(),isOptional:!1},deckId:{type:e.String_unsecure(),isOptional:!1},rating:{type:e.String_unsecure(),isOptional:!1},responseTimeMs:{type:e.Int_unsecure(),isOptional:!0},reviewedAt:{type:e.DateTime(),isOptional:!1}}})}),d=n({name:`quiz.started`,version:1,description:`A quiz attempt has started.`,payload:t({name:`QuizStartedEventPayload`,description:`Payload when a quiz is started`,fields:{learnerId:{type:e.String_unsecure(),isOptional:!1},quizId:{type:e.String_unsecure(),isOptional:!1},attemptId:{type:e.String_unsecure(),isOptional:!1},attemptNumber:{type:e.Int_unsecure(),isOptional:!1},startedAt:{type:e.DateTime(),isOptional:!1}}})}),f=n({name:`quiz.completed`,version:1,description:`A quiz attempt has been completed.`,payload:t({name:`QuizCompletedEventPayload`,description:`Payload when a quiz is completed`,fields:{learnerId:{type:e.String_unsecure(),isOptional:!1},quizId:{type:e.String_unsecure(),isOptional:!1},attemptId:{type:e.String_unsecure(),isOptional:!1},score:{type:e.Int_unsecure(),isOptional:!1},percentageScore:{type:e.Int_unsecure(),isOptional:!1},passed:{type:e.Boolean(),isOptional:!1},xpEarned:{type:e.Int_unsecure(),isOptional:!1},timeSpent:{type:e.Int_unsecure(),isOptional:!1},completedAt:{type:e.DateTime(),isOptional:!1}}})}),p=n({name:`xp.earned`,version:1,description:`XP has been earned.`,payload:t({name:`XpEarnedEventPayload`,description:`Payload when XP is earned`,fields:{learnerId:{type:e.String_unsecure(),isOptional:!1},amount:{type:e.Int_unsecure(),isOptional:!1},source:{type:e.String_unsecure(),isOptional:!1},sourceId:{type:e.String_unsecure(),isOptional:!0},totalXp:{type:e.Int_unsecure(),isOptional:!1},earnedAt:{type:e.DateTime(),isOptional:!1}}})}),m=n({name:`level.up`,version:1,description:`A learner has leveled up.`,payload:t({name:`LevelUpEventPayload`,description:`Payload when a learner levels up`,fields:{learnerId:{type:e.String_unsecure(),isOptional:!1},previousLevel:{type:e.Int_unsecure(),isOptional:!1},newLevel:{type:e.Int_unsecure(),isOptional:!1},totalXp:{type:e.Int_unsecure(),isOptional:!1},leveledUpAt:{type:e.DateTime(),isOptional:!1}}})}),h=n({name:`streak.updated`,version:1,description:`A streak has been updated.`,payload:t({name:`StreakUpdatedEventPayload`,description:`Payload when a streak is updated`,fields:{learnerId:{type:e.String_unsecure(),isOptional:!1},previousStreak:{type:e.Int_unsecure(),isOptional:!1},currentStreak:{type:e.Int_unsecure(),isOptional:!1},longestStreak:{type:e.Int_unsecure(),isOptional:!1},freezeUsed:{type:e.Boolean(),isOptional:!1},updatedAt:{type:e.DateTime(),isOptional:!1}}})}),g=n({name:`achievement.unlocked`,version:1,description:`An achievement has been unlocked.`,payload:t({name:`AchievementUnlockedEventPayload`,description:`Payload when an achievement is unlocked`,fields:{learnerId:{type:e.String_unsecure(),isOptional:!1},achievementId:{type:e.String_unsecure(),isOptional:!1},achievementKey:{type:e.String_unsecure(),isOptional:!1},achievementName:{type:e.String_unsecure(),isOptional:!1},xpEarned:{type:e.Int_unsecure(),isOptional:!1},unlockedAt:{type:e.DateTime(),isOptional:!1}}})}),_=n({name:`daily_goal.completed`,version:1,description:`A daily goal has been completed.`,payload:t({name:`DailyGoalCompletedEventPayload`,description:`Payload when a daily goal is completed`,fields:{learnerId:{type:e.String_unsecure(),isOptional:!1},date:{type:e.String_unsecure(),isOptional:!1},targetXp:{type:e.Int_unsecure(),isOptional:!1},actualXp:{type:e.Int_unsecure(),isOptional:!1},completedAt:{type:e.DateTime(),isOptional:!1}}})}),v=n({name:`certificate.issued`,version:1,description:`A certificate has been issued.`,payload:t({name:`CertificateIssuedEventPayload`,description:`Payload when a certificate is issued`,fields:{certificateId:{type:e.String_unsecure(),isOptional:!1},learnerId:{type:e.String_unsecure(),isOptional:!1},courseId:{type:e.String_unsecure(),isOptional:!1},certificateNumber:{type:e.String_unsecure(),isOptional:!1},issuedAt:{type:e.DateTime(),isOptional:!1}}})}),y={CoursePublishedEvent:r,EnrollmentCreatedEvent:i,LessonCompletedEvent:a,CourseCompletedEvent:o,OnboardingStartedEvent:s,OnboardingStepCompletedEvent:c,OnboardingCompletedEvent:l,CardReviewedEvent:u,QuizStartedEvent:d,QuizCompletedEvent:f,XpEarnedEvent:p,LevelUpEvent:m,StreakUpdatedEvent:h,AchievementUnlockedEvent:g,DailyGoalCompletedEvent:_,CertificateIssuedEvent:v};export{g as AchievementUnlockedEvent,u as CardReviewedEvent,v as CertificateIssuedEvent,o as CourseCompletedEvent,r as CoursePublishedEvent,_ as DailyGoalCompletedEvent,i as EnrollmentCreatedEvent,y as LearningJourneyEvents,a as LessonCompletedEvent,m as LevelUpEvent,l as OnboardingCompletedEvent,s as OnboardingStartedEvent,c as OnboardingStepCompletedEvent,f as QuizCompletedEvent,d as QuizStartedEvent,h as StreakUpdatedEvent,p as XpEarnedEvent};
1
+ import{l as e}from"./libs/schema/dist/ScalarTypeEnum.js";import{n as t}from"./libs/schema/dist/SchemaModel.js";import"./libs/schema/dist/index.js";import{e as n}from"./libs/contracts/dist/events.js";import"./libs/contracts/dist/index.js";const r=n({name:`course.published`,version:1,description:`A course has been published.`,payload:t({name:`CoursePublishedEventPayload`,description:`Payload when a course is published`,fields:{courseId:{type:e.String_unsecure(),isOptional:!1},title:{type:e.String_unsecure(),isOptional:!1},authorId:{type:e.String_unsecure(),isOptional:!1},publishedAt:{type:e.DateTime(),isOptional:!1}}})}),i=n({name:`enrollment.created`,version:1,description:`A learner has enrolled in a course.`,payload:t({name:`EnrollmentCreatedEventPayload`,description:`Payload when a learner enrolls in a course`,fields:{enrollmentId:{type:e.String_unsecure(),isOptional:!1},learnerId:{type:e.String_unsecure(),isOptional:!1},courseId:{type:e.String_unsecure(),isOptional:!1},enrolledAt:{type:e.DateTime(),isOptional:!1}}})}),a=n({name:`lesson.completed`,version:1,description:`A learner has completed a lesson.`,payload:t({name:`LessonCompletedEventPayload`,description:`Payload when a lesson is completed`,fields:{learnerId:{type:e.String_unsecure(),isOptional:!1},lessonId:{type:e.String_unsecure(),isOptional:!1},courseId:{type:e.String_unsecure(),isOptional:!1},score:{type:e.Int_unsecure(),isOptional:!0},xpEarned:{type:e.Int_unsecure(),isOptional:!1},timeSpent:{type:e.Int_unsecure(),isOptional:!1},completedAt:{type:e.DateTime(),isOptional:!1}}})}),o=n({name:`course.completed`,version:1,description:`A learner has completed a course.`,payload:t({name:`CourseCompletedEventPayload`,description:`Payload when a course is completed`,fields:{learnerId:{type:e.String_unsecure(),isOptional:!1},courseId:{type:e.String_unsecure(),isOptional:!1},enrollmentId:{type:e.String_unsecure(),isOptional:!1},score:{type:e.Int_unsecure(),isOptional:!0},xpEarned:{type:e.Int_unsecure(),isOptional:!1},certificateId:{type:e.String_unsecure(),isOptional:!0},completedAt:{type:e.DateTime(),isOptional:!1}}})}),s=n({name:`onboarding.started`,version:1,description:`A learner has started onboarding.`,payload:t({name:`OnboardingStartedEventPayload`,description:`Payload when onboarding starts`,fields:{learnerId:{type:e.String_unsecure(),isOptional:!1},trackId:{type:e.String_unsecure(),isOptional:!1},productId:{type:e.String_unsecure(),isOptional:!1},startedAt:{type:e.DateTime(),isOptional:!1}}})}),c=n({name:`onboarding.step_completed`,version:1,description:`An onboarding step has been completed.`,payload:t({name:`OnboardingStepCompletedEventPayload`,description:`Payload when an onboarding step is completed`,fields:{learnerId:{type:e.String_unsecure(),isOptional:!1},trackId:{type:e.String_unsecure(),isOptional:!1},stepId:{type:e.String_unsecure(),isOptional:!1},triggeringEvent:{type:e.String_unsecure(),isOptional:!0},xpEarned:{type:e.Int_unsecure(),isOptional:!1},completedAt:{type:e.DateTime(),isOptional:!1}}})}),l=n({name:`onboarding.completed`,version:1,description:`A learner has completed onboarding.`,payload:t({name:`OnboardingCompletedEventPayload`,description:`Payload when onboarding is completed`,fields:{learnerId:{type:e.String_unsecure(),isOptional:!1},trackId:{type:e.String_unsecure(),isOptional:!1},productId:{type:e.String_unsecure(),isOptional:!1},xpEarned:{type:e.Int_unsecure(),isOptional:!1},completedAt:{type:e.DateTime(),isOptional:!1}}})}),u=n({name:`flashcard.reviewed`,version:1,description:`A flashcard has been reviewed.`,payload:t({name:`CardReviewedEventPayload`,description:`Payload when a flashcard is reviewed`,fields:{learnerId:{type:e.String_unsecure(),isOptional:!1},cardId:{type:e.String_unsecure(),isOptional:!1},deckId:{type:e.String_unsecure(),isOptional:!1},rating:{type:e.String_unsecure(),isOptional:!1},responseTimeMs:{type:e.Int_unsecure(),isOptional:!0},reviewedAt:{type:e.DateTime(),isOptional:!1}}})}),d=n({name:`quiz.started`,version:1,description:`A quiz attempt has started.`,payload:t({name:`QuizStartedEventPayload`,description:`Payload when a quiz is started`,fields:{learnerId:{type:e.String_unsecure(),isOptional:!1},quizId:{type:e.String_unsecure(),isOptional:!1},attemptId:{type:e.String_unsecure(),isOptional:!1},attemptNumber:{type:e.Int_unsecure(),isOptional:!1},startedAt:{type:e.DateTime(),isOptional:!1}}})}),f=n({name:`quiz.completed`,version:1,description:`A quiz attempt has been completed.`,payload:t({name:`QuizCompletedEventPayload`,description:`Payload when a quiz is completed`,fields:{learnerId:{type:e.String_unsecure(),isOptional:!1},quizId:{type:e.String_unsecure(),isOptional:!1},attemptId:{type:e.String_unsecure(),isOptional:!1},score:{type:e.Int_unsecure(),isOptional:!1},percentageScore:{type:e.Int_unsecure(),isOptional:!1},passed:{type:e.Boolean(),isOptional:!1},xpEarned:{type:e.Int_unsecure(),isOptional:!1},timeSpent:{type:e.Int_unsecure(),isOptional:!1},completedAt:{type:e.DateTime(),isOptional:!1}}})}),p=n({name:`xp.earned`,version:1,description:`XP has been earned.`,payload:t({name:`XpEarnedEventPayload`,description:`Payload when XP is earned`,fields:{learnerId:{type:e.String_unsecure(),isOptional:!1},amount:{type:e.Int_unsecure(),isOptional:!1},source:{type:e.String_unsecure(),isOptional:!1},sourceId:{type:e.String_unsecure(),isOptional:!0},totalXp:{type:e.Int_unsecure(),isOptional:!1},earnedAt:{type:e.DateTime(),isOptional:!1}}})}),m=n({name:`level.up`,version:1,description:`A learner has leveled up.`,payload:t({name:`LevelUpEventPayload`,description:`Payload when a learner levels up`,fields:{learnerId:{type:e.String_unsecure(),isOptional:!1},previousLevel:{type:e.Int_unsecure(),isOptional:!1},newLevel:{type:e.Int_unsecure(),isOptional:!1},totalXp:{type:e.Int_unsecure(),isOptional:!1},leveledUpAt:{type:e.DateTime(),isOptional:!1}}})}),h=n({name:`streak.updated`,version:1,description:`A streak has been updated.`,payload:t({name:`StreakUpdatedEventPayload`,description:`Payload when a streak is updated`,fields:{learnerId:{type:e.String_unsecure(),isOptional:!1},previousStreak:{type:e.Int_unsecure(),isOptional:!1},currentStreak:{type:e.Int_unsecure(),isOptional:!1},longestStreak:{type:e.Int_unsecure(),isOptional:!1},freezeUsed:{type:e.Boolean(),isOptional:!1},updatedAt:{type:e.DateTime(),isOptional:!1}}})}),g=n({name:`achievement.unlocked`,version:1,description:`An achievement has been unlocked.`,payload:t({name:`AchievementUnlockedEventPayload`,description:`Payload when an achievement is unlocked`,fields:{learnerId:{type:e.String_unsecure(),isOptional:!1},achievementId:{type:e.String_unsecure(),isOptional:!1},achievementKey:{type:e.String_unsecure(),isOptional:!1},achievementName:{type:e.String_unsecure(),isOptional:!1},xpEarned:{type:e.Int_unsecure(),isOptional:!1},unlockedAt:{type:e.DateTime(),isOptional:!1}}})}),_=n({name:`daily_goal.completed`,version:1,description:`A daily goal has been completed.`,payload:t({name:`DailyGoalCompletedEventPayload`,description:`Payload when a daily goal is completed`,fields:{learnerId:{type:e.String_unsecure(),isOptional:!1},date:{type:e.String_unsecure(),isOptional:!1},targetXp:{type:e.Int_unsecure(),isOptional:!1},actualXp:{type:e.Int_unsecure(),isOptional:!1},completedAt:{type:e.DateTime(),isOptional:!1}}})}),v=n({name:`certificate.issued`,version:1,description:`A certificate has been issued.`,payload:t({name:`CertificateIssuedEventPayload`,description:`Payload when a certificate is issued`,fields:{certificateId:{type:e.String_unsecure(),isOptional:!1},learnerId:{type:e.String_unsecure(),isOptional:!1},courseId:{type:e.String_unsecure(),isOptional:!1},certificateNumber:{type:e.String_unsecure(),isOptional:!1},issuedAt:{type:e.DateTime(),isOptional:!1}}})}),y={CoursePublishedEvent:r,EnrollmentCreatedEvent:i,LessonCompletedEvent:a,CourseCompletedEvent:o,OnboardingStartedEvent:s,OnboardingStepCompletedEvent:c,OnboardingCompletedEvent:l,CardReviewedEvent:u,QuizStartedEvent:d,QuizCompletedEvent:f,XpEarnedEvent:p,LevelUpEvent:m,StreakUpdatedEvent:h,AchievementUnlockedEvent:g,DailyGoalCompletedEvent:_,CertificateIssuedEvent:v};export{g as AchievementUnlockedEvent,u as CardReviewedEvent,v as CertificateIssuedEvent,o as CourseCompletedEvent,r as CoursePublishedEvent,_ as DailyGoalCompletedEvent,i as EnrollmentCreatedEvent,y as LearningJourneyEvents,a as LessonCompletedEvent,m as LevelUpEvent,l as OnboardingCompletedEvent,s as OnboardingStartedEvent,c as OnboardingStepCompletedEvent,f as QuizCompletedEvent,d as QuizStartedEvent,h as StreakUpdatedEvent,p as XpEarnedEvent};
package/dist/index.d.ts CHANGED
@@ -2,7 +2,6 @@ import { LEARNING_JOURNEY_OWNERS } from "./contracts/shared.js";
2
2
  import { AchievementModel, CardModel, CompleteLessonInput, CourseModel, DeckModel, EnrollInCourseInput, EnrollmentModel, GetDueCardsInput, GetDueCardsOutput, GetLearnerDashboardInput, LearnerDashboardModel, LearnerModel, ProgressModel, SubmitCardReviewInput, SuccessOutput } from "./contracts/models.js";
3
3
  import { CompleteLessonContract, EnrollInCourseContract, GetDueCardsContract, GetLearnerDashboardContract, SubmitCardReviewContract } from "./contracts/operations.js";
4
4
  import { GetOnboardingProgressContract, ListOnboardingTracksContract, OnboardingProgressModel, OnboardingStepModel, OnboardingStepProgressModel, OnboardingTrackModel, RecordOnboardingEventContract } from "./contracts/onboarding.js";
5
- import "./contracts/index.js";
6
5
  import { CardRating, DEFAULT_SRS_CONFIG, ReviewResult, SRSConfig, SRSEngine, SRSState, srsEngine } from "./engines/srs.js";
7
6
  import { DEFAULT_XP_CONFIG, XPActivityType, XPBreakdown, XPCalculationInput, XPConfig, XPEngine, XPResult, xpEngine } from "./engines/xp.js";
8
7
  import { DEFAULT_STREAK_CONFIG, StreakConfig, StreakEngine, StreakState, StreakUpdateResult, streakEngine } from "./engines/streak.js";
@@ -0,0 +1 @@
1
+ import{e}from"../ownership.js";const t=[`platform.finance`],n=[`open-banking`,`finance`];[...t],[...n],e.Experimental,[...t],[...n],e.Experimental,[...t],[...n],e.Experimental;
@@ -0,0 +1 @@
1
+ "use client";import"./react/feature-render.js";import"./react/form-render.js";import"./react/index.js";
@@ -0,0 +1 @@
1
+ import"../../presentations.v2.js";import"react";
@@ -0,0 +1 @@
1
+ import"react";import"react-hook-form";import"@hookform/resolvers/zod";import"react/jsx-runtime";
@@ -0,0 +1 @@
1
+ "use client";import"./feature-render.js";import"./form-render.js";
@@ -0,0 +1 @@
1
+ import{i as e,n as t,r as n}from"./schemas.js";
@@ -0,0 +1 @@
1
+ import{e}from"../ownership.js";import t from"zod";const n=t.enum([`contractspec:operation`,`contractspec:event`,`contractspec:presentation`,`contractspec:form`,`contractspec:feature`,`contractspec:workflow`,`contractspec:template`,`contractspec:integration`,`contractspec:data-view`,`contractspec:migration`,`contractspec:telemetry`,`contractspec:experiment`,`contractspec:app-config`,`contractspec:knowledge`]),r=t.object({path:t.string().min(1),type:t.string().min(1),content:t.string().optional()}),i=t.object({name:t.string().min(1),type:n,version:t.number().int().nonnegative(),title:t.string().min(1),description:t.string().min(1),meta:t.object({stability:t.enum([e.Idea,e.InCreation,e.Experimental,e.Beta,e.Stable,e.Deprecated]),owners:t.array(t.string().min(1)).default([]),tags:t.array(t.string().min(1)).default([])}),dependencies:t.array(t.string().min(1)).optional(),registryDependencies:t.array(t.string().min(1)).optional(),files:t.array(r).min(1),schema:t.object({input:t.unknown().optional(),output:t.unknown().optional()}).optional()});t.object({$schema:t.string().min(1).optional(),name:t.string().min(1),homepage:t.string().min(1).optional(),items:t.array(i)});export{i,n,r};
@@ -0,0 +1,76 @@
1
+ import{a as e}from"./registry.js";e([{id:`docs.PUBLISHING`,title:`Publishing ContractSpec Libraries`,summary:`This guide describes how we release the ContractSpec libraries to npm. We use a dual-track release system: **Stable** (manual) and **Canary** (automatic).`,kind:`reference`,visibility:`public`,route:`/docs/PUBLISHING`,tags:[`PUBLISHING`],body:`# Publishing ContractSpec Libraries
2
+
3
+ This guide describes how we release the ContractSpec libraries to npm. We use a dual-track release system: **Stable** (manual) and **Canary** (automatic).
4
+
5
+ ## Release Tracks
6
+
7
+ | Track | Branch | npm Tag | Frequency | Versioning | Use Case |
8
+ |-------|--------|---------|-----------|------------|----------|
9
+ | **Stable** | \`release\` | \`latest\` | Manual | SemVer (e.g., \`1.7.4\`) | Production, external users |
10
+ | **Canary** | \`main\` | \`canary\` | Every Push | Snapshot (e.g., \`1.7.4-canary...\`) | Dev, internal testing |
11
+
12
+ ## Prerequisites
13
+
14
+ - ✅ \`NPM_TOKEN\` secret is configured in GitHub (owner or automation token with _publish_ scope).
15
+ - ✅ \`GITHUB_TOKEN\` (built-in) has permissions to create PRs (enabled by default in new repos).
16
+ - ✅ For stable releases: \`release\` branch exists and is protected.
17
+
18
+ ## Canary Workflow (Automatic)
19
+
20
+ Every commit pushed to \`main\` triggers the \`.github/workflows/publish-canary.yml\` workflow.
21
+
22
+ 1. **Trigger**: Push to \`main\`.
23
+ 2. **Versioning**: Runs \`changeset version --snapshot canary\` to generate a temporary snapshot version.
24
+ 3. **Publish**: Packages are published to npm with the \`canary\` tag using \`changeset publish --tag canary\`.
25
+
26
+ ### Consuming Canary Builds
27
+
28
+ To install the latest bleeding-edge version:
29
+
30
+ \`\`\`bash
31
+ npm install @lssm/lib.contracts@canary
32
+ # or
33
+ bun add @lssm/lib.contracts@canary
34
+ \`\`\`
35
+
36
+ ## Stable Release Workflow (Manual)
37
+
38
+ Stable releases are managed via the \`release\` branch using the standard [Changesets Action](https://github.com/changesets/action).
39
+
40
+ 1. **Develop on \`main\`**: Create features and fixes.
41
+ 2. **Add Changesets**: Run \`bun changeset\` to document changes and impact (major/minor/patch).
42
+ 3. **Merge to \`release\`**: When ready to ship, open a PR from \`main\` to \`release\` or merge manually.
43
+ 4. **"Version Packages" PR**:
44
+ - The GitHub Action detects new changesets and automatically creates a Pull Request titled **"Version Packages"**.
45
+ - This PR contains the version bumps and updated \`CHANGELOG.md\` files.
46
+ 5. **Merge & Publish**:
47
+ - Review and merge the "Version Packages" PR.
48
+ - The Action runs again, detects the versions have been bumped, builds the libraries, and publishes them to npm with the \`latest\` tag.
49
+
50
+ ### Publishing Steps
51
+
52
+ 1. Ensure all changesets are present on \`main\`.
53
+ 2. Merge \`main\` into \`release\`:
54
+ \`\`\`bash
55
+ git checkout release
56
+ git pull origin release
57
+ git merge main
58
+ git push origin release
59
+ \`\`\`
60
+ 3. Go to GitHub Pull Requests. You will see a **"Version Packages"** PR created by the bot.
61
+ 4. Merge that PR.
62
+ 5. The release is now live on npm!
63
+
64
+ ## Manual Verification (Optional)
65
+
66
+ Before publishing a new version you can run:
67
+
68
+ \`\`\`bash
69
+ bun run build:not-apps
70
+ npx npm-packlist --json packages/libs/contracts
71
+ \`\`\`
72
+
73
+ ## Rollback
74
+
75
+ If a publish fails mid-way, re-run the workflow once the issue is fixed. Already published packages are skipped automatically. Use \`npm deprecate <package>@<version>\` if we need to warn consumers about a broken release.
76
+ `}]);