import { refreshGatewayState } from "@/store/gateway" // API client for model list management. export interface ModelInfo { index: number model_name: string model: string api_base?: string api_key: string proxy?: string auth_method?: string // Advanced fields connect_mode?: string workspace?: string rpm?: number max_tokens_field?: string request_timeout?: number thinking_level?: string extra_body?: Record // Meta configured: boolean is_default: boolean } interface ModelsListResponse { models: ModelInfo[] total: number default_model: string } interface ModelActionResponse { status: string index?: number default_model?: string } const BASE_URL = "" async function request(path: string, options?: RequestInit): Promise { const res = await fetch(`${BASE_URL}${path}`, options) if (!res.ok) { throw new Error(`API error: ${res.status} ${res.statusText}`) } return res.json() as Promise } export async function getModels(): Promise { return request("/api/models") } export async function addModel( model: Partial, ): Promise { return request("/api/models", { method: "POST", headers: { "Content-Type": "application/json" }, body: JSON.stringify(model), }) } export async function updateModel( index: number, model: Partial, ): Promise { return request(`/api/models/${index}`, { method: "PUT", headers: { "Content-Type": "application/json" }, body: JSON.stringify(model), }) } export async function deleteModel(index: number): Promise { return request(`/api/models/${index}`, { method: "DELETE", }) } export async function setDefaultModel( modelName: string, ): Promise { const response = await request("/api/models/default", { method: "POST", headers: { "Content-Type": "application/json" }, body: JSON.stringify({ model_name: modelName }), }) await refreshGatewayState() return response } export type { ModelsListResponse, ModelActionResponse }