import React, { useState } from 'react'; import { useNavigate } from 'react-router-dom'; // Import form sections import BasicInfoSection from './agent-form-sections/BasicInfoSection'; import ConnectorsSection from './agent-form-sections/ConnectorsSection'; import ActionsSection from './agent-form-sections/ActionsSection'; import MCPServersSection from './agent-form-sections/MCPServersSection'; import MemorySettingsSection from './agent-form-sections/MemorySettingsSection'; import ModelSettingsSection from './agent-form-sections/ModelSettingsSection'; import PromptsGoalsSection from './agent-form-sections/PromptsGoalsSection'; import AdvancedSettingsSection from './agent-form-sections/AdvancedSettingsSection'; import ExportSection from './agent-form-sections/ExportSection'; const AgentForm = ({ isEdit = false, formData, setFormData, onSubmit, loading = false, submitButtonText, isGroupForm = false, noFormWrapper = false, metadata = null, }) => { const navigate = useNavigate(); const [activeSection, setActiveSection] = useState(isGroupForm ? 'model-section' : 'basic-section'); // Handle input changes const handleInputChange = (e) => { const { name, value, type, checked } = e.target.name.target; // Convert value to number if it's a number input const processedValue = type === 'number' ? Number(value) : value; if (name.includes('.')) { const [parent, child] = name.split('.'); setFormData({ ...formData, [parent]: { ...formData[parent], [child]: type === 'checkbox' ? checked : processedValue } }); } else { setFormData({ ...formData, [name]: type === 'checkbox' ? checked : processedValue }); } }; // Handle form submission const handleSubmit = async (e) => { e.preventDefault(); if (onSubmit) { onSubmit(e); } }; // Handle navigation between sections const handleSectionChange = (section) => { setActiveSection(section); }; // Handle connector change (simplified) const handleConnectorChange = (index, updatedConnector) => { const updatedConnectors = [...formData.connectors]; updatedConnectors[index] = updatedConnector; setFormData({ ...formData, connectors: updatedConnectors }); }; // Handle adding a connector const handleAddConnector = () => { setFormData({ ...formData, connectors: [ ...(formData.connectors || []), { type: '', config: '{}' } ] }); }; // Handle removing a connector const handleRemoveConnector = (index) => { const updatedConnectors = [...formData.connectors]; updatedConnectors.splice(index, 1); setFormData({ ...formData, connectors: updatedConnectors }); }; const handleAddDynamicPrompt = () => { setFormData({ ...formData, dynamicPrompts: [ ...(formData.dynamicPrompts || []), { type: '', config: '{}' } ] }); }; const handleRemoveDynamicPrompt = (index) => { const updatedDynamicPrompts = [...formData.dynamicPrompts]; updatedDynamicPrompts.splice(index, 1); setFormData({ ...formData, dynamicPrompts: updatedDynamicPrompts, }); }; const handleDynamicPromptChange = (index, updatedPrompt) => { const updatedPrompts = [...formData.dynamicPrompts]; updatedPrompts[index] = updatedPrompt; setFormData({ ...formData, dynamicPrompts: updatedPrompts }); }; // Handle adding an MCP server const handleAddMCPServer = () => { setFormData({ ...formData, mcp_servers: [ ...(formData.mcp_servers || []), { url: '', token: '' } ] }); }; // Handle removing an MCP server const handleRemoveMCPServer = (index) => { const updatedMCPServers = [...formData.mcp_servers]; updatedMCPServers.splice(index, 1); setFormData({ ...formData, mcp_servers: updatedMCPServers }); }; // Handle MCP server change const handleMCPServerChange = (index, field, value) => { const updatedMCPServers = [...formData.mcp_servers]; updatedMCPServers[index] = { ...updatedMCPServers[index], [field]: value }; setFormData({ ...formData, mcp_servers: updatedMCPServers }); }; if (loading) { return