"use client"; import { useState, useCallback } from "react"; import { ReactFlowProvider } from "@xyflow/react"; import { Play, Square, Upload } from "lucide-react"; import { ArchitectCanvas } from "@/app/components/ArchitectCanvas"; import { useCouncilWebSocket } from "@/app/hooks/useCouncilWebSocket"; import { useCouncilStore } from "@/app/store/council-store"; import { runApi } from "@/app/utils/api-client"; export default function KonferenzzimmerPage() { const [topic, setTopic] = useState(""); const [runId, setRunId] = useState(null); const [result, setResult] = useState(null); const [error, setError] = useState(null); const [isRunning, setIsRunning] = useState(false); const setActiveRun = useCouncilStore((s) => s.setActiveRun); const clearActiveNode = useCouncilStore((s) => s.clearActiveNode); const onComplete = useCallback((res: string) => { setResult(res); setIsRunning(false); setRunId(null); }, []); const onError = useCallback((err: string) => { setError(err); setIsRunning(false); setRunId(null); }, []); useCouncilWebSocket({ run_id: runId, onComplete, onError }); const handleStart = async () => { if (!topic.trim()) return; setResult(null); setError(null); setIsRunning(true); clearActiveNode(); try { const run = await runApi.start(topic); setActiveRun(run); setRunId(run.run_id); } catch (e) { setError("Fehler beim Starten: " + (e as Error).message); setIsRunning(false); } }; const handleStop = () => { setRunId(null); setIsRunning(false); clearActiveNode(); setActiveRun(null); }; return (
{/* Control bar */}