| | import { |
| | parseConvo, |
| | EModelEndpoint, |
| | isAssistantsEndpoint, |
| | isAgentsEndpoint, |
| | } from 'librechat-data-provider'; |
| | import type { TConversation, EndpointSchemaKey } from 'librechat-data-provider'; |
| | import { getLocalStorageItems } from './localStorage'; |
| |
|
| | const buildDefaultConvo = ({ |
| | models, |
| | conversation, |
| | endpoint = null, |
| | lastConversationSetup, |
| | }: { |
| | models: string[]; |
| | conversation: TConversation; |
| | endpoint?: EModelEndpoint | null; |
| | lastConversationSetup: TConversation | null; |
| | }): TConversation => { |
| | const { lastSelectedModel, lastSelectedTools } = getLocalStorageItems(); |
| | const endpointType = lastConversationSetup?.endpointType ?? conversation.endpointType; |
| |
|
| | if (!endpoint) { |
| | return { |
| | ...conversation, |
| | endpointType, |
| | endpoint, |
| | }; |
| | } |
| |
|
| | const availableModels = models; |
| | const model = lastConversationSetup?.model ?? lastSelectedModel?.[endpoint] ?? ''; |
| | const secondaryModel: string | null = |
| | endpoint === EModelEndpoint.gptPlugins |
| | ? (lastConversationSetup?.agentOptions?.model ?? lastSelectedModel?.secondaryModel ?? null) |
| | : null; |
| |
|
| | let possibleModels: string[], secondaryModels: string[]; |
| |
|
| | if (availableModels.includes(model)) { |
| | possibleModels = [model, ...availableModels]; |
| | } else { |
| | possibleModels = [...availableModels]; |
| | } |
| |
|
| | if (secondaryModel != null && secondaryModel !== '' && availableModels.includes(secondaryModel)) { |
| | secondaryModels = [secondaryModel, ...availableModels]; |
| | } else { |
| | secondaryModels = [...availableModels]; |
| | } |
| |
|
| | const convo = parseConvo({ |
| | endpoint: endpoint as EndpointSchemaKey, |
| | endpointType: endpointType as EndpointSchemaKey, |
| | conversation: lastConversationSetup, |
| | possibleValues: { |
| | models: possibleModels, |
| | secondaryModels, |
| | }, |
| | }); |
| |
|
| | const defaultConvo = { |
| | ...conversation, |
| | ...convo, |
| | endpointType, |
| | endpoint, |
| | }; |
| |
|
| | |
| | const assistantId = convo?.assistant_id ?? conversation?.assistant_id ?? ''; |
| | const defaultAssistantId = lastConversationSetup?.assistant_id ?? ''; |
| | if (isAssistantsEndpoint(endpoint) && !defaultAssistantId && assistantId) { |
| | defaultConvo.assistant_id = assistantId; |
| | } |
| |
|
| | |
| | const agentId = convo?.agent_id ?? ''; |
| | const defaultAgentId = lastConversationSetup?.agent_id ?? ''; |
| | if (isAgentsEndpoint(endpoint) && !defaultAgentId && agentId) { |
| | defaultConvo.agent_id = agentId; |
| | } |
| |
|
| | defaultConvo.tools = lastConversationSetup?.tools ?? lastSelectedTools ?? defaultConvo.tools; |
| |
|
| | return defaultConvo; |
| | }; |
| |
|
| | export default buildDefaultConvo; |
| |
|