* Added pagination info on table options
* Added pagination info on table component
* Added truncated rows and truncate message when row count is > 1000
* feat: Add button component and update dropdown rendering
* feat: Implement ListSelectionComponent and update ButtonComponent
- Add new ListSelectionComponent for selecting actions with search functionality
- Refactor ButtonComponent to use ListSelectionComponent
- Update ParameterRenderComponent to simplify button rendering
- Modify DropdownComponent to prepare for future changes
* feat: Add Sortable.js for drag-and-drop functionality and grid icon
- Integrated Sortable.js library in index.html and package files
- Added GridHorizontalIcon for drag handle visualization
- Updated ButtonComponent with commented sortable list example
- Improved input styling in ListSelectionComponent
* feat: Add ButtonInput for Composio API and update input types
- Introduced ButtonInput class in inputs module
- Added new button input fields to ComposioAPIComponent
- Updated FieldTypes enum to include BUTTON type
- Modified frontend ButtonComponent layout
- Removed commented-out code in DropdownComponent
* [autofix.ci] apply automated fixes
* feat: Enhance ButtonComponent with dynamic type and improved UI
- Add type prop to ButtonComponent to support different rendering modes
- Implement tool name and actions button layouts
- Add sample action data for actions button type
- Improve sortable list styling and interaction
- Refactor ButtonComponent to handle different use cases
* refactor: Improve ButtonComponent layout and Sortable configuration
- Adjust Sortable animation duration
- Modify list item layout and positioning
- Remove unnecessary CSS classes
- Simplify button and icon positioning
* feat: Integrate react-sortablejs for improved drag-and-drop functionality
- Replace Sortable.js with react-sortablejs library
- Add TypeScript types for SortableJS
- Update ButtonComponent to use ReactSortable component
- Improve list item rendering and styling
- Remove manual Sortable initialization
* feat: Enhance ButtonComponent with authentication and dynamic action data
- Add isAuthenticated state to control button visibility
- Introduce initialActionData and actionData state for dynamic list management
- Update button styling and icon for unauthenticated state
- Enable ReactSortable to modify action data list
* style: Update ButtonComponent styling with accent-themed colors
* style: Refine button styling with amber accent theme
* feat: Enhance ButtonComponent with dynamic rendering and improved UX
* feat: Add external link to DataStax Wikipedia page on button click
* feat: Implement delete action for button component action data
* feat: Enhance ButtonComponent with authentication and UI improvements
* feat: Enhance ListSelectionComponent with dynamic data and multi-select functionality
* feat: Improve ListSelectionComponent and ButtonComponent interaction and authentication flow
* refactor: Replace ButtonInput with ListSelectionInput in Composio API and input components
* [autofix.ci] apply automated fixes
* refactor: Optimize ListComponent with memoization and improved state management
* feat: Add selection type support to Composio API and ListSelectionComponent for improved user interaction
* refactor: Rename action-related props in ListSelectionComponent and ListComponent for clarity and consistency
* feat: Expand ListSelectionInput options and enhance ListSelectionComponent with dynamic data and metadata support
* refactor: Clean up comments and improve code readability in ListSelectionComponent and ListComponent
* [autofix.ci] apply automated fixes
* chore: Remove debug log from ParameterRenderComponent and add text/plain type to DRAG_EVENTS_CUSTOM_TYPES
* feat: Introduce ConnectionInput and SortableListInput components, replacing ListSelectionInput; enhance ComposioAPIComponent with new input types and improve parameter rendering with connection support
* [autofix.ci] apply automated fixes
* feat: Enhance ConnectionComponent with new state management and selection handling; update SortableListComponent to utilize new props for improved functionality
* feat: Implement SearchBarComponent to enhance ListSelectionComponent with improved search functionality and category selection
* feat: Update ComposioAPIComponent with external links and enhance ConnectionComponent with improved state management and dynamic link handling
* fix: Update ConnectionComponent layout and button styles for improved UI consistency
* chore: Remove unused Sortable.js script from index.html to streamline frontend resources
* Update index.tsx
* [autofix.ci] apply automated fixes
* [autofix.ci] apply automated fixes (attempt 2/3)
* Add backend support for composio actions
* [autofix.ci] apply automated fixes
* Update composio_api.py
* Update composio_api.py
* [autofix.ci] apply automated fixes
* fix: enhance ListSelectionComponent styling and functionality
- Updated ListItem component to accept a className prop for better customization.
- Improved item name display with truncation for better UI handling.
- Adjusted DialogContent styling for responsive width and layout.
- Enhanced overflow handling in the selection list for better user experience.
* feat: enhance ListSelectionComponent and ConnectionComponent functionality
- Added onSelection prop to ListSelectionComponent for handling item selection actions.
- Improved item selection logic to trigger onSelection callback.
- Refactored connection handling in ConnectionComponent to manage loading state and authentication.
- Updated connection link handling to ensure proper link retrieval and usage.
* fix: reset search input in ListSelectionComponent after selection
- Added functionality to clear the search input by setting it to an empty string when an item is selected. This improves user experience by ensuring the search field is reset after a selection is made.
* fix: improve selection logic and styling in ListSelectionComponent and ConnectionComponent
- Enhanced ListItem component to conditionally apply a green color for validated items.
- Updated selection logic in ListSelectionComponent to consider items with a validated link as selected.
- Initialized authentication state in ConnectionComponent based on the connection link status.
- Adjusted connection handling to update authentication state when the link changes.
* fix: refine item selection handling in ConnectionComponent
- Removed the setting of selectedItem state in the handleSelection function to streamline the selection process.
- Updated logic to focus on handling new value updates without maintaining a separate selected item state.
* fix: enhance ConnectionComponent and ListSelectionComponent functionality
- Removed console log from ListSelectionComponent to clean up the code.
- Added nodeId, nodeClass, and name props to ConnectionComponent for improved data handling.
- Implemented polling logic in ConnectionComponent to validate connections and manage loading states effectively.
- Updated loading state handling in the button to reflect polling status.
* fix: refactor ConnectionComponent for improved state management and polling logic
- Streamlined prop destructuring for better readability.
- Enhanced state management for polling and authentication.
- Added cleanup effects for polling intervals and timeouts.
- Improved event handling for connection button clicks and selection dialog.
- Updated comments for clarity and organization.
* Support handling the auth parameter
* [autofix.ci] apply automated fixes
* fix: improve key handling and state management in ListSelection and SortableList components
* Updated key assignment in ListSelectionComponent to include index for uniqueness.
* Enhanced SortableListComponent with useEffect to initialize listData from props and improved remove handler to update state correctly.
* Refactored setListData to ensure proper state updates and value handling.
* fix: update selected item handling in ConnectionComponent (#7280)
* Added useEffect to set selected item based on value and options.
* Modified handleSelection to ensure selected item structure is consistent.
* Fix output of component in actions
* fix: enhance connection handling in ConnectionComponent
* Updated handleConnectionButtonClick to accept a parameter for connection checking.
* Modified event handler to call handleConnectionButtonClick with the appropriate argument based on connection state.
* Ensured that the connection link opens in a new tab only when the connection check is true.
* [autofix.ci] apply automated fixes
* Remove the search categories
* fix: update list data handling in SortableListComponent
* Refactored useEffect to correctly set listData when value changes.
* Introduced a temporary variable to hold the value before updating state.
* refactor: optimize list data management in SortableListComponent
* Replaced useEffect with useMemo for listData initialization.
* Simplified state update logic in createRemoveHandler and setListDataHandler.
* Improved key assignment for SortableListItem to handle potential undefined names.
* Check if validated before passing link
* [autofix.ci] apply automated fixes
* refactor: improve connection handling and state management in ConnectionComponent
* Enhanced state management for tracking connection status and UI states.
* Updated polling management to prevent memory leaks and ensure proper cleanup.
* Simplified event handlers for connection button clicks and selection handling.
* Improved comments for better code clarity and understanding.
* fix: improve connection link handling in ConnectionComponent
* Added logging for connectionLink to aid in debugging.
* Updated useEffect to set the link only if connectionLink is not empty.
* Implemented authentication state change when connectionLink is validated.
* Clear list of actions when changing tools
* Update composio_api.py
* [autofix.ci] apply automated fixes
* feat: enhance error handling in ConnectionComponent
* Introduced ShadTooltip for displaying error messages.
* Added state management for error visibility and updated connection link handling based on error data.
* Modified button behavior and icon display based on connection status.
* refactor: simplify error handling in ConnectionComponent
* Removed unused state for error tooltip visibility.
* Updated error handling logic to include connection link status in addition to error data.
* Properly indicate error status in component
* Better management of tool name helper text
* refactor: streamline selected item initialization in ConnectionComponent
* Simplified the logic for setting the selected item based on the value prop.
* Ensured that the selected item is updated correctly when value or options change.
* fix: update authentication status in ConnectionComponent
* Added logic to set authentication status based on the selected option.
* Ensured that authentication state is updated when no option is selected.
* feat: update composio package (#7325)
update composio package
* Update Gmail Agent.json
* refactor: optimize InputGlobalComponent logic
* Removed unused imports and streamlined the useEffect and useMemo hooks for better performance.
* Enhanced the handling of unavailable fields and initial load completion state.
* Simplified the logic for setting the selected option based on the value and load_from_db status.
* refactor: improve error handling in ConnectionComponent
* Removed dependency on errorData in useEffect for setting link state.
* Streamlined error handling logic to focus solely on connectionLink status.
* refactor: enhance connection handling in ConnectionComponent
* Merged error handling logic into a single useEffect for improved clarity.
* Updated link state management to reflect the selected item's validation status.
* Ensured authentication state is set correctly based on the selected item.
* Filter list of available tools
* refactor: update ListSelectionComponent to use limit instead of selection type
* Removed the SelectionMode type and replaced it with a limit prop for selection.
* Adjusted selection logic to enforce the limit on selected items.
* Updated related components to reflect the new limit prop instead of type.
* [autofix.ci] apply automated fixes
* Add limit field and santiziation
* Update inputs.py
* Update composio_api.py
* Show actions only if a tool is selected
* [autofix.ci] apply automated fixes
* refactor: add limit prop to ParameterRenderComponent and SortableListComponent
* Introduced a limit prop to both components to control item rendering and selection behavior.
* Updated SortableListItem to conditionally render elements based on the limit value.
* Adjusted button visibility and styles in SortableListComponent according to the limit prop.
* fix: adjust styles in SortableListItem based on limit prop
* Updated height and padding styles for SortableListItem when limit is set to 1.
* Ensured consistent spacing and visibility of elements based on the limit value.
* Push latest template
* style: enhance SortableListItem styles for improved interaction
* Updated class names to ensure proper styling for hover and group states.
* Improved visibility of the remove button based on the limit prop, enhancing user experience.
* Update composio_api.py
* style: update SortableListItem max-width for improved layout
* Adjusted max-width class for SortableListItem when limit is set to 1, enhancing the component's visual consistency.
* Update Gmail Agent.json
* style: enhance ListItem component for better interaction
* Updated class names to improve hover effects and selected state styling.
* Added rounded corners and background color changes for better visual feedback.
* style: refine ListSelectionComponent and SortableListComponent layout
* Simplified class names in ListItem for cleaner styling.
* Moved HelperTextComponent into a dedicated div in SortableListComponent for improved layout and spacing.
* refactor: clean up ConnectionComponent code
* Removed unused imports and comments for better readability.
* Updated polling timeout duration from 30 seconds to 9 seconds to prevent indefinite polling.
* Fix bug with link on refresh
* Update Gmail Agent.json
* Update Gmail Agent.json
* Update Gmail Agent.json
---------
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
Co-authored-by: Eric Hare <ericrhare@gmail.com>
Co-authored-by: Edwin Jose <edwin.jose@datastax.com>
* 🐛 (test_apply_json_filter.py): fix test failures by updating expected return values and handling special cases in apply_json_filter function
* [autofix.ci] apply automated fixes
* 📝 (test_temp_flow_cleanup.py): comment out test_cleanup_worker_run_with_exception to temporarily disable the test for further investigation
* [autofix.ci] apply automated fixes
* 🐛 (test_apply_json_filter.py): fix logic to handle special characters and numeric keys in nested paths to ensure accurate comparison of results
* [autofix.ci] apply automated fixes
* ✨ (test_temp_flow_cleanup.py): add get_settings_service dependency to test_cleanup_worker_run_with_exception test to improve test coverage and handle exceptions gracefully.
* ♻️ (test_apply_json_filter.py): remove commented-out code and unused imports to clean up the test file and improve readability
---------
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
* ✅ (test_apply_json_filter.py): add test cases to skip empty key tests with special handling for complex nested access in data.
* ✅ (test_apply_json_filter.py): skip specific failing case in test_complex_nested_access to prevent test failure
* [autofix.ci] apply automated fixes
* 🐛 (test_apply_json_filter.py): fix assertion error for specific case when both keys are empty, ensuring the function returns an empty list
💡 (test_apply_json_filter.py): improve comments and readability in test_complex_nested_access function
* [autofix.ci] apply automated fixes
---------
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
* refactor: streamline apply_json_filter function for improved clarity and performance
- Simplified data extraction from Data objects and handled None inputs.
- Enhanced dictionary access logic and removed redundant checks.
- Improved handling of special cases for filter access, including nested and array structures.
* test: enhance dictionary access tests with additional examples
- Added new example cases to the test_basic_dict_access function to cover edge cases, including empty dictionaries and keys with spaces.
- Improved test robustness by utilizing the @example decorator from hypothesis for better failure discovery.
* ✨ (use-handle-new-value.ts): add debounce functionality to handleOnNewValue function to improve performance and prevent excessive API calls
🔧 (use-post-template-value.ts): update usePostTemplateValue function options to set retry to 0 and prevent automatic retries on API call failures
* 🐛 (use-handle-new-value.ts): fix condition to check if value length is greater than 10 before updating node state
* 🐛 (use-handle-new-value.ts): fix condition to update node state based on changes in value to ensure correct behavior and remove unnecessary length check on value array
* ✨ (use-handle-new-value.ts): introduce constant DEBOUNCE_TIME_1_SECOND for better readability and maintainability of debounce time
* 🔧 (use-handle-new-value.ts): update debounce time from 1 second to 2 seconds for better user experience and performance.
* ✨ (use-handle-new-value.ts): introduce DEBOUNCE_FIELD_LIST constant to handle debouncing for specific input types
♻️ (use-handle-new-value.ts): refactor DEBOUNCE_TIME_2_SECONDS constant to DEBOUNCE_TIME_1_SECOND for better consistency and readability
* 🐛 (use-handle-new-value.ts): fix debounce time constant value to 2 seconds for better performance and user experience
* 🐛 (use-handle-new-value.ts): fix debounce time constant value from 2 seconds to 1 second for better user experience
* feat: implement cleanup grace period for job queue tasks
* Enhance JobQueueService to include a CLEANUP_GRACE_PERIOD, allowing tasks marked for cleanup to persist for a specified duration before actual removal.
* Update internal data structure to track cleanup timestamps for each job.
* Modify cleanup logic to check task status and manage cleanup timing effectively, ensuring resources are released appropriately after a grace period.
* Improve documentation to clarify the new cleanup mechanism and its purpose.
* fix: update queue data retrieval to include additional return value
refactor: replace rich print statements with logger.debug for improved logging consistency in main.py
* Updated startup and shutdown messages to use logger.debug instead of rich print for better integration with logging practices.
* Enhanced service initialization and flow loading messages to provide clearer debug information during application startup.
* 🐛 (component.py): Fix issue where tags attribute may not exist on tool object
🐛 (index.tsx): Fix bug where value may not be included in options before setting it
* 🐛 (component.py): fix issue where tags list is empty if tool.tags is not defined, now default to [tool.name] to ensure at least one tag is present
---------
Co-authored-by: Edwin Jose <edwin.jose@datastax.com>
* ✨ (NodeInputField/index.tsx): Add support for displaying a refresh button based on the template configuration
🔧 (popover/index.tsx): Adjust the width of the input field in the popover to improve UI consistency
* 🐛 (NodeInputField/index.tsx): fix access to refresh_button property to prevent potential null pointer error
* ✨ (index.tsx): Add hasRefreshButton prop to InputComponent, InputGlobalComponent, and StrRenderComponent to enable refresh button functionality
📝 (index.tsx): Add hasRefreshButton prop to BaseInputProps type to ensure type safety and consistency across components and types
* feat: add resetStore method to foldersStore for state management
✨ (foldersStore.tsx): Implement resetStore function to clear folders and reset related state variables, enhancing state management capabilities.
* feat: add resetStore method to flowsManagerStore for improved state management
✨ (flowsManagerStore.ts): Implement resetStore function to clear flows and reset related state variables, enhancing the store's state management capabilities.
* feat: add resetFlowState method to flowStore for enhanced state management
✨ (flowStore.ts): Implement resetFlowState function to clear and reset the flow-related state variables, improving the management of flow state in the application.
* feat: enhance logout functionality with state resets and query invalidation
✨ (use-post-logout.ts): Update the useLogout function to reset flow, flows manager, and folder states upon successful logout. Additionally, invalidate and remove related queries to ensure data consistency in the application.
* test: add user flow state cleanup test for session management
✨ (user-flow-state-cleanup.spec.ts): Implement a comprehensive test to verify that user flow states are properly cleaned up between sessions. The test includes user creation, flow management, and ensures that the admin cannot see user-specific flows after logout, enhancing the robustness of session handling in the application.
* refactor: streamline logout query management in useLogout function
🔧 (use-post-logout.ts): Remove redundant query removal calls in the useLogout function, focusing on invalidating queries to maintain data consistency post-logout. This change simplifies the logout process and enhances code clarity.
* 🔧 (user-flow-state-cleanup.spec.ts): remove unnecessary verification step for admin empty state to improve test readability and efficiency
* ✨ (user-flow-state-cleanup.spec.ts): improve user flow state cleanup test by adding error handling for clicking on new project button and new flow button to ensure test stability and reliability
---------
Co-authored-by: cristhianzl <cristhian.lousa@gmail.com>
* 📝 (test_api_request_component.py): add print statements to help identify where the content is stored in the response data
* 📝 (test_api_request_component.py): remove print statements used for debugging purposes
✨ (freeze.spec.ts): Add test case for freezing a component in the frontend extended features test suite. The test verifies that a user can freeze a component successfully and compares the text content before and after freezing.
✨ (tool-mode.spec.ts): update the test to use the correct test ID for clicking on a component in the toolset
🔧 (chatInputOutputUser-shard-1.spec.ts): add a 1-second timeout before running the flow to ensure proper execution timing
♻️ (chatInputOutputUser-shard-1.spec.ts): remove unnecessary timeout before deleting an edge in the test case
🔧 (index.tsx): Add "w-full" class to the div element with data-testid "input-file-component" to ensure full width display
♻️ (index.tsx): Refactor the Button component class to include "w-full" for consistent styling across the application
* feat: Enhance URL component with recursive crawling and advanced options.
- Implement advanced URL loading with configurable depth, domain prevention, and async options.
* chore: move component to a new file and restore the old one
* test: add test to new component
* [autofix.ci] apply automated fixes
* feat: enhance URLComponent for recursive URL loading
- Updated URLComponent to support recursive loading and parsing of child links from a root URL.
- Introduced new inputs: max_depth for controlling link traversal depth and prevent_outside to restrict crawling to the same domain.
- Replaced AsyncHtmlLoader with RecursiveUrlLoader for improved document loading.
- Enhanced error handling and logging for better debugging.
- Updated output methods to return structured data and text content more effectively.
* chore: delete component
* chore: update component tests
* ✨ (freeze.spec.ts): refactor click actions to improve readability and maintainability
♻️ (loop-component.spec.ts): refactor click actions to improve readability and maintainability
🔧 (chatInputOutputUser-shard-1.spec.ts): add click action to fit view element for better user experience
* 🐛 (url.py): fix issue where data was being returned before error handling, causing potential errors to be missed
🐛 (freeze.spec.ts): fix incorrect test assertions for text comparison, ensuring correct comparison logic is applied
* [autofix.ci] apply automated fixes
* fix: ruff error
* ✨ (stop-building.spec.ts): refactor test to use click method instead of hover and mouse events for better readability and reliability
✨ (loop-component.spec.ts): update test to use consistent naming convention for handle-urlcomponent-shownode-data-right
✨ (chatInputOutputUser-shard-1.spec.ts): update test to use consistent naming convention for handle-urlcomponent-shownode-message-right and handle-urlcomponent-shownode-dataframe-right
* ✨ (chatInputOutputUser-shard-1.spec.ts): add additional wait time before running and verifying data output to ensure proper loading and display of data
* fix: playwrite test
* fix: ruff error
* ✅ (auto-login-off.spec.ts): add delay before continuing test to ensure proper execution
✅ (freeze-path.spec.ts): increase timeout for certain actions to prevent test failures due to timing issues
✅ (freeze-path.spec.ts): add delay before continuing test to ensure proper execution
✅ (dropdownComponent.spec.ts): refactor test to use a more reliable assertion for dropdown value length
* ✨ (freeze.spec.ts): add additional wait time before clicking on a button to improve test stability
✨ (freeze.spec.ts): increase timeout for waiting for "built successfully" text to appear to improve test reliability
✨ (globalVariables.spec.ts): add initial setup function to skip certain steps and improve test efficiency
---------
Co-authored-by: italojohnny <italojohnnydosanjos@gmail.com>
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
Co-authored-by: Edwin Jose <edwin.jose@datastax.com>
Co-authored-by: cristhianzl <cristhian.lousa@gmail.com>
* take1
* depreacate stdio and sse mcp components
* optionals
* rodrigo fixes
* session management
* update init
* mcp component integration test
* broken
* [autofix.ci] apply automated fixes
* fix url input name
* upated MCP
* Update mcp_component.py
* [autofix.ci] apply automated fixes
* update to the MCP component
* [autofix.ci] apply automated fixes
* mostly working
* [autofix.ci] apply automated fixes
* Update mcp_component.py
* [autofix.ci] apply automated fixes
* update component
* [autofix.ci] apply automated fixes
* Update mcp_component.py
* rename component because Simon
* icon and description for simon
* fix integration test
* fix test
* Update mcp_component.py
* update and basic QoL
* [autofix.ci] apply automated fixes
* refactor clients to util and use flow names not IDs in mcp.py
* integration test
* take out traces
* ✨ (edit-tools.spec.ts): add test for user to be able to edit tools in the frontend application.
* session fix
* fix content output
* ♻️ (util.py): remove redundant constant HTTP_TEMPORARY_REDIRECT and replace its usage with httpx.codes.TEMPORARY_REDIRECT for better code readability and maintainability
* [autofix.ci] apply automated fixes
* 🐛 (utils.ts): fix potential null pointer error when converting words to title case by adding null check before accessing properties
* 🐛 (genericIconComponent/index.tsx): Fix issue with optional chaining in mapping function
🐛 (renderIconComponent/index.tsx): Fix issue with optional chaining in mapping function
🐛 (button.tsx): Fix issue with optional chaining in mapping function
🐛 (utils.ts): Fix issue with optional chaining in mapping functions
* 🐛 (language-select.tsx): Fix potential null pointer error when mapping over allLanguages array
* ✨ (constants.ts): add support for multiple languages in the application by defining an array of language options
♻️ (audio-settings-dialog.tsx, language-select.tsx): refactor to import the array of all languages from constants.ts instead of duplicating it in each file
* ✅ (auto-login-off.spec.ts): add a 2-second delay before continuing the test to ensure proper loading and rendering of elements on the page
* ⬆️ (filterEdge-shard-0.spec.ts): reduce wait time for page interactions to improve test performance
⬆️ (playground.spec.ts): optimize wait times for page interactions to enhance test efficiency
---------
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
Co-authored-by: Edwin Jose <edwin.jose@datastax.com>
Co-authored-by: cristhianzl <cristhian.lousa@gmail.com>
* feat: add new Opik Tracer
This PR adds a new Tracer to sends traces and spans to Opik.
* Fix typo in docs
* Optimize Opik integration to reduce number of HTTP calls
* Add session_id and user_id to the Opik tracer
* Check Opik configuration on the client side before making a remote check
* Tackle documentation reviews
* Apply suggestions from code review
Co-authored-by: Jacques Verré <jverre@gmail.com>
* Fix one of the doc link
* Explicitely check for Opik environment variables before enabling the Opik tracer
* test: add opik tracing unit tests
---------
Co-authored-by: Nadir J <31660040+NadirJ@users.noreply.github.com>
Co-authored-by: Jacques Verré <jverre@gmail.com>
Co-authored-by: Ítalo Johnny <italojohnnydosanjos@gmail.com>