Files
bolt.diy/app/utils/chat/messageUtils.ts

50 lines
1.2 KiB
TypeScript

import { assert } from '~/lib/replay/ReplayProtocolClient';
import type { Message } from '~/lib/persistence/message';
let gLastChatMessages: Message[] | undefined;
export function getLastChatMessages() {
return gLastChatMessages;
}
export function setLastChatMessages(messages: Message[] | undefined) {
gLastChatMessages = messages;
}
export function mergeResponseMessage(msg: Message, messages: Message[]): Message[] {
const lastMessage = messages[messages.length - 1];
if (lastMessage.id == msg.id) {
messages.pop();
assert(lastMessage.type == 'text', 'Last message must be a text message');
assert(msg.type == 'text', 'Message must be a text message');
messages.push({
...msg,
content: lastMessage.content + msg.content,
});
} else {
messages.push(msg);
}
return messages;
}
export function getRewindMessageIndexAfterReject(messages: Message[], messageId: string): number {
for (let i = messages.length - 1; i >= 0; i--) {
const { id, role, repositoryId } = messages[i];
if (role == 'user') {
return i;
}
if (repositoryId && id != messageId) {
return i;
}
}
console.error('No rewind message found', messages, messageId);
return -1;
}