import React, { useState } from 'react' import { BackendType, type CreateInstanceOptions } from '@/types/instance' import { Card, CardContent, CardHeader, CardTitle } from '@/components/ui/card' import { Button } from '@/components/ui/button' import { Terminal, ChevronDown, ChevronRight } from 'lucide-react' import { getBasicBackendFields, getAdvancedBackendFields } from '@/lib/zodFormUtils' import BackendFormField from '@/components/BackendFormField' import SelectInput from '@/components/form/SelectInput' interface BackendConfigurationCardProps { formData: CreateInstanceOptions onBackendFieldChange: (key: string, value: unknown) => void onChange: (key: keyof CreateInstanceOptions, value: unknown) => void onParseCommand: () => void } const BackendConfigurationCard: React.FC = ({ formData, onBackendFieldChange, onChange, onParseCommand }) => { const [showAdvanced, setShowAdvanced] = useState(false) const basicBackendFields = getBasicBackendFields(formData.backend_type) const advancedBackendFields = getAdvancedBackendFields(formData.backend_type) return ( Backend Configuration {/* Backend Type Selection */} onChange('backend_type', value)} options={[ { value: BackendType.LLAMA_CPP, label: 'Llama Server' }, { value: BackendType.MLX_LM, label: 'MLX LM' }, { value: BackendType.VLLM, label: 'vLLM' } ]} description="Select the backend server type" /> {/* Parse Command Section */}

Import settings from your backend command

{/* Basic Backend Options */} {basicBackendFields.length > 0 && (

Basic Backend Options

{basicBackendFields.map((fieldKey) => ( )?.[fieldKey] as string | number | boolean | string[] | undefined} onChange={onBackendFieldChange} /> ))}
)} {/* Advanced Backend Options */} {advancedBackendFields.length > 0 && (
{showAdvanced && (
{advancedBackendFields .sort() .map((fieldKey) => ( )?.[fieldKey] as string | number | boolean | string[] | undefined} onChange={onBackendFieldChange} /> ))}
)}
)}
) } export default BackendConfigurationCard