import type { FC } from 'react' import { useMemo, } from 'react' import { useTranslation } from 'react-i18next' import { memo } from 'react' import type { DataSourceNodeType } from './types' import type { NodePanelProps } from '@/app/components/workflow/types' import { GroupWithBox } from '@/app/components/workflow/nodes/_base/components/layout' import OutputVars, { VarItem } from '@/app/components/workflow/nodes/_base/components/output-vars' import StructureOutputItem from '@/app/components/workflow/nodes/_base/components/variable/object-child-tree-panel/show' import { Type } from '../llm/types' const Panel: FC> = ({ data }) => { const { t } = useTranslation() const { output_schema = {} } = data const outputSchema = useMemo(() => { const res: any[] = [] if (!output_schema) return [] Object.keys(output_schema.properties).forEach((outputKey) => { const output = output_schema.properties[outputKey] const type = output.type if (type === 'object') { res.push({ name: outputKey, value: output, }) } else { 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 }, [output_schema]) const hasObjectOutput = useMemo(() => { if (!output_schema) return false const properties = output_schema.properties return Object.keys(properties).some(key => properties[key].type === 'object') }, [output_schema]) return (
{outputSchema.map((outputItem: any) => (
{outputItem.value?.type === 'object' ? ( ) : ( )}
))}
) } export default memo(Panel)