import type { FC } from 'react' import { useTranslation } from 'react-i18next' import type { CustomConfigurationModelFixedFields, ModelItem, ModelProvider, } from '../declarations' import { ConfigurationMethodEnum, CustomConfigurationStatusEnum, } from '../declarations' import { UPDATE_MODEL_PROVIDER_CUSTOM_MODEL_LIST } from '../provider-added-card' import { ModelStatusEnum } from '../declarations' import { useUpdateModelList, useUpdateModelProviders, } from '../hooks' import ModelIcon from '../model-icon' import ModelName from '../model-name' import Button from '@/app/components/base/button' import cn from '@/utils/classnames' import { useProviderContext } from '@/context/provider-context' import { useModalContextSelector } from '@/context/modal-context' import { useEventEmitterContextContext } from '@/context/event-emitter' import Tooltip from '@/app/components/base/tooltip' import { RiEqualizer2Line, RiErrorWarningFill } from '@remixicon/react' export type AgentModelTriggerProps = { open?: boolean disabled?: boolean currentProvider?: ModelProvider currentModel?: ModelItem providerName?: string modelId?: string hasDeprecated?: boolean } const AgentModelTrigger: FC = ({ disabled, currentProvider, currentModel, providerName, modelId, hasDeprecated, }) => { const { t } = useTranslation() const { modelProviders } = useProviderContext() const setShowModelModal = useModalContextSelector(state => state.setShowModelModal) const updateModelProviders = useUpdateModelProviders() const updateModelList = useUpdateModelList() const { eventEmitter } = useEventEmitterContextContext() const modelProvider = modelProviders.find(item => item.provider === providerName) const needsConfiguration = modelProvider?.custom_configuration.status === CustomConfigurationStatusEnum.noConfigure && !( modelProvider.system_configuration.enabled === true && modelProvider.system_configuration.quota_configurations.find( item => item.quota_type === modelProvider.system_configuration.current_quota_type, ) ) const handleOpenModal = ( provider: ModelProvider, configurationMethod: ConfigurationMethodEnum, CustomConfigurationModelFixedFields?: CustomConfigurationModelFixedFields, ) => { setShowModelModal({ payload: { currentProvider: provider, currentConfigurationMethod: configurationMethod, currentCustomConfigurationModelFixedFields: CustomConfigurationModelFixedFields, }, onSaveCallback: () => { updateModelProviders() provider.supported_model_types.forEach((type) => { updateModelList(type) }) if (configurationMethod === ConfigurationMethodEnum.customizableModel && provider.custom_configuration.status === CustomConfigurationStatusEnum.active) { eventEmitter?.emit({ type: UPDATE_MODEL_PROVIDER_CUSTOM_MODEL_LIST, payload: provider.provider, } as any) if (CustomConfigurationModelFixedFields?.__model_type) updateModelList(CustomConfigurationModelFixedFields.__model_type) } }, }) } return (
{modelId ? ( <> {currentProvider && ( )} {!currentProvider && ( )} {currentModel && ( )} {!currentModel && (
{modelId}
)} {needsConfiguration && ( )} {!needsConfiguration && disabled && ( ) } ) : ( <>
{t('workflow.nodes.agent.configureModel')}
)} {currentProvider && currentModel && currentModel.status === ModelStatusEnum.active && (
)}
) } export default AgentModelTrigger