@flutchai/flutch-sdk 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (191) hide show
  1. package/README.md +287 -0
  2. package/dist/api/callback-token.guard.d.ts +17 -0
  3. package/dist/api/callback-token.guard.js +80 -0
  4. package/dist/api/callback-token.guard.js.map +1 -0
  5. package/dist/api/callback.controller.d.ts +7 -0
  6. package/dist/api/callback.controller.js +44 -0
  7. package/dist/api/callback.controller.js.map +1 -0
  8. package/dist/api/graph.controller.d.ts +32 -0
  9. package/dist/api/graph.controller.js +187 -0
  10. package/dist/api/graph.controller.js.map +1 -0
  11. package/dist/api/ui-dispatch.controller.d.ts +34 -0
  12. package/dist/api/ui-dispatch.controller.js +178 -0
  13. package/dist/api/ui-dispatch.controller.js.map +1 -0
  14. package/dist/bootstrap.d.ts +4 -0
  15. package/dist/bootstrap.js +177 -0
  16. package/dist/bootstrap.js.map +1 -0
  17. package/dist/callbacks/callback-acl.service.d.ts +24 -0
  18. package/dist/callbacks/callback-acl.service.js +144 -0
  19. package/dist/callbacks/callback-acl.service.js.map +1 -0
  20. package/dist/callbacks/callback-auditor.service.d.ts +47 -0
  21. package/dist/callbacks/callback-auditor.service.js +286 -0
  22. package/dist/callbacks/callback-auditor.service.js.map +1 -0
  23. package/dist/callbacks/callback-metrics.service.d.ts +34 -0
  24. package/dist/callbacks/callback-metrics.service.js +216 -0
  25. package/dist/callbacks/callback-metrics.service.js.map +1 -0
  26. package/dist/callbacks/callback-patch.service.d.ts +13 -0
  27. package/dist/callbacks/callback-patch.service.js +51 -0
  28. package/dist/callbacks/callback-patch.service.js.map +1 -0
  29. package/dist/callbacks/callback-rate-limiter.d.ts +27 -0
  30. package/dist/callbacks/callback-rate-limiter.js +129 -0
  31. package/dist/callbacks/callback-rate-limiter.js.map +1 -0
  32. package/dist/callbacks/callback-registry.d.ts +7 -0
  33. package/dist/callbacks/callback-registry.js +29 -0
  34. package/dist/callbacks/callback-registry.js.map +1 -0
  35. package/dist/callbacks/callback-store.d.ts +19 -0
  36. package/dist/callbacks/callback-store.js +145 -0
  37. package/dist/callbacks/callback-store.js.map +1 -0
  38. package/dist/callbacks/example.callback.d.ts +2 -0
  39. package/dist/callbacks/example.callback.js +10 -0
  40. package/dist/callbacks/example.callback.js.map +1 -0
  41. package/dist/callbacks/idempotency-manager.d.ts +54 -0
  42. package/dist/callbacks/idempotency-manager.js +230 -0
  43. package/dist/callbacks/idempotency-manager.js.map +1 -0
  44. package/dist/callbacks/index.d.ts +13 -0
  45. package/dist/callbacks/index.js +30 -0
  46. package/dist/callbacks/index.js.map +1 -0
  47. package/dist/callbacks/smart-callback.router.d.ts +52 -0
  48. package/dist/callbacks/smart-callback.router.js +213 -0
  49. package/dist/callbacks/smart-callback.router.js.map +1 -0
  50. package/dist/callbacks/telegram-patch.handler.d.ts +6 -0
  51. package/dist/callbacks/telegram-patch.handler.js +24 -0
  52. package/dist/callbacks/telegram-patch.handler.js.map +1 -0
  53. package/dist/callbacks/universal-callback.service.d.ts +14 -0
  54. package/dist/callbacks/universal-callback.service.js +20 -0
  55. package/dist/callbacks/universal-callback.service.js.map +1 -0
  56. package/dist/callbacks/web-patch.handler.d.ts +6 -0
  57. package/dist/callbacks/web-patch.handler.js +24 -0
  58. package/dist/callbacks/web-patch.handler.js.map +1 -0
  59. package/dist/core/abstract-graph.builder.d.ts +128 -0
  60. package/dist/core/abstract-graph.builder.js +488 -0
  61. package/dist/core/abstract-graph.builder.js.map +1 -0
  62. package/dist/core/builder-registry.service.d.ts +6 -0
  63. package/dist/core/builder-registry.service.js +29 -0
  64. package/dist/core/builder-registry.service.js.map +1 -0
  65. package/dist/core/universal-graph.module.d.ts +10 -0
  66. package/dist/core/universal-graph.module.js +294 -0
  67. package/dist/core/universal-graph.module.js.map +1 -0
  68. package/dist/decorators/callback.decorators.d.ts +21 -0
  69. package/dist/decorators/callback.decorators.js +73 -0
  70. package/dist/decorators/callback.decorators.js.map +1 -0
  71. package/dist/endpoint-registry/endpoint.decorators.d.ts +35 -0
  72. package/dist/endpoint-registry/endpoint.decorators.js +115 -0
  73. package/dist/endpoint-registry/endpoint.decorators.js.map +1 -0
  74. package/dist/endpoint-registry/endpoint.registry.d.ts +44 -0
  75. package/dist/endpoint-registry/endpoint.registry.js +90 -0
  76. package/dist/endpoint-registry/endpoint.registry.js.map +1 -0
  77. package/dist/endpoint-registry/index.d.ts +3 -0
  78. package/dist/endpoint-registry/index.js +20 -0
  79. package/dist/endpoint-registry/index.js.map +1 -0
  80. package/dist/endpoint-registry/ui-endpoints.discovery.d.ts +11 -0
  81. package/dist/endpoint-registry/ui-endpoints.discovery.js +72 -0
  82. package/dist/endpoint-registry/ui-endpoints.discovery.js.map +1 -0
  83. package/dist/engine/api-call-tracer.utils.d.ts +8 -0
  84. package/dist/engine/api-call-tracer.utils.js +184 -0
  85. package/dist/engine/api-call-tracer.utils.js.map +1 -0
  86. package/dist/engine/event-processor.utils.d.ts +49 -0
  87. package/dist/engine/event-processor.utils.js +314 -0
  88. package/dist/engine/event-processor.utils.js.map +1 -0
  89. package/dist/engine/graph-engine.factory.d.ts +12 -0
  90. package/dist/engine/graph-engine.factory.js +43 -0
  91. package/dist/engine/graph-engine.factory.js.map +1 -0
  92. package/dist/engine/langgraph-engine.d.ts +14 -0
  93. package/dist/engine/langgraph-engine.js +261 -0
  94. package/dist/engine/langgraph-engine.js.map +1 -0
  95. package/dist/index.d.ts +27 -0
  96. package/dist/index.js +48 -0
  97. package/dist/index.js.map +1 -0
  98. package/dist/interfaces/callback.interface.d.ts +46 -0
  99. package/dist/interfaces/callback.interface.js +3 -0
  100. package/dist/interfaces/callback.interface.js.map +1 -0
  101. package/dist/interfaces/graph-registry.interface.d.ts +8 -0
  102. package/dist/interfaces/graph-registry.interface.js +3 -0
  103. package/dist/interfaces/graph-registry.interface.js.map +1 -0
  104. package/dist/interfaces/graph-service.interface.d.ts +43 -0
  105. package/dist/interfaces/graph-service.interface.js +9 -0
  106. package/dist/interfaces/graph-service.interface.js.map +1 -0
  107. package/dist/interfaces/index.d.ts +3 -0
  108. package/dist/interfaces/index.js +20 -0
  109. package/dist/interfaces/index.js.map +1 -0
  110. package/dist/llm/index.d.ts +6 -0
  111. package/dist/llm/index.js +23 -0
  112. package/dist/llm/index.js.map +1 -0
  113. package/dist/llm/llm.initializer.d.ts +14 -0
  114. package/dist/llm/llm.initializer.js +167 -0
  115. package/dist/llm/llm.initializer.js.map +1 -0
  116. package/dist/llm/llm.interface.d.ts +6 -0
  117. package/dist/llm/llm.interface.js +3 -0
  118. package/dist/llm/llm.interface.js.map +1 -0
  119. package/dist/llm/llm.types.d.ts +32 -0
  120. package/dist/llm/llm.types.js +3 -0
  121. package/dist/llm/llm.types.js.map +1 -0
  122. package/dist/llm/model.initializer.d.ts +45 -0
  123. package/dist/llm/model.initializer.js +630 -0
  124. package/dist/llm/model.initializer.js.map +1 -0
  125. package/dist/llm/model.interface.d.ts +38 -0
  126. package/dist/llm/model.interface.js +4 -0
  127. package/dist/llm/model.interface.js.map +1 -0
  128. package/dist/llm/rerankers/voyageai-rerank.d.ts +17 -0
  129. package/dist/llm/rerankers/voyageai-rerank.js +56 -0
  130. package/dist/llm/rerankers/voyageai-rerank.js.map +1 -0
  131. package/dist/retriever/database-factory.d.ts +15 -0
  132. package/dist/retriever/database-factory.js +83 -0
  133. package/dist/retriever/database-factory.js.map +1 -0
  134. package/dist/retriever/index.d.ts +2 -0
  135. package/dist/retriever/index.js +19 -0
  136. package/dist/retriever/index.js.map +1 -0
  137. package/dist/retriever/retriever.client.d.ts +28 -0
  138. package/dist/retriever/retriever.client.js +97 -0
  139. package/dist/retriever/retriever.client.js.map +1 -0
  140. package/dist/retriever/retriever.service.d.ts +25 -0
  141. package/dist/retriever/retriever.service.js +265 -0
  142. package/dist/retriever/retriever.service.js.map +1 -0
  143. package/dist/retriever/types.d.ts +22 -0
  144. package/dist/retriever/types.js +3 -0
  145. package/dist/retriever/types.js.map +1 -0
  146. package/dist/schemas/graph-manifest.schema.d.ts +134 -0
  147. package/dist/schemas/graph-manifest.schema.js +180 -0
  148. package/dist/schemas/graph-manifest.schema.js.map +1 -0
  149. package/dist/schemas/index.d.ts +1 -0
  150. package/dist/schemas/index.js +18 -0
  151. package/dist/schemas/index.js.map +1 -0
  152. package/dist/shared-types/index.d.ts +199 -0
  153. package/dist/shared-types/index.js +58 -0
  154. package/dist/shared-types/index.js.map +1 -0
  155. package/dist/tools/index.d.ts +3 -0
  156. package/dist/tools/index.js +20 -0
  157. package/dist/tools/index.js.map +1 -0
  158. package/dist/tools/mcp-converter.d.ts +15 -0
  159. package/dist/tools/mcp-converter.js +133 -0
  160. package/dist/tools/mcp-converter.js.map +1 -0
  161. package/dist/tools/mcp-tool-filter.d.ts +11 -0
  162. package/dist/tools/mcp-tool-filter.js +123 -0
  163. package/dist/tools/mcp-tool-filter.js.map +1 -0
  164. package/dist/tools/mcp.interfaces.d.ts +19 -0
  165. package/dist/tools/mcp.interfaces.js +3 -0
  166. package/dist/tools/mcp.interfaces.js.map +1 -0
  167. package/dist/types/graph-types.d.ts +82 -0
  168. package/dist/types/graph-types.js +6 -0
  169. package/dist/types/graph-types.js.map +1 -0
  170. package/dist/utils/error.utils.d.ts +18 -0
  171. package/dist/utils/error.utils.js +78 -0
  172. package/dist/utils/error.utils.js.map +1 -0
  173. package/dist/utils/graph-type.utils.d.ts +14 -0
  174. package/dist/utils/graph-type.utils.js +71 -0
  175. package/dist/utils/graph-type.utils.js.map +1 -0
  176. package/dist/utils/index.d.ts +1 -0
  177. package/dist/utils/index.js +18 -0
  178. package/dist/utils/index.js.map +1 -0
  179. package/dist/utils/usage-recorder.d.ts +23 -0
  180. package/dist/utils/usage-recorder.js +29 -0
  181. package/dist/utils/usage-recorder.js.map +1 -0
  182. package/dist/versioning/index.d.ts +2 -0
  183. package/dist/versioning/index.js +19 -0
  184. package/dist/versioning/index.js.map +1 -0
  185. package/dist/versioning/versioned-graph.service.d.ts +16 -0
  186. package/dist/versioning/versioned-graph.service.js +132 -0
  187. package/dist/versioning/versioned-graph.service.js.map +1 -0
  188. package/dist/versioning/versioning.types.d.ts +21 -0
  189. package/dist/versioning/versioning.types.js +3 -0
  190. package/dist/versioning/versioning.types.js.map +1 -0
  191. package/package.json +70 -0
