Commit graph

4,133 commits

Author SHA1 Message Date
anovazzi1
fa5243970f almost done with display_name 2024-06-07 15:57:37 -03:00
anovazzi1
8742c87bfe Merge remote-tracking branch 'origin/two_edges' into new_Group 2024-06-07 15:18:57 -03:00
ogabrielluiz
472c8737dd move folder 2024-06-07 14:39:27 -03:00
ogabrielluiz
4c87f7662c Merge remote-tracking branch 'origin/dev' into two_edges 2024-06-07 10:42:22 -03:00
anovazzi1
8ac7b4b27a update group to work with new outputs 2024-06-06 15:23:58 -03:00
Lucas Oliveira
41b0660dfd Styled Output Type 2024-06-05 16:51:30 -03:00
ogabrielluiz
f8bd552139 Merge remote-tracking branch 'origin/dev' into two_edges 2024-06-05 09:29:13 -03:00
ogabrielluiz
e693fba120 refactor: Update defaultOpen prop in DisclosureComponent and ParentDisclosureComponent
The defaultOpen prop in the DisclosureComponent and ParentDisclosureComponent has been updated to handle different conditions for opening the disclosure. This change improves the behavior and functionality of the components.

Note: The commit message has been generated based on the provided code changes and recent commits.
2024-06-04 22:25:16 -03:00
ogabrielluiz
7c780b1ba5 refactor: Update build_inputs method in Component class
The build_inputs method in the Component class has been updated to handle the user_id parameter and return a list of inputs. This change improves the functionality and flexibility of the custom component.
2024-06-04 22:25:08 -03:00
Cristhian Zanforlin Lousa
610753fbff
Add lazy load on router to improve bootstrap application performance (#2050)
 (routes.tsx): implement lazy loading for route components to improve
performance
 (routes.tsx): add Suspense fallback with LoadingComponent for better
UX during lazy loading
2024-06-04 17:50:45 -03:00
ogabrielluiz
84d6de5e74 refactor: Advanced Disclosure now opens when there's a search 2024-06-04 17:24:09 -03:00
ogabrielluiz
a65965fcb3 📝 (endpoints.py): Add support for caching components to improve performance and reduce load on the server
📝 (setup.py): Change function create_or_update_starter_projects to be asynchronous to handle await calls
📝 (types.py): Add caching mechanism to function aget_all_components to improve performance and reduce redundant calls
📝 (main.py): Change call to create_or_update_starter_projects to be awaited to handle asynchronous operation
📝 (index.tsx): Add functionality to reload components in the menu bar to update component data dynamically
📝 (index.ts): Modify getAll function to accept a force_refresh parameter to force a refresh of data
📝 (typesStore.ts): Update getTypes function to accept a force_refresh parameter and pass it to the getAll function
📝 (index.ts): Update getTypes function in TypesStoreType to accept a force_refresh parameter
📝 (test_initial_setup.py): Update test_create_or_update_starter_projects to await the asynchronous function create_or_update_starter_projects
2024-06-04 13:35:00 -03:00
ogabrielluiz
6e7421998d 📝 (frontend): reorganize imports and fix import order in OutputComponent and ParameterComponent to improve code readability
♻️ (frontend): refactor OutputComponent and ParameterComponent to remove unnecessary imports and optimize code structure
📝 (frontend): remove console.log statement in ApiModal view to clean up code and improve maintainability
2024-06-04 12:55:39 -03:00
ogabrielluiz
8c89efd08f run codespell 2024-06-04 09:26:13 -03:00
anovazzi1
12b3a9b717 refactor: Remove console.log statements from ParameterComponent and fix clean edges 2024-06-03 18:59:43 -03:00
cristhianzl
4efde816b5 (routes.tsx): implement lazy loading for route components to improve performance
 (routes.tsx): add Suspense fallback with LoadingComponent for better UX during lazy loading
2024-06-03 10:48:04 -03:00
ogabrielluiz
7fb5644a87 refactor: Update langflow custom imports and base classes
This commit updates the langflow custom imports and base classes in the code. It adds the "Component" import and base class to the langflow custom __init__.py file. It also updates the langflow template __init__.py file to include the "Input", "Output", "FrontendNode", and "Template" imports and base classes. Additionally, it modifies the langflow base ChatComponent class to inherit from the Component class. These changes improve the organization and functionality of the langflow custom and template modules.

Note: The commit message has been generated based on the provided code changes and recent commits.
2024-06-02 20:35:59 -03:00
ogabrielluiz
1fa3a6a379 Merge branch 'feature/output_dropdown' into fix_build_fe 2024-05-31 16:25:43 -03:00
anovazzi1
513046caba refactor: Update new output creation logic in reactflowUtils.ts 2024-05-31 16:14:09 -03:00
anovazzi1
4727cae10e fix backward compability 2024-05-31 16:09:41 -03:00
ogabrielluiz
20af601ad7 refactor: Update getCurlRunCode function to export it as a named export
The getCurlRunCode function in get-curl-code.tsx has been updated to export it as a named export instead of the default export. This change improves the code organization and allows for better import statements in other modules.

Note: The commit message has been generated based on the provided code changes and recent commits.
2024-05-31 15:21:02 -03:00
Gabriel Luiz Freitas Almeida
5e2f4b8f83
Add webhook endpoint, and other fixes (#1766)
* 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
2024-05-31 11:02:06 -07:00
ogabrielluiz
f705995311 refactor: Update new output creation logic in reactflowUtils.ts
Simplify the logic for creating new output fields in the `updateNewOutput` function of `reactflowUtils.ts`. Instead of mapping over the `outputTypes` array, directly assign a new output field to `sourceNode.data.node!.outputs`. The new output field includes the `outputTypes` as `types`, sets `selected` based on the `selected` variable, and sets `name` as a string representation of `outputTypes` joined with " | ". This change improves the clarity and efficiency of the code.
2024-05-31 10:30:25 -03:00
ogabrielluiz
709082f2f0 feat: Update title in GenericNode component
This commit updates the title in the GenericNode component to use the `name` property instead of the `selected` or `types[0]` properties. This change improves the accuracy and clarity of the code.
2024-05-30 22:45:44 -03:00
Gabriel Luiz Freitas Almeida
67207eb171
Fix endpoint URL interpolation issue in getCurlCode (#2026)
* chore: Update getCurlCode to fix endpoint URL interpolation issue
2024-05-30 13:18:56 -07:00
ogabrielluiz
25752b1aa8 feat: Migrate base classes to outputs in FrontendNode
This commit migrates the base classes of the FrontendNode to the outputs field. Each base class is converted into an OutputField with the same name and type. This change ensures consistency and improves the structure of the code.
2024-05-30 17:17:36 -03:00
ogabrielluiz
5c818f0b60 feat: Update field types in prompt and formatter modules
This commit updates the field types in the `prompt.py` and `formatter/base.py` modules. The `DefaultPromptField` class in `prompt.py` now inherits from `InputField` instead of `TemplateField`. Similarly, the `format` method in the `FieldFormatter` class in `formatter/base.py` now accepts an `InputField` parameter instead of a `TemplateField` parameter. These changes ensure consistency and improve the accuracy of the code.
2024-05-30 16:46:45 -03:00
ogabrielluiz
32726cba30 added OutputFieldType 2024-05-30 16:43:03 -03:00
ogabrielluiz
cc49757333 feat: Update API modal utils to use InputFieldType
The code changes in this commit update the API modal utils to use the `InputFieldType` type instead of the deprecated `TemplateVariableType`. This change ensures that the codebase is up to date with the latest API types and improves the accuracy and clarity of the code.
2024-05-30 16:42:01 -03:00
Gabriel Luiz Freitas Almeida
eb68558905
Update utils.py to handle SecretStr field type as str with password and load_from_db attributes (#2005)
* 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
2024-05-30 12:02:54 -07:00
ogabrielluiz
d0829f5dbe Merge remote-tracking branch 'origin/dev' into two_edges 2024-05-30 14:48:38 -03:00
Gabriel Luiz Freitas Almeida
94e8bf1e2b
Add support for running flows by endpoint name (#2012)
* 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.
2024-05-30 07:46:28 -07:00
Gabriel Luiz Freitas Almeida
e5986ec727
Added curl parse to API Request component and fixed dict issues (#2013)
* 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
2024-05-30 06:50:31 -07:00
Cristhian Zanforlin Lousa
fb018eda10
Fix Application Crash with Multiple Nested Dict Components in Flow (#2011)
* ♻️ (dictComponent): improve value change detection logic
🐛 (parameterComponent): remove unnecessary console.log statement

* ♻️ (frontend): remove redundant comments and clean up code formatting

♻️ (editNodeModal): refactor to use nodeId instead of passing data directly

* ♻️ (editNodeModal): refactor to use data prop instead of nodeId for better data handling
♻️ (nodeToolbarComponent): refactor to improve code readability and consistency
2024-05-29 19:26:12 -07:00
ogabrielluiz
1f57845993 🔧 (frontend): Remove NATIVE_CATEGORIES constant and simplify logic for checking template code value in GenericNode component 2024-05-29 11:22:21 -03:00
ogabrielluiz
c6b315bf60 Merge branch 'feature/output_dropdown' into two_edges 2024-05-29 09:42:29 -03:00
ogabrielluiz
79e35dc2a2 Merge remote-tracking branch 'origin/dev' into two_edges 2024-05-28 23:03:38 -03:00
anovazzi1
02a1624bf4 update cleanEdges and fix updateNewOutput 2024-05-28 18:29:07 -03:00
anovazzi1
45011e8fda refactor: add idx property to handle types in GenericNode and reactflowUtils 2024-05-28 17:57:52 -03:00
Gabriel Luiz Freitas Almeida
f694f0716f
Fixed freeze implementation (#1983)
* chore: Update utils imports and add cn to nodeToolbarComponent

* fix(utils.py): change key parameter name from 'flow_id' to 'key' for consistency
fix(chat.py): remove unused import 'functools.partial' to improve code readability
refactor(chat.py): remove 'set_cache_coro' partial function and pass 'chat_service' directly to 'build_vertex' method for better code organization
feat(schemas.py): add 'used_frozen_result' field to ResultDataResponse and ResultData classes with default value of False for better tracking of frozen result usage
feat(base.py): add 'chat_service' parameter to 'build_vertex' method in Graph class to allow passing ChatService instance for cache operations
feat(base.py): update 'build_vertex' method in Graph class to handle caching of frozen vertices and set 'used_frozen_result' flag in ResultData class
feat(cache/service.py): change parameter name from 'flow_id' to 'key' in 'set_cache' and 'get_cache' methods for consistency
feat(cache/utils.py): add 'CacheMiss' class to represent cache miss situations for better error handling

* feat: Add check for None before setting 'used_frozen_result' flag in Graph class

* feat: Add frozen effect to buttons and improve code organization

The code changes introduce a frozen effect to buttons by adding new CSS classes and styles. This effect is achieved by applying borders, shadows, and background colors. Additionally, the code is refactored to improve code organization and remove unused imports.

Note: This commit message follows the convention used in the recent user commits.

* feat: Add frozen effect to buttons and improve code organization

* style(applies.css): Update border styles for frozen state to improve visual appearance and consistency
style(applies.css): Adjust opacity of frosted background for better readability
style(tailwind.config.js): Increase opacity of frozen-ring shadow for better visual effect
style(tailwind.config.js): Increase opacity of frosted-ring shadow for better visual effect

* feat(parameterComponent): add snowflake icon to ParameterComponent when node is frozen and not aligned left

* style(applies.css): Update border styles for frozen state and add border to improve visual appearance and consistency
2024-05-28 12:43:14 -07:00
anovazzi1
ee62bd38b7
Update parent disclosure title in ExtraSidebar component (#1987)
chore: Update parent disclosure title in ExtraSidebar component
2024-05-28 12:41:58 -07:00
Gabriel Luiz Freitas Almeida
8f6b9d6443
Added API key access to AUTO_LOGIN=True and fixed SecretKeyModal (#1994)
* chore: Add type attribute to button in SecretKeyModal

* chore: Refactor Header component to fix autoLogin button visibility

* docs(api.mdx): update admonition message to remove reference to LANGFLOW_AUTO_LOGIN environment variable
docs(cli.mdx): update CLI command example to use 'run' subcommand instead of no arguments
feat(cli.mdx): add 'api-key' command to create API key for default superuser when LANGFLOW_AUTO_LOGIN is True

* docs(api.mdx): update admonition message to remove reference to LANGFLOW_AUTO_LOGIN environment variable

* chore: Fix typo in get-curl-code.tsx

---------

Co-authored-by: anovazzi1 <otavio2204@gmail.com>
2024-05-28 12:02:40 -07:00
ogabrielluiz
5dce2cddef chore: Update Python API code to use optional typing and fix formatting 2024-05-28 15:45:16 -03:00
anovazzi1
77cb85b7f2 feat(frontend): refactor OutputComponent to use external dropdown menu component 2024-05-28 15:35:38 -03:00
Lucas Oliveira
7d67f36000
Fix Building timeout and macbook shortcuts (#1964)
* Fixed shortcuts not working on mac

* fixed top level vertices and added timeout

* revert flowStore changes

* chore: Update worker timeout setting

* feat: Add endpoint to retrieve config settings

The commit adds a new endpoint `/config` to retrieve the configuration settings. This endpoint returns the `ConfigResponse` model, which includes the `timeout` value. The implementation handles any exceptions and logs them appropriately.

* feat: Add fetchConfig function to retrieve configuration settings

This commit adds a new function fetchConfig to the API utils module. The function makes an HTTP GET request to the /config endpoint and returns the configuration data. Any errors that occur during the request are logged and rethrown. This function will be used to initialize the application with the fetched configuration.

Co-authored-by: Gabriel Luiz Freitas Almeida <gabriel@langflow.org>

* revert changes

* feat: Add setupAxiosDefaults function to initialize Axios configurations

This commit adds a new function setupAxiosDefaults to the API utils module. The function fetches the configuration data using the fetchConfig function and sets up default configurations for Axios. It sets the base URL and timeout for Axios requests based on the fetched configuration. This function will be used to initialize Axios with the correct configurations.

Co-authored-by: Gabriel Luiz Freitas Almeida <gabriel@langflow.org>

* fix(langflow): rename 'timeout' setting to 'worker_timeout' for clarity and consistency
feat(langflow): add 'frontend_timeout' setting to control frontend API call timeout
chore(langflow): reorganize imports and constants in settings module for better readability

* Set frontend_timeout to 0

---------

Co-authored-by: ogabrielluiz <gabriel@langflow.org>
2024-05-28 08:18:36 -07:00
anovazzi1
3f43958f08 fix dropdown bug 2024-05-28 08:43:48 -03:00
anovazzi1
9d38ccc15d feat(frontend): refactor OutputComponent to use external dropdown menu component 2024-05-27 19:00:26 -03:00
anovazzi1
354e1bc126 funcionando mas ainda não ideal 2024-05-27 17:57:22 -03:00
anovazzi1
596ab2f282 feat(frontend): add new OutputComponent to handle dropdown menu for selecting output types in generic nodes
feat(frontend): remove ComponentOutputs component and integrate its functionality into ParameterComponent
feat(frontend): update ParameterComponent to use OutputComponent for displaying output types
feat(frontend): update GenericNode to use OutputComponent for displaying output types and remove ComponentOutputs
feat(types): update ParameterComponentType to use number type for index instead of string
2024-05-27 16:08:34 -03:00
anovazzi1
70a43c3947 refactor handle tooltip to it's own component 2024-05-27 11:44:47 -03:00