/** CLIProxyAPI /v1/models 响应中单个模型的结构 */ export interface CLIPProxyModelEntry { id: string; object?: string; created?: number; owned_by?: string; /** Optional capability hints some proxies expose */ context_window?: number; contextWindow?: number; max_tokens?: number; maxTokens?: number; max_output_tokens?: number; } /** CLIProxyAPI /v1/models 完整响应 */ export interface CLIPProxyModelsResponse { object?: string; data: CLIPProxyModelEntry[]; } /** Pi ProviderModelConfig 的兼容性子集 */ export interface ProviderModelConfig { id: string; name?: string; reasoning: boolean; input: ('text' | 'image')[]; cost: { input: number; output: number; cacheRead: number; cacheWrite: number }; contextWindow: number; maxTokens: number; } /** Raw entry after fetch parse — id plus optional numeric capability fields */ export interface ParsedModelEntry { id: string; contextWindow?: number; maxTokens?: number; } /** 保守默认值——当模型 ID 无法匹配任何已知模式时使用 */ export const CONSERVATIVE_DEFAULTS = { input: ['text'] as ('text' | 'image')[], cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 }, };