dsh-diagnostic-tutor 0.1.0 → 0.2.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 (126) hide show
  1. package/README.md +316 -79
  2. package/lib/api.js +364 -78
  3. package/lib/api.js.map +1 -1
  4. package/lib/block-types.js +25 -0
  5. package/lib/block-types.js.map +1 -0
  6. package/lib/client.js +9952 -821
  7. package/lib/client.js.map +1 -1
  8. package/lib/diagnostics.js +170 -0
  9. package/lib/diagnostics.js.map +1 -0
  10. package/lib/execution-key.js +91 -0
  11. package/lib/execution-key.js.map +1 -0
  12. package/lib/handoff.js +44 -1
  13. package/lib/handoff.js.map +1 -1
  14. package/lib/index.js +87 -51
  15. package/lib/index.js.map +1 -1
  16. package/lib/insights.js +82 -0
  17. package/lib/insights.js.map +1 -0
  18. package/lib/interactions.js +70 -0
  19. package/lib/interactions.js.map +1 -0
  20. package/lib/journal.js +122 -0
  21. package/lib/journal.js.map +1 -0
  22. package/lib/lesson-markdown.js +72 -0
  23. package/lib/lesson-markdown.js.map +1 -0
  24. package/lib/lesson.js +152 -3
  25. package/lib/lesson.js.map +1 -1
  26. package/lib/math.js +126 -0
  27. package/lib/math.js.map +1 -0
  28. package/lib/path-api.js +140 -0
  29. package/lib/path-api.js.map +1 -0
  30. package/lib/path-runtime.js +361 -0
  31. package/lib/path-runtime.js.map +1 -0
  32. package/lib/path-tools.js +107 -0
  33. package/lib/path-tools.js.map +1 -0
  34. package/lib/path.js +179 -0
  35. package/lib/path.js.map +1 -0
  36. package/lib/plan-tools.js +89 -0
  37. package/lib/plan-tools.js.map +1 -0
  38. package/lib/plan.js +82 -0
  39. package/lib/plan.js.map +1 -0
  40. package/lib/project-session.js +48 -0
  41. package/lib/project-session.js.map +1 -0
  42. package/lib/prompt.js +4 -19
  43. package/lib/prompt.js.map +1 -1
  44. package/lib/review-sync.js +51 -0
  45. package/lib/review-sync.js.map +1 -0
  46. package/lib/review-tools.js +115 -0
  47. package/lib/review-tools.js.map +1 -0
  48. package/lib/review.js +103 -0
  49. package/lib/review.js.map +1 -0
  50. package/lib/source-schema.js +24 -0
  51. package/lib/source-schema.js.map +1 -0
  52. package/lib/source-tools.js +61 -0
  53. package/lib/source-tools.js.map +1 -0
  54. package/lib/sources.js +78 -0
  55. package/lib/sources.js.map +1 -0
  56. package/lib/state.js +353 -47
  57. package/lib/state.js.map +1 -1
  58. package/lib/tools.js +620 -123
  59. package/lib/tools.js.map +1 -1
  60. package/lib/types/api.d.ts +10 -3
  61. package/lib/types/api.d.ts.map +1 -1
  62. package/lib/types/block-types.d.ts +12 -0
  63. package/lib/types/block-types.d.ts.map +1 -0
  64. package/lib/types/contract.d.ts +81 -7
  65. package/lib/types/contract.d.ts.map +1 -1
  66. package/lib/types/diagnostics.d.ts +95 -0
  67. package/lib/types/diagnostics.d.ts.map +1 -0
  68. package/lib/types/execution-key.d.ts +59 -0
  69. package/lib/types/execution-key.d.ts.map +1 -0
  70. package/lib/types/handoff.d.ts +2 -2
  71. package/lib/types/handoff.d.ts.map +1 -1
  72. package/lib/types/index.d.ts +19 -14
  73. package/lib/types/index.d.ts.map +1 -1
  74. package/lib/types/insights.d.ts +57 -0
  75. package/lib/types/insights.d.ts.map +1 -0
  76. package/lib/types/interactions.d.ts +23 -0
  77. package/lib/types/interactions.d.ts.map +1 -0
  78. package/lib/types/journal.d.ts +57 -0
  79. package/lib/types/journal.d.ts.map +1 -0
  80. package/lib/types/lesson-markdown.d.ts +11 -0
  81. package/lib/types/lesson-markdown.d.ts.map +1 -0
  82. package/lib/types/lesson.d.ts +697 -5
  83. package/lib/types/lesson.d.ts.map +1 -1
  84. package/lib/types/math.d.ts +50 -0
  85. package/lib/types/math.d.ts.map +1 -0
  86. package/lib/types/path-api.d.ts +5 -0
  87. package/lib/types/path-api.d.ts.map +1 -0
  88. package/lib/types/path-runtime.d.ts +1558 -0
  89. package/lib/types/path-runtime.d.ts.map +1 -0
  90. package/lib/types/path-tools.d.ts +4 -0
  91. package/lib/types/path-tools.d.ts.map +1 -0
  92. package/lib/types/path.d.ts +744 -0
  93. package/lib/types/path.d.ts.map +1 -0
  94. package/lib/types/plan-tools.d.ts +4 -0
  95. package/lib/types/plan-tools.d.ts.map +1 -0
  96. package/lib/types/plan.d.ts +53 -0
  97. package/lib/types/plan.d.ts.map +1 -0
  98. package/lib/types/project-session.d.ts +33 -0
  99. package/lib/types/project-session.d.ts.map +1 -0
  100. package/lib/types/prompt.d.ts.map +1 -1
  101. package/lib/types/review-sync.d.ts +17 -0
  102. package/lib/types/review-sync.d.ts.map +1 -0
  103. package/lib/types/review-tools.d.ts +4 -0
  104. package/lib/types/review-tools.d.ts.map +1 -0
  105. package/lib/types/review.d.ts +65 -0
  106. package/lib/types/review.d.ts.map +1 -0
  107. package/lib/types/source-schema.d.ts +31 -0
  108. package/lib/types/source-schema.d.ts.map +1 -0
  109. package/lib/types/source-tools.d.ts +4 -0
  110. package/lib/types/source-tools.d.ts.map +1 -0
  111. package/lib/types/sources.d.ts +33 -0
  112. package/lib/types/sources.d.ts.map +1 -0
  113. package/lib/types/state.d.ts +607 -23
  114. package/lib/types/state.d.ts.map +1 -1
  115. package/lib/types/tools.d.ts +3 -1
  116. package/lib/types/tools.d.ts.map +1 -1
  117. package/lib/types/udt.d.ts +20 -24
  118. package/lib/types/udt.d.ts.map +1 -1
  119. package/lib/types/version.d.ts +11 -0
  120. package/lib/types/version.d.ts.map +1 -0
  121. package/lib/types/vocabulary.d.ts +2 -2
  122. package/lib/udt.js +72 -19
  123. package/lib/udt.js.map +1 -1
  124. package/lib/version.js +26 -0
  125. package/lib/version.js.map +1 -0
  126. package/package.json +27 -22
