@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
@@ -5576,6 +5576,7 @@ export declare const appRouter: import("@trpc/server").TRPCBuiltRouter<{
5576
5576
  content: string;
5577
5577
  senderId: string;
5578
5578
  conversationId: string;
5579
+ aiFeedback: import(".prisma/client").$Enums.AiMessageFeedback | null;
5579
5580
  runJobId: string | null;
5580
5581
  };
5581
5582
  unreadCount: number;
@@ -5787,6 +5788,7 @@ export declare const appRouter: import("@trpc/server").TRPCBuiltRouter<{
5787
5788
  } | null;
5788
5789
  };
5789
5790
  status: import(".prisma/client").$Enums.JobStatus | null;
5791
+ aiFeedback: import(".prisma/client").$Enums.AiMessageFeedback | null;
5790
5792
  attachments: {
5791
5793
  path: string;
5792
5794
  type: string;
@@ -5917,6 +5919,15 @@ export declare const appRouter: import("@trpc/server").TRPCBuiltRouter<{
5917
5919
  };
5918
5920
  meta: object;
5919
5921
  }>;
5922
+ cancelAiGeneration: import("@trpc/server").TRPCMutationProcedure<{
5923
+ input: {
5924
+ messageId: string;
5925
+ };
5926
+ output: {
5927
+ success: boolean;
5928
+ };
5929
+ meta: object;
5930
+ }>;
5920
5931
  markAsRead: import("@trpc/server").TRPCMutationProcedure<{
5921
5932
  input: {
5922
5933
  conversationId: string;
@@ -5935,14 +5946,15 @@ export declare const appRouter: import("@trpc/server").TRPCBuiltRouter<{
5935
5946
  };
5936
5947
  meta: object;
5937
5948
  }>;
5938
- markSuggestionCreated: import("@trpc/server").TRPCMutationProcedure<{
5949
+ resolveAiProposal: import("@trpc/server").TRPCMutationProcedure<{
5939
5950
  input: {
5940
- type: "assignment" | "section" | "worksheet";
5941
5951
  messageId: string;
5942
- index: number;
5952
+ proposalId: string;
5953
+ action: "approve" | "dismiss";
5943
5954
  };
5944
5955
  output: {
5945
- success: boolean;
5956
+ status: import("../services/aiProposals.js").PendingCreationStatus;
5957
+ createdId: string | null;
5946
5958
  };
5947
5959
  meta: object;
5948
5960
  }>;
@@ -5956,6 +5968,28 @@ export declare const appRouter: import("@trpc/server").TRPCBuiltRouter<{
5956
5968
  };
5957
5969
  meta: object;
5958
5970
  }>;
5971
+ regenerateAIResponse: import("@trpc/server").TRPCMutationProcedure<{
5972
+ input: {
5973
+ messageId: string;
5974
+ };
5975
+ output: {
5976
+ success: boolean;
5977
+ messageId: string;
5978
+ };
5979
+ meta: object;
5980
+ }>;
5981
+ setAIFeedback: import("@trpc/server").TRPCMutationProcedure<{
5982
+ input: {
5983
+ feedback: "UP" | "DOWN" | null;
5984
+ messageId: string;
5985
+ };
5986
+ output: {
5987
+ success: boolean;
5988
+ messageId: string;
5989
+ feedback: import(".prisma/client").$Enums.AiMessageFeedback | null;
5990
+ };
5991
+ meta: object;
5992
+ }>;
5959
5993
  }>>;
5960
5994
  labChat: import("@trpc/server").TRPCBuiltRouter<{
5961
5995
  ctx: import("../trpc.js").Context;
@@ -6127,12 +6161,22 @@ export declare const appRouter: import("@trpc/server").TRPCBuiltRouter<{
6127
6161
  content: string;
6128
6162
  senderId: string;
6129
6163
  conversationId: string;
6164
+ aiFeedback: import(".prisma/client").$Enums.AiMessageFeedback | null;
6130
6165
  runJobId: string | null;
6131
6166
  };
6132
6167
  messageCount: number;
6133
6168
  }[];
6134
6169
  meta: object;
6135
6170
  }>;
