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 ( -
Select a session or start a new chat
+Select a session or start a new chat
+ +
Enter to send · Shift+Enter for new line
No session selected
+No session selected
)} {/* Last response stats */}No response yet
+No response yet
)}- {title} -
+{title}
{children}