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.
Files changed (79) hide show
  1. package/LICENSE +24 -0
  2. package/README.md +129 -0
  3. package/dist/client.d.ts +51 -0
  4. package/dist/client.d.ts.map +1 -0
  5. package/dist/client.js +536 -0
  6. package/dist/client.js.map +1 -0
  7. package/dist/config.d.ts +27 -0
  8. package/dist/config.d.ts.map +1 -0
  9. package/dist/config.js +84 -0
  10. package/dist/config.js.map +1 -0
  11. package/dist/exceptions.d.ts +32 -0
  12. package/dist/exceptions.d.ts.map +1 -0
  13. package/dist/exceptions.js +99 -0
  14. package/dist/exceptions.js.map +1 -0
  15. package/dist/http.d.ts +21 -0
  16. package/dist/http.d.ts.map +1 -0
  17. package/dist/http.js +75 -0
  18. package/dist/http.js.map +1 -0
  19. package/dist/index.d.ts +4 -0
  20. package/dist/index.d.ts.map +1 -0
  21. package/dist/index.js +22 -0
  22. package/dist/index.js.map +1 -0
  23. package/dist/middlewares/base.d.ts +5 -0
  24. package/dist/middlewares/base.d.ts.map +1 -0
  25. package/dist/middlewares/base.js +3 -0
  26. package/dist/middlewares/base.js.map +1 -0
  27. package/dist/middlewares/loop_detection.d.ts +9 -0
  28. package/dist/middlewares/loop_detection.d.ts.map +1 -0
  29. package/dist/middlewares/loop_detection.js +53 -0
  30. package/dist/middlewares/loop_detection.js.map +1 -0
  31. package/dist/middlewares/normalization.d.ts +5 -0
  32. package/dist/middlewares/normalization.d.ts.map +1 -0
  33. package/dist/middlewares/normalization.js +37 -0
  34. package/dist/middlewares/normalization.js.map +1 -0
  35. package/dist/middlewares/recovery.d.ts +17 -0
  36. package/dist/middlewares/recovery.d.ts.map +1 -0
  37. package/dist/middlewares/recovery.js +198 -0
  38. package/dist/middlewares/recovery.js.map +1 -0
  39. package/dist/middlewares/retry.d.ts +5 -0
  40. package/dist/middlewares/retry.d.ts.map +1 -0
  41. package/dist/middlewares/retry.js +39 -0
  42. package/dist/middlewares/retry.js.map +1 -0
  43. package/dist/providers/anthropic.d.ts +7 -0
  44. package/dist/providers/anthropic.d.ts.map +1 -0
  45. package/dist/providers/anthropic.js +77 -0
  46. package/dist/providers/anthropic.js.map +1 -0
  47. package/dist/providers/base.d.ts +22 -0
  48. package/dist/providers/base.d.ts.map +1 -0
  49. package/dist/providers/base.js +3 -0
  50. package/dist/providers/base.js.map +1 -0
  51. package/dist/providers/google.d.ts +7 -0
  52. package/dist/providers/google.d.ts.map +1 -0
  53. package/dist/providers/google.js +89 -0
  54. package/dist/providers/google.js.map +1 -0
  55. package/dist/providers/index.d.ts +8 -0
  56. package/dist/providers/index.d.ts.map +1 -0
  57. package/dist/providers/index.js +29 -0
  58. package/dist/providers/index.js.map +1 -0
  59. package/dist/providers/openai.d.ts +7 -0
  60. package/dist/providers/openai.d.ts.map +1 -0
  61. package/dist/providers/openai.js +82 -0
  62. package/dist/providers/openai.js.map +1 -0
  63. package/dist/security.d.ts +2 -0
  64. package/dist/security.d.ts.map +1 -0
  65. package/dist/security.js +18 -0
  66. package/dist/security.js.map +1 -0
  67. package/dist/session/manager.d.ts +21 -0
  68. package/dist/session/manager.d.ts.map +1 -0
  69. package/dist/session/manager.js +94 -0
  70. package/dist/session/manager.js.map +1 -0
  71. package/dist/similarity/engine.d.ts +15 -0
  72. package/dist/similarity/engine.d.ts.map +1 -0
  73. package/dist/similarity/engine.js +109 -0
  74. package/dist/similarity/engine.js.map +1 -0
  75. package/dist/types.d.ts +128 -0
  76. package/dist/types.d.ts.map +1 -0
  77. package/dist/types.js +3 -0
  78. package/dist/types.js.map +1 -0
  79. 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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"http.js","sourceRoot":"","sources":["../src/http.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ export { ACLClient } from './client';
2
+ export * from './types';
3
+ export * from './exceptions';
4
+ //# sourceMappingURL=index.d.ts.map
@@ -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,5 @@
1
+ export type NextCall = (params: any) => Promise<any>;
2
+ export interface ACLMiddleware {
3
+ process(params: any, next: NextCall): Promise<any>;
4
+ }
5
+ //# sourceMappingURL=base.d.ts.map
@@ -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,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=base.js.map
@@ -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,5 @@
1
+ import { ACLMiddleware, NextCall } from './base';
2
+ export declare class NormalizationMiddleware implements ACLMiddleware {
3
+ process(params: any, next: NextCall): Promise<any>;
4
+ }
5
+ //# sourceMappingURL=normalization.d.ts.map
@@ -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"}