Base Classes
Base Classes
Base classes for custom provider implementations
BaseMediaProvider class
📍 src/infrastructure/providers/base/BaseMediaProvider.ts:16
Base class for all media providers (Image, Audio, Video) Follows the same patterns as BaseTextProvider for consistency
Constructor
constructor
constructor(config: any)
Parameters:
config:any
Methods
executeWithCircuitBreaker()
Execute operation with circuit breaker protection Automatically records metrics and handles errors
protected async executeWithCircuitBreaker<TResult>(
operation: () => Promise<TResult>,
operationName: string,
metadata?: Record<string, unknown>
): Promise<TResult>
Parameters:
operation:() => Promise<TResult>operationName:stringmetadata:Record<string, unknown> | undefined(optional)
Returns: Promise<TResult>
logOperationStart()
Log operation start with context Useful for logging before async operations
protected logOperationStart(operation: string, context: Record<string, unknown>): void
Parameters:
operation:stringcontext:Record<string, unknown>
Returns: void
logOperationComplete()
Log operation completion with context
protected logOperationComplete(operation: string, context: Record<string, unknown>): void
Parameters:
operation:stringcontext:Record<string, unknown>
Returns: void
Properties
| Property | Type | Description |
|---|---|---|
circuitBreaker? |
`circuitBreaker: CircuitBreaker<any> | undefined` |
logger |
logger: FrameworkLogger |
- |
BaseProvider class
📍 src/infrastructure/providers/base/BaseProvider.ts:9
Constructor
constructor
constructor(protected config: ProviderConfig)
Parameters:
config:ProviderConfig
Methods
validateConfig()
Validate provider configuration Returns validation result with details
async validateConfig(): Promise<boolean>
Returns: Promise<boolean>
validateApiKey()
Validate API key format and presence Can be overridden by providers with specific key formats
protected validateApiKey(): { isValid: boolean; warning?: string }
Returns: { isValid: boolean; warning?: string | undefined; }
validateProviderSpecificKeyFormat()
Override this method in provider implementations for specific key format validation
protected validateProviderSpecificKeyFormat(_apiKey: string): { isValid: boolean; warning?: string }
Parameters:
_apiKey:string
Returns: { isValid: boolean; warning?: string | undefined; }
assertValidConfig()
Validate config and throw if invalid
protected assertValidConfig(): void
Returns: void
getApiKey()
Get API key from config
protected getApiKey(): string
Returns: string
getBaseURL()
Get base URL if configured
protected getBaseURL(): string | undefined
Returns: string | undefined
getTimeout()
Get timeout configuration
protected getTimeout(): number
Returns: number
getMaxRetries()
Get max retries configuration
protected getMaxRetries(): number
Returns: number
Properties
| Property | Type | Description |
|---|---|---|
name |
name: string |
- |
capabilities |
capabilities: ProviderCapabilities |
- |
BaseTextProvider class
📍 src/infrastructure/providers/base/BaseTextProvider.ts:26
Constructor
constructor
constructor(config: any)
Parameters:
config:any
Methods
ensureObservabilityInitialized()
Auto-initialize observability on first use (lazy initialization) This is called automatically by executeWithCircuitBreaker(); subclasses whose stream paths bypass it (e.g. streamGenerate) should also call it at entry so error logs carry the real provider name instead of "unknown".
protected ensureObservabilityInitialized(): void
Returns: void
initializeObservability()
DEPRECATED: No longer needed, kept for backward compatibility Observability is now auto-initialized on first use
protected initializeObservability(_providerName: string): void
Parameters:
_providerName:string
Returns: void
generate()
abstract generate(options: TextGenerateOptions): Promise<LLMResponse>;
Parameters:
options:TextGenerateOptions
Returns: Promise<LLMResponse>
streamGenerate()
abstract streamGenerate(options: TextGenerateOptions): AsyncIterableIterator<StreamEvent>;
Parameters:
options:TextGenerateOptions
Returns: AsyncIterableIterator<StreamEvent>
getModelCapabilities()
abstract getModelCapabilities(model: string): ModelCapabilities;
Parameters:
model:string
Returns: ModelCapabilities
getAdvancedCapabilities()
getAdvancedCapabilities(model: string): AdvancedTextCapabilities
Parameters:
model:string
Returns: AdvancedTextCapabilities
executeWithCircuitBreaker()
Execute with circuit breaker protection (helper for subclasses)
protected async executeWithCircuitBreaker<TResult>(
operation: () => Promise<TResult>,
model?: string
): Promise<TResult>
Parameters:
operation:() => Promise<TResult>model:string | undefined(optional)
Returns: Promise<TResult>
getCircuitBreakerMetrics()
Get circuit breaker metrics
getCircuitBreakerMetrics()
Returns: CircuitBreakerMetrics | null
normalizeInputToString()
Normalize input to string (helper for providers that don't support complex input)
protected normalizeInputToString(input: string | any[]): string
Parameters:
input:string | any[]
Returns: string
applyContextLimitGuardrail()
Apply context limit guardrail to generation options. Returns the same options if within budget, or trimmed options if over. This is a safety net — primary context management is in AgentContextNextGen.
protected applyContextLimitGuardrail(options: TextGenerateOptions): TextGenerateOptions
Parameters:
options:TextGenerateOptions
Returns: TextGenerateOptions
resolveAdvancedCredentials()
protected async resolveAdvancedCredentials(
options: TextGenerateOptions,
): Promise<TextGenerateOptions>
Parameters:
options:TextGenerateOptions
Returns: Promise<TextGenerateOptions>
assertAdvancedOptionsSupported()
protected assertAdvancedOptionsSupported(options: TextGenerateOptions): void
Parameters:
options:TextGenerateOptions
Returns: void
listModels()
List available models from the provider's API. Default returns empty array; providers override when they have SDK support.
async listModels(): Promise<string[]>
Returns: Promise<string[]>
destroy()
Clean up provider resources (circuit breaker listeners, etc.) Should be called when the provider is no longer needed.
destroy(): void
Returns: void
Properties
| Property | Type | Description |
|---|---|---|
circuitBreaker? |
`circuitBreaker: CircuitBreaker<any> | undefined` |
logger |
logger: FrameworkLogger |
- |