mirror of
https://github.com/EKKOLearnAI/hermes-web-ui.git
synced 2026-05-25 21:40:13 +00:00
5887462f7d
- Add model selector in sidebar that discovers models from auth.json credential pool - Add per-session model display (badge in chat header and session list) - Add skills browser page and memory editor page - Add BFF routes for skills, memory, and config model management - Model switching updates config.yaml provider field to bypass env auto-detection - Refactor Settings page, simplify ChatInput with file upload - Add attachment upload support via BFF /upload endpoint Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
94 lines
2.0 KiB
TypeScript
94 lines
2.0 KiB
TypeScript
import { request } from './client'
|
|
|
|
export interface HealthResponse {
|
|
status: string
|
|
version?: string
|
|
}
|
|
|
|
export interface Model {
|
|
id: string
|
|
object: string
|
|
owned_by: string
|
|
}
|
|
|
|
export interface ModelsResponse {
|
|
object: string
|
|
data: Model[]
|
|
}
|
|
|
|
// Config-based model types
|
|
export interface ModelInfo {
|
|
id: string
|
|
label: string
|
|
}
|
|
|
|
export interface ModelGroup {
|
|
provider: string
|
|
models: ModelInfo[]
|
|
}
|
|
|
|
export interface ConfigModelsResponse {
|
|
default: string
|
|
groups: ModelGroup[]
|
|
}
|
|
|
|
export interface AvailableModelGroup {
|
|
provider: string // credential pool key (e.g. "zai", "custom:subrouter.ai")
|
|
label: string // display name (e.g. "zai", "subrouter.ai")
|
|
base_url: string
|
|
models: string[]
|
|
}
|
|
|
|
export interface AvailableModelsResponse {
|
|
default: string
|
|
groups: AvailableModelGroup[]
|
|
}
|
|
|
|
export interface CustomProvider {
|
|
name: string
|
|
base_url: string
|
|
api_key: string
|
|
model: string
|
|
}
|
|
|
|
export async function checkHealth(): Promise<HealthResponse> {
|
|
return request<HealthResponse>('/health')
|
|
}
|
|
|
|
export async function fetchModels(): Promise<ModelsResponse> {
|
|
return request<ModelsResponse>('/v1/models')
|
|
}
|
|
|
|
export async function fetchConfigModels(): Promise<ConfigModelsResponse> {
|
|
return request<ConfigModelsResponse>('/api/config/models')
|
|
}
|
|
|
|
export async function fetchAvailableModels(): Promise<AvailableModelsResponse> {
|
|
return request<AvailableModelsResponse>('/api/available-models')
|
|
}
|
|
|
|
export async function updateDefaultModel(data: {
|
|
default: string
|
|
provider?: string
|
|
base_url?: string
|
|
api_key?: string
|
|
}): Promise<void> {
|
|
await request('/api/config/model', {
|
|
method: 'PUT',
|
|
body: JSON.stringify(data),
|
|
})
|
|
}
|
|
|
|
export async function addCustomProvider(data: CustomProvider): Promise<void> {
|
|
await request('/api/config/providers', {
|
|
method: 'POST',
|
|
body: JSON.stringify(data),
|
|
})
|
|
}
|
|
|
|
export async function removeCustomProvider(name: string): Promise<void> {
|
|
await request(`/api/config/providers/${encodeURIComponent(name)}`, {
|
|
method: 'DELETE',
|
|
})
|
|
}
|