diff --git a/web/app/components/workflow/nodes/agent/panel.tsx b/web/app/components/workflow/nodes/agent/panel.tsx index 50eadf9b3e..75e3522ab9 100644 --- a/web/app/components/workflow/nodes/agent/panel.tsx +++ b/web/app/components/workflow/nodes/agent/panel.tsx @@ -48,6 +48,7 @@ const AgentPanel: FC> = (props) => { runInputData, setRunInputData, varInputs, + outputSchema, } = useConfig(props.id, props.data) const { t } = useTranslation() const nodeInfo = useMemo(() => { @@ -121,12 +122,12 @@ const AgentPanel: FC> = (props) => { type='Array[Object]' description={t(`${i18nPrefix}.outputVars.json`)} /> - {inputs.output_schema && Object.entries(inputs.output_schema).map(([name, schema]) => ( + {outputSchema.map(({ name, type, description }) => ( ))} diff --git a/web/app/components/workflow/nodes/agent/use-config.ts b/web/app/components/workflow/nodes/agent/use-config.ts index 88c793723f..3cc63be5a5 100644 --- a/web/app/components/workflow/nodes/agent/use-config.ts +++ b/web/app/components/workflow/nodes/agent/use-config.ts @@ -158,6 +158,23 @@ const useConfig = (id: string, payload: AgentNodeType) => { return vars })() + const outputSchema = useMemo(() => { + const res: any[] = [] + if (!inputs.output_schema) + return [] + Object.keys(inputs.output_schema.properties).forEach((outputKey) => { + const output = inputs.output_schema.properties[outputKey] + res.push({ + name: outputKey, + type: output.type === 'array' + ? `Array[${output.items?.type.slice(0, 1).toLocaleUpperCase()}${output.items?.type.slice(1)}]` + : `${output.type.slice(0, 1).toLocaleUpperCase()}${output.type.slice(1)}`, + description: output.description, + }) + }) + return res + }, [inputs.output_schema]) + return { readOnly, inputs, @@ -184,6 +201,7 @@ const useConfig = (id: string, payload: AgentNodeType) => { setRunInputData, runResult, varInputs, + outputSchema, } }