feat: separate confidence from reasoning completeness

This commit is contained in:
2026-08-03 07:05:20 +01:00
parent 49765e95a0
commit 1d64144e01
8 changed files with 489 additions and 19 deletions
+16
View File
@@ -36,6 +36,20 @@ export const ConfidenceLevel = /** @type {const} */ ({
high: "high",
});
export const CompletenessStatus = /** @type {const} */ ({
empty: "empty",
partial: "partial",
complete: "complete",
});
export const confidenceAssessmentSchema = z
.object({
evidenceConfidence: z.enum(Object.values(ConfidenceLevel)),
completenessStatus: z.enum(Object.values(CompletenessStatus)),
conclusionConfidence: z.enum(Object.values(ConfidenceLevel)),
})
.strict();
// ── SituationNode ────────────────────────────────────
export const situationNodeSchema = z.object({
@@ -45,6 +59,7 @@ export const situationNodeSchema = z.object({
kind: z.enum(Object.values(SituationKind)),
status: z.enum(Object.values(SituationStatus)),
confidence: z.enum(Object.values(ConfidenceLevel)),
confidenceAssessment: confidenceAssessmentSchema.optional(),
value: z.union([z.string(), z.number(), z.null()]).nullable().optional(),
unit: z.string().nullable().optional(),
evidenceIds: z.array(z.string()).default([]),
@@ -188,6 +203,7 @@ export function makeNode(opts) {
kind: opts.kind ?? "observation",
status: opts.status ?? "unknown",
confidence: opts.confidence ?? "medium",
confidenceAssessment: opts.confidenceAssessment,
value: opts.value ?? null,
unit: opts.unit ?? null,
evidenceIds: opts.evidenceIds ?? [],