({
provider,
setProvider,
model,
setModel,
isCustomModel,
setIsCustomModel,
customModel,
setCustomModel,
// File filter configuration
showFileFilters = false,
excludedDirs = '',
setExcludedDirs,
excludedFiles = '',
setExcludedFiles,
includedDirs = '',
setIncludedDirs,
includedFiles = '',
setIncludedFiles
}: ModelSelectorProps)
| 44 | } |
| 45 | |
| 46 | export default function UserSelector({ |
| 47 | provider, |
| 48 | setProvider, |
| 49 | model, |
| 50 | setModel, |
| 51 | isCustomModel, |
| 52 | setIsCustomModel, |
| 53 | customModel, |
| 54 | setCustomModel, |
| 55 | |
| 56 | // File filter configuration |
| 57 | showFileFilters = false, |
| 58 | excludedDirs = '', |
| 59 | setExcludedDirs, |
| 60 | excludedFiles = '', |
| 61 | setExcludedFiles, |
| 62 | includedDirs = '', |
| 63 | setIncludedDirs, |
| 64 | includedFiles = '', |
| 65 | setIncludedFiles |
| 66 | }: ModelSelectorProps) { |
| 67 | // State to manage the visibility of the filters modal and filter section |
| 68 | const [isFilterSectionOpen, setIsFilterSectionOpen] = useState(false); |
| 69 | // State to manage filter mode: 'exclude' or 'include' |
| 70 | const [filterMode, setFilterMode] = useState<'exclude' | 'include'>('exclude'); |
| 71 | const { messages: t } = useLanguage(); |
| 72 | |
| 73 | // State for model configurations from backend |
| 74 | const [modelConfig, setModelConfig] = useState<ModelConfig | null>(null); |
| 75 | const [isLoading, setIsLoading] = useState(true); |
| 76 | const [error, setError] = useState<string | null>(null); |
| 77 | |
| 78 | // State for viewing default values |
| 79 | const [showDefaultDirs, setShowDefaultDirs] = useState(false); |
| 80 | const [showDefaultFiles, setShowDefaultFiles] = useState(false); |
| 81 | |
| 82 | // Fetch model configurations from the backend |
| 83 | useEffect(() => { |
| 84 | const fetchModelConfig = async () => { |
| 85 | try { |
| 86 | setIsLoading(true); |
| 87 | setError(null); |
| 88 | |
| 89 | const response = await fetch('/api/models/config'); |
| 90 | |
| 91 | if (!response.ok) { |
| 92 | throw new Error(`Error fetching model configurations: ${response.status}`); |
| 93 | } |
| 94 | |
| 95 | const data = await response.json(); |
| 96 | setModelConfig(data); |
| 97 | |
| 98 | // Initialize provider and model with defaults from API if not already set |
| 99 | if (!provider && data.defaultProvider) { |
| 100 | setProvider(data.defaultProvider); |
| 101 | |
| 102 | // Find the default provider and set its default model |
| 103 | const selectedProvider = data.providers.find((p: Provider) => p.id === data.defaultProvider); |
nothing calls this directly
no test coverage detected