(backup: ProviderBackupFile)
| 269 | */ |
| 270 | export function getProviderById(id: string): Provider | null { |
| 271 | return getAllProviders().find(p => p.id === id) ?? null; |
| 272 | } |
| 273 | |
| 274 | /** |
| 275 | * 根据 agentType 获取所有 providers |
| 276 | */ |
| 277 | export function getProvidersByAgentType(agentType: AgentType | string): Provider[] { |
| 278 | return getAllProviders().filter(p => p.agentType === agentType); |
| 279 | } |
| 280 | |
| 281 | /** |
| 282 | * 获取某个 agentType 的默认 provider |
| 283 | */ |
| 284 | export function getDefaultProvider(agentType: AgentType | string, runtimeType: RuntimeType = RuntimeType.CLI): Provider | null { |
| 285 | const providers = getProvidersByAgentType(agentType) |
| 286 | .filter(provider => getProviderRuntimeType(provider) === runtimeType); |
| 287 | return providers.find(p => p.isDefault) ?? providers[0] ?? null; |
| 288 | } |
| 289 | |
| 290 | export function getUserProviders(): Provider[] { |
| 291 | return structuredClone(extractUserProviders(getAllProviders())); |
| 292 | } |
| 293 | |
| 294 | export function createProviderBackup(): ProviderBackupFile { |
| 295 | return { |
| 296 | version: 1, |
| 297 | kind: 'provider-backup', |
| 298 | exportedAt: new Date().toISOString(), |
| 299 | mode: 'full', |
| 300 | providers: getUserProviders().map(toPersistedProvider), |
| 301 | }; |
| 302 | } |
| 303 | |
| 304 | export function previewProviderImport(backup: ProviderBackupFile): ProviderImportPreview { |
| 305 | const existingProviders = getAllProviders(); |
| 306 | const existingById = new Map(existingProviders.map(provider => [provider.id, provider])); |
| 307 | const items: ProviderImportPreviewItem[] = []; |
| 308 | const summary = { |
no test coverage detected