@igoruehara/canvas-flow 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 (283) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +152 -0
  3. package/bin/canvas-flow.js +1132 -0
  4. package/package.json +68 -0
  5. package/public/assets/index-PCQkqMUe.css +1 -0
  6. package/public/assets/index-qV8twxcq.js +767 -0
  7. package/public/index.html +13 -0
  8. package/server/api-key/api-key-connect-provider.d.ts +104 -0
  9. package/server/api-key/api-key-connect-provider.js +14 -0
  10. package/server/api-key/api-key-connect-provider.js.map +1 -0
  11. package/server/api-key/api-key-constants-model.d.ts +2 -0
  12. package/server/api-key/api-key-constants-model.js +6 -0
  13. package/server/api-key/api-key-constants-model.js.map +1 -0
  14. package/server/api-key/api-key-controller.d.ts +12 -0
  15. package/server/api-key/api-key-controller.js +86 -0
  16. package/server/api-key/api-key-controller.js.map +1 -0
  17. package/server/api-key/api-key-module.d.ts +2 -0
  18. package/server/api-key/api-key-module.js +27 -0
  19. package/server/api-key/api-key-module.js.map +1 -0
  20. package/server/api-key/api-key-schema.d.ts +72 -0
  21. package/server/api-key/api-key-schema.js +98 -0
  22. package/server/api-key/api-key-schema.js.map +1 -0
  23. package/server/api-key/api-key-service.d.ts +45 -0
  24. package/server/api-key/api-key-service.js +151 -0
  25. package/server/api-key/api-key-service.js.map +1 -0
  26. package/server/api-key/dto/create-api-key.dto.d.ts +8 -0
  27. package/server/api-key/dto/create-api-key.dto.js +7 -0
  28. package/server/api-key/dto/create-api-key.dto.js.map +1 -0
  29. package/server/app.module.d.ts +2 -0
  30. package/server/app.module.js +53 -0
  31. package/server/app.module.js.map +1 -0
  32. package/server/auth/auth-connect-provider.d.ts +140 -0
  33. package/server/auth/auth-connect-provider.js +20 -0
  34. package/server/auth/auth-connect-provider.js.map +1 -0
  35. package/server/auth/auth-constants-model.d.ts +4 -0
  36. package/server/auth/auth-constants-model.js +8 -0
  37. package/server/auth/auth-constants-model.js.map +1 -0
  38. package/server/auth/auth-controller.d.ts +25 -0
  39. package/server/auth/auth-controller.js +96 -0
  40. package/server/auth/auth-controller.js.map +1 -0
  41. package/server/auth/auth-module.d.ts +2 -0
  42. package/server/auth/auth-module.js +26 -0
  43. package/server/auth/auth-module.js.map +1 -0
  44. package/server/auth/auth-organization-schema.d.ts +44 -0
  45. package/server/auth/auth-organization-schema.js +62 -0
  46. package/server/auth/auth-organization-schema.js.map +1 -0
  47. package/server/auth/auth-schema.d.ts +56 -0
  48. package/server/auth/auth-schema.js +77 -0
  49. package/server/auth/auth-schema.js.map +1 -0
  50. package/server/auth/auth-service.d.ts +64 -0
  51. package/server/auth/auth-service.js +343 -0
  52. package/server/auth/auth-service.js.map +1 -0
  53. package/server/canvas-flow/canvas-flow-connect-provider.d.ts +278 -0
  54. package/server/canvas-flow/canvas-flow-connect-provider.js +24 -0
  55. package/server/canvas-flow/canvas-flow-connect-provider.js.map +1 -0
  56. package/server/canvas-flow/canvas-flow-constants-model.d.ts +6 -0
  57. package/server/canvas-flow/canvas-flow-constants-model.js +10 -0
  58. package/server/canvas-flow/canvas-flow-constants-model.js.map +1 -0
  59. package/server/canvas-flow/canvas-flow-controller.d.ts +98 -0
  60. package/server/canvas-flow/canvas-flow-controller.js +423 -0
  61. package/server/canvas-flow/canvas-flow-controller.js.map +1 -0
  62. package/server/canvas-flow/canvas-flow-module.d.ts +2 -0
  63. package/server/canvas-flow/canvas-flow-module.js +27 -0
  64. package/server/canvas-flow/canvas-flow-module.js.map +1 -0
  65. package/server/canvas-flow/canvas-flow-schema.d.ts +192 -0
  66. package/server/canvas-flow/canvas-flow-schema.js +239 -0
  67. package/server/canvas-flow/canvas-flow-schema.js.map +1 -0
  68. package/server/canvas-flow/canvas-flow-service.d.ts +250 -0
  69. package/server/canvas-flow/canvas-flow-service.js +1681 -0
  70. package/server/canvas-flow/canvas-flow-service.js.map +1 -0
  71. package/server/canvas-flow/dto/create-canvas-flow.dto.d.ts +11 -0
  72. package/server/canvas-flow/dto/create-canvas-flow.dto.js +61 -0
  73. package/server/canvas-flow/dto/create-canvas-flow.dto.js.map +1 -0
  74. package/server/canvas-flow/dto/update-canvas-flow.dto.d.ts +10 -0
  75. package/server/canvas-flow/dto/update-canvas-flow.dto.js +56 -0
  76. package/server/canvas-flow/dto/update-canvas-flow.dto.js.map +1 -0
  77. package/server/constants-global.d.ts +1 -0
  78. package/server/constants-global.js +5 -0
  79. package/server/constants-global.js.map +1 -0
  80. package/server/database/database.module.d.ts +2 -0
  81. package/server/database/database.module.js +23 -0
  82. package/server/database/database.module.js.map +1 -0
  83. package/server/database/database.providers.d.ts +7 -0
  84. package/server/database/database.providers.js +26 -0
  85. package/server/database/database.providers.js.map +1 -0
  86. package/server/documents/documents-connect-provider.d.ts +140 -0
  87. package/server/documents/documents-connect-provider.js +14 -0
  88. package/server/documents/documents-connect-provider.js.map +1 -0
  89. package/server/documents/documents-constants-model.d.ts +2 -0
  90. package/server/documents/documents-constants-model.js +6 -0
  91. package/server/documents/documents-constants-model.js.map +1 -0
  92. package/server/documents/documents-controller.d.ts +16 -0
  93. package/server/documents/documents-controller.js +117 -0
  94. package/server/documents/documents-controller.js.map +1 -0
  95. package/server/documents/documents-module.d.ts +2 -0
  96. package/server/documents/documents-module.js +27 -0
  97. package/server/documents/documents-module.js.map +1 -0
  98. package/server/documents/documents-schema.d.ts +96 -0
  99. package/server/documents/documents-schema.js +38 -0
  100. package/server/documents/documents-schema.js.map +1 -0
  101. package/server/documents/documents-service.d.ts +164 -0
  102. package/server/documents/documents-service.js +1417 -0
  103. package/server/documents/documents-service.js.map +1 -0
  104. package/server/flow-tag/flow-tag-connect-provider.d.ts +146 -0
  105. package/server/flow-tag/flow-tag-connect-provider.js +14 -0
  106. package/server/flow-tag/flow-tag-connect-provider.js.map +1 -0
  107. package/server/flow-tag/flow-tag-constants-model.d.ts +2 -0
  108. package/server/flow-tag/flow-tag-constants-model.js +6 -0
  109. package/server/flow-tag/flow-tag-constants-model.js.map +1 -0
  110. package/server/flow-tag/flow-tag-module.d.ts +2 -0
  111. package/server/flow-tag/flow-tag-module.js +24 -0
  112. package/server/flow-tag/flow-tag-module.js.map +1 -0
  113. package/server/flow-tag/flow-tag-schema.d.ts +100 -0
  114. package/server/flow-tag/flow-tag-schema.js +131 -0
  115. package/server/flow-tag/flow-tag-schema.js.map +1 -0
  116. package/server/flow-tag/flow-tag-service.d.ts +77 -0
  117. package/server/flow-tag/flow-tag-service.js +156 -0
  118. package/server/flow-tag/flow-tag-service.js.map +1 -0
  119. package/server/health.controller.d.ts +7 -0
  120. package/server/health.controller.js +33 -0
  121. package/server/health.controller.js.map +1 -0
  122. package/server/http-batch/http-batch-controller.d.ts +345 -0
  123. package/server/http-batch/http-batch-controller.js +40 -0
  124. package/server/http-batch/http-batch-controller.js.map +1 -0
  125. package/server/http-batch/http-batch-module.d.ts +2 -0
  126. package/server/http-batch/http-batch-module.js +25 -0
  127. package/server/http-batch/http-batch-module.js.map +1 -0
  128. package/server/http-batch/http-batch-service.d.ts +381 -0
  129. package/server/http-batch/http-batch-service.js +268 -0
  130. package/server/http-batch/http-batch-service.js.map +1 -0
  131. package/server/lambda.d.ts +2 -0
  132. package/server/lambda.js +115 -0
  133. package/server/lambda.js.map +1 -0
  134. package/server/llm/openai-provider.d.ts +8 -0
  135. package/server/llm/openai-provider.js +256 -0
  136. package/server/llm/openai-provider.js.map +1 -0
  137. package/server/main.d.ts +1 -0
  138. package/server/main.js +80 -0
  139. package/server/main.js.map +1 -0
  140. package/server/mcp-oauth/mcp-oauth-connect-provider.d.ts +164 -0
  141. package/server/mcp-oauth/mcp-oauth-connect-provider.js +14 -0
  142. package/server/mcp-oauth/mcp-oauth-connect-provider.js.map +1 -0
  143. package/server/mcp-oauth/mcp-oauth-constants-model.d.ts +2 -0
  144. package/server/mcp-oauth/mcp-oauth-constants-model.js +6 -0
  145. package/server/mcp-oauth/mcp-oauth-constants-model.js.map +1 -0
  146. package/server/mcp-oauth/mcp-oauth-controller.d.ts +66 -0
  147. package/server/mcp-oauth/mcp-oauth-controller.js +166 -0
  148. package/server/mcp-oauth/mcp-oauth-controller.js.map +1 -0
  149. package/server/mcp-oauth/mcp-oauth-module.d.ts +2 -0
  150. package/server/mcp-oauth/mcp-oauth-module.js +27 -0
  151. package/server/mcp-oauth/mcp-oauth-module.js.map +1 -0
  152. package/server/mcp-oauth/mcp-oauth-schema.d.ts +112 -0
  153. package/server/mcp-oauth/mcp-oauth-schema.js +148 -0
  154. package/server/mcp-oauth/mcp-oauth-schema.js.map +1 -0
  155. package/server/mcp-oauth/mcp-oauth-service.d.ts +189 -0
  156. package/server/mcp-oauth/mcp-oauth-service.js +545 -0
  157. package/server/mcp-oauth/mcp-oauth-service.js.map +1 -0
  158. package/server/memory/memory-connect-provider.d.ts +200 -0
  159. package/server/memory/memory-connect-provider.js +26 -0
  160. package/server/memory/memory-connect-provider.js.map +1 -0
  161. package/server/memory/memory-constants-model.d.ts +6 -0
  162. package/server/memory/memory-constants-model.js +10 -0
  163. package/server/memory/memory-constants-model.js.map +1 -0
  164. package/server/memory/memory-controller.d.ts +15 -0
  165. package/server/memory/memory-controller.js +53 -0
  166. package/server/memory/memory-controller.js.map +1 -0
  167. package/server/memory/memory-history-schema.d.ts +48 -0
  168. package/server/memory/memory-history-schema.js +62 -0
  169. package/server/memory/memory-history-schema.js.map +1 -0
  170. package/server/memory/memory-module.d.ts +2 -0
  171. package/server/memory/memory-module.js +26 -0
  172. package/server/memory/memory-module.js.map +1 -0
  173. package/server/memory/memory-schema.d.ts +48 -0
  174. package/server/memory/memory-schema.js +62 -0
  175. package/server/memory/memory-schema.js.map +1 -0
  176. package/server/memory/memory-service.d.ts +134 -0
  177. package/server/memory/memory-service.js +317 -0
  178. package/server/memory/memory-service.js.map +1 -0
  179. package/server/memory/memory-trace-history-schema.d.ts +48 -0
  180. package/server/memory/memory-trace-history-schema.js +62 -0
  181. package/server/memory/memory-trace-history-schema.js.map +1 -0
  182. package/server/observability/observability.d.ts +3 -0
  183. package/server/observability/observability.js +62 -0
  184. package/server/observability/observability.js.map +1 -0
  185. package/server/production-guard.d.ts +9 -0
  186. package/server/production-guard.js +105 -0
  187. package/server/production-guard.js.map +1 -0
  188. package/server/provider-config/provider-config-connect-provider.d.ts +44 -0
  189. package/server/provider-config/provider-config-connect-provider.js +14 -0
  190. package/server/provider-config/provider-config-connect-provider.js.map +1 -0
  191. package/server/provider-config/provider-config-constants-model.d.ts +3 -0
  192. package/server/provider-config/provider-config-constants-model.js +7 -0
  193. package/server/provider-config/provider-config-constants-model.js.map +1 -0
  194. package/server/provider-config/provider-config-controller.d.ts +23 -0
  195. package/server/provider-config/provider-config-controller.js +80 -0
  196. package/server/provider-config/provider-config-controller.js.map +1 -0
  197. package/server/provider-config/provider-config-module.d.ts +2 -0
  198. package/server/provider-config/provider-config-module.js +27 -0
  199. package/server/provider-config/provider-config-module.js.map +1 -0
  200. package/server/provider-config/provider-config-schema.d.ts +32 -0
  201. package/server/provider-config/provider-config-schema.js +46 -0
  202. package/server/provider-config/provider-config-schema.js.map +1 -0
  203. package/server/provider-config/provider-config-service.d.ts +178 -0
  204. package/server/provider-config/provider-config-service.js +689 -0
  205. package/server/provider-config/provider-config-service.js.map +1 -0
  206. package/server/queue/queue-job-connect-provider.d.ts +128 -0
  207. package/server/queue/queue-job-connect-provider.js +14 -0
  208. package/server/queue/queue-job-connect-provider.js.map +1 -0
  209. package/server/queue/queue-job-constants-model.d.ts +2 -0
  210. package/server/queue/queue-job-constants-model.js +6 -0
  211. package/server/queue/queue-job-constants-model.js.map +1 -0
  212. package/server/queue/queue-job-schema.d.ts +88 -0
  213. package/server/queue/queue-job-schema.js +119 -0
  214. package/server/queue/queue-job-schema.js.map +1 -0
  215. package/server/queue/queue-lock-connect-provider.d.ts +44 -0
  216. package/server/queue/queue-lock-connect-provider.js +14 -0
  217. package/server/queue/queue-lock-connect-provider.js.map +1 -0
  218. package/server/queue/queue-lock-constants-model.d.ts +2 -0
  219. package/server/queue/queue-lock-constants-model.js +6 -0
  220. package/server/queue/queue-lock-constants-model.js.map +1 -0
  221. package/server/queue/queue-lock-schema.d.ts +32 -0
  222. package/server/queue/queue-lock-schema.js +47 -0
  223. package/server/queue/queue-lock-schema.js.map +1 -0
  224. package/server/queue/queue-message-dedupe-connect-provider.d.ts +116 -0
  225. package/server/queue/queue-message-dedupe-connect-provider.js +14 -0
  226. package/server/queue/queue-message-dedupe-connect-provider.js.map +1 -0
  227. package/server/queue/queue-message-dedupe-constants-model.d.ts +2 -0
  228. package/server/queue/queue-message-dedupe-constants-model.js +6 -0
  229. package/server/queue/queue-message-dedupe-constants-model.js.map +1 -0
  230. package/server/queue/queue-message-dedupe-schema.d.ts +80 -0
  231. package/server/queue/queue-message-dedupe-schema.js +108 -0
  232. package/server/queue/queue-message-dedupe-schema.js.map +1 -0
  233. package/server/queue/queue-module.d.ts +2 -0
  234. package/server/queue/queue-module.js +33 -0
  235. package/server/queue/queue-module.js.map +1 -0
  236. package/server/queue/queue-rate-limit-connect-provider.d.ts +56 -0
  237. package/server/queue/queue-rate-limit-connect-provider.js +14 -0
  238. package/server/queue/queue-rate-limit-connect-provider.js.map +1 -0
  239. package/server/queue/queue-rate-limit-constants-model.d.ts +2 -0
  240. package/server/queue/queue-rate-limit-constants-model.js +6 -0
  241. package/server/queue/queue-rate-limit-constants-model.js.map +1 -0
  242. package/server/queue/queue-rate-limit-schema.d.ts +40 -0
  243. package/server/queue/queue-rate-limit-schema.js +57 -0
  244. package/server/queue/queue-rate-limit-schema.js.map +1 -0
  245. package/server/queue/sqs-transition-service.d.ts +123 -0
  246. package/server/queue/sqs-transition-service.js +442 -0
  247. package/server/queue/sqs-transition-service.js.map +1 -0
  248. package/server/rag/rag-controller.d.ts +167 -0
  249. package/server/rag/rag-controller.js +232 -0
  250. package/server/rag/rag-controller.js.map +1 -0
  251. package/server/rag/rag-module.d.ts +2 -0
  252. package/server/rag/rag-module.js +30 -0
  253. package/server/rag/rag-module.js.map +1 -0
  254. package/server/rag/rag-service.d.ts +361 -0
  255. package/server/rag/rag-service.js +2864 -0
  256. package/server/rag/rag-service.js.map +1 -0
  257. package/server/runner/flow-templates.d.ts +55 -0
  258. package/server/runner/flow-templates.js +388 -0
  259. package/server/runner/flow-templates.js.map +1 -0
  260. package/server/runner/langgraph-runtime.service.d.ts +77 -0
  261. package/server/runner/langgraph-runtime.service.js +221 -0
  262. package/server/runner/langgraph-runtime.service.js.map +1 -0
  263. package/server/runner/runner-controller.d.ts +1044 -0
  264. package/server/runner/runner-controller.js +751 -0
  265. package/server/runner/runner-controller.js.map +1 -0
  266. package/server/runner/runner-module.d.ts +2 -0
  267. package/server/runner/runner-module.js +37 -0
  268. package/server/runner/runner-module.js.map +1 -0
  269. package/server/runner/runner-queue-processor.d.ts +29 -0
  270. package/server/runner/runner-queue-processor.js +259 -0
  271. package/server/runner/runner-queue-processor.js.map +1 -0
  272. package/server/runner/runner-service.d.ts +1761 -0
  273. package/server/runner/runner-service.js +14256 -0
  274. package/server/runner/runner-service.js.map +1 -0
  275. package/server/scripts/migrate-canvas-flow-versions.d.ts +1 -0
  276. package/server/scripts/migrate-canvas-flow-versions.js +72 -0
  277. package/server/scripts/migrate-canvas-flow-versions.js.map +1 -0
  278. package/server/scripts/migrate-mcp-oauth-user-scope.d.ts +1 -0
  279. package/server/scripts/migrate-mcp-oauth-user-scope.js +95 -0
  280. package/server/scripts/migrate-mcp-oauth-user-scope.js.map +1 -0
  281. package/templates/config.example.json +204 -0
  282. package/templates/config.production.example.json +206 -0
  283. package/templates/docker-compose.yml +60 -0
