import { Button } from "@/components/ui/button"; import { useThreads } from "@/hooks/useThreads"; import { Thread } from "@langchain/langgraph-sdk"; import { useEffect, useState } from "react"; import { getContentString } from "../utils"; import { useQueryParam, StringParam, BooleanParam } from "use-query-params"; import { Sheet, SheetContent, SheetHeader, SheetTitle, } from "@/components/ui/sheet"; function ThreadList({ threads, onThreadClick, }: { threads: Thread[]; onThreadClick?: (threadId: string) => void; }) { const [threadId, setThreadId] = useQueryParam("threadId", StringParam); return (
{threads.map((t) => { let itemText = t.thread_id; if ( typeof t.values === "object" && t.values && "messages" in t.values && Array.isArray(t.values.messages) && t.values.messages?.length > 0 ) { const firstMessage = t.values.messages[0]; itemText = getContentString(firstMessage.content); } return (
); })}
); } export default function ThreadHistory() { const [threads, setThreads] = useState([]); const [chatHistoryOpen, setChatHistoryOpen] = useQueryParam( "chatHistoryOpen", BooleanParam, ); const { getThreads } = useThreads(); useEffect(() => { getThreads().then(setThreads).catch(console.error); }, []); return ( <>

Thread History

Thread History setChatHistoryOpen((o) => !o)} /> ); }