@carlonicora/nestjs-neo4jsonapi 8.10.2 → 8.11.1

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 (87) hide show
  1. package/dist/agents/community.detector/services/community.detector.service.d.ts +33 -1
  2. package/dist/agents/community.detector/services/community.detector.service.d.ts.map +1 -1
  3. package/dist/agents/community.detector/services/community.detector.service.js +126 -36
  4. package/dist/agents/community.detector/services/community.detector.service.js.map +1 -1
  5. package/dist/agents/community.summariser/cron/community.summariser.cron.d.ts +20 -3
  6. package/dist/agents/community.summariser/cron/community.summariser.cron.d.ts.map +1 -1
  7. package/dist/agents/community.summariser/cron/community.summariser.cron.js +35 -4
  8. package/dist/agents/community.summariser/cron/community.summariser.cron.js.map +1 -1
  9. package/dist/agents/community.summariser/helpers/community-scope-filter.d.ts +19 -0
  10. package/dist/agents/community.summariser/helpers/community-scope-filter.d.ts.map +1 -0
  11. package/dist/agents/community.summariser/helpers/community-scope-filter.js +27 -0
  12. package/dist/agents/community.summariser/helpers/community-scope-filter.js.map +1 -0
  13. package/dist/agents/community.summariser/processors/community.summariser.processor.d.ts +11 -2
  14. package/dist/agents/community.summariser/processors/community.summariser.processor.d.ts.map +1 -1
  15. package/dist/agents/community.summariser/processors/community.summariser.processor.js +24 -2
  16. package/dist/agents/community.summariser/processors/community.summariser.processor.js.map +1 -1
  17. package/dist/common/enums/ai.status.d.ts +7 -1
  18. package/dist/common/enums/ai.status.d.ts.map +1 -1
  19. package/dist/common/enums/ai.status.js +6 -0
  20. package/dist/common/enums/ai.status.js.map +1 -1
  21. package/dist/common/tokens.d.ts +12 -0
  22. package/dist/common/tokens.d.ts.map +1 -1
  23. package/dist/common/tokens.js +3 -1
  24. package/dist/common/tokens.js.map +1 -1
  25. package/dist/foundations/assistant/index.d.ts +1 -0
  26. package/dist/foundations/assistant/index.d.ts.map +1 -1
  27. package/dist/foundations/assistant/index.js +3 -1
  28. package/dist/foundations/assistant/index.js.map +1 -1
  29. package/dist/foundations/assistant/services/assistant.service.d.ts +13 -0
  30. package/dist/foundations/assistant/services/assistant.service.d.ts.map +1 -1
  31. package/dist/foundations/assistant/services/assistant.service.js +12 -0
  32. package/dist/foundations/assistant/services/assistant.service.js.map +1 -1
  33. package/dist/foundations/chunk/chunk.module.d.ts.map +1 -1
  34. package/dist/foundations/chunk/chunk.module.js +3 -1
  35. package/dist/foundations/chunk/chunk.module.js.map +1 -1
  36. package/dist/foundations/chunk/index.d.ts +1 -0
  37. package/dist/foundations/chunk/index.d.ts.map +1 -1
  38. package/dist/foundations/chunk/index.js +3 -1
  39. package/dist/foundations/chunk/index.js.map +1 -1
  40. package/dist/foundations/chunk/processors/chunk.processor.d.ts.map +1 -1
  41. package/dist/foundations/chunk/processors/chunk.processor.js +1 -0
  42. package/dist/foundations/chunk/processors/chunk.processor.js.map +1 -1
  43. package/dist/foundations/chunk/repositories/chunk-status.repository.d.ts +44 -0
  44. package/dist/foundations/chunk/repositories/chunk-status.repository.d.ts.map +1 -0
  45. package/dist/foundations/chunk/repositories/chunk-status.repository.js +76 -0
  46. package/dist/foundations/chunk/repositories/chunk-status.repository.js.map +1 -0
  47. package/dist/foundations/chunk/services/chunk.service.d.ts +32 -0
  48. package/dist/foundations/chunk/services/chunk.service.d.ts.map +1 -1
  49. package/dist/foundations/chunk/services/chunk.service.js +40 -2
  50. package/dist/foundations/chunk/services/chunk.service.js.map +1 -1
  51. package/dist/foundations/community/repositories/community.repository.d.ts +21 -0
  52. package/dist/foundations/community/repositories/community.repository.d.ts.map +1 -1
  53. package/dist/foundations/community/repositories/community.repository.js +51 -0
  54. package/dist/foundations/community/repositories/community.repository.js.map +1 -1
  55. package/dist/foundations/stripe-invoice/repositories/stripe-invoice.repository.d.ts +8 -3
  56. package/dist/foundations/stripe-invoice/repositories/stripe-invoice.repository.d.ts.map +1 -1
  57. package/dist/foundations/stripe-invoice/repositories/stripe-invoice.repository.js +35 -29
  58. package/dist/foundations/stripe-invoice/repositories/stripe-invoice.repository.js.map +1 -1
  59. package/dist/foundations/stripe-price/entities/stripe-price.map.d.ts.map +1 -1
  60. package/dist/foundations/stripe-price/entities/stripe-price.map.js +2 -1
  61. package/dist/foundations/stripe-price/entities/stripe-price.map.js.map +1 -1
  62. package/dist/foundations/stripe-product/repositories/stripe-product.repository.d.ts +2 -1
  63. package/dist/foundations/stripe-product/repositories/stripe-product.repository.d.ts.map +1 -1
  64. package/dist/foundations/stripe-product/repositories/stripe-product.repository.js +4 -1
  65. package/dist/foundations/stripe-product/repositories/stripe-product.repository.js.map +1 -1
  66. package/dist/foundations/stripe-subscription/services/feature-sync.service.d.ts +17 -0
  67. package/dist/foundations/stripe-subscription/services/feature-sync.service.d.ts.map +1 -1
  68. package/dist/foundations/stripe-subscription/services/feature-sync.service.js +95 -17
  69. package/dist/foundations/stripe-subscription/services/feature-sync.service.js.map +1 -1
  70. package/dist/foundations/stripe-subscription/services/stripe-subscription-admin.service.d.ts +3 -18
  71. package/dist/foundations/stripe-subscription/services/stripe-subscription-admin.service.d.ts.map +1 -1
  72. package/dist/foundations/stripe-subscription/services/stripe-subscription-admin.service.js +20 -5
  73. package/dist/foundations/stripe-subscription/services/stripe-subscription-admin.service.js.map +1 -1
  74. package/dist/foundations/stripe-subscription/services/stripe-subscription-api.service.d.ts +6 -1
  75. package/dist/foundations/stripe-subscription/services/stripe-subscription-api.service.d.ts.map +1 -1
  76. package/dist/foundations/stripe-subscription/services/stripe-subscription-api.service.js +10 -3
  77. package/dist/foundations/stripe-subscription/services/stripe-subscription-api.service.js.map +1 -1
  78. package/dist/foundations/stripe-subscription/services/subscription-payment-confirmation.d.ts +1 -1
  79. package/dist/foundations/stripe-subscription/services/subscription-payment-confirmation.js +1 -1
  80. package/dist/foundations/stripe-webhook/controllers/stripe-webhook.controller.d.ts.map +1 -1
  81. package/dist/foundations/stripe-webhook/controllers/stripe-webhook.controller.js +2 -0
  82. package/dist/foundations/stripe-webhook/controllers/stripe-webhook.controller.js.map +1 -1
  83. package/dist/foundations/stripe-webhook/processors/stripe-webhook.processor.d.ts +1 -0
  84. package/dist/foundations/stripe-webhook/processors/stripe-webhook.processor.d.ts.map +1 -1
  85. package/dist/foundations/stripe-webhook/processors/stripe-webhook.processor.js +31 -9
  86. package/dist/foundations/stripe-webhook/processors/stripe-webhook.processor.js.map +1 -1
  87. package/package.json +1 -1
