improve regeneration state

This commit is contained in:
pablodanswer
2025-01-28 11:42:11 -08:00
committed by Evan Lohn
parent f842e15d64
commit 568f927b9b

View File

@@ -115,11 +115,12 @@ import {
CHROME_MESSAGE, CHROME_MESSAGE,
SUBMIT_MESSAGE_TYPES, SUBMIT_MESSAGE_TYPES,
} from "@/lib/extension/constants"; } from "@/lib/extension/constants";
import AssistantModal from "../assistants/mine/AssistantModal";
import { getSourceMetadata } from "@/lib/sources"; import { getSourceMetadata } from "@/lib/sources";
import { UserSettingsModal } from "./modal/UserSettingsModal"; import { UserSettingsModal } from "./modal/UserSettingsModal";
import { AlignStartVertical } from "lucide-react"; import { AlignStartVertical } from "lucide-react";
import { AgenticMessage } from "./message/AgenticMessage"; import { AgenticMessage } from "./message/AgenticMessage";
import AssistantModal from "../assistants/mine/AssistantModal";
const TEMP_USER_MESSAGE_ID = -1; const TEMP_USER_MESSAGE_ID = -1;
const TEMP_ASSISTANT_MESSAGE_ID = -2; const TEMP_ASSISTANT_MESSAGE_ID = -2;
@@ -730,10 +731,20 @@ export function ChatPage({
newState: RegenerationState | null, newState: RegenerationState | null,
sessionId?: string | null sessionId?: string | null
) => { ) => {
const newRegenerationState = new Map(regenerationState);
newRegenerationState.set(
sessionId !== undefined && sessionId != null
? sessionId
: currentSessionId(),
newState
);
setRegenerationState((prevState) => { setRegenerationState((prevState) => {
const newRegenerationState = new Map(prevState); const newRegenerationState = new Map(prevState);
newRegenerationState.set( newRegenerationState.set(
sessionId !== undefined ? sessionId : currentSessionId(), sessionId !== undefined && sessionId != null
? sessionId
: currentSessionId(),
newState newState
); );
return newRegenerationState; return newRegenerationState;
@@ -747,6 +758,7 @@ export function ChatPage({
const currentRegenerationState = (): RegenerationState | null => { const currentRegenerationState = (): RegenerationState | null => {
return regenerationState.get(currentSessionId()) || null; return regenerationState.get(currentSessionId()) || null;
}; };
const [canContinue, setCanContinue] = useState<Map<string | null, boolean>>( const [canContinue, setCanContinue] = useState<Map<string | null, boolean>>(
new Map([[null, false]]) new Map([[null, false]])
); );
@@ -1172,12 +1184,12 @@ export function ChatPage({
const messageToResend = messageHistory.find( const messageToResend = messageHistory.find(
(message) => message.messageId === messageIdToResend (message) => message.messageId === messageIdToResend
); );
if (messageIdToResend) {
updateRegenerationState( updateRegenerationState(
regenerationRequest { regenerating: true, finalMessageIndex: messageIdToResend },
? { regenerating: true, finalMessageIndex: messageIdToResend || 0 } currentSessionId()
: null );
); }
const messageMap = currentMessageMap(completeMessageDetail); const messageMap = currentMessageMap(completeMessageDetail);
const messageToResendParent = const messageToResendParent =
messageToResend?.parentMessageId !== null && messageToResend?.parentMessageId !== null &&
@@ -2494,6 +2506,15 @@ export function ChatPage({
const messageMap = currentMessageMap( const messageMap = currentMessageMap(
completeMessageDetail completeMessageDetail
); );
if (
currentRegenerationState()?.finalMessageIndex &&
currentRegenerationState()?.finalMessageIndex! <
message.messageId
) {
return <></>;
}
const messageReactComponentKey = `${i}-${currentSessionId()}`; const messageReactComponentKey = `${i}-${currentSessionId()}`;
const parentMessage = message.parentMessageId const parentMessage = message.parentMessageId
? messageMap.get(message.parentMessageId) ? messageMap.get(message.parentMessageId)
@@ -2515,7 +2536,13 @@ export function ChatPage({
> >
<HumanMessage <HumanMessage
stopGenerating={stopGenerating} stopGenerating={stopGenerating}
content={message.message} content={
message.message +
`final message index is ${
currentRegenerationState()
?.finalMessageIndex
}`
}
files={message.files} files={message.files}
messageId={message.messageId} messageId={message.messageId}
onEdit={(editedContent) => { onEdit={(editedContent) => {