| | import { EToolResources } from 'librechat-data-provider'; |
| | import type { AgentToolResources, TFile } from 'librechat-data-provider'; |
| |
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | export function convertOcrToContextInPlace(data: { |
| | tool_resources?: AgentToolResources; |
| | tools?: string[]; |
| | }): void { |
| | |
| | if (data.tool_resources?.ocr) { |
| | if (!data.tool_resources.context) { |
| | data.tool_resources.context = data.tool_resources.ocr; |
| | } else { |
| | |
| | if (data.tool_resources.ocr?.file_ids?.length) { |
| | const existingFileIds = data.tool_resources.context.file_ids || []; |
| | const ocrFileIds = data.tool_resources.ocr.file_ids || []; |
| | data.tool_resources.context.file_ids = [...new Set([...existingFileIds, ...ocrFileIds])]; |
| | } |
| | if (data.tool_resources.ocr?.files?.length) { |
| | const existingFiles = data.tool_resources.context.files || []; |
| | const ocrFiles = data.tool_resources.ocr.files || []; |
| | const filesMap = new Map<string, TFile>(); |
| | [...existingFiles, ...ocrFiles].forEach((file) => { |
| | if (file?.file_id) { |
| | filesMap.set(file.file_id, file); |
| | } |
| | }); |
| | data.tool_resources.context.files = Array.from(filesMap.values()); |
| | } |
| | } |
| | delete data.tool_resources.ocr; |
| | } |
| |
|
| | |
| | if (data.tools?.includes(EToolResources.ocr)) { |
| | data.tools = data.tools.map((tool) => |
| | tool === EToolResources.ocr ? EToolResources.context : tool, |
| | ); |
| | data.tools = [...new Set(data.tools)]; |
| | } |
| | } |
| |
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | export function mergeAgentOcrConversion( |
| | existingAgent: { tool_resources?: AgentToolResources; tools?: string[] }, |
| | updateData: { tool_resources?: AgentToolResources; tools?: string[] }, |
| | ): { tool_resources?: AgentToolResources; tools?: string[] } { |
| | if (!existingAgent.tool_resources?.ocr) { |
| | return {}; |
| | } |
| |
|
| | const result: { tool_resources?: AgentToolResources; tools?: string[] } = {}; |
| |
|
| | |
| | result.tool_resources = { ...existingAgent.tool_resources }; |
| |
|
| | if (!result.tool_resources.context) { |
| | |
| | result.tool_resources.context = result.tool_resources.ocr; |
| | } else { |
| | |
| |
|
| | |
| | if (result.tool_resources.ocr?.file_ids?.length) { |
| | const existingFileIds = result.tool_resources.context.file_ids || []; |
| | const ocrFileIds = result.tool_resources.ocr.file_ids || []; |
| | result.tool_resources.context.file_ids = [...new Set([...existingFileIds, ...ocrFileIds])]; |
| | } |
| |
|
| | |
| | if (result.tool_resources.ocr?.files?.length) { |
| | const existingFiles = result.tool_resources.context.files || []; |
| | const ocrFiles = result.tool_resources.ocr?.files || []; |
| | |
| | const filesMap = new Map<string, TFile>(); |
| | [...existingFiles, ...ocrFiles].forEach((file) => { |
| | if (file?.file_id) { |
| | filesMap.set(file.file_id, file); |
| | } |
| | }); |
| | result.tool_resources.context.files = Array.from(filesMap.values()); |
| | } |
| | } |
| |
|
| | |
| | delete result.tool_resources.ocr; |
| |
|
| | |
| | if (existingAgent.tools?.includes(EToolResources.ocr)) { |
| | result.tools = existingAgent.tools.map((tool) => |
| | tool === EToolResources.ocr ? EToolResources.context : tool, |
| | ); |
| | |
| | result.tools = [...new Set(result.tools)]; |
| | } |
| |
|
| | |
| | if (updateData.tool_resources?.context && result.tool_resources.context) { |
| | |
| | const mergedContext = { ...result.tool_resources.context }; |
| |
|
| | |
| | if (updateData.tool_resources.context.file_ids?.length) { |
| | const existingIds = mergedContext.file_ids || []; |
| | const newIds = updateData.tool_resources.context.file_ids || []; |
| | mergedContext.file_ids = [...new Set([...existingIds, ...newIds])]; |
| | } |
| |
|
| | |
| | if (updateData.tool_resources.context.files?.length) { |
| | const existingFiles = mergedContext.files || []; |
| | const newFiles = updateData.tool_resources.context.files || []; |
| | const filesMap = new Map<string, TFile>(); |
| | [...existingFiles, ...newFiles].forEach((file) => { |
| | if (file?.file_id) { |
| | filesMap.set(file.file_id, file); |
| | } |
| | }); |
| | mergedContext.files = Array.from(filesMap.values()); |
| | } |
| |
|
| | result.tool_resources.context = mergedContext; |
| | } |
| |
|
| | return result; |
| | } |
| |
|