@stackbilt/llm-providers 1.0.0

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.
Files changed (59) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +261 -0
  3. package/dist/errors.d.ts +79 -0
  4. package/dist/errors.d.ts.map +1 -0
  5. package/dist/errors.js +183 -0
  6. package/dist/errors.js.map +1 -0
  7. package/dist/factory.d.ts +95 -0
  8. package/dist/factory.d.ts.map +1 -0
  9. package/dist/factory.js +418 -0
  10. package/dist/factory.js.map +1 -0
  11. package/dist/index.d.ts +137 -0
  12. package/dist/index.d.ts.map +1 -0
  13. package/dist/index.js +263 -0
  14. package/dist/index.js.map +1 -0
  15. package/dist/providers/anthropic.d.ts +38 -0
  16. package/dist/providers/anthropic.d.ts.map +1 -0
  17. package/dist/providers/anthropic.js +378 -0
  18. package/dist/providers/anthropic.js.map +1 -0
  19. package/dist/providers/base.d.ts +107 -0
  20. package/dist/providers/base.d.ts.map +1 -0
  21. package/dist/providers/base.js +230 -0
  22. package/dist/providers/base.js.map +1 -0
  23. package/dist/providers/cerebras.d.ts +30 -0
  24. package/dist/providers/cerebras.d.ts.map +1 -0
  25. package/dist/providers/cerebras.js +292 -0
  26. package/dist/providers/cerebras.js.map +1 -0
  27. package/dist/providers/cloudflare.d.ts +47 -0
  28. package/dist/providers/cloudflare.d.ts.map +1 -0
  29. package/dist/providers/cloudflare.js +544 -0
  30. package/dist/providers/cloudflare.js.map +1 -0
  31. package/dist/providers/groq.d.ts +30 -0
  32. package/dist/providers/groq.d.ts.map +1 -0
  33. package/dist/providers/groq.js +222 -0
  34. package/dist/providers/groq.js.map +1 -0
  35. package/dist/providers/openai.d.ts +36 -0
  36. package/dist/providers/openai.d.ts.map +1 -0
  37. package/dist/providers/openai.js +331 -0
  38. package/dist/providers/openai.js.map +1 -0
  39. package/dist/types.d.ts +238 -0
  40. package/dist/types.d.ts.map +1 -0
  41. package/dist/types.js +6 -0
  42. package/dist/types.js.map +1 -0
  43. package/dist/utils/circuit-breaker.d.ts +111 -0
  44. package/dist/utils/circuit-breaker.d.ts.map +1 -0
  45. package/dist/utils/circuit-breaker.js +365 -0
  46. package/dist/utils/circuit-breaker.js.map +1 -0
  47. package/dist/utils/cost-tracker.d.ts +130 -0
  48. package/dist/utils/cost-tracker.d.ts.map +1 -0
  49. package/dist/utils/cost-tracker.js +272 -0
  50. package/dist/utils/cost-tracker.js.map +1 -0
  51. package/dist/utils/credit-ledger.d.ts +161 -0
  52. package/dist/utils/credit-ledger.d.ts.map +1 -0
  53. package/dist/utils/credit-ledger.js +463 -0
  54. package/dist/utils/credit-ledger.js.map +1 -0
  55. package/dist/utils/retry.d.ts +46 -0
  56. package/dist/utils/retry.d.ts.map +1 -0
  57. package/dist/utils/retry.js +125 -0
  58. package/dist/utils/retry.js.map +1 -0
  59. package/package.json +57 -0
