"use client"; import { ClipboardCheckIcon } from "lucide-react"; import type { ProbeDoneResult, ProbeDoneInput } from "@/src/core"; /** * The probe conclusion card (docs/probe-teach-split.md §2): renders the * prober's probe_done call. The INPUT is the learner assessment — strand by * strand, where his edge sits — and it belongs to the learner as much as to * the transcript: it streams live while the prober writes it and stays as * the handoff artifact. The OUTPUT is the seam's ack (ok) or the refusal * the prober retried on (rendered quiet and small — it is model-facing * bookkeeping, kept only for transcript honesty). * * Deliberately plain v1: the proper assessment viewer design is deferred to * the UI wave; this card just guarantees the data is never invisible. */ export function ProbeDoneCard({ part }: { part: { input?: unknown; output?: unknown } }) { const input = part.input as ProbeDoneInput | undefined; const output = part.output as ProbeDoneResult | undefined; const assessment = output?.ok ? output.assessment : (input?.assessment ?? null); return (
Probe concluded — your assessment
{output && !output.ok ? (

The prober retried: {output.error}

) : assessment ? (
{assessment.strands.map((s, i) => (
{s.strand}
{s.assessment}
))} {assessment.summary && (

{assessment.summary}

)}
) : (

Writing the assessment…

)}
); }