@sparkleideas/providers 3.0.0-alpha.22 → 3.0.0-alpha.49

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,174 @@
1
+ /**
2
+ * V3 Abstract Base Provider
3
+ *
4
+ * Provides common functionality for all LLM providers:
5
+ * - Circuit breaker protection
6
+ * - Health monitoring
7
+ * - Cost tracking
8
+ * - Request metrics
9
+ *
10
+ * @module @sparkleideas/providers/base-provider
11
+ */
12
+ import { EventEmitter } from 'events';
13
+ import { ILLMProvider, LLMProvider, LLMProviderConfig, LLMRequest, LLMResponse, LLMStreamEvent, LLMModel, ModelInfo, ProviderCapabilities, HealthCheckResult, ProviderStatus, CostEstimate, UsageStats, UsagePeriod, LLMProviderError } from './types.js';
14
+ /**
15
+ * Simple circuit breaker implementation
16
+ */
17
+ declare class CircuitBreaker {
18
+ private readonly name;
19
+ private readonly threshold;
20
+ private readonly resetTimeout;
21
+ private failures;
22
+ private lastFailure;
23
+ private state;
24
+ constructor(name: string, threshold?: number, resetTimeout?: number);
25
+ execute<T>(fn: () => Promise<T>): Promise<T>;
26
+ private onSuccess;
27
+ private onFailure;
28
+ getState(): string;
29
+ }
30
+ /**
31
+ * Logger interface
32
+ */
33
+ export interface ILogger {
34
+ info(message: string, meta?: Record<string, unknown>): void;
35
+ warn(message: string, meta?: Record<string, unknown>): void;
36
+ error(message: string, error?: unknown): void;
37
+ debug(message: string, meta?: Record<string, unknown>): void;
38
+ }
39
+ /**
40
+ * Console logger implementation
41
+ */
42
+ export declare const consoleLogger: ILogger;
43
+ /**
44
+ * Base provider options
45
+ */
46
+ export interface BaseProviderOptions {
47
+ logger?: ILogger;
48
+ config: LLMProviderConfig;
49
+ cacheTTL?: number;
50
+ circuitBreakerOptions?: {
51
+ threshold?: number;
52
+ resetTimeout?: number;
53
+ };
54
+ }
55
+ /**
56
+ * Abstract base class for LLM providers
57
+ */
58
+ export declare abstract class BaseProvider extends EventEmitter implements ILLMProvider {
59
+ abstract readonly name: LLMProvider;
60
+ abstract readonly capabilities: ProviderCapabilities;
61
+ protected logger: ILogger;
62
+ protected circuitBreaker: CircuitBreaker;
63
+ protected healthCheckInterval?: ReturnType<typeof setInterval>;
64
+ protected lastHealthCheck?: HealthCheckResult;
65
+ protected requestCount: number;
66
+ protected errorCount: number;
67
+ protected totalTokens: number;
68
+ protected totalCost: number;
69
+ protected requestMetrics: Map<string, {
70
+ timestamp: Date;
71
+ model: string;
72
+ tokens: number;
73
+ cost?: number;
74
+ latency: number;
75
+ }>;
76
+ config: LLMProviderConfig;
77
+ constructor(options: BaseProviderOptions);
78
+ /**
79
+ * Initialize the provider
80
+ */
81
+ initialize(): Promise<void>;
82
+ /**
83
+ * Provider-specific initialization (override in subclass)
84
+ */
85
+ protected abstract doInitialize(): Promise<void>;
86
+ /**
87
+ * Validate provider configuration
88
+ */
89
+ protected validateConfig(): void;
90
+ /**
91
+ * Complete a request
92
+ */
93
+ complete(request: LLMRequest): Promise<LLMResponse>;
94
+ /**
95
+ * Provider-specific completion (override in subclass)
96
+ */
97
+ protected abstract doComplete(request: LLMRequest): Promise<LLMResponse>;
98
+ /**
99
+ * Stream complete a request
100
+ */
101
+ streamComplete(request: LLMRequest): AsyncIterable<LLMStreamEvent>;
102
+ /**
103
+ * Provider-specific stream completion (override in subclass)
104
+ */
105
+ protected abstract doStreamComplete(request: LLMRequest): AsyncIterable<LLMStreamEvent>;
106
+ /**
107
+ * List available models
108
+ */
109
+ abstract listModels(): Promise<LLMModel[]>;
110
+ /**
111
+ * Get model information
112
+ */
113
+ abstract getModelInfo(model: LLMModel): Promise<ModelInfo>;
114
+ /**
115
+ * Validate if a model is supported
116
+ */
117
+ validateModel(model: LLMModel): boolean;
118
+ /**
119
+ * Perform health check
120
+ */
121
+ healthCheck(): Promise<HealthCheckResult>;
122
+ /**
123
+ * Provider-specific health check (override in subclass)
124
+ */
125
+ protected abstract doHealthCheck(): Promise<HealthCheckResult>;
126
+ /**
127
+ * Get provider status
128
+ */
129
+ getStatus(): ProviderStatus;
130
+ /**
131
+ * Get remaining rate limit (override in provider)
132
+ */
133
+ protected getRateLimitRemaining(): number | undefined;
134
+ /**
135
+ * Get rate limit reset time (override in provider)
136
+ */
137
+ protected getRateLimitReset(): Date | undefined;
138
+ /**
139
+ * Estimate cost for a request
140
+ */
141
+ estimateCost(request: LLMRequest): Promise<CostEstimate>;
142
+ /**
143
+ * Simple token estimation (4 chars ≈ 1 token)
144
+ */
145
+ protected estimateTokens(text: string): number;
146
+ /**
147
+ * Get usage statistics
148
+ */
149
+ getUsage(period?: UsagePeriod): Promise<UsageStats>;
150
+ private getStartDate;
151
+ private calculateAverageLatency;
152
+ /**
153
+ * Track successful request
154
+ */
155
+ protected trackRequest(request: LLMRequest, response: LLMResponse, latency: number): void;
156
+ /**
157
+ * Track streaming request
158
+ */
159
+ protected trackStreamRequest(request: LLMRequest, totalTokens: number, totalCost: number, latency: number): void;
160
+ /**
161
+ * Transform errors to provider errors
162
+ */
163
+ protected transformError(error: unknown): LLMProviderError;
164
+ /**
165
+ * Start periodic health checks
166
+ */
167
+ protected startHealthChecks(): void;
168
+ /**
169
+ * Clean up resources
170
+ */
171
+ destroy(): void;
172
+ }
173
+ export {};
174
+ //# sourceMappingURL=base-provider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base-provider.d.ts","sourceRoot":"","sources":["../src/base-provider.ts"],"names":[],"mappings":"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"}