@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.
- package/dist/anthropic-provider.d.ts +26 -0
- package/dist/anthropic-provider.d.ts.map +1 -0
- package/dist/anthropic-provider.js +513 -0
- package/dist/base-provider.d.ts +174 -0
- package/dist/base-provider.d.ts.map +1 -0
- package/dist/base-provider.js +636 -0
- package/dist/cohere-provider.d.ts +26 -0
- package/dist/cohere-provider.d.ts.map +1 -0
- package/dist/cohere-provider.js +501 -0
- package/dist/google-provider.d.ts +25 -0
- package/dist/google-provider.d.ts.map +1 -0
- package/dist/google-provider.js +498 -0
- package/dist/index.d.ts +33 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +62 -0
- package/dist/ollama-provider.d.ts +26 -0
- package/dist/ollama-provider.d.ts.map +1 -0
- package/dist/ollama-provider.js +489 -0
- package/dist/openai-provider.d.ts +26 -0
- package/dist/openai-provider.d.ts.map +1 -0
- package/dist/openai-provider.js +543 -0
- package/dist/provider-manager.d.ts +117 -0
- package/dist/provider-manager.d.ts.map +1 -0
- package/dist/provider-manager.js +712 -0
- package/dist/ruvector-provider.d.ts +65 -0
- package/dist/ruvector-provider.d.ts.map +1 -0
- package/dist/ruvector-provider.js +813 -0
- package/dist/types.d.ts +280 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +108 -0
- package/package.json +1 -1
|
@@ -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":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AACtC,OAAO,EACL,YAAY,EACZ,WAAW,EACX,iBAAiB,EACjB,UAAU,EACV,WAAW,EACX,cAAc,EACd,QAAQ,EACR,SAAS,EACT,oBAAoB,EACpB,iBAAiB,EACjB,cAAc,EACd,YAAY,EACZ,UAAU,EACV,WAAW,EACX,gBAAgB,EAGjB,MAAM,YAAY,CAAC;AAEpB;;GAEG;AACH,cAAM,cAAc;IAMhB,OAAO,CAAC,QAAQ,CAAC,IAAI;IACrB,OAAO,CAAC,QAAQ,CAAC,SAAS;IAC1B,OAAO,CAAC,QAAQ,CAAC,YAAY;IAP/B,OAAO,CAAC,QAAQ,CAAK;IACrB,OAAO,CAAC,WAAW,CAAK;IACxB,OAAO,CAAC,KAAK,CAA6C;gBAGvC,IAAI,EAAE,MAAM,EACZ,SAAS,GAAE,MAAU,EACrB,YAAY,GAAE,MAAc;IAGzC,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;IAmBlD,OAAO,CAAC,SAAS;IAKjB,OAAO,CAAC,SAAS;IASjB,QAAQ,IAAI,MAAM;CAGnB;AAED;;GAEG;AACH,MAAM,WAAW,OAAO;IACtB,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IAC5D,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IAC5D,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;IAC9C,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;CAC9D;AAED;;GAEG;AACH,eAAO,MAAM,aAAa,EAAE,OAK3B,CAAC;AAEF;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,iBAAiB,CAAC;IAC1B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,qBAAqB,CAAC,EAAE;QACtB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,YAAY,CAAC,EAAE,MAAM,CAAC;KACvB,CAAC;CACH;AAED;;GAEG;AACH,8BAAsB,YAAa,SAAQ,YAAa,YAAW,YAAY;IAC7E,QAAQ,CAAC,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC;IACpC,QAAQ,CAAC,QAAQ,CAAC,YAAY,EAAE,oBAAoB,CAAC;IAErD,SAAS,CAAC,MAAM,EAAE,OAAO,CAAC;IAC1B,SAAS,CAAC,cAAc,EAAE,cAAc,CAAC;IACzC,SAAS,CAAC,mBAAmB,CAAC,EAAE,UAAU,CAAC,OAAO,WAAW,CAAC,CAAC;IAC/D,SAAS,CAAC,eAAe,CAAC,EAAE,iBAAiB,CAAC;IAG9C,SAAS,CAAC,YAAY,SAAK;IAC3B,SAAS,CAAC,UAAU,SAAK;IACzB,SAAS,CAAC,WAAW,SAAK;IAC1B,SAAS,CAAC,SAAS,SAAK;IACxB,SAAS,CAAC,cAAc,EAAE,GAAG,CAAC,MAAM,EAAE;QACpC,SAAS,EAAE,IAAI,CAAC;QAChB,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,MAAM,CAAC;QACf,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC,CAAa;IAER,MAAM,EAAE,iBAAiB,CAAC;gBAErB,OAAO,EAAE,mBAAmB;IAaxC;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAsBjC;;OAEG;IACH,SAAS,CAAC,QAAQ,CAAC,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;IAEhD;;OAEG;IACH,SAAS,CAAC,cAAc,IAAI,IAAI;IAgBhC;;OAEG;IACG,QAAQ,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,WAAW,CAAC;IAmCzD;;OAEG;IACH,SAAS,CAAC,QAAQ,CAAC,UAAU,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,WAAW,CAAC;IAExE;;OAEG;IACI,cAAc,CAAC,OAAO,EAAE,UAAU,GAAG,aAAa,CAAC,cAAc,CAAC;IAyCzE;;OAEG;IACH,SAAS,CAAC,QAAQ,CAAC,gBAAgB,CAAC,OAAO,EAAE,UAAU,GAAG,aAAa,CAAC,cAAc,CAAC;IAEvF;;OAEG;IACH,QAAQ,CAAC,UAAU,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;IAE1C;;OAEG;IACH,QAAQ,CAAC,YAAY,CAAC,KAAK,EAAE,QAAQ,GAAG,OAAO,CAAC,SAAS,CAAC;IAE1D;;OAEG;IACH,aAAa,CAAC,KAAK,EAAE,QAAQ,GAAG,OAAO;IAIvC;;OAEG;IACG,WAAW,IAAI,OAAO,CAAC,iBAAiB,CAAC;IA2B/C;;OAEG;IACH,SAAS,CAAC,QAAQ,CAAC,aAAa,IAAI,OAAO,CAAC,iBAAiB,CAAC;IAE9D;;OAEG;IACH,SAAS,IAAI,cAAc;IAa3B;;OAEG;IACH,SAAS,CAAC,qBAAqB,IAAI,MAAM,GAAG,SAAS;IAIrD;;OAEG;IACH,SAAS,CAAC,iBAAiB,IAAI,IAAI,GAAG,SAAS;IAI/C;;OAEG;IACG,YAAY,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,YAAY,CAAC;IAkC9D;;OAEG;IACH,SAAS,CAAC,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;IAI9C;;OAEG;IACG,QAAQ,CAAC,MAAM,GAAE,WAAmB,GAAG,OAAO,CAAC,UAAU,CAAC;IAwBhE,OAAO,CAAC,YAAY;IAsBpB,OAAO,CAAC,uBAAuB;IAgB/B;;OAEG;IACH,SAAS,CAAC,YAAY,CAAC,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI;IAuBzF;;OAEG;IACH,SAAS,CAAC,kBAAkB,CAC1B,OAAO,EAAE,UAAU,EACnB,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,GACd,IAAI;IAcP;;OAEG;IACH,SAAS,CAAC,cAAc,CAAC,KAAK,EAAE,OAAO,GAAG,gBAAgB;IA4B1D;;OAEG;IACH,SAAS,CAAC,iBAAiB,IAAI,IAAI;IAUnC;;OAEG;IACH,OAAO,IAAI,IAAI;CAUhB"}
|