mirror of
https://github.com/danny-avila/LibreChat.git
synced 2025-12-17 17:00:15 +01:00
* feat: initial UI convoStart
* fix: ConvoStarter UI
* fix: convoStarters bug
* feat: Add input field focus on conversation starters
* style: conversation starter UI update
* feat: apply fixes for starters
* style: update conversationStarters UI and fixed typo
* general UI update
* feat: Add onClick functionality to ConvoStarter component
* fix: quick fix test
* fix(AssistantSelect): remove object check
* fix: updateAssistant `conversation_starters` var
* chore: remove starter autofocus
* fix: no empty conversation starters, always show input, use Constants value for max count
* style: Update defaultTextPropsLabel styles, for a11y placeholder
* refactor: Update ConvoStarter component styles and class names for a11y and theme
* refactor: convostarter, move plus button to within persistent element
* fix: types
* chore: Update landing page assistant description styling with theming
* chore: assistant types
* refactor: documents routes
* refactor: optimize conversation starter mutations/queries
* refactor: Update listAllAssistants return type to Promise<Array<Assistant>>
* feat: edit existing starters
* feat(convo-starters): enhance ConvoStarter component and add animations
- Update ConvoStarter component styling for better visual appeal
- Implement fade-in animation for smoother appearance
- Add hover effect with background color change
- Improve text overflow handling with line-clamp and text-balance
- Ensure responsive design for various screen sizes
* feat(assistant): add conversation starters to assistant builder
- Add localization strings for conversation starters
- Update mobile.css with shake animation for max starters reached
- Enhance user experience with tooltips and dynamic input handling
* refactor: select specific fields for assistant documents fetch
* refactor: remove endpoint query key, fetch all assistant docs for now, add conversation_starters to v1 methods
* refactor: add document filters based on endpoint config
* fix: starters not applied during creation
* refactor: update AssistantSelect component to handle undefined lastSelectedModels
---------
Co-authored-by: Danny Avila <danny@librechat.ai>
66 lines
2.7 KiB
JavaScript
66 lines
2.7 KiB
JavaScript
const mongoose = require('mongoose');
|
|
const assistantSchema = require('./schema/assistant');
|
|
|
|
const Assistant = mongoose.model('assistant', assistantSchema);
|
|
|
|
/**
|
|
* Update an assistant with new data without overwriting existing properties,
|
|
* or create a new assistant if it doesn't exist, within a transaction session if provided.
|
|
*
|
|
* @param {Object} searchParams - The search parameters to find the assistant to update.
|
|
* @param {string} searchParams.assistant_id - The ID of the assistant to update.
|
|
* @param {string} searchParams.user - The user ID of the assistant's author.
|
|
* @param {Object} updateData - An object containing the properties to update.
|
|
* @param {mongoose.ClientSession} [session] - The transaction session to use (optional).
|
|
* @returns {Promise<AssistantDocument>} The updated or newly created assistant document as a plain object.
|
|
*/
|
|
const updateAssistantDoc = async (searchParams, updateData, session = null) => {
|
|
const options = { new: true, upsert: true, session };
|
|
return await Assistant.findOneAndUpdate(searchParams, updateData, options).lean();
|
|
};
|
|
|
|
/**
|
|
* Retrieves an assistant document based on the provided ID.
|
|
*
|
|
* @param {Object} searchParams - The search parameters to find the assistant to update.
|
|
* @param {string} searchParams.assistant_id - The ID of the assistant to update.
|
|
* @param {string} searchParams.user - The user ID of the assistant's author.
|
|
* @returns {Promise<AssistantDocument|null>} The assistant document as a plain object, or null if not found.
|
|
*/
|
|
const getAssistant = async (searchParams) => await Assistant.findOne(searchParams).lean();
|
|
|
|
/**
|
|
* Retrieves all assistants that match the given search parameters.
|
|
*
|
|
* @param {Object} searchParams - The search parameters to find matching assistants.
|
|
* @param {Object} [select] - Optional. Specifies which document fields to include or exclude.
|
|
* @returns {Promise<Array<AssistantDocument>>} A promise that resolves to an array of assistant documents as plain objects.
|
|
*/
|
|
const getAssistants = async (searchParams, select = null) => {
|
|
let query = Assistant.find(searchParams);
|
|
|
|
if (select) {
|
|
query = query.select(select);
|
|
}
|
|
|
|
return await query.lean();
|
|
};
|
|
|
|
/**
|
|
* Deletes an assistant based on the provided ID.
|
|
*
|
|
* @param {Object} searchParams - The search parameters to find the assistant to delete.
|
|
* @param {string} searchParams.assistant_id - The ID of the assistant to delete.
|
|
* @param {string} searchParams.user - The user ID of the assistant's author.
|
|
* @returns {Promise<void>} Resolves when the assistant has been successfully deleted.
|
|
*/
|
|
const deleteAssistant = async (searchParams) => {
|
|
return await Assistant.findOneAndDelete(searchParams);
|
|
};
|
|
|
|
module.exports = {
|
|
updateAssistantDoc,
|
|
deleteAssistant,
|
|
getAssistants,
|
|
getAssistant,
|
|
};
|