| import { EModelEndpoint, isAssistantsEndpoint } from 'librechat-data-provider'; | |
| type TUseGenerations = { | |
| error?: boolean; | |
| endpoint?: string; | |
| messageId?: string; | |
| isEditing?: boolean; | |
| isSubmitting: boolean; | |
| searchResult?: boolean; | |
| finish_reason?: string; | |
| latestMessageId?: string; | |
| isCreatedByUser?: boolean; | |
| }; | |
| export default function useGenerationsByLatest({ | |
| error = false, | |
| endpoint, | |
| messageId, | |
| isEditing = false, | |
| isSubmitting, | |
| searchResult = false, | |
| finish_reason = '', | |
| latestMessageId, | |
| isCreatedByUser = false, | |
| }: TUseGenerations) { | |
| const isEditableEndpoint = Boolean( | |
| [ | |
| EModelEndpoint.openAI, | |
| EModelEndpoint.custom, | |
| EModelEndpoint.google, | |
| EModelEndpoint.agents, | |
| EModelEndpoint.bedrock, | |
| EModelEndpoint.anthropic, | |
| EModelEndpoint.gptPlugins, | |
| EModelEndpoint.azureOpenAI, | |
| ].find((e) => e === endpoint), | |
| ); | |
| const continueSupported = | |
| latestMessageId === messageId && | |
| finish_reason && | |
| finish_reason !== 'stop' && | |
| !isEditing && | |
| !searchResult && | |
| isEditableEndpoint; | |
| const branchingSupported = Boolean( | |
| [ | |
| EModelEndpoint.azureOpenAI, | |
| EModelEndpoint.openAI, | |
| EModelEndpoint.custom, | |
| EModelEndpoint.agents, | |
| EModelEndpoint.bedrock, | |
| EModelEndpoint.chatGPTBrowser, | |
| EModelEndpoint.google, | |
| EModelEndpoint.gptPlugins, | |
| EModelEndpoint.anthropic, | |
| ].find((e) => e === endpoint), | |
| ); | |
| const regenerateEnabled = | |
| !isCreatedByUser && !searchResult && !isEditing && !isSubmitting && branchingSupported; | |
| const hideEditButton = | |
| isSubmitting || | |
| error || | |
| searchResult || | |
| !branchingSupported || | |
| (!isEditableEndpoint && !isCreatedByUser); | |
| const forkingSupported = !isAssistantsEndpoint(endpoint) && !searchResult; | |
| return { | |
| forkingSupported, | |
| continueSupported, | |
| regenerateEnabled, | |
| isEditableEndpoint, | |
| hideEditButton, | |
| }; | |
| } | |