Hide empty assistant messages until content arrives

This commit is contained in:
Shantur Rathore
2025-10-30 14:47:51 +00:00
parent 7e25f20e74
commit fb85fcb3f3

View File

@@ -294,42 +294,50 @@ export default function MessageStream(props: MessageStreamProps) {
const version = message.version ?? 0 const version = message.version ?? 0
const isQueued = message.type === "user" && (lastAssistantIndex === -1 || index > lastAssistantIndex) const isQueued = message.type === "user" && (lastAssistantIndex === -1 || index > lastAssistantIndex)
const cacheEntry = messageItemCache.get(message.id) const hasRenderableContent =
if ( message.type !== "assistant" ||
cacheEntry && combinedParts.length > 0 ||
cacheEntry.version === version && Boolean(messageInfo?.error) ||
cacheEntry.showThinking === showThinking && message.status === "error"
cacheEntry.isQueued === isQueued &&
cacheEntry.messageInfo === messageInfo if (hasRenderableContent) {
) { const cacheEntry = messageItemCache.get(message.id)
cacheEntry.displayParts = displayParts if (
cacheEntry.version = version cacheEntry &&
cacheEntry.showThinking = showThinking cacheEntry.version === version &&
cacheEntry.isQueued = isQueued cacheEntry.showThinking === showThinking &&
cacheEntry.messageInfo = messageInfo cacheEntry.isQueued === isQueued &&
cacheEntry.item.message = message cacheEntry.messageInfo === messageInfo
cacheEntry.item.combinedParts = combinedParts ) {
cacheEntry.item.isQueued = isQueued cacheEntry.displayParts = displayParts
cacheEntry.item.messageInfo = messageInfo cacheEntry.version = version
newMessageCache.set(message.id, cacheEntry) cacheEntry.showThinking = showThinking
items.push(cacheEntry.item) cacheEntry.isQueued = isQueued
} else { cacheEntry.messageInfo = messageInfo
const messageItem: MessageDisplayItem = { cacheEntry.item.message = message
type: "message", cacheEntry.item.combinedParts = combinedParts
message, cacheEntry.item.isQueued = isQueued
combinedParts, cacheEntry.item.messageInfo = messageInfo
isQueued, newMessageCache.set(message.id, cacheEntry)
messageInfo, items.push(cacheEntry.item)
} else {
const messageItem: MessageDisplayItem = {
type: "message",
message,
combinedParts,
isQueued,
messageInfo,
}
newMessageCache.set(message.id, {
version,
showThinking,
isQueued,
messageInfo,
displayParts,
item: messageItem,
})
items.push(messageItem)
} }
newMessageCache.set(message.id, {
version,
showThinking,
isQueued,
messageInfo,
displayParts,
item: messageItem,
})
items.push(messageItem)
} }
for (let toolIndex = 0; toolIndex < displayParts.tool.length; toolIndex++) { for (let toolIndex = 0; toolIndex < displayParts.tool.length; toolIndex++) {