* Add fixture for creating flow component in tests
* Add test for reading flows with components only in test_database.py
* Add `components_only` parameter to filter flows by components in API endpoint
* Fix flaky tests in `test_schema.py` by using sets for type comparisons
- Updated `post_process_type` function assertions to use sets for more reliable type comparisons.
- Adjusted imports for better code organization.
* Fix import order in test_database.py
* [autofix.ci] apply automated fixes
---------
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
* 📝 (constants.ts): increase maxSizeFilesInBytes constant value from 10MB to 100MB to allow larger file uploads
* 🐛 (inputFileComponent): fix bug in setting the maximum file size alert message to display the correct file size limit of 100 bytes instead of 10 bytes
* 📝 (schemas.py): Add a new field_serializer method to serialize data in VertexBuildResponse class
📝 (schemas.py): Add a new truncate_text helper function to safely truncate text in nested dictionaries
📝 (model.py): Add a new field_serializer method to serialize outputs in TransactionBase class
📝 (model.py): Add a new truncate_text helper function to safely truncate text in nested dictionaries
📝 (model.py): Add a new field_serializer method to serialize data and artifacts in VertexBuildBase class
📝 (model.py): Add a new truncate_text helper function to safely truncate text in nested dictionaries
* 🐛 (schemas.py): fix truncation length of text fields to 10 characters instead of 99999
🐛 (model.py): fix truncation length of text fields to 10 characters instead of 99999
🐛 (model.py): fix truncation length of text fields to 10 characters instead of 99999
🐛 (index.tsx): truncate resultMessage to 99999 characters and add message if text is too long
* 🔧 (switchOutputView/index.tsx): Use useMemo to memoize resultMessage transformations for performance optimization
* 🐛 (model.py): Fix typo in the path for 'base_retriever' data field
🐛 (model.py): Fix typo in the path for 'base_retriever' data field
🐛 (model.py): Fix typo in the path for 'base_retriever' data field
🐛 (model.py): Fix typo in the path for 'base_retriever' data field
🐛 (index.tsx): Fix logic to correctly handle resultMessageMemoized when it is an object
* 📝 (model.py): refactor truncate_text function to truncate_long_strings for better clarity and consistency
📝 (model.py): update serialize_outputs and serialize_artifacts functions to use truncate_long_strings for string truncation
📝 (model.py): introduce MAX_TEXT_LENGTH constant for defining the maximum length of text to truncate in the models
* 📝 (schemas.py): refactor serialize_data method in VertexBuildResponse class to use a new helper function truncate_long_strings for better code readability and maintainability
* 🔧 (schemas.py): Move the `truncate_long_strings` function to a separate module to improve code organization and reusability
🔧 (model.py): Import the `truncate_long_strings` function from the correct module to fix the reference error
🔧 (model.py): Import the `truncate_long_strings` function from the correct module to fix the reference error
* 📝 (util.py): add function truncate_long_strings to recursively truncate long strings in dictionaries and lists to prevent exceeding the maximum text length.
* 📝 (constants.py): add constant MAX_TEXT_LENGTH with value 99999 for defining maximum text length allowed in the application
* 📝 (model.py): update import path for truncate_long_strings function to match new location in util module
* ✨ (test_truncate_long_strings_on_objects.py): Add unit tests for the function truncate_long_strings to ensure correct behavior when truncating long strings in various data structures
🐛 (switchOutputView/index.tsx): Fix truncation logic to correctly truncate long strings by adding ellipsis at the end instead of displaying additional text about truncation.
* [autofix.ci] apply automated fixes
* ✨ (test_truncate_long_strings_on_objects.py): Update import path for truncate_long_strings function
📝 (test_truncate_long_strings_on_objects.py): Add additional tests for handling negative, zero, and small max_length values in truncate_long_strings function
* ♻️ (schemas.py): refactor import statement to use the updated module name util_strings instead of util for better clarity and consistency.
* 📝 (model.py): Update import path for util_strings module to fix module import error
📝 (util.py): Remove redundant code for truncating long strings and move it to a separate util_strings module for better organization and separation of concerns.
* 📝 (schemas.py): refactor serialize_data method to handle both BaseModel and non-BaseModel data inputs in VertexBuildResponse class
* 📝 (util_strings.py): Update util_strings.py to improve string truncation function for dictionaries and lists
🔧 (test_truncate_long_strings_on_objects.py): Update test cases for string truncation function to cover additional scenarios and edge cases
* Update src/backend/base/langflow/utils/util_strings.py
Co-authored-by: Gabriel Luiz Freitas Almeida <gabriel@langflow.org>
* 📝 (vite.config.mts): update environment variable MAX_FILE_SIZE to be defined in vite config for frontend to use in the application.
* 📝 (constants.ts): update maxSizeFilesInBytes constant to use process.env.MAX_FILE_SIZE environment variable for configurable file size limit
📝 (constants.ts): add MAX_TEXT_LENGTH constant with a value of 99999 for maximum text length limit
* 📝 (switchOutputView/index.tsx): import MAX_TEXT_LENGTH constant from shared constants file to improve code organization and reusability
* ✨ (langflow/__main__.py): add support for defining maximum file size for upload in MB to improve user experience and prevent large file uploads
* 🐛 (files.py): add validation to check if uploaded file size exceeds the maximum allowed size before processing it
* ✨ (schemas.py): add max_file_size_upload field to ConfigResponse schema to handle maximum file size allowed for upload
* 🔧 (vite.config.mts): remove MAX_FILE_SIZE environment variable configuration as it is no longer needed
* ✨ (base.py): introduce max_file_size_upload setting to limit the file size for uploads in MB
* 🐛 (util.py): add support for setting max_file_size_upload in update_settings function to allow configuring maximum file size for uploads
* 📝 (inputFileComponent/index.tsx): add support for retrieving max file size upload from utility store to improve code modularity and reusability
🐛 (inputFileComponent/index.tsx): fix error handling logic to display error message when uploading a file fails
* 📝 (constants.ts): remove maxSizeFilesInBytes constant as it is no longer used and update MAX_TEXT_LENGTH constant to a higher value
* ✨ (use-get-config.ts): add functionality to set max file size upload value from config response
* ✨ (utilityStore.ts): introduce maxFileSizeUpload property and setMaxFileSizeUpload function to handle maximum file size upload in bytes
* ✨ (frontend): introduce maxFileSizeUpload property and setMaxFileSizeUpload method to handle maximum file size upload functionality in the UtilityStoreType
* ♻️ (util_strings.py): refactor truncate_long_strings function to improve code readability and consistency by removing unnecessary whitespace and aligning assignment operators.
* 🐛 (files.py): fix formatting issue in the raise statement to improve code readability and maintain consistency
---------
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
Co-authored-by: Gabriel Luiz Freitas Almeida <gabriel@langflow.org>
* Fix: Handle group nodes in graph sorting
- Added `get_root_of_group_node` function to identify the root of a group node.
- Updated `sort_up_to_vertex` to use `get_root_of_group_node` for handling group nodes.
- Modified `__filter_vertices` to pass `parent_node_map` to `sort_up_to_vertex`.
* Refactor: Update NodeStatus component to handle group nodes and improve build status handling
* [autofix.ci] apply automated fixes
* Update type hint for parent_node_map in sort_up_to_vertex function
---------
Co-authored-by: anovazzi1 <otavio2204@gmail.com>
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
* chore: drop duckdb usage and migrations
* [autofix.ci] apply automated fixes
* Add DefaultModel and MessageResponse classes with custom JSON serialization and validation
- Introduced `DefaultModel` class with custom JSON encoders and serialization methods.
- Added `MessageResponse` class inheriting from `DefaultModel` with fields for message details and custom validators/serializers.
- Enhanced file handling and timestamp formatting in `MessageResponse`.
* Refactor: Replace `MessageModelResponse` with `MessageResponse` in monitor API
- Updated import statements to use `MessageResponse` from `langflow.schema.message`.
- Modified `/messages` endpoint to return `list[MessageResponse]` instead of `list[MessageModelResponse]`.
- Adjusted response model validation to use `MessageResponse`.
---------
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: Refactor file path rewriting logic
This commit refactors the logic for rewriting file paths in the `rewrite_file_path` function. The function now splits the file path by "/" and checks if it has at least two parts. If it does, it creates a consistent file path by concatenating the last two parts. If not, it returns the original file path. This change improves the consistency of file paths in the codebase.
Refactor the file path rewriting logic in the `rewrite_file_path` function.
* refactor: Refactor file path rewriting logic and treat file paths in InterfaceVertex
* Refactor file path rewriting logic and treat file paths in InterfaceVertex
* Refactor file path rewriting logic and treat file paths in InterfaceVertex
* Refactor file path rewriting logic and treat file paths in InterfaceVertex
* ✨ (general-bugs-shard-3836.spec.ts): update test description to be more specific about the tool used for sending images on chat
📝 (general-bugs-shard-3836.spec.ts): remove unused import of readFileSync from fs module
* ✅ (test_rewrite_file_path.py): add unit tests for the rewrite_file_path function to ensure correct behavior with various file path scenarios
* ♻️ (utils.py): refactor file_path function to handle both forward and backward slashes and extract file path after drive letter if present
* style: fix single quotes, commas, and spaces
---------
Co-authored-by: italojohnny <italojohnnydosanjos@gmail.com>
## Changes Overview
This PR introduces several enhancements to our data handling components and removes some legacy code:
1. **CreateData and UpdateData Components**:
- Added text key name validation
- Enhanced UpdateData to support updating and appending multiple data points
- Implemented optional text key validator for dynamically loaded data
- Updated component names, descriptions, and default values
2. **New SelectData Component**:
- Implemented SelectDataComponent for data selection from a list
- Added inputs for data list and index selection
- Implemented error handling for out-of-range index selection
3. **Code Cleanup**:
- Removed legacy post_code_processing methods from CreateDataComponent and UpdateDataComponent
- Removed corresponding test cases
4. **Testing**:
- Added unit tests for CreateData and UpdateData components
- Updated test file names for consistency
* refactor: Add cascade delete functionality for flows
This commit adds a new function `cascade_delete_flow` to the `utils.py` file in the `langflow.api` module. This function is responsible for deleting related records when a flow is deleted. It uses the `delete` method from SQLAlchemy to delete records from the `TransactionTable` and `VertexBuildTable` tables based on the flow ID. Finally, it deletes the flow record itself from the `Flow` table.
The function is wrapped in a try-except block to handle any exceptions that may occur during the deletion process. If an exception is raised, a `RuntimeError` is raised with an appropriate error message.
This refactor improves the code by encapsulating the cascade delete logic in a separate function, making it more modular and easier to maintain.
* refactor: Add cascade delete functionality for flows
* refactor: Add cascade delete functionality for flows and folders
* refactor: Remove unused delete_flow_by_id function
* refactor: Add cascade delete functionality for flows and folders
* [autofix.ci] apply automated fixes
---------
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
* update templates
* update to include global variables
* Refactor code to include global variables
* update PythonREPLTool.py
* [autofix.ci] apply automated fixes
* update pythonREPL and example
* Refactor code to handle decoding chat messages and handle decoding errors
* ✨ (Simple Agent.spec.ts): Add test case to fill textarea with specific text for testing purposes
📝 (Simple Agent.spec.ts): Update test case descriptions for better clarity and accuracy
✅ (Simple Agent.spec.ts): Update test assertions to match the expected behavior of the test case
* [autofix.ci] apply automated fixes
* 🐛 (Dynamic Agent.spec.ts): fix environment variable name from BRAVE_SEARCH_API_KEY to SEARCH_API_KEY for consistency and clarity
💡 (Dynamic Agent.spec.ts): add additional test cases to improve test coverage and ensure specific text is not present in the chat output
* 🔧 (.github/workflows/typescript_test.yml): update environment variable name from BRAVE_SEARCH_API_KEY to SEARCH_API_KEY for consistency
🐛 (Travel Planning Agent.spec.ts): fix test to skip if SEARCH_API_KEY is not available in the environment variables
* ✅ (Simple Agent.spec.ts): update expected count of python words to 3 for accurate test validation
* updating search tools
* [autofix.ci] apply automated fixes
* change examples
* update travel planning to include global variable
* Refactor search API component to include result limiting
* 📝 (Travel Planning Agent.spec.ts): remove unnecessary empty line to improve code readability and consistency
* test: adjusts asserts to make the test pass successfully
---------
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
Co-authored-by: cristhianzl <cristhian.lousa@gmail.com>
Co-authored-by: italojohnny <italojohnnydosanjos@gmail.com>
* Fix textarea with password visual bug
* Changed password field to default to none
* updated sanitizedHTMLWrapper to receive ref
* fixed sanitizedhtmlwrapper type
* Added back to scroll position and cursor position on Chrome
* [autofix.ci] apply automated fixes
* Fix position of password
* Fixed tests
* Fixed examples
* Fixed test schema
---------
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
Co-authored-by: anovazzi1 <otavio2204@gmail.com>
* Refactor YfinanceToolComponent to inherit from LCToolComponent and remove unused outputs
* Refactor `PythonREPLToolComponent` to use new input configuration and update method signatures
* Add functions to handle dict values in ATTR_FUNC_MAPPING for '_outputs_maps' and '_inputs'
* Handle '_outputs_maps' argument in frontend node creation
* Add unit test for custom component subclassing from LCToolComponent
* Add input and output handling to PythonREPLToolComponent
- Introduced `input_value` to `inputs` for capturing user input.
- Added `outputs` to define the output structure, including `api_run_model` and `tool` for backward compatibility.
- Implemented `run_model` method to execute the tool and return results as `Data`.
* Add input and output handling to YfinanceToolComponent
- Introduced `MessageTextInput` for user queries.
- Added `Output` definitions for `api_run_model` and `tool` methods.
- Implemented `run_model` method to execute tool with user input.
* Add input and output definitions to YfinanceTool for better data handling
* Update error message to use display_name instead of vertex_type in edge validation
* Add unit test for YfinanceToolComponent template output validation
* Refactor tool components to include 'Data' output and update input types
- Added 'Data' output type to 'Agent Flow', 'Sequential Agent', and 'Complex Agent' starter projects.
- Updated input types to use 'MessageTextInput' and 'MultiselectInput' for better input handling.
- Refactored code to align with new input and output structures, ensuring backward compatibility.
* Add unit test for PythonREPLToolComponent template validation
* test: disblable test
---------
Co-authored-by: italojohnny <italojohnnydosanjos@gmail.com>
* first attempt to edit variables on the data table
* refactor: Rename AddNewVariableButton to GlobalVariableModal and update its usage
The component AddNewVariableButton has been renamed to GlobalVariableModal to better reflect its purpose. The component is now used in multiple places, including the GlobalVariablesPage and InputGlobalComponent. This change improves code clarity and consistency.
* fix: fix apply to fields on table edit option
* refactor: Trim field names before checking for availability in GlobalVariableModal and GlobalVariablesPage
Trim field names before checking for availability in GlobalVariableModal and GlobalVariablesPage to ensure consistent comparison and avoid any potential issues with leading or trailing spaces.
* Refactor GlobalVariablesPage to remove unused cellRenderer in the "value" field
* [autofix.ci] apply automated fixes
* Add validation for 'value' field in VariableRead model and import CREDENTIAL_TYPE
- Introduced a field validator for the 'value' field in the VariableRead model to handle cases where the variable type is CREDENTIAL_TYPE.
- Added necessary import for CREDENTIAL_TYPE.
- Removed an unnecessary blank line in the variable API.
* Add constants for credential and generic types in variable service
* Refactor import statements in `kubernetes.py` to improve module organization
* Refactor imports in test_service.py for better organization
* refactor: Update import statements in variable.py for better organization
* Refactor import and reorder fields in VariableRead model
- Changed import of `CREDENTIAL_TYPE` from `service` to `constants` module.
- Reordered fields in `VariableRead` model to place `type` before `value`.
* ✨ (userSettings.spec.ts): Add additional randomName variables for testing purposes
📝 (userSettings.spec.ts): Update test to interact with global variables and improve readability and maintainability of the code
* test: fix test_create_variable
---------
Co-authored-by: Gabriel Luiz Freitas Almeida <gabriel@langflow.org>
Co-authored-by: cristhianzl <cristhian.lousa@gmail.com>
Co-authored-by: italojohnny <italojohnnydosanjos@gmail.com>
* Refactor test fixtures and imports for optimization
- Reordered and optimized imports in `conftest.py`.
- Changed return statements to yield in `basic_graph` and `create_webhook` fixtures for better resource management.
- Added cleanup step to `create_webhook` fixture to delete created webhook after test completion.
* Refactor imports and add placeholder client fixture in test_ChatOllama_component.py
* Add pytest fixture 'client' to test_graph.py
* Add pytest fixture 'client' to test_callback_graph.py for test optimization
* Add 'unit_tests_looponfail' target to Makefile for running unit tests with loop-on-fail option
* Optimize test durations and update test cases in various modules
* Fixes copy of component outputs
* Fix issue with copying outputs in custom components
- Update loop to iterate over `_outputs.values()` instead of `outputs` to ensure correct attribute setting.
* Refactor output handling in custom component to use dictionary values
- Updated methods to iterate over `_outputs.values()` instead of `outputs`.
- Ensured consistent access to output values across various methods.
- Fixed potential issues with output value resetting and state model building.
* Fix incorrect attribute reference in set_output_value method
* Add missing import for CustomComponent in test_custom_component.py
* Refactor `test_read_flow` to generate unique flow names for each test run
* Refactor: Rename `_outputs` to `_outputs_map` in custom component
- Updated all references of `_outputs` to `_outputs_map` in `component.py` to improve clarity and consistency.
- Adjusted related methods and attributes in `base.py` to align with the new naming convention.
* Fix output handling in custom component
- Moved `_reset_all_output_values` call to ensure outputs are reset after initialization.
- Updated attribute access to use `_outputs_map` instead of `_outputs` for consistency.
---------
Co-authored-by: Gabriel Luiz Freitas Almeida <gabriel@langflow.org>
* refactor: update deprecated call to get_actions
* Update composio-langchain dependency to version 0.5.13 in pyproject.toml
* Downgrade `composio-langchain` dependency to version `0.5.9` in `pyproject.toml`
* Add missing import for CustomComponent in test_custom_component.py
* refactor: Update MessageBase text attribute based on isinstance check.
* feat: Add update_message function to update a message in the database.
* refactor(chat): Update imports and remove unnecessary config method in ChatComponent.
* refactor: Add stream_message method to ChatComponent.
* refactor: Update method call in ChatOutput component.
* feat: Add callback function to custom component and update build_results signature.
* feat: Add callback parameter to instantiate_class function.
* feat(graph): Add callback functions for sync and async operations.
* feat: Add callback function support to vertex build process.
* feat: Add handling for added message in InterfaceVertex class.
* feat: Add callback support to Graph methods.
* feat(chat): Add callback function to build_vertices function.
* refactor: Simplify update_message function and use session_scope for session management.
* fix: Call set_callback method if available on custom component.
* refactor(chat): Update chat message chunk handling and ID conversion.
* feat: Add null check before setting cache in build_vertex_stream function.
* refactor: Fix send_event_wrapper function and add callback parameter to _build_vertex function.
* refactor: Simplify conditional statement and import order in ChatOutput.
* refactor: move log method to Component class.
* refactor: Simplify CallbackFunction definition.
* feat: Initialize _current_output attribute in Component class.
* feat: store current output name in custom component during processing.
* feat: Add current output and component ID to log data.
* fix: Add condition to check current output before invoking callback.
* refactor: Update callback to log_callback in graph methods.
* feat: Add test for callback graph execution with log messages.
* update projects
* fix(chat.py): fix condition to check if message text is a string before updating message text in the database
* refactor(ChatOutput.py): update ChatOutput class to correctly store and assign the message value to ensure consistency and avoid potential bugs
* refactor(chat.py): update return type of store_message method to return a single Message object instead of a list of Messages
refactor(chat.py): update logic to correctly handle updating and returning a single stored message object instead of a list of messages
* update starter projects
* refactor(component.py): update type hint for name parameter in log method to be more explicit
* feat: Add EventManager class for managing events and event registration
* refactor: Update log_callback to event_manager in custom component classes
* refactor(component.py): rename _log_callback to _event_manager and update method call to on_log for better clarity and consistency
* refactor(chat.py): rename _log_callback method to _event_manager.on_token for clarity and consistency in method naming
* refactor: Rename log_callback to event_manager for clarity and consistency
* refactor: Update Vertex class to use EventManager instead of log_callback for better clarity and consistency
* refactor: update build_flow to use EventManager
* refactor: Update EventManager class to use Protocol for event callbacks
* if event_type is not passed, it uses the default send_event
* Add method to register event functions in EventManager
- Introduced `register_event_function` method to allow passing custom event functions.
- Updated `noop` method to accept `event_type` parameter.
- Adjusted `__getattr__` to return `EventCallback` type.
* update test_callback_graph
* Add unit tests for EventManager in test_event_manager.py
- Added tests for event registration, including default event type, empty string names, and specific event types.
- Added tests for custom event functions and unregistered event access.
- Added tests for event sending, including JSON formatting, empty data, and large payloads.
- Added tests for handling JSON serialization errors and the noop function.
* revert chatOutput change
* Add validation for event function in EventManager
- Introduced `_validate_event_function` method to ensure event functions are callable and have the correct parameters.
- Updated `register_event_function` to use the new validation method.
* Add tests for EventManager's event function validation logic
- Introduce `TestValidateEventFunction` class to test various scenarios for `_validate_event_function`.
- Add tests for valid event functions, non-callable event functions, invalid parameter counts, and parameter type validation.
- Include tests for handling unannotated parameters, flexible arguments, and keyword-only parameters.
- Ensure proper warnings and exceptions are raised for invalid event functions.
* Add type ignore comment to lambda function in test_event_manager.py
* refactor: Update EventManager class to use Protocol for event callbacks
* refactor(event_manager.py): simplify event registration and validation logic to enhance readability and maintainability
feat(event_manager.py): enforce event name conventions and improve callback handling for better error management
* refactor(chat.py): standardize event_manager method calls by using keyword arguments for better clarity and consistency
refactor(chat.py): extract message processing logic into separate methods for improved readability and maintainability
fix(chat.py): ensure proper handling of async iterators in message streaming
refactor(component.py): simplify event logging by removing unnecessary event name parameter in on_log method call
* update event manager tests
* Add callback validation and manager parameter in EventManager
- Introduced `_validate_callback` method to ensure callbacks are callable and have the correct parameters.
- Updated `register_event` to include `manager` parameter in the callback.
* Add support for passing callback through the Graph in test_callback_graph
* fix(event_manager.py): update EventCallback signature to include manager parameter for better context in event handling
* feat: Add NoteDraggableComponent to extraSidebarComponent
This commit adds the NoteDraggableComponent to the extraSidebarComponent in the FlowPage. The NoteDraggableComponent allows users to drag and drop sticky note icons onto the page. When a note is dragged, its data is set as "note" in the dataTransfer object. The note has a default text value of null and a noteColor of "yellow". This component enhances the user experience by providing a convenient way to add notes to the page.
* feat: Add NoteNode component for displaying and editing notes
This commit adds the NoteNode component, which is responsible for displaying and editing notes in the FlowPage. The NoteNode component includes functionality for resizing, selecting, and editing the note text. It enhances the user experience by providing a convenient way to add and manage notes on the page.
* feat: Add NoteNode and NoteDraggableComponent for managing notes in FlowPage
This commit adds the NoteNode component, responsible for displaying and editing notes in the FlowPage. It also introduces the NoteDraggableComponent, allowing users to drag and drop sticky note icons onto the page. These components enhance the user experience by providing a convenient way to add and manage notes on the page.
* feat: Add DRAG_EVENTS_CUSTOM_TYPESS constant for custom drag event types
This commit adds the DRAG_EVENTS_CUSTOM_TYPESS constant to the constants file. It defines custom drag event types for the generic node and note node components. This constant enhances the code by providing a centralized place to manage and reference the custom drag event types.
* feat: Add support functions for custom drag event types
* feat: Add support for custom drag event types in PageComponent
This commit adds support for custom drag event types in the PageComponent of the FlowPage. It imports the necessary functions from the utils file and uses them to check if the dragged data has supported node types. This enhancement improves the drag and drop functionality by allowing only supported node types to be dropped on the page.
* feat: Add NoteDataType for managing note data in FlowPage
* refactor: create new types for noteNode
* feat: Update NoteNode component to use new NoteDataType
The NoteNode component in the NoteNode/index.tsx file has been updated to use the new NoteDataType for managing note data in the FlowPage. This change ensures consistency and improves the codebase.
* node with title and description
* feat: Add "note" alias for StickyNote in nodeIconsLucide
This commit adds the "note" alias for the StickyNote icon in the nodeIconsLucide object in the styleUtils.ts file. This alias allows for more intuitive usage of the StickyNote icon by providing an alternative name. It improves code readability and maintainability.
* refactor: Update NodeDescription component to use emptyPlaceholder prop
The NodeDescription component in the GenericNode/components/NodeDescription/index.tsx file has been updated to use the emptyPlaceholder prop. This change allows for more flexibility in customizing the placeholder text when the description is empty. It improves code reusability and enhances the user experience.
* refactor: Remove unused Textarea import in NoteNode component
* add initial resize to note component
* [autofix.ci] apply automated fixes
* refactor: add code validation functionality on tanstack mutation (#3469)
* Added Validate endpoint
* Added API Code Validate type
* Added post validate code hook
* Used mutation instead of API call to validate code
* Removed validate code api call
* refactor: Update NodeName component to use full width in GenericNode
The NodeName component in the GenericNode module has been updated to use the full width of the parent container. This change ensures that the input field or tooltip for the node name occupies the entire available space, improving the visual consistency and user experience.
* refactor: Update NodeDescription component to use full height in GenericNode
The NodeDescription component in the GenericNode module has been updated to use the full height of the parent container. This change ensures that the description text area occupies the entire available space, improving the visual consistency and user experience.
* refactor: Update NodeDescription component to use full height in GenericNode
* refactor: Update NodeDescription component to use full height in GenericNode
* increase size control on note node
* refactor: Update NoteNode component to use constants for min and max dimensions
The NoteNode component in the CustomNodes module has been updated to use the constants for the minimum and maximum dimensions. This change improves code readability and maintainability by centralizing the values in the constants file. The component now uses the NOTE_NODE_MIN_WIDTH, NOTE_NODE_MIN_HEIGHT, NOTE_NODE_MAX_HEIGHT, and NOTE_NODE_MAX_WIDTH constants for setting the dimensions of the NodeResizer and the inline styles. This ensures consistency across the application and makes it easier to adjust the dimensions in the future.
* fix overflow issue
* refactor: update NoteDraggableComponent
The NoteDraggableComponent in the extraSidebarComponent module has been updated to remove unused code and improve functionality. The code for adding a note has been removed as it is no longer needed. Additionally, the component has been updated to use a new design and layout for better user experience. This refactor improves the overall code cleanliness and removes unnecessary clutter.
* refactor: Update NoteNode component to use constants for min and max dimensions
* update component to accept multiple colors
* update note colors
* update min width
* refactor: Update NodeDescription component to accept additional styling options
The NodeDescription component in the GenericNode module has been updated to accept additional styling options. The component now includes the inputClassName, mdClassName, and style props, allowing for more customization of the input and markdown elements. This refactor improves the flexibility and extensibility of the component, making it easier to adapt to different design requirements.
* fix bug on description size
* [autofix.ci] apply automated fixes
* feat: skip note nodes when building vertices"
add check to skip nodes of type NoteNode when building vertices in the graph
this prevents unnecessary processing of note nodes which are not part of the actual graph logic
* fix: update serialization and improve error handling (#3516)
* feat(utils): add support for V1BaseModel in serialize_field
Add support for V1BaseModel instances in the serialize_field function by
checking for a "to_json" method. If the method is not present, return the
attribute values as a dictionary.
* refactor: Update field serializer function and error handling in build_flow function
* fix: no module named 'psycopg2' (#3526)
* fix: add dependecy to Dockerfile
* fix: revert quick fix
* fix: update poetry.lock
* feat: add compression support to frontend and backend (#3484)
* Added compression lib to frontend
* Added compression handling to backend
* Added compression to body requests on frontend
* [autofix.ci] apply automated fixes
---------
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
* refactor: add code validation functionality on tanstack mutation (#3469)
* Added Validate endpoint
* Added API Code Validate type
* Added post validate code hook
* Used mutation instead of API call to validate code
* Removed validate code api call
* refactor: Update NodeName component to use full width in GenericNode
The NodeName component in the GenericNode module has been updated to use the full width of the parent container. This change ensures that the input field or tooltip for the node name occupies the entire available space, improving the visual consistency and user experience.
* fix imports
* refactor: remove unused import in styleUtils.ts
* refactor: update checkOldNodesOutput to include only generic nodes
The checkOldNodesOutput function in reactflowUtils.ts has been updated to include only generic nodes when checking for nodes without outputs. This change ensures that only nodes of type "genericNode" are considered, improving the accuracy of the check and preventing false positives.
* refactor: improve checkOldNodesOutput to include only generic nodes
* [autofix.ci] apply automated fixes
* 📝 (frontend): Add data-testid attribute to elements for testing purposes in NodeDescription, NoteToolbarComponent, NoteNode, and Textarea components
✨ (frontend): Create end-to-end test for interacting with sticky notes including creating, editing, duplicating, and deleting notes
* ✨ (stop-building.spec.ts): Add a 1-second delay after clicking the stop building button to improve user experience
✨ (sticky-notes.spec.ts): Add a new end-to-end test for interacting with sticky notes on the main page to ensure functionality and user interaction with sticky notes.
* refactor: update NodeName and GenericNode components to improve UI and code readability
* [autofix.ci] apply automated fixes
* chore: Update NodeDescription component to use dark mode placeholder color
* chore: Update sidebar note component icon to use StickyNote instead of SquarePen
* refactor(main.py): remove unused imports and middleware related to GZip to simplify code and improve readability
feat(main.py): add middleware for configuring logger to improve logging functionality and centralize logging configuration
* add center postion in the flow
* chore: Update NoteNode icon to use SquarePen instead of StickyNote
* [autofix.ci] apply automated fixes
* chore: Update API base URL
* [autofix.ci] apply automated fixes
* chore: add feature flag for MVPs
* code format
* ✨ (NoteNode/index.tsx): Wrap IconComponent in a div with data-testid "note_icon" for better accessibility and testing
✨ (PageComponent/index.tsx): Add data-testid "add_note" to ControlButton for easier testing and identification
🔧 (sticky-notes.spec.ts): Update test selectors to use new data-testid "note_icon" and "add_note" for improved test reliability
* chore: Update types-markdown to version 3.7.0.20240822
* feat: Add lazy loading for images in sticky-notes.spec.ts
* [autofix.ci] apply automated fixes
* update poetry lock
* [autofix.ci] apply automated fixes
* [autofix.ci] apply automated fixes
* Refactor feature flag import for ENABLE_MVPS across components and tests
* Add skip marker to unimplemented test in test_graph_state_model.py
---------
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
Co-authored-by: Lucas Oliveira <62335616+lucaseduoli@users.noreply.github.com>
Co-authored-by: Gabriel Luiz Freitas Almeida <gabriel@langflow.org>
Co-authored-by: Ítalo Johnny <italojohnnydosanjos@gmail.com>
Co-authored-by: cristhianzl <cristhian.lousa@gmail.com>
* Add cycle detection and handling in graph edge building process
- Introduced `cycles` property to detect cycles in the graph.
- Modified `_build_edges` and `build_edge` methods to differentiate between `CycleEdge` and `Edge`.
- Updated imports and type hints to support new functionality.
* Add cycle detection and handling in graph processing
- Introduced `is_cyclic` property to check for cycles in the graph.
- Added `_snapshot` method for capturing the current state of the graph.
- Modified `layered_topological_sort` to handle cyclic graphs by starting from a specified start component.
- Updated imports and type hints for better code clarity and functionality.
* Refactor tests and components for improved caching and data handling
- Updated `test_vector_store_rag.py` to use `set_on_output` with `cache=True` and simplified assertions.
- Enhanced `test_memory_chatbot.py` with additional assertions for graph structure and caching.
- Simplified `to_data` method in `base.py` to directly return `_data` without JSON serialization.
* Add unit tests for detecting cycles in graph
- Introduce `test_cycle_in_graph` to verify cyclic behavior in the graph.
- Add `test_cycle_in_graph_max_iterations` to ensure max iterations limit is respected.
- Implement `Concatenate` component for testing purposes.
* Disable output cache in graph tests to allow loops to work
* Refactor: Update VertexStates enum values to uppercase and optimize imports in base.py
* Refactor type hints and improve error handling in `Vertex` class
- Replace `ValueError` with `NoComponentInstance` exception for missing component instances.
- Add `target_handle_name` parameter to `_get_result` method for better result retrieval.
- Refactor type hints to use `collections.abc` for `AsyncIterator`, `Generator`, and `Iterator`.
- Update type hints for `extract_messages_from_artifacts` and `successors_ids` methods to use generic `dict` and `list`.
* refactor(log_router.py): change variable type annotation from List to list for better consistency
refactor(utils.py): change variable type annotation from Dict to dict for better consistency
refactor(base.py): change variable type annotation from Optional to Union for better clarity
refactor(callback.py): change variable type annotation from Dict to dict for better consistency
refactor(chat.py): change variable type annotation from Optional to Union for better clarity
refactor(endpoints.py): change variable type annotation from Optional to Union for better clarity
refactor(flows.py): change variable type annotation from List to list for better consistency
refactor(api): update response_model annotations to use lowercase list for consistency and improve readability
refactor(store.py): update type annotations for query parameters in get_components endpoint to improve code readability and maintainability
feat(store.py): add support for type hinting Union and list types in query parameters for better data validation and documentation
* run make format
* refactor(input_mixin.py): update typing annotations for variables to use union types for better clarity and compatibility with Python 3.10
refactor(inputs.py): update typing annotations for variables to use union types and import necessary modules for compatibility with Python 3.10
* refactor(base.py): remove unnecessary imports and update typing for fields in Input and Output classes
feat(base.py): add support for specifying field types more explicitly in Input and Output classes
feat(frontend_node/base.py): enhance typing and field definitions in FrontendNode class
feat(frontend_node/custom_components.py): improve typing and field definitions in CustomComponentFrontendNode and ComponentFrontendNode classes
feat(template/base.py): update typing for fields in Template class and remove unnecessary imports
* refactor(inputs): remove unnecessary Optional import from typing in input_mixin.py and inputs.py files to improve code readability and maintainability
* refactor(schema.py): change 'Type' to 'type' for consistency in type annotations
refactor(schema.py): change 'list' to 'List' and 'Literal' to 'literal' for correct type hinting in create_input_schema function
* refactor(utils.py): change typing annotations from List and Union to list and type to follow PEP 585 standards
refactor(test_schema.py): change typing annotations from List and List to list and list to follow PEP 585 standards
refactor(test_graph.py): change typing annotations from Type and Union to type and Vertex | None to follow PEP 585 standards
refactor(test_io_schema.py): change typing annotations from List and List to list and list to follow PEP 585 standards
refactor(test_custom_component.py): update file reading method to remove unnecessary "r" mode
refactor(test_helper_components.py): update file reading method to remove unnecessary "r" mode
refactor(test_kubernetes_secrets.py): update b64encode method argument to bytes type
refactor(test_template.py): change typing annotations from Optional, List, and Dict to list, dict, and None to follow PEP 585 standards
* [autofix.ci] apply automated fixes
---------
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
* refactor(input_mixin.py): update typing annotations for variables to use union types for better clarity and compatibility with Python 3.10
refactor(inputs.py): update typing annotations for variables to use union types and import necessary modules for compatibility with Python 3.10
* refactor(base.py): remove unnecessary imports and update typing for fields in Input and Output classes
feat(base.py): add support for specifying field types more explicitly in Input and Output classes
feat(frontend_node/base.py): enhance typing and field definitions in FrontendNode class
feat(frontend_node/custom_components.py): improve typing and field definitions in CustomComponentFrontendNode and ComponentFrontendNode classes
feat(template/base.py): update typing for fields in Template class and remove unnecessary imports
* refactor(inputs): remove unnecessary Optional import from typing in input_mixin.py and inputs.py files to improve code readability and maintainability
* refactor(schema.py): change 'Type' to 'type' for consistency in type annotations
refactor(schema.py): change 'list' to 'List' and 'Literal' to 'literal' for correct type hinting in create_input_schema function
* test: fix tests
---------
Co-authored-by: italojohnny <italojohnnydosanjos@gmail.com>
* refactor: Add _find_matching_output_method to Component class
* feat: allow components to be passed in set method
* fix: Add test for graph set method with valid component
* set value variable to the output callable
* refactor: Update test_component.py to use set_component method
This commit refactors the test_component.py file in the custom_component directory. The test_set_invalid_input() function has been renamed to test_set_component() to better reflect its purpose. Additionally, the test_set_component() function now sets the agent parameter using the set_component() method instead of raising a ValueError. This change improves the readability and maintainability of the code.
* refactor: Fix formatting issue in _build_error_string_from_matching_pairs
The _build_error_string_from_matching_pairs method in the Component class had a formatting issue when input types were empty. This commit fixes the issue by adding a check for empty input types and providing an empty list as a fallback. This improves the accuracy and readability of the error string generated by the method.
* fix(component.py): add validation to ensure output method is a string to prevent potential runtime errors
* Commit to solve Model not loading issue
The issue was that the url of the models: api/tags was not parsed correctly.
It was having a // hence used urlencode to parse it properly.
Th e correct apporach works only if the base_url is correct,i.e a valid ollama URL:
for DS LF this must be a public ollama Server URL.
* updated the component Ollama Component
changed the get model to take in base url and the function will make the expected url for the model names. This makes the function better, than providing the model url as paramter.
Added Pytest, 7 tests, 1 test excluded for future implememtstion: test_build_model_failure
Make lint and Make format had touched multiple files
* removed unwanted print statements
removed unwanted print statements.
make format, formatted a lot of .tsx files also
* removed skipped tests
* [autofix.ci] apply automated fixes
* [autofix.ci] apply automated fixes (attempt 2/3)
---------
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
* fix: improve file name generation in upload_file function to prevent files with the same name
* [autofix.ci] apply automated fixes
* fix: improve file name generation in upload_file function
* [autofix.ci] apply automated fixes
* fix: improve file name generation in upload_file function
* fix: improve file path generation in test_upload_file function
---------
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
* feat: Add ComponentTool to convert a Component to a Tool
* test(component): add unit test for ComponentTool with ChatInput input.
* feat: Add method to convert Component to ComponentTool.
* feat: Add unit test for ChatInput to Tool conversion.
* chore: add comment
* test: fix assertion
---------
Co-authored-by: italojohnny <italojohnnydosanjos@gmail.com>
* feat: Add function to create input schema from list of input types.
* feat: Add unit tests for creating input schemas.
* refactor(io): Improve input schema creation logic.
* refactor(schema): Simplify eval call in create_input_schema function.
* fix: Change ValueError to TypeError in create_input_schema to reflect correct exception.
* refactor: refactor create_input_schema to accept a list of input instances.
* feat: Add basic prompting graph function.
* feat: Add blog writer starter project function.
* feat(langflow): Add document QA starter project.
* feat: Add memory chatbot graph function to create chatbot with memory component.
* feat: Add hierarchical tasks agent graph to handle sequential tasks.
* feat: Add a function to create a sequential tasks agent with specific tasks.
* feat: Add vector_store_rag module with ingestion and RAG graphs.
* Refactor: Update the hierarchical task agent to use builder methods for agents and models.
* feat: Refactor sequential tasks agent to utilize build_model and build_output methods.
* refactor: Rename functions in blog_writer, document_qa, and vector_store_rag to end with "_graph".
* feat: Add new graphs to starter projects __init__.py.
* feat: Add complex agent graph setup with prompts, tools, and agents.
* refactor: Add complex agent graph to starter projects.
* feat: Add starter project graphs and dump retrieval functions.
* test: Refactor test_directory_without_mocks method with temporary directory for testing purposes.
* refactor: Extract method to set params from normal edge in Vertex class.
* feat: Add method to retrieve value from template dict in Vertex class.
* feat: Add handling for cycle and contract edge targets in ComponentVertex build method.
* refactor: Update result retrieval logic in ComponentVertex class.
* refactor: Add condition to check flow_id before creating log transactions.
* refactor: Add missing `Edge` import and cast `cast` in types.py for better typing.
* refactor: improve function structure in _build_results
* fix: remove function call that overrides Component.outputs
* refactor: Add handling for outputs in __getattr__ method.
* feat: Add functions to detect cycles in directed graphs.
* test: Add new test cases for cycle detection in graph utils.
* test: temporarily disable test
---------
Co-authored-by: italojohnny <italojohnnydosanjos@gmail.com>
* test: add tests for global variable endpoints
* test: add unit tests variable service
* fix: anticipate checks to prevent the code from breaking
* feat: add a new method to interface
* feat: add method to update fields in variable service
* feat: replace variable api code
* fix: mypy error
* fix: mypy error
* feat(variable): Allow deleting variables by name or ID in DatabaseVariableService.
* refactor(api): Simplify delete method in variable router.
---------
Co-authored-by: Gabriel Luiz Freitas Almeida <gabriel@langflow.org>
* feat: add initial implementation of dynamic state model creation and output getter in graph state module
* feat: implement _reset_all_output_values method to initialize component outputs in custom_component class
* feat: add state model management with lazy initialization and dynamic instance getter in custom_component class
* feat: Refactor Component class to use public method get_output_by_method
Refactor the Component class in the custom_component module to change the visibility of the method `_get_output_by_method` to public by renaming it to `get_output_by_method`. This change improves the accessibility and clarity of the method for external use.
* feat: add output setter utility to manage output values in state model properties
* feat: implement validation for methods' classes in output getter/setter utilities in state model to ensure proper structure
* feat: add state model creation from graph in state_model.py
* feat: enhance Graph class with lazy loading for state model creation from graph
* feat: add unit tests for state model creation and validation in test_state_model.py
* feat: add unit tests for state model creation and validation in test_state_model.py
* feat: add functional test for graph state update and validation in test_graph_state_model.py
* fix: update _instance_getter function to accept a parameter in component.py for state model instance retrieval
* refactor: rename test to clarify purpose in test_state_model.py for functional state update validation
* chore: import Finish constant in test_graph_state_model.py for improved clarity and usage in state model tests
* refactor: add optional validation in output getter/setter methods for improved method integrity in state model handling
* refactor: enhance state model creation with optional validation and error handling for output methods in model.py
* refactor: serialize and deserialize GraphStateModel in test_graph_state_model.py
* refactor: improve error message and add verbose mode for graph start in test_state_model.py
* refactor: remove verbose flag from graph.start in TestCreateStateModel for consistency in test_state_model.py
* refactor: disable validation when creating GraphStateModel in state_model.py for improved flexibility
* refactor: add validation documentation for method attributes in model.py to enhance code clarity and usability
* refactor: expand docstring for build_output_getter in model.py to clarify usage and validation details
* refactor: add detailed docstring for build_output_setter in model.py to improve clarity on functionality and usage scenarios
* refactor: add comprehensive docstring for create_state_model in model.py to clarify functionality and usage examples
* refactor: enhance docstring for create_state_model_from_graph in state_model.py to clarify functionality and provide examples
* test: add JSON schema validation in graph state model tests for improved structure and correctness verification
* refactor: Improve graph_state_model.json_schema unit test readability and structure.
* fix: update value type in DefaultPromptField from str to Any for increased flexibility in input handling
* fix: replace _instantiate_input with instantiate_input for consistency in input instantiation across the codebase
* chore: update test durations
* update memory chatbot
* refactor: reorganize logger module and add setup.py for logging configuration
* refactor: update logger import path to align with recent module restructuring
* refactor: add logging configuration parameter to Graph initialization for improved logging setup flexibility
* feat: create logging init module for improved logger configuration and management
* refactor: update Settings class to include development mode flag and associated validator for enhanced configuration management
* refactor: enhance logger.py with DEV mode handling and TypedDict for log configuration settings
* feat: add settings module with DEV mode flag and helper functions for setting development state
* refactor: update flow assertions in tests to check for Data object type instead of Flow object type
* feat: add deepcopy method to Graph class to copy start and end components, ensuring proper graph cloning functionality
* feat: implement deepcopy method in Component class for proper cloning of inputs and configuration attributes
* feat: enhance attribute access in Component class to support backwards-compatible private attributes retrieval
* feat: improve test assertion for list_flows in custom component to display types of returned objects for better debugging
* feat: refactor imports in constants.py and remove redundant Data class definition for cleaner code structure
* feat: refactor imports in logger.py to include NotRequired from typing_extensions for better type hinting support
* fix: add task to end all traces on asyncio.CancelledError in build_flow function for better cleanup handling
* fix: replace ValueError with warnings in Graph class when vertices exist without edges for better logging and handling
* chore: add type annotations to test_vector_store_rag_add function
* feat: Fix assertion in test_create_flows to check for substring in name field
The assertion in the test_create_flows function was modified to check if the name field contains the substring "Flow 1" instead of an exact match. This change allows for more flexibility in the test and ensures that the test passes even if there are additional characters in the name field.
* feat(utils.py): add escape_json_dump function to escape JSON strings for Edge dictionaries
* refactor(Output): streamline add_types method to prevent duplicate entries in types list for improved type management
* feat(data.py): add classmethod decorator to validate_data for enhanced validation logic when checking data types
* feat(setup.py): implement retry logic for loading starter projects to enhance robustness against JSON decode errors
* fix(input_mixin.py): improve model_config formatting and update field_type alias for clarity and consistency in field definitions
* feat(types.py): refactor vertex constructors to use NodeData and add input/output methods for better component interaction
* feat(schema.py): add NodeData and Position TypedDicts for improved type safety and structure in vertex data handling
* feat(base.py): update Vertex to use NodeData type and add to_data method for better data management and access
* refactor(schema.py): update TargetHandle and SourceHandle models to include model_config attribute
* Add TypedDict classes for graph schema serialization in `schema.py`
* Refactor `Edge` class to improve handle validation and data handling
- Consolidated imports and removed redundant `BaseModel` definitions for `SourceHandle` and `TargetHandle`.
- Added `valid_handles`, `target_param`, and `_target_handle` attributes to `Edge` class.
- Enhanced handle validation logic to distinguish between dictionary and string types.
- Introduced `to_data` method to return edge data.
- Updated attribute names to follow consistent naming conventions (`base_classes`, `input_types`, `field_name`).
* Refactor `Edge` class to improve handle validation and data handling
* Refactor: Standardize attribute naming and add `to_data` method in Edge class
- Renamed attributes to use snake_case consistently (`baseClasses` to `base_classes`, `inputTypes` to `input_types`, `fieldName` to `field_name`).
- Added `to_data` method to return `_data` attribute.
- Updated validation methods to use new attribute names.
* Refactor: Update Edge class to consistently use snake_case for attributes and improve validation logic for handles
* Refactor: Change node argument type in add_node and _create_vertex methods to NodeData for better type safety and clarity
* Refactor: Implement JSON serialization for graph data with `dumps` and `dump` methods, enhancing data export capabilities
* Refactor: Add pytest fixtures for ingestion and RAG graphs, enhance test structure for better clarity and organization
* Refactor: Add pytest fixtures for memory_chatbot_graph tests and improve test structure
* Refactor: Remove unused methods in ComponentVertex class to streamline code and improve readability
* Refactor: Remove unnecessary line in ComponentVertex class to enhance code clarity and maintainability
* refactor: Add utility functions for getting handle IDs in CustomNodes
- Added `getRightHandleId` function to generate the right handle ID for source handles.
- Added `getLeftHandleId` function to generate the left handle ID for target handles.
- These functions improve code readability and maintainability by encapsulating the logic for generating handle IDs.
* refactor: Add type for escaped handle IDs in edges to improve type safety in reactflowUtils
* feat: Add function to escape handle IDs in edges, enhancing edge management in reactflowUtils
* feat: Add function to check edges without escaped handle IDs, improving edge validation in reactflowUtils
* feat: Enhance edge processing in reactflowUtils to handle edges without escaped handle IDs more effectively
* feat: Add layoutUtils module for handling node layout using elkjs
* feat: update processDataFromFlow to add layout to nodes if needed
* feat: Update flowsManagerStore to parse flow data from file before processing
- Replace usages of `fileData` with `parsedFlowData` for improved clarity
- Ensure compatibility with newProject and isComponent parameters
- Improve error handling for uploading components as flows or vice versa
- Refactor code for better readability and maintainability
* Refactor import paths to use 'initialize' module in 'base.py'
* feat: Add method to set class source code and integrate it with frontend node input field
* refactor: Update sourceHandle dataType to use custom component class name
* fix: Raise error for unknown vertex types instead of returning default Vertex class
* refactor: Remove redundant call to _import_vertex_types() in VertexTypesDict initialization
* refactor: Simplify add_code_field by removing unnecessary field_config parameter from function signature
* feat: Add elkjs dependency to package.json and package-lock.json for enhanced functionality in the frontend
* refactor: Update fields type in Template class to use InputTypes for improved type safety
* refactor: Update import path for DefaultPromptField to improve code organization and maintain compatibility
* refactor: Reorganize imports in __init__.py for better structure and consistency across the inputs module
* refactor: Clean up imports in types.py for better organization and consistency in the graph vertex module
* refactor: Change vertex type annotations to strings for better compatibility and consistency in the graph module methods
* refactor: Update component instantiation to include _code parameter and fix input type annotations for improved type handling
* refactor: Remove unused CustomComponent import from __init__.py for cleaner module structure and improved organization
* refactor: Modify custom_component instantiation to include _code argument for enhanced functionality and clarity in CodeParser class
* refactor: Update CustomComponent import in __init__.py for improved module structure and organization
* refactor: Update launch.json to include correct path for backend source files
* refactor: Update dependencies in poetry.lock to latest versions and resolve merge conflicts in backend files
* [autofix.ci] apply automated fixes
* refactor: Remove unnecessary line in test_memory_chatbot.py
* refactor: Update dataType assignment in Component class to use component name if available, or fallback to class name
* refactor: Correct flow_id reference in MemoryComponent to improve clarity and consistency in memory handling
* refactor: Update import path for DefaultPromptField to improve code organization and maintainability in api_utils.py
* refactor: Add loading module to __init__.py for improved organization of interface package
* refactor: Clean up imports in base.py and enforce edge validation in Graph class for improved maintainability and error handling
* refactor: Remove edge component additions in test_base.py to streamline graph tests and emphasize error handling for unprepared graphs
* refactor: Mark @clack/prompts is-unicode-supported as extraneous in package-lock.json for better dependency management
* refactor: Update dataType assignment in Component class to use component name if available, or fallback to class name
* refactor: Fix edge existence check in Graph class to use correct variable, ensuring accurate validation of graph structure
* refactor: Add test for graph with edge and improve graph preparation logic
* refactor: Set default node type to "genericNode" in getLayoutedNodes for consistent layout structure
* create consts for node widht and height
* refactor: Catch and log errors when processing flow data in flowsManagerStore and reactflowUtils
* [autofix.ci] apply automated fixes
* fix: Validate custom components for source and target vertices in Graph edges
* test: Add fixture for client and raise TypeError for invalid class parsing in CodeParser tests
* test: Add unit test for listing flows as Flow objects in custom component with client
* test: Update assertions for memory chatbot component types in unit tests
* test: Refactor assertions to use updated component names in vector store RAG unit tests
* fix: Change error handling to return default Vertex for unknown node types in graph class
* [autofix.ci] apply automated fixes
* test: Add pytest fixture for CustomComponent in unit tests to enhance test structure and readability
* chore: Update component names in vector store RAG unit tests
* test: Refactor imports and make flow name generation unique in database unit tests
* chore: Add new attributes to Edge class for improved state management and validation in edge processing logic
* chore: Implement addition methods for Graph class to combine vertices and edges from other graph instances safely
* chore: Extend serialization in Graph class to include additional internal attributes for improved state handling
* chore: Call initialize method in prepare for proper setup before validating component IDs in Graph class
* chore: Add test to validate graph combination in vector store RAG, ensuring correct vertices and edges in merged graph structure
* refactor: Add utility functions for getting handle IDs in CustomNodes
- Added `getRightHandleId` function to generate the right handle ID for source handles.
- Added `getLeftHandleId` function to generate the left handle ID for target handles.
- These functions improve code readability and maintainability by encapsulating the logic for generating handle IDs.
* refactor: Add type for escaped handle IDs in edges to improve type safety in reactflowUtils
* feat: Add function to escape handle IDs in edges, enhancing edge management in reactflowUtils
* feat: Add function to check edges without escaped handle IDs, improving edge validation in reactflowUtils
* feat: Enhance edge processing in reactflowUtils to handle edges without escaped handle IDs more effectively
* feat: Add layoutUtils module for handling node layout using elkjs
* feat: update processDataFromFlow to add layout to nodes if needed
* Refactor import paths to use 'initialize' module in 'base.py'
* feat: Add method to set class source code and integrate it with frontend node input field
* refactor: Update sourceHandle dataType to use custom component class name
* fix: Raise error for unknown vertex types instead of returning default Vertex class
* refactor: Remove redundant call to _import_vertex_types() in VertexTypesDict initialization
* refactor: Simplify add_code_field by removing unnecessary field_config parameter from function signature
* feat: Add elkjs dependency to package.json and package-lock.json for enhanced functionality in the frontend
* refactor: Update fields type in Template class to use InputTypes for improved type safety
* refactor: Reorganize imports in __init__.py for better structure and consistency across the inputs module
* refactor: Clean up imports in types.py for better organization and consistency in the graph vertex module
* refactor: Change vertex type annotations to strings for better compatibility and consistency in the graph module methods
* refactor: Update component instantiation to include _code parameter and fix input type annotations for improved type handling
* refactor: Remove unused CustomComponent import from __init__.py for cleaner module structure and improved organization
* refactor: Modify custom_component instantiation to include _code argument for enhanced functionality and clarity in CodeParser class
* refactor: Update CustomComponent import in __init__.py for improved module structure and organization
* refactor: Update launch.json to include correct path for backend source files
* refactor: Update dependencies in poetry.lock to latest versions and resolve merge conflicts in backend files
* refactor: Update dataType assignment in Component class to use component name if available, or fallback to class name
* refactor: Correct flow_id reference in MemoryComponent to improve clarity and consistency in memory handling
* refactor: Update import path for DefaultPromptField to improve code organization and maintainability in api_utils.py
* refactor: Add loading module to __init__.py for improved organization of interface package
* refactor: Clean up imports in base.py and enforce edge validation in Graph class for improved maintainability and error handling
* refactor: Remove edge component additions in test_base.py to streamline graph tests and emphasize error handling for unprepared graphs
* refactor: Mark @clack/prompts is-unicode-supported as extraneous in package-lock.json for better dependency management
* refactor: Update dataType assignment in Component class to use component name if available, or fallback to class name
* refactor: Fix edge existence check in Graph class to use correct variable, ensuring accurate validation of graph structure
* refactor: Add test for graph with edge and improve graph preparation logic
* refactor: Set default node type to "genericNode" in getLayoutedNodes for consistent layout structure
* create consts for node widht and height
* refactor: Catch and log errors when processing flow data in flowsManagerStore and reactflowUtils
* [autofix.ci] apply automated fixes
* fix: Validate custom components for source and target vertices in Graph edges
* test: Add fixture for client and raise TypeError for invalid class parsing in CodeParser tests
* test: Add unit test for listing flows as Flow objects in custom component with client
* test: Update assertions for memory chatbot component types in unit tests
* test: Refactor assertions to use updated component names in vector store RAG unit tests
* fix: Change error handling to return default Vertex for unknown node types in graph class
* [autofix.ci] apply automated fixes
* test: Add pytest fixture for CustomComponent in unit tests to enhance test structure and readability
* chore: Update component names in vector store RAG unit tests
* test: Refactor imports and make flow name generation unique in database unit tests
* chore: Remove unused upload and flow management functions from flowsManagerStore for cleaner codebase
* chore: Await processDataFromFlow in useAddFlow hook
* chore: Correct NODE_HEIGHT calculation to use NODE_WIDTH constant for consistency in constants file
* chore: Remove extraneous flag for is-unicode-supported in package-lock.json for cleaner dependency management
---------
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
Co-authored-by: anovazzi1 <otavio2204@gmail.com>
* feat: suggest updating outdated components in API exception handling
Suggest updating the outdated components in the API exception handling. This commit adds a suggestion message to the API exception response when there are outdated components in the flow. The suggestion message provides the number of outdated components and recommends updating them. The suggestion is generated based on the list of outdated components obtained from the flow data.
* feat: refactor code
* [autofix.ci] apply automated fixes
* Update src/backend/base/langflow/exceptions/api.py
Co-authored-by: Gabriel Luiz Freitas Almeida <gabriel@langflow.org>
* Update src/backend/base/langflow/api/utils.py
Co-authored-by: Gabriel Luiz Freitas Almeida <gabriel@langflow.org>
* Update src/backend/base/langflow/exceptions/api.py
Co-authored-by: Gabriel Luiz Freitas Almeida <gabriel@langflow.org>
* update function name
* [autofix.ci] apply automated fixes
* refactor: fix import casing in langflow.api.utils and langflow.exceptions.api
Co-authored-by: Gabriel Luiz Freitas Almeida <gabriel@langflow.org>
* refactor: remove unused code and update exception handling in langflow.api.utils and langflow.exceptions.api
* [autofix.ci] apply automated fixes
* refactor: update exception handling and class in langflow.api.utils and langflow.exceptions.api
* [autofix.ci] apply automated fixes
* update function name and refactor none flow logic
* [autofix.ci] apply automated fixes
* refactor: fix typo in get_suggestion_message function name
* refactor: improve get_suggestion_message function in langflow.api.utils
* refactor: add unit tests for get_suggestion_message and get_outdated_components functions
* refactor: add unit tests for APIException in langflow.exceptions.api
* refactor: improve test coverage for APIException and related functions
* [autofix.ci] apply automated fixes
* update file name
* refactor: update build_exception_body method in APIException to handle Exception type
* refactor: handle None flow data in get_components_versions
* [autofix.ci] apply automated fixes
* refactor: update useDeleteBuilds function signature in _builds API query
* fix: Fix test changing screen before request ended
---------
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: Add utility functions for getting handle IDs in CustomNodes
- Added `getRightHandleId` function to generate the right handle ID for source handles.
- Added `getLeftHandleId` function to generate the left handle ID for target handles.
- These functions improve code readability and maintainability by encapsulating the logic for generating handle IDs.
* refactor: Add type for escaped handle IDs in edges to improve type safety in reactflowUtils
* feat: Add function to escape handle IDs in edges, enhancing edge management in reactflowUtils
* feat: Add function to check edges without escaped handle IDs, improving edge validation in reactflowUtils
* feat: Enhance edge processing in reactflowUtils to handle edges without escaped handle IDs more effectively
* feat: Add layoutUtils module for handling node layout using elkjs
* feat: update processDataFromFlow to add layout to nodes if needed
* Refactor import paths to use 'initialize' module in 'base.py'
* feat: Add method to set class source code and integrate it with frontend node input field
* refactor: Update sourceHandle dataType to use custom component class name
* fix: Raise error for unknown vertex types instead of returning default Vertex class
* refactor: Remove redundant call to _import_vertex_types() in VertexTypesDict initialization
* refactor: Simplify add_code_field by removing unnecessary field_config parameter from function signature
* feat: Add elkjs dependency to package.json and package-lock.json for enhanced functionality in the frontend
* refactor: Update fields type in Template class to use InputTypes for improved type safety
* refactor: Reorganize imports in __init__.py for better structure and consistency across the inputs module
* refactor: Clean up imports in types.py for better organization and consistency in the graph vertex module
* refactor: Change vertex type annotations to strings for better compatibility and consistency in the graph module methods
* refactor: Update component instantiation to include _code parameter and fix input type annotations for improved type handling
* refactor: Remove unused CustomComponent import from __init__.py for cleaner module structure and improved organization
* refactor: Modify custom_component instantiation to include _code argument for enhanced functionality and clarity in CodeParser class
* refactor: Update CustomComponent import in __init__.py for improved module structure and organization
* refactor: Update launch.json to include correct path for backend source files
* refactor: Update dependencies in poetry.lock to latest versions and resolve merge conflicts in backend files
* refactor: Update dataType assignment in Component class to use component name if available, or fallback to class name
* refactor: Correct flow_id reference in MemoryComponent to improve clarity and consistency in memory handling
* refactor: Update import path for DefaultPromptField to improve code organization and maintainability in api_utils.py
* refactor: Add loading module to __init__.py for improved organization of interface package
* refactor: Clean up imports in base.py and enforce edge validation in Graph class for improved maintainability and error handling
* refactor: Remove edge component additions in test_base.py to streamline graph tests and emphasize error handling for unprepared graphs
* refactor: Mark @clack/prompts is-unicode-supported as extraneous in package-lock.json for better dependency management
* refactor: Update dataType assignment in Component class to use component name if available, or fallback to class name
* refactor: Fix edge existence check in Graph class to use correct variable, ensuring accurate validation of graph structure
* refactor: Add test for graph with edge and improve graph preparation logic
* refactor: Set default node type to "genericNode" in getLayoutedNodes for consistent layout structure
* create consts for node widht and height
* refactor: Catch and log errors when processing flow data in flowsManagerStore and reactflowUtils
* [autofix.ci] apply automated fixes
* fix: Validate custom components for source and target vertices in Graph edges
* test: Add fixture for client and raise TypeError for invalid class parsing in CodeParser tests
* test: Add unit test for listing flows as Flow objects in custom component with client
* test: Update assertions for memory chatbot component types in unit tests
* test: Refactor assertions to use updated component names in vector store RAG unit tests
* fix: Change error handling to return default Vertex for unknown node types in graph class
* [autofix.ci] apply automated fixes
* test: Add pytest fixture for CustomComponent in unit tests to enhance test structure and readability
* chore: Update component names in vector store RAG unit tests
* test: Refactor imports and make flow name generation unique in database unit tests
* chore: Remove unused upload and flow management functions from flowsManagerStore for cleaner codebase
* chore: Await processDataFromFlow in useAddFlow hook
* chore: Correct NODE_HEIGHT calculation to use NODE_WIDTH constant for consistency in constants file
* chore: Remove extraneous flag for is-unicode-supported in package-lock.json for cleaner dependency management
---------
Co-authored-by: anovazzi1 <otavio2204@gmail.com>
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
* feat(utils.py): add escape_json_dump function to escape JSON strings for Edge dictionaries
* refactor(Output): streamline add_types method to prevent duplicate entries in types list for improved type management
* feat(data.py): add classmethod decorator to validate_data for enhanced validation logic when checking data types
* feat(setup.py): implement retry logic for loading starter projects to enhance robustness against JSON decode errors
* fix(input_mixin.py): improve model_config formatting and update field_type alias for clarity and consistency in field definitions
* feat(types.py): refactor vertex constructors to use NodeData and add input/output methods for better component interaction
* feat(schema.py): add NodeData and Position TypedDicts for improved type safety and structure in vertex data handling
* feat(base.py): update Vertex to use NodeData type and add to_data method for better data management and access
* refactor(schema.py): update TargetHandle and SourceHandle models to include model_config attribute
* Add TypedDict classes for graph schema serialization in `schema.py`
* Refactor `Edge` class to improve handle validation and data handling
- Consolidated imports and removed redundant `BaseModel` definitions for `SourceHandle` and `TargetHandle`.
- Added `valid_handles`, `target_param`, and `_target_handle` attributes to `Edge` class.
- Enhanced handle validation logic to distinguish between dictionary and string types.
- Introduced `to_data` method to return edge data.
- Updated attribute names to follow consistent naming conventions (`base_classes`, `input_types`, `field_name`).
* Refactor `Edge` class to improve handle validation and data handling
* Refactor: Standardize attribute naming and add `to_data` method in Edge class
- Renamed attributes to use snake_case consistently (`baseClasses` to `base_classes`, `inputTypes` to `input_types`, `fieldName` to `field_name`).
- Added `to_data` method to return `_data` attribute.
- Updated validation methods to use new attribute names.
* Refactor: Update Edge class to consistently use snake_case for attributes and improve validation logic for handles
* Refactor: Change node argument type in add_node and _create_vertex methods to NodeData for better type safety and clarity
* Refactor: Implement JSON serialization for graph data with `dumps` and `dump` methods, enhancing data export capabilities
* Refactor: Add pytest fixtures for ingestion and RAG graphs, enhance test structure for better clarity and organization
* Refactor: Add pytest fixtures for memory_chatbot_graph tests and improve test structure
* Refactor: Remove unused methods in ComponentVertex class to streamline code and improve readability
* Refactor: Remove unnecessary line in ComponentVertex class to enhance code clarity and maintainability
* Refactor: Update import path for DefaultPromptField to improve code organization and maintainability in api_utils.py
* Refactor: Update import path for DefaultPromptField to enhance code organization and maintainability in prompt.py
* fix: Remove fixture in test_memory_chatbot.py that blocked db setup
* Refactor: Add durations path for unit tests to improve test reporting
* Refactor: Add splitting algorithm option for unit tests
* Add async option to Makefile for unit tests and update GitHub Actions workflow
- Introduced `async` variable in Makefile to conditionally run unit tests with or without parallel execution.
- Updated `unit_tests` target in Makefile to handle `async` flag.
- Modified GitHub Actions workflow to set `async=false` for unit tests.
* fix: update CustomComponent to use properties for user_id and flow_id
Refactored user_id and flow_id in CustomComponent to use properties for better encapsulation and code clarity
* refactor: update CustomComponent initialization and remove unused imports
Refactored the CustomComponent class to streamline initialization and removed unnecessary import for BaseCallbackHandler
* refactor: update build_custom_component_template to use cc_instance for field order to improve consistency and clarity
* refactor: update user_id parameter in FlowToolComponent to use self.user_id for consistency
* refactor: remove unused _tree attribute and clean up imports in CustomComponent for better code clarity
* refactor: rename CustomComponent to Component for consistency in directory_reader.py import and usage
* refactor: enhance timestamp handling in _timestamp_to_str for better validation and error reporting in message.py
* refactor: preserve async get_file_content_dicts method for backwards compatibility in message.py
* refactor: update function_entrypoint_name to _function_entrypoint_name for consistency in test_custom_component.py
* feat: add client fixture for improved test structure in test_data_components.py
* feat: add unit tests for PromptComponent including template processing and custom fields in test_prompt_component.py
* feat: add dev dependencies for improved testing and development tools in pyproject.toml