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.
- package/README.md +316 -79
- package/lib/api.js +364 -78
- package/lib/api.js.map +1 -1
- package/lib/block-types.js +25 -0
- package/lib/block-types.js.map +1 -0
- package/lib/client.js +9952 -821
- package/lib/client.js.map +1 -1
- package/lib/diagnostics.js +170 -0
- package/lib/diagnostics.js.map +1 -0
- package/lib/execution-key.js +91 -0
- package/lib/execution-key.js.map +1 -0
- package/lib/handoff.js +44 -1
- package/lib/handoff.js.map +1 -1
- package/lib/index.js +87 -51
- package/lib/index.js.map +1 -1
- package/lib/insights.js +82 -0
- package/lib/insights.js.map +1 -0
- package/lib/interactions.js +70 -0
- package/lib/interactions.js.map +1 -0
- package/lib/journal.js +122 -0
- package/lib/journal.js.map +1 -0
- package/lib/lesson-markdown.js +72 -0
- package/lib/lesson-markdown.js.map +1 -0
- package/lib/lesson.js +152 -3
- package/lib/lesson.js.map +1 -1
- package/lib/math.js +126 -0
- package/lib/math.js.map +1 -0
- package/lib/path-api.js +140 -0
- package/lib/path-api.js.map +1 -0
- package/lib/path-runtime.js +361 -0
- package/lib/path-runtime.js.map +1 -0
- package/lib/path-tools.js +107 -0
- package/lib/path-tools.js.map +1 -0
- package/lib/path.js +179 -0
- package/lib/path.js.map +1 -0
- package/lib/plan-tools.js +89 -0
- package/lib/plan-tools.js.map +1 -0
- package/lib/plan.js +82 -0
- package/lib/plan.js.map +1 -0
- package/lib/project-session.js +48 -0
- package/lib/project-session.js.map +1 -0
- package/lib/prompt.js +4 -19
- package/lib/prompt.js.map +1 -1
- package/lib/review-sync.js +51 -0
- package/lib/review-sync.js.map +1 -0
- package/lib/review-tools.js +115 -0
- package/lib/review-tools.js.map +1 -0
- package/lib/review.js +103 -0
- package/lib/review.js.map +1 -0
- package/lib/source-schema.js +24 -0
- package/lib/source-schema.js.map +1 -0
- package/lib/source-tools.js +61 -0
- package/lib/source-tools.js.map +1 -0
- package/lib/sources.js +78 -0
- package/lib/sources.js.map +1 -0
- package/lib/state.js +353 -47
- package/lib/state.js.map +1 -1
- package/lib/tools.js +620 -123
- package/lib/tools.js.map +1 -1
- package/lib/types/api.d.ts +10 -3
- package/lib/types/api.d.ts.map +1 -1
- package/lib/types/block-types.d.ts +12 -0
- package/lib/types/block-types.d.ts.map +1 -0
- package/lib/types/contract.d.ts +81 -7
- package/lib/types/contract.d.ts.map +1 -1
- package/lib/types/diagnostics.d.ts +95 -0
- package/lib/types/diagnostics.d.ts.map +1 -0
- package/lib/types/execution-key.d.ts +59 -0
- package/lib/types/execution-key.d.ts.map +1 -0
- package/lib/types/handoff.d.ts +2 -2
- package/lib/types/handoff.d.ts.map +1 -1
- package/lib/types/index.d.ts +19 -14
- package/lib/types/index.d.ts.map +1 -1
- package/lib/types/insights.d.ts +57 -0
- package/lib/types/insights.d.ts.map +1 -0
- package/lib/types/interactions.d.ts +23 -0
- package/lib/types/interactions.d.ts.map +1 -0
- package/lib/types/journal.d.ts +57 -0
- package/lib/types/journal.d.ts.map +1 -0
- package/lib/types/lesson-markdown.d.ts +11 -0
- package/lib/types/lesson-markdown.d.ts.map +1 -0
- package/lib/types/lesson.d.ts +697 -5
- package/lib/types/lesson.d.ts.map +1 -1
- package/lib/types/math.d.ts +50 -0
- package/lib/types/math.d.ts.map +1 -0
- package/lib/types/path-api.d.ts +5 -0
- package/lib/types/path-api.d.ts.map +1 -0
- package/lib/types/path-runtime.d.ts +1558 -0
- package/lib/types/path-runtime.d.ts.map +1 -0
- package/lib/types/path-tools.d.ts +4 -0
- package/lib/types/path-tools.d.ts.map +1 -0
- package/lib/types/path.d.ts +744 -0
- package/lib/types/path.d.ts.map +1 -0
- package/lib/types/plan-tools.d.ts +4 -0
- package/lib/types/plan-tools.d.ts.map +1 -0
- package/lib/types/plan.d.ts +53 -0
- package/lib/types/plan.d.ts.map +1 -0
- package/lib/types/project-session.d.ts +33 -0
- package/lib/types/project-session.d.ts.map +1 -0
- package/lib/types/prompt.d.ts.map +1 -1
- package/lib/types/review-sync.d.ts +17 -0
- package/lib/types/review-sync.d.ts.map +1 -0
- package/lib/types/review-tools.d.ts +4 -0
- package/lib/types/review-tools.d.ts.map +1 -0
- package/lib/types/review.d.ts +65 -0
- package/lib/types/review.d.ts.map +1 -0
- package/lib/types/source-schema.d.ts +31 -0
- package/lib/types/source-schema.d.ts.map +1 -0
- package/lib/types/source-tools.d.ts +4 -0
- package/lib/types/source-tools.d.ts.map +1 -0
- package/lib/types/sources.d.ts +33 -0
- package/lib/types/sources.d.ts.map +1 -0
- package/lib/types/state.d.ts +607 -23
- package/lib/types/state.d.ts.map +1 -1
- package/lib/types/tools.d.ts +3 -1
- package/lib/types/tools.d.ts.map +1 -1
- package/lib/types/udt.d.ts +20 -24
- package/lib/types/udt.d.ts.map +1 -1
- package/lib/types/version.d.ts +11 -0
- package/lib/types/version.d.ts.map +1 -0
- package/lib/types/vocabulary.d.ts +2 -2
- package/lib/udt.js +72 -19
- package/lib/udt.js.map +1 -1
- package/lib/version.js +26 -0
- package/lib/version.js.map +1 -0
- package/package.json +27 -22
package/lib/state.js
CHANGED
|
@@ -38,7 +38,12 @@ import { z } from 'zod';
|
|
|
38
38
|
import { endsFocus } from './vocabulary.js';
|
|
39
39
|
import { EvidenceKindSchema, INITIAL_NODE_STATE, NodeRelationSchema, NodeStateSchema, ReadinessSchema, TeachingModeSchema, } from './vocabulary.js';
|
|
40
40
|
import { LessonSchema } from './lesson.js';
|
|
41
|
+
import { SOURCES_TABLE, SourceRecordSchema } from './source-schema.js';
|
|
42
|
+
import { TASKS_TABLE, TaskSchema } from './plan.js';
|
|
43
|
+
import { REVIEW_CARDS_TABLE, REVIEW_LOG_TABLE, ReviewCardSchema, ReviewLogSchema } from './review.js';
|
|
41
44
|
import { HandoffSchema } from './handoff.js';
|
|
45
|
+
import { focusKey, handoffKey, isLegacyExecutionKey, nextStepKey } from './execution-key.js';
|
|
46
|
+
import { CourseRunSchema, LearningPathSchema, emptyPath, emptyRun } from './path.js';
|
|
42
47
|
/* -------------------------------------------------------------------------- */
|
|
43
48
|
/* Records */
|
|
44
49
|
/* -------------------------------------------------------------------------- */
|
|
@@ -90,6 +95,9 @@ export const EvidenceSchema = z.object({
|
|
|
90
95
|
at: z.string(),
|
|
91
96
|
note: z.string().min(1).optional(),
|
|
92
97
|
readiness: ReadinessSchema.optional(),
|
|
98
|
+
/** Runtime-stamped provenance for observations made during a planned attempt. */
|
|
99
|
+
sessionId: z.string().min(1).optional(),
|
|
100
|
+
attemptId: z.string().min(1).optional(),
|
|
93
101
|
});
|
|
94
102
|
/**
|
|
95
103
|
* One node of the diagnosis map.
|
|
@@ -131,9 +139,43 @@ export const FocusSchema = z.object({
|
|
|
131
139
|
updatedAt: z.string(),
|
|
132
140
|
/** Set when the status becomes `ended`; absent while the focus is active. */
|
|
133
141
|
endedAt: z.string().optional(),
|
|
142
|
+
/**
|
|
143
|
+
* The conversation this focus belongs to.
|
|
144
|
+
*
|
|
145
|
+
* Learning state is per-conversation, not per-course. A learner can be
|
|
146
|
+
* working on one node in one conversation and a different node in another,
|
|
147
|
+
* and a focus that does not say which one it is cannot be shown to either
|
|
148
|
+
* without risking showing the wrong one — which is exactly what happened:
|
|
149
|
+
* starting a node in conversation B silently replaced A's, and returning to A
|
|
150
|
+
* showed B's lesson under A's chat.
|
|
151
|
+
*
|
|
152
|
+
* Optional because records written before this field existed have no
|
|
153
|
+
* conversation to claim. Such a focus belongs to nobody and is shown to
|
|
154
|
+
* nobody; the evidence and lessons it produced are untouched.
|
|
155
|
+
*/
|
|
156
|
+
sessionId: z.string().optional(),
|
|
134
157
|
/** The recommendation produced when this focus ended. */
|
|
135
158
|
nextStepId: z.string().optional(),
|
|
136
159
|
});
|
|
160
|
+
/**
|
|
161
|
+
* The Learning Project one conversation has selected.
|
|
162
|
+
*
|
|
163
|
+
* `courseId` is the project: a course record IS a learning project, and the UI
|
|
164
|
+
* calls it that. There is deliberately no separate project entity — a second
|
|
165
|
+
* one would have to be kept in step with the first, and the first already
|
|
166
|
+
* carries the map, the evidence and the lessons.
|
|
167
|
+
*/
|
|
168
|
+
export const ProjectSchema = z.object({
|
|
169
|
+
/** The conversation that made the choice. */
|
|
170
|
+
sessionId: z.string().min(1),
|
|
171
|
+
/** The course it chose, or absent for "start something new". */
|
|
172
|
+
courseId: z.string().min(1).optional(),
|
|
173
|
+
/** When it chose. */
|
|
174
|
+
selectedAt: z.string(),
|
|
175
|
+
});
|
|
176
|
+
/** The conversation-local project state shared by the API and model tools. */
|
|
177
|
+
export const PROJECT_SELECTIONS = ['none', 'new', 'project'];
|
|
178
|
+
export const PROJECT_BINDINGS = ['adopted', 'already-selected', 'not-selected', 'missing-session-id'];
|
|
137
179
|
/**
|
|
138
180
|
* The tutor's decision about where the learner should go after this node.
|
|
139
181
|
*
|
|
@@ -189,12 +231,44 @@ export const UDT_DOMAIN_NAME = 'udt';
|
|
|
189
231
|
* ship a migration in the same release.
|
|
190
232
|
*/
|
|
191
233
|
export const UDT_DOMAIN_VERSION = 1;
|
|
234
|
+
/**
|
|
235
|
+
* Legacy keys seen during reads, so a support dump can explain the orphans.
|
|
236
|
+
*
|
|
237
|
+
* Records written before execution state was session-scoped are left on disk
|
|
238
|
+
* untouched. They are never read, because a record that cannot say which
|
|
239
|
+
* conversation it belongs to cannot be shown to one without risking showing it
|
|
240
|
+
* to the wrong one. Logged once per table: a poll every two seconds would
|
|
241
|
+
* otherwise fill the log with the same line.
|
|
242
|
+
*/
|
|
243
|
+
const legacySeen = new Set();
|
|
244
|
+
function logIgnoredLegacy(table, key) {
|
|
245
|
+
if (legacySeen.has(table))
|
|
246
|
+
return;
|
|
247
|
+
legacySeen.add(table);
|
|
248
|
+
console.debug(`[diagnostic-tutor] ignoring pre-session-scoped record in "${table}" (key "${key}"): ` +
|
|
249
|
+
'it predates per-conversation state and is not attributed to any conversation');
|
|
250
|
+
}
|
|
192
251
|
export const COURSES_TABLE = 'courses';
|
|
193
252
|
export const NODES_TABLE = 'nodes';
|
|
194
253
|
export const LESSONS_TABLE = 'lessons';
|
|
195
254
|
export const FOCUS_TABLE = 'focus';
|
|
196
255
|
export const NEXT_STEPS_TABLE = 'next_steps';
|
|
197
256
|
export const HANDOFFS_TABLE = 'handoffs';
|
|
257
|
+
/**
|
|
258
|
+
* Which Learning Project each conversation is looking at.
|
|
259
|
+
*
|
|
260
|
+
* The projects themselves are learner-level: the course, its map, its evidence
|
|
261
|
+
* and its lessons are shared by every conversation, and this table adds nothing
|
|
262
|
+
* to them. What it records is a *choice* — which of those projects this
|
|
263
|
+
* conversation has open — and a choice belongs to the conversation that made
|
|
264
|
+
* it. Without this the runtime had to guess, and the guess was "the most
|
|
265
|
+
* recently updated course", which is how a brand-new chat opened onto the
|
|
266
|
+
* learner's old machine-learning project.
|
|
267
|
+
*
|
|
268
|
+
* Keyed by session id. A conversation with no row here has selected nothing,
|
|
269
|
+
* and that is a real state rather than a missing one.
|
|
270
|
+
*/
|
|
271
|
+
export const PROJECTS_TABLE = 'session_projects';
|
|
198
272
|
/** Sentinel meaning "the global slot has never been written". */
|
|
199
273
|
export const UNINITIALIZED = '';
|
|
200
274
|
export const udtDomain = defineDomain({
|
|
@@ -227,6 +301,14 @@ export const udtDomain = defineDomain({
|
|
|
227
301
|
// Keyed by target node, which is what makes "press Continue twice" one
|
|
228
302
|
// handoff rather than two.
|
|
229
303
|
[HANDOFFS_TABLE]: domainTable(HandoffSchema),
|
|
304
|
+
[PROJECTS_TABLE]: domainTable(ProjectSchema),
|
|
305
|
+
// Additive v1 tables: older v1 documents open with empty planning maps.
|
|
306
|
+
learning_paths: domainTable(LearningPathSchema),
|
|
307
|
+
course_runs: domainTable(CourseRunSchema),
|
|
308
|
+
[SOURCES_TABLE]: domainTable(SourceRecordSchema),
|
|
309
|
+
[TASKS_TABLE]: domainTable(TaskSchema),
|
|
310
|
+
[REVIEW_CARDS_TABLE]: domainTable(ReviewCardSchema),
|
|
311
|
+
[REVIEW_LOG_TABLE]: domainTable(ReviewLogSchema),
|
|
230
312
|
},
|
|
231
313
|
});
|
|
232
314
|
/**
|
|
@@ -270,8 +352,74 @@ export async function openUdState(facility) {
|
|
|
270
352
|
const focus = domain.table(FOCUS_TABLE);
|
|
271
353
|
const nextSteps = domain.table(NEXT_STEPS_TABLE);
|
|
272
354
|
const handoffs = domain.table(HANDOFFS_TABLE);
|
|
355
|
+
const projects = domain.table(PROJECTS_TABLE);
|
|
356
|
+
const paths = domain.table('learning_paths');
|
|
357
|
+
const runs = domain.table('course_runs');
|
|
358
|
+
const sources = domain.table(SOURCES_TABLE);
|
|
359
|
+
const tasks = domain.table(TASKS_TABLE);
|
|
360
|
+
const reviewCards = domain.table(REVIEW_CARDS_TABLE);
|
|
361
|
+
const reviewLog = domain.table(REVIEW_LOG_TABLE);
|
|
362
|
+
let planningGeneration = 0;
|
|
363
|
+
const runKey = (courseId, sessionId) => JSON.stringify([sessionId, courseId]);
|
|
273
364
|
const learner = domain.global;
|
|
274
365
|
const listNodesFor = (courseId) => [...nodes.entries()].map(([, record]) => record).filter((record) => record.courseId === courseId);
|
|
366
|
+
const projectRevisions = new Map();
|
|
367
|
+
let projectWrites = Promise.resolve();
|
|
368
|
+
const withProjectWrite = (write) => {
|
|
369
|
+
const result = projectWrites.then(write);
|
|
370
|
+
projectWrites = result.catch(() => undefined);
|
|
371
|
+
return result;
|
|
372
|
+
};
|
|
373
|
+
const resolveProjectFor = (sessionId) => {
|
|
374
|
+
const revision = sessionId === undefined ? 0 : projectRevisions.get(sessionId) ?? 0;
|
|
375
|
+
if (sessionId === undefined || sessionId.length === 0) {
|
|
376
|
+
return { selection: 'none', sessionAvailable: false, reason: 'missing-session-id', revision };
|
|
377
|
+
}
|
|
378
|
+
const chosen = projects.get(sessionId);
|
|
379
|
+
if (chosen !== undefined) {
|
|
380
|
+
if (chosen.courseId === undefined)
|
|
381
|
+
return { selection: 'new', sessionAvailable: true, revision };
|
|
382
|
+
const course = courses.get(chosen.courseId);
|
|
383
|
+
return course === undefined
|
|
384
|
+
? { selection: 'none', sessionAvailable: true, reason: 'stale-project', revision }
|
|
385
|
+
: { selection: 'project', sessionAvailable: true, course, revision };
|
|
386
|
+
}
|
|
387
|
+
// Ended focuses still name the project a legacy conversation was working
|
|
388
|
+
// in. Multiple projects are ambiguous; a learner-global pointer is no help.
|
|
389
|
+
const candidates = [...courses.entries()]
|
|
390
|
+
.map(([, course]) => course)
|
|
391
|
+
.filter((course) => focus.get(focusKey(sessionId, course.id)) !== undefined);
|
|
392
|
+
if (candidates.length === 1)
|
|
393
|
+
return { selection: 'project', sessionAvailable: true, course: candidates[0], revision };
|
|
394
|
+
if (candidates.length > 1) {
|
|
395
|
+
return { selection: 'none', sessionAvailable: true, reason: 'ambiguous-session-project', revision };
|
|
396
|
+
}
|
|
397
|
+
return { selection: 'none', sessionAvailable: true, revision };
|
|
398
|
+
};
|
|
399
|
+
const activeFocusFor = (sessionId) => {
|
|
400
|
+
const course = resolveProjectFor(sessionId).course;
|
|
401
|
+
if (course === undefined)
|
|
402
|
+
return undefined;
|
|
403
|
+
const record = focus.get(focusKey(sessionId, course.id));
|
|
404
|
+
if (record === undefined || record.status !== 'active')
|
|
405
|
+
return undefined;
|
|
406
|
+
const node = nodes.get(record.nodeId);
|
|
407
|
+
return node === undefined || node.courseId !== course.id ? undefined : { focus: record, course, node };
|
|
408
|
+
};
|
|
409
|
+
const selectProjectFor = async (sessionId, courseId, now) => {
|
|
410
|
+
if (sessionId.length === 0)
|
|
411
|
+
throw new Error('a project choice must name a conversation');
|
|
412
|
+
if (courseId !== undefined && courses.get(courseId) === undefined)
|
|
413
|
+
throw new Error(`no course "${courseId}"`);
|
|
414
|
+
const record = {
|
|
415
|
+
sessionId,
|
|
416
|
+
selectedAt: now,
|
|
417
|
+
...(courseId === undefined ? {} : { courseId }),
|
|
418
|
+
};
|
|
419
|
+
await projects.put(sessionId, record);
|
|
420
|
+
projectRevisions.set(sessionId, (projectRevisions.get(sessionId) ?? 0) + 1);
|
|
421
|
+
return record;
|
|
422
|
+
};
|
|
275
423
|
return {
|
|
276
424
|
name: domain.name,
|
|
277
425
|
version: UDT_DOMAIN_VERSION,
|
|
@@ -325,6 +473,22 @@ export async function openUdState(facility) {
|
|
|
325
473
|
await nodes.put(record.id, record);
|
|
326
474
|
return record;
|
|
327
475
|
},
|
|
476
|
+
mutateNode(courseId, nodeId, change) {
|
|
477
|
+
const generation = planningGeneration;
|
|
478
|
+
return withProjectWrite(async () => {
|
|
479
|
+
if (generation !== planningGeneration || !courses.get(courseId))
|
|
480
|
+
throw new Error('project-unavailable: refresh the selected project');
|
|
481
|
+
const current = nodes.get(nodeId);
|
|
482
|
+
if (!current || current.courseId !== courseId)
|
|
483
|
+
throw new Error('node-unavailable: use an existing node in this project');
|
|
484
|
+
const proposed = change(structuredClone(current));
|
|
485
|
+
if (proposed.id !== nodeId || proposed.courseId !== courseId)
|
|
486
|
+
throw new Error('node identity cannot change');
|
|
487
|
+
const next = NodeSchema.parse(proposed);
|
|
488
|
+
await nodes.put(nodeId, next);
|
|
489
|
+
return structuredClone(next);
|
|
490
|
+
});
|
|
491
|
+
},
|
|
328
492
|
nodeCount: () => nodes.size,
|
|
329
493
|
readMap(courseId) {
|
|
330
494
|
const course = courses.get(courseId);
|
|
@@ -332,8 +496,22 @@ export async function openUdState(facility) {
|
|
|
332
496
|
return undefined;
|
|
333
497
|
return { course, nodes: listNodesFor(courseId) };
|
|
334
498
|
},
|
|
335
|
-
readFocus: (courseId) =>
|
|
336
|
-
|
|
499
|
+
readFocus: (sessionId, courseId) => {
|
|
500
|
+
const record = focus.get(focusKey(sessionId, courseId));
|
|
501
|
+
if (record !== undefined)
|
|
502
|
+
return record;
|
|
503
|
+
// A record under the bare course key predates session scoping. It cannot
|
|
504
|
+
// say whose it is, so it is not returned to anyone — see
|
|
505
|
+
// execution-key.ts. Left where it is; never migrated on a guess.
|
|
506
|
+
if (focus.get(courseId) !== undefined) {
|
|
507
|
+
logIgnoredLegacy('focus', courseId);
|
|
508
|
+
}
|
|
509
|
+
return undefined;
|
|
510
|
+
},
|
|
511
|
+
async startFocus(courseId, nodeId, now, sessionId) {
|
|
512
|
+
if (sessionId === undefined || sessionId.length === 0) {
|
|
513
|
+
throw new Error('a focus must name the conversation it belongs to');
|
|
514
|
+
}
|
|
337
515
|
const course = courses.get(courseId);
|
|
338
516
|
if (!course)
|
|
339
517
|
throw new Error(`no course "${courseId}"`);
|
|
@@ -343,17 +521,21 @@ export async function openUdState(facility) {
|
|
|
343
521
|
if (node.courseId !== courseId) {
|
|
344
522
|
throw new Error(`node "${nodeId}" belongs to course "${node.courseId}", not "${courseId}"`);
|
|
345
523
|
}
|
|
346
|
-
const record = { courseId, nodeId, startedAt: now, status: 'active', updatedAt: now };
|
|
347
|
-
await focus.put(courseId, record);
|
|
524
|
+
const record = { courseId, nodeId, startedAt: now, status: 'active', updatedAt: now, sessionId };
|
|
525
|
+
await focus.put(focusKey(sessionId, courseId), record);
|
|
348
526
|
return record;
|
|
349
527
|
},
|
|
350
|
-
async endFocus(courseId, now) {
|
|
351
|
-
const
|
|
528
|
+
async endFocus(sessionId, courseId, now) {
|
|
529
|
+
const key = focusKey(sessionId, courseId);
|
|
530
|
+
const current = focus.get(key);
|
|
352
531
|
if (!current || current.status === 'ended')
|
|
353
532
|
return;
|
|
354
|
-
await focus.put(
|
|
533
|
+
await focus.put(key, { ...current, status: 'ended', endedAt: now, updatedAt: now });
|
|
355
534
|
},
|
|
356
535
|
async decideNext(input) {
|
|
536
|
+
if (input.sessionId === undefined || input.sessionId.length === 0) {
|
|
537
|
+
throw new Error('a decision must name the conversation it was reached in');
|
|
538
|
+
}
|
|
357
539
|
const course = courses.get(input.courseId);
|
|
358
540
|
if (!course)
|
|
359
541
|
throw new Error(`no course "${input.courseId}"`);
|
|
@@ -382,16 +564,17 @@ export async function openUdState(facility) {
|
|
|
382
564
|
createdAt: input.now,
|
|
383
565
|
...(input.targetNodeId === undefined ? {} : { targetNodeId: input.targetNodeId }),
|
|
384
566
|
};
|
|
385
|
-
await nextSteps.put(input.fromNodeId, nextStep);
|
|
567
|
+
await nextSteps.put(nextStepKey(input.sessionId, input.fromNodeId), nextStep);
|
|
386
568
|
// A move ends the focus; staying keeps it, because the learner has not
|
|
387
569
|
// moved and the panel must not say they have.
|
|
388
570
|
const moves = endsFocus(input.action, input.targetNodeId !== undefined);
|
|
389
|
-
const current = focus.get(input.courseId) ?? {
|
|
571
|
+
const current = focus.get(focusKey(input.sessionId, input.courseId)) ?? {
|
|
390
572
|
courseId: input.courseId,
|
|
391
573
|
nodeId: input.fromNodeId,
|
|
392
574
|
startedAt: input.now,
|
|
393
575
|
status: 'active',
|
|
394
576
|
updatedAt: input.now,
|
|
577
|
+
sessionId: input.sessionId,
|
|
395
578
|
};
|
|
396
579
|
const nextFocus = moves
|
|
397
580
|
? {
|
|
@@ -402,16 +585,34 @@ export async function openUdState(facility) {
|
|
|
402
585
|
updatedAt: input.now,
|
|
403
586
|
}
|
|
404
587
|
: { ...current, status: 'active', nextStepId: input.fromNodeId, updatedAt: input.now };
|
|
405
|
-
await focus.put(input.courseId, nextFocus);
|
|
588
|
+
await focus.put(focusKey(input.sessionId, input.courseId), nextFocus);
|
|
406
589
|
return { nextStep, focus: nextFocus };
|
|
407
590
|
},
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
591
|
+
readProject: (sessionId) => projects.get(sessionId),
|
|
592
|
+
resolveProject: resolveProjectFor,
|
|
593
|
+
selectProject: (sessionId, courseId, now) => withProjectWrite(() => selectProjectFor(sessionId, courseId, now)),
|
|
594
|
+
adoptProject: (sessionId, courseId, now, expected, allowNew = false) => withProjectWrite(async () => {
|
|
595
|
+
const current = resolveProjectFor(sessionId);
|
|
596
|
+
if (!current.sessionAvailable)
|
|
597
|
+
return { projectAdopted: false, projectBinding: 'missing-session-id' };
|
|
598
|
+
if (current.course?.id === courseId)
|
|
599
|
+
return { projectAdopted: false, projectBinding: 'already-selected' };
|
|
600
|
+
if (current.revision !== expected.revision || current.selection !== expected.selection ||
|
|
601
|
+
current.reason !== undefined || current.selection === 'project' ||
|
|
602
|
+
(current.selection === 'new' && !allowNew))
|
|
603
|
+
return { projectAdopted: false, projectBinding: 'not-selected' };
|
|
604
|
+
await selectProjectFor(sessionId, courseId, now);
|
|
605
|
+
return { projectAdopted: true, projectBinding: 'adopted' };
|
|
606
|
+
}),
|
|
607
|
+
listProjects: () => [...projects.entries()].map(([, record]) => record),
|
|
608
|
+
readNextStep: (sessionId, fromNodeId) => {
|
|
609
|
+
const record = nextSteps.get(nextStepKey(sessionId, fromNodeId));
|
|
610
|
+
if (record !== undefined)
|
|
611
|
+
return record;
|
|
612
|
+
if (nextSteps.get(fromNodeId) !== undefined)
|
|
613
|
+
logIgnoredLegacy('next_steps', fromNodeId);
|
|
614
|
+
return undefined;
|
|
413
615
|
},
|
|
414
|
-
readNextStep: (id) => nextSteps.get(id),
|
|
415
616
|
listNextSteps: () => [...nextSteps.entries()].map(([, record]) => record),
|
|
416
617
|
listLessons: () => [...lessons.entries()].map(([, record]) => record),
|
|
417
618
|
listFocus: () => [...focus.entries()].map(([, record]) => record),
|
|
@@ -427,56 +628,161 @@ export async function openUdState(facility) {
|
|
|
427
628
|
lessons: [...lessons.entries()].map(([, record]) => record),
|
|
428
629
|
nextSteps: [...nextSteps.entries()].map(([, record]) => record),
|
|
429
630
|
focus: [...focus.entries()].map(([, record]) => record),
|
|
631
|
+
// Which project each conversation had open. Part of what the learner
|
|
632
|
+
// owns: it is a choice they made, and an export that dropped it would
|
|
633
|
+
// restore them to a library with nothing selected.
|
|
634
|
+
projects: [...projects.entries()].map(([, record]) => record),
|
|
635
|
+
learningPaths: [...paths.entries()].map(([, record]) => structuredClone(record)),
|
|
636
|
+
courseRuns: [...runs.entries()].map(([, record]) => structuredClone(record)),
|
|
637
|
+
sources: [...sources.entries()].map(([, record]) => structuredClone(record)),
|
|
638
|
+
tasks: [...tasks.entries()].map(([, record]) => structuredClone(record)),
|
|
639
|
+
reviewCards: [...reviewCards.entries()].map(([, record]) => structuredClone(record)),
|
|
640
|
+
reviewLog: [...reviewLog.entries()].map(([, record]) => structuredClone(record)),
|
|
430
641
|
};
|
|
431
642
|
},
|
|
432
643
|
async resetState(now) {
|
|
433
|
-
//
|
|
434
|
-
//
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
644
|
+
// Invalidate planning work captured before reset; serialize with planning
|
|
645
|
+
// and project selections so late writes cannot resurrect deleted plans.
|
|
646
|
+
++planningGeneration;
|
|
647
|
+
await withProjectWrite(async () => {
|
|
648
|
+
for (const table of [courses, nodes, lessons, focus, nextSteps, handoffs, projects, paths, runs, sources, tasks, reviewCards, reviewLog]) {
|
|
649
|
+
for (const key of [...table.keys()])
|
|
650
|
+
await table.delete(key);
|
|
651
|
+
}
|
|
652
|
+
await learner.set({ initializedAt: UNINITIALIZED, updatedAt: now });
|
|
653
|
+
});
|
|
654
|
+
},
|
|
655
|
+
readHandoff: (sessionId, targetNodeId) => {
|
|
656
|
+
const record = handoffs.get(handoffKey(sessionId, targetNodeId));
|
|
657
|
+
if (record !== undefined)
|
|
658
|
+
return record;
|
|
659
|
+
if (handoffs.get(targetNodeId) !== undefined)
|
|
660
|
+
logIgnoredLegacy('handoffs', targetNodeId);
|
|
661
|
+
return undefined;
|
|
440
662
|
},
|
|
441
|
-
readHandoff: (targetNodeId) => handoffs.get(targetNodeId),
|
|
442
663
|
async writeHandoff(record) {
|
|
443
|
-
|
|
664
|
+
if (record.sessionId === undefined || record.sessionId.length === 0) {
|
|
665
|
+
throw new Error('a handoff must name the conversation it was requested in');
|
|
666
|
+
}
|
|
667
|
+
await handoffs.put(handoffKey(record.sessionId, record.targetNodeId), record);
|
|
444
668
|
return record;
|
|
445
669
|
},
|
|
446
|
-
async updateHandoff(targetNodeId, transform) {
|
|
447
|
-
const
|
|
670
|
+
async updateHandoff(sessionId, targetNodeId, transform) {
|
|
671
|
+
const key = handoffKey(sessionId, targetNodeId);
|
|
672
|
+
const current = handoffs.get(key);
|
|
448
673
|
if (current === undefined)
|
|
449
|
-
throw new Error(`no handoff for "${targetNodeId}"`);
|
|
450
|
-
return handoffs.update(
|
|
674
|
+
throw new Error(`no handoff for "${targetNodeId}" in this conversation`);
|
|
675
|
+
return handoffs.update(key, (record) => transform(record));
|
|
451
676
|
},
|
|
452
677
|
listHandoffs: () => [...handoffs.entries()].map(([, record]) => record),
|
|
453
|
-
activeHandoff() {
|
|
454
|
-
const
|
|
455
|
-
|
|
456
|
-
if (record === undefined)
|
|
457
|
-
return undefined;
|
|
458
|
-
return handoffs.get(record.nodeId);
|
|
459
|
-
},
|
|
460
|
-
activeFocus() {
|
|
461
|
-
const courseId = learner.get().activeCourseId;
|
|
462
|
-
if (courseId === undefined)
|
|
463
|
-
return undefined;
|
|
464
|
-
const record = focus.get(courseId);
|
|
465
|
-
if (record === undefined || record.status !== 'active')
|
|
466
|
-
return undefined;
|
|
467
|
-
const course = courses.get(courseId);
|
|
468
|
-
const node = nodes.get(record.nodeId);
|
|
469
|
-
if (!course || !node)
|
|
678
|
+
activeHandoff(sessionId) {
|
|
679
|
+
const active = activeFocusFor(sessionId);
|
|
680
|
+
if (active === undefined)
|
|
470
681
|
return undefined;
|
|
471
|
-
return
|
|
682
|
+
return handoffs.get(handoffKey(sessionId, active.focus.nodeId));
|
|
472
683
|
},
|
|
684
|
+
activeFocus: activeFocusFor,
|
|
473
685
|
readLesson: (id) => lessons.get(id),
|
|
474
686
|
lessonForNode: (nodeId) => [...lessons.entries()].map(([, record]) => record).find((record) => record.nodeId === nodeId),
|
|
475
687
|
async writeLesson(record) {
|
|
476
688
|
await lessons.put(record.id, record);
|
|
477
689
|
return record;
|
|
478
690
|
},
|
|
691
|
+
mutateLesson(courseId, nodeId, change) {
|
|
692
|
+
const generation = planningGeneration;
|
|
693
|
+
return withProjectWrite(async () => {
|
|
694
|
+
if (generation !== planningGeneration || !courses.get(courseId))
|
|
695
|
+
throw new Error('project-unavailable: refresh the selected project');
|
|
696
|
+
if (nodes.get(nodeId)?.courseId !== courseId)
|
|
697
|
+
throw new Error('node-unavailable: use an existing node in this project');
|
|
698
|
+
const current = [...lessons.entries()].map(([, record]) => record).find((record) => record.nodeId === nodeId);
|
|
699
|
+
const proposed = change(current === undefined ? undefined : structuredClone(current));
|
|
700
|
+
if (proposed.courseId !== courseId || proposed.nodeId !== nodeId || (current && proposed.id !== current.id))
|
|
701
|
+
throw new Error('lesson identity cannot change');
|
|
702
|
+
const next = LessonSchema.parse(proposed);
|
|
703
|
+
await lessons.put(next.id, next);
|
|
704
|
+
return structuredClone(next);
|
|
705
|
+
});
|
|
706
|
+
},
|
|
479
707
|
lessonCount: () => lessons.size,
|
|
708
|
+
listSources: () => [...sources.entries()].map(([, record]) => structuredClone(record)),
|
|
709
|
+
readSource: (id) => {
|
|
710
|
+
const record = sources.get(id);
|
|
711
|
+
return record === undefined ? undefined : structuredClone(record);
|
|
712
|
+
},
|
|
713
|
+
async writeSource(record) {
|
|
714
|
+
await sources.put(record.id, record);
|
|
715
|
+
return record;
|
|
716
|
+
},
|
|
717
|
+
listTasks: () => [...tasks.entries()].map(([, record]) => structuredClone(record)),
|
|
718
|
+
readTask: (id) => {
|
|
719
|
+
const record = tasks.get(id);
|
|
720
|
+
return record === undefined ? undefined : structuredClone(record);
|
|
721
|
+
},
|
|
722
|
+
async writeTask(record) {
|
|
723
|
+
await tasks.put(record.id, record);
|
|
724
|
+
return record;
|
|
725
|
+
},
|
|
726
|
+
async deleteTask(id) {
|
|
727
|
+
await tasks.delete(id);
|
|
728
|
+
},
|
|
729
|
+
listReviewCards: () => [...reviewCards.entries()].map(([, record]) => structuredClone(record)),
|
|
730
|
+
readReviewCard: (id) => {
|
|
731
|
+
const record = reviewCards.get(id);
|
|
732
|
+
return record === undefined ? undefined : structuredClone(record);
|
|
733
|
+
},
|
|
734
|
+
async writeReviewCard(record) {
|
|
735
|
+
await reviewCards.put(record.id, record);
|
|
736
|
+
return record;
|
|
737
|
+
},
|
|
738
|
+
listReviewLog: () => [...reviewLog.entries()].map(([, record]) => structuredClone(record)),
|
|
739
|
+
async writeReviewLog(record) {
|
|
740
|
+
await reviewLog.put(record.id, record);
|
|
741
|
+
return record;
|
|
742
|
+
},
|
|
743
|
+
async deleteReviewLog(id) {
|
|
744
|
+
await reviewLog.delete(id);
|
|
745
|
+
},
|
|
746
|
+
readPath: (courseId) => {
|
|
747
|
+
const record = paths.get(courseId);
|
|
748
|
+
return record === undefined ? undefined : structuredClone(record);
|
|
749
|
+
},
|
|
750
|
+
mutatePath(courseId, expectedRevision, change) {
|
|
751
|
+
const generation = planningGeneration;
|
|
752
|
+
return withProjectWrite(async () => {
|
|
753
|
+
if (generation !== planningGeneration || !courses.get(courseId))
|
|
754
|
+
throw new Error('project-unavailable: refresh the selected project');
|
|
755
|
+
const current = structuredClone(paths.get(courseId) ?? emptyPath(courseId, new Date().toISOString()));
|
|
756
|
+
if (current.revision !== expectedRevision)
|
|
757
|
+
throw new Error('revision-conflict: learning plan changed; refresh before writing');
|
|
758
|
+
const proposed = change(current);
|
|
759
|
+
if (proposed.courseId !== courseId)
|
|
760
|
+
throw new Error('planning project identity cannot change');
|
|
761
|
+
const next = LearningPathSchema.parse({ ...proposed, revision: current.revision + 1 });
|
|
762
|
+
await paths.put(courseId, next);
|
|
763
|
+
return structuredClone(next);
|
|
764
|
+
});
|
|
765
|
+
},
|
|
766
|
+
readCourseRun: (courseId, sessionId) => {
|
|
767
|
+
const record = runs.get(runKey(courseId, sessionId));
|
|
768
|
+
return record === undefined ? undefined : structuredClone(record);
|
|
769
|
+
},
|
|
770
|
+
listCourseRuns: () => [...runs.entries()].map(([, record]) => structuredClone(record)),
|
|
771
|
+
mutateCourseRun(courseId, sessionId, change) {
|
|
772
|
+
const generation = planningGeneration;
|
|
773
|
+
return withProjectWrite(async () => {
|
|
774
|
+
if (!sessionId || generation !== planningGeneration || !courses.get(courseId))
|
|
775
|
+
throw new Error('project-unavailable: refresh the selected project');
|
|
776
|
+
const key = runKey(courseId, sessionId);
|
|
777
|
+
const current = structuredClone(runs.get(key) ?? emptyRun(courseId, sessionId, new Date().toISOString()));
|
|
778
|
+
const proposed = change(current);
|
|
779
|
+
if (proposed.courseId !== courseId || proposed.sessionId !== sessionId)
|
|
780
|
+
throw new Error('course run identity cannot change');
|
|
781
|
+
const next = CourseRunSchema.parse({ ...proposed, revision: current.revision + 1 });
|
|
782
|
+
await runs.put(key, next);
|
|
783
|
+
return structuredClone(next);
|
|
784
|
+
});
|
|
785
|
+
},
|
|
480
786
|
snapshot() {
|
|
481
787
|
const profile = learner.get();
|
|
482
788
|
return {
|
package/lib/state.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"state.js","sourceRoot":"","sources":["../src/state.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"state.js","sourceRoot":"","sources":["../src/state.ts"],"names":[],"mappings":"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"}
|