@carlonicora/nestjs-neo4jsonapi 4.11.0 → 4.12.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 (253) hide show
  1. package/dist/agents/common/inline-entity-links.d.ts +22 -0
  2. package/dist/agents/common/inline-entity-links.d.ts.map +1 -0
  3. package/dist/agents/common/inline-entity-links.js +60 -0
  4. package/dist/agents/common/inline-entity-links.js.map +1 -0
  5. package/dist/agents/community.detector/services/community.detector.service.d.ts.map +1 -1
  6. package/dist/agents/community.detector/services/community.detector.service.js +4 -0
  7. package/dist/agents/community.detector/services/community.detector.service.js.map +1 -1
  8. package/dist/agents/graph/interfaces/graph.catalog.interface.d.ts +17 -0
  9. package/dist/agents/graph/interfaces/graph.catalog.interface.d.ts.map +1 -1
  10. package/dist/agents/graph/services/graph.catalog.service.d.ts +15 -2
  11. package/dist/agents/graph/services/graph.catalog.service.d.ts.map +1 -1
  12. package/dist/agents/graph/services/graph.catalog.service.js +87 -0
  13. package/dist/agents/graph/services/graph.catalog.service.js.map +1 -1
  14. package/dist/agents/graph/services/graph.index.manager.d.ts +18 -1
  15. package/dist/agents/graph/services/graph.index.manager.d.ts.map +1 -1
  16. package/dist/agents/graph/services/graph.index.manager.js +16 -2
  17. package/dist/agents/graph/services/graph.index.manager.js.map +1 -1
  18. package/dist/agents/graph/services/graph.search.service.d.ts +38 -1
  19. package/dist/agents/graph/services/graph.search.service.d.ts.map +1 -1
  20. package/dist/agents/graph/services/graph.search.service.js +126 -7
  21. package/dist/agents/graph/services/graph.search.service.js.map +1 -1
  22. package/dist/agents/graph/services/scope.guard.d.ts +30 -1
  23. package/dist/agents/graph/services/scope.guard.d.ts.map +1 -1
  24. package/dist/agents/graph/services/scope.guard.js +53 -2
  25. package/dist/agents/graph/services/scope.guard.js.map +1 -1
  26. package/dist/agents/graph/tools/search-entities.tool.d.ts.map +1 -1
  27. package/dist/agents/graph/tools/search-entities.tool.js +3 -1
  28. package/dist/agents/graph/tools/search-entities.tool.js.map +1 -1
  29. package/dist/agents/graph/tools/traverse.tool.d.ts.map +1 -1
  30. package/dist/agents/graph/tools/traverse.tool.js +18 -8
  31. package/dist/agents/graph/tools/traverse.tool.js.map +1 -1
  32. package/dist/agents/operator/contexts/operator.context.d.ts +8 -1
  33. package/dist/agents/operator/contexts/operator.context.d.ts.map +1 -1
  34. package/dist/agents/operator/contexts/operator.context.js +6 -0
  35. package/dist/agents/operator/contexts/operator.context.js.map +1 -1
  36. package/dist/agents/operator/controllers/operator.controller.d.ts +4 -1
  37. package/dist/agents/operator/controllers/operator.controller.d.ts.map +1 -1
  38. package/dist/agents/operator/controllers/operator.controller.js +15 -8
  39. package/dist/agents/operator/controllers/operator.controller.js.map +1 -1
  40. package/dist/agents/operator/services/operator.service.d.ts +15 -0
  41. package/dist/agents/operator/services/operator.service.d.ts.map +1 -1
  42. package/dist/agents/operator/services/operator.service.js +31 -8
  43. package/dist/agents/operator/services/operator.service.js.map +1 -1
  44. package/dist/agents/operator/tools/operator.tool.registry.d.ts +2 -1
  45. package/dist/agents/operator/tools/operator.tool.registry.d.ts.map +1 -1
  46. package/dist/agents/operator/tools/operator.tool.registry.js +8 -3
  47. package/dist/agents/operator/tools/operator.tool.registry.js.map +1 -1
  48. package/dist/agents/responder/contexts/responder.context.d.ts +6 -0
  49. package/dist/agents/responder/contexts/responder.context.d.ts.map +1 -1
  50. package/dist/agents/responder/contexts/responder.context.js +2 -0
  51. package/dist/agents/responder/contexts/responder.context.js.map +1 -1
  52. package/dist/agents/responder/nodes/responder.answer.node.service.d.ts.map +1 -1
  53. package/dist/agents/responder/nodes/responder.answer.node.service.js +8 -2
  54. package/dist/agents/responder/nodes/responder.answer.node.service.js.map +1 -1
  55. package/dist/agents/responder/services/responder.service.d.ts +2 -0
  56. package/dist/agents/responder/services/responder.service.d.ts.map +1 -1
  57. package/dist/agents/responder/services/responder.service.js +1 -0
  58. package/dist/agents/responder/services/responder.service.js.map +1 -1
  59. package/dist/common/decorators/oauth.scopes.decorator.d.ts +2 -2
  60. package/dist/common/decorators/oauth.scopes.decorator.js +2 -2
  61. package/dist/common/helpers/credit-gate.d.ts +8 -0
  62. package/dist/common/helpers/credit-gate.d.ts.map +1 -1
  63. package/dist/common/helpers/credit-gate.js +11 -0
  64. package/dist/common/helpers/credit-gate.js.map +1 -1
  65. package/dist/common/helpers/define-entity.d.ts.map +1 -1
  66. package/dist/common/helpers/define-entity.js +6 -0
  67. package/dist/common/helpers/define-entity.js.map +1 -1
  68. package/dist/common/interfaces/assistant.scope.interface.d.ts +47 -0
  69. package/dist/common/interfaces/assistant.scope.interface.d.ts.map +1 -0
  70. package/dist/common/interfaces/assistant.scope.interface.js +14 -0
  71. package/dist/common/interfaces/assistant.scope.interface.js.map +1 -0
  72. package/dist/common/interfaces/assistant.title.interface.d.ts +30 -0
  73. package/dist/common/interfaces/assistant.title.interface.d.ts.map +1 -0
  74. package/dist/common/interfaces/assistant.title.interface.js +18 -0
  75. package/dist/common/interfaces/assistant.title.interface.js.map +1 -0
  76. package/dist/common/interfaces/datamodel.interface.d.ts +1 -0
  77. package/dist/common/interfaces/datamodel.interface.d.ts.map +1 -1
  78. package/dist/common/interfaces/entity.schema.interface.d.ts +63 -6
  79. package/dist/common/interfaces/entity.schema.interface.d.ts.map +1 -1
  80. package/dist/common/interfaces/external.entity.source.interface.d.ts +43 -0
  81. package/dist/common/interfaces/external.entity.source.interface.d.ts.map +1 -0
  82. package/dist/common/interfaces/external.entity.source.interface.js +17 -0
  83. package/dist/common/interfaces/external.entity.source.interface.js.map +1 -0
  84. package/dist/common/interfaces/index.d.ts +4 -0
  85. package/dist/common/interfaces/index.d.ts.map +1 -1
  86. package/dist/common/interfaces/index.js +4 -0
  87. package/dist/common/interfaces/index.js.map +1 -1
  88. package/dist/common/interfaces/s3.key-access.policy.interface.d.ts +48 -0
  89. package/dist/common/interfaces/s3.key-access.policy.interface.d.ts.map +1 -0
  90. package/dist/common/interfaces/s3.key-access.policy.interface.js +36 -0
  91. package/dist/common/interfaces/s3.key-access.policy.interface.js.map +1 -0
  92. package/dist/common/tokens.d.ts +13 -0
  93. package/dist/common/tokens.d.ts.map +1 -1
  94. package/dist/common/tokens.js +14 -1
  95. package/dist/common/tokens.js.map +1 -1
  96. package/dist/config/base.config.d.ts +13 -0
  97. package/dist/config/base.config.d.ts.map +1 -1
  98. package/dist/config/base.config.js +2 -0
  99. package/dist/config/base.config.js.map +1 -1
  100. package/dist/config/interfaces/base.config.interface.d.ts +2 -0
  101. package/dist/config/interfaces/base.config.interface.d.ts.map +1 -1
  102. package/dist/config/interfaces/config.assistant.interface.d.ts +9 -0
  103. package/dist/config/interfaces/config.assistant.interface.d.ts.map +1 -0
  104. package/dist/config/interfaces/config.assistant.interface.js +3 -0
  105. package/dist/config/interfaces/config.assistant.interface.js.map +1 -0
  106. package/dist/config/interfaces/config.oauth.interface.d.ts +8 -0
  107. package/dist/config/interfaces/config.oauth.interface.d.ts.map +1 -1
  108. package/dist/config/interfaces/config.operator.interface.d.ts +5 -0
  109. package/dist/config/interfaces/config.operator.interface.d.ts.map +1 -1
  110. package/dist/config/interfaces/index.d.ts +1 -0
  111. package/dist/config/interfaces/index.d.ts.map +1 -1
  112. package/dist/config/interfaces/index.js +1 -0
  113. package/dist/config/interfaces/index.js.map +1 -1
  114. package/dist/core/neo4j/abstracts/abstract.repository.d.ts +26 -0
  115. package/dist/core/neo4j/abstracts/abstract.repository.d.ts.map +1 -1
  116. package/dist/core/neo4j/abstracts/abstract.repository.js +70 -37
  117. package/dist/core/neo4j/abstracts/abstract.repository.js.map +1 -1
  118. package/dist/core/neo4j/index.d.ts +2 -0
  119. package/dist/core/neo4j/index.d.ts.map +1 -1
  120. package/dist/core/neo4j/index.js +5 -1
  121. package/dist/core/neo4j/index.js.map +1 -1
  122. package/dist/core/neo4j/queries/update.relationship.d.ts +8 -0
  123. package/dist/core/neo4j/queries/update.relationship.d.ts.map +1 -1
  124. package/dist/core/neo4j/queries/update.relationship.js +4 -1
  125. package/dist/core/neo4j/queries/update.relationship.js.map +1 -1
  126. package/dist/core/neo4j/services/neo4j.service.d.ts +10 -0
  127. package/dist/core/neo4j/services/neo4j.service.d.ts.map +1 -1
  128. package/dist/core/neo4j/services/neo4j.service.js +12 -1
  129. package/dist/core/neo4j/services/neo4j.service.js.map +1 -1
  130. package/dist/foundations/assistant/assistant.module.d.ts +7 -2
  131. package/dist/foundations/assistant/assistant.module.d.ts.map +1 -1
  132. package/dist/foundations/assistant/assistant.module.js +37 -1
  133. package/dist/foundations/assistant/assistant.module.js.map +1 -1
  134. package/dist/foundations/assistant/controllers/assistant.controller.d.ts +4 -1
  135. package/dist/foundations/assistant/controllers/assistant.controller.d.ts.map +1 -1
  136. package/dist/foundations/assistant/controllers/assistant.controller.js +15 -8
  137. package/dist/foundations/assistant/controllers/assistant.controller.js.map +1 -1
  138. package/dist/foundations/assistant/services/assistant.service.d.ts +37 -1
  139. package/dist/foundations/assistant/services/assistant.service.d.ts.map +1 -1
  140. package/dist/foundations/assistant/services/assistant.service.js +144 -11
  141. package/dist/foundations/assistant/services/assistant.service.js.map +1 -1
  142. package/dist/foundations/assistant-action/controllers/assistant-action.controller.d.ts +7 -1
  143. package/dist/foundations/assistant-action/controllers/assistant-action.controller.d.ts.map +1 -1
  144. package/dist/foundations/assistant-action/controllers/assistant-action.controller.js +15 -5
  145. package/dist/foundations/assistant-action/controllers/assistant-action.controller.js.map +1 -1
  146. package/dist/foundations/assistant-message/assistant-message.module.d.ts +4 -0
  147. package/dist/foundations/assistant-message/assistant-message.module.d.ts.map +1 -1
  148. package/dist/foundations/assistant-message/assistant-message.module.js +27 -2
  149. package/dist/foundations/assistant-message/assistant-message.module.js.map +1 -1
  150. package/dist/foundations/company/entities/company.d.ts +4 -4
  151. package/dist/foundations/company/entities/company.d.ts.map +1 -1
  152. package/dist/foundations/company/entities/company.js +2 -2
  153. package/dist/foundations/company/entities/company.js.map +1 -1
  154. package/dist/foundations/content/interfaces/content.extension.interface.d.ts +22 -0
  155. package/dist/foundations/content/interfaces/content.extension.interface.d.ts.map +1 -1
  156. package/dist/foundations/content/interfaces/content.extension.interface.js.map +1 -1
  157. package/dist/foundations/content/services/content.cypher.service.d.ts +27 -0
  158. package/dist/foundations/content/services/content.cypher.service.d.ts.map +1 -1
  159. package/dist/foundations/content/services/content.cypher.service.js +68 -9
  160. package/dist/foundations/content/services/content.cypher.service.js.map +1 -1
  161. package/dist/foundations/oauth/constants/oauth.scopes.d.ts +26 -11
  162. package/dist/foundations/oauth/constants/oauth.scopes.d.ts.map +1 -1
  163. package/dist/foundations/oauth/constants/oauth.scopes.js +13 -18
  164. package/dist/foundations/oauth/constants/oauth.scopes.js.map +1 -1
  165. package/dist/foundations/oauth/controllers/oauth.authorize.controller.d.ts.map +1 -1
  166. package/dist/foundations/oauth/controllers/oauth.authorize.controller.js +3 -0
  167. package/dist/foundations/oauth/controllers/oauth.authorize.controller.js.map +1 -1
  168. package/dist/foundations/oauth/controllers/oauth.registration.controller.d.ts.map +1 -1
  169. package/dist/foundations/oauth/controllers/oauth.registration.controller.js +2 -0
  170. package/dist/foundations/oauth/controllers/oauth.registration.controller.js.map +1 -1
  171. package/dist/foundations/oauth/controllers/oauth.token.controller.d.ts.map +1 -1
  172. package/dist/foundations/oauth/controllers/oauth.token.controller.js +2 -0
  173. package/dist/foundations/oauth/controllers/oauth.token.controller.js.map +1 -1
  174. package/dist/foundations/oauth/dtos/oauth.authorize.dto.d.ts +1 -0
  175. package/dist/foundations/oauth/dtos/oauth.authorize.dto.d.ts.map +1 -1
  176. package/dist/foundations/oauth/dtos/oauth.authorize.dto.js +5 -0
  177. package/dist/foundations/oauth/dtos/oauth.authorize.dto.js.map +1 -1
  178. package/dist/foundations/oauth/entities/oauth.authorization.code.entity.d.ts +2 -0
  179. package/dist/foundations/oauth/entities/oauth.authorization.code.entity.d.ts.map +1 -1
  180. package/dist/foundations/oauth/entities/oauth.authorization.code.entity.js.map +1 -1
  181. package/dist/foundations/oauth/entities/oauth.authorization.code.model.d.ts.map +1 -1
  182. package/dist/foundations/oauth/entities/oauth.authorization.code.model.js +1 -0
  183. package/dist/foundations/oauth/entities/oauth.authorization.code.model.js.map +1 -1
  184. package/dist/foundations/oauth/filters/oauth.error.filter.d.ts +16 -0
  185. package/dist/foundations/oauth/filters/oauth.error.filter.d.ts.map +1 -0
  186. package/dist/foundations/oauth/filters/oauth.error.filter.js +70 -0
  187. package/dist/foundations/oauth/filters/oauth.error.filter.js.map +1 -0
  188. package/dist/foundations/oauth/guards/oauth.token.guard.d.ts +2 -2
  189. package/dist/foundations/oauth/guards/oauth.token.guard.js +2 -2
  190. package/dist/foundations/oauth/index.d.ts +2 -1
  191. package/dist/foundations/oauth/index.d.ts.map +1 -1
  192. package/dist/foundations/oauth/index.js +3 -1
  193. package/dist/foundations/oauth/index.js.map +1 -1
  194. package/dist/foundations/oauth/oauth.module.d.ts +2 -2
  195. package/dist/foundations/oauth/oauth.module.d.ts.map +1 -1
  196. package/dist/foundations/oauth/oauth.module.js +11 -5
  197. package/dist/foundations/oauth/oauth.module.js.map +1 -1
  198. package/dist/foundations/oauth/repositories/oauth.repository.d.ts +20 -1
  199. package/dist/foundations/oauth/repositories/oauth.repository.d.ts.map +1 -1
  200. package/dist/foundations/oauth/repositories/oauth.repository.js +54 -10
  201. package/dist/foundations/oauth/repositories/oauth.repository.js.map +1 -1
  202. package/dist/foundations/oauth/services/index.d.ts +1 -0
  203. package/dist/foundations/oauth/services/index.d.ts.map +1 -1
  204. package/dist/foundations/oauth/services/index.js +1 -0
  205. package/dist/foundations/oauth/services/index.js.map +1 -1
  206. package/dist/foundations/oauth/services/oauth.client.service.d.ts +3 -1
  207. package/dist/foundations/oauth/services/oauth.client.service.d.ts.map +1 -1
  208. package/dist/foundations/oauth/services/oauth.client.service.js +7 -5
  209. package/dist/foundations/oauth/services/oauth.client.service.js.map +1 -1
  210. package/dist/foundations/oauth/services/oauth.scope.service.d.ts +32 -0
  211. package/dist/foundations/oauth/services/oauth.scope.service.d.ts.map +1 -0
  212. package/dist/foundations/oauth/services/oauth.scope.service.js +71 -0
  213. package/dist/foundations/oauth/services/oauth.scope.service.js.map +1 -0
  214. package/dist/foundations/oauth/services/oauth.service.d.ts +13 -1
  215. package/dist/foundations/oauth/services/oauth.service.d.ts.map +1 -1
  216. package/dist/foundations/oauth/services/oauth.service.js +18 -8
  217. package/dist/foundations/oauth/services/oauth.service.js.map +1 -1
  218. package/dist/foundations/relevancy/queries/relevance.d.ts +20 -0
  219. package/dist/foundations/relevancy/queries/relevance.d.ts.map +1 -1
  220. package/dist/foundations/relevancy/queries/relevance.js +44 -8
  221. package/dist/foundations/relevancy/queries/relevance.js.map +1 -1
  222. package/dist/foundations/relevancy/repositories/relevancy.repository.d.ts +41 -2
  223. package/dist/foundations/relevancy/repositories/relevancy.repository.d.ts.map +1 -1
  224. package/dist/foundations/relevancy/repositories/relevancy.repository.js +89 -6
  225. package/dist/foundations/relevancy/repositories/relevancy.repository.js.map +1 -1
  226. package/dist/foundations/relevancy/services/relevancy.service.js +1 -1
  227. package/dist/foundations/relevancy/services/relevancy.service.js.map +1 -1
  228. package/dist/foundations/s3/controllers/s3.controller.d.ts +10 -1
  229. package/dist/foundations/s3/controllers/s3.controller.d.ts.map +1 -1
  230. package/dist/foundations/s3/controllers/s3.controller.js +33 -2
  231. package/dist/foundations/s3/controllers/s3.controller.js.map +1 -1
  232. package/dist/foundations/user/controllers/user.controller.d.ts +1 -1
  233. package/dist/foundations/user/controllers/user.controller.d.ts.map +1 -1
  234. package/dist/foundations/user/controllers/user.controller.js +4 -4
  235. package/dist/foundations/user/controllers/user.controller.js.map +1 -1
  236. package/dist/foundations/user/entities/user.d.ts +17 -17
  237. package/dist/foundations/user/entities/user.d.ts.map +1 -1
  238. package/dist/foundations/user/entities/user.js +7 -7
  239. package/dist/foundations/user/entities/user.js.map +1 -1
  240. package/dist/foundations/user/user.module.js +2 -2
  241. package/dist/foundations/user/user.module.js.map +1 -1
  242. package/dist/mcp/services/mcp.entity.write.service.d.ts +9 -4
  243. package/dist/mcp/services/mcp.entity.write.service.d.ts.map +1 -1
  244. package/dist/mcp/services/mcp.entity.write.service.js +12 -4
  245. package/dist/mcp/services/mcp.entity.write.service.js.map +1 -1
  246. package/dist/mcp/services/mcp.errors.d.ts +1 -1
  247. package/dist/mcp/services/mcp.errors.d.ts.map +1 -1
  248. package/dist/mcp/services/mcp.errors.js.map +1 -1
  249. package/dist/mcp/services/mcp.tool.registry.d.ts +10 -1
  250. package/dist/mcp/services/mcp.tool.registry.d.ts.map +1 -1
  251. package/dist/mcp/services/mcp.tool.registry.js +24 -2
  252. package/dist/mcp/services/mcp.tool.registry.js.map +1 -1
  253. package/package.json +1 -1
