From 972fd919b47911e288b5a4429f90b0d1888d1cb5 Mon Sep 17 00:00:00 2001 From: balibabu Date: Thu, 19 Jun 2025 19:23:16 +0800 Subject: [PATCH] Feat: Deleting the last tool of the agent will delete the tool node #3221 (#8376) ### What problem does this PR solve? Feat: Deleting the last tool of the agent will delete the tool node #3221 ### Type of change - [x] New Feature (non-breaking change which adds functionality) --- web/src/pages/agent/canvas/node/tool-node.tsx | 16 ++++-- .../agent/form/agent-form/agent-tools.tsx | 53 +++++++++++++++++++ web/src/pages/agent/form/agent-form/index.tsx | 28 +++++----- .../form/agent-form/tool-popover/index.tsx | 29 +++++----- .../tool-popover/use-update-tools.ts | 48 +++++++++++++++-- .../form/agent-form/use-delete-tool-node.ts | 24 +++++++++ .../agent/form/agent-form/use-get-tools.ts | 15 ++++++ .../pages/agent/form/agent-form/use-values.ts | 47 +--------------- .../pages/agent/form/tavily-form/index.tsx | 4 +- .../pages/agent/form/tool-form/constant.ts | 36 +++++++++++++ web/src/pages/agent/form/tool-form/index.tsx | 19 +++++-- web/src/pages/agent/hooks/use-add-node.ts | 4 +- web/src/pages/agent/hooks/use-show-drawer.tsx | 10 ++-- web/src/pages/agent/store.ts | 6 +++ 14 files changed, 245 insertions(+), 94 deletions(-) create mode 100644 web/src/pages/agent/form/agent-form/agent-tools.tsx create mode 100644 web/src/pages/agent/form/agent-form/use-delete-tool-node.ts create mode 100644 web/src/pages/agent/form/agent-form/use-get-tools.ts create mode 100644 web/src/pages/agent/form/tool-form/constant.ts diff --git a/web/src/pages/agent/canvas/node/tool-node.tsx b/web/src/pages/agent/canvas/node/tool-node.tsx index 0305d15e9..ba3f621be 100644 --- a/web/src/pages/agent/canvas/node/tool-node.tsx +++ b/web/src/pages/agent/canvas/node/tool-node.tsx @@ -1,8 +1,9 @@ import { IAgentForm, IToolNode } from '@/interfaces/database/agent'; import { Handle, NodeProps, Position } from '@xyflow/react'; import { get } from 'lodash'; -import { memo } from 'react'; +import { memo, useCallback } from 'react'; import { NodeHandleId } from '../../constant'; +import { ToolCard } from '../../form/agent-form/agent-tools'; import useGraphStore from '../../store'; import { NodeWrapper } from './node-wrapper'; @@ -16,6 +17,8 @@ function InnerToolNode({ const upstreamAgentNodeId = edges.find((x) => x.target === id)?.source; const upstreamAgentNode = getNode(upstreamAgentNodeId); + const handleClick = useCallback(() => {}, []); + const tools: IAgentForm['tools'] = get( upstreamAgentNode, 'data.form.tools', @@ -30,9 +33,16 @@ function InnerToolNode({ position={Position.Top} isConnectable={isConnectable} > -