@studious-lms/server 1.25.0 → 1.27.0

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 (175) hide show
  1. package/.env.example +3 -1
  2. package/.github/workflows/npm-publish.yml +1 -0
  3. package/AGENTS.md +84 -0
  4. package/dist/models/cloudStorage.d.ts +11 -0
  5. package/dist/models/cloudStorage.d.ts.map +1 -1
  6. package/dist/models/cloudStorage.js +18 -2
  7. package/dist/models/cloudStorage.js.map +1 -1
  8. package/dist/models/conversation.d.ts +1 -0
  9. package/dist/models/conversation.d.ts.map +1 -1
  10. package/dist/models/labChat.d.ts +40 -0
  11. package/dist/models/labChat.d.ts.map +1 -1
  12. package/dist/models/labChat.js +32 -2
  13. package/dist/models/labChat.js.map +1 -1
  14. package/dist/models/marketplace.d.ts +35 -0
  15. package/dist/models/marketplace.d.ts.map +1 -1
  16. package/dist/models/marketplace.js +9 -2
  17. package/dist/models/marketplace.js.map +1 -1
  18. package/dist/models/message.d.ts +3 -0
  19. package/dist/models/message.d.ts.map +1 -1
  20. package/dist/models/module.d.ts +228 -0
  21. package/dist/models/module.d.ts.map +1 -0
  22. package/dist/models/module.js +69 -0
  23. package/dist/models/module.js.map +1 -0
  24. package/dist/pipelines/aiLabChat.d.ts +2 -0
  25. package/dist/pipelines/aiLabChat.d.ts.map +1 -1
  26. package/dist/pipelines/aiLabChat.js +60 -16
  27. package/dist/pipelines/aiLabChat.js.map +1 -1
  28. package/dist/pipelines/aiLabChatContract.d.ts +170 -2
  29. package/dist/pipelines/aiLabChatContract.d.ts.map +1 -1
  30. package/dist/pipelines/aiLabChatContract.js +30 -2
  31. package/dist/pipelines/aiLabChatContract.js.map +1 -1
  32. package/dist/pipelines/aiNewtonChat.d.ts.map +1 -1
  33. package/dist/pipelines/aiNewtonChat.js +30 -5
  34. package/dist/pipelines/aiNewtonChat.js.map +1 -1
  35. package/dist/pipelines/gradeWorksheet.d.ts.map +1 -1
  36. package/dist/pipelines/gradeWorksheet.js +4 -2
  37. package/dist/pipelines/gradeWorksheet.js.map +1 -1
  38. package/dist/pipelines/labChatPrompt.d.ts +1 -1
  39. package/dist/pipelines/labChatPrompt.d.ts.map +1 -1
  40. package/dist/pipelines/labChatPrompt.js +13 -14
  41. package/dist/pipelines/labChatPrompt.js.map +1 -1
  42. package/dist/routers/_app.d.ts +1185 -215
  43. package/dist/routers/_app.d.ts.map +1 -1
  44. package/dist/routers/_app.js +4 -2
  45. package/dist/routers/_app.js.map +1 -1
  46. package/dist/routers/admin.d.ts +0 -1
  47. package/dist/routers/admin.d.ts.map +1 -1
  48. package/dist/routers/conversation.d.ts +1 -0
  49. package/dist/routers/conversation.d.ts.map +1 -1
  50. package/dist/routers/labChat.d.ts +10 -0
  51. package/dist/routers/labChat.d.ts.map +1 -1
  52. package/dist/routers/labChat.js +6 -3
  53. package/dist/routers/labChat.js.map +1 -1
  54. package/dist/routers/marketplace.d.ts +41 -0
  55. package/dist/routers/marketplace.d.ts.map +1 -1
  56. package/dist/routers/marketplace.js +13 -3
  57. package/dist/routers/marketplace.js.map +1 -1
  58. package/dist/routers/message.d.ts +37 -4
  59. package/dist/routers/message.d.ts.map +1 -1
  60. package/dist/routers/message.js +24 -7
  61. package/dist/routers/message.js.map +1 -1
  62. package/dist/routers/module.d.ts +345 -0
  63. package/dist/routers/module.d.ts.map +1 -0
  64. package/dist/routers/module.js +82 -0
  65. package/dist/routers/module.js.map +1 -0
  66. package/dist/routers/parent.d.ts +18 -0
  67. package/dist/routers/parent.d.ts.map +1 -1
  68. package/dist/routers/parent.js +10 -3
  69. package/dist/routers/parent.js.map +1 -1
  70. package/dist/routers/studentProgress.d.ts +44 -0
  71. package/dist/routers/studentProgress.d.ts.map +1 -1
  72. package/dist/routers/studentProgress.js +12 -3
  73. package/dist/routers/studentProgress.js.map +1 -1
  74. package/dist/routes/aiStream.js +32 -2
  75. package/dist/routes/aiStream.js.map +1 -1
  76. package/dist/seedDatabase.d.ts.map +1 -1
  77. package/dist/seedDatabase.js +107 -3
  78. package/dist/seedDatabase.js.map +1 -1
  79. package/dist/services/adminUser.d.ts +0 -1
  80. package/dist/services/adminUser.d.ts.map +1 -1
  81. package/dist/services/adminUser.js +7 -4
  82. package/dist/services/adminUser.js.map +1 -1
  83. package/dist/services/aiChatStream.d.ts +15 -0
  84. package/dist/services/aiChatStream.d.ts.map +1 -1
  85. package/dist/services/aiChatStream.js +144 -74
  86. package/dist/services/aiChatStream.js.map +1 -1
  87. package/dist/services/aiGeneration.d.ts +4 -0
  88. package/dist/services/aiGeneration.d.ts.map +1 -0
  89. package/dist/services/aiGeneration.js +88 -0
  90. package/dist/services/aiGeneration.js.map +1 -0
  91. package/dist/services/aiProposalTools.d.ts +4 -1
  92. package/dist/services/aiProposalTools.d.ts.map +1 -1
  93. package/dist/services/aiProposalTools.js +128 -3
  94. package/dist/services/aiProposalTools.js.map +1 -1
  95. package/dist/services/aiProposals.d.ts +70 -0
  96. package/dist/services/aiProposals.d.ts.map +1 -0
  97. package/dist/services/aiProposals.js +363 -0
  98. package/dist/services/aiProposals.js.map +1 -0
  99. package/dist/services/assignment.d.ts.map +1 -1
  100. package/dist/services/assignment.js +8 -3
  101. package/dist/services/assignment.js.map +1 -1
  102. package/dist/services/conversation.d.ts +1 -0
  103. package/dist/services/conversation.d.ts.map +1 -1
  104. package/dist/services/labChat.d.ts +10 -0
  105. package/dist/services/labChat.d.ts.map +1 -1
  106. package/dist/services/labChat.js +52 -3
  107. package/dist/services/labChat.js.map +1 -1
  108. package/dist/services/marketplace.d.ts +36 -0
  109. package/dist/services/marketplace.d.ts.map +1 -1
  110. package/dist/services/marketplace.js +30 -3
  111. package/dist/services/marketplace.js.map +1 -1
  112. package/dist/services/message.d.ts +24 -8
  113. package/dist/services/message.d.ts.map +1 -1
  114. package/dist/services/message.js +170 -117
  115. package/dist/services/message.js.map +1 -1
  116. package/dist/services/module.d.ts +288 -0
  117. package/dist/services/module.d.ts.map +1 -0
  118. package/dist/services/module.js +518 -0
  119. package/dist/services/module.js.map +1 -0
  120. package/dist/services/parentPortal.d.ts +14 -0
  121. package/dist/services/parentPortal.d.ts.map +1 -1
  122. package/dist/services/parentPortal.js +72 -2
  123. package/dist/services/parentPortal.js.map +1 -1
  124. package/dist/services/school.d.ts.map +1 -1
  125. package/dist/services/school.js +17 -5
  126. package/dist/services/school.js.map +1 -1
  127. package/dist/services/studentProgress.d.ts +50 -0
  128. package/dist/services/studentProgress.d.ts.map +1 -1
  129. package/dist/services/studentProgress.js +107 -2
  130. package/dist/services/studentProgress.js.map +1 -1
  131. package/dist/utils/inference.d.ts +10 -0
  132. package/dist/utils/inference.d.ts.map +1 -1
  133. package/dist/utils/inference.js +77 -2
  134. package/dist/utils/inference.js.map +1 -1
  135. package/dist/workers/processors/createRunJobWorker.js +17 -16
  136. package/dist/workers/processors/createRunJobWorker.js.map +1 -1
  137. package/package.json +1 -1
  138. package/prisma/migrations/20260708013000_add_modules/migration.sql +100 -0
  139. package/prisma/migrations/20260811130000_add_ai_message_feedback/migration.sql +7 -0
  140. package/prisma/schema.prisma +101 -0
  141. package/src/models/cloudStorage.ts +19 -0
  142. package/src/models/labChat.ts +34 -0
  143. package/src/models/marketplace.ts +16 -0
  144. package/src/models/module.ts +77 -0
  145. package/src/pipelines/aiLabChat.ts +79 -18
  146. package/src/pipelines/aiLabChatContract.ts +35 -0
  147. package/src/pipelines/aiNewtonChat.ts +34 -2
  148. package/src/pipelines/gradeWorksheet.ts +6 -0
  149. package/src/pipelines/labChatPrompt.ts +11 -12
  150. package/src/routers/_app.ts +2 -0
  151. package/src/routers/labChat.ts +5 -0
  152. package/src/routers/marketplace.ts +16 -0
  153. package/src/routers/message.ts +34 -5
  154. package/src/routers/module.ts +118 -0
  155. package/src/routers/parent.ts +11 -0
  156. package/src/routers/studentProgress.ts +15 -0
  157. package/src/routes/aiStream.ts +32 -0
  158. package/src/seedDatabase.ts +107 -2
  159. package/src/services/adminUser.ts +5 -2
  160. package/src/services/aiChatStream.ts +83 -7
  161. package/src/services/aiGeneration.ts +92 -0
  162. package/src/services/aiProposalTools.ts +166 -1
  163. package/src/services/aiProposals.ts +428 -0
  164. package/src/services/assignment.ts +12 -1
  165. package/src/services/labChat.ts +65 -0
  166. package/src/services/marketplace.ts +39 -0
  167. package/src/services/message.ts +205 -142
  168. package/src/services/module.ts +683 -0
  169. package/src/services/parentPortal.ts +85 -0
  170. package/src/services/school.ts +15 -3
  171. package/src/services/studentProgress.ts +135 -0
  172. package/src/utils/inference.ts +85 -0
  173. package/src/workers/processors/createRunJobWorker.ts +17 -17
  174. package/tests/unit/services/adminUser.test.ts +75 -0
  175. package/tests/unit/utils/adminPanelAccess.test.ts +26 -0
