* fix: tweaks processing in api usage
* refactor code
* fix: unit tests
* Refactor input handling in simple_run_flow function
* Refactor input handling in test_endpoints.py
---------
Co-authored-by: Ítalo Johnny <italojohnnydosanjos@gmail.com>
* add dataframe outputs to vector stores, directory, url, split text
* add dataframe import
* [autofix.ci] apply automated fixes
* [autofix.ci] apply automated fixes (attempt 2/3)
* add parse dataframe
* [autofix.ci] apply automated fixes
* Refactor: Update DataFrame handling in components
- Added import of DataFrame in directory and url components.
- Renamed variable 'df' to 'dataframe' in ParseDataFrameComponent for clarity.
- Updated method _clean_args and parse_data to use 'dataframe' instead of 'df' for consistency.
These changes enhance code readability and maintainability by standardizing the terminology used for DataFrame objects.
* [autofix.ci] apply automated fixes
* remove parse dataframe
* Add tests for URL component functionality and data handling
* Enhance DirectoryComponent tests with new functionality and parameters
- Added tests for loading files with specific types and handling hidden files.
- Implemented tests for directory loading with depth and multithreading support.
- Introduced a new test for converting directory contents to a DataFrame.
- Updated existing tests to include additional parameters like 'silent_errors' and 'types'.
These changes improve test coverage and ensure the DirectoryComponent behaves as expected under various conditions.
* update retrieve_file_paths for backwards compatibility
* Refactor DirectoryComponent to handle file types more robustly
- Removed the default assignment of TEXT_FILE_TYPES to 'types' and added logic to use all supported types if none are specified.
- Implemented validation to ensure only valid file types are processed, improving error handling.
- Updated the file retrieval process to utilize the filtered list of valid types.
These changes enhance the flexibility and reliability of the DirectoryComponent's file loading functionality.
* Refactor and simplify tests in test_data_components.py
- Removed multiple tests related to HTTP requests, including successful and failed GET requests, timeouts, and multiple URL handling, to streamline the test suite.
- Cleaned up imports and unnecessary mock setups to enhance readability and maintainability.
- Focused on retaining essential tests for DirectoryComponent and URLComponent functionality, ensuring core features are still validated.
These changes improve the clarity and efficiency of the test suite while maintaining coverage for critical components.
* Add unit tests for DirectoryComponent functionality
- Introduced a new test file for DirectoryComponent, enhancing test coverage.
- Implemented various tests to validate loading files with specific types, handling hidden files, and supporting multithreading.
- Added tests for directory loading with depth and converting directory contents to a DataFrame.
- Ensured tests cover different scenarios, including recursive loading and file type filtering.
These changes improve the robustness and reliability of the DirectoryComponent's functionality through comprehensive testing.
* Add unit tests for URLComponent functionality
- Introduced a new test file for URLComponent, enhancing test coverage for its methods.
- Implemented tests for fetching content from valid URLs, handling multiple URLs, and validating error handling for invalid URLs.
- Added tests for converting fetched content to a DataFrame and ensuring correct message formatting.
- Mocked web requests to simulate various scenarios, ensuring robust testing of URLComponent's functionality.
These changes improve the reliability and correctness of the URLComponent through comprehensive testing.
* Add unit tests for SplitTextComponent functionality
- Introduced a new test file for SplitTextComponent, enhancing test coverage for its methods.
- Implemented tests for basic text splitting, handling overlaps, custom separators, and preserving metadata.
- Added tests for converting split text results to a DataFrame and handling empty input.
- Ensured functionality for single and multiple input texts is validated.
These changes improve the reliability and correctness of the SplitTextComponent through comprehensive testing.
* Add comment to ignore FBT001 in retrieve_file_paths function
* Validate specified file types in DirectoryComponent and raise ValueError for invalid types
* Fix type hint in DataFrame constructor to support list of dicts or Data objects. This change enhances type safety and clarity in the DataFrame initialization process.
* Enhance DirectoryComponent tests to validate error handling for invalid file types
- Removed the test case for 'exe' file type from valid scenarios.
- Added a new test to ensure DirectoryComponent raises a ValueError for invalid file types, specifically when 'exe' is specified.
- Improved test coverage for DirectoryComponent by validating error messages for unsupported file types.
These changes strengthen the reliability of the DirectoryComponent by ensuring proper error handling for invalid inputs.
* [autofix.ci] apply automated fixes
* Update error handling in Component class to return None for missing flow_id or session_id
- Modified the send_error_message method to include a type hint that allows for returning None in addition to Message.
- Added a conditional check to return None if flow_id or session_id is not present, improving robustness in error handling.
These changes enhance the reliability of the Component class by ensuring it gracefully handles cases with missing identifiers.
* Refactor error handling in Component class to return None for missing session_id
- Updated the send_error_message method to remove the flow_id check, simplifying the logic.
- Enhanced robustness by ensuring that the method returns None if session_id is not present.
These changes improve the reliability of the Component class in handling error messages.
* Update required_inputs for DataFrame method in JSON configurations
- Modified the 'required_inputs' field for the 'DataFrame' method in both 'Graph Vector Store RAG.json' and 'Vector Store RAG.json' files to include necessary parameters: 'api_endpoint', 'collection_name', and 'token'.
- In 'Vector Store RAG.json', added 'collection_name_new' to the 'required_inputs' list.
These changes ensure that the DataFrame method has the appropriate inputs defined for proper functionality.
* [autofix.ci] apply automated fixes
* Enhance BaseComponent to use deep copy for attribute values in template configuration
- Updated the BaseComponent class to utilize `copy.deepcopy` when assigning values to `template_config`. This change ensures that modifications to the original component's attributes do not affect the template configuration, enhancing data integrity and preventing unintended side effects.
These changes improve the reliability of the BaseComponent by ensuring that the template configuration remains consistent and isolated from the original component's state.
* Added output for 'dataframe' in both ingestion and rag graphs
- Updated the ingestion vector store ID for better identification.
- Added output for 'dataframe' in both ingestion and rag graphs to enhance data handling.
- Simplified the output assignment for search results in rag graph by using a data list.
These changes improve the test structure and ensure that the vector store components are correctly configured for better testing outcomes.
* Refactor vector store RAG tests for improved validation and consistency
- Updated test assertions in `test_vector_store_rag_dump_components_and_edges` to verify the expected number of nodes and their types using a mapping for easier lookup.
- Changed the ingestion vector store ID from `vector-store-123` to `ingestion-vector-store-123` for better identification.
- Adjusted expected edges in the tests to reflect the new vector store ID, ensuring accurate edge validation.
These changes enhance the test structure and ensure that the vector store components are correctly configured for better testing outcomes.
---------
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
Co-authored-by: Gabriel Luiz Freitas Almeida <gabriel@langflow.org>
* refactor: turn sorting methods into functions in a separate module
- Added `layered_topological_sort` function to perform layered topological sorting of graph vertices, accommodating cycles and input vertex checks.
- Introduced `refine_layers` function to ensure proper dependency ordering among vertices.
- Implemented helper functions for sorting layers by dependency and filtering vertices based on predecessors.
- Enhanced utility functions to support better graph traversal and layer management.
This update improves the graph processing capabilities, allowing for more efficient handling of complex graph structures.
* feat(tests): enhance graph utility tests with cycle detection and sorting functionality
- Added a new fixture `graph_with_loop` to simulate a graph containing cycles for testing purposes.
- Improved the `test_large_graph_efficiency` to validate cycle detection in large graphs.
- Introduced multiple tests for sorting vertices in graphs with cycles, ensuring correct order and handling of input vertices.
- Enhanced assertions to provide clearer error messages for failed tests, improving debugging experience.
These changes strengthen the testing framework for graph utilities, ensuring robust handling of complex graph structures.
* refactor(graph): remove unused parent_node_map from Graph class initialization
- Eliminated the `parent_node_map` parameter from the Graph class constructor, streamlining the graph initialization process.
- This change enhances code clarity and reduces unnecessary complexity in graph management.
This update contributes to cleaner and more maintainable graph-related code.
* refactor(graph): optimize dependency sorting and vertex filtering
- Improved the `_max_dependency_index` function by utilizing `index_map.get()` for cleaner code and better handling of missing successors.
- Enhanced the `_sort_single_layer_by_dependency` function with a caching mechanism to avoid redundant calculations, improving performance during vertex sorting.
- Updated `filter_vertices_up_to_vertex` to use a set for `vertices_ids`, optimizing membership checks and enhancing efficiency in vertex filtering.
These changes contribute to more efficient graph processing and improved code readability.
* chore: remove unused 'parent_node_map' parameter
* [autofix.ci] apply automated fixes
* fix: replace old method call with a new func
* test: enhance assertions for file existence in webhook tests
* refactor(graph): enhance component ID retrieval and chat input sorting
- Updated `find_start_component_id` to accept an optional `is_webhook` parameter, allowing for dynamic priority input selection based on the flow type.
- Improved `sort_chat_inputs_first` to handle chat input positioning more efficiently, ensuring only one chat input exists and adjusting its position within the layers as needed.
- These changes enhance the flexibility and efficiency of graph processing, particularly for webhook flows.
* test(graph): update assertions in sort_chat_inputs_first test for accuracy
- Modified assertions in the `test_chat_inputs_at_start` function to reflect the correct expected output of the `sort_chat_inputs_first` utility.
- Adjusted the expected length and order of the result to ensure accurate validation of chat input sorting functionality.
These changes enhance the reliability of the test suite for graph utilities, ensuring that the sorting logic is correctly validated.
* test(chat): update assertion in consume_and_assert_stream for accurate ID validation
- Modified the assertion in the `consume_and_assert_stream` function to include an additional expected ID, ensuring the test accurately reflects the current output of the chat endpoint.
- This change enhances the reliability of the test suite by validating the correct behavior of the chat input sorting functionality.
* test(endpoints): update assertion in test_get_vertices for accurate ID validation
- Modified the assertion in the `test_get_vertices` function to include an additional expected ID, "Webhook", alongside "ChatInput".
- This change ensures the test accurately reflects the current output of the endpoint, enhancing the reliability of the test suite for endpoint functionality.
---------
Co-authored-by: italojohnny <italojohnnydosanjos@gmail.com>
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
* feat(component): enhance chat input component
- Replace MultilineInput with StrInput for better text handling
- Remove input handle for cleaner playground integration
- Maintain image support through FileInput
- Keep essential styling and session management options
* refactor(chatinput): keep MultilineInput with empty input_types
Keep MultilineInput for text composition advantage but hide the handle
for UI cleanliness by setting input_types=[].
This preserves the multiline functionality while improving the visual
interface by removing the unnecessary connection handle.
* [autofix.ci] apply automated fixes
* refactor: Update test_cycle_in_graph_max_iterations to use TextInputComponent instead of ChatInput
- Replaced ChatInput with TextInputComponent in test_cycle_in_graph_max_iterations.
- Updated related method calls to reflect the change in component type.
- Ensured that the graph's run queue correctly references the new input component.
* [autofix.ci] apply automated fixes
* Fix type mismatch in cycle test and skip OpenAI-dependent tests
---------
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
Co-authored-by: Gabriel Luiz Freitas Almeida <gabriel@langflow.org>
Co-authored-by: Eric Hare <ericrhare@gmail.com>
* feat: add batch run beta component
* [autofix.ci] apply automated fixes
* Update batch_run to run async using Runnable
* [autofix.ci] apply automated fixes
* refactor: streamline BatchRunComponent by removing unused synchronous model invocation and enhancing async processing
- Consolidated imports and improved type checking for LanguageModel.
- Simplified the run_batch method by directly using the model's asynchronous capabilities.
- Enhanced error handling for missing DataFrame columns.
- Cleaned up comments and improved code readability.
* refactor: update BatchRunComponent to use Runnable for improved async processing
- Added future annotations for better type hinting.
- Replaced LanguageModel with Runnable in type checking and method implementation.
- Enhanced code clarity and maintainability by consolidating imports.
* test: add unit tests for BatchRunComponent functionality
- Introduced a new test suite for BatchRunComponent to validate its behavior.
- Added tests for successful batch runs with and without system messages.
- Implemented tests for handling invalid column names and empty DataFrames.
- Included a test to ensure non-string columns are converted to strings during processing.
* refactor: rename useful.py to mock_language_model.py and update imports
---------
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
Co-authored-by: Gabriel Luiz Freitas Almeida <gabriel@langflow.org>
* refactor(tests): add new fixtures to files tests
- Introduced new pytest fixtures for creating API keys, active users, and flows to streamline test setup.
- Updated file upload, download, list, and delete tests to utilize the new fixtures, improving clarity and maintainability.
- Ensured that flow IDs are correctly referenced in all file operations, enhancing test accuracy.
- Added cleanup logic in fixtures to maintain database integrity after tests.
This refactor improves the organization of test cases and ensures that they are more robust and easier to understand.
* fix(tests): clear services cache in test fixtures
- Added logic to clear the services cache in both `conftest.py` and `test_files.py` fixtures to ensure a clean state for tests.
- This change prevents potential interference between tests by resetting the service manager's factories and services before each test run.
* refactor(tests): streamline file upload tests and remove unused mocks
- Removed the mock implementation of StorageService from the test fixtures to simplify the test setup.
- Introduced new fixtures to set maximum file size upload limits, enhancing test flexibility.
- Updated file upload, download, and list tests to directly use the new fixtures, improving clarity and maintainability.
- Ensured that uploaded file content is accurately tested, reflecting changes in the upload and download logic.
* Refactor: Update EditNodeComponent to hide table options and block hide
* 🐛 (model.py): fix issue with search_documents method not returning empty list when search_query is empty
♻️ (model.py): refactor search_documents method to handle search_query logic more efficiently
📝 (chroma.py): add typing_extensions override import for build_vector_store method to improve code readability
* ✨ (tests): add unit tests for ChromaVectorStoreComponent
- Introduced new test suite for ChromaVectorStoreComponent, covering various functionalities including database creation, collection management, similarity and MMR searches, and duplicate handling.
- Implemented tests for creating collections with and without data, ensuring proper functionality and data integrity.
- Verified search capabilities with different query types and result limits, enhancing overall test coverage for the component.
* fix: remove unnecessary whitespace in model.py and add missing import in chroma.py
* fix: mypy error module has no attribute "timeout"
* ♻️ (async_helpers.py): Remove unnecessary type hint ignore comment from timeout_context function
* 📝 (async_helpers.py): add a comment with issue reference PGH003 to document the reason for ignoring type checking in timeout_context function
* ♻️ (async_helpers.py): Remove unnecessary type hint comment to improve code readability and maintainability
* ♻️ (async_helpers.py): Add type ignore comment to suppress miscellaneous type error for timeout_context function
* ♻️ (async_helpers.py): refactor timeout_context function to remove unnecessary type ignore comments and improve code readability
* [autofix.ci] apply automated fixes
* 📝 (async_helpers.py): add a blank line for better code readability and consistency
* fix: mypy error: incompatible redefinition
---------
Co-authored-by: anovazzi1 <otavio2204@gmail.com>
Co-authored-by: Gabriel Luiz Freitas Almeida <gabriel@langflow.org>
Co-authored-by: italojohnny <italojohnnydosanjos@gmail.com>
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
* feat: add MockLanguageModel for testing language model interactions
- Introduced a new mock implementation of BaseLanguageModel to facilitate unit testing.
- Implemented methods to simulate responses and handle message processing.
- Added functionality to generate mock responses based on input messages.
- Ensured compatibility with existing language model interfaces for seamless integration in tests.
* refactor: simplify test_structured_output_component by replacing MagicMock with MockLanguageModel
- Removed extensive mock implementations of BaseLanguageModel in tests.
- Replaced instances of MagicMock with a new MockLanguageModel for better clarity and maintainability.
- Streamlined test cases for structured output generation and error handling.
- Ensured compatibility with existing test structure while enhancing readability.
* fix: rename utils.py to useful.py to avoid namespace conflict
---------
Co-authored-by: italojohnny <italojohnnydosanjos@gmail.com>
* fix(tests): update supported versions in constants.py to include new releases
- Updated SUPPORTED_VERSIONS to reflect the latest versions: 1.0.19, 1.1.0, and 1.1.1.
- This change ensures that tests are aligned with the most current versioning.
* refactor(tests): update file_names_mapping for input, output, and prompt components
- Removed outdated version entries (1.0.15 to 1.0.18) and added new versions (1.1.0 and 1.1.1) for ChatInput, TextInput, ChatOutput, and Prompt components.
- Ensures test cases are aligned with the latest component versions for improved accuracy and reliability.
* fix(tests): update file_names_mapping in TestTextOutputComponent to reflect new versioning
- Removed outdated version entries (1.0.17, 1.0.18) and added new versions (1.1.0, 1.1.1) for TextOutput component.
- Ensures test cases are aligned with the latest component versions for improved accuracy and reliability.
fix(tests): update ComponentTestBase to skip tests when file_names_mapping is empty
- Modified the test method to skip the test instead of raising an AssertionError when no file names mapping is provided.
- Improved user feedback by providing a clear message indicating the reason for skipping the test.
* feat: improve gitloader component
* [autofix.ci] apply automated fixes
* feat(git.py): refactor GitLoaderComponent to support asynchronous operations and improve temporary directory management
- Convert methods to async to enhance performance with file operations.
- Implement async context manager for handling temporary clone directories.
- Update binary file check and content filtering to be asynchronous.
* fix(git.py): enhance GitLoaderComponent with improved file filtering and binary check
- Refactor file filtering logic to utilize fnmatch for pattern matching.
- Introduce a new method to check for binary files based on null byte detection.
- Update content filtering to handle exceptions more gracefully.
- Modify temporary directory cleanup to use rmdir instead of remove for better directory management.
- Adjust load_documents method to utilize asyncio.to_thread for lazy loading of documents.
* refactor(git.py): enhance GitLoaderComponent with improved file filtering and binary check
- Refactor binary file check to be synchronous and handle exceptions more gracefully.
- Introduce new methods for checking file patterns and content patterns, allowing for more flexible filtering.
- Consolidate filtering logic into a single method for better maintainability.
- Update load_documents method to run lazy loading in a separate thread for improved performance.
* feat(tests): add unit tests for GitLoaderComponent file filtering and binary detection
- Introduced new test suite for GitLoaderComponent, including tests for binary file detection and file pattern matching.
- Implemented temporary file creation for testing various file types and permissions.
- Added tests for combined filtering functionality, ensuring robust handling of file and content patterns.
* refactor(git.py): improve pattern handling and content filtering in GitLoaderComponent
- Refactored pattern handling to use a more descriptive variable name `pattern_list` for clarity.
- Enhanced content filtering by ensuring proper encoding when reading file content.
- Updated regex validation to include a test string check for better error handling.
- Removed unnecessary comments to streamline the code and improve readability.
* fix: exception TypeError
TypeError: object async_generator can't be used in 'await' expression
---------
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
Co-authored-by: Gabriel Luiz Freitas Almeida <gabriel@langflow.org>
Co-authored-by: italojohnny <italojohnnydosanjos@gmail.com>
* Added Minimized field to backend to make component start as minimized
* Added minimized as true to chat components
* Added showNode default value as the opposite of minimized
* Changed starter projects to new components
* [autofix.ci] apply automated fixes
* [autofix.ci] apply automated fixes (attempt 2/3)
* Fixed Freeze and DecisionFlow tests
* Fixed other tests that involved chatoutput and chatinput
* Restored tests that didnt fail
* Fixed stop playground test
---------
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
* fix: update pre-commit configuration for ruff formatting args
* fix: update variable type constant from GENERIC_TYPE to CREDENTIAL_TYPE
* feat: enhance variable service to handle decryption for generic type and update default variable type to CREDENTIAL_TYPE
* feat: add abstract method to retrieve all variables for a user in VariableService
* feat: implement get_all method in KubernetesSecretService to retrieve and decrypt user variables
* refactor: update variable tests to use fixtures for generic and credential types
- Renamed and refactored test fixtures for better clarity and reusability.
- Updated tests to utilize `generic_variable` and `credential_variable` fixtures instead of hardcoded values.
- Enhanced assertions to ensure correct handling of variable types, including encryption for credential variables and decryption for generic variables.
- Improved test structure for creating, reading, updating, and deleting variables, ensuring consistency across test cases.
* refactor: update get_all method signatures in variable services to return VariableRead
- Changed return type of the get_all method in VariableService, KubernetesSecretService, and DatabaseVariableService from list[Variable | None] to list[VariableRead].
- This update enhances type consistency across variable services and aligns with the new VariableRead model for improved data handling.
* fix: update variable type assertion in test_update_variable to CREDENTIAL_TYPE
- Changed the assertion in the `test_update_variable` test to verify that the result type is now `CREDENTIAL_TYPE` instead of `GENERIC_TYPE`.
- This update aligns the test with recent changes in variable type handling, ensuring accurate validation of variable updates.
* fix: update variable type assertion in test_create_variable to CREDENTIAL_TYPE
- Changed the assertion in the `test_create_variable` test to verify that the result type is now `CREDENTIAL_TYPE` instead of `GENERIC_TYPE`.
- This update ensures consistency with recent changes in variable type handling and improves the accuracy of the test validation.
* add dataframe operations component
* populate entire new column with value
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* [autofix.ci] apply automated fixes
* Add unit tests for DataFrame operations in `test_dataframe_operations.py`
* **Import modules**
- Import `pytest` and `pandas` for testing DataFrame operations
* **Define test cases**
- Define test cases for edge cases like empty DataFrames and invalid column names
- Include tests for operations like "Head", "Tail", and "Replace Value"
- Use `pytest.mark.parametrize` to test multiple operations with different inputs
- Add detailed assertions to verify the correctness of DataFrame operations
* [autofix.ci] apply automated fixes
* Remove test cases for DataFrame operations from `test_dataframe_operations.py`. This deletion includes all unit tests related to various DataFrame operations such as adding, dropping, filtering, and renaming columns, as well as handling edge cases like empty DataFrames and invalid operations. The removal streamlines the test suite by eliminating outdated or redundant tests.
* Add unit tests for DataFrame operations in
- Introduced a new test file for organizing test components.
- Updated import paths for to reflect the new module structure.
- Refactored test cases to use for better readability and maintainability.
- Enhanced assertions in tests for various DataFrame operations, including handling of empty DataFrames and invalid operations.
- Improved code formatting for consistency and clarity.
* Refactor DataFrameOperationsComponent for improved readability and maintainability
- Consolidated import statements for clarity.
- Renamed variable `df` to `dataframe_copy` for better understanding.
- Streamlined the `perform_operation` method by replacing `elif` with `if` statements for clearer logic flow.
- Enhanced error message for unsupported operations to improve debugging.
These changes aim to enhance the code structure and make future modifications easier.
* Update unit tests for DataFrame operations in `test_dataframe_operations.py`
- Modified expected values in parameterized tests for various DataFrame operations, including "Add Column", "Filter", "Sort", "Head", "Tail", and "Replace Value" to reflect new test scenarios.
- Adjusted assertions to ensure they correctly validate the output of operations, particularly for lists of expected values.
- Enhanced error handling in the test for invalid operations to provide clearer feedback on unsupported operation types.
These changes improve the accuracy and robustness of the unit tests for DataFrame operations.
* Refactor DataFrameOperationsComponent methods to return DataFrame instances consistently
---------
Co-authored-by: Gabriel Luiz Freitas Almeida <gabriel@langflow.org>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
* refactor: improve type checking and initialization in BaseComponent class
- Moved UUID import to TYPE_CHECKING for better type hinting without runtime overhead.
- Reorganized the initialization of class attributes within the __init__ method for clarity and consistency.
- Enhanced the __setattr__ method to handle potential KeyError and AttributeError when checking immutability of _user_id.
* refactor: streamline CustomComponent initialization and enhance attribute management
- Introduced ClassVar constants for better clarity and organization.
- Removed redundant class attributes and restructured instance attribute initialization for improved readability.
- Ensured that instance-specific attributes are initialized before calling the parent class's constructor.
- Enhanced the overall structure of the CustomComponent class to facilitate future maintenance and development.
* refactor: enhance Component initialization and attribute management
- Reorganized the __init__ method to initialize instance-specific attributes before calling the parent class constructor.
- Introduced new instance attributes for better management of inputs, outputs, and internal state.
- Improved clarity by processing input kwargs and ensuring unique ID assignment for components.
- Streamlined the setup process for inputs and outputs, enhancing overall structure and maintainability.
* test: Add unit tests for ChatInput component to verify attribute independence
* add style for message feedback
* add backend suprot to new feature
* update frontend interface and add handle function
* [autofix.ci] apply automated fixes
* Update tooltip content for bot messages
* Update evaluation icons styling
* Add custom thumb icons for thumbs up and thumbs down
* Add custom thumb icons for thumbs up and thumbs down
* Update thumb icons based on evaluation value
* [autofix.ci] apply automated fixes
* Update property name for positive feedback
* Update property name for positive feedback
* feat: Add data-testid attributes to helpful and not helpful buttons and update test of playground to include new functionality
* update test to include new message features
* test: add unit test for database url validation
* feat: add function to validate database urls
* refactor: use new database url validation function
* fix: ruff errors
* refactor: validate database urls using sqlalchemy
* test: add more cases for database url validation
* Update sqlmodel dependency to version 0.0.20 in pyproject.toml
* Handle UUID conversion for message IDs in memory update logic
* Refactor Alembic migrations to use `sa.inspect` and update GUID to Uuid type
* refactor: Change flow_id parameter type from str to uuid.UUID in graph building functions
* refactor: Ensure UUID handling for flow_id and user_id across various services and models
* refactor: improve UUID handling and graph caching for compatibility with sqlmodel 0.0.20
* fix: update message assertion in component events test
* chore: update sqlmodel dependency to version 0.0.22 in uv.lock and pyproject.toml
* fix: enhance flow_id validation to ensure valid UUID format in MessageBase model
* fix: add error handling for cache directory cleanup
* refactor: improve flow_id type handling in message storage
* refactor: enhance flow_id handling in message functions to support UUID type
* refactor: integrate Properties into message creation in component event tests
* update test durations
* fix: correct flow_id parameter in database query
* refactor: update session_id and flow_id parameters to support UUID type across message handling functions and models
* fix: handle message data update in SQLModel update method
* refactor: improve flow_id assignment in message update method to enhance UUID handling