6171
+ starterPrompts: import("@trpc/server").TRPCQueryProcedure<{
6172
+ input: {
6173
+ classId: string;
6174
+ };
6175
+ output: {
6176
+ prompts: string[];
6177
+ };
6178
+ meta: object;
6179
+ }>;
6136
6180
  postToLabChat: import("@trpc/server").TRPCMutationProcedure<{
6137
6181
  input: {
6138
6182
  content: string;
@@ -7286,6 +7330,50 @@ export declare const appRouter: import("@trpc/server").TRPCBuiltRouter<{
7286
7330
  };
7287
7331
  meta: object;
7288
7332
  }>;
7333
+ generateFollowUpAssignment: import("@trpc/server").TRPCMutationProcedure<{
7334
+ input: {
7335
+ [x: string]: unknown;
7336
+ classId: string;
7337
+ submissionId: string;
7338
+ prompt: string;
7339
+ studentId: string;
7340
+ dueDate?: string | undefined;
7341
+ };
7342
+ output: {
7343
+ assignment: {
7344
+ type: import(".prisma/client").$Enums.AssignmentType;
7345
+ class: {
7346
+ id: string;
7347
+ name: string;
7348
+ };
7349
+ section: {
7350
+ id: string;
7351
+ name: string;
7352
+ } | null;
7353
+ id: string;
7354
+ title: string;
7355
+ dueDate: Date;
7356
+ maxGrade: number | null;
7357
+ attachments: {
7358
+ type: string;
7359
+ id: string;
7360
+ name: string;
7361
+ }[];
7362
+ instructions: string;
7363
+ graded: boolean;
7364
+ weight: number;
7365
+ teacher: {
7366
+ id: string;
7367
+ username: string;
7368
+ };
7369
+ };
7370
+ draft: {
7371
+ title: string;
7372
+ instructions: string;
7373
+ };
7374
+ };
7375
+ meta: object;
7376
+ }>;
7289
7377
  chat: import("@trpc/server").TRPCMutationProcedure<{
7290
7378
  input: {
7291
7379
  [x: string]: unknown;
@@ -10174,7 +10262,6 @@ export declare const appRouter: import("@trpc/server").TRPCBuiltRouter<{
10174
10262
  } | null;
10175
10263
  sessions: {
10176
10264
  type: import(".prisma/client").$Enums.SessionType;
10177
- id: string;
10178
10265
  createdAt: Date | null;
10179
10266
  expiresAt: Date | null;
10180
10267
  }[];
@@ -10255,7 +10342,7 @@ export declare const appRouter: import("@trpc/server").TRPCBuiltRouter<{
10255
10342
  meta: object;
10256
10343
  }>;
10257
10344
  }>>;
10258
- gradebook: import("@trpc/server").TRPCBuiltRouter<{
10345
+ module: import("@trpc/server").TRPCBuiltRouter<{
10259
10346
  ctx: import("../trpc.js").Context;
10260
10347
  meta: object;
10261
10348
  errorShape: {
@@ -10272,207 +10359,547 @@ export declare const appRouter: import("@trpc/server").TRPCBuiltRouter<{
10272
10359
  };
10273
10360
  transformer: false;
10274
10361
  }, import("@trpc/server").TRPCDecorateCreateRouterOptions<{
10275
- listCategories: import("@trpc/server").TRPCQueryProcedure<{
10362
+ list: import("@trpc/server").TRPCQueryProcedure<{
10276
10363
  input: {
10277
10364
  [x: string]: unknown;
10278
10365
  classId: string;
10279
10366
  };
10280
- output: {
10367
+ output: ({
10368
+ items: {
10369
+ id: string;
10370
+ title: string | null;
10371
+ position: number;
10372
+ moduleId: string;
10373
+ indent: number;
10374
+ itemType: import(".prisma/client").$Enums.CourseModuleItemType;
10375
+ itemId: string | null;
10376
+ externalUrl: string | null;
10377
+ requirementType: import(".prisma/client").$Enums.ModuleItemRequirementType | null;
10378
+ requiredScore: number | null;
10379
+ }[];
10380
+ prerequisites: {
10381
+ prerequisiteId: string;
10382
+ }[];
10383
+ } & {
10281
10384
  id: string;
10282
- name: string;
10385
+ createdAt: Date;
10386
+ updatedAt: Date;
10283
10387
  classId: string;
10284
- weight: number;
10285
- dropLowest: number;
10388
+ title: string;
10286
10389
  position: number;
10287
- }[];
10390
+ published: boolean;
10391
+ unlockAt: Date | null;
10392
+ requireSequential: boolean;
10393
+ })[];
10288
10394
  meta: object;
10289
10395
  }>;
10290
- createCategory: import("@trpc/server").TRPCMutationProcedure<{
10396
+ getStudentState: import("@trpc/server").TRPCQueryProcedure<{
10291
10397
  input: {
10292
10398
  [x: string]: unknown;
10293
10399
  classId: string;
10294
- name: string;
10295
- weight: number;
10296
- dropLowest?: number | undefined;
10297
- position?: number | undefined;
10298
10400
  };
10299
10401
  output: {
10300
- id: string;
10301
- name: string;
10302
- classId: string;
10303
- weight: number;
10304
- dropLowest: number;
10305
- position: number;
10402
+ modules: {
10403
+ items: {
10404
+ completed: boolean;
10405
+ accessible: boolean;
10406
+ worksheetAssignmentId: string | null;
10407
+ id: string;
10408
+ title: string | null;
10409
+ position: number;
10410
+ moduleId: string;
10411
+ indent: number;
10412
+ itemType: import(".prisma/client").$Enums.CourseModuleItemType;
10413
+ itemId: string | null;
10414
+ externalUrl: string | null;
10415
+ requirementType: import(".prisma/client").$Enums.ModuleItemRequirementType | null;
10416
+ requiredScore: number | null;
10417
+ }[];
10418
+ locked: boolean;
10419
+ lockedByPrerequisite: boolean;
10420
+ lockedByDate: boolean;
10421
+ completed: boolean;
10422
+ requiredCount: number;
10423
+ completedRequiredCount: number;
10424
+ percentComplete: number;
10425
+ prerequisites: {
10426
+ prerequisiteId: string;
10427
+ }[];
10428
+ id: string;
10429
+ createdAt: Date;
10430
+ updatedAt: Date;
10431
+ classId: string;
10432
+ title: string;
10433
+ position: number;
10434
+ published: boolean;
10435
+ unlockAt: Date | null;
10436
+ requireSequential: boolean;
10437
+ }[];
10438
+ continueItemId: null;
10439
+ continueModuleId: null;
10306
10440
  };
10307
10441
  meta: object;
10308
10442
  }>;
10309
- updateCategory: import("@trpc/server").TRPCMutationProcedure<{
10443
+ create: import("@trpc/server").TRPCMutationProcedure<{
10310
10444
  input: {
10311
10445
  [x: string]: unknown;
10312
10446
  classId: string;
10313
- categoryId: string;
10314
- name?: string | undefined;
10315
- weight?: number | undefined;
10316
- dropLowest?: number | undefined;
10317
- position?: number | undefined;
10447
+ title: string;
10448
+ unlockAt?: Date | null | undefined;
10449
+ requireSequential?: boolean | undefined;
10318
10450
  };
10319
10451
  output: {
10452
+ items: {
10453
+ id: string;
10454
+ title: string | null;
10455
+ position: number;
10456
+ moduleId: string;
10457
+ indent: number;
10458
+ itemType: import(".prisma/client").$Enums.CourseModuleItemType;
10459
+ itemId: string | null;
10460
+ externalUrl: string | null;
10461
+ requirementType: import(".prisma/client").$Enums.ModuleItemRequirementType | null;
10462
+ requiredScore: number | null;
10463
+ }[];
10464
+ prerequisites: {
10465
+ prerequisiteId: string;
10466
+ }[];
10467
+ } & {
10320
10468
  id: string;
10321
- name: string;
10469
+ createdAt: Date;
10470
+ updatedAt: Date;
10322
10471
  classId: string;
10323
- weight: number;
10324
- dropLowest: number;
10472
+ title: string;
10325
10473
  position: number;
10474
+ published: boolean;
10475
+ unlockAt: Date | null;
10476
+ requireSequential: boolean;
10326
10477
  };
10327
10478
  meta: object;
10328
10479
  }>;
10329
- deleteCategory: import("@trpc/server").TRPCMutationProcedure<{
10480
+ update: import("@trpc/server").TRPCMutationProcedure<{
10330
10481
  input: {
10331
10482
  [x: string]: unknown;
10332
10483
  classId: string;
10333
- categoryId: string;
10484
+ id: string;
10485
+ title?: string | undefined;
10486
+ published?: boolean | undefined;
10487
+ unlockAt?: Date | null | undefined;
10488
+ requireSequential?: boolean | undefined;
10489
+ prerequisiteIds?: string[] | undefined;
10334
10490
  };
10335
10491
  output: {
10492
+ items: {
10493
+ id: string;
10494
+ title: string | null;
10495
+ position: number;
10496
+ moduleId: string;
10497
+ indent: number;
10498
+ itemType: import(".prisma/client").$Enums.CourseModuleItemType;
10499
+ itemId: string | null;
10500
+ externalUrl: string | null;
10501
+ requirementType: import(".prisma/client").$Enums.ModuleItemRequirementType | null;
10502
+ requiredScore: number | null;
10503
+ }[];
10504
+ prerequisites: {
10505
+ prerequisiteId: string;
10506
+ }[];
10507
+ } & {
10336
10508
  id: string;
10337
- name: string;
10509
+ createdAt: Date;
10510
+ updatedAt: Date;
10338
10511
  classId: string;
10339
- weight: number;
10340
- dropLowest: number;
10512
+ title: string;
10341
10513
  position: number;
10514
+ published: boolean;
10515
+ unlockAt: Date | null;
10516
+ requireSequential: boolean;
10342
10517
  };
10343
10518
  meta: object;
10344
10519
  }>;
10345
- assignCategory: import("@trpc/server").TRPCMutationProcedure<{
10520
+ delete: import("@trpc/server").TRPCMutationProcedure<{
10346
10521
  input: {
10347
10522
  [x: string]: unknown;
10348
10523
  classId: string;
10349
- assignmentId: string;
10350
- gradeCategoryId: string | null;
10524
+ id: string;
10351
10525
  };
10352
10526
  output: {
10353
- type: import(".prisma/client").$Enums.AssignmentType;
10354
10527
  id: string;
10355
- createdAt: Date | null;
10356
- classId: string;
10357
- title: string;
10358
- dueDate: Date;
10359
- maxGrade: number | null;
10360
- eventId: string | null;
10361
- instructions: string;
10362
- modifiedAt: Date | null;
10363
- teacherId: string;
10364
- acceptFiles: boolean;
10365
- acceptExtendedResponse: boolean;
10366
- acceptWorksheet: boolean;
10367
- gradeWithAI: boolean;
10368
- aiPolicyLevel: number;
10369
- sectionId: string | null;
10370
- graded: boolean;
10371
- weight: number;
10372
- inProgress: boolean;
10373
- template: boolean;
10374
- markSchemeId: string | null;
10375
- order: number | null;
10376
- gradingBoundaryId: string | null;
10377
- gradeCategoryId: string | null;
10378
- timeLimitMinutes: number | null;
10379
- singleAttempt: boolean;
10380
- allowLateSubmissions: boolean;
10381
10528
  };
10382
10529
  meta: object;
10383
10530
  }>;
10384
- listColumns: import("@trpc/server").TRPCQueryProcedure<{
10531
+ reorder: import("@trpc/server").TRPCMutationProcedure<{
10385
10532
  input: {
10386
10533
  [x: string]: unknown;
10387
10534
  classId: string;
10535
+ orderedIds: string[];
10388
10536
  };
10389
10537
  output: ({
10390
- entries: {
10538
+ items: {
10391
10539
  id: string;
10392
- points: number;
10393
- studentId: string;
10394
- note: string | null;
10540
+ title: string | null;
10541
+ position: number;
10542
+ moduleId: string;
10543
+ indent: number;
10544
+ itemType: import(".prisma/client").$Enums.CourseModuleItemType;
10545
+ itemId: string | null;
10546
+ externalUrl: string | null;
10547
+ requirementType: import(".prisma/client").$Enums.ModuleItemRequirementType | null;
10548
+ requiredScore: number | null;
10549
+ }[];
10550
+ prerequisites: {
10551
+ prerequisiteId: string;
10395
10552
  }[];
10396
10553
  } & {
10397
10554
  id: string;
10398
- name: string;
10555
+ createdAt: Date;
10556
+ updatedAt: Date;
10399
10557
  classId: string;
10400
- gradeCategoryId: string | null;
10558
+ title: string;
10401
10559
  position: number;
10402
- maxPoints: number;
10560
+ published: boolean;
10561
+ unlockAt: Date | null;
10562
+ requireSequential: boolean;
10403
10563
  })[];
10404
10564
  meta: object;
10405
10565
  }>;
10406
- createColumn: import("@trpc/server").TRPCMutationProcedure<{
10566
+ createItem: import("@trpc/server").TRPCMutationProcedure<{
10407
10567
  input: {
10408
10568
  [x: string]: unknown;
10409
10569
  classId: string;
10410
- name: string;
10411
- maxPoints: number;
10412
- gradeCategoryId?: string | null | undefined;
10413
- position?: number | undefined;
10570
+ moduleId: string;
10571
+ itemType: "FILE" | "ASSIGNMENT" | "WORKSHEET" | "ANNOUNCEMENT" | "DISCUSSION" | "EXTERNAL_URL" | "SUB_HEADER";
10572
+ title?: string | undefined;
10573
+ indent?: number | undefined;
10574
+ itemId?: string | undefined;
10575
+ externalUrl?: string | undefined;
10576
+ requirementType?: "VIEW" | "SUBMIT" | "SCORE_AT_LEAST" | undefined;
10577
+ requiredScore?: number | undefined;
10414
10578
  };
10415
10579
  output: {
10416
10580
  id: string;
10417
- name: string;
10418
- classId: string;
10419
- gradeCategoryId: string | null;
10581
+ title: string | null;
10420
10582
  position: number;
10421
- maxPoints: number;
10583
+ moduleId: string;
10584
+ indent: number;
10585
+ itemType: import(".prisma/client").$Enums.CourseModuleItemType;
10586
+ itemId: string | null;
10587
+ externalUrl: string | null;
10588
+ requirementType: import(".prisma/client").$Enums.ModuleItemRequirementType | null;
10589
+ requiredScore: number | null;
10422
10590
  };
10423
10591
  meta: object;
10424
10592
  }>;
10425
- updateColumn: import("@trpc/server").TRPCMutationProcedure<{
10593
+ updateItem: import("@trpc/server").TRPCMutationProcedure<{
10426
10594
  input: {
10427
10595
  [x: string]: unknown;
10428
10596
  classId: string;
10429
- columnId: string;
10430
- name?: string | undefined;
10431
- gradeCategoryId?: string | null | undefined;
10432
- position?: number | undefined;
10433
- maxPoints?: number | undefined;
10597
+ id: string;
10598
+ title?: string | null | undefined;
10599
+ indent?: number | undefined;
10600
+ externalUrl?: string | undefined;
10601
+ requirementType?: "VIEW" | "SUBMIT" | "SCORE_AT_LEAST" | null | undefined;
10602
+ requiredScore?: number | null | undefined;
10434
10603
  };
10435
10604
  output: {
10436
10605
  id: string;
10437
- name: string;
10438
- classId: string;
10439
- gradeCategoryId: string | null;
10606
+ title: string | null;
10440
10607
  position: number;
10441
- maxPoints: number;
10608
+ moduleId: string;
10609
+ indent: number;
10610
+ itemType: import(".prisma/client").$Enums.CourseModuleItemType;
10611
+ itemId: string | null;
10612
+ externalUrl: string | null;
10613
+ requirementType: import(".prisma/client").$Enums.ModuleItemRequirementType | null;
10614
+ requiredScore: number | null;
10442
10615
  };
10443
10616
  meta: object;
10444
10617
  }>;
10445
- deleteColumn: import("@trpc/server").TRPCMutationProcedure<{
10618
+ deleteItem: import("@trpc/server").TRPCMutationProcedure<{
10446
10619
  input: {
10447
10620
  [x: string]: unknown;
10448
10621
  classId: string;
10449
- columnId: string;
10622
+ id: string;
10450
10623
  };
10451
10624
  output: {
10452
10625
  id: string;
10453
- name: string;
10454
- classId: string;
10455
- gradeCategoryId: string | null;
10456
- position: number;
10457
- maxPoints: number;
10458
10626
  };
10459
10627
  meta: object;
10460
10628
  }>;
10461
- setEntry: import("@trpc/server").TRPCMutationProcedure<{
10629
+ reorderItems: import("@trpc/server").TRPCMutationProcedure<{
10462
10630
  input: {
10463
10631
  [x: string]: unknown;
10464
10632
  classId: string;
10465
- points: number | null;
10466
- studentId: string;
10467
- columnId: string;
10468
- note?: string | null | undefined;
10633
+ items: {
10634
+ id: string;
10635
+ moduleId: string;
10636
+ }[];
10469
10637
  };
10470
- output: {
10638
+ output: ({
10639
+ items: {
10640
+ id: string;
10641
+ title: string | null;
10642
+ position: number;
10643
+ moduleId: string;
10644
+ indent: number;
10645
+ itemType: import(".prisma/client").$Enums.CourseModuleItemType;
10646
+ itemId: string | null;
10647
+ externalUrl: string | null;
10648
+ requirementType: import(".prisma/client").$Enums.ModuleItemRequirementType | null;
10649
+ requiredScore: number | null;
10650
+ }[];
10651
+ prerequisites: {
10652
+ prerequisiteId: string;
10653
+ }[];
10654
+ } & {
10471
10655
  id: string;
10472
- points: number;
10473
- studentId: string;
10474
- note: string | null;
10475
- columnId: string;
10656
+ createdAt: Date;
10657
+ updatedAt: Date;
10658
+ classId: string;
10659
+ title: string;
10660
+ position: number;
10661
+ published: boolean;
10662
+ unlockAt: Date | null;
10663
+ requireSequential: boolean;
10664
+ })[];
10665
+ meta: object;
10666
+ }>;
10667
+ markItemViewed: import("@trpc/server").TRPCMutationProcedure<{
10668
+ input: {
10669
+ [x: string]: unknown;
10670
+ classId: string;
10671
+ itemId: string;
10672
+ };
10673
+ output: {
10674
+ status: import(".prisma/client").$Enums.ModuleItemProgressStatus;
10675
+ id: string;
10676
+ createdAt: Date;
10677
+ updatedAt: Date;
10678
+ moduleItemId: string;
10679
+ studentId: string;
10680
+ completedAt: Date | null;
10681
+ };
10682
+ meta: object;
10683
+ }>;
10684
+ }>>;
10685
+ gradebook: import("@trpc/server").TRPCBuiltRouter<{
10686
+ ctx: import("../trpc.js").Context;
10687
+ meta: object;
10688
+ errorShape: {
10689
+ data: {
10690
+ zodError: import("zod").typeToFlattenedError<any, string> | null;
10691
+ prismaError: import("../utils/prismaErrorHandler.js").PrismaErrorInfo | null;
10692
+ code: import("@trpc/server").TRPC_ERROR_CODE_KEY;
10693
+ httpStatus: number;
10694
+ path?: string;
10695
+ stack?: string;
10696
+ };
10697
+ message: string;
10698
+ code: import("@trpc/server").TRPC_ERROR_CODE_NUMBER;
10699
+ };
10700
+ transformer: false;
10701
+ }, import("@trpc/server").TRPCDecorateCreateRouterOptions<{
10702
+ listCategories: import("@trpc/server").TRPCQueryProcedure<{
10703
+ input: {
10704
+ [x: string]: unknown;
10705
+ classId: string;
10706
+ };
10707
+ output: {
10708
+ id: string;
10709
+ name: string;
10710
+ classId: string;
10711
+ weight: number;
10712
+ dropLowest: number;
10713
+ position: number;
10714
+ }[];
10715
+ meta: object;
10716
+ }>;
10717
+ createCategory: import("@trpc/server").TRPCMutationProcedure<{
10718
+ input: {
10719
+ [x: string]: unknown;
10720
+ classId: string;
10721
+ name: string;
10722
+ weight: number;
10723
+ dropLowest?: number | undefined;
10724
+ position?: number | undefined;
10725
+ };
10726
+ output: {
10727
+ id: string;
10728
+ name: string;
10729
+ classId: string;
10730
+ weight: number;
10731
+ dropLowest: number;
10732
+ position: number;
10733
+ };
10734
+ meta: object;
10735
+ }>;
10736
+ updateCategory: import("@trpc/server").TRPCMutationProcedure<{
10737
+ input: {
10738
+ [x: string]: unknown;
10739
+ classId: string;
10740
+ categoryId: string;
10741
+ name?: string | undefined;
10742
+ weight?: number | undefined;
10743
+ dropLowest?: number | undefined;
10744
+ position?: number | undefined;
10745
+ };
10746
+ output: {
10747
+ id: string;
10748
+ name: string;
10749
+ classId: string;
10750
+ weight: number;
10751
+ dropLowest: number;
10752
+ position: number;
10753
+ };
10754
+ meta: object;
10755
+ }>;
10756
+ deleteCategory: import("@trpc/server").TRPCMutationProcedure<{
10757
+ input: {
10758
+ [x: string]: unknown;
10759
+ classId: string;
10760
+ categoryId: string;
10761
+ };
10762
+ output: {
10763
+ id: string;
10764
+ name: string;
10765
+ classId: string;
10766
+ weight: number;
10767
+ dropLowest: number;
10768
+ position: number;
10769
+ };
10770
+ meta: object;
10771
+ }>;
10772
+ assignCategory: import("@trpc/server").TRPCMutationProcedure<{
10773
+ input: {
10774
+ [x: string]: unknown;
10775
+ classId: string;
10776
+ assignmentId: string;
10777
+ gradeCategoryId: string | null;
10778
+ };
10779
+ output: {
10780
+ type: import(".prisma/client").$Enums.AssignmentType;
10781
+ id: string;
10782
+ createdAt: Date | null;
10783
+ classId: string;
10784
+ title: string;
10785
+ dueDate: Date;
10786
+ maxGrade: number | null;
10787
+ eventId: string | null;
10788
+ instructions: string;
10789
+ modifiedAt: Date | null;
10790
+ teacherId: string;
10791
+ acceptFiles: boolean;
10792
+ acceptExtendedResponse: boolean;
10793
+ acceptWorksheet: boolean;
10794
+ gradeWithAI: boolean;
10795
+ aiPolicyLevel: number;
10796
+ sectionId: string | null;
10797
+ graded: boolean;
10798
+ weight: number;
10799
+ inProgress: boolean;
10800
+ template: boolean;
10801
+ markSchemeId: string | null;
10802
+ order: number | null;
10803
+ gradingBoundaryId: string | null;
10804
+ gradeCategoryId: string | null;
10805
+ timeLimitMinutes: number | null;
10806
+ singleAttempt: boolean;
10807
+ allowLateSubmissions: boolean;
10808
+ };
10809
+ meta: object;
10810
+ }>;
10811
+ listColumns: import("@trpc/server").TRPCQueryProcedure<{
10812
+ input: {
10813
+ [x: string]: unknown;
10814
+ classId: string;
10815
+ };
10816
+ output: ({
10817
+ entries: {
10818
+ id: string;
10819
+ points: number;
10820
+ studentId: string;
10821
+ note: string | null;
10822
+ }[];
10823
+ } & {
10824
+ id: string;
10825
+ name: string;
10826
+ classId: string;
10827
+ gradeCategoryId: string | null;
10828
+ position: number;
10829
+ maxPoints: number;
10830
+ })[];
10831
+ meta: object;
10832
+ }>;
10833
+ createColumn: import("@trpc/server").TRPCMutationProcedure<{
10834
+ input: {
10835
+ [x: string]: unknown;
10836
+ classId: string;
10837
+ name: string;
10838
+ maxPoints: number;
10839
+ gradeCategoryId?: string | null | undefined;
10840
+ position?: number | undefined;
10841
+ };
10842
+ output: {
10843
+ id: string;
10844
+ name: string;
10845
+ classId: string;
10846
+ gradeCategoryId: string | null;
10847
+ position: number;
10848
+ maxPoints: number;
10849
+ };
10850
+ meta: object;
10851
+ }>;
10852
+ updateColumn: import("@trpc/server").TRPCMutationProcedure<{
10853
+ input: {
10854
+ [x: string]: unknown;
10855
+ classId: string;
10856
+ columnId: string;
10857
+ name?: string | undefined;
10858
+ gradeCategoryId?: string | null | undefined;
10859
+ position?: number | undefined;
10860
+ maxPoints?: number | undefined;
10861
+ };
10862
+ output: {
10863
+ id: string;
10864
+ name: string;
10865
+ classId: string;
10866
+ gradeCategoryId: string | null;
10867
+ position: number;
10868
+ maxPoints: number;
10869
+ };
10870
+ meta: object;
10871
+ }>;
10872
+ deleteColumn: import("@trpc/server").TRPCMutationProcedure<{
10873
+ input: {
10874
+ [x: string]: unknown;
10875
+ classId: string;
10876
+ columnId: string;
10877
+ };
10878
+ output: {
10879
+ id: string;
10880
+ name: string;
10881
+ classId: string;
10882
+ gradeCategoryId: string | null;
10883
+ position: number;
10884
+ maxPoints: number;
10885
+ };
10886
+ meta: object;
10887
+ }>;
10888
+ setEntry: import("@trpc/server").TRPCMutationProcedure<{
10889
+ input: {
10890
+ [x: string]: unknown;
10891
+ classId: string;
10892
+ points: number | null;
10893
+ studentId: string;
10894
+ columnId: string;
10895
+ note?: string | null | undefined;
10896
+ };
10897
+ output: {
10898
+ id: string;
10899
+ points: number;
10900
+ studentId: string;
10901
+ note: string | null;
10902
+ columnId: string;
10476
10903
  } | null;
10477
10904
  meta: object;
10478
10905
  }>;
@@ -11366,6 +11793,46 @@ export declare const appRouter: import("@trpc/server").TRPCBuiltRouter<{
11366
11793
  };
11367
11794
  meta: object;
11368
11795
  }>;
11796
+ update: import("@trpc/server").TRPCMutationProcedure<{
11797
+ input: {
11798
+ listingId: string;
11799
+ tags?: string[] | undefined;
11800
+ description?: string | null | undefined;
11801
+ title?: string | undefined;
11802
+ visibility?: "SCHOOL" | "PUBLIC" | undefined;
11803
+ };
11804
+ output: {
11805
+ school: {
11806
+ id: string;
11807
+ name: string;
11808
+ } | null;
11809
+ author: {
11810
+ id: string;
11811
+ username: string;
11812
+ profile: {
11813
+ displayName: string | null;
11814
+ } | null;
11815
+ };
11816
+ } & {
11817
+ type: import(".prisma/client").$Enums.MarketplaceListingType;
11818
+ payload: import("@prisma/client/runtime/library.js").JsonValue;
11819
+ id: string;
11820
+ createdAt: Date;
11821
+ updatedAt: Date;
11822
+ schoolId: string | null;
11823
+ tags: string[];
11824
+ description: string | null;
11825
+ title: string;
11826
+ worksheetId: string | null;
11827
+ markSchemeId: string | null;
11828
+ authorId: string;
11829
+ fileId: string | null;
11830
+ visibility: import(".prisma/client").$Enums.MarketplaceVisibility;
11831
+ reportCount: number;
11832
+ isHidden: boolean;
11833
+ };
11834
+ meta: object;
11835
+ }>;
11369
11836
  report: import("@trpc/server").TRPCMutationProcedure<{
11370
11837
  input: {
11371
11838
  listingId: string;
@@ -11947,6 +12414,24 @@ export declare const appRouter: import("@trpc/server").TRPCBuiltRouter<{
11947
12414
  };
11948
12415
  meta: object;
11949
12416
  }>;
12417
+ addToStudent: import("@trpc/server").TRPCMutationProcedure<{
12418
+ input: {
12419
+ schoolId: string;
12420
+ studentUserId: string;
12421
+ parentIdentifier: string;
12422
+ };
12423
+ output: {
12424
+ link: {
12425
+ id: string;
12426
+ createdAt: Date;
12427
+ updatedAt: Date;
12428
+ schoolId: string;
12429
+ parentUserId: string;
12430
+ studentUserId: string;
12431
+ };
12432
+ };
12433
+ meta: object;
12434
+ }>;
11950
12435
  unlinkStudent: import("@trpc/server").TRPCMutationProcedure<{
11951
12436
  input: {
11952
12437
  schoolId: string;
@@ -17661,6 +18146,7 @@ export declare const createCaller: import("@trpc/server").TRPCRouterCaller<{
17661
18146
  content: string;
17662
18147
  senderId: string;
17663
18148
  conversationId: string;
18149
+ aiFeedback: import(".prisma/client").$Enums.AiMessageFeedback | null;
17664
18150
  runJobId: string | null;
17665
18151
  };
17666
18152
  unreadCount: number;
@@ -17872,6 +18358,7 @@ export declare const createCaller: import("@trpc/server").TRPCRouterCaller<{
17872
18358
  } | null;
17873
18359
  };
17874
18360
  status: import(".prisma/client").$Enums.JobStatus | null;
18361
+ aiFeedback: import(".prisma/client").$Enums.AiMessageFeedback | null;
17875
18362
  attachments: {
17876
18363
  path: string;
17877
18364
  type: string;
@@ -18002,6 +18489,15 @@ export declare const createCaller: import("@trpc/server").TRPCRouterCaller<{
18002
18489
  };
18003
18490
  meta: object;
18004
18491
  }>;
18492
+ cancelAiGeneration: import("@trpc/server").TRPCMutationProcedure<{
18493
+ input: {
18494
+ messageId: string;
18495
+ };
18496
+ output: {
18497
+ success: boolean;
18498
+ };
18499
+ meta: object;
18500
+ }>;
18005
18501
  markAsRead: import("@trpc/server").TRPCMutationProcedure<{
18006
18502
  input: {
18007
18503
  conversationId: string;
@@ -18020,14 +18516,15 @@ export declare const createCaller: import("@trpc/server").TRPCRouterCaller<{
18020
18516
  };
18021
18517
  meta: object;
18022
18518
  }>;
18023
- markSuggestionCreated: import("@trpc/server").TRPCMutationProcedure<{
18519
+ resolveAiProposal: import("@trpc/server").TRPCMutationProcedure<{
18024
18520
  input: {
18025
- type: "assignment" | "section" | "worksheet";
18026
18521
  messageId: string;
18027
- index: number;
18522
+ proposalId: string;
18523
+ action: "approve" | "dismiss";
18028
18524
  };
18029
18525
  output: {
18030
- success: boolean;
18526
+ status: import("../services/aiProposals.js").PendingCreationStatus;
18527
+ createdId: string | null;
18031
18528
  };
18032
18529
  meta: object;
18033
18530
  }>;
@@ -18041,6 +18538,28 @@ export declare const createCaller: import("@trpc/server").TRPCRouterCaller<{
18041
18538
  };
18042
18539
  meta: object;
18043
18540
  }>;
18541
+ regenerateAIResponse: import("@trpc/server").TRPCMutationProcedure<{
18542
+ input: {
18543
+ messageId: string;
18544
+ };
18545
+ output: {
18546
+ success: boolean;
18547
+ messageId: string;
18548
+ };
18549
+ meta: object;
18550
+ }>;
18551
+ setAIFeedback: import("@trpc/server").TRPCMutationProcedure<{
18552
+ input: {
18553
+ feedback: "UP" | "DOWN" | null;
18554
+ messageId: string;
18555
+ };
18556
+ output: {
18557
+ success: boolean;
18558
+ messageId: string;
18559
+ feedback: import(".prisma/client").$Enums.AiMessageFeedback | null;
18560
+ };
18561
+ meta: object;
18562
+ }>;
18044
18563
  }>>;
18045
18564
  labChat: import("@trpc/server").TRPCBuiltRouter<{
18046
18565
  ctx: import("../trpc.js").Context;
@@ -18212,12 +18731,22 @@ export declare const createCaller: import("@trpc/server").TRPCRouterCaller<{
18212
18731
  content: string;
18213
18732
  senderId: string;
18214
18733
  conversationId: string;
18734
+ aiFeedback: import(".prisma/client").$Enums.AiMessageFeedback | null;
18215
18735
  runJobId: string | null;
18216
18736
  };
18217
18737
  messageCount: number;
18218
18738
  }[];
18219
18739
  meta: object;
18220
18740
  }>;
18741
+ starterPrompts: import("@trpc/server").TRPCQueryProcedure<{
18742
+ input: {
18743
+ classId: string;
18744
+ };
18745
+ output: {
18746
+ prompts: string[];
18747
+ };
18748
+ meta: object;
18749
+ }>;
18221
18750
  postToLabChat: import("@trpc/server").TRPCMutationProcedure<{
18222
18751
  input: {
18223
18752
  content: string;
@@ -19371,6 +19900,50 @@ export declare const createCaller: import("@trpc/server").TRPCRouterCaller<{
19371
19900
  };
19372
19901
  meta: object;
19373
19902
  }>;
19903
+ generateFollowUpAssignment: import("@trpc/server").TRPCMutationProcedure<{
19904
+ input: {
19905
+ [x: string]: unknown;
19906
+ classId: string;
19907
+ submissionId: string;
19908
+ prompt: string;
19909
+ studentId: string;
19910
+ dueDate?: string | undefined;
19911
+ };
19912
+ output: {
19913
+ assignment: {
19914
+ type: import(".prisma/client").$Enums.AssignmentType;
19915
+ class: {
19916
+ id: string;
19917
+ name: string;
19918
+ };
19919
+ section: {
19920
+ id: string;
19921
+ name: string;
19922
+ } | null;
19923
+ id: string;
19924
+ title: string;
19925
+ dueDate: Date;
19926
+ maxGrade: number | null;
19927
+ attachments: {
19928
+ type: string;
19929
+ id: string;
19930
+ name: string;
19931
+ }[];
19932
+ instructions: string;
19933
+ graded: boolean;
19934
+ weight: number;
19935
+ teacher: {
19936
+ id: string;
19937
+ username: string;
19938
+ };
19939
+ };
19940
+ draft: {
19941
+ title: string;
19942
+ instructions: string;
19943
+ };
19944
+ };
19945
+ meta: object;
19946
+ }>;
19374
19947
  chat: import("@trpc/server").TRPCMutationProcedure<{
19375
19948
  input: {
19376
19949
  [x: string]: unknown;
@@ -22196,146 +22769,485 @@ export declare const createCaller: import("@trpc/server").TRPCRouterCaller<{
22196
22769
  output: {
22197
22770
  items: {
22198
22771
  id: string;
22199
- createdAt: Date;
22200
- email: string;
22201
- institutionSize: string;
22772
+ createdAt: Date;
22773
+ email: string;
22774
+ institutionSize: string;
22775
+ }[];
22776
+ total: number;
22777
+ page: number;
22778
+ pageSize: number;
22779
+ pageCount: number;
22780
+ };
22781
+ meta: object;
22782
+ }>;
22783
+ searchUsers: import("@trpc/server").TRPCQueryProcedure<{
22784
+ input: {
22785
+ query?: string | undefined;
22786
+ page?: number | undefined;
22787
+ pageSize?: number | undefined;
22788
+ };
22789
+ output: {
22790
+ items: {
22791
+ school: {
22792
+ id: string;
22793
+ name: string;
22794
+ } | null;
22795
+ id: string;
22796
+ username: string;
22797
+ email: string;
22798
+ verified: boolean;
22799
+ _count: {
22800
+ teacherIn: number;
22801
+ studentIn: number;
22802
+ sessions: number;
22803
+ };
22804
+ }[];
22805
+ total: number;
22806
+ page: number;
22807
+ pageSize: number;
22808
+ pageCount: number;
22809
+ };
22810
+ meta: object;
22811
+ }>;
22812
+ getUser: import("@trpc/server").TRPCQueryProcedure<{
22813
+ input: {
22814
+ id: string;
22815
+ };
22816
+ output: {
22817
+ school: {
22818
+ id: string;
22819
+ name: string;
22820
+ subdomain: string | null;
22821
+ } | null;
22822
+ id: string;
22823
+ username: string;
22824
+ email: string;
22825
+ verified: boolean;
22826
+ termsAcceptedAt: Date | null;
22827
+ termsVersion: string | null;
22828
+ profile: {
22829
+ displayName: string | null;
22830
+ location: string | null;
22831
+ createdAt: Date;
22832
+ } | null;
22833
+ sessions: {
22834
+ type: import(".prisma/client").$Enums.SessionType;
22835
+ createdAt: Date | null;
22836
+ expiresAt: Date | null;
22837
+ }[];
22838
+ schoolMemberships: {
22839
+ status: import(".prisma/client").$Enums.SchoolMembershipStatus;
22840
+ school: {
22841
+ id: string;
22842
+ name: string;
22843
+ };
22844
+ id: string;
22845
+ createdAt: Date;
22846
+ role: import(".prisma/client").$Enums.SchoolMembershipRole;
22847
+ }[];
22848
+ _count: {
22849
+ teacherIn: number;
22850
+ studentIn: number;
22851
+ submissions: number;
22852
+ sessions: number;
22853
+ files: number;
22854
+ };
22855
+ };
22856
+ meta: object;
22857
+ }>;
22858
+ }>>;
22859
+ embedding: import("@trpc/server").TRPCBuiltRouter<{
22860
+ ctx: import("../trpc.js").Context;
22861
+ meta: object;
22862
+ errorShape: {
22863
+ data: {
22864
+ zodError: import("zod").typeToFlattenedError<any, string> | null;
22865
+ prismaError: import("../utils/prismaErrorHandler.js").PrismaErrorInfo | null;
22866
+ code: import("@trpc/server").TRPC_ERROR_CODE_KEY;
22867
+ httpStatus: number;
22868
+ path?: string;
22869
+ stack?: string;
22870
+ };
22871
+ message: string;
22872
+ code: import("@trpc/server").TRPC_ERROR_CODE_NUMBER;
22873
+ };
22874
+ transformer: false;
22875
+ }, import("@trpc/server").TRPCDecorateCreateRouterOptions<{
22876
+ search: import("@trpc/server").TRPCQueryProcedure<{
22877
+ input: {
22878
+ query: string;
22879
+ classId: string;
22880
+ limit?: number | undefined;
22881
+ sourceTypes?: ("FILE" | "ASSIGNMENT" | "WORKSHEET" | "ANNOUNCEMENT" | "SECTION" | "DISCUSSION" | "SUBMISSION" | "SYLLABUS")[] | undefined;
22882
+ };
22883
+ output: import("../services/embedding.js").EmbeddingSearchResult[];
22884
+ meta: object;
22885
+ }>;
22886
+ reindex: import("@trpc/server").TRPCMutationProcedure<{
22887
+ input: {
22888
+ classId: string;
22889
+ sourceType: "FILE" | "ASSIGNMENT" | "WORKSHEET" | "ANNOUNCEMENT" | "SECTION" | "DISCUSSION" | "SUBMISSION" | "SYLLABUS";
22890
+ sourceId: string;
22891
+ };
22892
+ output: {
22893
+ runJobId: string;
22894
+ };
22895
+ meta: object;
22896
+ }>;
22897
+ indexAll: import("@trpc/server").TRPCMutationProcedure<{
22898
+ input: {
22899
+ classId: string;
22900
+ };
22901
+ output: {
22902
+ queued: {
22903
+ assignments: number;
22904
+ worksheets: number;
22905
+ announcements: number;
22906
+ discussions: number;
22907
+ submissions: number;
22908
+ syllabus: number;
22909
+ files: number;
22910
+ };
22911
+ };
22912
+ meta: object;
22913
+ }>;
22914
+ }>>;
22915
+ module: import("@trpc/server").TRPCBuiltRouter<{
22916
+ ctx: import("../trpc.js").Context;
22917
+ meta: object;
22918
+ errorShape: {
22919
+ data: {
22920
+ zodError: import("zod").typeToFlattenedError<any, string> | null;
22921
+ prismaError: import("../utils/prismaErrorHandler.js").PrismaErrorInfo | null;
22922
+ code: import("@trpc/server").TRPC_ERROR_CODE_KEY;
22923
+ httpStatus: number;
22924
+ path?: string;
22925
+ stack?: string;
22926
+ };
22927
+ message: string;
22928
+ code: import("@trpc/server").TRPC_ERROR_CODE_NUMBER;
22929
+ };
22930
+ transformer: false;
22931
+ }, import("@trpc/server").TRPCDecorateCreateRouterOptions<{
22932
+ list: import("@trpc/server").TRPCQueryProcedure<{
22933
+ input: {
22934
+ [x: string]: unknown;
22935
+ classId: string;
22936
+ };
22937
+ output: ({
22938
+ items: {
22939
+ id: string;
22940
+ title: string | null;
22941
+ position: number;
22942
+ moduleId: string;
22943
+ indent: number;
22944
+ itemType: import(".prisma/client").$Enums.CourseModuleItemType;
22945
+ itemId: string | null;
22946
+ externalUrl: string | null;
22947
+ requirementType: import(".prisma/client").$Enums.ModuleItemRequirementType | null;
22948
+ requiredScore: number | null;
22949
+ }[];
22950
+ prerequisites: {
22951
+ prerequisiteId: string;
22952
+ }[];
22953
+ } & {
22954
+ id: string;
22955
+ createdAt: Date;
22956
+ updatedAt: Date;
22957
+ classId: string;
22958
+ title: string;
22959
+ position: number;
22960
+ published: boolean;
22961
+ unlockAt: Date | null;
22962
+ requireSequential: boolean;
22963
+ })[];
22964
+ meta: object;
22965
+ }>;
22966
+ getStudentState: import("@trpc/server").TRPCQueryProcedure<{
22967
+ input: {
22968
+ [x: string]: unknown;
22969
+ classId: string;
22970
+ };
22971
+ output: {
22972
+ modules: {
22973
+ items: {
22974
+ completed: boolean;
22975
+ accessible: boolean;
22976
+ worksheetAssignmentId: string | null;
22977
+ id: string;
22978
+ title: string | null;
22979
+ position: number;
22980
+ moduleId: string;
22981
+ indent: number;
22982
+ itemType: import(".prisma/client").$Enums.CourseModuleItemType;
22983
+ itemId: string | null;
22984
+ externalUrl: string | null;
22985
+ requirementType: import(".prisma/client").$Enums.ModuleItemRequirementType | null;
22986
+ requiredScore: number | null;
22987
+ }[];
22988
+ locked: boolean;
22989
+ lockedByPrerequisite: boolean;
22990
+ lockedByDate: boolean;
22991
+ completed: boolean;
22992
+ requiredCount: number;
22993
+ completedRequiredCount: number;
22994
+ percentComplete: number;
22995
+ prerequisites: {
22996
+ prerequisiteId: string;
22997
+ }[];
22998
+ id: string;
22999
+ createdAt: Date;
23000
+ updatedAt: Date;
23001
+ classId: string;
23002
+ title: string;
23003
+ position: number;
23004
+ published: boolean;
23005
+ unlockAt: Date | null;
23006
+ requireSequential: boolean;
23007
+ }[];
23008
+ continueItemId: null;
23009
+ continueModuleId: null;
23010
+ };
23011
+ meta: object;
23012
+ }>;
23013
+ create: import("@trpc/server").TRPCMutationProcedure<{
23014
+ input: {
23015
+ [x: string]: unknown;
23016
+ classId: string;
23017
+ title: string;
23018
+ unlockAt?: Date | null | undefined;
23019
+ requireSequential?: boolean | undefined;
23020
+ };
23021
+ output: {
23022
+ items: {
23023
+ id: string;
23024
+ title: string | null;
23025
+ position: number;
23026
+ moduleId: string;
23027
+ indent: number;
23028
+ itemType: import(".prisma/client").$Enums.CourseModuleItemType;
23029
+ itemId: string | null;
23030
+ externalUrl: string | null;
23031
+ requirementType: import(".prisma/client").$Enums.ModuleItemRequirementType | null;
23032
+ requiredScore: number | null;
22202
23033
  }[];
22203
- total: number;
22204
- page: number;
22205
- pageSize: number;
22206
- pageCount: number;
23034
+ prerequisites: {
23035
+ prerequisiteId: string;
23036
+ }[];
23037
+ } & {
23038
+ id: string;
23039
+ createdAt: Date;
23040
+ updatedAt: Date;
23041
+ classId: string;
23042
+ title: string;
23043
+ position: number;
23044
+ published: boolean;
23045
+ unlockAt: Date | null;
23046
+ requireSequential: boolean;
22207
23047
  };
22208
23048
  meta: object;
22209
23049
  }>;
22210
- searchUsers: import("@trpc/server").TRPCQueryProcedure<{
23050
+ update: import("@trpc/server").TRPCMutationProcedure<{
22211
23051
  input: {
22212
- query?: string | undefined;
22213
- page?: number | undefined;
22214
- pageSize?: number | undefined;
23052
+ [x: string]: unknown;
23053
+ classId: string;
23054
+ id: string;
23055
+ title?: string | undefined;
23056
+ published?: boolean | undefined;
23057
+ unlockAt?: Date | null | undefined;
23058
+ requireSequential?: boolean | undefined;
23059
+ prerequisiteIds?: string[] | undefined;
22215
23060
  };
22216
23061
  output: {
22217
23062
  items: {
22218
- school: {
22219
- id: string;
22220
- name: string;
22221
- } | null;
22222
23063
  id: string;
22223
- username: string;
22224
- email: string;
22225
- verified: boolean;
22226
- _count: {
22227
- teacherIn: number;
22228
- studentIn: number;
22229
- sessions: number;
22230
- };
23064
+ title: string | null;
23065
+ position: number;
23066
+ moduleId: string;
23067
+ indent: number;
23068
+ itemType: import(".prisma/client").$Enums.CourseModuleItemType;
23069
+ itemId: string | null;
23070
+ externalUrl: string | null;
23071
+ requirementType: import(".prisma/client").$Enums.ModuleItemRequirementType | null;
23072
+ requiredScore: number | null;
22231
23073
  }[];
22232
- total: number;
22233
- page: number;
22234
- pageSize: number;
22235
- pageCount: number;
23074
+ prerequisites: {
23075
+ prerequisiteId: string;
23076
+ }[];
23077
+ } & {
23078
+ id: string;
23079
+ createdAt: Date;
23080
+ updatedAt: Date;
23081
+ classId: string;
23082
+ title: string;
23083
+ position: number;
23084
+ published: boolean;
23085
+ unlockAt: Date | null;
23086
+ requireSequential: boolean;
22236
23087
  };
22237
23088
  meta: object;
22238
23089
  }>;
22239
- getUser: import("@trpc/server").TRPCQueryProcedure<{
23090
+ delete: import("@trpc/server").TRPCMutationProcedure<{
22240
23091
  input: {
23092
+ [x: string]: unknown;
23093
+ classId: string;
22241
23094
  id: string;
22242
23095
  };
22243
23096
  output: {
22244
- school: {
22245
- id: string;
22246
- name: string;
22247
- subdomain: string | null;
22248
- } | null;
22249
23097
  id: string;
22250
- username: string;
22251
- email: string;
22252
- verified: boolean;
22253
- termsAcceptedAt: Date | null;
22254
- termsVersion: string | null;
22255
- profile: {
22256
- displayName: string | null;
22257
- location: string | null;
22258
- createdAt: Date;
22259
- } | null;
22260
- sessions: {
22261
- type: import(".prisma/client").$Enums.SessionType;
23098
+ };
23099
+ meta: object;
23100
+ }>;
23101
+ reorder: import("@trpc/server").TRPCMutationProcedure<{
23102
+ input: {
23103
+ [x: string]: unknown;
23104
+ classId: string;
23105
+ orderedIds: string[];
23106
+ };
23107
+ output: ({
23108
+ items: {
22262
23109
  id: string;
22263
- createdAt: Date | null;
22264
- expiresAt: Date | null;
23110
+ title: string | null;
23111
+ position: number;
23112
+ moduleId: string;
23113
+ indent: number;
23114
+ itemType: import(".prisma/client").$Enums.CourseModuleItemType;
23115
+ itemId: string | null;
23116
+ externalUrl: string | null;
23117
+ requirementType: import(".prisma/client").$Enums.ModuleItemRequirementType | null;
23118
+ requiredScore: number | null;
22265
23119
  }[];
22266
- schoolMemberships: {
22267
- status: import(".prisma/client").$Enums.SchoolMembershipStatus;
22268
- school: {
22269
- id: string;
22270
- name: string;
22271
- };
22272
- id: string;
22273
- createdAt: Date;
22274
- role: import(".prisma/client").$Enums.SchoolMembershipRole;
23120
+ prerequisites: {
23121
+ prerequisiteId: string;
22275
23122
  }[];
22276
- _count: {
22277
- teacherIn: number;
22278
- studentIn: number;
22279
- submissions: number;
22280
- sessions: number;
22281
- files: number;
22282
- };
22283
- };
23123
+ } & {
23124
+ id: string;
23125
+ createdAt: Date;
23126
+ updatedAt: Date;
23127
+ classId: string;
23128
+ title: string;
23129
+ position: number;
23130
+ published: boolean;
23131
+ unlockAt: Date | null;
23132
+ requireSequential: boolean;
23133
+ })[];
22284
23134
  meta: object;
22285
23135
  }>;
22286
- }>>;
22287
- embedding: import("@trpc/server").TRPCBuiltRouter<{
22288
- ctx: import("../trpc.js").Context;
22289
- meta: object;
22290
- errorShape: {
22291
- data: {
22292
- zodError: import("zod").typeToFlattenedError<any, string> | null;
22293
- prismaError: import("../utils/prismaErrorHandler.js").PrismaErrorInfo | null;
22294
- code: import("@trpc/server").TRPC_ERROR_CODE_KEY;
22295
- httpStatus: number;
22296
- path?: string;
22297
- stack?: string;
23136
+ createItem: import("@trpc/server").TRPCMutationProcedure<{
23137
+ input: {
23138
+ [x: string]: unknown;
23139
+ classId: string;
23140
+ moduleId: string;
23141
+ itemType: "FILE" | "ASSIGNMENT" | "WORKSHEET" | "ANNOUNCEMENT" | "DISCUSSION" | "EXTERNAL_URL" | "SUB_HEADER";
23142
+ title?: string | undefined;
23143
+ indent?: number | undefined;
23144
+ itemId?: string | undefined;
23145
+ externalUrl?: string | undefined;
23146
+ requirementType?: "VIEW" | "SUBMIT" | "SCORE_AT_LEAST" | undefined;
23147
+ requiredScore?: number | undefined;
22298
23148
  };
22299
- message: string;
22300
- code: import("@trpc/server").TRPC_ERROR_CODE_NUMBER;
22301
- };
22302
- transformer: false;
22303
- }, import("@trpc/server").TRPCDecorateCreateRouterOptions<{
22304
- search: import("@trpc/server").TRPCQueryProcedure<{
23149
+ output: {
23150
+ id: string;
23151
+ title: string | null;
23152
+ position: number;
23153
+ moduleId: string;
23154
+ indent: number;
23155
+ itemType: import(".prisma/client").$Enums.CourseModuleItemType;
23156
+ itemId: string | null;
23157
+ externalUrl: string | null;
23158
+ requirementType: import(".prisma/client").$Enums.ModuleItemRequirementType | null;
23159
+ requiredScore: number | null;
23160
+ };
23161
+ meta: object;
23162
+ }>;
23163
+ updateItem: import("@trpc/server").TRPCMutationProcedure<{
22305
23164
  input: {
22306
- query: string;
23165
+ [x: string]: unknown;
22307
23166
  classId: string;
22308
- limit?: number | undefined;
22309
- sourceTypes?: ("FILE" | "ASSIGNMENT" | "WORKSHEET" | "ANNOUNCEMENT" | "SECTION" | "DISCUSSION" | "SUBMISSION" | "SYLLABUS")[] | undefined;
23167
+ id: string;
23168
+ title?: string | null | undefined;
23169
+ indent?: number | undefined;
23170
+ externalUrl?: string | undefined;
23171
+ requirementType?: "VIEW" | "SUBMIT" | "SCORE_AT_LEAST" | null | undefined;
23172
+ requiredScore?: number | null | undefined;
23173
+ };
23174
+ output: {
23175
+ id: string;
23176
+ title: string | null;
23177
+ position: number;
23178
+ moduleId: string;
23179
+ indent: number;
23180
+ itemType: import(".prisma/client").$Enums.CourseModuleItemType;
23181
+ itemId: string | null;
23182
+ externalUrl: string | null;
23183
+ requirementType: import(".prisma/client").$Enums.ModuleItemRequirementType | null;
23184
+ requiredScore: number | null;
22310
23185
  };
22311
- output: import("../services/embedding.js").EmbeddingSearchResult[];
22312
23186
  meta: object;
22313
23187
  }>;
22314
- reindex: import("@trpc/server").TRPCMutationProcedure<{
23188
+ deleteItem: import("@trpc/server").TRPCMutationProcedure<{
22315
23189
  input: {
23190
+ [x: string]: unknown;
22316
23191
  classId: string;
22317
- sourceType: "FILE" | "ASSIGNMENT" | "WORKSHEET" | "ANNOUNCEMENT" | "SECTION" | "DISCUSSION" | "SUBMISSION" | "SYLLABUS";
22318
- sourceId: string;
23192
+ id: string;
22319
23193
  };
22320
23194
  output: {
22321
- runJobId: string;
23195
+ id: string;
22322
23196
  };
22323
23197
  meta: object;
22324
23198
  }>;
22325
- indexAll: import("@trpc/server").TRPCMutationProcedure<{
23199
+ reorderItems: import("@trpc/server").TRPCMutationProcedure<{
23200
+ input: {
23201
+ [x: string]: unknown;
23202
+ classId: string;
23203
+ items: {
23204
+ id: string;
23205
+ moduleId: string;
23206
+ }[];
23207
+ };
23208
+ output: ({
23209
+ items: {
23210
+ id: string;
23211
+ title: string | null;
23212
+ position: number;
23213
+ moduleId: string;
23214
+ indent: number;
23215
+ itemType: import(".prisma/client").$Enums.CourseModuleItemType;
23216
+ itemId: string | null;
23217
+ externalUrl: string | null;
23218
+ requirementType: import(".prisma/client").$Enums.ModuleItemRequirementType | null;
23219
+ requiredScore: number | null;
23220
+ }[];
23221
+ prerequisites: {
23222
+ prerequisiteId: string;
23223
+ }[];
23224
+ } & {
23225
+ id: string;
23226
+ createdAt: Date;
23227
+ updatedAt: Date;
23228
+ classId: string;
23229
+ title: string;
23230
+ position: number;
23231
+ published: boolean;
23232
+ unlockAt: Date | null;
23233
+ requireSequential: boolean;
23234
+ })[];
23235
+ meta: object;
23236
+ }>;
23237
+ markItemViewed: import("@trpc/server").TRPCMutationProcedure<{
22326
23238
  input: {
23239
+ [x: string]: unknown;
22327
23240
  classId: string;
23241
+ itemId: string;
22328
23242
  };
22329
23243
  output: {
22330
- queued: {
22331
- assignments: number;
22332
- worksheets: number;
22333
- announcements: number;
22334
- discussions: number;
22335
- submissions: number;
22336
- syllabus: number;
22337
- files: number;
22338
- };
23244
+ status: import(".prisma/client").$Enums.ModuleItemProgressStatus;
23245
+ id: string;
23246
+ createdAt: Date;
23247
+ updatedAt: Date;
23248
+ moduleItemId: string;
23249
+ studentId: string;
23250
+ completedAt: Date | null;
22339
23251
  };
22340
23252
  meta: object;
22341
23253
  }>;
@@ -23451,6 +24363,46 @@ export declare const createCaller: import("@trpc/server").TRPCRouterCaller<{
23451
24363
  };
23452
24364
  meta: object;
23453
24365
  }>;
24366
+ update: import("@trpc/server").TRPCMutationProcedure<{
24367
+ input: {
24368
+ listingId: string;
24369
+ tags?: string[] | undefined;
24370
+ description?: string | null | undefined;
24371
+ title?: string | undefined;
24372
+ visibility?: "SCHOOL" | "PUBLIC" | undefined;
24373
+ };
24374
+ output: {
24375
+ school: {
24376
+ id: string;
24377
+ name: string;
24378
+ } | null;
24379
+ author: {
24380
+ id: string;
24381
+ username: string;
24382
+ profile: {
24383
+ displayName: string | null;
24384
+ } | null;
24385
+ };
24386
+ } & {
24387
+ type: import(".prisma/client").$Enums.MarketplaceListingType;
24388
+ payload: import("@prisma/client/runtime/library.js").JsonValue;
24389
+ id: string;
24390
+ createdAt: Date;
24391
+ updatedAt: Date;
24392
+ schoolId: string | null;
24393
+ tags: string[];
24394
+ description: string | null;
24395
+ title: string;
24396
+ worksheetId: string | null;
24397
+ markSchemeId: string | null;
24398
+ authorId: string;
24399
+ fileId: string | null;
24400
+ visibility: import(".prisma/client").$Enums.MarketplaceVisibility;
24401
+ reportCount: number;
24402
+ isHidden: boolean;
24403
+ };
24404
+ meta: object;
24405
+ }>;
23454
24406
  report: import("@trpc/server").TRPCMutationProcedure<{
23455
24407
  input: {
23456
24408
  listingId: string;
@@ -24032,6 +24984,24 @@ export declare const createCaller: import("@trpc/server").TRPCRouterCaller<{
24032
24984
  };
24033
24985
  meta: object;
24034
24986
  }>;
24987
+ addToStudent: import("@trpc/server").TRPCMutationProcedure<{
24988
+ input: {
24989
+ schoolId: string;
24990
+ studentUserId: string;
24991
+ parentIdentifier: string;
24992
+ };
24993
+ output: {
24994
+ link: {
24995
+ id: string;
24996
+ createdAt: Date;
24997
+ updatedAt: Date;
24998
+ schoolId: string;
24999
+ parentUserId: string;
25000
+ studentUserId: string;
25001
+ };
25002
+ };
25003
+ meta: object;
25004
+ }>;
24035
25005
  unlinkStudent: import("@trpc/server").TRPCMutationProcedure<{
24036
25006
  input: {
24037
25007
  schoolId: string;