Commit graph

1,824 commits

Author SHA1 Message Date
Gabriel Luiz Freitas Almeida
215bc0d079 🔄 refactor(schema.py): rename MARKETPLACE_SERVICE enum value to STORE_SERVICE for consistency and clarity 2023-10-18 17:46:13 -03:00
Gabriel Luiz Freitas Almeida
67dddd7d75 🔧 fix(base.py): rename MARKETPLACE_URL to STORE_URL for better clarity and consistency in settings
🔧 fix(service.py): update reference to MARKETPLACE_URL to STORE_URL in StoreService class to reflect the change in settings
2023-10-18 17:44:57 -03:00
Gabriel Luiz Freitas Almeida
0fadad6f7d 🔧 fix(utils.py): import and add store_factory to the list of factories and dependencies 2023-10-18 17:16:42 -03:00
Gabriel Luiz Freitas Almeida
596fc8ed41 🔧 fix(api_key.py): import missing dependencies and fix import paths for auth_utils and get_current_active_user
 feat(api_key.py): add new route to save store API key for a user
2023-10-18 17:03:53 -03:00
Gabriel Luiz Freitas Almeida
878e158ac8 🔧 chore(alembic): add migration script for changes related to the store
🔧 chore(flow.py): add new field 'is_component' to the Flow model to support store functionality
🔧 chore(user.py): add new field 'store_api_key' to the User model to support store functionality
2023-10-18 17:03:15 -03:00
Gabriel Luiz Freitas Almeida
eded928bf4 🔄 refactor(router.py): rename component_router to store_router for better clarity and consistency
🔄 refactor(__init__.py): update import statements and references to component_router to store_router for consistency with the renamed router
2023-10-18 17:03:00 -03:00
Gabriel Luiz Freitas Almeida
6e6e514837 🔒 chore(utils.py): add encryption and decryption functions for API key using Fernet encryption algorithm 2023-10-18 17:02:03 -03:00
Gabriel Luiz Freitas Almeida
4d7b66a4e2 🔥 refactor(components.py): remove unused code and endpoints related to components
 feat(store.py): add new endpoints for creating, reading, and listing components in the store
2023-10-18 17:01:54 -03:00
Gabriel Luiz Freitas Almeida
3e5eb62c5c 🔄 refactor(deps.py): rename MarketplaceService to StoreService for better naming consistency and clarity
🔄 refactor(schema.py): rename `MARKETPLACE_SERVICE` enum value to `STORE_SERVICE` to match the renamed service
2023-10-18 16:24:05 -03:00
Gabriel Luiz Freitas Almeida
c5ef201755 feat(store): add store service to integrate langflow with the store
This commit adds the necessary files to implement the store service in langflow. The store service allows searching, getting, posting, and downloading components from the store. The store service is integrated with a Directus instance.

The following files were added:
- `src/backend/langflow/services/store/__init__.py`: Initializes the store service.
- `src/backend/langflow/services/store/factory.py`: Implements the store service factory.
- `src/backend/langflow/services/store/schema.py`: Defines the schema for the component response.
- `src/backend/langflow/services/store/service.py`: Implements the store service, including methods for searching, listing components, downloading, and uploading components.

The store service requires the `SettingsService` to be passed during initialization. The base URL and components URL are retrieved from the `MARKETPLACE_URL` setting.

The store service provides the following methods:
- `search`: Searches for components in the store based on various parameters.
- `list_components`: Lists components from the store.
- `download`: Downloads a specific component from the store.
- `upload`: Uploads a new component to the store.

The store service uses the `httpx` library to perform HTTP requests to the store API. The `_get` method is a utility method to perform GET requests with optional API key and parameters.

The `ComponentResponse` schema defines the structure of the component response from the store. It includes various properties such as name, description, id, status, sort, user_created, date_created, user_updated, date_updated, is_component, likes, tags, data, and documentation.

