@flutchai/flutch-sdk 0.1.3 → 0.1.5

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 (194) hide show
  1. package/README.md +2 -2
  2. package/dist/index.cjs +6419 -0
  3. package/dist/index.cjs.map +1 -0
  4. package/dist/index.d.cts +1499 -0
  5. package/dist/index.d.ts +1499 -27
  6. package/dist/index.js +6347 -47
  7. package/dist/index.js.map +1 -1
  8. package/package.json +72 -10
  9. package/dist/api/callback-token.guard.d.ts +0 -17
  10. package/dist/api/callback-token.guard.js +0 -80
  11. package/dist/api/callback-token.guard.js.map +0 -1
  12. package/dist/api/callback.controller.d.ts +0 -7
  13. package/dist/api/callback.controller.js +0 -44
  14. package/dist/api/callback.controller.js.map +0 -1
  15. package/dist/api/graph.controller.d.ts +0 -32
  16. package/dist/api/graph.controller.js +0 -187
  17. package/dist/api/graph.controller.js.map +0 -1
  18. package/dist/api/ui-dispatch.controller.d.ts +0 -34
  19. package/dist/api/ui-dispatch.controller.js +0 -178
  20. package/dist/api/ui-dispatch.controller.js.map +0 -1
  21. package/dist/bootstrap.d.ts +0 -4
  22. package/dist/bootstrap.js +0 -99
  23. package/dist/bootstrap.js.map +0 -1
  24. package/dist/callbacks/callback-acl.service.d.ts +0 -24
  25. package/dist/callbacks/callback-acl.service.js +0 -144
  26. package/dist/callbacks/callback-acl.service.js.map +0 -1
  27. package/dist/callbacks/callback-auditor.service.d.ts +0 -47
  28. package/dist/callbacks/callback-auditor.service.js +0 -286
  29. package/dist/callbacks/callback-auditor.service.js.map +0 -1
  30. package/dist/callbacks/callback-metrics.service.d.ts +0 -34
  31. package/dist/callbacks/callback-metrics.service.js +0 -216
  32. package/dist/callbacks/callback-metrics.service.js.map +0 -1
  33. package/dist/callbacks/callback-patch.service.d.ts +0 -13
  34. package/dist/callbacks/callback-patch.service.js +0 -51
  35. package/dist/callbacks/callback-patch.service.js.map +0 -1
  36. package/dist/callbacks/callback-rate-limiter.d.ts +0 -27
  37. package/dist/callbacks/callback-rate-limiter.js +0 -129
  38. package/dist/callbacks/callback-rate-limiter.js.map +0 -1
  39. package/dist/callbacks/callback-registry.d.ts +0 -7
  40. package/dist/callbacks/callback-registry.js +0 -29
  41. package/dist/callbacks/callback-registry.js.map +0 -1
  42. package/dist/callbacks/callback-store.d.ts +0 -19
  43. package/dist/callbacks/callback-store.js +0 -145
  44. package/dist/callbacks/callback-store.js.map +0 -1
  45. package/dist/callbacks/example.callback.d.ts +0 -2
  46. package/dist/callbacks/example.callback.js +0 -10
  47. package/dist/callbacks/example.callback.js.map +0 -1
  48. package/dist/callbacks/idempotency-manager.d.ts +0 -54
  49. package/dist/callbacks/idempotency-manager.js +0 -230
  50. package/dist/callbacks/idempotency-manager.js.map +0 -1
  51. package/dist/callbacks/index.d.ts +0 -13
  52. package/dist/callbacks/index.js +0 -30
  53. package/dist/callbacks/index.js.map +0 -1
  54. package/dist/callbacks/smart-callback.router.d.ts +0 -52
  55. package/dist/callbacks/smart-callback.router.js +0 -213
  56. package/dist/callbacks/smart-callback.router.js.map +0 -1
  57. package/dist/callbacks/telegram-patch.handler.d.ts +0 -6
  58. package/dist/callbacks/telegram-patch.handler.js +0 -24
  59. package/dist/callbacks/telegram-patch.handler.js.map +0 -1
  60. package/dist/callbacks/universal-callback.service.d.ts +0 -14
  61. package/dist/callbacks/universal-callback.service.js +0 -20
  62. package/dist/callbacks/universal-callback.service.js.map +0 -1
  63. package/dist/callbacks/web-patch.handler.d.ts +0 -6
  64. package/dist/callbacks/web-patch.handler.js +0 -24
  65. package/dist/callbacks/web-patch.handler.js.map +0 -1
  66. package/dist/core/abstract-graph.builder.d.ts +0 -128
  67. package/dist/core/abstract-graph.builder.js +0 -488
  68. package/dist/core/abstract-graph.builder.js.map +0 -1
  69. package/dist/core/builder-registry.service.d.ts +0 -6
  70. package/dist/core/builder-registry.service.js +0 -29
  71. package/dist/core/builder-registry.service.js.map +0 -1
  72. package/dist/core/universal-graph.module.d.ts +0 -10
  73. package/dist/core/universal-graph.module.js +0 -294
  74. package/dist/core/universal-graph.module.js.map +0 -1
  75. package/dist/decorators/callback.decorators.d.ts +0 -21
  76. package/dist/decorators/callback.decorators.js +0 -73
  77. package/dist/decorators/callback.decorators.js.map +0 -1
  78. package/dist/endpoint-registry/endpoint.decorators.d.ts +0 -35
  79. package/dist/endpoint-registry/endpoint.decorators.js +0 -115
  80. package/dist/endpoint-registry/endpoint.decorators.js.map +0 -1
  81. package/dist/endpoint-registry/endpoint.registry.d.ts +0 -44
  82. package/dist/endpoint-registry/endpoint.registry.js +0 -90
  83. package/dist/endpoint-registry/endpoint.registry.js.map +0 -1
  84. package/dist/endpoint-registry/index.d.ts +0 -3
  85. package/dist/endpoint-registry/index.js +0 -20
  86. package/dist/endpoint-registry/index.js.map +0 -1
  87. package/dist/endpoint-registry/ui-endpoints.discovery.d.ts +0 -11
  88. package/dist/endpoint-registry/ui-endpoints.discovery.js +0 -72
  89. package/dist/endpoint-registry/ui-endpoints.discovery.js.map +0 -1
  90. package/dist/engine/api-call-tracer.utils.d.ts +0 -8
  91. package/dist/engine/api-call-tracer.utils.js +0 -184
  92. package/dist/engine/api-call-tracer.utils.js.map +0 -1
  93. package/dist/engine/event-processor.utils.d.ts +0 -49
  94. package/dist/engine/event-processor.utils.js +0 -314
  95. package/dist/engine/event-processor.utils.js.map +0 -1
  96. package/dist/engine/graph-engine.factory.d.ts +0 -12
  97. package/dist/engine/graph-engine.factory.js +0 -43
  98. package/dist/engine/graph-engine.factory.js.map +0 -1
  99. package/dist/engine/langgraph-engine.d.ts +0 -14
  100. package/dist/engine/langgraph-engine.js +0 -261
  101. package/dist/engine/langgraph-engine.js.map +0 -1
  102. package/dist/interfaces/callback.interface.d.ts +0 -46
  103. package/dist/interfaces/callback.interface.js +0 -3
  104. package/dist/interfaces/callback.interface.js.map +0 -1
  105. package/dist/interfaces/graph-registry.interface.d.ts +0 -8
  106. package/dist/interfaces/graph-registry.interface.js +0 -3
  107. package/dist/interfaces/graph-registry.interface.js.map +0 -1
  108. package/dist/interfaces/graph-service.interface.d.ts +0 -43
  109. package/dist/interfaces/graph-service.interface.js +0 -9
  110. package/dist/interfaces/graph-service.interface.js.map +0 -1
  111. package/dist/interfaces/index.d.ts +0 -3
  112. package/dist/interfaces/index.js +0 -20
  113. package/dist/interfaces/index.js.map +0 -1
  114. package/dist/llm/index.d.ts +0 -6
  115. package/dist/llm/index.js +0 -23
  116. package/dist/llm/index.js.map +0 -1
  117. package/dist/llm/llm.initializer.d.ts +0 -14
  118. package/dist/llm/llm.initializer.js +0 -167
  119. package/dist/llm/llm.initializer.js.map +0 -1
  120. package/dist/llm/llm.interface.d.ts +0 -6
  121. package/dist/llm/llm.interface.js +0 -3
  122. package/dist/llm/llm.interface.js.map +0 -1
  123. package/dist/llm/llm.types.d.ts +0 -32
  124. package/dist/llm/llm.types.js +0 -3
  125. package/dist/llm/llm.types.js.map +0 -1
  126. package/dist/llm/model.initializer.d.ts +0 -45
  127. package/dist/llm/model.initializer.js +0 -630
  128. package/dist/llm/model.initializer.js.map +0 -1
  129. package/dist/llm/model.interface.d.ts +0 -38
  130. package/dist/llm/model.interface.js +0 -4
  131. package/dist/llm/model.interface.js.map +0 -1
  132. package/dist/llm/rerankers/voyageai-rerank.d.ts +0 -17
  133. package/dist/llm/rerankers/voyageai-rerank.js +0 -56
  134. package/dist/llm/rerankers/voyageai-rerank.js.map +0 -1
  135. package/dist/retriever/database-factory.d.ts +0 -15
  136. package/dist/retriever/database-factory.js +0 -83
  137. package/dist/retriever/database-factory.js.map +0 -1
  138. package/dist/retriever/index.d.ts +0 -2
  139. package/dist/retriever/index.js +0 -19
  140. package/dist/retriever/index.js.map +0 -1
  141. package/dist/retriever/retriever.client.d.ts +0 -28
  142. package/dist/retriever/retriever.client.js +0 -97
  143. package/dist/retriever/retriever.client.js.map +0 -1
  144. package/dist/retriever/retriever.service.d.ts +0 -25
  145. package/dist/retriever/retriever.service.js +0 -265
  146. package/dist/retriever/retriever.service.js.map +0 -1
  147. package/dist/retriever/types.d.ts +0 -22
  148. package/dist/retriever/types.js +0 -3
  149. package/dist/retriever/types.js.map +0 -1
  150. package/dist/schemas/graph-manifest.schema.d.ts +0 -134
  151. package/dist/schemas/graph-manifest.schema.js +0 -180
  152. package/dist/schemas/graph-manifest.schema.js.map +0 -1
  153. package/dist/schemas/index.d.ts +0 -1
  154. package/dist/schemas/index.js +0 -18
  155. package/dist/schemas/index.js.map +0 -1
  156. package/dist/shared-types/index.d.ts +0 -199
  157. package/dist/shared-types/index.js +0 -58
  158. package/dist/shared-types/index.js.map +0 -1
  159. package/dist/tools/index.d.ts +0 -3
  160. package/dist/tools/index.js +0 -20
  161. package/dist/tools/index.js.map +0 -1
  162. package/dist/tools/mcp-converter.d.ts +0 -15
  163. package/dist/tools/mcp-converter.js +0 -133
  164. package/dist/tools/mcp-converter.js.map +0 -1
  165. package/dist/tools/mcp-tool-filter.d.ts +0 -11
  166. package/dist/tools/mcp-tool-filter.js +0 -123
  167. package/dist/tools/mcp-tool-filter.js.map +0 -1
  168. package/dist/tools/mcp.interfaces.d.ts +0 -19
  169. package/dist/tools/mcp.interfaces.js +0 -3
  170. package/dist/tools/mcp.interfaces.js.map +0 -1
  171. package/dist/types/graph-types.d.ts +0 -82
  172. package/dist/types/graph-types.js +0 -6
  173. package/dist/types/graph-types.js.map +0 -1
  174. package/dist/utils/error.utils.d.ts +0 -18
  175. package/dist/utils/error.utils.js +0 -78
  176. package/dist/utils/error.utils.js.map +0 -1
  177. package/dist/utils/graph-type.utils.d.ts +0 -14
  178. package/dist/utils/graph-type.utils.js +0 -71
  179. package/dist/utils/graph-type.utils.js.map +0 -1
  180. package/dist/utils/index.d.ts +0 -1
  181. package/dist/utils/index.js +0 -18
  182. package/dist/utils/index.js.map +0 -1
  183. package/dist/utils/usage-recorder.d.ts +0 -23
  184. package/dist/utils/usage-recorder.js +0 -29
  185. package/dist/utils/usage-recorder.js.map +0 -1
  186. package/dist/versioning/index.d.ts +0 -2
  187. package/dist/versioning/index.js +0 -19
  188. package/dist/versioning/index.js.map +0 -1
  189. package/dist/versioning/versioned-graph.service.d.ts +0 -16
  190. package/dist/versioning/versioned-graph.service.js +0 -132
  191. package/dist/versioning/versioned-graph.service.js.map +0 -1
  192. package/dist/versioning/versioning.types.d.ts +0 -21
  193. package/dist/versioning/versioning.types.js +0 -3
  194. package/dist/versioning/versioning.types.js.map +0 -1
