import React from "react"; const ValidationIndicator = ({ status }) => { const styles = { valid: "text-green-600", partial: "text-yellow-600", invalid: "text-red-600", }; const labels = { valid: "✅ Validation passed", partial: "⚠️ Partial validation", invalid: "❌ Validation failed", }; return (
{labels[status] || status}
); }; const validationIcons = { valid: "✅", partial: "⚠️", invalid: "❌", }; export default function DiagnosticsView({ result }) { if (!result) return null; const diagnostics = result.diagnostics || result; const metrics = [ { label: "Model", value: diagnostics.modelName || result.modelName || "?" }, { label: "Provider", value: "Ollama" }, { label: "Prompt version", value: diagnostics.promptVersion || result.promptVersion || "?", }, { label: "Duration", value: diagnostics.responseDurationMs != null ? `${diagnostics.responseDurationMs}ms` : "?", }, { label: "Validation", value: ( ), }, { label: "Node count", value: diagnostics.nodeCount != null ? diagnostics.nodeCount : diagnostics.graphNodeCount != null ? diagnostics.graphNodeCount : "?", }, { label: "Edge count", value: diagnostics.edgeCount != null ? diagnostics.edgeCount : diagnostics.graphEdgeCount != null ? diagnostics.graphEdgeCount : "?", }, { label: "Graph references", value: diagnostics.graphReferenceValidation == null ? "?" : diagnostics.graphReferenceValidation.valid ? `${validationIcons.valid} valid` : `${validationIcons.invalid} invalid`, }, { label: "Investigation strategy", value: diagnostics.investigationStrategy?.key || diagnostics.investigationStrategy || result.selectedQuestion?.strategy || "?", }, ]; const errors = [ ...(result.errors || []), ...(result.validationErrors || []), ...(result.graphValidationErrors || []), ...(result.proposalErrors || []), ...(result.providerErrors || []), ...(result.analysisErrors || []), ]; return (

Diagnostics

{metrics.map(({ label, value }) => (
{label}
{value}
))}
{/* Collapsed raw output for debugging */} {result.rawResponse && (
View raw model response ( {(result.rawResponse?.length || 0).toLocaleString()} chars)
            {result.rawResponse}
          
)} {/* Errors if present */} {errors.length > 0 && (
Validation errors ({errors.length})
    {errors.map((err, i) => (
  • {typeof err === "string" ? err : err?.message || JSON.stringify(err)}
  • ))}
)}
); }