@stackbilt/llm-providers 1.0.0 → 1.2.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.
- package/LICENSE +0 -0
- package/README.md +112 -85
- package/dist/errors.d.ts +18 -1
- package/dist/errors.d.ts.map +1 -1
- package/dist/errors.js +12 -4
- package/dist/errors.js.map +1 -1
- package/dist/factory.d.ts +62 -4
- package/dist/factory.d.ts.map +1 -1
- package/dist/factory.js +630 -92
- package/dist/factory.js.map +1 -1
- package/dist/image/index.d.ts +5 -0
- package/dist/image/index.d.ts.map +1 -0
- package/dist/image/index.js +3 -0
- package/dist/image/index.js.map +1 -0
- package/dist/image/provider.d.ts +44 -0
- package/dist/image/provider.d.ts.map +1 -0
- package/dist/image/provider.js +182 -0
- package/dist/image/provider.js.map +1 -0
- package/dist/image/types.d.ts +45 -0
- package/dist/image/types.d.ts.map +1 -0
- package/dist/image/types.js +83 -0
- package/dist/image/types.js.map +1 -0
- package/dist/index.d.ts +46 -12
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +73 -14
- package/dist/index.js.map +1 -1
- package/dist/providers/anthropic.d.ts +5 -2
- package/dist/providers/anthropic.d.ts.map +1 -1
- package/dist/providers/anthropic.js +118 -43
- package/dist/providers/anthropic.js.map +1 -1
- package/dist/providers/base.d.ts +18 -2
- package/dist/providers/base.d.ts.map +1 -1
- package/dist/providers/base.js +107 -5
- package/dist/providers/base.js.map +1 -1
- package/dist/providers/cerebras.d.ts +0 -0
- package/dist/providers/cerebras.d.ts.map +1 -1
- package/dist/providers/cerebras.js +21 -13
- package/dist/providers/cerebras.js.map +1 -1
- package/dist/providers/cloudflare.d.ts +0 -0
- package/dist/providers/cloudflare.d.ts.map +1 -1
- package/dist/providers/cloudflare.js +12 -8
- package/dist/providers/cloudflare.js.map +1 -1
- package/dist/providers/groq.d.ts +2 -1
- package/dist/providers/groq.d.ts.map +1 -1
- package/dist/providers/groq.js +95 -15
- package/dist/providers/groq.js.map +1 -1
- package/dist/providers/openai.d.ts +2 -0
- package/dist/providers/openai.d.ts.map +1 -1
- package/dist/providers/openai.js +56 -24
- package/dist/providers/openai.js.map +1 -1
- package/dist/types.d.ts +114 -4
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +0 -0
- package/dist/types.js.map +0 -0
- package/dist/utils/circuit-breaker.d.ts +5 -2
- package/dist/utils/circuit-breaker.d.ts.map +1 -1
- package/dist/utils/circuit-breaker.js +18 -13
- package/dist/utils/circuit-breaker.js.map +1 -1
- package/dist/utils/cost-tracker.d.ts +9 -2
- package/dist/utils/cost-tracker.d.ts.map +1 -1
- package/dist/utils/cost-tracker.js +20 -9
- package/dist/utils/cost-tracker.js.map +1 -1
- package/dist/utils/credit-ledger.d.ts +3 -0
- package/dist/utils/credit-ledger.d.ts.map +1 -1
- package/dist/utils/credit-ledger.js +5 -2
- package/dist/utils/credit-ledger.js.map +1 -1
- package/dist/utils/exhaustion.d.ts +38 -0
- package/dist/utils/exhaustion.d.ts.map +1 -0
- package/dist/utils/exhaustion.js +74 -0
- package/dist/utils/exhaustion.js.map +1 -0
- package/dist/utils/hooks.d.ts +113 -0
- package/dist/utils/hooks.d.ts.map +1 -0
- package/dist/utils/hooks.js +44 -0
- package/dist/utils/hooks.js.map +1 -0
- package/dist/utils/latency-histogram.d.ts +38 -0
- package/dist/utils/latency-histogram.d.ts.map +1 -0
- package/dist/utils/latency-histogram.js +81 -0
- package/dist/utils/latency-histogram.js.map +1 -0
- package/dist/utils/logger.d.ts +18 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +22 -0
- package/dist/utils/logger.js.map +1 -0
- package/dist/utils/retry.d.ts +4 -2
- package/dist/utils/retry.d.ts.map +1 -1
- package/dist/utils/retry.js +12 -8
- package/dist/utils/retry.js.map +1 -1
- package/package.json +2 -2
package/dist/utils/retry.d.ts
CHANGED
|
@@ -3,9 +3,11 @@
|
|
|
3
3
|
* Exponential backoff retry logic for LLM provider requests
|
|
4
4
|
*/
|
|
5
5
|
import type { RetryConfig } from '../types';
|
|
6
|
+
import type { Logger } from './logger';
|
|
6
7
|
export declare class RetryManager {
|
|
7
8
|
private config;
|
|
8
|
-
|
|
9
|
+
private logger;
|
|
10
|
+
constructor(config?: Partial<RetryConfig>, logger?: Logger);
|
|
9
11
|
/**
|
|
10
12
|
* Execute a function with retry logic
|
|
11
13
|
*/
|
|
@@ -38,7 +40,7 @@ export declare const defaultRetryManager: RetryManager;
|
|
|
38
40
|
/**
|
|
39
41
|
* Retry decorator for async functions
|
|
40
42
|
*/
|
|
41
|
-
export declare function withRetry<T extends
|
|
43
|
+
export declare function withRetry<T extends unknown[], R>(retryConfig?: Partial<RetryConfig>): (_target: object, propertyKey: string, descriptor: TypedPropertyDescriptor<(...args: T) => Promise<R>>) => TypedPropertyDescriptor<(...args: T) => Promise<R>>;
|
|
42
44
|
/**
|
|
43
45
|
* Simple retry function for one-off operations
|
|
44
46
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"retry.d.ts","sourceRoot":"","sources":["../../src/utils/retry.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"retry.d.ts","sourceRoot":"","sources":["../../src/utils/retry.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAC5C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAIvC,qBAAa,YAAY;IACvB,OAAO,CAAC,MAAM,CAAc;IAC5B,OAAO,CAAC,MAAM,CAAS;gBAEX,MAAM,GAAE,OAAO,CAAC,WAAW,CAAM,EAAE,MAAM,CAAC,EAAE,MAAM;IAiB9D;;OAEG;IACG,OAAO,CAAC,CAAC,EACb,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EACpB,OAAO,GAAE,MAAoB,GAC5B,OAAO,CAAC,CAAC,CAAC;IA8Bb;;OAEG;IACH,OAAO,CAAC,WAAW;IAqBnB;;OAEG;IACH,OAAO,CAAC,cAAc;IAgBtB;;OAEG;IACH,OAAO,CAAC,KAAK;IAIb;;OAEG;IACH,YAAY,CAAC,MAAM,EAAE,OAAO,CAAC,WAAW,CAAC,GAAG,IAAI;IAIhD;;OAEG;IACH,SAAS,IAAI,WAAW;CAGzB;AAED;;GAEG;AACH,eAAO,MAAM,mBAAmB,cAAqB,CAAC;AAEtD;;GAEG;AACH,wBAAgB,SAAS,CAAC,CAAC,SAAS,OAAO,EAAE,EAAE,CAAC,EAC9C,WAAW,CAAC,EAAE,OAAO,CAAC,WAAW,CAAC,IAGhC,SAAS,MAAM,EACf,aAAa,MAAM,EACnB,YAAY,uBAAuB,CAAC,CAAC,GAAG,IAAI,EAAE,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC,uCAAjB,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,EAcjE;AAED;;GAEG;AACH,wBAAsB,KAAK,CAAC,CAAC,EAC3B,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EACpB,MAAM,CAAC,EAAE,OAAO,CAAC,WAAW,CAAC,GAC5B,OAAO,CAAC,CAAC,CAAC,CAGZ"}
|
package/dist/utils/retry.js
CHANGED
|
@@ -2,10 +2,12 @@
|
|
|
2
2
|
* Retry Utility
|
|
3
3
|
* Exponential backoff retry logic for LLM provider requests
|
|
4
4
|
*/
|
|
5
|
-
import {
|
|
5
|
+
import { noopLogger } from './logger';
|
|
6
|
+
import { LLMErrorFactory, LLMProviderError } from '../errors';
|
|
6
7
|
export class RetryManager {
|
|
7
8
|
config;
|
|
8
|
-
|
|
9
|
+
logger;
|
|
10
|
+
constructor(config = {}, logger) {
|
|
9
11
|
this.config = {
|
|
10
12
|
maxRetries: config.maxRetries ?? 3,
|
|
11
13
|
initialDelay: config.initialDelay ?? 1000,
|
|
@@ -19,6 +21,7 @@ export class RetryManager {
|
|
|
19
21
|
'CIRCUIT_BREAKER_OPEN'
|
|
20
22
|
]
|
|
21
23
|
};
|
|
24
|
+
this.logger = logger ?? noopLogger;
|
|
22
25
|
}
|
|
23
26
|
/**
|
|
24
27
|
* Execute a function with retry logic
|
|
@@ -39,7 +42,7 @@ export class RetryManager {
|
|
|
39
42
|
}
|
|
40
43
|
// Calculate delay for next attempt
|
|
41
44
|
const delay = this.calculateDelay(attempt, error);
|
|
42
|
-
|
|
45
|
+
this.logger.warn(`[RetryManager] ${context} failed (attempt ${attempt}/${this.config.maxRetries + 1}): ${lastError.message}. Retrying in ${delay}ms...`);
|
|
43
46
|
await this.delay(delay);
|
|
44
47
|
}
|
|
45
48
|
}
|
|
@@ -58,9 +61,10 @@ export class RetryManager {
|
|
|
58
61
|
return false;
|
|
59
62
|
}
|
|
60
63
|
// Check if error code is in retryable list
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
+
if (error instanceof LLMProviderError) {
|
|
65
|
+
if (!this.config.retryableErrors.includes(error.code)) {
|
|
66
|
+
return false;
|
|
67
|
+
}
|
|
64
68
|
}
|
|
65
69
|
return true;
|
|
66
70
|
}
|
|
@@ -106,11 +110,11 @@ export const defaultRetryManager = new RetryManager();
|
|
|
106
110
|
* Retry decorator for async functions
|
|
107
111
|
*/
|
|
108
112
|
export function withRetry(retryConfig) {
|
|
109
|
-
return function (
|
|
113
|
+
return function (_target, propertyKey, descriptor) {
|
|
110
114
|
const originalMethod = descriptor.value;
|
|
111
115
|
const retryManager = new RetryManager(retryConfig);
|
|
112
116
|
descriptor.value = async function (...args) {
|
|
113
|
-
return retryManager.execute(() => originalMethod.apply(this, args), `${
|
|
117
|
+
return retryManager.execute(() => originalMethod.apply(this, args), `${this.constructor.name}.${propertyKey}`);
|
|
114
118
|
};
|
|
115
119
|
return descriptor;
|
|
116
120
|
};
|
package/dist/utils/retry.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"retry.js","sourceRoot":"","sources":["../../src/utils/retry.ts"],"names":[],"mappings":"AAAA;;;GAGG;
|
|
1
|
+
{"version":3,"file":"retry.js","sourceRoot":"","sources":["../../src/utils/retry.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@stackbilt/llm-providers",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.2.0",
|
|
4
4
|
"description": "Multi-LLM failover with circuit breakers, cost tracking, and intelligent retry. Cloudflare Workers native.",
|
|
5
|
-
"author": "
|
|
5
|
+
"author": "Stackbilt <admin@stackbilt.dev>",
|
|
6
6
|
"license": "Apache-2.0",
|
|
7
7
|
"repository": {
|
|
8
8
|
"type": "git",
|