| import type { |
| TPreset, |
| TConversation, |
| EModelEndpoint, |
| TEndpointsConfig, |
| } from 'librechat-data-provider'; |
| import { getLocalStorageItems } from './localStorage'; |
| import { mapEndpoints } from './endpoints'; |
|
|
| type TConvoSetup = Partial<TPreset> | Partial<TConversation>; |
|
|
| type TDefaultEndpoint = { convoSetup: TConvoSetup; endpointsConfig: TEndpointsConfig }; |
|
|
| const getEndpointFromSetup = ( |
| convoSetup: TConvoSetup | null, |
| endpointsConfig: TEndpointsConfig, |
| ): EModelEndpoint | null => { |
| let { endpoint: targetEndpoint = '' } = convoSetup || {}; |
| targetEndpoint = targetEndpoint ?? ''; |
| if (targetEndpoint && endpointsConfig?.[targetEndpoint]) { |
| return targetEndpoint as EModelEndpoint; |
| } else if (targetEndpoint) { |
| console.warn(`Illegal target endpoint ${targetEndpoint}`, endpointsConfig); |
| } |
| return null; |
| }; |
|
|
| const getEndpointFromLocalStorage = (endpointsConfig: TEndpointsConfig) => { |
| try { |
| const { lastConversationSetup } = getLocalStorageItems(); |
| const { endpoint } = lastConversationSetup ?? { endpoint: null }; |
| const isDefaultConfig = Object.values(endpointsConfig ?? {}).every((value) => !value); |
|
|
| if (isDefaultConfig && endpoint) { |
| return endpoint; |
| } |
|
|
| if (isDefaultConfig && endpoint) { |
| return endpoint; |
| } |
|
|
| return endpoint && endpointsConfig?.[endpoint] != null ? endpoint : null; |
| } catch (error) { |
| console.error(error); |
| return null; |
| } |
| }; |
|
|
| const getDefinedEndpoint = (endpointsConfig: TEndpointsConfig) => { |
| const endpoints = mapEndpoints(endpointsConfig); |
| return endpoints.find((e) => Object.hasOwn(endpointsConfig ?? {}, e)); |
| }; |
|
|
| const getDefaultEndpoint = ({ |
| convoSetup, |
| endpointsConfig, |
| }: TDefaultEndpoint): EModelEndpoint | undefined => { |
| return ( |
| getEndpointFromSetup(convoSetup, endpointsConfig) || |
| getEndpointFromLocalStorage(endpointsConfig) || |
| getDefinedEndpoint(endpointsConfig) |
| ); |
| }; |
|
|
| export default getDefaultEndpoint; |
|
|