UNPKG

terminal-chat-ui

Version:

Shared UI components for terminal-based chat interfaces using Theater actors

43 lines (42 loc) 1.32 kB
/** * useMessageState - simplified message state management */ import { useState, useCallback } from 'react'; /** * Simplified hook for managing message state in Theater chat interfaces */ export function useMessageState() { const [messages, setMessages] = useState([]); // Add a new message - simple append const addMessage = useCallback((role, content, toolName, toolArgs) => { const newMessage = { role, content, timestamp: new Date(), status: 'complete', // All messages are complete when added ...(toolName && { toolName }), ...(toolArgs && { toolArgs }) }; setMessages(prev => [...prev, newMessage]); }, []); // Add a tool message const addToolMessage = useCallback((toolName, toolArgs = []) => { addMessage('tool', '', toolName, toolArgs); }, [addMessage]); // Clear all messages const clearMessages = useCallback(() => { setMessages([]); }, []); // Remove a specific message const removeMessage = useCallback((index) => { setMessages(prev => prev.filter((_, i) => i !== index)); }, []); return { messages, addMessage, addToolMessage, clearMessages, removeMessage, setMessages }; }