🔧 (pyproject.toml): add couchbase dependency as optional with specific extras to improve flexibility and control
🔧 (pyproject.toml): add couchbase extra to poetry extras to allow for easier installation and management of the dependency
✅ (pyproject.toml): add "api_key_required" marker to test markers for better test organization and coverage
* Feat: Create the first version of the eraser tool
* feat: Add Messages page to SettingsPage
Refactor the SettingsPage component to include a new "Messages" page. This page will be accessible through the "/settings/messages" route and will display messages related to user settings. The necessary changes have been made to the index.tsx file of the SettingsPage component and the routes.tsx file.
* refactor(tableComponent): update column definitions to include checkbox selection logic for first column
feat(API): add support for excluding specific columns in getMessagesTable function
fix(flowLogsModal): pass excludedFields parameter to getMessagesTable function
refactor(GlobalVariablesPage): remove unnecessary checkbox selection properties from column definitions
fix(messagesPage): pass excludedFields parameter to getMessagesTable function
refactor(utils): add support for excluding specific columns in extractColumnsFromRows function
* feat: Add API endpoints for managing messages
This commit adds new API endpoints for managing messages. It includes the ability to delete messages by their IDs, update a specific message, and delete all messages associated with a session. These changes are implemented in the `monitor.py`, `schema.py`, and `service.py` files.
* ✨ (monitor.py): add MessageIds schema for structured message deletion
♻️ (monitor.py): change delete_messages endpoint to POST for better semantics
♻️ (monitor.py): update delete_messages to use MessageIds schema
✨ (schemas.py): add MessageIds schema for structured message deletion
🐛 (service.py): fix SQL query in delete_messages to use correct column name
✨ (index.tsx): add toTitleCase utility to format column headers
✨ (API/index.ts): add deleteMessagesFn to handle message deletion via API
✨ (headerMessages): add HeaderMessagesComponent for message management UI
✨ (use-messages-table): add useMessagesTable hook to fetch and manage messages
✨ (use-remove-messages): add useRemoveMessages hook to handle message deletion
♻️ (messagesPage): refactor messages page to use new messages store
✨ (messagesStore): create zustand store for managing messages state
✨ (types): add types for messages and zustand messages store
* 💡 (schemas.py): add newline at end of file to follow PEP 8 guidelines
* refactor(headerMessages): update text content in HeaderMessagesComponent
* move editable attribute to table Component
* refactor: Move editable attribute to TableComponent
add update function, need to fix backend
* ♻️ (monitor.py): change POST to DELETE for delete_messages endpoint
♻️ (schemas.py): remove unused MessageIds schema
♻️ (api.tsx): add missing commas in ApiInterceptor function
🐛 (api.tsx): fix duplicate request check to include method "get"
♻️ (index.ts): change deleteMessagesFn to use DELETE method instead of POST
♻️ (use-remove-messages.tsx): clean up comments and improve error handling
* start history in playgroundModal
* ♻️ (monitor.py): refactor update_message to return MessageModelResponse
♻️ (service.py): update SQL query to use index instead of id
♻️ (api.tsx): refactor duplicate request check logic
✨ (check-duplicate-requests.ts): add helper to check and store duplicate requests
🐛 (messagesStore.ts): fix message update logic to use index instead of id
* ♻️ (monitor.py, service.py): remove trailing whitespace to improve code cleanliness
* refactor: Add getSessions function to fetch available sessions in IOModal
* 🐛 (service.py): add missing 'id' column in SQL query to fix data retrieval issue
💡 (service.py): add print statement for debugging SQL query
♻️ (index.tsx): reorder imports for better readability and maintainability
♻️ (flowStore.ts): remove trailing commas to improve code consistency and readability
💡 (index.ts, storeUtils.ts): format type definitions for better readability
* update editable fields
* Feat: Make the table last column non-resizable and add a restore columns button
* Remove unnused imports
* Refactor: Remove “Page size” from table pagination
* Refactor: remove page size directly in css file
* chore: Update description text in SettingsPage
* Refactor: Add ResetColumns component to improve table functionality
* Refactor: Make Reset Column button reset columns order
* Refactor: Remove select from delete session button
* Refactor: Remove commented code for chat history tab in IOModal
* update route
* fix selection bug on Messages Table
* fix libs
---------
Co-authored-by: igorrCarvalho <igorsilvabhz6@gmail.com>
Co-authored-by: ogabrielluiz <gabriel@langflow.org>
Co-authored-by: cristhianzl <cristhian.lousa@gmail.com>
Co-authored-by: italojohnny <italojohnnydosanjos@gmail.com>
* feat: Refactor delete_multiple_flows endpoint to use DELETE method
The code changes modify the `delete_multiple_flows` endpoint in the `flows.py` file. The endpoint was previously using the `POST` method, but it has been refactored to use the `DELETE` method instead. This change aligns with RESTful API conventions and improves the clarity and consistency of the codebase.
Note: The commit message has been generated based on the provided code changes and recent commits.
* Refactor delete_multiple_flows endpoint to use DELETE method
* Refactor delete_multiple_flows endpoint to use DELETE method
* ♻️ (index.ts): refactor deleteBatch function to use data field instead of params for batch deletion
---------
Co-authored-by: cristhianzl <cristhian.lousa@gmail.com>
* feat: Add upload_file function for file uploading
This commit adds a new function called `upload_file` to the `load/utils.py` module. This function allows users to upload a file to the storage service and returns the file path. It takes in parameters such as `file_path`, `host`, `port`, `flow_id`, `components`, and `tweaks`. The function makes use of the `upload` function to send a POST request to the storage service API and handle the response.
The `upload_file` function is useful for scenarios where users need to upload files to the flow and associate them with specific components. It provides flexibility by allowing users to specify the components that require the file and any tweaks that should be applied to the file.
This feature enhances the functionality of the codebase and improves the overall user experience when working with file uploads in the application.
* 📝 (utils.py): Add get_flow function to retrieve flow details from Langflow
📝 (utils.py): Remove unused 'port' parameter from upload functions
📝 (utils.py): Update upload function to use Langflow host URL and remove port parameter
📝 (utils.py): Update upload_file function to use Langflow host URL and port number
📝 (utils.py): Update function descriptions and variable names for clarity and consistency
📝 (model.py): Remove 'folder_id' field from FlowBase model in langflow services database
* 📝 (load/__init__.py): add get_flow function to __all__ list to expose it to other modules
📝 (utils.py): fix docstring formatting issue in get_flow function
* make getPythonApiCode receive endpointname
* ⬆️ (pyproject.toml): upgrade couchbase dependency to version 4.2.1 with extras and make it optional
🔧 (pyproject.toml): add couchbase to the couchbase extras section for better organization and management of dependencies
The OpenAIModelComponent class in OpenAIModel.py has been updated to use the float type for the temperature parameter instead of the Optional[float] type. This change ensures consistency and improves code readability. The default value for the temperature parameter remains unchanged at 0.1.
Note: The commit message has been generated based on the provided code changes and recent commits.
The DatabaseService class in service.py has been updated to use the settings_service object for retrieving the database URL instead of directly passing it as a parameter. This change improves code organization and ensures consistency with other services that rely on the settings_service. The necessary modifications have been made in both the DatabaseService class and the DatabaseServiceFactory class.
Note: The commit message has been generated based on the provided code changes and recent commits.
The DatabaseService class in service.py has been updated to use the pool_size and max_overflow settings from the SettingsService. This change allows for better control over the number of connections in the connection pool and the number of connections that can be opened beyond the pool size. The commit also includes necessary modifications to the create_engine function to pass the pool_size and max_overflow parameters.
Note: The commit message has been generated based on the provided code changes and recent commits.
The process_tweaks function in endpoints.py has been updated to include a new stream parameter. This change allows for more flexibility in processing tweaks based on the stream value. The commit also includes necessary modifications to the simple_run_flow function to pass the stream parameter to the process_tweaks function.
Note: The commit message has been generated based on the provided code changes and recent commits.
* Update FastAPI app configuration in main.py
* Add webhook endpoint
* Add Observer model and related changes to database models
* Update refresh button text in ParameterComponent
* Update database models and main.py, and add webhook endpoint and utils for flow model
* Add WebhookComponent to langflow data components
* Update webhook component names in flow data and remove unused code in edge/base.py and graph/base.py
* 🐛 (endpoints.py): fix an issue where the user_id was not being correctly assigned based on the api_key_user or flow object
* 📝 (endpoints.py): Update documentation for the webhook_run_flow endpoint to provide clearer information on its purpose, arguments, and return value. Remove outdated request JSON structure and example request sections. Add information on the arguments and exceptions raised for better clarity.
* chore: Remove unnecessary trailing commas in code files
* feat: Add yield statement to get_lifespan function
* feat: Update webhook columns revision ID
* Refactor import statements for OpenAI conversational agent
* refactor(constants.ts): remove unused tabsArray function and update function name to createTabsArray for clarity
feat(constants.ts): add support for including webhook code in tabs array based on flow webhook property
feat(index.tsx): update function calls to use new createTabsArray function and include webhook code in tabs array based on flow webhook property
refactor(utils.ts): remove trailing commas in function parameters to improve code consistency and readability
feat(utils.ts): add support for including webhook cURL code and tweaks code in tabs array creation for better code organization and presentation
* chore: Update folder_id parameter type to str in API endpoints
* feat: Handle invalid JSON payload in WebhookComponent
The code changes in `Webhook.py` modify the `build` method of the `WebhookComponent` class. If an invalid JSON payload is provided, instead of raising a `ValueError`, the code now handles the exception by creating a default payload with the provided data. The commit also includes a message that describes the invalid JSON payload for better error tracking.
Note: This commit message follows the convention used in the recent user commits.
* refactor: Remove unnecessary code in main.py
* refactor: Update Alembic revision IDs for webhook columns
The Alembic revision IDs for adding webhook columns have been updated to reflect the latest changes. This ensures consistency and proper tracking of the database schema modifications.
Note: The commit message has been generated based on the provided code changes and recent commits.
* 🐛 (endpoints.py): Fix handling of flow_id_or_name variable to correctly identify flow ID or endpoint name for running a flow. Improve error handling for invalid UUID strings and flow not found scenarios.
* refactor: Handle invalid JSON payload in WebhookComponent
The code changes in `Webhook.py` modify the `build` method of the `WebhookComponent` class. If an invalid JSON payload is provided, instead of raising a `ValueError`, the code now handles the exception by creating a default payload with the provided data.
* refactor: Update get_flow_by_id function to handle None flow_id parameter
The get_flow_by_id function in utils.py has been updated to handle the case where the flow_id parameter is None. Previously, the function would raise an exception if flow_id was not provided. Now, if flow_id is None, the function returns None instead of querying the database. This change improves the robustness of the function and allows for more flexible usage.
Note: The commit message has been generated based on the provided code changes and recent commits.
* 📝 (endpoints.py): Add import statement for get_flow_by_id_or_endpoint_name function
📝 (flow.py): Add get_flow_by_id_or_endpoint_name function to retrieve a Flow object by ID or endpoint name
* refactor: Update get_flow_by_id_or_endpoint_name function to handle None flow_id parameter
* 🐛 (flow.py): replace ValueError with HTTPException to return a 404 status code when flow identifier is not found
* refactor: Update error message for flow identifier not found
The code changes in `test_endpoints.py` update the error message when a flow identifier is not found. Previously, the error message referenced the flow ID directly, but now it uses the more generic term "Flow identifier" to account for cases where the identifier could be an endpoint name. This change improves the clarity and flexibility of the error message.
Note: This commit message has been generated based on the provided code changes and recent commits.
* 🔧 (endpoints.py): remove unnecessary flow_id_or_name parameter from the simple_run_flow function call to improve code readability and maintainability
The package versions in the pyproject.toml files for "langflow" and "langflow-base" have been updated. The version of "langflow" was changed from 1.0.0a42 to 1.0.0a43, and the version of "langflow-base" was changed from 0.0.53 to 0.0.54. This update ensures that the latest versions of the packages are being used in the codebase.
Note: The commit message has been generated based on the provided code changes and recent commits.
The serialize_datetime function in model.py has been updated to handle the "updated_at" and "created_at" fields. The function now converts datetime values to ISO 8601 format with timezone information. This change ensures consistent serialization of datetime values in the codebase.
Note: The commit message has been generated based on the provided code changes and recent commits.
* chore: Update utils.py to handle SecretStr field type as str with password and load_from_db attributes
* Update utils.py to handle SecretStr field type as str with password and load_from_db attributes
* docs(migration): add UPSTASH_VECTOR_REST_URL and UPSTASH_VECTOR_REST_TOKEN to the list of default environment variables
pyproject.toml: add upstash-vector package as a dependency with version 0.4.0
src/backend/base/langflow/components/vectorsearch/UpstashSearch.py: create UpstashSearchComponent for implementing a Vector Store using Upstash
src/backend/base/langflow/components/vectorstores/Upstash.py: create UpstashVectorStoreComponent for implementing a Vector Store using Upstash
src/backend/base/langflow/services/settings/constants.py: add UPSTASH_VECTOR_REST_URL and UPSTASH_VECTOR_REST_TOKEN to the list of variables to get from the environment
* ✨ (UpstashSearch.py): Add support for 'number_of_results' and 'text_key' parameters in UpstashSearchComponent to enhance search functionality
♻️ (Upstash.py): Refactor UpstashVectorStoreComponent to include 'text_key' parameter for consistency and improved functionality
* ♻️ (Upstash.py): refactor UpstashVectorStoreComponent to improve code readability and maintainability by restructuring the instantiation of UpstashVectorStore instances based on conditions and adding support for adding documents directly to the instance.
* feat: Update langchain-core, langchainhub, langsmith, and requests dependencies to latest versions
* feat: read flows from local directory at startup
* cleanup
* add check
* fix
* fix
* fix by endpoint name
---------
Co-authored-by: Gabriel Luiz Freitas Almeida <gabriel@langflow.org>
* feat: Add support for running flows by endpoint name
This commit modifies the `simplified_run_flow` endpoint in `endpoints.py` to allow running flows using the endpoint name instead of the flow ID. It introduces a new route parameter `flow_id_or_name` which can accept either a UUID or a string representing the endpoint name. The code first attempts to parse the parameter as a UUID, and if that fails, it queries the database to find a flow with the matching endpoint name. This change improves the usability of the API by providing an alternative way to identify flows for execution.
* feat: Add endpoint_name field to FlowType
This commit adds the `endpoint_name` field to the `FlowType` interface in the `index.ts` file. The `endpoint_name` field is an optional string that represents the name of the endpoint associated with the flow. This change allows for more flexibility in identifying flows by endpoint name instead of just the flow ID. It improves the usability of the codebase by providing an alternative way to reference flows.
* 🐛 (endpoints.py): change type of flow_id_or_name parameter from Union[str, UUID] to str to simplify the API and improve readability
* feat: Add migration utility functions for table, column, foreign key, and constraint existence checks
This commit adds utility functions to the `migration.py` module in the `langflow.utils` package. These functions provide convenient ways to check the existence of tables, columns, foreign keys, and constraints in a database using SQLAlchemy. The functions `table_exists`, `column_exists`, `foreign_key_exists`, and `constraint_exists` take the table name, column name, foreign key name, and constraint name respectively, along with the SQLAlchemy engine or connection object. They use the `Inspector` class from `sqlalchemy.engine.reflection` to retrieve the necessary information and return a boolean value indicating whether the specified element exists in the database. These utility functions improve the readability and maintainability of the codebase by encapsulating the common existence checks in a reusable and modular way.
* feat: Add unique constraints for per-user folders and flows
This commit adds unique constraints for per-user folders and flows in the database. It introduces the `unique_folder_name` constraint for the `folder` table, ensuring that each user can have only one folder with a specific name. Similarly, it adds the `unique_flow_endpoint_name` and `unique_flow_name` constraints for the `flow` table, enforcing uniqueness of endpoint names and flow names per user. These constraints improve data integrity and prevent duplicate entries in the database, providing a more robust and reliable system.
* feat: Add poetry installation and caching steps to GitHub Actions workflow
This commit updates the GitHub Actions workflow file `action.yml` to include additional steps for installing poetry and caching its dependencies. The `run` step now installs poetry using the specified version and ensures that the poetry binary is available in the PATH. Additionally, the workflow now includes a step to restore pip and poetry cached dependencies using the `actions/cache` action. These changes improve the workflow by providing a more efficient and reliable way to manage poetry dependencies and caching.
* refactor: Improve error handling in update_flow function
This commit improves the error handling in the `update_flow` function in `flows.py`. It adds a new `elif` condition to check if the exception is an instance of `HTTPException` and re-raises it. This ensures that any `HTTPException` raised during the update process is properly handled and returned as a response. Additionally, it removes the unnecessary `else` block and simplifies the code logic. This refactor enhances the reliability and maintainability of the `update_flow` function.
* Refactor code to remove console.log statements
* Refactor code to remove console.log statements
* ⬆️ (pyproject.toml): upgrade uncurl dependency to version 0.0.11
* 📝 (flows.py): Add docstring to the read_flows function to provide information about its purpose, arguments, and return value
📝 (parse.py): Add comments and docstrings to the parse_context function to explain its purpose and how it works
📝 (APIRequest.py): Add a new method update_build_config to handle parsing of curl commands and update build configuration based on the parsed context
* refactor: Improve value change detection logic in DictComponent
* refactor: Improve value change detection logic in DictAreaModal
* refactor: Update APIRequest to handle parsing of curl commands and update build configuration
This commit updates the APIRequest class in APIRequest.py to handle parsing of curl commands and update the build configuration based on the parsed context. It introduces a new method, update_build_config, which parses the curl command using the parse_context function and updates the build configuration with the parsed information. Additionally, it handles JSON decoding errors when parsing the data field of the curl command. This improvement enhances the functionality and flexibility of the APIRequest component.
* feat: Add support for handling headers as dictionaries in APIRequest
* refactor: Parse curl commands and update build configuration in APIRequest
This commit refactors the APIRequest class in APIRequest.py to handle parsing of curl commands and update the build configuration based on the parsed context. It introduces a new method, update_build_config, which parses the curl command using the parse_context function and updates the build configuration with the parsed information. Additionally, it handles JSON decoding errors when parsing the data field of the curl command. This improvement enhances the functionality and flexibility of the APIRequest component.
* ✨ (test_data_components.py): add new test case to parse curl command into build configuration for API requests
* 🐛 (src/backend/base/langflow/components/data/APIRequest.py): fix type hinting issue for bodies variable in APIRequest class
📝 (OllamaModel.py): Update comments and docstrings for clarity and consistency
🔧 (OllamaModel.py): Refactor the logic for setting the base URL in the get_model method to improve maintainability and readability