diff --git a/src/frontend/.gitignore b/frontend/.gitignore similarity index 100% rename from src/frontend/.gitignore rename to frontend/.gitignore diff --git a/src/frontend/README.md b/frontend/README.md similarity index 100% rename from src/frontend/README.md rename to frontend/README.md diff --git a/src/frontend/components.json b/frontend/components.json similarity index 100% rename from src/frontend/components.json rename to frontend/components.json diff --git a/src/frontend/eslint.config.js b/frontend/eslint.config.js similarity index 100% rename from src/frontend/eslint.config.js rename to frontend/eslint.config.js diff --git a/src/frontend/index.html b/frontend/index.html similarity index 100% rename from src/frontend/index.html rename to frontend/index.html diff --git a/src/frontend/package-lock.json b/frontend/package-lock.json similarity index 100% rename from src/frontend/package-lock.json rename to frontend/package-lock.json diff --git a/src/frontend/package.json b/frontend/package.json similarity index 100% rename from src/frontend/package.json rename to frontend/package.json diff --git a/src/frontend/public/vite.svg b/frontend/public/vite.svg similarity index 100% rename from src/frontend/public/vite.svg rename to frontend/public/vite.svg diff --git a/src/frontend/src/assets/react.svg b/frontend/src/assets/react.svg similarity index 100% rename from src/frontend/src/assets/react.svg rename to frontend/src/assets/react.svg diff --git a/src/frontend/src/components/app-sidebar.tsx b/frontend/src/components/app-sidebar.tsx similarity index 100% rename from src/frontend/src/components/app-sidebar.tsx rename to frontend/src/components/app-sidebar.tsx diff --git a/src/frontend/src/components/conversations-history.tsx b/frontend/src/components/conversations-history.tsx similarity index 100% rename from src/frontend/src/components/conversations-history.tsx rename to frontend/src/components/conversations-history.tsx diff --git a/src/frontend/src/components/create-conversation.tsx b/frontend/src/components/create-conversation.tsx similarity index 100% rename from src/frontend/src/components/create-conversation.tsx rename to frontend/src/components/create-conversation.tsx diff --git a/src/frontend/src/components/nav-conversations.tsx b/frontend/src/components/nav-conversations.tsx similarity index 100% rename from src/frontend/src/components/nav-conversations.tsx rename to frontend/src/components/nav-conversations.tsx diff --git a/src/frontend/src/components/nav-main.tsx b/frontend/src/components/nav-main.tsx similarity index 100% rename from src/frontend/src/components/nav-main.tsx rename to frontend/src/components/nav-main.tsx diff --git a/src/frontend/src/components/site-header.tsx b/frontend/src/components/site-header.tsx similarity index 100% rename from src/frontend/src/components/site-header.tsx rename to frontend/src/components/site-header.tsx diff --git a/src/frontend/src/components/ui/avatar.tsx b/frontend/src/components/ui/avatar.tsx similarity index 100% rename from src/frontend/src/components/ui/avatar.tsx rename to frontend/src/components/ui/avatar.tsx diff --git a/src/frontend/src/components/ui/breadcrumb.tsx b/frontend/src/components/ui/breadcrumb.tsx similarity index 100% rename from src/frontend/src/components/ui/breadcrumb.tsx rename to frontend/src/components/ui/breadcrumb.tsx diff --git a/src/frontend/src/components/ui/button.tsx b/frontend/src/components/ui/button.tsx similarity index 100% rename from src/frontend/src/components/ui/button.tsx rename to frontend/src/components/ui/button.tsx diff --git a/src/frontend/src/components/ui/card.tsx b/frontend/src/components/ui/card.tsx similarity index 100% rename from src/frontend/src/components/ui/card.tsx rename to frontend/src/components/ui/card.tsx diff --git a/src/frontend/src/components/ui/collapsible.tsx b/frontend/src/components/ui/collapsible.tsx similarity index 100% rename from src/frontend/src/components/ui/collapsible.tsx rename to frontend/src/components/ui/collapsible.tsx diff --git a/src/frontend/src/components/ui/dialog.tsx b/frontend/src/components/ui/dialog.tsx similarity index 100% rename from src/frontend/src/components/ui/dialog.tsx rename to frontend/src/components/ui/dialog.tsx diff --git a/src/frontend/src/components/ui/dropdown-menu.tsx b/frontend/src/components/ui/dropdown-menu.tsx similarity index 100% rename from src/frontend/src/components/ui/dropdown-menu.tsx rename to frontend/src/components/ui/dropdown-menu.tsx diff --git a/src/frontend/src/components/ui/input.tsx b/frontend/src/components/ui/input.tsx similarity index 100% rename from src/frontend/src/components/ui/input.tsx rename to frontend/src/components/ui/input.tsx diff --git a/src/frontend/src/components/ui/label.tsx b/frontend/src/components/ui/label.tsx similarity index 100% rename from src/frontend/src/components/ui/label.tsx rename to frontend/src/components/ui/label.tsx diff --git a/src/frontend/src/components/ui/separator.tsx b/frontend/src/components/ui/separator.tsx similarity index 100% rename from src/frontend/src/components/ui/separator.tsx rename to frontend/src/components/ui/separator.tsx diff --git a/src/frontend/src/components/ui/sheet.tsx b/frontend/src/components/ui/sheet.tsx similarity index 100% rename from src/frontend/src/components/ui/sheet.tsx rename to frontend/src/components/ui/sheet.tsx diff --git a/src/frontend/src/components/ui/sidebar.tsx b/frontend/src/components/ui/sidebar.tsx similarity index 100% rename from src/frontend/src/components/ui/sidebar.tsx rename to frontend/src/components/ui/sidebar.tsx diff --git a/src/frontend/src/components/ui/skeleton.tsx b/frontend/src/components/ui/skeleton.tsx similarity index 100% rename from src/frontend/src/components/ui/skeleton.tsx rename to frontend/src/components/ui/skeleton.tsx diff --git a/src/frontend/src/components/ui/sonner.tsx b/frontend/src/components/ui/sonner.tsx similarity index 100% rename from src/frontend/src/components/ui/sonner.tsx rename to frontend/src/components/ui/sonner.tsx diff --git a/src/frontend/src/components/ui/tooltip.tsx b/frontend/src/components/ui/tooltip.tsx similarity index 100% rename from src/frontend/src/components/ui/tooltip.tsx rename to frontend/src/components/ui/tooltip.tsx diff --git a/src/frontend/src/env.ts b/frontend/src/env.ts similarity index 100% rename from src/frontend/src/env.ts rename to frontend/src/env.ts diff --git a/src/frontend/src/hooks/use-mobile.ts b/frontend/src/hooks/use-mobile.ts similarity index 100% rename from src/frontend/src/hooks/use-mobile.ts rename to frontend/src/hooks/use-mobile.ts diff --git a/src/frontend/src/index.css b/frontend/src/index.css similarity index 100% rename from src/frontend/src/index.css rename to frontend/src/index.css diff --git a/src/frontend/src/lib/utils.ts b/frontend/src/lib/utils.ts similarity index 100% rename from src/frontend/src/lib/utils.ts rename to frontend/src/lib/utils.ts diff --git a/src/frontend/src/main.tsx b/frontend/src/main.tsx similarity index 100% rename from src/frontend/src/main.tsx rename to frontend/src/main.tsx diff --git a/src/frontend/src/routeTree.gen.ts b/frontend/src/routeTree.gen.ts similarity index 100% rename from src/frontend/src/routeTree.gen.ts rename to frontend/src/routeTree.gen.ts diff --git a/src/frontend/src/routes/__root.tsx b/frontend/src/routes/__root.tsx similarity index 100% rename from src/frontend/src/routes/__root.tsx rename to frontend/src/routes/__root.tsx diff --git a/frontend/src/routes/conversation.$sessionId.tsx b/frontend/src/routes/conversation.$sessionId.tsx new file mode 100644 index 0000000..e80e7c3 --- /dev/null +++ b/frontend/src/routes/conversation.$sessionId.tsx @@ -0,0 +1,47 @@ +import { Button } from "@/components/ui/button"; +import { Card, CardContent, CardHeader, CardTitle } from "@/components/ui/card"; +import { Input } from "@/components/ui/input"; +import { Separator } from "@/components/ui/separator"; +import { getConversationHistory } from "@/services/get-conversation-history"; +import { createFileRoute, notFound } from "@tanstack/react-router"; +import { SendHorizontalIcon } from "lucide-react"; + +export const Route = createFileRoute("/conversation/$sessionId")({ + component: RouteComponent, + loader: async ({ params }) => { + const data = await getConversationHistory(params.sessionId); + if (!data) { + throw notFound(); + } + return data; + }, +}); + +function RouteComponent() { + const historyData = Route.useLoaderData(); + const { sessionId } = Route.useParams(); + + return ( +
+
+ + + {historyData.title} + + + +
+ {/*
*/} +
+
+
+
+ + +
+
+
+ ); +} diff --git a/src/frontend/src/routes/index.tsx b/frontend/src/routes/index.tsx similarity index 100% rename from src/frontend/src/routes/index.tsx rename to frontend/src/routes/index.tsx diff --git a/frontend/src/services/get-conversation-history.tsx b/frontend/src/services/get-conversation-history.tsx new file mode 100644 index 0000000..2af28ce --- /dev/null +++ b/frontend/src/services/get-conversation-history.tsx @@ -0,0 +1,28 @@ +import { env } from "@/env"; +import type { ConversationHistoryModel } from "@/types/conversation-history-model"; +import { toast } from "sonner"; + +const getConversationHistory = async ( + sessionId: string +): Promise => { + const url = `${env.VITE_API_URL}/conversation/${sessionId}/history`; + try { + const response = await fetch(url); + if (!response.ok) { + toast.error("Failed to retrieve conversation history"); + return null; + } + return (await response.json()) as ConversationHistoryModel; + } catch (error) { + console.error( + `Error retrieving conversation history for ${sessionId}`, + error + ); + toast.error("Failed to retrieve conversation history"); + return null; + } +}; + +getConversationHistory.queryKey = "get-conversation-history"; + +export { getConversationHistory }; diff --git a/src/frontend/src/services/get-conversations.tsx b/frontend/src/services/get-conversations.tsx similarity index 100% rename from src/frontend/src/services/get-conversations.tsx rename to frontend/src/services/get-conversations.tsx diff --git a/src/frontend/src/services/start-conversation.tsx b/frontend/src/services/start-conversation.tsx similarity index 100% rename from src/frontend/src/services/start-conversation.tsx rename to frontend/src/services/start-conversation.tsx diff --git a/frontend/src/types/conversation-history-model.ts b/frontend/src/types/conversation-history-model.ts new file mode 100644 index 0000000..c2dce94 --- /dev/null +++ b/frontend/src/types/conversation-history-model.ts @@ -0,0 +1,8 @@ +import type { ConversationModel } from "@/types/conversation-model"; +import type { ExchangeModel } from "@/types/exchange-model"; + +interface ConversationHistoryModel extends ConversationModel { + history: ExchangeModel[]; +} + +export { type ConversationHistoryModel }; diff --git a/src/frontend/src/types/conversation-model.ts b/frontend/src/types/conversation-model.ts similarity index 74% rename from src/frontend/src/types/conversation-model.ts rename to frontend/src/types/conversation-model.ts index 141d1df..517592b 100644 --- a/src/frontend/src/types/conversation-model.ts +++ b/frontend/src/types/conversation-model.ts @@ -2,8 +2,6 @@ interface ConversationModel { session_id: string; title: string; exchange_count: number; - first_question: string; - last_question: string; created: string; } diff --git a/frontend/src/types/exchange-model.ts b/frontend/src/types/exchange-model.ts new file mode 100644 index 0000000..86c1bde --- /dev/null +++ b/frontend/src/types/exchange-model.ts @@ -0,0 +1,6 @@ +interface ExchangeModel { + question: string; + answer: string; +} + +export { type ExchangeModel }; diff --git a/src/frontend/src/vite-env.d.ts b/frontend/src/vite-env.d.ts similarity index 100% rename from src/frontend/src/vite-env.d.ts rename to frontend/src/vite-env.d.ts diff --git a/src/frontend/tsconfig.app.json b/frontend/tsconfig.app.json similarity index 100% rename from src/frontend/tsconfig.app.json rename to frontend/tsconfig.app.json diff --git a/src/frontend/tsconfig.json b/frontend/tsconfig.json similarity index 100% rename from src/frontend/tsconfig.json rename to frontend/tsconfig.json diff --git a/src/frontend/tsconfig.node.json b/frontend/tsconfig.node.json similarity index 100% rename from src/frontend/tsconfig.node.json rename to frontend/tsconfig.node.json diff --git a/src/frontend/vite.config.ts b/frontend/vite.config.ts similarity index 100% rename from src/frontend/vite.config.ts rename to frontend/vite.config.ts diff --git a/src/llm/.gitignore b/llm/.gitignore similarity index 100% rename from src/llm/.gitignore rename to llm/.gitignore diff --git a/src/llm/ingest.py b/llm/ingest.py similarity index 100% rename from src/llm/ingest.py rename to llm/ingest.py diff --git a/src/llm/main.py b/llm/main.py similarity index 100% rename from src/llm/main.py rename to llm/main.py diff --git a/src/llm/requirements.txt b/llm/requirements.txt similarity index 100% rename from src/llm/requirements.txt rename to llm/requirements.txt diff --git a/src/frontend/src/routes/conversation.$sessionId.tsx b/src/frontend/src/routes/conversation.$sessionId.tsx deleted file mode 100644 index a7ebc0f..0000000 --- a/src/frontend/src/routes/conversation.$sessionId.tsx +++ /dev/null @@ -1,9 +0,0 @@ -import { createFileRoute } from '@tanstack/react-router' - -export const Route = createFileRoute('/conversation/$sessionId')({ - component: RouteComponent, -}) - -function RouteComponent() { - return
Hello "/conversation/$sessionId"!
-}