Files
Cli-Proxy-API-Management-Ce…/src/types/config.ts

62 lines
1.5 KiB
TypeScript

/**
* 配置相关类型定义
* 与基线 /config 返回结构保持一致(内部使用驼峰形式)
*/
import type { GeminiKeyConfig, ProviderKeyConfig, OpenAIProviderConfig } from './provider';
import type { AmpcodeConfig } from './ampcode';
export interface QuotaExceededConfig {
switchProject?: boolean;
switchPreviewModel?: boolean;
}
export interface Config {
debug?: boolean;
proxyUrl?: string;
requestRetry?: number;
quotaExceeded?: QuotaExceededConfig;
usageStatisticsEnabled?: boolean;
requestLog?: boolean;
loggingToFile?: boolean;
logsMaxTotalSizeMb?: number;
wsAuth?: boolean;
forceModelPrefix?: boolean;
routingStrategy?: string;
apiKeys?: string[];
ampcode?: AmpcodeConfig;
geminiApiKeys?: GeminiKeyConfig[];
codexApiKeys?: ProviderKeyConfig[];
claudeApiKeys?: ProviderKeyConfig[];
vertexApiKeys?: ProviderKeyConfig[];
openaiCompatibility?: OpenAIProviderConfig[];
oauthExcludedModels?: Record<string, string[]>;
raw?: Record<string, any>;
}
export type RawConfigSection =
| 'debug'
| 'proxy-url'
| 'request-retry'
| 'quota-exceeded'
| 'usage-statistics-enabled'
| 'request-log'
| 'logging-to-file'
| 'logs-max-total-size-mb'
| 'ws-auth'
| 'force-model-prefix'
| 'routing/strategy'
| 'api-keys'
| 'ampcode'
| 'gemini-api-key'
| 'codex-api-key'
| 'claude-api-key'
| 'vertex-api-key'
| 'openai-compatibility'
| 'oauth-excluded-models';
export interface ConfigCache {
data: Config;
timestamp: number;
}