@carlonicora/nestjs-neo4jsonapi 2.1.0 → 2.3.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 (144) hide show
  1. package/dist/agents/graph/graph.module.d.ts.map +1 -1
  2. package/dist/agents/graph/graph.module.js +3 -0
  3. package/dist/agents/graph/graph.module.js.map +1 -1
  4. package/dist/agents/graph/interfaces/graph.catalog.interface.d.ts +24 -0
  5. package/dist/agents/graph/interfaces/graph.catalog.interface.d.ts.map +1 -1
  6. package/dist/agents/graph/services/graph.catalog.service.d.ts +9 -0
  7. package/dist/agents/graph/services/graph.catalog.service.d.ts.map +1 -1
  8. package/dist/agents/graph/services/graph.catalog.service.js +61 -1
  9. package/dist/agents/graph/services/graph.catalog.service.js.map +1 -1
  10. package/dist/agents/graph/services/graph.search.service.d.ts +16 -1
  11. package/dist/agents/graph/services/graph.search.service.d.ts.map +1 -1
  12. package/dist/agents/graph/services/graph.search.service.js +51 -4
  13. package/dist/agents/graph/services/graph.search.service.js.map +1 -1
  14. package/dist/agents/graph/services/humanize-tool.d.ts +17 -2
  15. package/dist/agents/graph/services/humanize-tool.d.ts.map +1 -1
  16. package/dist/agents/graph/services/humanize-tool.js +71 -6
  17. package/dist/agents/graph/services/humanize-tool.js.map +1 -1
  18. package/dist/agents/graph/services/materialise-bridge.d.ts +6 -0
  19. package/dist/agents/graph/services/materialise-bridge.d.ts.map +1 -1
  20. package/dist/agents/graph/services/materialise-bridge.js +17 -1
  21. package/dist/agents/graph/services/materialise-bridge.js.map +1 -1
  22. package/dist/agents/graph/services/scope.guard.d.ts +43 -0
  23. package/dist/agents/graph/services/scope.guard.d.ts.map +1 -0
  24. package/dist/agents/graph/services/scope.guard.js +91 -0
  25. package/dist/agents/graph/services/scope.guard.js.map +1 -0
  26. package/dist/agents/graph/tools/read-entity.tool.d.ts +9 -1
  27. package/dist/agents/graph/tools/read-entity.tool.d.ts.map +1 -1
  28. package/dist/agents/graph/tools/read-entity.tool.js +30 -5
  29. package/dist/agents/graph/tools/read-entity.tool.js.map +1 -1
  30. package/dist/agents/graph/tools/resolve-entity.tool.d.ts.map +1 -1
  31. package/dist/agents/graph/tools/resolve-entity.tool.js +8 -1
  32. package/dist/agents/graph/tools/resolve-entity.tool.js.map +1 -1
  33. package/dist/agents/graph/tools/search-entities.tool.d.ts +9 -1
  34. package/dist/agents/graph/tools/search-entities.tool.d.ts.map +1 -1
  35. package/dist/agents/graph/tools/search-entities.tool.js +37 -8
  36. package/dist/agents/graph/tools/search-entities.tool.js.map +1 -1
  37. package/dist/agents/graph/tools/tool.factory.d.ts +4 -0
  38. package/dist/agents/graph/tools/tool.factory.d.ts.map +1 -1
  39. package/dist/agents/graph/tools/tool.factory.js.map +1 -1
  40. package/dist/agents/graph/tools/traverse.tool.d.ts +9 -1
  41. package/dist/agents/graph/tools/traverse.tool.d.ts.map +1 -1
  42. package/dist/agents/graph/tools/traverse.tool.js +21 -5
  43. package/dist/agents/graph/tools/traverse.tool.js.map +1 -1
  44. package/dist/agents/operator/contexts/operator.context.d.ts +4 -0
  45. package/dist/agents/operator/contexts/operator.context.d.ts.map +1 -1
  46. package/dist/agents/operator/contexts/operator.context.js +4 -0
  47. package/dist/agents/operator/contexts/operator.context.js.map +1 -1
  48. package/dist/agents/operator/operator.module.d.ts.map +1 -1
  49. package/dist/agents/operator/operator.module.js +4 -0
  50. package/dist/agents/operator/operator.module.js.map +1 -1
  51. package/dist/agents/operator/services/operator.service.d.ts +15 -0
  52. package/dist/agents/operator/services/operator.service.d.ts.map +1 -1
  53. package/dist/agents/operator/services/operator.service.js +23 -5
  54. package/dist/agents/operator/services/operator.service.js.map +1 -1
  55. package/dist/agents/operator/tools/entity-write.tools.d.ts +124 -0
  56. package/dist/agents/operator/tools/entity-write.tools.d.ts.map +1 -0
  57. package/dist/agents/operator/tools/entity-write.tools.js +471 -0
  58. package/dist/agents/operator/tools/entity-write.tools.js.map +1 -0
  59. package/dist/agents/operator/tools/operator.tool.registry.d.ts +5 -1
  60. package/dist/agents/operator/tools/operator.tool.registry.d.ts.map +1 -1
  61. package/dist/agents/operator/tools/operator.tool.registry.js +19 -2
  62. package/dist/agents/operator/tools/operator.tool.registry.js.map +1 -1
  63. package/dist/agents/operator/tools/search-documents.tool.d.ts +16 -1
  64. package/dist/agents/operator/tools/search-documents.tool.d.ts.map +1 -1
  65. package/dist/agents/operator/tools/search-documents.tool.js +59 -3
  66. package/dist/agents/operator/tools/search-documents.tool.js.map +1 -1
  67. package/dist/agents/prompts/index.d.ts +1 -0
  68. package/dist/agents/prompts/index.d.ts.map +1 -1
  69. package/dist/agents/prompts/index.js +7 -1
  70. package/dist/agents/prompts/index.js.map +1 -1
  71. package/dist/agents/responder/contexts/responder.context.d.ts +19 -0
  72. package/dist/agents/responder/contexts/responder.context.d.ts.map +1 -1
  73. package/dist/agents/responder/contexts/responder.context.js +6 -0
  74. package/dist/agents/responder/contexts/responder.context.js.map +1 -1
  75. package/dist/agents/responder/factories/responder.context.factory.d.ts +4 -0
  76. package/dist/agents/responder/factories/responder.context.factory.d.ts.map +1 -1
  77. package/dist/agents/responder/factories/responder.context.factory.js +2 -0
  78. package/dist/agents/responder/factories/responder.context.factory.js.map +1 -1
  79. package/dist/agents/responder/nodes/graph.node.service.d.ts.map +1 -1
  80. package/dist/agents/responder/nodes/graph.node.service.js +18 -2
  81. package/dist/agents/responder/nodes/graph.node.service.js.map +1 -1
  82. package/dist/agents/responder/nodes/planner.node.service.d.ts +1 -1
  83. package/dist/agents/responder/nodes/planner.node.service.d.ts.map +1 -1
  84. package/dist/agents/responder/nodes/planner.node.service.js +5 -0
  85. package/dist/agents/responder/nodes/planner.node.service.js.map +1 -1
  86. package/dist/agents/responder/nodes/responder.answer.node.service.d.ts +33 -1
  87. package/dist/agents/responder/nodes/responder.answer.node.service.d.ts.map +1 -1
  88. package/dist/agents/responder/nodes/responder.answer.node.service.js +69 -27
  89. package/dist/agents/responder/nodes/responder.answer.node.service.js.map +1 -1
  90. package/dist/agents/responder/services/responder.service.d.ts +7 -0
  91. package/dist/agents/responder/services/responder.service.d.ts.map +1 -1
  92. package/dist/agents/responder/services/responder.service.js +3 -0
  93. package/dist/agents/responder/services/responder.service.js.map +1 -1
  94. package/dist/common/interfaces/entity.schema.interface.d.ts +16 -0
  95. package/dist/common/interfaces/entity.schema.interface.d.ts.map +1 -1
  96. package/dist/common/interfaces/index.d.ts +1 -0
  97. package/dist/common/interfaces/index.d.ts.map +1 -1
  98. package/dist/common/interfaces/index.js +1 -0
  99. package/dist/common/interfaces/index.js.map +1 -1
  100. package/dist/common/interfaces/seed.context.interface.d.ts +62 -0
  101. package/dist/common/interfaces/seed.context.interface.d.ts.map +1 -0
  102. package/dist/common/interfaces/seed.context.interface.js +20 -0
  103. package/dist/common/interfaces/seed.context.interface.js.map +1 -0
  104. package/dist/config/interfaces/config.prompts.interface.d.ts +12 -0
  105. package/dist/config/interfaces/config.prompts.interface.d.ts.map +1 -1
  106. package/dist/core/blocknote/services/blocknote.service.d.ts +23 -14
  107. package/dist/core/blocknote/services/blocknote.service.d.ts.map +1 -1
  108. package/dist/core/blocknote/services/blocknote.service.js +48 -32
  109. package/dist/core/blocknote/services/blocknote.service.js.map +1 -1
  110. package/dist/core/llm/services/llm.service.d.ts.map +1 -1
  111. package/dist/core/llm/services/llm.service.js +34 -2
  112. package/dist/core/llm/services/llm.service.js.map +1 -1
  113. package/dist/core/llm/services/tool-error-feedback.d.ts +40 -0
  114. package/dist/core/llm/services/tool-error-feedback.d.ts.map +1 -0
  115. package/dist/core/llm/services/tool-error-feedback.js +131 -0
  116. package/dist/core/llm/services/tool-error-feedback.js.map +1 -0
  117. package/dist/foundations/assistant/assistant.module.d.ts.map +1 -1
  118. package/dist/foundations/assistant/assistant.module.js +7 -1
  119. package/dist/foundations/assistant/assistant.module.js.map +1 -1
  120. package/dist/foundations/assistant/controllers/assistant.controller.d.ts +13 -1
  121. package/dist/foundations/assistant/controllers/assistant.controller.d.ts.map +1 -1
  122. package/dist/foundations/assistant/controllers/assistant.controller.js +37 -3
  123. package/dist/foundations/assistant/controllers/assistant.controller.js.map +1 -1
  124. package/dist/foundations/assistant/dtos/assistant-append.dto.d.ts +6 -0
  125. package/dist/foundations/assistant/dtos/assistant-append.dto.d.ts.map +1 -1
  126. package/dist/foundations/assistant/dtos/assistant-append.dto.js +1 -1
  127. package/dist/foundations/assistant/dtos/assistant-append.dto.js.map +1 -1
  128. package/dist/foundations/assistant/dtos/assistant-post.dto.d.ts +29 -0
  129. package/dist/foundations/assistant/dtos/assistant-post.dto.d.ts.map +1 -1
  130. package/dist/foundations/assistant/dtos/assistant-post.dto.js +47 -2
  131. package/dist/foundations/assistant/dtos/assistant-post.dto.js.map +1 -1
  132. package/dist/foundations/assistant/repositories/assistant.repository.d.ts +22 -0
  133. package/dist/foundations/assistant/repositories/assistant.repository.d.ts.map +1 -1
  134. package/dist/foundations/assistant/repositories/assistant.repository.js +28 -0
  135. package/dist/foundations/assistant/repositories/assistant.repository.js.map +1 -1
  136. package/dist/foundations/assistant/services/assistant-mention.extractor.d.ts +36 -0
  137. package/dist/foundations/assistant/services/assistant-mention.extractor.d.ts.map +1 -0
  138. package/dist/foundations/assistant/services/assistant-mention.extractor.js +99 -0
  139. package/dist/foundations/assistant/services/assistant-mention.extractor.js.map +1 -0
  140. package/dist/foundations/assistant/services/assistant.service.d.ts +93 -2
  141. package/dist/foundations/assistant/services/assistant.service.d.ts.map +1 -1
  142. package/dist/foundations/assistant/services/assistant.service.js +388 -60
  143. package/dist/foundations/assistant/services/assistant.service.js.map +1 -1
  144. package/package.json +1 -1
