@studious-lms/server 1.4.1 → 1.4.3

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 (248) hide show
  1. package/.coderabbit.yaml +4 -1
  2. package/.env.example +6 -0
  3. package/.env.test.example +2 -0
  4. package/dist/index.d.ts.map +1 -1
  5. package/dist/index.js +101 -76
  6. package/dist/index.js.map +1 -1
  7. package/dist/lib/config/cors.d.ts +16 -0
  8. package/dist/lib/config/cors.d.ts.map +1 -0
  9. package/dist/lib/config/cors.js +75 -0
  10. package/dist/lib/config/cors.js.map +1 -0
  11. package/dist/lib/config/env.d.ts +14 -0
  12. package/dist/lib/config/env.d.ts.map +1 -1
  13. package/dist/lib/config/env.js +9 -2
  14. package/dist/lib/config/env.js.map +1 -1
  15. package/dist/lib/fileUpload.d.ts +10 -2
  16. package/dist/lib/fileUpload.d.ts.map +1 -1
  17. package/dist/lib/fileUpload.js +38 -6
  18. package/dist/lib/fileUpload.js.map +1 -1
  19. package/dist/lib/prisma.d.ts +14 -2
  20. package/dist/lib/prisma.d.ts.map +1 -1
  21. package/dist/lib/prisma.js +27 -8
  22. package/dist/lib/prisma.js.map +1 -1
  23. package/dist/middleware/auth.d.ts.map +1 -1
  24. package/dist/middleware/auth.js +18 -5
  25. package/dist/middleware/auth.js.map +1 -1
  26. package/dist/middleware/security.d.ts.map +1 -1
  27. package/dist/middleware/security.js +3 -3
  28. package/dist/middleware/security.js.map +1 -1
  29. package/dist/models/agenda.d.ts +16 -16
  30. package/dist/models/announcement.d.ts +59 -23
  31. package/dist/models/announcement.d.ts.map +1 -1
  32. package/dist/models/assignment.d.ts +363 -276
  33. package/dist/models/assignment.d.ts.map +1 -1
  34. package/dist/models/attendance.d.ts +63 -21
  35. package/dist/models/attendance.d.ts.map +1 -1
  36. package/dist/models/auth.d.ts +115 -26
  37. package/dist/models/auth.d.ts.map +1 -1
  38. package/dist/models/auth.js +53 -30
  39. package/dist/models/auth.js.map +1 -1
  40. package/dist/models/class.d.ts +115 -65
  41. package/dist/models/class.d.ts.map +1 -1
  42. package/dist/models/class.js +16 -4
  43. package/dist/models/class.js.map +1 -1
  44. package/dist/models/comment.d.ts +52 -16
  45. package/dist/models/comment.d.ts.map +1 -1
  46. package/dist/models/conversation.d.ts +46 -16
  47. package/dist/models/conversation.d.ts.map +1 -1
  48. package/dist/models/event.d.ts +107 -53
  49. package/dist/models/event.d.ts.map +1 -1
  50. package/dist/models/file.d.ts +213 -165
  51. package/dist/models/file.d.ts.map +1 -1
  52. package/dist/models/folder.d.ts +161 -77
  53. package/dist/models/folder.d.ts.map +1 -1
  54. package/dist/models/labChat.d.ts +73 -31
  55. package/dist/models/labChat.d.ts.map +1 -1
  56. package/dist/models/marketing.d.ts +25 -7
  57. package/dist/models/marketing.d.ts.map +1 -1
  58. package/dist/models/message.d.ts +31 -13
  59. package/dist/models/message.d.ts.map +1 -1
  60. package/dist/models/newtonChat.d.ts +34 -10
  61. package/dist/models/newtonChat.d.ts.map +1 -1
  62. package/dist/models/notification.d.ts +29 -10
  63. package/dist/models/notification.d.ts.map +1 -1
  64. package/dist/models/notification.js +13 -9
  65. package/dist/models/notification.js.map +1 -1
  66. package/dist/models/section.d.ts +71 -23
  67. package/dist/models/section.d.ts.map +1 -1
  68. package/dist/models/user.d.ts +27 -9
  69. package/dist/models/user.d.ts.map +1 -1
  70. package/dist/models/worksheet.d.ts +606 -106
  71. package/dist/models/worksheet.d.ts.map +1 -1
  72. package/dist/models/worksheet.js +168 -2
  73. package/dist/models/worksheet.js.map +1 -1
  74. package/dist/pipelines/aiLabChat.d.ts +22 -2
  75. package/dist/pipelines/aiLabChat.d.ts.map +1 -1
  76. package/dist/pipelines/aiLabChat.js +133 -95
  77. package/dist/pipelines/aiLabChat.js.map +1 -1
  78. package/dist/pipelines/aiLabChatContract.d.ts +25 -25
  79. package/dist/pipelines/aiNewtonChat.d.ts.map +1 -1
  80. package/dist/pipelines/aiNewtonChat.js +25 -14
  81. package/dist/pipelines/aiNewtonChat.js.map +1 -1
  82. package/dist/pipelines/gradeWorksheet.d.ts +8 -8
  83. package/dist/pipelines/gradeWorksheet.d.ts.map +1 -1
  84. package/dist/pipelines/gradeWorksheet.js +12 -5
  85. package/dist/pipelines/gradeWorksheet.js.map +1 -1
  86. package/dist/pipelines/labChatPrompt.d.ts +27 -0
  87. package/dist/pipelines/labChatPrompt.d.ts.map +1 -1
  88. package/dist/pipelines/labChatPrompt.js +143 -69
  89. package/dist/pipelines/labChatPrompt.js.map +1 -1
  90. package/dist/routers/_app.d.ts +1579 -1257
  91. package/dist/routers/_app.d.ts.map +1 -1
  92. package/dist/routers/agenda.d.ts +16 -16
  93. package/dist/routers/announcement.d.ts +19 -19
  94. package/dist/routers/assignment.d.ts +307 -291
  95. package/dist/routers/assignment.d.ts.map +1 -1
  96. package/dist/routers/assignment.js +3 -2
  97. package/dist/routers/assignment.js.map +1 -1
  98. package/dist/routers/attendance.d.ts +7 -7
  99. package/dist/routers/auth.d.ts +1 -1
  100. package/dist/routers/class.d.ts +79 -72
  101. package/dist/routers/class.d.ts.map +1 -1
  102. package/dist/routers/class.js +3 -3
  103. package/dist/routers/class.js.map +1 -1
  104. package/dist/routers/comment.d.ts +6 -6
  105. package/dist/routers/conversation.d.ts +11 -11
  106. package/dist/routers/event.d.ts +35 -35
  107. package/dist/routers/file.d.ts +12 -12
  108. package/dist/routers/folder.d.ts +54 -54
  109. package/dist/routers/labChat.d.ts +18 -12
  110. package/dist/routers/labChat.d.ts.map +1 -1
  111. package/dist/routers/labChat.js +5 -3
  112. package/dist/routers/labChat.js.map +1 -1
  113. package/dist/routers/marketing.d.ts +2 -2
  114. package/dist/routers/message.d.ts +33 -2
  115. package/dist/routers/message.d.ts.map +1 -1
  116. package/dist/routers/message.js +27 -4
  117. package/dist/routers/message.js.map +1 -1
  118. package/dist/routers/newtonChat.d.ts +7 -1
  119. package/dist/routers/newtonChat.d.ts.map +1 -1
  120. package/dist/routers/newtonChat.js +5 -4
  121. package/dist/routers/newtonChat.js.map +1 -1
  122. package/dist/routers/notifications.d.ts +13 -6
  123. package/dist/routers/notifications.d.ts.map +1 -1
  124. package/dist/routers/notifications.js +4 -4
  125. package/dist/routers/notifications.js.map +1 -1
  126. package/dist/routers/section.d.ts +7 -7
  127. package/dist/routers/studentProgress.d.ts +86 -0
  128. package/dist/routers/studentProgress.d.ts.map +1 -1
  129. package/dist/routers/studentProgress.js +14 -4
  130. package/dist/routers/studentProgress.js.map +1 -1
  131. package/dist/routers/user.d.ts +1 -1
  132. package/dist/routers/worksheet.d.ts +64 -62
  133. package/dist/routers/worksheet.d.ts.map +1 -1
  134. package/dist/routers/worksheet.js +18 -16
  135. package/dist/routers/worksheet.js.map +1 -1
  136. package/dist/seedDatabase.d.ts +1 -1
  137. package/dist/services/agenda.d.ts +16 -16
  138. package/dist/services/announcement.d.ts +8 -8
  139. package/dist/services/assignment.d.ts +299 -283
  140. package/dist/services/assignment.d.ts.map +1 -1
  141. package/dist/services/assignment.js +24 -5
  142. package/dist/services/assignment.js.map +1 -1
  143. package/dist/services/attendance.d.ts +7 -7
  144. package/dist/services/auth.d.ts +2 -2
  145. package/dist/services/auth.d.ts.map +1 -1
  146. package/dist/services/auth.js +19 -12
  147. package/dist/services/auth.js.map +1 -1
  148. package/dist/services/class.d.ts +74 -68
  149. package/dist/services/class.d.ts.map +1 -1
  150. package/dist/services/class.js +6 -3
  151. package/dist/services/class.js.map +1 -1
  152. package/dist/services/comment.d.ts +6 -6
  153. package/dist/services/conversation.d.ts +11 -11
  154. package/dist/services/event.d.ts +31 -31
  155. package/dist/services/file.d.ts +12 -12
  156. package/dist/services/file.d.ts.map +1 -1
  157. package/dist/services/file.js +7 -2
  158. package/dist/services/file.js.map +1 -1
  159. package/dist/services/folder.d.ts +52 -52
  160. package/dist/services/labChat.d.ts +18 -12
  161. package/dist/services/labChat.d.ts.map +1 -1
  162. package/dist/services/labChat.js +30 -18
  163. package/dist/services/labChat.js.map +1 -1
  164. package/dist/services/marketing.d.ts +2 -2
  165. package/dist/services/message.d.ts +30 -0
  166. package/dist/services/message.d.ts.map +1 -1
  167. package/dist/services/message.js +97 -21
  168. package/dist/services/message.js.map +1 -1
  169. package/dist/services/newtonChat.d.ts +6 -1
  170. package/dist/services/newtonChat.d.ts.map +1 -1
  171. package/dist/services/newtonChat.js +36 -18
  172. package/dist/services/newtonChat.js.map +1 -1
  173. package/dist/services/notification.d.ts +16 -9
  174. package/dist/services/notification.d.ts.map +1 -1
  175. package/dist/services/notification.js +24 -9
  176. package/dist/services/notification.js.map +1 -1
  177. package/dist/services/section.d.ts +6 -6
  178. package/dist/services/studentProgress.d.ts +75 -0
  179. package/dist/services/studentProgress.d.ts.map +1 -1
  180. package/dist/services/studentProgress.js +300 -107
  181. package/dist/services/studentProgress.js.map +1 -1
  182. package/dist/services/worksheet.d.ts +64 -64
  183. package/dist/services/worksheet.d.ts.map +1 -1
  184. package/dist/services/worksheet.js +138 -54
  185. package/dist/services/worksheet.js.map +1 -1
  186. package/dist/trpc.d.ts.map +1 -1
  187. package/dist/trpc.js +11 -17
  188. package/dist/trpc.js.map +1 -1
  189. package/dist/utils/inference.d.ts +9 -12
  190. package/dist/utils/inference.d.ts.map +1 -1
  191. package/dist/utils/inference.js +135 -95
  192. package/dist/utils/inference.js.map +1 -1
  193. package/package.json +1 -1
  194. package/prisma/migrations/20260410124000_add_submission_recommendation_state/migration.sql +14 -0
  195. package/prisma/migrations/20260415103500_add_session_type/migration.sql +33 -0
  196. package/prisma/migrations/20260415133000_add_ai_usage_logs/migration.sql +19 -0
  197. package/prisma/schema.prisma +41 -1
  198. package/scripts/test-pre-push.ts +6 -2
  199. package/src/index.ts +119 -79
  200. package/src/lib/config/cors.ts +96 -0
  201. package/src/lib/config/env.ts +12 -1
  202. package/src/lib/fileUpload.ts +55 -5
  203. package/src/lib/prisma.ts +25 -6
  204. package/src/middleware/auth.ts +19 -4
  205. package/src/middleware/security.ts +1 -1
  206. package/src/models/auth.ts +59 -29
  207. package/src/models/class.ts +15 -4
  208. package/src/models/notification.ts +13 -7
  209. package/src/models/worksheet.ts +202 -0
  210. package/src/pipelines/aiLabChat.ts +183 -104
  211. package/src/pipelines/aiNewtonChat.ts +24 -14
  212. package/src/pipelines/gradeWorksheet.ts +10 -2
  213. package/src/pipelines/labChatPrompt.ts +196 -68
  214. package/src/routers/assignment.ts +1 -0
  215. package/src/routers/class.ts +2 -2
  216. package/src/routers/labChat.ts +3 -1
  217. package/src/routers/message.ts +38 -1
  218. package/src/routers/newtonChat.ts +4 -2
  219. package/src/routers/notifications.ts +2 -2
  220. package/src/routers/studentProgress.ts +25 -1
  221. package/src/routers/worksheet.ts +31 -19
  222. package/src/services/assignment.ts +30 -2
  223. package/src/services/auth.ts +26 -12
  224. package/src/services/class.ts +4 -1
  225. package/src/services/file.ts +6 -0
  226. package/src/services/labChat.ts +42 -18
  227. package/src/services/message.ts +163 -18
  228. package/src/services/newtonChat.ts +49 -18
  229. package/src/services/notification.ts +27 -8
  230. package/src/services/studentProgress.ts +425 -121
  231. package/src/services/worksheet.ts +191 -51
  232. package/src/trpc.ts +12 -18
  233. package/src/utils/inference.ts +205 -112
  234. package/tests/globalSetup.ts +13 -4
  235. package/tests/lib/cors.test.ts +103 -0
  236. package/tests/pipelines/aiLabChat.test.ts +64 -84
  237. package/tests/routers/auth.test.ts +120 -17
  238. package/tests/routers/class.test.ts +7 -1
  239. package/tests/routers/message.test.ts +236 -9
  240. package/tests/routers/newtonChat.test.ts +81 -0
  241. package/tests/routers/notification.test.ts +12 -0
  242. package/tests/routers/studentProgress.test.ts +2 -31
  243. package/tests/routers/worksheet.test.ts +194 -0
  244. package/tests/setup.ts +22 -5
  245. package/tests/utils/aiLabChatPrompt.test.ts +114 -6
  246. package/tests/utils/inference.test.ts +218 -0
  247. package/tests/utils/studentProgress.test.ts +361 -0
  248. package/vitest.unit.config.ts +1 -0
