question tools: phase-visible names, hardened teach schemas, context-slim seams
The tools_fails_2 diagnosis (glm-5.3 dropping trailing required fields):
- probe-phase quiz/explain renamed to probe/recall — a shared name carried
the probe call shape into teaching (the first teach quiz dropped nodeId);
display seams accept the old names forever
- teach quiz+explain schemas lead with the required pair (type, nodeId);
explain gains the predict/check type and joins the reveal law (checks
collapse, predictions arrive open; no-type records render check-style)
- plan_init/probe_done results go context-slim (owner, context diet):
content = validated nodeIds + binding-id reminder / fixed ack; details
keeps the tree for the popup and {ok:true} — serializer-verified that
details never reaches the model; failure echoes dropped
- the cards carry the tool's own name (Probe/Recall) and the quiz type
reads on the label (Prediction/Check) in composer and transcript
This commit is contained in:
@@ -100,6 +100,19 @@ describe("messageMarkdown", () => {
|
||||
assert.match(md, /The learner answered in his own words: it never strays far/);
|
||||
});
|
||||
|
||||
it("probe-phase questions export under their own names (owner, 2026-10-09)", () => {
|
||||
const probe = messageMarkdown(
|
||||
result("r1", "p1", "probe", { questionText: "What is a derivative?", correct: true, dontKnow: false }),
|
||||
"r1",
|
||||
)!;
|
||||
assert.match(probe, /^### Probe · r1$/m);
|
||||
const recall = messageMarkdown(
|
||||
result("r2", "rr1", "recall", { questionText: "Why does Mercury stay near the Sun?", text: "it never strays far" }),
|
||||
"r2",
|
||||
)!;
|
||||
assert.match(recall, /^### Recall · r2$/m);
|
||||
});
|
||||
|
||||
it("ask blocks: question + chosen options + free text", () => {
|
||||
const chosen = messageMarkdown(
|
||||
result("r1", "a1", "ask_user_question", { questionText: "Which way?", answers: ["second"], other: "also the third" }),
|
||||
|
||||
Reference in New Issue
Block a user