| import type { TFile, Assistant, TPlugin } from 'librechat-data-provider'; |
| import type { TPluginMap } from '~/common'; |
|
|
| |
| export function mapFiles(files: TFile[]) { |
| const fileMap = {} as Record<string, TFile>; |
|
|
| for (const file of files) { |
| fileMap[file.file_id] = file; |
| } |
|
|
| return fileMap; |
| } |
|
|
| |
| export function mapAssistants(assistants: Assistant[]) { |
| const assistantMap = {} as Record<string, Assistant>; |
|
|
| for (const assistant of assistants) { |
| assistantMap[assistant.id] = assistant; |
| } |
|
|
| return assistantMap; |
| } |
|
|
| |
| export function mapPlugins(plugins: TPlugin[]): TPluginMap { |
| return plugins.reduce((acc, plugin) => { |
| acc[plugin.pluginKey] = plugin; |
| return acc; |
| }, {} as TPluginMap); |
| } |
|
|
| |
| export const selectPlugins = ( |
| data: TPlugin[] | undefined, |
| ): { |
| list: TPlugin[]; |
| map: TPluginMap; |
| } => { |
| if (!data) { |
| return { |
| list: [], |
| map: {}, |
| }; |
| } |
|
|
| return { |
| list: data, |
| map: mapPlugins(data), |
| }; |
| }; |
|
|
| |
| export function processPlugins(tools: (string | TPlugin)[], allPlugins?: TPluginMap): TPlugin[] { |
| return tools |
| .map((tool: string | TPlugin) => { |
| if (typeof tool === 'string') { |
| return allPlugins?.[tool]; |
| } |
| return tool; |
| }) |
| .filter((tool: TPlugin | undefined): tool is TPlugin => tool !== undefined); |
| } |
|
|