| 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, |
| }; |
| } |
|
|