@studious-lms/server 1.16.0 → 1.17.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 (157) hide show
  1. package/.github/workflows/deploy.yml +1 -1
  2. package/dist/instrument.js +3 -3
  3. package/dist/instrument.js.map +1 -1
  4. package/dist/lib/chatAttachmentPrompt.d.ts +47 -0
  5. package/dist/lib/chatAttachmentPrompt.d.ts.map +1 -0
  6. package/dist/lib/chatAttachmentPrompt.js +190 -0
  7. package/dist/lib/chatAttachmentPrompt.js.map +1 -0
  8. package/dist/lib/inferDocumentFormat.js +3 -3
  9. package/dist/lib/inferDocumentFormat.js.map +1 -1
  10. package/dist/lib/legal.d.ts +3 -0
  11. package/dist/lib/legal.d.ts.map +1 -0
  12. package/dist/lib/legal.js +6 -0
  13. package/dist/lib/legal.js.map +1 -0
  14. package/dist/models/announcement.d.ts +2 -0
  15. package/dist/models/announcement.d.ts.map +1 -1
  16. package/dist/models/auth.d.ts +8 -0
  17. package/dist/models/auth.d.ts.map +1 -1
  18. package/dist/models/auth.js +4 -2
  19. package/dist/models/auth.js.map +1 -1
  20. package/dist/models/event.d.ts +2 -0
  21. package/dist/models/event.d.ts.map +1 -1
  22. package/dist/models/file.d.ts +24 -0
  23. package/dist/models/file.d.ts.map +1 -1
  24. package/dist/models/marketing.d.ts +2 -15
  25. package/dist/models/marketing.d.ts.map +1 -1
  26. package/dist/models/marketing.js +12 -4
  27. package/dist/models/marketing.js.map +1 -1
  28. package/dist/pipelines/aiLabChat.d.ts.map +1 -1
  29. package/dist/pipelines/aiLabChat.js +39 -59
  30. package/dist/pipelines/aiLabChat.js.map +1 -1
  31. package/dist/pipelines/aiLabChatContract.d.ts +2 -2
  32. package/dist/pipelines/aiNewtonChat.d.ts +1 -1
  33. package/dist/pipelines/aiNewtonChat.d.ts.map +1 -1
  34. package/dist/pipelines/aiNewtonChat.js +20 -19
  35. package/dist/pipelines/aiNewtonChat.js.map +1 -1
  36. package/dist/pipelines/gradeWorksheet.d.ts +1 -0
  37. package/dist/pipelines/gradeWorksheet.d.ts.map +1 -1
  38. package/dist/pipelines/gradeWorksheet.js +84 -13
  39. package/dist/pipelines/gradeWorksheet.js.map +1 -1
  40. package/dist/pipelines/labChatPrompt.d.ts +4 -20
  41. package/dist/pipelines/labChatPrompt.d.ts.map +1 -1
  42. package/dist/pipelines/labChatPrompt.js +24 -64
  43. package/dist/pipelines/labChatPrompt.js.map +1 -1
  44. package/dist/routers/_app.d.ts +440 -26
  45. package/dist/routers/_app.d.ts.map +1 -1
  46. package/dist/routers/assignment.d.ts +10 -0
  47. package/dist/routers/assignment.d.ts.map +1 -1
  48. package/dist/routers/auth.d.ts +2 -0
  49. package/dist/routers/auth.d.ts.map +1 -1
  50. package/dist/routers/auth.js +15 -2
  51. package/dist/routers/auth.js.map +1 -1
  52. package/dist/routers/class.d.ts +4 -0
  53. package/dist/routers/class.d.ts.map +1 -1
  54. package/dist/routers/event.d.ts +2 -0
  55. package/dist/routers/event.d.ts.map +1 -1
  56. package/dist/routers/marketing.d.ts +0 -13
  57. package/dist/routers/marketing.d.ts.map +1 -1
  58. package/dist/routers/school.d.ts +106 -0
  59. package/dist/routers/school.d.ts.map +1 -1
  60. package/dist/routers/school.js +11 -3
  61. package/dist/routers/school.js.map +1 -1
  62. package/dist/routers/user.d.ts +89 -0
  63. package/dist/routers/user.d.ts.map +1 -1
  64. package/dist/routers/user.js +19 -2
  65. package/dist/routers/user.js.map +1 -1
  66. package/dist/routers/worksheet.d.ts +7 -0
  67. package/dist/routers/worksheet.d.ts.map +1 -1
  68. package/dist/routers/worksheet.js +8 -3
  69. package/dist/routers/worksheet.js.map +1 -1
  70. package/dist/seedDatabase.d.ts +2 -0
  71. package/dist/seedDatabase.d.ts.map +1 -1
  72. package/dist/services/aiChatStream.d.ts +2 -0
  73. package/dist/services/aiChatStream.d.ts.map +1 -1
  74. package/dist/services/aiChatStream.js +31 -4
  75. package/dist/services/aiChatStream.js.map +1 -1
  76. package/dist/services/aiProposalTools.d.ts.map +1 -1
  77. package/dist/services/aiProposalTools.js +9 -9
  78. package/dist/services/aiProposalTools.js.map +1 -1
  79. package/dist/services/aiTools.js +3 -3
  80. package/dist/services/aiTools.js.map +1 -1
  81. package/dist/services/assignment.d.ts +10 -0
  82. package/dist/services/assignment.d.ts.map +1 -1
  83. package/dist/services/auth.d.ts +2 -0
  84. package/dist/services/auth.d.ts.map +1 -1
  85. package/dist/services/auth.js +13 -4
  86. package/dist/services/auth.js.map +1 -1
  87. package/dist/services/class.d.ts +4 -0
  88. package/dist/services/class.d.ts.map +1 -1
  89. package/dist/services/event.d.ts +2 -0
  90. package/dist/services/event.d.ts.map +1 -1
  91. package/dist/services/marketing.d.ts +1 -14
  92. package/dist/services/marketing.d.ts.map +1 -1
  93. package/dist/services/marketing.js +5 -5
  94. package/dist/services/marketing.js.map +1 -1
  95. package/dist/services/newtonChat.d.ts.map +1 -1
  96. package/dist/services/newtonChat.js +2 -8
  97. package/dist/services/newtonChat.js.map +1 -1
  98. package/dist/services/openaiDocumentGen.d.ts +12 -0
  99. package/dist/services/openaiDocumentGen.d.ts.map +1 -1
  100. package/dist/services/openaiDocumentGen.js +173 -65
  101. package/dist/services/openaiDocumentGen.js.map +1 -1
  102. package/dist/services/school.d.ts +116 -0
  103. package/dist/services/school.d.ts.map +1 -1
  104. package/dist/services/school.js +213 -2
  105. package/dist/services/school.js.map +1 -1
  106. package/dist/services/userPrivacy.d.ts +86 -0
  107. package/dist/services/userPrivacy.d.ts.map +1 -0
  108. package/dist/services/userPrivacy.js +184 -0
  109. package/dist/services/userPrivacy.js.map +1 -0
  110. package/dist/services/worksheet.d.ts +1 -0
  111. package/dist/services/worksheet.d.ts.map +1 -1
  112. package/dist/services/worksheet.js +13 -3
  113. package/dist/services/worksheet.js.map +1 -1
  114. package/dist/utils/email.d.ts.map +1 -1
  115. package/dist/utils/email.js +7 -3
  116. package/dist/utils/email.js.map +1 -1
  117. package/dist/workers/processors/aiNewtonChat.d.ts.map +1 -1
  118. package/dist/workers/processors/aiNewtonChat.js +3 -3
  119. package/dist/workers/processors/aiNewtonChat.js.map +1 -1
  120. package/package.json +2 -1
  121. package/prisma/migrations/20260611120000_add_user_terms_acceptance/migration.sql +3 -0
  122. package/prisma/schema.prisma +3 -0
  123. package/src/instrument.ts +1 -1
  124. package/src/lib/chatAttachmentPrompt.ts +270 -0
  125. package/src/lib/inferDocumentFormat.ts +1 -1
  126. package/src/lib/legal.ts +2 -0
  127. package/src/models/auth.ts +4 -0
  128. package/src/models/marketing.ts +10 -2
  129. package/src/pipelines/aiLabChat.ts +46 -71
  130. package/src/pipelines/aiNewtonChat.ts +20 -23
  131. package/src/pipelines/gradeWorksheet.ts +87 -11
  132. package/src/pipelines/labChatPrompt.ts +29 -98
  133. package/src/routers/auth.ts +13 -0
  134. package/src/routers/school.ts +12 -0
  135. package/src/routers/user.ts +26 -0
  136. package/src/routers/worksheet.ts +11 -0
  137. package/src/services/aiChatStream.ts +30 -3
  138. package/src/services/aiProposalTools.ts +8 -7
  139. package/src/services/aiTools.ts +1 -1
  140. package/src/services/auth.ts +14 -2
  141. package/src/services/marketing.ts +3 -3
  142. package/src/services/newtonChat.ts +0 -7
  143. package/src/services/openaiDocumentGen.ts +190 -66
  144. package/src/services/school.ts +231 -0
  145. package/src/services/userPrivacy.ts +196 -0
  146. package/src/services/worksheet.ts +20 -1
  147. package/src/utils/email.ts +5 -1
  148. package/src/workers/processors/aiNewtonChat.ts +0 -1
  149. package/tests/helpers/registerInput.ts +20 -0
  150. package/tests/integration/globalSetup.ts +10 -18
  151. package/tests/integration/routers/auth.test.ts +13 -18
  152. package/tests/integration/routers/newtonChat.test.ts +9 -8
  153. package/tests/unit/lib/chatAttachmentPrompt.test.ts +135 -0
  154. package/tests/unit/lib/inferDocumentFormat.test.ts +10 -0
  155. package/tests/unit/pipelines/labChatPrompt.test.ts +6 -6
  156. package/tests/unit/services/aiChatStream.test.ts +92 -0
  157. package/tests/unit/services/openaiDocumentGen.test.ts +65 -0
