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