diff --git a/components/reasoning-workspace.jsx b/components/reasoning-workspace.jsx index 656ae74..126e875 100644 --- a/components/reasoning-workspace.jsx +++ b/components/reasoning-workspace.jsx @@ -792,7 +792,7 @@ function OpenQuestionsPanel({ focused, formulationStep, formulateMsg, processingStep, deconstructMsg, doneForNowIds, startFocused, handleDeconstructSubmit, retryFormulation, setSelectedPresentationItemId, setFocusedPresentationItemId, setFocusedAnswer, focusedAnswer, setDoneForNowIds, - setFollowUpQuestion, focusedContributions, + setFollowUpQuestion, focusedContributions, focusedInvestigations, }) { const openNodes = (graph?.nodes || []).filter( (n) => n.kind === "unknown" && n.status !== "resolved" && !doneForNowIds.includes(n.id), @@ -800,6 +800,25 @@ function OpenQuestionsPanel({ if (openNodes.length <= 0) return null; + // Check whether a node has a completed focused result stored locally. + const hasCompletedInvestigation = (nid) => { + const inv = focusedInvestigations?.[nid]; + return Boolean(inv && inv.status === "formulated" && inv.result && typeof inv.question === "string" && inv.question.trim()); + }; + + // When a completed result exists and this node is already selected, reopen it. + function handleNodeClick(node) { + if (!focused?.question?.trim() || (focused && !hasFocusedContent())) { + if (hasCompletedInvestigation(node.id) && selectedPresentationItemId === node.id) { + setFocusedPresentationItemId(node.id); + return; + } + setSelectedPresentationItemId( + selectedPresentationItemId === node.id ? null : node.id, + ); + } + } + return (