From b76141b3df9174c474e0eb89b406ac8aca7ae23f Mon Sep 17 00:00:00 2001 From: Gabriel Luiz Freitas Almeida Date: Tue, 25 Jul 2023 17:12:48 -0300 Subject: [PATCH 1/8] =?UTF-8?q?=F0=9F=94=84=20refactor(custom=5Fcomponent.?= =?UTF-8?q?py):=20rename=20list=5Fflow=5Fnames=20method=20to=20list=5Fflow?= =?UTF-8?q?s=20for=20better=20clarity=20and=20consistency=20=F0=9F=90=9B?= =?UTF-8?q?=20fix(custom=5Fcomponent.py):=20fix=20return=20value=20of=20li?= =?UTF-8?q?st=5Fflows=20method=20to=20return=20the=20actual=20flow=20objec?= =?UTF-8?q?ts=20instead=20of=20just=20their=20names=20=F0=9F=94=A5=20chore?= =?UTF-8?q?(custom=5Fcomponent.py):=20remove=20unused=20build=20method=20a?= =?UTF-8?q?s=20it=20is=20not=20implemented?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/backend/langflow/interface/custom/custom_component.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/backend/langflow/interface/custom/custom_component.py b/src/backend/langflow/interface/custom/custom_component.py index 79ca64bdc..1cc0ca620 100644 --- a/src/backend/langflow/interface/custom/custom_component.py +++ b/src/backend/langflow/interface/custom/custom_component.py @@ -147,10 +147,10 @@ class CustomComponent(Component, extra=Extra.allow): raise ValueError(f"Flow {flow_id} not found") return build_sorted_vertices_with_caching(data_graph) - def list_flow_names(self): + def list_flows(self): with session_getter() as session: flows = session.query(Flow).all() - return [flow.name for flow in flows] + return flows def build(self): raise NotImplementedError From 19c714a7d52bc9d4d5dd890129b7500815e1b974 Mon Sep 17 00:00:00 2001 From: Lucas Oliveira Date: Tue, 25 Jul 2023 17:14:12 -0300 Subject: [PATCH 2/8] Added Beta badge --- src/frontend/src/CustomNodes/GenericNode/index.tsx | 6 ++++++ src/frontend/src/index.css | 2 +- src/frontend/src/types/api/index.ts | 3 ++- 3 files changed, 9 insertions(+), 2 deletions(-) diff --git a/src/frontend/src/CustomNodes/GenericNode/index.tsx b/src/frontend/src/CustomNodes/GenericNode/index.tsx index 9c933dcf7..2a264a59c 100644 --- a/src/frontend/src/CustomNodes/GenericNode/index.tsx +++ b/src/frontend/src/CustomNodes/GenericNode/index.tsx @@ -4,6 +4,7 @@ import { NodeToolbar, useUpdateNodeInternals } from "reactflow"; import ShadTooltip from "../../components/ShadTooltipComponent"; import Tooltip from "../../components/TooltipComponent"; import IconComponent from "../../components/genericIconComponent"; +import { Badge } from "../../components/ui/badge"; import { useSSE } from "../../contexts/SSEContext"; import { alertContext } from "../../contexts/alertContext"; import { TabsContext } from "../../contexts/tabsContext"; @@ -111,6 +112,11 @@ export default function GenericNode({
+ {data.node.beta && ( + + Beta + + )}
; output_types?: Array; + beta?: boolean; documentation: string; - [key: string]: Array | string | APITemplateType; + [key: string]: Array | string | APITemplateType | boolean; }; export type TemplateVariableType = { From 74e263811bf23aef5af7f8add8626e438964abda Mon Sep 17 00:00:00 2001 From: Gabriel Luiz Freitas Almeida Date: Tue, 25 Jul 2023 17:22:02 -0300 Subject: [PATCH 3/8] =?UTF-8?q?=F0=9F=94=A8=20refactor(types.py):=20import?= =?UTF-8?q?=20CustomComponentFrontendNode=20from=20custom=5Fcomponents=20m?= =?UTF-8?q?odule=20to=20improve=20code=20organization=20and=20readability?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 🔨 refactor(types.py): change usage of CustomComponentNode to CustomComponentFrontendNode to align with updated module structure 🔨 refactor(frontend_node/base.py): add beta flag to FrontendNode class to indicate if a node is in beta stage 🔨 refactor(custom_components.py): add beta flag to CustomComponentFrontendNode class to indicate it is in beta stage 🔨 refactor(tools.py): remove unused import of DEFAULT_CUSTOM_COMPONENT_CODE 🔨 refactor(tools.py): remove CustomComponentNode class as it is no longer used --- src/backend/langflow/interface/types.py | 8 ++++-- .../langflow/template/frontend_node/base.py | 1 + .../frontend_node/custom_components.py | 1 + .../langflow/template/frontend_node/tools.py | 26 ------------------- 4 files changed, 8 insertions(+), 28 deletions(-) diff --git a/src/backend/langflow/interface/types.py b/src/backend/langflow/interface/types.py index eaaa47f2b..c81be082b 100644 --- a/src/backend/langflow/interface/types.py +++ b/src/backend/langflow/interface/types.py @@ -18,7 +18,9 @@ from langflow.interface.custom.base import custom_component_creator from langflow.interface.custom.custom_component import CustomComponent from langflow.template.field.base import TemplateField -from langflow.template.frontend_node.tools import CustomComponentNode +from langflow.template.frontend_node.custom_components import ( + CustomComponentFrontendNode, +) from langflow.interface.retrievers.base import retriever_creator from langflow.interface.custom.directory_reader import DirectoryReader @@ -160,7 +162,9 @@ def extract_type_from_optional(field_type): def build_langchain_template_custom_component(custom_component: CustomComponent): # Build base "CustomComponent" template - frontend_node = CustomComponentNode().to_dict().get(type(custom_component).__name__) + frontend_node = ( + CustomComponentFrontendNode().to_dict().get(type(custom_component).__name__) + ) function_args = custom_component.get_function_entrypoint_args return_type = custom_component.get_function_entrypoint_return_type diff --git a/src/backend/langflow/template/frontend_node/base.py b/src/backend/langflow/template/frontend_node/base.py index d6d9f911a..c78b6b913 100644 --- a/src/backend/langflow/template/frontend_node/base.py +++ b/src/backend/langflow/template/frontend_node/base.py @@ -52,6 +52,7 @@ class FrontendNode(BaseModel): custom_fields: defaultdict = defaultdict(list) output_types: List[str] = [] field_formatters: FieldFormatters = Field(default_factory=FieldFormatters) + beta: bool = False # field formatters is an instance attribute but it is not used in the class # so we need to create a method to get it diff --git a/src/backend/langflow/template/frontend_node/custom_components.py b/src/backend/langflow/template/frontend_node/custom_components.py index 8a3474d24..4f36a1c9f 100644 --- a/src/backend/langflow/template/frontend_node/custom_components.py +++ b/src/backend/langflow/template/frontend_node/custom_components.py @@ -7,6 +7,7 @@ from langflow.interface.custom.constants import DEFAULT_CUSTOM_COMPONENT_CODE class CustomComponentFrontendNode(FrontendNode): name: str = "CustomComponent" display_name: str = "Custom Component" + beta: bool = True template: Template = Template( type_name="CustomComponent", fields=[ diff --git a/src/backend/langflow/template/frontend_node/tools.py b/src/backend/langflow/template/frontend_node/tools.py index d23033b35..579b32da3 100644 --- a/src/backend/langflow/template/frontend_node/tools.py +++ b/src/backend/langflow/template/frontend_node/tools.py @@ -1,4 +1,3 @@ -from langflow.interface.custom.constants import DEFAULT_CUSTOM_COMPONENT_CODE from langflow.template.field.base import TemplateField from langflow.template.frontend_node.base import FrontendNode from langflow.template.template.base import Template @@ -140,28 +139,3 @@ class PythonFunctionNode(FrontendNode): def to_dict(self): return super().to_dict() - - -class CustomComponentNode(FrontendNode): - name: str = "CustomComponent" - template: Template = Template( - type_name="CustomComponent", - fields=[ - TemplateField( - field_type="code", - required=True, - placeholder="", - is_list=False, - show=True, - value=DEFAULT_CUSTOM_COMPONENT_CODE, - name="code", - advanced=False, - dynamic=True, - ) - ], - ) - description: str = "Python Class to be executed." - base_classes: list[str] = [] - - def to_dict(self): - return super().to_dict() From 6749fb4475de9e6d09b1ff01404b9d8a6a9aef6e Mon Sep 17 00:00:00 2001 From: Lucas Oliveira Date: Tue, 25 Jul 2023 17:30:03 -0300 Subject: [PATCH 4/8] Changed disposition of Beta div --- .../src/CustomNodes/GenericNode/index.tsx | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/src/frontend/src/CustomNodes/GenericNode/index.tsx b/src/frontend/src/CustomNodes/GenericNode/index.tsx index 2a264a59c..be16bc159 100644 --- a/src/frontend/src/CustomNodes/GenericNode/index.tsx +++ b/src/frontend/src/CustomNodes/GenericNode/index.tsx @@ -4,7 +4,6 @@ import { NodeToolbar, useUpdateNodeInternals } from "reactflow"; import ShadTooltip from "../../components/ShadTooltipComponent"; import Tooltip from "../../components/TooltipComponent"; import IconComponent from "../../components/genericIconComponent"; -import { Badge } from "../../components/ui/badge"; import { useSSE } from "../../contexts/SSEContext"; import { alertContext } from "../../contexts/alertContext"; import { TabsContext } from "../../contexts/tabsContext"; @@ -96,6 +95,15 @@ export default function GenericNode({ "generic-node-div" )} > +
+ {data.node.beta && ( +
+
+ BETA +
+
+ )} +
- {data.node.beta && ( - - Beta - - )}
Date: Tue, 25 Jul 2023 17:38:24 -0300 Subject: [PATCH 5/8] Changed color --- src/frontend/src/CustomNodes/GenericNode/index.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/frontend/src/CustomNodes/GenericNode/index.tsx b/src/frontend/src/CustomNodes/GenericNode/index.tsx index be16bc159..fe427dc97 100644 --- a/src/frontend/src/CustomNodes/GenericNode/index.tsx +++ b/src/frontend/src/CustomNodes/GenericNode/index.tsx @@ -98,7 +98,7 @@ export default function GenericNode({
{data.node.beta && (
-
+
BETA
From 11bad4d07df74af7e995bb5c45f915fb43241be6 Mon Sep 17 00:00:00 2001 From: Lucas Oliveira Date: Tue, 25 Jul 2023 17:43:51 -0300 Subject: [PATCH 6/8] Added classes to index.css --- src/frontend/src/CustomNodes/GenericNode/index.tsx | 14 +++++--------- src/frontend/src/index.css | 7 ++++++- 2 files changed, 11 insertions(+), 10 deletions(-) diff --git a/src/frontend/src/CustomNodes/GenericNode/index.tsx b/src/frontend/src/CustomNodes/GenericNode/index.tsx index fe427dc97..95fd70a7e 100644 --- a/src/frontend/src/CustomNodes/GenericNode/index.tsx +++ b/src/frontend/src/CustomNodes/GenericNode/index.tsx @@ -95,15 +95,11 @@ export default function GenericNode({ "generic-node-div" )} > -
- {data.node.beta && ( -
-
- BETA -
-
- )} -
+ {data.node.beta && ( +
+
BETA
+
+ )}
Date: Tue, 25 Jul 2023 17:49:30 -0300 Subject: [PATCH 7/8] =?UTF-8?q?=F0=9F=94=80=20chore(base.py):=20add=20"bet?= =?UTF-8?q?a"=20field=20to=20the=20serialized=20representation=20of=20Fron?= =?UTF-8?q?tendNode=20class=20=F0=9F=93=9D=20docs(base.py):=20update=20doc?= =?UTF-8?q?umentation=20for=20FrontendNode=20class=20to=20include=20inform?= =?UTF-8?q?ation=20about=20the=20"beta"=20field?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/backend/langflow/template/frontend_node/base.py | 1 + 1 file changed, 1 insertion(+) diff --git a/src/backend/langflow/template/frontend_node/base.py b/src/backend/langflow/template/frontend_node/base.py index c78b6b913..dcd9a58a0 100644 --- a/src/backend/langflow/template/frontend_node/base.py +++ b/src/backend/langflow/template/frontend_node/base.py @@ -84,6 +84,7 @@ class FrontendNode(BaseModel): "custom_fields": self.custom_fields, "output_types": self.output_types, "documentation": self.documentation, + "beta": self.beta, }, } From f35cbde38ab288035e33ca4b19728afb7d8eeaa9 Mon Sep 17 00:00:00 2001 From: Lucas Oliveira Date: Tue, 25 Jul 2023 17:56:02 -0300 Subject: [PATCH 8/8] Changed color to specific one --- src/frontend/src/index.css | 8 +++++++- src/frontend/tailwind.config.js | 2 ++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/src/frontend/src/index.css b/src/frontend/src/index.css index c882ab6ea..4e1356873 100644 --- a/src/frontend/src/index.css +++ b/src/frontend/src/index.css @@ -43,6 +43,9 @@ --chat-bot-icon: #afe6ef; --chat-user-icon: #aface9; + --beta-background: rgb(219 234 254); + --beta-foreground: rgb(37 99 235); + /* Colors that are shared in dark and light mode */ --blur-shared: #151923de; --build-trigger: #dc735b; @@ -101,6 +104,9 @@ --high-indigo: #4338ca; --medium-indigo: #6366f1; + --beta-background: rgb(37 99 235); + --beta-foreground: rgb(219 234 254); + /* Colors that are shared in dark and light mode */ --blur-shared: #151923d2; --build-trigger: #dc735b; @@ -1115,7 +1121,7 @@ The cursor: default; property value restores the browser's default cursor style @apply absolute right-0 top-0 h-16 w-16 overflow-hidden rounded-tr-lg; } .beta-badge-content { - @apply mt-2 w-24 rotate-45 bg-status-blue text-center text-xs font-semibold text-destructive-foreground + @apply mt-2 w-24 rotate-45 bg-beta-background text-center text-xs font-semibold text-beta-foreground } .export-modal-save-api { @apply font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70; diff --git a/src/frontend/tailwind.config.js b/src/frontend/tailwind.config.js index cdc5af220..1dc51433e 100644 --- a/src/frontend/tailwind.config.js +++ b/src/frontend/tailwind.config.js @@ -69,6 +69,8 @@ module.exports = { "status-yellow": "var(--status-yellow)", "success-background": "var(--success-background)", "success-foreground": "var(--success-foreground)", + "beta-background": "var(--beta-background)", + "beta-foreground": "var(--beta-foreground)", "chat-bot-icon": "var(--chat-bot-icon)", "chat-user-icon": "var(--chat-user-icon)",