@@ -1,4 +1,7 @@
1
+ import { ClsService } from "nestjs-cls";
1
2
  import { ScopePredicateSource } from "../../../common/repositories/scope-predicate.source";
3
+ import { CommunityScopeFilterInterface } from "../../../common/tokens";
4
+ import { AgentScope } from "../../../common/types/agent.scope";
2
5
  import { AppLoggingService } from "../../../core/logging/services/logging.service";
3
6
  import { Neo4jService } from "../../../core/neo4j/services/neo4j.service";
4
7
  import { CommunityRepository } from "../../../foundations/community/repositories/community.repository";
@@ -7,16 +10,40 @@ export declare class CommunityDetectorService {
7
10
  private readonly neo4j;
8
11
  private readonly logger;
9
12
  private readonly communityRepository;
13
+ private readonly cls;
10
14
  private readonly catalog?;
11
15
  private readonly scopePredicates?;
16
+ /** Unbound = every scope root and company is groupable (today's behaviour). */
17
+ private readonly scopeFilter?;
12
18
  private readonly louvainResolutions;
13
19
  private readonly minCommunitySize;
14
- constructor(neo4j: Neo4jService, logger: AppLoggingService, communityRepository: CommunityRepository, catalog?: GraphCatalogService, scopePredicates?: ScopePredicateSource);
20
+ constructor(neo4j: Neo4jService, logger: AppLoggingService, communityRepository: CommunityRepository, cls: ClsService, catalog?: GraphCatalogService, scopePredicates?: ScopePredicateSource,
21
+ /** Unbound = every scope root and company is groupable (today's behaviour). */
22
+ scopeFilter?: CommunityScopeFilterInterface);
15
23
  /**
16
24
  * Detect communities for all KeyConcepts belonging to the current company
17
25
  * Creates hierarchical communities at multiple resolution levels
18
26
  */
19
27
  detectCommunities(): Promise<void>;
28
+ /**
29
+ * Delete one scope root's communities and re-detect only that partition.
30
+ * Communities of every other root, and unpartitioned ones, are untouched.
31
+ * Does not consult the scope filter: the caller decides the root is groupable.
32
+ */
33
+ detectCommunitiesForScope(params: {
34
+ scope: AgentScope;
35
+ }): Promise<void>;
36
+ /**
37
+ * Detect the communities of one partition (a scope root, or the whole
38
+ * company when `undefined`) and build their hierarchy. Returns how many
39
+ * communities were created.
40
+ */
41
+ private detectPartition;
42
+ /**
43
+ * Scope filter for the company-wide partition (no scope root). Unbound
44
+ * filter → groupable.
45
+ */
46
+ private isCompanyGroupable;
20
47
  /**
21
48
  * Count KeyConcepts for the current company
22
49
  */
@@ -40,6 +67,9 @@ export declare class CommunityDetectorService {
40
67
  * Root types come from the catalog — an entity whose compiled scope chain is
41
68
  * empty IS a root. Without a catalog (a consumer that never loads the graph
42
69
  * layer) there are no roots, and detection stays company-wide.
70
+ *
71
+ * Roots the scope filter rejects are left out; `rejected` counts them so the
72
+ * caller can tell "no roots" from "no groupable roots".
43
73
  */
44
74
  private listScopeRoots;
45
75
  /**
@@ -82,6 +112,8 @@ export declare class CommunityDetectorService {
82
112
  * Detect or assign communities based on current state.
83
113
  * - If no communities exist: run full Louvain detection
84
114
  * - If communities exist: incrementally assign orphan KeyConcepts
115
+ * With a scope filter bound, content whose scope root the filter rejects (or, with
116
+ * no scope root, whose company it rejects) is left out entirely.
85
117
  */
86
118
  detectAndAssignCommunities(contentId: string, label: string): Promise<void>;
87
119
  }
@@ -1 +1 @@
1
- {"version":3,"file":"community.detector.service.d.ts","sourceRoot":"","sources":["../../../../src/agents/community.detector/services/community.detector.service.ts"],"names":[],"mappings":"AACA,OAAO,EAA0B,oBAAoB,EAAE,MAAM,qDAAqD,CAAC;AAEnH,OAAO,EAAE,iBAAiB,EAAE,MAAM,gDAAgD,CAAC;AACnF,OAAO,EAAE,YAAY,EAAE,MAAM,4CAA4C,CAAC;AAC1E,OAAO,EAAE,mBAAmB,EAAE,MAAM,kEAAkE,CAAC;AACvG,OAAO,EAAE,mBAAmB,EAAE,MAAM,4CAA4C,CAAC;AAUjF,qBACa,wBAAwB;IAOjC,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,mBAAmB;IACxB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC;IACO,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAC;IAR/E,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAS;IAC5C,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAK;gBAGnB,KAAK,EAAE,YAAY,EACnB,MAAM,EAAE,iBAAiB,EACzB,mBAAmB,EAAE,mBAAmB,EAC5B,OAAO,CAAC,EAAE,mBAAmB,EACG,eAAe,CAAC,EAAE,oBAAoB;IAGrG;;;OAGG;IACG,iBAAiB,IAAI,OAAO,CAAC,IAAI,CAAC;IAmFxC;;OAEG;YACW,0BAA0B;IAqBxC;;OAEG;YACW,oBAAoB;IAgBlC;;OAEG;YACW,wBAAwB;IAyBtC;;;OAGG;YACW,YAAY;IA2D1B;;;;;;OAMG;YACW,cAAc;IAuB5B;;;;;;;OAOG;YACW,0BAA0B;IA8BxC;;OAEG;YACW,UAAU;IA4BxB;;OAEG;YACW,oBAAoB;IAgDlC;;;;OAIG;YACW,cAAc;IA0D5B;;OAEG;YACW,SAAS;IAWvB;;OAEG;IACG,4BAA4B,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAavE;;;OAGG;IACG,8BAA8B,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAgDrF;;;;OAIG;IACG,0BAA0B,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAUlF"}
1
+ {"version":3,"file":"community.detector.service.d.ts","sourceRoot":"","sources":["../../../../src/agents/community.detector/services/community.detector.service.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACxC,OAAO,EAA0B,oBAAoB,EAAE,MAAM,qDAAqD,CAAC;AACnH,OAAO,EAA0B,6BAA6B,EAAE,MAAM,wBAAwB,CAAC;AAC/F,OAAO,EAAE,UAAU,EAAE,MAAM,mCAAmC,CAAC;AAC/D,OAAO,EAAE,iBAAiB,EAAE,MAAM,gDAAgD,CAAC;AACnF,OAAO,EAAE,YAAY,EAAE,MAAM,4CAA4C,CAAC;AAC1E,OAAO,EAAE,mBAAmB,EAAE,MAAM,kEAAkE,CAAC;AACvG,OAAO,EAAE,mBAAmB,EAAE,MAAM,4CAA4C,CAAC;AAUjF,qBACa,wBAAwB;IAOjC,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,mBAAmB;IACpC,OAAO,CAAC,QAAQ,CAAC,GAAG;IACR,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC;IACO,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAC;IAC7E,+EAA+E;IACnC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC;IAX3E,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAS;IAC5C,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAK;gBAGnB,KAAK,EAAE,YAAY,EACnB,MAAM,EAAE,iBAAiB,EACzB,mBAAmB,EAAE,mBAAmB,EACxC,GAAG,EAAE,UAAU,EACH,OAAO,CAAC,EAAE,mBAAmB,EACG,eAAe,CAAC,EAAE,oBAAoB;IACnG,+EAA+E;IAClB,WAAW,CAAC,EAAE,6BAA6B;IAG1G;;;OAGG;IACG,iBAAiB,IAAI,OAAO,CAAC,IAAI,CAAC;IAiExC;;;;OAIG;IACG,yBAAyB,CAAC,MAAM,EAAE;QAAE,KAAK,EAAE,UAAU,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IA2B7E;;;;OAIG;YACW,eAAe;IAuC7B;;;OAGG;YACW,kBAAkB;IAKhC;;OAEG;YACW,0BAA0B;IAqBxC;;OAEG;YACW,oBAAoB;IAgBlC;;OAEG;YACW,wBAAwB;IAyBtC;;;OAGG;YACW,YAAY;IA2D1B;;;;;;;;;OASG;YACW,cAAc;IA8B5B;;;;;;;OAOG;YACW,0BAA0B;IA8BxC;;OAEG;YACW,UAAU;IA4BxB;;OAEG;YACW,oBAAoB;IAgDlC;;;;OAIG;YACW,cAAc;IA0D5B;;OAEG;YACW,SAAS;IAWvB;;OAEG;IACG,4BAA4B,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAavE;;;OAGG;IACG,8BAA8B,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAgDrF;;;;;;OAMG;IACG,0BAA0B,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CA2BlF"}
@@ -14,19 +14,23 @@ var __param = (this && this.__param) || function (paramIndex, decorator) {
14
14
  Object.defineProperty(exports, "__esModule", { value: true });
15
15
  exports.CommunityDetectorService = void 0;
16
16
  const common_1 = require("@nestjs/common");
17
+ const nestjs_cls_1 = require("nestjs-cls");
17
18
  const scope_predicate_source_1 = require("../../../common/repositories/scope-predicate.source");
19
+ const tokens_1 = require("../../../common/tokens");
18
20
  const logging_service_1 = require("../../../core/logging/services/logging.service");
19
21
  const neo4j_service_1 = require("../../../core/neo4j/services/neo4j.service");
20
22
  const community_repository_1 = require("../../../foundations/community/repositories/community.repository");
21
23
  const graph_catalog_service_1 = require("../../graph/services/graph.catalog.service");
22
24
  const scope_pattern_1 = require("../../graph/services/scope.pattern");
23
25
  let CommunityDetectorService = class CommunityDetectorService {
24
- constructor(neo4j, logger, communityRepository, catalog, scopePredicates) {
26
+ constructor(neo4j, logger, communityRepository, cls, catalog, scopePredicates, scopeFilter) {
25
27
  this.neo4j = neo4j;
26
28
  this.logger = logger;
27
29
  this.communityRepository = communityRepository;
30
+ this.cls = cls;
28
31
  this.catalog = catalog;
29
32
  this.scopePredicates = scopePredicates;
33
+ this.scopeFilter = scopeFilter;
30
34
  // Note: OpenGDS doesn't support resolution parameter, so we only run single level
31
35
  // Future: could use Leiden with gamma, or post-process for hierarchy
32
36
  this.louvainResolutions = [1.0];
@@ -39,9 +43,14 @@ let CommunityDetectorService = class CommunityDetectorService {
39
43
  async detectCommunities() {
40
44
  this.logger.log("Starting community detection", "CommunityDetectorService");
41
45
  try {
42
- // Delete existing communities for this company before regenerating
43
- await this.communityRepository.deleteAllCommunities();
44
- this.logger.debug("Deleted existing communities", "CommunityDetectorService");
46
+ // Unbound scope filter: delete every community of this company before
47
+ // regenerating, as always. Bound: each accepted partition is deleted just
48
+ // before it is rebuilt, so a root the gate rejects keeps its communities
49
+ // (switching a scope root off never deletes graph data).
50
+ if (!this.scopeFilter) {
51
+ await this.communityRepository.deleteAllCommunities();
52
+ this.logger.debug("Deleted existing communities", "CommunityDetectorService");
53
+ }
45
54
  // Check if GDS is available
46
55
  const gdsAvailable = await this.checkGdsAvailability();
47
56
  if (!gdsAvailable) {
@@ -60,37 +69,26 @@ let CommunityDetectorService = class CommunityDetectorService {
60
69
  // run confined to either of them — the partition is what makes community
61
70
  // retrieval usable in a scoped run at all. Apps with no scope roots get
62
71
  // a single company-wide partition, exactly as before.
63
- const partitions = await this.listScopeRoots();
72
+ const { roots: partitions, rejected } = await this.listScopeRoots();
64
73
  this.logger.log(partitions.length
65
74
  ? `Detecting communities across ${partitions.length} scope root(s)`
66
75
  : `No scope roots catalogued — detecting communities company-wide`, "CommunityDetectorService");
76
+ // The company-wide fallback is for apps with no scope roots. When the
77
+ // scope filter rejected every root it must not run: it would group the
78
+ // content of the rejected roots together.
79
+ if (!partitions.length && (rejected > 0 || !(await this.isCompanyGroupable()))) {
80
+ this.logger.log("No scope root groupable for community detection", "CommunityDetectorService");
81
+ return;
82
+ }
67
83
  let total = 0;
68
84
  for (const partition of partitions.length ? partitions : [undefined]) {
69
- // GDS refuses a projection whose node query matches nothing
70
- // ("Node-Query returned no nodes"), and an empty partition is the NORM
71
- // once detection runs per scope root — most roots hold no ingested
72
- // content at all. Checked here rather than caught downstream so an
73
- // empty partition is a skip, not a failed company.
74
- if (partition) {
75
- const partitionKeyConcepts = await this.countKeyConceptsForCompany(partition);
76
- if (partitionKeyConcepts === 0) {
77
- this.logger.debug(`No KeyConcepts under ${partition.type}:${partition.id} — skipping its partition`, "CommunityDetectorService");
78
- continue;
79
- }
85
+ if (this.scopeFilter) {
86
+ if (partition)
87
+ await this.communityRepository.deleteCommunitiesForScope({ scope: partition });
88
+ else
89
+ await this.communityRepository.deleteAllCommunities();
80
90
  }
81
- const detected = [];
82
- for (let levelIndex = 0; levelIndex < this.louvainResolutions.length; levelIndex++) {
83
- const resolution = this.louvainResolutions[levelIndex];
84
- const level = levelIndex;
85
- const levelCommunities = await this.detectCommunitiesAtLevel(resolution, level, partition);
86
- detected.push(...levelCommunities);
87
- this.logger.debug(`Detected ${levelCommunities.length} communities at level ${level}` +
88
- (partition ? ` for ${partition.type}:${partition.id}` : ""), "CommunityDetectorService");
89
- }
90
- // Hierarchy is built WITHIN a partition: a parent community must never
91
- // adopt a child detected under a different scope root.
92
- await this.buildHierarchy(detected);
93
- total += detected.length;
91
+ total += await this.detectPartition(partition);
94
92
  }
95
93
  this.logger.log(`Community detection completed: ${total} total communities`, "CommunityDetectorService");
96
94
  }
@@ -99,6 +97,70 @@ let CommunityDetectorService = class CommunityDetectorService {
99
97
  throw error;
100
98
  }
101
99
  }
100
+ /**
101
+ * Delete one scope root's communities and re-detect only that partition.
102
+ * Communities of every other root, and unpartitioned ones, are untouched.
103
+ * Does not consult the scope filter: the caller decides the root is groupable.
104
+ */
105
+ async detectCommunitiesForScope(params) {
106
+ const partition = params.scope;
107
+ this.logger.log(`Starting community detection for ${partition.type}:${partition.id}`, "CommunityDetectorService");
108
+ try {
109
+ await this.communityRepository.deleteCommunitiesForScope({ scope: partition });
110
+ const gdsAvailable = await this.checkGdsAvailability();
111
+ if (!gdsAvailable) {
112
+ this.logger.warn("Neo4j GDS not available, skipping community detection", "CommunityDetectorService");
113
+ return;
114
+ }
115
+ const total = await this.detectPartition(partition);
116
+ this.logger.log(`Community detection completed for ${partition.type}:${partition.id}: ${total} communities`, "CommunityDetectorService");
117
+ }
118
+ catch (error) {
119
+ this.logger.error(`Community detection failed for ${partition.type}:${partition.id}: ${error.message}`, "CommunityDetectorService");
120
+ throw error;
121
+ }
122
+ }
123
+ /**
124
+ * Detect the communities of one partition (a scope root, or the whole
125
+ * company when `undefined`) and build their hierarchy. Returns how many
126
+ * communities were created.
127
+ */
128
+ async detectPartition(partition) {
129
+ // GDS refuses a projection whose node query matches nothing
130
+ // ("Node-Query returned no nodes"), and an empty partition is the NORM
131
+ // once detection runs per scope root — most roots hold no ingested
132
+ // content at all. Checked here rather than caught downstream so an
133
+ // empty partition is a skip, not a failed company.
134
+ if (partition) {
135
+ const partitionKeyConcepts = await this.countKeyConceptsForCompany(partition);
136
+ if (partitionKeyConcepts === 0) {
137
+ this.logger.debug(`No KeyConcepts under ${partition.type}:${partition.id} — skipping its partition`, "CommunityDetectorService");
138
+ return 0;
139
+ }
140
+ }
141
+ const detected = [];
142
+ for (let levelIndex = 0; levelIndex < this.louvainResolutions.length; levelIndex++) {
143
+ const resolution = this.louvainResolutions[levelIndex];
144
+ const level = levelIndex;
145
+ const levelCommunities = await this.detectCommunitiesAtLevel(resolution, level, partition);
146
+ detected.push(...levelCommunities);
147
+ this.logger.debug(`Detected ${levelCommunities.length} communities at level ${level}` +
148
+ (partition ? ` for ${partition.type}:${partition.id}` : ""), "CommunityDetectorService");
149
+ }
150
+ // Hierarchy is built WITHIN a partition: a parent community must never
151
+ // adopt a child detected under a different scope root.
152
+ await this.buildHierarchy(detected);
153
+ return detected.length;
154
+ }
155
+ /**
156
+ * Scope filter for the company-wide partition (no scope root). Unbound
157
+ * filter → groupable.
158
+ */
159
+ async isCompanyGroupable() {
160
+ if (!this.scopeFilter)
161
+ return true;
162
+ return this.scopeFilter.canGroup({ companyId: this.cls.get("companyId") });
163
+ }
102
164
  /**
103
165
  * Count KeyConcepts for the current company
104
166
  */
@@ -215,14 +277,19 @@ let CommunityDetectorService = class CommunityDetectorService {
215
277
  * Root types come from the catalog — an entity whose compiled scope chain is
216
278
  * empty IS a root. Without a catalog (a consumer that never loads the graph
217
279
  * layer) there are no roots, and detection stays company-wide.
280
+ *
281
+ * Roots the scope filter rejects are left out; `rejected` counts them so the
282
+ * caller can tell "no roots" from "no groupable roots".
218
283
  */
219
284
  async listScopeRoots() {
220
285
  if (!this.catalog || !this.scopePredicates)
221
- return [];
286
+ return { roots: [], rejected: 0 };
222
287
  const rootTypes = this.catalog
223
288
  .getAllEntities()
224
289
  .filter((entity) => entity.scope?.path.length === 0 && entity.scope.rootType === entity.type);
290
+ const companyId = this.cls.get("companyId");
225
291
  const roots = [];
292
+ let rejected = 0;
226
293
  for (const rootType of rootTypes) {
227
294
  const query = this.neo4j.initQuery();
228
295
  query.query += `
@@ -232,11 +299,16 @@ let CommunityDetectorService = class CommunityDetectorService {
232
299
  const result = await this.neo4j.read(query.query, query.queryParams);
233
300
  for (const record of result.records) {
234
301
  const id = record.get("id");
235
- if (typeof id === "string")
236
- roots.push({ id, type: rootType.type, label: rootType.labelName });
302
+ if (typeof id !== "string")
303
+ continue;
304
+ if (this.scopeFilter && !(await this.scopeFilter.canGroup({ companyId, scope: { id, type: rootType.type } }))) {
305
+ rejected++;
306
+ continue;
307
+ }
308
+ roots.push({ id, type: rootType.type, label: rootType.labelName });
237
309
  }
238
310
  }
239
- return roots;
311
+ return { roots, rejected };
240
312
  }
241
313
  /**
242
314
  * The scope root a single content node sits under — the inverse of
@@ -452,8 +524,23 @@ let CommunityDetectorService = class CommunityDetectorService {
452
524
  * Detect or assign communities based on current state.
453
525
  * - If no communities exist: run full Louvain detection
454
526
  * - If communities exist: incrementally assign orphan KeyConcepts
527
+ * With a scope filter bound, content whose scope root the filter rejects (or, with
528
+ * no scope root, whose company it rejects) is left out entirely.
455
529
  */
456
530
  async detectAndAssignCommunities(contentId, label) {
531
+ if (this.scopeFilter) {
532
+ const scopeRoot = await this.resolveScopeRootForContent(contentId, label);
533
+ const groupable = scopeRoot
534
+ ? await this.scopeFilter.canGroup({
535
+ companyId: this.cls.get("companyId"),
536
+ scope: { id: scopeRoot.id, type: scopeRoot.type },
537
+ })
538
+ : await this.isCompanyGroupable();
539
+ if (!groupable) {
540
+ this.logger.debug(`Scope filter rejects ${label}:${contentId} — skipping community detection`, "CommunityDetectorService");
541
+ return;
542
+ }
543
+ }
457
544
  const levelCounts = await this.communityRepository.countByLevel();
458
545
  const totalCommunities = levelCounts.reduce((sum, lc) => sum + lc.count, 0);
459
546
  if (totalCommunities === 0) {
@@ -467,12 +554,15 @@ let CommunityDetectorService = class CommunityDetectorService {
467
554
  exports.CommunityDetectorService = CommunityDetectorService;
468
555
  exports.CommunityDetectorService = CommunityDetectorService = __decorate([
469
556
  (0, common_1.Injectable)(),
470
- __param(3, (0, common_1.Optional)()),
471
557
  __param(4, (0, common_1.Optional)()),
472
- __param(4, (0, common_1.Inject)(scope_predicate_source_1.SCOPE_PREDICATE_SOURCE)),
558
+ __param(5, (0, common_1.Optional)()),
559
+ __param(5, (0, common_1.Inject)(scope_predicate_source_1.SCOPE_PREDICATE_SOURCE)),
560
+ __param(6, (0, common_1.Optional)()),
561
+ __param(6, (0, common_1.Inject)(tokens_1.COMMUNITY_SCOPE_FILTER)),
473
562
  __metadata("design:paramtypes", [neo4j_service_1.Neo4jService,
474
563
  logging_service_1.AppLoggingService,
475
564
  community_repository_1.CommunityRepository,
476
- graph_catalog_service_1.GraphCatalogService, Object])
565
+ nestjs_cls_1.ClsService,
566
+ graph_catalog_service_1.GraphCatalogService, Object, Object])
477
567
  ], CommunityDetectorService);
478
568
  //# sourceMappingURL=community.detector.service.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"community.detector.service.js","sourceRoot":"","sources":["../../../../src/agents/community.detector/services/community.detector.service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"community.detector.service.js","sourceRoot":"","sources":["../../../../src/agents/community.detector/services/community.detector.service.ts"],"names":[],"mappings":"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"}
@@ -1,16 +1,33 @@
1
1
  import { Queue } from "bullmq";
2
- import { CreditValidatorInterface } from "../../../common/tokens";
2
+ import { ClsService } from "nestjs-cls";
3
+ import { CommunityScopeFilterInterface, CreditValidatorInterface } from "../../../common/tokens";
3
4
  import { AppLoggingService } from "../../../core/logging/services/logging.service";
4
5
  import { CommunityRepository } from "../../../foundations/community/repositories/community.repository";
6
+ import { GraphCatalogService } from "../../graph/services/graph.catalog.service";
5
7
  export declare class CommunitySummariserCron {
6
8
  private readonly communityRepository;
7
9
  private readonly summariserQueue;
8
10
  private readonly logger;
11
+ private readonly cls;
9
12
  /** See ChunkProcessor: seam, not CompanyService — CompanyModule would mount `companies/*` here. */
10
13
  private readonly creditValidator?;
11
- constructor(communityRepository: CommunityRepository, summariserQueue: Queue, logger: AppLoggingService,
14
+ /** Unbound = every stale community is summarised (today's behaviour). */
15
+ private readonly scopeFilter?;
16
+ /** Scope-root types, as CommunityDetectorService.listScopeRoots reads them. */
17
+ private readonly catalog?;
18
+ constructor(communityRepository: CommunityRepository, summariserQueue: Queue, logger: AppLoggingService, cls: ClsService,
12
19
  /** See ChunkProcessor: seam, not CompanyService — CompanyModule would mount `companies/*` here. */
13
- creditValidator?: CreditValidatorInterface);
20
+ creditValidator?: CreditValidatorInterface,
21
+ /** Unbound = every stale community is summarised (today's behaviour). */
22
+ scopeFilter?: CommunityScopeFilterInterface,
23
+ /** Scope-root types, as CommunityDetectorService.listScopeRoots reads them. */
24
+ catalog?: GraphCatalogService);
14
25
  handleStaleCommunities(): Promise<void>;
26
+ /**
27
+ * Scope filter for one stale community (see isCommunityGroupable), read
28
+ * inside a CLS context seeded with the community's company. Unbound filter →
29
+ * groupable.
30
+ */
31
+ private isGroupable;
15
32
  }
16
33
  //# sourceMappingURL=community.summariser.cron.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"community.summariser.cron.d.ts","sourceRoot":"","sources":["../../../../src/agents/community.summariser/cron/community.summariser.cron.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAC;AAE/B,OAAO,EAAoB,wBAAwB,EAAE,MAAM,wBAAwB,CAAC;AAEpF,OAAO,EAAE,iBAAiB,EAAE,MAAM,gDAAgD,CAAC;AACnF,OAAO,EAAE,mBAAmB,EAAE,MAAM,kEAAkE,CAAC;AAEvG,qBACa,uBAAuB;IAEhC,OAAO,CAAC,QAAQ,CAAC,mBAAmB;IAEpC,OAAO,CAAC,QAAQ,CAAC,eAAe;IAChC,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,mGAAmG;IAGnG,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAC;gBAPhB,mBAAmB,EAAE,mBAAmB,EAExC,eAAe,EAAE,KAAK,EACtB,MAAM,EAAE,iBAAiB;IAC1C,mGAAmG;IAGlF,eAAe,CAAC,EAAE,wBAAwB;IAIvD,sBAAsB,IAAI,OAAO,CAAC,IAAI,CAAC;CAyB9C"}
1
+ {"version":3,"file":"community.summariser.cron.d.ts","sourceRoot":"","sources":["../../../../src/agents/community.summariser/cron/community.summariser.cron.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAC;AAC/B,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAExC,OAAO,EAEL,6BAA6B,EAE7B,wBAAwB,EACzB,MAAM,wBAAwB,CAAC;AAEhC,OAAO,EAAE,iBAAiB,EAAE,MAAM,gDAAgD,CAAC;AACnF,OAAO,EAAE,mBAAmB,EAAE,MAAM,kEAAkE,CAAC;AACvG,OAAO,EAAE,mBAAmB,EAAE,MAAM,4CAA4C,CAAC;AAGjF,qBACa,uBAAuB;IAEhC,OAAO,CAAC,QAAQ,CAAC,mBAAmB;IAEpC,OAAO,CAAC,QAAQ,CAAC,eAAe;IAChC,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,GAAG;IACpB,mGAAmG;IAGnG,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAC;IACjC,yEAAyE;IAGzE,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC;IAC7B,+EAA+E;IACnE,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC;gBAdpB,mBAAmB,EAAE,mBAAmB,EAExC,eAAe,EAAE,KAAK,EACtB,MAAM,EAAE,iBAAiB,EACzB,GAAG,EAAE,UAAU;IAChC,mGAAmG;IAGlF,eAAe,CAAC,EAAE,wBAAwB;IAC3D,yEAAyE;IAGxD,WAAW,CAAC,EAAE,6BAA6B;IAC5D,+EAA+E;IAClD,OAAO,CAAC,EAAE,mBAAmB;IAItD,sBAAsB,IAAI,OAAO,CAAC,IAAI,CAAC;IA4B7C;;;;OAIG;YACW,WAAW;CAc1B"}
@@ -17,17 +17,23 @@ const bullmq_1 = require("@nestjs/bullmq");
17
17
  const common_1 = require("@nestjs/common");
18
18
  const schedule_1 = require("@nestjs/schedule");
19
19
  const bullmq_2 = require("bullmq");
20
+ const nestjs_cls_1 = require("nestjs-cls");
20
21
  const credit_gate_1 = require("../../../common/helpers/credit-gate");
21
22
  const tokens_1 = require("../../../common/tokens");
22
23
  const config_1 = require("../../../config");
23
24
  const logging_service_1 = require("../../../core/logging/services/logging.service");
24
25
  const community_repository_1 = require("../../../foundations/community/repositories/community.repository");
26
+ const graph_catalog_service_1 = require("../../graph/services/graph.catalog.service");
27
+ const community_scope_filter_1 = require("../helpers/community-scope-filter");
25
28
  let CommunitySummariserCron = class CommunitySummariserCron {
26
- constructor(communityRepository, summariserQueue, logger, creditValidator) {
29
+ constructor(communityRepository, summariserQueue, logger, cls, creditValidator, scopeFilter, catalog) {
27
30
  this.communityRepository = communityRepository;
28
31
  this.summariserQueue = summariserQueue;
29
32
  this.logger = logger;
33
+ this.cls = cls;
30
34
  this.creditValidator = creditValidator;
35
+ this.scopeFilter = scopeFilter;
36
+ this.catalog = catalog;
31
37
  }
32
38
  async handleStaleCommunities() {
33
39
  const staleCommunities = await this.communityRepository.findAllStaleCommunities();
@@ -42,6 +48,8 @@ let CommunitySummariserCron = class CommunitySummariserCron {
42
48
  if (!(await (0, credit_gate_1.isAiEnabledVia)(this.creditValidator, { companyId })))
43
49
  continue;
44
50
  try {
51
+ if (!(await this.isGroupable({ communityId, companyId })))
52
+ continue;
45
53
  await this.summariserQueue.add("process-stale", {
46
54
  communityId,
47
55
  companyId,
@@ -52,6 +60,25 @@ let CommunitySummariserCron = class CommunitySummariserCron {
52
60
  }
53
61
  }
54
62
  }
63
+ /**
64
+ * Scope filter for one stale community (see isCommunityGroupable), read
65
+ * inside a CLS context seeded with the community's company. Unbound filter →
66
+ * groupable.
67
+ */
68
+ async isGroupable(params) {
69
+ if (!this.scopeFilter)
70
+ return true;
71
+ return this.cls.run(async () => {
72
+ this.cls.set("companyId", params.companyId);
73
+ return (0, community_scope_filter_1.isCommunityGroupable)({
74
+ filter: this.scopeFilter,
75
+ catalog: this.catalog,
76
+ communityRepository: this.communityRepository,
77
+ communityId: params.communityId,
78
+ companyId: params.companyId,
79
+ });
80
+ });
81
+ }
55
82
  };
56
83
  exports.CommunitySummariserCron = CommunitySummariserCron;
57
84
  __decorate([
@@ -63,10 +90,14 @@ __decorate([
63
90
  exports.CommunitySummariserCron = CommunitySummariserCron = __decorate([
64
91
  (0, common_1.Injectable)(),
65
92
  __param(1, (0, bullmq_1.InjectQueue)(config_1.QueueId.COMMUNITY_SUMMARISER)),
66
- __param(3, (0, common_1.Optional)()),
67
- __param(3, (0, common_1.Inject)(tokens_1.CREDIT_VALIDATOR)),
93
+ __param(4, (0, common_1.Optional)()),
94
+ __param(4, (0, common_1.Inject)(tokens_1.CREDIT_VALIDATOR)),
95
+ __param(5, (0, common_1.Optional)()),
96
+ __param(5, (0, common_1.Inject)(tokens_1.COMMUNITY_SCOPE_FILTER)),
97
+ __param(6, (0, common_1.Optional)()),
68
98
  __metadata("design:paramtypes", [community_repository_1.CommunityRepository,
69
99
  bullmq_2.Queue,
70
- logging_service_1.AppLoggingService, Object])
100
+ logging_service_1.AppLoggingService,
101
+ nestjs_cls_1.ClsService, Object, Object, graph_catalog_service_1.GraphCatalogService])
71
102
  ], CommunitySummariserCron);
72
103
  //# sourceMappingURL=community.summariser.cron.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"community.summariser.cron.js","sourceRoot":"","sources":["../../../../src/agents/community.summariser/cron/community.summariser.cron.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,2CAA6C;AAC7C,2CAA8D;AAC9D,+CAAwD;AACxD,mCAA+B;AAC/B,qEAAqE;AACrE,mDAAoF;AACpF,4CAA0C;AAC1C,oFAAmF;AACnF,2GAAuG;AAGhG,IAAM,uBAAuB,GAA7B,MAAM,uBAAuB;IAClC,YACmB,mBAAwC,EAExC,eAAsB,EACtB,MAAyB,EAIzB,eAA0C;QAP1C,wBAAmB,GAAnB,mBAAmB,CAAqB;QAExC,oBAAe,GAAf,eAAe,CAAO;QACtB,WAAM,GAAN,MAAM,CAAmB;QAIzB,oBAAe,GAAf,eAAe,CAA2B;IAC1D,CAAC;IAGE,AAAN,KAAK,CAAC,sBAAsB;QAC1B,MAAM,gBAAgB,GAAG,MAAM,IAAI,CAAC,mBAAmB,CAAC,uBAAuB,EAAE,CAAC;QAClF,KAAK,MAAM,EAAE,WAAW,EAAE,SAAS,EAAE,IAAI,gBAAgB,EAAE,CAAC;YAC1D,wEAAwE;YACxE,0EAA0E;YAC1E,uEAAuE;YACvE,0DAA0D;YAC1D,0EAA0E;YAC1E,mEAAmE;YACnE,WAAW;YACX,IAAI,CAAC,CAAC,MAAM,IAAA,4BAAc,EAAC,IAAI,CAAC,eAAe,EAAE,EAAE,SAAS,EAAE,CAAC,CAAC;gBAAE,SAAS;YAE3E,IAAI,CAAC;gBACH,MAAM,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,eAAe,EAAE;oBAC9C,WAAW;oBACX,SAAS;iBACV,CAAC,CAAC;YACL,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,IAAI,CAAC,MAAM,CAAC,KAAK,CACf,qCAAqC,WAAW,gBAAgB,SAAS,KAAM,KAAe,CAAC,OAAO,EAAE,EACxG,yBAAyB,CAC1B,CAAC;YACJ,CAAC;QACH,CAAC;IACH,CAAC;CACF,CAAA;AAtCY,0DAAuB;AAa5B;IADL,IAAA,eAAI,EAAC,yBAAc,CAAC,gBAAgB,CAAC;;;;qEAyBrC;kCArCU,uBAAuB;IADnC,IAAA,mBAAU,GAAE;IAIR,WAAA,IAAA,oBAAW,EAAC,gBAAO,CAAC,oBAAoB,CAAC,CAAA;IAIzC,WAAA,IAAA,iBAAQ,GAAE,CAAA;IACV,WAAA,IAAA,eAAM,EAAC,yBAAgB,CAAC,CAAA;qCANa,0CAAmB;QAEvB,cAAK;QACd,mCAAiB;GALjC,uBAAuB,CAsCnC"}
1
+ {"version":3,"file":"community.summariser.cron.js","sourceRoot":"","sources":["../../../../src/agents/community.summariser/cron/community.summariser.cron.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ import { CommunityScopeFilterInterface } from "../../../common/tokens";
2
+ import { CommunityRepository } from "../../../foundations/community/repositories/community.repository";
3
+ import { GraphCatalogService } from "../../graph/services/graph.catalog.service";
4
+ /**
5
+ * Scope filter for summarising one community: its scope root must be
6
+ * groupable, or, with no scope root, its company. Unbound filter → groupable.
7
+ *
8
+ * Root types come from the catalog, as CommunityDetectorService.listScopeRoots
9
+ * reads them. The caller runs inside a CLS context holding the community's
10
+ * company, so the repository read stays company-scoped.
11
+ */
12
+ export declare function isCommunityGroupable(params: {
13
+ filter?: CommunityScopeFilterInterface;
14
+ catalog?: GraphCatalogService;
15
+ communityRepository: CommunityRepository;
16
+ communityId: string;
17
+ companyId: string;
18
+ }): Promise<boolean>;
19
+ //# sourceMappingURL=community-scope-filter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"community-scope-filter.d.ts","sourceRoot":"","sources":["../../../../src/agents/community.summariser/helpers/community-scope-filter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,6BAA6B,EAAE,MAAM,wBAAwB,CAAC;AACvE,OAAO,EAAE,mBAAmB,EAAE,MAAM,kEAAkE,CAAC;AACvG,OAAO,EAAE,mBAAmB,EAAE,MAAM,4CAA4C,CAAC;AAEjF;;;;;;;GAOG;AACH,wBAAsB,oBAAoB,CAAC,MAAM,EAAE;IACjD,MAAM,CAAC,EAAE,6BAA6B,CAAC;IACvC,OAAO,CAAC,EAAE,mBAAmB,CAAC;IAC9B,mBAAmB,EAAE,mBAAmB,CAAC;IACzC,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;CACnB,GAAG,OAAO,CAAC,OAAO,CAAC,CAenB"}
@@ -0,0 +1,27 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.isCommunityGroupable = isCommunityGroupable;
4
+ /**
5
+ * Scope filter for summarising one community: its scope root must be
6
+ * groupable, or, with no scope root, its company. Unbound filter → groupable.
7
+ *
8
+ * Root types come from the catalog, as CommunityDetectorService.listScopeRoots
9
+ * reads them. The caller runs inside a CLS context holding the community's
10
+ * company, so the repository read stays company-scoped.
11
+ */
12
+ async function isCommunityGroupable(params) {
13
+ const { filter } = params;
14
+ if (!filter)
15
+ return true;
16
+ const rootLabels = (params.catalog?.getAllEntities() ?? [])
17
+ .filter((entity) => entity.scope?.path.length === 0 && entity.scope.rootType === entity.type)
18
+ .map((entity) => entity.labelName);
19
+ const scopeRoot = await params.communityRepository.findScopeRootForCommunity({
20
+ communityId: params.communityId,
21
+ rootLabels,
22
+ });
23
+ return scopeRoot
24
+ ? filter.canGroup({ companyId: params.companyId, scope: { id: scopeRoot.id, type: scopeRoot.type } })
25
+ : filter.canGroup({ companyId: params.companyId });
26
+ }
27
+ //# sourceMappingURL=community-scope-filter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"community-scope-filter.js","sourceRoot":"","sources":["../../../../src/agents/community.summariser/helpers/community-scope-filter.ts"],"names":[],"mappings":";;AAYA,oDAqBC;AA7BD;;;;;;;GAOG;AACI,KAAK,UAAU,oBAAoB,CAAC,MAM1C;IACC,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC;IAC1B,IAAI,CAAC,MAAM;QAAE,OAAO,IAAI,CAAC;IAEzB,MAAM,UAAU,GAAG,CAAC,MAAM,CAAC,OAAO,EAAE,cAAc,EAAE,IAAI,EAAE,CAAC;SACxD,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,QAAQ,KAAK,MAAM,CAAC,IAAI,CAAC;SAC5F,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IAErC,MAAM,SAAS,GAAG,MAAM,MAAM,CAAC,mBAAmB,CAAC,yBAAyB,CAAC;QAC3E,WAAW,EAAE,MAAM,CAAC,WAAW;QAC/B,UAAU;KACX,CAAC,CAAC;IACH,OAAO,SAAS;QACd,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,SAAS,EAAE,MAAM,CAAC,SAAS,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,SAAS,CAAC,EAAE,EAAE,IAAI,EAAE,SAAS,CAAC,IAAI,EAAE,EAAE,CAAC;QACrG,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,SAAS,EAAE,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC;AACvD,CAAC"}
@@ -1,10 +1,11 @@
1
1
  import { WorkerHost } from "@nestjs/bullmq";
2
2
  import { Job } from "bullmq";
3
3
  import { ClsService } from "nestjs-cls";
4
- import { CreditValidatorInterface } from "../../../common/tokens";
4
+ import { CommunityScopeFilterInterface, CreditValidatorInterface } from "../../../common/tokens";
5
5
  import { AppLoggingService } from "../../../core/logging/services/logging.service";
6
6
  import { WebSocketService } from "../../../core/websocket/services/websocket.service";
7
7
  import { CommunityRepository } from "../../../foundations/community/repositories/community.repository";
8
+ import { GraphCatalogService } from "../../graph/services/graph.catalog.service";
8
9
  import { CommunitySummariserService } from "../services/community.summariser.service";
9
10
  interface CommunitySummariserJobData {
10
11
  communityId: string;
@@ -18,9 +19,17 @@ export declare class CommunitySummariserProcessor extends WorkerHost {
18
19
  private readonly webSocketService;
19
20
  /** See ChunkProcessor: seam, not CompanyService — CompanyModule would mount `companies/*` here. */
20
21
  private readonly creditValidator?;
22
+ /** Unbound = every queued community is summarised (today's behaviour). */
23
+ private readonly scopeFilter?;
24
+ /** Scope-root types for the scope filter, as the cron reads them. */
25
+ private readonly catalog?;
21
26
  constructor(summariserService: CommunitySummariserService, cls: ClsService, logger: AppLoggingService, communityRepository: CommunityRepository, webSocketService: WebSocketService,
22
27
  /** See ChunkProcessor: seam, not CompanyService — CompanyModule would mount `companies/*` here. */
23
- creditValidator?: CreditValidatorInterface);
28
+ creditValidator?: CreditValidatorInterface,
29
+ /** Unbound = every queued community is summarised (today's behaviour). */
30
+ scopeFilter?: CommunityScopeFilterInterface,
31
+ /** Scope-root types for the scope filter, as the cron reads them. */
32
+ catalog?: GraphCatalogService);
24
33
  onActive(job: Job): void;
25
34
  onError(job: Job): void;
26
35
  onCompleted(job: Job): void;