Commit graph

5,196 commits

Author SHA1 Message Date
Cezar Vasconcelos
7ca1d84596
feat: add method and refresh button to fetch Groq models (#2902)
* feat: add method and refresh button to fetch Groq models

* [autofix.ci] apply automated fixes

---------

Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
2024-07-24 08:56:20 -07:00
anovazzi1
007c38afed
feat: add new node Input type for data in table format (#2635)
* feat: add Table component and related functionality

This commit adds the Table component and related functionality to the codebase. The Table component is used to display tabular data and includes features such as pagination, row deletion, row duplication, and adding new rows. The TableOptions component is also added to provide options for resetting the grid and adding new rows. Additionally, the necessary types and interfaces are updated to support the Table component. This feature enhances the user experience by allowing them to interact with tabular data in a more intuitive way.

* feat: add Edit Data trigger to TableNodeComponent

* [autofix.ci] apply automated fixes

* feat: add TableSchema class for defining table structure

* feat: add TableMixin class for table-related functionality

* feat: add TableInput class for table-related functionality

* feat: add TableInput to io module

* feat: update Column model in table schema

This commit updates the `Column` model in the table schema to include the `display_name` and `name` fields instead of `header` and `field`. It also adds validation for the `formatter` field to accept either a `FormatterType` enum value or a string. This change improves the clarity and flexibility of the table schema.

* feat: add displayEmptyAlert prop to TableComponent

This commit adds the `displayEmptyAlert` prop to the `TableComponent` in order to control whether an alert is displayed when the table has no data. By default, the alert will be shown, but it can be disabled by setting `displayEmptyAlert` to `false`. This feature enhances the flexibility of the table component by allowing users to customize the behavior when there are no rows in the table.

* This commit improves the TableAutoCellRender component by adding support for a custom formatter. The formatter can be specified as a prop and allows for rendering the cell value in different formats, such as JSON. This enhancement enhances the flexibility and customization options of the TableAutoCellRender component.

* feat: add FormatColumns function to utils.ts

This commit adds the `FormatColumns` function to `utils.ts` file. The function takes an array of `ColumnField` objects and returns an array of `ColDef` objects. It maps each `ColumnField` to a `ColDef` with properties like `headerName`, `field`, `sortable`, and `filter`. If a `ColumnField` has a `formatter` property, it sets the `cellDataType` or `cellRendererParams` accordingly. This function enhances the flexibility and customization options for formatting columns in the table.

* feat: enhance TableNodeComponent with FormatColumns function

This commit enhances the TableNodeComponent by utilizing the FormatColumns function from utils.ts. The FormatColumns function takes an array of ColumnField objects and returns an array of ColDef objects, allowing for flexible and customizable column formatting in the table. By integrating this function, the TableNodeComponent now has improved column handling capabilities.

* chore: Update TableNodeComponent and TableComponent

This commit updates the TableNodeComponent and TableComponent to improve column handling and customization options. The TableNodeComponent now utilizes the FormatColumns function from utils.ts, allowing for flexible and customizable column formatting in the table. The TableComponent now has a new prop, displayEmptyAlert, which controls whether an alert is displayed when the table has no data. These enhancements enhance the flexibility and customization options of the table components.

* [autofix.ci] apply automated fixes

* feat: Update TableNodeComponent and TableComponent

This commit updates the TableNodeComponent and TableComponent to improve column handling and customization options. It utilizes the FormatColumns function from utils.ts for flexible and customizable column formatting in the table. The TableComponent now has a new prop, displayEmptyAlert, to control the display of an alert when the table has no data. These enhancements enhance the flexibility and customization options of the table components.

* feat: initialize table field values as DataFrame

* feat: Enhance TableNodeComponent with duplicateRow function

This commit enhances the TableNodeComponent by adding the duplicateRow function. This function allows users to duplicate selected rows in the table. When called, it clones the selected nodes and adds the duplicated rows to the table. This feature enhances the flexibility and customization options of the TableNodeComponent.

* [autofix.ci] apply automated fixes

* feat: Remove "text" from basic_types in FormatColumns function

This commit removes the "text" value from the basic_types set in the FormatColumns function in utils.ts. The basic_types set is used to determine the column type for formatting in the table. By removing "text", we ensure that only "date" and "number" types are considered as basic types. This change improves the accuracy and consistency of column formatting in the table.

* fix: alingment bug on AgGrid cell

* [autofix.ci] apply automated fixes

* [autofix.ci] apply automated fixes

* Styled the Open Table button on TableNodeComponent

* Fixed type of ref on tableComponent

* Creaed a TableModal component, that receives the props that are passed to the Table, as well as a title, and creates a modal

* Used the TableModal on the TableNodeComponent

* Fixed looks of TableModal

* Added description set on tableModal

* Add description field to TableNodeComponent

* Fixed text of description if info is not provided

* Added TableComponent in tableNodeCellRenderer

* Added styling based on editNode

* Added Auto Size to table modal

* refactor: update TableOptions component styling and behavior

- Update TableOptions component to dynamically apply text color based on selection
- Remove unnecessary console.log statement
- Improve hover behavior for the Trash2 icon

* chore: Remove unnecessary imports and initialize empty columns array in TableNodeComponent

* feat: Add default values for sortable and filterable in Column model

The code changes in `table.py` modify the `Column` model in the `langflow.schema` module. The `sortable` and `filterable` attributes of the `Column` model now have default values of `True`. This change ensures that new instances of the `Column` model will have these attributes set to `True` by default.

Based on the recent user commits and repository commits, the commit message follows the established convention of using a prefix to indicate the type of change (`feat` for a new feature) and provides a clear and concise description of the changes made.

* feat(utils.ts): add check for empty columns array in FormatColumns function to prevent errors

* feat: Add validation for TableInput value in inputs.py

The code changes in `inputs.py` add a validation function for the `value` attribute of the `TableInput` class. The function checks if the value is a list of dictionaries and raises a `ValueError` if it is not. This ensures that the `TableInput` instances have a valid value that is a list of dictionaries.

Based on the recent user commits and repository commits, the commit message follows the established convention of using a prefix to indicate the type of change (`feat` for a new feature) and provides a clear and concise description of the changes made.

* [autofix.ci] apply automated fixes

* feat: extend editable field to json field

* [autofix.ci] apply automated fixes

* feat: Add validation for TableInput value in inputs.py

* feat(validate.py): add exception handling to catch and re-raise ValidationError with a more informative error message

* chore: Refactor error message in build_custom_component_template function

* fix(validate.py): improve error message formatting in create_class function

Refactor the error message formatting in the `create_class` function in `validate.py` to improve readability and clarity. Instead of using a list comprehension to extract the error messages, the code now uses a nested list comprehension to split the error messages and extract the relevant information. This change ensures that the error message is properly formatted and provides more informative details about the validation errors.

Co-authored-by: Gabriel Luiz Freitas Almeida <gabriel@langflow.org>
Co-authored-by: Lucas Oliveira <lucas.edu.oli@hotmail.com>

* feat: Update TableMixin to support TableSchema or list of Columns

The TableMixin class in input_mixin.py has been updated to support either a TableSchema object or a list of Columns for the table_schema attribute. This change allows for more flexibility in defining the table schema for input validation.

* feat: Update TableNodeComponent to generate backend columns from value

Refactor the TableNodeComponent to generate backend columns from the value when the columns prop is not provided. This change ensures that the component can handle dynamic column generation based on the value, improving flexibility and usability.

Co-authored-by: Gabriel Luiz Freitas Almeida <gabriel@langflow.org>
Co-authored-by: Lucas Oliveira <lucas.edu.oli@hotmail.com>

* Refactor extractColumnsFromRows function to return only ColDef objects

The extractColumnsFromRows function in utils.ts has been refactored to return only ColDef objects instead of a combination of ColDef and ColGroupDef objects. This change simplifies the function's return type and improves consistency in the codebase.

Co-authored-by: Gabriel Luiz Freitas Almeida <gabriel@langflow.org>
Co-authored-by: Lucas Oliveira <lucas.edu.oli@hotmail.com>

* [autofix.ci] apply automated fixes

* refactor: Generate backend columns from value in TableNodeComponent

Refactor the TableNodeComponent to generate backend columns from the value when the columns prop is not provided. This change ensures that the component can handle dynamic column generation based on the value, improving flexibility and usability.

* feat: Update TableNodeComponent to handle number and date properly

* fix bug that delete all rows on modal close

* [autofix.ci] apply automated fixes

---------

Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
Co-authored-by: Gabriel Luiz Freitas Almeida <gabriel@langflow.org>
Co-authored-by: Lucas Oliveira <lucas.edu.oli@hotmail.com>
2024-07-24 06:20:58 -07:00
Cristhian Zanforlin Lousa
7ffcdd2b68
bugfix: filter flows on folder to ensure is displaying only for the logged user (#2897)
* 🐛 (generalBugs-shard-5.spec.ts): fix test to wait for elements to be interactable before performing actions to prevent flakiness

* 🐛 (folders.py): fix issue where all flows were being returned instead of only flows from the current user in the specified folder
2024-07-23 14:06:16 -03:00
Cristhian Zanforlin Lousa
61265cc327
feat: change download flows to download as .zip file (#2870)
* 📝 (flows.py): Add endpoint to download multiple flows as a zip file
📝 (constants.ts): Add FLOWS constant for API endpoint
📝 (index.ts): Add use-post-download-multiple-flows query function
📝 (use-post-download-multiple-flows.ts): Implement function to download multiple flows as a zip file
📝 (index.tsx): Import usePostDownloadMultipleFlows in componentsComponent
📝 (index.tsx): Implement handleExport function to download multiple flows as a zip file
📝 (index.tsx): Update handleExport function to handle downloading and saving the zip file
📝 (headerComponent.tsx): Add shouldSelectAll state and setShouldSelectAll function to manage select all functionality

* formatting file

* 📝 (flows.py): Remove download_file endpoint and refactor download_multiple_file to support downloading multiple flows as a zip file
📝 (index.tsx): Refactor export functionality to handle exporting multiple flows as a zip file or a single flow as a JSON file
🔧 (use-post-download-multiple-flows.ts): Update API endpoint for downloading flows
🔧 (index.tsx): Remove unused imports and functions related to exporting flows
🔧 (reactflowUtils.ts): Remove unused downloadFlows function and related imports

* [autofix.ci] apply automated fixes

* 📝 (flows.py): remove unnecessary whitespace and improve code readability by aligning function parameters in download_multiple_file function

---------

Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
2024-07-23 14:41:55 +00:00
Cristhian Zanforlin Lousa
ae096a3167
test: add new tests based on new basic examples + vector store tests (#2879)
* 🔧 (.github/workflows/typescript_test.yml): add BRAVE_SEARCH_API_KEY secret to workflow environment variables
 (frontend/src/modals/IOModal/components/chatView/chatMessage/index.tsx): add data-testid attribute to div element for testing purposes
 (frontend/tests/end-to-end/Hierarchical Tasks Agent.spec.ts): add end-to-end test for Hierarchical Tasks Agent
 (frontend/tests/end-to-end/Sequential Tasks Agent.spec.ts): add end-to-end test for Sequential Tasks Agent

* updating hierarchical task json

* 🔧 (.github/workflows/typescript_test.yml): add secrets for ASTRA_DB_APPLICATION_TOKEN and ASTRA_DB_API_ENDPOINT
♻️ (playwright.config.ts): refactor timeout value to 3 minutes
📝 (Complex Agent.spec.ts): update test to use BRAVE_SEARCH_API_KEY instead of OPENAI_API_KEY
📝 (Complex Agent.spec.ts): update test to use "apple" instead of "agile"
📝 (Hierarchical Tasks Agent.spec.ts): update test to use "langflow" instead of "agile"
📝 (Sequential Tasks Agent.spec.ts): update test to use waitForTimeout instead of isVisible

 (Vector Store.spec.ts): Add checks to skip tests if required environment variables are not set
🔧 (Vector Store.spec.ts): Update test logic to fill in required environment variables before running tests to ensure proper test execution
2024-07-22 21:30:30 +00:00
Gabriel Luiz Freitas Almeida
77cc789e62
refactor: separate initialization of nodes and edges in test_graph.py (#2828)
* refactor: move test_graph.py

* refactor: allow Graph to be initialized with no nodes and edges

The Graph class in `base.py` was refactored to separate the initialization of nodes and edges into a separate method called `add_nodes_and_edges()`. This improves code readability and maintainability by organizing the code logic more effectively.

* refactor: separate initialization of nodes and edges in get_graph()

The `get_graph()` function in `conftest.py` was refactored to separate the initialization of nodes and edges. This improves code readability and maintainability by organizing the code logic more effectively.

* refactor: separate initialization of nodes and edges in test_graph.py

* refactor: separate initialization of nodes and edges in base.py

The `add_node()` and `add_edge()` methods were added to the `Graph` class in `base.py` to separate the initialization of nodes and edges. This improves code readability and maintainability by organizing the code logic more effectively.
2024-07-22 16:48:29 -03:00
Gabriel Luiz Freitas Almeida
767a57d4de
refactor: update import statements in run.py (#2876)
* refactor: update import statements in create_assistant.py

Refactor the import statements in the create_assistant.py file to improve readability and maintainability. Update the import order and add type hints for better code organization. This change ensures consistency with the recent repository commits and follows established conventions.

* refactor: update import statements in create_thread.py

Refactor the import statements in the create_thread.py file to improve readability and maintainability. Update the import order and add type hints for better code organization. This change ensures consistency with the recent repository commits and follows established conventions.

* refactor: improve dotenv component

Refactor the dotenv component to improve code organization and error handling. Update the import statements and add type hints for better readability and maintainability. This change ensures consistency with recent repository commits and follows established conventions.

* refactor: update import statements in get_assistant.py

Refactor the import statements in the get_assistant.py file to improve readability and maintainability. Update the import order and add type hints for better code organization. This change ensures consistency with the recent repository commits and follows established conventions.

* refactor: update import statements in list_assistants.py

Refactor the import statements in the list_assistants.py file to improve readability and maintainability. Update the import order and add type hints for better code organization. This change ensures consistency with the recent repository commits and follows established conventions.

* refactor: update import statements in run.py

Refactor the import statements in the run.py file to improve readability and maintainability. Update the import order and add type hints for better code organization. This change ensures consistency with the recent repository commits and follows established conventions.
2024-07-22 18:28:39 +00:00
Jordan Frazier
9dadfd45b1
ref: refactors the agents around and fixes a few bugs (#2847) 2024-07-22 18:06:37 +00:00
Gabriel Luiz Freitas Almeida
a4d6f4ff5b
chore: bump langflow and langflow-base to 1.0.12 and 0.88 (#2874)
chore: update dependencies in poetry.lock and pyproject.toml

Update the versions of various dependencies in the poetry.lock and pyproject.toml files to their latest versions. This ensures compatibility and incorporates bug fixes and improvements provided by the updated dependencies.
2024-07-22 17:33:57 +00:00
Sebastián Estévez
0d5228d681
Astra Assistants Support (#2041)
* ruff

* revert config.yaml

* add build_config

* ruff

* add build_config
2024-07-22 10:26:30 -07:00
Gabriel Luiz Freitas Almeida
912683009f
fix: add correct id to vertices_being_run and change condition to end traces (#2872)
* fix: add correct vertex id to vertices_being_run

* fix: update condition for ending all traces in build_vertex function
2024-07-22 10:23:29 -07:00
Gabriel Luiz Freitas Almeida
9933e54274
fix(cache): change base class of RedisCache from CacheService to AsyncBaseCacheService (#2871)
refactor(cache): change base class of RedisCache from CacheService to AsyncBaseCacheService for better compatibility and functionality
2024-07-22 10:17:57 -07:00
anovazzi1
3c1cacbf9a
fix: change logical operator in Graph class improving API usage (#2838)
refactor: fix logical operator in Graph class

Fixes a logical operator in the Graph class that was causing incorrect filtering of vertices based on input components. The operator was changed from "or" to "and" to ensure that both conditions are met before skipping the vertex. This resolves an issue where certain vertices were being skipped incorrectly.

Co-authored-by: Cristhian Zanforlin Lousa <72977554+Cristhianzl@users.noreply.github.com>
2024-07-22 09:04:50 -07:00
Gabriel Luiz Freitas Almeida
decc979e99
refactor: disable type-var error code (#2868)
* fix: disable error code "type-var" in mypy configuration

* refactor(VertexAiModel.py): restructure the return statement to improve readability and maintainability by using type casting for LanguageModel
2024-07-22 15:03:36 +00:00
Gabriel Luiz Freitas Almeida
724f54067f
fix: assign frozen flag from group to node correctly (#2867)
* fix: remove unnecessary code related to vertex parent_node_id in Graph class

* fix: update node["frozen"] assignment to node["data"]["node"]["frozen"] in add_frozen function
2024-07-22 13:04:38 +00:00
Gabriel Luiz Freitas Almeida
922ed594e7
fix: save store API key in database after encryption (#2866) 2024-07-22 12:52:38 +00:00
Cristhian Zanforlin Lousa
41143b1e58
fix: add support for upload flows to a folder (#2844)
*  (flows.py): Add support for uploading flows to a specific folder by adding a folder_id parameter to the upload_file function and updating the flow object with the folder_id if provided
📝 (use-on-file-drop.tsx): Update import statements to include the new uploadFlowToFolder function and replace the usage of uploadFlowsFromFolders with uploadFlowToFolder
🔧 (use-drag-and-drop.tsx): Refactor the useDragAndDrop hook to remove unnecessary code related to file handling
⬆️ (index.ts): Add a new function uploadFlowToFolder to handle uploading flows to a specific folder in the MainPage services module

* ♻️ (flows.py): remove trailing whitespace to maintain code cleanliness and consistency
2024-07-22 09:39:53 -03:00
Sai Pavan Kumar
9731ebb27d
fix: bug where the pinecone component was inserting embeddings three times instead of once. (#2826)
fixed the bug where pinecone component inserts embeddings 3 times

When we send the chunks with the embedding component to the Pinecone component, the generated embeddings are being saved three times instead of once.
2024-07-22 05:36:49 -07:00
Nicolò Boschi
ff592d7714
fix: vertexai authentication via service account (#2863)
* fix: vertexai authentication via service account

* [autofix.ci] apply automated fixes

* fix: remove debugging print

---------

Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
Co-authored-by: anovazzi1 <otavio2204@gmail.com>
2024-07-22 05:05:18 -07:00
ming
d9ab00f9db
fix: ensure monitor duckdb cache dir exists (#2842)
ensure monitor duckdb cache dir exists
2024-07-19 13:57:36 -07:00
Gabriel Luiz Freitas Almeida
8b37069fcd
chore: update package versions in pyproject.toml and poetry.lock (#2816) 2024-07-18 17:01:13 -07:00
Cezar Vasconcelos
6c4e259042
feat: add gpt-4o-mini to MODEL_NAMES constant (#2813)
* refactor: add gpt-4o-mini to MODEL_NAMES constant

* [autofix.ci] apply automated fixes

---------

Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
2024-07-18 20:10:32 -03:00
Gabriel Luiz Freitas Almeida
6ca5780908
refactor(callback): simplify import statements and type annotations for better readability (#2793)
* refactor: add LogFunctionType protocol for type hint

The LogFunctionType protocol is introduced to define the structure of a logging function that takes a message and an optional name parameter. This protocol will be used to ensure consistency and compatibility with other parts of the codebase when logging messages.

* refactor(callback.py): simplify import statements and type annotations for better readability
2024-07-18 19:22:41 +00:00
Jordan Frazier
5ed8d1a63a
feat: add ai/ml model and embedding components (#2781) 2024-07-18 11:52:38 -07:00
Cezar Vasconcelos
495c95f036
fix(OpenAIModel): Move seed assignment to correct position (#2779)
* fix(OpenAIModel): Move seed assignment to correct position

* [autofix.ci] apply automated fixes

---------

Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
2024-07-18 18:46:47 +00:00
Gabriel Luiz Freitas Almeida
d897752f0a
refactor: update import statements in tools (#2796)
* fix: update import statement for WikipediaAPI.py

* fix: update import statement for flow_tool.py

* fix: update import statement in StructuredTool

* fix: update import in retriever tool
2024-07-18 17:24:06 +00:00
Gabriel Luiz Freitas Almeida
f504bcc8c2
fix(get-python-api-code): set the endpoint in the correct variable (#2800)
* feat: refactor upload_file function to handle optional tweaks parameter

Refactor the upload_file function in utils.py to handle the optional tweaks parameter. If the tweaks parameter is not provided, it is set to an empty dictionary. This change improves the flexibility and usability of the function.

* fix(get-python-api-code): set the endpoint in the correct variable
2024-07-18 17:22:45 +00:00
Gabriel Luiz Freitas Almeida
0122a50a35
refactor: move tests folder structure and update pytest commands (#2785)
* refactor: move tests folder to src/backend

* chore(Makefile): update pytest commands to run tests from the correct directory paths for unit and integration tests

* refactor: update file path in test_custom_component.py

The file path in the test_custom_component.py file has been updated to use the correct relative path to the component_multiple_outputs.py file. This change ensures that the test code can access the correct file and improves the reliability of the test.
2024-07-18 15:19:43 +00:00
Gabriel Luiz Freitas Almeida
6d291c88c1
feat: introduce helper functions for dynamic tracer import (#2778)
* fix: remove unused import in langwatch.py

* feat(tracing/service.py): introduce helper functions _get_langsmith_tracer and _get_langwatch_tracer to dynamically import tracers
2024-07-17 16:55:47 -07:00
Gabriel Luiz Freitas Almeida
6fe229450e
fix: add nanoid dependency (#2776)
* refactor: import nanoid only after setting up langwatch

* fix: update nanoid to version 2.0.0

* chore: Update langflow-base dependency to version 0.0.86
2024-07-17 16:30:15 -07:00
Gabriel Luiz Freitas Almeida
1573d6126e
fix: return in case langwatch is not ready (#2773) 2024-07-17 15:43:48 -07:00
Gabriel Luiz Freitas Almeida
31a3c4985a
fix: add check before setting up LangSmithTracer (#2771)
* fix: add check before setting up LangSmithTracer

Refactor the LangSmithTracer class in langsmith.py to improve error handling during initialization. The setup_langsmith method now checks for the presence of the LANGCHAIN_API_KEY environment variable before proceeding with the setup. This ensures that the tracer is only initialized when the necessary API key is available. Additionally, the order of operations within the __init__ method has been adjusted to ensure that the setup_langsmith method is called after the necessary attributes are assigned. These changes enhance the reliability and robustness of the LangSmithTracer.

* fix(langsmith.py): add conditional check to prevent executing code if tracer is not ready

---------

Co-authored-by: Lucas Oliveira <62335616+lucaseduoli@users.noreply.github.com>
2024-07-17 21:45:28 +00:00
Gabriel Luiz Freitas Almeida
2c3e93bd87
feat: add message_output and refactor LCAgentComponent (#2755)
* feat(agent.py): add support for handling message responses in LCAgentComponent to improve agent functionality and interaction with messages

* feat: add ToolEnabledLanguageModel type alias to constants.py

This commit adds a new type alias `ToolEnabledLanguageModel` to the `constants.py` file in the `field_typing` module. This type alias is used to define the type of language models that have tooling enabled. It includes the `BaseLanguageModel`, `BaseLLM`, and `BaseChatModel` types. This change enhances the typing capabilities of the codebase and improves the clarity of the code.

* feat: update agent.py to include support for ToolEnabledLanguageModel

This commit modifies the `agent.py` file to include support for the `ToolEnabledLanguageModel` in the `LCToolsAgentComponent` class. The `ToolEnabledLanguageModel` is now added as an input type in the `HandleInput` section. This change enhances the functionality of the agent by allowing it to work with language models that have tooling enabled. The addition of this input type improves the flexibility and versatility of the codebase.

* feat: add support for ToolEnabledLanguageModel in LCAgentComponent

This commit modifies the `agent.py` file to include support for the `ToolEnabledLanguageModel` in the `LCAgentComponent` class. The `ToolEnabledLanguageModel` is now added as an input type in the `HandleInput` section. This change enhances the functionality of the agent by allowing it to work with language models that have tooling enabled. The addition of this input type improves the flexibility and versatility of the codebase.

* feat: add AgentAsyncHandler for handling callbacks from Agents

This commit adds the `AgentAsyncHandler` class to handle callbacks from langchain in the `callback.py` file. The `AgentAsyncHandler` is an async callback handler that can be used to handle various events such as tool start, tool end, agent action, and agent finish. This change enhances the functionality of the codebase by providing a convenient way to handle callbacks from langchain and log the events if a log function is provided.

* chore: add field_serializer decorator to Log class for message serialization

This commit adds the `field_serializer` decorator to the `Log` class in the `schema.py` file. The decorator is used to serialize the `message` attribute of the `Log` class, ensuring that all nested objects are properly serialized. This change improves the serialization process and enhances the functionality of the codebase.

* feat: Fix issue with logs in LangSmithTracer

This commit fixes an issue in the `LangSmithTracer` class where logs were not being properly serialized. The `add_metadata` method now converts logs to dictionaries using the `model_dump` method if they are not already dictionaries. This ensures that all logs are correctly serialized and improves the functionality of the codebase.

* feat: Add support for Pydantic V1 models in Log serialization

* fix: Update LCAgentComponent to handle list results in result variable

This commit modifies the `LCAgentComponent` class in the `agent.py` file to handle list results in the `result` variable. If the `result` is a list, it is joined into a single string using the `text` attribute of each result dictionary. This change improves the functionality of the codebase by ensuring that the `result` variable is always a string, which is expected by the `Message` class.

* feat: Add "name" parameter to AgentAsyncHandler methods

This commit adds a "name" parameter to the `on_tool_start`, `on_tool_end`, `on_agent_action`, and `on_agent_finish` methods of the `AgentAsyncHandler` class in the `callback.py` file. The "name" parameter allows for specifying a name for the event, which can be useful for logging and tracking purposes. This change enhances the functionality of the codebase by providing more flexibility in handling callbacks and improves the clarity of the code.

* feat: Update AgentAsyncHandler constructor to support logging multiple loggable types

This commit updates the `AgentAsyncHandler` constructor in the `callback.py` file to support logging multiple loggable types. The `log_function` parameter now accepts a callable that can handle either a single `LoggableType` or a list of `LoggableType` objects along with a string representing the event name. This change enhances the flexibility of the codebase by allowing for more versatile logging options and improves the clarity of the code.

* refactor(callback.py): update type hints in AgentAsyncHandler constructor and methods for better readability and accuracy
refactor(callback.py): simplify on_tool_end method by using **kwargs for flexibility and consistency with other methods
2024-07-17 21:38:40 +00:00
Gabriel Luiz Freitas Almeida
e8afe6ca23
fix: update projects with new components (#2769)
* update projects

* Update projects
2024-07-17 21:01:28 +00:00
Lucas Oliveira
785771acef
fix: loading on small buttons (#2764)
* Formatting

* Fixed loading on buttons that are small

---------

Co-authored-by: anovazzi1 <otavio2204@gmail.com>
2024-07-17 20:18:52 +00:00
Gabriel Luiz Freitas Almeida
c26dd41679
feat: add new complex agent starter project (#2765)
* feat: add new complex agent starter project

* update project
2024-07-17 21:36:29 +02:00
Gabriel Luiz Freitas Almeida
b23e17e54a
refactor: update tools output type to Tool (#2766)
* refactor: update tools output type to Tool

* refactor: Update BingSearchAPI to return Tool type
2024-07-17 19:32:52 +00:00
Daniel Gines
114cdb9ac6
feat: Add new Atlassian Confluence Component for document loading and vector database integration (#2718)
* feat: Add Gemma 2 to Groq model list (#2586)

Add gemma2 to groq_constants.py

* Adds new ConfluenceComponent module with lazy loading support

- Implements ConfluenceComponent to load documents from the Confluence platform.
- Adds necessary inputs, including URL, username, API key, space_key, and more.
- Supports configuration of max_pages for pagination control.
- Implements lazy loading in the load_documents method for incremental document processing.
- Allows immediate processing of documents as they are loaded.

This new module facilitates integration with the Confluence platform and enables efficient handling of large volumes of data.

* Adds new ConfluenceComponent module

- Implements ConfluenceComponent to load documents from the Confluence platform.
- Adds necessary inputs, including URL, username, API key, space key, and more.
- Supports configuration of max_pages for pagination control.

This new module facilitates integration with the Confluence platform.

* Updated load_documents method to use Data.from_document

- Changed load_documents method to convert documents using Data..from_document instead of docs_to_data for better integration with Data module.
- Updated trace_type to "tool" because the LangSmith API only supports one of the following types: ["tool", "chain", "llm", "retriever", "embedding", "prompt", "parser"].

* [autofix.ci] apply automated fixes

---------

Co-authored-by: Gordon Stein <7331488+gsteinLTU@users.noreply.github.com>
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
2024-07-17 17:48:56 +00:00
Nicolò Boschi
b281a7d25e
feat: migrate Search APIs to Component syntax (#2637)
* feat: migrate bingsearch to Component syntax

* all

* fix style

* [autofix.ci] apply automated fixes

* feat: Update BingSearchAPI and WikipediaAPI components

Refactor the BingSearchAPI and WikipediaAPI components to improve code organization and readability. Migrate BingSearchAPI to Component syntax and make initialization separate from the constructor. Update the condition to run end_all_traces in the BingSearchAPIComponent. Also, update the WikipediaAPIComponent to use the WikipediaAPIWrapper with the specified parameters.

* update lock

---------

Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
Co-authored-by: Gabriel Luiz Freitas Almeida <gabriel@langflow.org>
2024-07-17 17:41:03 +00:00
Gabriel Luiz Freitas Almeida
50a64b0e0e
feat: Add YFinanceTool component for interacting with Yahoo Finance News (#2759)
* feat: add yfinance dependency to pyproject.toml

* feat: Add YFinanceTool component for interacting with Yahoo Finance News

* refactor: update YfinanceToolComponent to use type casting for Tool return value
2024-07-17 16:18:00 +00:00
Gabriel Luiz Freitas Almeida
5f18baadb5
feat: add two new starter projects (#2758)
* feat: add sequential agent starter project

* feat: add hierarchical agent starter project

* update example

* refactor: update newFlowModal examples for Sequential Agent, Hierarchical Agent, and Complex Agent
2024-07-17 08:48:35 -07:00
Gabriel Luiz Freitas Almeida
b2ad14e6a9
fix(crewai): replace MessageTextInput with MultilineInput (#2757)
* feat: Update input handling in HierarchicalTaskComponent

The code changes modify the `HierarchicalTaskComponent` in the `HierarchicalTask.py` file. The `MessageTextInput` inputs are replaced with `MultilineInput` inputs to allow for multiline descriptions and expected outputs. This change improves the user experience and provides more flexibility in input handling.

* refactor: Update input handling in SequentialTaskComponent

The code changes modify the `SequentialTaskComponent` in the `SequentialTask.py` file. The `MessageTextInput` inputs are replaced with `MultilineInput` inputs to allow for multiline descriptions and expected outputs. This change improves the user experience and provides more flexibility in input handling.

* refactor: Update input handling in CrewAIAgentComponent

The code changes modify the `CrewAIAgentComponent` in the `CrewAIAgent.py` file. The `MessageTextInput` inputs are replaced with `MultilineInput` inputs to allow for multiline descriptions and expected outputs. This change improves the user experience and provides more flexibility in input handling.
2024-07-17 14:48:15 +00:00
anovazzi1
13fe129e4b
refactor: add queries and mutation for authentication refactor (#2754)
* feat: add API endpoint for retrieving user data

* feat: add useAddUser hook for adding a user via API

* feat: add useGetUserPage hook for retrieving users with pagination

* refactor: optimize deletion of messages (#2714)

* feat: optimize deletion of messages in SessionView component

This commit optimizes the deletion of messages in the SessionView component by using the useDeleteMessages hook from the API queries. It replaces the useRemoveMessages hook that was previously used. The new implementation handles the deletion of messages more efficiently and provides better error handling. The selectedRows state is updated after successful deletion, and a success message is displayed to the user. In case of an error, an error message is shown.

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

* feat: optimize deletion of messages in SessionView component

This commit optimizes the deletion of messages in the SessionView component by using the useDeleteMessages hook from the API queries. It replaces the useRemoveMessages hook that was previously used. The new implementation handles the deletion of messages more efficiently and provides better error handling. The selectedRows state is updated after successful deletion, and a success message is displayed to the user. In case of an error, an error message is shown.

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

* refactor: optimize deletion of messages in SessionView component

This commit optimizes the deletion of messages in the SessionView component by using the useDeleteMessages hook from the API queries. It replaces the useRemoveMessages hook that was previously used. The new implementation handles the deletion of messages more efficiently and provides better error handling. The selectedRows state is updated after successful deletion, and a success message is displayed to the user. In case of an error, an error message is shown.

* [autofix.ci] apply automated fixes

---------

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: Lucas Oliveira <lucas.edu.oli@hotmail.com>
Co-authored-by: Lucas Oliveira <62335616+lucaseduoli@users.noreply.github.com>

* fix: component seems to be clickable (#2731)

* Changed card to not have shadow on hover if it is a component

* removed unused console.log

* feat: add logs field to ResultData and Vertex class (#2732)

* feat: add logs to ResultDataResponse in schemas.py

* feat(schema.py): add logs field to ResultData class to store log messages for better debugging and monitoring

* feat(vertex): add logs attribute to Vertex class to store logs for each vertex operation

* feat: add useDeleteUsers hook for deleting users via API

* feat: add useUpdateUser hook for updating user data via API

* feat: add useResetPassword hook for resetting user password via API

* feat: add logout API endpoint and useLogout hook

Add the `logout` API endpoint and the `useLogout` hook to handle user logout functionality. The `logout` API endpoint sends a PATCH request to the server to log out the user, while the `useLogout` hook provides a convenient way to call the `logout` API endpoint. This addition allows users to securely log out of the application.

* feat: add login API endpoint and useLoginUser hook

Add the `login` API endpoint and the `useLoginUser` hook to handle user login functionality. The `login` API endpoint sends a POST request to the server with the user's username and password to authenticate the user. The `useLoginUser` hook provides a convenient way to call the `login` API endpoint. This addition allows users to securely log in to the application.

* feat: add autologin API endpoint and useGetAutoLogin hook

Add the `autologin` API endpoint and the `useGetAutoLogin` hook to handle automatic login functionality. The `autologin` API endpoint sends a GET request to the server to check if the user is already logged in. The `useGetAutoLogin` hook provides a convenient way to call the `autologin` API endpoint. This addition allows for seamless automatic login for users who have previously logged in to the application.

* feat: add REFRESH constant and useRefrshAccessToken hook

Add the `REFRESH` constant to the `constants.ts` file and the `useRefrshAccessToken` hook to handle refreshing the access token. The `REFRESH` constant represents the API endpoint for refreshing the access token, and the `useRefrshAccessToken` hook provides a convenient way to call this endpoint. This addition allows for seamless token refreshing for authenticated users.

* refactor: fromat code

---------

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: Lucas Oliveira <lucas.edu.oli@hotmail.com>
Co-authored-by: Lucas Oliveira <62335616+lucaseduoli@users.noreply.github.com>
2024-07-17 13:36:48 +00:00
Gabriel Luiz Freitas Almeida
6ef0d0c1f9
feat: add opentelemetry-instrumentation-fastapi dependency (#2751)
Add opentelemetry-instrumentation-fastapi as a dependency in pyproject.toml and poetry.lock files. This dependency is required for instrumenting FastAPI with OpenTelemetry for distributed tracing and monitoring.
2024-07-17 11:59:43 +00:00
Gabriel Luiz Freitas Almeida
7aa4565343
chore(pyproject.toml): update package versions for langflow and langflow-base to 1.0.10 and 0.0.86 respectively (#2746) 2024-07-16 17:59:11 -07:00
anovazzi1
23874b81ed
feat: add new freeze function to component (#2624)
* feat: Add new API endpoint for retrieving vertex order

This commit adds a new API endpoint, , which allows for retrieving the order of vertices in a graph. It includes the necessary functions and types to make the API request and process the response. This feature enhances the functionality of the application by providing the ability to retrieve and work with vertex order data.

* feat: Add missing semicolon in constants.ts

The commit adds a missing semicolon in the  file in the  directory. This fix ensures that the code is syntactically correct and prevents any potential issues that may arise from the missing semicolon.

* feat: Refactor usePostRetrieveVertexOrder to improve code readability and maintainability

* feat: Add FreezeAllSvg component for displaying a freeze all icon

This commit adds a new component called FreezeAllSvg, which is responsible for rendering an SVG icon representing the freeze all feature. The component accepts props for customizing the size and color of the icon. This addition enhances the visual representation of the freeze all functionality in the application.

* feat: Add freezeMultipleNodes method to FlowStoreType

This commit adds the `freezeMultipleNodes` method to the `FlowStoreType` interface in the `index.ts` file. The method takes an array of node IDs as input and freezes the corresponding nodes in the flow. This addition enhances the functionality of the flow store by providing the ability to freeze multiple nodes at once.

* feat: Update freezeMultipleNodes to use updateFreezeStatus and updateNodeInternals

Refactor the NodeToolbarComponent to use the updated freezeMultipleNodes method in the FlowStore. Instead of directly freezing the nodes, the method now calls updateFreezeStatus to update the freeze status of the nodes and updateNodeInternals to update the node internals. This change improves the functionality and maintainability of the code.

* feat: Update FreezeAllSvg component to use currentColor for fill

The commit updates the FreezeAllSvg component to use the CSS `currentColor` value for the fill property. This change ensures that the fill color of the SVG icon will match the current text color, providing a consistent and customizable visual representation of the freeze all feature.

* feat: Add freezeAll shortcut and component

This commit adds the `freezeAll` shortcut and component to the application. The `freezeAll` shortcut allows users to freeze all nodes in the flow at once, while the `FreezeAllSvg` component is responsible for rendering an SVG icon representing the freeze all feature. These additions enhance the functionality and user experience of the application by providing a convenient way to freeze multiple nodes and a visual representation of the freeze all feature.

* [autofix.ci] apply automated fixes

* feat: Refactor get_vertex method to include silent parameter

This commit refactors the `get_vertex` method in the `Graph` class to include a `silent` parameter. The `silent` parameter allows the method to be called without raising an exception if the vertex is not found. This change improves the flexibility and usability of the method, as it can now be used in scenarios where the absence of a vertex is expected.

* feat: check if parent vertex is frozen and cache children

* feat: change ungroup_node function to add frozen status to nodes

This commit refactors the `ungroup_node` function in the `utils.py` file to add the `frozen` status to each node in the list of nodes. The `frozen` status is obtained from the `group_node_data` parameter and is assigned to each node in the loop. This change improves the functionality and maintainability of the code by ensuring that the frozen status is correctly applied to the nodes during the ungrouping process.

* Refactor code to check if parent vertex is frozen before caching children

* feat: Rename "Freeze All" to "Freeze Path" in shortcuts and components

This commit updates the codebase to rename the "Freeze All" feature to "Freeze Path" in the shortcuts and components. The changes include modifying the constant name, updating the shortcut key, and adjusting the component names and labels. This renaming improves the clarity and accuracy of the feature, aligning it with its intended functionality of freezing a specific path in the flow.

* [autofix.ci] apply automated fixes

* fix: refactor get_vertex method to handle silent parameter

* fix(base.py): remove unnecessary silent parameter in get_vertex method and remove conditional check for silent parameter in get_vertex method to simplify code and improve readability

* Added new freezeAll icon

---------

Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
Co-authored-by: Gabriel Luiz Freitas Almeida <gabriel@langflow.org>
Co-authored-by: Lucas Oliveira <lucas.edu.oli@hotmail.com>
2024-07-16 23:48:20 +00:00
Lucas Oliveira
0897ee542a
feat: logs on component output (#2740)
* Added tabs and passed the type of the table to the SwitchOutputView component

* Added type to SwitchOutputViewProps and changed results based on type

* Removed unused import

* Changed type of VertexDataTypeAPI to include logs

* Added condition where type is Logs to display only table

* Added handling when resultMessage is empty to SwitchOutputView

* Removed return that made Logs not appear when its empty

* Fixed logs not appearing

* feat: Add _output_logs attribute to CustomComponent

The code changes include adding a new attribute `_output_logs` to the `CustomComponent` class. This attribute is a dictionary that stores logs related to output values. This change is necessary to enhance the logging functionality of the component.

Note: Please remove any meta information such as issue references, tags, or author names from the commit message.

* feat: Serialize messages with to_json() in BaseCrewComponent

This commit modifies the `BaseCrewComponent` class in the `crew.py` file. It adds serialization of messages using the `to_json()` method to avoid circular reference issues. The `_messages_dict` dictionary is serialized by converting each message object to JSON format. This change enhances the functionality of the component and improves the logging process.

Note: Please remove any meta information such as issue references, tags, or author names from the commit message.

---------

Co-authored-by: Gabriel Luiz Freitas Almeida <gabriel@langflow.org>
2024-07-16 22:36:10 +00:00
Lucas Oliveira
b9ef29ecd2
fix: update appearing when sending the same code (#2742)
Fixed bug where the update node appeared after sending the same code as before
2024-07-16 21:45:52 +00:00
Lucas Oliveira
c989c315c5
fix: create data component not updating correctly (#2741)
* Fix create data component to use update_build_config to update only the template of the frontend_node

* Fix naming of function post_code_processing to not induce to errors

* Updated starter examples
2024-07-16 21:45:18 +00:00
Gabriel Luiz Freitas Almeida
e5856b3036
fix: append new tasks to the end of the list (#2737)
fix: append new tasks to the end of the list
2024-07-16 19:12:22 +00:00