import apiClient from './client' import { Model, CreateModelRequest, ModelDefaults, ProviderAvailability, DiscoveredModel, ProviderSyncResult, AllProvidersSyncResult, ProviderModelCount, AutoAssignResult, ModelTestResult, } from '@/lib/types/models' export const modelsApi = { list: async () => { const response = await apiClient.get('/models') return response.data }, get: async (id: string) => { const response = await apiClient.get(`/models/${id}`) return response.data }, create: async (data: CreateModelRequest) => { const response = await apiClient.post('/models', data) return response.data }, delete: async (id: string) => { await apiClient.delete(`/models/${id}`) }, getDefaults: async () => { const response = await apiClient.get('/models/defaults') return response.data }, updateDefaults: async (data: Partial) => { const response = await apiClient.put('/models/defaults', data) return response.data }, getProviders: async () => { const response = await apiClient.get('/models/providers') return response.data }, // Model Discovery API /** * Discover available models from a provider without registering them */ discoverModels: async (provider: string) => { const response = await apiClient.get(`/models/discover/${provider}`) return response.data }, /** * Sync models for a specific provider (discover and register) */ syncProvider: async (provider: string) => { const response = await apiClient.post(`/models/sync/${provider}`) return response.data }, /** * Sync models for all configured providers */ syncAll: async () => { const response = await apiClient.post('/models/sync') return response.data }, /** * Get count of registered models for a provider */ getProviderModelCount: async (provider: string) => { const response = await apiClient.get(`/models/count/${provider}`) return response.data }, /** * Get all models for a specific provider */ getByProvider: async (provider: string) => { const response = await apiClient.get(`/models/by-provider/${provider}`) return response.data }, /** * Auto-assign default models based on available models */ autoAssign: async () => { const response = await apiClient.post('/models/auto-assign') return response.data }, /** * Test an individual model configuration */ testModel: async (modelId: string): Promise => { const response = await apiClient.post(`/models/${modelId}/test`) return response.data }, }