@@ -0,0 +1,99 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ var AssistantMentionExtractor_1;
12
+ Object.defineProperty(exports, "__esModule", { value: true });
13
+ exports.AssistantMentionExtractor = void 0;
14
+ const common_1 = require("@nestjs/common");
15
+ const graph_catalog_service_1 = require("../../../agents/graph/services/graph.catalog.service");
16
+ const scope_guard_1 = require("../../../agents/graph/services/scope.guard");
17
+ const entity_service_registry_1 = require("../../../common/registries/entity.service.registry");
18
+ /**
19
+ * Turns a BlockNote document into the entity references a user message pins.
20
+ *
21
+ * A mention arrives from the browser, so it is INPUT, not a trusted pointer:
22
+ * validate() re-checks catalog membership, scope and existence before any of
23
+ * it reaches the LLM or becomes a REFERENCES edge.
24
+ */
25
+ let AssistantMentionExtractor = AssistantMentionExtractor_1 = class AssistantMentionExtractor {
26
+ constructor(catalog, scopeGuard, entityServices) {
27
+ this.catalog = catalog;
28
+ this.scopeGuard = scopeGuard;
29
+ this.entityServices = entityServices;
30
+ this.logger = new common_1.Logger(AssistantMentionExtractor_1.name);
31
+ }
32
+ /** Walks a BlockNote document for inline nodes of type "mention". Never throws. */
33
+ extract(blocks) {
34
+ const out = [];
35
+ const seen = new Set();
36
+ const walk = (node) => {
37
+ if (!node || typeof node !== "object")
38
+ return;
39
+ if (Array.isArray(node)) {
40
+ node.forEach(walk);
41
+ return;
42
+ }
43
+ if (node.type === "mention") {
44
+ const id = node.props?.id;
45
+ const type = node.props?.entityType;
46
+ if (typeof id === "string" && typeof type === "string") {
47
+ const key = `${type}/${id}`;
48
+ if (!seen.has(key)) {
49
+ seen.add(key);
50
+ out.push({ type, id, alias: String(node.props?.alias ?? "") });
51
+ }
52
+ }
53
+ return;
54
+ }
55
+ walk(node.content);
56
+ walk(node.children);
57
+ };
58
+ try {
59
+ walk(blocks);
60
+ }
61
+ catch (err) {
62
+ this.logger.warn(`extract: malformed document — ${err instanceof Error ? err.message : String(err)}`);
63
+ return [];
64
+ }
65
+ return out;
66
+ }
67
+ /**
68
+ * Drops mentions that are not in the catalog for these modules, are outside
69
+ * the run's scope, or no longer resolve to a record.
70
+ */
71
+ async validate(params) {
72
+ const kept = [];
73
+ for (const mention of params.mentions) {
74
+ if (!this.catalog.getEntityDetail(mention.type, params.ctx.userModuleIds)) {
75
+ this.logger.warn(`validate: dropping mention of uncatalogued type "${mention.type}".`);
76
+ continue;
77
+ }
78
+ if (!(await this.scopeGuard.isInScope({ type: mention.type, id: mention.id, ctx: params.ctx }))) {
79
+ this.logger.warn(`validate: dropping out-of-scope mention ${mention.type}/${mention.id}.`);
80
+ continue;
81
+ }
82
+ const service = this.entityServices.get(mention.type);
83
+ if (!service || !(await service.findRecordById({ id: mention.id }))) {
84
+ this.logger.warn(`validate: dropping unreadable mention ${mention.type}/${mention.id}.`);
85
+ continue;
86
+ }
87
+ kept.push(mention);
88
+ }
89
+ return kept;
90
+ }
91
+ };
92
+ exports.AssistantMentionExtractor = AssistantMentionExtractor;
93
+ exports.AssistantMentionExtractor = AssistantMentionExtractor = AssistantMentionExtractor_1 = __decorate([
94
+ (0, common_1.Injectable)(),
95
+ __metadata("design:paramtypes", [graph_catalog_service_1.GraphCatalogService,
96
+ scope_guard_1.ScopeGuard,
97
+ entity_service_registry_1.EntityServiceRegistry])
98
+ ], AssistantMentionExtractor);
99
+ //# sourceMappingURL=assistant-mention.extractor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"assistant-mention.extractor.js","sourceRoot":"","sources":["../../../../src/foundations/assistant/services/assistant-mention.extractor.ts"],"names":[],"mappings":"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"}
@@ -3,10 +3,14 @@ import { ClsService } from "nestjs-cls";
3
3
  import { OperatorService } from "../../../agents/operator/services/operator.service";
