mirror of
https://github.com/danny-avila/LibreChat.git
synced 2025-12-19 09:50:15 +01:00
65 lines
1.6 KiB
TypeScript
65 lines
1.6 KiB
TypeScript
|
|
import type { TMessage } from 'librechat-data-provider';
|
||
|
|
import { EModelEndpoint } from 'librechat-data-provider';
|
||
|
|
|
||
|
|
type TUseGenerations = {
|
||
|
|
endpoint?: string;
|
||
|
|
message: TMessage;
|
||
|
|
isSubmitting: boolean;
|
||
|
|
isEditing?: boolean;
|
||
|
|
latestMessage: TMessage | null;
|
||
|
|
};
|
||
|
|
|
||
|
|
export default function useGenerationsByLatest({
|
||
|
|
endpoint,
|
||
|
|
message,
|
||
|
|
isSubmitting,
|
||
|
|
isEditing = false,
|
||
|
|
latestMessage,
|
||
|
|
}: TUseGenerations) {
|
||
|
|
const { error, messageId, searchResult, finish_reason, isCreatedByUser } = message ?? {};
|
||
|
|
const isEditableEndpoint = !![
|
||
|
|
EModelEndpoint.azureOpenAI,
|
||
|
|
EModelEndpoint.openAI,
|
||
|
|
EModelEndpoint.assistant,
|
||
|
|
EModelEndpoint.gptPlugins,
|
||
|
|
EModelEndpoint.anthropic,
|
||
|
|
EModelEndpoint.anthropic,
|
||
|
|
].find((e) => e === endpoint);
|
||
|
|
|
||
|
|
const continueSupported =
|
||
|
|
latestMessage?.messageId === messageId &&
|
||
|
|
finish_reason &&
|
||
|
|
finish_reason !== 'stop' &&
|
||
|
|
!isEditing &&
|
||
|
|
!searchResult &&
|
||
|
|
isEditableEndpoint;
|
||
|
|
|
||
|
|
const branchingSupported =
|
||
|
|
// 5/21/23: Bing is allowing editing and Message regenerating
|
||
|
|
!![
|
||
|
|
EModelEndpoint.azureOpenAI,
|
||
|
|
EModelEndpoint.openAI,
|
||
|
|
EModelEndpoint.chatGPTBrowser,
|
||
|
|
EModelEndpoint.google,
|
||
|
|
EModelEndpoint.bingAI,
|
||
|
|
EModelEndpoint.gptPlugins,
|
||
|
|
EModelEndpoint.anthropic,
|
||
|
|
].find((e) => e === endpoint);
|
||
|
|
|
||
|
|
const regenerateEnabled =
|
||
|
|
!isCreatedByUser && !searchResult && !isEditing && !isSubmitting && branchingSupported;
|
||
|
|
|
||
|
|
const hideEditButton =
|
||
|
|
isSubmitting ||
|
||
|
|
error ||
|
||
|
|
searchResult ||
|
||
|
|
!branchingSupported ||
|
||
|
|
(!isEditableEndpoint && !isCreatedByUser);
|
||
|
|
|
||
|
|
return {
|
||
|
|
continueSupported,
|
||
|
|
regenerateEnabled,
|
||
|
|
hideEditButton,
|
||
|
|
};
|
||
|
|
}
|