feat: advance reasoning after comparability is resolved

This commit is contained in:
2026-08-02 17:06:34 +01:00
parent 7d408701b5
commit 25a989450c
9 changed files with 649 additions and 5 deletions
+32 -1
View File
@@ -15,7 +15,10 @@ import {
import { buildInitialGraph, describeGraph } from "./builder.js";
import { applyValidatedProposal } from "./apply-proposal.js";
import { buildGraphUpdatePrompt } from "./prompt-builder.js";
import { formulateTieResolutionQuestion } from "./question-formulator.js";
import {
buildReasoningState,
formulateTieResolutionQuestion,
} from "./question-formulator.js";
import { parseGraphUpdateProposal } from "./update-proposal.js";
import {
explainUnknownSelection,
@@ -83,6 +86,9 @@ function buildUpdateDiagnostics({
graphReferenceValidation,
selectedQuestion,
unknownSelectionExplanation,
previousReasoningState,
reasoningState,
resolvedReasoningNodeIds,
}) {
return {
promptVersion: promptVersion ?? "v0.4",
@@ -100,6 +106,14 @@ function buildUpdateDiagnostics({
selectedQuestion?.investigationStrategy ??
selectedQuestion?.strategy ??
null,
previousComparabilityStatus:
previousReasoningState?.comparabilityStatus ?? null,
comparabilityStatus: reasoningState?.comparabilityStatus ?? null,
relationshipStatus: reasoningState?.relationshipStatus ?? null,
relationshipAssessed: reasoningState?.relationshipAssessed ?? null,
reasoningStagesBefore: previousReasoningState?.reasoningStages ?? [],
reasoningStagesAfter: reasoningState?.reasoningStages ?? [],
resolvedReasoningNodeIds: resolvedReasoningNodeIds ?? [],
unknownSelectionExplanation: unknownSelectionExplanation ?? null,
};
}
@@ -159,6 +173,12 @@ export async function startCase(body) {
activeUnknownNodeId,
resolvedNodeIds: [],
currentSummary,
reasoningState: buildReasoningState({
centralStatement: scenario,
nodes: initialGraph.nodes,
edges: initialGraph.edges,
resolvedNodeIds: [],
}),
});
situationGraphSchema.parse(situationGraph);
@@ -322,6 +342,8 @@ async function updateCaseWithDependencies(body, dependencies = {}) {
const applicationResult = applyProposalUpdate({
situationGraph,
proposal: parsedProposal.proposal,
previousQuestion,
answer,
});
if (!applicationResult.success) {
@@ -338,6 +360,9 @@ async function updateCaseWithDependencies(body, dependencies = {}) {
graph: situationGraph,
graphReferenceValidation: graphReferenceValidation,
selectedQuestion: null,
previousReasoningState: buildReasoningState(situationGraph),
reasoningState: buildReasoningState(situationGraph),
resolvedReasoningNodeIds: [],
unknownSelectionExplanation: explainUnknownSelection(
situationGraph,
situationGraph.resolvedNodeIds || [],
@@ -372,6 +397,9 @@ async function updateCaseWithDependencies(body, dependencies = {}) {
graph: applicationResult.updatedSituationGraph,
graphReferenceValidation: applicationResult.graphReferenceValidation,
selectedQuestion: applicationResult.selectedQuestion,
previousReasoningState: applicationResult.previousReasoningState,
reasoningState: applicationResult.reasoningState,
resolvedReasoningNodeIds: applicationResult.resolvedReasoningNodeIds,
unknownSelectionExplanation: buildUnknownSelectionDiagnostics(
applicationResult.updatedSituationGraph,
applicationResult.updatedSituationGraph.resolvedNodeIds || [],
@@ -393,6 +421,9 @@ async function updateCaseWithDependencies(body, dependencies = {}) {
graph: situationGraph,
graphReferenceValidation,
selectedQuestion: null,
previousReasoningState: buildReasoningState(situationGraph),
reasoningState: buildReasoningState(situationGraph),
resolvedReasoningNodeIds: [],
unknownSelectionExplanation: buildUnknownSelectionDiagnostics(
situationGraph,
situationGraph.resolvedNodeIds || [],