@@ -53,13 +53,64 @@ export declare const MAX_PROMPT_CHARS = 1000;
53
53
  export declare const MAX_TITLE_CHARS = 200;
54
54
  export declare const MAX_STEP_CHARS = 400;
55
55
  export declare const MAX_STEPS = 12;
56
+ export declare const MAX_MATH_TEX_CHARS = 2000;
57
+ export declare const MAX_MATHML_CHARS = 12000;
58
+ export declare const MAX_MATH_FRAGMENTS = 24;
59
+ export declare const MAX_ID_CHARS = 120;
60
+ export declare const MAX_CODE_CHARS = 6000;
61
+ export declare const MAX_CODE_LANGUAGE_CHARS = 40;
62
+ export declare const MAX_QUIZ_QUESTIONS = 8;
63
+ export declare const MAX_QUIZ_OPTIONS = 8;
64
+ export declare const MAX_QUIZ_ANSWER_CHARS = 2000;
65
+ export declare const MAX_FLASHCARD_SIDE_CHARS = 2000;
66
+ export declare const MAX_FLASHCARD_TAGS = 8;
67
+ export declare const MAX_COMPARISON_COLUMNS = 8;
68
+ export declare const MAX_COMPARISON_ROWS = 20;
69
+ export declare const MAX_COMPARISON_CELL_CHARS = 500;
70
+ export declare const MAX_LESSON_BYTES = 262144;
71
+ /** A citation into one stored source. */
72
+ export declare const SourceRefSchema: z.ZodObject<{
73
+ sourceId: z.ZodString;
74
+ locator: z.ZodString;
75
+ }, z.core.$strict>;
76
+ export type SourceRef = z.infer<typeof SourceRefSchema>;
77
+ export declare const MathFragmentSchema: z.ZodObject<{
78
+ tex: z.ZodString;
79
+ display: z.ZodBoolean;
80
+ mathml: z.ZodString;
81
+ }, z.core.$strip>;
82
+ export type MathFragmentRecord = z.infer<typeof MathFragmentSchema>;
56
83
  export declare const TextBlockSchema: z.ZodObject<{
57
84
  type: z.ZodLiteral<"text">;
58
85
  content: z.ZodObject<{
59
86
  md: z.ZodString;
87
+ math: z.ZodOptional<z.ZodArray<z.ZodObject<{
88
+ tex: z.ZodString;
89
+ display: z.ZodBoolean;
90
+ mathml: z.ZodString;
91
+ }, z.core.$strip>>>;
92
+ }, z.core.$strip>;
93
+ id: z.ZodString;
94
+ metadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
95
+ sourceRefs: z.ZodOptional<z.ZodArray<z.ZodObject<{
96
+ sourceId: z.ZodString;
97
+ locator: z.ZodString;
98
+ }, z.core.$strict>>>;
99
+ }, z.core.$strip>;
100
+ export declare const FormulaBlockSchema: z.ZodObject<{
101
+ type: z.ZodLiteral<"formula">;
102
+ content: z.ZodObject<{
103
+ tex: z.ZodString;
104
+ display: z.ZodOptional<z.ZodBoolean>;
105
+ mathml: z.ZodOptional<z.ZodString>;
106
+ caption: z.ZodOptional<z.ZodString>;
60
107
  }, z.core.$strip>;
61
108
  id: z.ZodString;
62
109
  metadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
110
+ sourceRefs: z.ZodOptional<z.ZodArray<z.ZodObject<{
111
+ sourceId: z.ZodString;
112
+ locator: z.ZodString;
113
+ }, z.core.$strict>>>;
63
114
  }, z.core.$strip>;
64
115
  export declare const ExampleBlockSchema: z.ZodObject<{
65
116
  type: z.ZodLiteral<"example">;
@@ -70,6 +121,10 @@ export declare const ExampleBlockSchema: z.ZodObject<{
70
121
  }, z.core.$strip>;
71
122
  id: z.ZodString;
72
123
  metadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
124
+ sourceRefs: z.ZodOptional<z.ZodArray<z.ZodObject<{
125
+ sourceId: z.ZodString;
126
+ locator: z.ZodString;
127
+ }, z.core.$strict>>>;
73
128
  }, z.core.$strip>;
74
129
  export declare const DiagramBlockSchema: z.ZodObject<{
75
130
  type: z.ZodLiteral<"diagram">;
@@ -83,6 +138,10 @@ export declare const DiagramBlockSchema: z.ZodObject<{
83
138
  }, z.core.$strip>;
84
139
  id: z.ZodString;
85
140
  metadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
141
+ sourceRefs: z.ZodOptional<z.ZodArray<z.ZodObject<{
142
+ sourceId: z.ZodString;
143
+ locator: z.ZodString;
144
+ }, z.core.$strict>>>;
86
145
  }, z.core.$strip>;
