|
import { parseConvo } from 'librechat-data-provider'; |
|
import getLocalStorageItems from './getLocalStorageItems'; |
|
import type { TConversation, EModelEndpoint } from 'librechat-data-provider'; |
|
|
|
const buildDefaultConvo = ({ |
|
conversation, |
|
endpoint, |
|
models, |
|
lastConversationSetup, |
|
}: { |
|
conversation: TConversation; |
|
endpoint: EModelEndpoint; |
|
models: string[]; |
|
lastConversationSetup: TConversation; |
|
}) => { |
|
const { lastSelectedModel, lastSelectedTools, lastBingSettings } = getLocalStorageItems(); |
|
const { jailbreak, toneStyle } = lastBingSettings; |
|
|
|
if (!endpoint) { |
|
return { |
|
...conversation, |
|
endpoint, |
|
}; |
|
} |
|
|
|
const availableModels = models; |
|
const model = lastConversationSetup?.model ?? lastSelectedModel?.[endpoint]; |
|
const secondaryModel = |
|
endpoint === 'gptPlugins' |
|
? lastConversationSetup?.agentOptions?.model ?? lastSelectedModel?.secondaryModel |
|
: null; |
|
|
|
let possibleModels: string[], secondaryModels: string[]; |
|
|
|
if (availableModels.includes(model)) { |
|
possibleModels = [model, ...availableModels]; |
|
} else { |
|
possibleModels = [...availableModels]; |
|
} |
|
|
|
if (secondaryModel && availableModels.includes(secondaryModel)) { |
|
secondaryModels = [secondaryModel, ...availableModels]; |
|
} else { |
|
secondaryModels = [...availableModels]; |
|
} |
|
|
|
const convo = parseConvo(endpoint, lastConversationSetup, { |
|
models: possibleModels, |
|
secondaryModels, |
|
}); |
|
const defaultConvo = { |
|
...conversation, |
|
...convo, |
|
endpoint, |
|
}; |
|
|
|
defaultConvo.tools = lastSelectedTools ?? defaultConvo.tools; |
|
defaultConvo.jailbreak = jailbreak ?? defaultConvo.jailbreak; |
|
defaultConvo.toneStyle = toneStyle ?? defaultConvo.toneStyle; |
|
|
|
return defaultConvo; |
|
}; |
|
|
|
export default buildDefaultConvo; |
|
|