@carlonicora/nestjs-neo4jsonapi 4.4.0 → 4.6.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.
- package/dist/agents/responder/factories/responder.context.factory.d.ts +2 -1
- package/dist/agents/responder/factories/responder.context.factory.d.ts.map +1 -1
- package/dist/agents/responder/factories/responder.context.factory.js.map +1 -1
- package/dist/agents/responder/services/responder.service.d.ts +16 -1
- package/dist/agents/responder/services/responder.service.d.ts.map +1 -1
- package/dist/agents/responder/services/responder.service.js +14 -2
- package/dist/agents/responder/services/responder.service.js.map +1 -1
- package/dist/bootstrap/app.module.factory.d.ts.map +1 -1
- package/dist/bootstrap/app.module.factory.js +2 -0
- package/dist/bootstrap/app.module.factory.js.map +1 -1
- package/dist/bootstrap/bootstrap.options.d.ts +35 -0
- package/dist/bootstrap/bootstrap.options.d.ts.map +1 -1
- package/dist/common/index.d.ts +1 -0
- package/dist/common/index.d.ts.map +1 -1
- package/dist/common/index.js +4 -0
- package/dist/common/index.js.map +1 -1
- package/dist/common/repositories/handbook.ai-source-query.provider.d.ts +34 -0
- package/dist/common/repositories/handbook.ai-source-query.provider.d.ts.map +1 -0
- package/dist/common/repositories/handbook.ai-source-query.provider.js +58 -0
- package/dist/common/repositories/handbook.ai-source-query.provider.js.map +1 -0
- package/dist/common/repositories/index.d.ts +1 -0
- package/dist/common/repositories/index.d.ts.map +1 -1
- package/dist/common/repositories/index.js +1 -0
- package/dist/common/repositories/index.js.map +1 -1
- package/dist/common/types/data.limits.d.ts +4 -0
- package/dist/common/types/data.limits.d.ts.map +1 -1
- package/dist/common/utils/chunk-content.util.d.ts +28 -0
- package/dist/common/utils/chunk-content.util.d.ts.map +1 -0
- package/dist/common/utils/chunk-content.util.js +32 -0
- package/dist/common/utils/chunk-content.util.js.map +1 -0
- package/dist/config/base.config.d.ts.map +1 -1
- package/dist/config/base.config.js +1 -0
- package/dist/config/base.config.js.map +1 -1
- package/dist/config/enums/queue.id.d.ts +1 -0
- package/dist/config/enums/queue.id.d.ts.map +1 -1
- package/dist/config/enums/queue.id.js +1 -0
- package/dist/config/enums/queue.id.js.map +1 -1
- package/dist/config/interfaces/config.two.factor.interface.d.ts +10 -3
- package/dist/config/interfaces/config.two.factor.interface.d.ts.map +1 -1
- package/dist/core/core.module.d.ts.map +1 -1
- package/dist/core/core.module.js +8 -1
- package/dist/core/core.module.js.map +1 -1
- package/dist/core/llm/services/model.service.d.ts +13 -0
- package/dist/core/llm/services/model.service.d.ts.map +1 -1
- package/dist/core/llm/services/model.service.js +22 -0
- package/dist/core/llm/services/model.service.js.map +1 -1
- package/dist/core/neo4j/abstracts/abstract.service.d.ts.map +1 -1
- package/dist/core/neo4j/abstracts/abstract.service.js +8 -1
- package/dist/core/neo4j/abstracts/abstract.service.js.map +1 -1
- package/dist/foundations/assistant/controllers/assistant.controller.d.ts.map +1 -1
- package/dist/foundations/assistant/controllers/assistant.controller.js +6 -2
- package/dist/foundations/assistant/controllers/assistant.controller.js.map +1 -1
- package/dist/foundations/assistant/dtos/assistant-append.dto.d.ts +2 -0
- package/dist/foundations/assistant/dtos/assistant-append.dto.d.ts.map +1 -1
- package/dist/foundations/assistant/dtos/assistant-append.dto.js +10 -0
- package/dist/foundations/assistant/dtos/assistant-append.dto.js.map +1 -1
- package/dist/foundations/assistant/dtos/assistant-post.dto.d.ts +2 -0
- package/dist/foundations/assistant/dtos/assistant-post.dto.d.ts.map +1 -1
- package/dist/foundations/assistant/dtos/assistant-post.dto.js +10 -0
- package/dist/foundations/assistant/dtos/assistant-post.dto.js.map +1 -1
- package/dist/foundations/assistant/services/assistant.service.d.ts +8 -1
- package/dist/foundations/assistant/services/assistant.service.d.ts.map +1 -1
- package/dist/foundations/assistant/services/assistant.service.js +14 -1
- package/dist/foundations/assistant/services/assistant.service.js.map +1 -1
- package/dist/foundations/foundations.modules.d.ts +6 -0
- package/dist/foundations/foundations.modules.d.ts.map +1 -1
- package/dist/foundations/foundations.modules.js +10 -2
- package/dist/foundations/foundations.modules.js.map +1 -1
- package/dist/foundations/handbook/controllers/handbook-thread.controller.d.ts +61 -0
- package/dist/foundations/handbook/controllers/handbook-thread.controller.d.ts.map +1 -0
- package/dist/foundations/handbook/controllers/handbook-thread.controller.js +170 -0
- package/dist/foundations/handbook/controllers/handbook-thread.controller.js.map +1 -0
- package/dist/foundations/handbook/controllers/handbook.controller.d.ts +29 -0
- package/dist/foundations/handbook/controllers/handbook.controller.d.ts.map +1 -0
- package/dist/foundations/handbook/controllers/handbook.controller.js +123 -0
- package/dist/foundations/handbook/controllers/handbook.controller.js.map +1 -0
- package/dist/foundations/handbook/dtos/handbook-page.dto.d.ts +11 -0
- package/dist/foundations/handbook/dtos/handbook-page.dto.d.ts.map +1 -0
- package/dist/foundations/handbook/dtos/handbook-page.dto.js +45 -0
- package/dist/foundations/handbook/dtos/handbook-page.dto.js.map +1 -0
- package/dist/foundations/handbook/dtos/handbook-thread-message-post.dto.d.ts +24 -0
- package/dist/foundations/handbook/dtos/handbook-thread-message-post.dto.d.ts.map +1 -0
- package/dist/foundations/handbook/dtos/handbook-thread-message-post.dto.js +60 -0
- package/dist/foundations/handbook/dtos/handbook-thread-message-post.dto.js.map +1 -0
- package/dist/foundations/handbook/dtos/handbook-thread-patch.dto.d.ts +19 -0
- package/dist/foundations/handbook/dtos/handbook-thread-patch.dto.d.ts.map +1 -0
- package/dist/foundations/handbook/dtos/handbook-thread-patch.dto.js +59 -0
- package/dist/foundations/handbook/dtos/handbook-thread-patch.dto.js.map +1 -0
- package/dist/foundations/handbook/dtos/handbook-thread-post.dto.d.ts +24 -0
- package/dist/foundations/handbook/dtos/handbook-thread-post.dto.d.ts.map +1 -0
- package/dist/foundations/handbook/dtos/handbook-thread-post.dto.js +60 -0
- package/dist/foundations/handbook/dtos/handbook-thread-post.dto.js.map +1 -0
- package/dist/foundations/handbook/entities/handbook-page.d.ts +25 -0
- package/dist/foundations/handbook/entities/handbook-page.d.ts.map +1 -0
- package/dist/foundations/handbook/entities/handbook-page.js +45 -0
- package/dist/foundations/handbook/entities/handbook-page.js.map +1 -0
- package/dist/foundations/handbook/entities/handbook-page.meta.d.ts +3 -0
- package/dist/foundations/handbook/entities/handbook-page.meta.d.ts.map +1 -0
- package/dist/foundations/handbook/entities/handbook-page.meta.js +10 -0
- package/dist/foundations/handbook/entities/handbook-page.meta.js.map +1 -0
- package/dist/foundations/handbook/entities/handbook-section.d.ts +22 -0
- package/dist/foundations/handbook/entities/handbook-section.d.ts.map +1 -0
- package/dist/foundations/handbook/entities/handbook-section.js +24 -0
- package/dist/foundations/handbook/entities/handbook-section.js.map +1 -0
- package/dist/foundations/handbook/entities/handbook-section.meta.d.ts +3 -0
- package/dist/foundations/handbook/entities/handbook-section.meta.d.ts.map +1 -0
- package/dist/foundations/handbook/entities/handbook-section.meta.js +10 -0
- package/dist/foundations/handbook/entities/handbook-section.meta.js.map +1 -0
- package/dist/foundations/handbook/entities/handbook-thread-message.d.ts +36 -0
- package/dist/foundations/handbook/entities/handbook-thread-message.d.ts.map +1 -0
- package/dist/foundations/handbook/entities/handbook-thread-message.js +28 -0
- package/dist/foundations/handbook/entities/handbook-thread-message.js.map +1 -0
- package/dist/foundations/handbook/entities/handbook-thread-message.meta.d.ts +3 -0
- package/dist/foundations/handbook/entities/handbook-thread-message.meta.d.ts.map +1 -0
- package/dist/foundations/handbook/entities/handbook-thread-message.meta.js +10 -0
- package/dist/foundations/handbook/entities/handbook-thread-message.meta.js.map +1 -0
- package/dist/foundations/handbook/entities/handbook-thread.d.ts +47 -0
- package/dist/foundations/handbook/entities/handbook-thread.d.ts.map +1 -0
- package/dist/foundations/handbook/entities/handbook-thread.js +35 -0
- package/dist/foundations/handbook/entities/handbook-thread.js.map +1 -0
- package/dist/foundations/handbook/entities/handbook-thread.meta.d.ts +3 -0
- package/dist/foundations/handbook/entities/handbook-thread.meta.d.ts.map +1 -0
- package/dist/foundations/handbook/entities/handbook-thread.meta.js +10 -0
- package/dist/foundations/handbook/entities/handbook-thread.meta.js.map +1 -0
- package/dist/foundations/handbook/handbook.module.d.ts +21 -0
- package/dist/foundations/handbook/handbook.module.d.ts.map +1 -0
- package/dist/foundations/handbook/handbook.module.js +135 -0
- package/dist/foundations/handbook/handbook.module.js.map +1 -0
- package/dist/foundations/handbook/index.d.ts +23 -0
- package/dist/foundations/handbook/index.d.ts.map +1 -0
- package/dist/foundations/handbook/index.js +39 -0
- package/dist/foundations/handbook/index.js.map +1 -0
- package/dist/foundations/handbook/interfaces/handbook.config.interface.d.ts +26 -0
- package/dist/foundations/handbook/interfaces/handbook.config.interface.d.ts.map +1 -0
- package/dist/foundations/handbook/interfaces/handbook.config.interface.js +10 -0
- package/dist/foundations/handbook/interfaces/handbook.config.interface.js.map +1 -0
- package/dist/foundations/handbook/processors/handbook.processor.d.ts +22 -0
- package/dist/foundations/handbook/processors/handbook.processor.d.ts.map +1 -0
- package/dist/foundations/handbook/processors/handbook.processor.js +108 -0
- package/dist/foundations/handbook/processors/handbook.processor.js.map +1 -0
- package/dist/foundations/handbook/repositories/handbook-page.repository.d.ts +135 -0
- package/dist/foundations/handbook/repositories/handbook-page.repository.d.ts.map +1 -0
- package/dist/foundations/handbook/repositories/handbook-page.repository.js +245 -0
- package/dist/foundations/handbook/repositories/handbook-page.repository.js.map +1 -0
- package/dist/foundations/handbook/repositories/handbook-section.repository.d.ts +36 -0
- package/dist/foundations/handbook/repositories/handbook-section.repository.d.ts.map +1 -0
- package/dist/foundations/handbook/repositories/handbook-section.repository.js +91 -0
- package/dist/foundations/handbook/repositories/handbook-section.repository.js.map +1 -0
- package/dist/foundations/handbook/repositories/handbook-thread-message.repository.d.ts +36 -0
- package/dist/foundations/handbook/repositories/handbook-thread-message.repository.d.ts.map +1 -0
- package/dist/foundations/handbook/repositories/handbook-thread-message.repository.js +63 -0
- package/dist/foundations/handbook/repositories/handbook-thread-message.repository.js.map +1 -0
- package/dist/foundations/handbook/repositories/handbook-thread.repository.d.ts +63 -0
- package/dist/foundations/handbook/repositories/handbook-thread.repository.d.ts.map +1 -0
- package/dist/foundations/handbook/repositories/handbook-thread.repository.js +86 -0
- package/dist/foundations/handbook/repositories/handbook-thread.repository.js.map +1 -0
- package/dist/foundations/handbook/services/handbook-ingest.service.d.ts +121 -0
- package/dist/foundations/handbook/services/handbook-ingest.service.d.ts.map +1 -0
- package/dist/foundations/handbook/services/handbook-ingest.service.js +434 -0
- package/dist/foundations/handbook/services/handbook-ingest.service.js.map +1 -0
- package/dist/foundations/handbook/services/handbook-page.service.d.ts +57 -0
- package/dist/foundations/handbook/services/handbook-page.service.d.ts.map +1 -0
- package/dist/foundations/handbook/services/handbook-page.service.js +116 -0
- package/dist/foundations/handbook/services/handbook-page.service.js.map +1 -0
- package/dist/foundations/handbook/services/handbook-section.service.d.ts +15 -0
- package/dist/foundations/handbook/services/handbook-section.service.d.ts.map +1 -0
- package/dist/foundations/handbook/services/handbook-section.service.js +37 -0
- package/dist/foundations/handbook/services/handbook-section.service.js.map +1 -0
- package/dist/foundations/handbook/services/handbook-thread-message.service.d.ts +27 -0
- package/dist/foundations/handbook/services/handbook-thread-message.service.d.ts.map +1 -0
- package/dist/foundations/handbook/services/handbook-thread-message.service.js +39 -0
- package/dist/foundations/handbook/services/handbook-thread-message.service.js.map +1 -0
- package/dist/foundations/handbook/services/handbook-thread.service.d.ts +164 -0
- package/dist/foundations/handbook/services/handbook-thread.service.d.ts.map +1 -0
- package/dist/foundations/handbook/services/handbook-thread.service.js +297 -0
- package/dist/foundations/handbook/services/handbook-thread.service.js.map +1 -0
- package/dist/foundations/how-to/controllers/how-to.controller.d.ts +7 -1
- package/dist/foundations/how-to/controllers/how-to.controller.d.ts.map +1 -1
- package/dist/foundations/how-to/controllers/how-to.controller.js +18 -12
- package/dist/foundations/how-to/controllers/how-to.controller.js.map +1 -1
- package/dist/foundations/how-to/controllers/how-to.public.controller.d.ts +7 -0
- package/dist/foundations/how-to/controllers/how-to.public.controller.d.ts.map +1 -1
- package/dist/foundations/how-to/controllers/how-to.public.controller.js +7 -0
- package/dist/foundations/how-to/controllers/how-to.public.controller.js.map +1 -1
- package/dist/foundations/how-to/entities/how-to.d.ts.map +1 -1
- package/dist/foundations/how-to/entities/how-to.js +60 -13
- package/dist/foundations/how-to/entities/how-to.js.map +1 -1
- package/dist/foundations/how-to/how-to.module.d.ts +36 -1
- package/dist/foundations/how-to/how-to.module.d.ts.map +1 -1
- package/dist/foundations/how-to/how-to.module.js +80 -4
- package/dist/foundations/how-to/how-to.module.js.map +1 -1
- package/dist/foundations/how-to/index.d.ts +1 -0
- package/dist/foundations/how-to/index.d.ts.map +1 -1
- package/dist/foundations/how-to/index.js +1 -0
- package/dist/foundations/how-to/index.js.map +1 -1
- package/dist/foundations/how-to/interfaces/how-to.config.interface.d.ts +30 -0
- package/dist/foundations/how-to/interfaces/how-to.config.interface.d.ts.map +1 -0
- package/dist/foundations/how-to/interfaces/how-to.config.interface.js +10 -0
- package/dist/foundations/how-to/interfaces/how-to.config.interface.js.map +1 -0
- package/dist/foundations/how-to/processors/how-to.processor.d.ts +3 -1
- package/dist/foundations/how-to/processors/how-to.processor.d.ts.map +1 -1
- package/dist/foundations/how-to/processors/how-to.processor.js +8 -1
- package/dist/foundations/how-to/processors/how-to.processor.js.map +1 -1
- package/dist/foundations/how-to/services/how-to.service.d.ts +4 -0
- package/dist/foundations/how-to/services/how-to.service.d.ts.map +1 -1
- package/dist/foundations/how-to/services/how-to.service.js +47 -24
- package/dist/foundations/how-to/services/how-to.service.js.map +1 -1
- package/dist/foundations/index.d.ts +1 -0
- package/dist/foundations/index.d.ts.map +1 -1
- package/dist/foundations/index.js +1 -0
- package/dist/foundations/index.js.map +1 -1
- package/dist/foundations/two-factor/services/totp.service.d.ts.map +1 -1
- package/dist/foundations/two-factor/services/totp.service.js +2 -1
- package/dist/foundations/two-factor/services/totp.service.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"handbook-ingest.service.js","sourceRoot":"","sources":["../../../../src/foundations/handbook/services/handbook-ingest.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import { ConfigService } from "@nestjs/config";
|
|
2
|
+
import { Queue } from "bullmq";
|
|
3
|
+
import { ClsService } from "nestjs-cls";
|
|
4
|
+
import { AiStatus } from "../../../common/enums/ai.status";
|
|
5
|
+
import { BaseConfigInterface } from "../../../config/interfaces/base.config.interface";
|
|
6
|
+
import { JsonApiService } from "../../../core/jsonapi/services/jsonapi.service";
|
|
7
|
+
import { AbstractService } from "../../../core/neo4j/abstracts/abstract.service";
|
|
8
|
+
import { ChunkService } from "../../chunk/services/chunk.service";
|
|
9
|
+
import { ChunkerService } from "../../chunker/services/chunker.service";
|
|
10
|
+
import { HandbookPage, HandbookPageDescriptor } from "../entities/handbook-page";
|
|
11
|
+
import { HandbookPageRepository } from "../repositories/handbook-page.repository";
|
|
12
|
+
export declare class HandbookPageService extends AbstractService<HandbookPage, typeof HandbookPageDescriptor.relationships> {
|
|
13
|
+
private readonly handbookPageRepository;
|
|
14
|
+
private readonly chunkService;
|
|
15
|
+
private readonly chunkerService;
|
|
16
|
+
private readonly chunkQueue;
|
|
17
|
+
protected readonly descriptor: import("../../..").EntityDescriptor<HandbookPage, {}>;
|
|
18
|
+
private readonly jobNames;
|
|
19
|
+
constructor(jsonApiService: JsonApiService, handbookPageRepository: HandbookPageRepository, clsService: ClsService, chunkService: ChunkService, chunkerService: ChunkerService, chunkQueue: Queue, configService: ConfigService<BaseConfigInterface>);
|
|
20
|
+
/**
|
|
21
|
+
* Delete a page and the chunks hanging off it.
|
|
22
|
+
*
|
|
23
|
+
* Overridden for two reasons, both of which break the inherited version:
|
|
24
|
+
*
|
|
25
|
+
* 1. `AbstractService.delete` gates on `(companyId ?? "") !== entity.company?.id`
|
|
26
|
+
* (abstract.service.ts:272). HandbookPage is `isCompanyScoped: false`, so
|
|
27
|
+
* `entity.company` is always undefined, and an administrator has no
|
|
28
|
+
* company either — `"" !== undefined` is true and EVERY delete 403s. Same
|
|
29
|
+
* reason `HowToService` (app fork) and `CompanyService` override it.
|
|
30
|
+
* 2. The repository's `DETACH DELETE` drops the HAS_CHUNK edges but leaves
|
|
31
|
+
* the Chunk nodes behind. `ChunkService.deleteChunks` is what also resizes
|
|
32
|
+
* key-concept relationship weights and clears disconnected atomic facts,
|
|
33
|
+
* so it has to run first or the graph keeps orphans that still answer
|
|
34
|
+
* retrieval.
|
|
35
|
+
*
|
|
36
|
+
* The ingest's own deletion pass calls THIS method rather than the
|
|
37
|
+
* repository, so both routes into deleting a page behave identically.
|
|
38
|
+
*/
|
|
39
|
+
delete(params: {
|
|
40
|
+
id: string;
|
|
41
|
+
}): Promise<void>;
|
|
42
|
+
updateAiStatus(params: {
|
|
43
|
+
id: string;
|
|
44
|
+
aiStatus: AiStatus;
|
|
45
|
+
}): Promise<void>;
|
|
46
|
+
/**
|
|
47
|
+
* Mark in-progress, drop prior chunks, chunk the markdown, enqueue one job per
|
|
48
|
+
* chunk. Identical to HowToService._chunkAndQueue except the markdown arrives
|
|
49
|
+
* from a file rather than from a BlockNote document.
|
|
50
|
+
*/
|
|
51
|
+
chunkAndQueue(params: {
|
|
52
|
+
handbookPageId: string;
|
|
53
|
+
markdown: string;
|
|
54
|
+
title: string;
|
|
55
|
+
}): Promise<void>;
|
|
56
|
+
}
|
|
57
|
+
//# sourceMappingURL=handbook-page.service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"handbook-page.service.d.ts","sourceRoot":"","sources":["../../../../src/foundations/handbook/services/handbook-page.service.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAC;AAC/B,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACxC,OAAO,EAAE,QAAQ,EAAE,MAAM,iCAAiC,CAAC;AAE3D,OAAO,EAAE,mBAAmB,EAAE,MAAM,kDAAkD,CAAC;AAEvF,OAAO,EAAE,cAAc,EAAE,MAAM,gDAAgD,CAAC;AAChF,OAAO,EAAE,eAAe,EAAE,MAAM,gDAAgD,CAAC;AAEjF,OAAO,EAAE,YAAY,EAAE,MAAM,oCAAoC,CAAC;AAClE,OAAO,EAAE,cAAc,EAAE,MAAM,wCAAwC,CAAC;AACxE,OAAO,EAAE,YAAY,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AAEjF,OAAO,EAAE,sBAAsB,EAAE,MAAM,0CAA0C,CAAC;AAElF,qBACa,mBAAoB,SAAQ,eAAe,CAAC,YAAY,EAAE,OAAO,sBAAsB,CAAC,aAAa,CAAC;IAM/G,OAAO,CAAC,QAAQ,CAAC,sBAAsB;IAEvC,OAAO,CAAC,QAAQ,CAAC,YAAY;IAC7B,OAAO,CAAC,QAAQ,CAAC,cAAc;IACH,OAAO,CAAC,QAAQ,CAAC,UAAU;IATzD,SAAS,CAAC,QAAQ,CAAC,UAAU,wDAA0B;IACvD,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAA0B;gBAGjD,cAAc,EAAE,cAAc,EACb,sBAAsB,EAAE,sBAAsB,EAC/D,UAAU,EAAE,UAAU,EACL,YAAY,EAAE,YAAY,EAC1B,cAAc,EAAE,cAAc,EACF,UAAU,EAAE,KAAK,EAC9D,aAAa,EAAE,aAAa,CAAC,mBAAmB,CAAC;IAMnD;;;;;;;;;;;;;;;;;;OAkBG;IACG,MAAM,CAAC,MAAM,EAAE;QAAE,EAAE,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAY7C,cAAc,CAAC,MAAM,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,QAAQ,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAI/E;;;;OAIG;IACG,aAAa,CAAC,MAAM,EAAE;QAAE,cAAc,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC;CA+BxG"}
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
+
};
|
|
11
|
+
var __param = (this && this.__param) || function (paramIndex, decorator) {
|
|
12
|
+
return function (target, key) { decorator(target, key, paramIndex); }
|
|
13
|
+
};
|
|
14
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
+
exports.HandbookPageService = void 0;
|
|
16
|
+
const bullmq_1 = require("@nestjs/bullmq");
|
|
17
|
+
const common_1 = require("@nestjs/common");
|
|
18
|
+
const config_1 = require("@nestjs/config");
|
|
19
|
+
const bullmq_2 = require("bullmq");
|
|
20
|
+
const nestjs_cls_1 = require("nestjs-cls");
|
|
21
|
+
const ai_status_1 = require("../../../common/enums/ai.status");
|
|
22
|
+
const queue_id_1 = require("../../../config/enums/queue.id");
|
|
23
|
+
const jsonapi_service_1 = require("../../../core/jsonapi/services/jsonapi.service");
|
|
24
|
+
const abstract_service_1 = require("../../../core/neo4j/abstracts/abstract.service");
|
|
25
|
+
const chunk_service_1 = require("../../chunk/services/chunk.service");
|
|
26
|
+
const chunker_service_1 = require("../../chunker/services/chunker.service");
|
|
27
|
+
const handbook_page_1 = require("../entities/handbook-page");
|
|
28
|
+
const handbook_page_meta_1 = require("../entities/handbook-page.meta");
|
|
29
|
+
const handbook_page_repository_1 = require("../repositories/handbook-page.repository");
|
|
30
|
+
let HandbookPageService = class HandbookPageService extends abstract_service_1.AbstractService {
|
|
31
|
+
constructor(jsonApiService, handbookPageRepository, clsService, chunkService, chunkerService, chunkQueue, configService) {
|
|
32
|
+
super(jsonApiService, handbookPageRepository, clsService, handbook_page_1.HandbookPageDescriptor.model);
|
|
33
|
+
this.handbookPageRepository = handbookPageRepository;
|
|
34
|
+
this.chunkService = chunkService;
|
|
35
|
+
this.chunkerService = chunkerService;
|
|
36
|
+
this.chunkQueue = chunkQueue;
|
|
37
|
+
this.descriptor = handbook_page_1.HandbookPageDescriptor;
|
|
38
|
+
this.jobNames = configService.get("jobNames", { infer: true }) ?? { process: {}, notifications: {} };
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Delete a page and the chunks hanging off it.
|
|
42
|
+
*
|
|
43
|
+
* Overridden for two reasons, both of which break the inherited version:
|
|
44
|
+
*
|
|
45
|
+
* 1. `AbstractService.delete` gates on `(companyId ?? "") !== entity.company?.id`
|
|
46
|
+
* (abstract.service.ts:272). HandbookPage is `isCompanyScoped: false`, so
|
|
47
|
+
* `entity.company` is always undefined, and an administrator has no
|
|
48
|
+
* company either — `"" !== undefined` is true and EVERY delete 403s. Same
|
|
49
|
+
* reason `HowToService` (app fork) and `CompanyService` override it.
|
|
50
|
+
* 2. The repository's `DETACH DELETE` drops the HAS_CHUNK edges but leaves
|
|
51
|
+
* the Chunk nodes behind. `ChunkService.deleteChunks` is what also resizes
|
|
52
|
+
* key-concept relationship weights and clears disconnected atomic facts,
|
|
53
|
+
* so it has to run first or the graph keeps orphans that still answer
|
|
54
|
+
* retrieval.
|
|
55
|
+
*
|
|
56
|
+
* The ingest's own deletion pass calls THIS method rather than the
|
|
57
|
+
* repository, so both routes into deleting a page behave identically.
|
|
58
|
+
*/
|
|
59
|
+
async delete(params) {
|
|
60
|
+
const page = await this.handbookPageRepository.findById({ id: params.id });
|
|
61
|
+
if (!page)
|
|
62
|
+
throw new common_1.NotFoundException();
|
|
63
|
+
await this.chunkService.deleteChunks({
|
|
64
|
+
id: params.id,
|
|
65
|
+
nodeType: handbook_page_meta_1.handbookPageMeta.labelName,
|
|
66
|
+
});
|
|
67
|
+
await this.handbookPageRepository.deletePage({ id: params.id });
|
|
68
|
+
}
|
|
69
|
+
async updateAiStatus(params) {
|
|
70
|
+
await this.handbookPageRepository.updateStatus({ id: params.id, aiStatus: params.aiStatus });
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Mark in-progress, drop prior chunks, chunk the markdown, enqueue one job per
|
|
74
|
+
* chunk. Identical to HowToService._chunkAndQueue except the markdown arrives
|
|
75
|
+
* from a file rather than from a BlockNote document.
|
|
76
|
+
*/
|
|
77
|
+
async chunkAndQueue(params) {
|
|
78
|
+
await this.updateAiStatus({ id: params.handbookPageId, aiStatus: ai_status_1.AiStatus.InProgress });
|
|
79
|
+
await this.chunkService.deleteChunks({
|
|
80
|
+
id: params.handbookPageId,
|
|
81
|
+
nodeType: handbook_page_meta_1.handbookPageMeta.labelName,
|
|
82
|
+
});
|
|
83
|
+
const data = await this.chunkerService.generateContentStructureFromMarkdown({
|
|
84
|
+
content: params.markdown,
|
|
85
|
+
title: params.title,
|
|
86
|
+
});
|
|
87
|
+
const chunks = await this.chunkService.createChunks({
|
|
88
|
+
id: params.handbookPageId,
|
|
89
|
+
nodeType: handbook_page_meta_1.handbookPageMeta.labelName,
|
|
90
|
+
data: data,
|
|
91
|
+
});
|
|
92
|
+
const chunkJobName = this.jobNames.process?.chunk ?? "process_chunk";
|
|
93
|
+
for (const chunk of chunks) {
|
|
94
|
+
await this.chunkQueue.add(chunkJobName, {
|
|
95
|
+
companyId: this.clsService.get("companyId") || undefined,
|
|
96
|
+
userId: this.clsService.get("userId"),
|
|
97
|
+
chunkId: chunk.id,
|
|
98
|
+
contentId: params.handbookPageId,
|
|
99
|
+
contentType: handbook_page_meta_1.handbookPageMeta.labelName,
|
|
100
|
+
});
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
};
|
|
104
|
+
exports.HandbookPageService = HandbookPageService;
|
|
105
|
+
exports.HandbookPageService = HandbookPageService = __decorate([
|
|
106
|
+
(0, common_1.Injectable)(),
|
|
107
|
+
__param(5, (0, bullmq_1.InjectQueue)(queue_id_1.QueueId.CHUNK)),
|
|
108
|
+
__metadata("design:paramtypes", [jsonapi_service_1.JsonApiService,
|
|
109
|
+
handbook_page_repository_1.HandbookPageRepository,
|
|
110
|
+
nestjs_cls_1.ClsService,
|
|
111
|
+
chunk_service_1.ChunkService,
|
|
112
|
+
chunker_service_1.ChunkerService,
|
|
113
|
+
bullmq_2.Queue,
|
|
114
|
+
config_1.ConfigService])
|
|
115
|
+
], HandbookPageService);
|
|
116
|
+
//# sourceMappingURL=handbook-page.service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"handbook-page.service.js","sourceRoot":"","sources":["../../../../src/foundations/handbook/services/handbook-page.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { ClsService } from "nestjs-cls";
|
|
2
|
+
import { JsonApiService } from "../../../core/jsonapi/services/jsonapi.service";
|
|
3
|
+
import { AbstractService } from "../../../core/neo4j/abstracts/abstract.service";
|
|
4
|
+
import { HandbookSection, HandbookSectionDescriptor } from "../entities/handbook-section";
|
|
5
|
+
import { HandbookSectionRepository } from "../repositories/handbook-section.repository";
|
|
6
|
+
/**
|
|
7
|
+
* Read-only from the API's point of view: sections are written only by the
|
|
8
|
+
* ingest, through the repository. Nothing is overridden — the inherited
|
|
9
|
+
* `find` is the whole surface.
|
|
10
|
+
*/
|
|
11
|
+
export declare class HandbookSectionService extends AbstractService<HandbookSection, typeof HandbookSectionDescriptor.relationships> {
|
|
12
|
+
protected readonly descriptor: import("../../..").EntityDescriptor<HandbookSection, {}>;
|
|
13
|
+
constructor(jsonApiService: JsonApiService, handbookSectionRepository: HandbookSectionRepository, clsService: ClsService);
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=handbook-section.service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"handbook-section.service.d.ts","sourceRoot":"","sources":["../../../../src/foundations/handbook/services/handbook-section.service.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACxC,OAAO,EAAE,cAAc,EAAE,MAAM,gDAAgD,CAAC;AAChF,OAAO,EAAE,eAAe,EAAE,MAAM,gDAAgD,CAAC;AACjF,OAAO,EAAE,eAAe,EAAE,yBAAyB,EAAE,MAAM,8BAA8B,CAAC;AAC1F,OAAO,EAAE,yBAAyB,EAAE,MAAM,6CAA6C,CAAC;AAExF;;;;GAIG;AACH,qBACa,sBAAuB,SAAQ,eAAe,CACzD,eAAe,EACf,OAAO,yBAAyB,CAAC,aAAa,CAC/C;IACC,SAAS,CAAC,QAAQ,CAAC,UAAU,2DAA6B;gBAGxD,cAAc,EAAE,cAAc,EAC9B,yBAAyB,EAAE,yBAAyB,EACpD,UAAU,EAAE,UAAU;CAIzB"}
|
|
@@ -0,0 +1,37 @@
|
|
|
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
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.HandbookSectionService = void 0;
|
|
13
|
+
const common_1 = require("@nestjs/common");
|
|
14
|
+
const nestjs_cls_1 = require("nestjs-cls");
|
|
15
|
+
const jsonapi_service_1 = require("../../../core/jsonapi/services/jsonapi.service");
|
|
16
|
+
const abstract_service_1 = require("../../../core/neo4j/abstracts/abstract.service");
|
|
17
|
+
const handbook_section_1 = require("../entities/handbook-section");
|
|
18
|
+
const handbook_section_repository_1 = require("../repositories/handbook-section.repository");
|
|
19
|
+
/**
|
|
20
|
+
* Read-only from the API's point of view: sections are written only by the
|
|
21
|
+
* ingest, through the repository. Nothing is overridden — the inherited
|
|
22
|
+
* `find` is the whole surface.
|
|
23
|
+
*/
|
|
24
|
+
let HandbookSectionService = class HandbookSectionService extends abstract_service_1.AbstractService {
|
|
25
|
+
constructor(jsonApiService, handbookSectionRepository, clsService) {
|
|
26
|
+
super(jsonApiService, handbookSectionRepository, clsService, handbook_section_1.HandbookSectionDescriptor.model);
|
|
27
|
+
this.descriptor = handbook_section_1.HandbookSectionDescriptor;
|
|
28
|
+
}
|
|
29
|
+
};
|
|
30
|
+
exports.HandbookSectionService = HandbookSectionService;
|
|
31
|
+
exports.HandbookSectionService = HandbookSectionService = __decorate([
|
|
32
|
+
(0, common_1.Injectable)(),
|
|
33
|
+
__metadata("design:paramtypes", [jsonapi_service_1.JsonApiService,
|
|
34
|
+
handbook_section_repository_1.HandbookSectionRepository,
|
|
35
|
+
nestjs_cls_1.ClsService])
|
|
36
|
+
], HandbookSectionService);
|
|
37
|
+
//# sourceMappingURL=handbook-section.service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"handbook-section.service.js","sourceRoot":"","sources":["../../../../src/foundations/handbook/services/handbook-section.service.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,2CAA4C;AAC5C,2CAAwC;AACxC,oFAAgF;AAChF,qFAAiF;AACjF,mEAA0F;AAC1F,6FAAwF;AAExF;;;;GAIG;AAEI,IAAM,sBAAsB,GAA5B,MAAM,sBAAuB,SAAQ,kCAG3C;IAGC,YACE,cAA8B,EAC9B,yBAAoD,EACpD,UAAsB;QAEtB,KAAK,CAAC,cAAc,EAAE,yBAAyB,EAAE,UAAU,EAAE,4CAAyB,CAAC,KAAK,CAAC,CAAC;QAP7E,eAAU,GAAG,4CAAyB,CAAC;IAQ1D,CAAC;CACF,CAAA;AAbY,wDAAsB;iCAAtB,sBAAsB;IADlC,IAAA,mBAAU,GAAE;qCAQO,gCAAc;QACH,uDAAyB;QACxC,uBAAU;GATb,sBAAsB,CAalC"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { ClsService } from "nestjs-cls";
|
|
2
|
+
import { JsonApiService } from "../../../core/jsonapi/services/jsonapi.service";
|
|
3
|
+
import { AbstractService } from "../../../core/neo4j/abstracts/abstract.service";
|
|
4
|
+
import { HandbookThreadMessage, HandbookThreadMessageDescriptor } from "../entities/handbook-thread-message";
|
|
5
|
+
import { HandbookThreadMessageRepository } from "../repositories/handbook-thread-message.repository";
|
|
6
|
+
/**
|
|
7
|
+
* Messages are written only by `HandbookThreadService` as part of a turn, and
|
|
8
|
+
* read only through their thread — so this service adds nothing to the
|
|
9
|
+
* framework's CRUD. It exists because the thread service needs `createFromDTO`
|
|
10
|
+
* (descriptor-driven mapping of attributes and the `HAS_MESSAGE` edge) rather
|
|
11
|
+
* than hand-rolled Cypher, and because the serialiser is resolved through DI.
|
|
12
|
+
*/
|
|
13
|
+
export declare class HandbookThreadMessageService extends AbstractService<HandbookThreadMessage, typeof HandbookThreadMessageDescriptor.relationships> {
|
|
14
|
+
protected readonly descriptor: import("../../..").EntityDescriptor<HandbookThreadMessage, {
|
|
15
|
+
thread: {
|
|
16
|
+
model: import("../../..").DataMeta;
|
|
17
|
+
direction: "in";
|
|
18
|
+
relationship: string;
|
|
19
|
+
cardinality: "one";
|
|
20
|
+
required: true;
|
|
21
|
+
dtoKey: string;
|
|
22
|
+
immutable: true;
|
|
23
|
+
};
|
|
24
|
+
}>;
|
|
25
|
+
constructor(jsonApiService: JsonApiService, handbookThreadMessageRepository: HandbookThreadMessageRepository, clsService: ClsService);
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=handbook-thread-message.service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"handbook-thread-message.service.d.ts","sourceRoot":"","sources":["../../../../src/foundations/handbook/services/handbook-thread-message.service.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACxC,OAAO,EAAE,cAAc,EAAE,MAAM,gDAAgD,CAAC;AAChF,OAAO,EAAE,eAAe,EAAE,MAAM,gDAAgD,CAAC;AACjF,OAAO,EAAE,qBAAqB,EAAE,+BAA+B,EAAE,MAAM,qCAAqC,CAAC;AAC7G,OAAO,EAAE,+BAA+B,EAAE,MAAM,oDAAoD,CAAC;AAErG;;;;;;GAMG;AACH,qBACa,4BAA6B,SAAQ,eAAe,CAC/D,qBAAqB,EACrB,OAAO,+BAA+B,CAAC,aAAa,CACrD;IACC,SAAS,CAAC,QAAQ,CAAC,UAAU;;;;;;;;;;OAAmC;gBAG9D,cAAc,EAAE,cAAc,EAC9B,+BAA+B,EAAE,+BAA+B,EAChE,UAAU,EAAE,UAAU;CAIzB"}
|
|
@@ -0,0 +1,39 @@
|
|
|
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
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.HandbookThreadMessageService = void 0;
|
|
13
|
+
const common_1 = require("@nestjs/common");
|
|
14
|
+
const nestjs_cls_1 = require("nestjs-cls");
|
|
15
|
+
const jsonapi_service_1 = require("../../../core/jsonapi/services/jsonapi.service");
|
|
16
|
+
const abstract_service_1 = require("../../../core/neo4j/abstracts/abstract.service");
|
|
17
|
+
const handbook_thread_message_1 = require("../entities/handbook-thread-message");
|
|
18
|
+
const handbook_thread_message_repository_1 = require("../repositories/handbook-thread-message.repository");
|
|
19
|
+
/**
|
|
20
|
+
* Messages are written only by `HandbookThreadService` as part of a turn, and
|
|
21
|
+
* read only through their thread — so this service adds nothing to the
|
|
22
|
+
* framework's CRUD. It exists because the thread service needs `createFromDTO`
|
|
23
|
+
* (descriptor-driven mapping of attributes and the `HAS_MESSAGE` edge) rather
|
|
24
|
+
* than hand-rolled Cypher, and because the serialiser is resolved through DI.
|
|
25
|
+
*/
|
|
26
|
+
let HandbookThreadMessageService = class HandbookThreadMessageService extends abstract_service_1.AbstractService {
|
|
27
|
+
constructor(jsonApiService, handbookThreadMessageRepository, clsService) {
|
|
28
|
+
super(jsonApiService, handbookThreadMessageRepository, clsService, handbook_thread_message_1.HandbookThreadMessageDescriptor.model);
|
|
29
|
+
this.descriptor = handbook_thread_message_1.HandbookThreadMessageDescriptor;
|
|
30
|
+
}
|
|
31
|
+
};
|
|
32
|
+
exports.HandbookThreadMessageService = HandbookThreadMessageService;
|
|
33
|
+
exports.HandbookThreadMessageService = HandbookThreadMessageService = __decorate([
|
|
34
|
+
(0, common_1.Injectable)(),
|
|
35
|
+
__metadata("design:paramtypes", [jsonapi_service_1.JsonApiService,
|
|
36
|
+
handbook_thread_message_repository_1.HandbookThreadMessageRepository,
|
|
37
|
+
nestjs_cls_1.ClsService])
|
|
38
|
+
], HandbookThreadMessageService);
|
|
39
|
+
//# sourceMappingURL=handbook-thread-message.service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"handbook-thread-message.service.js","sourceRoot":"","sources":["../../../../src/foundations/handbook/services/handbook-thread-message.service.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,2CAA4C;AAC5C,2CAAwC;AACxC,oFAAgF;AAChF,qFAAiF;AACjF,iFAA6G;AAC7G,2GAAqG;AAErG;;;;;;GAMG;AAEI,IAAM,4BAA4B,GAAlC,MAAM,4BAA6B,SAAQ,kCAGjD;IAGC,YACE,cAA8B,EAC9B,+BAAgE,EAChE,UAAsB;QAEtB,KAAK,CAAC,cAAc,EAAE,+BAA+B,EAAE,UAAU,EAAE,yDAA+B,CAAC,KAAK,CAAC,CAAC;QAPzF,eAAU,GAAG,yDAA+B,CAAC;IAQhE,CAAC;CACF,CAAA;AAbY,oEAA4B;uCAA5B,4BAA4B;IADxC,IAAA,mBAAU,GAAE;qCAQO,gCAAc;QACG,oEAA+B;QACpD,uBAAU;GATb,4BAA4B,CAaxC"}
|
|
@@ -0,0 +1,164 @@
|
|
|
1
|
+
import { ClsService } from "nestjs-cls";
|
|
2
|
+
import { ResponderService } from "../../../agents/responder/services/responder.service";
|
|
3
|
+
import { JsonApiDataInterface } from "../../../core/jsonapi/interfaces/jsonapi.data.interface";
|
|
4
|
+
import { JsonApiService } from "../../../core/jsonapi/services/jsonapi.service";
|
|
5
|
+
import { AbstractService } from "../../../core/neo4j/abstracts/abstract.service";
|
|
6
|
+
import { HandbookThread, HandbookThreadDescriptor } from "../entities/handbook-thread";
|
|
7
|
+
import { HandbookPageRepository } from "../repositories/handbook-page.repository";
|
|
8
|
+
import { HandbookThreadMessageRepository } from "../repositories/handbook-thread-message.repository";
|
|
9
|
+
import { HandbookThreadRepository } from "../repositories/handbook-thread.repository";
|
|
10
|
+
import { HandbookThreadMessageService } from "./handbook-thread-message.service";
|
|
11
|
+
/** How many prior turns are replayed to the responder as history. */
|
|
12
|
+
export declare const HANDBOOK_MAX_MESSAGES_TO_LLM = 20;
|
|
13
|
+
/** Longest auto-generated title, when the responder supplies none. */
|
|
14
|
+
export declare const HANDBOOK_TITLE_MAX_LENGTH = 60;
|
|
15
|
+
/**
|
|
16
|
+
* Persisted handbook conversations.
|
|
17
|
+
*
|
|
18
|
+
* The handbook chat deliberately does NOT go through the package `Assistant`.
|
|
19
|
+
* `Assistant` is `isCompanyScoped: true`, and a platform administrator — the
|
|
20
|
+
* only user this feature is for — has no Company, so a company-scoped thread
|
|
21
|
+
* would 404 for exactly that user. Company scoping stays strict; the thread
|
|
22
|
+
* lives here instead, global and owner-scoped.
|
|
23
|
+
*
|
|
24
|
+
* That is why `companyId` is read off CLS and passed through EXACTLY as found,
|
|
25
|
+
* `undefined` included. It is not defaulted, substituted or looked up.
|
|
26
|
+
* `ResponderService.run` types it `string | undefined`; token accounting
|
|
27
|
+
* already tolerates a company-less turn (TokenUsageRepository makes the
|
|
28
|
+
* `BELONGS_TO` edge conditional); and handbook retrieval never consults a
|
|
29
|
+
* company — the handbook branch of the source-query provider matches
|
|
30
|
+
* `(:HandbookPage)` and ignores tenancy altogether.
|
|
31
|
+
*/
|
|
32
|
+
export declare class HandbookThreadService extends AbstractService<HandbookThread, typeof HandbookThreadDescriptor.relationships> {
|
|
33
|
+
private readonly threads;
|
|
34
|
+
private readonly responder;
|
|
35
|
+
private readonly messages;
|
|
36
|
+
private readonly messageRepository;
|
|
37
|
+
private readonly pages;
|
|
38
|
+
protected readonly descriptor: import("../../..").EntityDescriptor<HandbookThread, {
|
|
39
|
+
owner: {
|
|
40
|
+
model: import("../../..").DataMeta;
|
|
41
|
+
direction: "out";
|
|
42
|
+
relationship: string;
|
|
43
|
+
cardinality: "one";
|
|
44
|
+
required: false;
|
|
45
|
+
dtoKey: string;
|
|
46
|
+
contextKey: string;
|
|
47
|
+
immutable: true;
|
|
48
|
+
};
|
|
49
|
+
messages: {
|
|
50
|
+
model: import("../../..").DataMeta;
|
|
51
|
+
direction: "out";
|
|
52
|
+
relationship: string;
|
|
53
|
+
cardinality: "many";
|
|
54
|
+
required: false;
|
|
55
|
+
dtoKey: string;
|
|
56
|
+
};
|
|
57
|
+
}>;
|
|
58
|
+
private readonly threadLogger;
|
|
59
|
+
constructor(jsonApiService: JsonApiService, threads: HandbookThreadRepository, clsService: ClsService, responder: ResponderService, messages: HandbookThreadMessageService, messageRepository: HandbookThreadMessageRepository, pages: HandbookPageRepository);
|
|
60
|
+
/**
|
|
61
|
+
* Start a thread from its first question: create the thread, run the turn,
|
|
62
|
+
* persist both messages, and title the thread from the answer.
|
|
63
|
+
*
|
|
64
|
+
* The thread node is created FIRST — before the responder runs — so the two
|
|
65
|
+
* messages have a parent to hang from, exactly as
|
|
66
|
+
* `AssistantService.createWithFirstMessage` does. It is created with the
|
|
67
|
+
* fallback title and retitled once the answer exists, because the responder's
|
|
68
|
+
* title is only known after the turn.
|
|
69
|
+
*/
|
|
70
|
+
createWithFirstMessage(params: {
|
|
71
|
+
question: string;
|
|
72
|
+
/** Optional: scopes retrieval to one page. See `runTurn`. */
|
|
73
|
+
handbookPageId?: string;
|
|
74
|
+
}): Promise<JsonApiDataInterface>;
|
|
75
|
+
/**
|
|
76
|
+
* Append a question to an existing thread and answer it with the thread's
|
|
77
|
+
* prior messages as history.
|
|
78
|
+
*
|
|
79
|
+
* Returns the two NEW messages as a JSON:API list — the shape
|
|
80
|
+
* `AssistantController.append` returns — so the client appends rather than
|
|
81
|
+
* re-renders. The full thread is one `GET /handbookthreads/:id` away.
|
|
82
|
+
*/
|
|
83
|
+
appendMessage(params: {
|
|
84
|
+
threadId: string;
|
|
85
|
+
question: string;
|
|
86
|
+
/** Optional: scopes retrieval to one page. See `runTurn`. */
|
|
87
|
+
handbookPageId?: string;
|
|
88
|
+
}): Promise<JsonApiDataInterface>;
|
|
89
|
+
/**
|
|
90
|
+
* One thread with every message it holds, in position order.
|
|
91
|
+
*
|
|
92
|
+
* The messages ride in `included` through the descriptor's `messages`
|
|
93
|
+
* relationship — the same traversal that lets `AssistantController` return an
|
|
94
|
+
* assistant with its messages — so a client renders a selected thread in one
|
|
95
|
+
* call. They are sorted here because a Cypher `OPTIONAL MATCH` collects
|
|
96
|
+
* related nodes in no particular order.
|
|
97
|
+
*/
|
|
98
|
+
findThreadWithMessages(params: {
|
|
99
|
+
threadId: string;
|
|
100
|
+
}): Promise<JsonApiDataInterface>;
|
|
101
|
+
/**
|
|
102
|
+
* Rename. Overridden ONLY to close an ordering hole in the inherited
|
|
103
|
+
* implementation: `AbstractService.patch` writes first and reads back
|
|
104
|
+
* afterwards, and `AbstractRepository.patch` matches on `id` alone — it never
|
|
105
|
+
* applies `buildUserHasAccess`. Without the read below, one administrator
|
|
106
|
+
* could rename another's thread and merely be refused the response.
|
|
107
|
+
*/
|
|
108
|
+
patch(params: {
|
|
109
|
+
id: string;
|
|
110
|
+
[key: string]: any;
|
|
111
|
+
}): Promise<JsonApiDataInterface>;
|
|
112
|
+
/**
|
|
113
|
+
* Delete the thread and, through the repository override, its messages.
|
|
114
|
+
*
|
|
115
|
+
* Overridden because the inherited `AbstractService.delete` guards ownership
|
|
116
|
+
* with a COMPANY comparison — `(companyId ?? "") !== entity.company?.id`. A
|
|
117
|
+
* `HandbookThread` is `isCompanyScoped: false`, so `entity.company` is always
|
|
118
|
+
* undefined, and an administrator has no `companyId`: the comparison reduces
|
|
119
|
+
* to `"" !== undefined`, which is true, and EVERY delete would 403. The owner
|
|
120
|
+
* edge is the boundary here, and `readOwnedThread` is what enforces it.
|
|
121
|
+
*/
|
|
122
|
+
delete(params: {
|
|
123
|
+
id: string;
|
|
124
|
+
}): Promise<void>;
|
|
125
|
+
/**
|
|
126
|
+
* Read a thread through the owner-scoped `findById`. A thread belonging to
|
|
127
|
+
* another user raises 403 from `_validateForbidden`; an id that matches
|
|
128
|
+
* nothing comes back null and becomes a 404 here.
|
|
129
|
+
*/
|
|
130
|
+
private readOwnedThread;
|
|
131
|
+
/**
|
|
132
|
+
* Run one handbook turn on the responder and resolve its citations to page
|
|
133
|
+
* paths.
|
|
134
|
+
*
|
|
135
|
+
* `userModuleIds: []` is not a stub: the documentation branch never runs the
|
|
136
|
+
* graph or the planner, and those two are the only readers of that list.
|
|
137
|
+
*
|
|
138
|
+
* `handbookPageId` is forwarded as `limitToHandbookPageId`, which the
|
|
139
|
+
* handbook source-query provider already honours by adding
|
|
140
|
+
* `WHERE data.id = $limitToHandbookPageId` to the `(:HandbookPage)` match.
|
|
141
|
+
* Passed through EXACTLY as received, `undefined` included: an absent value
|
|
142
|
+
* means retrieval spans the whole manual, which is the default a question
|
|
143
|
+
* asked while reading one page usually wants.
|
|
144
|
+
*/
|
|
145
|
+
private runTurn;
|
|
146
|
+
/** Persist one message under a thread. Returns the new message's id. */
|
|
147
|
+
private writeMessage;
|
|
148
|
+
/** Every message of a thread, oldest first. */
|
|
149
|
+
private loadMessages;
|
|
150
|
+
/**
|
|
151
|
+
* Sort by `position` ascending. Applied even to results that were queried
|
|
152
|
+
* with an ORDER BY: the ordering clause sits ahead of the relationship
|
|
153
|
+
* traversal `buildReturnStatement()` appends, so it is not guaranteed to
|
|
154
|
+
* survive into the rows. Position is the only ordering the client can rely
|
|
155
|
+
* on, so it is asserted where the list is produced.
|
|
156
|
+
*/
|
|
157
|
+
private byPosition;
|
|
158
|
+
/**
|
|
159
|
+
* Title for a thread whose answer produced none: the question, trimmed to
|
|
160
|
+
* 60 characters on a word boundary. Mirrors `AssistantService.autoTitle`.
|
|
161
|
+
*/
|
|
162
|
+
private fallbackTitle;
|
|
163
|
+
}
|
|
164
|
+
//# sourceMappingURL=handbook-thread.service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"handbook-thread.service.d.ts","sourceRoot":"","sources":["../../../../src/foundations/handbook/services/handbook-thread.service.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACxC,OAAO,EAAE,gBAAgB,EAAE,MAAM,sDAAsD,CAAC;AAGxF,OAAO,EAAE,oBAAoB,EAAE,MAAM,yDAAyD,CAAC;AAC/F,OAAO,EAAE,cAAc,EAAE,MAAM,gDAAgD,CAAC;AAChF,OAAO,EAAE,eAAe,EAAE,MAAM,gDAAgD,CAAC;AACjF,OAAO,EAAE,cAAc,EAAE,wBAAwB,EAAE,MAAM,6BAA6B,CAAC;AAQvF,OAAO,EAAE,sBAAsB,EAAE,MAAM,0CAA0C,CAAC;AAClF,OAAO,EAAE,+BAA+B,EAAE,MAAM,oDAAoD,CAAC;AACrG,OAAO,EAAE,wBAAwB,EAAE,MAAM,4CAA4C,CAAC;AACtF,OAAO,EAAE,4BAA4B,EAAE,MAAM,mCAAmC,CAAC;AAEjF,qEAAqE;AACrE,eAAO,MAAM,4BAA4B,KAAK,CAAC;AAE/C,sEAAsE;AACtE,eAAO,MAAM,yBAAyB,KAAK,CAAC;AAE5C;;;;;;;;;;;;;;;;GAgBG;AACH,qBACa,qBAAsB,SAAQ,eAAe,CACxD,cAAc,EACd,OAAO,wBAAwB,CAAC,aAAa,CAC9C;IAMG,OAAO,CAAC,QAAQ,CAAC,OAAO;IAExB,OAAO,CAAC,QAAQ,CAAC,SAAS;IAC1B,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,iBAAiB;IAClC,OAAO,CAAC,QAAQ,CAAC,KAAK;IAVxB,SAAS,CAAC,QAAQ,CAAC,UAAU;;;;;;;;;;;;;;;;;;;OAA4B;IACzD,OAAO,CAAC,QAAQ,CAAC,YAAY,CAA0C;gBAGrE,cAAc,EAAE,cAAc,EACb,OAAO,EAAE,wBAAwB,EAClD,UAAU,EAAE,UAAU,EACL,SAAS,EAAE,gBAAgB,EAC3B,QAAQ,EAAE,4BAA4B,EACtC,iBAAiB,EAAE,+BAA+B,EAClD,KAAK,EAAE,sBAAsB;IAKhD;;;;;;;;;OASG;IACG,sBAAsB,CAAC,MAAM,EAAE;QACnC,QAAQ,EAAE,MAAM,CAAC;QACjB,6DAA6D;QAC7D,cAAc,CAAC,EAAE,MAAM,CAAC;KACzB,GAAG,OAAO,CAAC,oBAAoB,CAAC;IAuCjC;;;;;;;OAOG;IACG,aAAa,CAAC,MAAM,EAAE;QAC1B,QAAQ,EAAE,MAAM,CAAC;QACjB,QAAQ,EAAE,MAAM,CAAC;QACjB,6DAA6D;QAC7D,cAAc,CAAC,EAAE,MAAM,CAAC;KACzB,GAAG,OAAO,CAAC,oBAAoB,CAAC;IA8CjC;;;;;;;;OAQG;IACG,sBAAsB,CAAC,MAAM,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,oBAAoB,CAAC;IAMzF;;;;;;OAMG;IACG,KAAK,CAAC,MAAM,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;KAAE,GAAG,OAAO,CAAC,oBAAoB,CAAC;IAKtF;;;;;;;;;OASG;IACG,MAAM,CAAC,MAAM,EAAE;QAAE,EAAE,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAMnD;;;;OAIG;YACW,eAAe;IAM7B;;;;;;;;;;;;;OAaG;YACW,OAAO;IAmCrB,wEAAwE;YAC1D,YAAY;IA4B1B,+CAA+C;YACjC,YAAY;IAW1B;;;;;;OAMG;IACH,OAAO,CAAC,UAAU;IAIlB;;;OAGG;IACH,OAAO,CAAC,aAAa;CAQtB"}
|