87
146
  export declare const CheckBlockSchema: z.ZodObject<{
88
147
  type: z.ZodLiteral<"check">;
@@ -96,15 +155,122 @@ export declare const CheckBlockSchema: z.ZodObject<{
96
155
  }, z.core.$strip>;
97
156
  id: z.ZodString;
98
157
  metadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
158
+ sourceRefs: z.ZodOptional<z.ZodArray<z.ZodObject<{
159
+ sourceId: z.ZodString;
160
+ locator: z.ZodString;
161
+ }, z.core.$strict>>>;
162
+ }, z.core.$strip>;
163
+ export declare const CodeBlockSchema: z.ZodObject<{
164
+ type: z.ZodLiteral<"code">;
165
+ content: z.ZodObject<{
166
+ language: z.ZodOptional<z.ZodString>;
167
+ source: z.ZodString;
168
+ caption: z.ZodOptional<z.ZodString>;
169
+ }, z.core.$strip>;
170
+ id: z.ZodString;
171
+ metadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
172
+ sourceRefs: z.ZodOptional<z.ZodArray<z.ZodObject<{
173
+ sourceId: z.ZodString;
174
+ locator: z.ZodString;
175
+ }, z.core.$strict>>>;
176
+ }, z.core.$strip>;
177
+ export declare const QuizQuestionSchema: z.ZodObject<{
178
+ id: z.ZodString;
179
+ kind: z.ZodEnum<{
180
+ mcq: "mcq";
181
+ short: "short";
182
+ }>;
183
+ prompt: z.ZodString;
184
+ options: z.ZodOptional<z.ZodArray<z.ZodString>>;
185
+ answer: z.ZodOptional<z.ZodString>;
186
+ rubric: z.ZodOptional<z.ZodString>;
187
+ explanation: z.ZodOptional<z.ZodString>;
188
+ }, z.core.$strip>;
189
+ export declare const QuizBlockSchema: z.ZodObject<{
190
+ type: z.ZodLiteral<"quiz">;
191
+ content: z.ZodObject<{
192
+ title: z.ZodOptional<z.ZodString>;
193
+ questions: z.ZodArray<z.ZodObject<{
194
+ id: z.ZodString;
195
+ kind: z.ZodEnum<{
196
+ mcq: "mcq";
197
+ short: "short";
198
+ }>;
199
+ prompt: z.ZodString;
200
+ options: z.ZodOptional<z.ZodArray<z.ZodString>>;
201
+ answer: z.ZodOptional<z.ZodString>;
202
+ rubric: z.ZodOptional<z.ZodString>;
203
+ explanation: z.ZodOptional<z.ZodString>;
204
+ }, z.core.$strip>>;
205
+ }, z.core.$strip>;
206
+ id: z.ZodString;
207
+ metadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
208
+ sourceRefs: z.ZodOptional<z.ZodArray<z.ZodObject<{
209
+ sourceId: z.ZodString;
210
+ locator: z.ZodString;
211
+ }, z.core.$strict>>>;
212
+ }, z.core.$strip>;
213
+ export declare const FlashcardBlockSchema: z.ZodObject<{
214
+ type: z.ZodLiteral<"flashcard">;
215
+ content: z.ZodObject<{
216
+ front: z.ZodString;
217
+ back: z.ZodString;
218
+ tags: z.ZodOptional<z.ZodArray<z.ZodString>>;
219
+ }, z.core.$strip>;
220
+ id: z.ZodString;
221
+ metadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
222
+ sourceRefs: z.ZodOptional<z.ZodArray<z.ZodObject<{
223
+ sourceId: z.ZodString;
224
+ locator: z.ZodString;
225
+ }, z.core.$strict>>>;
226
+ }, z.core.$strip>;
227
+ export declare const ResourceBlockSchema: z.ZodObject<{
228
+ type: z.ZodLiteral<"resource">;
229
+ content: z.ZodObject<{
230
+ title: z.ZodString;
231
+ sourceId: z.ZodOptional<z.ZodString>;
232
+ locator: z.ZodOptional<z.ZodString>;
233
+ url: z.ZodOptional<z.ZodString>;
234
+ note: z.ZodOptional<z.ZodString>;
235
+ }, z.core.$strip>;
236
+ id: z.ZodString;
237
+ metadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
238
+ sourceRefs: z.ZodOptional<z.ZodArray<z.ZodObject<{
239
+ sourceId: z.ZodString;
240
+ locator: z.ZodString;
241
+ }, z.core.$strict>>>;
242
+ }, z.core.$strip>;
243
+ export declare const ComparisonBlockSchema: z.ZodObject<{
244
+ type: z.ZodLiteral<"comparison">;
245
+ content: z.ZodObject<{
246
+ columns: z.ZodArray<z.ZodString>;
247
+ rows: z.ZodArray<z.ZodArray<z.ZodString>>;
248
+ caption: z.ZodOptional<z.ZodString>;
249
+ }, z.core.$strip>;
250
+ id: z.ZodString;
251
+ metadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
252
+ sourceRefs: z.ZodOptional<z.ZodArray<z.ZodObject<{
253
+ sourceId: z.ZodString;
254
+ locator: z.ZodString;
255
+ }, z.core.$strict>>>;
99
256
  }, z.core.$strip>;
100
257
  /** Every block type this version understands. */
