import { ResizableHandle, ResizablePanel, ResizablePanelGroup, } from "~/components/ui/resizable"; import { parse } from "@conform-to/zod"; import { json } from "@remix-run/node"; import { useState } from "react"; import { Tabs, TabsContent, TabsList, TabsTrigger } from "~/components/ui/tabs"; import { Ingest } from "~/components/dashboard/ingest"; import { type LoaderFunctionArgs, type ActionFunctionArgs, } from "@remix-run/server-runtime"; import { requireUserId } from "~/services/session.server"; import { addToQueue, IngestBodyRequest } from "~/lib/ingest.server"; import { getNodeLinks } from "~/lib/neo4j.server"; import { useTypedLoaderData } from "remix-typedjson"; import { GraphVisualization } from "~/components/graph/graph-visualization"; import { Search } from "~/components/dashboard"; import { SearchBodyRequest } from "./search"; import { SearchService } from "~/services/search.server"; export async function action({ request }: ActionFunctionArgs) { const userId = await requireUserId(request); const formData = await request.formData(); // Check if this is a search request by looking for query parameter if (formData.has("query")) { // Handle ingest request const submission = parse(formData, { schema: SearchBodyRequest }); const searchService = new SearchService(); if (!submission.value || submission.intent !== "submit") { return json(submission); } const results = await searchService.search(submission.value.query, userId); return json(results); } // Handle ingest request const submission = parse(formData, { schema: IngestBodyRequest }); if (!submission.value || submission.intent !== "submit") { return json(submission); } return await addToQueue(submission.value, userId); } export async function loader({ request }: LoaderFunctionArgs) { const userId = await requireUserId(request); const nodeLinks = await getNodeLinks(userId); return nodeLinks; } export default function Dashboard() { const nodeLinks = useTypedLoaderData(); const [size, setSize] = useState(15); return (

Graph

Your memory graph

{typeof window !== "undefined" && ( )}
setSize(size)} order={2} id="rightScreen" > Add Retrieve
); }