@@ -0,0 +1,65 @@
1
+ import { describe, expect, it } from 'vitest';
2
+ import {
3
+ extractContainerGeneratedFiles,
4
+ mimeTypeForFormat,
5
+ normalizeDocumentFormat,
6
+ } from '../../../src/services/openaiDocumentGen.js';
7
+ import type { Response } from 'openai/resources/responses/responses.js';
8
+
9
+ describe('openaiDocumentGen', () => {
10
+ it('normalizes unknown formats to pdf', () => {
11
+ expect(normalizeDocumentFormat('docx')).toBe('docx');
12
+ expect(normalizeDocumentFormat('.PDF')).toBe('pdf');
13
+ expect(normalizeDocumentFormat('bogus')).toBe('pdf');
14
+ });
15
+
16
+ it('maps formats to mime types', () => {
17
+ expect(mimeTypeForFormat('pdf')).toBe('application/pdf');
18
+ expect(mimeTypeForFormat('xlsx')).toBe(
19
+ 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',
20
+ );
21
+ expect(mimeTypeForFormat('png')).toBe('image/png');
22
+ });
23
+
24
+ it('collects container_file_citation annotations for the requested extension', () => {
25
+ const response = {
26
+ output: [
27
+ {
28
+ type: 'message',
29
+ content: [
30
+ {
31
+ type: 'output_text',
32
+ text: 'Here is your spreadsheet.',
33
+ annotations: [
34
+ {
35
+ type: 'container_file_citation',
36
+ container_id: 'cntr_1',
37
+ file_id: 'cfile_1',
38
+ filename: 'Grades.xlsx',
39
+ start_index: 0,
40
+ end_index: 0,
41
+ },
42
+ {
43
+ type: 'container_file_citation',
44
+ container_id: 'cntr_1',
45
+ file_id: 'cfile_2',
46
+ filename: 'Notes.pdf',
47
+ start_index: 0,
48
+ end_index: 0,
49
+ },
50
+ ],
51
+ },
52
+ ],
53
+ },
54
+ ],
55
+ } as unknown as Response;
56
+
57
+ expect(extractContainerGeneratedFiles(response, 'xlsx')).toEqual([
58
+ {
59
+ containerId: 'cntr_1',
60
+ fileId: 'cfile_1',
61
+ filename: 'Grades.xlsx',
62
+ },
63
+ ]);
64
+ });
65
+ });