@@ -0,0 +1,47 @@
1
+ import { CallbackRecord, CallbackResult } from "../interfaces/callback.interface";
2
+ import { CallbackUser } from "./callback-acl.service";
3
+ export interface AuditEntry {
4
+ id: string;
5
+ correlationId: string;
6
+ timestamp: number;
7
+ action: CallbackAuditAction;
8
+ userId?: string;
9
+ callbackToken: string;
10
+ graphType: string;
11
+ handler: string;
12
+ success: boolean;
13
+ duration?: number;
14
+ error?: string;
15
+ metadata: Record<string, any>;
16
+ ip?: string;
17
+ userAgent?: string;
18
+ }
19
+ export declare enum CallbackAuditAction {
20
+ TOKEN_ISSUED = "TOKEN_ISSUED",
21
+ TOKEN_VALIDATED = "TOKEN_VALIDATED",
22
+ TOKEN_LOCKED = "TOKEN_LOCKED",
23
+ EXECUTION_STARTED = "EXECUTION_STARTED",
24
+ EXECUTION_COMPLETED = "EXECUTION_COMPLETED",
25
+ EXECUTION_FAILED = "EXECUTION_FAILED",
26
+ TOKEN_EXPIRED = "TOKEN_EXPIRED",
27
+ ACCESS_DENIED = "ACCESS_DENIED",
28
+ RATE_LIMITED = "RATE_LIMITED",
29
+ RETRY_ATTEMPTED = "RETRY_ATTEMPTED"
30
+ }
31
+ export declare class CallbackAuditor {
32
+ private readonly logger;
33
+ private readonly auditStore;
34
+ logTokenIssued(token: string, graphType: string, handler: string, userId: string, metadata?: Record<string, any>): Promise<string>;
35
+ logExecutionStart(record: CallbackRecord, user: CallbackUser | undefined, correlationId?: string): Promise<string>;
36
+ logExecutionSuccess(record: CallbackRecord, user: CallbackUser | undefined, result: CallbackResult, duration: number, correlationId: string): Promise<void>;
37
+ logExecutionFailure(record: CallbackRecord, user: CallbackUser | undefined, error: Error, duration: number, correlationId: string): Promise<void>;
38
+ logAccessDenied(token: string, userId?: string, reason?: string, metadata?: Record<string, any>): Promise<void>;
39
+ logRateLimited(identifier: string, retryAfter: number, metadata?: Record<string, any>): Promise<void>;
40
+ logRetryAttempt(record: CallbackRecord, user: CallbackUser | undefined, attemptNumber: number): Promise<string>;
41
+ getTokenAuditTrail(token: string): Promise<AuditEntry[]>;
42
+ getUserAuditTrail(userId: string, startTime?: number, endTime?: number): Promise<AuditEntry[]>;
43
+ getStatistics(startTime: number, endTime: number): Promise<Record<string, any>>;
44
+ private persist;
45
+ private generateCorrelationId;
46
+ exportAuditLogs(startTime: number, endTime: number, format?: "json" | "csv"): Promise<string>;
47
+ }
@@ -0,0 +1,286 @@
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 CallbackAuditor_1;
9
+ Object.defineProperty(exports, "__esModule", { value: true });
10
+ exports.CallbackAuditor = exports.CallbackAuditAction = void 0;
11
+ const common_1 = require("@nestjs/common");
12
+ const crypto_1 = require("crypto");
13
+ var CallbackAuditAction;
14
+ (function (CallbackAuditAction) {
15
+ CallbackAuditAction["TOKEN_ISSUED"] = "TOKEN_ISSUED";
16
+ CallbackAuditAction["TOKEN_VALIDATED"] = "TOKEN_VALIDATED";
17
+ CallbackAuditAction["TOKEN_LOCKED"] = "TOKEN_LOCKED";
18
+ CallbackAuditAction["EXECUTION_STARTED"] = "EXECUTION_STARTED";
19
+ CallbackAuditAction["EXECUTION_COMPLETED"] = "EXECUTION_COMPLETED";
20
+ CallbackAuditAction["EXECUTION_FAILED"] = "EXECUTION_FAILED";
21
+ CallbackAuditAction["TOKEN_EXPIRED"] = "TOKEN_EXPIRED";
22
+ CallbackAuditAction["ACCESS_DENIED"] = "ACCESS_DENIED";
23
+ CallbackAuditAction["RATE_LIMITED"] = "RATE_LIMITED";
24
+ CallbackAuditAction["RETRY_ATTEMPTED"] = "RETRY_ATTEMPTED";
25
+ })(CallbackAuditAction || (exports.CallbackAuditAction = CallbackAuditAction = {}));
26
+ let CallbackAuditor = CallbackAuditor_1 = class CallbackAuditor {
27
+ constructor() {
28
+ this.logger = new common_1.Logger(CallbackAuditor_1.name);
29
+ this.auditStore = new Map();
30
+ }
31
+ async logTokenIssued(token, graphType, handler, userId, metadata) {
32
+ const correlationId = this.generateCorrelationId();
33
+ const entry = {
34
+ id: (0, crypto_1.randomUUID)(),
35
+ correlationId,
36
+ timestamp: Date.now(),
37
+ action: CallbackAuditAction.TOKEN_ISSUED,
38
+ userId,
39
+ callbackToken: token,
40
+ graphType,
41
+ handler,
42
+ success: true,
43
+ metadata: Object.assign(Object.assign({}, metadata), { ttl: metadata === null || metadata === void 0 ? void 0 : metadata.ttlSec, scopes: metadata === null || metadata === void 0 ? void 0 : metadata.scopes }),
44
+ };
45
+ await this.persist(entry);
46
+ this.logger.log(`[${correlationId}] Token issued: ${token} for ${graphType}::${handler} by user ${userId}`);
47
+ return correlationId;
48
+ }
49
+ async logExecutionStart(record, user, correlationId) {
50
+ const corrId = correlationId || this.generateCorrelationId();
51
+ const entry = {
52
+ id: (0, crypto_1.randomUUID)(),
53
+ correlationId: corrId,
54
+ timestamp: Date.now(),
55
+ action: CallbackAuditAction.EXECUTION_STARTED,
56
+ userId: user === null || user === void 0 ? void 0 : user.userId,
57
+ callbackToken: record.token,
58
+ graphType: record.graphType,
59
+ handler: record.handler,
60
+ success: true,
61
+ metadata: {
62
+ originalUserId: record.userId,
63
+ retries: record.retries,
64
+ age: Date.now() - record.createdAt,
65
+ },
66
+ };
67
+ await this.persist(entry);
68
+ this.logger.log(`[${corrId}] Execution started: ${record.graphType}::${record.handler} by user ${user === null || user === void 0 ? void 0 : user.userId}`);
69
+ return corrId;
70
+ }
71
+ async logExecutionSuccess(record, user, result, duration, correlationId) {
72
+ var _a;
73
+ const entry = {
74
+ id: (0, crypto_1.randomUUID)(),
75
+ correlationId,
76
+ timestamp: Date.now(),
77
+ action: CallbackAuditAction.EXECUTION_COMPLETED,
78
+ userId: user === null || user === void 0 ? void 0 : user.userId,
79
+ callbackToken: record.token,
80
+ graphType: record.graphType,
81
+ handler: record.handler,
82
+ success: true,
83
+ duration,
84
+ metadata: {
85
+ hasAttachments: !!((_a = result.attachments) === null || _a === void 0 ? void 0 : _a.length),
86
+ hasPatch: !!result.patch,
87
+ message: result.message,
88
+ },
89
+ };
90
+ await this.persist(entry);
91
+ this.logger.log(`[${correlationId}] Execution completed: ${record.graphType}::${record.handler} ` +
92
+ `in ${duration}ms`);
93
+ }
94
+ async logExecutionFailure(record, user, error, duration, correlationId) {
95
+ const entry = {
96
+ id: (0, crypto_1.randomUUID)(),
97
+ correlationId,
98
+ timestamp: Date.now(),
99
+ action: CallbackAuditAction.EXECUTION_FAILED,
100
+ userId: user === null || user === void 0 ? void 0 : user.userId,
101
+ callbackToken: record.token,
102
+ graphType: record.graphType,
103
+ handler: record.handler,
104
+ success: false,
105
+ duration,
106
+ error: error.message,
107
+ metadata: {
108
+ errorName: error.name,
109
+ errorStack: error.stack,
110
+ retries: record.retries,
111
+ },
112
+ };
113
+ await this.persist(entry);
114
+ this.logger.error(`[${correlationId}] Execution failed: ${record.graphType}::${record.handler} - ${error.message}`, error.stack);
115
+ }
116
+ async logAccessDenied(token, userId, reason, metadata) {
117
+ const correlationId = this.generateCorrelationId();
118
+ const entry = {
119
+ id: (0, crypto_1.randomUUID)(),
120
+ correlationId,
121
+ timestamp: Date.now(),
122
+ action: CallbackAuditAction.ACCESS_DENIED,
123
+ userId,
124
+ callbackToken: token,
125
+ graphType: (metadata === null || metadata === void 0 ? void 0 : metadata.graphType) || "unknown",
126
+ handler: (metadata === null || metadata === void 0 ? void 0 : metadata.handler) || "unknown",
127
+ success: false,
128
+ error: reason,
129
+ metadata: metadata || {},
130
+ };
131
+ await this.persist(entry);
132
+ this.logger.warn(`[${correlationId}] Access denied for token ${token}: ${reason}`);
133
+ }
134
+ async logRateLimited(identifier, retryAfter, metadata) {
135
+ const correlationId = this.generateCorrelationId();
136
+ const entry = {
137
+ id: (0, crypto_1.randomUUID)(),
138
+ correlationId,
139
+ timestamp: Date.now(),
140
+ action: CallbackAuditAction.RATE_LIMITED,
141
+ callbackToken: (metadata === null || metadata === void 0 ? void 0 : metadata.token) || "unknown",
142
+ graphType: (metadata === null || metadata === void 0 ? void 0 : metadata.graphType) || "unknown",
143
+ handler: (metadata === null || metadata === void 0 ? void 0 : metadata.handler) || "unknown",
144
+ success: false,
145
+ metadata: Object.assign({ identifier,
146
+ retryAfter }, metadata),
147
+ };
148
+ await this.persist(entry);
149
+ this.logger.warn(`[${correlationId}] Rate limited: ${identifier}, retry after ${retryAfter}s`);
150
+ }
151
+ async logRetryAttempt(record, user, attemptNumber) {
152
+ const correlationId = this.generateCorrelationId();
153
+ const entry = {
154
+ id: (0, crypto_1.randomUUID)(),
155
+ correlationId,
156
+ timestamp: Date.now(),
157
+ action: CallbackAuditAction.RETRY_ATTEMPTED,
158
+ userId: user === null || user === void 0 ? void 0 : user.userId,
159
+ callbackToken: record.token,
160
+ graphType: record.graphType,
161
+ handler: record.handler,
162
+ success: true,
163
+ metadata: {
164
+ attemptNumber,
165
+ totalRetries: record.retries,
166
+ lastError: record.lastError,
167
+ },
168
+ };
169
+ await this.persist(entry);
170
+ this.logger.log(`[${correlationId}] Retry attempt #${attemptNumber} for ${record.graphType}::${record.handler}`);
171
+ return correlationId;
172
+ }
173
+ async getTokenAuditTrail(token) {
174
+ const entries = [];
175
+ for (const entry of this.auditStore.values()) {
176
+ if (entry.callbackToken === token) {
177
+ entries.push(entry);
178
+ }
179
+ }
180
+ return entries.sort((a, b) => a.timestamp - b.timestamp);
181
+ }
182
+ async getUserAuditTrail(userId, startTime, endTime) {
183
+ const entries = [];
184
+ const start = startTime || 0;
185
+ const end = endTime || Date.now();
186
+ for (const entry of this.auditStore.values()) {
187
+ if (entry.userId === userId &&
188
+ entry.timestamp >= start &&
189
+ entry.timestamp <= end) {
190
+ entries.push(entry);
191
+ }
192
+ }
193
+ return entries.sort((a, b) => a.timestamp - b.timestamp);
194
+ }
195
+ async getStatistics(startTime, endTime) {
196
+ const entries = [];
197
+ for (const entry of this.auditStore.values()) {
198
+ if (entry.timestamp >= startTime && entry.timestamp <= endTime) {
199
+ entries.push(entry);
200
+ }
201
+ }
202
+ const stats = {
203
+ totalCallbacks: entries.length,
204
+ successfulExecutions: entries.filter(e => e.action === CallbackAuditAction.EXECUTION_COMPLETED).length,
205
+ failedExecutions: entries.filter(e => e.action === CallbackAuditAction.EXECUTION_FAILED).length,
206
+ accessDenied: entries.filter(e => e.action === CallbackAuditAction.ACCESS_DENIED).length,
207
+ rateLimited: entries.filter(e => e.action === CallbackAuditAction.RATE_LIMITED).length,
208
+ averageDuration: 0,
209
+ byGraphType: {},
210
+ byHandler: {},
211
+ };
212
+ const durations = entries.filter(e => e.duration).map(e => e.duration);
213
+ if (durations.length > 0) {
214
+ stats.averageDuration =
215
+ durations.reduce((a, b) => a + b, 0) / durations.length;
216
+ }
217
+ entries.forEach(entry => {
218
+ stats.byGraphType[entry.graphType] =
219
+ (stats.byGraphType[entry.graphType] || 0) + 1;
220
+ const key = `${entry.graphType}::${entry.handler}`;
221
+ stats.byHandler[key] = (stats.byHandler[key] || 0) + 1;
222
+ });
223
+ return stats;
224
+ }
225
+ async persist(entry) {
226
+ this.auditStore.set(entry.id, entry);
227
+ if (this.auditStore.size > 10000) {
228
+ const entries = Array.from(this.auditStore.entries())
229
+ .sort((a, b) => b[1].timestamp - a[1].timestamp)
230
+ .slice(0, 10000);
231
+ this.auditStore.clear();
232
+ entries.forEach(([id, entry]) => this.auditStore.set(id, entry));
233
+ }
234
+ }
235
+ generateCorrelationId() {
236
+ return `cb_${Date.now()}_${(0, crypto_1.randomUUID)().slice(0, 8)}`;
237
+ }
238
+ async exportAuditLogs(startTime, endTime, format = "json") {
239
+ const entries = [];
240
+ for (const entry of this.auditStore.values()) {
241
+ if (entry.timestamp >= startTime && entry.timestamp <= endTime) {
242
+ entries.push(entry);
243
+ }
244
+ }
245
+ if (format === "json") {
246
+ return JSON.stringify(entries, null, 2);
247
+ }
248
+ else {
249
+ const headers = [
250
+ "id",
251
+ "correlationId",
252
+ "timestamp",
253
+ "action",
254
+ "userId",
255
+ "callbackToken",
256
+ "graphType",
257
+ "handler",
258
+ "success",
259
+ "duration",
260
+ "error",
261
+ ];
262
+ const rows = entries.map(e => {
263
+ var _a;
264
+ return [
265
+ e.id,
266
+ e.correlationId,
267
+ new Date(e.timestamp).toISOString(),
268
+ e.action,
269
+ e.userId || "",
270
+ e.callbackToken,
271
+ e.graphType,
272
+ e.handler,
273
+ e.success.toString(),
274
+ ((_a = e.duration) === null || _a === void 0 ? void 0 : _a.toString()) || "",
275
+ e.error || "",
276
+ ];
277
+ });
278
+ return [headers, ...rows].map(row => row.join(",")).join("\n");
279
+ }
280
+ }
281
+ };
282
+ exports.CallbackAuditor = CallbackAuditor;
283
+ exports.CallbackAuditor = CallbackAuditor = CallbackAuditor_1 = __decorate([
284
+ (0, common_1.Injectable)()
285
+ ], CallbackAuditor);
286
+ //# sourceMappingURL=callback-auditor.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"callback-auditor.service.js","sourceRoot":"","sources":["../../src/callbacks/callback-auditor.service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,34 @@
1
+ import { Registry } from "prom-client";
2
+ export declare class CallbackMetrics {
3
+ private readonly registry;
4
+ private readonly callbacksTotal;
5
+ private readonly callbacksSuccess;
6
+ private readonly callbacksFailed;
7
+ private readonly callbacksRetried;
8
+ private readonly accessDenied;
9
+ private readonly rateLimited;
10
+ private readonly tokensIssued;
11
+ private readonly tokensExpired;
12
+ private readonly executionDuration;
13
+ private readonly aclValidationDuration;
14
+ private readonly tokenAge;
15
+ private readonly activeCallbacks;
16
+ private readonly pendingCallbacks;
17
+ private readonly queueSize;
18
+ constructor(registry?: Registry);
19
+ recordExecutionStart(graphType: string, handler?: string): void;
20
+ recordExecutionComplete(graphType: string, handler: string, duration: number, success: boolean, error?: string): void;
21
+ recordTokenIssued(graphType: string, handler: string): void;
22
+ recordTokenExpired(graphType: string): void;
23
+ recordTokenAge(graphType: string, ageMs: number): void;
24
+ recordAclValidation(allowed: boolean, durationMs: number): void;
25
+ recordAccessDenied(reason: string): void;
26
+ recordRateLimited(identifierType: "user" | "ip" | "token"): void;
27
+ recordRetry(graphType: string, handler: string): void;
28
+ updateQueueSize(size: number): void;
29
+ getMetrics(): Promise<string>;
30
+ getContentType(): string;
31
+ reset(): void;
32
+ private classifyError;
33
+ getSummary(): Promise<Record<string, any>>;
34
+ }
@@ -0,0 +1,216 @@
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
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.CallbackMetrics = void 0;
13
+ const common_1 = require("@nestjs/common");
14
+ const prom_client_1 = require("prom-client");
15
+ let CallbackMetrics = class CallbackMetrics {
16
+ constructor(registry) {
17
+ this.registry = registry !== null && registry !== void 0 ? registry : new prom_client_1.Registry();
18
+ (0, prom_client_1.collectDefaultMetrics)({ register: this.registry });
19
+ this.callbacksTotal = new prom_client_1.Counter({
20
+ name: "graph_callbacks_total",
21
+ help: "Total number of callback executions",
22
+ labelNames: ["graph_type", "handler", "status"],
23
+ registers: [this.registry],
24
+ });
25
+ this.callbacksSuccess = new prom_client_1.Counter({
26
+ name: "graph_callbacks_success_total",
27
+ help: "Total number of successful callback executions",
28
+ labelNames: ["graph_type", "handler"],
29
+ registers: [this.registry],
30
+ });
31
+ this.callbacksFailed = new prom_client_1.Counter({
32
+ name: "graph_callbacks_failed_total",
33
+ help: "Total number of failed callback executions",
34
+ labelNames: ["graph_type", "handler", "error_type"],
35
+ registers: [this.registry],
36
+ });
37
+ this.callbacksRetried = new prom_client_1.Counter({
38
+ name: "graph_callbacks_retried_total",
39
+ help: "Total number of retried callbacks",
40
+ labelNames: ["graph_type", "handler"],
41
+ registers: [this.registry],
42
+ });
43
+ this.accessDenied = new prom_client_1.Counter({
44
+ name: "graph_callbacks_access_denied_total",
45
+ help: "Total number of access denied events",
46
+ labelNames: ["reason"],
47
+ registers: [this.registry],
48
+ });
49
+ this.rateLimited = new prom_client_1.Counter({
50
+ name: "graph_callbacks_rate_limited_total",
51
+ help: "Total number of rate limited requests",
52
+ labelNames: ["identifier_type"],
53
+ registers: [this.registry],
54
+ });
55
+ this.tokensIssued = new prom_client_1.Counter({
56
+ name: "graph_callback_tokens_issued_total",
57
+ help: "Total number of callback tokens issued",
58
+ labelNames: ["graph_type", "handler"],
59
+ registers: [this.registry],
60
+ });
61
+ this.tokensExpired = new prom_client_1.Counter({
62
+ name: "graph_callback_tokens_expired_total",
63
+ help: "Total number of expired callback tokens",
64
+ labelNames: ["graph_type"],
65
+ registers: [this.registry],
66
+ });
67
+ this.executionDuration = new prom_client_1.Histogram({
68
+ name: "graph_callback_execution_duration_seconds",
69
+ help: "Duration of callback execution in seconds",
70
+ labelNames: ["graph_type", "handler", "status"],
71
+ buckets: [0.01, 0.05, 0.1, 0.5, 1, 2, 5, 10],
72
+ registers: [this.registry],
73
+ });
74
+ this.aclValidationDuration = new prom_client_1.Histogram({
75
+ name: "graph_callback_acl_validation_duration_seconds",
76
+ help: "Duration of ACL validation in seconds",
77
+ labelNames: ["result"],
78
+ buckets: [0.001, 0.005, 0.01, 0.025, 0.05, 0.1],
79
+ registers: [this.registry],
80
+ });
81
+ this.tokenAge = new prom_client_1.Histogram({
82
+ name: "graph_callback_token_age_seconds",
83
+ help: "Age of callback token when executed",
84
+ labelNames: ["graph_type"],
85
+ buckets: [1, 5, 10, 30, 60, 120, 300, 600],
86
+ registers: [this.registry],
87
+ });
88
+ this.activeCallbacks = new prom_client_1.Gauge({
89
+ name: "graph_callbacks_active",
90
+ help: "Number of currently executing callbacks",
91
+ labelNames: ["graph_type"],
92
+ registers: [this.registry],
93
+ });
94
+ this.pendingCallbacks = new prom_client_1.Gauge({
95
+ name: "graph_callbacks_pending",
96
+ help: "Number of pending callbacks in queue",
97
+ labelNames: ["graph_type"],
98
+ registers: [this.registry],
99
+ });
100
+ this.queueSize = new prom_client_1.Gauge({
101
+ name: "graph_callback_queue_size",
102
+ help: "Current size of callback queue",
103
+ registers: [this.registry],
104
+ });
105
+ }
106
+ recordExecutionStart(graphType, handler) {
107
+ const labels = { graph_type: graphType };
108
+ this.activeCallbacks.inc(labels);
109
+ this.pendingCallbacks.dec(labels);
110
+ }
111
+ recordExecutionComplete(graphType, handler, duration, success, error) {
112
+ const status = success ? "success" : "failure";
113
+ this.callbacksTotal.inc({ graph_type: graphType, handler, status });
114
+ if (success) {
115
+ this.callbacksSuccess.inc({ graph_type: graphType, handler });
116
+ }
117
+ else {
118
+ const errorType = this.classifyError(error);
119
+ this.callbacksFailed.inc({
120
+ graph_type: graphType,
121
+ handler,
122
+ error_type: errorType,
123
+ });
124
+ }
125
+ this.executionDuration.observe({ graph_type: graphType, handler, status }, duration / 1000);
126
+ this.activeCallbacks.dec({ graph_type: graphType });
127
+ }
128
+ recordTokenIssued(graphType, handler) {
129
+ this.tokensIssued.inc({ graph_type: graphType, handler });
130
+ this.pendingCallbacks.inc({ graph_type: graphType });
131
+ }
132
+ recordTokenExpired(graphType) {
133
+ this.tokensExpired.inc({ graph_type: graphType });
134
+ this.pendingCallbacks.dec({ graph_type: graphType });
135
+ }
136
+ recordTokenAge(graphType, ageMs) {
137
+ this.tokenAge.observe({ graph_type: graphType }, ageMs / 1000);
138
+ }
139
+ recordAclValidation(allowed, durationMs) {
140
+ const result = allowed ? "allowed" : "denied";
141
+ this.aclValidationDuration.observe({ result }, durationMs / 1000);
142
+ if (!allowed) {
143
+ this.accessDenied.inc({ reason: "acl_validation" });
144
+ }
145
+ }
146
+ recordAccessDenied(reason) {
147
+ this.accessDenied.inc({ reason });
148
+ }
149
+ recordRateLimited(identifierType) {
150
+ this.rateLimited.inc({ identifier_type: identifierType });
151
+ }
152
+ recordRetry(graphType, handler) {
153
+ this.callbacksRetried.inc({ graph_type: graphType, handler });
154
+ }
155
+ updateQueueSize(size) {
156
+ this.queueSize.set(size);
157
+ }
158
+ async getMetrics() {
159
+ return this.registry.metrics();
160
+ }
161
+ getContentType() {
162
+ return this.registry.contentType;
163
+ }
164
+ reset() {
165
+ this.registry.resetMetrics();
166
+ }
167
+ classifyError(error) {
168
+ if (!error)
169
+ return "unknown";
170
+ const lowerError = error.toLowerCase();
171
+ if (lowerError.includes("timeout"))
172
+ return "timeout";
173
+ if (lowerError.includes("network"))
174
+ return "network";
175
+ if (lowerError.includes("validation"))
176
+ return "validation";
177
+ if (lowerError.includes("permission") || lowerError.includes("forbidden"))
178
+ return "permission";
179
+ if (lowerError.includes("not found"))
180
+ return "not_found";
181
+ if (lowerError.includes("rate limit"))
182
+ return "rate_limit";
183
+ if (lowerError.includes("retry"))
184
+ return "retry_exhausted";
185
+ return "application";
186
+ }
187
+ async getSummary() {
188
+ const metrics = await this.registry.getMetricsAsJSON();
189
+ const summary = {};
190
+ metrics.forEach((metric) => {
191
+ if (metric.name === "graph_callbacks_total") {
192
+ summary.totalCallbacks = metric.values.reduce((sum, v) => sum + v.value, 0);
193
+ }
194
+ if (metric.name === "graph_callbacks_success_total") {
195
+ summary.successfulCallbacks = metric.values.reduce((sum, v) => sum + v.value, 0);
196
+ }
197
+ if (metric.name === "graph_callbacks_failed_total") {
198
+ summary.failedCallbacks = metric.values.reduce((sum, v) => sum + v.value, 0);
199
+ }
200
+ if (metric.name === "graph_callbacks_active") {
201
+ summary.activeCallbacks = metric.values.reduce((sum, v) => sum + v.value, 0);
202
+ }
203
+ });
204
+ if (summary.totalCallbacks > 0) {
205
+ summary.successRate =
206
+ (summary.successfulCallbacks / summary.totalCallbacks) * 100;
207
+ }
208
+ return summary;
209
+ }
210
+ };
211
+ exports.CallbackMetrics = CallbackMetrics;
212
+ exports.CallbackMetrics = CallbackMetrics = __decorate([
213
+ (0, common_1.Injectable)(),
214
+ __metadata("design:paramtypes", [prom_client_1.Registry])
215
+ ], CallbackMetrics);
216
+ //# sourceMappingURL=callback-metrics.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"callback-metrics.service.js","sourceRoot":"","sources":["../../src/callbacks/callback-metrics.service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ import { CallbackRecord, CallbackPatch } from "../interfaces/callback.interface";
2
+ import { TelegramPatchHandler } from "./telegram-patch.handler";
3
+ import { WebPatchHandler } from "./web-patch.handler";
4
+ export interface CallbackPatchHandler {
5
+ apply(patch: CallbackPatch, context?: any): Promise<void>;
6
+ }
7
+ export declare class CallbackPatchService {
8
+ private readonly telegram;
9
+ private readonly web;
10
+ private readonly logger;
11
+ constructor(telegram: TelegramPatchHandler, web: WebPatchHandler);
12
+ apply(record: CallbackRecord, patch: CallbackPatch, context?: any): Promise<void>;
13
+ }