4
4
  import { ResponderService } from "../../../agents/responder/services/responder.service";
5
5
  import { GraphCatalogService } from "../../../agents/graph/services/graph.catalog.service";
6
+ import { ScopeGuard } from "../../../agents/graph/services/scope.guard";
6
7
  import { UserModulesRepository } from "../../../agents/graph/repositories/user-modules.repository";
7
8
  import type { ToolCallRecord } from "../../../agents/graph/tools/tool.factory";
9
+ import { AssistantSeedContextProvider } from "../../../common/interfaces/seed.context.interface";
8
10
  import { EntityServiceRegistry } from "../../../common/registries/entity.service.registry";
9
11
  import { BaseConfigInterface } from "../../../config/interfaces/base.config.interface";
12
+ import { BlockNoteService } from "../../../core/blocknote/services/blocknote.service";
13
+ import { JsonApiDataInterface } from "../../../core/jsonapi/interfaces/jsonapi.data.interface";
10
14
  import { JsonApiService } from "../../../core/jsonapi/services/jsonapi.service";
11
15
  import { AbstractService } from "../../../core/neo4j/abstracts/abstract.service";
12
16
  import { WebSocketService } from "../../../core/websocket/services/websocket.service";
@@ -18,6 +22,7 @@ import { AssistantMessageRepository } from "../../assistant-message/repositories
18
22
  import { AssistantMessageService } from "../../assistant-message/services/assistant-message.service";