The `get_api_key` method is not implemented and will be completed in a future commit.
2023-10-18 16:22:24 -03:00
Gabriel Luiz Freitas Almeida
2653bbc70e First draft of MarketplaceService 2023-10-18 09:18:16 -03:00
Gabriel Luiz Freitas Almeida
c50d1344ca rename getters to deps 2023-10-18 09:18:16 -03:00
Gabriel Luiz Freitas Almeida
de238bf5db Rename manager to service 2023-10-18 09:18:15 -03:00
Gabriel Luiz Freitas Almeida
7bdf564170 🔧 chore(constants.py): clean up import statements and remove unnecessary whitespace to improve code readability
🐛 fix(custom_component.py): set the type of argument to "Data" if it is not specified to ensure consistency and prevent errors
2023-10-12 19:23:45 -03:00
Gabriel Luiz Freitas Almeida
4366b02c4f 🔀 chore(field_typing): reorganize imports and update __all__ list for better readability and maintainability
🔥 chore(field_typing): remove unused base.py file as it is no longer needed
🔀 chore(constants): update import statements and add type aliases for better readability and maintainability
2023-10-12 19:23:13 -03:00
Gabriel Luiz Freitas Almeida
dad8480ce3 🔨 refactor(HuggingFaceEndpoints.py): update import statement for HuggingFaceEndpoint class to match new file structure
🔧 chore(HuggingFaceEndpoints.py): remove unused import statement for langchain.llms.base module

🔧 chore(HuggingFaceEndpoints.py): remove unused "type" field from task parameter in build method signature

🔧 chore(HuggingFaceEndpoints.py): add default value for task parameter in build method signature

🔧 chore(HuggingFaceEndpoints.py): add default values for huggingfacehub_api_token and model_kwargs parameters in build method signature

🐛 fix(HuggingFaceEndpoints.py): add model_kwargs parameter to HuggingFaceEndpoint constructor to fix missing argument error
2023-10-12 19:22:41 -03:00
Gabriel Luiz Freitas Almeida
964b4ec7f2 🐛 fix(base.py): improve code readability by formatting the CreateTrace function call in multiple lines 2023-10-12 16:29:48 -03:00
Gabriel Luiz Freitas Almeida
6abd5d5343 🐛 fix(base.py): handle cases where value is not a valid int or float to prevent ValueError and assign the original value instead 2023-10-12 16:29:30 -03:00
Gabriel Luiz Freitas Almeida
8f20105b4b 🔧 fix(custom_component.py): fix import statement for CUSTOM_COMPONENT_SUPPORTED_TYPES
🔧 fix(custom_component.py): fix argument type in return statement of CustomComponent.get_args()
🔧 fix(custom_components.py): make description attribute optional in CustomComponentFrontendNode class
2023-10-11 18:33:13 -03:00
Gabriel Luiz Freitas Almeida
846a15f9fd 🐛 fix(base.py): convert "int" and "float" type values to their respective types for better data consistency and type safety 2023-10-11 18:32:56 -03:00
Gabriel Luiz Freitas Almeida
440298861c 🔄 refactor(types.py): update import statement for CUSTOM_COMPONENT_SUPPORTED_TYPES to match new location in field_typing module 2023-10-11 18:32:19 -03:00
Gabriel Luiz Freitas Almeida
df66ae848e 🔀 chore(field_typing): add support for additional types in field_typing/__init__.py
🔀 chore(field_typing): add support for Data type in field_typing/base.py

🔀 chore(field_typing): add constants.py file to define supported types in field_typing

🔀 chore(interface/custom): remove duplicate imports and use field_typing types

🔀 chore(utils): fix syntax error in get_base_classes function
2023-10-11 18:31:05 -03:00
Gabriel Luiz Freitas Almeida
b2205bba8a 🐛 fix(types.py): add output types to the frontend node to improve data integrity and error handling
 feat(types.py): add support for adding output types to the frontend node to ensure valid return types and improve error handling
