'use client'; import { Separator } from "@/components/ui/separator"; import { ChatBox } from "@/features/chat/components/chatBox"; import { ChatBoxToolbar } from "@/features/chat/components/chatBox/chatBoxToolbar"; import { LanguageModelInfo, SearchScope } from "@/features/chat/types"; import { useCreateNewChatThread } from "@/features/chat/useCreateNewChatThread"; import { RepositoryQuery, SearchContextQuery } from "@/lib/types"; import { useCallback, useState } from "react"; import { SearchModeSelector, SearchModeSelectorProps } from "./toolbar"; import { useLocalStorage } from "usehooks-ts"; import { DemoExamples } from "@/types"; import { AskSourcebotDemoCards } from "./askSourcebotDemoCards"; import { AgenticSearchTutorialDialog } from "./agenticSearchTutorialDialog"; import { setAgenticSearchTutorialDismissedCookie } from "@/actions"; interface AgenticSearchProps { searchModeSelectorProps: SearchModeSelectorProps; languageModels: LanguageModelInfo[]; repos: RepositoryQuery[]; searchContexts: SearchContextQuery[]; chatHistory: { id: string; createdAt: Date; name: string | null; }[]; demoExamples: DemoExamples | undefined; isTutorialDismissed: boolean; } export const AgenticSearch = ({ searchModeSelectorProps, languageModels, repos, searchContexts, demoExamples, isTutorialDismissed, }: AgenticSearchProps) => { const { createNewChatThread, isLoading } = useCreateNewChatThread(); const [selectedSearchScopes, setSelectedSearchScopes] = useLocalStorage("selectedSearchScopes", [], { initializeWithValue: false }); const [isContextSelectorOpen, setIsContextSelectorOpen] = useState(false); const [isTutorialOpen, setIsTutorialOpen] = useState(!isTutorialDismissed); const onTutorialDismissed = useCallback(() => { setIsTutorialOpen(false); setAgenticSearchTutorialDismissedCookie(true); }, []); return (
{ createNewChatThread(children, selectedSearchScopes); }} className="min-h-[50px]" isRedirecting={isLoading} languageModels={languageModels} selectedSearchScopes={selectedSearchScopes} searchContexts={searchContexts} onContextSelectorOpenChanged={setIsContextSelectorOpen} />
{demoExamples && ( )} {isTutorialOpen && ( )}
) }