@@ -5,9 +5,13 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
5
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
6
  return c > 3 && r && Object.defineProperty(target, key, r), r;
7
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
+ };
8
11
  Object.defineProperty(exports, "__esModule", { value: true });
9
12
  exports.AssistantMessageModule = void 0;
10
13
  const common_1 = require("@nestjs/common");
14
+ const core_1 = require("@nestjs/core");
11
15
  const registry_1 = require("../../common/registries/registry");
12
16
  const assistant_message_controller_1 = require("./controllers/assistant-message.controller");
13
17
  const assistant_message_1 = require("./entities/assistant-message");
@@ -16,14 +20,34 @@ const assistant_message_repository_1 = require("./repositories/assistant-message
16
20
  const assistant_message_service_1 = require("./services/assistant-message.service");
17
21
  const assistant_meta_1 = require("../assistant/entities/assistant.meta");
18
22
  let AssistantMessageModule = class AssistantMessageModule {
23
+ constructor(moduleRef) {
24
+ this.moduleRef = moduleRef;
25
+ }
19
26
  onModuleInit() {
20
27
  registry_1.modelRegistry.register(assistant_message_1.AssistantMessageDescriptor.model);
21
28
  }
22
29
  onApplicationBootstrap() {
23
30
  const all = registry_1.modelRegistry.getAllModels();
24
- const candidates = all.filter((m) => !!m.serialiser && m.type !== assistant_message_meta_1.assistantMessageMeta.type && m.type !== assistant_meta_1.assistantMeta.type);
31
+ // Only models whose serialiser is an instantiated provider can be cited:
32
+ // the auto serialiser builds every candidate's serialiser through ModuleRef
33
+ // when it serialises a message. An app can register a model (for typed
34
+ // reads) without providing its serialiser — an internal entity that is
35
+ // never served over HTTP — and listing it here crashes every assistant
36
+ // response with "Nest could not find <X>AutoSerialiser element".
37
+ const candidates = all.filter((m) => !!m.serialiser &&
38
+ m.type !== assistant_message_meta_1.assistantMessageMeta.type &&
39
+ m.type !== assistant_meta_1.assistantMeta.type &&
40
+ this.isSerialiserResolvable(m.serialiser));
25
41
  assistant_message_1.AssistantMessageDescriptor.relationships.references.polymorphic.candidates = candidates;
26
42
  }
43
+ isSerialiserResolvable(serialiser) {
44
+ try {
45
+ return !!this.moduleRef.get(serialiser, { strict: false });
46
+ }
47
+ catch {
48
+ return false;
49
+ }
50
+ }
27
51
  };
28
52
  exports.AssistantMessageModule = AssistantMessageModule;
29
53
  exports.AssistantMessageModule = AssistantMessageModule = __decorate([
@@ -31,6 +55,7 @@ exports.AssistantMessageModule = AssistantMessageModule = __decorate([
31
55
  controllers: [assistant_message_controller_1.AssistantMessageController],
32
56
  providers: [assistant_message_1.AssistantMessageDescriptor.model.serialiser, assistant_message_repository_1.AssistantMessageRepository, assistant_message_service_1.AssistantMessageService],
33
57
  exports: [assistant_message_service_1.AssistantMessageService, assistant_message_repository_1.AssistantMessageRepository],
34
- })
58
+ }),
59
+ __metadata("design:paramtypes", [core_1.ModuleRef])
35
60
  ], AssistantMessageModule);
