LibreChat/packages/data-schemas
Danny Avila ded3cd8876
🔍 feat: Mistral OCR API / Upload Files as Text (#6274)
* refactor: move `loadAuthValues` to `~/services/Tools/credentials`

* feat: add createAxiosInstance function to configure axios with proxy support

* WIP: First pass mistral ocr

* refactor: replace getConvoFiles with getToolFiles for improved file retrieval logic

* refactor: improve document formatting in encodeAndFormat function

* refactor: remove unused resendFiles parameter from buildOptions function (this option comes from the agent config)

* fix: update getFiles call to include files with `text` property as well

* refactor: move file handling to `initializeAgentOptions`

* refactor: enhance addImageURLs method to handle OCR text and improve message formatting

* refactor: update message formatting to handle OCR text in various content types

* refactor: remove unused resendFiles property from compactAgentsSchema

* fix: add error handling for Mistral OCR document upload and logging

* refactor: integrate OCR capability into file upload options and configuration

* refactor: skip processing for text source files in delete request, as they are directly tied to database

* feat: add metadata field to ExtendedFile type and update PanelColumns and PanelTable components for localization and metadata handling

* fix: source icon styling

* wip: first pass, frontend file context agent resources

* refactor: add hover card with contextual information for File Context (OCR) in FileContext component

* feat: enhance file processing by integrating file retrieval for OCR resources in agent initialization

* feat: implement OCR config; fix: agent resource deletion for ocr files

* feat: enhance agent initialization by adding OCR capability check in resource priming

* ci: fix `~/config` module mock

* ci: add OCR property expectation in AppService tests

* refactor: simplify OCR config loading by removing environment variable extraction, to be done when OCR is actually performed

* ci: add unit test to ensure environment variable references are not parsed in OCR config

* refactor: disable base64 image inclusion in OCR request

* refactor: enhance OCR configuration handling by validating environment variables and providing defaults

* refactor: use file stream from disk for mistral ocr api
2025-03-10 17:23:46 -04:00
..
src 🔍 feat: Mistral OCR API / Upload Files as Text (#6274) 2025-03-10 17:23:46 -04:00
.gitignore 📦 refactor: Move DB Models to @librechat/data-schemas (#6210) 2025-03-07 11:55:44 -05:00
babel.config.cjs 📦 refactor: Move DB Models to @librechat/data-schemas (#6210) 2025-03-07 11:55:44 -05:00
jest.config.mjs 📦 refactor: Move DB Models to @librechat/data-schemas (#6210) 2025-03-07 11:55:44 -05:00
LICENSE 🔏 fix: Enhance Two-Factor Authentication (#6247) 2025-03-08 15:28:27 -05:00
package.json 🔏 fix: Enhance Two-Factor Authentication (#6247) 2025-03-08 15:28:27 -05:00
README.md 🔏 fix: Enhance Two-Factor Authentication (#6247) 2025-03-08 15:28:27 -05:00
rollup.config.js 📦 refactor: Move DB Models to @librechat/data-schemas (#6210) 2025-03-07 11:55:44 -05:00
tsconfig.json 📦 refactor: Move DB Models to @librechat/data-schemas (#6210) 2025-03-07 11:55:44 -05:00
tsconfig.spec.json 📦 refactor: Move DB Models to @librechat/data-schemas (#6210) 2025-03-07 11:55:44 -05:00

@librechat/data-schemas

Mongoose schemas and models for LibreChat. This package provides a comprehensive collection of Mongoose schemas used across the LibreChat project, enabling robust data modeling and validation for various entities such as actions, agents, messages, users, and more.

Features

  • Modular Schemas: Includes schemas for actions, agents, assistants, balance, banners, categories, conversation tags, conversations, files, keys, messages, plugin authentication, presets, projects, prompts, prompt groups, roles, sessions, shared links, tokens, tool calls, transactions, and users.
  • TypeScript Support: Provides TypeScript definitions for type-safe development.
  • Ready for Mongoose Integration: Easily integrate with Mongoose to create models and interact with your MongoDB database.
  • Flexible & Extensible: Designed to support the evolving needs of LibreChat while being adaptable to other projects.

Installation

Install the package via npm or yarn:

npm install @librechat/data-schemas

Or with yarn:

yarn add @librechat/data-schemas

Usage

After installation, you can import and use the schemas in your project. For example, to create a Mongoose model for a user:

import mongoose from 'mongoose';
import { userSchema } from '@librechat/data-schemas';

const UserModel = mongoose.model('User', userSchema);

// Now you can use UserModel to create, read, update, and delete user documents.

You can also import other schemas as needed:

import { actionSchema, agentSchema, messageSchema } from '@librechat/data-schemas';

Each schema is designed to integrate seamlessly with Mongoose and provides indexes, timestamps, and validations tailored for LibreChats use cases.

Development

This package uses Rollup and TypeScript for building and bundling.

Available Scripts

  • Build:
    Cleans the dist directory and builds the package.

    npm run build
    
  • Build Watch:
    Rebuilds automatically on file changes.

    npm run build:watch
    
  • Test:
    Runs tests with coverage in watch mode.

    npm run test
    
  • Test (CI):
    Runs tests with coverage for CI environments.

    npm run test:ci
    
  • Verify:
    Runs tests in CI mode to verify code integrity.

    npm run verify
    
  • Clean:
    Removes the dist directory.

    npm run clean
    

For those using Bun, equivalent scripts are available:

  • Bun Clean: bun run b:clean
  • Bun Build: bun run b:build

Repository & Issues

The source code is maintained on GitHub.

License

This project is licensed under the MIT License.

Contributing

Contributions to improve and expand the data schemas are welcome. If you have suggestions, improvements, or bug fixes, please open an issue or submit a pull request on the GitHub repository.

For more detailed documentation on each schema and model, please refer to the source code or visit the LibreChat website.