Skip to content

Commit

Permalink
Feature: Folders, Logs, Records Output and more (#1938)
Browse files Browse the repository at this point in the history
* Add Folder model and related classes

* Add Folder model and related classes

* Add default folder creation for new users

* Add folders_router to APIRouter in router.py

* Add FolderReadWithFlows

* Added Logs button on MenuBar and Logs modal with tabs

* Refactor monitor.py to include response_model for /transactions endpoint

* chore: Add getTransactionTable function to API controller

* starting folder project

* add packages

* ✨ (index.tsx): add ConfirmationModal component to allow users to delete selected flows with a confirmation prompt

* ⬆️ (frontend/package.json): upgrade react-hook-form dependency to version 7.51.4 to ensure compatibility with other packages and improve functionality

* update tableType and getTransactionTable

* Feat: Create Record Output component file

* chore: Remove unnecessary comma in AddNewVariableButton component

* refactor: Update FormControl and FormField imports in cardComponent

* refactor: Update FormControl and FormField imports in cardComponent

* feat: Add CustomInputPopover component for inputComponent

* refactor: Update headerComponent to use anchor tag instead of Button component for select all functionality

* refactor: Update SidebarNav component to handle both link and button items

* chore: Add FolderIcon and FolderPlusIcon to nodeIconsLucide

* refactor: Create Form component and related UI components for form handling

* feat: Add FolderForms component for creating new folders

* refactor: Add objectOptions and isObjectOption to InputComponentType

* add resolvers

* feat: Add flow_id parameter to get_transactions API endpoint

* Refactor vertex logging to use shared log_transaction function

* 🔄 (utils.py): refactor build_clean_params function to be shared between edge and vertex modules for code reusability and maintainability
📝 (utils.py): add build_clean_params function to vertex module to avoid circular import and improve code organization

* ♻️ (utils.py): move import of Vertex class to be under TYPE_CHECKING block to improve code readability and maintainability

* Feat: Add Record Output into backend

* Added Table Output and a mock

* Added data that comes from the Backend

* Fixed types

* mock transaction table

* Refactor log_transaction function to include flow_id parameter

* 📝 (endpoints.py): import `col` from `sqlmodel` to fix reference error in the code
✨ (endpoints.py): add new endpoint `delete_multiple_flows` to delete multiple flows by their IDs
📝 (endpoints.py): add documentation for the `delete_multiple_flows` endpoint
📝 (folderAccordionComponent/index.tsx): create a new component `FolderAccordionComponent` to display a folder accordion with options
📝 (cardComponent/index.tsx): add conditional rendering for `CardFooter` component to display a form field only if `control` prop is provided
📝 (sidebarComponent/index.tsx): add a new array `folderArray` to store folder data for rendering in the sidebar
✨ (sidebarComponent/index.tsx): add new functionality to handle changing folders in the sidebar

✨ (custom-accordion.tsx): add a custom accordion component to the UI library for better user experience and organization of content
✨ (index.tsx): create a new component called ComponentsComponent to display and manage components or flows in the main page of the application

✨ (emptyComponent/index.tsx): add a new component called EmptyComponent to display a message when there are no flows or components created. It includes a button to create a new flow.
✨ (myCollectionComponent/components/headerTabsSearchComponent/index.tsx): add a new component called HeaderTabsSearchComponent to display tabs for switching between "Flows" and "Components" and a search input.
✨ (myCollectionComponent/components/inputSearchComponent/index.tsx): add a new component called InputSearchComponent to display an input field for searching flows or components.
✨ (myCollectionComponent/components/tabsComponent/index.tsx): add a new component called TabsSearchComponent to display tabs for switching between "Flows" and "Components".
♻️ (myCollectionComponent/index.tsx): refactor MyCollectionComponent to include the new HeaderTabsSearchComponent and wrap ComponentsComponent in a div.
✨ (hooks/on-file-drop.tsx): add a new hook called useFileDrop to handle file drop events and upload flows or components.

✨ (MainPage/index.tsx): remove unused imports and sidebarNavItems for "Flows" and "Components" to simplify code and improve maintainability
📝 (MainPage/index.tsx): add handleChangeFolder function to navigate to the selected folder when clicking on a sidebar item
✨ (MainPage/utils/sort-flows.ts): add utility function to sort flows based on updated_at and date_created properties
📝 (routes.tsx): update routes for "flows" and "components" to include sub-routes
♻️ (flowsManagerStore.ts): refactor flowsManagerStore to remove unused code, add allFlows state and setAllFlows action, add setSearchFlowsComponents action

✨ (index.ts): add new properties and methods to FlowsManagerStoreType interface to support search functionality for flows components

* 📝 (endpoints.py): reformat delete_multiple_flows function definition for better readability and adherence to PEP 8 style guide

* feat: Add TableAutoCellRender component for automatic cell rendering in tables

* 📝 (index.tsx): Add useEffect import to sidebarComponent/index.tsx to fix missing dependency warning
✨ (index.tsx): Add getFolders import to sidebarComponent/index.tsx to fetch folders data
♻️ (index.tsx): Refactor SidebarNav component in sidebarComponent/index.tsx to use useEffect hook for fetching folders data
📝 (index.tsx): Add FolderType entity definition to entities/index.tsx
✨ (index.tsx): Create MainPage component in pages/mainPage/index.tsx to display user projects
📝 (index.tsx): Add imports and types to MainPage component in pages/mainPage/index.tsx
✨ (index.tsx): Add useEffect hook to MainPage component in pages/mainPage/index.tsx to set current flow id to null
✨ (index.tsx): Add navigate function to MainPage component in pages/mainPage/index.tsx to navigate to flow page
✨ (index.tsx): Add openModal and openFolderModal states to MainPage component in pages/mainPage/index.tsx to control modals
✨ (index.tsx): Add dropdownOptions array to MainPage component in pages/mainPage/index.tsx for dropdown button options
✨ (index.tsx): Add sidebarNavItems array to MainPage component in pages/mainPage/index.tsx for sidebar navigation items
♻️ (index.tsx): Refactor MainPage component in pages/mainPage/index.tsx to use PageLayout component and render sidebar and outlet
✨ (index.tsx): Add NewFlowModal and FoldersModal components to MainPage component in pages/mainPage/index.tsx
📝 (index.tsx): Add getFolders import to services/index.tsx to fetch folders data
✨ (index.tsx): Add addFolder, updateFolder, deleteFolder, and getFolderById functions to services/index.tsx for CRUD operations on folders
♻️ (index.tsx): Refactor routes.tsx to import MainPage component from pages/mainPage/index.tsx

* Fixed data gathering, now getting from flowpool

* feat: Update get_transactions API endpoint to return TransactionModelResponse objects

* refactor(schema.py): remove redundant __str__ method and improve Record class string representation by returning a JSON string of the data attributes
fix record table

* 🐛 (langflow/__main__.py): fix create_default_folder_if_it_doesnt_exist function call by passing user.id instead of user object
✨ (endpoints.py): add delete_multiple_flows endpoint to delete multiple flows by their IDs
📝 (flows.py): add download_file endpoint to download all flows as a file
🔧 (folders.py): add read_starter_folders endpoint to read starter folders
🔧 (login.py): fix create_default_folder_if_it_doesnt_exist function call by passing user.id instead of user object
🔧 (users.py): fix create_default_folder_if_it_doesnt_exist function call by passing user.id instead of user object
✨ (setup.py): add folder_id field to Flow model and update create_new_project function to include folder_id parameter

📝 (utils.py): import necessary modules and update function signature to use UUID instead of User object
♻️ (utils.py): refactor create_default_folder_if_it_doesnt_exist function to use user_id instead of User object and update SQL query to use UUID
📝 (index.tsx): import useFolderStore from foldersStore
♻️ (index.tsx): refactor useEffect to use useFolderStore instead of getFolders function
📝 (index.tsx): import useFolderStore from foldersStore
♻️ (index.tsx): refactor useEffect to use useFolderStore instead of getFolders function
📝 (index.tsx): import useFolderStore from foldersStore
♻️ (index.tsx): refactor useEffect to use useFolderStore instead of getFolders function
📝 (index.tsx): import useFolderStore from foldersStore
♻️ (index.tsx): refactor useEffect to use useFolderStore instead of getFolders function
📝 (index.tsx): import useFolderStore from foldersStore
♻️ (index.tsx): refactor useEffect to use useFolderStore instead of getFolders function
📝 (index.tsx): import useFolderStore from foldersStore
♻️ (index.tsx): refactor useEffect to use useFolderStore instead of getFolders function
📝 (index.tsx): import useFolderStore from foldersStore
♻️ (index.tsx): refactor useEffect to use useFolderStore instead of getFolders function
📝 (index.tsx): import useFolderStore from foldersStore
♻️ (index.tsx): refactor useEffect to use useFolderStore instead of getFolders function
📝 (index.tsx): import useFolderStore from foldersStore
♻️ (index.tsx): refactor useEffect to use useFolderStore instead of getFolders function
📝 (index.tsx): import useFolderStore from foldersStore
♻️ (index.tsx): refactor useEffect to use useFolderStore instead of getFolders function
📝 (index.tsx): import useFolderStore from foldersStore
♻️ (index.tsx): refactor useEffect to use useFolderStore instead of getFolders function
📝 (index.tsx): import useFolderStore from foldersStore
♻️ (index.tsx): refactor useEffect to use useFolderStore instead of getFolders function
📝 (index.tsx): import useFolderStore from foldersStore
♻️ (index.tsx): refactor useEffect to use useFolderStore instead of getFolders function
📝 (index.tsx): import useFolderStore from foldersStore
♻️ (index.tsx): refactor useEffect to use useFolderStore instead of getFolders function
📝 (index.tsx): import useFolderStore from foldersStore
♻️ (index.tsx): refactor useEffect to use useFolderStore instead of getFolders function
📝 (index.tsx): import useFolderStore from foldersStore
♻️ (index.tsx): refactor useEffect to use useFolderStore instead of getFolders function
📝 (index.tsx): import useFolderStore from foldersStore
♻️ (index.tsx): refactor useEffect to use useFolderStore instead of getFolders function
📝 (index.tsx): import useFolderStore from foldersStore
♻️ (index.tsx): refactor useEffect to use useFolderStore instead of getFolders function
📝 (index.tsx): import useFolderStore from foldersStore
♻️ (index.tsx): refactor useEffect to use useFolderStore instead of getFolders function
📝 (index.tsx): import useFolderStore from foldersStore
♻️ (index.tsx): refactor useEffect to use useFolderStore instead of getFolders function
📝 (index.tsx): import useFolderStore from foldersStore
♻️ (index.tsx): refactor useEffect to use useFolderStore instead of getFolders function
📝 (index.tsx): import useFolderStore from foldersStore
♻️ (index.tsx): refactor useEffect to use useFolderStore instead of getFolders function
📝 (index.tsx): import useFolderStore from foldersStore
♻️ (index.tsx): refactor useEffect to use useFolderStore instead of getFolders function
📝 (index.tsx): import useFolderStore from foldersStore
♻️ (index.tsx): refactor useEffect to use useFolderStore instead of getFolders function
📝 (index.tsx): import useFolderStore from foldersStore
♻️ (index.tsx): refactor useEffect to use useFolderStore instead of getFolders function
📝 (index.tsx): import useFolderStore from foldersStore
♻️ (

✨ (services/index.tsx): update API endpoints for getting, adding, and updating folders to match backend routes
🚀 (flowsManagerStore.ts): add support for fetching starter projects and filtering them out from the list of flows
♻️ (foldersStore.tsx): refactor folder store to use Zustand for state management
📝 (types/zustand/folders/index.ts): add types for the folder store in Zustand

* 📝 (App.tsx): Add import statement for useFolderStore from foldersStore to use the getFoldersApi and loadingFolders variables
📝 (App.tsx): Add useEffect hook to call getFoldersApi on component mount
📝 (ComponentsComponent/index.tsx): Add import statement for FlowType from types/flow
📝 (ComponentsComponent/index.tsx): Add import statement for useFolderStore from foldersStore to use the myCollectionFlows variable
📝 (ComponentsComponent/index.tsx): Add const flowsFromFolder to get the flows from the selected folder in useFolderStore
📝 (ComponentsComponent/index.tsx): Add useEffect hook to set the allFlows state to the flowsFromFolder on component mount
📝 (ComponentsComponent/index.tsx): Add useEffect hook to set the allFlows state to the myCollectionFlows.flows on myCollectionFlows change
📝 (ComponentsComponent/index.tsx): Add useEffect hook to filter the flows based on the searchFlowsComponents state
📝 (ComponentsComponent/index.tsx): Add useEffect hook to call getFolderById and setAllFlows on folderId change
📝 (ComponentsComponent/index.tsx): Add isLoadingFolders variable to isLoading in the conditional rendering of the loading page panel
📝 (ComponentsComponent/index.tsx): Add useEffect hook to call getFoldersApi on component mount
📝 (entities/index.tsx): Add import statement for FlowType from types/flow
📝 (sort-flows.ts): Add optional chaining to flows and f in the filter function
📝 (foldersStore.tsx): Add getMyCollectionFolder function to get the My Collection folder and set the myCollectionFlows state
📝 (foldersStore.tsx): Add setMyCollectionFlow function to set the myCollectionFlows state
📝 (foldersStore.tsx): Add myCollectionFlows state to store the My Collection folder and its flows
📝 (foldersStore.tsx): Call getMyCollectionFolder in the getFolders function to get the My Collection folder on folders load
📝 (foldersStore.tsx): Call getMyCollectionFolder in the setFolders function to get the My Collection folder on folders update
📝 (foldersStore.tsx): Call getMyCollectionFolder in the setLoading function to get the My Collection folder on loading change
📝 (foldersStore.tsx): Call getMyCollectionFolder in the setLoadingById function to get the My Collection folder on loadingById change
📝 (foldersStore.tsx): Add myCollectionFlows state to store the My Collection folder and its flows
📝 (foldersStore.tsx): Call getMyCollectionFolder in the getFolders function to get the My Collection folder on folders load
📝 (foldersStore.tsx): Call getMyCollectionFolder in the setFolders function to get the My Collection folder on folders update
📝 (foldersStore.tsx): Call getMyCollectionFolder in the setLoading function to get the My Collection folder on loading change
📝 (foldersStore.tsx): Call getMyCollectionFolder in the setLoadingById function to get the My Collection folder on loadingById change
📝 (foldersStore.tsx): Add myCollectionFlows state to store the My Collection folder and its flows
📝 (foldersStore.tsx): Call getMyCollectionFolder in the getFolders function to get the My Collection folder on folders load
📝 (foldersStore.tsx): Call getMyCollectionFolder in the setFolders function to get the My Collection folder on folders update
📝 (foldersStore.tsx): Call getMyCollectionFolder in the setLoading function to get the My Collection folder on loading change
📝 (foldersStore.tsx): Call getMyCollectionFolder in the setLoadingById function to get the My Collection folder on loadingById change
📝 (foldersStore.tsx): Add myCollectionFlows state to store the My Collection folder and its flows
📝 (foldersStore.tsx): Call getMyCollectionFolder in the getFolders function to get the My Collection folder on folders load
📝 (foldersStore.tsx): Call getMyCollectionFolder in the setFolders function to get the My Collection folder on folders update
📝 (foldersStore.tsx): Call getMyCollectionFolder in the setLoading function to get the My Collection folder on loading change
📝 (foldersStore.tsx): Call getMyCollectionFolder in the setLoadingById function to get the My Collection folder on loadingById change
📝 (foldersStore.tsx): Add myCollectionFlows state to store the My Collection folder and its flows
📝 (foldersStore.tsx): Call getMyCollectionFolder in the getFolders function to get the My

* 🐛 (flows.py): set default folder for flows without a folder_id to "My Collection" folder if it exists
✨ (componentsComponent/index.tsx): add isLoadingFolder state to track loading status of folder data
📝 (componentsComponent/index.tsx): remove console.log statement
♻️ (componentsComponent/index.tsx): refactor useEffect to setAllFlows only when folderId changes
♻️ (componentsComponent/index.tsx): refactor useEffect to log allFlows when it changes
♻️ (foldersStore.tsx): refactor getMyCollectionFolder to set myCollectionId state
♻️ (foldersStore.tsx): refactor setMyCollectionId to set myCollectionId state

* Feat: create date and string logs components

* ✨ (App.tsx): add autoLogin as a dependency to useEffect to trigger the effect when autoLogin changes
✨ (sideBarButtons/index.tsx): create a new component SideBarButtonsComponent to handle rendering of sidebar buttons
✨ (sideBarFolderButtons/index.tsx): create a new component SideBarFoldersButtonsComponent to handle rendering of sidebar folder buttons
♻️ (index.tsx): refactor SidebarNav component to use SideBarButtonsComponent and SideBarFoldersButtonsComponent for rendering buttons

✨ (index.tsx): add support for editing existing folders by passing folderToEdit prop to FolderForms component
📝 (index.tsx): add form validation using zod schema and zodResolver
♻️ (index.tsx): refactor form handling to use react-hook-form useForm hook and zodResolver for validation
✨ (submit-folder.tsx): create custom hook useFolderSubmit to handle form submission and API calls for adding and updating folders
📝 (entities/index.ts): add zod schema for folder form validation
♻️ (component/index.tsx): refactor imports and remove unused imports
♻️ (component/index.tsx): refactor FolderForms component to use destructuring for props and remove unused imports
♻️ (component/index.tsx): refactor useEffect to handle folderToEdit prop and set form values accordingly
♻️ (component/index.tsx): refactor FormField components to use FormItem and FormMessage components for better form structure and error handling
♻️ (component/index.tsx): refactor FormField components to use name prop instead of deprecated defaultValue prop
♻️ (component/index.tsx): refactor FormField components to use name prop instead of deprecated defaultValue prop
🔧 (component/index.tsx): add missing import for FormMessage component
🔧 (component/index.tsx): add missing import for FormMessage component
🔧 (component/index.tsx): add missing import for FormMessage component
🔧 (component/index.tsx): add missing import for FormMessage component
🔧 (component/index.tsx): add missing import for FormMessage component
🔧 (component/index.tsx): add missing import for FormMessage component
🔧 (component/index.tsx): add missing import for FormMessage component
🔧 (component/index.tsx): add missing import for FormMessage component
🔧 (component/index.tsx): add missing import for FormMessage component
🔧 (component/index.tsx): add missing import for FormMessage component
🔧 (component/index.tsx): add missing import for FormMessage component
🔧 (component/index.tsx): add missing import for FormMessage component
🔧 (component/index.tsx): add missing import for FormMessage component
🔧 (component/index.tsx): add missing import for FormMessage component
🔧 (component/index.tsx): add missing import for FormMessage component
🔧 (component/index.tsx): add missing import for FormMessage component
🔧 (component/index.tsx): add missing import for FormMessage component
🔧 (component/index.tsx): add missing import for FormMessage component
🔧 (component/index.tsx): add missing import for FormMessage component
🔧 (component/index.tsx): add missing import for FormMessage component
🔧 (component/index.tsx): add missing import for FormMessage component
🔧 (component/index.tsx): add missing import for FormMessage component
🔧 (component/index.tsx): add missing import for FormMessage component
🔧 (component/index.tsx): add missing import for FormMessage component
🔧 (component/index.tsx): add missing import for FormMessage component
🔧 (component/index.tsx): add missing import for FormMessage component
🔧 (component/index.tsx): add missing import for FormMessage component
🔧 (component/index.tsx): add missing import for FormMessage component
🔧 (component/index.tsx): add missing import for FormMessage component
🔧 (component/index.tsx): add missing import for FormMessage component
🔧 (component/index.tsx): add missing import for FormMessage component
🔧 (component/index.tsx): add missing import for FormMessage component
🔧 (component/index.tsx): add missing import for FormMessage component
🔧 (component/index.tsx): add missing import for FormMessage component
🔧 (component/index.tsx): add missing import for FormMessage component
🔧 (component/index.tsx): add missing import for FormMessage component
🔧 (component/index.tsx): add missing import for FormMessage component
🔧 (component/index.tsx): add missing import for FormMessage component
🔧 (component/index.tsx): add missing import for FormMessage component
🔧 (component/index.tsx): add missing import for FormMessage component
🔧 (component/index.tsx): add missing import for FormMessage component
🔧 (component/index.tsx): add missing import for FormMessage component
🔧 (component/index.tsx): add missing import for FormMessage component
🔧 (component/index.tsx): add missing import for FormMessage component

✨ (componentsComponent/index.tsx): remove unused isLoadingFolder variable
♻️ (componentsComponent/index.tsx): refactor useEffect to handle folderId and myCollectionId logic separately for better readability
♻️ (componentsComponent/index.tsx): refactor useEffect to setAllFlows with a delay of 500ms for smoother rendering
📝 (componentsComponent/index.tsx): remove console.log statement
✨ (modalsComponent/index.tsx): add ModalsComponent to handle different modals in ComponentsComponent
✨ (inputSearchComponent/index.tsx): add allFlows dependency to disable search input when there are no flows
✨ (delete-folder.tsx): add useDeleteFolder hook to handle folder deletion logic
✨ (dropdown-options.tsx): add useDropdownOptions hook to handle dropdown options for import from JSON

📝 (index.tsx): refactor MainPage's index.tsx to improve code readability and maintainability
✨ (index.tsx): introduce ModalsComponent to handle modals in MainPage
♻️ (foldersStore.tsx): refactor getFoldersApi function in foldersStore to allow refetching of folders
♻️ (foldersStore.tsx): refactor setFolderToEdit function in foldersStore to improve semantics
♻️ (index.ts): refactor FoldersStoreType in types/zustand/folders/index.ts to improve semantics
♻️ (tailwind.config.js): refactor tailwind.config.js to add display variant for group-hover

* 🐛 (flows.py): import `col` from `sqlmodel` to fix reference error
🐛 (flows.py): change route method from DELETE to POST for deleting multiple flows
🐛 (flows.py): fix reference error in `delete_multiple_flows` function
📝 (schemas.py): add `FlowListIds` schema to handle flow ids for multiple delete
✨ (index.tsx): remove trailing commas in useState calls
♻️ (index.tsx): remove unnecessary ternary operator in className
♻️ (index.tsx): remove unnecessary arrow function in onDelete prop
♻️ (index.tsx): remove unnecessary props in DeleteConfirmationModal component
♻️ (index.tsx): remove unnecessary props in Button component
♻️ (index.tsx): remove unnecessary props in Icon component
♻️ (index.tsx): remove unnecessary props in Spinner component
♻️ (index.tsx): remove unnecessary props in IconButton component
♻️ (index.tsx): remove unnecessary props in Tooltip component
♻️ (index.tsx): remove unnecessary props in Text component
♻️ (index.tsx): remove unnecessary props in Flex component
♻️ (index.tsx): remove unnecessary props in Box component
♻️ (index.tsx): remove unnecessary props in Avatar component
♻️ (index.tsx): remove unnecessary props in Badge component
♻️ (index.tsx): remove unnecessary props in Image component
♻️ (index.tsx): remove unnecessary props in Heading component
♻️ (index.tsx): remove unnecessary props in Divider component
♻️ (index.tsx): remove unnecessary props in Spacer component
♻️ (index.tsx): remove unnecessary props in Stack component
♻️ (index.tsx): remove unnecessary props in Collapse component
♻️ (index.tsx): remove unnecessary props in Modal component
♻️ (index.tsx): remove unnecessary props in Portal component
♻️ (index.tsx): remove unnecessary props in Transition component
♻️ (index.tsx): remove unnecessary props in useFlowsManagerStore hook
♻️ (index.tsx): remove unnecessary props in useDisclosure hook
♻️ (index.tsx): remove unnecessary props in useToast hook
♻️ (index.tsx): remove unnecessary props in useColorModeValue hook
♻️ (index.tsx): remove unnecessary props in useBreakpointValue hook
♻️ (index.tsx): remove unnecessary props in useMediaQuery hook
♻️ (index.tsx): remove unnecessary props in useBoolean hook
♻️ (index.tsx): remove unnecessary props in useOutsideClick hook
♻️ (index.tsx): remove unnecessary props in useClipboard hook
♻️ (index.tsx): remove unnecessary props in useMergeRefs hook
♻️ (index.tsx): remove unnecessary props in useSafeLayoutEffect hook
♻️ (index.tsx): remove unnecessary props in useUpdateEffect hook
♻️ (index.tsx): remove unnecessary props in usePrevious hook
♻️ (index.tsx): remove unnecessary props in useTimeout hook
♻️ (index.tsx): remove unnecessary props in useDebounce hook
♻️ (index.tsx): remove unnecessary props in useThrottle hook
♻️ (index.tsx): remove unnecessary props in useWindowSize hook
♻️ (index.tsx): remove unnecessary props in useHover hook
♻️ (index.tsx): remove unnecessary props in useFocusWithin hook
♻️ (index.tsx): remove unnecessary props in useIntersect hook
♻️ (index.tsx): remove unnecessary props in useInViewport hook
♻️ (index.tsx): remove unnecessary props in useMeasure hook
♻️ (index.tsx): remove unnecessary props in useMotionValue hook
♻️ (index.tsx): remove unnecessary props in useTransform hook
♻️ (index.tsx): remove unnecessary props in useSpring hook
♻️ (index.tsx): remove unnecessary props in useDragControls hook
♻️ (index.tsx): remove unnecessary props in usePanGesture hook
♻️ (index.tsx): remove unnecessary props in useScrollControls hook
♻️ (index.tsx): remove unnecessary props in useViewportScroll hook
♻️ (index.tsx): remove unnecessary props in useAnimation hook
♻️ (index.tsx): remove unnecessary props in useCycle hook
♻️ (index.tsx): remove unnecessary props in useLottie hook
♻️ (index.tsx): remove unnecessary props in useMotionConfig hook
♻️ (index.tsx): remove unnecessary props in usePresence hook
♻

✨ (componentsComponent/index.tsx): import multipleDeleteFlowsComponents from API controller to enable multiple deletion of flows and components
✨ (componentsComponent/index.tsx): add handleDelete function to handle individual deletion of flows and components
✨ (componentsComponent/index.tsx): add handleDeleteMultiple function to handle multiple deletion of flows and components
✨ (componentsComponent/index.tsx): add description prop to DeleteConfirmationModal to specify the type of item being deleted
📝 (modalsComponent/index.tsx): add description prop to DeleteConfirmationModal to specify the type of item being deleted

* feat: Add JSON string representation to Record attributes
feat: fix table view for Record

* feat(frontend): add ArrayReader, NumberReader, ObjectRender components
feat(frontend): add DateReader component to format date strings
fix(frontend): fix component naming conventions for consistency
feat(frontend): update TableAutoCellRender to use new components for rendering
feat(frontend): update FlowLogsModal to use pagination and adjust modal size based on content

* refactor(utils): update timestamp regex to handle optional milliseconds

* refactor(api): update /monitor/messages endpoint to return MessageModel objects

* refactor(api): update /monitor/messages endpoint to return List[MessageModel]

* feat(modals): enable fake column editing in FlowLogsModal

* update recordsOutput to expect object instead of string

* refactor: update RecordsOutput to expect object instead of string

* refactor: update RecordsOutputComponent to use extracted columns from rows and get multiple records

* ✨ (flows.py): set default folder for newly created flows to "My Collection" if no folder is specified
♻️ (sideBarButtons/index.tsx): remove unused import and refactor code to simplify rendering of sidebar buttons
♻️ (sideBarFolderButtons/index.tsx): refactor code to simplify rendering of sidebar folder buttons and improve readability
♻️ (index.ts): refactor saveFlowToDatabase function to handle null folder_id values correctly
♻️ (NewFlowCardComponent/index.tsx): refactor code to set folder URL when creating a new flow
♻️ (undrawCards/index.tsx): refactor code to set folder URL when creating a new flow and remove unused import

📝 (newFlowModal/index.tsx): remove commented out code for IconComponent to improve code readability
📝 (newFlowModal/index.tsx): remove commented out code for examples.map to improve code readability
📝 (newFlowModal/index.tsx): change key values for UndrawCardComponent to improve uniqueness
📝 (FlowPage/index.tsx): remove unused import for useDarkStore to improve code cleanliness
📝 (FlowPage/index.tsx): remove extra whitespace to improve code readability
📝 (ComponentsComponent/index.tsx): add setFolderUrl function to set the folderUrl state in the folder store
📝 (ComponentsComponent/index.tsx): remove unnecessary whitespace to improve code readability
📝 (tabsComponent/index.tsx): add folderUrl state to navigate function to maintain folder state when changing tabs
📝 (routes.tsx): add nested route for /flow/:id/ to render FlowPage component
📝 (flowsManagerStore.ts): add folder_id property to newFlow object to store the current folder URL
📝 (foldersStore.tsx): remove unnecessary comma to fix syntax error
📝 (foldersStore.tsx): add folderUrl state and setFolderUrl function to store the current folder URL

🐛 (reactflowUtils.ts): remove unused parameter 'edges' in isValidConnection function
♻️ (reactflowUtils.ts): refactor scapeJSONParse and scapeJSONStringfy functions to remove unnecessary exclamation marks
🐛 (reactflowUtils.ts): fix bug in updateIds function where selectionIds could be undefined
🐛 (reactflowUtils.ts): fix bug in updateIds function where edge.sourceHandle could be undefined
🐛 (reactflowUtils.ts): fix bug in updateIds function where edge.targetHandle could be undefined
🐛 (reactflowUtils.ts): fix bug in validateNode function where scapeJSONParse was called twice
🐛 (reactflowUtils.ts): fix bug in validateNode function where scapeJSONParse was called twice
🐛 (reactflowUtils.ts): fix bug in validateNode function where scapeJSONParse was called twice
🐛 (reactflowUtils.ts): fix bug in validateNode function where scapeJSONParse was called twice
🐛 (reactflowUtils.ts): fix bug in validateNode function where scapeJSONParse was called twice
🐛 (reactflowUtils.ts): fix bug in validateNode function where scapeJSONParse was called twice
🐛 (reactflowUtils.ts): fix bug in validateNode function where scapeJSONParse was called twice
🐛 (reactflowUtils.ts): fix bug in validateNode function where scapeJSONParse was called twice
🐛 (reactflowUtils.ts): fix bug in validateNode function where scapeJSONParse was called twice
🐛 (reactflowUtils.ts): fix bug in validateNode function where scapeJSONParse was called twice
🐛 (reactflowUtils.ts): fix bug in validateNode function where scapeJSONParse was called twice
🐛 (reactflowUtils.ts): fix bug in validateNode function where scapeJSONParse was called twice
🐛 (reactflowUtils.ts): fix bug in validateNode function where scapeJSONParse was called twice
🐛 (reactflowUtils.ts): fix bug in validateNode function where scapeJSONParse was called twice
🐛 (reactflowUtils.ts): fix bug in validateNode function where scapeJSONParse was called twice
🐛 (reactflowUtils.ts): fix bug in validateNode function where scapeJSONParse was called twice
🐛 (reactflowUtils.ts): fix bug in validateNode function where scapeJSONParse was called twice
🐛 (reactflowUtils.ts): fix bug in validateNode function where scapeJSONParse was called twice
🐛 (reactflowUtils.ts): fix bug in validateNode function where scapeJSONParse was called twice
🐛 (reactflowUtils.ts): fix bug in validateNode function where scapeJSONParse was called twice
🐛 (reactflowUtils.ts): fix bug in validateNode function where scapeJSONParse was called twice
🐛 (reactflowUtils.ts): fix bug in validateNode function where scapeJSONParse was called twice
🐛 (reactflowUtils.ts): fix bug in validateNode function where scapeJSONParse was called twice
🐛 (reactflowUtils.ts): fix bug in validateNode function where scapeJSONParse was called twice
🐛 (reactflowUtils.ts): fix bug in validateNode function where scapeJSONParse was called twice
🐛 (reactflowUtils.ts): fix bug in validateNode function where scapeJSONParse was called twice
🐛 (reactflowUtils.ts): fix bug in validateNode function where scapeJSONParse was called twice
🐛 (reactflowUtils.ts): fix bug in validateNode function where scapeJSONParse was called twice
🐛 (reactflowUtils.ts): fix bug in validateNode function where scapeJSONParse was called twice
🐛 (reactflowUtils.ts): fix bug in validateNode function where scapeJSONParse was called twice
🐛 (reactflowUtils.ts): fix bug in validateNode function where scapeJSONParse was called twice
🐛 (reactflowUtils.ts): fix bug in validateNode function where scapeJSONParse was called twice
🐛 (reactflowUtils.ts): fix bug in validateNode function where scapeJSONParse was called twice
🐛 (reactflowUtils.ts): fix bug in validateNode function where scapeJSONParse was called twice
🐛 (reactflowUtils.ts): fix bug in validateNode function where scapeJSONParse was called twice
🐛 (reactflowUtils.ts): fix bug in validateNode function where scapeJSONParse was called twice
🐛 (reactflowUtils.ts): fix bug in validateNode function where scapeJSONParse was called twice
🐛 (reactflowUtils.ts): fix bug in validateNode function where scapeJSONParse was called twice
🐛 (reactflowUtils.ts): fix bug in

📝 (file): update line 785 to fix a typo or improve code readability

✨ (reactflowUtils.ts): remove unnecessary comma at the end of the line
♻️ (reactflowUtils.ts): refactor code to improve readability and remove unnecessary code
📝 (reactflowUtils.ts): add missing JSDoc comments to functions
♻️ (reactflowUtils.ts): refactor code to improve readability and remove unnecessary code
♻️ (reactflowUtils.ts): refactor code to improve readability and remove unnecessary code
♻️ (reactflowUtils.ts): refactor code to improve readability and remove unnecessary code
♻️ (reactflowUtils.ts): refactor code to improve readability and remove unnecessary code
♻️ (reactflowUtils.ts): refactor code to improve readability and remove unnecessary code
♻️ (reactflowUtils.ts): refactor code to improve readability and remove unnecessary code
♻️ (reactflowUtils.ts): refactor code to improve readability and remove unnecessary code
♻️ (reactflowUtils.ts): refactor code to improve readability and remove unnecessary code
♻️ (reactflowUtils.ts): refactor code to improve readability and remove unnecessary code
♻️ (reactflowUtils.ts): refactor code to improve readability and remove unnecessary code
♻️ (reactflowUtils.ts): refactor code to improve readability and remove unnecessary code
♻️ (reactflowUtils.ts): refactor code to improve readability and remove unnecessary code
♻️ (reactflowUtils.ts): refactor code to improve readability and remove unnecessary code
♻️ (reactflowUtils.ts): refactor code to improve readability and remove unnecessary code
♻️ (reactflowUtils.ts): refactor code to improve readability and remove unnecessary code
♻️ (reactflowUtils.ts): refactor code to improve readability and remove unnecessary code
♻️ (reactflowUtils.ts): refactor code to improve readability and remove unnecessary code
♻️ (reactflowUtils.ts): refactor code to improve readability and remove unnecessary code
♻️ (reactflowUtils.ts): refactor code to improve readability and remove unnecessary code
♻️ (reactflowUtils.ts): refactor code to improve readability and remove unnecessary code
♻️ (reactflowUtils.ts): refactor code to improve readability and remove unnecessary code
♻️ (reactflowUtils.ts): refactor code to improve readability and remove unnecessary code
♻️ (reactflowUtils.ts): refactor code to improve readability and remove unnecessary code
♻️ (reactflowUtils.ts): refactor code to improve readability and remove unnecessary code
♻️ (reactflowUtils.ts): refactor code to improve readability and remove unnecessary code
♻️ (reactflowUtils.ts): refactor code to improve readability and remove unnecessary code
♻️ (reactflowUtils.ts): refactor code to improve readability and remove unnecessary code
♻️ (reactflowUtils.ts): refactor code to improve readability and remove unnecessary code
♻️ (reactflowUtils.ts): refactor code to improve readability and remove unnecessary code
♻️ (reactflowUtils.ts): refactor code to improve readability and remove unnecessary code
♻️ (reactflowUtils.ts): refactor code to improve readability and remove unnecessary code
♻️ (reactflowUtils.ts): refactor code to improve readability and remove unnecessary code
♻️ (reactflowUtils.ts): refactor code to improve readability and remove unnecessary code
♻️ (reactflowUtils.ts): refactor code to improve readability and remove unnecessary code
♻️ (reactflowUtils.ts): refactor code to improve readability and remove unnecessary code
♻️ (reactflowUtils.ts): refactor code to improve readability and remove unnecessary code
♻️ (reactflowUtils.ts): refactor code to improve readability and remove unnecessary code
♻️ (reactflowUtils.ts): refactor code to improve readability and remove unnecessary code
♻️ (reactflowUtils.ts): refactor code to improve readability and remove unnecessary code
♻️ (reactflowUtils.ts): refactor code to improve readability and remove unnecessary code
♻️ (reactflowUtils.ts): refactor code to improve readability and remove unnecessary code
♻️ (reactflowUtils.ts): refactor code to improve readability and remove unnecessary code
♻️ (reactflowUtils.ts): refactor code to improve readability and remove unnecessary code
♻️ (reactflowUtils.ts): refactor code to improve readability and remove unnecessary code
♻️ (reactflowUtils.ts): refactor code to improve readability and remove unnecessary code
♻️ (reactflowUtils.ts): refactor code to improve readability and remove unnecessary code
♻️ (reactflowUtils.ts): refactor code to improve readability and remove unnecessary code
♻️ (reactflowUtils.ts): refactor code to improve readability and remove unnecessary code
♻️ (reactflowUtils.ts): refactor code to improve readability and remove unnecessary code
♻️ (reactflowUtils.ts): refactor code to improve readability

* refactor: Update FlowLogsModal to fetch and display messages table based on active tab

* update package lock

* 🐛 (folders.py): import missing dependencies and update code to handle folder components and flows
🐛 (folders.py): fix typo in update statement
🐛 (folders.py): fix typo in update statement
🐛 (folders.py): fix typo in update statement
🐛 (folders.py): fix typo in update statement
🐛 (folders.py): fix typo in update statement
🐛 (folders.py): fix typo in update statement
🐛 (folders.py): fix typo in update statement
🐛 (folders.py): fix typo in update statement
🐛 (folders.py): fix typo in update statement
🐛 (folders.py): fix typo in update statement
🐛 (folders.py): fix typo in update statement
🐛 (folders.py): fix typo in update statement
🐛 (folders.py): fix typo in update statement
🐛 (folders.py): fix typo in update statement
🐛 (folders.py): fix typo in update statement
🐛 (folders.py): fix typo in update statement
🐛 (folders.py): fix typo in update statement
🐛 (folders.py): fix typo in update statement
🐛 (folders.py): fix typo in update statement
🐛 (folders.py): fix typo in update statement
🐛 (folders.py): fix typo in update statement
🐛 (folders.py): fix typo in update statement
🐛 (folders.py): fix typo in update statement
🐛 (folders.py): fix typo in update statement
🐛 (folders.py): fix typo in update statement
🐛 (folders.py): fix typo in update statement
🐛 (folders.py): fix typo in update statement
🐛 (folders.py): fix typo in update statement
🐛 (folders.py): fix typo in update statement
🐛 (folders.py): fix typo in update statement
🐛 (folders.py): fix typo in update statement
🐛 (folders.py): fix typo in update statement
🐛 (folders.py): fix typo in update statement
🐛 (folders.py): fix typo in update statement
🐛 (folders.py): fix typo in update statement
🐛 (folders.py): fix typo in update statement
🐛 (folders.py): fix typo in update statement
🐛 (folders.py): fix typo in update statement
🐛 (folders.py): fix typo in update statement
🐛 (folders.py): fix typo in update statement
🐛 (folders.py): fix typo in update statement
🐛 (folders.py): fix typo in update statement
🐛 (folders.py): fix typo in update statement
🐛 (folders.py): fix typo in update statement
🐛 (folders.py): fix typo in update statement
🐛 (folders.py): fix typo in update statement
🐛 (folders.py): fix typo in update statement
🐛 (folders.py): fix typo in update statement
🐛 (folders.py): fix typo in update statement
🐛 (folders.py): fix typo in update statement
🐛 (folders.py): fix typo in update statement
🐛 (folders.py): fix typo in update statement
🐛 (folders.py): fix typo in update statement
🐛 (folders.py): fix typo in update statement
🐛 (folders.py): fix typo in update statement
🐛 (folders.py): fix typo in update statement
🐛 (folders.py): fix typo in update statement
🐛 (folders.py): fix typo in update statement
🐛 (folders.py): fix typo in update statement
🐛 (folders.py): fix typo in update statement
🐛 (folders.py): fix typo in update statement
🐛 (folders.py): fix typo in update statement
🐛 (folders.py): fix typo in update statement
🐛 (folders.py): fix typo in update statement
🐛 (folders.py): fix typo in update statement
🐛 (folders.py): fix typo in update statement
🐛 (folders.py): fix typo in update statement
🐛 (folders.py): fix typo in update statement
🐛 (folders.py): fix typo in update statement
🐛 (folders.py): fix typo in update statement
🐛 (folders.py): fix typo in update statement
🐛 (folders.py): fix typo in update statement
🐛 (folders.py): fix typo in update statement
🐛 (folders.py): fix typo in update statement
🐛 (folders.py): fix typo in update statement
🐛 (folders

✨ (componentsComponent/index.tsx): add support for selecting and deselecting multiple flows/components
🔧 (componentsComponent/index.tsx): update import statement for react-hook-form to include useWatch
♻️ (componentsComponent/index.tsx): refactor handleSelectAll function to only select flows from folder
♻️ (componentsComponent/index.tsx): refactor handleSelectOptionsChange function to check selectedFlowsComponentsCards length
♻️ (componentsComponent/index.tsx): refactor handleDeleteMultiple function to use selectedFlowsComponentsCards
✨ (componentsComponent/index.tsx): update selectedFlowsComponentsCards state when form values change
♻️ (componentsComponent/index.tsx): refactor getDescriptionModal to use useMemo
🐛 (inputSearchComponent/index.tsx): disable input search when loading, no flows, or no searchFlowsComponents
♻️ (flowsManagerStore.ts): add selectedFlowsComponentsCards state and setSelectedFlowsComponentsCards function
📝 (zustand/flowsManager/index.ts): update FlowsManagerStoreType to include selectedFlowsComponentsCards state and setSelectedFlowsComponentsCards function
📝 (deleteComponentFlows.spec.ts): update confirmation message for deleting a component

* 🐛 (index.tsx): filter out flows without a folder_id to prevent errors when mapping over flows
🐛 (index.ts): add folder_id property to FlowType to properly handle flows with a folder_id

* 📝 (sidebarComponent): remove console.log statement for items variable
♻️ (sidebarComponent): refactor sideBarButtons component to fix button width and improve styling
♻️ (sidebarComponent): refactor sideBarFolderButtons component to fix folder name truncation and improve styling
♻️ (sidebarComponent): refactor sidebarNav component to fix className prop
♻️ (mainPage): refactor HomePage component to remove unnecessary parentheses and fix indentation

* 📝 (on-file-drop.tsx): import `useLocation` from `react-router-dom` to use location state in the component
♻️ (on-file-drop.tsx): refactor `useFlowsManagerStore` to `useFolderStore` to use the correct store for getting folder data
✨ (on-file-drop.tsx): add `location` and `folderId` variables to get the folder id from the location state
✨ (on-file-drop.tsx): call `getFolderById` function instead of `setAllFlows` to update the folder data after successful upload

* Implemented Dict modal on Cell Editor for objects

* ✨ (sideBarFolderButtons/index.tsx): add support for file drop functionality in the sidebar folder buttons component
📝 (use-on-file-drop.tsx): create a custom hook for handling file drop functionality in the sidebar component
📝 (componentsComponent/index.tsx): update import statement for the useFileDrop hook in the components component
📝 (use-delete-folder.tsx): create a custom hook for handling folder deletion in the MainPage component
📝 (use-dropdown-options.tsx): create a custom hook for generating dropdown options in the MainPage component

✨ (use-on-file-drop.tsx): add a new hook for handling file drop functionality in the MainPage component
✨ (index.tsx): update import paths for hooks in the MainPage component
♻️ (flowsManagerStore.ts): refactor the addFlow function to include a new parameter 'fromDragAndDrop' to differentiate between adding a flow from drag and drop or other methods
♻️ (foldersStore.tsx): refactor the folder store to include a new state 'folderDragging' to store the folder being dragged
♻️ (index.ts): refactor the types in the flowsManager and folders store to include the new 'fromDragAndDrop' parameter

* 📝 (App.tsx): Remove unnecessary line breaks and trailing commas for better code readability
♻️ (App.tsx): Refactor code to remove unused variables and dependencies
✨ (App.tsx): Add support for fetching folders on login and error handling
♻️ (popoverObject/index.tsx): Refactor code to remove unnecessary ternary operators and improve code readability
♻️ (foldersModal/component/index.tsx): Refactor code to improve code readability and consistency
♻️ (foldersModal/index.tsx): Refactor code to improve code readability and consistency

✨ (actionsMainPage.spec.ts): add end-to-end tests for selecting and deleting all items, and searching flows and components
✨ (folders.spec.ts): add end-to-end tests for CRUD operations on folders and adding a folder by drag and drop

* Refactor: Change the no data table screen to a better version

* refactor: Update ObjectRender component to display truncated object and provide option to see more

* style(objectRender): add hover effect to object render component for better user experience
style(tailwind.config.js): add slow-wiggle animation to tailwind config for smoother animation effect

* 📝 (inputComponent/index.tsx): remove unnecessary whitespace in className prop to improve code readability
📝 (inputComponent/index.tsx): update id prop value to include object id for better identification
📝 (inputComponent/index.tsx): update id prop value to include object id for better identification
📝 (inputComponent/index.tsx): remove unnecessary whitespace in className prop to improve code readability
📝 (inputComponent/index.tsx): remove unnecessary whitespace in className prop to improve code readability
📝 (inputComponent/index.tsx): remove unnecessary whitespace in className prop to improve code readability
📝 (inputComponent/index.tsx): remove unnecessary whitespace in className prop to improve code readability
📝 (inputComponent/index.tsx): remove unnecessary whitespace in className prop to improve code readability
📝 (inputComponent/index.tsx): remove unnecessary whitespace in className prop to improve code readability
📝 (inputComponent/index.tsx): remove unnecessary whitespace in className prop to improve code readability
📝 (inputComponent/index.tsx): remove unnecessary whitespace in className prop to improve code readability
📝 (inputComponent/index.tsx): remove unnecessary whitespace in className prop to improve code readability
📝 (sidebarComponent/components/sideBarButtons/index.tsx): remove unused item.icon prop
📝 (sidebarComponent/index.tsx): add isFolderPath variable to check if current path is a folder path
📝 (sidebarComponent/index.tsx): add isFolderPath variable to check if current path is a folder path
📝 (foldersModal/component/index.tsx): update id prop value for flow input component
📝 (foldersModal/component/index.tsx): update id prop value for component input component
📝 (end-to-end/actionsMainPage.spec.ts): update getByText assertions to include { exact: true } option for more accurate matching

✨ (chatInputOutput.spec.ts): update test case to improve readability and remove unnecessary characters in input text
📝 (chatInputOutput.spec.ts): update test case to improve readability and remove unnecessary characters in input text
✨ (chatInputOutput.spec.ts): update test case to improve readability and remove unnecessary characters in input text
📝 (chatInputOutput.spec.ts): update test case to improve readability and remove unnecessary characters in input text
📝 (chatInputOutput.spec.ts): update test case to improve readability and remove unnecessary characters in input text
📝 (chatInputOutput.spec.ts): update test case to improve readability and remove unnecessary characters in input text
📝 (chatInputOutput.spec.ts): update test case to improve readability and remove unnecessary characters in input text
📝 (chatInputOutput.spec.ts): update test case to improve readability and remove unnecessary characters in input text
📝 (chatInputOutput.spec.ts): update test case to improve readability and remove unnecessary characters in input text
📝 (chatInputOutput.spec.ts): update test case to improve readability and remove unnecessary characters in input text
📝 (chatInputOutput.spec.ts): update test case to improve readability and remove unnecessary characters in input text
📝 (chatInputOutput.spec.ts): update test case to improve readability and remove unnecessary characters in input text
📝 (chatInputOutput.spec.ts): update test case to improve readability and remove unnecessary characters in input text
📝 (chatInputOutput.spec.ts): update test case to improve readability and remove unnecessary characters in input text
📝 (chatInputOutput.spec.ts): update test case to improve readability and remove unnecessary characters in input text
📝 (chatInputOutput.spec.ts): update test case to improve readability and remove unnecessary characters in input text
📝 (chatInputOutput.spec.ts): update test case to improve readability and remove unnecessary characters in input text
📝 (chatInputOutput.spec.ts): update test case to improve readability and remove unnecessary characters in input text
📝 (chatInputOutput.spec.ts): update test case to improve readability and remove unnecessary characters in input text
📝 (chatInputOutput.spec.ts): update test case to improve readability and remove unnecessary characters in input text
📝 (chatInputOutput.spec.ts): update test case to improve readability and remove unnecessary characters in input text
📝 (chatInputOutput.spec.ts): update test case to improve readability and remove unnecessary characters in input text
📝 (chatInputOutput.spec.ts): update test case to improve readability and remove unnecessary characters in input text
📝 (chatInputOutput.spec.ts): update test case to improve readability and remove unnecessary characters in input text
📝 (chatInputOutput.spec.ts): update test case to improve readability and remove unnecessary characters in input text
📝 (chatInputOutput.spec.ts): update test case to improve readability and remove unnecessary characters in input text
📝 (chatInputOutput.spec.ts): update test case to improve readability and remove unnecessary characters in input text
📝 (chatInputOutput.spec.ts): update test case to improve readability and remove unnecessary characters in input text
📝 (chatInputOutput.spec.ts): update test case to improve readability and remove unnecessary characters in input text
📝 (chatInputOutput.spec.ts): update test case to improve readability and remove unnecessary characters in input text
📝 (chatInputOutput.spec.ts): update test case to improve readability and remove unnecessary characters in input text
📝 (chatInputOutput.spec.ts): update test case to improve readability and remove unnecessary characters in input text
📝 (chatInputOutput.spec.ts): update test case to improve readability and remove unnecessary characters in input text
📝 (chatInputOutput.spec.ts): update test case to improve readability and remove unnecessary characters in input text
📝 (chatInputOutput.spec.ts): update test case to improve readability and remove unnecessary characters in input text
📝 (chatInputOutput.spec.ts): update test case to improve readability and remove unnecessary characters in input text
📝 (chatInputOutput.spec.ts): update test case to improve readability and remove unnecessary characters in input text
📝 (chatInputOutput.spec.ts): update test case to improve readability and remove unnecessary characters in input text
📝 (chatInputOutput.spec.ts): update test case to improve readability and remove unnecessary characters in input text
📝 (chatInputOutput.spec.ts): update test case to improve readability and remove unnecessary characters in input text
📝 (chatInputOutput.spec.ts): update test case to improve readability and remove unnecessary characters in input text
📝 (chatInputOutput.spec.ts): update test case to improve readability and remove

✅ (nestedComponent.spec.ts): remove unnecessary code related to showpinecone_env checkbox
✅ (store.spec.ts): use environment variable STORE_API_KEY instead of hardcoding the API key

* 📝 (inputComponent/index.tsx): update id prop value to include "popover-anchor-" prefix for better identification and accessibility
✨ (sidebarComponent/components/sideBarButtons/index.tsx): add react-router-dom Link component to wrap each sidebar button item for navigation functionality
♻️ (sidebarComponent/index.tsx): refactor isFolderPath logic to use array of path values and check if any of them is included in the current pathname for better readability and maintainability

* Refactor: use shadcn alert when there is no data

* Remove unnecessary quotes

* Refactor: add border to no data alert

* Fix: record output not using table as it should

* 📝 (cardComponent/index.tsx): remove redundant "selected" from description prop in DeleteConfirmationModal component
📝 (componentsComponent/index.tsx): remove redundant "selected" from getDescriptionModal function

* ✨ (logs.spec.ts): add end-to-end test for viewing and interacting with logs in the frontend
📝 (logs.spec.ts): add documentation comments to improve code readability and maintainability

* 📝 (folders.py): add support for downloading all flows from a folder as a file
📝 (folders.py): add support for uploading flows from a file to a folder
✨ (index.tsx): add handleDownloadFolderFn utility function to handle downloading flows from a folder
✨ (index.tsx): add handleUploadFlowsToFolder function to handle uploading flows to a folder
📝 (services/index.ts): add downloadFlowsFromFolders function to make API call for downloading flows from a folder
📝 (services/index.ts): add uploadFlowsFromFolders function to make API call for uploading flows to a folder
📝 (handle-download-folder.ts): create handleDownloadFolderFn utility function to handle downloading flows from a folder

✨ (foldersStore.tsx): add support for uploading flows from folders
📝 (foldersStore.tsx): update types to include uploadFolder function in FoldersStoreType

* 📝 (folders.py): remove unnecessary whitespace to improve code readability
📝 (folders.py): remove unnecessary whitespace to improve code readability

* style: update CSS in App.css to improve scrollbar appearance
feat: add TableComponent to CsvOutputComponent for better table rendering
refactor: remove unused code and improve readability in CsvOutputComponent
refactor: simplify logic in TableAutoCellRender component
feat: add autoHeight property to columns in extractColumnsFromRows utility function

* 🐛 (folders.py): fix issue where components and flows were not being assigned to the new folder
🐛 (folders.py): fix issue where components and flows were not being assigned to the new folder
🐛 (sideBarFolderButtons/index.tsx): fix issue where folder buttons were not taking up full width
🐛 (use-on-file-drop.tsx): fix issue where folder dragging was not being reset on drag leave
🐛 (use-on-file-drop.tsx): fix issue where folder dragging was not being reset on drag leave
🐛 (use-on-file-drop.tsx): fix issue where folder dragging was not being reset on drag leave
🐛 (entities/index.tsx): fix issue where AddFolderType was missing flows and components properties
🐛 (services/index.ts): fix issue where addFolder function was not correctly sending flows and components data

* 📝 (model.py): remove unnecessary whitespace
📝 (index.tsx): remove unused 'pathname' prop
📝 (index.tsx): add 'handleAddFolder' prop to SideBarFoldersButtonsComponent
📝 (index.tsx): remove unused 'handleAddFolder' prop from SideBarButtonsComponent
📝 (index.tsx): remove unused import of DropdownButton in sideBarFolderButtons
📝 (index.tsx): add DropdownButton component to SideBarFoldersButtonsComponent
📝 (index.tsx): add 'handleAddFolder' prop to SideBarFoldersButtonsComponent
📝 (use-on-file-drop.tsx): remove console.log statements
📝 (index.tsx): remove console.log statements
📝 (index.tsx): remove unused import of FolderPlusIcon in mainPage
📝 (index.tsx): remove unused sidebarNavItems array in mainPage

* Refactor: make select all look more like a button

* feat: Add first step of drag and drop functionality to CollectionCardComponent

* 📝 (langflow-pre.db): add new langflow-pre.db file to the backend/base/langflow directory
✨ (index.tsx): improve modal header description by dynamically displaying "Edit a folder" or "Add a new folder" based on the presence of folderToEdit prop

* remove api key

* remove api key

* remove api key

* Refactor: Update downloadFlowsFromFolders function to include folder name in response

* add type to folder function

* Refactor: Update chatComponent and sideBarFolderButtons components

This commit refactors the chatComponent and sideBarFolderButtons components.

In chatComponent:
- Moved the declaration of the 'currentFlow' variable to ensure it is defined before being used.
- Removed the unused 'hasIO' and 'hasStore' variables.
- Reordered the imports for better organization.

In sideBarFolderButtons:
- Added imports for 'useStoreStore' and 'ShadTooltip' components.
- Removed the unused 'hasStore', 'validApiKey', and 'hasApiKey' variables.
- Removed the unused 'handleEditFolder' function.
- Added a new button with an icon for sharing as a bundle, with a tooltip indicating the need to review the API key before sharing.

These changes improve the code structure and remove unused code, enhancing the overall maintainability and user experience of the application.

* copy folder modal structure to start bundle modal

* new lock

* refactor: Move no data alert rendering logic to a separate function

* refactor: Move no data alert rendering logic to a separate function

* add truncate to json objects

* Refactor: store flow_id in ChatComponent's records in ChatComponent

* 📝 (folders.py): add missing import for FolderBase model
🐛 (folders.py): fix issue where flows were not being fetched for a folder
🐛 (folders.py): fix issue where flows were not being deleted when a folder is deleted
🐛 (folders.py): fix issue where folder description was not being returned when downloading flows
✨ (folders.py): add support for uploading flows from a file
🐛 (schemas.py): fix issue where folder description was not included in FlowListReadWithFolderName schema
♻️ (sideBarButtons/index.tsx): refactor handleOpenNewFolderModal prop to be optional

✨ (sideBarFolderButtons/index.tsx): make handleChangeFolder, handleEditFolder, handleDeleteFolder, handleAddFolder optional to improve component reusability
♻️ (sideBarFolderButtons/index.tsx): refactor useFileDrop hook to use async/await syntax and separate file upload logic into a separate function
✨ (sideBarFolderButtons/index.tsx): add support for uploading flows from folders using the uploadFlowsFromFolders API
♻️ (sideBarFolderButtons/index.tsx): refactor handleFileDrop function to handle multiple files and use FormData to send file data to the server
♻️ (sideBarFolderButtons/index.tsx): refactor dragOver, dragEnter, dragLeave, and onDrop functions to remove unnecessary folderId parameter and set folderDragging state to a boolean value instead of an empty string

📝 (sidebarComponent/index.tsx): make handleOpenNewFolderModal, handleChangeFolder, handleEditFolder, handleDeleteFolder optional to allow flexibility in using the component
📝 (foldersModal/component/index.tsx): add allFlows variable to get all flows from the store and use it to filter components and flows on the folder being edited
📝 (foldersModal/hooks/submit-folder.tsx): import useNavigate from react-router-dom and use it to navigate to the folder page after creating or updating a folder
📝 (pages/MainPage/entities/index.tsx): add StarterProjectsType to define the type of starter projects
📝 (pages/MainPage/pages/mainPage/index.tsx): import useAlertStore from stores/alertStore and use it to set error data when trying to download an empty folder

📝 (services/index.ts): add StarterProjectsType import to support the new entity in the code
📝 (services/index.ts): add return type to updateFolder function to improve code clarity
📝 (services/index.ts): add return type to getFolderById function to improve code clarity
📝 (services/index.ts): add return type to getStarterProjects function to improve code clarity
📝 (services/index.ts): add folder_description property to the return type of downloadFlowsFromFolders function to provide additional information about the folder
📝 (services/index.ts): remove folderId parameter from uploadFlowsFromFolders function as it is not needed
📝 (utils/handle-download-folder.ts): add folder_name and folder_description properties to the data object to provide additional information about the folder being downloaded
📝 (SettingsPage/index.tsx): remove commented out code for unused settings options
📝 (stores/flowsManagerStore.ts): add missing comma in setCurrentFlowId function
📝 (stores/flowsManagerStore.ts): add return type to saveFlow function to improve code clarity
📝 (stores/flowsManagerStore.ts): add return type to updateFlow function to improve code clarity
📝 (stores/flowsManagerStore.ts): add return type to addFlow function to improve code clarity
📝 (stores/flowsManagerStore.ts): add return type to deleteFlow function to improve code clarity
📝 (stores/flowsManagerStore.ts): add return type to addFlowComponent function to improve code clarity
📝 (stores/flowsManagerStore.ts): add return type to takeSnapshot function to improve code clarity
📝 (stores/flowsManagerStore.ts): add return type to undo function to improve code clarity
📝 (stores/flowsManagerStore.ts): add return type to redo function to improve code clarity

♻️ (foldersStore.tsx): change folderDragging variable type from string to boolean to improve semantics and consistency
♻️ (foldersStore.tsx): remove unused folderId parameter from uploadFolder function
♻️ (foldersStore.tsx): remove unused setAllFlows function call
♻️ (folders/index.ts): change folderDragging variable type from string to boolean to match the updated type in foldersStore.tsx

* 🐛 (folders.py): fix indentation and remove unnecessary whitespace
✨ (folders.py): add logic to handle duplicate folder names by appending a number to the folder name
📝 (folders.py): update comments and documentation

* 🐛 (submit-folder.tsx): remove unnecessary comma after closing curly brace in error handling function
…
  • Loading branch information
6 people committed May 21, 2024
1 parent eb60b03 commit dd5bad0
Show file tree
Hide file tree
Showing 175 changed files with 6,454 additions and 2,969 deletions.
2 changes: 1 addition & 1 deletion Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -141,7 +141,7 @@ backend:
@echo 'Setting up the environment'
@make setup_env
make install_backend
@-kill -9 `lsof -t -i:7860`
@-kill -9 $(lsof -t -i:7860)
ifdef login
@echo "Running backend autologin is $(login)";
LANGFLOW_AUTO_LOGIN=$(login) poetry run uvicorn --factory langflow.main:create_app --host 0.0.0.0 --port 7860 --reload --env-file .env --loop asyncio
Expand Down
18 changes: 8 additions & 10 deletions docs/docs/contributing/contribute-component.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ You have a new document loader called **MyCustomDocumentLoader** and it would lo
6. Add the dependency to [/documentloaders/\_\_init\_\_.py](https://github.com/langflow-ai/langflow/blob/dev/src/backend/base/langflow/components/documentloaders/__init__.py) as `from .MyCustomDocumentLoader import MyCustomDocumentLoader`.
7. Add any new dependencies to the outer [pyproject.toml](https://github.com/langflow-ai/langflow/blob/dev/pyproject.toml#L27) file.
8. Submit documentation for your component. For this example, you'd submit documentation to the [loaders page](https://github.com/langflow-ai/langflow/blob/dev/docs/docs/components/loaders.mdx).
8. Submit your changes as a pull request. The Langflow team will have a look, suggest changes, and add your component to Langflow.
9. Submit your changes as a pull request. The Langflow team will have a look, suggest changes, and add your component to Langflow.

## User Sharing

Expand All @@ -27,21 +27,19 @@ If so, you can share your component on the Langflow store.
1. [Register at the Langflow store](https://www.langflow.store/login/).
2. Undergo pre-validation before receiving an API key.
3. To deploy your amazing component directly to the Langflow store, without it being merged into the main source code, navigate to your flow, and then click **Share**.
The share window appears:
The share window appears:

<ZoomableImage
alt="Docusaurus themed image"
sources={{
alt="Docusaurus themed image"
sources={{
light: "img/add-component-to-store.png",
dark: "img/add-component-to-store.png",
}}
style={{ width: "50%", margin: "20px auto" }}
style={{ width: "50%", margin: "20px auto" }}
/>

5. Choose whether you want to flow to be public or private.
You can also **Export** your flow as a JSON file from this window.
When you're ready to share the flow, click **Share Flow**.
You should see a **Flow shared successfully** popup.
You can also **Export** your flow as a JSON file from this window.
When you're ready to share the flow, click **Share Flow**.
You should see a **Flow shared successfully** popup.
6. To confirm, navigate to the **Langflow Store** and filter results by **Created By Me**. You should see your new flow on the **Langflow Store**.


191 changes: 151 additions & 40 deletions example.har

Large diffs are not rendered by default.

358 changes: 217 additions & 141 deletions poetry.lock

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion pyproject.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[tool.poetry]
name = "langflow"
version = "1.0.0a34"
version = "1.0.0a35"
description = "A Python package with a built-in web application"
authors = ["Langflow <contact@langflow.org>"]
maintainers = [
Expand Down
40 changes: 23 additions & 17 deletions scripts/aws/lib/construct/db.ts
Original file line number Diff line number Diff line change
@@ -1,27 +1,30 @@
import { Construct } from 'constructs';
import * as ec2 from 'aws-cdk-lib/aws-ec2'
import { Construct } from "constructs";
import * as ec2 from "aws-cdk-lib/aws-ec2";
import * as rds from "aws-cdk-lib/aws-rds";
import * as cdk from 'aws-cdk-lib';
import * as cdk from "aws-cdk-lib";

interface RdsProps {
vpc: ec2.Vpc
dbSG:ec2.SecurityGroup
vpc: ec2.Vpc;
dbSG: ec2.SecurityGroup;
}

export class Rds extends Construct{
readonly rdsCluster: rds.DatabaseCluster
export class Rds extends Construct {
readonly rdsCluster: rds.DatabaseCluster;

constructor(scope: Construct, id:string, props: RdsProps){
constructor(scope: Construct, id: string, props: RdsProps) {
super(scope, id);

const {vpc, dbSG} = props
const instanceType = ec2.InstanceType.of(ec2.InstanceClass.BURSTABLE4_GRAVITON, ec2.InstanceSize.MEDIUM)
const { vpc, dbSG } = props;
const instanceType = ec2.InstanceType.of(
ec2.InstanceClass.BURSTABLE4_GRAVITON,
ec2.InstanceSize.MEDIUM
);

// RDSのパスワードを自動生成してSecrets Managerに格納
const rdsCredentials = rds.Credentials.fromGeneratedSecret('db_user',{
secretName: 'langflow-DbSecret',
})
const rdsCredentials = rds.Credentials.fromGeneratedSecret("db_user", {
secretName: "langflow-DbSecret",
});

// DB クラスターのパラメータグループ作成
const clusterParameterGroup = new rds.ParameterGroup(
scope,
Expand All @@ -36,20 +39,23 @@ export class Rds extends Construct{
description: "for-langflow",
}
);
clusterParameterGroup.bindToCluster({})
clusterParameterGroup.bindToCluster({});

// DB インスタンスのパラメタグループ作成
const instanceParameterGroup = new rds.ParameterGroup(
scope,
"InstanceParameterGroup",
{
engine: rds.DatabaseClusterEngine.auroraMysql({
version: rds.AuroraMysqlEngineVersion.of("8.0.mysql_aurora.3.05.2", '8.0'),
version: rds.AuroraMysqlEngineVersion.of(
"8.0.mysql_aurora.3.05.2",
"8.0"
),
}),
description: "for-langflow",
}
);
instanceParameterGroup.bindToInstance({})
instanceParameterGroup.bindToInstance({});

this.rdsCluster = new rds.DatabaseCluster(scope, "LangflowDbCluster", {
engine: rds.DatabaseClusterEngine.auroraMysql({
Expand Down
11 changes: 9 additions & 2 deletions src/backend/base/langflow/__main__.py
Original file line number Diff line number Diff line change
Expand Up @@ -17,8 +17,10 @@
from rich.console import Console
from rich.panel import Panel
from rich.table import Table
from sqlmodel import select

from langflow.main import setup_app
from langflow.services.database.models.folder.utils import create_default_folder_if_it_doesnt_exist
from langflow.services.database.utils import session_getter
from langflow.services.deps import get_db_service
from langflow.services.utils import initialize_services
Expand Down Expand Up @@ -432,11 +434,16 @@ def superuser(
# Verify that the superuser was created
from langflow.services.database.models.user.model import User

user: User = session.query(User).filter(User.username == username).first()
user: User = session.exec(select(User).where(User.username == username)).first()
if user is None or not user.is_superuser:
typer.echo("Superuser creation failed.")
return

# Now create the first folder for the user
result = create_default_folder_if_it_doesnt_exist(session, user.id)
if result:
typer.echo("Default folder created successfully.")
else:
raise RuntimeError("Could not create default folder.")
typer.echo("Superuser created successfully.")

else:
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,78 @@
"""Add Folder table
Revision ID: 012fb73ac359
Revises: c153816fd85f
Create Date: 2024-05-07 12:52:16.954691
"""

from typing import Sequence, Union

import sqlalchemy as sa
import sqlmodel
from alembic import op
from sqlalchemy.engine.reflection import Inspector

# revision identifiers, used by Alembic.
revision: str = "012fb73ac359"
down_revision: Union[str, None] = "c153816fd85f"
branch_labels: Union[str, Sequence[str], None] = None
depends_on: Union[str, Sequence[str], None] = None


def upgrade() -> None:
conn = op.get_bind()
inspector = Inspector.from_engine(conn) # type: ignore
table_names = inspector.get_table_names()
# ### commands auto generated by Alembic - please adjust! ###
if "folder" not in table_names:
op.create_table(
"folder",
sa.Column("name", sqlmodel.sql.sqltypes.AutoString(), nullable=False),
sa.Column("description", sqlmodel.sql.sqltypes.AutoString(), nullable=True),
sa.Column("id", sqlmodel.sql.sqltypes.GUID(), nullable=False),
sa.Column("parent_id", sqlmodel.sql.sqltypes.GUID(), nullable=True),
sa.Column("user_id", sqlmodel.sql.sqltypes.GUID(), nullable=True),
sa.ForeignKeyConstraint(
["parent_id"],
["folder.id"],
),
sa.ForeignKeyConstraint(
["user_id"],
["user.id"],
),
sa.PrimaryKeyConstraint("id"),
)
indexes = inspector.get_indexes("folder")
if "ix_folder_name" not in [index["name"] for index in indexes]:
with op.batch_alter_table("folder", schema=None) as batch_op:
batch_op.create_index(batch_op.f("ix_folder_name"), ["name"], unique=False)

if "folder_id" not in inspector.get_columns("flow"):
with op.batch_alter_table("flow", schema=None) as batch_op:
batch_op.add_column(sa.Column("folder_id", sqlmodel.sql.sqltypes.GUID(), nullable=True))
batch_op.create_foreign_key("flow_folder_id_fkey", "folder", ["folder_id"], ["id"])
batch_op.drop_column("folder")

# ### end Alembic commands ###


def downgrade() -> None:
conn = op.get_bind()
inspector = Inspector.from_engine(conn) # type: ignore
table_names = inspector.get_table_names()
# ### commands auto generated by Alembic - please adjust! ###
if "folder_id" in inspector.get_columns("flow"):
with op.batch_alter_table("flow", schema=None) as batch_op:
batch_op.add_column(sa.Column("folder", sa.VARCHAR(), nullable=True))
batch_op.drop_constraint("flow_folder_id_fkey", type_="foreignkey")
batch_op.drop_column("folder_id")

indexes = inspector.get_indexes("folder")
if "ix_folder_name" in [index["name"] for index in indexes]:
with op.batch_alter_table("folder", schema=None) as batch_op:
batch_op.drop_index(batch_op.f("ix_folder_name"))

if "folder" in table_names:
op.drop_table("folder")
# ### end Alembic commands ###
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
"""Add missing index
Revision ID: 29fe8f1f806b
Revises: 012fb73ac359
Create Date: 2024-05-21 09:23:48.772367
"""

from typing import Sequence, Union

from alembic import op
from sqlalchemy.engine.reflection import Inspector

revision: str = "29fe8f1f806b"
down_revision: Union[str, None] = "012fb73ac359"
branch_labels: Union[str, Sequence[str], None] = None
depends_on: Union[str, Sequence[str], None] = None


def upgrade() -> None:
conn = op.get_bind()
inspector = Inspector.from_engine(conn) # type: ignore
# ### commands auto generated by Alembic - please adjust! ###
indexes = inspector.get_indexes("flow")
with op.batch_alter_table("flow", schema=None) as batch_op:
indexes_names = [index["name"] for index in indexes]
if "ix_flow_folder_id" not in indexes_names:
batch_op.create_index(batch_op.f("ix_flow_folder_id"), ["folder_id"], unique=False)

# ### end Alembic commands ###


def downgrade() -> None:
conn = op.get_bind()
inspector = Inspector.from_engine(conn) # type: ignore
# ### commands auto generated by Alembic - please adjust! ###
indexes = inspector.get_indexes("flow")
with op.batch_alter_table("flow", schema=None) as batch_op:
indexes_names = [index["name"] for index in indexes]
if "ix_flow_folder_id" in indexes_names:
batch_op.drop_index(batch_op.f("ix_flow_folder_id"))

# ### end Alembic commands ###
2 changes: 2 additions & 0 deletions src/backend/base/langflow/api/router.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@
users_router,
validate_router,
variables_router,
folders_router,
)

router = APIRouter(
Expand All @@ -29,3 +30,4 @@
router.include_router(variables_router)
router.include_router(files_router)
router.include_router(monitor_router)
router.include_router(folders_router)
2 changes: 2 additions & 0 deletions src/backend/base/langflow/api/v1/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
from langflow.api.v1.users import router as users_router
from langflow.api.v1.validate import router as validate_router
from langflow.api.v1.variable import router as variables_router
from langflow.api.v1.folders import router as folders_router

__all__ = [
"chat_router",
Expand All @@ -22,4 +23,5 @@
"variables_router",
"monitor_router",
"files_router",
"folders_router",
]
4 changes: 2 additions & 2 deletions src/backend/base/langflow/api/v1/chat.py
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@
from langflow.services.monitor.utils import log_vertex_build

if TYPE_CHECKING:
from langflow.graph.vertex.types import ChatVertex
from langflow.graph.vertex.types import InterfaceVertex
from langflow.services.session.service import SessionService

router = APIRouter(tags=["Chat"])
Expand Down Expand Up @@ -288,7 +288,7 @@ async def stream_vertex():
if not graph:
raise ValueError(f"No graph found for {flow_id}.")

vertex: "ChatVertex" = graph.get_vertex(vertex_id)
vertex: "InterfaceVertex" = graph.get_vertex(vertex_id)
if not hasattr(vertex, "stream"):
raise ValueError(f"Vertex {vertex_id} does not support streaming")
if isinstance(vertex._built_result, str) and vertex._built_result:
Expand Down
2 changes: 1 addition & 1 deletion src/backend/base/langflow/api/v1/endpoints.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
import sqlalchemy as sa
from fastapi import APIRouter, Body, Depends, HTTPException, UploadFile, status
from loguru import logger
from sqlmodel import Session, select
from sqlmodel import Session, col, select

from langflow.api.utils import update_frontend_node_with_template_values
from langflow.api.v1.schemas import (
Expand Down
Loading

0 comments on commit dd5bad0

Please sign in to comment.