@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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"streak.js","names":["DEFAULT_STREAK_CONFIG: StreakConfig","result: StreakUpdateResult"],"sources":["../../src/engines/streak.ts"],"sourcesContent":["/**\n * Streak Tracking Engine\n *\n * Manages daily learning streaks with timezone support and freeze protection.\n */\n\n// ============ Types ============\n\nexport interface StreakState {\n /** Current streak days */\n currentStreak: number;\n /** Longest streak ever */\n longestStreak: number;\n /** Last activity timestamp */\n lastActivityAt: Date | null;\n /** Last activity date (YYYY-MM-DD) */\n lastActivityDate: string | null;\n /** Available streak freezes */\n freezesRemaining: number;\n /** When a freeze was last used */\n freezeUsedAt: Date | null;\n}\n\nexport interface StreakUpdateResult {\n /** Updated streak state */\n state: StreakState;\n /** Whether streak was maintained */\n streakMaintained: boolean;\n /** Whether streak was lost */\n streakLost: boolean;\n /** Whether a freeze was used */\n freezeUsed: boolean;\n /** Whether this activity started a new streak */\n newStreak: boolean;\n /** Days missed (if streak was lost) */\n daysMissed: number;\n}\n\nexport interface StreakConfig {\n /** Timezone for the user */\n timezone: string;\n /** How many streak freezes to give per month */\n freezesPerMonth: number;\n /** Maximum freezes that can be accumulated */\n maxFreezes: number;\n /** Grace period in hours after midnight */\n gracePeriodHours: number;\n}\n\n// ============ Default Configuration ============\n\nexport const DEFAULT_STREAK_CONFIG: StreakConfig = {\n timezone: 'UTC',\n freezesPerMonth: 2,\n maxFreezes: 5,\n gracePeriodHours: 4, // 4 hours grace period\n};\n\n// ============ Streak Engine ============\n\nexport class StreakEngine {\n private config: StreakConfig;\n\n constructor(config: Partial<StreakConfig> = {}) {\n this.config = { ...DEFAULT_STREAK_CONFIG, ...config };\n }\n\n /**\n * Update streak based on new activity.\n */\n update(state: StreakState, now: Date = new Date()): StreakUpdateResult {\n const todayDate = this.getDateString(now);\n const result: StreakUpdateResult = {\n state: { ...state },\n streakMaintained: false,\n streakLost: false,\n freezeUsed: false,\n newStreak: false,\n daysMissed: 0,\n };\n\n // If no previous activity, start new streak\n if (!state.lastActivityDate) {\n result.state.currentStreak = 1;\n result.state.longestStreak = Math.max(1, state.longestStreak);\n result.state.lastActivityAt = now;\n result.state.lastActivityDate = todayDate;\n result.newStreak = true;\n result.streakMaintained = true;\n return result;\n }\n\n // Check if activity is on the same day\n if (state.lastActivityDate === todayDate) {\n // Same day - just update timestamp, streak unchanged\n result.state.lastActivityAt = now;\n result.streakMaintained = true;\n return result;\n }\n\n // Calculate days since last activity\n const daysSinceActivity = this.getDaysBetween(\n state.lastActivityDate,\n todayDate\n );\n\n if (daysSinceActivity === 1) {\n // Perfect - activity on consecutive day\n result.state.currentStreak = state.currentStreak + 1;\n result.state.longestStreak = Math.max(\n result.state.currentStreak,\n state.longestStreak\n );\n result.state.lastActivityAt = now;\n result.state.lastActivityDate = todayDate;\n result.streakMaintained = true;\n return result;\n }\n\n // Streak was potentially broken\n result.daysMissed = daysSinceActivity - 1;\n\n // Check if we can use freezes\n const freezesNeeded = result.daysMissed;\n if (freezesNeeded <= state.freezesRemaining) {\n // Use freezes to maintain streak\n result.state.freezesRemaining = state.freezesRemaining - freezesNeeded;\n result.state.freezeUsedAt = now;\n result.state.currentStreak = state.currentStreak + 1; // Add today\n result.state.longestStreak = Math.max(\n result.state.currentStreak,\n state.longestStreak\n );\n result.state.lastActivityAt = now;\n result.state.lastActivityDate = todayDate;\n result.freezeUsed = true;\n result.streakMaintained = true;\n return result;\n }\n\n // Streak is lost\n result.streakLost = true;\n result.state.currentStreak = 1; // Start new streak\n result.state.lastActivityAt = now;\n result.state.lastActivityDate = todayDate;\n result.newStreak = true;\n return result;\n }\n\n /**\n * Check streak status without recording activity.\n */\n checkStatus(\n state: StreakState,\n now: Date = new Date()\n ): {\n isActive: boolean;\n willExpireAt: Date | null;\n canUseFreeze: boolean;\n daysUntilExpiry: number;\n } {\n if (!state.lastActivityDate) {\n return {\n isActive: false,\n willExpireAt: null,\n canUseFreeze: false,\n daysUntilExpiry: 0,\n };\n }\n\n const todayDate = this.getDateString(now);\n const daysSinceActivity = this.getDaysBetween(\n state.lastActivityDate,\n todayDate\n );\n\n if (daysSinceActivity === 0) {\n // Activity today - streak is active\n const tomorrow = this.addDays(now, 1);\n tomorrow.setHours(23, 59, 59, 999);\n return {\n isActive: true,\n willExpireAt: tomorrow,\n canUseFreeze: state.freezesRemaining > 0,\n daysUntilExpiry: 1,\n };\n }\n\n if (daysSinceActivity === 1) {\n // No activity today yet, but still within window\n const endOfDay = new Date(now);\n endOfDay.setHours(23 + this.config.gracePeriodHours, 59, 59, 999);\n return {\n isActive: true,\n willExpireAt: endOfDay,\n canUseFreeze: state.freezesRemaining > 0,\n daysUntilExpiry: 0,\n };\n }\n\n // Streak would be broken\n const missedDays = daysSinceActivity - 1;\n return {\n isActive: missedDays <= state.freezesRemaining,\n willExpireAt: null,\n canUseFreeze: missedDays <= state.freezesRemaining,\n daysUntilExpiry: -missedDays,\n };\n }\n\n /**\n * Manually use a freeze to protect streak.\n */\n useFreeze(state: StreakState, now: Date = new Date()): StreakState | null {\n if (state.freezesRemaining <= 0) {\n return null;\n }\n\n return {\n ...state,\n freezesRemaining: state.freezesRemaining - 1,\n freezeUsedAt: now,\n };\n }\n\n /**\n * Award monthly freezes.\n */\n awardMonthlyFreezes(state: StreakState): StreakState {\n return {\n ...state,\n freezesRemaining: Math.min(\n state.freezesRemaining + this.config.freezesPerMonth,\n this.config.maxFreezes\n ),\n };\n }\n\n /**\n * Get initial streak state.\n */\n getInitialState(): StreakState {\n return {\n currentStreak: 0,\n longestStreak: 0,\n lastActivityAt: null,\n lastActivityDate: null,\n freezesRemaining: this.config.freezesPerMonth,\n freezeUsedAt: null,\n };\n }\n\n /**\n * Calculate streak milestones.\n */\n getMilestones(currentStreak: number): {\n achieved: number[];\n next: number | null;\n } {\n const milestones = [3, 7, 14, 30, 60, 90, 180, 365, 500, 1000];\n const achieved = milestones.filter((m) => currentStreak >= m);\n const next = milestones.find((m) => currentStreak < m) ?? null;\n return { achieved, next };\n }\n\n // ============ Helpers ============\n\n /**\n * Get date string in YYYY-MM-DD format.\n */\n private getDateString(date: Date): string {\n // Simple implementation - for production, use a proper timezone library\n const year = date.getFullYear();\n const month = String(date.getMonth() + 1).padStart(2, '0');\n const day = String(date.getDate()).padStart(2, '0');\n return `${year}-${month}-${day}`;\n }\n\n /**\n * Get number of days between two date strings.\n */\n private getDaysBetween(dateStr1: string, dateStr2: string): number {\n const date1 = new Date(dateStr1);\n const date2 = new Date(dateStr2);\n const diffTime = date2.getTime() - date1.getTime();\n return Math.floor(diffTime / (1000 * 60 * 60 * 24));\n }\n\n /**\n * Add days to a date.\n */\n private addDays(date: Date, days: number): Date {\n return new Date(date.getTime() + days * 24 * 60 * 60 * 1000);\n }\n}\n\n/**\n * Default streak engine instance.\n */\nexport const streakEngine = new StreakEngine();\n"],"mappings":"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"}
@@ -93,4 +93,5 @@ declare class XPEngine {
93
93
  */
94
94
  declare const xpEngine: XPEngine;
95
95
  //#endregion
96
- export { DEFAULT_XP_CONFIG, XPActivityType, XPBreakdown, XPCalculationInput, XPConfig, XPEngine, XPResult, xpEngine };
96
+ export { DEFAULT_XP_CONFIG, XPActivityType, XPBreakdown, XPCalculationInput, XPConfig, XPEngine, XPResult, xpEngine };
97
+ //# sourceMappingURL=xp.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"xp.d.ts","names":[],"sources":["../../src/engines/xp.ts"],"sourcesContent":[],"mappings":";;AAQA;AAcA;AAiBA;AASA;AASiB,KAjDL,cAAA,GAmDS,iBAAP,GAAA,WAAM,GAAA,cAAA,GAAA,kBAAA,GAAA,iBAAA,GAAA,iBAAA,GAAA,cAAA,GAAA,oBAAA,GAAA,qBAAA,GAAA,cAAA,GAAA,iBAAA,GAAA,qBAAA;AAmBP,UAxDI,kBAAA,CAwDe;EAyCnB;EAGiB,QAAA,EAlGlB,cAkGkB;EAAR;EAcH,MAAA,CAAA,EAAA,MAAA;EAAqB;EAsFO,KAAA,CAAA,EAAA,MAAA;EAAQ;EA6E1C,aAAyB,CAAA,EAAA,MAAA;;;;;;;;UApQrB,QAAA;;;;;;aAMJ;;UAGI,WAAA;;;;;;;;UASA,QAAA;;cAEH,OAAO;;;;;;;;;;;;;;;;;;;;;;cAmBR,mBAAmB;cAyCnB,QAAA;;uBAGS,QAAQ;;;;mBAcX,qBAAqB;;;;+CAsFO;;;;;;;;;;;;;;;;;;;cA6ElC,UAAQ"}
@@ -209,4 +209,5 @@ var XPEngine = class {
209
209
  const xpEngine = new XPEngine();
210
210
 
211
211
  //#endregion
212
- export { DEFAULT_XP_CONFIG, XPEngine, xpEngine };
212
+ export { DEFAULT_XP_CONFIG, XPEngine, xpEngine };
213
+ //# sourceMappingURL=xp.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"xp.js","names":["DEFAULT_XP_CONFIG: XPConfig","breakdown: XPBreakdown[]"],"sources":["../../src/engines/xp.ts"],"sourcesContent":["/**\n * XP (Experience Points) Engine\n *\n * Calculates XP rewards for various learning activities.\n */\n\n// ============ Types ============\n\nexport type XPActivityType =\n | 'lesson_complete'\n | 'quiz_pass'\n | 'quiz_perfect'\n | 'flashcard_review'\n | 'course_complete'\n | 'module_complete'\n | 'streak_bonus'\n | 'achievement_unlock'\n | 'daily_goal_complete'\n | 'first_lesson'\n | 'onboarding_step'\n | 'onboarding_complete';\n\nexport interface XPCalculationInput {\n /** Type of activity */\n activity: XPActivityType;\n /** Base XP for the activity (from content config) */\n baseXp?: number;\n /** Score achieved (0-100) for scored activities */\n score?: number;\n /** Current streak (for streak bonuses) */\n currentStreak?: number;\n /** Time spent in seconds */\n timeSpent?: number;\n /** Attempt number (for quizzes) */\n attemptNumber?: number;\n /** Whether this is a retry */\n isRetry?: boolean;\n}\n\nexport interface XPResult {\n /** Total XP earned */\n totalXp: number;\n /** Base XP before bonuses */\n baseXp: number;\n /** Breakdown of XP sources */\n breakdown: XPBreakdown[];\n}\n\nexport interface XPBreakdown {\n /** Source of XP */\n source: string;\n /** XP amount */\n amount: number;\n /** Multiplier applied */\n multiplier?: number;\n}\n\nexport interface XPConfig {\n /** Base XP values for each activity */\n baseValues: Record<XPActivityType, number>;\n /** Score thresholds for bonus XP */\n scoreThresholds: { min: number; multiplier: number }[];\n /** Streak bonus tiers */\n streakTiers: { days: number; bonus: number }[];\n /** Perfect score bonus multiplier */\n perfectScoreMultiplier: number;\n /** First attempt bonus */\n firstAttemptBonus: number;\n /** Retry penalty multiplier */\n retryPenalty: number;\n /** Speed bonus (complete under expected time) */\n speedBonusMultiplier: number;\n /** Speed bonus threshold (percentage of expected time) */\n speedBonusThreshold: number;\n}\n\n// ============ Default Configuration ============\n\nexport const DEFAULT_XP_CONFIG: XPConfig = {\n baseValues: {\n lesson_complete: 10,\n quiz_pass: 20,\n quiz_perfect: 50,\n flashcard_review: 1,\n course_complete: 200,\n module_complete: 50,\n streak_bonus: 5,\n achievement_unlock: 0, // XP comes from achievement\n daily_goal_complete: 15,\n first_lesson: 25,\n onboarding_step: 5,\n onboarding_complete: 50,\n },\n scoreThresholds: [\n { min: 90, multiplier: 1.5 },\n { min: 80, multiplier: 1.25 },\n { min: 70, multiplier: 1.0 },\n { min: 60, multiplier: 0.75 },\n { min: 0, multiplier: 0.5 },\n ],\n streakTiers: [\n { days: 365, bonus: 50 },\n { days: 180, bonus: 30 },\n { days: 90, bonus: 20 },\n { days: 30, bonus: 15 },\n { days: 14, bonus: 10 },\n { days: 7, bonus: 5 },\n { days: 3, bonus: 2 },\n { days: 1, bonus: 0 },\n ],\n perfectScoreMultiplier: 1.5,\n firstAttemptBonus: 10,\n retryPenalty: 0.5,\n speedBonusMultiplier: 1.2,\n speedBonusThreshold: 0.8,\n};\n\n// ============ XP Engine ============\n\nexport class XPEngine {\n private config: XPConfig;\n\n constructor(config: Partial<XPConfig> = {}) {\n this.config = {\n ...DEFAULT_XP_CONFIG,\n ...config,\n baseValues: { ...DEFAULT_XP_CONFIG.baseValues, ...config.baseValues },\n scoreThresholds:\n config.scoreThresholds || DEFAULT_XP_CONFIG.scoreThresholds,\n streakTiers: config.streakTiers || DEFAULT_XP_CONFIG.streakTiers,\n };\n }\n\n /**\n * Calculate XP for an activity.\n */\n calculate(input: XPCalculationInput): XPResult {\n const breakdown: XPBreakdown[] = [];\n\n // Get base XP\n const baseXp = input.baseXp ?? this.config.baseValues[input.activity];\n let totalXp = baseXp;\n\n breakdown.push({\n source: 'base',\n amount: baseXp,\n });\n\n // Apply score-based multiplier\n if (input.score !== undefined) {\n const scoreMultiplier = this.getScoreMultiplier(input.score);\n if (scoreMultiplier !== 1.0) {\n const scoreBonus = Math.round(baseXp * (scoreMultiplier - 1));\n totalXp += scoreBonus;\n breakdown.push({\n source: 'score_bonus',\n amount: scoreBonus,\n multiplier: scoreMultiplier,\n });\n }\n\n // Perfect score bonus\n if (input.score === 100) {\n const perfectBonus = Math.round(\n baseXp * (this.config.perfectScoreMultiplier - 1)\n );\n totalXp += perfectBonus;\n breakdown.push({\n source: 'perfect_score',\n amount: perfectBonus,\n multiplier: this.config.perfectScoreMultiplier,\n });\n }\n }\n\n // First attempt bonus\n if (input.attemptNumber === 1 && !input.isRetry) {\n totalXp += this.config.firstAttemptBonus;\n breakdown.push({\n source: 'first_attempt',\n amount: this.config.firstAttemptBonus,\n });\n }\n\n // Retry penalty\n if (input.isRetry) {\n const penalty = Math.round(totalXp * (1 - this.config.retryPenalty));\n totalXp -= penalty;\n breakdown.push({\n source: 'retry_penalty',\n amount: -penalty,\n multiplier: this.config.retryPenalty,\n });\n }\n\n // Streak bonus\n if (input.currentStreak && input.currentStreak > 0) {\n const streakBonus = this.getStreakBonus(input.currentStreak);\n if (streakBonus > 0) {\n totalXp += streakBonus;\n breakdown.push({\n source: 'streak_bonus',\n amount: streakBonus,\n });\n }\n }\n\n // Ensure XP is at least 1 (if base was > 0)\n if (baseXp > 0) {\n totalXp = Math.max(1, totalXp);\n }\n\n return {\n totalXp: Math.round(totalXp),\n baseXp,\n breakdown,\n };\n }\n\n /**\n * Calculate streak bonus XP.\n */\n calculateStreakBonus(currentStreak: number): XPResult {\n const bonus = this.getStreakBonus(currentStreak);\n return {\n totalXp: bonus,\n baseXp: bonus,\n breakdown: [\n {\n source: 'streak_bonus',\n amount: bonus,\n },\n ],\n };\n }\n\n /**\n * Calculate XP needed for a level.\n */\n getXpForLevel(level: number): number {\n // Exponential growth formula\n // Level 1: 0 XP\n // Level 2: 100 XP\n // Level 3: 300 XP\n // etc.\n if (level <= 1) return 0;\n return Math.round(100 * Math.pow(level - 1, 1.5));\n }\n\n /**\n * Get level from total XP.\n */\n getLevelFromXp(totalXp: number): {\n level: number;\n xpInLevel: number;\n xpForNextLevel: number;\n } {\n let level = 1;\n let xpRequired = this.getXpForLevel(level + 1);\n\n while (totalXp >= xpRequired && level < 1000) {\n level++;\n xpRequired = this.getXpForLevel(level + 1);\n }\n\n const xpForCurrentLevel = this.getXpForLevel(level);\n const xpForNextLevel = this.getXpForLevel(level + 1);\n\n return {\n level,\n xpInLevel: totalXp - xpForCurrentLevel,\n xpForNextLevel: xpForNextLevel - xpForCurrentLevel,\n };\n }\n\n // ============ Helpers ============\n\n private getScoreMultiplier(score: number): number {\n for (const threshold of this.config.scoreThresholds) {\n if (score >= threshold.min) {\n return threshold.multiplier;\n }\n }\n return 1.0;\n }\n\n private getStreakBonus(streak: number): number {\n for (const tier of this.config.streakTiers) {\n if (streak >= tier.days) {\n return tier.bonus;\n }\n }\n return 0;\n }\n}\n\n/**\n * Default XP engine instance.\n */\nexport const xpEngine = new XPEngine();\n"],"mappings":"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"}
@@ -1,231 +1,232 @@
1
- import * as _lssm_lib_schema1630 from "@lssm/lib.schema";
1
+ import * as _lssm_lib_schema395 from "@lssm/lib.schema";
2
2
 
3
3
  //#region src/entities/ai.d.ts
4
4
  /**
5
5
  * Learning style enum.
6
6
  */
7
- declare const LearningStyleEnum: _lssm_lib_schema1630.EntityEnumDef;
7
+ declare const LearningStyleEnum: _lssm_lib_schema395.EntityEnumDef;
8
8
  /**
9
9
  * Recommendation type enum.
10
10
  */
11
- declare const RecommendationTypeEnum: _lssm_lib_schema1630.EntityEnumDef;
11
+ declare const RecommendationTypeEnum: _lssm_lib_schema395.EntityEnumDef;
12
12
  /**
13
13
  * LearnerProfile entity - AI personalization profile.
14
14
  */
15
- declare const LearnerProfileEntity: _lssm_lib_schema1630.EntitySpec<{
16
- id: _lssm_lib_schema1630.EntityScalarField;
17
- learnerId: _lssm_lib_schema1630.EntityScalarField;
18
- learningStyle: _lssm_lib_schema1630.EntityEnumField;
19
- preferredDifficulty: _lssm_lib_schema1630.EntityScalarField;
20
- preferredSessionLength: _lssm_lib_schema1630.EntityScalarField;
21
- interests: _lssm_lib_schema1630.EntityScalarField;
22
- goals: _lssm_lib_schema1630.EntityScalarField;
23
- pacePreference: _lssm_lib_schema1630.EntityScalarField;
24
- bestTimeOfDay: _lssm_lib_schema1630.EntityScalarField;
25
- averageSessionLength: _lssm_lib_schema1630.EntityScalarField;
26
- daysActivePerWeek: _lssm_lib_schema1630.EntityScalarField;
27
- avgQuizScore: _lssm_lib_schema1630.EntityScalarField;
28
- avgLessonCompletionTime: _lssm_lib_schema1630.EntityScalarField;
29
- strengths: _lssm_lib_schema1630.EntityScalarField;
30
- weaknesses: _lssm_lib_schema1630.EntityScalarField;
31
- lastAnalyzedAt: _lssm_lib_schema1630.EntityScalarField;
32
- metadata: _lssm_lib_schema1630.EntityScalarField;
33
- createdAt: _lssm_lib_schema1630.EntityScalarField;
34
- updatedAt: _lssm_lib_schema1630.EntityScalarField;
35
- learner: _lssm_lib_schema1630.EntityRelationField;
15
+ declare const LearnerProfileEntity: _lssm_lib_schema395.EntitySpec<{
16
+ id: _lssm_lib_schema395.EntityScalarField;
17
+ learnerId: _lssm_lib_schema395.EntityScalarField;
18
+ learningStyle: _lssm_lib_schema395.EntityEnumField;
19
+ preferredDifficulty: _lssm_lib_schema395.EntityScalarField;
20
+ preferredSessionLength: _lssm_lib_schema395.EntityScalarField;
21
+ interests: _lssm_lib_schema395.EntityScalarField;
22
+ goals: _lssm_lib_schema395.EntityScalarField;
23
+ pacePreference: _lssm_lib_schema395.EntityScalarField;
24
+ bestTimeOfDay: _lssm_lib_schema395.EntityScalarField;
25
+ averageSessionLength: _lssm_lib_schema395.EntityScalarField;
26
+ daysActivePerWeek: _lssm_lib_schema395.EntityScalarField;
27
+ avgQuizScore: _lssm_lib_schema395.EntityScalarField;
28
+ avgLessonCompletionTime: _lssm_lib_schema395.EntityScalarField;
29
+ strengths: _lssm_lib_schema395.EntityScalarField;
30
+ weaknesses: _lssm_lib_schema395.EntityScalarField;
31
+ lastAnalyzedAt: _lssm_lib_schema395.EntityScalarField;
32
+ metadata: _lssm_lib_schema395.EntityScalarField;
33
+ createdAt: _lssm_lib_schema395.EntityScalarField;
34
+ updatedAt: _lssm_lib_schema395.EntityScalarField;
35
+ learner: _lssm_lib_schema395.EntityRelationField;
36
36
  }>;
37
37
  /**
38
38
  * SkillMap entity - tracks skill proficiency.
39
39
  */
40
- declare const SkillMapEntity: _lssm_lib_schema1630.EntitySpec<{
41
- id: _lssm_lib_schema1630.EntityScalarField;
42
- learnerId: _lssm_lib_schema1630.EntityScalarField;
43
- skillId: _lssm_lib_schema1630.EntityScalarField;
44
- skillName: _lssm_lib_schema1630.EntityScalarField;
45
- skillCategory: _lssm_lib_schema1630.EntityScalarField;
46
- level: _lssm_lib_schema1630.EntityScalarField;
47
- confidence: _lssm_lib_schema1630.EntityScalarField;
48
- lessonsCompleted: _lssm_lib_schema1630.EntityScalarField;
49
- quizzesCompleted: _lssm_lib_schema1630.EntityScalarField;
50
- practiceTime: _lssm_lib_schema1630.EntityScalarField;
51
- lastPracticedAt: _lssm_lib_schema1630.EntityScalarField;
52
- learningVelocity: _lssm_lib_schema1630.EntityScalarField;
53
- predictedTimeToMastery: _lssm_lib_schema1630.EntityScalarField;
54
- createdAt: _lssm_lib_schema1630.EntityScalarField;
55
- updatedAt: _lssm_lib_schema1630.EntityScalarField;
56
- learner: _lssm_lib_schema1630.EntityRelationField;
40
+ declare const SkillMapEntity: _lssm_lib_schema395.EntitySpec<{
41
+ id: _lssm_lib_schema395.EntityScalarField;
42
+ learnerId: _lssm_lib_schema395.EntityScalarField;
43
+ skillId: _lssm_lib_schema395.EntityScalarField;
44
+ skillName: _lssm_lib_schema395.EntityScalarField;
45
+ skillCategory: _lssm_lib_schema395.EntityScalarField;
46
+ level: _lssm_lib_schema395.EntityScalarField;
47
+ confidence: _lssm_lib_schema395.EntityScalarField;
48
+ lessonsCompleted: _lssm_lib_schema395.EntityScalarField;
49
+ quizzesCompleted: _lssm_lib_schema395.EntityScalarField;
50
+ practiceTime: _lssm_lib_schema395.EntityScalarField;
51
+ lastPracticedAt: _lssm_lib_schema395.EntityScalarField;
52
+ learningVelocity: _lssm_lib_schema395.EntityScalarField;
53
+ predictedTimeToMastery: _lssm_lib_schema395.EntityScalarField;
54
+ createdAt: _lssm_lib_schema395.EntityScalarField;
55
+ updatedAt: _lssm_lib_schema395.EntityScalarField;
56
+ learner: _lssm_lib_schema395.EntityRelationField;
57
57
  }>;
58
58
  /**
59
59
  * LearningPath entity - AI-generated learning paths.
60
60
  */
61
- declare const LearningPathEntity: _lssm_lib_schema1630.EntitySpec<{
62
- id: _lssm_lib_schema1630.EntityScalarField;
63
- learnerId: _lssm_lib_schema1630.EntityScalarField;
64
- name: _lssm_lib_schema1630.EntityScalarField;
65
- description: _lssm_lib_schema1630.EntityScalarField;
66
- goal: _lssm_lib_schema1630.EntityScalarField;
67
- steps: _lssm_lib_schema1630.EntityScalarField;
68
- currentStepIndex: _lssm_lib_schema1630.EntityScalarField;
69
- progress: _lssm_lib_schema1630.EntityScalarField;
70
- completedSteps: _lssm_lib_schema1630.EntityScalarField;
71
- totalSteps: _lssm_lib_schema1630.EntityScalarField;
72
- generatedAt: _lssm_lib_schema1630.EntityScalarField;
73
- adaptedFrom: _lssm_lib_schema1630.EntityScalarField;
74
- generationParams: _lssm_lib_schema1630.EntityScalarField;
75
- adaptationHistory: _lssm_lib_schema1630.EntityScalarField;
76
- isActive: _lssm_lib_schema1630.EntityScalarField;
77
- isCompleted: _lssm_lib_schema1630.EntityScalarField;
78
- startedAt: _lssm_lib_schema1630.EntityScalarField;
79
- completedAt: _lssm_lib_schema1630.EntityScalarField;
80
- estimatedCompletionDate: _lssm_lib_schema1630.EntityScalarField;
81
- createdAt: _lssm_lib_schema1630.EntityScalarField;
82
- updatedAt: _lssm_lib_schema1630.EntityScalarField;
83
- learner: _lssm_lib_schema1630.EntityRelationField;
61
+ declare const LearningPathEntity: _lssm_lib_schema395.EntitySpec<{
62
+ id: _lssm_lib_schema395.EntityScalarField;
63
+ learnerId: _lssm_lib_schema395.EntityScalarField;
64
+ name: _lssm_lib_schema395.EntityScalarField;
65
+ description: _lssm_lib_schema395.EntityScalarField;
66
+ goal: _lssm_lib_schema395.EntityScalarField;
67
+ steps: _lssm_lib_schema395.EntityScalarField;
68
+ currentStepIndex: _lssm_lib_schema395.EntityScalarField;
69
+ progress: _lssm_lib_schema395.EntityScalarField;
70
+ completedSteps: _lssm_lib_schema395.EntityScalarField;
71
+ totalSteps: _lssm_lib_schema395.EntityScalarField;
72
+ generatedAt: _lssm_lib_schema395.EntityScalarField;
73
+ adaptedFrom: _lssm_lib_schema395.EntityScalarField;
74
+ generationParams: _lssm_lib_schema395.EntityScalarField;
75
+ adaptationHistory: _lssm_lib_schema395.EntityScalarField;
76
+ isActive: _lssm_lib_schema395.EntityScalarField;
77
+ isCompleted: _lssm_lib_schema395.EntityScalarField;
78
+ startedAt: _lssm_lib_schema395.EntityScalarField;
79
+ completedAt: _lssm_lib_schema395.EntityScalarField;
80
+ estimatedCompletionDate: _lssm_lib_schema395.EntityScalarField;
81
+ createdAt: _lssm_lib_schema395.EntityScalarField;
82
+ updatedAt: _lssm_lib_schema395.EntityScalarField;
83
+ learner: _lssm_lib_schema395.EntityRelationField;
84
84
  }>;
85
85
  /**
86
86
  * Recommendation entity - AI-powered learning recommendations.
87
87
  */
88
- declare const RecommendationEntity: _lssm_lib_schema1630.EntitySpec<{
89
- id: _lssm_lib_schema1630.EntityScalarField;
90
- learnerId: _lssm_lib_schema1630.EntityScalarField;
91
- type: _lssm_lib_schema1630.EntityEnumField;
92
- itemId: _lssm_lib_schema1630.EntityScalarField;
93
- itemType: _lssm_lib_schema1630.EntityScalarField;
94
- score: _lssm_lib_schema1630.EntityScalarField;
95
- confidence: _lssm_lib_schema1630.EntityScalarField;
96
- reason: _lssm_lib_schema1630.EntityScalarField;
97
- factors: _lssm_lib_schema1630.EntityScalarField;
98
- status: _lssm_lib_schema1630.EntityScalarField;
99
- viewedAt: _lssm_lib_schema1630.EntityScalarField;
100
- acceptedAt: _lssm_lib_schema1630.EntityScalarField;
101
- dismissedAt: _lssm_lib_schema1630.EntityScalarField;
102
- feedback: _lssm_lib_schema1630.EntityScalarField;
103
- feedbackRating: _lssm_lib_schema1630.EntityScalarField;
104
- expiresAt: _lssm_lib_schema1630.EntityScalarField;
105
- createdAt: _lssm_lib_schema1630.EntityScalarField;
106
- updatedAt: _lssm_lib_schema1630.EntityScalarField;
107
- learner: _lssm_lib_schema1630.EntityRelationField;
88
+ declare const RecommendationEntity: _lssm_lib_schema395.EntitySpec<{
89
+ id: _lssm_lib_schema395.EntityScalarField;
90
+ learnerId: _lssm_lib_schema395.EntityScalarField;
91
+ type: _lssm_lib_schema395.EntityEnumField;
92
+ itemId: _lssm_lib_schema395.EntityScalarField;
93
+ itemType: _lssm_lib_schema395.EntityScalarField;
94
+ score: _lssm_lib_schema395.EntityScalarField;
95
+ confidence: _lssm_lib_schema395.EntityScalarField;
96
+ reason: _lssm_lib_schema395.EntityScalarField;
97
+ factors: _lssm_lib_schema395.EntityScalarField;
98
+ status: _lssm_lib_schema395.EntityScalarField;
99
+ viewedAt: _lssm_lib_schema395.EntityScalarField;
100
+ acceptedAt: _lssm_lib_schema395.EntityScalarField;
101
+ dismissedAt: _lssm_lib_schema395.EntityScalarField;
102
+ feedback: _lssm_lib_schema395.EntityScalarField;
103
+ feedbackRating: _lssm_lib_schema395.EntityScalarField;
104
+ expiresAt: _lssm_lib_schema395.EntityScalarField;
105
+ createdAt: _lssm_lib_schema395.EntityScalarField;
106
+ updatedAt: _lssm_lib_schema395.EntityScalarField;
107
+ learner: _lssm_lib_schema395.EntityRelationField;
108
108
  }>;
109
109
  /**
110
110
  * LearningGap entity - identified knowledge gaps.
111
111
  */
112
- declare const LearningGapEntity: _lssm_lib_schema1630.EntitySpec<{
113
- id: _lssm_lib_schema1630.EntityScalarField;
114
- learnerId: _lssm_lib_schema1630.EntityScalarField;
115
- skillId: _lssm_lib_schema1630.EntityScalarField;
116
- skillName: _lssm_lib_schema1630.EntityScalarField;
117
- severity: _lssm_lib_schema1630.EntityScalarField;
118
- confidence: _lssm_lib_schema1630.EntityScalarField;
119
- evidence: _lssm_lib_schema1630.EntityScalarField;
120
- relatedQuestions: _lssm_lib_schema1630.EntityScalarField;
121
- suggestedRemediation: _lssm_lib_schema1630.EntityScalarField;
122
- remediationProgress: _lssm_lib_schema1630.EntityScalarField;
123
- status: _lssm_lib_schema1630.EntityScalarField;
124
- resolvedAt: _lssm_lib_schema1630.EntityScalarField;
125
- detectedAt: _lssm_lib_schema1630.EntityScalarField;
126
- createdAt: _lssm_lib_schema1630.EntityScalarField;
127
- updatedAt: _lssm_lib_schema1630.EntityScalarField;
128
- learner: _lssm_lib_schema1630.EntityRelationField;
112
+ declare const LearningGapEntity: _lssm_lib_schema395.EntitySpec<{
113
+ id: _lssm_lib_schema395.EntityScalarField;
114
+ learnerId: _lssm_lib_schema395.EntityScalarField;
115
+ skillId: _lssm_lib_schema395.EntityScalarField;
116
+ skillName: _lssm_lib_schema395.EntityScalarField;
117
+ severity: _lssm_lib_schema395.EntityScalarField;
118
+ confidence: _lssm_lib_schema395.EntityScalarField;
119
+ evidence: _lssm_lib_schema395.EntityScalarField;
120
+ relatedQuestions: _lssm_lib_schema395.EntityScalarField;
121
+ suggestedRemediation: _lssm_lib_schema395.EntityScalarField;
122
+ remediationProgress: _lssm_lib_schema395.EntityScalarField;
123
+ status: _lssm_lib_schema395.EntityScalarField;
124
+ resolvedAt: _lssm_lib_schema395.EntityScalarField;
125
+ detectedAt: _lssm_lib_schema395.EntityScalarField;
126
+ createdAt: _lssm_lib_schema395.EntityScalarField;
127
+ updatedAt: _lssm_lib_schema395.EntityScalarField;
128
+ learner: _lssm_lib_schema395.EntityRelationField;
129
129
  }>;
130
- declare const aiEntities: (_lssm_lib_schema1630.EntitySpec<{
131
- id: _lssm_lib_schema1630.EntityScalarField;
132
- learnerId: _lssm_lib_schema1630.EntityScalarField;
133
- learningStyle: _lssm_lib_schema1630.EntityEnumField;
134
- preferredDifficulty: _lssm_lib_schema1630.EntityScalarField;
135
- preferredSessionLength: _lssm_lib_schema1630.EntityScalarField;
136
- interests: _lssm_lib_schema1630.EntityScalarField;
137
- goals: _lssm_lib_schema1630.EntityScalarField;
138
- pacePreference: _lssm_lib_schema1630.EntityScalarField;
139
- bestTimeOfDay: _lssm_lib_schema1630.EntityScalarField;
140
- averageSessionLength: _lssm_lib_schema1630.EntityScalarField;
141
- daysActivePerWeek: _lssm_lib_schema1630.EntityScalarField;
142
- avgQuizScore: _lssm_lib_schema1630.EntityScalarField;
143
- avgLessonCompletionTime: _lssm_lib_schema1630.EntityScalarField;
144
- strengths: _lssm_lib_schema1630.EntityScalarField;
145
- weaknesses: _lssm_lib_schema1630.EntityScalarField;
146
- lastAnalyzedAt: _lssm_lib_schema1630.EntityScalarField;
147
- metadata: _lssm_lib_schema1630.EntityScalarField;
148
- createdAt: _lssm_lib_schema1630.EntityScalarField;
149
- updatedAt: _lssm_lib_schema1630.EntityScalarField;
150
- learner: _lssm_lib_schema1630.EntityRelationField;
151
- }> | _lssm_lib_schema1630.EntitySpec<{
152
- id: _lssm_lib_schema1630.EntityScalarField;
153
- learnerId: _lssm_lib_schema1630.EntityScalarField;
154
- skillId: _lssm_lib_schema1630.EntityScalarField;
155
- skillName: _lssm_lib_schema1630.EntityScalarField;
156
- skillCategory: _lssm_lib_schema1630.EntityScalarField;
157
- level: _lssm_lib_schema1630.EntityScalarField;
158
- confidence: _lssm_lib_schema1630.EntityScalarField;
159
- lessonsCompleted: _lssm_lib_schema1630.EntityScalarField;
160
- quizzesCompleted: _lssm_lib_schema1630.EntityScalarField;
161
- practiceTime: _lssm_lib_schema1630.EntityScalarField;
162
- lastPracticedAt: _lssm_lib_schema1630.EntityScalarField;
163
- learningVelocity: _lssm_lib_schema1630.EntityScalarField;
164
- predictedTimeToMastery: _lssm_lib_schema1630.EntityScalarField;
165
- createdAt: _lssm_lib_schema1630.EntityScalarField;
166
- updatedAt: _lssm_lib_schema1630.EntityScalarField;
167
- learner: _lssm_lib_schema1630.EntityRelationField;
168
- }> | _lssm_lib_schema1630.EntitySpec<{
169
- id: _lssm_lib_schema1630.EntityScalarField;
170
- learnerId: _lssm_lib_schema1630.EntityScalarField;
171
- name: _lssm_lib_schema1630.EntityScalarField;
172
- description: _lssm_lib_schema1630.EntityScalarField;
173
- goal: _lssm_lib_schema1630.EntityScalarField;
174
- steps: _lssm_lib_schema1630.EntityScalarField;
175
- currentStepIndex: _lssm_lib_schema1630.EntityScalarField;
176
- progress: _lssm_lib_schema1630.EntityScalarField;
177
- completedSteps: _lssm_lib_schema1630.EntityScalarField;
178
- totalSteps: _lssm_lib_schema1630.EntityScalarField;
179
- generatedAt: _lssm_lib_schema1630.EntityScalarField;
180
- adaptedFrom: _lssm_lib_schema1630.EntityScalarField;
181
- generationParams: _lssm_lib_schema1630.EntityScalarField;
182
- adaptationHistory: _lssm_lib_schema1630.EntityScalarField;
183
- isActive: _lssm_lib_schema1630.EntityScalarField;
184
- isCompleted: _lssm_lib_schema1630.EntityScalarField;
185
- startedAt: _lssm_lib_schema1630.EntityScalarField;
186
- completedAt: _lssm_lib_schema1630.EntityScalarField;
187
- estimatedCompletionDate: _lssm_lib_schema1630.EntityScalarField;
188
- createdAt: _lssm_lib_schema1630.EntityScalarField;
189
- updatedAt: _lssm_lib_schema1630.EntityScalarField;
190
- learner: _lssm_lib_schema1630.EntityRelationField;
191
- }> | _lssm_lib_schema1630.EntitySpec<{
192
- id: _lssm_lib_schema1630.EntityScalarField;
193
- learnerId: _lssm_lib_schema1630.EntityScalarField;
194
- type: _lssm_lib_schema1630.EntityEnumField;
195
- itemId: _lssm_lib_schema1630.EntityScalarField;
196
- itemType: _lssm_lib_schema1630.EntityScalarField;
197
- score: _lssm_lib_schema1630.EntityScalarField;
198
- confidence: _lssm_lib_schema1630.EntityScalarField;
199
- reason: _lssm_lib_schema1630.EntityScalarField;
200
- factors: _lssm_lib_schema1630.EntityScalarField;
201
- status: _lssm_lib_schema1630.EntityScalarField;
202
- viewedAt: _lssm_lib_schema1630.EntityScalarField;
203
- acceptedAt: _lssm_lib_schema1630.EntityScalarField;
204
- dismissedAt: _lssm_lib_schema1630.EntityScalarField;
205
- feedback: _lssm_lib_schema1630.EntityScalarField;
206
- feedbackRating: _lssm_lib_schema1630.EntityScalarField;
207
- expiresAt: _lssm_lib_schema1630.EntityScalarField;
208
- createdAt: _lssm_lib_schema1630.EntityScalarField;
209
- updatedAt: _lssm_lib_schema1630.EntityScalarField;
210
- learner: _lssm_lib_schema1630.EntityRelationField;
211
- }> | _lssm_lib_schema1630.EntitySpec<{
212
- id: _lssm_lib_schema1630.EntityScalarField;
213
- learnerId: _lssm_lib_schema1630.EntityScalarField;
214
- skillId: _lssm_lib_schema1630.EntityScalarField;
215
- skillName: _lssm_lib_schema1630.EntityScalarField;
216
- severity: _lssm_lib_schema1630.EntityScalarField;
217
- confidence: _lssm_lib_schema1630.EntityScalarField;
218
- evidence: _lssm_lib_schema1630.EntityScalarField;
219
- relatedQuestions: _lssm_lib_schema1630.EntityScalarField;
220
- suggestedRemediation: _lssm_lib_schema1630.EntityScalarField;
221
- remediationProgress: _lssm_lib_schema1630.EntityScalarField;
222
- status: _lssm_lib_schema1630.EntityScalarField;
223
- resolvedAt: _lssm_lib_schema1630.EntityScalarField;
224
- detectedAt: _lssm_lib_schema1630.EntityScalarField;
225
- createdAt: _lssm_lib_schema1630.EntityScalarField;
226
- updatedAt: _lssm_lib_schema1630.EntityScalarField;
227
- learner: _lssm_lib_schema1630.EntityRelationField;
130
+ declare const aiEntities: (_lssm_lib_schema395.EntitySpec<{
131
+ id: _lssm_lib_schema395.EntityScalarField;
132
+ learnerId: _lssm_lib_schema395.EntityScalarField;
133
+ learningStyle: _lssm_lib_schema395.EntityEnumField;
134
+ preferredDifficulty: _lssm_lib_schema395.EntityScalarField;
135
+ preferredSessionLength: _lssm_lib_schema395.EntityScalarField;
136
+ interests: _lssm_lib_schema395.EntityScalarField;
137
+ goals: _lssm_lib_schema395.EntityScalarField;
138
+ pacePreference: _lssm_lib_schema395.EntityScalarField;
139
+ bestTimeOfDay: _lssm_lib_schema395.EntityScalarField;
140
+ averageSessionLength: _lssm_lib_schema395.EntityScalarField;
141
+ daysActivePerWeek: _lssm_lib_schema395.EntityScalarField;
142
+ avgQuizScore: _lssm_lib_schema395.EntityScalarField;
143
+ avgLessonCompletionTime: _lssm_lib_schema395.EntityScalarField;
144
+ strengths: _lssm_lib_schema395.EntityScalarField;
145
+ weaknesses: _lssm_lib_schema395.EntityScalarField;
146
+ lastAnalyzedAt: _lssm_lib_schema395.EntityScalarField;
147
+ metadata: _lssm_lib_schema395.EntityScalarField;
148
+ createdAt: _lssm_lib_schema395.EntityScalarField;
149
+ updatedAt: _lssm_lib_schema395.EntityScalarField;
150
+ learner: _lssm_lib_schema395.EntityRelationField;
151
+ }> | _lssm_lib_schema395.EntitySpec<{
152
+ id: _lssm_lib_schema395.EntityScalarField;
153
+ learnerId: _lssm_lib_schema395.EntityScalarField;
154
+ skillId: _lssm_lib_schema395.EntityScalarField;
155
+ skillName: _lssm_lib_schema395.EntityScalarField;
156
+ skillCategory: _lssm_lib_schema395.EntityScalarField;
157
+ level: _lssm_lib_schema395.EntityScalarField;
158
+ confidence: _lssm_lib_schema395.EntityScalarField;
159
+ lessonsCompleted: _lssm_lib_schema395.EntityScalarField;
160
+ quizzesCompleted: _lssm_lib_schema395.EntityScalarField;
161
+ practiceTime: _lssm_lib_schema395.EntityScalarField;
162
+ lastPracticedAt: _lssm_lib_schema395.EntityScalarField;
163
+ learningVelocity: _lssm_lib_schema395.EntityScalarField;
164
+ predictedTimeToMastery: _lssm_lib_schema395.EntityScalarField;
165
+ createdAt: _lssm_lib_schema395.EntityScalarField;
166
+ updatedAt: _lssm_lib_schema395.EntityScalarField;
167
+ learner: _lssm_lib_schema395.EntityRelationField;
168
+ }> | _lssm_lib_schema395.EntitySpec<{
169
+ id: _lssm_lib_schema395.EntityScalarField;
170
+ learnerId: _lssm_lib_schema395.EntityScalarField;
171
+ name: _lssm_lib_schema395.EntityScalarField;
172
+ description: _lssm_lib_schema395.EntityScalarField;
173
+ goal: _lssm_lib_schema395.EntityScalarField;
174
+ steps: _lssm_lib_schema395.EntityScalarField;
175
+ currentStepIndex: _lssm_lib_schema395.EntityScalarField;
176
+ progress: _lssm_lib_schema395.EntityScalarField;
177
+ completedSteps: _lssm_lib_schema395.EntityScalarField;
178
+ totalSteps: _lssm_lib_schema395.EntityScalarField;
179
+ generatedAt: _lssm_lib_schema395.EntityScalarField;
180
+ adaptedFrom: _lssm_lib_schema395.EntityScalarField;
181
+ generationParams: _lssm_lib_schema395.EntityScalarField;
182
+ adaptationHistory: _lssm_lib_schema395.EntityScalarField;
183
+ isActive: _lssm_lib_schema395.EntityScalarField;
184
+ isCompleted: _lssm_lib_schema395.EntityScalarField;
185
+ startedAt: _lssm_lib_schema395.EntityScalarField;
186
+ completedAt: _lssm_lib_schema395.EntityScalarField;
187
+ estimatedCompletionDate: _lssm_lib_schema395.EntityScalarField;
188
+ createdAt: _lssm_lib_schema395.EntityScalarField;
189
+ updatedAt: _lssm_lib_schema395.EntityScalarField;
190
+ learner: _lssm_lib_schema395.EntityRelationField;
191
+ }> | _lssm_lib_schema395.EntitySpec<{
192
+ id: _lssm_lib_schema395.EntityScalarField;
193
+ learnerId: _lssm_lib_schema395.EntityScalarField;
194
+ type: _lssm_lib_schema395.EntityEnumField;
195
+ itemId: _lssm_lib_schema395.EntityScalarField;
196
+ itemType: _lssm_lib_schema395.EntityScalarField;
197
+ score: _lssm_lib_schema395.EntityScalarField;
198
+ confidence: _lssm_lib_schema395.EntityScalarField;
199
+ reason: _lssm_lib_schema395.EntityScalarField;
200
+ factors: _lssm_lib_schema395.EntityScalarField;
201
+ status: _lssm_lib_schema395.EntityScalarField;
202
+ viewedAt: _lssm_lib_schema395.EntityScalarField;
203
+ acceptedAt: _lssm_lib_schema395.EntityScalarField;
204
+ dismissedAt: _lssm_lib_schema395.EntityScalarField;
205
+ feedback: _lssm_lib_schema395.EntityScalarField;
206
+ feedbackRating: _lssm_lib_schema395.EntityScalarField;
207
+ expiresAt: _lssm_lib_schema395.EntityScalarField;
208
+ createdAt: _lssm_lib_schema395.EntityScalarField;
209
+ updatedAt: _lssm_lib_schema395.EntityScalarField;
210
+ learner: _lssm_lib_schema395.EntityRelationField;
211
+ }> | _lssm_lib_schema395.EntitySpec<{
212
+ id: _lssm_lib_schema395.EntityScalarField;
213
+ learnerId: _lssm_lib_schema395.EntityScalarField;
214
+ skillId: _lssm_lib_schema395.EntityScalarField;
215
+ skillName: _lssm_lib_schema395.EntityScalarField;
216
+ severity: _lssm_lib_schema395.EntityScalarField;
217
+ confidence: _lssm_lib_schema395.EntityScalarField;
218
+ evidence: _lssm_lib_schema395.EntityScalarField;
219
+ relatedQuestions: _lssm_lib_schema395.EntityScalarField;
220
+ suggestedRemediation: _lssm_lib_schema395.EntityScalarField;
221
+ remediationProgress: _lssm_lib_schema395.EntityScalarField;
222
+ status: _lssm_lib_schema395.EntityScalarField;
223
+ resolvedAt: _lssm_lib_schema395.EntityScalarField;
224
+ detectedAt: _lssm_lib_schema395.EntityScalarField;
225
+ createdAt: _lssm_lib_schema395.EntityScalarField;
226
+ updatedAt: _lssm_lib_schema395.EntityScalarField;
227
+ learner: _lssm_lib_schema395.EntityRelationField;
228
228
  }>)[];
229
- declare const aiEnums: _lssm_lib_schema1630.EntityEnumDef[];
229
+ declare const aiEnums: _lssm_lib_schema395.EntityEnumDef[];
230
230
  //#endregion
231
- export { LearnerProfileEntity, LearningGapEntity, LearningPathEntity, LearningStyleEnum, RecommendationEntity, RecommendationTypeEnum, SkillMapEntity, aiEntities, aiEnums };
231
+ export { LearnerProfileEntity, LearningGapEntity, LearningPathEntity, LearningStyleEnum, RecommendationEntity, RecommendationTypeEnum, SkillMapEntity, aiEntities, aiEnums };
232
+ //# sourceMappingURL=ai.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ai.d.ts","names":[],"sources":["../../src/entities/ai.ts"],"sourcesContent":[],"mappings":";;;;;;AAKa,cAAA,iBAKX,EAAA,mBAAA,CAL4B,aAK5B;AAKF;AAiBA;;cAjBa,wBAYX,mBAAA,CAZiC;;;;cAiBtB,0CAAoB;MA2F/B,mBAAA,CAAA;;;;;;;;;;;;;;mDA3F+B;EAAA,cAAA,uCAAA;EAgGpB,QAAA,uCAoEX;EAAA,SAAA,uCAAA;;;;;;;cApEW,oCAAc;MAoEzB,mBAAA,CAAA;;;;;;;;yDApEyB;EAAA,YAAA,uCAAA;EAyEd,eAAA,uCAgFX;EAAA,gBAAA,uCAAA;;;;;;;;;cAhFW,wCAAkB;MAgF7B,mBAAA,CAAA;;;;;;;;;;;;yDAhF6B;EAAA,iBAAA,uCAAA;EAqFlB,QAAA,uCAwEX;EAAA,WAAA,uCAAA;;;;;;;;;;;cAxEW,0CAAoB;MAwE/B,mBAAA,CAAA;;;;;;;+CAxE+B;EAAA,OAAA,uCAAA;EA6EpB,MAAA,uCA8DX;EAAA,QAAA,uCAAA;;;;;;;;;;;;;cA9DW,uCAAiB;MA8D5B,mBAAA,CAAA;;gDA9D4B;EAAA,SAAA,uCAAA;EAgEjB,QAAA,uCAMZ;EAAA,UAAA,uCAAA;;;;;;;;;;;;cANY,iCAAU;MAMtB,mBAAA,CAAA;;;;;;;uDANsB;EAAA,aAAA,uCAAA;;;;;;;;;;;;;MAAA,mBAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAQV,UAAqD,uCAA9C;;;;;;;;;;;;cAAP,SAAqD,mBAAA,CAA9C,aAAA"}