✨ feat(plugins/base.py): add BasePlugin class with initialize, teardown, and get methods to serve as base class for plugins
✨ feat(plugins/factory.py): add PluginServiceFactory class to create PluginService instance and load plugins
✨ feat(plugins/langfuse.py): add LangfusePlugin class with initialize, teardown, and get methods to serve as a plugin for Langfuse
✨ feat(plugins/service.py): add PluginService class to manage plugins, load plugins, register plugins, get plugins, and teardown plugins
✨ feat(schema.py): add PLUGIN_SERVICE to ServiceType enum to support plugin service
🔧 fix(settings/base.py): add PLUGIN_DIR optional setting to support specifying plugin directory
🔧 fix(utils.py): add import statement for plugins_factory in utils.py to fix import error
🔧 fix(service.py): update import statement for SettingsService to match new file structure
🔧 fix(__init__.py): update import statement for service module to match new file structure
🔧 fix(factory.py): update import statement for SettingsService to match new file structure
🔧 fix(factory.py): update import statement for TaskService to match new file structure
🔧 fix(conftest.py): update import statement for DatabaseService to match new file structure
🔧 fix(chat.py): update import statements for ChatService and BaseCacheService in chat.py to match new file structure
🔧 fix(__init__.py): update import statement for InMemoryCache in __init__.py to match new file structure
🔧 fix(factory.py): update import statement for InMemoryCache, RedisCache, and BaseCacheService in factory.py to match new file structure
🔧 fix(service.py): create new file service.py and move InMemoryCache class from base.py to service.py
✨ feat(service.py): add InMemoryCache class to provide a simple in-memory cache implementation
✨ feat(service.py): add RedisCache class to provide a Redis-based cache implementation
🔨 refactor(factory.py): update import statements to reflect changes in file structure
🔨 refactor(factory.py): update import statements to reflect changes in file structure
🔨 refactor(factory.py): update import statements to reflect changes in file structure
🔨 refactor(factory.py): update import statements to reflect changes in file structure
🔨 refactor(factory.py): update import statements to reflect changes in file structure
🔨 refactor(factory.py): update import statements to reflect changes in file structure
🔨 refactor(factory.py): update import statements to reflect changes in file structure
🔨 refactor(factory.py): update import statements to reflect changes in file structure
🔨 refactor(factory.py): update import statements to reflect changes in file structure
🔨 refactor(factory.py): update import statements to reflect changes in file structure
🔨 refactor(factory.py): update import statements to reflect changes in file structure
🔨 refactor(factory.py): update import statements to reflect changes in file structure
🔨 refactor(factory.py): update import statements to reflect changes in file structure
🔨 refactor(factory.py): update import statements to reflect changes in file structure
🔨 refactor(factory.py): update import statements to reflect changes in file structure
🔨 refactor(factory.py): update import statements to reflect changes in file structure
🔨 refactor(factory.py): update import statements to reflect changes in file structure
🔨 refactor(factory.py): update import statements to reflect changes in file structure
🔨 refactor(factory.py): update import statements to reflect changes in file structure
🔨 refactor(factory.py): update import statements to reflect changes in file structure
🔨 refactor(factory.py): update import statements to reflect changes in file structure
🔨 refactor(factory.py): update import statements to reflect changes in file structure
🔨 refactor(factory.py): update import statements to reflect changes in file structure
🔨 refactor(factory.py): update import statements to reflect changes in file structure
🔨 refactor(factory.py): update import statements to reflect changes in file structure
🔨 refactor(factory.py): update import statements to reflect changes in file structure
🔨 refactor(factory.py): update import statements to reflect changes in file structure
🔨 refactor(factory.py): update import statements to reflect changes in file structure
🔨 refactor(factory.py): update import statements to reflect changes in file structure
🔨 refactor(factory.py):
📦 chore(service.py): add new file `service.py` to implement DatabaseService class
📦 chore(utils.py): add import statement for DatabaseService in `utils.py`
📦 chore(getters.py): add import statement for DatabaseService in `getters.py`
📦 chore(factory.py): add import statement for SessionService in `factory.py`
📦 chore(service.py): add new file `service.py` to implement SessionService class
📦 chore(service.py): add SettingsService and TaskService classes to handle settings and tasks respectively
🔧 refactor(service.py): refactor load_settings_from_yaml method to load settings from a YAML file and convert keys to uppercase for consistency
🔧 refactor(service.py): refactor get_backend method to return the appropriate backend based on USE_CELERY flag
🔧 refactor(service.py): refactor launch_and_await_task method to handle launching and awaiting tasks based on USE_CELERY flag
🔧 refactor(service.py): refactor launch_task method to handle launching tasks based on USE_CELERY flag
🔧 refactor(service.py): refactor get_task method to get a task based on USE_CELERY flag
🔧 refactor(service.py): refactor check_celery_availability method to check if Celery is available and return its status
🔧 refactor(service.py): refactor USE_CELERY flag to check if Celery is available and set it accordingly
🐛 fix(EditNodeModal): rename import of TabsState to FlowsState to improve semantics
🐛 fix(formModal): rename import of TabsState to FlowsState to improve semantics
🐛 fix(PageComponent): rename import of TabsState to FlowsState to improve semantics
🐛 fix(reactflowUtils): rename import of TabsState to FlowsState to improve semantics
🐛 fix(utils): rename import of TabsState to FlowsState to improve semantics
🚚 chore(server.ts): change port variable case from lowercase port to uppercase PORT to improve semantics
✨ feat(server.ts): add support for process.env.PORT environment variable to be able to run app on a configurable port
feat(exportModal/index.tsx): modify downloadFlow function to pass an object with id, data, description, and name properties instead of directly passing flow object to improve code readability and maintainability
The code now handles import errors when importing utilities from the `langchain.utilities` module. If an import error occurs, the utility is skipped and not added to the `type_dict` dictionary. This prevents the application from crashing when encountering an invalid or missing utility.
fix(promptComponent): prevent update from prompt template after group node if prompt is wrongly marked as not dynamic
fix(EditNodeModal): update readonly condition to only check for myData.current.node?.flow