package/dist/errors.js ADDED
@@ -0,0 +1,183 @@
1
+ /**
2
+ * LLM Provider Error Classes
3
+ * Structured error handling for all LLM providers
4
+ */
5
+ export class LLMProviderError extends Error {
6
+ code;
7
+ provider;
8
+ retryable;
9
+ statusCode;
10
+ rateLimited;
11
+ quotaExceeded;
12
+ constructor(message, code, provider, retryable = false, statusCode) {
13
+ super(message);
14
+ this.name = 'LLMProviderError';
15
+ this.code = code;
16
+ this.provider = provider;
17
+ this.retryable = retryable;
18
+ this.statusCode = statusCode;
19
+ }
20
+ }
21
+ export class RateLimitError extends LLMProviderError {
22
+ constructor(provider, message = 'Rate limit exceeded') {
23
+ super(message, 'RATE_LIMIT', provider, true, 429);
24
+ this.rateLimited = true;
25
+ }
26
+ }
27
+ export class QuotaExceededError extends LLMProviderError {
28
+ constructor(provider, message = 'Quota exceeded') {
29
+ super(message, 'QUOTA_EXCEEDED', provider, false, 429);
30
+ this.quotaExceeded = true;
31
+ }
32
+ }
33
+ export class AuthenticationError extends LLMProviderError {
34
+ constructor(provider, message = 'Authentication failed') {
35
+ super(message, 'AUTHENTICATION_ERROR', provider, false, 401);
36
+ }
37
+ }
38
+ export class InvalidRequestError extends LLMProviderError {
39
+ constructor(provider, message = 'Invalid request') {
40
+ super(message, 'INVALID_REQUEST', provider, false, 400);
41
+ }
42
+ }
43
+ export class ModelNotFoundError extends LLMProviderError {
44
+ constructor(provider, model) {
45
+ super(`Model '${model}' not found`, 'MODEL_NOT_FOUND', provider, false, 404);
46
+ }
47
+ }
48
+ export class TimeoutError extends LLMProviderError {
49
+ constructor(provider, message = 'Request timeout') {
50
+ super(message, 'TIMEOUT', provider, true, 408);
51
+ }
52
+ }
53
+ export class NetworkError extends LLMProviderError {
54
+ constructor(provider, message = 'Network error') {
55
+ super(message, 'NETWORK_ERROR', provider, true, 503);
56
+ }
57
+ }
58
+ export class ServerError extends LLMProviderError {
59
+ constructor(provider, message = 'Internal server error', statusCode = 500) {
60
+ super(message, 'SERVER_ERROR', provider, true, statusCode);
61
+ }
62
+ }
63
+ export class ContentFilterError extends LLMProviderError {
64
+ constructor(provider, message = 'Content filtered') {
65
+ super(message, 'CONTENT_FILTER', provider, false, 400);
66
+ }
67
+ }
68
+ export class TokenLimitError extends LLMProviderError {
69
+ constructor(provider, message = 'Token limit exceeded') {
70
+ super(message, 'TOKEN_LIMIT', provider, false, 400);
71
+ }
72
+ }
73
+ export class ConfigurationError extends LLMProviderError {
74
+ constructor(provider, message) {
75
+ super(message, 'CONFIGURATION_ERROR', provider, false);
76
+ }
77
+ }
78
+ export class CircuitBreakerOpenError extends LLMProviderError {
79
+ retryAfterSec;
80
+ consecutiveFailures;
81
+ constructor(provider, retryAfterSec = 0, consecutiveFailures = 0) {
82
+ const retryHint = retryAfterSec > 0 ? ` Retry after ${retryAfterSec}s.` : '';
83
+ super(`Circuit breaker rejected request for provider: ${provider}.${retryHint}`, 'CIRCUIT_BREAKER_OPEN', provider, true);
84
+ this.retryAfterSec = retryAfterSec;
85
+ this.consecutiveFailures = consecutiveFailures;
86
+ }
87
+ }
88
+ /**
89
+ * Error factory for creating provider-specific errors from HTTP responses
90
+ */
91
+ export class LLMErrorFactory {
92
+ static fromHttpResponse(provider, statusCode, responseBody, message) {
93
+ const defaultMessage = message || responseBody?.message || responseBody?.error?.message || 'Unknown error';
94
+ switch (statusCode) {
95
+ case 400:
96
+ if (responseBody?.error?.code === 'content_filter') {
97
+ return new ContentFilterError(provider, defaultMessage);
98
+ }
99
+ if (responseBody?.error?.code === 'token_limit_exceeded') {
100
+ return new TokenLimitError(provider, defaultMessage);
101
+ }
102
+ return new InvalidRequestError(provider, defaultMessage);
103
+ case 401:
104
+ return new AuthenticationError(provider, defaultMessage);
105
+ case 404:
106
+ const model = responseBody?.error?.param || 'unknown';
107
+ return new ModelNotFoundError(provider, model);
108
+ case 408:
109
+ return new TimeoutError(provider, defaultMessage);
110
+ case 429:
111
+ if (responseBody?.error?.type === 'quota_exceeded') {
112
+ return new QuotaExceededError(provider, defaultMessage);
113
+ }
114
+ return new RateLimitError(provider, defaultMessage);
115
+ case 500:
116
+ case 502:
117
+ case 503:
118
+ case 504:
119
+ return new ServerError(provider, defaultMessage, statusCode);
120
+ default:
121
+ return new LLMProviderError(defaultMessage, 'UNKNOWN_ERROR', provider, statusCode >= 500, statusCode);
122
+ }
123
+ }
124
+ /**
125
+ * Create error from fetch response
126
+ */
127
+ static async fromFetchResponse(provider, response) {
128
+ let responseBody;
129
+ try {
130
+ const contentType = response.headers.get('content-type');
131
+ if (contentType?.includes('application/json')) {
132
+ responseBody = await response.json();
133
+ }
134
+ else {
135
+ responseBody = { message: await response.text() };
136
+ }
137
+ }
138
+ catch {
139
+ responseBody = { message: 'Failed to parse error response' };
140
+ }
141
+ return this.fromHttpResponse(provider, response.status, responseBody);
142
+ }
143
+ /**
144
+ * Check if error is retryable
145
+ */
146
+ static isRetryable(error) {
147
+ if (error instanceof LLMProviderError) {
148
+ return error.retryable;
149
+ }
150
+ // Network errors are generally retryable
151
+ if (error.message.includes('fetch')) {
152
+ return true;
153
+ }
154
+ return false;
155
+ }
156
+ /**
157
+ * Check if error indicates rate limiting
158
+ */
159
+ static isRateLimited(error) {
160
+ return error instanceof RateLimitError;
161
+ }
162
+ /**
163
+ * Check if error indicates quota exceeded
164
+ */
165
+ static isQuotaExceeded(error) {
166
+ return error instanceof QuotaExceededError;
167
+ }
168
+ /**
169
+ * Get retry delay from rate limit error
170
+ */
171
+ static getRetryDelay(error) {
172
+ if (error instanceof RateLimitError) {
173
+ // Default exponential backoff starting at 1 second
174
+ return 1000;
175
+ }
176
+ if (error instanceof ServerError) {
177
+ // Server errors get shorter delays
178
+ return 500;
179
+ }
180
+ return 0;
181
+ }
182
+ }
183
+ //# sourceMappingURL=errors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,95 @@
1
+ /**
2
+ * LLM Provider Factory
3
+ * Creates and manages LLM provider instances with intelligent fallback logic
4
+ */
5
+ import type { LLMProvider, LLMRequest, LLMResponse, OpenAIConfig, AnthropicConfig, CloudflareConfig, CerebrasConfig, GroqConfig, FallbackRule } from './types';
6
+ import type { CreditLedger } from './utils/credit-ledger';
7
+ export interface ProviderFactoryConfig {
8
+ openai?: OpenAIConfig;
9
+ anthropic?: AnthropicConfig;
10
+ cloudflare?: CloudflareConfig;
11
+ cerebras?: CerebrasConfig;
12
+ groq?: GroqConfig;
13
+ defaultProvider?: 'openai' | 'anthropic' | 'cloudflare' | 'cerebras' | 'groq' | 'auto';
14
+ fallbackRules?: FallbackRule[];
15
+ costOptimization?: boolean;
16
+ enableCircuitBreaker?: boolean;
17
+ enableRetries?: boolean;
18
+ ledger?: CreditLedger;
19
+ }
20
+ export declare class LLMProviderFactory {
21
+ private providers;
22
+ private config;
23
+ private costTracker;
24
+ private fallbackRules;
25
+ constructor(config: ProviderFactoryConfig);
26
+ /**
27
+ * Initialize all configured providers
28
+ */
29
+ private initializeProviders;
30
+ /**
31
+ * Generate response with intelligent provider selection and fallback
32
+ */
33
+ generateResponse(request: LLMRequest): Promise<LLMResponse>;
34
+ /**
35
+ * Build provider chain based on request and configuration
36
+ */
37
+ private buildProviderChain;
38
+ /**
39
+ * Get prioritized list of providers based on cost optimization and capabilities
40
+ */
41
+ private getPrioritizedProviders;
42
+ /**
43
+ * Get appropriate provider for a specific model
44
+ */
45
+ private getProviderForModel;
46
+ /**
47
+ * Check if we should fallback to another provider
48
+ */
49
+ private shouldFallback;
50
+ /**
51
+ * Evaluate a fallback rule against an error
52
+ */
53
+ private evaluateFallbackRule;
54
+ /**
55
+ * Get default fallback rules
56
+ */
57
+ private getDefaultFallbackRules;
58
+ /**
59
+ * Get provider instance by name
60
+ */
61
+ getProvider(name: string): LLMProvider | undefined;
62
+ /**
63
+ * Get all available providers
64
+ */
65
+ getAvailableProviders(): string[];
66
+ /**
67
+ * Get provider health status
68
+ */
69
+ getProviderHealth(): Promise<Record<string, any>>;
70
+ /**
71
+ * Get cost analytics
72
+ */
73
+ getCostAnalytics(): any;
74
+ /**
75
+ * Get cost optimization recommendations
76
+ */
77
+ private getCostRecommendations;
78
+ /**
79
+ * Reset all provider metrics and circuit breakers
80
+ */
81
+ reset(): void;
82
+ /**
83
+ * Update factory configuration
84
+ */
85
+ updateConfig(config: Partial<ProviderFactoryConfig>): void;
86
+ }
87
+ /**
88
+ * Create a provider factory with common configurations
89
+ */
90
+ export declare function createLLMProviderFactory(config: ProviderFactoryConfig): LLMProviderFactory;
91
+ /**
92
+ * Create a cost-optimized provider factory
93
+ */
94
+ export declare function createCostOptimizedFactory(config: ProviderFactoryConfig): LLMProviderFactory;
95
+ //# sourceMappingURL=factory.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"factory.d.ts","sourceRoot":"","sources":["../src/factory.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EACV,WAAW,EAEX,UAAU,EACV,WAAW,EACX,YAAY,EACZ,eAAe,EACf,gBAAgB,EAChB,cAAc,EACd,UAAU,EACV,YAAY,EAEb,MAAM,SAAS,CAAC;AAQjB,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAU1D,MAAM,WAAW,qBAAqB;IACpC,MAAM,CAAC,EAAE,YAAY,CAAC;IACtB,SAAS,CAAC,EAAE,eAAe,CAAC;IAC5B,UAAU,CAAC,EAAE,gBAAgB,CAAC;IAC9B,QAAQ,CAAC,EAAE,cAAc,CAAC;IAC1B,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,eAAe,CAAC,EAAE,QAAQ,GAAG,WAAW,GAAG,YAAY,GAAG,UAAU,GAAG,MAAM,GAAG,MAAM,CAAC;IACvF,aAAa,CAAC,EAAE,YAAY,EAAE,CAAC;IAC/B,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,MAAM,CAAC,EAAE,YAAY,CAAC;CACvB;AAED,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,SAAS,CAAuC;IACxD,OAAO,CAAC,MAAM,CAAwB;IACtC,OAAO,CAAC,WAAW,CAAc;IACjC,OAAO,CAAC,aAAa,CAAiB;gBAE1B,MAAM,EAAE,qBAAqB;IAQzC;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAuE3B;;OAEG;IACG,gBAAgB,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,WAAW,CAAC;IAkDjE;;OAEG;IACH,OAAO,CAAC,kBAAkB;IA8B1B;;OAEG;IACH,OAAO,CAAC,uBAAuB;IA2B/B;;OAEG;IACH,OAAO,CAAC,mBAAmB;IA8B3B;;OAEG;IACH,OAAO,CAAC,cAAc;IA8BtB;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAyB5B;;OAEG;IACH,OAAO,CAAC,uBAAuB;IAkB/B;;OAEG;IACH,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW,GAAG,SAAS;IAIlD;;OAEG;IACH,qBAAqB,IAAI,MAAM,EAAE;IAIjC;;OAEG;IACG,iBAAiB,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAiCvD;;OAEG;IACH,gBAAgB,IAAI,GAAG;IAYvB;;OAEG;IACH,OAAO,CAAC,sBAAsB;IAuB9B;;OAEG;IACH,KAAK,IAAI,IAAI;IAab;;OAEG;IACH,YAAY,CAAC,MAAM,EAAE,OAAO,CAAC,qBAAqB,CAAC,GAAG,IAAI;CAa3D;AAED;;GAEG;AACH,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,qBAAqB,GAAG,kBAAkB,CAE1F;AAED;;GAEG;AACH,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,qBAAqB,GAAG,kBAAkB,CAa5F"}