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
@@ -0,0 +1,744 @@
1
+ /** Course planning is separate from the evidence-backed diagnosis graph. */
2
+ import { z } from 'zod';
3
+ export declare const EvidenceRefSchema: z.ZodObject<{
4
+ nodeId: z.ZodString;
5
+ evidenceIndex: z.ZodNumber;
6
+ }, z.core.$strict>;
7
+ export type EvidenceRef = z.infer<typeof EvidenceRefSchema>;
8
+ export declare const GoalBriefSchema: z.ZodObject<{
9
+ purpose: z.ZodString;
10
+ outcomes: z.ZodArray<z.ZodString>;
11
+ background: z.ZodString;
12
+ timeZone: z.ZodString;
13
+ targetDate: z.ZodNullable<z.ZodString>;
14
+ durationWeeks: z.ZodNullable<z.ZodNumber>;
15
+ deadline: z.ZodEnum<{
16
+ none: "none";
17
+ flexible: "flexible";
18
+ fixed: "fixed";
19
+ }>;
20
+ weeklyMinutes: z.ZodNullable<z.ZodNumber>;
21
+ sessionMinutes: z.ZodNullable<z.ZodNumber>;
22
+ preferences: z.ZodString;
23
+ }, z.core.$strict>;
24
+ export type GoalBrief = z.infer<typeof GoalBriefSchema>;
25
+ export declare const AssessmentSchema: z.ZodObject<{
26
+ status: z.ZodEnum<{
27
+ ready: "ready";
28
+ "in-progress": "in-progress";
29
+ skipped: "skipped";
30
+ }>;
31
+ summary: z.ZodString;
32
+ strengths: z.ZodArray<z.ZodString>;
33
+ gaps: z.ZodArray<z.ZodString>;
34
+ uncertainties: z.ZodArray<z.ZodString>;
35
+ evidence: z.ZodArray<z.ZodObject<{
36
+ nodeId: z.ZodString;
37
+ evidenceIndex: z.ZodNumber;
38
+ }, z.core.$strict>>;
39
+ briefRevision: z.ZodNumber;
40
+ sessionId: z.ZodString;
41
+ updatedAt: z.ZodString;
42
+ }, z.core.$strict>;
43
+ export type Assessment = z.infer<typeof AssessmentSchema>;
44
+ export declare const CurriculumModuleSchema: z.ZodObject<{
45
+ id: z.ZodString;
46
+ title: z.ZodString;
47
+ overview: z.ZodString;
48
+ outcomes: z.ZodArray<z.ZodString>;
49
+ milestone: z.ZodString;
50
+ }, z.core.$strict>;
51
+ export declare const CurriculumItemSchema: z.ZodObject<{
52
+ id: z.ZodString;
53
+ moduleId: z.ZodString;
54
+ title: z.ZodString;
55
+ overview: z.ZodString;
56
+ outcomes: z.ZodArray<z.ZodString>;
57
+ outline: z.ZodArray<z.ZodString>;
58
+ topics: z.ZodArray<z.ZodString>;
59
+ nodeIds: z.ZodArray<z.ZodString>;
60
+ practice: z.ZodString;
61
+ assessment: z.ZodString;
62
+ minutes: z.ZodObject<{
63
+ min: z.ZodNumber;
64
+ max: z.ZodNumber;
65
+ }, z.core.$strict>;
66
+ }, z.core.$strict>;
67
+ export type CurriculumItem = z.infer<typeof CurriculumItemSchema>;
68
+ export declare const CurriculumEdgeSchema: z.ZodObject<{
69
+ from: z.ZodString;
70
+ to: z.ZodString;
71
+ kind: z.ZodEnum<{
72
+ optional: "optional";
73
+ required: "required";
74
+ }>;
75
+ }, z.core.$strict>;
76
+ export declare const CurriculumInputSchema: z.ZodObject<{
77
+ title: z.ZodString;
78
+ summary: z.ZodString;
79
+ modules: z.ZodArray<z.ZodObject<{
80
+ id: z.ZodString;
81
+ title: z.ZodString;
82
+ overview: z.ZodString;
83
+ outcomes: z.ZodArray<z.ZodString>;
84
+ milestone: z.ZodString;
85
+ }, z.core.$strict>>;
86
+ items: z.ZodArray<z.ZodObject<{
87
+ id: z.ZodString;
88
+ moduleId: z.ZodString;
89
+ title: z.ZodString;
90
+ overview: z.ZodString;
91
+ outcomes: z.ZodArray<z.ZodString>;
92
+ outline: z.ZodArray<z.ZodString>;
93
+ topics: z.ZodArray<z.ZodString>;
94
+ nodeIds: z.ZodArray<z.ZodString>;
95
+ practice: z.ZodString;
96
+ assessment: z.ZodString;
97
+ minutes: z.ZodObject<{
98
+ min: z.ZodNumber;
99
+ max: z.ZodNumber;
100
+ }, z.core.$strict>;
101
+ }, z.core.$strict>>;
102
+ edges: z.ZodArray<z.ZodObject<{
103
+ from: z.ZodString;
104
+ to: z.ZodString;
105
+ kind: z.ZodEnum<{
106
+ optional: "optional";
107
+ required: "required";
108
+ }>;
109
+ }, z.core.$strict>>;
110
+ assumptions: z.ZodArray<z.ZodString>;
111
+ changeReason: z.ZodString;
112
+ }, z.core.$strict>;
113
+ export type CurriculumInput = z.infer<typeof CurriculumInputSchema>;
114
+ export declare const CurriculumSchema: z.ZodObject<{
115
+ version: z.ZodNumber;
116
+ briefRevision: z.ZodNumber;
117
+ assessmentRevision: z.ZodNumber;
118
+ createdAt: z.ZodString;
119
+ acceptedAt: z.ZodNullable<z.ZodString>;
120
+ title: z.ZodString;
121
+ summary: z.ZodString;
122
+ modules: z.ZodArray<z.ZodObject<{
123
+ id: z.ZodString;
124
+ title: z.ZodString;
125
+ overview: z.ZodString;
126
+ outcomes: z.ZodArray<z.ZodString>;
127
+ milestone: z.ZodString;
128
+ }, z.core.$strict>>;
129
+ items: z.ZodArray<z.ZodObject<{
130
+ id: z.ZodString;
131
+ moduleId: z.ZodString;
132
+ title: z.ZodString;
133
+ overview: z.ZodString;
134
+ outcomes: z.ZodArray<z.ZodString>;
135
+ outline: z.ZodArray<z.ZodString>;
136
+ topics: z.ZodArray<z.ZodString>;
137
+ nodeIds: z.ZodArray<z.ZodString>;
138
+ practice: z.ZodString;
139
+ assessment: z.ZodString;
140
+ minutes: z.ZodObject<{
141
+ min: z.ZodNumber;
142
+ max: z.ZodNumber;
143
+ }, z.core.$strict>;
144
+ }, z.core.$strict>>;
145
+ edges: z.ZodArray<z.ZodObject<{
146
+ from: z.ZodString;
147
+ to: z.ZodString;
148
+ kind: z.ZodEnum<{
149
+ optional: "optional";
150
+ required: "required";
151
+ }>;
152
+ }, z.core.$strict>>;
153
+ assumptions: z.ZodArray<z.ZodString>;
154
+ changeReason: z.ZodString;
155
+ }, z.core.$strip>;
156
+ export type Curriculum = z.infer<typeof CurriculumSchema>;
157
+ export declare const PathRequestSchema: z.ZodObject<{
158
+ id: z.ZodString;
159
+ sessionId: z.ZodString;
160
+ kind: z.ZodEnum<{
161
+ diagnosis: "diagnosis";
162
+ plan: "plan";
163
+ }>;
164
+ briefRevision: z.ZodNumber;
165
+ createdAt: z.ZodString;
166
+ prompted: z.ZodBoolean;
167
+ reason: z.ZodNullable<z.ZodString>;
168
+ failure: z.ZodOptional<z.ZodNullable<z.ZodString>>;
169
+ }, z.core.$strip>;
170
+ export declare const LearningPathSchema: z.ZodObject<{
171
+ courseId: z.ZodString;
172
+ revision: z.ZodNumber;
173
+ briefRevision: z.ZodNumber;
174
+ assessmentRevision: z.ZodNumber;
175
+ brief: z.ZodNullable<z.ZodObject<{
176
+ purpose: z.ZodString;
177
+ outcomes: z.ZodArray<z.ZodString>;
178
+ background: z.ZodString;
179
+ timeZone: z.ZodString;
180
+ targetDate: z.ZodNullable<z.ZodString>;
181
+ durationWeeks: z.ZodNullable<z.ZodNumber>;
182
+ deadline: z.ZodEnum<{
183
+ none: "none";
184
+ flexible: "flexible";
185
+ fixed: "fixed";
186
+ }>;
187
+ weeklyMinutes: z.ZodNullable<z.ZodNumber>;
188
+ sessionMinutes: z.ZodNullable<z.ZodNumber>;
189
+ preferences: z.ZodString;
190
+ }, z.core.$strict>>;
191
+ assessment: z.ZodNullable<z.ZodObject<{
192
+ status: z.ZodEnum<{
193
+ ready: "ready";
194
+ "in-progress": "in-progress";
195
+ skipped: "skipped";
196
+ }>;
197
+ summary: z.ZodString;
198
+ strengths: z.ZodArray<z.ZodString>;
199
+ gaps: z.ZodArray<z.ZodString>;
200
+ uncertainties: z.ZodArray<z.ZodString>;
201
+ evidence: z.ZodArray<z.ZodObject<{
202
+ nodeId: z.ZodString;
203
+ evidenceIndex: z.ZodNumber;
204
+ }, z.core.$strict>>;
205
+ briefRevision: z.ZodNumber;
206
+ sessionId: z.ZodString;
207
+ updatedAt: z.ZodString;
208
+ }, z.core.$strict>>;
209
+ curricula: z.ZodArray<z.ZodObject<{
210
+ version: z.ZodNumber;
211
+ briefRevision: z.ZodNumber;
212
+ assessmentRevision: z.ZodNumber;
213
+ createdAt: z.ZodString;
214
+ acceptedAt: z.ZodNullable<z.ZodString>;
215
+ title: z.ZodString;
216
+ summary: z.ZodString;
217
+ modules: z.ZodArray<z.ZodObject<{
218
+ id: z.ZodString;
219
+ title: z.ZodString;
220
+ overview: z.ZodString;
221
+ outcomes: z.ZodArray<z.ZodString>;
222
+ milestone: z.ZodString;
223
+ }, z.core.$strict>>;
224
+ items: z.ZodArray<z.ZodObject<{
225
+ id: z.ZodString;
226
+ moduleId: z.ZodString;
227
+ title: z.ZodString;
228
+ overview: z.ZodString;
229
+ outcomes: z.ZodArray<z.ZodString>;
230
+ outline: z.ZodArray<z.ZodString>;
231
+ topics: z.ZodArray<z.ZodString>;
232
+ nodeIds: z.ZodArray<z.ZodString>;
233
+ practice: z.ZodString;
234
+ assessment: z.ZodString;
235
+ minutes: z.ZodObject<{
236
+ min: z.ZodNumber;
237
+ max: z.ZodNumber;
238
+ }, z.core.$strict>;
239
+ }, z.core.$strict>>;
240
+ edges: z.ZodArray<z.ZodObject<{
241
+ from: z.ZodString;
242
+ to: z.ZodString;
243
+ kind: z.ZodEnum<{
244
+ optional: "optional";
245
+ required: "required";
246
+ }>;
247
+ }, z.core.$strict>>;
248
+ assumptions: z.ZodArray<z.ZodString>;
249
+ changeReason: z.ZodString;
250
+ }, z.core.$strip>>;
251
+ acceptedVersion: z.ZodNullable<z.ZodNumber>;
252
+ requests: z.ZodArray<z.ZodObject<{
253
+ id: z.ZodString;
254
+ sessionId: z.ZodString;
255
+ kind: z.ZodEnum<{
256
+ diagnosis: "diagnosis";
257
+ plan: "plan";
258
+ }>;
259
+ briefRevision: z.ZodNumber;
260
+ createdAt: z.ZodString;
261
+ prompted: z.ZodBoolean;
262
+ reason: z.ZodNullable<z.ZodString>;
263
+ failure: z.ZodOptional<z.ZodNullable<z.ZodString>>;
264
+ }, z.core.$strip>>;
265
+ updatedAt: z.ZodString;
266
+ }, z.core.$strip>;
267
+ export type LearningPath = z.infer<typeof LearningPathSchema>;
268
+ export declare const BlockAnswerSchema: z.ZodObject<{
269
+ questionId: z.ZodString;
270
+ value: z.ZodString;
271
+ }, z.core.$strict>;
272
+ export type BlockAnswer = z.infer<typeof BlockAnswerSchema>;
273
+ /** A learner's submission for one interactive block. Recording only; no judgement. */
274
+ export declare const BlockResponseSchema: z.ZodObject<{
275
+ id: z.ZodString;
276
+ blockId: z.ZodString;
277
+ kind: z.ZodEnum<{
278
+ quiz: "quiz";
279
+ flashcard: "flashcard";
280
+ }>;
281
+ answers: z.ZodArray<z.ZodObject<{
282
+ questionId: z.ZodString;
283
+ value: z.ZodString;
284
+ }, z.core.$strict>>;
285
+ submittedAt: z.ZodString;
286
+ }, z.core.$strict>;
287
+ export type BlockResponse = z.infer<typeof BlockResponseSchema>;
288
+ export declare const CourseAttemptSchema: z.ZodObject<{
289
+ id: z.ZodString;
290
+ operationId: z.ZodString;
291
+ operations: z.ZodArray<z.ZodString>;
292
+ dispatchId: z.ZodNullable<z.ZodString>;
293
+ version: z.ZodNumber;
294
+ itemId: z.ZodString;
295
+ status: z.ZodEnum<{
296
+ requested: "requested";
297
+ working: "working";
298
+ completed: "completed";
299
+ interrupted: "interrupted";
300
+ }>;
301
+ nodeId: z.ZodNullable<z.ZodString>;
302
+ startedAt: z.ZodString;
303
+ updatedAt: z.ZodString;
304
+ prompted: z.ZodBoolean;
305
+ promptReason: z.ZodNullable<z.ZodString>;
306
+ outcome: z.ZodNullable<z.ZodString>;
307
+ evidence: z.ZodArray<z.ZodObject<{
308
+ nodeId: z.ZodString;
309
+ evidenceIndex: z.ZodNumber;
310
+ }, z.core.$strict>>;
311
+ units: z.ZodArray<z.ZodObject<{
312
+ id: z.ZodString;
313
+ writtenAt: z.ZodString;
314
+ lesson: z.ZodObject<{
315
+ id: z.ZodString;
316
+ courseId: z.ZodString;
317
+ nodeId: z.ZodString;
318
+ title: z.ZodString;
319
+ blocks: z.ZodArray<z.ZodUnion<readonly [z.ZodDiscriminatedUnion<[z.ZodObject<{
320
+ type: z.ZodLiteral<"text">;
321
+ content: z.ZodObject<{
322
+ md: z.ZodString;
323
+ math: z.ZodOptional<z.ZodArray<z.ZodObject<{
324
+ tex: z.ZodString;
325
+ display: z.ZodBoolean;
326
+ mathml: z.ZodString;
327
+ }, z.core.$strip>>>;
328
+ }, z.core.$strip>;
329
+ id: z.ZodString;
330
+ metadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
331
+ sourceRefs: z.ZodOptional<z.ZodArray<z.ZodObject<{
332
+ sourceId: z.ZodString;
333
+ locator: z.ZodString;
334
+ }, z.core.$strict>>>;
335
+ }, z.core.$strip>, z.ZodObject<{
336
+ type: z.ZodLiteral<"example">;
337
+ content: z.ZodObject<{
338
+ title: z.ZodString;
339
+ steps: z.ZodArray<z.ZodString>;
340
+ takeaway: z.ZodOptional<z.ZodString>;
341
+ }, z.core.$strip>;
342
+ id: z.ZodString;
343
+ metadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
344
+ sourceRefs: z.ZodOptional<z.ZodArray<z.ZodObject<{
345
+ sourceId: z.ZodString;
346
+ locator: z.ZodString;
347
+ }, z.core.$strict>>>;
348
+ }, z.core.$strip>, z.ZodObject<{
349
+ type: z.ZodLiteral<"diagram">;
350
+ content: z.ZodObject<{
351
+ format: z.ZodEnum<{
352
+ ascii: "ascii";
353
+ mermaid: "mermaid";
354
+ }>;
355
+ spec: z.ZodString;
356
+ caption: z.ZodOptional<z.ZodString>;
357
+ }, z.core.$strip>;
358
+ id: z.ZodString;
359
+ metadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
360
+ sourceRefs: z.ZodOptional<z.ZodArray<z.ZodObject<{
361
+ sourceId: z.ZodString;
362
+ locator: z.ZodString;
363
+ }, z.core.$strict>>>;
364
+ }, z.core.$strip>, z.ZodObject<{
365
+ type: z.ZodLiteral<"check">;
366
+ content: z.ZodObject<{
367
+ prompt: z.ZodString;
368
+ expect: z.ZodOptional<z.ZodEnum<{
369
+ reasoning: "reasoning";
370
+ answer: "answer";
371
+ }>>;
372
+ hint: z.ZodOptional<z.ZodString>;
373
+ }, z.core.$strip>;
374
+ id: z.ZodString;
375
+ metadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
376
+ sourceRefs: z.ZodOptional<z.ZodArray<z.ZodObject<{
377
+ sourceId: z.ZodString;
378
+ locator: z.ZodString;
379
+ }, z.core.$strict>>>;
380
+ }, z.core.$strip>, z.ZodObject<{
381
+ type: z.ZodLiteral<"formula">;
382
+ content: z.ZodObject<{
383
+ tex: z.ZodString;
384
+ display: z.ZodOptional<z.ZodBoolean>;
385
+ mathml: z.ZodOptional<z.ZodString>;
386
+ caption: z.ZodOptional<z.ZodString>;
387
+ }, z.core.$strip>;
388
+ id: z.ZodString;
389
+ metadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
390
+ sourceRefs: z.ZodOptional<z.ZodArray<z.ZodObject<{
391
+ sourceId: z.ZodString;
392
+ locator: z.ZodString;
393
+ }, z.core.$strict>>>;
394
+ }, z.core.$strip>, z.ZodObject<{
395
+ type: z.ZodLiteral<"code">;
396
+ content: z.ZodObject<{
397
+ language: z.ZodOptional<z.ZodString>;
398
+ source: z.ZodString;
399
+ caption: z.ZodOptional<z.ZodString>;
400
+ }, z.core.$strip>;
401
+ id: z.ZodString;
402
+ metadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
403
+ sourceRefs: z.ZodOptional<z.ZodArray<z.ZodObject<{
404
+ sourceId: z.ZodString;
405
+ locator: z.ZodString;
406
+ }, z.core.$strict>>>;
407
+ }, z.core.$strip>, z.ZodObject<{
408
+ type: z.ZodLiteral<"quiz">;
409
+ content: z.ZodObject<{
410
+ title: z.ZodOptional<z.ZodString>;
411
+ questions: z.ZodArray<z.ZodObject<{
412
+ id: z.ZodString;
413
+ kind: z.ZodEnum<{
414
+ mcq: "mcq";
415
+ short: "short";
416
+ }>;
417
+ prompt: z.ZodString;
418
+ options: z.ZodOptional<z.ZodArray<z.ZodString>>;
419
+ answer: z.ZodOptional<z.ZodString>;
420
+ rubric: z.ZodOptional<z.ZodString>;
421
+ explanation: z.ZodOptional<z.ZodString>;
422
+ }, z.core.$strip>>;
423
+ }, z.core.$strip>;
424
+ id: z.ZodString;
425
+ metadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
426
+ sourceRefs: z.ZodOptional<z.ZodArray<z.ZodObject<{
427
+ sourceId: z.ZodString;
428
+ locator: z.ZodString;
429
+ }, z.core.$strict>>>;
430
+ }, z.core.$strip>, z.ZodObject<{
431
+ type: z.ZodLiteral<"flashcard">;
432
+ content: z.ZodObject<{
433
+ front: z.ZodString;
434
+ back: z.ZodString;
435
+ tags: z.ZodOptional<z.ZodArray<z.ZodString>>;
436
+ }, z.core.$strip>;
437
+ id: z.ZodString;
438
+ metadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
439
+ sourceRefs: z.ZodOptional<z.ZodArray<z.ZodObject<{
440
+ sourceId: z.ZodString;
441
+ locator: z.ZodString;
442
+ }, z.core.$strict>>>;
443
+ }, z.core.$strip>, z.ZodObject<{
444
+ type: z.ZodLiteral<"resource">;
445
+ content: z.ZodObject<{
446
+ title: z.ZodString;
447
+ sourceId: z.ZodOptional<z.ZodString>;
448
+ locator: z.ZodOptional<z.ZodString>;
449
+ url: z.ZodOptional<z.ZodString>;
450
+ note: z.ZodOptional<z.ZodString>;
451
+ }, z.core.$strip>;
452
+ id: z.ZodString;
453
+ metadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
454
+ sourceRefs: z.ZodOptional<z.ZodArray<z.ZodObject<{
455
+ sourceId: z.ZodString;
456
+ locator: z.ZodString;
457
+ }, z.core.$strict>>>;
458
+ }, z.core.$strip>, z.ZodObject<{
459
+ type: z.ZodLiteral<"comparison">;
460
+ content: z.ZodObject<{
461
+ columns: z.ZodArray<z.ZodString>;
462
+ rows: z.ZodArray<z.ZodArray<z.ZodString>>;
463
+ caption: z.ZodOptional<z.ZodString>;
464
+ }, z.core.$strip>;
465
+ id: z.ZodString;
466
+ metadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
467
+ sourceRefs: z.ZodOptional<z.ZodArray<z.ZodObject<{
468
+ sourceId: z.ZodString;
469
+ locator: z.ZodString;
470
+ }, z.core.$strict>>>;
471
+ }, z.core.$strip>], "type">, z.ZodObject<{
472
+ id: z.ZodString;
473
+ type: z.ZodString;
474
+ content: z.ZodUnknown;
475
+ metadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
476
+ sourceRefs: z.ZodOptional<z.ZodArray<z.ZodObject<{
477
+ sourceId: z.ZodString;
478
+ locator: z.ZodString;
479
+ }, z.core.$strict>>>;
480
+ }, z.core.$strip>]>>;
481
+ origin: z.ZodEnum<{
482
+ prototype: "prototype";
483
+ tutor: "tutor";
484
+ }>;
485
+ createdAt: z.ZodString;
486
+ updatedAt: z.ZodString;
487
+ }, z.core.$strip>;
488
+ }, z.core.$strip>>;
489
+ responses: z.ZodOptional<z.ZodArray<z.ZodObject<{
490
+ id: z.ZodString;
491
+ blockId: z.ZodString;
492
+ kind: z.ZodEnum<{
493
+ quiz: "quiz";
494
+ flashcard: "flashcard";
495
+ }>;
496
+ answers: z.ZodArray<z.ZodObject<{
497
+ questionId: z.ZodString;
498
+ value: z.ZodString;
499
+ }, z.core.$strict>>;
500
+ submittedAt: z.ZodString;
501
+ }, z.core.$strict>>>;
502
+ }, z.core.$strip>;
503
+ export type CourseAttempt = z.infer<typeof CourseAttemptSchema>;
504
+ export declare const CourseRunSchema: z.ZodObject<{
505
+ courseId: z.ZodString;
506
+ sessionId: z.ZodString;
507
+ revision: z.ZodNumber;
508
+ activeAttemptId: z.ZodNullable<z.ZodString>;
509
+ attempts: z.ZodArray<z.ZodObject<{
510
+ id: z.ZodString;
511
+ operationId: z.ZodString;
512
+ operations: z.ZodArray<z.ZodString>;
513
+ dispatchId: z.ZodNullable<z.ZodString>;
514
+ version: z.ZodNumber;
515
+ itemId: z.ZodString;
516
+ status: z.ZodEnum<{
517
+ requested: "requested";
518
+ working: "working";
519
+ completed: "completed";
520
+ interrupted: "interrupted";
521
+ }>;
522
+ nodeId: z.ZodNullable<z.ZodString>;
523
+ startedAt: z.ZodString;
524
+ updatedAt: z.ZodString;
525
+ prompted: z.ZodBoolean;
526
+ promptReason: z.ZodNullable<z.ZodString>;
527
+ outcome: z.ZodNullable<z.ZodString>;
528
+ evidence: z.ZodArray<z.ZodObject<{
529
+ nodeId: z.ZodString;
530
+ evidenceIndex: z.ZodNumber;
531
+ }, z.core.$strict>>;
532
+ units: z.ZodArray<z.ZodObject<{
533
+ id: z.ZodString;
534
+ writtenAt: z.ZodString;
535
+ lesson: z.ZodObject<{
536
+ id: z.ZodString;
537
+ courseId: z.ZodString;
538
+ nodeId: z.ZodString;
539
+ title: z.ZodString;
540
+ blocks: z.ZodArray<z.ZodUnion<readonly [z.ZodDiscriminatedUnion<[z.ZodObject<{
541
+ type: z.ZodLiteral<"text">;
542
+ content: z.ZodObject<{
543
+ md: z.ZodString;
544
+ math: z.ZodOptional<z.ZodArray<z.ZodObject<{
545
+ tex: z.ZodString;
546
+ display: z.ZodBoolean;
547
+ mathml: z.ZodString;
548
+ }, z.core.$strip>>>;
549
+ }, z.core.$strip>;
550
+ id: z.ZodString;
551
+ metadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
552
+ sourceRefs: z.ZodOptional<z.ZodArray<z.ZodObject<{
553
+ sourceId: z.ZodString;
554
+ locator: z.ZodString;
555
+ }, z.core.$strict>>>;
556
+ }, z.core.$strip>, z.ZodObject<{
557
+ type: z.ZodLiteral<"example">;
558
+ content: z.ZodObject<{
559
+ title: z.ZodString;
560
+ steps: z.ZodArray<z.ZodString>;
561
+ takeaway: z.ZodOptional<z.ZodString>;
562
+ }, z.core.$strip>;
563
+ id: z.ZodString;
564
+ metadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
565
+ sourceRefs: z.ZodOptional<z.ZodArray<z.ZodObject<{
566
+ sourceId: z.ZodString;
567
+ locator: z.ZodString;
568
+ }, z.core.$strict>>>;
569
+ }, z.core.$strip>, z.ZodObject<{
570
+ type: z.ZodLiteral<"diagram">;
571
+ content: z.ZodObject<{
572
+ format: z.ZodEnum<{
573
+ ascii: "ascii";
574
+ mermaid: "mermaid";
575
+ }>;
576
+ spec: z.ZodString;
577
+ caption: z.ZodOptional<z.ZodString>;
578
+ }, z.core.$strip>;
579
+ id: z.ZodString;
580
+ metadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
581
+ sourceRefs: z.ZodOptional<z.ZodArray<z.ZodObject<{
582
+ sourceId: z.ZodString;
583
+ locator: z.ZodString;
584
+ }, z.core.$strict>>>;
585
+ }, z.core.$strip>, z.ZodObject<{
586
+ type: z.ZodLiteral<"check">;
587
+ content: z.ZodObject<{
588
+ prompt: z.ZodString;
589
+ expect: z.ZodOptional<z.ZodEnum<{
590
+ reasoning: "reasoning";
591
+ answer: "answer";
592
+ }>>;
593
+ hint: z.ZodOptional<z.ZodString>;
594
+ }, z.core.$strip>;
595
+ id: z.ZodString;
596
+ metadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
597
+ sourceRefs: z.ZodOptional<z.ZodArray<z.ZodObject<{
598
+ sourceId: z.ZodString;
599
+ locator: z.ZodString;
600
+ }, z.core.$strict>>>;
601
+ }, z.core.$strip>, z.ZodObject<{
602
+ type: z.ZodLiteral<"formula">;
603
+ content: z.ZodObject<{
604
+ tex: z.ZodString;
605
+ display: z.ZodOptional<z.ZodBoolean>;
606
+ mathml: z.ZodOptional<z.ZodString>;
607
+ caption: z.ZodOptional<z.ZodString>;
608
+ }, z.core.$strip>;
609
+ id: z.ZodString;
610
+ metadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
611
+ sourceRefs: z.ZodOptional<z.ZodArray<z.ZodObject<{
612
+ sourceId: z.ZodString;
613
+ locator: z.ZodString;
614
+ }, z.core.$strict>>>;
615
+ }, z.core.$strip>, z.ZodObject<{
616
+ type: z.ZodLiteral<"code">;
617
+ content: z.ZodObject<{
618
+ language: z.ZodOptional<z.ZodString>;
619
+ source: z.ZodString;
620
+ caption: z.ZodOptional<z.ZodString>;
621
+ }, z.core.$strip>;
622
+ id: z.ZodString;
623
+ metadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
624
+ sourceRefs: z.ZodOptional<z.ZodArray<z.ZodObject<{
625
+ sourceId: z.ZodString;
626
+ locator: z.ZodString;
627
+ }, z.core.$strict>>>;
628
+ }, z.core.$strip>, z.ZodObject<{
629
+ type: z.ZodLiteral<"quiz">;
630
+ content: z.ZodObject<{
631
+ title: z.ZodOptional<z.ZodString>;
632
+ questions: z.ZodArray<z.ZodObject<{
633
+ id: z.ZodString;
634
+ kind: z.ZodEnum<{
635
+ mcq: "mcq";
636
+ short: "short";
637
+ }>;
638
+ prompt: z.ZodString;
639
+ options: z.ZodOptional<z.ZodArray<z.ZodString>>;
640
+ answer: z.ZodOptional<z.ZodString>;
641
+ rubric: z.ZodOptional<z.ZodString>;
642
+ explanation: z.ZodOptional<z.ZodString>;
643
+ }, z.core.$strip>>;
644
+ }, z.core.$strip>;
645
+ id: z.ZodString;
646
+ metadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
647
+ sourceRefs: z.ZodOptional<z.ZodArray<z.ZodObject<{
648
+ sourceId: z.ZodString;
649
+ locator: z.ZodString;
650
+ }, z.core.$strict>>>;
651
+ }, z.core.$strip>, z.ZodObject<{
652
+ type: z.ZodLiteral<"flashcard">;
653
+ content: z.ZodObject<{
654
+ front: z.ZodString;
655
+ back: z.ZodString;
656
+ tags: z.ZodOptional<z.ZodArray<z.ZodString>>;
657
+ }, z.core.$strip>;
658
+ id: z.ZodString;
659
+ metadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
660
+ sourceRefs: z.ZodOptional<z.ZodArray<z.ZodObject<{
661
+ sourceId: z.ZodString;
662
+ locator: z.ZodString;
663
+ }, z.core.$strict>>>;
664
+ }, z.core.$strip>, z.ZodObject<{
665
+ type: z.ZodLiteral<"resource">;
666
+ content: z.ZodObject<{
667
+ title: z.ZodString;
668
+ sourceId: z.ZodOptional<z.ZodString>;
669
+ locator: z.ZodOptional<z.ZodString>;
670
+ url: z.ZodOptional<z.ZodString>;
671
+ note: z.ZodOptional<z.ZodString>;
672
+ }, z.core.$strip>;
673
+ id: z.ZodString;
674
+ metadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
675
+ sourceRefs: z.ZodOptional<z.ZodArray<z.ZodObject<{
676
+ sourceId: z.ZodString;
677
+ locator: z.ZodString;
678
+ }, z.core.$strict>>>;
679
+ }, z.core.$strip>, z.ZodObject<{
680
+ type: z.ZodLiteral<"comparison">;
681
+ content: z.ZodObject<{
682
+ columns: z.ZodArray<z.ZodString>;
683
+ rows: z.ZodArray<z.ZodArray<z.ZodString>>;
684
+ caption: z.ZodOptional<z.ZodString>;
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>], "type">, z.ZodObject<{
693
+ id: z.ZodString;
694
+ type: z.ZodString;
695
+ content: z.ZodUnknown;
696
+ metadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
697
+ sourceRefs: z.ZodOptional<z.ZodArray<z.ZodObject<{
698
+ sourceId: z.ZodString;
699
+ locator: z.ZodString;
700
+ }, z.core.$strict>>>;
701
+ }, z.core.$strip>]>>;
702
+ origin: z.ZodEnum<{
703
+ prototype: "prototype";
704
+ tutor: "tutor";
705
+ }>;
706
+ createdAt: z.ZodString;
707
+ updatedAt: z.ZodString;
708
+ }, z.core.$strip>;
709
+ }, z.core.$strip>>;
710
+ responses: z.ZodOptional<z.ZodArray<z.ZodObject<{
711
+ id: z.ZodString;
712
+ blockId: z.ZodString;
713
+ kind: z.ZodEnum<{
714
+ quiz: "quiz";
715
+ flashcard: "flashcard";
716
+ }>;
717
+ answers: z.ZodArray<z.ZodObject<{
718
+ questionId: z.ZodString;
719
+ value: z.ZodString;
720
+ }, z.core.$strict>>;
721
+ submittedAt: z.ZodString;
722
+ }, z.core.$strict>>>;
723
+ }, z.core.$strip>>;
724
+ updatedAt: z.ZodString;
725
+ }, z.core.$strip>;
726
+ export type CourseRun = z.infer<typeof CourseRunSchema>;
727
+ export interface PathView {
728
+ ok: true;
729
+ path: LearningPath;
730
+ run: CourseRun | null;
731
+ now: string;
732
+ }
733
+ export declare function emptyPath(courseId: string, now: string): LearningPath;
734
+ export declare function emptyRun(courseId: string, sessionId: string, now: string): CourseRun;
735
+ export declare function activeAttempt(run: CourseRun | null | undefined): CourseAttempt | undefined;
736
+ export declare function briefReady(brief: GoalBrief | null): boolean;
737
+ export declare function pathBudget(brief: GoalBrief | null, plan: Curriculum | CurriculumInput | null, now: string): {
738
+ available: number | null;
739
+ conflict: boolean;
740
+ tight: boolean;
741
+ min: number;
742
+ max: number;
743
+ };
744
+ //# sourceMappingURL=path.d.ts.map