2023-10-11 17:33:32 -03:00
Guangya Liu
7c9f649f01 added trace name 2023-10-11 14:21:41 -04:00
anovazzi1
6ae41c265c Merge remote-tracking branch 'origin/dev' into bugfix_minimizeNode 2023-10-10 13:39:01 -03:00
anovazzi1
0718819a10 fix invalid json strings 2023-10-09 21:26:40 -03:00
Gabriel Luiz Freitas Almeida
44bebf7d6b Merge remote-tracking branch 'origin/dev' into newGroupNode 2023-10-09 10:48:35 -03:00
Gabriel Luiz Freitas Almeida
61a5c9dcdb 🐛 fix(utils.py): improve error handling in initialize_database() function
The `initialize_database()` function now handles two specific exceptions: "overlaps with other requested revisions" and "Can't locate revision identified by". If either of these exceptions occur, they will not be raised and instead the `alembic_version` table will be deleted. This change improves the error handling and ensures that the database is properly initialized.
2023-10-07 12:03:51 -03:00
Gabriel Luiz Freitas Almeida
7a1f06128e 🐛 fix(base.py): fix type hint for nodes parameter in Graph class constructor to improve code readability and maintainability
🔀 refactor(base.py): refactor initialization of top_level_nodes list in Graph class constructor to improve code readability and maintainability
2023-10-06 16:59:29 -03:00
Gabriel Luiz Freitas Almeida
4d6c731a9d 🐛 fix(base.py): change assignment of source_handle and target_handle to use get() method to handle missing keys gracefully
🐛 fix(base.py): change assignment of parent_node_id and parent_is_top_level to use state dictionary instead of _data attribute
🐛 fix(test_graph.py): change arguments passed to update_source_handle() function to match its signature
2023-10-06 16:19:42 -03:00
anovazzi1
88d91c48d8 Merge remote-tracking branch 'origin/dev' into NGNMergeDev 2023-10-06 15:41:42 -03:00
Gabriel Luiz Freitas Almeida
c3197c30f5 🐛 fix(manager.py): change try-except block to if-elif block to improve code readability and maintainability 2023-10-05 18:27:30 -03:00
Gabriel Luiz Freitas Almeida
aec14bd250 🐛 fix(manager.py): remove unnecessary exception handling and logging for JSON decoding error
🐛 fix(manager.py): fix condition for clearing chat history to only clear if "clear_history" key is present and its value is truthy
2023-10-05 18:27:30 -03:00
Gabriel Luiz Freitas Almeida
57b9ab6843 🐛 fix(manager.py): change try-except block to if-elif block to improve code readability and maintainability 2023-10-05 17:41:10 -03:00
Gabriel Luiz Freitas Almeida
df8dd44a16 🐛 fix(manager.py): remove unnecessary exception handling and logging for JSON decoding error
🐛 fix(manager.py): fix condition for clearing chat history to only clear if "clear_history" key is present and its value is truthy
2023-10-05 17:39:56 -03:00
Gabriel Luiz Freitas Almeida
06bbfa2e04 🐛 fix(utils.py): fix find_last_node function to receive nodes and edges as arguments instead of data dictionary
🐛 fix(utils.py): fix update_source_handle function to receive g_nodes and g_edges as arguments instead of flow_data
🐛 fix(utils.py): fix get_updated_edges function to receive g_nodes and g_edges as arguments instead of base_flow and group_node_id
 feat(utils.py): add support for passing nodes and edges as arguments to find_last_node, update_source_handle, and get_updated_edges functions to improve reusability and modularity
2023-10-05 13:08:09 -03:00
Gabriel Luiz Freitas Almeida
01438d82e0 🐛 fix(base.py): add exception logging to provide more information in case of KeyError
🐛 fix(utils.py): fix bug where ungrouped nodes were not added to the queue for future processing
 feat(utils.py): add functionality to keep track of processed nodes to avoid duplicate processing
 feat(utils.py): add functionality to process nodes in a breadth-first manner to ensure correct order of processing
 feat(utils.py): add functionality to update source handles correctly when ungrouping nodes
2023-10-05 12:34:54 -03:00
Gabriel Luiz Freitas Almeida
de7c80de3f 🐛 fix(utils.py): refactor update_template function to improve readability and maintainability
 feat(utils.py): add support for nested proxy dictionary in template to handle field and id separately
 test(test_graph.py): add test cases for process_flow function to ensure correct processing of grouped chat data
 test(test_graph.py): add test cases for update_template function to ensure correct updating of template
2023-10-05 11:40:40 -03:00
Gabriel Luiz Freitas Almeida
20555a4e88 🐛 fix(base.py): remove unused process_flow function call in Graph class to improve code readability and performance
🐛 fix(utils.py): change condition from `node["data"]["node"]["flow"]` to `node["data"]["node"].get("flow")` to handle cases where "flow" key is missing in node data

