"use client"; import { useEffect, useState } from "react"; import Link from "next/link"; import { AppShell } from "@/components/AppShell"; import { Badge, Button, Card, Select, Textarea } from "@/components/ui/Primitives"; import { chatOverWorkspace, listWorkspaceSummaries } from "@/lib/notes-client"; import type { WorkspaceSummary } from "@/lib/types"; import { toast } from "@/lib/toast"; export default function ChatPage() { const [workspaces, setWorkspaces] = useState([]); const [workspaceId, setWorkspaceId] = useState(""); const [message, setMessage] = useState(""); const [answer, setAnswer] = useState(null); const [citations, setCitations] = useState>([]); const [loading, setLoading] = useState(false); useEffect(() => { void listWorkspaceSummaries().then((w) => { setWorkspaces(w); setWorkspaceId((id) => id || w[0]?.id || ""); }); }, []); async function handleAsk() { if (!workspaceId.trim() || !message.trim()) return; setLoading(true); setAnswer(null); setCitations([]); try { const res = await chatOverWorkspace(workspaceId, message.trim()); setAnswer(res.answer); setCitations(res.citations); } catch (e) { toast.error(e instanceof Error ? e.message : "Chat failed"); } finally { setLoading(false); } } return ( Feature-flagged on backend (chat.rag_enabled)} >