@@ -0,0 +1,288 @@
1
+ import { CourseModuleItemType as ModuleItemType, ModuleItemRequirementType } from "@prisma/client";
2
+ export declare function listModulesRecord(userId: string, classId: string): Promise<({
3
+ items: {
4
+ id: string;
5
+ title: string | null;
6
+ position: number;
7
+ moduleId: string;
8
+ indent: number;
9
+ itemType: import(".prisma/client").$Enums.CourseModuleItemType;
10
+ itemId: string | null;
11
+ externalUrl: string | null;
12
+ requirementType: import(".prisma/client").$Enums.ModuleItemRequirementType | null;
13
+ requiredScore: number | null;
14
+ }[];
15
+ prerequisites: {
16
+ prerequisiteId: string;
17
+ }[];
18
+ } & {
19
+ id: string;
20
+ createdAt: Date;
21
+ updatedAt: Date;
22
+ classId: string;
23
+ title: string;
24
+ position: number;
25
+ published: boolean;
26
+ unlockAt: Date | null;
27
+ requireSequential: boolean;
28
+ })[]>;
29
+ export declare function createModuleRecord(userId: string, input: {
30
+ classId: string;
31
+ title: string;
32
+ unlockAt?: Date | null;
33
+ requireSequential?: boolean;
34
+ }): Promise<{
35
+ items: {
36
+ id: string;
37
+ title: string | null;
38
+ position: number;
39
+ moduleId: string;
40
+ indent: number;
41
+ itemType: import(".prisma/client").$Enums.CourseModuleItemType;
42
+ itemId: string | null;
43
+ externalUrl: string | null;
44
+ requirementType: import(".prisma/client").$Enums.ModuleItemRequirementType | null;
45
+ requiredScore: number | null;
46
+ }[];
47
+ prerequisites: {
48
+ prerequisiteId: string;
49
+ }[];
50
+ } & {
51
+ id: string;
52
+ createdAt: Date;
53
+ updatedAt: Date;
54
+ classId: string;
55
+ title: string;
56
+ position: number;
57
+ published: boolean;
58
+ unlockAt: Date | null;
59
+ requireSequential: boolean;
60
+ }>;
61
+ export declare function updateModuleRecord(userId: string, input: {
62
+ id: string;
63
+ classId: string;
64
+ title?: string;
65
+ unlockAt?: Date | null;
66
+ requireSequential?: boolean;
67
+ published?: boolean;
68
+ prerequisiteIds?: string[];
69
+ }): Promise<{
70
+ items: {
71
+ id: string;
72
+ title: string | null;
73
+ position: number;
74
+ moduleId: string;
75
+ indent: number;
76
+ itemType: import(".prisma/client").$Enums.CourseModuleItemType;
77
+ itemId: string | null;
78
+ externalUrl: string | null;
79
+ requirementType: import(".prisma/client").$Enums.ModuleItemRequirementType | null;
80
+ requiredScore: number | null;
81
+ }[];
82
+ prerequisites: {
83
+ prerequisiteId: string;
84
+ }[];
85
+ } & {
86
+ id: string;
87
+ createdAt: Date;
88
+ updatedAt: Date;
89
+ classId: string;
90
+ title: string;
91
+ position: number;
92
+ published: boolean;
93
+ unlockAt: Date | null;
94
+ requireSequential: boolean;
95
+ }>;
96
+ export declare function deleteModuleRecord(userId: string, input: {
97
+ id: string;
98
+ classId: string;
99
+ }): Promise<{
100
+ id: string;
101
+ }>;
102
+ export declare function reorderModulesRecord(userId: string, input: {
103
+ classId: string;
104
+ orderedIds: string[];
105
+ }): Promise<({
106
+ items: {
107
+ id: string;
108
+ title: string | null;
109
+ position: number;
110
+ moduleId: string;
111
+ indent: number;
112
+ itemType: import(".prisma/client").$Enums.CourseModuleItemType;
113
+ itemId: string | null;
114
+ externalUrl: string | null;
115
+ requirementType: import(".prisma/client").$Enums.ModuleItemRequirementType | null;
116
+ requiredScore: number | null;
117
+ }[];
118
+ prerequisites: {
119
+ prerequisiteId: string;
120
+ }[];
121
+ } & {
122
+ id: string;
123
+ createdAt: Date;
124
+ updatedAt: Date;
125
+ classId: string;
126
+ title: string;
127
+ position: number;
128
+ published: boolean;
129
+ unlockAt: Date | null;
130
+ requireSequential: boolean;
131
+ })[]>;
132
+ export declare function createModuleItemRecord(userId: string, input: {
133
+ classId: string;
134
+ moduleId: string;
135
+ itemType: ModuleItemType;
136
+ itemId?: string;
137
+ externalUrl?: string;
138
+ title?: string;
139
+ indent?: number;
140
+ requirementType?: ModuleItemRequirementType;
141
+ requiredScore?: number;
142
+ }): Promise<{
143
+ id: string;
144
+ title: string | null;
145
+ position: number;
146
+ moduleId: string;
147
+ indent: number;
148
+ itemType: import(".prisma/client").$Enums.CourseModuleItemType;
149
+ itemId: string | null;
150
+ externalUrl: string | null;
151
+ requirementType: import(".prisma/client").$Enums.ModuleItemRequirementType | null;
152
+ requiredScore: number | null;
153
+ }>;
154
+ export declare function updateModuleItemRecord(userId: string, input: {
155
+ classId: string;
156
+ id: string;
157
+ title?: string | null;
158
+ externalUrl?: string;
159
+ indent?: number;
160
+ requirementType?: ModuleItemRequirementType | null;
161
+ requiredScore?: number | null;
162
+ }): Promise<{
163
+ id: string;
164
+ title: string | null;
165
+ position: number;
166
+ moduleId: string;
167
+ indent: number;
168
+ itemType: import(".prisma/client").$Enums.CourseModuleItemType;
169
+ itemId: string | null;
170
+ externalUrl: string | null;
171
+ requirementType: import(".prisma/client").$Enums.ModuleItemRequirementType | null;
172
+ requiredScore: number | null;
173
+ }>;
174
+ export declare function deleteModuleItemRecord(userId: string, input: {
175
+ classId: string;
176
+ id: string;
177
+ }): Promise<{
178
+ id: string;
179
+ }>;
180
+ /**
181
+ * Reorder items, supporting drag-and-drop across modules. `items` is the full
182
+ * new ordering: for every affected module, its items in display order.
183
+ */
184
+ export declare function reorderModuleItemsRecord(userId: string, input: {
185
+ classId: string;
186
+ items: {
187
+ id: string;
188
+ moduleId: string;
189
+ }[];
190
+ }): Promise<({
191
+ items: {
192
+ id: string;
193
+ title: string | null;
194
+ position: number;
195
+ moduleId: string;
196
+ indent: number;
197
+ itemType: import(".prisma/client").$Enums.CourseModuleItemType;
198
+ itemId: string | null;
199
+ externalUrl: string | null;
200
+ requirementType: import(".prisma/client").$Enums.ModuleItemRequirementType | null;
201
+ requiredScore: number | null;
202
+ }[];
203
+ prerequisites: {
204
+ prerequisiteId: string;
205
+ }[];
206
+ } & {
207
+ id: string;
208
+ createdAt: Date;
209
+ updatedAt: Date;
210
+ classId: string;
211
+ title: string;
212
+ position: number;
213
+ published: boolean;
214
+ unlockAt: Date | null;
215
+ requireSequential: boolean;
216
+ })[]>;
217
+ /**
218
+ * Compute the full module state for a student: lock status, per-item
219
+ * completion/accessibility and per-module progress percentages.
220
+ */
221
+ export declare function getStudentModulesState(classId: string, studentId: string): Promise<{
222
+ modules: {
223
+ items: {
224
+ completed: boolean;
225
+ accessible: boolean;
226
+ worksheetAssignmentId: string | null;
227
+ id: string;
228
+ title: string | null;
229
+ position: number;
230
+ moduleId: string;
231
+ indent: number;
232
+ itemType: import(".prisma/client").$Enums.CourseModuleItemType;
233
+ itemId: string | null;
234
+ externalUrl: string | null;
235
+ requirementType: import(".prisma/client").$Enums.ModuleItemRequirementType | null;
236
+ requiredScore: number | null;
237
+ }[];
238
+ locked: boolean;
239
+ lockedByPrerequisite: boolean;
240
+ lockedByDate: boolean;
241
+ completed: boolean;
242
+ requiredCount: number;
243
+ completedRequiredCount: number;
244
+ percentComplete: number;
245
+ prerequisites: {
246
+ prerequisiteId: string;
247
+ }[];
248
+ id: string;
249
+ createdAt: Date;
250
+ updatedAt: Date;
251
+ classId: string;
252
+ title: string;
253
+ position: number;
254
+ published: boolean;
255
+ unlockAt: Date | null;
256
+ requireSequential: boolean;
257
+ }[];
258
+ continueItemId: null;
259
+ continueModuleId: null;
260
+ }>;
261
+ /**
262
+ * Mark a module item as viewed by a student. Completes VIEW requirements;
263
+ * for other requirement types this only records that a progress row exists.
264
+ */
265
+ export declare function markItemViewedRecord(studentId: string, input: {
266
+ classId: string;
267
+ itemId: string;
268
+ }): Promise<{
269
+ status: import(".prisma/client").$Enums.ModuleItemProgressStatus;
270
+ id: string;
271
+ createdAt: Date;
272
+ updatedAt: Date;
273
+ moduleItemId: string;
274
+ studentId: string;
275
+ completedAt: Date | null;
276
+ }>;
277
+ /**
278
+ * Update module progress for a student's assignment after a submission event
279
+ * (submitted or returned/graded). Safe to call from any flow; never throws.
280
+ */
281
+ export declare function syncAssignmentModuleProgress(studentId: string, assignmentId: string): Promise<void>;
282
+ /**
283
+ * Update module progress for a student's worksheet after grading completes.
284
+ * SUBMIT requirements complete immediately; SCORE_AT_LEAST compares the sum
285
+ * of earned points across the worksheet response. Never throws.
286
+ */
287
+ export declare function syncWorksheetModuleProgress(studentId: string, worksheetId: string): Promise<void>;
288
+ //# sourceMappingURL=module.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"module.d.ts","sourceRoot":"/","sources":["services/module.ts"],"names":[],"mappings":"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"}