🐛 fix(utils.py): fix incorrect variable name in get_updated_edges function, change `new_edge` to `edge` in the condition
2023-10-04 20:45:29 -03:00
Gabriel Luiz Freitas Almeida
7d633d853d 🐛 fix(chat.py): remove unnecessary blank line to improve code readability
🐛 fix(chat.py): remove unused variable 'valid' to improve code readability
🐛 fix(chat.py): fix indentation of 'yield' statement to match the surrounding code
🐛 fix(chat.py): fix indentation of 'yield' statement to match the surrounding code
🐛 fix(chat.py): fix indentation of 'yield' statement to match the surrounding code
🐛 fix(chat.py): fix indentation of 'yield' statement to match the surrounding code
🐛 fix(chat.py): fix indentation of 'yield' statement to match the surrounding code
🐛 fix(chat.py): fix indentation of 'yield' statement to match the surrounding code
🐛 fix(chat.py): fix indentation of 'yield' statement to match the surrounding code
🐛 fix(chat.py): fix indentation of 'yield' statement to match the surrounding code
🐛 fix(chat.py): fix indentation of 'yield' statement to match the surrounding code
🐛 fix(chat.py): fix indentation of 'yield' statement to match the surrounding code
🐛 fix(chat.py): fix indentation of 'yield' statement to match the surrounding code
🐛 fix(chat.py): fix indentation of 'yield' statement to match the surrounding code
🐛 fix(chat.py): fix indentation of 'yield' statement to match the surrounding code
🐛 fix(chat.py): fix indentation of 'yield' statement to match the surrounding code
🐛 fix(chat.py): fix indentation of 'yield' statement to match the surrounding code
🐛 fix(chat.py): fix indentation of 'yield' statement to match the surrounding code
🐛 fix(chat.py): fix indentation of 'yield' statement to match the surrounding code
🐛 fix(chat.py): fix indentation of 'yield' statement to match the surrounding code
🐛 fix(chat.py): fix indentation of 'yield' statement to match the surrounding code
🐛 fix(chat.py): fix indentation of 'yield' statement to match the surrounding code
🐛 fix(chat.py): fix indentation of 'yield' statement to match the surrounding code
🐛 fix(chat.py): fix indentation of 'yield' statement to match the surrounding code
🐛 fix(chat.py): fix indentation of 'yield' statement to match the surrounding code
🐛 fix(chat.py
2023-10-04 18:46:20 -03:00
Gabriel Luiz Freitas Almeida
3183c52594 🔧 chore(constants.py): update CLASSES_TO_REMOVE list to include "RunnableSerializable" class
The "CLASSES_TO_REMOVE" list in the constants.py file has been updated to include the "RunnableSerializable" class. This change was made to ensure that the "RunnableSerializable" class is properly removed when processing the list of classes to remove.
2023-10-04 17:42:41 -03:00
Gabriel Luiz Freitas Almeida
537e1a3e05 🔧 chore(utils.py): refactor get_factories_and_deps function to improve code organization and readability
🔧 chore(utils.py): refactor initialize_services function to use the updated get_factories_and_deps function for better maintainability
2023-10-04 17:42:26 -03:00
Gabriel Luiz Freitas Almeida
79334a10de 🔧 chore(callback.py): refactor StreamingLLMCallbackHandler constructor to improve code readability and maintainability
🐛 fix(callback.py): assign websocket attribute from chat_service.active_connections to self.websocket to avoid potential bugs
2023-10-04 17:42:12 -03:00
Gabriel Luiz Freitas Almeida
0b2cfb3bbe 🐛 fix(agents.py): change 'required' attribute of 'Tool' field in InitializeAgentNode class from False to True to enforce its presence 2023-10-04 17:24:41 -03:00
Gabriel Luiz Freitas Almeida
75319a4579 🔧 chore(alembic): import sqlmodel module to satisfy linter and improve code readability 2023-10-04 15:44:29 -03:00
anovazzi1
71bc3c4a65 formated code 2023-10-04 15:37:41 -03:00
Gabriel Luiz Freitas Almeida
358d595b36
Release beta 6 (#1012) 2023-10-04 14:52:42 -03:00
Gabriel Luiz Freitas Almeida
203929914e 🐛 fix(utils.py): remove unnecessary password verification when creating a superuser
💡 refactor(utils.py): simplify logic for creating a superuser by removing redundant password verification
2023-10-04 14:51:18 -03:00
Gabriel Luiz Freitas Almeida
eb1e742029
Change prefix of generated API key from "lf" to "sk"
🔄 refactor(api_key/crud.py): change prefix of generated API key from "lf" to "sk" for better readability and consistency
2023-10-04 13:54:45 -03:00
Gabriel Luiz Freitas Almeida
3403ee3c1c 🔄 refactor(api_key/crud.py): change prefix of generated API key from "lf" to "sk" for better readability and consistency 2023-10-04 13:54:09 -03:00