From 5c6e027fc14955b676e3efb36943ceb21dd982e2 Mon Sep 17 00:00:00 2001 From: Storme-bit Date: Thu, 9 Apr 2026 04:13:21 -0700 Subject: [PATCH] chat client clean up and switch to llama.cpp with models folder network sharing --- packages/chat-client/src/App.jsx | 4 +- packages/chat-client/src/api/orchestration.js | 6 + .../chat-client/src/components/ChatWindow.jsx | 81 +++-------- .../chat-client/src/components/InfoPanel.jsx | 85 +++-------- .../src/components/MessageBubble.jsx | 17 +-- .../src/components/SessionList.jsx | 84 ++--------- packages/chat-client/src/config/constants.js | 2 +- packages/chat-client/src/hooks/useModels.js | 24 ++++ packages/chat-client/src/index.css | 84 ++++++++++- .../src/providers/llamacpp.js | 136 ++++++++++-------- .../inference-service/src/routes/inference.js | 28 ++-- .../orchestration-service/src/chat/index.js | 24 ++-- packages/orchestration-service/src/index.js | 2 + .../orchestration-service/src/routes/chat.js | 12 +- .../src/routes/models.js | 21 +++ 15 files changed, 305 insertions(+), 305 deletions(-) create mode 100644 packages/chat-client/src/hooks/useModels.js create mode 100644 packages/orchestration-service/src/routes/models.js diff --git a/packages/chat-client/src/App.jsx b/packages/chat-client/src/App.jsx index 2e267fc..912a879 100644 --- a/packages/chat-client/src/App.jsx +++ b/packages/chat-client/src/App.jsx @@ -10,7 +10,7 @@ import { DEFAULT_MODEL } from './config/constants'; export default function App() { const [leftOpen, setLeftOpen] = useState(true); const [rightOpen, setRightOpen] = useState(true); - const [selectedModel, setSelectedModel] = useState(DEFAULT_MODEL); + const { models, selectedModel, setSelectedModel } = useModels(); const { sessions, @@ -64,10 +64,12 @@ export default function App() { isOpen={rightOpen} onToggle={() => setRightOpen(o => !o)} activeSession={activeSession} + models={models} selectedModel={selectedModel} onModelChange={setSelectedModel} lastModel={lastModel} lastTokenCount={lastTokenCount} + /> ); diff --git a/packages/chat-client/src/api/orchestration.js b/packages/chat-client/src/api/orchestration.js index 4876111..bc13e8b 100644 --- a/packages/chat-client/src/api/orchestration.js +++ b/packages/chat-client/src/api/orchestration.js @@ -79,4 +79,10 @@ export function streamMessage(sessionId, message, model, { onChunk, onDone, onEr })(); return () => controller.abort(); +} + +export async function fetchModels() { + const res = await fetch(`{BASE_URL}/models`); + if(!res.ok) throw new Error(`Failted to fetch models: ${res.status}`); + return res.json(); } \ No newline at end of file diff --git a/packages/chat-client/src/components/ChatWindow.jsx b/packages/chat-client/src/components/ChatWindow.jsx index 814e297..010e40f 100644 --- a/packages/chat-client/src/components/ChatWindow.jsx +++ b/packages/chat-client/src/components/ChatWindow.jsx @@ -6,7 +6,6 @@ export default function ChatWindow({ messages, loadingHistory, streaming, onSend const inputRef = useRef(null); const [input, setInput] = React.useState(''); - // Auto-scroll to bottom when messages change useEffect(() => { bottomRef.current?.scrollIntoView({ behavior: 'smooth' }); }, [messages]); @@ -26,58 +25,30 @@ export default function ChatWindow({ messages, loadingHistory, streaming, onSend } return ( -
+
{/* Header */} -
- +
+ {activeSession ? activeSession.external_id : 'No session selected'}
{/* Message thread */} -
+
{!activeSession && ( -
-

Select a session or start a new chat

+

Select a session or start a new chat

)} {loadingHistory && ( -
+
Loading history...
)} @@ -96,13 +67,11 @@ export default function ChatWindow({ messages, loadingHistory, streaming, onSend background: 'var(--bg-surface)', flexShrink: 0, }}> -