import type { FC } from 'react' import { memo, useMemo } from 'react' import type { NodePanelProps } from '../../types' import type { AgentNodeType } from './types' import Field from '../_base/components/field' import { AgentStrategy } from '../_base/components/agent-strategy' import useConfig from './use-config' import { useTranslation } from 'react-i18next' import OutputVars, { VarItem } from '../_base/components/output-vars' import type { StrategyParamItem } from '@/app/components/plugins/types' import type { CredentialFormSchema } from '@/app/components/header/account-setting/model-provider-page/declarations' import BeforeRunForm from '@/app/components/workflow/nodes/_base/components/before-run-form' import ResultPanel from '@/app/components/workflow/run/result-panel' import formatTracing from '@/app/components/workflow/run/utils/format-log' import { useLogs } from '@/app/components/workflow/run/hooks' import type { Props as FormProps } from '@/app/components/workflow/nodes/_base/components/before-run-form/form' import { toType } from '@/app/components/tools/utils/to-form-schema' import { useStore } from '../../store' const i18nPrefix = 'workflow.nodes.agent' export function strategyParamToCredientialForm(param: StrategyParamItem): CredentialFormSchema { return { ...param as any, variable: param.name, show_on: [], type: toType(param.type), } } const AgentPanel: FC> = (props) => { const { inputs, setInputs, currentStrategy, formData, onFormChange, availableNodesWithParent, availableVars, isShowSingleRun, hideSingleRun, runningStatus, handleRun, handleStop, runResult, runInputData, setRunInputData, varInputs, outputSchema, } = useConfig(props.id, props.data) const { t } = useTranslation() const nodeInfo = useMemo(() => { if (!runResult) return return formatTracing([runResult], t)[0] }, [runResult, t]) const logsParams = useLogs() const singleRunForms = (() => { const forms: FormProps[] = [] if (varInputs.length > 0) { forms.push( { label: t(`${i18nPrefix}.singleRun.variable`)!, inputs: varInputs, values: runInputData, onChange: setRunInputData, }, ) } return forms })() const resetEditor = useStore(s => s.setControlPromptEditorRerenderKey) return
{ setInputs({ ...inputs, agent_strategy_provider_name: strategy?.agent_strategy_provider_name, agent_strategy_name: strategy?.agent_strategy_name, agent_strategy_label: strategy?.agent_strategy_label, output_schema: strategy!.agent_output_schema, plugin_unique_identifier: strategy!.plugin_unique_identifier, agent_parameters: {}, }) resetEditor(Date.now()) }} formSchema={currentStrategy?.parameters?.map(strategyParamToCredientialForm) || []} formValue={formData} onFormValueChange={onFormChange} nodeOutputVars={availableVars} availableNodes={availableNodesWithParent} nodeId={props.id} />
{outputSchema.map(({ name, type, description }) => ( ))}
{ isShowSingleRun && ( } /> ) }
} AgentPanel.displayName = 'AgentPanel' export default memo(AgentPanel)