"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 (