"use client";
import React from "react";
import { useState, useRef } from "react";
import DiagnosticsView from "@/components/diagnostics-view";
import SituationGraphView from "@/components/situation-graph-view";
const MAX_LENGTH = 10000;
export async function submitScenarioForStartCase(fetchImpl, scenario) {
return fetchImpl("/api/cases/start", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({ scenario }),
});
}
export function ScenarioResultPanels({ status, result }) {
if (!result) return null;
const hasGraph = Boolean(result.situationGraph);
const hasQuestion = Boolean(result.selectedQuestion?.question);
const hasDiagnostics = Boolean(result.diagnostics);
return (
<>
{status === "error" && (
{result.error && (
Error: {result.error}
)}
{!hasGraph && !hasQuestion && (
Validation failed — no structured graph output was produced.
)}
)}
{(status === "success" || hasGraph || hasQuestion) && (
)}
{hasDiagnostics && }
>
);
}
export default function ScenarioForm() {
const [scenario, setScenario] = useState("");
const [status, setStatus] = useState("idle"); // idle | loading | error | success
const [result, setResult] = useState(null);
const textareaRef = useRef(null);
const handleSubmit = async (e) => {
e.preventDefault();
setStatus("loading");
setResult(null);
try {
const res = await submitScenarioForStartCase(fetch, scenario);
const data = await res.json();
if (res.ok && data.success) {
setStatus("success");
setResult(data);
} else {
setStatus("error");
setResult(data);
}
} catch (err) {
setStatus("error");
setResult({ error: err.message || "Network request failed" });
}
};
return (
{status === "loading" && (
Waiting for model response...
)}
{/* Empty state */}
{status === "idle" && (
Enter a scenario above and click Analyse to begin.
)}
);
}