36
61
  //# sourceMappingURL=assistant-message.module.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"assistant-message.module.js","sourceRoot":"","sources":["../../../src/foundations/assistant-message/assistant-message.module.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAA8E;AAC9E,+DAAiE;AACjE,6FAAwF;AACxF,oEAA0E;AAC1E,8EAAyE;AACzE,8FAAyF;AACzF,oFAA+E;AAC/E,yEAAqE;AAO9D,IAAM,sBAAsB,GAA5B,MAAM,sBAAsB;IACjC,YAAY;QACV,wBAAa,CAAC,QAAQ,CAAC,8CAA0B,CAAC,KAAK,CAAC,CAAC;IAC3D,CAAC;IAED,sBAAsB;QACpB,MAAM,GAAG,GAAG,wBAAa,CAAC,YAAY,EAAE,CAAC;QACzC,MAAM,UAAU,GAAG,GAAG,CAAC,MAAM,CAC3B,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,IAAI,CAAC,CAAC,IAAI,KAAK,6CAAoB,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,KAAK,8BAAa,CAAC,IAAI,CAC/F,CAAC;QACF,8CAA0B,CAAC,aAAa,CAAC,UAAU,CAAC,WAAY,CAAC,UAAU,GAAG,UAAU,CAAC;IAC3F,CAAC;CACF,CAAA;AAZY,wDAAsB;iCAAtB,sBAAsB;IALlC,IAAA,eAAM,EAAC;QACN,WAAW,EAAE,CAAC,yDAA0B,CAAC;QACzC,SAAS,EAAE,CAAC,8CAA0B,CAAC,KAAK,CAAC,UAAU,EAAE,yDAA0B,EAAE,mDAAuB,CAAC;QAC7G,OAAO,EAAE,CAAC,mDAAuB,EAAE,yDAA0B,CAAC;KAC/D,CAAC;GACW,sBAAsB,CAYlC"}
