@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,178 +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 __param = (this && this.__param) || function (paramIndex, decorator) {
12
- return function (target, key) { decorator(target, key, paramIndex); }
13
- };
14
- var UIDispatchController_1;
15
- Object.defineProperty(exports, "__esModule", { value: true });
16
- exports.UIDispatchController = void 0;
17
- const common_1 = require("@nestjs/common");
18
- const swagger_1 = require("@nestjs/swagger");
19
- const endpoint_registry_1 = require("../endpoint-registry");
20
- const builder_registry_service_1 = require("../core/builder-registry.service");
21
- let UIDispatchController = UIDispatchController_1 = class UIDispatchController {
22
- constructor(endpointRegistry, builderRegistry) {
23
- this.endpointRegistry = endpointRegistry;
24
- this.builderRegistry = builderRegistry;
25
- this.logger = new common_1.Logger(UIDispatchController_1.name);
26
- }
27
- async dispatchUIEndpoint(dto) {
28
- this.logger.debug(`Dispatching UI request to ${dto.graphType}:${dto.endpoint}`);
29
- this.logger.debug("UIDispatchController received request", {
30
- graphType: dto.graphType,
31
- endpoint: dto.endpoint,
32
- method: dto.method,
33
- data: dto.data,
34
- context: dto.context,
35
- });
36
- try {
37
- const context = {
38
- userId: dto.context.userId,
39
- companyId: dto.context.companyId,
40
- method: dto.method,
41
- payload: dto.data,
42
- channel: dto.context.channel || "web",
43
- platform: dto.context.platform,
44
- };
45
- this.logger.debug("Built RequestContext", context);
46
- const result = await this.endpointRegistry.call(dto.graphType, dto.endpoint, context);
47
- this.logger.debug(`Successfully dispatched to ${dto.graphType}:${dto.endpoint}`);
48
- return result;
49
- }
50
- catch (error) {
51
- this.logger.error(`Failed to dispatch to ${dto.graphType}:${dto.endpoint}:`, error.message);
52
- if (error.message.includes("not found")) {
53
- throw new common_1.NotFoundException(error.message);
54
- }
55
- throw new common_1.InternalServerErrorException(`Failed to dispatch: ${error.message}`);
56
- }
57
- }
58
- async getGraphManifest(graphType, userId) {
59
- var _a;
60
- this.logger.debug(`Fetching manifest for graph ${graphType}`);
61
- try {
62
- const builder = this.builderRegistry
63
- .getBuilders()
64
- .find(b => b.graphType === graphType);
65
- if (!builder) {
66
- throw new common_1.NotFoundException(`Graph ${graphType} not found in registry`);
67
- }
68
- const manifest = builder.manifest;
69
- if (!manifest) {
70
- this.logger.warn(`Builder for ${graphType} exists but has no manifest loaded`);
71
- return {
72
- graphType,
73
- name: graphType,
74
- version: builder.version,
75
- ui: {
76
- enabled: false,
77
- },
78
- };
79
- }
80
- this.logger.debug(`Found manifest for ${graphType} with UI enabled: ${!!((_a = manifest.ui) === null || _a === void 0 ? void 0 : _a.enabled)}`);
81
- return manifest;
82
- }
83
- catch (error) {
84
- this.logger.error(`Failed to get manifest for ${graphType}:`, error.message);
85
- throw new common_1.NotFoundException(`Graph ${graphType} not found`);
86
- }
87
- }
88
- async listEndpoints(graphType, userId) {
89
- this.logger.debug(`Listing endpoints for graph ${graphType}`);
90
- try {
91
- const endpoints = this.endpointRegistry.listEndpoints(graphType);
92
- this.logger.debug(`Found ${endpoints.length} endpoints for ${graphType}`);
93
- return endpoints;
94
- }
95
- catch (error) {
96
- this.logger.error(`Failed to list endpoints for ${graphType}:`, error.message);
97
- return [];
98
- }
99
- }
100
- async getGraphCatalog(userId, companyId) {
101
- this.logger.debug("Fetching graph catalog");
102
- try {
103
- const graphTypes = this.endpointRegistry.listGraphTypes();
104
- const catalog = graphTypes.map(graphType => ({
105
- graphType,
106
- name: graphType,
107
- ui: {
108
- enabled: this.endpointRegistry.listEndpoints(graphType).length > 0,
109
- },
110
- }));
111
- this.logger.debug(`Returning catalog with ${catalog.length} graphs`);
112
- return catalog;
113
- }
114
- catch (error) {
115
- this.logger.error("Failed to get graph catalog:", error.message);
116
- return [];
117
- }
118
- }
119
- };
120
- exports.UIDispatchController = UIDispatchController;
121
- __decorate([
122
- (0, common_1.Post)("ui/dispatch"),
123
- (0, swagger_1.ApiOperation)({ summary: "Dispatch request to UI endpoint" }),
124
- (0, swagger_1.ApiResponse)({
125
- status: 200,
126
- description: "Successfully dispatched to endpoint",
127
- }),
128
- (0, swagger_1.ApiResponse)({ status: 404, description: "Endpoint not found" }),
129
- __param(0, (0, common_1.Body)()),
130
- __metadata("design:type", Function),
131
- __metadata("design:paramtypes", [Object]),
132
- __metadata("design:returntype", Promise)
133
- ], UIDispatchController.prototype, "dispatchUIEndpoint", null);
134
- __decorate([
135
- (0, common_1.Get)(":graphType/manifest"),
136
- (0, swagger_1.ApiOperation)({ summary: "Get graph manifest with UI configuration" }),
137
- (0, swagger_1.ApiResponse)({ status: 200, description: "Graph manifest" }),
138
- (0, swagger_1.ApiResponse)({ status: 404, description: "Graph not found" }),
139
- __param(0, (0, common_1.Param)("graphType")),
140
- __param(1, (0, common_1.Headers)("x-user-id")),
141
- __metadata("design:type", Function),
142
- __metadata("design:paramtypes", [String, String]),
143
- __metadata("design:returntype", Promise)
144
- ], UIDispatchController.prototype, "getGraphManifest", null);
145
- __decorate([
146
- (0, common_1.Get)(":graphType/endpoints"),
147
- (0, swagger_1.ApiOperation)({ summary: "List UI endpoints for a graph" }),
148
- (0, swagger_1.ApiResponse)({
149
- status: 200,
150
- description: "List of endpoint names",
151
- type: [String],
152
- }),
153
- __param(0, (0, common_1.Param)("graphType")),
154
- __param(1, (0, common_1.Headers)("x-user-id")),
155
- __metadata("design:type", Function),
156
- __metadata("design:paramtypes", [String, String]),
157
- __metadata("design:returntype", Promise)
158
- ], UIDispatchController.prototype, "listEndpoints", null);
159
- __decorate([
160
- (0, common_1.Get)("catalog"),
161
- (0, swagger_1.ApiOperation)({ summary: "Get catalog of all graphs" }),
162
- (0, swagger_1.ApiResponse)({
163
- status: 200,
164
- description: "List of graphs with basic info",
165
- }),
166
- __param(0, (0, common_1.Headers)("x-user-id")),
167
- __param(1, (0, common_1.Headers)("x-company-id")),
168
- __metadata("design:type", Function),
169
- __metadata("design:paramtypes", [String, String]),
170
- __metadata("design:returntype", Promise)
171
- ], UIDispatchController.prototype, "getGraphCatalog", null);
172
- exports.UIDispatchController = UIDispatchController = UIDispatchController_1 = __decorate([
173
- (0, swagger_1.ApiTags)("UI Dispatch"),
174
- (0, common_1.Controller)("api/graph"),
175
- __metadata("design:paramtypes", [endpoint_registry_1.EndpointRegistry,
176
- builder_registry_service_1.BuilderRegistryService])
177
- ], UIDispatchController);
178
- //# sourceMappingURL=ui-dispatch.controller.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ui-dispatch.controller.js","sourceRoot":"","sources":["../../src/api/ui-dispatch.controller.ts"],"names":[],"mappings":"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"}
@@ -1,4 +0,0 @@
1
- export declare function bootstrap(AppModule: any, options?: {
2
- port?: number;
3
- globalPrefix?: string;
4
- }): Promise<import("@nestjs/common").INestApplication<any>>;
package/dist/bootstrap.js DELETED
@@ -1,99 +0,0 @@
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 __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || (function () {
19
- var ownKeys = function(o) {
20
- ownKeys = Object.getOwnPropertyNames || function (o) {
21
- var ar = [];
22
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
- return ar;
24
- };
25
- return ownKeys(o);
26
- };
27
- return function (mod) {
28
- if (mod && mod.__esModule) return mod;
29
- var result = {};
30
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
- __setModuleDefault(result, mod);
32
- return result;
33
- };
34
- })();
35
- Object.defineProperty(exports, "__esModule", { value: true });
36
- exports.bootstrap = bootstrap;
37
- const core_1 = require("@nestjs/core");
38
- const common_1 = require("@nestjs/common");
39
- const swagger_1 = require("@nestjs/swagger");
40
- const net = __importStar(require("net"));
41
- async function isPortAvailable(port) {
42
- return new Promise(resolve => {
43
- const server = net.createServer();
44
- server.listen(port, () => {
45
- server.close(() => resolve(true));
46
- });
47
- server.on("error", () => resolve(false));
48
- });
49
- }
50
- async function findAvailablePort(startPort) {
51
- let port = startPort;
52
- while (port < startPort + 100) {
53
- if (await isPortAvailable(port)) {
54
- return port;
55
- }
56
- port++;
57
- }
58
- throw new Error(`No available ports found in range ${startPort}-${startPort + 99}`);
59
- }
60
- async function bootstrap(AppModule, options = {}) {
61
- const app = await core_1.NestFactory.create(AppModule);
62
- const logger = new common_1.Logger("Bootstrap");
63
- const requestedPort = options.port || parseInt(process.env.PORT || "3000", 10);
64
- const port = await findAvailablePort(requestedPort);
65
- const globalPrefix = options.globalPrefix;
66
- if (port !== requestedPort) {
67
- logger.warn(`Port ${requestedPort} is busy, using port ${port} instead`);
68
- }
69
- if (globalPrefix) {
70
- app.setGlobalPrefix(globalPrefix);
71
- }
72
- app.useGlobalPipes(new common_1.ValidationPipe({
73
- whitelist: true,
74
- forbidNonWhitelisted: true,
75
- transform: true,
76
- }));
77
- app.enableCors({
78
- origin: true,
79
- credentials: true,
80
- });
81
- const config = new swagger_1.DocumentBuilder()
82
- .setTitle("Graph Service API")
83
- .setDescription("API for graph service microservice")
84
- .setVersion("1.0")
85
- .addBearerAuth()
86
- .build();
87
- const document = swagger_1.SwaggerModule.createDocument(app, config);
88
- swagger_1.SwaggerModule.setup("api/docs", app, document);
89
- await app.listen(port);
90
- const baseUrl = globalPrefix
91
- ? `http://localhost:${port}/${globalPrefix}`
92
- : `http://localhost:${port}`;
93
- logger.log(`🚀 Graph service is running on: ${baseUrl}`);
94
- logger.log(`📚 API Documentation: http://localhost:${port}/api/docs`);
95
- if (process.env.NODE_ENV !== "production") {
96
- }
97
- return app;
98
- }
99
- //# sourceMappingURL=bootstrap.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"bootstrap.js","sourceRoot":"","sources":["../src/bootstrap.ts"],"names":[],"mappings":"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"}
@@ -1,24 +0,0 @@
1
- import { CallbackRecord } from "../interfaces/callback.interface";
2
- export interface CallbackUser {
3
- userId: string;
4
- roles?: string[];
5
- permissions?: string[];
6
- companyId?: string;
7
- }
8
- export interface ACLValidationResult {
9
- allowed: boolean;
10
- reason?: string;
11
- requiredScopes?: string[];
12
- userScopes?: string[];
13
- }
14
- export declare class CallbackACL {
15
- private readonly logger;
16
- validate(user: CallbackUser | undefined, record: CallbackRecord): Promise<ACLValidationResult>;
17
- private validateScopes;
18
- private validateGraphTypeAccess;
19
- private getAllowedGraphNamespaces;
20
- private validateCompanyAccess;
21
- private performAdditionalSecurityChecks;
22
- canRetry(user: CallbackUser, record: CallbackRecord): Promise<boolean>;
23
- getPermissionDetails(user: CallbackUser, record: CallbackRecord): Record<string, any>;
24
- }
@@ -1,144 +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 CallbackACL_1;
9
- Object.defineProperty(exports, "__esModule", { value: true });
10
- exports.CallbackACL = void 0;
11
- const common_1 = require("@nestjs/common");
12
- let CallbackACL = CallbackACL_1 = class CallbackACL {
13
- constructor() {
14
- this.logger = new common_1.Logger(CallbackACL_1.name);
15
- }
16
- async validate(user, record) {
17
- const validationStart = Date.now();
18
- try {
19
- if (!user) {
20
- this.logger.warn(`Unauthenticated access attempt for callback ${record.token}`);
21
- throw new common_1.ForbiddenException("Authentication required for callback execution");
22
- }
23
- if (record.userId && record.userId !== user.userId) {
24
- this.logger.warn(`User ${user.userId} attempted to execute callback for user ${record.userId}`);
25
- throw new common_1.ForbiddenException("Cannot execute callback for another user");
26
- }
27
- this.logger.log(`ACL validation simplified: userId match only for callback ${record.token}`);
28
- await this.performAdditionalSecurityChecks(user, record);
29
- const validationTime = Date.now() - validationStart;
30
- this.logger.debug(`ACL validation passed for user ${user.userId} on callback ${record.token} ` +
31
- `(${validationTime}ms)`);
32
- return {
33
- allowed: true,
34
- };
35
- }
36
- catch (error) {
37
- const validationTime = Date.now() - validationStart;
38
- this.logger.error(`ACL validation failed for callback ${record.token} (${validationTime}ms): ${error.message}`);
39
- throw error;
40
- }
41
- }
42
- validateScopes(user, requiredScopes) {
43
- if (!user.permissions || user.permissions.length === 0) {
44
- return false;
45
- }
46
- return requiredScopes.every(scope => {
47
- const hasExactScope = user.permissions.includes(scope);
48
- const hasWildcardScope = user.permissions.some(p => {
49
- if (p.includes("*")) {
50
- const pattern = p.replace("*", ".*");
51
- return new RegExp(`^${pattern}$`).test(scope);
52
- }
53
- return false;
54
- });
55
- return hasExactScope || hasWildcardScope;
56
- });
57
- }
58
- async validateGraphTypeAccess(user, graphType) {
59
- const [namespace] = graphType.split("::");
60
- const allowedNamespaces = this.getAllowedGraphNamespaces(user);
61
- this.logger.log(`Graph access check for user ${user.userId}`, {
62
- graphType,
63
- namespace,
64
- allowedNamespaces,
65
- userRoles: user.roles,
66
- userPermissions: user.permissions,
67
- userCompanyId: user.companyId,
68
- });
69
- if (namespace === "public") {
70
- return true;
71
- }
72
- if (!allowedNamespaces.includes(namespace) &&
73
- !allowedNamespaces.includes("*")) {
74
- this.logger.warn(`Access denied: namespace "${namespace}" not in allowed namespaces: ${allowedNamespaces.join(", ")}`);
75
- return false;
76
- }
77
- return true;
78
- }
79
- getAllowedGraphNamespaces(user) {
80
- var _a, _b;
81
- const namespaces = [];
82
- if ((_a = user.roles) === null || _a === void 0 ? void 0 : _a.includes("admin")) {
83
- namespaces.push("*");
84
- }
85
- (_b = user.permissions) === null || _b === void 0 ? void 0 : _b.forEach(permission => {
86
- const match = permission.match(/^graph:([^:]+):/);
87
- if (match) {
88
- namespaces.push(match[1]);
89
- }
90
- });
91
- if (user.companyId) {
92
- namespaces.push(user.companyId);
93
- }
94
- return [...new Set(namespaces)];
95
- }
96
- validateCompanyAccess(user, requiredCompanyId) {
97
- return user.companyId === requiredCompanyId;
98
- }
99
- async performAdditionalSecurityChecks(user, record) {
100
- var _a;
101
- const now = Date.now();
102
- const age = now - record.createdAt;
103
- const maxAge = (((_a = record.metadata) === null || _a === void 0 ? void 0 : _a.ttlSec) || 600) * 1000;
104
- if (age > maxAge) {
105
- throw new common_1.ForbiddenException("Callback token has expired");
106
- }
107
- if (record.retries > 3) {
108
- throw new common_1.ForbiddenException("Callback has exceeded maximum retry attempts");
109
- }
110
- }
111
- async canRetry(user, record) {
112
- if (record.userId !== user.userId) {
113
- return false;
114
- }
115
- if (record.retries >= 3) {
116
- return false;
117
- }
118
- if (!["failed", "processing"].includes(record.status)) {
119
- return false;
120
- }
121
- return true;
122
- }
123
- getPermissionDetails(user, record) {
124
- var _a, _b, _c;
125
- return {
126
- userId: user.userId,
127
- callbackUserId: record.userId,
128
- userIdMatch: user.userId === record.userId,
129
- requiredScopes: ((_a = record.metadata) === null || _a === void 0 ? void 0 : _a.scopes) || [],
130
- userScopes: user.permissions || [],
131
- userRoles: user.roles || [],
132
- graphType: record.graphType,
133
- companyId: user.companyId,
134
- callbackCompanyId: (_b = record.metadata) === null || _b === void 0 ? void 0 : _b.companyId,
135
- companyMatch: !((_c = record.metadata) === null || _c === void 0 ? void 0 : _c.companyId) ||
136
- user.companyId === record.metadata.companyId,
137
- };
138
- }
139
- };
140
- exports.CallbackACL = CallbackACL;
141
- exports.CallbackACL = CallbackACL = CallbackACL_1 = __decorate([
142
- (0, common_1.Injectable)()
143
- ], CallbackACL);
144
- //# sourceMappingURL=callback-acl.service.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"callback-acl.service.js","sourceRoot":"","sources":["../../src/callbacks/callback-acl.service.ts"],"names":[],"mappings":"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"}
@@ -1,47 +0,0 @@
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
- }