| const { FileSources } = require('librechat-data-provider'); |
| const { |
| uploadMistralOCR, |
| uploadAzureMistralOCR, |
| uploadGoogleVertexMistralOCR, |
| } = require('@librechat/api'); |
| const { |
| getFirebaseURL, |
| prepareImageURL, |
| saveURLToFirebase, |
| deleteFirebaseFile, |
| saveBufferToFirebase, |
| uploadFileToFirebase, |
| uploadImageToFirebase, |
| processFirebaseAvatar, |
| getFirebaseFileStream, |
| } = require('./Firebase'); |
| const { |
| uploadLocalFile, |
| getLocalFileURL, |
| saveFileFromURL, |
| saveLocalBuffer, |
| deleteLocalFile, |
| uploadLocalImage, |
| prepareImagesLocal, |
| processLocalAvatar, |
| getLocalFileStream, |
| } = require('./Local'); |
| const { |
| getS3URL, |
| saveURLToS3, |
| saveBufferToS3, |
| getS3FileStream, |
| uploadImageToS3, |
| prepareImageURLS3, |
| deleteFileFromS3, |
| processS3Avatar, |
| uploadFileToS3, |
| } = require('./S3'); |
| const { |
| saveBufferToAzure, |
| saveURLToAzure, |
| getAzureURL, |
| deleteFileFromAzure, |
| uploadFileToAzure, |
| getAzureFileStream, |
| uploadImageToAzure, |
| prepareAzureImageURL, |
| processAzureAvatar, |
| } = require('./Azure'); |
| const { uploadOpenAIFile, deleteOpenAIFile, getOpenAIFileStream } = require('./OpenAI'); |
| const { getCodeOutputDownloadStream, uploadCodeEnvFile } = require('./Code'); |
| const { uploadVectors, deleteVectors } = require('./VectorDB'); |
|
|
| |
| |
| |
| |
| const firebaseStrategy = () => ({ |
| handleFileUpload: uploadFileToFirebase, |
| saveURL: saveURLToFirebase, |
| getFileURL: getFirebaseURL, |
| deleteFile: deleteFirebaseFile, |
| saveBuffer: saveBufferToFirebase, |
| prepareImagePayload: prepareImageURL, |
| processAvatar: processFirebaseAvatar, |
| handleImageUpload: uploadImageToFirebase, |
| getDownloadStream: getFirebaseFileStream, |
| }); |
|
|
| |
| |
| |
| |
| const localStrategy = () => ({ |
| handleFileUpload: uploadLocalFile, |
| saveURL: saveFileFromURL, |
| getFileURL: getLocalFileURL, |
| saveBuffer: saveLocalBuffer, |
| deleteFile: deleteLocalFile, |
| processAvatar: processLocalAvatar, |
| handleImageUpload: uploadLocalImage, |
| prepareImagePayload: prepareImagesLocal, |
| getDownloadStream: getLocalFileStream, |
| }); |
|
|
| |
| |
| |
| |
| const s3Strategy = () => ({ |
| handleFileUpload: uploadFileToS3, |
| saveURL: saveURLToS3, |
| getFileURL: getS3URL, |
| deleteFile: deleteFileFromS3, |
| saveBuffer: saveBufferToS3, |
| prepareImagePayload: prepareImageURLS3, |
| processAvatar: processS3Avatar, |
| handleImageUpload: uploadImageToS3, |
| getDownloadStream: getS3FileStream, |
| }); |
|
|
| |
| |
| |
| |
| const azureStrategy = () => ({ |
| handleFileUpload: uploadFileToAzure, |
| saveURL: saveURLToAzure, |
| getFileURL: getAzureURL, |
| deleteFile: deleteFileFromAzure, |
| saveBuffer: saveBufferToAzure, |
| prepareImagePayload: prepareAzureImageURL, |
| processAvatar: processAzureAvatar, |
| handleImageUpload: uploadImageToAzure, |
| getDownloadStream: getAzureFileStream, |
| }); |
|
|
| |
| |
| |
| |
| const vectorStrategy = () => ({ |
| |
| saveURL: null, |
| |
| getFileURL: null, |
| |
| saveBuffer: null, |
| |
| processAvatar: null, |
| |
| handleImageUpload: null, |
| |
| prepareImagePayload: null, |
| |
| getDownloadStream: null, |
| handleFileUpload: uploadVectors, |
| deleteFile: deleteVectors, |
| }); |
|
|
| |
| |
| |
| |
| |
| const openAIStrategy = () => ({ |
| |
| saveURL: null, |
| |
| getFileURL: null, |
| |
| saveBuffer: null, |
| |
| processAvatar: null, |
| |
| handleImageUpload: null, |
| |
| prepareImagePayload: null, |
| deleteFile: deleteOpenAIFile, |
| handleFileUpload: uploadOpenAIFile, |
| getDownloadStream: getOpenAIFileStream, |
| }); |
|
|
| |
| |
| |
| |
| |
| const codeOutputStrategy = () => ({ |
| |
| saveURL: null, |
| |
| getFileURL: null, |
| |
| saveBuffer: null, |
| |
| processAvatar: null, |
| |
| handleImageUpload: null, |
| |
| prepareImagePayload: null, |
| |
| deleteFile: null, |
| handleFileUpload: uploadCodeEnvFile, |
| getDownloadStream: getCodeOutputDownloadStream, |
| }); |
|
|
| const mistralOCRStrategy = () => ({ |
| |
| saveURL: null, |
| |
| getFileURL: null, |
| |
| saveBuffer: null, |
| |
| processAvatar: null, |
| |
| handleImageUpload: null, |
| |
| prepareImagePayload: null, |
| |
| deleteFile: null, |
| |
| getDownloadStream: null, |
| handleFileUpload: uploadMistralOCR, |
| }); |
|
|
| const azureMistralOCRStrategy = () => ({ |
| |
| saveURL: null, |
| |
| getFileURL: null, |
| |
| saveBuffer: null, |
| |
| processAvatar: null, |
| |
| handleImageUpload: null, |
| |
| prepareImagePayload: null, |
| |
| deleteFile: null, |
| |
| getDownloadStream: null, |
| handleFileUpload: uploadAzureMistralOCR, |
| }); |
|
|
| const vertexMistralOCRStrategy = () => ({ |
| |
| saveURL: null, |
| |
| getFileURL: null, |
| |
| saveBuffer: null, |
| |
| processAvatar: null, |
| |
| handleImageUpload: null, |
| |
| prepareImagePayload: null, |
| |
| deleteFile: null, |
| |
| getDownloadStream: null, |
| handleFileUpload: uploadGoogleVertexMistralOCR, |
| }); |
|
|
| |
| const getStrategyFunctions = (fileSource) => { |
| if (fileSource === FileSources.firebase) { |
| return firebaseStrategy(); |
| } else if (fileSource === FileSources.local) { |
| return localStrategy(); |
| } else if (fileSource === FileSources.openai) { |
| return openAIStrategy(); |
| } else if (fileSource === FileSources.azure) { |
| return openAIStrategy(); |
| } else if (fileSource === FileSources.azure_blob) { |
| return azureStrategy(); |
| } else if (fileSource === FileSources.vectordb) { |
| return vectorStrategy(); |
| } else if (fileSource === FileSources.s3) { |
| return s3Strategy(); |
| } else if (fileSource === FileSources.execute_code) { |
| return codeOutputStrategy(); |
| } else if (fileSource === FileSources.mistral_ocr) { |
| return mistralOCRStrategy(); |
| } else if (fileSource === FileSources.azure_mistral_ocr) { |
| return azureMistralOCRStrategy(); |
| } else if (fileSource === FileSources.vertexai_mistral_ocr) { |
| return vertexMistralOCRStrategy(); |
| } else if (fileSource === FileSources.text) { |
| return localStrategy(); |
| } else { |
| throw new Error( |
| `Invalid file source: ${fileSource}. Available sources: ${Object.values(FileSources).join(', ')}`, |
| ); |
| } |
| }; |
|
|
| module.exports = { |
| getStrategyFunctions, |
| }; |
|
|