1
+ {"version":3,"file":"assistant-message.module.js","sourceRoot":"","sources":["../../../src/foundations/assistant-message/assistant-message.module.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,2CAA8E;AAC9E,uCAAyC;AACzC,+DAAiE;AACjE,6FAAwF;AACxF,oEAA0E;AAC1E,8EAAyE;AACzE,8FAAyF;AACzF,oFAA+E;AAC/E,yEAAqE;AAO9D,IAAM,sBAAsB,GAA5B,MAAM,sBAAsB;IACjC,YAA6B,SAAoB;QAApB,cAAS,GAAT,SAAS,CAAW;IAAG,CAAC;IAErD,YAAY;QACV,wBAAa,CAAC,QAAQ,CAAC,8CAA0B,CAAC,KAAK,CAAC,CAAC;IAC3D,CAAC;IAED,sBAAsB;QACpB,MAAM,GAAG,GAAG,wBAAa,CAAC,YAAY,EAAE,CAAC;QACzC,yEAAyE;QACzE,4EAA4E;QAC5E,uEAAuE;QACvE,uEAAuE;QACvE,uEAAuE;QACvE,iEAAiE;QACjE,MAAM,UAAU,GAAG,GAAG,CAAC,MAAM,CAC3B,CAAC,CAAC,EAAE,EAAE,CACJ,CAAC,CAAC,CAAC,CAAC,UAAU;YACd,CAAC,CAAC,IAAI,KAAK,6CAAoB,CAAC,IAAI;YACpC,CAAC,CAAC,IAAI,KAAK,8BAAa,CAAC,IAAI;YAC7B,IAAI,CAAC,sBAAsB,CAAC,CAAC,CAAC,UAAU,CAAC,CAC5C,CAAC;QACF,8CAA0B,CAAC,aAAa,CAAC,UAAU,CAAC,WAAY,CAAC,UAAU,GAAG,UAAU,CAAC;IAC3F,CAAC;IAEO,sBAAsB,CAAC,UAAmB;QAChD,IAAI,CAAC;YACH,OAAO,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,UAAiB,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;QACpE,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;CACF,CAAA;AAhCY,wDAAsB;iCAAtB,sBAAsB;IALlC,IAAA,eAAM,EAAC;QACN,WAAW,EAAE,CAAC,yDAA0B,CAAC;QACzC,SAAS,EAAE,CAAC,8CAA0B,CAAC,KAAK,CAAC,UAAU,EAAE,yDAA0B,EAAE,mDAAuB,CAAC;QAC7G,OAAO,EAAE,CAAC,mDAAuB,EAAE,yDAA0B,CAAC;KAC/D,CAAC;qCAEwC,gBAAS;GADtC,sBAAsB,CAgClC"}
@@ -1,4 +1,4 @@
1
- import { Entity } from "../../../common";
1
+ import type { Entity } from "../../../common/abstracts/entity";
2
2
  import type { Feature } from "../../feature/entities/feature";
3
3
  import type { Module } from "../../module/entities/module.entity";
4
4
  /**
@@ -47,16 +47,16 @@ export type Company = Entity & {
47
47
  * Single source of truth for the Company entity configuration.
48
48
  * Generates mapper, childrenTokens, and DataModelInterface automatically.
49
49
  */
50
- export declare const CompanyDescriptor: import("../../../common").EntityDescriptor<Company, {
50
+ export declare const CompanyDescriptor: import("../../..").EntityDescriptor<Company, {
51
51
  feature: {
52
- model: import("../../../common").DataMeta;
52
+ model: import("../../..").DataMeta;
53
53
  direction: "out";
54
54
  relationship: string;
55
55
  cardinality: "many";
56
56
  dtoKey: string;
57
57
  };
58
58
  module: {
59
- model: import("../../../common").DataMeta;
59
+ model: import("../../..").DataMeta;
60
60
  direction: "out";
61
61
  relationship: string;
62
62
  cardinality: "many";
@@ -1 +1 @@
1
- {"version":3,"file":"company.d.ts","sourceRoot":"","sources":["../../../../src/foundations/company/entities/company.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAgB,MAAM,iBAAiB,CAAC;AACvD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,gCAAgC,CAAC;AAC9D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qCAAqC,CAAC;AAKlE;;GAEG;AACH,MAAM,MAAM,OAAO,GAAG,MAAM,GAAG;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,oBAAoB,EAAE,OAAO,CAAC;IAC9B,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;IACvB,uBAAuB,EAAE,MAAM,CAAC;IAChC,qBAAqB,EAAE,MAAM,CAAC;IAE9B;;;;;;;OAOG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IAEpB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,aAAa,CAAC,EAAE,GAAG,CAAC;IAGpB,mBAAmB,CAAC,EAAE,IAAI,CAAC;IAC3B,mBAAmB,CAAC,EAAE,IAAI,CAAC;IAC3B,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAG5B,YAAY,CAAC,EAAE,MAAM,CAAC;IAGtB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,CAAC;IAGtB,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB,OAAO,EAAE,OAAO,EAAE,CAAC;IACnB,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;EAgE5B,CAAC;AAGH,MAAM,MAAM,qBAAqB,GAAG,OAAO,iBAAiB,CAAC"}
1
+ {"version":3,"file":"company.d.ts","sourceRoot":"","sources":["../../../../src/foundations/company/entities/company.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,kCAAkC,CAAC;AAE/D,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,gCAAgC,CAAC;AAC9D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qCAAqC,CAAC;AAKlE;;GAEG;AACH,MAAM,MAAM,OAAO,GAAG,MAAM,GAAG;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,oBAAoB,EAAE,OAAO,CAAC;IAC9B,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;IACvB,uBAAuB,EAAE,MAAM,CAAC;IAChC,qBAAqB,EAAE,MAAM,CAAC;IAE9B;;;;;;;OAOG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IAEpB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,aAAa,CAAC,EAAE,GAAG,CAAC;IAGpB,mBAAmB,CAAC,EAAE,IAAI,CAAC;IAC3B,mBAAmB,CAAC,EAAE,IAAI,CAAC;IAC3B,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAG5B,YAAY,CAAC,EAAE,MAAM,CAAC;IAGtB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,CAAC;IAGtB,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB,OAAO,EAAE,OAAO,EAAE,CAAC;IACnB,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;EAgE5B,CAAC;AAGH,MAAM,MAAM,qBAAqB,GAAG,OAAO,iBAAiB,CAAC"}
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.CompanyDescriptor = void 0;
4
- const common_1 = require("../../../common");
4
+ const define_entity_1 = require("../../../common/helpers/define-entity");
5
5
  const feature_meta_1 = require("../../feature/entities/feature.meta");
6
6
  const module_meta_1 = require("../../module/entities/module.meta");
7
7
  const company_meta_1 = require("./company.meta");
@@ -11,7 +11,7 @@ const company_meta_1 = require("./company.meta");
11
11
  * Single source of truth for the Company entity configuration.
12
12
  * Generates mapper, childrenTokens, and DataModelInterface automatically.
13
13
  */
14
- exports.CompanyDescriptor = (0, common_1.defineEntity)()({
14
+ exports.CompanyDescriptor = (0, define_entity_1.defineEntity)()({
15
15
  ...company_meta_1.companyMeta,
16
16
  // Company is the TENANT ROOT: every other entity is scoped to a company, so the
17
17
  // company itself has no parent company to filter by. Without this flag
@@ -1 +1 @@
1
- {"version":3,"file":"company.js","sourceRoot":"","sources":["../../../../src/foundations/company/entities/company.ts"],"names":[],"mappings":";;;AAAA,4CAAuD;AAGvD,sEAAkE;AAClE,mEAA+D;AAC/D,iDAA6C;AAsD7C;;;;;GAKG;AACU,QAAA,iBAAiB,GAAG,IAAA,qBAAY,GAAW,CAAC;IACvD,GAAG,0BAAW;IAEd,gFAAgF;IAChF,uEAAuE;IACvE,4EAA4E;IAC5E,+EAA+E;IAC/E,2CAA2C;IAC3C,eAAe,EAAE,KAAK;IAEtB,oBAAoB;IACpB,MAAM,EAAE;QACN,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE;QACxC,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;QACxB,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;QAC3B,+EAA+E;QAC/E,iEAAiE;QACjE,yEAAyE;QACzE,yEAAyE;QACzE,mDAAmD;QACnD,oBAAoB,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;QACzC,gFAAgF;QAChF,gFAAgF;QAChF,qCAAqC;QACrC,UAAU,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,kBAAkB,EAAE,IAAI,EAAE;QACxD,cAAc,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;QAClC,uBAAuB,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;QAC3C,qBAAqB,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;QACzC,SAAS,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;QAC9B,cAAc,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;QAClC,aAAa,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;QACjC,mBAAmB,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE;QACzC,mBAAmB,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE;QACzC,kBAAkB,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;QACtC,YAAY,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;QAChC,aAAa,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;QACjC,aAAa,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;QACjC,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;QAC1B,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;QACxB,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;QAC5B,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;QAC1B,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;QAC5B,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;QAC3B,YAAY,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;QAChC,WAAW,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;KAChC;IAED,2BAA2B;IAC3B,aAAa,EAAE;QACb,OAAO,EAAE;YACP,KAAK,EAAE,0BAAW;YAClB,SAAS,EAAE,KAAK;YAChB,YAAY,EAAE,aAAa;YAC3B,WAAW,EAAE,MAAM;YACnB,MAAM,EAAE,UAAU;SACnB;QACD,MAAM,EAAE;YACN,KAAK,EAAE,wBAAU;YACjB,SAAS,EAAE,KAAK;YAChB,YAAY,EAAE,YAAY;YAC1B,WAAW,EAAE,MAAM;YACnB,MAAM,EAAE,SAAS;SAClB;KACF;CACF,CAAC,CAAC"}
1
+ {"version":3,"file":"company.js","sourceRoot":"","sources":["../../../../src/foundations/company/entities/company.ts"],"names":[],"mappings":";;;AACA,yEAAqE;AAGrE,sEAAkE;AAClE,mEAA+D;AAC/D,iDAA6C;AAsD7C;;;;;GAKG;AACU,QAAA,iBAAiB,GAAG,IAAA,4BAAY,GAAW,CAAC;IACvD,GAAG,0BAAW;IAEd,gFAAgF;IAChF,uEAAuE;IACvE,4EAA4E;IAC5E,+EAA+E;IAC/E,2CAA2C;IAC3C,eAAe,EAAE,KAAK;IAEtB,oBAAoB;IACpB,MAAM,EAAE;QACN,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE;QACxC,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;QACxB,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;QAC3B,+EAA+E;QAC/E,iEAAiE;QACjE,yEAAyE;QACzE,yEAAyE;QACzE,mDAAmD;QACnD,oBAAoB,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;QACzC,gFAAgF;QAChF,gFAAgF;QAChF,qCAAqC;QACrC,UAAU,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,kBAAkB,EAAE,IAAI,EAAE;QACxD,cAAc,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;QAClC,uBAAuB,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;QAC3C,qBAAqB,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;QACzC,SAAS,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;QAC9B,cAAc,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;QAClC,aAAa,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;QACjC,mBAAmB,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE;QACzC,mBAAmB,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE;QACzC,kBAAkB,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;QACtC,YAAY,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;QAChC,aAAa,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;QACjC,aAAa,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;QACjC,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;QAC1B,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;QACxB,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;QAC5B,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;QAC1B,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;QAC5B,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;QAC3B,YAAY,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;QAChC,WAAW,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;KAChC;IAED,2BAA2B;IAC3B,aAAa,EAAE;QACb,OAAO,EAAE;YACP,KAAK,EAAE,0BAAW;YAClB,SAAS,EAAE,KAAK;YAChB,YAAY,EAAE,aAAa;YAC3B,WAAW,EAAE,MAAM;YACnB,MAAM,EAAE,UAAU;SACnB;QACD,MAAM,EAAE;YACN,KAAK,EAAE,wBAAU;YACjB,SAAS,EAAE,KAAK;YAChB,YAAY,EAAE,YAAY;YAC1B,WAAW,EAAE,MAAM;YACnB,MAAM,EAAE,SAAS;SAClB;KACF;CACF,CAAC,CAAC"}
@@ -159,6 +159,28 @@ export interface ContentExtensionConfig {
159
159
  * its wire contract pins relationships to `["owner"]`.
160
160
  */
161
161
  serialiseAuthor?: boolean;
162
+ /**
163
+ * Per-label record-level access rules, keyed by the underlying Neo4j label
164
+ * (e.g. `"Document"`). Each value is a Cypher predicate over the content node
165
+ * alias `content` and the bound `currentUser`, normally the label's own
166
+ * repository `buildUserHasAccess()` predicate re-aliased to `content`.
167
+ *
168
+ * `ContentCypherService.userHasAccess()` — the access check of EVERY Content
169
+ * read: the list, by-owner and by-ids reads and the related rows of the
170
+ * `/contents/:id/relevance` read — ANDs one `(NOT content:<Label> OR (<predicate>))`
171
+ * conjunct per entry, so a row of that label is returned only when its
172
+ * predicate holds. The SOURCE of `/contents/:id/relevance` and
173
+ * `/contents/:id/user-relevance` must pass the same check (403/404 otherwise),
174
+ * and the relevance page is cut after the filter. Skipped for automated jobs,
175
+ * like every `userHasAccess` check. With no user in context a guarded label
176
+ * is excluded outright (`currentUser` is unbound).
177
+ *
178
+ * Default (omitted): no access predicate. Every company record of the
179
+ * configured content types is returned, exactly as before.
180
+ *
181
+ * a360ai: the Document and Memo access rules.
182
+ */
183
+ accessPredicates?: Record<string, string>;
162
184
  }
163
185
  /**
164
186
  * Injection token for Content extension configuration.
@@ -1 +1 @@
1
- {"version":3,"file":"content.extension.interface.d.ts","sourceRoot":"","sources":["../../../../src/foundations/content/interfaces/content.extension.interface.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,gDAAgD,CAAC;AAE1E;;GAEG;AACH,MAAM,WAAW,4BAA4B;IAC3C,8EAA8E;IAC9E,KAAK,EAAE,QAAQ,CAAC;IAEhB,sDAAsD;IACtD,YAAY,EAAE,MAAM,CAAC;IAErB,6DAA6D;IAC7D,SAAS,EAAE,IAAI,GAAG,KAAK,CAAC;IAExB,+DAA+D;IAC/D,WAAW,EAAE,KAAK,GAAG,MAAM,CAAC;IAE5B,yEAAyE;IACzE,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;;;;GAKG;AACH,MAAM,WAAW,wBAAwB;IACvC;;;OAGG;IACH,aAAa,EAAE,MAAM,EAAE,CAAC;IAExB;;;;;;;;OAQG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED;;;;;;;;;;;;;;;GAeG;AACH,MAAM,WAAW,yBAAyB;IACxC;;;OAGG;IACH,GAAG,EAAE,MAAM,CAAC;IAEZ;;;;OAIG;IACH,aAAa,EAAE,MAAM,CAAC;IAEtB;;;OAGG;IACH,WAAW,EAAE,MAAM,CAAC;IAEpB,2EAA2E;IAC3E,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4CG;AACH,MAAM,WAAW,sBAAsB;IACrC,uBAAuB,EAAE,4BAA4B,EAAE,CAAC;IAExD;;;;;;;OAOG;IACH,iBAAiB,CAAC,EAAE,wBAAwB,CAAC;IAE7C;;;;;;;;;OASG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IAEtB;;;;;;;OAOG;IACH,UAAU,CAAC,EAAE,yBAAyB,EAAE,CAAC;IAEzC;;;;;;;;OAQG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED;;;GAGG;AACH,eAAO,MAAM,wBAAwB,eAAqC,CAAC;AAE3E;;;;GAIG;AACH,eAAO,MAAM,kBAAkB,eAA+B,CAAC"}
1
+ {"version":3,"file":"content.extension.interface.d.ts","sourceRoot":"","sources":["../../../../src/foundations/content/interfaces/content.extension.interface.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,gDAAgD,CAAC;AAE1E;;GAEG;AACH,MAAM,WAAW,4BAA4B;IAC3C,8EAA8E;IAC9E,KAAK,EAAE,QAAQ,CAAC;IAEhB,sDAAsD;IACtD,YAAY,EAAE,MAAM,CAAC;IAErB,6DAA6D;IAC7D,SAAS,EAAE,IAAI,GAAG,KAAK,CAAC;IAExB,+DAA+D;IAC/D,WAAW,EAAE,KAAK,GAAG,MAAM,CAAC;IAE5B,yEAAyE;IACzE,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;;;;GAKG;AACH,MAAM,WAAW,wBAAwB;IACvC;;;OAGG;IACH,aAAa,EAAE,MAAM,EAAE,CAAC;IAExB;;;;;;;;OAQG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED;;;;;;;;;;;;;;;GAeG;AACH,MAAM,WAAW,yBAAyB;IACxC;;;OAGG;IACH,GAAG,EAAE,MAAM,CAAC;IAEZ;;;;OAIG;IACH,aAAa,EAAE,MAAM,CAAC;IAEtB;;;OAGG;IACH,WAAW,EAAE,MAAM,CAAC;IAEpB,2EAA2E;IAC3E,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4CG;AACH,MAAM,WAAW,sBAAsB;IACrC,uBAAuB,EAAE,4BAA4B,EAAE,CAAC;IAExD;;;;;;;OAOG;IACH,iBAAiB,CAAC,EAAE,wBAAwB,CAAC;IAE7C;;;;;;;;;OASG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IAEtB;;;;;;;OAOG;IACH,UAAU,CAAC,EAAE,yBAAyB,EAAE,CAAC;IAEzC;;;;;;;;OAQG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;IAE1B;;;;;;;;;;;;;;;;;;;;OAoBG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC3C;AAED;;;GAGG;AACH,eAAO,MAAM,wBAAwB,eAAqC,CAAC;AAE3E;;;;GAIG;AACH,eAAO,MAAM,kBAAkB,eAA+B,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"content.extension.interface.js","sourceRoot":"","sources":["../../../../src/foundations/content/interfaces/content.extension.interface.ts"],"names":[],"mappings":";;;AAmLA;;;GAGG;AACU,QAAA,wBAAwB,GAAG,MAAM,CAAC,0BAA0B,CAAC,CAAC;AAE3E;;;;GAIG;AACU,QAAA,kBAAkB,GAAG,MAAM,CAAC,oBAAoB,CAAC,CAAC"}
1
+ {"version":3,"file":"content.extension.interface.js","sourceRoot":"","sources":["../../../../src/foundations/content/interfaces/content.extension.interface.ts"],"names":[],"mappings":";;;AA0MA;;;GAGG;AACU,QAAA,wBAAwB,GAAG,MAAM,CAAC,0BAA0B,CAAC,CAAC;AAE3E;;;;GAIG;AACU,QAAA,kBAAkB,GAAG,MAAM,CAAC,oBAAoB,CAAC,CAAC"}
@@ -14,6 +14,18 @@ export declare class ContentCypherService {
14
14
  searchField: string;
15
15
  blockCompanyAndUser?: boolean;
16
16
  }): string;
17
+ /**
18
+ * The per-label `accessPredicates` as `(NOT content:<Label> OR (<predicate>))`
19
+ * conjuncts: a row of that label survives only when its predicate holds, rows
20
+ * of every other label are untouched. Empty when no predicate is configured
21
+ * (the default) or when running as an automated job, mirroring
22
+ * `SecurityService.userHasAccess`, which skips access checks for those.
23
+ *
24
+ * Without a user in context `currentUser` is not bound, so a predicate over it
25
+ * would match ANY user inside its `EXISTS {}`; rows of a guarded label are then
26
+ * excluded outright (`NOT content:<Label>`).
27
+ */
28
+ private accessPredicateConjuncts;
17
29
  /**
18
30
  * The `requireTldr` filter as trailing `AND` predicates, for callers that
19
31
  * already opened a WHERE clause of their own (e.g. `ContentRepository.findByIds`).
@@ -31,6 +43,21 @@ export declare class ContentCypherService {
31
43
  ownerMatch(params: {
32
44
  target: string;
33
45
  }): string;
46
+ /**
47
+ * The access check every Content read runs (via `SecurityService.userHasAccess`,
48
+ * which skips it for automated jobs): the list, by-owner and by-ids reads in
49
+ * `ContentRepository`, the related rows of the `/contents/:id/relevance` read
50
+ * in `RelevancyRepository`, which receives this service as its `cypherService`,
51
+ * and the SOURCE content check `RelevancyRepository` runs before every
52
+ * relevance read (`/contents/:id/relevance` and `/contents/:id/user-relevance`).
53
+ *
54
+ * Default (no `accessPredicates`): the bare re-projecting `WITH`, unchanged.
55
+ *
56
+ * With `accessPredicates`: the same `WITH`, a `WHERE` carrying the per-label
57
+ * conjuncts, then the same `WITH` again, so the fragment always ends on a
58
+ * plain projection and the caller's next clause (`ORDER BY … {CURSOR}`, a
59
+ * `MATCH`, a `WHERE`) attaches to it exactly as it did before.
60
+ */
34
61
  userHasAccess: (params?: {
35
62
  useTotalScore?: boolean;
36
63
  }) => string;
@@ -1 +1 @@
1
- {"version":3,"file":"content.cypher.service.d.ts","sourceRoot":"","sources":["../../../../src/foundations/content/services/content.cypher.service.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACxC,OAAO,EAAE,mBAAmB,EAA+B,MAAM,4BAA4B,CAAC;AAI9F,OAAO,EAAE,sBAAsB,EAA4B,MAAM,2CAA2C,CAAC;AAE7G,qBACa,oBAAoB;IAE7B,OAAO,CAAC,QAAQ,CAAC,UAAU;IAC3B,OAAO,CAAC,QAAQ,CAAC,aAAa;IAG9B,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC;gBAJV,UAAU,EAAE,UAAU,EACtB,aAAa,EAAE,aAAa,CAAC,mBAAmB,CAAC,EAGjD,SAAS,CAAC,EAAE,sBAAsB;IAGrD,OAAO,CAAC,eAAe;IAKvB,gFAAgF;IAChF,OAAO,KAAK,eAAe,GAE1B;IAED,OAAO,CAAC,MAAM,CAAC,EAAE;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,mBAAmB,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,MAAM;IAiBhF;;;;OAIG;IACH,UAAU,IAAI,MAAM;IAQpB;;;;;;;OAOG;IACH,UAAU,CAAC,MAAM,EAAE;QAAE,MAAM,EAAE,MAAM,CAAA;KAAE,GAAG,MAAM;IAU9C,aAAa,GAAI,SAAS;QAAE,aAAa,CAAC,EAAE,OAAO,CAAA;KAAE,KAAG,MAAM,CAO5D;IAEF,eAAe,GAAI,SAAS;QAAE,aAAa,CAAC,EAAE,OAAO,CAAA;KAAE,YA0ErD;CACH"}
1
+ {"version":3,"file":"content.cypher.service.d.ts","sourceRoot":"","sources":["../../../../src/foundations/content/services/content.cypher.service.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACxC,OAAO,EAAE,mBAAmB,EAA+B,MAAM,4BAA4B,CAAC;AAI9F,OAAO,EAAE,sBAAsB,EAA4B,MAAM,2CAA2C,CAAC;AAE7G,qBACa,oBAAoB;IAE7B,OAAO,CAAC,QAAQ,CAAC,UAAU;IAC3B,OAAO,CAAC,QAAQ,CAAC,aAAa;IAG9B,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC;gBAJV,UAAU,EAAE,UAAU,EACtB,aAAa,EAAE,aAAa,CAAC,mBAAmB,CAAC,EAGjD,SAAS,CAAC,EAAE,sBAAsB;IAGrD,OAAO,CAAC,eAAe;IAKvB,gFAAgF;IAChF,OAAO,KAAK,eAAe,GAE1B;IAED,OAAO,CAAC,MAAM,CAAC,EAAE;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,mBAAmB,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,MAAM;IAgChF;;;;;;;;;;OAUG;IACH,OAAO,CAAC,wBAAwB;IAchC;;;;OAIG;IACH,UAAU,IAAI,MAAM;IAQpB;;;;;;;OAOG;IACH,UAAU,CAAC,MAAM,EAAE;QAAE,MAAM,EAAE,MAAM,CAAA;KAAE,GAAG,MAAM;IAU9C;;;;;;;;;;;;;;OAcG;IACH,aAAa,GAAI,SAAS;QAAE,aAAa,CAAC,EAAE,OAAO,CAAA;KAAE,KAAG,MAAM,CAkB5D;IAEF,eAAe,GAAI,SAAS;QAAE,aAAa,CAAC,EAAE,OAAO,CAAA;KAAE,YA0ErD;CACH"}
@@ -25,11 +25,35 @@ let ContentCypherService = class ContentCypherService {
25
25
  this.clsService = clsService;
26
26
  this.configService = configService;
27
27
  this.extension = extension;
28
+ /**
29
+ * The access check every Content read runs (via `SecurityService.userHasAccess`,
30
+ * which skips it for automated jobs): the list, by-owner and by-ids reads in
31
+ * `ContentRepository`, the related rows of the `/contents/:id/relevance` read
32
+ * in `RelevancyRepository`, which receives this service as its `cypherService`,
33
+ * and the SOURCE content check `RelevancyRepository` runs before every
34
+ * relevance read (`/contents/:id/relevance` and `/contents/:id/user-relevance`).
35
+ *
36
+ * Default (no `accessPredicates`): the bare re-projecting `WITH`, unchanged.
37
+ *
38
+ * With `accessPredicates`: the same `WITH`, a `WHERE` carrying the per-label
39
+ * conjuncts, then the same `WITH` again, so the fragment always ends on a
40
+ * plain projection and the caller's next clause (`ORDER BY … {CURSOR}`, a
41
+ * `MATCH`, a `WHERE`) attaches to it exactly as it did before.
42
+ */
28
43
  this.userHasAccess = (params) => {
29
44
  const companyId = this.clsService.get("companyId");
30
45
  const userId = this.clsService.get("userId");
46
+ const projection = `WITH ${content_meta_1.contentMeta.nodeName}${companyId ? `, ${company_meta_1.companyMeta.nodeName}` : ``}${userId ? `, currentUser` : ``}${params?.useTotalScore ? `, totalScore` : ``}`;
47
+ const accessConjuncts = this.accessPredicateConjuncts();
48
+ if (accessConjuncts.length === 0)
49
+ return `
50
+ ${projection}
51
+ `;
31
52
  return `
32
- WITH ${content_meta_1.contentMeta.nodeName}${companyId ? `, ${company_meta_1.companyMeta.nodeName}` : ``}${userId ? `, currentUser` : ``}${params?.useTotalScore ? `, totalScore` : ``}
53
+ ${projection}
54
+ WHERE ${accessConjuncts.join(`
55
+ AND `)}
56
+ ${projection}
33
57
  `;
34
58
  };
35
59
  this.returnStatement = (params) => {
@@ -106,19 +130,54 @@ let ContentCypherService = class ContentCypherService {
106
130
  return this.extension?.serialiseAuthor !== false;
107
131
  }
108
132
  default(params) {
109
- return `
110
- MATCH (${content_meta_1.contentMeta.nodeName}:${this.getContentTypes().join("|")} ${params ? ` {${params.searchField}: $searchValue}` : ``})
111
- WHERE ${this.extension?.requireTldr
112
- ? `${content_meta_1.contentMeta.nodeName}.tldr IS NOT NULL
113
- AND ${content_meta_1.contentMeta.nodeName}.tldr <> ""
114
- AND `
115
- : ``}$companyId IS NULL
133
+ const companyCondition = `$companyId IS NULL
116
134
  OR EXISTS {
117
135
  MATCH (${content_meta_1.contentMeta.nodeName})-[:BELONGS_TO]-(company)
118
- }
136
+ }`;
137
+ // Each extra condition is a parenthesised conjunct, so the company OR can
138
+ // never swallow the tldr filter (AND binds tighter than OR). With no extra
139
+ // condition the clause is the historical one.
140
+ //
141
+ // The per-label `accessPredicates` are NOT applied here: every caller of
142
+ // default() (ContentRepository.find and .findByOwner) follows it with
143
+ // `userHasAccess()`, which carries them. Applying them here as well ran
144
+ // every EXISTS check twice.
145
+ const conjuncts = [];
146
+ if (this.extension?.requireTldr) {
147
+ conjuncts.push(`(${content_meta_1.contentMeta.nodeName}.tldr IS NOT NULL AND ${content_meta_1.contentMeta.nodeName}.tldr <> "")`);
148
+ }
149
+ const where = conjuncts.length === 0
150
+ ? companyCondition
151
+ : [...conjuncts, `(${companyCondition})`].join(`
152
+ AND `);
153
+ return `
154
+ MATCH (${content_meta_1.contentMeta.nodeName}:${this.getContentTypes().join("|")} ${params ? ` {${params.searchField}: $searchValue}` : ``})
155
+ WHERE ${where}
119
156
  WITH ${content_meta_1.contentMeta.nodeName}${params?.blockCompanyAndUser ? `` : `, company, currentUser`}
120
157
  `;
121
158
  }
159
+ /**
160
+ * The per-label `accessPredicates` as `(NOT content:<Label> OR (<predicate>))`
161
+ * conjuncts: a row of that label survives only when its predicate holds, rows
162
+ * of every other label are untouched. Empty when no predicate is configured
163
+ * (the default) or when running as an automated job, mirroring
164
+ * `SecurityService.userHasAccess`, which skips access checks for those.
165
+ *
166
+ * Without a user in context `currentUser` is not bound, so a predicate over it
167
+ * would match ANY user inside its `EXISTS {}`; rows of a guarded label are then
168
+ * excluded outright (`NOT content:<Label>`).
169
+ */
170
+ accessPredicateConjuncts() {
171
+ const predicates = this.extension?.accessPredicates;
172
+ if (!predicates)
173
+ return [];
174
+ if (this.clsService.get("isAutomatedJob"))
175
+ return [];
176
+ const hasUser = !!this.clsService.get("userId");
177
+ return Object.entries(predicates).map(([labelName, predicate]) => hasUser
178
+ ? `(NOT ${content_meta_1.contentMeta.nodeName}:${labelName} OR (${predicate}))`
179
+ : `(NOT ${content_meta_1.contentMeta.nodeName}:${labelName})`);
180
+ }
122
181
  /**
123
182
  * The `requireTldr` filter as trailing `AND` predicates, for callers that
124
183
  * already opened a WHERE clause of their own (e.g. `ContentRepository.findByIds`).
@@ -1 +1 @@
1
- {"version":3,"file":"content.cypher.service.js","sourceRoot":"","sources":["../../../../src/foundations/content/services/content.cypher.service.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,2CAA8D;AAC9D,2CAA+C;AAC/C,2CAAwC;AAExC,sEAAkE;AAClE,sEAAkE;AAClE,6DAAsE;AACtE,2FAA6G;AAGtG,IAAM,oBAAoB,GAA1B,MAAM,oBAAoB;IAC/B,YACmB,UAAsB,EACtB,aAAiD,EAGlE,SAAmD;QAJlC,eAAU,GAAV,UAAU,CAAY;QACtB,kBAAa,GAAb,aAAa,CAAoC;QAGjD,cAAS,GAAT,SAAS,CAAyB;QA6DrD,kBAAa,GAAG,CAAC,MAAoC,EAAU,EAAE;YAC/D,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;YACnD,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YAE7C,OAAO;aACE,0BAAW,CAAC,QAAQ,GAAG,SAAS,CAAC,CAAC,CAAC,KAAK,0BAAW,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,EAAE,GAAG,MAAM,EAAE,aAAa,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE;KACzJ,CAAC;QACJ,CAAC,CAAC;QAEF,oBAAe,GAAG,CAAC,MAAoC,EAAE,EAAE;YACzD,4CAA4C;YAC5C,IAAI,KAAK,GAAG;eACD,0BAAW,CAAC,QAAQ,qBAAqB,0BAAW,CAAC,QAAQ,IAAI,0BAAW,CAAC,QAAQ,IAAI,0BAAW,CAAC,SAAS;QACrH,IAAI,CAAC,UAAU,CAAC,EAAE,MAAM,EAAE,GAAG,0BAAW,CAAC,QAAQ,IAAI,qBAAS,CAAC,QAAQ,IAAI,qBAAS,CAAC,SAAS,EAAE,EAAE,CAAC,EAAE,CAAC;YAE1G,0EAA0E;YAC1E,0EAA0E;YAC1E,0EAA0E;YAC1E,uEAAuE;YACvE,2DAA2D;YAC3D,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;gBACzB,KAAK,IAAI;wBACS,0BAAW,CAAC,QAAQ,oBAAoB,0BAAW,CAAC,QAAQ,IAAI,sBAAU,CAAC,QAAQ,IAAI,sBAAU,CAAC,SAAS,GAAG,CAAC;YACnI,CAAC;YAED,iDAAiD;YACjD,IAAI,IAAI,CAAC,SAAS,EAAE,uBAAuB,EAAE,CAAC;gBAC5C,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,SAAS,CAAC,uBAAuB,EAAE,CAAC;oBACzD,gDAAgD;oBAChD,uEAAuE;oBACvE,0EAA0E;oBAC1E,MAAM,UAAU,GACd,GAAG,CAAC,SAAS,KAAK,IAAI;wBACpB,CAAC,CAAC,IAAI,0BAAW,CAAC,QAAQ,QAAQ,GAAG,CAAC,YAAY,MAAM,0BAAW,CAAC,QAAQ,IAAI,GAAG,CAAC,KAAK,CAAC,QAAQ,IAAI,GAAG,CAAC,KAAK,CAAC,SAAS,GAAG;wBAC5H,CAAC,CAAC,IAAI,0BAAW,CAAC,QAAQ,OAAO,GAAG,CAAC,YAAY,OAAO,0BAAW,CAAC,QAAQ,IAAI,GAAG,CAAC,KAAK,CAAC,QAAQ,IAAI,GAAG,CAAC,KAAK,CAAC,SAAS,GAAG,CAAC;oBAEjI,KAAK,IAAI;uBACM,UAAU,EAAE,CAAC;gBAC9B,CAAC;YACH,CAAC;YAED,+DAA+D;YAC/D,IAAI,IAAI,CAAC,SAAS,EAAE,UAAU,EAAE,CAAC;gBAC/B,KAAK,MAAM,SAAS,IAAI,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE,CAAC;oBAClD,KAAK,IAAI;QACT,SAAS,CAAC,aAAa,EAAE,CAAC;gBAC5B,CAAC;YACH,CAAC;YAED,qBAAqB;YACrB,KAAK,IAAI;eACE,0BAAW,CAAC,QAAQ;UACzB,0BAAW,CAAC,QAAQ,IAAI,0BAAW,CAAC,QAAQ;UAC5C,0BAAW,CAAC,QAAQ,IAAI,qBAAS,CAAC,QAAQ,EAAE,CAAC;YAEnD,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;gBACzB,KAAK,IAAI;UACL,0BAAW,CAAC,QAAQ,IAAI,sBAAU,CAAC,QAAQ,EAAE,CAAC;YACpD,CAAC;YAED,6CAA6C;YAC7C,IAAI,IAAI,CAAC,SAAS,EAAE,uBAAuB,EAAE,CAAC;gBAC5C,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,SAAS,CAAC,uBAAuB,EAAE,CAAC;oBACzD,KAAK,IAAI;UACP,0BAAW,CAAC,QAAQ,IAAI,GAAG,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;gBACjD,CAAC;YACH,CAAC;YAED,+CAA+C;YAC/C,IAAI,IAAI,CAAC,SAAS,EAAE,UAAU,EAAE,CAAC;gBAC/B,KAAK,MAAM,SAAS,IAAI,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE,CAAC;oBAClD,KAAK,IAAI;UACP,SAAS,CAAC,WAAW,OAAO,SAAS,CAAC,GAAG,EAAE,CAAC;gBAChD,CAAC;YACH,CAAC;YAED,0BAA0B;YAC1B,IAAI,MAAM,EAAE,aAAa,EAAE,CAAC;gBAC1B,KAAK,IAAI;mBACI,CAAC;YAChB,CAAC;YAED,OAAO,KAAK,CAAC;QACf,CAAC,CAAC;IA/IC,CAAC;IAEI,eAAe;QACrB,MAAM,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAA8B,cAAc,CAAC,EAAE,KAAK,IAAI,EAAE,CAAC;QAC/F,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,0BAAW,CAAC,SAAS,CAAC,CAAC;IAC5D,CAAC;IAED,gFAAgF;IAChF,IAAY,eAAe;QACzB,OAAO,IAAI,CAAC,SAAS,EAAE,eAAe,KAAK,KAAK,CAAC;IACnD,CAAC;IAED,OAAO,CAAC,MAA+D;QACrE,OAAO;eACI,0BAAW,CAAC,QAAQ,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,WAAW,iBAAiB,CAAC,CAAC,CAAC,EAAE;cAEzH,IAAI,CAAC,SAAS,EAAE,WAAW;YACzB,CAAC,CAAC,GAAG,0BAAW,CAAC,QAAQ;YACvB,0BAAW,CAAC,QAAQ;WACrB;YACD,CAAC,CAAC,EACN;;iBAEW,0BAAW,CAAC,QAAQ;;aAExB,0BAAW,CAAC,QAAQ,GAAG,MAAM,EAAE,mBAAmB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,wBAAwB;KAC1F,CAAC;IACJ,CAAC;IAED;;;;OAIG;IACH,UAAU;QACR,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,WAAW;YAAE,OAAO,EAAE,CAAC;QAE5C,OAAO;cACG,0BAAW,CAAC,QAAQ;cACpB,0BAAW,CAAC,QAAQ,aAAa,CAAC;IAC9C,CAAC;IAED;;;;;;;OAOG;IACH,UAAU,CAAC,MAA0B;QACnC,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,EAAE,iBAAiB,CAAC;QAClD,MAAM,aAAa,GAAG,OAAO,EAAE,aAAa,EAAE,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC;QAC7F,MAAM,iBAAiB,GAAG,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAElD,OAAO,OAAO,EAAE,UAAU;YACxB,CAAC,CAAC,UAAU,0BAAW,CAAC,QAAQ,OAAO,iBAAiB,MAAM,MAAM,CAAC,MAAM,GAAG;YAC9E,CAAC,CAAC,UAAU,0BAAW,CAAC,QAAQ,QAAQ,iBAAiB,MAAM,MAAM,CAAC,MAAM,GAAG,CAAC;IACpF,CAAC;CAsFF,CAAA;AAvJY,oDAAoB;+BAApB,oBAAoB;IADhC,IAAA,mBAAU,GAAE;IAKR,WAAA,IAAA,iBAAQ,GAAE,CAAA;IACV,WAAA,IAAA,eAAM,EAAC,sDAAwB,CAAC,CAAA;qCAHJ,uBAAU;QACP,sBAAa;GAHpC,oBAAoB,CAuJhC"}
1
+ {"version":3,"file":"content.cypher.service.js","sourceRoot":"","sources":["../../../../src/foundations/content/services/content.cypher.service.ts"],"names":[],"mappings":"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"}
@@ -4,6 +4,11 @@
4
4
  * Defines the available scopes for OAuth2 authorization.
5
5
  * Scopes control what actions an OAuth client can perform on behalf of a user.
6
6
  *
7
+ * These are the generic built-in scopes. Apps register their own scopes on top
8
+ * of these through `createBaseConfig({ oauthScopes: [...] })`
9
+ * (`oauth.additionalScopes`). The helpers in this file describe the built-ins
10
+ * only; runtime validation goes through `OAuthScopeService`, which knows both.
11
+ *
7
12
  * @see RFC 6749 Section 3.3 - Access Token Scope
8
13
  */
9
14
  export declare const OAuth2Scopes: {
@@ -11,14 +16,6 @@ export declare const OAuth2Scopes: {
11
16
  readonly READ: "read";
12
17
  /** General write access to user data */
13
18
  readonly WRITE: "write";
14
- /** Read access to photographs */
15
- readonly PHOTOGRAPHS_READ: "photographs:read";
16
- /** Create and modify photographs */
17
- readonly PHOTOGRAPHS_WRITE: "photographs:write";
18
- /** Read access to rolls/albums */
19
- readonly ROLLS_READ: "rolls:read";
20
- /** Create and modify rolls/albums */
21
- readonly ROLLS_WRITE: "rolls:write";
22
19
  /** Access to user profile information (name, email) */
23
20
  readonly PROFILE: "profile";
24
21
  /** Access to the MCP (Model Context Protocol) server */
@@ -26,9 +23,24 @@ export declare const OAuth2Scopes: {
26
23
  /** Administrative access - restricted to platform admins */
27
24
  readonly ADMIN: "admin";
28
25
  };
29
- /** Type for valid OAuth scope values */
26
+ /**
27
+ * A scope definition: the scope string plus its consent-screen label and description.
28
+ * Used for app-specific scopes registered through config (`oauth.additionalScopes`).
29
+ */
30
+ export interface OAuthScopeDefinition {
31
+ /** The scope string, e.g. "documents:read" */
32
+ scope: string;
33
+ /** Short human-readable label for consent screens */
34
+ name: string;
35
+ /** Explanation of the access being granted, for consent screens */
36
+ description: string;
37
+ }
38
+ /** Type for built-in OAuth scope values */
30
39
  export type OAuthScopeType = (typeof OAuth2Scopes)[keyof typeof OAuth2Scopes];
31
- /** Array of all valid scope strings */
40
+ /**
41
+ * Array of the built-in scope strings.
42
+ * Does not include app-specific scopes from config; use `OAuthScopeService.isValid()` at runtime.
43
+ */
32
44
  export declare const VALID_OAUTH_SCOPES: string[];
33
45
  /**
34
46
  * Human-readable names for each scope.
@@ -41,7 +53,10 @@ export declare const OAuthScopeNames: Record<OAuthScopeType, string>;
41
53
  */
42
54
  export declare const OAuthScopeDescriptions: Record<OAuthScopeType, string>;
43
55
  /**
44
- * Validates that all requested scopes are valid.
56
+ * Validates that all requested scopes are built-in scopes.
57
+ *
58
+ * Built-ins only: app-specific scopes from config are rejected here.
59
+ * Runtime validation goes through `OAuthScopeService.validate()`.
45
60
  * @param scopes - Space-separated scope string or array of scopes
46
61
  * @returns true if all scopes are valid
47
62
  */
@@ -1 +1 @@
1
- {"version":3,"file":"oauth.scopes.d.ts","sourceRoot":"","sources":["../../../../src/foundations/oauth/constants/oauth.scopes.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,eAAO,MAAM,YAAY;IACvB,uCAAuC;;IAGvC,wCAAwC;;IAGxC,iCAAiC;;IAGjC,oCAAoC;;IAGpC,kCAAkC;;IAGlC,qCAAqC;;IAGrC,uDAAuD;;IAGvD,wDAAwD;;IAGxD,4DAA4D;;CAEpD,CAAC;AAEX,wCAAwC;AACxC,MAAM,MAAM,cAAc,GAAG,CAAC,OAAO,YAAY,CAAC,CAAC,MAAM,OAAO,YAAY,CAAC,CAAC;AAE9E,uCAAuC;AACvC,eAAO,MAAM,kBAAkB,EAAE,MAAM,EAAgC,CAAC;AAExE;;;GAGG;AACH,eAAO,MAAM,eAAe,EAAE,MAAM,CAAC,cAAc,EAAE,MAAM,CAU1D,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,sBAAsB,EAAE,MAAM,CAAC,cAAc,EAAE,MAAM,CAUjE,CAAC;AAEF;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,OAAO,CAGjE;AAED;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,EAAE,CAEzD;AAED;;;;;GAKG;AACH,wBAAgB,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,aAAa,EAAE,cAAc,GAAG,OAAO,CAEjF"}
1
+ {"version":3,"file":"oauth.scopes.d.ts","sourceRoot":"","sources":["../../../../src/foundations/oauth/constants/oauth.scopes.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,YAAY;IACvB,uCAAuC;;IAGvC,wCAAwC;;IAGxC,uDAAuD;;IAGvD,wDAAwD;;IAGxD,4DAA4D;;CAEpD,CAAC;AAEX;;;GAGG;AACH,MAAM,WAAW,oBAAoB;IACnC,8CAA8C;IAC9C,KAAK,EAAE,MAAM,CAAC;IACd,qDAAqD;IACrD,IAAI,EAAE,MAAM,CAAC;IACb,mEAAmE;IACnE,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,2CAA2C;AAC3C,MAAM,MAAM,cAAc,GAAG,CAAC,OAAO,YAAY,CAAC,CAAC,MAAM,OAAO,YAAY,CAAC,CAAC;AAE9E;;;GAGG;AACH,eAAO,MAAM,kBAAkB,EAAE,MAAM,EAAgC,CAAC;AAExE;;;GAGG;AACH,eAAO,MAAM,eAAe,EAAE,MAAM,CAAC,cAAc,EAAE,MAAM,CAM1D,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,sBAAsB,EAAE,MAAM,CAAC,cAAc,EAAE,MAAM,CAMjE,CAAC;AAEF;;;;;;;GAOG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,OAAO,CAGjE;AAED;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,EAAE,CAEzD;AAED;;;;;GAKG;AACH,wBAAgB,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,aAAa,EAAE,cAAc,GAAG,OAAO,CAEjF"}
@@ -10,6 +10,11 @@ exports.hasScope = hasScope;
10
10
  * Defines the available scopes for OAuth2 authorization.
11
11
  * Scopes control what actions an OAuth client can perform on behalf of a user.
12
12
  *
13
+ * These are the generic built-in scopes. Apps register their own scopes on top
14
+ * of these through `createBaseConfig({ oauthScopes: [...] })`
15
+ * (`oauth.additionalScopes`). The helpers in this file describe the built-ins
16
+ * only; runtime validation goes through `OAuthScopeService`, which knows both.
17
+ *
13
18
  * @see RFC 6749 Section 3.3 - Access Token Scope
14
19
  */
15
20
  exports.OAuth2Scopes = {
@@ -17,14 +22,6 @@ exports.OAuth2Scopes = {
17
22
  READ: "read",
18
23
  /** General write access to user data */
19
24
  WRITE: "write",
20
- /** Read access to photographs */
21
- PHOTOGRAPHS_READ: "photographs:read",
22
- /** Create and modify photographs */
23
- PHOTOGRAPHS_WRITE: "photographs:write",
24
- /** Read access to rolls/albums */
25
- ROLLS_READ: "rolls:read",
26
- /** Create and modify rolls/albums */
27
- ROLLS_WRITE: "rolls:write",
28
25
  /** Access to user profile information (name, email) */
29
26
  PROFILE: "profile",
30
27
  /** Access to the MCP (Model Context Protocol) server */
@@ -32,7 +29,10 @@ exports.OAuth2Scopes = {
32
29
  /** Administrative access - restricted to platform admins */
33
30
  ADMIN: "admin",
34
31
  };
35
- /** Array of all valid scope strings */
32
+ /**
33
+ * Array of the built-in scope strings.
34
+ * Does not include app-specific scopes from config; use `OAuthScopeService.isValid()` at runtime.
35
+ */
36
36
  exports.VALID_OAUTH_SCOPES = Object.values(exports.OAuth2Scopes);
37
37
  /**
38
38
  * Human-readable names for each scope.
@@ -41,10 +41,6 @@ exports.VALID_OAUTH_SCOPES = Object.values(exports.OAuth2Scopes);
41
41
  exports.OAuthScopeNames = {
42
42
  [exports.OAuth2Scopes.READ]: "Read Access",
43
43
  [exports.OAuth2Scopes.WRITE]: "Write Access",
44
- [exports.OAuth2Scopes.PHOTOGRAPHS_READ]: "View Photographs",
45
- [exports.OAuth2Scopes.PHOTOGRAPHS_WRITE]: "Upload Photographs",
46
- [exports.OAuth2Scopes.ROLLS_READ]: "View Rolls",
47
- [exports.OAuth2Scopes.ROLLS_WRITE]: "Manage Rolls",
48
44
  [exports.OAuth2Scopes.PROFILE]: "View Profile",
49
45
  [exports.OAuth2Scopes.MCP]: "MCP Server Access",
50
46
  [exports.OAuth2Scopes.ADMIN]: "Administrative Access",
@@ -56,16 +52,15 @@ exports.OAuthScopeNames = {
56
52
  exports.OAuthScopeDescriptions = {
57
53
  [exports.OAuth2Scopes.READ]: "Read access to your data",
58
54
  [exports.OAuth2Scopes.WRITE]: "Write access to your data",
59
- [exports.OAuth2Scopes.PHOTOGRAPHS_READ]: "View your photographs",
60
- [exports.OAuth2Scopes.PHOTOGRAPHS_WRITE]: "Upload and modify your photographs",
61
- [exports.OAuth2Scopes.ROLLS_READ]: "View your rolls and albums",
62
- [exports.OAuth2Scopes.ROLLS_WRITE]: "Create and modify rolls and albums",
63
55
  [exports.OAuth2Scopes.PROFILE]: "View your profile information (name, email)",
64
56
  [exports.OAuth2Scopes.MCP]: "Let an AI assistant read and act on your data through the MCP server",
65
57
  [exports.OAuth2Scopes.ADMIN]: "Administrative access to the platform",
66
58
  };
67
59
  /**
68
- * Validates that all requested scopes are valid.
60
+ * Validates that all requested scopes are built-in scopes.
61
+ *
62
+ * Built-ins only: app-specific scopes from config are rejected here.
63
+ * Runtime validation goes through `OAuthScopeService.validate()`.
69
64
  * @param scopes - Space-separated scope string or array of scopes
70
65
  * @returns true if all scopes are valid
71
66
  */
@@ -1 +1 @@
1
- {"version":3,"file":"oauth.scopes.js","sourceRoot":"","sources":["../../../../src/foundations/oauth/constants/oauth.scopes.ts"],"names":[],"mappings":";;;AAgFA,wCAGC;AAOD,kCAEC;AAQD,4BAEC;AAtGD;;;;;;;GAOG;AACU,QAAA,YAAY,GAAG;IAC1B,uCAAuC;IACvC,IAAI,EAAE,MAAM;IAEZ,wCAAwC;IACxC,KAAK,EAAE,OAAO;IAEd,iCAAiC;IACjC,gBAAgB,EAAE,kBAAkB;IAEpC,oCAAoC;IACpC,iBAAiB,EAAE,mBAAmB;IAEtC,kCAAkC;IAClC,UAAU,EAAE,YAAY;IAExB,qCAAqC;IACrC,WAAW,EAAE,aAAa;IAE1B,uDAAuD;IACvD,OAAO,EAAE,SAAS;IAElB,wDAAwD;IACxD,GAAG,EAAE,KAAK;IAEV,4DAA4D;IAC5D,KAAK,EAAE,OAAO;CACN,CAAC;AAKX,uCAAuC;AAC1B,QAAA,kBAAkB,GAAa,MAAM,CAAC,MAAM,CAAC,oBAAY,CAAC,CAAC;AAExE;;;GAGG;AACU,QAAA,eAAe,GAAmC;IAC7D,CAAC,oBAAY,CAAC,IAAI,CAAC,EAAE,aAAa;IAClC,CAAC,oBAAY,CAAC,KAAK,CAAC,EAAE,cAAc;IACpC,CAAC,oBAAY,CAAC,gBAAgB,CAAC,EAAE,kBAAkB;IACnD,CAAC,oBAAY,CAAC,iBAAiB,CAAC,EAAE,oBAAoB;IACtD,CAAC,oBAAY,CAAC,UAAU,CAAC,EAAE,YAAY;IACvC,CAAC,oBAAY,CAAC,WAAW,CAAC,EAAE,cAAc;IAC1C,CAAC,oBAAY,CAAC,OAAO,CAAC,EAAE,cAAc;IACtC,CAAC,oBAAY,CAAC,GAAG,CAAC,EAAE,mBAAmB;IACvC,CAAC,oBAAY,CAAC,KAAK,CAAC,EAAE,uBAAuB;CAC9C,CAAC;AAEF;;;GAGG;AACU,QAAA,sBAAsB,GAAmC;IACpE,CAAC,oBAAY,CAAC,IAAI,CAAC,EAAE,0BAA0B;IAC/C,CAAC,oBAAY,CAAC,KAAK,CAAC,EAAE,2BAA2B;IACjD,CAAC,oBAAY,CAAC,gBAAgB,CAAC,EAAE,uBAAuB;IACxD,CAAC,oBAAY,CAAC,iBAAiB,CAAC,EAAE,oCAAoC;IACtE,CAAC,oBAAY,CAAC,UAAU,CAAC,EAAE,4BAA4B;IACvD,CAAC,oBAAY,CAAC,WAAW,CAAC,EAAE,oCAAoC;IAChE,CAAC,oBAAY,CAAC,OAAO,CAAC,EAAE,6CAA6C;IACrE,CAAC,oBAAY,CAAC,GAAG,CAAC,EAAE,sEAAsE;IAC1F,CAAC,oBAAY,CAAC,KAAK,CAAC,EAAE,uCAAuC;CAC9D,CAAC;AAEF;;;;GAIG;AACH,SAAgB,cAAc,CAAC,MAAyB;IACtD,MAAM,UAAU,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IACtF,OAAO,UAAU,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,0BAAkB,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;AACzE,CAAC;AAED;;;;GAIG;AACH,SAAgB,WAAW,CAAC,WAAmB;IAC7C,OAAO,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AAChD,CAAC;AAED;;;;;GAKG;AACH,SAAgB,QAAQ,CAAC,MAAgB,EAAE,aAA6B;IACtE,OAAO,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;AACxC,CAAC"}
1
+ {"version":3,"file":"oauth.scopes.js","sourceRoot":"","sources":["../../../../src/foundations/oauth/constants/oauth.scopes.ts"],"names":[],"mappings":";;;AAoFA,wCAGC;AAOD,kCAEC;AAQD,4BAEC;AA1GD;;;;;;;;;;;;GAYG;AACU,QAAA,YAAY,GAAG;IAC1B,uCAAuC;IACvC,IAAI,EAAE,MAAM;IAEZ,wCAAwC;IACxC,KAAK,EAAE,OAAO;IAEd,uDAAuD;IACvD,OAAO,EAAE,SAAS;IAElB,wDAAwD;IACxD,GAAG,EAAE,KAAK;IAEV,4DAA4D;IAC5D,KAAK,EAAE,OAAO;CACN,CAAC;AAkBX;;;GAGG;AACU,QAAA,kBAAkB,GAAa,MAAM,CAAC,MAAM,CAAC,oBAAY,CAAC,CAAC;AAExE;;;GAGG;AACU,QAAA,eAAe,GAAmC;IAC7D,CAAC,oBAAY,CAAC,IAAI,CAAC,EAAE,aAAa;IAClC,CAAC,oBAAY,CAAC,KAAK,CAAC,EAAE,cAAc;IACpC,CAAC,oBAAY,CAAC,OAAO,CAAC,EAAE,cAAc;IACtC,CAAC,oBAAY,CAAC,GAAG,CAAC,EAAE,mBAAmB;IACvC,CAAC,oBAAY,CAAC,KAAK,CAAC,EAAE,uBAAuB;CAC9C,CAAC;AAEF;;;GAGG;AACU,QAAA,sBAAsB,GAAmC;IACpE,CAAC,oBAAY,CAAC,IAAI,CAAC,EAAE,0BAA0B;IAC/C,CAAC,oBAAY,CAAC,KAAK,CAAC,EAAE,2BAA2B;IACjD,CAAC,oBAAY,CAAC,OAAO,CAAC,EAAE,6CAA6C;IACrE,CAAC,oBAAY,CAAC,GAAG,CAAC,EAAE,sEAAsE;IAC1F,CAAC,oBAAY,CAAC,KAAK,CAAC,EAAE,uCAAuC;CAC9D,CAAC;AAEF;;;;;;;GAOG;AACH,SAAgB,cAAc,CAAC,MAAyB;IACtD,MAAM,UAAU,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IACtF,OAAO,UAAU,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,0BAAkB,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;AACzE,CAAC;AAED;;;;GAIG;AACH,SAAgB,WAAW,CAAC,WAAmB;IAC7C,OAAO,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AAChD,CAAC;AAED;;;;;GAKG;AACH,SAAgB,QAAQ,CAAC,MAAgB,EAAE,aAA6B;IACtE,OAAO,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;AACxC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"oauth.authorize.controller.d.ts","sourceRoot":"","sources":["../../../../src/foundations/oauth/controllers/oauth.authorize.controller.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAExC,OAAO,EAAE,sBAAsB,EAAE,uBAAuB,EAAE,wBAAwB,EAAE,MAAM,6BAA6B,CAAC;AAExH,OAAO,EAAE,mBAAmB,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAE9E;;;;;GAKG;AACH,qBACa,wBAAwB;IAEjC,OAAO,CAAC,QAAQ,CAAC,YAAY;IAC7B,OAAO,CAAC,QAAQ,CAAC,GAAG;gBADH,YAAY,EAAE,YAAY,EAC1B,GAAG,EAAE,UAAU;IAGlC;;;;;;;;OAQG;IAGG,SAAS,CAAU,KAAK,EAAE,sBAAsB,EAAS,KAAK,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IAoDlG;;;;;;;OAOG;IAGG,oBAAoB,CAAU,KAAK,EAAE,wBAAwB,GAAG,OAAO,CAAC,mBAAmB,CAAC;IAQlG;;;;;;;OAOG;IAGG,oBAAoB,CAAS,IAAI,EAAE,uBAAuB,GAAG,OAAO,CAAC;QAAE,IAAI,EAAE;YAAE,WAAW,EAAE,MAAM,CAAA;SAAE,CAAA;KAAE,CAAC;IAoB7G;;;;;;;OAOG;IAGG,iBAAiB,CAAS,IAAI,EAAE,uBAAuB,GAAG,OAAO,CAAC;QAAE,IAAI,EAAE;YAAE,WAAW,EAAE,MAAM,CAAA;SAAE,CAAA;KAAE,CAAC;CAQ3G"}
1
+ {"version":3,"file":"oauth.authorize.controller.d.ts","sourceRoot":"","sources":["../../../../src/foundations/oauth/controllers/oauth.authorize.controller.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAExC,OAAO,EAAE,sBAAsB,EAAE,uBAAuB,EAAE,wBAAwB,EAAE,MAAM,6BAA6B,CAAC;AAExH,OAAO,EAAE,mBAAmB,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAE9E;;;;;GAKG;AACH,qBACa,wBAAwB;IAEjC,OAAO,CAAC,QAAQ,CAAC,YAAY;IAC7B,OAAO,CAAC,QAAQ,CAAC,GAAG;gBADH,YAAY,EAAE,YAAY,EAC1B,GAAG,EAAE,UAAU;IAGlC;;;;;;;;OAQG;IAGG,SAAS,CAAU,KAAK,EAAE,sBAAsB,EAAS,KAAK,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IAoDlG;;;;;;;OAOG;IAGG,oBAAoB,CAAU,KAAK,EAAE,wBAAwB,GAAG,OAAO,CAAC,mBAAmB,CAAC;IAWlG;;;;;;;OAOG;IAGG,oBAAoB,CAAS,IAAI,EAAE,uBAAuB,GAAG,OAAO,CAAC;QAAE,IAAI,EAAE;YAAE,WAAW,EAAE,MAAM,CAAA;SAAE,CAAA;KAAE,CAAC;IAqB7G;;;;;;;OAOG;IAGG,iBAAiB,CAAS,IAAI,EAAE,uBAAuB,GAAG,OAAO,CAAC;QAAE,IAAI,EAAE;YAAE,WAAW,EAAE,MAAM,CAAA;SAAE,CAAA;KAAE,CAAC;CAQ3G"}
@@ -94,10 +94,12 @@ let OAuthAuthorizeController = class OAuthAuthorizeController {
94
94
  * User must be authenticated to view consent screen.
95
95
  */
96
96
  async getAuthorizationInfo(query) {
97
+ const userId = this.cls.get("userId");
97
98
  return this.oauthService.getConsentInfo({
98
99
  clientId: query.client_id,
99
100
  redirectUri: query.redirect_uri,
100
101
  scope: query.scope,
102
+ userId,
101
103
  });
102
104
  }
103
105
  /**
@@ -121,6 +123,7 @@ let OAuthAuthorizeController = class OAuthAuthorizeController {
121
123
  codeChallenge: body.code_challenge,
122
124
  codeChallengeMethod: body.code_challenge_method,
123
125
  userId,
126
+ companyId: body.company_id,
124
127
  });
125
128
  return { meta: { redirectUrl: result.redirectUrl } };
126
129
  }
@@ -1 +1 @@
1
- {"version":3,"file":"oauth.authorize.controller.js","sourceRoot":"","sources":["../../../../src/foundations/oauth/controllers/oauth.authorize.controller.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"oauth.authorize.controller.js","sourceRoot":"","sources":["../../../../src/foundations/oauth/controllers/oauth.authorize.controller.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"oauth.registration.controller.d.ts","sourceRoot":"","sources":["../../../../src/foundations/oauth/controllers/oauth.registration.controller.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAE/C,OAAO,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAC9D,OAAO,EAAE,kBAAkB,EAAE,MAAM,kCAAkC,CAAC;AAEtE;;;;;;;;;GASG;AACH,qBACa,2BAA2B;IAEpC,OAAO,CAAC,QAAQ,CAAC,aAAa;IAC9B,OAAO,CAAC,QAAQ,CAAC,aAAa;gBADb,aAAa,EAAE,kBAAkB,EACjC,aAAa,EAAE,aAAa;IAG/C;;;;;;;OAOG;IAGG,QAAQ,CAAS,GAAG,EAAE,gBAAgB,GAAG,OAAO,CAAC;QACrD,SAAS,EAAE,MAAM,CAAC;QAClB,aAAa,CAAC,EAAE,MAAM,CAAC;QACvB,mBAAmB,EAAE,MAAM,CAAC;QAC5B,aAAa,EAAE,MAAM,EAAE,CAAC;QACxB,WAAW,EAAE,MAAM,EAAE,CAAC;QACtB,0BAA0B,EAAE,MAAM,CAAC;QACnC,WAAW,EAAE,MAAM,CAAC;KACrB,CAAC;CA0BH"}
1
+ {"version":3,"file":"oauth.registration.controller.d.ts","sourceRoot":"","sources":["../../../../src/foundations/oauth/controllers/oauth.registration.controller.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAE/C,OAAO,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAC9D,OAAO,EAAE,kBAAkB,EAAE,MAAM,kCAAkC,CAAC;AAEtE;;;;;;;;;GASG;AACH,qBAEa,2BAA2B;IAEpC,OAAO,CAAC,QAAQ,CAAC,aAAa;IAC9B,OAAO,CAAC,QAAQ,CAAC,aAAa;gBADb,aAAa,EAAE,kBAAkB,EACjC,aAAa,EAAE,aAAa;IAG/C;;;;;;;OAOG;IAGG,QAAQ,CAAS,GAAG,EAAE,gBAAgB,GAAG,OAAO,CAAC;QACrD,SAAS,EAAE,MAAM,CAAC;QAClB,aAAa,CAAC,EAAE,MAAM,CAAC;QACvB,mBAAmB,EAAE,MAAM,CAAC;QAC5B,aAAa,EAAE,MAAM,EAAE,CAAC;QACxB,WAAW,EAAE,MAAM,EAAE,CAAC;QACtB,0BAA0B,EAAE,MAAM,CAAC;QACnC,WAAW,EAAE,MAAM,CAAC;KACrB,CAAC;CA0BH"}
@@ -14,6 +14,7 @@ var __param = (this && this.__param) || function (paramIndex, decorator) {
14
14
  Object.defineProperty(exports, "__esModule", { value: true });
15
15
  exports.OAuthRegistrationController = void 0;
16
16
  const common_1 = require("@nestjs/common");
17
+ const oauth_error_filter_1 = require("../filters/oauth.error.filter");
17
18
  const config_1 = require("@nestjs/config");
18
19
  const oauth_register_dto_1 = require("../dtos/oauth.register.dto");
19
20
  const oauth_client_service_1 = require("../services/oauth.client.service");
@@ -75,6 +76,7 @@ __decorate([
75
76
  ], OAuthRegistrationController.prototype, "register", null);
76
77
  exports.OAuthRegistrationController = OAuthRegistrationController = __decorate([
77
78
  (0, common_1.Controller)("oauth"),
79
+ (0, common_1.UseFilters)(oauth_error_filter_1.OAuthErrorFilter),
78
80
  __metadata("design:paramtypes", [oauth_client_service_1.OAuthClientService,
79
81
  config_1.ConfigService])
80
82
  ], OAuthRegistrationController);
@@ -1 +1 @@
1
- {"version":3,"file":"oauth.registration.controller.js","sourceRoot":"","sources":["../../../../src/foundations/oauth/controllers/oauth.registration.controller.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,2CAAiF;AACjF,2CAA+C;AAE/C,mEAA8D;AAC9D,2EAAsE;AAEtE;;;;;;;;;GASG;AAEI,IAAM,2BAA2B,GAAjC,MAAM,2BAA2B;IACtC,YACmB,aAAiC,EACjC,aAA4B;QAD5B,kBAAa,GAAb,aAAa,CAAoB;QACjC,kBAAa,GAAb,aAAa,CAAe;IAC5C,CAAC;IAEJ;;;;;;;OAOG;IAGG,AAAN,KAAK,CAAC,QAAQ,CAAS,GAAqB;QAS1C,MAAM,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAuB,OAAO,CAAC,CAAC;QACpE,IAAI,CAAC,KAAK,EAAE,OAAO,EAAE,CAAC;YACpB,MAAM,IAAI,sBAAa,CAAC,sBAAsB,EAAE,GAAG,CAAC,CAAC;QACvD,CAAC;QAED,MAAM,cAAc,GAAG,GAAG,CAAC,0BAA0B,KAAK,SAAS,IAAI,GAAG,CAAC,0BAA0B,KAAK,MAAM,CAAC;QAEjH,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC;YACrE,IAAI,EAAE,GAAG,CAAC,WAAW,IAAI,+BAA+B;YACxD,YAAY,EAAE,GAAG,CAAC,aAAa;YAC/B,aAAa,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;YACzE,iBAAiB,EAAE,GAAG,CAAC,WAAW,IAAI,CAAC,oBAAoB,EAAE,eAAe,CAAC;YAC7E,cAAc;SACf,CAAC,CAAC;QAEH,OAAO;YACL,SAAS,EAAE,MAAM,CAAC,QAAQ;YAC1B,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACxD,mBAAmB,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC;YAClD,aAAa,EAAE,MAAM,CAAC,YAAY;YAClC,WAAW,EAAE,MAAM,CAAC,iBAAiB;YACrC,0BAA0B,EAAE,cAAc,CAAC,CAAC,CAAC,GAAG,CAAC,0BAA2B,CAAC,CAAC,CAAC,MAAM;YACrF,WAAW,EAAE,MAAM,CAAC,IAAI;SACzB,CAAC;IACJ,CAAC;CACF,CAAA;AAlDY,kEAA2B;AAgBhC;IAFL,IAAA,aAAI,EAAC,UAAU,CAAC;IAChB,IAAA,iBAAQ,EAAC,GAAG,CAAC;IACE,WAAA,IAAA,aAAI,GAAE,CAAA;;qCAAM,qCAAgB;;2DAiC3C;sCAjDU,2BAA2B;IADvC,IAAA,mBAAU,EAAC,OAAO,CAAC;qCAGgB,yCAAkB;QAClB,sBAAa;GAHpC,2BAA2B,CAkDvC"}
1
+ {"version":3,"file":"oauth.registration.controller.js","sourceRoot":"","sources":["../../../../src/foundations/oauth/controllers/oauth.registration.controller.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,2CAA6F;AAC7F,sEAAiE;AACjE,2CAA+C;AAE/C,mEAA8D;AAC9D,2EAAsE;AAEtE;;;;;;;;;GASG;AAGI,IAAM,2BAA2B,GAAjC,MAAM,2BAA2B;IACtC,YACmB,aAAiC,EACjC,aAA4B;QAD5B,kBAAa,GAAb,aAAa,CAAoB;QACjC,kBAAa,GAAb,aAAa,CAAe;IAC5C,CAAC;IAEJ;;;;;;;OAOG;IAGG,AAAN,KAAK,CAAC,QAAQ,CAAS,GAAqB;QAS1C,MAAM,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAuB,OAAO,CAAC,CAAC;QACpE,IAAI,CAAC,KAAK,EAAE,OAAO,EAAE,CAAC;YACpB,MAAM,IAAI,sBAAa,CAAC,sBAAsB,EAAE,GAAG,CAAC,CAAC;QACvD,CAAC;QAED,MAAM,cAAc,GAAG,GAAG,CAAC,0BAA0B,KAAK,SAAS,IAAI,GAAG,CAAC,0BAA0B,KAAK,MAAM,CAAC;QAEjH,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC;YACrE,IAAI,EAAE,GAAG,CAAC,WAAW,IAAI,+BAA+B;YACxD,YAAY,EAAE,GAAG,CAAC,aAAa;YAC/B,aAAa,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;YACzE,iBAAiB,EAAE,GAAG,CAAC,WAAW,IAAI,CAAC,oBAAoB,EAAE,eAAe,CAAC;YAC7E,cAAc;SACf,CAAC,CAAC;QAEH,OAAO;YACL,SAAS,EAAE,MAAM,CAAC,QAAQ;YAC1B,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACxD,mBAAmB,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC;YAClD,aAAa,EAAE,MAAM,CAAC,YAAY;YAClC,WAAW,EAAE,MAAM,CAAC,iBAAiB;YACrC,0BAA0B,EAAE,cAAc,CAAC,CAAC,CAAC,GAAG,CAAC,0BAA2B,CAAC,CAAC,CAAC,MAAM;YACrF,WAAW,EAAE,MAAM,CAAC,IAAI;SACzB,CAAC;IACJ,CAAC;CACF,CAAA;AAlDY,kEAA2B;AAgBhC;IAFL,IAAA,aAAI,EAAC,UAAU,CAAC;IAChB,IAAA,iBAAQ,EAAC,GAAG,CAAC;IACE,WAAA,IAAA,aAAI,GAAE,CAAA;;qCAAM,qCAAgB;;2DAiC3C;sCAjDU,2BAA2B;IAFvC,IAAA,mBAAU,EAAC,OAAO,CAAC;IACnB,IAAA,mBAAU,EAAC,qCAAgB,CAAC;qCAGO,yCAAkB;QAClB,sBAAa;GAHpC,2BAA2B,CAkDvC"}
@@ -1 +1 @@
1
- {"version":3,"file":"oauth.token.controller.d.ts","sourceRoot":"","sources":["../../../../src/foundations/oauth/controllers/oauth.token.controller.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AACtF,OAAO,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AACjE,OAAO,EAAE,yBAAyB,EAAE,0BAA0B,EAAE,MAAM,8BAA8B,CAAC;AAErG;;;;;GAKG;AACH,qBACa,oBAAoB;IACnB,OAAO,CAAC,QAAQ,CAAC,YAAY;gBAAZ,YAAY,EAAE,YAAY;IAEvD;;;;;;;;;OASG;IAKG,KAAK,CAAS,IAAI,EAAE,oBAAoB,GAAG,OAAO,CAAC,qBAAqB,CAAC;IAkC/E;;;;;;;OAOG;IAGG,MAAM,CAAS,IAAI,EAAE,qBAAqB,GAAG,OAAO,CAAC,IAAI,CAAC;IAShE;;;;;;;OAOG;IAGG,UAAU,CAAS,IAAI,EAAE,yBAAyB,GAAG,OAAO,CAAC,0BAA0B,CAAC;CAQ/F"}
1
+ {"version":3,"file":"oauth.token.controller.d.ts","sourceRoot":"","sources":["../../../../src/foundations/oauth/controllers/oauth.token.controller.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AACtF,OAAO,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AACjE,OAAO,EAAE,yBAAyB,EAAE,0BAA0B,EAAE,MAAM,8BAA8B,CAAC;AAErG;;;;;GAKG;AACH,qBAEa,oBAAoB;IACnB,OAAO,CAAC,QAAQ,CAAC,YAAY;gBAAZ,YAAY,EAAE,YAAY;IAEvD;;;;;;;;;OASG;IAKG,KAAK,CAAS,IAAI,EAAE,oBAAoB,GAAG,OAAO,CAAC,qBAAqB,CAAC;IAkC/E;;;;;;;OAOG;IAGG,MAAM,CAAS,IAAI,EAAE,qBAAqB,GAAG,OAAO,CAAC,IAAI,CAAC;IAShE;;;;;;;OAOG;IAGG,UAAU,CAAS,IAAI,EAAE,yBAAyB,GAAG,OAAO,CAAC,0BAA0B,CAAC;CAQ/F"}