acl-core-ts 1.75.1
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 +24 -0
- package/README.md +129 -0
- package/dist/client.d.ts +51 -0
- package/dist/client.d.ts.map +1 -0
- package/dist/client.js +536 -0
- package/dist/client.js.map +1 -0
- package/dist/config.d.ts +27 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +84 -0
- package/dist/config.js.map +1 -0
- package/dist/exceptions.d.ts +32 -0
- package/dist/exceptions.d.ts.map +1 -0
- package/dist/exceptions.js +99 -0
- package/dist/exceptions.js.map +1 -0
- package/dist/http.d.ts +21 -0
- package/dist/http.d.ts.map +1 -0
- package/dist/http.js +75 -0
- package/dist/http.js.map +1 -0
- package/dist/index.d.ts +4 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +22 -0
- package/dist/index.js.map +1 -0
- package/dist/middlewares/base.d.ts +5 -0
- package/dist/middlewares/base.d.ts.map +1 -0
- package/dist/middlewares/base.js +3 -0
- package/dist/middlewares/base.js.map +1 -0
- package/dist/middlewares/loop_detection.d.ts +9 -0
- package/dist/middlewares/loop_detection.d.ts.map +1 -0
- package/dist/middlewares/loop_detection.js +53 -0
- package/dist/middlewares/loop_detection.js.map +1 -0
- package/dist/middlewares/normalization.d.ts +5 -0
- package/dist/middlewares/normalization.d.ts.map +1 -0
- package/dist/middlewares/normalization.js +37 -0
- package/dist/middlewares/normalization.js.map +1 -0
- package/dist/middlewares/recovery.d.ts +17 -0
- package/dist/middlewares/recovery.d.ts.map +1 -0
- package/dist/middlewares/recovery.js +198 -0
- package/dist/middlewares/recovery.js.map +1 -0
- package/dist/middlewares/retry.d.ts +5 -0
- package/dist/middlewares/retry.d.ts.map +1 -0
- package/dist/middlewares/retry.js +39 -0
- package/dist/middlewares/retry.js.map +1 -0
- package/dist/providers/anthropic.d.ts +7 -0
- package/dist/providers/anthropic.d.ts.map +1 -0
- package/dist/providers/anthropic.js +77 -0
- package/dist/providers/anthropic.js.map +1 -0
- package/dist/providers/base.d.ts +22 -0
- package/dist/providers/base.d.ts.map +1 -0
- package/dist/providers/base.js +3 -0
- package/dist/providers/base.js.map +1 -0
- package/dist/providers/google.d.ts +7 -0
- package/dist/providers/google.d.ts.map +1 -0
- package/dist/providers/google.js +89 -0
- package/dist/providers/google.js.map +1 -0
- package/dist/providers/index.d.ts +8 -0
- package/dist/providers/index.d.ts.map +1 -0
- package/dist/providers/index.js +29 -0
- package/dist/providers/index.js.map +1 -0
- package/dist/providers/openai.d.ts +7 -0
- package/dist/providers/openai.d.ts.map +1 -0
- package/dist/providers/openai.js +82 -0
- package/dist/providers/openai.js.map +1 -0
- package/dist/security.d.ts +2 -0
- package/dist/security.d.ts.map +1 -0
- package/dist/security.js +18 -0
- package/dist/security.js.map +1 -0
- package/dist/session/manager.d.ts +21 -0
- package/dist/session/manager.d.ts.map +1 -0
- package/dist/session/manager.js +94 -0
- package/dist/session/manager.js.map +1 -0
- package/dist/similarity/engine.d.ts +15 -0
- package/dist/similarity/engine.d.ts.map +1 -0
- package/dist/similarity/engine.js +109 -0
- package/dist/similarity/engine.js.map +1 -0
- package/dist/types.d.ts +128 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +3 -0
- package/dist/types.js.map +1 -0
- package/package.json +54 -0
package/dist/config.js
ADDED
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ACLConfiguration = exports.DEFAULT_CONFIG = exports.DEFAULT_BASE_URL = void 0;
|
|
4
|
+
const exceptions_1 = require("./exceptions");
|
|
5
|
+
exports.DEFAULT_BASE_URL = (typeof process !== 'undefined' && process.env?.['ACL_BASE_URL']) ||
|
|
6
|
+
"http://backend.fridayaicore.in";
|
|
7
|
+
exports.DEFAULT_CONFIG = {
|
|
8
|
+
baseUrl: exports.DEFAULT_BASE_URL,
|
|
9
|
+
timeoutMs: 5000,
|
|
10
|
+
headers: {
|
|
11
|
+
'User-Agent': 'acl-core-ts/1.75.1',
|
|
12
|
+
},
|
|
13
|
+
};
|
|
14
|
+
class ACLConfiguration {
|
|
15
|
+
constructor(options) {
|
|
16
|
+
if (!options.apiKey) {
|
|
17
|
+
throw new exceptions_1.ACLValidationError('API key is required');
|
|
18
|
+
}
|
|
19
|
+
this.config = {
|
|
20
|
+
apiKey: options.apiKey,
|
|
21
|
+
baseUrl: (options.baseUrl ?? exports.DEFAULT_CONFIG.baseUrl).replace(/\/+$/, ""),
|
|
22
|
+
timeoutMs: options.timeoutMs ?? exports.DEFAULT_CONFIG.timeoutMs,
|
|
23
|
+
headers: {
|
|
24
|
+
...exports.DEFAULT_CONFIG.headers,
|
|
25
|
+
'Authorization': `Bearer ${options.apiKey}`,
|
|
26
|
+
'X-API-Key': options.apiKey,
|
|
27
|
+
'Content-Type': 'application/json',
|
|
28
|
+
'Accept': 'application/json',
|
|
29
|
+
},
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
getConfig() {
|
|
33
|
+
return { ...this.config };
|
|
34
|
+
}
|
|
35
|
+
getBaseUrl() {
|
|
36
|
+
return this.config.baseUrl;
|
|
37
|
+
}
|
|
38
|
+
getApiKey() {
|
|
39
|
+
return this.config.apiKey;
|
|
40
|
+
}
|
|
41
|
+
getTimeoutMs() {
|
|
42
|
+
return this.config.timeoutMs;
|
|
43
|
+
}
|
|
44
|
+
getHeaders() {
|
|
45
|
+
return { ...this.config.headers };
|
|
46
|
+
}
|
|
47
|
+
setTimeoutMs(timeoutMs) {
|
|
48
|
+
if (timeoutMs <= 0) {
|
|
49
|
+
throw new exceptions_1.ACLValidationError('Timeout must be greater than 0');
|
|
50
|
+
}
|
|
51
|
+
this.config.timeoutMs = timeoutMs;
|
|
52
|
+
}
|
|
53
|
+
setHeader(key, value) {
|
|
54
|
+
this.config.headers[key] = value;
|
|
55
|
+
}
|
|
56
|
+
removeHeader(key) {
|
|
57
|
+
delete this.config.headers[key];
|
|
58
|
+
}
|
|
59
|
+
setHeaders(headers) {
|
|
60
|
+
this.config.headers = {
|
|
61
|
+
...this.config.headers,
|
|
62
|
+
...headers,
|
|
63
|
+
};
|
|
64
|
+
}
|
|
65
|
+
validate() {
|
|
66
|
+
if (!this.config.apiKey) {
|
|
67
|
+
throw new exceptions_1.ACLValidationError('API key is required');
|
|
68
|
+
}
|
|
69
|
+
if (!this.config.baseUrl) {
|
|
70
|
+
throw new exceptions_1.ACLValidationError('Base URL is required');
|
|
71
|
+
}
|
|
72
|
+
try {
|
|
73
|
+
new URL(this.config.baseUrl);
|
|
74
|
+
}
|
|
75
|
+
catch (error) {
|
|
76
|
+
throw new exceptions_1.ACLValidationError('Invalid base URL format');
|
|
77
|
+
}
|
|
78
|
+
if (this.config.timeoutMs <= 0) {
|
|
79
|
+
throw new exceptions_1.ACLValidationError('Timeout must be greater than 0');
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
exports.ACLConfiguration = ACLConfiguration;
|
|
84
|
+
//# sourceMappingURL=config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
export declare abstract class ACLBaseError extends Error {
|
|
2
|
+
readonly statusCode: number | undefined;
|
|
3
|
+
readonly requestId: string | undefined;
|
|
4
|
+
constructor(message: string, statusCode?: number, requestId?: string);
|
|
5
|
+
toJSON(): object;
|
|
6
|
+
}
|
|
7
|
+
export declare class ACLAuthError extends ACLBaseError {
|
|
8
|
+
constructor(message?: string, requestId?: string);
|
|
9
|
+
}
|
|
10
|
+
export declare class ACLPermissionError extends ACLBaseError {
|
|
11
|
+
constructor(message?: string, requestId?: string);
|
|
12
|
+
}
|
|
13
|
+
export declare class ACLRateLimitError extends ACLBaseError {
|
|
14
|
+
constructor(message?: string, requestId?: string);
|
|
15
|
+
}
|
|
16
|
+
export declare class ACLValidationError extends ACLBaseError {
|
|
17
|
+
constructor(message?: string, statusCode?: number, requestId?: string);
|
|
18
|
+
}
|
|
19
|
+
export declare class ACLServerError extends ACLBaseError {
|
|
20
|
+
constructor(message?: string, statusCode?: number, requestId?: string);
|
|
21
|
+
}
|
|
22
|
+
export declare class ACLNetworkError extends ACLBaseError {
|
|
23
|
+
constructor(message?: string, requestId?: string);
|
|
24
|
+
}
|
|
25
|
+
export declare function createACLErrorFromStatusCode(statusCode: number, message?: string, requestId?: string): ACLBaseError;
|
|
26
|
+
export declare class ACLSilentFailureError extends ACLBaseError {
|
|
27
|
+
constructor(message?: string, requestId?: string);
|
|
28
|
+
}
|
|
29
|
+
export declare class ACLBudgetError extends ACLBaseError {
|
|
30
|
+
constructor(message?: string, requestId?: string);
|
|
31
|
+
}
|
|
32
|
+
//# sourceMappingURL=exceptions.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"exceptions.d.ts","sourceRoot":"","sources":["../src/exceptions.ts"],"names":[],"mappings":"AAGA,8BAAsB,YAAa,SAAQ,KAAK;IAC9C,SAAgB,UAAU,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/C,SAAgB,SAAS,EAAE,MAAM,GAAG,SAAS,CAAC;gBAG5C,OAAO,EAAE,MAAM,EACf,UAAU,CAAC,EAAE,MAAM,EACnB,SAAS,CAAC,EAAE,MAAM;IAapB,MAAM,IAAI,MAAM;CAQjB;AAMD,qBAAa,YAAa,SAAQ,YAAY;gBAChC,OAAO,SAAsD,EAAE,SAAS,CAAC,EAAE,MAAM;CAG9F;AAMD,qBAAa,kBAAmB,SAAQ,YAAY;gBACtC,OAAO,SAA2E,EAAE,SAAS,CAAC,EAAE,MAAM;CAGnH;AAMD,qBAAa,iBAAkB,SAAQ,YAAY;gBACrC,OAAO,SAAiD,EAAE,SAAS,CAAC,EAAE,MAAM;CAGzF;AAMD,qBAAa,kBAAmB,SAAQ,YAAY;gBACtC,OAAO,SAAmE,EAAE,UAAU,SAAM,EAAE,SAAS,CAAC,EAAE,MAAM;CAG7H;AAMD,qBAAa,cAAe,SAAQ,YAAY;gBAClC,OAAO,SAAmD,EAAE,UAAU,SAAM,EAAE,SAAS,CAAC,EAAE,MAAM;CAG7G;AAMD,qBAAa,eAAgB,SAAQ,YAAY;gBACnC,OAAO,SAA+D,EAAE,SAAS,CAAC,EAAE,MAAM;CAGvG;AAKD,wBAAgB,4BAA4B,CAC1C,UAAU,EAAE,MAAM,EAClB,OAAO,CAAC,EAAE,MAAM,EAChB,SAAS,CAAC,EAAE,MAAM,GACjB,YAAY,CAwBd;AAMD,qBAAa,qBAAsB,SAAQ,YAAY;gBACzC,OAAO,SAAsD,EAAE,SAAS,CAAC,EAAE,MAAM;CAG9F;AAMD,qBAAa,cAAe,SAAQ,YAAY;gBAClC,OAAO,SAAoF,EAAE,SAAS,CAAC,EAAE,MAAM;CAG5H"}
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ACLBudgetError = exports.ACLSilentFailureError = exports.ACLNetworkError = exports.ACLServerError = exports.ACLValidationError = exports.ACLRateLimitError = exports.ACLPermissionError = exports.ACLAuthError = exports.ACLBaseError = void 0;
|
|
4
|
+
exports.createACLErrorFromStatusCode = createACLErrorFromStatusCode;
|
|
5
|
+
class ACLBaseError extends Error {
|
|
6
|
+
constructor(message, statusCode, requestId) {
|
|
7
|
+
super(message);
|
|
8
|
+
this.name = this.constructor.name;
|
|
9
|
+
this.statusCode = statusCode;
|
|
10
|
+
this.requestId = requestId;
|
|
11
|
+
if (Error.captureStackTrace) {
|
|
12
|
+
Error.captureStackTrace(this, this.constructor);
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
toJSON() {
|
|
16
|
+
return {
|
|
17
|
+
name: this.name,
|
|
18
|
+
message: this.message,
|
|
19
|
+
statusCode: this.statusCode,
|
|
20
|
+
requestId: this.requestId,
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
exports.ACLBaseError = ACLBaseError;
|
|
25
|
+
class ACLAuthError extends ACLBaseError {
|
|
26
|
+
constructor(message = 'Authentication failed. Please check your API key.', requestId) {
|
|
27
|
+
super(message, 401, requestId);
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
exports.ACLAuthError = ACLAuthError;
|
|
31
|
+
class ACLPermissionError extends ACLBaseError {
|
|
32
|
+
constructor(message = 'Permission denied. Your API key does not have access to this resource.', requestId) {
|
|
33
|
+
super(message, 403, requestId);
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
exports.ACLPermissionError = ACLPermissionError;
|
|
37
|
+
class ACLRateLimitError extends ACLBaseError {
|
|
38
|
+
constructor(message = 'Rate limit exceeded. Please try again later.', requestId) {
|
|
39
|
+
super(message, 429, requestId);
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
exports.ACLRateLimitError = ACLRateLimitError;
|
|
43
|
+
class ACLValidationError extends ACLBaseError {
|
|
44
|
+
constructor(message = 'Request validation failed. Please check your input parameters.', statusCode = 400, requestId) {
|
|
45
|
+
super(message, statusCode, requestId);
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
exports.ACLValidationError = ACLValidationError;
|
|
49
|
+
class ACLServerError extends ACLBaseError {
|
|
50
|
+
constructor(message = 'Internal server error. Please try again later.', statusCode = 500, requestId) {
|
|
51
|
+
super(message, statusCode, requestId);
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
exports.ACLServerError = ACLServerError;
|
|
55
|
+
class ACLNetworkError extends ACLBaseError {
|
|
56
|
+
constructor(message = 'Network error. Please check your connection and try again.', requestId) {
|
|
57
|
+
super(message, undefined, requestId);
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
exports.ACLNetworkError = ACLNetworkError;
|
|
61
|
+
function createACLErrorFromStatusCode(statusCode, message, requestId) {
|
|
62
|
+
switch (statusCode) {
|
|
63
|
+
case 401:
|
|
64
|
+
return new ACLAuthError(message, requestId);
|
|
65
|
+
case 403:
|
|
66
|
+
return new ACLPermissionError(message, requestId);
|
|
67
|
+
case 429:
|
|
68
|
+
return new ACLRateLimitError(message, requestId);
|
|
69
|
+
case 400:
|
|
70
|
+
case 422:
|
|
71
|
+
return new ACLValidationError(message, statusCode, requestId);
|
|
72
|
+
case 500:
|
|
73
|
+
case 502:
|
|
74
|
+
case 503:
|
|
75
|
+
case 504:
|
|
76
|
+
return new ACLServerError(message, statusCode, requestId);
|
|
77
|
+
default:
|
|
78
|
+
if (statusCode >= 400 && statusCode < 500) {
|
|
79
|
+
return new ACLValidationError(message, statusCode, requestId);
|
|
80
|
+
}
|
|
81
|
+
else if (statusCode >= 500) {
|
|
82
|
+
return new ACLServerError(message, statusCode, requestId);
|
|
83
|
+
}
|
|
84
|
+
return new ACLValidationError(message, statusCode, requestId);
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
class ACLSilentFailureError extends ACLBaseError {
|
|
88
|
+
constructor(message = 'LLM returned an empty response. Triggering retry.', requestId) {
|
|
89
|
+
super(message, 204, requestId);
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
exports.ACLSilentFailureError = ACLSilentFailureError;
|
|
93
|
+
class ACLBudgetError extends ACLBaseError {
|
|
94
|
+
constructor(message = 'ACL Core returned zero budget for non-fast-path request. Check ACL server logs.', requestId) {
|
|
95
|
+
super(message, 402, requestId);
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
exports.ACLBudgetError = ACLBudgetError;
|
|
99
|
+
//# sourceMappingURL=exceptions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"exceptions.js","sourceRoot":"","sources":["../src/exceptions.ts"],"names":[],"mappings":"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"}
|
package/dist/http.d.ts
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
export interface HttpRequestOptions {
|
|
2
|
+
method: 'GET' | 'POST' | 'PUT' | 'DELETE' | 'PATCH';
|
|
3
|
+
url: string;
|
|
4
|
+
headers?: Record<string, string> | undefined;
|
|
5
|
+
body?: string | undefined;
|
|
6
|
+
params?: Record<string, string> | undefined;
|
|
7
|
+
timeoutMs?: number | undefined;
|
|
8
|
+
}
|
|
9
|
+
export interface HttpResponse<T = unknown> {
|
|
10
|
+
status: number;
|
|
11
|
+
headers: Record<string, string>;
|
|
12
|
+
data: T;
|
|
13
|
+
}
|
|
14
|
+
export declare class HttpClient {
|
|
15
|
+
private readonly client;
|
|
16
|
+
constructor(baseUrl: string, timeoutMs?: number, headers?: Record<string, string>);
|
|
17
|
+
request<T = unknown>(options: HttpRequestOptions): Promise<HttpResponse<T>>;
|
|
18
|
+
get<T = unknown>(url: string, params?: Record<string, string>, timeoutMs?: number): Promise<HttpResponse<T>>;
|
|
19
|
+
post<T = unknown>(url: string, body?: any, timeoutMs?: number): Promise<HttpResponse<T>>;
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=http.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../src/http.ts"],"names":[],"mappings":"AAMA,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,QAAQ,GAAG,OAAO,CAAC;IACpD,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,CAAC;IAC7C,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1B,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,CAAC;IAC5C,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAChC;AAED,MAAM,WAAW,YAAY,CAAC,CAAC,GAAG,OAAO;IACvC,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,IAAI,EAAE,CAAC,CAAC;CACT;AAKD,qBAAa,UAAU;IACrB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAgB;gBAE3B,OAAO,EAAE,MAAM,EAAE,SAAS,GAAE,MAAc,EAAE,OAAO,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAM;IAsCtF,OAAO,CAAC,CAAC,GAAG,OAAO,EAAE,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;IAwB3E,GAAG,CAAC,CAAC,GAAG,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;IAS5G,IAAI,CAAC,CAAC,GAAG,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;CAS/F"}
|
package/dist/http.js
ADDED
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.HttpClient = void 0;
|
|
7
|
+
const axios_1 = __importDefault(require("axios"));
|
|
8
|
+
const exceptions_1 = require("./exceptions");
|
|
9
|
+
class HttpClient {
|
|
10
|
+
constructor(baseUrl, timeoutMs = 30000, headers = {}) {
|
|
11
|
+
this.client = axios_1.default.create({
|
|
12
|
+
baseURL: baseUrl.replace(/\/+$/, ""),
|
|
13
|
+
timeout: timeoutMs,
|
|
14
|
+
headers: {
|
|
15
|
+
'Content-Type': 'application/json',
|
|
16
|
+
'Accept': 'application/json',
|
|
17
|
+
...headers
|
|
18
|
+
}
|
|
19
|
+
});
|
|
20
|
+
this.client.interceptors.response.use((response) => response, (error) => {
|
|
21
|
+
if (!error.response) {
|
|
22
|
+
throw new exceptions_1.ACLNetworkError(error.code === 'ECONNABORTED' ? 'Request timed out' : 'Network connection failed');
|
|
23
|
+
}
|
|
24
|
+
const status = error.response.status;
|
|
25
|
+
const data = error.response.data;
|
|
26
|
+
const requestId = error.response.headers['x-request-id'] || error.response.headers['request-id'];
|
|
27
|
+
let message = 'Unknown error';
|
|
28
|
+
if (typeof data === 'string')
|
|
29
|
+
message = data;
|
|
30
|
+
else if (data && typeof data.error === 'object')
|
|
31
|
+
message = data.error.message || message;
|
|
32
|
+
else if (data && data.message)
|
|
33
|
+
message = data.message;
|
|
34
|
+
throw (0, exceptions_1.createACLErrorFromStatusCode)(status, message, requestId);
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
async request(options) {
|
|
38
|
+
const { method, url, headers = {}, body, params, timeoutMs } = options;
|
|
39
|
+
const requestConfig = {
|
|
40
|
+
method,
|
|
41
|
+
url,
|
|
42
|
+
data: body,
|
|
43
|
+
params,
|
|
44
|
+
headers
|
|
45
|
+
};
|
|
46
|
+
if (timeoutMs !== undefined) {
|
|
47
|
+
requestConfig.timeout = timeoutMs;
|
|
48
|
+
}
|
|
49
|
+
const response = await this.client.request(requestConfig);
|
|
50
|
+
return {
|
|
51
|
+
status: response.status,
|
|
52
|
+
headers: response.headers,
|
|
53
|
+
data: response.data
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
async get(url, params, timeoutMs) {
|
|
57
|
+
return this.request({
|
|
58
|
+
method: 'GET',
|
|
59
|
+
url,
|
|
60
|
+
params: params || undefined,
|
|
61
|
+
timeoutMs: timeoutMs || undefined
|
|
62
|
+
});
|
|
63
|
+
}
|
|
64
|
+
async post(url, body, timeoutMs) {
|
|
65
|
+
const data = typeof body === 'string' ? body : JSON.stringify(body);
|
|
66
|
+
return this.request({
|
|
67
|
+
method: 'POST',
|
|
68
|
+
url,
|
|
69
|
+
body: data,
|
|
70
|
+
timeoutMs: timeoutMs || undefined
|
|
71
|
+
});
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
exports.HttpClient = HttpClient;
|
|
75
|
+
//# sourceMappingURL=http.js.map
|
package/dist/http.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"http.js","sourceRoot":"","sources":["../src/http.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AACrC,cAAc,SAAS,CAAC;AACxB,cAAc,cAAc,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
exports.ACLClient = void 0;
|
|
18
|
+
var client_1 = require("./client");
|
|
19
|
+
Object.defineProperty(exports, "ACLClient", { enumerable: true, get: function () { return client_1.ACLClient; } });
|
|
20
|
+
__exportStar(require("./types"), exports);
|
|
21
|
+
__exportStar(require("./exceptions"), exports);
|
|
22
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,mCAAqC;AAA5B,mGAAA,SAAS,OAAA;AAClB,0CAAwB;AACxB,+CAA6B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../src/middlewares/base.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,QAAQ,GAAG,CAAC,MAAM,EAAE,GAAG,KAAK,OAAO,CAAC,GAAG,CAAC,CAAC;AAErD,MAAM,WAAW,aAAa;IAK5B,OAAO,CAAC,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;CACpD"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"base.js","sourceRoot":"","sources":["../../src/middlewares/base.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { ACLMiddleware, NextCall } from './base';
|
|
2
|
+
import { SessionManager } from '../session/manager';
|
|
3
|
+
export declare class LoopDetectionMiddleware implements ACLMiddleware {
|
|
4
|
+
private sessionManager;
|
|
5
|
+
private similarityEngine;
|
|
6
|
+
constructor(sessionManager: SessionManager);
|
|
7
|
+
process(params: any, next: NextCall): Promise<any>;
|
|
8
|
+
}
|
|
9
|
+
//# sourceMappingURL=loop_detection.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"loop_detection.d.ts","sourceRoot":"","sources":["../../src/middlewares/loop_detection.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;AAEjD,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAKpD,qBAAa,uBAAwB,YAAW,aAAa;IAC3D,OAAO,CAAC,cAAc,CAAiB;IACvC,OAAO,CAAC,gBAAgB,CAAmB;gBAE/B,cAAc,EAAE,cAAc;IAKpC,OAAO,CAAC,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC;CA4DzD"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.LoopDetectionMiddleware = void 0;
|
|
4
|
+
const engine_1 = require("../similarity/engine");
|
|
5
|
+
class LoopDetectionMiddleware {
|
|
6
|
+
constructor(sessionManager) {
|
|
7
|
+
this.sessionManager = sessionManager;
|
|
8
|
+
this.similarityEngine = new engine_1.SimilarityEngine();
|
|
9
|
+
}
|
|
10
|
+
async process(params, next) {
|
|
11
|
+
const sessionId = params.session_id || 'default';
|
|
12
|
+
const loopThreshold = params.loop_threshold || 0.85;
|
|
13
|
+
if (params._recovery_mode) {
|
|
14
|
+
const response = await next(params);
|
|
15
|
+
const text = response.text || '';
|
|
16
|
+
if (text) {
|
|
17
|
+
this.sessionManager.addToHistory(sessionId, text);
|
|
18
|
+
}
|
|
19
|
+
response.loop_detected = false;
|
|
20
|
+
return response;
|
|
21
|
+
}
|
|
22
|
+
const response = await next(params);
|
|
23
|
+
const text = response.text || '';
|
|
24
|
+
if (!text)
|
|
25
|
+
return response;
|
|
26
|
+
const history = this.sessionManager.getHistory(sessionId);
|
|
27
|
+
let isSimilar = false;
|
|
28
|
+
let loopDetected = false;
|
|
29
|
+
if (history && history.length > 0) {
|
|
30
|
+
const window = history.slice(-3);
|
|
31
|
+
const similarities = window.map((prev) => this.similarityEngine.calculate(text, prev));
|
|
32
|
+
if (similarities.length > 0 && Math.max(...similarities) >= loopThreshold) {
|
|
33
|
+
isSimilar = true;
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
const consecutiveCount = this.sessionManager.getConsecutiveMatchCount(sessionId) || 0;
|
|
37
|
+
if (isSimilar) {
|
|
38
|
+
const newCount = consecutiveCount + 1;
|
|
39
|
+
this.sessionManager.setConsecutiveMatchCount(sessionId, newCount);
|
|
40
|
+
if (newCount >= 2) {
|
|
41
|
+
loopDetected = true;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
else {
|
|
45
|
+
this.sessionManager.setConsecutiveMatchCount(sessionId, 0);
|
|
46
|
+
}
|
|
47
|
+
this.sessionManager.addToHistory(sessionId, text);
|
|
48
|
+
response.loop_detected = loopDetected;
|
|
49
|
+
return response;
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
exports.LoopDetectionMiddleware = LoopDetectionMiddleware;
|
|
53
|
+
//# sourceMappingURL=loop_detection.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"loop_detection.js","sourceRoot":"","sources":["../../src/middlewares/loop_detection.ts"],"names":[],"mappings":";;;AACA,iDAAwD;AAMxD,MAAa,uBAAuB;IAIlC,YAAY,cAA8B;QACxC,IAAI,CAAC,cAAc,GAAG,cAAc,CAAC;QACrC,IAAI,CAAC,gBAAgB,GAAG,IAAI,yBAAgB,EAAE,CAAC;IACjD,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,MAAW,EAAE,IAAc;QACvC,MAAM,SAAS,GAAG,MAAM,CAAC,UAAU,IAAI,SAAS,CAAC;QACjD,MAAM,aAAa,GAAG,MAAM,CAAC,cAAc,IAAI,IAAI,CAAC;QAGpD,IAAI,MAAM,CAAC,cAAc,EAAE,CAAC;YAC1B,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,CAAC;YACpC,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,IAAI,EAAE,CAAC;YACjC,IAAI,IAAI,EAAE,CAAC;gBACT,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;YACpD,CAAC;YACD,QAAQ,CAAC,aAAa,GAAG,KAAK,CAAC;YAC/B,OAAO,QAAQ,CAAC;QAClB,CAAC;QAGD,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,CAAC;QAEpC,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,IAAI,EAAE,CAAC;QACjC,IAAI,CAAC,IAAI;YAAE,OAAO,QAAQ,CAAC;QAG3B,MAAM,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;QAC1D,IAAI,SAAS,GAAG,KAAK,CAAC;QACtB,IAAI,YAAY,GAAG,KAAK,CAAC;QAGzB,IAAI,OAAO,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAClC,MAAM,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;YACjC,MAAM,YAAY,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,IAAY,EAAE,EAAE,CAC/C,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC,CAC5C,CAAC;YACF,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,YAAY,CAAC,IAAI,aAAa,EAAE,CAAC;gBAC1E,SAAS,GAAG,IAAI,CAAC;YACnB,CAAC;QACH,CAAC;QAGD,MAAM,gBAAgB,GAAG,IAAI,CAAC,cAAc,CAAC,wBAAwB,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QAEtF,IAAI,SAAS,EAAE,CAAC;YACd,MAAM,QAAQ,GAAG,gBAAgB,GAAG,CAAC,CAAC;YACtC,IAAI,CAAC,cAAc,CAAC,wBAAwB,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;YAGlE,IAAI,QAAQ,IAAI,CAAC,EAAE,CAAC;gBAClB,YAAY,GAAG,IAAI,CAAC;YACtB,CAAC;QACH,CAAC;aAAM,CAAC;YAEN,IAAI,CAAC,cAAc,CAAC,wBAAwB,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;QAC7D,CAAC;QAGD,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;QAGlD,QAAQ,CAAC,aAAa,GAAG,YAAY,CAAC;QACtC,OAAO,QAAQ,CAAC;IAClB,CAAC;CACF;AArED,0DAqEC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"normalization.d.ts","sourceRoot":"","sources":["../../src/middlewares/normalization.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;AAEjD,qBAAa,uBAAwB,YAAW,aAAa;IACrD,OAAO,CAAC,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC;CAmCzD"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.NormalizationMiddleware = void 0;
|
|
4
|
+
class NormalizationMiddleware {
|
|
5
|
+
async process(params, next) {
|
|
6
|
+
const startTime = Date.now();
|
|
7
|
+
const response = await next(params);
|
|
8
|
+
const latency_ms = Date.now() - startTime;
|
|
9
|
+
const error_code = response.error_code || null;
|
|
10
|
+
const error_message = response.error_message || null;
|
|
11
|
+
const text = response.text || '';
|
|
12
|
+
const success = error_code || error_message
|
|
13
|
+
? false
|
|
14
|
+
: (response.success !== undefined ? response.success : true);
|
|
15
|
+
return {
|
|
16
|
+
text: text,
|
|
17
|
+
response: response.response || text,
|
|
18
|
+
success: success,
|
|
19
|
+
provider: params.provider || 'unknown',
|
|
20
|
+
model: params.model || 'unknown',
|
|
21
|
+
finish_reason: response.finish_reason || 'unknown',
|
|
22
|
+
tokens_input: response.tokens_input || 0,
|
|
23
|
+
tokens_output: response.tokens_output || 0,
|
|
24
|
+
total_tokens: response.total_tokens || 0,
|
|
25
|
+
latency_ms: latency_ms,
|
|
26
|
+
retries: (params._attempt || 1) - 1,
|
|
27
|
+
attempts_made: params._attempt || 1,
|
|
28
|
+
context_health: params._context_health || {},
|
|
29
|
+
loop_detected: response.loop_detected || false,
|
|
30
|
+
error_code: error_code,
|
|
31
|
+
error_message: error_message,
|
|
32
|
+
raw_response: response.raw_response || null,
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
exports.NormalizationMiddleware = NormalizationMiddleware;
|
|
37
|
+
//# sourceMappingURL=normalization.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"normalization.js","sourceRoot":"","sources":["../../src/middlewares/normalization.ts"],"names":[],"mappings":";;;AAEA,MAAa,uBAAuB;IAClC,KAAK,CAAC,OAAO,CAAC,MAAW,EAAE,IAAc;QACvC,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAG7B,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,CAAC;QAEpC,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;QAC1C,MAAM,UAAU,GAAG,QAAQ,CAAC,UAAU,IAAI,IAAI,CAAC;QAC/C,MAAM,aAAa,GAAG,QAAQ,CAAC,aAAa,IAAI,IAAI,CAAC;QACrD,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,IAAI,EAAE,CAAC;QACjC,MAAM,OAAO,GAAG,UAAU,IAAI,aAAa;YACzC,CAAC,CAAC,KAAK;YACP,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QAG/D,OAAO;YACH,IAAI,EAAY,IAAI;YACpB,QAAQ,EAAQ,QAAQ,CAAC,QAAQ,IAAI,IAAI;YACzC,OAAO,EAAS,OAAO;YACvB,QAAQ,EAAQ,MAAM,CAAC,QAAQ,IAAI,SAAS;YAC5C,KAAK,EAAW,MAAM,CAAC,KAAK,IAAI,SAAS;YACzC,aAAa,EAAG,QAAQ,CAAC,aAAa,IAAI,SAAS;YACnD,YAAY,EAAI,QAAQ,CAAC,YAAY,IAAI,CAAC;YAC1C,aAAa,EAAG,QAAQ,CAAC,aAAa,IAAI,CAAC;YAC3C,YAAY,EAAI,QAAQ,CAAC,YAAY,IAAI,CAAC;YAC1C,UAAU,EAAM,UAAU;YAC1B,OAAO,EAAS,CAAC,MAAM,CAAC,QAAQ,IAAI,CAAC,CAAC,GAAG,CAAC;YAC1C,aAAa,EAAG,MAAM,CAAC,QAAQ,IAAI,CAAC;YACpC,cAAc,EAAE,MAAM,CAAC,eAAe,IAAI,EAAE;YAC5C,aAAa,EAAG,QAAQ,CAAC,aAAa,IAAI,KAAK;YAC/C,UAAU,EAAM,UAAU;YAC1B,aAAa,EAAG,aAAa;YAC7B,YAAY,EAAI,QAAQ,CAAC,YAAY,IAAI,IAAI;SAChD,CAAC;IACJ,CAAC;CACF;AApCD,0DAoCC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { ACLMiddleware, NextCall } from './base';
|
|
2
|
+
import { SessionManager } from '../session/manager';
|
|
3
|
+
export declare class RecoveryMiddleware implements ACLMiddleware {
|
|
4
|
+
private static readonly MAX_RECOVERY_ATTEMPTS;
|
|
5
|
+
private sessionManager;
|
|
6
|
+
private policyVerdictFn;
|
|
7
|
+
constructor(sessionManager: SessionManager, policyVerdictFn?: (payload: Record<string, any>) => Promise<Record<string, any>> | Record<string, any>);
|
|
8
|
+
process(params: any, next: NextCall): Promise<any>;
|
|
9
|
+
private attemptRecovery;
|
|
10
|
+
private getServerVerdict;
|
|
11
|
+
private simpleHash;
|
|
12
|
+
private stepContextInjection;
|
|
13
|
+
private stepTemperatureSpike;
|
|
14
|
+
private stepContextReset;
|
|
15
|
+
private compressHistory;
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=recovery.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"recovery.d.ts","sourceRoot":"","sources":["../../src/middlewares/recovery.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAapD,qBAAa,kBAAmB,YAAW,aAAa;IACtD,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,qBAAqB,CAAK;IAElD,OAAO,CAAC,cAAc,CAAiB;IACvC,OAAO,CAAC,eAAe,CAAuF;gBAG5G,cAAc,EAAE,cAAc,EAC9B,eAAe,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;IAUlG,OAAO,CAAC,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC;YAkF1C,eAAe;YAuEf,gBAAgB;IA2B9B,OAAO,CAAC,UAAU;IAUlB,OAAO,CAAC,oBAAoB;IAe5B,OAAO,CAAC,oBAAoB;IAe5B,OAAO,CAAC,gBAAgB;IAwBxB,OAAO,CAAC,eAAe;CAmBxB"}
|