@@ -27,29 +27,29 @@ export declare const folderRouter: import("@trpc/server").TRPCBuiltRouter<{
27
27
  output: {
28
28
  files: {
29
29
  type: string;
30
+ name: string;
31
+ id: string;
32
+ size: number | null;
33
+ uploadedAt: Date | null;
30
34
  user: {
31
35
  id: string;
32
36
  username: string;
33
37
  } | null;
34
- id: string;
35
- name: string;
36
- size: number | null;
37
- uploadedAt: Date | null;
38
38
  }[];
39
39
  childFolders: {
40
+ name: string;
40
41
  id: string;
41
42
  _count: {
42
43
  files: number;
43
44
  childFolders: number;
44
45
  };
45
- name: string;
46
46
  color: string | null;
47
47
  }[];
48
48
  } & {
49
- id: string;
50
- classId: string | null;
51
49
  name: string;
50
+ id: string;
52
51
  color: string | null;
52
+ classId: string | null;
53
53
  parentFolderId: string | null;
54
54
  };
55
55
  meta: object;
@@ -63,33 +63,33 @@ export declare const folderRouter: import("@trpc/server").TRPCBuiltRouter<{
63
63
  output: {
64
64
  files: {
65
65
  type: string;
66
+ name: string;
67
+ id: string;
68
+ size: number | null;
69
+ uploadedAt: Date | null;
66
70
  user: {
67
71
  id: string;
68
72
  username: string;
69
73
  } | null;
70
- id: string;
71
- name: string;
72
- size: number | null;
73
- uploadedAt: Date | null;
74
74
  }[];
75
75
  childFolders: {
76
+ name: string;
76
77
  id: string;
77
78
  _count: {
78
79
  files: number;
79
80
  childFolders: number;
80
81
  };
81
- name: string;
82
82
  color: string | null;
83
83
  }[];
84
84
  parentFolder: {
85
- id: string;
86
85
  name: string;
86
+ id: string;
87
87
  } | null;
88
88
  } & {
89
- id: string;
90
- classId: string | null;
91
89
  name: string;
90
+ id: string;
92
91
  color: string | null;
92
+ classId: string | null;
93
93
  parentFolderId: string | null;
94
94
  };
95
95
  meta: object;
@@ -102,29 +102,29 @@ export declare const folderRouter: import("@trpc/server").TRPCBuiltRouter<{
102
102
  output: ({
103
103
  files: {
104
104
  type: string;
105
+ name: string;
106
+ id: string;
107
+ size: number | null;
108
+ uploadedAt: Date | null;
105
109
  user: {
106
110
  id: string;
107
111
  username: string;
108
112
  } | null;
109
- id: string;
110
- name: string;
111
- size: number | null;
112
- uploadedAt: Date | null;
113
113
  }[];
114
114
  childFolders: {
115
+ name: string;
115
116
  id: string;
116
117
  _count: {
117
118
  files: number;
118
119
  childFolders: number;
119
120
  };
120
- name: string;
121
121
  color: string | null;
122
122
  }[];
123
123
  } & {
124
- id: string;
125
- classId: string | null;
126
124
  name: string;
125
+ id: string;
127
126
  color: string | null;
127
+ classId: string | null;
128
128
  parentFolderId: string | null;
129
129
  })[];
130
130
  meta: object;
@@ -138,29 +138,29 @@ export declare const folderRouter: import("@trpc/server").TRPCBuiltRouter<{
138
138
  output: ({
139
139
  files: {
140
140
  type: string;
141
+ name: string;
142
+ id: string;
143
+ size: number | null;
144
+ uploadedAt: Date | null;
141
145
  user: {
142
146
  id: string;
143
147
  username: string;
144
148
  } | null;
145
- id: string;
146
- name: string;
147
- size: number | null;
148
- uploadedAt: Date | null;
149
149
  }[];
150
150
  childFolders: {
151
+ name: string;
151
152
  id: string;
152
153
  _count: {
153
154
  files: number;
154
155
  childFolders: number;
155
156
  };
156
- name: string;
157
157
  color: string | null;
158
158
  }[];
159
159
  } & {
160
- id: string;
161
- classId: string | null;
162
160
  name: string;
161
+ id: string;
163
162
  color: string | null;
163
+ classId: string | null;
164
164
  parentFolderId: string | null;
165
165
  })[];
166
166
  meta: object;
@@ -173,16 +173,17 @@ export declare const folderRouter: import("@trpc/server").TRPCBuiltRouter<{
173
173
  output: {
174
174
  files: {
175
175
  type: string;
176
+ name: string;
177
+ id: string;
178
+ size: number | null;
179
+ uploadedAt: Date | null;
176
180
  user: {
177
181
  id: string;
178
182
  username: string;
179
183
  } | null;
180
- id: string;
181
- name: string;
182
- size: number | null;
183
- uploadedAt: Date | null;
184
184
  }[];
185
185
  childFolders: {
186
+ name: string;
186
187
  id: string;
187
188
  files: {
188
189
  id: string;
@@ -191,17 +192,16 @@ export declare const folderRouter: import("@trpc/server").TRPCBuiltRouter<{
191
192
  files: number;
192
193
  childFolders: number;
193
194
  };
194
- name: string;
195
195
  color: string | null;
196
196
  childFolders: {
197
197
  id: string;
198
198
  }[];
199
199
  }[];
200
200
  } & {
201
- id: string;
202
- classId: string | null;
203
201
  name: string;
202
+ id: string;
204
203
  color: string | null;
204
+ classId: string | null;
205
205
  parentFolderId: string | null;
206
206
  };
207
207
  meta: object;
@@ -210,12 +210,12 @@ export declare const folderRouter: import("@trpc/server").TRPCBuiltRouter<{
210
210
  input: {
211
211
  [x: string]: unknown;
212
212
  classId: string;
213
+ folderId: string;
213
214
  files: {
214
215
  type: string;
215
216
  name: string;
216
217
  size: number;
217
218
  }[];
218
- folderId: string;
219
219
  };
220
220
  output: {
221
221
  success: boolean;
@@ -246,29 +246,29 @@ export declare const folderRouter: import("@trpc/server").TRPCBuiltRouter<{
246
246
  output: {
247
247
  files: {
248
248
  type: string;
249
+ name: string;
250
+ id: string;
251
+ size: number | null;
252
+ uploadedAt: Date | null;
249
253
  user: {
250
254
  id: string;
251
255
  username: string;
252
256
  } | null;
253
- id: string;
254
- name: string;
255
- size: number | null;
256
- uploadedAt: Date | null;
257
257
  }[];
258
258
  childFolders: {
259
+ name: string;
259
260
  id: string;
260
261
  _count: {
261
262
  files: number;
262
263
  childFolders: number;
263
264
  };
264
- name: string;
265
265
  color: string | null;
266
266
  }[];
267
267
  } & {
268
- id: string;
269
- classId: string | null;
270
268
  name: string;
269
+ id: string;
271
270
  color: string | null;
271
+ classId: string | null;
272
272
  parentFolderId: string | null;
273
273
  };
274
274
  meta: object;
@@ -284,29 +284,29 @@ export declare const folderRouter: import("@trpc/server").TRPCBuiltRouter<{
284
284
  output: {
285
285
  files: {
286
286
  type: string;
287
+ name: string;
288
+ id: string;
289
+ size: number | null;
290
+ uploadedAt: Date | null;
287
291
  user: {
288
292
  id: string;
289
293
  username: string;
290
294
  } | null;
291
- id: string;
292
- name: string;
293
- size: number | null;
294
- uploadedAt: Date | null;
295
295
  }[];
296
296
  childFolders: {
297
+ name: string;
297
298
  id: string;
298
299
  _count: {
299
300
  files: number;
300
301
  childFolders: number;
301
302
  };
302
- name: string;
303
303
  color: string | null;
304
304
  }[];
305
305
  } & {
306
- id: string;
307
- classId: string | null;
308
306
  name: string;
307
+ id: string;
309
308
  color: string | null;
309
+ classId: string | null;
310
310
  parentFolderId: string | null;
311
311
  };
312
312
  meta: object;
@@ -316,10 +316,10 @@ export declare const folderRouter: import("@trpc/server").TRPCBuiltRouter<{
316
316
  folderId: string;
317
317
  };
318
318
  output: ({
319
- id: string;
320
- classId: string | null;
321
319
  name: string;
320
+ id: string;
322
321
  color: string | null;
322
+ classId: string | null;
323
323
  parentFolderId: string | null;
324
324
  } | null)[];
325
325
  meta: object;
@@ -328,12 +328,12 @@ export declare const folderRouter: import("@trpc/server").TRPCBuiltRouter<{
328
328
  input: {
329
329
  [x: string]: unknown;
330
330
  classId: string;
331
+ folderId: string;
331
332
  files: {
332
333
  type: string;
333
334
  name: string;
334
335
  size: number;
335
336
  }[];
336
- folderId: string;
337
337
  };
338
338
  output: import("../lib/fileUpload.js").DirectUploadFile[];
339
339
  meta: object;
@@ -24,8 +24,8 @@ export declare const labChatRouter: import("@trpc/server").TRPCBuiltRouter<{
24
24
  };
25
25
  output: {
26
26
  class: {
27
- id: string;
28
27
  name: string;
28
+ id: string;
29
29
  subject: string;
30
30
  section: string;
31
31
  };
@@ -41,19 +41,19 @@ export declare const labChatRouter: import("@trpc/server").TRPCBuiltRouter<{
41
41
  };
42
42
  } & {
43
43
  id: string;
44
- role: import(".prisma/client").$Enums.ConversationRole;
45
44
  userId: string;
46
45
  conversationId: string;
46
+ role: import(".prisma/client").$Enums.ConversationRole;
47
47
  joinedAt: Date;
48
48
  lastViewedAt: Date | null;
49
49
  lastViewedMentionAt: Date | null;
50
50
  })[];
51
51
  } & {
52
52
  type: import(".prisma/client").$Enums.ConversationType;
53
+ name: string | null;
53
54
  id: string;
54
55
  createdAt: Date;
55
56
  updatedAt: Date;
56
- name: string | null;
57
57
  displayInChat: boolean;
58
58
  };
59
59
  createdBy: {
@@ -66,11 +66,11 @@ export declare const labChatRouter: import("@trpc/server").TRPCBuiltRouter<{
66
66
  } & {
67
67
  context: string;
68
68
  id: string;
69
+ conversationId: string;
69
70
  createdAt: Date;
70
- updatedAt: Date;
71
71
  classId: string;
72
72
  title: string;
73
- conversationId: string;
73
+ updatedAt: Date;
74
74
  createdById: string;
75
75
  };
76
76
  meta: object;
@@ -82,8 +82,8 @@ export declare const labChatRouter: import("@trpc/server").TRPCBuiltRouter<{
82
82
  output: {
83
83
  pendingGenerationMessageId: string | null;
84
84
  class: {
85
- id: string;
86
85
  name: string;
86
+ id: string;
87
87
  subject: string;
88
88
  section: string;
89
89
  };
@@ -99,19 +99,19 @@ export declare const labChatRouter: import("@trpc/server").TRPCBuiltRouter<{
99
99
  };
100
100
  } & {
101
101
  id: string;
102
- role: import(".prisma/client").$Enums.ConversationRole;
103
102
  userId: string;
104
103
  conversationId: string;
104
+ role: import(".prisma/client").$Enums.ConversationRole;
105
105
  joinedAt: Date;
106
106
  lastViewedAt: Date | null;
107
107
  lastViewedMentionAt: Date | null;
108
108
  })[];
109
109
  } & {
110
110
  type: import(".prisma/client").$Enums.ConversationType;
111
+ name: string | null;
111
112
  id: string;
112
113
  createdAt: Date;
113
114
  updatedAt: Date;
114
- name: string | null;
115
115
  displayInChat: boolean;
116
116
  };
117
117
  createdBy: {
@@ -124,11 +124,11 @@ export declare const labChatRouter: import("@trpc/server").TRPCBuiltRouter<{
124
124
  };
125
125
  context: string;
126
126
  id: string;
127
+ conversationId: string;
127
128
  createdAt: Date;
128
- updatedAt: Date;
129
129
  classId: string;
130
130
  title: string;
131
- conversationId: string;
131
+ updatedAt: Date;
132
132
  createdById: string;
133
133
  };
134
134
  meta: object;
@@ -161,11 +161,11 @@ export declare const labChatRouter: import("@trpc/server").TRPCBuiltRouter<{
161
161
  };
162
162
  } & {
163
163
  status: import(".prisma/client").$Enums.GenerationStatus | null;
164
+ meta: import("@prisma/client/runtime/library.js").JsonValue | null;
164
165
  id: string;
166
+ conversationId: string;
165
167
  createdAt: Date;
166
- meta: import("@prisma/client/runtime/library.js").JsonValue | null;
167
168
  content: string;
168
- conversationId: string;
169
169
  senderId: string;
170
170
  };
171
171
  messageCount: number;
@@ -177,6 +177,7 @@ export declare const labChatRouter: import("@trpc/server").TRPCBuiltRouter<{
177
177
  content: string;
178
178
  labChatId: string;
179
179
  mentionedUserIds?: string[] | undefined;
180
+ fileIds?: string[] | undefined;
180
181
  };
181
182
  output: {
182
183
  id: string;
@@ -192,6 +193,11 @@ export declare const labChatRouter: import("@trpc/server").TRPCBuiltRouter<{
192
193
  profilePicture: string | null;
193
194
  } | null;
194
195
  };
196
+ attachments: {
197
+ type: string;
198
+ name: string;
199
+ id: string;
200
+ }[];
195
201
  mentionedUserIds: string[];
196
202
  };
197
203
  meta: object;
@@ -1 +1 @@
1
- {"version":3,"file":"labChat.d.ts","sourceRoot":"/","sources":["routers/labChat.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAWxB,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoDxB,CAAC"}
1
+ {"version":3,"file":"labChat.d.ts","sourceRoot":"/","sources":["routers/labChat.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAWxB,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsDxB,CAAC"}
@@ -1,5 +1,5 @@
1
1
 
2
- !function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="7e66f0ea-6be2-5c71-8493-3b6a5bb95de2")}catch(e){}}();
2
+ !function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="f18914ac-2f4a-550b-965e-60912d8a1440")}catch(e){}}();
3
3
  import { z } from "zod";
4
4
  import { createTRPCRouter, protectedProcedure } from "../trpc.js";
5
5
  import { createLabChat, getLabChat, listLabChats, postToLabChat, deleteLabChat, rerunLastResponse, } from "../services/labChat.js";
@@ -24,13 +24,15 @@ export const labChatRouter = createTRPCRouter({
24
24
  postToLabChat: protectedProcedure
25
25
  .input(z.object({
26
26
  labChatId: z.string(),
27
- content: z.string().min(1).max(4000),
27
+ content: z.string().max(4000),
28
28
  mentionedUserIds: z.array(z.string()).optional(),
29
+ fileIds: z.array(z.string()).max(10).optional(),
29
30
  }))
30
31
  .mutation(({ ctx, input }) => postToLabChat(ctx.user.id, {
31
32
  labChatId: input.labChatId,
32
33
  content: input.content,
33
34
  mentionedUserIds: input.mentionedUserIds,
35
+ fileIds: input.fileIds,
34
36
  })),
35
37
  delete: protectedProcedure
36
38
  .input(z.object({ labChatId: z.string() }))
@@ -40,4 +42,4 @@ export const labChatRouter = createTRPCRouter({
40
42
  .mutation(({ ctx, input }) => rerunLastResponse(ctx.user.id, input.labChatId)),
41
43
  });
42
44
  //# sourceMappingURL=labChat.js.map
43
- //# debugId=7e66f0ea-6be2-5c71-8493-3b6a5bb95de2
45
+ //# debugId=f18914ac-2f4a-550b-965e-60912d8a1440
@@ -1 +1 @@
1
- {"version":3,"file":"labChat.js","sources":["routers/labChat.ts"],"sourceRoot":"/","sourcesContent":["import { z } from \"zod\";\nimport { createTRPCRouter, protectedProcedure } from \"../trpc.js\";\nimport {\n createLabChat,\n getLabChat,\n listLabChats,\n postToLabChat,\n deleteLabChat,\n rerunLastResponse,\n} from \"../services/labChat.js\";\n\nexport const labChatRouter = createTRPCRouter({\n create: protectedProcedure\n .input(\n z.object({\n classId: z.string(),\n title: z.string().min(1).max(200),\n context: z.string(),\n })\n )\n .mutation(({ ctx, input }) =>\n createLabChat(ctx.user!.id, {\n classId: input.classId,\n title: input.title,\n context: input.context,\n })\n ),\n\n get: protectedProcedure\n .input(z.object({ labChatId: z.string() }))\n .query(({ ctx, input }) => getLabChat(ctx.user!.id, input.labChatId)),\n\n list: protectedProcedure\n .input(z.object({ classId: z.string() }))\n .query(({ ctx, input }) => listLabChats(ctx.user!.id, input.classId)),\n\n postToLabChat: protectedProcedure\n .input(\n z.object({\n labChatId: z.string(),\n content: z.string().min(1).max(4000),\n mentionedUserIds: z.array(z.string()).optional(),\n })\n )\n .mutation(({ ctx, input }) =>\n postToLabChat(ctx.user!.id, {\n labChatId: input.labChatId,\n content: input.content,\n mentionedUserIds: input.mentionedUserIds,\n })\n ),\n\n delete: protectedProcedure\n .input(z.object({ labChatId: z.string() }))\n .mutation(({ ctx, input }) =>\n deleteLabChat(ctx.user!.id, input.labChatId)\n ),\n\n rerunLastResponse: protectedProcedure\n .input(z.object({ labChatId: z.string() }))\n .mutation(({ ctx, input }) =>\n rerunLastResponse(ctx.user!.id, input.labChatId)\n ),\n});\n"],"names":[],"mappings":"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","debug_id":"7e66f0ea-6be2-5c71-8493-3b6a5bb95de2"}
1
+ {"version":3,"file":"labChat.js","sources":["routers/labChat.ts"],"sourceRoot":"/","sourcesContent":["import { z } from \"zod\";\nimport { createTRPCRouter, protectedProcedure } from \"../trpc.js\";\nimport {\n createLabChat,\n getLabChat,\n listLabChats,\n postToLabChat,\n deleteLabChat,\n rerunLastResponse,\n} from \"../services/labChat.js\";\n\nexport const labChatRouter = createTRPCRouter({\n create: protectedProcedure\n .input(\n z.object({\n classId: z.string(),\n title: z.string().min(1).max(200),\n context: z.string(),\n })\n )\n .mutation(({ ctx, input }) =>\n createLabChat(ctx.user!.id, {\n classId: input.classId,\n title: input.title,\n context: input.context,\n })\n ),\n\n get: protectedProcedure\n .input(z.object({ labChatId: z.string() }))\n .query(({ ctx, input }) => getLabChat(ctx.user!.id, input.labChatId)),\n\n list: protectedProcedure\n .input(z.object({ classId: z.string() }))\n .query(({ ctx, input }) => listLabChats(ctx.user!.id, input.classId)),\n\n postToLabChat: protectedProcedure\n .input(\n z.object({\n labChatId: z.string(),\n content: z.string().max(4000),\n mentionedUserIds: z.array(z.string()).optional(),\n fileIds: z.array(z.string()).max(10).optional(),\n })\n )\n .mutation(({ ctx, input }) =>\n postToLabChat(ctx.user!.id, {\n labChatId: input.labChatId,\n content: input.content,\n mentionedUserIds: input.mentionedUserIds,\n fileIds: input.fileIds,\n })\n ),\n\n delete: protectedProcedure\n .input(z.object({ labChatId: z.string() }))\n .mutation(({ ctx, input }) =>\n deleteLabChat(ctx.user!.id, input.labChatId)\n ),\n\n rerunLastResponse: protectedProcedure\n .input(z.object({ labChatId: z.string() }))\n .mutation(({ ctx, input }) =>\n rerunLastResponse(ctx.user!.id, input.labChatId)\n ),\n});\n"],"names":[],"mappings":";;AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAClE,OAAO,EACL,aAAa,EACb,UAAU,EACV,YAAY,EACZ,aAAa,EACb,aAAa,EACb,iBAAiB,GAClB,MAAM,wBAAwB,CAAC;AAEhC,MAAM,CAAC,MAAM,aAAa,GAAG,gBAAgB,CAAC;IAC5C,MAAM,EAAE,kBAAkB;SACvB,KAAK,CACJ,CAAC,CAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;QACnB,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC;QACjC,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;KACpB,CAAC,CACH;SACA,QAAQ,CAAC,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE,EAAE,CAC3B,aAAa,CAAC,GAAG,CAAC,IAAK,CAAC,EAAE,EAAE;QAC1B,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,KAAK,EAAE,KAAK,CAAC,KAAK;QAClB,OAAO,EAAE,KAAK,CAAC,OAAO;KACvB,CAAC,CACH;IAEH,GAAG,EAAE,kBAAkB;SACpB,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;SAC1C,KAAK,CAAC,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,IAAK,CAAC,EAAE,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;IAEvE,IAAI,EAAE,kBAAkB;SACrB,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;SACxC,KAAK,CAAC,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,YAAY,CAAC,GAAG,CAAC,IAAK,CAAC,EAAE,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;IAEvE,aAAa,EAAE,kBAAkB;SAC9B,KAAK,CACJ,CAAC,CAAC,MAAM,CAAC;QACP,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;QACrB,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC;QAC7B,gBAAgB,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;QAChD,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,QAAQ,EAAE;KAChD,CAAC,CACH;SACA,QAAQ,CAAC,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE,EAAE,CAC3B,aAAa,CAAC,GAAG,CAAC,IAAK,CAAC,EAAE,EAAE;QAC1B,SAAS,EAAE,KAAK,CAAC,SAAS;QAC1B,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,gBAAgB,EAAE,KAAK,CAAC,gBAAgB;QACxC,OAAO,EAAE,KAAK,CAAC,OAAO;KACvB,CAAC,CACH;IAEH,MAAM,EAAE,kBAAkB;SACvB,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;SAC1C,QAAQ,CAAC,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE,EAAE,CAC3B,aAAa,CAAC,GAAG,CAAC,IAAK,CAAC,EAAE,EAAE,KAAK,CAAC,SAAS,CAAC,CAC7C;IAEH,iBAAiB,EAAE,kBAAkB;SAClC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;SAC1C,QAAQ,CAAC,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE,EAAE,CAC3B,iBAAiB,CAAC,GAAG,CAAC,IAAK,CAAC,EAAE,EAAE,KAAK,CAAC,SAAS,CAAC,CACjD;CACJ,CAAC,CAAC","debug_id":"f18914ac-2f4a-550b-965e-60912d8a1440"}
@@ -46,10 +46,10 @@ export declare const marketingRouter: import("@trpc/server").TRPCBuiltRouter<{
46
46
  output: {
47
47
  type: string;
48
48
  status: string;
49
- id: string;
50
- website: string | null;
51
49
  name: string;
50
+ id: string;
52
51
  submittedAt: Date | null;
52
+ website: string | null;
53
53
  address: string;
54
54
  city: string;
55
55
  country: string;
@@ -60,9 +60,10 @@ export declare const messageRouter: import("@trpc/server").TRPCBuiltRouter<{
60
60
  }>;
61
61
  send: import("@trpc/server").TRPCMutationProcedure<{
62
62
  input: {
63
- content: string;
64
63
  conversationId: string;
64
+ content: string;
65
65
  mentionedUserIds?: string[] | undefined;
66
+ fileIds?: string[] | undefined;
66
67
  };
67
68
  output: {
68
69
  id: string;
@@ -78,14 +79,44 @@ export declare const messageRouter: import("@trpc/server").TRPCBuiltRouter<{
78
79
  profilePicture: string | null;
79
80
  } | null;
80
81
  };
82
+ attachments: {
83
+ type: string;
84
+ name: string;
85
+ id: string;
86
+ }[];
81
87
  mentionedUserIds: string[];
82
88
  };
83
89
  meta: object;
84
90
  }>;
91
+ getUploadUrls: import("@trpc/server").TRPCMutationProcedure<{
92
+ input: {
93
+ conversationId: string;
94
+ files: {
95
+ type: string;
96
+ name: string;
97
+ size: number;
98
+ }[];
99
+ };
100
+ output: import("../lib/fileUpload.js").DirectUploadFile[];
101
+ meta: object;
102
+ }>;
103
+ confirmUpload: import("@trpc/server").TRPCMutationProcedure<{
104
+ input: {
105
+ conversationId: string;
106
+ fileId: string;
107
+ uploadSuccess: boolean;
108
+ errorMessage?: string | undefined;
109
+ };
110
+ output: {
111
+ success: boolean;
112
+ message: string;
113
+ };
114
+ meta: object;
115
+ }>;
85
116
  update: import("@trpc/server").TRPCMutationProcedure<{
86
117
  input: {
87
- content: string;
88
118
  messageId: string;
119
+ content: string;
89
120
  mentionedUserIds?: string[] | undefined;
90
121
  };
91
122
  output: {
@@ -1 +1 @@
1
- {"version":3,"file":"message.d.ts","sourceRoot":"/","sources":["routers/message.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAaxB,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkFxB,CAAC"}
1
+ {"version":3,"file":"message.d.ts","sourceRoot":"/","sources":["routers/message.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAexB,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqHxB,CAAC"}
@@ -1,8 +1,8 @@
1
1
 
2
- !function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="6ac15b81-ef18-5151-87a3-54cdedf1a0a2")}catch(e){}}();
2
+ !function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="5b5e332c-7fdd-563b-9413-4a6e93a91642")}catch(e){}}();
3
3
  import { z } from "zod";
4
4
  import { createTRPCRouter, protectedProcedure } from "../trpc.js";
5
- import { listMessages, sendMessage, updateMessage, deleteMessage, markAsRead, markMentionsAsRead, markSuggestionCreated, getUnreadCount, } from "../services/message.js";
5
+ import { listMessages, sendMessage, updateMessage, deleteMessage, getMessageUploadUrls, confirmMessageUpload, markAsRead, markMentionsAsRead, markSuggestionCreated, getUnreadCount, } from "../services/message.js";
6
6
  export const messageRouter = createTRPCRouter({
7
7
  list: protectedProcedure
8
8
  .input(z.object({
@@ -18,14 +18,37 @@ export const messageRouter = createTRPCRouter({
18
18
  send: protectedProcedure
19
19
  .input(z.object({
20
20
  conversationId: z.string(),
21
- content: z.string().min(1).max(4000),
21
+ content: z.string().max(4000),
22
22
  mentionedUserIds: z.array(z.string()).optional(),
23
+ fileIds: z.array(z.string()).max(10).optional(),
23
24
  }))
24
25
  .mutation(({ ctx, input }) => sendMessage(ctx.user.id, {
25
26
  conversationId: input.conversationId,
26
27
  content: input.content,
27
28
  mentionedUserIds: input.mentionedUserIds,
29
+ fileIds: input.fileIds,
28
30
  })),
31
+ getUploadUrls: protectedProcedure
32
+ .input(z.object({
33
+ conversationId: z.string(),
34
+ files: z
35
+ .array(z.object({
36
+ name: z.string().min(1),
37
+ type: z.string().min(1),
38
+ size: z.number().int().nonnegative(),
39
+ }))
40
+ .min(1)
41
+ .max(10),
42
+ }))
43
+ .mutation(({ ctx, input }) => getMessageUploadUrls(ctx.user.id, input)),
44
+ confirmUpload: protectedProcedure
45
+ .input(z.object({
46
+ conversationId: z.string(),
47
+ fileId: z.string(),
48
+ uploadSuccess: z.boolean(),
49
+ errorMessage: z.string().optional(),
50
+ }))
51
+ .mutation(({ ctx, input }) => confirmMessageUpload(ctx.user.id, input)),
29
52
  update: protectedProcedure
30
53
  .input(z.object({
31
54
  messageId: z.string(),
@@ -58,4 +81,4 @@ export const messageRouter = createTRPCRouter({
58
81
  .query(({ ctx, input }) => getUnreadCount(ctx.user.id, input.conversationId)),
59
82
  });
60
83
  //# sourceMappingURL=message.js.map
61
- //# debugId=6ac15b81-ef18-5151-87a3-54cdedf1a0a2
84
+ //# debugId=5b5e332c-7fdd-563b-9413-4a6e93a91642
@@ -1 +1 @@
1
- {"version":3,"file":"message.js","sources":["routers/message.ts"],"sourceRoot":"/","sourcesContent":["import { z } from \"zod\";\nimport { createTRPCRouter, protectedProcedure } from \"../trpc.js\";\nimport {\n listMessages,\n sendMessage,\n updateMessage,\n deleteMessage,\n markAsRead,\n markMentionsAsRead,\n markSuggestionCreated,\n getUnreadCount,\n} from \"../services/message.js\";\n\nexport const messageRouter = createTRPCRouter({\n list: protectedProcedure\n .input(\n z.object({\n conversationId: z.string(),\n cursor: z.string().optional(),\n limit: z.number().min(1).max(100).default(50),\n })\n )\n .query(({ ctx, input }) =>\n listMessages(ctx.user!.id, {\n conversationId: input.conversationId,\n cursor: input.cursor,\n limit: input.limit,\n })\n ),\n\n send: protectedProcedure\n .input(\n z.object({\n conversationId: z.string(),\n content: z.string().min(1).max(4000),\n mentionedUserIds: z.array(z.string()).optional(),\n })\n )\n .mutation(({ ctx, input }) =>\n sendMessage(ctx.user!.id, {\n conversationId: input.conversationId,\n content: input.content,\n mentionedUserIds: input.mentionedUserIds,\n })\n ),\n\n update: protectedProcedure\n .input(\n z.object({\n messageId: z.string(),\n content: z.string().min(1).max(4000),\n mentionedUserIds: z.array(z.string()).optional(),\n })\n )\n .mutation(({ ctx, input }) =>\n updateMessage(ctx.user!.id, {\n messageId: input.messageId,\n content: input.content,\n mentionedUserIds: input.mentionedUserIds,\n })\n ),\n\n delete: protectedProcedure\n .input(z.object({ messageId: z.string() }))\n .mutation(({ ctx, input }) => deleteMessage(ctx.user!.id, input.messageId)),\n\n markAsRead: protectedProcedure\n .input(z.object({ conversationId: z.string() }))\n .mutation(({ ctx, input }) =>\n markAsRead(ctx.user!.id, input.conversationId)\n ),\n\n markMentionsAsRead: protectedProcedure\n .input(z.object({ conversationId: z.string() }))\n .mutation(({ ctx, input }) =>\n markMentionsAsRead(ctx.user!.id, input.conversationId)\n ),\n\n markSuggestionCreated: protectedProcedure\n .input(\n z.object({\n messageId: z.string(),\n type: z.enum([\"assignment\", \"worksheet\", \"section\"]),\n index: z.number().int().min(0),\n })\n )\n .mutation(({ ctx, input }) =>\n markSuggestionCreated(ctx.user!.id, input)\n ),\n\n getUnreadCount: protectedProcedure\n .input(z.object({ conversationId: z.string() }))\n .query(({ ctx, input }) =>\n getUnreadCount(ctx.user!.id, input.conversationId)\n ),\n});\n"],"names":[],"mappings":"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","debug_id":"6ac15b81-ef18-5151-87a3-54cdedf1a0a2"}
1
+ {"version":3,"file":"message.js","sources":["routers/message.ts"],"sourceRoot":"/","sourcesContent":["import { z } from \"zod\";\nimport { createTRPCRouter, protectedProcedure } from \"../trpc.js\";\nimport {\n listMessages,\n sendMessage,\n updateMessage,\n deleteMessage,\n getMessageUploadUrls,\n confirmMessageUpload,\n markAsRead,\n markMentionsAsRead,\n markSuggestionCreated,\n getUnreadCount,\n} from \"../services/message.js\";\n\nexport const messageRouter = createTRPCRouter({\n list: protectedProcedure\n .input(\n z.object({\n conversationId: z.string(),\n cursor: z.string().optional(),\n limit: z.number().min(1).max(100).default(50),\n })\n )\n .query(({ ctx, input }) =>\n listMessages(ctx.user!.id, {\n conversationId: input.conversationId,\n cursor: input.cursor,\n limit: input.limit,\n })\n ),\n\n send: protectedProcedure\n .input(\n z.object({\n conversationId: z.string(),\n content: z.string().max(4000),\n mentionedUserIds: z.array(z.string()).optional(),\n fileIds: z.array(z.string()).max(10).optional(),\n })\n )\n .mutation(({ ctx, input }) =>\n sendMessage(ctx.user!.id, {\n conversationId: input.conversationId,\n content: input.content,\n mentionedUserIds: input.mentionedUserIds,\n fileIds: input.fileIds,\n })\n ),\n\n getUploadUrls: protectedProcedure\n .input(\n z.object({\n conversationId: z.string(),\n files: z\n .array(\n z.object({\n name: z.string().min(1),\n type: z.string().min(1),\n size: z.number().int().nonnegative(),\n })\n )\n .min(1)\n .max(10),\n })\n )\n .mutation(({ ctx, input }) =>\n getMessageUploadUrls(ctx.user!.id, input)\n ),\n\n confirmUpload: protectedProcedure\n .input(\n z.object({\n conversationId: z.string(),\n fileId: z.string(),\n uploadSuccess: z.boolean(),\n errorMessage: z.string().optional(),\n })\n )\n .mutation(({ ctx, input }) =>\n confirmMessageUpload(ctx.user!.id, input)\n ),\n\n update: protectedProcedure\n .input(\n z.object({\n messageId: z.string(),\n content: z.string().min(1).max(4000),\n mentionedUserIds: z.array(z.string()).optional(),\n })\n )\n .mutation(({ ctx, input }) =>\n updateMessage(ctx.user!.id, {\n messageId: input.messageId,\n content: input.content,\n mentionedUserIds: input.mentionedUserIds,\n })\n ),\n\n delete: protectedProcedure\n .input(z.object({ messageId: z.string() }))\n .mutation(({ ctx, input }) => deleteMessage(ctx.user!.id, input.messageId)),\n\n markAsRead: protectedProcedure\n .input(z.object({ conversationId: z.string() }))\n .mutation(({ ctx, input }) =>\n markAsRead(ctx.user!.id, input.conversationId)\n ),\n\n markMentionsAsRead: protectedProcedure\n .input(z.object({ conversationId: z.string() }))\n .mutation(({ ctx, input }) =>\n markMentionsAsRead(ctx.user!.id, input.conversationId)\n ),\n\n markSuggestionCreated: protectedProcedure\n .input(\n z.object({\n messageId: z.string(),\n type: z.enum([\"assignment\", \"worksheet\", \"section\"]),\n index: z.number().int().min(0),\n })\n )\n .mutation(({ ctx, input }) =>\n markSuggestionCreated(ctx.user!.id, input)\n ),\n\n getUnreadCount: protectedProcedure\n .input(z.object({ conversationId: z.string() }))\n .query(({ ctx, input }) =>\n getUnreadCount(ctx.user!.id, input.conversationId)\n ),\n});\n"],"names":[],"mappings":"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","debug_id":"5b5e332c-7fdd-563b-9413-4a6e93a91642"}