Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 | 23x 22x | /**
* Agent Provider Registry
*
* In-memory registry of agent provider configurations.
* Pre-populated with built-in presets, extensible via registerProvider()
* or loadProvidersFromFile() for custom/override configs.
*/
import { readFileSync } from 'node:fs';
import type { AgentProviderConfig } from './types.js';
import { PROVIDER_PRESETS } from './presets.js';
const providers = new Map<string, AgentProviderConfig>(
Object.entries(PROVIDER_PRESETS),
);
/**
* Get a provider configuration by name.
* Returns null if the provider is not registered.
*/
export function getProvider(name: string): AgentProviderConfig | null {
return providers.get(name) ?? null;
}
/**
* List all registered provider names.
*/
export function listProviders(): string[] {
return Array.from(providers.keys());
}
/**
* Register or override a provider configuration.
*/
export function registerProvider(config: AgentProviderConfig): void {
providers.set(config.name, config);
}
/**
* Load provider configurations from a JSON file and merge into the registry.
* File should contain a JSON object mapping provider names to AgentProviderConfig objects.
* Existing providers with matching names will be overridden.
*/
export function loadProvidersFromFile(path: string): void {
const raw = readFileSync(path, 'utf-8');
const parsed = JSON.parse(raw) as Record<string, AgentProviderConfig>;
for (const [name, config] of Object.entries(parsed)) {
providers.set(name, { ...config, name });
}
}
|