/** * LLMProviderManager — 自动故障转移 + 降级状态管理 * FR-I02 AC3 * * 包装 CapabilityRegistry 的 Provider 选择,增加: * - 调用失败时自动标记不可用并切换到备选 Provider * - 无可用 Provider 时进入降级状态 * - 冷却期后自动恢复 Provider 可用性 */ import type { CapabilityRegistry, RegisteredProvider } from './capability-registry.js'; import type { ProviderCapability } from './capability-registry.js'; export type DegradationLevel = 'normal' | 'degraded' | 'unavailable'; export interface ProviderFailureRecord { providerId: string; failedAt: Date; error: string; cooldownUntil: Date; } export interface LLMProviderManagerOptions { registry: CapabilityRegistry; /** 冷却时间(毫秒),Provider 失败后多久自动恢复。默认 60_000 (1 min) */ cooldownMs?: number; /** 连续失败多少次后标记不可用。默认 1 */ maxConsecutiveFailures?: number; } export declare class LLMProviderManager { private readonly registry; private readonly cooldownMs; private readonly maxConsecutiveFailures; private readonly failures; private readonly consecutiveFailures; constructor(options: LLMProviderManagerOptions); /** * 获取当前降级状态 */ getDegradationLevel(capability: ProviderCapability): DegradationLevel; /** * 选择可用 Provider,自动跳过冷却中的 Provider */ selectProvider(capability: ProviderCapability): RegisteredProvider | null; /** * 执行带自动故障转移的 Provider 调用 * 失败时自动切换到下一个可用 Provider 重试 */ executeWithFailover(capability: ProviderCapability, fn: (provider: RegisteredProvider) => Promise): Promise; /** * 手动标记 Provider 恢复可用 */ restoreProvider(providerId: string): void; /** * 获取所有失败记录 */ getFailureRecords(): ProviderFailureRecord[]; /** * 清除所有失败记录并恢复所有 Provider */ resetAll(): void; private findNextProvider; private recordFailure; private restoreCooledDownProviders; } export declare class ProviderUnavailableError extends Error { readonly capability: ProviderCapability; constructor(capability: ProviderCapability, reason: string); } //# sourceMappingURL=llm-provider-manager.d.ts.map