fix(cli): remove side-effect from agent:end state updater (#133) #147

Merged
jason.woltje merged 3 commits from fix/tui-agent-end-state into main 2026-03-15 19:09:14 +00:00
Showing only changes of commit 5a64b90910 - Show all commits

View File

@@ -52,6 +52,7 @@ export function TuiApp({
const [availableModels, setAvailableModels] = useState<ModelInfo[]>([]); const [availableModels, setAvailableModels] = useState<ModelInfo[]>([]);
const socketRef = useRef<Socket | null>(null); const socketRef = useRef<Socket | null>(null);
const currentStreamTextRef = useRef('');
// Fetch available models on mount // Fetch available models on mount
useEffect(() => { useEffect(() => {
@@ -102,20 +103,22 @@ export function TuiApp({
socket.on('agent:start', () => { socket.on('agent:start', () => {
setIsStreaming(true); setIsStreaming(true);
currentStreamTextRef.current = '';
setCurrentStreamText(''); setCurrentStreamText('');
}); });
socket.on('agent:text', (data: { text: string }) => { socket.on('agent:text', (data: { text: string }) => {
setCurrentStreamText((prev) => prev + data.text); currentStreamTextRef.current += data.text;
setCurrentStreamText(currentStreamTextRef.current);
}); });
socket.on('agent:end', () => { socket.on('agent:end', () => {
setCurrentStreamText((prev) => { const finalText = currentStreamTextRef.current;
if (prev) { currentStreamTextRef.current = '';
setMessages((msgs) => [...msgs, { role: 'assistant', content: prev }]); setCurrentStreamText('');
if (finalText) {
setMessages((msgs) => [...msgs, { role: 'assistant', content: finalText }]);
} }
return '';
});
setIsStreaming(false); setIsStreaming(false);
}); });