mirror of
https://github.com/danny-avila/LibreChat.git
synced 2025-12-17 08:50:15 +01:00
* chore: replace violation cache accessors with enum * chore: fix test * chore(fileSchema): index timestamps * fix(ActionService): use encoding/caching strategy for handling assistant function character length limit * refactor(actions): async `domainParser` also resolve retrieved model (which is deployment name) to user-defined model * style(AssistantAction): add `whitespace-nowrap` for ellipsis * refactor(ActionService): if domain is less than or equal to encoded domain fixed length, return domain with replacement of separator * refactor(actions): use sessions/transactions for updating Assistant Action database records * chore: remove TTL from ENCODED_DOMAINS cache * refactor(domainParser): minor optimization and add tests * fix(spendTokens): use txData.user for token usage logging * refactor(actions): add helper function `withSession` for database operations with sessions/transactions * fix(PluginsClient): logger debug `message` field edge case
104 lines
2.7 KiB
JavaScript
104 lines
2.7 KiB
JavaScript
const { FileSources } = require('librechat-data-provider');
|
|
const mongoose = require('mongoose');
|
|
|
|
/**
|
|
* @typedef {Object} MongoFile
|
|
* @property {mongoose.Schema.Types.ObjectId} [_id] - MongoDB Document ID
|
|
* @property {number} [__v] - MongoDB Version Key
|
|
* @property {mongoose.Schema.Types.ObjectId} user - User ID
|
|
* @property {string} [conversationId] - Optional conversation ID
|
|
* @property {string} file_id - File identifier
|
|
* @property {string} [temp_file_id] - Temporary File identifier
|
|
* @property {number} bytes - Size of the file in bytes
|
|
* @property {string} filename - Name of the file
|
|
* @property {string} filepath - Location of the file
|
|
* @property {'file'} object - Type of object, always 'file'
|
|
* @property {string} type - Type of file
|
|
* @property {number} usage - Number of uses of the file
|
|
* @property {string} [context] - Context of the file origin
|
|
* @property {boolean} [embedded] - Whether or not the file is embedded in vector db
|
|
* @property {string} [model] - The model to identify the group region of the file (for Azure OpenAI hosting)
|
|
* @property {string} [source] - The source of the file
|
|
* @property {number} [width] - Optional width of the file
|
|
* @property {number} [height] - Optional height of the file
|
|
* @property {Date} [expiresAt] - Optional height of the file
|
|
* @property {Date} [createdAt] - Date when the file was created
|
|
* @property {Date} [updatedAt] - Date when the file was updated
|
|
*/
|
|
const fileSchema = mongoose.Schema(
|
|
{
|
|
user: {
|
|
type: mongoose.Schema.Types.ObjectId,
|
|
ref: 'User',
|
|
index: true,
|
|
required: true,
|
|
},
|
|
conversationId: {
|
|
type: String,
|
|
ref: 'Conversation',
|
|
index: true,
|
|
},
|
|
file_id: {
|
|
type: String,
|
|
// required: true,
|
|
index: true,
|
|
},
|
|
temp_file_id: {
|
|
type: String,
|
|
// required: true,
|
|
},
|
|
bytes: {
|
|
type: Number,
|
|
required: true,
|
|
},
|
|
filename: {
|
|
type: String,
|
|
required: true,
|
|
},
|
|
filepath: {
|
|
type: String,
|
|
required: true,
|
|
},
|
|
object: {
|
|
type: String,
|
|
required: true,
|
|
default: 'file',
|
|
},
|
|
embedded: {
|
|
type: Boolean,
|
|
},
|
|
type: {
|
|
type: String,
|
|
required: true,
|
|
},
|
|
context: {
|
|
type: String,
|
|
// required: true,
|
|
},
|
|
usage: {
|
|
type: Number,
|
|
required: true,
|
|
default: 0,
|
|
},
|
|
source: {
|
|
type: String,
|
|
default: FileSources.local,
|
|
},
|
|
model: {
|
|
type: String,
|
|
},
|
|
width: Number,
|
|
height: Number,
|
|
expiresAt: {
|
|
type: Date,
|
|
expires: 3600,
|
|
},
|
|
},
|
|
{
|
|
timestamps: true,
|
|
},
|
|
);
|
|
|
|
fileSchema.index({ createdAt: 1, updatedAt: 1 });
|
|
|
|
module.exports = fileSchema;
|