perf(ui): convert message pairing to O(n) forward pass in chain-of-thought (#846)

This commit is contained in:
Ishaan Gupta 2026-04-13 04:08:07 +05:30 committed by GitHub
parent 13bee90bd8
commit 5051658b85
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -23,18 +23,24 @@ export function ChainOfThought({ messages }: { messages: UIMessage[] }) {
agentMessage?: UIMessage
}> = []
let lastUserPair: {
userMessage: UIMessage
agentMessage?: UIMessage
} | null = null
for (let i = 0; i < messages.length; i++) {
const message = messages[i]
if (!message) continue
if (message.role === "user") {
// Find the next assistant message after this user message
const agentMessage = messages
.slice(i + 1)
.find((msg) => msg.role === "assistant")
messagePairs.push({
userMessage: message,
agentMessage,
})
lastUserPair = { userMessage: message }
messagePairs.push(lastUserPair)
} else if (
message.role === "assistant" &&
lastUserPair &&
!lastUserPair.agentMessage
) {
lastUserPair.agentMessage = message
}
}