19
23
  import { Assistant, AssistantDescriptor } from "../entities/assistant";
20
24
  import { AssistantRepository } from "../repositories/assistant.repository";
25
+ import { AssistantMentionExtractor } from "./assistant-mention.extractor";
21
26
  /**
22
27
  * Maximum number of prior messages (turns) passed to the LLM on each turn.
23
28
  * Keeps prompt size and cost bounded for long conversations.
@@ -50,6 +55,10 @@ export declare class AssistantService extends AbstractService<Assistant, typeof
50
55
  private readonly assistantActionRepo;
51
56
  private readonly webSocketService;
52
57
  private readonly configService;
58
+ private readonly mentions;
59
+ private readonly blockNote;
60
+ private readonly scopeGuard;
61
+ private readonly seedContextProviders?;
53
62
  protected readonly descriptor: import("../../..").EntityDescriptor<Assistant, {
54
63
  owner: {
55
64
  model: import("../../..").DataMeta;
@@ -84,7 +93,7 @@ export declare class AssistantService extends AbstractService<Assistant, typeof
84
93
  };
85
94
  }>;
86
95
  private readonly assistantLogger;
87
- constructor(jsonApiService: JsonApiService, assistantRepository: AssistantRepository, clsService: ClsService, userModuleIdsRepository: UserModulesRepository, responder: ResponderService, assistantMessages: AssistantMessageService, assistantMessageRepo: AssistantMessageRepository, graphCatalog: GraphCatalogService, entityServices: EntityServiceRegistry, operator: OperatorService, assistantActions: AssistantActionService, assistantActionRepo: AssistantActionRepository, webSocketService: WebSocketService, configService: ConfigService<BaseConfigInterface>);
96
+ constructor(jsonApiService: JsonApiService, assistantRepository: AssistantRepository, clsService: ClsService, userModuleIdsRepository: UserModulesRepository, responder: ResponderService, assistantMessages: AssistantMessageService, assistantMessageRepo: AssistantMessageRepository, graphCatalog: GraphCatalogService, entityServices: EntityServiceRegistry, operator: OperatorService, assistantActions: AssistantActionService, assistantActionRepo: AssistantActionRepository, webSocketService: WebSocketService, configService: ConfigService<BaseConfigInterface>, mentions: AssistantMentionExtractor, blockNote: BlockNoteService, scopeGuard: ScopeGuard, seedContextProviders?: AssistantSeedContextProvider[]);
88
97
  createWithFirstMessage(params: {
89
98
  companyId: string;
90
99
  userId: string;
@@ -92,6 +101,10 @@ export declare class AssistantService extends AbstractService<Assistant, typeof
92
101
  title?: string;
93
102
  howToMode?: boolean;
94
103
  limitToHowToId?: string;
104
+ boundContent?: {
105
+ type: string;
106
+ id: string;
107
+ };
95
108
  }): Promise<{
96
109
  assistant: Assistant;
97
110
  userMessage: AssistantMessage;
@@ -124,6 +137,10 @@ export declare class AssistantService extends AbstractService<Assistant, typeof
124
137
  title?: string;
125
138
  howToMode?: boolean;
126
139
  limitToHowToId?: string;
140
+ boundContent?: {
141
+ type: string;
142
+ id: string;
143
+ };
127
144
  }): Promise<{
128
145
  assistant: Assistant;
129
146
  userMessage: AssistantMessage;
@@ -163,9 +180,83 @@ export declare class AssistantService extends AbstractService<Assistant, typeof
163
180
  assistantMessage: AssistantMessage;
164
181
  action: AssistantAction;
165
182
  }>;
183
+ /**
184
+ * List the threads bound to one resource (e.g. every assistant thread for a
185
+ * campaign). Delegates to the inherited `findByRelated` over the `content`
186
+ * relationship — the BOUND_TO traversal already exists, so there is no new
187
+ * Cypher here and company/owner RBAC still comes from the repository.
188
+ */
189
+ findByBoundContent(params: {
190
+ boundType: string;
191
+ boundId: string;
192
+ query: any;
193
+ }): Promise<JsonApiDataInterface>;
194
+ /**
195
+ * Build the run's UserContext once per turn. `scopeId`/`scopeType` are set
196
+ * only when the thread is bound to a catalogued scope ROOT (a descriptor
197
+ * whose compiled scope chain is empty, e.g. a campaign). A thread bound to
198
+ * something further down a chain still gets content scope, but not a
199
+ * transitive run scope — the guard has no root to confine the run to.
200
+ */
201
+ private buildTurnContext;
202
+ /**
203
+ * Collects seed-context blocks from the app-registered providers for one
204
+ * turn. Help-mode turns are never seeded. A provider returning null
205
+ * contributes nothing; a provider that throws is logged and skipped — the
206
+ * turn must run (unseeded) no matter what a provider does.
207
+ */
208
+ private collectSeedContexts;
209
+ /**
210
+ * Write the `BOUND_TO` edge that scopes a thread to a resource.
211
+ *
212
+ * Deliberately NOT part of the `createFromDTO` call above: `BOUND_TO` is
213
+ * polymorphic, so its descriptor entry carries `assistantMeta` as a
214
+ * placeholder model. The generic create path reads `rel.model.labelName` to
215
+ * validate the target and to build the edge, so a Campaign id sent that way
216
+ * is looked up as `(:Assistant { id: … })` and 400s with "One or more
217
+ * related nodes do not exist."
218
+ *
219
+ * The label is resolved from the model registry — the same registry the
220
+ * descriptor's own polymorphic discriminator uses on the read path — so an
221
+ * unregistered type fails loudly here rather than writing a dangling edge.
222
+ */
223
+ private attachBoundContent;
224
+ private toContentScope;
225
+ private toBoundContent;
226
+ /**
227
+ * A BlockNote-backed field arrives as a JSON string in its own string
228
+ * attribute — the convention every host-app entity already uses (e.g.
229
+ * `Npc.description`: `JSON.stringify` out, `JSON.parse` back). Detect that
230
+ * shape without trusting it: a plain-text message must never be mistaken for
231
+ * a document, so this requires an array whose first entry is an object with
232
+ * a string `type`, which is the minimal shape of a BlockNote block.
233
+ */
234
+ private parseBlockNoteDocument;
235
+ /**
236
+ * Derive from a user message: the markdown to persist (mention links kept, so
237
+ * the thread can re-render them), a plain-text form for the thread title, and
238
+ * the validated entity mentions to pin into the turn's focus context.
239
+ *
240
+ * Plain-text input passes straight through, so apps without a rich composer
241
+ * are unaffected.
242
+ */
243
+ private resolveUserTurnInput;
244
+ /**
245
+ * Materialise REFERENCES edges from the USER message to the entities that
246
+ * message named. The reference metadata is fixed: a mention is an explicit,
247
+ * maximally relevant pointer, not a ranked retrieval hit.
248
+ */
249
+ private linkPinnedMentions;
250
+ /**
251
+ * Drop records that fall outside the run's scope root, grouping by JSON:API
252
+ * type so `ScopeGuard` can build one predicate per type. A no-op for an
253
+ * unscoped run — `ScopeGuard.filter` returns everything in that case, so the
254
+ * short-circuit only avoids a pointless round trip.
255
+ */
256
+ private filterByScope;
166
257
  /**
167
258
  * Resolve the content scope from the assistant's BOUND_TO relationship if
168
- * loaded. Mirrors the inline logic in `runAgentTurn`.
259
+ * loaded.
169
260
  */
170
261
  private resolveContentScope;
171
262
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"assistant.service.d.ts","sourceRoot":"","sources":["../../../../src/foundations/assistant/services/assistant.service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"assistant.service.d.ts","sourceRoot":"","sources":["../../../../src/foundations/assistant/services/assistant.service.ts"],"names":[],"mappings":"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"}