@@ -1,27 +0,0 @@
1
- import type Redis from "ioredis";
2
- export interface RateLimitConfig {
3
- windowMs: number;
4
- maxRequests: number;
5
- keyPrefix?: string;
6
- skipFailedRequests?: boolean;
7
- }
8
- export interface RateLimitResult {
9
- allowed: boolean;
10
- limit: number;
11
- remaining: number;
12
- resetAt: number;
13
- retryAfter?: number;
14
- }
15
- export declare class CallbackRateLimiter {
16
- private readonly redis;
17
- private readonly logger;
18
- private readonly defaultConfig;
19
- constructor(redis: Redis);
20
- checkLimit(identifier: string, config?: Partial<RateLimitConfig>): Promise<RateLimitResult>;
21
- checkUserLimit(userId: string, config?: Partial<RateLimitConfig>): Promise<RateLimitResult>;
22
- checkIpLimit(ip: string, config?: Partial<RateLimitConfig>): Promise<RateLimitResult>;
23
- checkTokenLimit(identifier: string, config?: Partial<RateLimitConfig>): Promise<RateLimitResult>;
24
- reset(identifier: string, keyPrefix?: string): Promise<void>;
25
- getStatus(identifier: string, config?: Partial<RateLimitConfig>): Promise<RateLimitResult>;
26
- createHeaders(result: RateLimitResult): Record<string, string>;
27
- }
@@ -1,129 +0,0 @@
1
- "use strict";
2
- var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
- else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
- return c > 3 && r && Object.defineProperty(target, key, r), r;
7
- };
8
- var __metadata = (this && this.__metadata) || function (k, v) {
9
- if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
- };
11
- var CallbackRateLimiter_1;
12
- Object.defineProperty(exports, "__esModule", { value: true });
13
- exports.CallbackRateLimiter = void 0;
14
- const common_1 = require("@nestjs/common");
15
- let CallbackRateLimiter = CallbackRateLimiter_1 = class CallbackRateLimiter {
16
- constructor(redis) {
17
- this.redis = redis;
18
- this.logger = new common_1.Logger(CallbackRateLimiter_1.name);
19
- this.defaultConfig = {
20
- windowMs: 60000,
21
- maxRequests: 10,
22
- keyPrefix: "ratelimit:callback",
23
- skipFailedRequests: false,
24
- };
25
- }
26
- async checkLimit(identifier, config) {
27
- const cfg = Object.assign(Object.assign({}, this.defaultConfig), config);
28
- const key = `${cfg.keyPrefix}:${identifier}`;
29
- const now = Date.now();
30
- const windowStart = now - cfg.windowMs;
31
- const script = `
32
- local key = KEYS[1]
33
- local now = tonumber(ARGV[1])
34
- local window_start = tonumber(ARGV[2])
35
- local max_requests = tonumber(ARGV[3])
36
- local window_ms = tonumber(ARGV[4])
37
-
38
- -- Remove old entries outside the window
39
- redis.call('ZREMRANGEBYSCORE', key, 0, window_start)
40
-
41
- -- Count requests in current window
42
- local current_requests = redis.call('ZCARD', key)
43
-
44
- if current_requests < max_requests then
45
- -- Add current request
46
- redis.call('ZADD', key, now, now)
47
- -- Set expiry
48
- redis.call('EXPIRE', key, math.ceil(window_ms / 1000))
49
-
50
- return {1, max_requests, max_requests - current_requests - 1, 0}
51
- else
52
- -- Get oldest request in window to calculate retry time
53
- local oldest = redis.call('ZRANGE', key, 0, 0, 'WITHSCORES')
54
- local reset_at = oldest[2] and (tonumber(oldest[2]) + window_ms) or (now + window_ms)
55
-
56
- return {0, max_requests, 0, reset_at}
57
- end
58
- `;
59
- const result = (await this.redis.eval(script, 1, key, now, windowStart, cfg.maxRequests, cfg.windowMs));
60
- const [allowed, limit, remaining, resetAt] = result;
61
- const rateLimitResult = {
62
- allowed: allowed === 1,
63
- limit,
64
- remaining: Math.max(0, remaining),
65
- resetAt,
66
- };
67
- if (!rateLimitResult.allowed) {
68
- rateLimitResult.retryAfter = Math.ceil((resetAt - now) / 1000);
69
- this.logger.warn(`Rate limit exceeded for ${identifier}. Retry after ${rateLimitResult.retryAfter}s`);
70
- }
71
- return rateLimitResult;
72
- }
73
- async checkUserLimit(userId, config) {
74
- return this.checkLimit(`user:${userId}`, Object.assign({ windowMs: 60000, maxRequests: 20 }, config));
75
- }
76
- async checkIpLimit(ip, config) {
77
- return this.checkLimit(`ip:${ip}`, Object.assign({ windowMs: 60000, maxRequests: 30 }, config));
78
- }
79
- async checkTokenLimit(identifier, config) {
80
- return this.checkLimit(`token:${identifier}`, Object.assign({ windowMs: 300000, maxRequests: 5 }, config));
81
- }
82
- async reset(identifier, keyPrefix) {
83
- const prefix = keyPrefix || this.defaultConfig.keyPrefix;
84
- const key = `${prefix}:${identifier}`;
85
- await this.redis.del(key);
86
- this.logger.debug(`Rate limit reset for ${identifier}`);
87
- }
88
- async getStatus(identifier, config) {
89
- const cfg = Object.assign(Object.assign({}, this.defaultConfig), config);
90
- const key = `${cfg.keyPrefix}:${identifier}`;
91
- const now = Date.now();
92
- const windowStart = now - cfg.windowMs;
93
- await this.redis.zremrangebyscore(key, 0, windowStart);
94
- const currentRequests = await this.redis.zcard(key);
95
- const remaining = Math.max(0, cfg.maxRequests - currentRequests);
96
- const allowed = currentRequests < cfg.maxRequests;
97
- let resetAt = now + cfg.windowMs;
98
- if (!allowed) {
99
- const oldest = await this.redis.zrange(key, 0, 0, "WITHSCORES");
100
- if (oldest.length >= 2) {
101
- resetAt = parseInt(oldest[1]) + cfg.windowMs;
102
- }
103
- }
104
- return {
105
- allowed,
106
- limit: cfg.maxRequests,
107
- remaining,
108
- resetAt,
109
- retryAfter: allowed ? undefined : Math.ceil((resetAt - now) / 1000),
110
- };
111
- }
112
- createHeaders(result) {
113
- const headers = {
114
- "X-RateLimit-Limit": result.limit.toString(),
115
- "X-RateLimit-Remaining": result.remaining.toString(),
116
- "X-RateLimit-Reset": new Date(result.resetAt).toISOString(),
117
- };
118
- if (result.retryAfter) {
119
- headers["Retry-After"] = result.retryAfter.toString();
120
- }
121
- return headers;
122
- }
123
- };
124
- exports.CallbackRateLimiter = CallbackRateLimiter;
125
- exports.CallbackRateLimiter = CallbackRateLimiter = CallbackRateLimiter_1 = __decorate([
126
- (0, common_1.Injectable)(),
127
- __metadata("design:paramtypes", [Function])
128
- ], CallbackRateLimiter);
129
- //# sourceMappingURL=callback-rate-limiter.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"callback-rate-limiter.js","sourceRoot":"","sources":["../../src/callbacks/callback-rate-limiter.ts"],"names":[],"mappings":"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"}
@@ -1,7 +0,0 @@
1
- import { CallbackHandler } from "../interfaces/callback.interface";
2
- export declare class CallbackRegistry {
3
- private handlers;
4
- register(handler: string, callback: CallbackHandler, graphType?: string): void;
5
- get(handler: string, graphType?: string): CallbackHandler | undefined;
6
- listHandlers(): string[];
7
- }
@@ -1,29 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.CallbackRegistry = void 0;
4
- class CallbackRegistry {
5
- constructor() {
6
- this.handlers = new Map();
7
- }
8
- register(handler, callback, graphType) {
9
- const key = graphType ? `${graphType}::${handler}` : handler;
10
- this.handlers.set(key, callback);
11
- if (graphType) {
12
- this.handlers.set(handler, callback);
13
- }
14
- }
15
- get(handler, graphType) {
16
- if (graphType) {
17
- const versionedHandler = this.handlers.get(`${graphType}::${handler}`);
18
- if (versionedHandler) {
19
- return versionedHandler;
20
- }
21
- }
22
- return this.handlers.get(handler);
23
- }
24
- listHandlers() {
25
- return Array.from(this.handlers.keys());
26
- }
27
- }
28
- exports.CallbackRegistry = CallbackRegistry;
29
- //# sourceMappingURL=callback-registry.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"callback-registry.js","sourceRoot":"","sources":["../../src/callbacks/callback-registry.ts"],"names":[],"mappings":";;;AAEA,MAAa,gBAAgB;IAA7B;QACU,aAAQ,GAAG,IAAI,GAAG,EAA2B,CAAC;IA+CxD,CAAC;IAvCC,QAAQ,CACN,OAAe,EACf,QAAyB,EACzB,SAAkB;QAGlB,MAAM,GAAG,GAAG,SAAS,CAAC,CAAC,CAAC,GAAG,SAAS,KAAK,OAAO,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC;QAC7D,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;QAGjC,IAAI,SAAS,EAAE,CAAC;YACd,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;QACvC,CAAC;IACH,CAAC;IAOD,GAAG,CAAC,OAAe,EAAE,SAAkB;QAErC,IAAI,SAAS,EAAE,CAAC;YACd,MAAM,gBAAgB,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,SAAS,KAAK,OAAO,EAAE,CAAC,CAAC;YACvE,IAAI,gBAAgB,EAAE,CAAC;gBACrB,OAAO,gBAAgB,CAAC;YAC1B,CAAC;QACH,CAAC;QAGD,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IACpC,CAAC;IAKD,YAAY;QACV,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;IAC1C,CAAC;CACF;AAhDD,4CAgDC"}
@@ -1,19 +0,0 @@
1
- import type Redis from "ioredis";
2
- import { CallbackEntry, CallbackRecord } from "../interfaces/callback.interface";
3
- export declare class CallbackStore {
4
- private readonly redis;
5
- private readonly isProduction;
6
- constructor(redis: Redis);
7
- private generateToken;
8
- issue(entry: CallbackEntry): Promise<string>;
9
- getAndLock(token: string): Promise<CallbackRecord | null>;
10
- private getAndLockAtomic;
11
- private getAndLockSimple;
12
- finalize(token: string): Promise<void>;
13
- fail(token: string, error: string): Promise<CallbackRecord | null>;
14
- private failAtomic;
15
- private failSimple;
16
- retry(token: string): Promise<CallbackRecord | null>;
17
- private retryAtomic;
18
- private retrySimple;
19
- }
@@ -1,145 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.CallbackStore = void 0;
4
- const crypto_1 = require("crypto");
5
- class CallbackStore {
6
- constructor(redis) {
7
- this.redis = redis;
8
- this.isProduction = process.env.NODE_ENV === "production";
9
- }
10
- generateToken(graphType) {
11
- return `cb::${graphType}::${(0, crypto_1.randomBytes)(8).toString("base64url")}`;
12
- }
13
- async issue(entry) {
14
- var _a, _b;
15
- const token = this.generateToken(entry.graphType);
16
- const record = Object.assign(Object.assign({}, entry), { token, status: "pending", createdAt: Date.now(), retries: 0 });
17
- const ttl = (_b = (_a = entry.metadata) === null || _a === void 0 ? void 0 : _a.ttlSec) !== null && _b !== void 0 ? _b : 600;
18
- await this.redis.setex(`callback:${token}`, ttl, JSON.stringify(record));
19
- return token;
20
- }
21
- async getAndLock(token) {
22
- if (this.isProduction) {
23
- return this.getAndLockAtomic(token);
24
- }
25
- else {
26
- return this.getAndLockSimple(token);
27
- }
28
- }
29
- async getAndLockAtomic(token) {
30
- const script = `
31
- local data = redis.call('GET', KEYS[1])
32
- if not data then return nil end
33
- local record = cjson.decode(data)
34
- if record.status ~= 'pending' then return nil end
35
- record.status = 'processing'
36
- redis.call('SET', KEYS[1], cjson.encode(record))
37
- return cjson.encode(record)
38
- `;
39
- const result = await this.redis.eval(script, 1, `callback:${token}`);
40
- return result ? JSON.parse(result) : null;
41
- }
42
- async getAndLockSimple(token) {
43
- const key = `callback:${token}`;
44
- const data = await this.redis.get(key);
45
- if (!data) {
46
- return null;
47
- }
48
- try {
49
- const record = JSON.parse(data);
50
- if (record.status !== "pending") {
51
- return null;
52
- }
53
- record.status = "processing";
54
- await this.redis.set(key, JSON.stringify(record));
55
- return record;
56
- }
57
- catch (error) {
58
- console.error("Failed to parse callback record:", error);
59
- return null;
60
- }
61
- }
62
- async finalize(token) {
63
- await this.redis.del(`callback:${token}`);
64
- }
65
- async fail(token, error) {
66
- if (this.isProduction) {
67
- return this.failAtomic(token, error);
68
- }
69
- else {
70
- return this.failSimple(token, error);
71
- }
72
- }
73
- async failAtomic(token, error) {
74
- const script = `
75
- local data = redis.call('GET', KEYS[1])
76
- if not data then return nil end
77
- local record = cjson.decode(data)
78
- record.status = 'failed'
79
- record.retries = (record.retries or 0) + 1
80
- record.lastError = ARGV[1]
81
- redis.call('SET', KEYS[1], cjson.encode(record))
82
- return cjson.encode(record)
83
- `;
84
- const result = await this.redis.eval(script, 1, `callback:${token}`, error);
85
- return result ? JSON.parse(result) : null;
86
- }
87
- async failSimple(token, error) {
88
- const key = `callback:${token}`;
89
- const data = await this.redis.get(key);
90
- if (!data) {
91
- return null;
92
- }
93
- try {
94
- const record = JSON.parse(data);
95
- record.status = "failed";
96
- record.retries = (record.retries || 0) + 1;
97
- record.lastError = error;
98
- await this.redis.set(key, JSON.stringify(record));
99
- return record;
100
- }
101
- catch (parseError) {
102
- console.error("Failed to parse callback record:", parseError);
103
- return null;
104
- }
105
- }
106
- async retry(token) {
107
- if (this.isProduction) {
108
- return this.retryAtomic(token);
109
- }
110
- else {
111
- return this.retrySimple(token);
112
- }
113
- }
114
- async retryAtomic(token) {
115
- const script = `
116
- local data = redis.call('GET', KEYS[1])
117
- if not data then return nil end
118
- local record = cjson.decode(data)
119
- record.status = 'pending'
120
- redis.call('SET', KEYS[1], cjson.encode(record))
121
- return cjson.encode(record)
122
- `;
123
- const result = await this.redis.eval(script, 1, `callback:${token}`);
124
- return result ? JSON.parse(result) : null;
125
- }
126
- async retrySimple(token) {
127
- const key = `callback:${token}`;
128
- const data = await this.redis.get(key);
129
- if (!data) {
130
- return null;
131
- }
132
- try {
133
- const record = JSON.parse(data);
134
- record.status = "pending";
135
- await this.redis.set(key, JSON.stringify(record));
136
- return record;
137
- }
138
- catch (parseError) {
139
- console.error("Failed to parse callback record:", parseError);
140
- return null;
141
- }
142
- }
143
- }
144
- exports.CallbackStore = CallbackStore;
145
- //# sourceMappingURL=callback-store.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"callback-store.js","sourceRoot":"","sources":["../../src/callbacks/callback-store.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- import { CallbackRegistry } from "./callback-registry";
2
- export declare function registerFinanceExampleCallback(registry: CallbackRegistry): void;
@@ -1,10 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.registerFinanceExampleCallback = registerFinanceExampleCallback;
4
- function registerFinanceExampleCallback(registry) {
5
- registry.register("example", async () => ({
6
- success: true,
7
- message: "Finance callback executed",
8
- }), "finance::1.0.0");
9
- }
10
- //# sourceMappingURL=example.callback.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"example.callback.js","sourceRoot":"","sources":["../../src/callbacks/example.callback.ts"],"names":[],"mappings":";;AAOA,wEASC;AATD,SAAgB,8BAA8B,CAAC,QAA0B;IACvE,QAAQ,CAAC,QAAQ,CACf,SAAS,EACT,KAAK,IAA6B,EAAE,CAAC,CAAC;QACpC,OAAO,EAAE,IAAI;QACb,OAAO,EAAE,2BAA2B;KACrC,CAAC,EACF,gBAAgB,CACjB,CAAC;AACJ,CAAC"}
@@ -1,54 +0,0 @@
1
- import type Redis from "ioredis";
2
- import { CallbackResult } from "../interfaces/callback.interface";
3
- export interface IdempotencyConfig {
4
- ttlSeconds: number;
5
- keyPrefix: string;
6
- hashPayload: boolean;
7
- includeUserId: boolean;
8
- }
9
- export interface IdempotencyEntry {
10
- key: string;
11
- result: CallbackResult;
12
- createdAt: number;
13
- executedAt: number;
14
- expiresAt: number;
15
- requestHash: string;
16
- attempts: number;
17
- }
18
- export declare enum IdempotencyStatus {
19
- NEW = "NEW",
20
- IN_PROGRESS = "IN_PROGRESS",
21
- COMPLETED = "COMPLETED",
22
- FAILED = "FAILED"
23
- }
24
- export declare class IdempotencyManager {
25
- private readonly redis;
26
- private readonly logger;
27
- private readonly defaultConfig;
28
- constructor(redis: Redis);
29
- checkAndLock(idempotencyKey: string | undefined, requestData: {
30
- userId?: string;
31
- graphType: string;
32
- handler: string;
33
- params: Record<string, any>;
34
- }, config?: Partial<IdempotencyConfig>): Promise<{
35
- status: IdempotencyStatus;
36
- result?: CallbackResult;
37
- key: string;
38
- }>;
39
- storeResult(key: string, result: CallbackResult, config?: Partial<IdempotencyConfig>): Promise<void>;
40
- markFailed(key: string, error: string, config?: Partial<IdempotencyConfig>): Promise<void>;
41
- releaseLock(key: string, config?: Partial<IdempotencyConfig>): Promise<void>;
42
- private generateKey;
43
- private acquireLock;
44
- private deterministicStringify;
45
- private sortObject;
46
- cleanup(): Promise<number>;
47
- getStatistics(): Promise<{
48
- totalEntries: number;
49
- completedEntries: number;
50
- inProgressEntries: number;
51
- failedEntries: number;
52
- cacheHitRate: number;
53
- }>;
54
- }