@@ -0,0 +1,545 @@
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
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports.McpOAuthService = void 0;
16
+ const common_1 = require("@nestjs/common");
17
+ const config_1 = require("@nestjs/config");
18
+ const auth_js_1 = require("@modelcontextprotocol/sdk/client/auth.js");
19
+ const crypto_1 = require("crypto");
20
+ const mongoose_1 = require("mongoose");
21
+ const mcp_oauth_constants_model_1 = require("./mcp-oauth-constants-model");
22
+ class PersistentMcpOAuthProvider {
23
+ constructor(service, key, redirectUrlValue, clientMetadataValue) {
24
+ this.service = service;
25
+ this.key = key;
26
+ this.redirectUrlValue = redirectUrlValue;
27
+ this.clientMetadataValue = clientMetadataValue;
28
+ this.latestAuthorizationUrl = '';
29
+ }
30
+ get redirectUrl() {
31
+ return this.redirectUrlValue;
32
+ }
33
+ get clientMetadata() {
34
+ return this.clientMetadataValue;
35
+ }
36
+ async state() {
37
+ return (await this.service.getConnectionByKey(this.key))?.state || undefined;
38
+ }
39
+ async clientInformation() {
40
+ return await this.service.getEncryptedJson(this.key, 'clientInformation');
41
+ }
42
+ async saveClientInformation(clientInformation) {
43
+ await this.service.saveEncryptedJson(this.key, 'clientInformation', clientInformation);
44
+ }
45
+ async tokens() {
46
+ return await this.service.getEncryptedJson(this.key, 'tokens');
47
+ }
48
+ async saveTokens(tokens) {
49
+ await this.service.saveTokens(this.key, tokens);
50
+ }
51
+ async redirectToAuthorization(authorizationUrl) {
52
+ this.latestAuthorizationUrl = authorizationUrl.toString();
53
+ await this.service.setAuthorizationUrl(this.key, this.latestAuthorizationUrl);
54
+ }
55
+ async saveCodeVerifier(codeVerifier) {
56
+ await this.service.saveEncryptedJson(this.key, 'codeVerifier', { value: codeVerifier });
57
+ }
58
+ async codeVerifier() {
59
+ const stored = await this.service.getEncryptedJson(this.key, 'codeVerifier');
60
+ const value = String(stored?.value || '');
61
+ if (!value)
62
+ throw new Error('OAuth code verifier nao encontrado para este servidor MCP.');
63
+ return value;
64
+ }
65
+ async saveDiscoveryState(state) {
66
+ await this.service.saveEncryptedJson(this.key, 'discoveryState', state);
67
+ }
68
+ async discoveryState() {
69
+ return await this.service.getEncryptedJson(this.key, 'discoveryState');
70
+ }
71
+ async invalidateCredentials(scope) {
72
+ await this.service.invalidateCredentials(this.key, scope);
73
+ }
74
+ }
75
+ let McpOAuthService = class McpOAuthService {
76
+ constructor(model, configService) {
77
+ this.model = model;
78
+ this.configService = configService;
79
+ }
80
+ normalizeAgentId(agentId) {
81
+ return String(agentId || '').trim() || 'default-agent';
82
+ }
83
+ normalizeOrganizationId(organizationId) {
84
+ return String(organizationId || '').trim();
85
+ }
86
+ normalizeConnectionScope(connectionScope) {
87
+ return connectionScope === 'user' ? 'user' : 'agent';
88
+ }
89
+ normalizeOAuthUserId(scope) {
90
+ const oauthUserId = String(scope.oauthUserId || '').trim();
91
+ if (this.normalizeConnectionScope(scope.connectionScope) === 'user' && !oauthUserId) {
92
+ throw new common_1.BadRequestException('OAuth MCP individual exige um usuario Canvas Flow autenticado. Ative o login ou use a conexao compartilhada no agente.');
93
+ }
94
+ return oauthUserId;
95
+ }
96
+ normalizeServerUrl(value) {
97
+ const raw = String(value || '').trim();
98
+ if (!raw)
99
+ throw new common_1.BadRequestException('Informe a URL do servidor MCP.');
100
+ let url;
101
+ try {
102
+ url = new URL(raw);
103
+ }
104
+ catch {
105
+ throw new common_1.BadRequestException('URL do servidor MCP invalida.');
106
+ }
107
+ if (!['http:', 'https:'].includes(url.protocol)) {
108
+ throw new common_1.BadRequestException('OAuth MCP suporta apenas servidores HTTP/HTTPS.');
109
+ }
110
+ url.hash = '';
111
+ if (url.pathname.length > 1)
112
+ url.pathname = url.pathname.replace(/\/+$/, '');
113
+ return url.toString();
114
+ }
115
+ serverUrlHash(serverUrl) {
116
+ return (0, crypto_1.createHash)('sha256').update(serverUrl).digest('hex');
117
+ }
118
+ connectionKey(scope, serverUrl) {
119
+ const organizationId = this.normalizeOrganizationId(scope.organizationId);
120
+ const agentId = this.normalizeAgentId(scope.agentId);
121
+ const connectionScope = this.normalizeConnectionScope(scope.connectionScope);
122
+ const oauthUserId = this.normalizeOAuthUserId(scope);
123
+ const legacyKey = `${organizationId || 'global'}:${agentId}:${this.serverUrlHash(serverUrl)}`;
124
+ return connectionScope === 'user'
125
+ ? `${organizationId || 'global'}:${agentId}:user:${oauthUserId}:${this.serverUrlHash(serverUrl)}`
126
+ : legacyKey;
127
+ }
128
+ secretKey() {
129
+ return (this.configService.get('CANVAS_FLOW_JWT_SECRET') ||
130
+ this.configService.get('CANVAS_FLOW_API_TOKEN') ||
131
+ this.configService.get('MONGO_DB_CONNECTION_STRING') ||
132
+ 'canvas-flow-mcp-oauth-dev-secret');
133
+ }
134
+ encryptText(value) {
135
+ const plain = String(value || '');
136
+ if (!plain)
137
+ return '';
138
+ const key = (0, crypto_1.createHash)('sha256').update(this.secretKey()).digest();
139
+ const iv = (0, crypto_1.randomBytes)(12);
140
+ const cipher = (0, crypto_1.createCipheriv)('aes-256-gcm', key, iv);
141
+ const encrypted = Buffer.concat([cipher.update(plain, 'utf8'), cipher.final()]);
142
+ const tag = cipher.getAuthTag();
143
+ return `enc:${Buffer.concat([iv, tag, encrypted]).toString('base64url')}`;
144
+ }
145
+ decryptText(value) {
146
+ const raw = String(value || '');
147
+ if (!raw.startsWith('enc:'))
148
+ return raw;
149
+ try {
150
+ const payload = Buffer.from(raw.slice(4), 'base64url');
151
+ const iv = payload.subarray(0, 12);
152
+ const tag = payload.subarray(12, 28);
153
+ const encrypted = payload.subarray(28);
154
+ const key = (0, crypto_1.createHash)('sha256').update(this.secretKey()).digest();
155
+ const decipher = (0, crypto_1.createDecipheriv)('aes-256-gcm', key, iv);
156
+ decipher.setAuthTag(tag);
157
+ return Buffer.concat([decipher.update(encrypted), decipher.final()]).toString('utf8');
158
+ }
159
+ catch {
160
+ return '';
161
+ }
162
+ }
163
+ encryptJson(value) {
164
+ if (value === undefined || value === null)
165
+ return '';
166
+ return this.encryptText(JSON.stringify(value));
167
+ }
168
+ decryptJson(value) {
169
+ const text = this.decryptText(value);
170
+ if (!text)
171
+ return undefined;
172
+ try {
173
+ return JSON.parse(text);
174
+ }
175
+ catch {
176
+ return undefined;
177
+ }
178
+ }
179
+ assertDbReady() {
180
+ if (this.model.db.readyState !== 1) {
181
+ throw new common_1.BadRequestException('MongoDB ainda nao esta conectado para salvar OAuth MCP.');
182
+ }
183
+ }
184
+ buildCallbackUrl(baseUrl) {
185
+ const configured = (this.configService.get('CANVAS_FLOW_PUBLIC_URL') ||
186
+ this.configService.get('CANVAS_FLOW_API_PUBLIC_URL') ||
187
+ baseUrl ||
188
+ '').replace(/\/$/, '');
189
+ if (!configured) {
190
+ throw new common_1.BadRequestException('Nao foi possivel montar a URL publica de callback OAuth.');
191
+ }
192
+ return `${configured}/api/mcp-oauth/callback`;
193
+ }
194
+ buildClientMetadata(params) {
195
+ return {
196
+ client_name: String(params.clientName || 'Canvas Flow MCP OAuth').trim() || 'Canvas Flow MCP OAuth',
197
+ redirect_uris: [params.redirectUrl],
198
+ grant_types: ['authorization_code', 'refresh_token'],
199
+ response_types: ['code'],
200
+ token_endpoint_auth_method: 'none',
201
+ ...(params.scope ? { scope: params.scope } : {}),
202
+ };
203
+ }
204
+ defaultScopeForServer(serverUrl) {
205
+ let hostname = '';
206
+ try {
207
+ hostname = new URL(serverUrl).hostname.toLowerCase();
208
+ }
209
+ catch {
210
+ return '';
211
+ }
212
+ const scopes = {
213
+ 'gmailmcp.googleapis.com': [
214
+ 'https://www.googleapis.com/auth/gmail.readonly',
215
+ 'https://www.googleapis.com/auth/gmail.compose',
216
+ ],
217
+ 'drivemcp.googleapis.com': [
218
+ 'https://www.googleapis.com/auth/drive.readonly',
219
+ 'https://www.googleapis.com/auth/drive.file',
220
+ ],
221
+ 'calendarmcp.googleapis.com': [
222
+ 'https://www.googleapis.com/auth/calendar.calendarlist.readonly',
223
+ 'https://www.googleapis.com/auth/calendar.events.freebusy',
224
+ 'https://www.googleapis.com/auth/calendar.events.readonly',
225
+ ],
226
+ 'chatmcp.googleapis.com': [
227
+ 'https://www.googleapis.com/auth/chat.spaces.readonly',
228
+ 'https://www.googleapis.com/auth/chat.memberships.readonly',
229
+ 'https://www.googleapis.com/auth/chat.messages.readonly',
230
+ 'https://www.googleapis.com/auth/chat.messages.create',
231
+ 'https://www.googleapis.com/auth/chat.users.readstate.readonly',
232
+ ],
233
+ 'people.googleapis.com': [
234
+ 'https://www.googleapis.com/auth/directory.readonly',
235
+ 'https://www.googleapis.com/auth/userinfo.profile',
236
+ 'https://www.googleapis.com/auth/contacts.readonly',
237
+ ],
238
+ }[hostname] || [];
239
+ return scopes.join(' ');
240
+ }
241
+ isFigmaServer(serverUrl) {
242
+ try {
243
+ return new URL(serverUrl).hostname.toLowerCase().endsWith('figma.com');
244
+ }
245
+ catch {
246
+ return false;
247
+ }
248
+ }
249
+ isAtlassianServer(serverUrl) {
250
+ try {
251
+ const url = new URL(serverUrl);
252
+ return url.hostname.toLowerCase().endsWith('atlassian.com');
253
+ }
254
+ catch {
255
+ return false;
256
+ }
257
+ }
258
+ getStaticClientInformation(serverUrl) {
259
+ if (this.isAtlassianServer(serverUrl))
260
+ return undefined;
261
+ const figmaPrefix = this.isFigmaServer(serverUrl) ? 'FIGMA_MCP_OAUTH' : '';
262
+ const clientId = String((figmaPrefix ? this.configService.get(`${figmaPrefix}_CLIENT_ID`) : '') ||
263
+ this.configService.get('CANVAS_MCP_OAUTH_CLIENT_ID') ||
264
+ '').trim();
265
+ if (!clientId)
266
+ return undefined;
267
+ const clientSecret = String((figmaPrefix ? this.configService.get(`${figmaPrefix}_CLIENT_SECRET`) : '') ||
268
+ this.configService.get('CANVAS_MCP_OAUTH_CLIENT_SECRET') ||
269
+ '').trim();
270
+ const tokenEndpointAuthMethod = String((figmaPrefix ? this.configService.get(`${figmaPrefix}_TOKEN_AUTH_METHOD`) : '') ||
271
+ this.configService.get('CANVAS_MCP_OAUTH_TOKEN_AUTH_METHOD') ||
272
+ (clientSecret ? 'client_secret_post' : 'none')).trim();
273
+ return {
274
+ client_id: clientId,
275
+ ...(clientSecret ? { client_secret: clientSecret } : {}),
276
+ ...(tokenEndpointAuthMethod ? { token_endpoint_auth_method: tokenEndpointAuthMethod } : {}),
277
+ };
278
+ }
279
+ formatStartError(serverUrl, error) {
280
+ const message = error instanceof Error ? error.message : 'Falha ao iniciar OAuth MCP.';
281
+ if (this.isFigmaServer(serverUrl) && /403|Forbidden/i.test(message)) {
282
+ return [
283
+ 'A Figma bloqueou o registro OAuth deste cliente MCP remoto.',
284
+ 'O escopo mcp:connect aceita apenas clientes aprovados no Figma MCP Catalog.',
285
+ 'Nao coloque credenciais em Headers JSON: use um cliente aprovado pela Figma ou configure FIGMA_MCP_OAUTH_CLIENT_ID/FIGMA_MCP_OAUTH_CLIENT_SECRET se a Figma forneceu essas credenciais.',
286
+ ].join(' ');
287
+ }
288
+ return message;
289
+ }
290
+ inspectStoredTokens(row) {
291
+ const tokens = this.decryptJson(row?.tokens);
292
+ if (!row?.tokens) {
293
+ return { tokens: undefined, usable: false, error: '' };
294
+ }
295
+ if (!tokens || (!String(tokens.access_token || '').trim() && !String(tokens.refresh_token || '').trim())) {
296
+ return {
297
+ tokens: undefined,
298
+ usable: false,
299
+ error: 'O token OAuth salvo nao pode ser lido pelo backend atual. Use Reconectar do zero.',
300
+ };
301
+ }
302
+ const expiresAt = row?.expiresAt ? new Date(row.expiresAt).getTime() : 0;
303
+ if (expiresAt && expiresAt <= Date.now() && !String(tokens.refresh_token || '').trim()) {
304
+ return {
305
+ tokens,
306
+ usable: false,
307
+ error: 'O token OAuth expirou e o servidor nao forneceu refresh token. Use Reconectar do zero.',
308
+ };
309
+ }
310
+ return { tokens, usable: true, error: '' };
311
+ }
312
+ sanitize(row) {
313
+ if (!row)
314
+ return null;
315
+ const storedTokens = this.inspectStoredTokens(row);
316
+ const connected = row.status === 'connected' && storedTokens.usable;
317
+ return {
318
+ connected,
319
+ status: (row.status === 'connected' && !connected ? 'error' : row.status || 'pending'),
320
+ serverUrl: row.serverUrl,
321
+ agentId: row.agentId || '',
322
+ organizationId: row.organizationId || '',
323
+ connectionScope: this.normalizeConnectionScope(row.connectionScope),
324
+ label: row.label || '',
325
+ scope: row.scope || '',
326
+ authorizationUrl: row.status === 'pending' ? row.authorizationUrl || '' : '',
327
+ expiresAt: row.expiresAt ? new Date(row.expiresAt).toISOString() : '',
328
+ authenticatedAt: row.authenticatedAt ? new Date(row.authenticatedAt).toISOString() : '',
329
+ updatedAt: row.updatedAt ? new Date(row.updatedAt).toISOString() : '',
330
+ error: row.error || storedTokens.error || '',
331
+ };
332
+ }
333
+ async getConnectionByKey(key) {
334
+ if (this.model.db.readyState !== 1)
335
+ return null;
336
+ return await this.model.findOne({ key }).lean().exec();
337
+ }
338
+ async getEncryptedJson(key, field) {
339
+ const row = await this.getConnectionByKey(key);
340
+ return this.decryptJson(row?.[field]);
341
+ }
342
+ async saveEncryptedJson(key, field, value) {
343
+ this.assertDbReady();
344
+ await this.model.updateOne({ key }, { $set: { [field]: this.encryptJson(value) } }).exec();
345
+ }
346
+ async saveTokens(key, tokens) {
347
+ this.assertDbReady();
348
+ const expiresIn = Number(tokens?.expires_in || 0);
349
+ const expiresAt = expiresIn > 0 ? new Date(Date.now() + Math.max(expiresIn - 30, 1) * 1000) : undefined;
350
+ await this.model.updateOne({ key }, {
351
+ $set: {
352
+ tokens: this.encryptJson(tokens),
353
+ status: 'connected',
354
+ error: '',
355
+ authorizationUrl: '',
356
+ authenticatedAt: new Date(),
357
+ ...(expiresAt ? { expiresAt } : {}),
358
+ },
359
+ $unset: {
360
+ codeVerifier: '',
361
+ ...(expiresAt ? {} : { expiresAt: '' }),
362
+ },
363
+ }).exec();
364
+ }
365
+ async setAuthorizationUrl(key, authorizationUrl) {
366
+ this.assertDbReady();
367
+ await this.model.updateOne({ key }, {
368
+ $set: { authorizationUrl, status: 'pending', error: '' },
369
+ $unset: { tokens: '', expiresAt: '', authenticatedAt: '' },
370
+ }).exec();
371
+ }
372
+ async invalidateCredentials(key, scope) {
373
+ this.assertDbReady();
374
+ const unset = {};
375
+ if (scope === 'all' || scope === 'client')
376
+ unset.clientInformation = '';
377
+ if (scope === 'all' || scope === 'tokens')
378
+ unset.tokens = '';
379
+ if (scope === 'all' || scope === 'verifier')
380
+ unset.codeVerifier = '';
381
+ if (scope === 'all' || scope === 'discovery')
382
+ unset.discoveryState = '';
383
+ if (scope === 'all' || scope === 'tokens') {
384
+ unset.expiresAt = '';
385
+ unset.authenticatedAt = '';
386
+ }
387
+ await this.model.updateOne({ key }, { $unset: unset, $set: { status: 'pending' } }).exec();
388
+ }
389
+ createProvider(row) {
390
+ return new PersistentMcpOAuthProvider(this, row.key, row.redirectUrl, row.clientMetadata || this.buildClientMetadata({ redirectUrl: row.redirectUrl, scope: row.scope }));
391
+ }
392
+ async startAuthorization(params) {
393
+ this.assertDbReady();
394
+ const serverUrl = this.normalizeServerUrl(params.serverUrl);
395
+ const organizationId = this.normalizeOrganizationId(params.organizationId);
396
+ const agentId = this.normalizeAgentId(params.agentId);
397
+ const connectionScope = this.normalizeConnectionScope(params.connectionScope);
398
+ const oauthUserId = this.normalizeOAuthUserId({ connectionScope, oauthUserId: params.oauthUserId });
399
+ const key = this.connectionKey({ organizationId, agentId, connectionScope, oauthUserId }, serverUrl);
400
+ const redirectUrl = this.buildCallbackUrl(params.baseUrl);
401
+ const scope = String(params.scope || this.defaultScopeForServer(serverUrl)).trim();
402
+ const state = (0, crypto_1.randomBytes)(24).toString('base64url');
403
+ const clientMetadata = this.buildClientMetadata({
404
+ redirectUrl,
405
+ scope,
406
+ clientName: params.clientName,
407
+ });
408
+ const staticClientInformation = this.getStaticClientInformation(serverUrl);
409
+ const update = {
410
+ key,
411
+ organizationId,
412
+ agentId,
413
+ connectionScope,
414
+ ...(oauthUserId ? { oauthUserId } : {}),
415
+ serverUrl,
416
+ serverUrlHash: this.serverUrlHash(serverUrl),
417
+ label: String(params.label || '').trim(),
418
+ scope,
419
+ redirectUrl,
420
+ state,
421
+ status: 'pending',
422
+ error: '',
423
+ clientMetadata,
424
+ updatedBy: params.userId || '',
425
+ ...(params.userId ? { createdBy: params.userId } : {}),
426
+ };
427
+ await this.model.findOneAndUpdate({ key }, {
428
+ $set: {
429
+ ...update,
430
+ ...(staticClientInformation ? { clientInformation: this.encryptJson(staticClientInformation) } : {}),
431
+ },
432
+ $unset: {
433
+ authorizationUrl: '',
434
+ tokens: '',
435
+ expiresAt: '',
436
+ authenticatedAt: '',
437
+ codeVerifier: '',
438
+ discoveryState: '',
439
+ ...(oauthUserId ? {} : { oauthUserId: '' }),
440
+ ...(staticClientInformation ? {} : { clientInformation: '' }),
441
+ },
442
+ }, { upsert: true, new: true }).lean().exec();
443
+ const provider = this.createProvider({ ...update });
444
+ try {
445
+ const result = await (0, auth_js_1.auth)(provider, { serverUrl, scope: scope || undefined });
446
+ if (result === 'AUTHORIZED') {
447
+ const row = await this.getConnectionByKey(key);
448
+ return this.sanitize(row);
449
+ }
450
+ const row = await this.getConnectionByKey(key);
451
+ return this.sanitize(row);
452
+ }
453
+ catch (error) {
454
+ const message = this.formatStartError(serverUrl, error);
455
+ await this.model.updateOne({ key }, { $set: { status: 'error', error: message } }).exec();
456
+ throw new common_1.BadRequestException(message);
457
+ }
458
+ }
459
+ async finishAuthorization(params) {
460
+ this.assertDbReady();
461
+ const state = String(params.state || '').trim();
462
+ if (!state)
463
+ throw new common_1.BadRequestException('Callback OAuth sem state.');
464
+ const row = await this.model.findOne({ state }).lean().exec();
465
+ if (!row)
466
+ throw new common_1.NotFoundException('Conexao OAuth MCP nao encontrada.');
467
+ if (params.error) {
468
+ const message = String(params.error || 'OAuth negado.');
469
+ await this.model.updateOne({ key: row.key }, { $set: { status: 'error', error: message } }).exec();
470
+ throw new common_1.BadRequestException(message);
471
+ }
472
+ const code = String(params.code || '').trim();
473
+ if (!code)
474
+ throw new common_1.BadRequestException('Callback OAuth sem authorization code.');
475
+ const provider = this.createProvider(row);
476
+ try {
477
+ await (0, auth_js_1.auth)(provider, {
478
+ serverUrl: row.serverUrl,
479
+ authorizationCode: code,
480
+ scope: row.scope || undefined,
481
+ });
482
+ const updated = await this.getConnectionByKey(row.key);
483
+ return this.sanitize(updated);
484
+ }
485
+ catch (error) {
486
+ const message = error instanceof Error ? error.message : 'Falha ao concluir OAuth MCP.';
487
+ await this.model.updateOne({ key: row.key }, { $set: { status: 'error', error: message } }).exec();
488
+ throw new common_1.BadRequestException(message);
489
+ }
490
+ }
491
+ async getStatus(params) {
492
+ if (this.model.db.readyState !== 1)
493
+ return { connected: false, status: 'error', error: 'MongoDB nao conectado.' };
494
+ const serverUrl = this.normalizeServerUrl(params.serverUrl);
495
+ const key = this.connectionKey(params, serverUrl);
496
+ const row = await this.getConnectionByKey(key);
497
+ return this.sanitize(row) || {
498
+ connected: false,
499
+ status: 'pending',
500
+ serverUrl,
501
+ agentId: this.normalizeAgentId(params.agentId),
502
+ organizationId: this.normalizeOrganizationId(params.organizationId),
503
+ connectionScope: this.normalizeConnectionScope(params.connectionScope),
504
+ error: '',
505
+ };
506
+ }
507
+ async disconnect(params) {
508
+ this.assertDbReady();
509
+ const serverUrl = this.normalizeServerUrl(params.serverUrl);
510
+ const key = this.connectionKey(params, serverUrl);
511
+ await this.model.deleteOne({ key }).exec();
512
+ return {
513
+ connected: false,
514
+ status: 'pending',
515
+ serverUrl,
516
+ agentId: this.normalizeAgentId(params.agentId),
517
+ organizationId: this.normalizeOrganizationId(params.organizationId),
518
+ connectionScope: this.normalizeConnectionScope(params.connectionScope),
519
+ error: '',
520
+ };
521
+ }
522
+ async createRuntimeProvider(params) {
523
+ const serverUrl = this.normalizeServerUrl(params.serverUrl);
524
+ const key = this.connectionKey(params, serverUrl);
525
+ const row = await this.getConnectionByKey(key);
526
+ const storedTokens = this.inspectStoredTokens(row);
527
+ if (!row?.tokens || row.status !== 'connected' || !storedTokens.usable) {
528
+ const agentId = this.normalizeAgentId(params.agentId);
529
+ const reason = storedTokens.error ? ` ${storedTokens.error}` : '';
530
+ const scopeLabel = this.normalizeConnectionScope(params.connectionScope) === 'user'
531
+ ? 'usuario Canvas Flow atual'
532
+ : `agente "${agentId}"`;
533
+ throw new common_1.BadRequestException(`Servidor MCP OAuth nao conectado para ${scopeLabel} e URL "${serverUrl}".${reason} Conecte em Autenticacao OAuth no node MCP antes de executar.`);
534
+ }
535
+ return this.createProvider(row);
536
+ }
537
+ };
538
+ exports.McpOAuthService = McpOAuthService;
539
+ exports.McpOAuthService = McpOAuthService = __decorate([
540
+ (0, common_1.Injectable)(),
541
+ __param(0, (0, common_1.Inject)(mcp_oauth_constants_model_1.MODEL_NAME)),
542
+ __metadata("design:paramtypes", [mongoose_1.Model,
543
+ config_1.ConfigService])
544
+ ], McpOAuthService);
545
+ //# sourceMappingURL=mcp-oauth-service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp-oauth-service.js","sourceRoot":"","sources":["../../src/mcp-oauth/mcp-oauth-service.ts"],"names":[],"mappings":"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"}