conversational-assistant/components/assistant.tsx (35 lines of code) (raw):

'use client' import React from 'react' import Chat from './chat' import useConversationStore from '@/stores/useConversationStore' import { Item, processMessages } from '@/lib/assistant' import { ChatCompletionMessageParam } from 'openai/resources/chat/completions' const Assistant: React.FC = () => { const { chatMessages, addConversationItem, addChatMessage } = useConversationStore() const handleSendMessage = async (message: string) => { if (!message.trim()) return const userItem: Item = { type: 'message', role: 'user', content: message.trim() } const userMessage: ChatCompletionMessageParam = { role: 'user', content: message.trim() } try { addConversationItem(userMessage) addChatMessage(userItem) await processMessages() } catch (error) { console.error('Error processing message:', error) } } return ( <div className="h-full p-4 w-full rounded-t-2xl shadow-lg bg-gray-100"> <Chat items={chatMessages} onSendMessage={handleSendMessage} /> </div> ) } export default Assistant