Alexhancock/reapply 3491 (#3515)

rust failures are not related
This commit is contained in:
Max Novich
2025-07-18 10:58:45 -07:00
committed by GitHub
parent d9b3418d35
commit 78f0711ea6
3 changed files with 5 additions and 45 deletions

View File

@@ -62,6 +62,8 @@ export default function ProgressiveMessageList({
const [isLoading, setIsLoading] = useState(() => messages.length > showLoadingThreshold);
const timeoutRef = useRef<number | null>(null);
const mountedRef = useRef(true);
const hasOnlyToolResponses = (message: Message) =>
message.content.every((c) => c.type === 'toolResponse');
// Try to use context manager, but don't require it for session history
let hasContextHandlerContent: ((message: Message) => boolean) | undefined;
@@ -199,7 +201,7 @@ export default function ProgressiveMessageList({
}}
/>
) : (
<UserMessage message={message} />
!hasOnlyToolResponses(message) && <UserMessage message={message} />
)}
</>
) : (

View File

@@ -43,29 +43,8 @@ const isUserMessage = (message: Message): boolean => {
return true;
};
// Filter messages for display (same logic as useChatEngine)
const filterMessagesForDisplay = (messages: Message[]): Message[] => {
return messages.filter((message) => {
// Only filter out when display is explicitly false
if (message.display === false) return false;
// Keep all assistant messages and user messages that aren't just tool responses
if (message.role === 'assistant') return true;
// For user messages, check if they're only tool responses
if (message.role === 'user') {
const hasOnlyToolResponses = message.content.every((c) => c.type === 'toolResponse');
const hasTextContent = message.content.some((c) => c.type === 'text');
const hasToolConfirmation = message.content.every(
(c) => c.type === 'toolConfirmationRequest'
);
// Keep the message if it has text content or tool confirmation or is not just tool responses
return hasTextContent || !hasOnlyToolResponses || hasToolConfirmation;
}
return true;
});
return messages.filter((message) => message.display ?? true);
};
interface SessionHistoryViewProps {

View File

@@ -326,29 +326,8 @@ export const useChatEngine = ({
}
}, [stop, messages, _setInput, setMessages]);
// Filter out standalone tool response messages for rendering
const filteredMessages = useMemo(() => {
return [...ancestorMessages, ...messages].filter((message) => {
// Only filter out when display is explicitly false
if (message.display === false) return false;
// Keep all assistant messages and user messages that aren't just tool responses
if (message.role === 'assistant') return true;
// For user messages, check if they're only tool responses
if (message.role === 'user') {
const hasOnlyToolResponses = message.content.every((c) => c.type === 'toolResponse');
const hasTextContent = message.content.some((c) => c.type === 'text');
const hasToolConfirmation = message.content.every(
(c) => c.type === 'toolConfirmationRequest'
);
// Keep the message if it has text content or tool confirmation or is not just tool responses
return hasTextContent || !hasOnlyToolResponses || hasToolConfirmation;
}
return true;
});
return [...ancestorMessages, ...messages].filter((message) => message.display ?? true);
}, [ancestorMessages, messages]);
// Generate command history from filtered messages