diff --git a/web/src/pages/agent/canvas/index.tsx b/web/src/pages/agent/canvas/index.tsx
index 41a196c13..e44e593af 100644
--- a/web/src/pages/agent/canvas/index.tsx
+++ b/web/src/pages/agent/canvas/index.tsx
@@ -5,7 +5,6 @@ import {
} from '@/components/ui/tooltip';
import { cn } from '@/lib/utils';
import {
- Background,
ConnectionMode,
ControlButton,
Controls,
@@ -17,6 +16,7 @@ import { NotebookPen } from 'lucide-react';
import { useCallback, useEffect } from 'react';
import { useTranslation } from 'react-i18next';
import { ChatSheet } from '../chat/chat-sheet';
+import { AgentBackground } from '../components/background';
import {
AgentChatContext,
AgentChatLogContext,
@@ -210,7 +210,7 @@ function AgentCanvas({ drawerVisible, hideDrawer }: IProps) {
deleteKeyCode={['Delete', 'Backspace']}
onBeforeDelete={handleBeforeDelete}
>
-
+
diff --git a/web/src/pages/agent/chat/hooks.ts b/web/src/pages/agent/chat/hooks.ts
index 732a7170d..7d24cd42e 100644
--- a/web/src/pages/agent/chat/hooks.ts
+++ b/web/src/pages/agent/chat/hooks.ts
@@ -25,7 +25,7 @@ import { v4 as uuid } from 'uuid';
import { BeginId } from '../constant';
import { AgentChatLogContext } from '../context';
import { transferInputsArrayToObject } from '../form/begin-form/use-watch-change';
-import { useGetBeginNodeDataQuery } from '../hooks/use-get-begin-query';
+import { useSelectBeginNodeDataInputs } from '../hooks/use-get-begin-query';
import { BeginQuery } from '../interface';
import useGraphStore from '../store';
import { receiveMessageError } from '../utils';
@@ -146,7 +146,7 @@ export const useSendNextMessage = () => {
const { handleInputChange, value, setValue } = useHandleMessageInputChange();
const { refetch } = useFetchAgent();
const { addEventList } = useContext(AgentChatLogContext);
- const getBeginNodeDataQuery = useGetBeginNodeDataQuery();
+ const inputs = useSelectBeginNodeDataInputs();
const [messageEndEventList, setMessageEndEventList] = useState<
IMessageEndEvent[]
>([]);
@@ -167,7 +167,7 @@ export const useSendNextMessage = () => {
defaultValue: 'is running...🕞',
});
if (message.content) {
- const query = getBeginNodeDataQuery();
+ const query = inputs;
params.query = message.content;
// params.message_id = message.id;
@@ -185,14 +185,7 @@ export const useSendNextMessage = () => {
refetch(); // pull the message list after sending the message successfully
}
},
- [
- agentId,
- send,
- getBeginNodeDataQuery,
- setValue,
- removeLatestMessage,
- refetch,
- ],
+ [agentId, send, inputs, setValue, removeLatestMessage, refetch],
);
const handleSendMessage = useCallback(
diff --git a/web/src/pages/agent/components/background.tsx b/web/src/pages/agent/components/background.tsx
new file mode 100644
index 000000000..52c9100d5
--- /dev/null
+++ b/web/src/pages/agent/components/background.tsx
@@ -0,0 +1,7 @@
+import { Background } from '@xyflow/react';
+
+export function AgentBackground() {
+ return (
+
+ );
+}
diff --git a/web/src/pages/agent/hooks/use-get-begin-query.tsx b/web/src/pages/agent/hooks/use-get-begin-query.tsx
index 45e05b75d..45d57e344 100644
--- a/web/src/pages/agent/hooks/use-get-begin-query.tsx
+++ b/web/src/pages/agent/hooks/use-get-begin-query.tsx
@@ -12,6 +12,14 @@ import { buildBeginInputListFromObject } from '../form/begin-form/utils';
import { BeginQuery } from '../interface';
import useGraphStore from '../store';
+export function useSelectBeginNodeDataInputs() {
+ const getNode = useGraphStore((state) => state.getNode);
+
+ return buildBeginInputListFromObject(
+ getNode(BeginId)?.data?.form?.inputs ?? {},
+ );
+}
+
export const useGetBeginNodeDataQuery = () => {
const getNode = useGraphStore((state) => state.getNode);
@@ -39,14 +47,14 @@ export const useGetBeginNodeDataInputs = () => {
export const useGetBeginNodeDataQueryIsSafe = () => {
const [isBeginNodeDataQuerySafe, setIsBeginNodeDataQuerySafe] =
useState(false);
- const getBeginNodeDataQuery = useGetBeginNodeDataQuery();
+ const inputs = useSelectBeginNodeDataInputs();
const nodes = useGraphStore((state) => state.nodes);
useEffect(() => {
- const query: BeginQuery[] = getBeginNodeDataQuery();
+ const query: BeginQuery[] = inputs;
const isSafe = !query.some((q) => !q.optional && q.type === 'file');
setIsBeginNodeDataQuerySafe(isSafe);
- }, [getBeginNodeDataQuery, nodes]);
+ }, [inputs, nodes]);
return isBeginNodeDataQuerySafe;
};
@@ -132,22 +140,21 @@ function transferToVariableType(type: string) {
}
export function useBuildBeginVariableOptions() {
- const getBeginNodeDataQuery = useGetBeginNodeDataQuery();
+ const inputs = useSelectBeginNodeDataInputs();
const options = useMemo(() => {
- const query: BeginQuery[] = getBeginNodeDataQuery();
return [
{
label: Begin Input,
title: 'Begin Input',
- options: query.map((x) => ({
+ options: inputs.map((x) => ({
label: x.name,
value: `begin@${x.key}`,
type: transferToVariableType(x.type),
})),
},
];
- }, [getBeginNodeDataQuery]);
+ }, [inputs]);
return options;
}
diff --git a/web/src/pages/agent/hooks/use-show-drawer.tsx b/web/src/pages/agent/hooks/use-show-drawer.tsx
index 69f90c68e..a0e553c15 100644
--- a/web/src/pages/agent/hooks/use-show-drawer.tsx
+++ b/web/src/pages/agent/hooks/use-show-drawer.tsx
@@ -3,10 +3,9 @@ import { Node, NodeMouseHandler } from '@xyflow/react';
import get from 'lodash/get';
import { useCallback, useEffect } from 'react';
import { Operator } from '../constant';
-import { BeginQuery } from '../interface';
import useGraphStore from '../store';
import { useCacheChatLog } from './use-cache-chat-log';
-import { useGetBeginNodeDataQuery } from './use-get-begin-query';
+import { useGetBeginNodeDataInputs } from './use-get-begin-query';
import { useSaveGraph } from './use-save-graph';
export const useShowFormDrawer = () => {
@@ -83,12 +82,11 @@ export function useShowDrawer({
} = useShowSingleDebugDrawer();
const { formDrawerVisible, hideFormDrawer, showFormDrawer, clickedNode } =
useShowFormDrawer();
- const getBeginNodeDataQuery = useGetBeginNodeDataQuery();
+ const inputs = useGetBeginNodeDataInputs();
useEffect(() => {
if (drawerVisible) {
- const query: BeginQuery[] = getBeginNodeDataQuery();
- if (query.length > 0) {
+ if (inputs.length > 0) {
showRunModal();
hideChatModal();
} else {
@@ -102,7 +100,7 @@ export function useShowDrawer({
showChatModal,
showRunModal,
drawerVisible,
- getBeginNodeDataQuery,
+ inputs,
]);
const hideRunOrChatDrawer = useCallback(() => {
diff --git a/web/src/pages/agent/index.tsx b/web/src/pages/agent/index.tsx
index 305154c95..dba6850f7 100644
--- a/web/src/pages/agent/index.tsx
+++ b/web/src/pages/agent/index.tsx
@@ -29,14 +29,13 @@ import AgentCanvas from './canvas';
import EmbedDialog from './embed-dialog';
import { useHandleExportOrImportJsonFile } from './hooks/use-export-json';
import { useFetchDataOnMount } from './hooks/use-fetch-data';
-import { useGetBeginNodeDataQuery } from './hooks/use-get-begin-query';
+import { useGetBeginNodeDataInputs } from './hooks/use-get-begin-query';
import { useOpenDocument } from './hooks/use-open-document';
import {
useSaveGraph,
useSaveGraphBeforeOpeningDebugDrawer,
} from './hooks/use-save-graph';
import { useShowEmbedModal } from './hooks/use-show-dialog';
-import { BeginQuery } from './interface';
import { UploadAgentDialog } from './upload-agent-dialog';
import { VersionDialog } from './version-dialog';
@@ -70,16 +69,15 @@ export default function Agent() {
} = useHandleExportOrImportJsonFile();
const { saveGraph, loading } = useSaveGraph();
const { flowDetail } = useFetchDataOnMount();
- const getBeginNodeDataQuery = useGetBeginNodeDataQuery();
+ const inputs = useGetBeginNodeDataInputs();
const { handleRun } = useSaveGraphBeforeOpeningDebugDrawer(showChatDrawer);
const handleRunAgent = useCallback(() => {
- const query: BeginQuery[] = getBeginNodeDataQuery();
- if (query.length > 0) {
+ if (inputs.length > 0) {
showChatDrawer();
} else {
handleRun();
}
- }, [getBeginNodeDataQuery, handleRun, showChatDrawer]);
+ }, [handleRun, inputs, showChatDrawer]);
const {
visible: versionDialogVisible,
hideModal: hideVersionDialog,
diff --git a/web/src/pages/agent/run-sheet/index.tsx b/web/src/pages/agent/run-sheet/index.tsx
index 3f661ff07..cac62d008 100644
--- a/web/src/pages/agent/run-sheet/index.tsx
+++ b/web/src/pages/agent/run-sheet/index.tsx
@@ -10,7 +10,7 @@ import { useCallback } from 'react';
import { useTranslation } from 'react-i18next';
import { BeginId } from '../constant';
import DebugContent from '../debug-content';
-import { useGetBeginNodeDataQuery } from '../hooks/use-get-begin-query';
+import { useGetBeginNodeDataInputs } from '../hooks/use-get-begin-query';
import { useSaveGraphBeforeOpeningDebugDrawer } from '../hooks/use-save-graph';
import { BeginQuery } from '../interface';
import useGraphStore from '../store';
@@ -23,8 +23,7 @@ const RunSheet = ({
const { t } = useTranslation();
const { updateNodeForm, getNode } = useGraphStore((state) => state);
- const getBeginNodeDataQuery = useGetBeginNodeDataQuery();
- const query: BeginQuery[] = getBeginNodeDataQuery();
+ const inputs = useGetBeginNodeDataInputs();
const { handleRun, loading } = useSaveGraphBeforeOpeningDebugDrawer(
showChatModal!,
@@ -58,7 +57,7 @@ const RunSheet = ({
{t('flow.testRun')}
diff --git a/web/src/pages/agent/version-dialog/index.tsx b/web/src/pages/agent/version-dialog/index.tsx
index 13915bb84..5197048c4 100644
--- a/web/src/pages/agent/version-dialog/index.tsx
+++ b/web/src/pages/agent/version-dialog/index.tsx
@@ -17,16 +17,12 @@ import { IModalProps } from '@/interfaces/common';
import { cn } from '@/lib/utils';
import { formatDate } from '@/utils/date';
import { downloadJsonFile } from '@/utils/file-util';
-import {
- Background,
- ConnectionMode,
- ReactFlow,
- ReactFlowProvider,
-} from '@xyflow/react';
+import { ConnectionMode, ReactFlow, ReactFlowProvider } from '@xyflow/react';
import { ArrowDownToLine } from 'lucide-react';
import { ReactNode, useCallback, useEffect, useState } from 'react';
import { useTranslation } from 'react-i18next';
import { nodeTypes } from '../canvas';
+import { AgentBackground } from '../components/background';
export function VersionDialog({
hideModal,
@@ -123,9 +119,8 @@ export function VersionDialog({
zoomOnDoubleClick={false}
preventScrolling={true}
minZoom={0.1}
- className="!bg-background-agent"
>
-
+