* fix: frozen status is lost after run
* [autofix.ci] apply automated fixes
* add FE tests to freeze feature
---------
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: Cristhian Zanforlin Lousa <72977554+Cristhianzl@users.noreply.github.com>
* refactor: update code references to use _code instead of code
* refactor: add backwards compatible attributes to Component class
* refactor: update Component constructor to pass config params with underscore
Refactored the `Component` class in `component.py` to handle inputs and outputs. Added a new method `map_outputs` to map a list of outputs to the component. Also updated the `__init__` method to properly initialize the inputs, outputs, and other attributes. This change improves the flexibility and extensibility of the `Component` class.
Co-authored-by: Gabriel Luiz Freitas Almeida <gabriel@langflow.org>
* refactor: change attribute to use underscore
* refactor: update CustomComponent initialization parameters
Refactored the `instantiate_class` function in `loading.py` to update the initialization parameters for the `CustomComponent` class. Changed the parameter names from `user_id`, `parameters`, `vertex`, and `tracing_service` to `_user_id`, `_parameters`, `_vertex`, and `_tracing_service` respectively. This change ensures consistency and improves code readability.
Co-authored-by: Gabriel Luiz Freitas Almeida <gabriel@langflow.org>
* refactor: update BaseComponent to accept UUID for _user_id
Updated the `BaseComponent` class in `base_component.py` to accept a `UUID` type for the `_user_id` attribute. This change improves the type safety and ensures consistency with the usage of `_user_id` throughout the codebase.
* refactor: import nanoid with type annotation
The `nanoid` import in `component.py` has been updated to include a type annotation `# type: ignore`. This change ensures that the type checker ignores any errors related to the `nanoid` import.
* fix(custom_component.py): convert _user_id to string before passing to functions to ensure compatibility with function signatures
* feat(component.py): add method to set output types based on method return type to improve type checking and validation in custom components
* refactor: extract method to get method return type in CustomComponent
* refactor(utils.py): refactor code to use _user_id instead of user_id for consistency and clarity
perf(utils.py): optimize code by reusing cc_instance instead of calling get_component_instance multiple times
* refactor(utils.py, base.py): change parameter name 'add_name' to 'keep_name' for clarity and consistency in codebase
* [autofix.ci] apply automated fixes
* refactor: update schema.py to include Edge related typres
The `schema.py` file in the `src/backend/base/langflow/graph/edge` directory has been updated to include the `TargetHandle` and `SourceHandle` models. These models define the structure and attributes of the target and source handles used in the edge data. This change improves the clarity and consistency of the codebase.
* refactor: update BaseInputMixin to handle invalid field types gracefully
The `BaseInputMixin` class in `input_mixin.py` has been updated to handle invalid field types gracefully. Instead of raising an exception, it now returns `FieldTypes.OTHER` for any invalid field type. This change improves the robustness and reliability of the codebase.
* refactor: update file_types field alias in FileMixin
The `file_types` field in the `FileMixin` class of `input_mixin.py` has been updated to use the `alias` parameter instead of `serialization_alias`. This change ensures consistency and improves the clarity of the codebase.
* refactor(inputs): update field_type declarations in various input classes to use SerializableFieldTypes enum for better type safety and clarity
* refactor(inputs): convert dict to Message object in _validate_value method
* refactor(inputs): convert dict to Message object in _validate_value method
* refactor(inputs): update model_config in BaseInputMixin to enable populating by name
The `model_config` attribute in the `BaseInputMixin` class of `input_mixin.py` has been updated to include the `populate_by_name=True` parameter. This change allows the model configuration to be populated by name, improving the flexibility and usability of the codebase.
* refactor: update _extract_return_type method in CustomComponent to accept Any type
The _extract_return_type method in CustomComponent has been updated to accept the Any type as the return_type parameter. This change improves the flexibility and compatibility of the method, allowing it to handle a wider range of return types.
* refactor(component): add get_input and get_output methods for easier access to input and output values
The `Component` class in `component.py` has been updated to include the `get_input` and `get_output` methods. These methods allow for easier retrieval of input and output values by name, improving the usability and readability of the codebase.
* refactor(vertex): add get_input and get_output methods for easier access to input and output values
* refactor(component): add set_output_value method for easier modification of output values
The `Component` class in `component.py` has been updated to include the `set_output_value` method. This method allows for easier modification of output values by name, improving the usability and flexibility of the codebase.
* feat: add run_until_complete and run_in_thread functions for handling asyncio tasks
The `async_helpers.py` file in the `src/backend/base/langflow/utils` directory has been added. This file includes the `run_until_complete` and `run_in_thread` functions, which provide a way to handle asyncio tasks in different scenarios. The `run_until_complete` function checks if an event loop is already running and either runs the coroutine in a separate event loop in a new thread or creates a new event loop and runs the coroutine. The `run_in_thread` function runs the coroutine in a separate thread and returns the result or raises an exception if one occurs. These functions improve the flexibility and usability of the codebase.
* refactor(component): add _edges attribute to Component class for managing edges
The `Component` class in `component.py` has been updated to include the `_edges` attribute. This attribute is a list of `EdgeData` objects and is used for managing edges in the component. This change improves the functionality and organization of the codebase.
* fix(component.py): fix conditional statement to check if self._vertex is not None before accessing its attributes
* refactor(component): add _get_fallback_input method for handling fallback input
The `Component` class in `component.py` has been updated to include the `_get_fallback_input` method. This method returns an `Input` object with the provided keyword arguments, which is used as a fallback input when needed. This change improves the flexibility and readability of the codebase.
* refactor(component): add TYPE_CHECKING import for Vertex in component.py
* refactor(component): add _map_parameters_on_frontend_node and _map_parameters_on_template and other methods
The `Component` class in `component.py` has been refactored to include the `_map_parameters_on_frontend_node` and `_map_parameters_on_template` methods. These methods are responsible for mapping the parameters of the component onto the frontend node and template, respectively. This change improves the organization and maintainability of the codebase.
* refactor(component): Add map_inputs and map_outputs methods for mapping inputs and outputs
The `Component` class in `component.py` has been updated to include the `map_inputs` and `map_outputs` methods. These methods allow for mapping the given inputs and outputs to the component, improving the functionality and organization of the codebase.
* refactor(component): Add Input, Output, and ComponentFrontendNode imports and run_until_complete function
This commit refactors the `component.py` file in the `src/backend/base/langflow/custom/custom_component` directory. It adds the `Input`, `Output`, and `ComponentFrontendNode` imports, as well as the `run_until_complete` function from the `async_helpers.py` file. These changes improve the functionality and organization of the codebase.
* refactor(component): Add map_inputs and map_outputs methods for mapping inputs and outputs
* refactor(component): Add _process_connection_or_parameter method for handling connections and parameters
The `Component` class in `component.py` has been updated to include the `_process_connection_or_parameter` method. This method is responsible for handling connections and parameters based on the provided key and value. It checks if the value is callable and connects it to the component, otherwise it sets the parameter or attribute. This change improves the functionality and organization of the codebase.
* refactor(frontend_node): Add set_field_value_in_template method for updating field values
The `FrontendNode` class in `base.py` has been updated to include the `set_field_value_in_template` method. This method allows for updating the value of a specific field in the template of the frontend node. It iterates through the fields and sets the value of the field with the provided name. This change improves the flexibility and functionality of the codebase.
* refactor(inputs): Add DefaultPromptField class for default prompt inputs
The `inputs.py` file in the `src/backend/base/langflow/inputs` directory has been refactored to include the `DefaultPromptField` class. This class represents a default prompt input with customizable properties such as name, display name, field type, advanced flag, multiline flag, input types, and value. This change improves the flexibility and functionality of the codebase.
* feat: Add Template.from_dict method for creating Template objects from dictionaries
This commit adds the `from_dict` class method to the `Template` class in `base.py`. This method allows for creating `Template` objects from dictionaries by converting the dictionary keys and values into the appropriate `Template` attributes. This change improves the flexibility and functionality of the codebase.
* refactor(frontend_node): Add from_dict method for creating FrontendNode objects from dictionaries
* refactor: update BaseComponent to use get_template_config method
Refactored the `BaseComponent` class in `base_component.py` to use the `get_template_config` method instead of duplicating the code. This change improves code readability and reduces redundancy.
* feat: add BaseModel class with model_config attribute
A new `BaseModel` class has been added to the `base_model.py` file. This class extends the `PydanticBaseModel` and includes a `model_config` attribute of type `ConfigDict`. This change improves the codebase by providing a base model with a configuration dictionary for models.
Co-authored-by: Gabriel Luiz Freitas Almeida <gabriel@langflow.org>
* refactor: update langflow.graph.edge.schema.py
Refactor the `langflow.graph.edge.schema.py` file to include the `TargetHandle` and `SourceHandle` models. This change improves the clarity and consistency of the codebase.
Co-authored-by: Gabriel Luiz Freitas Almeida <gabriel@langflow.org>
* refactor: update build_custom_component_template to use add_name instead of keep_name
Refactor the `build_custom_component_template` function in `utils.py` to use the `add_name` parameter instead of the deprecated `keep_name` parameter. This change ensures consistency with the updated method signature and improves code clarity.
* feat(component.py): add method to set output types based on method return type to improve type checking and validation in custom components (#3115)
* feat(component.py): add method to set output types based on method return type to improve type checking and validation in custom components
* refactor: extract method to get method return type in CustomComponent
* refactor: update _extract_return_type method in CustomComponent to accept Any type
The _extract_return_type method in CustomComponent has been updated to accept the Any type as the return_type parameter. This change improves the flexibility and compatibility of the method, allowing it to handle a wider range of return types.
* refactor: add _template_config property to BaseComponent
Add a new `_template_config` property to the `BaseComponent` class in `base_component.py`. This property is used to store the template configuration for the custom component. If the `_template_config` property is empty, it is populated by calling the `build_template_config` method. This change improves the efficiency of accessing the template configuration and ensures that it is only built when needed.
* refactor: add type checking for Output types in add_types method
Improve type checking in the `add_types` method of the `Output` class in `base.py`. Check if the `type_` already exists in the `types` list before adding it. This change ensures that duplicate types are not added to the list.
* update starter projects
* refactor: optimize imports in base.py
Optimize imports in the `base.py` file by removing unused imports and organizing the remaining imports. This change improves code readability and reduces unnecessary clutter.
* fix(base.py): fix condition to check if self.types is not None before checking if type_ is in self.types
* refactor: update build_custom_component_template to use add_name instead of keep_name
* fix(userSettings.spec.ts): update visibility check to ensure the correct element is interacted with in end-to-end test
---------
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
* 📝 (authContext.tsx): Add useGetUserData hook to fetch user data and update user state in AuthProvider component
📝 (use-get-user.ts): Refactor useGetUserData hook to use mutation function for fetching user data and handling success and error cases in a more structured way
* 📝 (API/index.ts): Remove getProfilePictures function as it is no longer used
🔧 (use-get-profile-pictures.ts): Remove unused code related to fetching profile pictures
🔧 (use-preload-images.tsx): Refactor usePreloadImages hook to accept profilePictures as an argument
🔧 (profilePictureChooserComponent/index.tsx): Update usage of usePreloadImages hook to match new signature
🔧 (ProfilePictureForm/index.tsx): Refactor to use useGetProfilePicturesQuery hook instead of handleGetProfilePictures function
* ✨ (use-get-users-page.ts): refactor useGetUserPage to useGetUsers for better naming consistency and clarity
🔧 (use-get-users-page.ts): update useGetUsers to accept options parameter for flexibility in mutation
🔧 (use-get-users-page.ts): refactor getUsersPage function to getUsers and update parameter name for clarity
🔧 (use-get-users-page.ts): update useGetUsers to use mutate function instead of query for mutation
🔧 (index.tsx): add useGetUsers import to AdminPage to fetch users data
🔧 (index.tsx): refactor getUsers function to use mutateGetUsers for fetching users data with options
🔧 (index.tsx): refactor handleChangePagination function to use mutateGetUsers for fetching users data with options
🔧 (index.tsx): update resetFilter function to use mutateGetUsers for fetching users data with options
* 🔧 (AdminPage/index.tsx): Remove loadingUsers state variable and related logic as it is no longer needed with the introduction of isPending variable from useGetUsers hook. Update related logic to use isPending variable instead of loadingUsers variable.
---------
Co-authored-by: anovazzi1 <otavio2204@gmail.com>
📝 (App.tsx): Update imports and add new constants for access token expiration time
🔧 (App.tsx): Add support for refreshing access token and setting expiration time
📝 (authAdminGuard/index.tsx): Remove unnecessary logout function and add conditional check for login page
📝 (authGuard/index.tsx): Add conditional check for login page
📝 (constants.ts): Add constants for access token expiration time
📝 (authContext.tsx): Remove logout function and update related logic
📝 (api.tsx): Add conditional check for login page
📝 (use-post-logout.ts): Remove navigate function call
📝 (LoginPage/index.tsx): Add logic to reset flows and selected folder on successful login
✨ (LoginPage/index.tsx): Add support for managing folders in the login page to improve user experience
🔧 (authStore.ts): Update logout function to clear user data and redirect to login page for better security and user experience
📝 (contexts/auth.ts): Remove unnecessary logout function from AuthContextType for consistency
🔧 (vite.config.mts): Add environment variables for ACCESS_TOKEN_EXPIRE_SECONDS and CI to improve configuration flexibility
Co-authored-by: Lucas Oliveira <62335616+lucaseduoli@users.noreply.github.com>
* ✨ (App.tsx): Introduce framer-motion library for animations in the frontend
🔧 (App.tsx): Update import path for useAutoLogin function in controllers/API/queries/auth
🔧 (index.ts): Remove autoLogin function from API controllers as it is now handled by useAutoLogin hook
🔧 (use-get-autologin.ts): Update function name to useAutoLogin and adjust return type
🔧 (use-post-login-user.ts): Update function name to loginUserFn for clarity
🔧 (LoginPage/index.tsx): Update import path for useLoginUser function in controllers/API/queries/auth
🔧 (LoginPage/index.tsx): Update function name to loginUserFn for clarity
🔧 (authStore.ts): Remove unused imports and functions related to autoLogin and login operations
* 📝 (LoginPage/index.tsx): remove unnecessary console.log statement from onSuccess callback in mutate function
* ♻️ (App.tsx): remove unused import statement for 'm' from 'framer-motion' to clean up code and improve readability
* removing abort from request
* [autofix.ci] apply automated fixes
---------
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
Co-authored-by: anovazzi1 <otavio2204@gmail.com>
* ✨ (App.tsx): Add useGetGlobalVariables hook to fetch global variables data
🔧 (addNewVariableButton.tsx): Replace registerGlobalVariable function with usePostGlobalVariables hook for adding new global variables
🔧 (inputGlobalComponent/index.tsx): Replace deleteGlobalVariable function with useDeleteGlobalVariables hook for deleting global variables
🔧 (authContext.tsx): Remove unused getGlobalVariables function and setGlobalVariables state from authContext
🔧 (constants.ts): Add VARIABLES constant for global variables endpoint
🔧 (index.ts): Remove getGlobalVariables, registerGlobalVariable, and deleteGlobalVariable functions from API index
✨ (variables/index.ts): Add use-delete-global-variables hook for deleting global variables
🔧 (use-delete-global-variables.ts): Implement useDeleteGlobalVariables hook for deleting global variables
✨ (use-get-global-variables.ts): Add functionality to fetch and set global variables from API
✨ (use-patch-global-variables.ts): Add functionality to update global variables via API patch request
✨ (use-post-global-variables.ts): Add functionality to create new global variables via API post request
📝 (index.tsx): Import useGetGlobalVariables hook to fetch global variables on login page
📝 (index.tsx): Call mutateGetGlobalVariables function to fetch global variables on successful login
📝 (index.tsx): Import useDeleteGlobalVariables hook to delete global variables on global variables page
📝 (index.tsx): Call mutateDeleteGlobalVariable function to delete selected global variables
📝 (index.tsx): Handle success and error cases for deleting global variables
* Removed console.log
---------
Co-authored-by: Lucas Oliveira <62335616+lucaseduoli@users.noreply.github.com>
* fix(main.py): handle PydanticSerializationError in JavaScriptMIMETypeMiddleware to provide detailed error message in case of serialization error
* fix(main.py): handle PydanticSerializationError in JavaScriptMIMETypeMiddleware to provide detailed error message in case of serialization error
* improve error handling
* feat: Handle PydanticSerializationError in JavaScriptMIMETypeMiddleware
Refactor the `JavaScriptMIMETypeMiddleware` class in `main.py` to handle the `PydanticSerializationError` exception. This change ensures that a detailed error message is provided in case of a serialization error. The error message is now serialized as a JSON string and included in the `detail` field of the `HTTPException` raised.
* feat: Add tryParseJson function to utils.ts
This commit adds a new function called `tryParseJson` to the `utils.ts` file. The function attempts to parse a JSON string and returns the parsed object. If parsing fails, it returns undefined. This function can be used to safely parse JSON strings without throwing an error.
* fix: Handle error message in buildVertex function
This commit modifies the buildVertex function in buildUtils.ts to handle error messages more effectively. It adds logic to extract the error message from the AxiosError response and parse it as JSON if possible. If the error message is not an array, it converts it into an array. This change ensures that the error message is properly displayed when building a component fails.
* remove console.log
* remove not related code
---------
Co-authored-by: anovazzi1 <otavio2204@gmail.com>
* feat: update GenericNode to include lf_version in node data
* [autofix.ci] apply automated fixes
---------
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>
* refactor(utils.py): simplify data processing logic in build_data_from_result_data function for better readability and maintainability
* feat: set default output type to "chat" in run_flow function
* refactor(FlowTool.py): refactor FlowToolComponent class to inherit from LCToolComponent
* Fixed Flow as Tool component
* Fixed refresh button not appearing at the end
* Added way of connecting SecretStrInput to messages
* Added real_time_refresh when field has button update too
* Refactored SubFlow component
* Fixed FlowTool to only output tool and removed async function def
* fix: two statements in the same line
* [autofix.ci] apply automated fixes
* Fixed lint issues
* fixed dataobj with wrong name
* changed tweaks dict type
* Fixed margin appearing in output too
* Fixed useless button that made styling worse on handlerendercomponent
---------
Co-authored-by: Gabriel Luiz Freitas Almeida <gabriel@langflow.org>
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
The unnecessary condition in the App component was causing the error modal to not appear when there was an error in the health data. This commit removes the unnecessary condition to ensure that the error modal is displayed correctly.
* Fixed dropdown component showing empty value and not showing dropdown when combobox is true
* Fixed multiselect component showing empty value and not showing dropdown when combobox is true
* Added disabled onChange on multiline and dropdown, with snapshot ignore
* Fixed tooltip skip delay duration that made tooltip on Dropdown unusable
* Fixed size of text inside dropdown and multiselect
---------
Co-authored-by: Gabriel Luiz Freitas Almeida <gabriel@langflow.org>
* Add UI feature flag config
* [autofix.ci] apply automated fixes
* hide general settings if there is nothing to show
* make sure to handle !autoLogin case
* [autofix.ci] apply automated fixes
* missed commit
* [autofix.ci] apply automated fixes
---------
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
Co-authored-by: anovazzi1 <otavio2204@gmail.com>
* refactor: Update useFileDrop hook to handle multiple file drops
The useFileDrop hook in use-on-file-drop.tsx has been updated to handle multiple file drops. It now accepts an array of files instead of a single file, and processes each file individually. This allows for uploading multiple files at once and improves the user experience.
* [autofix.ci] apply automated fixes
* Remove unused console.log
* Removed console.log
---------
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>
* feat: Add Athena icon component
Add a new component called AthenaComponent that renders an SVG icon for Athena. This component is imported from the newly created file "athena.jsx" in the "icons/athena" directory. Additionally, an export for the AthenaIcon component is added in the "icons/athena/index.tsx" file.
* check nodes to update on build flow
* feat: update componentsToUpdate logic in flowStore.ts
The `updateComponentsToUpdate` function in `flowStore.ts` has been updated to properly check for outdated nodes. This ensures that components are only updated when necessary, improving performance and preventing unnecessary re-renders.
* [autofix.ci] apply automated fixes
* Update src/frontend/src/stores/flowStore.ts
Co-authored-by: Gabriel Luiz Freitas Almeida <gabriel@langflow.org>
---------
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
Co-authored-by: Gabriel Luiz Freitas Almeida <gabriel@langflow.org>
* 📝 (flows.py): refactor delete_multiple_flows function to improve readability and efficiency
✨ (use-delete-flows.ts): add useDeleteFlows hook to handle deletion of multiple flows in frontend
♻️ (index.tsx): refactor handleDeleteMultiple function to use useDeleteFlows hook for deleting multiple flows
🔧 (actionsMainPage-shard-1.spec.ts): add test for selecting and deleting a flow in end-to-end tests
* 📝 (flows.py): Remove unused imports and variables to clean up the code and improve readability
♻️ (flows.py): Refactor code to remove unnecessary import and variable declarations, making the code more concise and maintainable
* add unit tests to delete multiple flows with transactions and build
* format
* add assert on tests
feat: Update Textarea component to have full height
The Textarea component was updated to have a full height by adding the "h-full" class to the parent div. This ensures that the textarea takes up the entire available vertical space.
* feat: Add GitLoader Component with advanced filtering options
This commit introduces the GitLoaderComponent, enabling users to load files from a Git repository with advanced filtering options.
GitLoader Component:
- Implementation of the GitLoaderComponent to load files from a Git repository using the `langchain_community.document_loaders.git.GitLoader` module.
- Advanced filtering option using `file_filter` to include or exclude specific files based on their extensions or other criteria.
Examples of `file_filter` usage:
- Include only .py files: `lambda file_path: file_path.endswith('.py')`
- Exclude .py files: `lambda file_path: not file_path.endswith('.py')`
This component ensures a flexible and customizable approach for loading documents from Git repositories, enhancing the user experience with advanced filtering capabilities.
Features:
- Support for loading documents from Git repositories.
- Advanced file filtering options to include or exclude specific files.
* feat: Add GitLoader Component with advanced filtering options
This commit introduces the GitLoaderComponent, enabling users to load files from a Git repository with advanced filtering options.
GitLoader Component:
- Implementation of the GitLoaderComponent to load files from a Git repository using the `langchain_community.document_loaders.git.GitLoader` module.
- Advanced filtering option using `file_filter` to include or exclude specific files based on their extensions or other criteria.
Examples of `file_filter` usage:
- Include only .py files: `lambda file_path: file_path.endswith('.py')`
- Exclude .py files: `lambda file_path: not file_path.endswith('.py')`
This component ensures a flexible and customizable approach for loading documents from Git repositories, enhancing the user experience with advanced filtering capabilities.
Features:
- Support for loading documents from Git repositories.
- Advanced file filtering options to include or exclude specific files.
* fix: Ensure proper evaluation and validation of file_filter in GitLoaderComponent
This commit fixes the issue where the GitLoaderComponent would fail if the file_filter input was not evaluated correctly. Changes include:
- Added a check to ensure that file_filter is a valid string before calling eval.
- Ensured that the evaluated file_filter is callable, otherwise it defaults to None.
* [autofix.ci] apply automated fixes
* feat: Enhance GitLoaderComponent with dynamic inputs, content filtering
- Changed inputs from `StrInput` to `MessageTextInput` to enable dynamic use with agents.
- Added `content_filter` field to allow additional content filtering using regex.
- Updated `file_filter` to support glob format, simplifying usage for users.
- Implemented binary file removal filter to exclude binary files from queries, aligning with the agent's purpose.
* [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>
* ✨ (constants.ts): add BUILDS endpoint to URLs constants
✨ (index.ts): create index file for builds-related queries
✨ (use-delete-builds.ts): implement useDeleteFLowPool hook for deleting builds
* ✨ (chatView): integrate useDeleteFlowPool hook for deleting flow pool
♻️ (chatView): refactor clearChat function to use mutateFlowPool for deletion
* ♻️ (use-delete-builds.ts): rename useDeleteFLowPool to useDeleteBuilds for clarity
♻️ (index.tsx): update import and usage of useDeleteFLowPool to useDeleteBuilds
* ✨ (API): add use-get-builds query to fetch build data
✨ (PageComponent): integrate use-get-builds query for fetching builds
✨ (flowStore): add setters for inputs, outputs, and hasIO in flowStore
* ♻️ (flowStore.ts): refactor hasIO to derive its value from inputs and outputs
🔥 (flowStore.ts): remove unused resetFlow function to clean up the codebase
* ♻️ (use-get-builds.ts): refactor useGetBuildsQuery to remove unused params
✨ (PageComponent): add logic to handle flow state, inputs, outputs, and viewport
♻️ (flowStore): refactor and add resetFlow method to handle flow state reset
* ✅ (chatComponent): add data-testid attributes for better testability
✅ (generalBugs-shard-3.spec.ts): add end-to-end test for playground button state
---------
Co-authored-by: anovazzi1 <otavio2204@gmail.com>
✨ (headerComponent/index.tsx): Add functionality to handle user logout in the header component
🔧 (api.tsx): Add useLogout and useRefreshAccessToken functions to handle user logout and access token refresh
🔧 (use-post-logout.ts): Implement useLogout function to handle user logout functionality
🔧 (use-post-refresh-access.ts): Implement useRefreshAccessToken function to handle access token refresh
🔧 (authStore.ts): Remove unnecessary imports and update the authStore functionality for user logout and access token management.
Co-authored-by: anovazzi1 <otavio2204@gmail.com>
* ♻️ (crud.py): refactor delete_vertex_builds_by_flow_id function to correctly delete vertex builds by flow_id using relationship attribute instead of column comparison.
* 📝 (generalBugs-shard-0.spec.ts): Remove unnecessary test case and add new test case for chat messages clearing functionality
✨ (generalBugs-shard-8.spec.ts): Add new test case for interacting with API request
✨ (generalBugs-shard-9.spec.ts): Add new test case for testing chat memory functionality
* Fixed refresh button and refresh parameter
* Refactored Multiselect component and implemented custom values on it
* Fixed default values
* Made Backend support combobox on Dropdown and Multiselect
* fix: update TextAreaComponent styling for edit node table
Adjust the styling of the TextAreaComponent in the edit node table to fix the positioning of eye icon
* [autofix.ci] apply automated fixes
---------
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
* feat: create useDeleteApiKey hook to handle api keys delete
* refactor: use mutation to handle delete api key
* [autofix.ci] apply automated fixes
* feat: create useGetApiKeys hook
* refactor: use useGetApiKeysQuery hook to get api keys data
* [autofix.ci] apply automated fixes
* refactor: change interface name
* refactor: remove unnused loading state and use react state instead of react ref to ensure component render
* fix: multiple refreshs when auto_login=false
---------
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
* merge
* [autofix.ci] apply automated fixes
* support for MultilineSecretInput
* add support for MultilineSecretInput
* [autofix.ci] apply automated fixes
* ruff
* align eye-icon
* tweaks and modal
* [autofix.ci] apply automated fixes
* textare edit modal hidden text plus eye icon
* fix pydantic serialization warning
* [autofix.ci] apply automated fixes
* chore: Add password visibility toggle to text area components
* [autofix.ci] apply automated fixes
* fix list assistants
* fix: remove extraneous property from is-unicode-supported dependency
* fix: update TextAreaComponent styling for edit node table
Adjust the styling of the TextAreaComponent in the edit node table to fix the positioning of the side-bar button. The right margin of the button was changed from 5.2rem to 4.2rem to align it correctly with the text area. This change improves the visual consistency of the edit node table.
* fix modal not sync with outside state
* add comment for future devs
---------
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
Co-authored-by: anovazzi1 <otavio2204@gmail.com>
* removed console log and fixed nulland
* Fixed ag grid version mismatch
* Fixed unused import
* Fixed ctrl+a not working on edit node and tweaks
* Fixed styling on editnode
* Made it work on mac
* ✅ (generalBugs-shard-7.spec.ts): add end-to-end test for selecting all with ctrl + A on advanced modal to ensure functionality works as expected
---------
Co-authored-by: cristhianzl <cristhian.lousa@gmail.com>
🐛 (App.tsx): Fix logic to correctly display error modal when health data is missing or not "ok"
🔧 (use-get-health.ts): Disable retry option in useGetHealthQuery to prevent unnecessary refetching of health data
* changed column defs to receive handleOnNewValue and use it to change Advanced variable
* Exported function isTargetHandleConnected
* Refactored types of setNodeClass
* Exported type of handleOnNewValue
* Refactored useHandleNodeClass to only handle changes to node data
* Refactored toggleCellRender to handle advanced values by itself with the handleOnNewValue
* changed setNodeClass types and disabled hook
* changed handleNodeClass on parametercomponent
* changed handleNodeClass on the two components that used it
* refactor: Update handleNodeClass to accept newNodeClass and type only
* Refactor EditNodeModal component to use new handleNodeClass and columnDefs
* Changed columnDefs to receive new handleNodeClass and not receive useless parameters
* changed cellTypeStr to strRender
* Refactored inputFileComponent to use the new handleOnNewValue
* Refactored keypairList to convert values on the fly
* added parameterRenderComponent that renders all parameters in one place
* Exported parameterRenderComponent
* Changed tableNodeCellRender to use ParameterRenderComponent
* changed parameterredercomponent to receive name
* changed strrendercomponent to receive name
* changed nodecellrender to pass name and to check if value is undefined before assigning on templateData
* chore: Refactor use-handle-new-value to handle undefined values in changes
* Used ParameterRenderComponent at parameterComponent
* Refactored parameterRenderComponent to include refresh button
* Created refresh parameter component
* Added nodeId to parameterrendercomponent call
* Removed unused variable
* Refactored refreshButton
* Fixed parameters not showing when they dont have a value
* Created a tweakComplnent that renders the tweak individually, with the same table as the EditNode
* Created tweaks component, that renders all tweaks
* Changed tableNodeCellRender to pass setNode as well
* changed handleOnNewValue to use custom setNode if specified
* added editNodeComponent that handles the table and rowData and columnDefs
* changed editNodeModal to use editNodeComponent instead of table
* changed columndefs type to handle setNode and hideVisibility optional parameters
* changed useRowData to not use myData, and just use nodeClass
* Changed codeTabsPropsType tweaks property to include only the ncessary
* changed codeTabsComponent to use TweaksComponent and handle an internal nodes state
* changed apiModal to handle the tweaks build by finding the differences between old and current node
* fix bug on API modal that refresh tweaks table all the time
* Created new tweaks store type
* Added tweaks store with all of the logic needed to get the tweaks on the API page
* refactored TweakComponent to hold an temporary state to prevent the table from rerendering
* Added TweakComponent into TweaksComponent
* Removed external state on tableAdvancedToggle, making every state come from the Stores
* Removed external state from TableNodeCellRender and added isTweaks to choose which store to use
* Added SetNode type on HandleOnNewValue
* Added custom setNode to handleNodeClass
* Removed unused logic from apiModal
* removed unused old code
* Changed type of getChangesTypes
* Transformed string into object on get codes
* Changed getNodesWithDefaultValue to return nodes that will appear on Tweaks, as well as just the allowed parameters
* added hasTweaks to tabs
* added check of template keys to update the local nodeClass state, allowing the table to be updated just when the number of parameters changes
* passed isTweaks to columnDefs
* removed unused state and passed isTweaks to value getters
* Removed unused state
* updated tabsArrayType with hasTweaks and removed unused types
* Added local nodes tweaks state to the codetabscomponent and refactored conditions of display
* removed unused console.log
* changed advanced toggle to use parameterid given by the value
* changed nodecellrender to use parameter id given by the value
* passed parameter id by value to the renderers
* removed nodeClass from columnDefs definition
* Fixed isTargetHandleConnected returning error if field is undefined
* Fix performance issues on edit node modal
* Fixed scroll overflow issues on tweaksComponent
* Revert "Revert "refactor: update template api, handleonnewvalue and handlenodeclass hooks (#2628)""
This reverts commit 236ae82cabba2fa1128f498d781099facd222b57.
* 📝 (tweaksTest.spec.ts): remove redundant code and improve readability by simplifying the interaction with elements in the test case
* added custom id for tests
* ✨ (frontend): Add unique id prop to input components for better testability and accessibility.
✨ (Hierarchical Tasks Agent.spec.ts): Update dropdown element IDs to improve clarity and consistency
✨ (Memory Chatbot.spec.ts): Update dropdown element IDs to improve clarity and consistency
✨ (Sequential Tasks Agent.spec.ts): Update dropdown element IDs to improve clarity and consistency
✨ (chatInputOutputUser-shard-0.spec.ts): Update dropdown element IDs to improve clarity and consistency
✨ (chatInputOutputUser-shard-1.spec.ts): Update dropdown element IDs to improve clarity and consistency
✨ (chatInputOutputUser-shard-2.spec.ts): Update dropdown element IDs to improve clarity and consistency
✨ (decisionFlow.spec.ts): Update input list element IDs to improve clarity and consistency
✨ (decisionFlow.spec.ts): Update prompt area element IDs to improve clarity and consistency
✨ (decisionFlow.spec.ts): Update dropdown element IDs to improve clarity and consistency
✨ (freeze-path.spec.ts): Update dropdown element IDs to improve clarity and consistency
✨ (generalBugs-shard-0.spec.ts): Update dropdown element IDs to improve clarity and consistency
✨ (generalBugs-shard-1.spec.ts): Update dropdown element IDs to improve clarity and consistency
✨ (generalBugs-shard-3.spec.ts): Update dropdown element IDs to improve clarity and consistency
🔧 (logs.spec.ts, textInputOutput.spec.ts): update dropdown test selectors to match changes in the frontend codebase
* Fixed prompt not holding the value when validating
* Fixed range spec on int component
* Fixed OpenAI Model max tokens range spec
* ✨ (dropdownComponent.spec.ts): Update dropdown test cases to use more descriptive test IDs for better clarity and maintainability
📝 (fileUploadComponent.spec.ts): Add explicit wait for "Run Flow" button to ensure it is loaded before clicking
📝 (folders.spec.ts): Update file path in readFileSync function to use an absolute path for better reliability
📝 (freeze-path.spec.ts): Refactor test code to remove commented out code and improve readability by using more descriptive test IDs and removing unnecessary code snippets
✨ (inputListComponent.spec.ts): Update test file to use consistent naming convention for input elements in the InputListComponent
📝 (intComponent.spec.ts): Refactor test file to use consistent naming convention for input elements in the IntComponent
✨ (nestedComponent.spec.ts): Update test steps and interactions for nestedComponent to improve test coverage and accuracy.
📝 (promptModalComponent.spec.ts): Update test selectors for prompt modal component to improve consistency and readability
📝 (textAreaModalComponent.spec.ts): Update test selectors for text area modal component to improve consistency and readability
📝 (toggleComponent.spec.ts): Update test selectors for toggle component to improve consistency and readability
* 🐛 (intComponent.spec.ts): fix incorrect value comparison in test for IntComponent
🐛 (intComponent.spec.ts): fix missing test step for clicking on a specific element in IntComponent test
* 📝 (Vector Store.spec.ts): increase timeout for waiting for "built successfully" text to improve test reliability and prevent false negatives
* Fixed folders test
---------
Co-authored-by: anovazzi1 <otavio2204@gmail.com>
Co-authored-by: Gabriel Luiz Freitas Almeida <gabriel@langflow.org>
Co-authored-by: cristhianzl <cristhian.lousa@gmail.com>
* changing api key journey
* refactor(api_key.py): remove unnecessary code related to config_dir and secret_key_path
refactor(login.py): refactor setting api_key cookie to use user's store_api_key
refactor(variable/service.py): re-encrypt stored value if secret_key changes to ensure validity
* 📝 (api_key.py): Remove unused imports and clean up code for better readability
📝 (login.py): Remove unused imports and clean up code for better readability
📝 (auth/utils.py): Remove unused imports and clean up code for better readability
📝 (store/service.py): Remove unused imports and clean up code for better readability
* 🔧 (utils.py): replace hashing logic with random key generation for key length less than 32 bytes to ensure key length is always 32 bytes
📝 (utils.py): update comments for clarity and accuracy regarding key generation and encryption process
---------
Co-authored-by: Gabriel Luiz Freitas Almeida <gabriel@langflow.org>
* Added fuzzy search and custom value on search on Dropdown Component
* added allowCustom prop to allow custom values on dropdownComponent
* changed type of allowCustom
* added custom to custom field on dropdown
* Fixed empty search not showing all of the options
* Added Text on the left of the label
* ✨ (sidebarComponent): Add support for downloading folders in the sidebar component to allow users to download folder data as JSON files
🔧 (sidebarComponent): Remove unused import and function related to downloading folders to clean up the codebase
📝 (use-get-download-folders): Add a new function to handle downloading folders from the API in a separate file for better code organization
♻️ (MainPage/services): Remove unused functions related to downloading and uploading flows from folders to simplify the services file and improve maintainability
🔧 (foldersStore): Remove unused import and function related to uploading flows from folders to clean up the codebase
* 📝 (sideBarFolderButtons/index.tsx): add error handling logic to display error message when downloading folder fails
* update error message
---------
Co-authored-by: anovazzi1 <otavio2204@gmail.com>
* ✨ (sidebarComponent): Add usePostFolders hook to handle adding new folders in the sidebar
📝 (folders): Add use-post-folders and use-patch-folders hooks for handling post and patch requests for folders
🔧 (BundleModal): Remove useFolderSubmit hook and directly use usePostFolders hook for adding and updating folders in the modal
* ✨ (sidebarComponent): Add usePatchFolders hook to handle updating folders in the sidebar component
🔧 (use-patch-folders): Refactor IPatchAddFolders interface to IPatchPatchFolders for better naming consistency
🔧 (use-patch-folders): Refactor addFoldersFn to patchFoldersFn for better function naming
🔧 (use-patch-folders): Update patchFoldersFn to send patch request to specific folder endpoint
🔧 (use-patch-folders): Update patchFoldersFn to handle updating folders and return updated data
🔧 (use-patch-folders): Update usePatchFolders hook to use patchFoldersFn for mutation
🔧 (use-post-folders): Remove unnecessary call to getFoldersApi after posting folders
🔧 (BundleModal): Remove BundleModal component and entities as they are no longer needed
🔧 (BundleModal/index.tsx): Remove unused imports and clean up code
🔧 (foldersModal/component/index.tsx): Remove unused imports and clean up code
🔧 (foldersModal/entities/index.ts): Remove unused zod schema and clean up code
🔧 (foldersModal/hooks/submit-folder.tsx): Remove unused imports and clean up code
✨ (foldersModal/index.tsx): Remove unused FoldersModal component from modalsComponent to optimize code and improve maintainability.
* 📝 (index.tsx): Remove unused openFolderModal and setOpenFolderModal props from ModalsComponent
♻️ (services/index.ts): Remove addFolder, updateFolder, and deleteFolder functions as they are not used in the application
♻️ (foldersStore.tsx): Remove unused import statements for uploadFlowsFromFolders from services and related functions
* 📝 (index.tsx): replace async/await with synchronous function call to refresh folders after successful operation