101
258
  export declare const BLOCK_SCHEMAS: readonly [z.ZodObject<{
102
259
  type: z.ZodLiteral<"text">;
103
260
  content: z.ZodObject<{
104
261
  md: z.ZodString;
262
+ math: z.ZodOptional<z.ZodArray<z.ZodObject<{
263
+ tex: z.ZodString;
264
+ display: z.ZodBoolean;
265
+ mathml: z.ZodString;
266
+ }, z.core.$strip>>>;
105
267
  }, z.core.$strip>;
106
268
  id: z.ZodString;
107
269
  metadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
270
+ sourceRefs: z.ZodOptional<z.ZodArray<z.ZodObject<{
271
+ sourceId: z.ZodString;
272
+ locator: z.ZodString;
273
+ }, z.core.$strict>>>;
108
274
  }, z.core.$strip>, z.ZodObject<{
109
275
  type: z.ZodLiteral<"example">;
110
276
  content: z.ZodObject<{
@@ -114,6 +280,10 @@ export declare const BLOCK_SCHEMAS: readonly [z.ZodObject<{
114
280
  }, z.core.$strip>;
115
281
  id: z.ZodString;
116
282
  metadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
283
+ sourceRefs: z.ZodOptional<z.ZodArray<z.ZodObject<{
284
+ sourceId: z.ZodString;
285
+ locator: z.ZodString;
286
+ }, z.core.$strict>>>;
117
287
  }, z.core.$strip>, z.ZodObject<{
118
288
  type: z.ZodLiteral<"diagram">;
119
289
  content: z.ZodObject<{
@@ -126,6 +296,10 @@ export declare const BLOCK_SCHEMAS: readonly [z.ZodObject<{
126
296
  }, z.core.$strip>;
127
297
  id: z.ZodString;
128
298
  metadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
299
+ sourceRefs: z.ZodOptional<z.ZodArray<z.ZodObject<{
300
+ sourceId: z.ZodString;
301
+ locator: z.ZodString;
302
+ }, z.core.$strict>>>;
129
303
  }, z.core.$strip>, z.ZodObject<{
130
304
  type: z.ZodLiteral<"check">;
131
305
  content: z.ZodObject<{
@@ -138,14 +312,118 @@ export declare const BLOCK_SCHEMAS: readonly [z.ZodObject<{
138
312
  }, z.core.$strip>;
139
313
  id: z.ZodString;
140
314
  metadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
315
+ sourceRefs: z.ZodOptional<z.ZodArray<z.ZodObject<{
316
+ sourceId: z.ZodString;
317
+ locator: z.ZodString;
318
+ }, z.core.$strict>>>;
319
+ }, z.core.$strip>, z.ZodObject<{
320
+ type: z.ZodLiteral<"formula">;
321
+ content: z.ZodObject<{
322
+ tex: z.ZodString;
323
+ display: z.ZodOptional<z.ZodBoolean>;
324
+ mathml: z.ZodOptional<z.ZodString>;
325
+ caption: z.ZodOptional<z.ZodString>;
326
+ }, z.core.$strip>;
327
+ id: z.ZodString;
328
+ metadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
329
+ sourceRefs: z.ZodOptional<z.ZodArray<z.ZodObject<{
330
+ sourceId: z.ZodString;
331
+ locator: z.ZodString;
332
+ }, z.core.$strict>>>;
333
+ }, z.core.$strip>, z.ZodObject<{
334
+ type: z.ZodLiteral<"code">;
335
+ content: z.ZodObject<{
336
+ language: z.ZodOptional<z.ZodString>;
337
+ source: z.ZodString;
338
+ caption: z.ZodOptional<z.ZodString>;
339
+ }, z.core.$strip>;
340
+ id: z.ZodString;
341
+ metadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
342
+ sourceRefs: z.ZodOptional<z.ZodArray<z.ZodObject<{
343
+ sourceId: z.ZodString;
344
+ locator: z.ZodString;
345
+ }, z.core.$strict>>>;
346
+ }, z.core.$strip>, z.ZodObject<{
347
+ type: z.ZodLiteral<"quiz">;
348
+ content: z.ZodObject<{
349
+ title: z.ZodOptional<z.ZodString>;
350
+ questions: z.ZodArray<z.ZodObject<{
351
+ id: z.ZodString;
352
+ kind: z.ZodEnum<{
353
+ mcq: "mcq";
354
+ short: "short";
355
+ }>;
356
+ prompt: z.ZodString;
357
+ options: z.ZodOptional<z.ZodArray<z.ZodString>>;
358
+ answer: z.ZodOptional<z.ZodString>;
359
+ rubric: z.ZodOptional<z.ZodString>;
360
+ explanation: z.ZodOptional<z.ZodString>;
361
+ }, z.core.$strip>>;
362
+ }, z.core.$strip>;
363
+ id: z.ZodString;
364
+ metadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
365
+ sourceRefs: z.ZodOptional<z.ZodArray<z.ZodObject<{
366
+ sourceId: z.ZodString;
367
+ locator: z.ZodString;
368
+ }, z.core.$strict>>>;
369
+ }, z.core.$strip>, z.ZodObject<{
370
+ type: z.ZodLiteral<"flashcard">;
371
+ content: z.ZodObject<{
372
+ front: z.ZodString;
373
+ back: z.ZodString;
374
+ tags: z.ZodOptional<z.ZodArray<z.ZodString>>;
375
+ }, z.core.$strip>;
376
+ id: z.ZodString;
377
+ metadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
378
+ sourceRefs: z.ZodOptional<z.ZodArray<z.ZodObject<{
379
+ sourceId: z.ZodString;
380
+ locator: z.ZodString;
381
+ }, z.core.$strict>>>;
382
+ }, z.core.$strip>, z.ZodObject<{
383
+ type: z.ZodLiteral<"resource">;
384
+ content: z.ZodObject<{
385
+ title: z.ZodString;
386
+ sourceId: z.ZodOptional<z.ZodString>;
387
+ locator: z.ZodOptional<z.ZodString>;
388
+ url: z.ZodOptional<z.ZodString>;
389
+ note: z.ZodOptional<z.ZodString>;
390
+ }, z.core.$strip>;
391
+ id: z.ZodString;
392
+ metadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
393
+ sourceRefs: z.ZodOptional<z.ZodArray<z.ZodObject<{
394
+ sourceId: z.ZodString;
395
+ locator: z.ZodString;
396
+ }, z.core.$strict>>>;
397
+ }, z.core.$strip>, z.ZodObject<{
398
+ type: z.ZodLiteral<"comparison">;
399
+ content: z.ZodObject<{
400
+ columns: z.ZodArray<z.ZodString>;
401
+ rows: z.ZodArray<z.ZodArray<z.ZodString>>;
402
+ caption: z.ZodOptional<z.ZodString>;
403
+ }, z.core.$strip>;
404
+ id: z.ZodString;
405
+ metadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
406
+ sourceRefs: z.ZodOptional<z.ZodArray<z.ZodObject<{
407
+ sourceId: z.ZodString;
408
+ locator: z.ZodString;
409
+ }, z.core.$strict>>>;
141
410
  }, z.core.$strip>];
142
- export declare const BlockSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
411
+ export declare const KnownBlockSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
143
412
  type: z.ZodLiteral<"text">;
144
413
  content: z.ZodObject<{
145
414
  md: z.ZodString;
415
+ math: z.ZodOptional<z.ZodArray<z.ZodObject<{
416
+ tex: z.ZodString;
417
+ display: z.ZodBoolean;
418
+ mathml: z.ZodString;
419
+ }, z.core.$strip>>>;
146
420
  }, z.core.$strip>;
147
421
  id: z.ZodString;
148
422
  metadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
423
+ sourceRefs: z.ZodOptional<z.ZodArray<z.ZodObject<{
424
+ sourceId: z.ZodString;
425
+ locator: z.ZodString;
426
+ }, z.core.$strict>>>;
149
427
  }, z.core.$strip>, z.ZodObject<{
150
428
  type: z.ZodLiteral<"example">;
151
429
  content: z.ZodObject<{
@@ -155,6 +433,10 @@ export declare const BlockSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
155
433
  }, z.core.$strip>;
156
434
  id: z.ZodString;
157
435
  metadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
436
+ sourceRefs: z.ZodOptional<z.ZodArray<z.ZodObject<{
437
+ sourceId: z.ZodString;
438
+ locator: z.ZodString;
439
+ }, z.core.$strict>>>;
158
440
  }, z.core.$strip>, z.ZodObject<{
159
441
  type: z.ZodLiteral<"diagram">;
160
442
  content: z.ZodObject<{
@@ -167,6 +449,10 @@ export declare const BlockSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
167
449
  }, z.core.$strip>;
168
450
  id: z.ZodString;
169
451
  metadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
452
+ sourceRefs: z.ZodOptional<z.ZodArray<z.ZodObject<{
453
+ sourceId: z.ZodString;
454
+ locator: z.ZodString;
455
+ }, z.core.$strict>>>;
170
456
  }, z.core.$strip>, z.ZodObject<{
171
457
  type: z.ZodLiteral<"check">;
172
458
  content: z.ZodObject<{
@@ -179,13 +465,298 @@ export declare const BlockSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
179
465
  }, z.core.$strip>;
180
466
  id: z.ZodString;
181
467
  metadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
468
+ sourceRefs: z.ZodOptional<z.ZodArray<z.ZodObject<{
469
+ sourceId: z.ZodString;
470
+ locator: z.ZodString;
471
+ }, z.core.$strict>>>;
472
+ }, z.core.$strip>, z.ZodObject<{
473
+ type: z.ZodLiteral<"formula">;
474
+ content: z.ZodObject<{
475
+ tex: z.ZodString;
476
+ display: z.ZodOptional<z.ZodBoolean>;
477
+ mathml: z.ZodOptional<z.ZodString>;
478
+ caption: z.ZodOptional<z.ZodString>;
479
+ }, z.core.$strip>;
480
+ id: z.ZodString;
481
+ metadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
482
+ sourceRefs: z.ZodOptional<z.ZodArray<z.ZodObject<{
483
+ sourceId: z.ZodString;
484
+ locator: z.ZodString;
485
+ }, z.core.$strict>>>;
486
+ }, z.core.$strip>, z.ZodObject<{
487
+ type: z.ZodLiteral<"code">;
488
+ content: z.ZodObject<{
489
+ language: z.ZodOptional<z.ZodString>;
490
+ source: z.ZodString;
491
+ caption: z.ZodOptional<z.ZodString>;
492
+ }, z.core.$strip>;
493
+ id: z.ZodString;
494
+ metadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
495
+ sourceRefs: z.ZodOptional<z.ZodArray<z.ZodObject<{
496
+ sourceId: z.ZodString;
497
+ locator: z.ZodString;
498
+ }, z.core.$strict>>>;
499
+ }, z.core.$strip>, z.ZodObject<{
500
+ type: z.ZodLiteral<"quiz">;
501
+ content: z.ZodObject<{
502
+ title: z.ZodOptional<z.ZodString>;
503
+ questions: z.ZodArray<z.ZodObject<{
504
+ id: z.ZodString;
505
+ kind: z.ZodEnum<{
506
+ mcq: "mcq";
507
+ short: "short";
508
+ }>;
509
+ prompt: z.ZodString;
510
+ options: z.ZodOptional<z.ZodArray<z.ZodString>>;
511
+ answer: z.ZodOptional<z.ZodString>;
512
+ rubric: z.ZodOptional<z.ZodString>;
513
+ explanation: z.ZodOptional<z.ZodString>;
514
+ }, z.core.$strip>>;
515
+ }, z.core.$strip>;
516
+ id: z.ZodString;
517
+ metadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
518
+ sourceRefs: z.ZodOptional<z.ZodArray<z.ZodObject<{
519
+ sourceId: z.ZodString;
520
+ locator: z.ZodString;
521
+ }, z.core.$strict>>>;
522
+ }, z.core.$strip>, z.ZodObject<{
523
+ type: z.ZodLiteral<"flashcard">;
524
+ content: z.ZodObject<{
525
+ front: z.ZodString;
526
+ back: z.ZodString;
527
+ tags: z.ZodOptional<z.ZodArray<z.ZodString>>;
528
+ }, z.core.$strip>;
529
+ id: z.ZodString;
530
+ metadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
531
+ sourceRefs: z.ZodOptional<z.ZodArray<z.ZodObject<{
532
+ sourceId: z.ZodString;
533
+ locator: z.ZodString;
534
+ }, z.core.$strict>>>;
535
+ }, z.core.$strip>, z.ZodObject<{
536
+ type: z.ZodLiteral<"resource">;
537
+ content: z.ZodObject<{
538
+ title: z.ZodString;
539
+ sourceId: z.ZodOptional<z.ZodString>;
540
+ locator: z.ZodOptional<z.ZodString>;
541
+ url: z.ZodOptional<z.ZodString>;
542
+ note: z.ZodOptional<z.ZodString>;
543
+ }, z.core.$strip>;
544
+ id: z.ZodString;
545
+ metadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
546
+ sourceRefs: z.ZodOptional<z.ZodArray<z.ZodObject<{
547
+ sourceId: z.ZodString;
548
+ locator: z.ZodString;
549
+ }, z.core.$strict>>>;
550
+ }, z.core.$strip>, z.ZodObject<{
551
+ type: z.ZodLiteral<"comparison">;
552
+ content: z.ZodObject<{
553
+ columns: z.ZodArray<z.ZodString>;
554
+ rows: z.ZodArray<z.ZodArray<z.ZodString>>;
555
+ caption: z.ZodOptional<z.ZodString>;
556
+ }, z.core.$strip>;
557
+ id: z.ZodString;
558
+ metadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
559
+ sourceRefs: z.ZodOptional<z.ZodArray<z.ZodObject<{
560
+ sourceId: z.ZodString;
561
+ locator: z.ZodString;
562
+ }, z.core.$strict>>>;
182
563
  }, z.core.$strip>], "type">;
564
+ /**
565
+ * A block authored by a newer host.
566
+ *
567
+ * The durable boundary accepts it so an old client does not refuse to open a
568
+ * document. Writes from the current model still go through `KnownBlockSchema`;
569
+ * only records already on disk can carry an unknown type.
570
+ */
571
+ export declare const UnknownBlockSchema: z.ZodObject<{
572
+ id: z.ZodString;
573
+ type: z.ZodString;
574
+ content: z.ZodUnknown;
575
+ metadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
576
+ sourceRefs: z.ZodOptional<z.ZodArray<z.ZodObject<{
577
+ sourceId: z.ZodString;
578
+ locator: z.ZodString;
579
+ }, z.core.$strict>>>;
580
+ }, z.core.$strip>;
581
+ export declare const BlockSchema: z.ZodUnion<readonly [z.ZodDiscriminatedUnion<[z.ZodObject<{
582
+ type: z.ZodLiteral<"text">;
583
+ content: z.ZodObject<{
584
+ md: z.ZodString;
585
+ math: z.ZodOptional<z.ZodArray<z.ZodObject<{
586
+ tex: z.ZodString;
587
+ display: z.ZodBoolean;
588
+ mathml: z.ZodString;
589
+ }, z.core.$strip>>>;
590
+ }, z.core.$strip>;
591
+ id: z.ZodString;
592
+ metadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
593
+ sourceRefs: z.ZodOptional<z.ZodArray<z.ZodObject<{
594
+ sourceId: z.ZodString;
595
+ locator: z.ZodString;
596
+ }, z.core.$strict>>>;
597
+ }, z.core.$strip>, z.ZodObject<{
598
+ type: z.ZodLiteral<"example">;
599
+ content: z.ZodObject<{
600
+ title: z.ZodString;
601
+ steps: z.ZodArray<z.ZodString>;
602
+ takeaway: z.ZodOptional<z.ZodString>;
603
+ }, z.core.$strip>;
604
+ id: z.ZodString;
605
+ metadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
606
+ sourceRefs: z.ZodOptional<z.ZodArray<z.ZodObject<{
607
+ sourceId: z.ZodString;
608
+ locator: z.ZodString;
609
+ }, z.core.$strict>>>;
610
+ }, z.core.$strip>, z.ZodObject<{
611
+ type: z.ZodLiteral<"diagram">;
612
+ content: z.ZodObject<{
613
+ format: z.ZodEnum<{
614
+ ascii: "ascii";
615
+ mermaid: "mermaid";
616
+ }>;
617
+ spec: z.ZodString;
618
+ caption: z.ZodOptional<z.ZodString>;
619
+ }, z.core.$strip>;
620
+ id: z.ZodString;
621
+ metadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
622
+ sourceRefs: z.ZodOptional<z.ZodArray<z.ZodObject<{
623
+ sourceId: z.ZodString;
624
+ locator: z.ZodString;
625
+ }, z.core.$strict>>>;
626
+ }, z.core.$strip>, z.ZodObject<{
627
+ type: z.ZodLiteral<"check">;
628
+ content: z.ZodObject<{
629
+ prompt: z.ZodString;
630
+ expect: z.ZodOptional<z.ZodEnum<{
631
+ reasoning: "reasoning";
632
+ answer: "answer";
633
+ }>>;
634
+ hint: z.ZodOptional<z.ZodString>;
635
+ }, z.core.$strip>;
636
+ id: z.ZodString;
637
+ metadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
638
+ sourceRefs: z.ZodOptional<z.ZodArray<z.ZodObject<{
639
+ sourceId: z.ZodString;
640
+ locator: z.ZodString;
641
+ }, z.core.$strict>>>;
642
+ }, z.core.$strip>, z.ZodObject<{
643
+ type: z.ZodLiteral<"formula">;
644
+ content: z.ZodObject<{
645
+ tex: z.ZodString;
646
+ display: z.ZodOptional<z.ZodBoolean>;
647
+ mathml: z.ZodOptional<z.ZodString>;
648
+ caption: z.ZodOptional<z.ZodString>;
649
+ }, z.core.$strip>;
650
+ id: z.ZodString;
651
+ metadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
652
+ sourceRefs: z.ZodOptional<z.ZodArray<z.ZodObject<{
653
+ sourceId: z.ZodString;
654
+ locator: z.ZodString;
655
+ }, z.core.$strict>>>;
656
+ }, z.core.$strip>, z.ZodObject<{
657
+ type: z.ZodLiteral<"code">;
658
+ content: z.ZodObject<{
659
+ language: z.ZodOptional<z.ZodString>;
660
+ source: z.ZodString;
661
+ caption: z.ZodOptional<z.ZodString>;
662
+ }, z.core.$strip>;
663
+ id: z.ZodString;
664
+ metadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
665
+ sourceRefs: z.ZodOptional<z.ZodArray<z.ZodObject<{
666
+ sourceId: z.ZodString;
667
+ locator: z.ZodString;
668
+ }, z.core.$strict>>>;
669
+ }, z.core.$strip>, z.ZodObject<{
670
+ type: z.ZodLiteral<"quiz">;
671
+ content: z.ZodObject<{
672
+ title: z.ZodOptional<z.ZodString>;
673
+ questions: z.ZodArray<z.ZodObject<{
674
+ id: z.ZodString;
675
+ kind: z.ZodEnum<{
676
+ mcq: "mcq";
677
+ short: "short";
678
+ }>;
679
+ prompt: z.ZodString;
680
+ options: z.ZodOptional<z.ZodArray<z.ZodString>>;
681
+ answer: z.ZodOptional<z.ZodString>;
682
+ rubric: z.ZodOptional<z.ZodString>;
683
+ explanation: z.ZodOptional<z.ZodString>;
684
+ }, z.core.$strip>>;
685
+ }, z.core.$strip>;
686
+ id: z.ZodString;
687
+ metadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
688
+ sourceRefs: z.ZodOptional<z.ZodArray<z.ZodObject<{
689
+ sourceId: z.ZodString;
690
+ locator: z.ZodString;
691
+ }, z.core.$strict>>>;
692
+ }, z.core.$strip>, z.ZodObject<{
693
+ type: z.ZodLiteral<"flashcard">;
694
+ content: z.ZodObject<{
695
+ front: z.ZodString;
696
+ back: z.ZodString;
697
+ tags: z.ZodOptional<z.ZodArray<z.ZodString>>;
698
+ }, z.core.$strip>;
699
+ id: z.ZodString;
700
+ metadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
701
+ sourceRefs: z.ZodOptional<z.ZodArray<z.ZodObject<{
702
+ sourceId: z.ZodString;
703
+ locator: z.ZodString;
704
+ }, z.core.$strict>>>;
705
+ }, z.core.$strip>, z.ZodObject<{
706
+ type: z.ZodLiteral<"resource">;
707
+ content: z.ZodObject<{
708
+ title: z.ZodString;
709
+ sourceId: z.ZodOptional<z.ZodString>;
710
+ locator: z.ZodOptional<z.ZodString>;
711
+ url: z.ZodOptional<z.ZodString>;
712
+ note: z.ZodOptional<z.ZodString>;
713
+ }, z.core.$strip>;
714
+ id: z.ZodString;
715
+ metadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
716
+ sourceRefs: z.ZodOptional<z.ZodArray<z.ZodObject<{
717
+ sourceId: z.ZodString;
718
+ locator: z.ZodString;
719
+ }, z.core.$strict>>>;
720
+ }, z.core.$strip>, z.ZodObject<{
721
+ type: z.ZodLiteral<"comparison">;
722
+ content: z.ZodObject<{
723
+ columns: z.ZodArray<z.ZodString>;
724
+ rows: z.ZodArray<z.ZodArray<z.ZodString>>;
725
+ caption: z.ZodOptional<z.ZodString>;
726
+ }, z.core.$strip>;
727
+ id: z.ZodString;
728
+ metadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
729
+ sourceRefs: z.ZodOptional<z.ZodArray<z.ZodObject<{
730
+ sourceId: z.ZodString;
731
+ locator: z.ZodString;
732
+ }, z.core.$strict>>>;
733
+ }, z.core.$strip>], "type">, z.ZodObject<{
734
+ id: z.ZodString;
735
+ type: z.ZodString;
736
+ content: z.ZodUnknown;
737
+ metadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
738
+ sourceRefs: z.ZodOptional<z.ZodArray<z.ZodObject<{
739
+ sourceId: z.ZodString;
740
+ locator: z.ZodString;
741
+ }, z.core.$strict>>>;
742
+ }, z.core.$strip>]>;
183
743
  export type TextBlock = z.infer<typeof TextBlockSchema>;
184
744
  export type ExampleBlock = z.infer<typeof ExampleBlockSchema>;
185
745
  export type DiagramBlock = z.infer<typeof DiagramBlockSchema>;
186
746
  export type CheckBlock = z.infer<typeof CheckBlockSchema>;
187
- export type Block = z.infer<typeof BlockSchema>;
188
- export type BlockType = Block['type'];
747
+ export type FormulaBlock = z.infer<typeof FormulaBlockSchema>;
748
+ export type CodeBlock = z.infer<typeof CodeBlockSchema>;
749
+ export type QuizBlock = z.infer<typeof QuizBlockSchema>;
750
+ export type FlashcardBlock = z.infer<typeof FlashcardBlockSchema>;
751
+ export type ResourceBlock = z.infer<typeof ResourceBlockSchema>;
752
+ export type ComparisonBlock = z.infer<typeof ComparisonBlockSchema>;
753
+ export type KnownBlock = z.infer<typeof KnownBlockSchema>;
754
+ export type UnknownBlock = z.infer<typeof UnknownBlockSchema>;
755
+ /** A block this build can render. Kept as the default `Block` name for callers. */
756
+ export type Block = KnownBlock;
757
+ /** A block read from storage; it may have been authored by a newer host. */
758
+ export type StoredBlock = z.infer<typeof BlockSchema>;
759
+ export type BlockType = KnownBlock['type'];
189
760
  /** The block types this build can render, for diagnostics and tests. */
190
761
  export declare const SUPPORTED_BLOCK_TYPES: readonly BlockType[];
191
762
  /**
@@ -208,13 +779,22 @@ export declare const LessonSchema: z.ZodObject<{
208
779
  courseId: z.ZodString;
209
780
  nodeId: z.ZodString;
210
781
  title: z.ZodString;
211
- blocks: z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{
782
+ blocks: z.ZodArray<z.ZodUnion<readonly [z.ZodDiscriminatedUnion<[z.ZodObject<{
212
783
  type: z.ZodLiteral<"text">;
213
784
  content: z.ZodObject<{
214
785
  md: z.ZodString;
786
+ math: z.ZodOptional<z.ZodArray<z.ZodObject<{
787
+ tex: z.ZodString;
788
+ display: z.ZodBoolean;
789
+ mathml: z.ZodString;
790
+ }, z.core.$strip>>>;
215
791
  }, z.core.$strip>;
216
792
  id: z.ZodString;
217
793
  metadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
794
+ sourceRefs: z.ZodOptional<z.ZodArray<z.ZodObject<{
795
+ sourceId: z.ZodString;
796
+ locator: z.ZodString;
797
+ }, z.core.$strict>>>;
218
798
  }, z.core.$strip>, z.ZodObject<{
219
799
  type: z.ZodLiteral<"example">;
220
800
  content: z.ZodObject<{
@@ -224,6 +804,10 @@ export declare const LessonSchema: z.ZodObject<{
224
804
  }, z.core.$strip>;
225
805
  id: z.ZodString;
226
806
  metadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
807
+ sourceRefs: z.ZodOptional<z.ZodArray<z.ZodObject<{
808
+ sourceId: z.ZodString;
809
+ locator: z.ZodString;
810
+ }, z.core.$strict>>>;
227
811
  }, z.core.$strip>, z.ZodObject<{
228
812
  type: z.ZodLiteral<"diagram">;
229
813
  content: z.ZodObject<{
@@ -236,6 +820,10 @@ export declare const LessonSchema: z.ZodObject<{
236
820
  }, z.core.$strip>;
237
821
  id: z.ZodString;
238
822
  metadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
823
+ sourceRefs: z.ZodOptional<z.ZodArray<z.ZodObject<{
824
+ sourceId: z.ZodString;
825
+ locator: z.ZodString;
826
+ }, z.core.$strict>>>;
239
827
  }, z.core.$strip>, z.ZodObject<{
240
828
  type: z.ZodLiteral<"check">;
241
829
  content: z.ZodObject<{
@@ -248,7 +836,111 @@ export declare const LessonSchema: z.ZodObject<{
248
836
  }, z.core.$strip>;
249
837
  id: z.ZodString;
250
838
  metadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
251
- }, z.core.$strip>], "type">>;
839
+ sourceRefs: z.ZodOptional<z.ZodArray<z.ZodObject<{
840
+ sourceId: z.ZodString;
841
+ locator: z.ZodString;
842
+ }, z.core.$strict>>>;
843
+ }, z.core.$strip>, z.ZodObject<{
844
+ type: z.ZodLiteral<"formula">;
845
+ content: z.ZodObject<{
846
+ tex: z.ZodString;
847
+ display: z.ZodOptional<z.ZodBoolean>;
848
+ mathml: z.ZodOptional<z.ZodString>;
849
+ caption: z.ZodOptional<z.ZodString>;
850
+ }, z.core.$strip>;
851
+ id: z.ZodString;
852
+ metadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
853
+ sourceRefs: z.ZodOptional<z.ZodArray<z.ZodObject<{
854
+ sourceId: z.ZodString;
855
+ locator: z.ZodString;
856
+ }, z.core.$strict>>>;
857
+ }, z.core.$strip>, z.ZodObject<{
858
+ type: z.ZodLiteral<"code">;
859
+ content: z.ZodObject<{
860
+ language: z.ZodOptional<z.ZodString>;
861
+ source: z.ZodString;
862
+ caption: z.ZodOptional<z.ZodString>;
863
+ }, z.core.$strip>;
864
+ id: z.ZodString;
865
+ metadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
866
+ sourceRefs: z.ZodOptional<z.ZodArray<z.ZodObject<{
867
+ sourceId: z.ZodString;
868
+ locator: z.ZodString;
869
+ }, z.core.$strict>>>;
870
+ }, z.core.$strip>, z.ZodObject<{
871
+ type: z.ZodLiteral<"quiz">;
872
+ content: z.ZodObject<{
873
+ title: z.ZodOptional<z.ZodString>;
874
+ questions: z.ZodArray<z.ZodObject<{
875
+ id: z.ZodString;
876
+ kind: z.ZodEnum<{
877
+ mcq: "mcq";
878
+ short: "short";
879
+ }>;
880
+ prompt: z.ZodString;
881
+ options: z.ZodOptional<z.ZodArray<z.ZodString>>;
882
+ answer: z.ZodOptional<z.ZodString>;
883
+ rubric: z.ZodOptional<z.ZodString>;
884
+ explanation: z.ZodOptional<z.ZodString>;
885
+ }, z.core.$strip>>;
886
+ }, z.core.$strip>;
887
+ id: z.ZodString;
888
+ metadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
889
+ sourceRefs: z.ZodOptional<z.ZodArray<z.ZodObject<{
890
+ sourceId: z.ZodString;
891
+ locator: z.ZodString;
892
+ }, z.core.$strict>>>;
893
+ }, z.core.$strip>, z.ZodObject<{
894
+ type: z.ZodLiteral<"flashcard">;
895
+ content: z.ZodObject<{
896
+ front: z.ZodString;
897
+ back: z.ZodString;
898
+ tags: z.ZodOptional<z.ZodArray<z.ZodString>>;
899
+ }, z.core.$strip>;
900
+ id: z.ZodString;
901
+ metadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
902
+ sourceRefs: z.ZodOptional<z.ZodArray<z.ZodObject<{
903
+ sourceId: z.ZodString;
904
+ locator: z.ZodString;
905
+ }, z.core.$strict>>>;
906
+ }, z.core.$strip>, z.ZodObject<{
907
+ type: z.ZodLiteral<"resource">;
908
+ content: z.ZodObject<{
909
+ title: z.ZodString;
910
+ sourceId: z.ZodOptional<z.ZodString>;
911
+ locator: z.ZodOptional<z.ZodString>;
912
+ url: z.ZodOptional<z.ZodString>;
913
+ note: z.ZodOptional<z.ZodString>;
914
+ }, z.core.$strip>;
915
+ id: z.ZodString;
916
+ metadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
917
+ sourceRefs: z.ZodOptional<z.ZodArray<z.ZodObject<{
918
+ sourceId: z.ZodString;
919
+ locator: z.ZodString;
920
+ }, z.core.$strict>>>;
921
+ }, z.core.$strip>, z.ZodObject<{
922
+ type: z.ZodLiteral<"comparison">;
923
+ content: z.ZodObject<{
924
+ columns: z.ZodArray<z.ZodString>;
925
+ rows: z.ZodArray<z.ZodArray<z.ZodString>>;
926
+ caption: z.ZodOptional<z.ZodString>;
927
+ }, z.core.$strip>;
928
+ id: z.ZodString;
929
+ metadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
930
+ sourceRefs: z.ZodOptional<z.ZodArray<z.ZodObject<{
931
+ sourceId: z.ZodString;
932
+ locator: z.ZodString;
933
+ }, z.core.$strict>>>;
934
+ }, z.core.$strip>], "type">, z.ZodObject<{
935
+ id: z.ZodString;
936
+ type: z.ZodString;
937
+ content: z.ZodUnknown;
938
+ metadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
939
+ sourceRefs: z.ZodOptional<z.ZodArray<z.ZodObject<{
940
+ sourceId: z.ZodString;
941
+ locator: z.ZodString;
942
+ }, z.core.$strict>>>;
943
+ }, z.core.$strip>]>>;
252
944
  origin: z.ZodEnum<{
253
945
  prototype: "prototype";
254
946
  tutor: "tutor";