From ba78d0f0c27321e7160d3bbc8d56ee4b291a379e Mon Sep 17 00:00:00 2001 From: balibabu Date: Wed, 19 Nov 2025 15:15:51 +0800 Subject: [PATCH] Feat: Structured data will still be stored in outputs for compatibility with older versions. #10427 (#11368) ### What problem does this PR solve? Feat: Structured data will still be stored in outputs for compatibility with older versions. #10427 ### Type of change - [x] New Feature (non-breaking change which adds functionality) --- web/src/pages/agent/constant/index.tsx | 2 -- web/src/pages/agent/form/agent-form/index.tsx | 8 ++------ .../use-show-structured-output-dialog.ts | 14 ++++++++------ .../agent/form/agent-form/use-watch-change.ts | 3 ++- 4 files changed, 12 insertions(+), 15 deletions(-) diff --git a/web/src/pages/agent/constant/index.tsx b/web/src/pages/agent/constant/index.tsx index 16ef78c99..d10026887 100644 --- a/web/src/pages/agent/constant/index.tsx +++ b/web/src/pages/agent/constant/index.tsx @@ -5,7 +5,6 @@ import { import { AgentGlobals, AgentGlobalsSysQueryWithBrace, - AgentStructuredOutputField, CodeTemplateStrMap, ComparisonOperator, JsonSchemaDataType, @@ -465,7 +464,6 @@ export const initialAgentValues = { mcp: [], cite: true, showStructuredOutput: false, - [AgentStructuredOutputField]: {}, outputs: { content: { type: 'string', diff --git a/web/src/pages/agent/form/agent-form/index.tsx b/web/src/pages/agent/form/agent-form/index.tsx index b683a281f..83e68e23b 100644 --- a/web/src/pages/agent/form/agent-form/index.tsx +++ b/web/src/pages/agent/form/agent-form/index.tsx @@ -28,7 +28,6 @@ import { useTranslation } from 'react-i18next'; import { z } from 'zod'; import { AgentExceptionMethod, - AgentStructuredOutputField, NodeHandleId, VariableType, } from '../../constant'; @@ -74,7 +73,6 @@ const FormSchema = z.object({ ...LargeModelFilterFormSchema, cite: z.boolean().optional(), showStructuredOutput: z.boolean().optional(), - [AgentStructuredOutputField]: z.record(z.any()), }); export type AgentFormSchemaType = z.infer; @@ -127,7 +125,7 @@ function AgentForm({ node }: INextOperatorForm) { structuredOutputDialogVisible, hideStructuredOutputDialog, handleStructuredOutputDialogOk, - } = useShowStructuredOutputDialog(form); + } = useShowStructuredOutputDialog(node?.id); useEffect(() => { if (exceptionMethod !== AgentExceptionMethod.Goto) { @@ -284,9 +282,7 @@ function AgentForm({ node }: INextOperatorForm) { )} - - - + {(field) => ( diff --git a/web/src/pages/agent/form/agent-form/use-show-structured-output-dialog.ts b/web/src/pages/agent/form/agent-form/use-show-structured-output-dialog.ts index 3d492f724..19e38cefe 100644 --- a/web/src/pages/agent/form/agent-form/use-show-structured-output-dialog.ts +++ b/web/src/pages/agent/form/agent-form/use-show-structured-output-dialog.ts @@ -1,25 +1,27 @@ import { JSONSchema } from '@/components/jsonjoy-builder'; -import { AgentStructuredOutputField } from '@/constants/agent'; import { useSetModalState } from '@/hooks/common-hooks'; import { useCallback } from 'react'; -import { UseFormReturn } from 'react-hook-form'; +import useGraphStore from '../../store'; -export function useShowStructuredOutputDialog(form: UseFormReturn) { +export function useShowStructuredOutputDialog(nodeId?: string) { const { visible: structuredOutputDialogVisible, showModal: showStructuredOutputDialog, hideModal: hideStructuredOutputDialog, } = useSetModalState(); + const { updateNodeForm, getNode } = useGraphStore((state) => state); - const initialStructuredOutput = form.getValues(AgentStructuredOutputField); + const initialStructuredOutput = getNode(nodeId)?.data.form.outputs.structured; const handleStructuredOutputDialogOk = useCallback( (values: JSONSchema) => { // Sync data to canvas - form.setValue(AgentStructuredOutputField, values); + if (nodeId) { + updateNodeForm(nodeId, values, ['outputs', 'structured']); + } hideStructuredOutputDialog(); }, - [form, hideStructuredOutputDialog], + [hideStructuredOutputDialog, nodeId, updateNodeForm], ); return { diff --git a/web/src/pages/agent/form/agent-form/use-watch-change.ts b/web/src/pages/agent/form/agent-form/use-watch-change.ts index 08011cc6d..9cd793289 100644 --- a/web/src/pages/agent/form/agent-form/use-watch-change.ts +++ b/web/src/pages/agent/form/agent-form/use-watch-change.ts @@ -22,7 +22,8 @@ export function useWatchFormChange(id?: string, form?: UseFormReturn) { ...nextValues, outputs: { ...values.outputs, - [AgentStructuredOutputField]: values[AgentStructuredOutputField], + [AgentStructuredOutputField]: + values[AgentStructuredOutputField] ?? {}, }, }; } else {